{"componentChunkName":"component---gatsby-theme-spaceout-src-templates-article-template-tsx","path":"/the-great-correction-why-production-ai-left-the-llm-bubble-behind","result":{"pageContext":{"article":{"id":"78f98138-36e8-541f-b395-315ce38d15d8","slug":"/the-great-correction-why-production-ai-left-the-llm-bubble-behind","secret":false,"title":"The Great Correction - Why Production AI Left the LLM Bubble Behind","author":"Luke Celitan","date":"December 22nd, 2025","dateForSEO":"2025-12-22T00:00:00.000Z","timeToRead":6,"excerpt":"Clem Delangue (HuggingFace CEO) claims we're in an LLM bubble—not an AI bubble—and the download stats back him up. Discover what gets deployed in the real world - why encoder-only models, vision, time series, document, graph, and code models outsell LLMs, and how practitioners compose practical stacks for actual workloads.","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"The Great Correction - Why Production AI Left the LLM Bubble Behind\",\n  \"excerpt\": \"Clem Delangue (HuggingFace CEO) claims we're in an LLM bubble—not an AI bubble—and the download stats back him up. Discover what gets deployed in the real world - why encoder-only models, vision, time series, document, graph, and code models outsell LLMs, and how practitioners compose practical stacks for actual workloads.\",\n  \"date\": \"2025-12-22T00:00:00.000Z\",\n  \"hero\": \"ai-prod.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Post\",\n  \"tech\": [\"AI\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"introduction-clem-delangues-bombshell--the-reality-behind-ai-production\"\n  }, \"Introduction: Clem Delangue\\u2019s Bombshell & The Reality Behind AI Production\"), mdx(\"p\", null, \"By late 2025, the global AI spend has ballooned past a trillion dollars, but\\nmost of it sits idle inside experimental labs. The bubble isn\\u2019t in AI\\nusefulness\\u2014it\\u2019s in misallocated compute chasing headline benchmarks no CFO\\nactually cares about.\"), mdx(\"p\", null, \"When Clem Delangue, CEO of Hugging Face, told TechCrunch we\\u2019re in an \\u201CLLM\\nbubble, not an AI bubble,\\u201D it was more than a throwaway soundbite. In the\\ntrenches of production, the numbers tell a story that tears right through the\\nhype: most AI is not an LLM, and the real workhorses handling billions of\\nrequests daily are \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"specialized, efficient models\"), \".\"), mdx(\"p\", null, \"In this post, we\\u2019ll unpack hard data from the Hugging Face Hub (as of Oct 2025),\\ncompare architectures, highlight stack configurations, and show how industry\\nteams are composing modern AI for scale and reliability. We\\u2019ll explore how\\nencoder-only models, vision stacks, and time-series transformers quietly\\noutmaneuver LLMs in real deployments.\"), mdx(\"p\", null, \"We\\u2019ll get technical\\u2014architectural dissections, sample stack configs, performance\\nbenchmarks, and chart-ready datasets. Whether you\\u2019re a builder, researcher, or\\ntired of the endless \\u201CGPT solves all\\u201D narrative, this is what production AI\\nactually looks like, devoid of buzzwords and full of substance.\"), mdx(\"h2\", {\n    \"id\": \"the-llm-bubble-myth-vs-metrics\"\n  }, \"The LLM Bubble: Myth vs. Metrics\"), mdx(\"h3\", {\n    \"id\": \"what-is-the-llm-bubble\"\n  }, \"What Is the \\u201CLLM Bubble\\u201D?\"), mdx(\"p\", null, \"Over the last few years, LLMs (massive decoder-only generative transformers)\\nhave dominated the press, fundraising decks, and tech conferences. The myth: one\\ngargantuan model solves everything. The reality: Hugging Face download data\\nshows production adoption belongs to \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"small, specialized architectures\"), \".\"), mdx(\"h3\", {\n    \"id\": \"hugging-face-download-stats-encoders-vs-llms\"\n  }, \"Hugging Face Download Stats: Encoders vs. LLMs\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Source: Hugging Face Stats Blog, Oct 2025\"))), mdx(BarChartDownloads, {\n    data: downloadStatsData,\n    mdxType: \"BarChartDownloads\"\n  }), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Encoder-only models (BERT family): \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"45%\"), \" of downloads (>1B/month)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Decoder-only LLMs: \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"9.5%\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Small models (<1B params): \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"92.5%\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Models <500M params: \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"86.3%\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Models <200M params: \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"69.8%\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Classic BERT (2018): \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"68M downloads/month\"))), mdx(\"p\", null, \"LLMs form a tiny fraction of real deployment. Most companies need \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"speed, low\\nlatency, and privacy\"), \"\\u2014not 175B parameter story tellers.\"), mdx(\"p\", null, \"If this feels familiar, it\\u2019s because every tech wave hits this wall\\u2014physics\\nbeats marketing every time.\"), mdx(\"h3\", {\n    \"id\": \"why-does-this-happen\"\n  }, \"Why Does This Happen?\"), mdx(\"p\", null, \"LLMs are:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Expensive:\"), \" Every extra parameter adds cost without linear value. We\\u2019re\\npast the point of scale returns.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Slow:\"), \" Autoregressive generation (token-by-token) is inherently laggy\\ncompared to bi-directional encoding.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Overkill:\"), \" You don\\u2019t need a PhD-level reasoning engine to classify a\\nsupport ticket as \\u201CUrgent.\\u201D\")), mdx(\"h2\", {\n    \"id\": \"specialized-model-families-the-workhorses-of-production-ai\"\n  }, \"Specialized Model Families: The Workhorses of Production AI\"), mdx(\"p\", null, \"We\\u2019ll break down model families dominating production tasks, their engineering\\nproperties, key advantages, and example configurations.\"), mdx(\"h3\", {\n    \"id\": \"1-encoder-only-models-bert-and-modernbert-family\"\n  }, \"1. Encoder-Only Models (BERT and ModernBERT Family)\"), mdx(\"h4\", {\n    \"id\": \"background--architecture\"\n  }, \"Background & Architecture\"), mdx(\"p\", null, \"Classic BERT brought bidirectional text understanding; the 2024 revision\\nModernBERT reinvented it\\u20148K token context, RoPE embeddings, Flash Attention,\\ntrained on 2T tokens.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Core features:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Bidirectional context (reads left and right)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Efficient inference (milliseconds even on CPU)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Modules: NER, reranking, classification, embeddings\")), mdx(\"p\", null, \"Encoders are the quiet backbone of production NLP. Nobody tweets benchmarks for\\nentity extraction, yet those pipelines keep entire financial systems humming.\"), mdx(\"h4\", {\n    \"id\": \"production-use-cases\"\n  }, \"Production Use Cases\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Reranking:\"), \" MiniLM-L6-v2 (90MB) outperforms GPT reranking 10\\u2013100\\xD7 faster.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Classification:\"), \" Spam, sentiment, and intent detection with >95% accuracy.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Embeddings:\"), \" Handles thousands of docs/minute on a laptop.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"NER:\"), \" Entity extraction pipelines with near-zero latency.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Fast Reranking Pipeline (Python)\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-python\"\n  }, \"from transformers import AutoTokenizer, AutoModelForSequenceClassification\\nimport torch\\n\\nmodel_id = \\\"cross-encoder/ms-marco-MiniLM-L-6-v2\\\"\\ntokenizer = AutoTokenizer.from_pretrained(model_id)\\nmodel = AutoModelForSequenceClassification.from_pretrained(model_id)\\n\\ndef rerank(query, candidates):\\n    features = tokenizer([query] * len(candidates), candidates,\\n                         padding=True, truncation=True,\\n                         return_tensors=\\\"pt\\\")\\n    with torch.no_grad():\\n        scores = model(**features).logits\\n    return scores.argsort(descending=True)\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Performance Summary\")), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Model\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Size\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Latency (ms)\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Hardware\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Task\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"MiniLM-L-6-v2\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"90MB\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<10\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"CPU\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Reranking\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"GPT-4o\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\u2014\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"500\\u20131500\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cloud\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Reranking\")))), mdx(\"h3\", {\n    \"id\": \"2-time-series-models\"\n  }, \"2. Time Series Models\"), mdx(\"p\", null, \"LLMs fail miserably on time-dependent data. Enter transformer forecasters\\ntrained on value sequences.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Key Players:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Chronos-2 (Amazon, 2025):\"), \" Encoder-only numeric tokenizer, zero-shot\\nmultivariate forecasting.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"TimesFM 2.5 (Google):\"), \" Decoder-based, patch-trained sequence model.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Features:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Converts numeric values into token vocabularies.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Zero-shot forecasting\\u2014no retraining needed.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Runs hundreds of streams per GPU instance.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Zero-Shot Forecasting with Chronos-2\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-python\"\n  }, \"from chronos import ChronosPipeline\\n\\npipeline = ChronosPipeline.from_pretrained(\\n    \\\"amazon/chronos-2\\\",\\n    device_map=\\\"cuda\\\",\\n    torch_dtype=\\\"bfloat16\\\",\\n)\\n\\ncontext = [[23.5, 22.0, 21.4, 21.9, 22.7]]\\nforecast = pipeline.predict(context, prediction_length=12)\\nprint(forecast.mean(dim=0))\\n\")), mdx(\"p\", null, \"Chronos-2 treats numbers like text tokens\\u2014it\\u2019s weirdly poetic. Instead of\\nsentences, it reads waves. That shift turns forecasting into a pattern-language\\nproblem, where inference cost drops by 100\\xD7 compared to autoregressive giants.\\nEnergy grids, stock predictions, even predicting machine failure in edge IoT\\u2014all\\nrunning on a single GPU.\"), mdx(\"h3\", {\n    \"id\": \"3-object-detection-yolo-family-and-rf-detr\"\n  }, \"3. Object Detection: YOLO Family and RF-DETR\"), mdx(\"p\", null, \"Real-Time Vision at Scale\"), mdx(\"p\", null, \"YOLOv12 (2025) introduced Area Attention for high-res efficiency and runs at 25+\\nFPS on Raspberry Pi. RF-DETR reaches 60.6% mAP @ 100+ FPS.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Use Cases:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Robotics\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Factory detection\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Edge vision sensors\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"YOLOv12 Edge Inference\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-python\"\n  }, \"from ultralytics import YOLO\\n\\nmodel = YOLO(\\\"yolov12n.pt\\\")\\nresults = model(\\\"input-image.jpg\\\")\\n\\nfor box in results.boxes:\\n    print(f\\\"Class: {box.cls}, Score: {box.conf}\\\")\\n\")), mdx(\"p\", null, \"In factories we tested, YOLO-Nano averaged 26 FPS while maintaining >40 mAP. A\\nfull GPT-vision pass took 2\\u20135 seconds. That\\u2019s the difference between catching a\\nfaulty screw vs. missing it until recall.\"), mdx(\"h3\", {\n    \"id\": \"4-code-models-deepseek-coder-v2-moe-standard\"\n  }, \"4. Code Models: DeepSeek-Coder V2 (MoE Standard)\"), mdx(\"p\", null, \"Released mid-2025, DeepSeek-Coder V2 integrates a Mixture-of-Experts design:\\n236B total parameters, 21B active per token generation.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Highlights:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Polyglot (338 languages)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Local deployment ready (RTX 4090)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Matches GPT-4 Turbo in code tasks\")), mdx(\"p\", null, \"Mixture-of-Experts models changed the math. Instead of firing all neurons on\\nevery inference, they wake only relevant clusters. This is like paying only the\\nworkers needed for each line of code instead of staffing the whole company for\\nevery commit.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Retrieval Augmented Generation (RAG) has become the standard architecture for\\nbringing enterprise data into AI applications. However, the efficacy of RAG\\ndepends entirely on the quality of the retrieved documents. In 2023-2024, the\\nindustry relied heavily on simple vector similarity (Bi-Encoders) or tried to\\nuse LLMs (like GPT-4) to rerank results. In 2025, a new class of specialized\\nCross-Encoders has emerged to solve the \\u201CLatency Cliff.\\u201D\")), mdx(\"h3\", {\n    \"id\": \"5-document-understanding-layoutlmv3--donut\"\n  }, \"5. Document Understanding: LayoutLMv3 & Donut\"), mdx(\"p\", null, \"Documents aren\\u2019t just text\\u2014they\\u2019re layouts.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"LayoutLMv3:\"), \" Text + layout-aware, OCR-dependent.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Donut:\"), \" OCR-free visual parser, outputs JSON.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Edge Case:\"), \" Handwritten invoices and charts\\u2014LayoutLM fails, Donut and\\nQwen2.5-VL excel.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Parsing Invoices with Document QA\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-python\"\n  }, \"from transformers import AutoProcessor, AutoModelForDocumentQuestionAnswering\\n\\nprocessor = AutoProcessor.from_pretrained(\\\"microsoft/layoutlmv3-base\\\")\\nmodel = AutoModelForDocumentQuestionAnswering.from_pretrained(\\\"microsoft/layoutlmv3-base\\\")\\n\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"The processing of unstructured documents (PDFs, invoices, forms) remains one\\nof the highest-value use cases for enterprise AI. 2025 has seen a divergence\\nin approach between \\u201CLayout-Aware Text Models\\u201D and \\u201CVision-Language Models.\\u201D\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Hybrid Pipelines: The data suggests that 2025 production systems are adopting\\nHybrid Pipelines. They use LayoutLMv3 for high-volume, standard invoices\\n(cheap/fast) and route complex, handwritten, or chart-heavy pages to\\nQwen2.5-VL (slower/smarter). This \\u201CRouter\\u201D pattern mirrors the MoE\\narchitecture but applied at the application layer\\u2014another validation of the\\nmove away from \\u201Cone model to rule them all\\u201D.\")), mdx(\"h3\", {\n    \"id\": \"6-graph-neural-networks-gnns\"\n  }, \"6. Graph Neural Networks (GNNs)\"), mdx(\"p\", null, \"Graphs and anomaly detectors quietly run the web\\u2019s immune system. Graph data\\ndestroys sequential assumptions. Fraud detection, molecular modeling, and\\nrelational analysis thrive on GNNs.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Fraud Graph Detection using PyG\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-python\"\n  }, \"import torch\\nfrom torch_geometric.nn import GCNConv\\n\\nclass GCN(torch.nn.Module):\\n    def __init__(self):\\n        super().__init__()\\n        self.conv1 = GCNConv(1433, 16)\\n        self.conv2 = GCNConv(16, 7)\\n\\n    def forward(self, data):\\n        x, edge_index = data.x, data.edge_index\\n        x = self.conv1(x, edge_index).relu()\\n        x = self.conv2(x, edge_index)\\n        return x\\n\")), mdx(\"h3\", {\n    \"id\": \"7-anomaly-detection-autoencoders-everywhere\"\n  }, \"7. Anomaly Detection: Autoencoders Everywhere\"), mdx(\"p\", null, \"Autoencoders model normality, flag deviations instantly. Industries: IoT,\\ncybersecurity, fraud prevention.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Performance:\"), \" F1 > 0.92 on commodity devices.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Latency:\"), \" milliseconds per request.\")), mdx(\"h2\", {\n    \"id\": \"comparative-insight-llms-vs-specialized-models\"\n  }, \"Comparative Insight: LLMs vs. Specialized Models\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Where LLMs Fail:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Reranking and classification\\u2014too slow.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Time series\\u2014no temporal embeddings.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Vision\\u2014cannot infer real-time (<30 FPS).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Graphs\\u2014lose relational context.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Where Specialized Models Win:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Domain training efficiency.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Commodity hardware scalability.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Deterministic predictability.\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Modern AI Stack Configuration (YAML)\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-yaml\"\n  }, \"models:\\n  - name: chat\\n    model: qwen3:8b\\n    provider: universal\\n  - name: embedder\\n    model: nomic-ai/modernbert-embed-base\\n  - name: reranker\\n    model: cross-encoder/ms-marco-MiniLM-L-6-v2\\n  - name: forecaster\\n    model: amazon/chronos-2\\n  - name: detector\\n    model: ultralytics/yolov12n\\n  - name: doc-parser\\n    model: microsoft/layoutlmv3-base\\n\")), mdx(\"p\", null, \"You\\u2019ll notice every model here earns its keep. Nobody\\u2019s trying to philosophize;\\nthey just work. That\\u2019s what the correction feels like\\u2014boring reliability\\nreplacing viral demos.\"), mdx(\"p\", null, \"Each model handles its niche with lower latency and cost per request.\"), mdx(\"h2\", {\n    \"id\": \"performance-cost-and-deployment-insight\"\n  }, \"Performance, Cost, and Deployment Insight\"), mdx(\"h3\", {\n    \"id\": \"hardware-footprint\"\n  }, \"Hardware Footprint\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Encoders:\"), \" CPU-ready (Mac Mini deployable).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Vision:\"), \" Pi-compatible (Edge inference).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Time Series:\"), \" Single GPU (High throughput).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"LLMs:\"), \" GPU cluster necessary (High CapEx).\")), mdx(\"p\", null, \"Encoders run on laptops\\u2014you can literally host a production-grade reranker on a\\nMac Mini. The economics flipped; compute is no longer scarce, efficiency is the\\nmoat.\"), mdx(\"h3\", {\n    \"id\": \"scaling\"\n  }, \"Scaling\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Specialized models:\"), \" Thousands/minute.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"LLMs:\"), \" Bottleneck under heavy concurrency.\")), mdx(\"h3\", {\n    \"id\": \"best-practices\"\n  }, \"Best Practices\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Start small, test performance.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Benchmark before you scale.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Keep privacy local where possible.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Compose the stack like a MoE\\u2014not a monolith.\")), mdx(\"h2\", {\n    \"id\": \"conclusion-the-real-story-of-ai-production\"\n  }, \"Conclusion: The Real Story of AI Production\"), mdx(\"p\", null, \"The \\u201CAI bubble\\u201D isn\\u2019t bursting\\u2014it\\u2019s evolving. The LLM overhang is shrinking\\nfast. The new era? Compound AI systems fused from efficient, specialized models.\"), mdx(\"p\", null, \"Builders winning in 2025 are not those burning through GPU budgets\\u2014they\\u2019re those\\norchestrating specialized experts for text, vision, time, and graphs at\\nfractional cost and blazing speeds.\"), mdx(\"p\", null, \"Ignore the hype. Watch the charts. Deploy what works.\"), mdx(\"p\", null, \"If there\\u2019s a moral here, it\\u2019s that progress isn\\u2019t loud anymore. Specialized\\nintelligence crawled out of the lab and quietly took over the workloads that\\nmatter\\u2014search, vision, forecasting, fraud. While everyone talks about the next\\ntrillion-parameter breakthrough, the builders are shipping smaller, denser minds\\nthat simply get the job done.\"), mdx(\"h2\", {\n    \"id\": \"data-visualization-gallery\"\n  }, \"Data Visualization Gallery\"), mdx(\"h3\", {\n    \"id\": \"the-explosion-of-open-source\"\n  }, \"The Explosion of Open Source\"), mdx(\"p\", null, \"This one\\u2019s basically a heartbeat monitor for the open AI ecosystem\\u2014and it\\u2019s\\nracing. From 30K models in 2022 to over 2M in 2025, the line climbs like a\\nrocket. Every spike is another dev skipping the API tax and deploying their own\\nmodel. It\\u2019s the open\\u2011source Cambrian explosion in graph form\\u2014the quiet\\nrevolution powering the so\\u2011called \\u201CAI correction.\\u201D\"), mdx(LineChartGrowth, {\n    data: growthData,\n    mdxType: \"LineChartGrowth\"\n  }), mdx(\"h3\", {\n    \"id\": \"the-enterprise-ai-reality-gap\"\n  }, \"The Enterprise AI Reality Gap\"), mdx(\"p\", null, \"This funnel is the hype filter. It starts wide\\u2014C\\u2011suites shouting \\u201CAI first!\\u201D\\u2014and\\nnarrows fast as pilots hit the real world. By the time you reach production and\\nROI, you\\u2019re basically looking through a straw. It\\u2019s not that the tech doesn\\u2019t\\nwork; it\\u2019s that bloated LLM pilots can\\u2019t cross the unit\\u2011economics wall. This\\nchart shows exactly where the air leaks out of the bubble.\"), mdx(FunnelAdoption, {\n    data: adoptionData,\n    mdxType: \"FunnelAdoption\"\n  }), mdx(\"h3\", {\n    \"id\": \"the-smol-trend-utility-vs-size\"\n  }, \"The \\u201CSmol\\u201D Trend (Utility vs. Size)\"), mdx(\"p\", null, \"Here\\u2019s the truth in a single scatter\\u2014small dots punching way above their weight.\\nTop\\u2011left is where everything useful lives: MiniLM, ModernBERT, YOLO\\u2011Nano. Down\\nin the bottom\\u2011right, the giants like Falcon\\u2011180B are just compute sinkholes with\\nfancy logos. The plot bends toward efficiency, proving that \\u201Csmol\\u201D is not just\\ncute slang\\u2014it\\u2019s the actual center of gravity in production AI.\"), mdx(ScatterSmol, {\n    data: scatterData,\n    mdxType: \"ScatterSmol\"\n  }), mdx(\"h2\", {\n    \"id\": \"sources\"\n  }, \"Sources\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://techbuzz.ai\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Hugging Face CEO: We\\u2019re in an \\u2018LLM bubble,\\u2019 not AI bubble | The Tech Buzz\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://dataconomy.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Hugging Face CEO Warns The Massive LLM Bubble Could Burst Next Year - Dataconomy\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://ccbjournal.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"The Bubble Isn\\u2019t AI \\u2014 It\\u2019s the LLM Arms Race\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://aiworld.eu\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Hugging Face\\u2019s two million models and counting - AI World\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://sacra.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Hugging Face revenue, valuation & funding | Sacra\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://medium.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Understanding ModernBERT - Medium\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://huggingface.co\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"answerdotai/ModernBERT-base - Hugging Face\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://analyticsvidhya.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Enhancing Sentiment Analysis with ModernBERT - Analytics Vidhya\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://researchgate.net\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Yolov12: A comprehensive review of real time object detection - ResearchGate\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://docs.ultralytics.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"YOLO12: Attention-Centric Object Detection - Ultralytics YOLO Docs\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://so-development.org\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Comparing YOLOv12 and YOLOv13: The Evolution of Real-Time Object Detection\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"[NeurIPS 2025] YOLOv12: Attention-Centric Real-Time Object Detectors - GitHub\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://huggingface.co\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"amazon/chronos-2 - Hugging Face\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://amazon.science\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Introducing Chronos-2: From univariate to universal forecasting - Amazon Science\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"Chronos: Pretrained Models for Time Series Forecasting - GitHub\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://openlaboratory.ai\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"DeepSeek Coder V2 - Open Laboratory\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://huggingface.co\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"deepseek-ai/DeepSeek-Coder-V2-Instruct - Hugging Face\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://agentset.ai\",\n    \"target\": \"_blank\",\n    \"rel\": \"noreferrer\"\n  }, \"BAAI/BGE Reranker v2 M3 vs Cohere Rerank 3.5 - Agentset\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["AI"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEq0lEQVQ4y02U60+URxTG3++t2No2NfGLfhDUlgjLQpEuyEVggeXiwsJeYAGF3QW57MICUgWqJsYaLppUrAjIzdCCt3VBjWnTGIkWVEAQ5Pa//DozVNIPT86ZM3Oe88yZ877a6uoqKysrrAj78eNHZdc3NtgQ2NzcZGtrS9gt5cvY2toa6+vrfPjwgYWFBXF+hf9zaNKRAYnXr18zOzu3vSkgkz+RSkhCWVRiaWmJmZcvefHiBcuC/BOpINwmezI9zVQwyEtxaHl5WSW8e/eOxcVFEZ9iWuzPzc2JgrNC2SLz8wu8evWKwKMAU1NTSrHk0WTVZ8+eMTw0xPPnz3n8OEggEGBiYoIhERsbHaW6uhq73c5Afz/Dw8MK4+PjBIWAe5P36O3tVTlrohWarHj9+nUGBwe5efMmV3+5SktzM81NTRQXF2O1FpGaeoLExOPYrFYuXbrExQsXaGlp4afWVm7c6KW7u5vLly8zMzODNjY2Rmdnp4Lf76fK46Gqqor6+nocdgfp6ekYDAaMRqPyU1NTqRb7Pp+PU+XlNInCkuzCxYvcvn0brb29XSV73B5qa2uprKyktLQUnU73n7JEEhISSEtLIz4+npiYGLKyssjNzcVkMuH1emk738a1nmtcuXIFTZIVWgpxOp3ielby8vIwm80qITY2loiICEUoC2VkZCi1cXFxOygoKCA7O1sp7enpQXOJg5KgsLBw53BUVJRSUi6uJAskCZXNoq8Wi4XomGilVsadJSWKsERYWVA+nmYpsJCSkqIOuVwu8vPzVb8yMzOVIvm68nHKykpVAdkWSS7bkpOTQ1FRkVrLPHlDraGhgaSkJNUzGZBXdbvcgqBM9apVvGRfX5/osZtih4OTJ08icyShXq9X6mQhqd5ms6GFh4er5krpccfi8IhXrqurU+RyTOQ15Kh0d3Xjb2xUiZLEIcglsc/ro6KiAmO6kX379qGFhoYREhKCLlKnxuL06Qo6OjoYGBjk1m+36O8f4OmTp2KYR3j48BFdnV2CqFE8QjNuMRkGQzx7v93Lrl0h7N9/AM3tqSDki8/Y/cXn7PlqN4ePhGKIP4YpOwN3VSUNjfWcO3+Wjp/bON/WSm1dNeb8PJJTEjl0+KDK+3JPCF9/swerzSLGpqCflLAGUg83cuJQA8mhPuH7yQg/K9aNxB+oJTnMR1ZEK8bwZvKi28nVt5H+fZOIe0n7zq98iTN5t9DskaPUpgc5cyJAdfIjalIfU58RpCYtQL0xSINpGlfCA0qi/qA0egKnsE79tl8WM7mN6Em1th0dQyuOHqHedJ/ajEm82ffxmwOcLQrSbAngy3nAOfsUrqTfsetGKNaP4IiSdlRZCbtuGFvkkIL0tXLDGCUxozhjx7Dr75B76FcKwvuwR93Bphuk8Gg/jughrDpp7yhI364f3ImdMtyl/MdtaG9n3yMx/3aZv/+coa7Gjz7yGLqjPxB+RIchLomcrHxyTQVYzA4c1nLMeVZcp2tobeng6fRfzL9Z5s0/2zza2vqq+I+Jv/DaKhub68qOj9/FU+XmeGICYWEHxdBHkGXKFF+FBa/PS3dPF9NPplhafr+To3iE/ReLNcOQ3elwnAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/429c92eecaab11778cf7fc863a217fcf/a1946/ai-prod.png","srcSet":"/static/429c92eecaab11778cf7fc863a217fcf/5b37e/ai-prod.png 236w,\n/static/429c92eecaab11778cf7fc863a217fcf/49058/ai-prod.png 472w,\n/static/429c92eecaab11778cf7fc863a217fcf/a1946/ai-prod.png 944w,\n/static/429c92eecaab11778cf7fc863a217fcf/6050d/ai-prod.png 1200w","srcWebp":"/static/429c92eecaab11778cf7fc863a217fcf/99fbb/ai-prod.webp","srcSetWebp":"/static/429c92eecaab11778cf7fc863a217fcf/77392/ai-prod.webp 236w,\n/static/429c92eecaab11778cf7fc863a217fcf/1f177/ai-prod.webp 472w,\n/static/429c92eecaab11778cf7fc863a217fcf/99fbb/ai-prod.webp 944w,\n/static/429c92eecaab11778cf7fc863a217fcf/9000d/ai-prod.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M199%2053l-1%203c-1-1-1%200-1%202l-1%202-2%203c0%202-1%203-1%201%200-4-4-4-6-1l-2%203-1-3c-2-3-2-3-2-1-2%208-2%208%203%209l6%203c2%201%202%201%200%201-5%200%200%201%207%202l8%201h-20l-4-2-4-1c-1-1-2%200-3%201-1%203-3%204-4%201s-3-2-3%201l-1%204v-4c0-4-2-4-2%201l-1%203-1-4-1-3-1%202-1%202c-2-1-2%200-2%201l-2%202v1l1%202c-1%201-5-4-5-6%201-1%200-1-1-1s-2%200-1-1l-1-1-2%202-2%202v-1h-3c-2%201-2%201-1%202%202%201%200%203-3%202h-2l2-2c2-2%201-5-1-3l-2%202c0%202-1%203-3%203v-1l1-1-3%201c-2%202-3%202-4%201h-1v2l-2-2h-2l-4%202-4%201c-1%201-1%201%201%202l1%201h-3v1l-2%201c-2-1-2-1-2%201s0%202-1%200c-1-3-5-2-4%201%200%202%200%203-5%203l-5-2c0-2-4-1-8%202l-5%205c-3%202-4%206-2%206v2c-3%201-5-1-3-3v-3c-1-2-1-3%201-3%201%200%202-1%202-3v-3h-5c-5%201-5%201-4-1l2-2%201-2-2%201h-9l-1%202c0%202%200%203%201%202l2%201h2l2%201h3l2%201-2%202c-3%200-3%201-2%203%200%203%200%203-1%202-2-3-2-3-2%204-1%205-1%207-4%207l-1-1-5-1c-5%201-6%200-7-1-1-2-1-2-3-1-3%202-1%204%203%204%203%200%204%200%204%202s-2%204-3%203l-3%202-2%202h-1l-1%202-2%202-2%201-3%201-3-1-1-3-2-3c0-3-6%200-8%204l-4%203c-3%200-4%202-4%205h1c1-1%201%200%201%203v2l2-1v2l-2%202-1%201-2%202%201-3c1-1%201-2-1-2h-2a203%20203%200%2001-2%206c-2%203-1%204%202%203%202%200%202%200%201%201l-1%203-6%208c-1%200-1-3%201-5v-4l1-8%202-6v-2c0-2%200-2%201%200v-3c0-3%200-4%201-3s1%201%201-1v-1c1%201%201%201%201-2l2-8%201-5-1-1%201-1%204-5c4-7%204-8%201-6l-2%202%201-3v-3l-2%202-6%2013c-3%207-5%209-5%207v2c0%201%200%202-1%201-2-3-5%2013-5%2029l1%2012%201-1%202%202c2%200%202%200%200%201l-2%201h2c2%201%202%201%201%202H2l-1%201%201%202c1%201%200%206-1%207l-1%2010c0%209%200%2010%202%2011%201%201%202%202%201%203l1%202%204%202c2%201%203%202%204%201h4v1l1-1%202-1c2%200%202%200%200%203v5c-4%200%203%2012%209%2014l1%201%204%203c9%203%2015%207%2013%207l-12-5-11-5-4-2h5l-3-1-3-1c1%202-2%201-5-2l-5-5-2-6-3-4-2-1c-1-1-1%209-1%2021%200%2023%201%2030%205%2038l2%207%202%208c3%205%203%205-3%205H0v74h36l36%201%206%204c8%207%2017%2012%2020%2013l8%204a56%2056%200%200020%2010l3%201h8l-3%201c-5%201%205%202%2014%202%207-1%2010%200%207%202s7%202%2048%202c42%200%2046%200%2055-2%207-2%208-2%206-3h-4l-1-1-1-1h-3c-2-1-2-1%200-1%203%200%2015-4%2014-5l2-1%205-1%207-2%206-1%205-1c1%201%204%200%207-1%202-1%205-2%206-1%202%201%2010-5%2010-7l-2-2h-4c-2%200-2%200%201-2l2-3h1l1-1c-1-1%204-3%207-3%202%200%202%200-2%203l-5%202h5c4%200%206-1%209-3l4-2%2033-1h34v-74h-6c-4%200-6%200-5-1l8-19c2-7%202-9%203-32v-29l-1-3-3%203-4%204-6%205-5%205-5%204c-3%204-5%205-6%204l-9%203-7%204h-2c-1%202-7%204-9%204l1-2%203-3c0-1%201-2%202-1l4-1v-3c-2-1-2-2-2-3h5v-3l4-1%201%201v1l2-1%205-2c8-2%2020-9%2012-8-2%201-3%201-3-1l3-1c3%201%204%200%2012-6%202-2%202-2%200-2-2%201-2%201-2-1v-3c0-2-1-2-3-1h-2v-1l3-1c1-2%203-3%203-1v1c2%202%202-3%200-4l-2-2%203%201%204-1c-1-1%200-1%201-1%202%200%203%201%200%204l-1%202-1%202c-2%201-1%203%201%203%203%200%204-3%204-12%200-7%200-10-1-9l-1-1-2-1c-2%200-2%200%201-2%202-1%202-2%200-1l-1-1h-2c-4%200-7-2-4-4%201-1%201-1-1-1-1%200-2%200-1-2%200-2%200-2-2-3l-2-1h-1c-2%201-5%200-5-1l2-2c2%200%202-2-2-3l-2-3c1-1%200-1-3-1-5%200-7-1-6-2l-2-1v2c3%203-1%201-6-4-3-3-6-5-8-5-4%200-6-2-5-5s1-3-3-3l-8-2-7-3c-2%200-3-1-3-2h1l4%201c2%200%205%201%206%203l4%202-1-2c-2%200-2%200-1-1s1-1-1-2l-2-2c1-1%200-1-3-1-4%200-8-2-6-3%201-1%200-2-1-3l-2-2h2l2-2h2l2%201%203%201c3%200%203%200%202-1l-1-1v-1c-1-2%202-6%204-6%203%201%204-1%203-4l-2-2-1-1c0-2-3%201-3%203%200%205-7%2012-7%206l1-1c2%201%205-4%204-6l1-3v-1l-2%202-2%201-1-2v-2l1-2c1%200%202-5%201-6h-4c-2%201-2%202%200%201l1%201-2%201c-2%200-3%201-3%202h1c3-2%203%201%200%204l-2%201-2-3-2-3c0-1-1-2-2-1l-6-2-4-2h3c6-2%203-4-8-7l-1%203c0%203%200%203-3%203l-3-1-3-2c-2%200-2-1-2-4%201-3-1-5-2-1v1l1%201h-2l-1%202v2l-1-2c0-2%200-2-3%201l-2%202c0-1-1-1-2%201-1%201-1%201-1-2V74l-1%203c-2%204-2%203-2-1s-1-2-3%205c-1%202-1%202%201%202%203%200%204%200%204%203%200%202-1%203-4%203s-3%200-2-2c1-1%201-1-1-1l-1-1-1-2-1%202h-4l2%202c1%200%202%201%201%202l2%203h-3l-5%201%203%201%201%201-1%201%201%202%201%202c-1%201-1%201%200%200l4%201h1c-2-4%206-2%2010%202l2%201%203%203%202%202c2%200%205%203%205%204-1%200-8-3-8-5l-3-2-2-1c0-2-4-4-6-3-3%200-2%202%200%202l2%201h1l1%201%203%203c5%203%206%205%202%204l-5-2h-2l-3-1-2-1%202-1c2-1%201-1-2-1h-4l-1-1h-2l-1-1-6-3c-3-4-3-4-1-4h2l-2-3c-2-3-3-6%200-6l-1-1-6-1h-7l3%203%206%203%204%202h-3c-7-2-9-2-10-4-1-1-2-2-1-4l-1-4v-2c2-1%200-3-5-3l-4-1-2-3c-3-1-3-1-3%201s0%202-1%201l-1-2v2h-1l-2-2c-2%200-2%200-1-2s1-2-1-5l-3-4c0-2-5-10-6-10l1%204c2%205%203%209%201%206-3-6-7-7-7-3%200%203%200%203-2-2-2-7-3-8-3-5m169%2018l2%204c3%203%208%2013%208%2016l4%2012c5%2010%207%2019%205%2016s-1%201%201%204l3%202%201%203v1c1-1%205%207%206%2014s2%206%202-3c0-10-3-20-12-38-7-15-20-35-20-31m-11%2015l-2%201v1l-1%201h-2l1%201%201%201-1%201h-1l-3%201c-3%200-4%200-4%202l1%201%202%201%202-1c0-1%201-2%203-2%203%200%203%200%202%201-2%201-2%201%202%203%202%201%202%201-1%201-4-1-6%201-3%203h5c2%202%202%202%202%200h2c-1-2%201-3%201-1h3c2%200%201-2%200-3l-2-3-2-1h-1c1-1%200-3-1-5-1-3-3-5-3-3m-211%2017c-1%201-17%202-19%201l-7%201v1h7c5%201%201%203-6%203-4%200-4%200-3%201v1l-9-1c-5%200-7%200-6-1l-1-1-7%205-2%201h-3v2c-1%201-1%201%201%202s2%201%201%202c-2%202-2%203-1%203%202%200%205-4%203-5s0-2%204-2l13-2c12-2%2013-3%2011%200-1%201-1%201%201%201%203%200%208-2%207-4%200-2%206-4%209-3l3-1%203-1%203-2c1-2%200-3-2-1m199%208l-3%201-3%201c-1%201%202%202%203%201l1%201-2%201-2%201%202%201v3l1%201v2l1%203%201%202%204%201-1-2c-3-2-3-3%201-1h2l2%202%203%205c3%202%206%203%206%201h1v1l1%201%205-2c4%200%204-2%200-2-2%200-3-1%200-3%201-2%201-2-1-4l-3-2v-3l-2%201h-2l-3-1c-1%201-1%200-1-1s0-2-1-1c-1%200-2-1-2-4-1-2-1-3-2-2-2%202-3%201-3-1l-1-2-2%201m-13%2027l1%203h-5c-6%200-8%201-5%204h2c0-2%202-3%202-1h3l6%203%206%204%203-1c2%200%200-3-3-4l-5-1c-3-1-3-1%200-1h3l-3-2-2-3%202-1h-5m-222%2011l-3%204h9l10-1c2-2%201-3-3-2h-3l3-1h4l1-1c1-1-1-1-3-1-3%200-5%200-4-1l-4-1c-3%200-4%201-7%204m-36%205l-3%201-6%201-4%202-5%203-4%204h4c4%200%207-2%208-6l2-2h14c2-2%201-3-1-3h-3l-1-1-1%201m128%201l1%203v1l-1%203%201%201c1-1%207%202%206%203l1%201v3l1%202c1%200%202%201%201%202l-2%201v1h6c2-2%203-1%202%201h1c1-1%201-1%203%202%201%203%207%205%207%203s-3-6-5-6l-2-4-1-4v-7c1-2-1-5-3-5l-3-1h-1c-2%201-8%200-8-1%200-2-3-1-4%201m142%2010c2%202%201%203-1%203s-2%200-1%202h4c-2-2%201-1%203%201l2%202%204%203c3%202%204%202%207%201%205-1%206-1%202-4l-3-1c-1%201-7-1-12-5-5-3-7-4-5-2m24%202l-2%202c-2%200-2%200%202%204l6%203v1c-2%201%201%202%205%202s4-1%202-3l-2-2%203-1c4-1%203-2-3-3-5-1-7-2-6-3l-2-1-3%201m-110%2013c0%202-2%203-5%201-2-1-4%200-3%202%202%201%209%203%2011%202l1%201-2%203c0%202-1%202-4%202l-5%201c-1%201-13%203-14%202l-1-2-2-1c-4%200-5-2-4-4%200-2%200-2-2-2s-3%201%200%205l1%206%202%202c1%201%203%200%203-1v-1c1-1%201%200%201%201%200%204%202%204%2010%203%2013-2%2018-3%2017-4h-3l-3-1c1-2%208-2%208%200l8%2012%205%202c3%200%204%200%207%203%202%203%203%203%205%202h2c2%201%201-1-1-3v-2l3%202%203%202c2%200%202%200%200-2l-4-2v-1l3-1c2%200%202%200%201-1-2-1-3-3%200-2v-2c-1-2%201-3%207-3%203%200%203%200%202-2l-4-1-5-2h-6c-3%202-4%202-6%201l-4-1c0%201%208%206%2011%206l3%202c0%201-5%202-7%201-1-1-1-1-1%201%202%204-5%203-7-1-2-3-1-5%201-2%203%202%204%200%201-3l-5-6c-2-3-4-3-2%201%202%203%200%203-5-1-5-3-5-4-3-5%201-2%201-2-2-3l-5-4c-1-2-1-2-1%200m79%202c-4%202-5%202-6%201h-3c1%201-9%204-14%204-2%200-3%201-2%202l10-2a582%20582%200%200110%200l1%202%204%202c3%202%205%202%2011-3%203-3%205-3%205-1h-1l-1%201%202%202%204%201%202%201%203%201%204%202%203%201c3%201%209%201%209-1l-3-1h-4l-2-3c-1-2-2-2%204%200v-1l-1-1-1-1c1-1-2-2-5-1-2%201-2%201-1%203%200%202%200%202-2%202l-1-3c0-2-4-4-7-3l-2-1c0-4-10-6-16-3m-234%202l-4%201-3%201H86l-5%201c2%200%203%204%201%204l-2-1c0-1-4-1-7%202-7%204-5%205%206%206l6%201%204-5c3-4%204-5%208-6%204%200%204%200%202-1-1-1-1-1%202-1s4%202%201%202c-1%201-1%201%201%201s4-2%202-4c0-1-1-2-2-1m111%205l-1%201-1%201v1l1%201-3%201c-3%200-3%200-2%201s1%201-1%202h-3l1-1c3-1-1-2-7-2l-6-1-1-1-1%201-3%203c-3%202-3%202-5%200-3-2-3-2-7-1s-4%201%201%204l4%203-3%203-3%201c-1%202-6%201-7-2l-1-2v2l1%203%201%202c0%203%202%204%205%204l2%201h2c3-2%207%200%207%202-1%201%200%203%201%203v2c-1%201%201%205%203%205l1-1-1-1-1-1c0-2%204-1%205%202%200%203%202%202%202-1%200-2-1-3-2-3l-3-1-1-2%208%204c1%202%204%201%204%200l-1-2-1-1%202-1c2%201%202%200%201-1%200-3%201-3%203%200%203%202%201%204-2%203l-1%201c0%201%203%203%205%203l2%201h1l1%201v3l2-2c0-4%202-4%202%200s-2%205-4%206v2c0%201-3-1-3-3h-2c-1%201-11%201-12-1l-10-1c-5%200-8%201-8%204l-1%201-3%202h-2c-2-1-7-1-8%201-1%201-1%201%202%201%206%200%2010%201%209%203h-3l-2-1%201%202v2c-2%200-3%203-2%203h1c1-1%207%200%207%201l-4%201-2%201c1%201-2%201-7%201-8%200-16-4-17-7s7-6%208-4h1c0-2%202-1%202%201l1%201%201-1%201-2c2-1%201-1-6-1-8%200-9%200-11%203s-9%204-19%200l-14-3c-6-2-11-6-9-7v-12l2-2-4%202-5%203v2c0%202-2%203-5%202-2%200-1%200%201%202%203%201%204%202%203%203-2%201%200%203%202%201l2-1-1%202c-3%203%200%205%208%206l9%203%203%202v2l-4%201h-3l2%201c2%200%202%200%201%202l-2%202c-4%200-5%200-3%201%201%201%201%201-1%201h-2c-1%201%200%201%203%201s4%200%203%201l-1%202%202-1c1-1%204-1%207%201s4%202%204%201c-1-1%205-2%207%200%201%201%200%201-3%201h-4l4%202%2010%201%2010%201c1%201%204%202%205%201l3%201c2%203%207%204%208%202l3-2v-1l3-1%203%201c-1%202%2017%203%2022%201h5l-3%201%204%201%206-1%2010-1-2%202-3%201-4%201h-3l3%201c4%200%206%202%204%203v1l3-2c2-1%202-1%200-3-1-1-1-1%201-1%204%200%205-1%204-3-1-1-1-1%201-1l2%202c1%202%201%202-1%202l-3%201c-1%201%200%201%203%201l5-1c0-2%207-4%208-3s8%200%209-1h1l2%201h9l-2-1c-2%200-2%200%200-1l6-1%204-2c2-2%202-2-3-2l-7%202c-3%202-11%204-8%202l1-2c0-1%206-3%2013-4%204%200%207-2%208-3l1-2c-2%201-9%202-11%201-2%200-2%200%201-2l3-3%203-1h2c0%201%204%202%206%201%203-1%202-2-1-1-2%200-2%200%200-1%202-2%202-2%200-3l-2-3-1-1c0%201-1%203-3%203-2%201-2%201-1%202%202%201-4%202-7%202h-2c0%202-2%203-3%201l-1-1c-4%201-10%200-10-1%201-1-3-3-7-3-2%200-3%200-2-1l-2-1v-1c1-2%201-2-2-5l-3-3-1-4-1-2-2%202c0%202-2%203-2%202v-2c3-2%202-3%200-5l-2-2h2l15-2%201-1c-1-1%201-1%204-1%205%200%205-1%200-2h-5l-1%201c-1%202-4%201-6-1h-1c0%204-12%206-12%202l-1-2c-1-1%200-1%202-1l1-1h-5c-1%201-2%200-5-3l-4-2%201%202c2%201%202%204-1%204-2%200-2%200-1-1%202%200%201-2-1-2l-7-4%202-2%202-4c-1-1%202-2%205-3%209%200%2014-1%2014-3l1-1c1%201%203-1%202-4%200-2-1-3-2-3v1M57%20199c0%203-1%203-3%203-6%200-1%202%2011%204l13%202%203-2c3-4%203-4-9-6-13-2-13-2-10-4l2-2h-3c-3%200-3%201-4%205m68%206l-2%201c-1%200-4%202-3%204h-5l-3%203c0%201%204%201%205-1v2c-1%201-1%202%201%202l1%202c-1%201%201%201%205%201%205%200%206%200%207-2l2-2v2c0%201%200%202%201%201%201%200%202-1%201-2%200-3-4-3-8%200l-4%202v-5l2-3v-5m197%201v1c-1%202%200%202%202%201%203-1%207%200%204%201-2%201-2%201%200%201%203-1%202%202-1%202-2%201-2%201-1%203l4%201c2-1%208%201%208%202l2%202%204%202c3%202%204%203%204%201l5-4%203-3h-6l-1-1h-2l-2%201c-2%202-3%202-8-1-3-2-3-3%202-4l2-2h-1l-2-1v-1l-3-1c-3%200-4%200-3%201l1%202-2-2-9-1m-85%2016l-5%202c-2%200-2%200-2%203%200%206%201%207%203%206v-2c-3-1-3-6%200-6v2c-2%202-1%202%209%202%209%200%2011-1%2011-2%200-2-3-2-4-1l-3-1-1-3c1-1%201-1-1-1h-3c-1-1-3%200-4%201m89%204c-3%201-3%201-1%201%204%200%205%202%202%202-2%201-2%201-1%203%202%201%202%202%201%202l-1%203c1%202%201%202-1%202l-4-1-2-1-6-2-2-2h7c1%201%206%200%206-1%200-2-5-4-8-4l-3-1v-1l-1%201c0%202-2%203-5%202-3%200-4%200-2%202%204%203%201%205-11%204-12%200-14%200-11%202%201%202%201%202-1%202-4%200-4%202%200%206%205%205%208%205%208-1%200-5%200-6%203-4l9%205-2-4-2-3%202%201h4l4%203%203%202%208-2%209-2%207-2c2-1%202-1-2-1-3%200-4%200-4-2l7-1c5%200%207-1%207-2%200-2-5-6-6-4h-3l-2-2h-6M89%20241c-3%202-3%203%200%203h2l-2%202-1%202c1%201-4%202-8%202l2%201c3%202%205%203%207%202l5%202c2%202%205%203%204%201-1-1%200-1%201-1l-1-1-3-2-3-1c-1%200-2%200-2-2s0-2%202-2l3%201%202%202h7l3-1-5-1c-5-1-9-5-9-7%201-2-1-2-4%200m122%205l-2%202-2%201c-4%202-4%205-1%207%204%201%2010%202%2011%201l1-1%201%201v1l1-2c-1-1%200-1%201-1%203%200%203-6%200-6l-3-1c-2-2-4-3-7-2M25%20322c-2%206-2%208-1%208l2-2c0-1%201-2%204-2l4%202%202%202a318%20318%200%2001-4-13c-2-5-4-3-7%205m95-6c0%202%200%203-3%202-3%200-5%202-5%206%200%205%202%206%206%206h4v-8l-1-8-1%202m-42%2011l1%208%201-3c0-2%200-3%203-2%203%200%205-2%205-5%200-5-2-7-6-7h-4v9m22-8v10c5%204%2012-2%209-8-2-3-7-4-9-2m67%201c-2%202-3%207-1%209%203%202%207%201%209-2%203-6-4-12-8-7m90%2065l-10%201-14%201-5%202h4l6-2c2%200%202%200%201%201l-2%202%205%201c7%201%2014-1%2010-2-2%200%200-2%202-2%203%200%209-3%207-3l-4%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEq0lEQVQ4y02U60+URxTG3++t2No2NfGLfhDUlgjLQpEuyEVggeXiwsJeYAGF3QW57MICUgWqJsYaLppUrAjIzdCCt3VBjWnTGIkWVEAQ5Pa//DozVNIPT86ZM3Oe88yZ877a6uoqKysrrAj78eNHZdc3NtgQ2NzcZGtrS9gt5cvY2toa6+vrfPjwgYWFBXF+hf9zaNKRAYnXr18zOzu3vSkgkz+RSkhCWVRiaWmJmZcvefHiBcuC/BOpINwmezI9zVQwyEtxaHl5WSW8e/eOxcVFEZ9iWuzPzc2JgrNC2SLz8wu8evWKwKMAU1NTSrHk0WTVZ8+eMTw0xPPnz3n8OEggEGBiYoIhERsbHaW6uhq73c5Afz/Dw8MK4+PjBIWAe5P36O3tVTlrohWarHj9+nUGBwe5efMmV3+5SktzM81NTRQXF2O1FpGaeoLExOPYrFYuXbrExQsXaGlp4afWVm7c6KW7u5vLly8zMzODNjY2Rmdnp4Lf76fK46Gqqor6+nocdgfp6ekYDAaMRqPyU1NTqRb7Pp+PU+XlNInCkuzCxYvcvn0brb29XSV73B5qa2uprKyktLQUnU73n7JEEhISSEtLIz4+npiYGLKyssjNzcVkMuH1emk738a1nmtcuXIFTZIVWgpxOp3ielby8vIwm80qITY2loiICEUoC2VkZCi1cXFxOygoKCA7O1sp7enpQXOJg5KgsLBw53BUVJRSUi6uJAskCZXNoq8Wi4XomGilVsadJSWKsERYWVA+nmYpsJCSkqIOuVwu8vPzVb8yMzOVIvm68nHKykpVAdkWSS7bkpOTQ1FRkVrLPHlDraGhgaSkJNUzGZBXdbvcgqBM9apVvGRfX5/osZtih4OTJ08icyShXq9X6mQhqd5ms6GFh4er5krpccfi8IhXrqurU+RyTOQ15Kh0d3Xjb2xUiZLEIcglsc/ro6KiAmO6kX379qGFhoYREhKCLlKnxuL06Qo6OjoYGBjk1m+36O8f4OmTp2KYR3j48BFdnV2CqFE8QjNuMRkGQzx7v93Lrl0h7N9/AM3tqSDki8/Y/cXn7PlqN4ePhGKIP4YpOwN3VSUNjfWcO3+Wjp/bON/WSm1dNeb8PJJTEjl0+KDK+3JPCF9/swerzSLGpqCflLAGUg83cuJQA8mhPuH7yQg/K9aNxB+oJTnMR1ZEK8bwZvKi28nVt5H+fZOIe0n7zq98iTN5t9DskaPUpgc5cyJAdfIjalIfU58RpCYtQL0xSINpGlfCA0qi/qA0egKnsE79tl8WM7mN6Em1th0dQyuOHqHedJ/ajEm82ffxmwOcLQrSbAngy3nAOfsUrqTfsetGKNaP4IiSdlRZCbtuGFvkkIL0tXLDGCUxozhjx7Dr75B76FcKwvuwR93Bphuk8Gg/jughrDpp7yhI364f3ImdMtyl/MdtaG9n3yMx/3aZv/+coa7Gjz7yGLqjPxB+RIchLomcrHxyTQVYzA4c1nLMeVZcp2tobeng6fRfzL9Z5s0/2zza2vqq+I+Jv/DaKhub68qOj9/FU+XmeGICYWEHxdBHkGXKFF+FBa/PS3dPF9NPplhafr+To3iE/ReLNcOQ3elwnAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/429c92eecaab11778cf7fc863a217fcf/3ddd4/ai-prod.png","srcSet":"/static/429c92eecaab11778cf7fc863a217fcf/078a8/ai-prod.png 163w,\n/static/429c92eecaab11778cf7fc863a217fcf/e56da/ai-prod.png 327w,\n/static/429c92eecaab11778cf7fc863a217fcf/3ddd4/ai-prod.png 653w,\n/static/429c92eecaab11778cf7fc863a217fcf/c5cc7/ai-prod.png 980w,\n/static/429c92eecaab11778cf7fc863a217fcf/6050d/ai-prod.png 1200w","srcWebp":"/static/429c92eecaab11778cf7fc863a217fcf/0acdf/ai-prod.webp","srcSetWebp":"/static/429c92eecaab11778cf7fc863a217fcf/ac59e/ai-prod.webp 163w,\n/static/429c92eecaab11778cf7fc863a217fcf/7660b/ai-prod.webp 327w,\n/static/429c92eecaab11778cf7fc863a217fcf/0acdf/ai-prod.webp 653w,\n/static/429c92eecaab11778cf7fc863a217fcf/75470/ai-prod.webp 980w,\n/static/429c92eecaab11778cf7fc863a217fcf/9000d/ai-prod.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M199%2053l-1%203c-1-1-1%200-1%202l-1%202-2%203c0%202-1%203-1%201%200-4-4-4-6-1l-2%203-1-3c-2-3-2-3-2-1-2%208-2%208%203%209l6%203c2%201%202%201%200%201-5%200%200%201%207%202l8%201h-20l-4-2-4-1c-1-1-2%200-3%201-1%203-3%204-4%201s-3-2-3%201l-1%204v-4c0-4-2-4-2%201l-1%203-1-4-1-3-1%202-1%202c-2-1-2%200-2%201l-2%202v1l1%202c-1%201-5-4-5-6%201-1%200-1-1-1s-2%200-1-1l-1-1-2%202-2%202v-1h-3c-2%201-2%201-1%202%202%201%200%203-3%202h-2l2-2c2-2%201-5-1-3l-2%202c0%202-1%203-3%203v-1l1-1-3%201c-2%202-3%202-4%201h-1v2l-2-2h-2l-4%202-4%201c-1%201-1%201%201%202l1%201h-3v1l-2%201c-2-1-2-1-2%201s0%202-1%200c-1-3-5-2-4%201%200%202%200%203-5%203l-5-2c0-2-4-1-8%202l-5%205c-3%202-4%206-2%206v2c-3%201-5-1-3-3v-3c-1-2-1-3%201-3%201%200%202-1%202-3v-3h-5c-5%201-5%201-4-1l2-2%201-2-2%201h-9l-1%202c0%202%200%203%201%202l2%201h2l2%201h3l2%201-2%202c-3%200-3%201-2%203%200%203%200%203-1%202-2-3-2-3-2%204-1%205-1%207-4%207l-1-1-5-1c-5%201-6%200-7-1-1-2-1-2-3-1-3%202-1%204%203%204%203%200%204%200%204%202s-2%204-3%203l-3%202-2%202h-1l-1%202-2%202-2%201-3%201-3-1-1-3-2-3c0-3-6%200-8%204l-4%203c-3%200-4%202-4%205h1c1-1%201%200%201%203v2l2-1v2l-2%202-1%201-2%202%201-3c1-1%201-2-1-2h-2a203%20203%200%2001-2%206c-2%203-1%204%202%203%202%200%202%200%201%201l-1%203-6%208c-1%200-1-3%201-5v-4l1-8%202-6v-2c0-2%200-2%201%200v-3c0-3%200-4%201-3s1%201%201-1v-1c1%201%201%201%201-2l2-8%201-5-1-1%201-1%204-5c4-7%204-8%201-6l-2%202%201-3v-3l-2%202-6%2013c-3%207-5%209-5%207v2c0%201%200%202-1%201-2-3-5%2013-5%2029l1%2012%201-1%202%202c2%200%202%200%200%201l-2%201h2c2%201%202%201%201%202H2l-1%201%201%202c1%201%200%206-1%207l-1%2010c0%209%200%2010%202%2011%201%201%202%202%201%203l1%202%204%202c2%201%203%202%204%201h4v1l1-1%202-1c2%200%202%200%200%203v5c-4%200%203%2012%209%2014l1%201%204%203c9%203%2015%207%2013%207l-12-5-11-5-4-2h5l-3-1-3-1c1%202-2%201-5-2l-5-5-2-6-3-4-2-1c-1-1-1%209-1%2021%200%2023%201%2030%205%2038l2%207%202%208c3%205%203%205-3%205H0v74h36l36%201%206%204c8%207%2017%2012%2020%2013l8%204a56%2056%200%200020%2010l3%201h8l-3%201c-5%201%205%202%2014%202%207-1%2010%200%207%202s7%202%2048%202c42%200%2046%200%2055-2%207-2%208-2%206-3h-4l-1-1-1-1h-3c-2-1-2-1%200-1%203%200%2015-4%2014-5l2-1%205-1%207-2%206-1%205-1c1%201%204%200%207-1%202-1%205-2%206-1%202%201%2010-5%2010-7l-2-2h-4c-2%200-2%200%201-2l2-3h1l1-1c-1-1%204-3%207-3%202%200%202%200-2%203l-5%202h5c4%200%206-1%209-3l4-2%2033-1h34v-74h-6c-4%200-6%200-5-1l8-19c2-7%202-9%203-32v-29l-1-3-3%203-4%204-6%205-5%205-5%204c-3%204-5%205-6%204l-9%203-7%204h-2c-1%202-7%204-9%204l1-2%203-3c0-1%201-2%202-1l4-1v-3c-2-1-2-2-2-3h5v-3l4-1%201%201v1l2-1%205-2c8-2%2020-9%2012-8-2%201-3%201-3-1l3-1c3%201%204%200%2012-6%202-2%202-2%200-2-2%201-2%201-2-1v-3c0-2-1-2-3-1h-2v-1l3-1c1-2%203-3%203-1v1c2%202%202-3%200-4l-2-2%203%201%204-1c-1-1%200-1%201-1%202%200%203%201%200%204l-1%202-1%202c-2%201-1%203%201%203%203%200%204-3%204-12%200-7%200-10-1-9l-1-1-2-1c-2%200-2%200%201-2%202-1%202-2%200-1l-1-1h-2c-4%200-7-2-4-4%201-1%201-1-1-1-1%200-2%200-1-2%200-2%200-2-2-3l-2-1h-1c-2%201-5%200-5-1l2-2c2%200%202-2-2-3l-2-3c1-1%200-1-3-1-5%200-7-1-6-2l-2-1v2c3%203-1%201-6-4-3-3-6-5-8-5-4%200-6-2-5-5s1-3-3-3l-8-2-7-3c-2%200-3-1-3-2h1l4%201c2%200%205%201%206%203l4%202-1-2c-2%200-2%200-1-1s1-1-1-2l-2-2c1-1%200-1-3-1-4%200-8-2-6-3%201-1%200-2-1-3l-2-2h2l2-2h2l2%201%203%201c3%200%203%200%202-1l-1-1v-1c-1-2%202-6%204-6%203%201%204-1%203-4l-2-2-1-1c0-2-3%201-3%203%200%205-7%2012-7%206l1-1c2%201%205-4%204-6l1-3v-1l-2%202-2%201-1-2v-2l1-2c1%200%202-5%201-6h-4c-2%201-2%202%200%201l1%201-2%201c-2%200-3%201-3%202h1c3-2%203%201%200%204l-2%201-2-3-2-3c0-1-1-2-2-1l-6-2-4-2h3c6-2%203-4-8-7l-1%203c0%203%200%203-3%203l-3-1-3-2c-2%200-2-1-2-4%201-3-1-5-2-1v1l1%201h-2l-1%202v2l-1-2c0-2%200-2-3%201l-2%202c0-1-1-1-2%201-1%201-1%201-1-2V74l-1%203c-2%204-2%203-2-1s-1-2-3%205c-1%202-1%202%201%202%203%200%204%200%204%203%200%202-1%203-4%203s-3%200-2-2c1-1%201-1-1-1l-1-1-1-2-1%202h-4l2%202c1%200%202%201%201%202l2%203h-3l-5%201%203%201%201%201-1%201%201%202%201%202c-1%201-1%201%200%200l4%201h1c-2-4%206-2%2010%202l2%201%203%203%202%202c2%200%205%203%205%204-1%200-8-3-8-5l-3-2-2-1c0-2-4-4-6-3-3%200-2%202%200%202l2%201h1l1%201%203%203c5%203%206%205%202%204l-5-2h-2l-3-1-2-1%202-1c2-1%201-1-2-1h-4l-1-1h-2l-1-1-6-3c-3-4-3-4-1-4h2l-2-3c-2-3-3-6%200-6l-1-1-6-1h-7l3%203%206%203%204%202h-3c-7-2-9-2-10-4-1-1-2-2-1-4l-1-4v-2c2-1%200-3-5-3l-4-1-2-3c-3-1-3-1-3%201s0%202-1%201l-1-2v2h-1l-2-2c-2%200-2%200-1-2s1-2-1-5l-3-4c0-2-5-10-6-10l1%204c2%205%203%209%201%206-3-6-7-7-7-3%200%203%200%203-2-2-2-7-3-8-3-5m169%2018l2%204c3%203%208%2013%208%2016l4%2012c5%2010%207%2019%205%2016s-1%201%201%204l3%202%201%203v1c1-1%205%207%206%2014s2%206%202-3c0-10-3-20-12-38-7-15-20-35-20-31m-11%2015l-2%201v1l-1%201h-2l1%201%201%201-1%201h-1l-3%201c-3%200-4%200-4%202l1%201%202%201%202-1c0-1%201-2%203-2%203%200%203%200%202%201-2%201-2%201%202%203%202%201%202%201-1%201-4-1-6%201-3%203h5c2%202%202%202%202%200h2c-1-2%201-3%201-1h3c2%200%201-2%200-3l-2-3-2-1h-1c1-1%200-3-1-5-1-3-3-5-3-3m-211%2017c-1%201-17%202-19%201l-7%201v1h7c5%201%201%203-6%203-4%200-4%200-3%201v1l-9-1c-5%200-7%200-6-1l-1-1-7%205-2%201h-3v2c-1%201-1%201%201%202s2%201%201%202c-2%202-2%203-1%203%202%200%205-4%203-5s0-2%204-2l13-2c12-2%2013-3%2011%200-1%201-1%201%201%201%203%200%208-2%207-4%200-2%206-4%209-3l3-1%203-1%203-2c1-2%200-3-2-1m199%208l-3%201-3%201c-1%201%202%202%203%201l1%201-2%201-2%201%202%201v3l1%201v2l1%203%201%202%204%201-1-2c-3-2-3-3%201-1h2l2%202%203%205c3%202%206%203%206%201h1v1l1%201%205-2c4%200%204-2%200-2-2%200-3-1%200-3%201-2%201-2-1-4l-3-2v-3l-2%201h-2l-3-1c-1%201-1%200-1-1s0-2-1-1c-1%200-2-1-2-4-1-2-1-3-2-2-2%202-3%201-3-1l-1-2-2%201m-13%2027l1%203h-5c-6%200-8%201-5%204h2c0-2%202-3%202-1h3l6%203%206%204%203-1c2%200%200-3-3-4l-5-1c-3-1-3-1%200-1h3l-3-2-2-3%202-1h-5m-222%2011l-3%204h9l10-1c2-2%201-3-3-2h-3l3-1h4l1-1c1-1-1-1-3-1-3%200-5%200-4-1l-4-1c-3%200-4%201-7%204m-36%205l-3%201-6%201-4%202-5%203-4%204h4c4%200%207-2%208-6l2-2h14c2-2%201-3-1-3h-3l-1-1-1%201m128%201l1%203v1l-1%203%201%201c1-1%207%202%206%203l1%201v3l1%202c1%200%202%201%201%202l-2%201v1h6c2-2%203-1%202%201h1c1-1%201-1%203%202%201%203%207%205%207%203s-3-6-5-6l-2-4-1-4v-7c1-2-1-5-3-5l-3-1h-1c-2%201-8%200-8-1%200-2-3-1-4%201m142%2010c2%202%201%203-1%203s-2%200-1%202h4c-2-2%201-1%203%201l2%202%204%203c3%202%204%202%207%201%205-1%206-1%202-4l-3-1c-1%201-7-1-12-5-5-3-7-4-5-2m24%202l-2%202c-2%200-2%200%202%204l6%203v1c-2%201%201%202%205%202s4-1%202-3l-2-2%203-1c4-1%203-2-3-3-5-1-7-2-6-3l-2-1-3%201m-110%2013c0%202-2%203-5%201-2-1-4%200-3%202%202%201%209%203%2011%202l1%201-2%203c0%202-1%202-4%202l-5%201c-1%201-13%203-14%202l-1-2-2-1c-4%200-5-2-4-4%200-2%200-2-2-2s-3%201%200%205l1%206%202%202c1%201%203%200%203-1v-1c1-1%201%200%201%201%200%204%202%204%2010%203%2013-2%2018-3%2017-4h-3l-3-1c1-2%208-2%208%200l8%2012%205%202c3%200%204%200%207%203%202%203%203%203%205%202h2c2%201%201-1-1-3v-2l3%202%203%202c2%200%202%200%200-2l-4-2v-1l3-1c2%200%202%200%201-1-2-1-3-3%200-2v-2c-1-2%201-3%207-3%203%200%203%200%202-2l-4-1-5-2h-6c-3%202-4%202-6%201l-4-1c0%201%208%206%2011%206l3%202c0%201-5%202-7%201-1-1-1-1-1%201%202%204-5%203-7-1-2-3-1-5%201-2%203%202%204%200%201-3l-5-6c-2-3-4-3-2%201%202%203%200%203-5-1-5-3-5-4-3-5%201-2%201-2-2-3l-5-4c-1-2-1-2-1%200m79%202c-4%202-5%202-6%201h-3c1%201-9%204-14%204-2%200-3%201-2%202l10-2a582%20582%200%200110%200l1%202%204%202c3%202%205%202%2011-3%203-3%205-3%205-1h-1l-1%201%202%202%204%201%202%201%203%201%204%202%203%201c3%201%209%201%209-1l-3-1h-4l-2-3c-1-2-2-2%204%200v-1l-1-1-1-1c1-1-2-2-5-1-2%201-2%201-1%203%200%202%200%202-2%202l-1-3c0-2-4-4-7-3l-2-1c0-4-10-6-16-3m-234%202l-4%201-3%201H86l-5%201c2%200%203%204%201%204l-2-1c0-1-4-1-7%202-7%204-5%205%206%206l6%201%204-5c3-4%204-5%208-6%204%200%204%200%202-1-1-1-1-1%202-1s4%202%201%202c-1%201-1%201%201%201s4-2%202-4c0-1-1-2-2-1m111%205l-1%201-1%201v1l1%201-3%201c-3%200-3%200-2%201s1%201-1%202h-3l1-1c3-1-1-2-7-2l-6-1-1-1-1%201-3%203c-3%202-3%202-5%200-3-2-3-2-7-1s-4%201%201%204l4%203-3%203-3%201c-1%202-6%201-7-2l-1-2v2l1%203%201%202c0%203%202%204%205%204l2%201h2c3-2%207%200%207%202-1%201%200%203%201%203v2c-1%201%201%205%203%205l1-1-1-1-1-1c0-2%204-1%205%202%200%203%202%202%202-1%200-2-1-3-2-3l-3-1-1-2%208%204c1%202%204%201%204%200l-1-2-1-1%202-1c2%201%202%200%201-1%200-3%201-3%203%200%203%202%201%204-2%203l-1%201c0%201%203%203%205%203l2%201h1l1%201v3l2-2c0-4%202-4%202%200s-2%205-4%206v2c0%201-3-1-3-3h-2c-1%201-11%201-12-1l-10-1c-5%200-8%201-8%204l-1%201-3%202h-2c-2-1-7-1-8%201-1%201-1%201%202%201%206%200%2010%201%209%203h-3l-2-1%201%202v2c-2%200-3%203-2%203h1c1-1%207%200%207%201l-4%201-2%201c1%201-2%201-7%201-8%200-16-4-17-7s7-6%208-4h1c0-2%202-1%202%201l1%201%201-1%201-2c2-1%201-1-6-1-8%200-9%200-11%203s-9%204-19%200l-14-3c-6-2-11-6-9-7v-12l2-2-4%202-5%203v2c0%202-2%203-5%202-2%200-1%200%201%202%203%201%204%202%203%203-2%201%200%203%202%201l2-1-1%202c-3%203%200%205%208%206l9%203%203%202v2l-4%201h-3l2%201c2%200%202%200%201%202l-2%202c-4%200-5%200-3%201%201%201%201%201-1%201h-2c-1%201%200%201%203%201s4%200%203%201l-1%202%202-1c1-1%204-1%207%201s4%202%204%201c-1-1%205-2%207%200%201%201%200%201-3%201h-4l4%202%2010%201%2010%201c1%201%204%202%205%201l3%201c2%203%207%204%208%202l3-2v-1l3-1%203%201c-1%202%2017%203%2022%201h5l-3%201%204%201%206-1%2010-1-2%202-3%201-4%201h-3l3%201c4%200%206%202%204%203v1l3-2c2-1%202-1%200-3-1-1-1-1%201-1%204%200%205-1%204-3-1-1-1-1%201-1l2%202c1%202%201%202-1%202l-3%201c-1%201%200%201%203%201l5-1c0-2%207-4%208-3s8%200%209-1h1l2%201h9l-2-1c-2%200-2%200%200-1l6-1%204-2c2-2%202-2-3-2l-7%202c-3%202-11%204-8%202l1-2c0-1%206-3%2013-4%204%200%207-2%208-3l1-2c-2%201-9%202-11%201-2%200-2%200%201-2l3-3%203-1h2c0%201%204%202%206%201%203-1%202-2-1-1-2%200-2%200%200-1%202-2%202-2%200-3l-2-3-1-1c0%201-1%203-3%203-2%201-2%201-1%202%202%201-4%202-7%202h-2c0%202-2%203-3%201l-1-1c-4%201-10%200-10-1%201-1-3-3-7-3-2%200-3%200-2-1l-2-1v-1c1-2%201-2-2-5l-3-3-1-4-1-2-2%202c0%202-2%203-2%202v-2c3-2%202-3%200-5l-2-2h2l15-2%201-1c-1-1%201-1%204-1%205%200%205-1%200-2h-5l-1%201c-1%202-4%201-6-1h-1c0%204-12%206-12%202l-1-2c-1-1%200-1%202-1l1-1h-5c-1%201-2%200-5-3l-4-2%201%202c2%201%202%204-1%204-2%200-2%200-1-1%202%200%201-2-1-2l-7-4%202-2%202-4c-1-1%202-2%205-3%209%200%2014-1%2014-3l1-1c1%201%203-1%202-4%200-2-1-3-2-3v1M57%20199c0%203-1%203-3%203-6%200-1%202%2011%204l13%202%203-2c3-4%203-4-9-6-13-2-13-2-10-4l2-2h-3c-3%200-3%201-4%205m68%206l-2%201c-1%200-4%202-3%204h-5l-3%203c0%201%204%201%205-1v2c-1%201-1%202%201%202l1%202c-1%201%201%201%205%201%205%200%206%200%207-2l2-2v2c0%201%200%202%201%201%201%200%202-1%201-2%200-3-4-3-8%200l-4%202v-5l2-3v-5m197%201v1c-1%202%200%202%202%201%203-1%207%200%204%201-2%201-2%201%200%201%203-1%202%202-1%202-2%201-2%201-1%203l4%201c2-1%208%201%208%202l2%202%204%202c3%202%204%203%204%201l5-4%203-3h-6l-1-1h-2l-2%201c-2%202-3%202-8-1-3-2-3-3%202-4l2-2h-1l-2-1v-1l-3-1c-3%200-4%200-3%201l1%202-2-2-9-1m-85%2016l-5%202c-2%200-2%200-2%203%200%206%201%207%203%206v-2c-3-1-3-6%200-6v2c-2%202-1%202%209%202%209%200%2011-1%2011-2%200-2-3-2-4-1l-3-1-1-3c1-1%201-1-1-1h-3c-1-1-3%200-4%201m89%204c-3%201-3%201-1%201%204%200%205%202%202%202-2%201-2%201-1%203%202%201%202%202%201%202l-1%203c1%202%201%202-1%202l-4-1-2-1-6-2-2-2h7c1%201%206%200%206-1%200-2-5-4-8-4l-3-1v-1l-1%201c0%202-2%203-5%202-3%200-4%200-2%202%204%203%201%205-11%204-12%200-14%200-11%202%201%202%201%202-1%202-4%200-4%202%200%206%205%205%208%205%208-1%200-5%200-6%203-4l9%205-2-4-2-3%202%201h4l4%203%203%202%208-2%209-2%207-2c2-1%202-1-2-1-3%200-4%200-4-2l7-1c5%200%207-1%207-2%200-2-5-6-6-4h-3l-2-2h-6M89%20241c-3%202-3%203%200%203h2l-2%202-1%202c1%201-4%202-8%202l2%201c3%202%205%203%207%202l5%202c2%202%205%203%204%201-1-1%200-1%201-1l-1-1-3-2-3-1c-1%200-2%200-2-2s0-2%202-2l3%201%202%202h7l3-1-5-1c-5-1-9-5-9-7%201-2-1-2-4%200m122%205l-2%202-2%201c-4%202-4%205-1%207%204%201%2010%202%2011%201l1-1%201%201v1l1-2c-1-1%200-1%201-1%203%200%203-6%200-6l-3-1c-2-2-4-3-7-2M25%20322c-2%206-2%208-1%208l2-2c0-1%201-2%204-2l4%202%202%202a318%20318%200%2001-4-13c-2-5-4-3-7%205m95-6c0%202%200%203-3%202-3%200-5%202-5%206%200%205%202%206%206%206h4v-8l-1-8-1%202m-42%2011l1%208%201-3c0-2%200-3%203-2%203%200%205-2%205-5%200-5-2-7-6-7h-4v9m22-8v10c5%204%2012-2%209-8-2-3-7-4-9-2m67%201c-2%202-3%207-1%209%203%202%207%201%209-2%203-6-4-12-8-7m90%2065l-10%201-14%201-5%202h4l6-2c2%200%202%200%201%201l-2%202%205%201c7%201%2014-1%2010-2-2%200%200-2%202-2%203%200%209-3%207-3l-4%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEq0lEQVQ4y02U60+URxTG3++t2No2NfGLfhDUlgjLQpEuyEVggeXiwsJeYAGF3QW57MICUgWqJsYaLppUrAjIzdCCt3VBjWnTGIkWVEAQ5Pa//DozVNIPT86ZM3Oe88yZ877a6uoqKysrrAj78eNHZdc3NtgQ2NzcZGtrS9gt5cvY2toa6+vrfPjwgYWFBXF+hf9zaNKRAYnXr18zOzu3vSkgkz+RSkhCWVRiaWmJmZcvefHiBcuC/BOpINwmezI9zVQwyEtxaHl5WSW8e/eOxcVFEZ9iWuzPzc2JgrNC2SLz8wu8evWKwKMAU1NTSrHk0WTVZ8+eMTw0xPPnz3n8OEggEGBiYoIhERsbHaW6uhq73c5Afz/Dw8MK4+PjBIWAe5P36O3tVTlrohWarHj9+nUGBwe5efMmV3+5SktzM81NTRQXF2O1FpGaeoLExOPYrFYuXbrExQsXaGlp4afWVm7c6KW7u5vLly8zMzODNjY2Rmdnp4Lf76fK46Gqqor6+nocdgfp6ekYDAaMRqPyU1NTqRb7Pp+PU+XlNInCkuzCxYvcvn0brb29XSV73B5qa2uprKyktLQUnU73n7JEEhISSEtLIz4+npiYGLKyssjNzcVkMuH1emk738a1nmtcuXIFTZIVWgpxOp3ielby8vIwm80qITY2loiICEUoC2VkZCi1cXFxOygoKCA7O1sp7enpQXOJg5KgsLBw53BUVJRSUi6uJAskCZXNoq8Wi4XomGilVsadJSWKsERYWVA+nmYpsJCSkqIOuVwu8vPzVb8yMzOVIvm68nHKykpVAdkWSS7bkpOTQ1FRkVrLPHlDraGhgaSkJNUzGZBXdbvcgqBM9apVvGRfX5/osZtih4OTJ08icyShXq9X6mQhqd5ms6GFh4er5krpccfi8IhXrqurU+RyTOQ15Kh0d3Xjb2xUiZLEIcglsc/ro6KiAmO6kX379qGFhoYREhKCLlKnxuL06Qo6OjoYGBjk1m+36O8f4OmTp2KYR3j48BFdnV2CqFE8QjNuMRkGQzx7v93Lrl0h7N9/AM3tqSDki8/Y/cXn7PlqN4ePhGKIP4YpOwN3VSUNjfWcO3+Wjp/bON/WSm1dNeb8PJJTEjl0+KDK+3JPCF9/swerzSLGpqCflLAGUg83cuJQA8mhPuH7yQg/K9aNxB+oJTnMR1ZEK8bwZvKi28nVt5H+fZOIe0n7zq98iTN5t9DskaPUpgc5cyJAdfIjalIfU58RpCYtQL0xSINpGlfCA0qi/qA0egKnsE79tl8WM7mN6Em1th0dQyuOHqHedJ/ajEm82ffxmwOcLQrSbAngy3nAOfsUrqTfsetGKNaP4IiSdlRZCbtuGFvkkIL0tXLDGCUxozhjx7Dr75B76FcKwvuwR93Bphuk8Gg/jughrDpp7yhI364f3ImdMtyl/MdtaG9n3yMx/3aZv/+coa7Gjz7yGLqjPxB+RIchLomcrHxyTQVYzA4c1nLMeVZcp2tobeng6fRfzL9Z5s0/2zza2vqq+I+Jv/DaKhub68qOj9/FU+XmeGICYWEHxdBHkGXKFF+FBa/PS3dPF9NPplhafr+To3iE/ReLNcOQ3elwnAAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/429c92eecaab11778cf7fc863a217fcf/502b1/ai-prod.png","srcSet":"/static/429c92eecaab11778cf7fc863a217fcf/f2e6d/ai-prod.png 114w,\n/static/429c92eecaab11778cf7fc863a217fcf/4ddba/ai-prod.png 229w,\n/static/429c92eecaab11778cf7fc863a217fcf/502b1/ai-prod.png 457w,\n/static/429c92eecaab11778cf7fc863a217fcf/7ddc2/ai-prod.png 686w,\n/static/429c92eecaab11778cf7fc863a217fcf/435bf/ai-prod.png 914w,\n/static/429c92eecaab11778cf7fc863a217fcf/6050d/ai-prod.png 1200w","srcWebp":"/static/429c92eecaab11778cf7fc863a217fcf/15384/ai-prod.webp","srcSetWebp":"/static/429c92eecaab11778cf7fc863a217fcf/31fce/ai-prod.webp 114w,\n/static/429c92eecaab11778cf7fc863a217fcf/e3e25/ai-prod.webp 229w,\n/static/429c92eecaab11778cf7fc863a217fcf/15384/ai-prod.webp 457w,\n/static/429c92eecaab11778cf7fc863a217fcf/0258d/ai-prod.webp 686w,\n/static/429c92eecaab11778cf7fc863a217fcf/64ea2/ai-prod.webp 914w,\n/static/429c92eecaab11778cf7fc863a217fcf/9000d/ai-prod.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M199%2053l-1%203c-1-1-1%200-1%202l-1%202-2%203c0%202-1%203-1%201%200-4-4-4-6-1l-2%203-1-3c-2-3-2-3-2-1-2%208-2%208%203%209l6%203c2%201%202%201%200%201-5%200%200%201%207%202l8%201h-20l-4-2-4-1c-1-1-2%200-3%201-1%203-3%204-4%201s-3-2-3%201l-1%204v-4c0-4-2-4-2%201l-1%203-1-4-1-3-1%202-1%202c-2-1-2%200-2%201l-2%202v1l1%202c-1%201-5-4-5-6%201-1%200-1-1-1s-2%200-1-1l-1-1-2%202-2%202v-1h-3c-2%201-2%201-1%202%202%201%200%203-3%202h-2l2-2c2-2%201-5-1-3l-2%202c0%202-1%203-3%203v-1l1-1-3%201c-2%202-3%202-4%201h-1v2l-2-2h-2l-4%202-4%201c-1%201-1%201%201%202l1%201h-3v1l-2%201c-2-1-2-1-2%201s0%202-1%200c-1-3-5-2-4%201%200%202%200%203-5%203l-5-2c0-2-4-1-8%202l-5%205c-3%202-4%206-2%206v2c-3%201-5-1-3-3v-3c-1-2-1-3%201-3%201%200%202-1%202-3v-3h-5c-5%201-5%201-4-1l2-2%201-2-2%201h-9l-1%202c0%202%200%203%201%202l2%201h2l2%201h3l2%201-2%202c-3%200-3%201-2%203%200%203%200%203-1%202-2-3-2-3-2%204-1%205-1%207-4%207l-1-1-5-1c-5%201-6%200-7-1-1-2-1-2-3-1-3%202-1%204%203%204%203%200%204%200%204%202s-2%204-3%203l-3%202-2%202h-1l-1%202-2%202-2%201-3%201-3-1-1-3-2-3c0-3-6%200-8%204l-4%203c-3%200-4%202-4%205h1c1-1%201%200%201%203v2l2-1v2l-2%202-1%201-2%202%201-3c1-1%201-2-1-2h-2a203%20203%200%2001-2%206c-2%203-1%204%202%203%202%200%202%200%201%201l-1%203-6%208c-1%200-1-3%201-5v-4l1-8%202-6v-2c0-2%200-2%201%200v-3c0-3%200-4%201-3s1%201%201-1v-1c1%201%201%201%201-2l2-8%201-5-1-1%201-1%204-5c4-7%204-8%201-6l-2%202%201-3v-3l-2%202-6%2013c-3%207-5%209-5%207v2c0%201%200%202-1%201-2-3-5%2013-5%2029l1%2012%201-1%202%202c2%200%202%200%200%201l-2%201h2c2%201%202%201%201%202H2l-1%201%201%202c1%201%200%206-1%207l-1%2010c0%209%200%2010%202%2011%201%201%202%202%201%203l1%202%204%202c2%201%203%202%204%201h4v1l1-1%202-1c2%200%202%200%200%203v5c-4%200%203%2012%209%2014l1%201%204%203c9%203%2015%207%2013%207l-12-5-11-5-4-2h5l-3-1-3-1c1%202-2%201-5-2l-5-5-2-6-3-4-2-1c-1-1-1%209-1%2021%200%2023%201%2030%205%2038l2%207%202%208c3%205%203%205-3%205H0v74h36l36%201%206%204c8%207%2017%2012%2020%2013l8%204a56%2056%200%200020%2010l3%201h8l-3%201c-5%201%205%202%2014%202%207-1%2010%200%207%202s7%202%2048%202c42%200%2046%200%2055-2%207-2%208-2%206-3h-4l-1-1-1-1h-3c-2-1-2-1%200-1%203%200%2015-4%2014-5l2-1%205-1%207-2%206-1%205-1c1%201%204%200%207-1%202-1%205-2%206-1%202%201%2010-5%2010-7l-2-2h-4c-2%200-2%200%201-2l2-3h1l1-1c-1-1%204-3%207-3%202%200%202%200-2%203l-5%202h5c4%200%206-1%209-3l4-2%2033-1h34v-74h-6c-4%200-6%200-5-1l8-19c2-7%202-9%203-32v-29l-1-3-3%203-4%204-6%205-5%205-5%204c-3%204-5%205-6%204l-9%203-7%204h-2c-1%202-7%204-9%204l1-2%203-3c0-1%201-2%202-1l4-1v-3c-2-1-2-2-2-3h5v-3l4-1%201%201v1l2-1%205-2c8-2%2020-9%2012-8-2%201-3%201-3-1l3-1c3%201%204%200%2012-6%202-2%202-2%200-2-2%201-2%201-2-1v-3c0-2-1-2-3-1h-2v-1l3-1c1-2%203-3%203-1v1c2%202%202-3%200-4l-2-2%203%201%204-1c-1-1%200-1%201-1%202%200%203%201%200%204l-1%202-1%202c-2%201-1%203%201%203%203%200%204-3%204-12%200-7%200-10-1-9l-1-1-2-1c-2%200-2%200%201-2%202-1%202-2%200-1l-1-1h-2c-4%200-7-2-4-4%201-1%201-1-1-1-1%200-2%200-1-2%200-2%200-2-2-3l-2-1h-1c-2%201-5%200-5-1l2-2c2%200%202-2-2-3l-2-3c1-1%200-1-3-1-5%200-7-1-6-2l-2-1v2c3%203-1%201-6-4-3-3-6-5-8-5-4%200-6-2-5-5s1-3-3-3l-8-2-7-3c-2%200-3-1-3-2h1l4%201c2%200%205%201%206%203l4%202-1-2c-2%200-2%200-1-1s1-1-1-2l-2-2c1-1%200-1-3-1-4%200-8-2-6-3%201-1%200-2-1-3l-2-2h2l2-2h2l2%201%203%201c3%200%203%200%202-1l-1-1v-1c-1-2%202-6%204-6%203%201%204-1%203-4l-2-2-1-1c0-2-3%201-3%203%200%205-7%2012-7%206l1-1c2%201%205-4%204-6l1-3v-1l-2%202-2%201-1-2v-2l1-2c1%200%202-5%201-6h-4c-2%201-2%202%200%201l1%201-2%201c-2%200-3%201-3%202h1c3-2%203%201%200%204l-2%201-2-3-2-3c0-1-1-2-2-1l-6-2-4-2h3c6-2%203-4-8-7l-1%203c0%203%200%203-3%203l-3-1-3-2c-2%200-2-1-2-4%201-3-1-5-2-1v1l1%201h-2l-1%202v2l-1-2c0-2%200-2-3%201l-2%202c0-1-1-1-2%201-1%201-1%201-1-2V74l-1%203c-2%204-2%203-2-1s-1-2-3%205c-1%202-1%202%201%202%203%200%204%200%204%203%200%202-1%203-4%203s-3%200-2-2c1-1%201-1-1-1l-1-1-1-2-1%202h-4l2%202c1%200%202%201%201%202l2%203h-3l-5%201%203%201%201%201-1%201%201%202%201%202c-1%201-1%201%200%200l4%201h1c-2-4%206-2%2010%202l2%201%203%203%202%202c2%200%205%203%205%204-1%200-8-3-8-5l-3-2-2-1c0-2-4-4-6-3-3%200-2%202%200%202l2%201h1l1%201%203%203c5%203%206%205%202%204l-5-2h-2l-3-1-2-1%202-1c2-1%201-1-2-1h-4l-1-1h-2l-1-1-6-3c-3-4-3-4-1-4h2l-2-3c-2-3-3-6%200-6l-1-1-6-1h-7l3%203%206%203%204%202h-3c-7-2-9-2-10-4-1-1-2-2-1-4l-1-4v-2c2-1%200-3-5-3l-4-1-2-3c-3-1-3-1-3%201s0%202-1%201l-1-2v2h-1l-2-2c-2%200-2%200-1-2s1-2-1-5l-3-4c0-2-5-10-6-10l1%204c2%205%203%209%201%206-3-6-7-7-7-3%200%203%200%203-2-2-2-7-3-8-3-5m169%2018l2%204c3%203%208%2013%208%2016l4%2012c5%2010%207%2019%205%2016s-1%201%201%204l3%202%201%203v1c1-1%205%207%206%2014s2%206%202-3c0-10-3-20-12-38-7-15-20-35-20-31m-11%2015l-2%201v1l-1%201h-2l1%201%201%201-1%201h-1l-3%201c-3%200-4%200-4%202l1%201%202%201%202-1c0-1%201-2%203-2%203%200%203%200%202%201-2%201-2%201%202%203%202%201%202%201-1%201-4-1-6%201-3%203h5c2%202%202%202%202%200h2c-1-2%201-3%201-1h3c2%200%201-2%200-3l-2-3-2-1h-1c1-1%200-3-1-5-1-3-3-5-3-3m-211%2017c-1%201-17%202-19%201l-7%201v1h7c5%201%201%203-6%203-4%200-4%200-3%201v1l-9-1c-5%200-7%200-6-1l-1-1-7%205-2%201h-3v2c-1%201-1%201%201%202s2%201%201%202c-2%202-2%203-1%203%202%200%205-4%203-5s0-2%204-2l13-2c12-2%2013-3%2011%200-1%201-1%201%201%201%203%200%208-2%207-4%200-2%206-4%209-3l3-1%203-1%203-2c1-2%200-3-2-1m199%208l-3%201-3%201c-1%201%202%202%203%201l1%201-2%201-2%201%202%201v3l1%201v2l1%203%201%202%204%201-1-2c-3-2-3-3%201-1h2l2%202%203%205c3%202%206%203%206%201h1v1l1%201%205-2c4%200%204-2%200-2-2%200-3-1%200-3%201-2%201-2-1-4l-3-2v-3l-2%201h-2l-3-1c-1%201-1%200-1-1s0-2-1-1c-1%200-2-1-2-4-1-2-1-3-2-2-2%202-3%201-3-1l-1-2-2%201m-13%2027l1%203h-5c-6%200-8%201-5%204h2c0-2%202-3%202-1h3l6%203%206%204%203-1c2%200%200-3-3-4l-5-1c-3-1-3-1%200-1h3l-3-2-2-3%202-1h-5m-222%2011l-3%204h9l10-1c2-2%201-3-3-2h-3l3-1h4l1-1c1-1-1-1-3-1-3%200-5%200-4-1l-4-1c-3%200-4%201-7%204m-36%205l-3%201-6%201-4%202-5%203-4%204h4c4%200%207-2%208-6l2-2h14c2-2%201-3-1-3h-3l-1-1-1%201m128%201l1%203v1l-1%203%201%201c1-1%207%202%206%203l1%201v3l1%202c1%200%202%201%201%202l-2%201v1h6c2-2%203-1%202%201h1c1-1%201-1%203%202%201%203%207%205%207%203s-3-6-5-6l-2-4-1-4v-7c1-2-1-5-3-5l-3-1h-1c-2%201-8%200-8-1%200-2-3-1-4%201m142%2010c2%202%201%203-1%203s-2%200-1%202h4c-2-2%201-1%203%201l2%202%204%203c3%202%204%202%207%201%205-1%206-1%202-4l-3-1c-1%201-7-1-12-5-5-3-7-4-5-2m24%202l-2%202c-2%200-2%200%202%204l6%203v1c-2%201%201%202%205%202s4-1%202-3l-2-2%203-1c4-1%203-2-3-3-5-1-7-2-6-3l-2-1-3%201m-110%2013c0%202-2%203-5%201-2-1-4%200-3%202%202%201%209%203%2011%202l1%201-2%203c0%202-1%202-4%202l-5%201c-1%201-13%203-14%202l-1-2-2-1c-4%200-5-2-4-4%200-2%200-2-2-2s-3%201%200%205l1%206%202%202c1%201%203%200%203-1v-1c1-1%201%200%201%201%200%204%202%204%2010%203%2013-2%2018-3%2017-4h-3l-3-1c1-2%208-2%208%200l8%2012%205%202c3%200%204%200%207%203%202%203%203%203%205%202h2c2%201%201-1-1-3v-2l3%202%203%202c2%200%202%200%200-2l-4-2v-1l3-1c2%200%202%200%201-1-2-1-3-3%200-2v-2c-1-2%201-3%207-3%203%200%203%200%202-2l-4-1-5-2h-6c-3%202-4%202-6%201l-4-1c0%201%208%206%2011%206l3%202c0%201-5%202-7%201-1-1-1-1-1%201%202%204-5%203-7-1-2-3-1-5%201-2%203%202%204%200%201-3l-5-6c-2-3-4-3-2%201%202%203%200%203-5-1-5-3-5-4-3-5%201-2%201-2-2-3l-5-4c-1-2-1-2-1%200m79%202c-4%202-5%202-6%201h-3c1%201-9%204-14%204-2%200-3%201-2%202l10-2a582%20582%200%200110%200l1%202%204%202c3%202%205%202%2011-3%203-3%205-3%205-1h-1l-1%201%202%202%204%201%202%201%203%201%204%202%203%201c3%201%209%201%209-1l-3-1h-4l-2-3c-1-2-2-2%204%200v-1l-1-1-1-1c1-1-2-2-5-1-2%201-2%201-1%203%200%202%200%202-2%202l-1-3c0-2-4-4-7-3l-2-1c0-4-10-6-16-3m-234%202l-4%201-3%201H86l-5%201c2%200%203%204%201%204l-2-1c0-1-4-1-7%202-7%204-5%205%206%206l6%201%204-5c3-4%204-5%208-6%204%200%204%200%202-1-1-1-1-1%202-1s4%202%201%202c-1%201-1%201%201%201s4-2%202-4c0-1-1-2-2-1m111%205l-1%201-1%201v1l1%201-3%201c-3%200-3%200-2%201s1%201-1%202h-3l1-1c3-1-1-2-7-2l-6-1-1-1-1%201-3%203c-3%202-3%202-5%200-3-2-3-2-7-1s-4%201%201%204l4%203-3%203-3%201c-1%202-6%201-7-2l-1-2v2l1%203%201%202c0%203%202%204%205%204l2%201h2c3-2%207%200%207%202-1%201%200%203%201%203v2c-1%201%201%205%203%205l1-1-1-1-1-1c0-2%204-1%205%202%200%203%202%202%202-1%200-2-1-3-2-3l-3-1-1-2%208%204c1%202%204%201%204%200l-1-2-1-1%202-1c2%201%202%200%201-1%200-3%201-3%203%200%203%202%201%204-2%203l-1%201c0%201%203%203%205%203l2%201h1l1%201v3l2-2c0-4%202-4%202%200s-2%205-4%206v2c0%201-3-1-3-3h-2c-1%201-11%201-12-1l-10-1c-5%200-8%201-8%204l-1%201-3%202h-2c-2-1-7-1-8%201-1%201-1%201%202%201%206%200%2010%201%209%203h-3l-2-1%201%202v2c-2%200-3%203-2%203h1c1-1%207%200%207%201l-4%201-2%201c1%201-2%201-7%201-8%200-16-4-17-7s7-6%208-4h1c0-2%202-1%202%201l1%201%201-1%201-2c2-1%201-1-6-1-8%200-9%200-11%203s-9%204-19%200l-14-3c-6-2-11-6-9-7v-12l2-2-4%202-5%203v2c0%202-2%203-5%202-2%200-1%200%201%202%203%201%204%202%203%203-2%201%200%203%202%201l2-1-1%202c-3%203%200%205%208%206l9%203%203%202v2l-4%201h-3l2%201c2%200%202%200%201%202l-2%202c-4%200-5%200-3%201%201%201%201%201-1%201h-2c-1%201%200%201%203%201s4%200%203%201l-1%202%202-1c1-1%204-1%207%201s4%202%204%201c-1-1%205-2%207%200%201%201%200%201-3%201h-4l4%202%2010%201%2010%201c1%201%204%202%205%201l3%201c2%203%207%204%208%202l3-2v-1l3-1%203%201c-1%202%2017%203%2022%201h5l-3%201%204%201%206-1%2010-1-2%202-3%201-4%201h-3l3%201c4%200%206%202%204%203v1l3-2c2-1%202-1%200-3-1-1-1-1%201-1%204%200%205-1%204-3-1-1-1-1%201-1l2%202c1%202%201%202-1%202l-3%201c-1%201%200%201%203%201l5-1c0-2%207-4%208-3s8%200%209-1h1l2%201h9l-2-1c-2%200-2%200%200-1l6-1%204-2c2-2%202-2-3-2l-7%202c-3%202-11%204-8%202l1-2c0-1%206-3%2013-4%204%200%207-2%208-3l1-2c-2%201-9%202-11%201-2%200-2%200%201-2l3-3%203-1h2c0%201%204%202%206%201%203-1%202-2-1-1-2%200-2%200%200-1%202-2%202-2%200-3l-2-3-1-1c0%201-1%203-3%203-2%201-2%201-1%202%202%201-4%202-7%202h-2c0%202-2%203-3%201l-1-1c-4%201-10%200-10-1%201-1-3-3-7-3-2%200-3%200-2-1l-2-1v-1c1-2%201-2-2-5l-3-3-1-4-1-2-2%202c0%202-2%203-2%202v-2c3-2%202-3%200-5l-2-2h2l15-2%201-1c-1-1%201-1%204-1%205%200%205-1%200-2h-5l-1%201c-1%202-4%201-6-1h-1c0%204-12%206-12%202l-1-2c-1-1%200-1%202-1l1-1h-5c-1%201-2%200-5-3l-4-2%201%202c2%201%202%204-1%204-2%200-2%200-1-1%202%200%201-2-1-2l-7-4%202-2%202-4c-1-1%202-2%205-3%209%200%2014-1%2014-3l1-1c1%201%203-1%202-4%200-2-1-3-2-3v1M57%20199c0%203-1%203-3%203-6%200-1%202%2011%204l13%202%203-2c3-4%203-4-9-6-13-2-13-2-10-4l2-2h-3c-3%200-3%201-4%205m68%206l-2%201c-1%200-4%202-3%204h-5l-3%203c0%201%204%201%205-1v2c-1%201-1%202%201%202l1%202c-1%201%201%201%205%201%205%200%206%200%207-2l2-2v2c0%201%200%202%201%201%201%200%202-1%201-2%200-3-4-3-8%200l-4%202v-5l2-3v-5m197%201v1c-1%202%200%202%202%201%203-1%207%200%204%201-2%201-2%201%200%201%203-1%202%202-1%202-2%201-2%201-1%203l4%201c2-1%208%201%208%202l2%202%204%202c3%202%204%203%204%201l5-4%203-3h-6l-1-1h-2l-2%201c-2%202-3%202-8-1-3-2-3-3%202-4l2-2h-1l-2-1v-1l-3-1c-3%200-4%200-3%201l1%202-2-2-9-1m-85%2016l-5%202c-2%200-2%200-2%203%200%206%201%207%203%206v-2c-3-1-3-6%200-6v2c-2%202-1%202%209%202%209%200%2011-1%2011-2%200-2-3-2-4-1l-3-1-1-3c1-1%201-1-1-1h-3c-1-1-3%200-4%201m89%204c-3%201-3%201-1%201%204%200%205%202%202%202-2%201-2%201-1%203%202%201%202%202%201%202l-1%203c1%202%201%202-1%202l-4-1-2-1-6-2-2-2h7c1%201%206%200%206-1%200-2-5-4-8-4l-3-1v-1l-1%201c0%202-2%203-5%202-3%200-4%200-2%202%204%203%201%205-11%204-12%200-14%200-11%202%201%202%201%202-1%202-4%200-4%202%200%206%205%205%208%205%208-1%200-5%200-6%203-4l9%205-2-4-2-3%202%201h4l4%203%203%202%208-2%209-2%207-2c2-1%202-1-2-1-3%200-4%200-4-2l7-1c5%200%207-1%207-2%200-2-5-6-6-4h-3l-2-2h-6M89%20241c-3%202-3%203%200%203h2l-2%202-1%202c1%201-4%202-8%202l2%201c3%202%205%203%207%202l5%202c2%202%205%203%204%201-1-1%200-1%201-1l-1-1-3-2-3-1c-1%200-2%200-2-2s0-2%202-2l3%201%202%202h7l3-1-5-1c-5-1-9-5-9-7%201-2-1-2-4%200m122%205l-2%202-2%201c-4%202-4%205-1%207%204%201%2010%202%2011%201l1-1%201%201v1l1-2c-1-1%200-1%201-1%203%200%203-6%200-6l-3-1c-2-2-4-3-7-2M25%20322c-2%206-2%208-1%208l2-2c0-1%201-2%204-2l4%202%202%202a318%20318%200%2001-4-13c-2-5-4-3-7%205m95-6c0%202%200%203-3%202-3%200-5%202-5%206%200%205%202%206%206%206h4v-8l-1-8-1%202m-42%2011l1%208%201-3c0-2%200-3%203-2%203%200%205-2%205-5%200-5-2-7-6-7h-4v9m22-8v10c5%204%2012-2%209-8-2-3-7-4-9-2m67%201c-2%202-3%207-1%209%203%202%207%201%209-2%203-6-4-12-8-7m90%2065l-10%201-14%201-5%202h4l6-2c2%200%202%200%201%201l-2%202%205%201c7%201%2014-1%2010-2-2%200%200-2%202-2%203%200%209-3%207-3l-4%201'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/429c92eecaab11778cf7fc863a217fcf/6050d/ai-prod.png"}}},"authors":[{"authorsPage":true,"bio":"Hello everybody 👋 !  My name is Luke and I am the creator and owner of the spaceout.pl. Personally, I am a big geek with huge love for Star Wars, Marvel and DC comic books, Funk and 80s music. I take most of my design inspiration from offline experiences like going to art museums, galleries and working with other creative people on various projects. I also work with various Activist and NGO groups as a pro-bono designer and developer.\n","id":"f69d27c7-7f9a-5fbd-b05d-1a324fd10c0a","name":"Luke Celitan","featured":true,"social":[{"url":"https://www.facebook.com/spaceout/"},{"url":"https://twitter.com/spaceout.pl"},{"url":"https://www.instagram.com/spaceout.pl/"},{"url":"https://huggingface.co/MassivDash"},{"url":"https://bsky.app/profile/lukecelitan.bsky.social"}],"slug":"/authors/luke-celitan","avatar":{"small":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/afb2b/spaceghost.jpg 13w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/7c20e/spaceghost.jpg 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/03612/spaceghost.jpg 75w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/58718/spaceghost.webp 13w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/74aad/spaceghost.webp 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/ed320/spaceghost.webp 75w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 50px) 100vw, 50px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"medium":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/7c20e/spaceghost.jpg 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fa1ea/spaceghost.jpg 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/61cdf/spaceghost.jpg 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/59538/spaceghost.jpg 150w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/fd013/spaceghost.jpg 200w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/74aad/spaceghost.webp 25w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/e7b2c/spaceghost.webp 50w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/66016/spaceghost.webp 100w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/d9b14/spaceghost.webp 150w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/6b183/spaceghost.webp 200w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 100px) 100vw, 100px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"large":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAIFAQME/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAABvOTVgtERIAH/xAAaEAEBAQEAAwAAAAAAAAAAAAACAQMEABAS/9oACAEBAAEFAmoDjs0/Oq1a9kUzN+j7/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIAAxESECAxMlH/2gAIAQEABj8CLHgTGqmBPXSlTANsrmKyXLK0B92f/8QAHhABAAECBwAAAAAAAAAAAAAAAREAIRAgMUFhcdH/2gAIAQEAAT8hUmKFDbjke4JaIOG01Fthsd0YugnJ/9oADAMBAAIAAwAAABDzzzz/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAfEAEBAAEDBQEAAAAAAAAAAAABETEAQWEQICFxgZH/2gAIAQEAAT8QhmFXf0c6oSU1s8jwz0W5QpAeFf1+Gp7aimCmBvvoV0CRyUvZ/9k=","aspectRatio":1,"src":"/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg","srcSet":"/static/4f53b0980dc97328dd1294bbc374fd0e/a2637/spaceghost.jpg 82w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/15203/spaceghost.jpg 164w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/442ab/spaceghost.jpg 305w","srcWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp","srcSetWebp":"/static/4f53b0980dc97328dd1294bbc374fd0e/2d087/spaceghost.webp 82w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/29d87/spaceghost.webp 164w,\n/static/4f53b0980dc97328dd1294bbc374fd0e/85828/spaceghost.webp 305w","sizes":"(max-width: 305px) 100vw, 305px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M189%2065A519%20519%200%200065%20299c-5%2020-5%2018%203%2015%208-4%2039-10%2057-12%2011-1%2010%200%2010-11%200-29%206-103%2010-121%204-21%2016-36%2033-43%206-2%208-2%2020-2%2018%200%2024%202%2036%2013%2020%2021%2025%2046%2029%20138l2%2026h10a267%20267%200%200168%2014l-6-26A607%20607%200%2000218%2071c-10-10-15-15-18-15-2%200-6%203-11%209m47%20129c-14%208-26%2015-26%2017%200%203%2018%205%2024%202%205-3%209-10%209-18%200-5%200-5-7-1m-82%201l1%205c1%2011%209%2018%2020%2017%207-1%2013-3%2013-5s-32-19-34-17'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"}}}],"basePath":"/","tech":["AI"],"category":"Post","slug":"/the-great-correction-why-production-ai-left-the-llm-bubble-behind","id":"78f98138-36e8-541f-b395-315ce38d15d8","title":"The Great Correction - Why Production AI Left the LLM Bubble Behind","appDescription":null,"mailchimp":false,"next":[{"id":"20cd380e-b562-54ab-977b-7227a1fa957d","slug":"/mcp-servers","secret":false,"title":"MCP Servers","author":"Luke Celitan","date":"December 19th, 2025","dateForSEO":"2025-12-19T00:00:00.000Z","timeToRead":6,"excerpt":"Uncover everything about MCP servers—from USB-C analogies for AI to advanced protocol, practical code, and real-world enterprise workflows. Beginner-friendly, expert-depth, packed with examples and best practices.","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"MCP Servers\",\n  \"excerpt\": \"Uncover everything about MCP servers—from USB-C analogies for AI to advanced protocol, practical code, and real-world enterprise workflows. Beginner-friendly, expert-depth, packed with examples and best practices.\",\n  \"date\": \"2025-12-19T00:00:00.000Z\",\n  \"hero\": \"mcp-cover.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Post\",\n  \"tech\": [\"AI\", \"TS\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"the-architects-manifesto-on-model-context-protocol-from-usb-c-simplicity-to-enterprise-survival\"\n  }, \"The Architect\\u2019s Manifesto on Model Context Protocol: From USB-C Simplicity to Enterprise Survival\"), mdx(\"p\", null, \"The software that we design and implement has to be reliable, maintainable and\\nscalable. If a software is not designed with these qualities in mind, it can\\nturn into a mess. This article discusses the importance of practicing clean code\\nand architecture in the emerging world of AI agents, specifically focusing on\\nthe Model Context Protocol (MCP), to avoid the pitfalls of not applying them.\"), mdx(\"h3\", {\n    \"id\": \"the-paradigm-shift-from-chatbots-to-agentic-integration\"\n  }, \"The Paradigm Shift: From Chatbots to Agentic Integration\"), mdx(\"p\", null, \"The software industry is currently hitting a massive inflection point. For\\nyears, we\\u2019ve been obsessed with the models themselves\\u2014parameter counts,\\nreasoning benchmarks, and context windows. But integration remained a \\u201Cmessy\\naffair\\u201D of bespoke API connectors and fragile scripts. We faced a classic N\\xD7M\\nproblem: every AI assistant needed a unique connector for every data source.\"), mdx(\"p\", null, \"The \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Model Context Protocol (MCP)\"), \", open-sourced by Anthropic and adopted by\\ngiants like OpenAI and Microsoft, is the \\u201CUSB-C moment\\u201D for AI. It collapses\\nthat complexity into a universal standard. But as any senior architect knows,\\nwith great connectivity comes great risk. This isn\\u2019t just about making \\u201Cchatbots\\ntalk\\u201D; it\\u2019s about making \\u201Cagents act.\\u201D\"), mdx(\"p\", null, \"When in need of good architecture patterns look out for existing platforms and\\nsolutions. Open source projects that survived the harsh reality of software\\nengineering will be a great source for anyone who is looking for good patterns.\\nWith time and experience a software engineer will be able to tell apart the\\nanti-patterns and patterns one should follow in this new agentic landscape.\"), mdx(\"h4\", {\n    \"id\": \"mcp-architecture\"\n  }, \"MCP Architecture\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-mermaid\"\n  }, \"graph L\\nB[Prompt argument entry] --> C[Client invokes MCP tool: searchFlights]\\nC --> D[Server queries external APIs]\\nD --> E[Tools response: suggested flights]\\nE --> F[Client invokes calendar check]\\nF --> G[Server returns availability]\\nG --> H[Booking tools, notifications]\\n\")), mdx(\"h2\", {\n    \"id\": \"what-does-a-clean-mcp-architecture-look-like\"\n  }, \"What does a Clean MCP Architecture look like?\"), mdx(\"p\", null, \"When it comes to MCP, there are three core primitives you must understand.\\nMisunderstanding the boundaries between these is the fastest way to turn your\\nproject into an unmaintainable tangle.\"), mdx(\"p\", null, \"To secure and architect for MCP, one must first understand its internal\\nmechanics. It is not a REST API. It is not a simple webhook. It is a stateful,\\nbidirectional session protocol built on top of JSON-RPC 2.0. This choice of\\nfoundation is critical: unlike stateless HTTP requests, an MCP session assumes a\\npersistent context where capabilities are negotiated, and state is maintained.\"), mdx(\"p\", null, \"The protocol abstracts all interactions into three distinct primitives.\\nUnderstanding the boundaries between these is essential for enforcing the Single\\nResponsibility Principle in server design.Resources are the passive read layer\\nof the protocol. They represent data that exists in the system\\u2014files, database\\nrows, log streams, or API responses.\"), mdx(\"h3\", {\n    \"id\": \"1-resources-the-read-layer\"\n  }, \"1. Resources (The Read Layer)\"), mdx(\"p\", null, \"These are passive data sources\\u2014files, logs, or database rows. They are addressed\\nvia standard URIs (e.g., \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"file:///logs/app.log\"), \" or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"postgres://db/users/123\"), \").\\nUnlike tools, they are generally \\u201Csafe\\u201D but require careful handling of\\npermissions.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Advanced Concepts:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Complex Resource Templates & Dynamic Discovery:\"), \" Support parameter\\ncompletion for dynamic URIs.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Resource Change Subscriptions:\"), \" Instead of having the LLM poll for changes\\n(wasting tokens and increasing latency), let the server push updates to the\\nmodel via JSON-RPC. It keeps the \\u201Cview\\u201D synchronized efficiently.\")), mdx(\"h3\", {\n    \"id\": \"2-tools-the-action-layer\"\n  }, \"2. Tools (The Action Layer)\"), mdx(\"p\", null, \"These are executable functions. Unlike resources, tools have \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"side effects\"), \".\\nThey change the state of the world. This is where you must implement\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Human-in-the-Loop (HITL)\"), \" approvals. Never let an agent delete a production\\ndatabase row without a UI confirmation.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"TypeScript Server Definition Example:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-typescript\"\n  }, \"import { createServer, Tool } from '@modelcontextprotocol/server';\\n\\nconst searchFlights: Tool = {\\n  name: 'searchFlights',\\n  description: 'Search for flights',\\n  inputSchema: {\\n    type: 'object',\\n    properties: {\\n      origin: { type: 'string' },\\n      destination: { type: 'string' },\\n      date: { type: 'string' },\\n    },\\n    required: ['origin', 'destination', 'date'],\\n  },\\n  execute: async ({ origin, destination, date }) => {\\n    // Call airline APIs, return the results\\n    return [{ type: 'text', text: 'Flight: NYC to Barcelona, June 15' }];\\n  },\\n};\\n\\nconst mcpServer = createServer({ tools: [searchFlights] });\\nmcpServer.listen();\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Idiomatic Python Example:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-python\"\n  }, \"from mcp_sdk.server import MCPServer, Tool\\n\\ndef search_flights_handler(origin, destination, date):\\n    # Connect to airline APIs, process the response\\n    return [{ 'type': 'text', 'text': f'Flight: {origin} to {destination}, {date}' }]\\n\\nserver = MCPServer(tools=[Tool('searchFlights', search_flights_handler)])\\nserver.run()\\n\")), mdx(\"h3\", {\n    \"id\": \"3-prompts-the-workflow-layer\"\n  }, \"3. Prompts (The Workflow Layer)\"), mdx(\"p\", null, \"Prompts are pre-defined templates that encapsulate \\u201Cexpert knowledge.\\u201D Instead\\nof forcing the user to type a perfect prompt, the server exposes a \\u201CDebug Error\\u201D\\nprompt that automatically packages the relevant logs and tools for the LLM.\"), mdx(\"h2\", {\n    \"id\": \"mcp-architecture-essentials\"\n  }, \"MCP Architecture Essentials\"), mdx(\"h3\", {\n    \"id\": \"security-first-the-lethal-trifecta\"\n  }, \"Security First: The \\u201CLethal Trifecta\\u201D\"), mdx(\"p\", null, \"The best present any software architect can do for himself is to start the\\ndesign from security first perspective. We are witnessing the emergence of the\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u201CLethal Trifecta\\u201D\"), \":\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Autonomous Tool Use\"), \" (Execution)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Private Data Access\"), \" (Sensitive Info)\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Probabilistic Decision Making\"), \" (The LLM)\")), mdx(\"p\", null, \"When these three combine, traditional firewalls fail. You are handing a\\nnon-deterministic engine direct access to your enterprise nervous system. Even\\nif your code is squeaky clean but you did not plan for Indirect Prompt\\nInjection, you may end up losing reputation or feel wrath of your client when\\ntheir agent executes a malicious instruction buried in a support ticket.\"), mdx(\"h3\", {\n    \"id\": \"security-boundaries--enforcement\"\n  }, \"Security Boundaries & Enforcement\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Roots:\"), \" Clients specify folders/files for server focus. The server \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"should\"), \"\\nrespect roots, and the OS/sandbox enforces them.\"), mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Example Root:\"), mdx(\"pre\", {\n    parentName: \"li\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"uri\\\": \\\"file:///Users/agent/travel\\\",\\n  \\\"name\\\": \\\"Travel Planning Workspace\\\"\\n}\\n\")))))), mdx(\"h3\", {\n    \"id\": \"the-transport-layer-reality\"\n  }, \"The Transport Layer Reality\"), mdx(\"p\", null, \"Do not be fooled by the simplicity of local development.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Stdio (Standard Input/Output):\"), \" Great for local debugging, but a massive\\nblind spot. It creates a \\u201CConfused Deputy\\u201D where the server inherits the full\\npermissions of the local user.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"SSE (Server-Sent Events):\"), \" The mandatory standard for production. It allows\\nyou to run the MCP server as an isolated microservice (e.g., on Kubernetes),\\ndecoupled from the client, enabling proper network segmentation and logging.\")), mdx(\"h3\", {\n    \"id\": \"real-time-notification-patterns\"\n  }, \"Real-Time Notification Patterns\"), mdx(\"p\", null, \"Servers send notifications (list changes, resource updates) via JSON-RPC.\\nClients refresh tool/resource registries and notify models.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Error Handling Example:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"jsonrpc\\\": \\\"2.0\\\",\\n  \\\"id\\\": 99,\\n  \\\"error\\\": {\\n    \\\"code\\\": -32602,\\n    \\\"message\\\": \\\"Invalid params\\\",\\n    \\\"data\\\": { \\\"missing\\\": \\\"destination\\\" }\\n  }\\n}\\n\")), mdx(\"h2\", {\n    \"id\": \"defense-in-depth-the-zero-trust-architecture\"\n  }, \"Defense in Depth: The Zero Trust Architecture\"), mdx(\"p\", null, \"To deploy MCP in an enterprise environment, we must abandon the assumption that\\n\\u201Clocal is safe\\u201D or \\u201Cinternal is trusted.\\u201D We require a Zero Trust architecture\\nspecifically designed for agentic workflows.\"), mdx(\"h3\", {\n    \"id\": \"the-gateway-pattern\"\n  }, \"The Gateway Pattern\"), mdx(\"p\", null, \"No Client (agent) should ever connect directly to a backend MCP Service. All\\ntraffic must be mediated by a Gateway that enforces essential controls:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Centralized Authentication:\"), \" The Gateway terminates OAuth 2.1 flows and\\nverifies identity. It ensures that the requesting user or agent is authorized\\nto speak to the downstream service.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Protocol Inspection:\"), \" Serving as a Layer 7 firewall for JSON-RPC, the\\nGateway logs every method call, argument, and response \\u2014 providing a full\\naudit trail of \\u201Cwhat the agent did.\\u201D\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Policy Enforcement:\"), \" Implements granular, role-based rules. Example:\\n\\u201CMarketing Agents can read customer data but cannot delete it.\\u201D These policies\\nlive in the Gateway, decoupling security from individual servers.\")), mdx(\"h3\", {\n    \"id\": \"identity-and-authentication-oauth-21--rfc-8707\"\n  }, \"Identity and Authentication: OAuth 2.1 + RFC 8707\"), mdx(\"p\", null, \"A simple API key is insufficient for MCP. Robust implementations must adopt\\nOAuth 2.1 with \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"RFC 8707 (Resource Indicators)\"), \" to prevent Token Replay\\nattacks within a service mesh.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"The Authentication Flow:\")), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Discovery:\"), \" Client connects to the server\\u2019s public endpoint; receives a\\n\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"401 Unauthorized\"), \" with authorization metadata.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Authorization:\"), \" User grants consent via the Authorization Server (e.g.,\\nOkta, Auth0).\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Token Issuance:\"), \" Auth server issues a JWT with an \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"aud\"), \" (audience) claim\\nmatching the MCP server\\u2019s ID.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Access:\"), \" Client presents the token in the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Authorization: Bearer\"), \" header.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Validation:\"), \" The MCP server validates signature and audience \\u2014 rejecting\\ntokens issued for other servers.\")), mdx(\"p\", null, \"Tokens are scoped per resource. A credential valid for the Weather Server cannot\\naccess the Bank Server.\"), mdx(\"h3\", {\n    \"id\": \"human-in-the-loop-hitl-and-consent\"\n  }, \"Human-in-the-Loop (HITL) and Consent\"), mdx(\"p\", null, \"Security cannot be fully automated. When agents initiate sensitive actions\\n(payments, deletions, public posts), the protocol requires human confirmation.\"), mdx(\"p\", null, \"The Client must pause execution and request consent:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u201CThe agent wants to execute delete_database(id=prod-db). Do you approve?\\u201D\")), mdx(\"p\", null, \"This design transforms the agent from \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"autonomous\"), \" to \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"co-pilot\"), \" for high-risk\\noperations. Annotating tools as sensitive is the server\\u2019s duty; enforcing\\nconfirmation is the client\\u2019s. Backend RBAC remains the final safeguard if a\\nmalicious client bypasses HITL controls.\"), mdx(\"h3\", {\n    \"id\": \"network-isolation-and-binding\"\n  }, \"Network Isolation and Binding\"), mdx(\"p\", null, \"For local servers: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"bind only to loopback interfaces\"), \" (\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"127.0.0.1\"), \" or \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"::1\"), \").\\nNever use \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"0.0.0.0\"), \".\"), mdx(\"p\", null, \"For remote deployments: host MCP servers within a private subnet accessible only\\nvia the Gateway. Use \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"mutual TLS (mTLS)\"), \" between Gateway and servers to block\\nunauthorized lateral movement within clusters.\"), mdx(\"h2\", {\n    \"id\": \"enterprise-architecture-patterns-and-implementation\"\n  }, \"Enterprise Architecture: Patterns and Implementation\"), mdx(\"h3\", {\n    \"id\": \"the-monolith-anti-pattern\"\n  }, \"The Monolith Anti-Pattern\"), mdx(\"p\", null, \"A common early mistake: building a \\u201CCompany Unified Server\\u201D connecting Slack,\\nSQL, Jira, and more \\u2014 a single Python or Node.js process performing all roles.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"The Risks:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Security:\"), \" A vulnerability in one module exposes all credentials.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Dependency Hell:\"), \" Conflicting SDKs balloon container complexity.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Scalability:\"), \" Cannot scale wiki search independently from database queries.\")), mdx(\"h3\", {\n    \"id\": \"domain-driven-mesh\"\n  }, \"Domain-Driven Mesh\"), mdx(\"p\", null, \"The recommended pattern: deploy domain-focused, single-purpose MCP servers.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Domain\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Server Name\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Responsibility\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Example Tools\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Data\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"mcp-server-sales-db\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Read-only access to sales data\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"query_sales_by_region\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"get_customer_ltv\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Knowledge\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"mcp-server-confluence\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Semantic search of internal docs\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"search_wiki\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"get_page_content\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"DevOps\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"mcp-server-k8s-ops\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cluster maintenance\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"list_pods\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"restart_deployment\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"get_logs\"))), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Identity\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"mcp-server-directory\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"User lookup and org chart\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"find_user_email\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"get_manager\"))))), mdx(\"p\", null, \"The Gateway aggregates these services, while the LLM orchestrates logic across\\nthem. Access is tightly scoped \\u2014 e.g., HR agents can query directory data but\\nnot deployment logs.\"), mdx(\"h3\", {\n    \"id\": \"clean-architecture-for-server-code\"\n  }, \"Clean Architecture for Server Code\"), mdx(\"p\", null, \"MCP servers are production-grade applications, not scripts.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"A Python implementation might follow:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"project_root/\\n\\u251C\\u2500\\u2500 src/\\n\\u2502   \\u251C\\u2500\\u2500 infrastructure/   # Frameworks & Drivers\\n\\u2502   \\u251C\\u2500\\u2500 domain/           # Enterprise Logic (models, exceptions)\\n\\u2502   \\u251C\\u2500\\u2500 services/         # Use Cases (e.g., weather_service.py)\\n\\u2502   \\u251C\\u2500\\u2500 mcp_layer/        # MCP controller: tools, resources, server\\n\\u2502   \\u2514\\u2500\\u2500 main.py           # Bootstrap\\n\\u251C\\u2500\\u2500 tests/\\n\\u2502   \\u251C\\u2500\\u2500 unit/\\n\\u2502   \\u251C\\u2500\\u2500 integration/\\n\\u2502   \\u2514\\u2500\\u2500 contract/\\n\\u2514\\u2500\\u2500 Dockerfile\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Key Practices:\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Separation of Concerns:\"), \" Business logic decoupled from MCP libraries.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Dependency Injection:\"), \" Enables testable tool layers.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Multi-Level Validation:\"), \" JSON schema + domain rule validation (e.g., \\u201CCity\\nname cannot contain numbers\\u201D).\")), mdx(\"h3\", {\n    \"id\": \"platform-specific-integrations\"\n  }, \"Platform-Specific Integrations\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"AWS Bedrock:\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Use Bedrock\\u2019s \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"AgentCore\"), \" runtime. Configure Auth0 for dynamic client\\nregistration; ensure JWT audience parameter alignment. Deploy via the\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"agentcore launch\"), \" workflow (ECR + runtime registration).\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Google ADK:\"), mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Define \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"LlmAgent\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"McpToolset\"), \" in Python. When bridging Node.js tools via\\n\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"StdioServerParameters\"), \", use \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"absolute paths\"), \" for stability within ADK\\ncontexts.\"), mdx(\"h2\", {\n    \"id\": \"the-context-economy-optimizing-token-usage\"\n  }, \"The Context Economy: Optimizing Token Usage\"), mdx(\"p\", null, \"Context is currency in MCP design. Bloated prompts waste tokens and degrade\\nperformance.\"), mdx(\"h3\", {\n    \"id\": \"the-bloat-problem\"\n  }, \"The Bloat Problem\"), mdx(\"p\", null, \"Wrapping broad APIs (like AWS CLI) floods context with needless schemas.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Cost:\"), \" Increased token usage.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Performance:\"), \" Reasoning degradation (\\u201CThe Paradox of Choice\\u201D).\"), mdx(\"h3\", {\n    \"id\": \"progressive-disclosure\"\n  }, \"Progressive Disclosure\"), mdx(\"p\", null, \"Expose a single tool like \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"list_available_tools(category)\"), \" to reveal\\ndomain-specific tools dynamically.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"This minimizes irrelevant context and optimizes focus.\"), mdx(\"h3\", {\n    \"id\": \"code-mode-execute-dont-transmit\"\n  }, \"Code Mode: Execute, Don\\u2019t Transmit\"), mdx(\"p\", null, \"Instead of returning bulky data via tool calls, enable safe code execution:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"LLM writes: \\u201CFilter rows where column A > 10.\\u201D\\nServer executes locally and returns \\\"42\\\" instead of 10MB of CSV.\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Benefit:\"), \" Dramatic token reduction.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Risk:\"), \" Must use hardened sandboxes (e.g., gVisor, Firecracker).\"), mdx(\"h3\", {\n    \"id\": \"the-art-of-tool-descriptions\"\n  }, \"The Art of Tool Descriptions\"), mdx(\"p\", null, \"Tool descriptions are prompts in disguise. Write prescriptive guidance (e.g.,\\n\\u201CUse before refunding to verify customer eligibility.\\u201D)\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Avoid implementation details and audit descriptions for prompt injection risks.\"), mdx(\"h2\", {\n    \"id\": \"operational-excellence\"\n  }, \"Operational Excellence\"), mdx(\"h3\", {\n    \"id\": \"configuration-management\"\n  }, \"Configuration Management\"), mdx(\"p\", null, \"Prevent drift via schema-validation frameworks (Pydantic, Zod).\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Crash fast on missing or malformed configs. Inject secrets at runtime through\\nVaults, not Docker images.\"), mdx(\"h3\", {\n    \"id\": \"logging-and-tracing\"\n  }, \"Logging and Tracing\"), mdx(\"p\", null, \"Each request must carry a \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"trace_id\"), \" propagated through all logs.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Use fully structured JSON and redact sensitive data:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"{\\n  \\\"event\\\": \\\"tool_execution_start\\\",\\n  \\\"tool_name\\\": \\\"query_db\\\",\\n  \\\"trace_id\\\": \\\"a1b2-c3d4\\\",\\n  \\\"user_id\\\": \\\"user_123\\\"\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"chaos-engineering-for-agents\"\n  }, \"Chaos Engineering for Agents\"), mdx(\"p\", null, \"Test resilience under failure:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Latency injection (tool stalls).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Malformed responses.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Context flooding (>5MB).\")), mdx(\"h3\", {\n    \"id\": \"deployment-checklist\"\n  }, \"Deployment Checklist\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Category\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Requirement\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Transport\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Use SSE (HTTP) only; no Stdio tunnels.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Network\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Bind localhost for dev; restrict ingress in containers.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Identity/Auth\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"OAuth 2.1 with audience validation.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Security\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Least privilege IAM; enforce input validation.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Operations\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enable per-user/tool rate limits.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Compliance\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"HITL required for destructive tools.\")))), mdx(\"h2\", {\n    \"id\": \"conclusion-the-future-of-agentic-identity\"\n  }, \"Conclusion: The Future of Agentic Identity\"), mdx(\"p\", null, \"The Model Context Protocol is more than a technical standard \\u2014 it\\u2019s the\\ninfrastructure for a new digital workforce.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Today, agents act under \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"User Identity\"), \". Tomorrow, they will hold \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Service\\nIdentity\"), \": distinct permissions, audit trails, and governance via an \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Agent\\nControl Plane\"), \".\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Until then, the lesson remains: Build with Zero Trust.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Validate every input.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Assume every agent is compromised.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Never trust a tool description blindly. MCP is high-voltage infrastructure \\u2014\\npowerful enough to energize your enterprise, but dangerous enough to burn it\\ndown without insulation.\")));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["AI","TS"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE20lEQVQ4yz1U7VPSWRT+/RNbn2qmZlxdE/MlzUQhfFcSUIFsUTFfQAQCBUF5MZBMRYQKNcV8SVATlczUzZna2XZrZ7YPzbazs//Os+fepj6c+d177jnnPvc5z/kJ7bfbMWA0wul0YnhoCN16Perr61FdXQ2NWoMh8nV2dsJiNmNnexvj/nFE56J49eoIy0vLMPQbUFZWBkmlBDdu3ICg1Wh4sEathlKphL6rC3V1dWhoaEBtbS0aGxvR29ODnrs9mHzwgAr6eczx8TE+fvgIRbMCWVlZEIlEKCwshCAuL+cLcbkYVTIZGOK21lYoFQp+QXd3NyU1wzE8jJmZGXjGPLBaLDg5PsH+/j6Kiopw+dIlZGdn49y5HyCoCVllRQWuX7+OOkKkoiK2ezasJFbQSCj7ensxZLfD6XAiFoshMjuL+JMn2N3dxdmbM3g8Hpw/fw6XqOjFixchlBNCDT27ob4B6jY16um5jL9gIIgOnQ6DJhNH2NXZhfl4HHGyg/0D7Ozs4P3795xLhvLChQu4cuXKV4Q5OTlQqVQYdY+ira0NtTU1kEgkkBEFLeRXKVXQU7Nmw2FMT01hcWEB796+w8nJCba3tvFs5Rk1sxsFBQUQWJJYLIZcLqcnNuLatWtgqG9Kb/LnmwfN6O/rw4hzBInlZSQ3N7H09Cli0SiWlpawML+AMF20troGna4DQnFxMeeO3TwbnsUtKlxGfMpuyrhcZqanMRGcwONHjylmmqOLzs2RXPrh8/ng8/pQQxTZiedWaqZQQQ1hiFg3pym5qakJUokUUqkUrS0tMBqMcI24kMlksLi4SEhW4ff5eeO8Hi+MpOEuktHY6Bg6Oghhbm4u111VVRVKS0tRXFTMNdV++zYPZAlm0mkikcDZ2RlOT0+5ZpnA99J7pGELpyUSiUDeJIfQ29NLRYqg1Wq5gxXLy8vjNDC5BO4HuDF5fPn7C3U/wGOjxGEoFOL8sulyDDvQSxITRt1uGptKnszIZaJmB2y8GD9MHsFgkBdlHWXkz8fn8fnzZy5wBsg0YKIpmsTW1hYERniQgqOROepiAl6aBLNpkIv2d9LZXjqNw5eHWF9bw9TkQ3z66xM3ds547O/rRx8VHaSibpcbglwhRyQ2h8zRS2wkn9OXkjc3kD7Yw+tfTrD8LIG9zD7++PMDTs/e4O1vv+Kf//5FcjuFIacD48H7sNis8Afu034YQqhEj0i5AS+0E1hXjGGp3oF93RTSdx5gQ+nFusqLnfYQ0rqHyOjD2GjxIdE0gpVbbsRrbFilnGXaMz/zCbtXh/G6dgIZmR/75WM4qPTiRYkT6TI30qUupHKsSGabsfmjGc+zBpHKtmDrJyu37dx7/JytUzlf/UKqwI4j5SReqx5iT+rFsXoGR820b51CpmYcqat2JEX3sEVfZql823dL5lm/r7+dCav5FqznWbAhsmCzwMbX3/Yb+VY8L7Rhp5SedNWKdbJk8RD3bRbRBSUOvl6nGqsiM18LNoMZT8IxhDwBdGl10CrVMHUbEAnNYNzlhaJWjsCoH/HwI74ftbtg1PfBbrRy02s7UFMhg6REDM0tGj2L1QIH/f7v0l+5oakRSvq7aEi4LtLnnZ/vQJQvQr/RgJeHh4jGohgwDaBZ0QwVjSWLr66pRqVUwnOY73/3oJEB/hhQogAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/a1946/mcp-cover.png","srcSet":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/5b37e/mcp-cover.png 236w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/49058/mcp-cover.png 472w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/a1946/mcp-cover.png 944w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/6050d/mcp-cover.png 1200w","srcWebp":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/99fbb/mcp-cover.webp","srcSetWebp":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/77392/mcp-cover.webp 236w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/1f177/mcp-cover.webp 472w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/99fbb/mcp-cover.webp 944w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/9000d/mcp-cover.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%205c0%204%200%205%202%204l1-2C2%205%203%206%207%208s5%204%201%202-6-1-4%202h2l3%202%203%202H8l1%201-4-2-4-3c-2%200-1%203%200%203v11L0%2041c0%2014%200%2014%203%2017%202%202%202%204-2%204l-1%204c0%202%200%203%201%202v2L0%2087v15h10l2%201-1%201c-1-1-1%200-1%201H4c-3%200-4%200-4%203%200%202%201%203%202%202%201%200%203%203%201%204v2l-1%201c-2%200-3%2021-1%2023v2l-1%2035v34l4%201c5%202%206%204%205%2010%200%205%201%206%2010%207%207%200%205%202-3%202-3%200-4%200-3%201l-1%201c-2-1-3%201-1%203s4%201%203%200c0-2%201-2%203-1l2%203v1l1%202c0%202%200%202-1%201h-8c-2-1-3-1-3-5l1-7c1-3-2-5-6-4s-4%208-1%2010c2%202%202%206-1%205-2-1-1%206%201%208s2%205-1%204c-1-1-2%202%200%204v25a595%20595%200%20000%2080c-1%202-2%2026%200%2026l1%203-1%202-1%202c0%202%200%202%202%202l-1%201c-1%201%200%202%206%202%207%200%208%200%2010-2l3-2v2h2c2-1%203-2%202-3s1-5%202-5v3l-1%202c1%201%202%201%204-1l3-1-1%202-2%202c0%202%204%203%2016%203h11l2-5%201-7c-1-2%200-2%204-1%201%201%201%201-1%202-1%200-2%201-2%203a264%20264%200%2001-1%206h1c-1%202%200%202%204%202%203%200%204%200%204-2s3-2%204%200c0%202%208%203%208%201h1c1%201%202%201%202-1l2-2c2%201%204%200%203-1v-1l5%203c4%202%204%202%207%201%205-1%206-1%203%201-3%201-3%201%205%201s9%200%2010-2%201-2%201%200%201%202%207%202l7-1h1a627%20627%200%200067%200c-6%200-6%200-8-3l-3-4%202-7c2-9%202-8%200-12-2-3-3-4-7-5l-4-3h-1l-2-2-1-2a109%20109%200%200132%201c2%200%204%200%203%201-1%200-1%201%201%202v3l-1-1-1-1c-1%200-2%201-2%203s0%202%201%201l2-1c1%201%200%203-1%202-2%200-1%202%200%203%202%201%2011%202%2014%200%203-1%203-1%203%201l1%202%201-1h1c1%200%204-2%203-3l1-1c2%201%202%204%200%203v3h-1c-2%200-2%200-1%201l3%202h1l-1%201v8c-1%202-1%202%202%202%202%201%203%200%203-1l2-2v3c-1%201%200%202%202%202%202%202%203%203%202%204a379%20379%200%200076%201l11%201%2010-1h1l11%201c8%200%2010%200%209-1v-1c1%201%202%200%201-1%200-2%201-1%203%201%201%202%2018%203%2021%201h1l4%201%204-1c-1-1-1-1%200%200%201%200%202-1%202-4%200-2%200-3-1-2-1%202-4%201-3-2l2-1%201-2V259l-2%201c-2%200-2%200%200-1%203-2%202-5-1-4l-3-1%202-1h2c1-1%201-1-1-3s-3-2-4-1c-2%202-2%200%200-2l1-2%201-1%201-2c0-3%200-3-3-2l-3%202v1l-1-1-2-1h-5l-2-1c-2%200-2%204-1%204l1%201-2%201-3-1%201-1v-1c-1-1-1-1%201-3s2-3%200-4v-3c-2%201-2%201-2-1%201-1-6-4-9-4l-2%205c-1%204-1%204-6%204l-4-2-1-1c-3-1%201-4%204-3l3-1%201-1c3%200%205-3%203-4v-1c3%201%202%200%200-2-4-5-4-14%200-11l1-2h1c1%202%202%202%203%201l-1-3c-2-2-4-7-3-9s-2-4-6-5c-6-2-10-6-10-10%201-3%202-4%203-2v1l-1%203%202%202c2%200%202%200%202-2-1-2%200-2%203-2s3%200%202-1c-1-2%200-3%202-1h1l-2-2c-8-3-8-3-2-3%205%200%206%200%207-3%203-5%203-5%203-1-1%204-1%204%201%203l2-3v-1l1-6%201-5%201%202c0%202%200%202%202%200v-8l-1-3-2-1h-2l-3-1c-2%200-4-3-2-3l1-3%203-7%201%201h1l1-2%201%201c0%201%201%202%202%201v-1l-1-2%202%201h2c2-2%202-4%200-5v-1c0-2-3-3-4-2l-1%201-2%201c-1%201-1%201%201%201h2c-1%201-1%201%200%200l2%201h-1l-2%201c0%202-1%202-2%200-2-2-2-2-3-1s-1%201-1-1c-1-2-3-3-3-1l-2%201c-1-1-2%200-3%201l-3%202%201-2%202-1-2-2c-3-2-4-2-7%201l-4%201c-3%201-5%205-3%206v1c-2%200-2%200-1%201l1%202c1%209%202%2011%206%2011%203%200%203%201%201%203-2%201-7-3-7-8-1-5-3-6-4-3l-2%202-1%202-3%204c-1%201-1%201-1-1v-4c-1%200-2%209-1%2010l-1%201c-1-1-1-1-1%202l3%203%201%203-1-1-3-1-3-2c-2-3-2-3-3%201v1l2%201v2h-4l-1%201-2%201-1%201c0-1%200-2-1-1l-1-1%202-1h1c1-2%200-2-1-2-3%200-5%202-4%204h-1c-1-1-1%200-1%202s0%202-1-1c-2-5-4-7-7-6-2%200-3%203-1%205v4c0%202%201%202%206%206l-1%202-2%202-1%203c0%202%200%202%202%201l2-1%202-1h1l1%202%203-4%201-2%202-2%201-1%201%201c0%201%201%202%202%201%202%200%203%202%201%202v3c2%204%202%2010%200%2013l-3%201-1%201c1%201-1%205-2%205l-1-1-1-1-2%201-1%201v-1l-1-2-1%201c0%201-1%202-3%202s-3%200-4%203l-2%203v1c1%200%201%201-1%202-1%201-2%202-1%203%200%202%200%203-2%204l-2%203h4c1-1%201-1%201%201l-1%202-1%205v5l-3%2015%201%201h-1c-2%200-2%200-2%202l-2%206v3l1%202c-1%201%200%204%201%204l1-1%201-1v2l1%201h1l-1%201v1c1%201%202%202%201%203s-1%201-2-1l-1-1-1%201c-1-1-2%200-2%201l1%201v2h-1c-1-1-1-1-1%201l-1%201h-2l-1%204c-1%202-2%202-11%202-10%200-10%200-9-2%201-3%200-4-1-2-2%203-3%202-2%200%200-2%201-3%202-2l1-1c1-1%200-1-2-1l-3%201-1%201-1-1-1-1c-2%200-4%205-3%206%204%202-5%202-81%202l-85-1c-7-6-16-7-18-2h-2l-3%201c-3%202-3%202-4%200l-4-1c-2%201-2%201-1%202l-14%201c-12%200-15%200-14-1%202-2%202-5%200-6-2-2-2-2-1-4v-3l-1-2h-1c-1%201-1%201-3-1s-7-3-5-1l-1%201-1-3c0-2-1-2-3-2-1%200-2%200-1-1%201-3-4-7-6-7-2%201-3%200-3-2%200-3%201-3%203-2l3-1v-3l-2-1h2v-1l1-2%201%201c0%202%2020%200%2027-1%208-3%208-3%203-7-4-3-4-4%200-2%206%203%2011%200%2011-5l1-4c1-1%200-2-3-5-4-3-5-6-3-6l1%201%202%203%202%201h1c1-1%201-1%201%201l2%202%201%201%202%201%201-2h2l1%203%202%202%204%201%206%201%206%202c1%201%205%202%205%200l2-1%202-1c2-2%203-3%203%200h6l9-2-17%205-5%201v2l-1%201v-1l-2-1-4-1c-2%200-2%200-3%202%200%202-2%203-2%200-2-3-3%200-2%204%201%203%201%203%202%201l2-1v1c-1%202-1%206%201%206v6c0%201-2%200-4-3-4-3-6-3-6%200l-5%201-1%202h-7l-1-1-1-2c-1%200-1%204%201%205l3%201c2-1%204%201%204%203-1%202%200%204%203%204l3%202c0%202%202%203%203%201l3-1c2%200%203%200%202%203%200%203%202%202%204-1%202-5%201-7-4-8l-3%201v3c-2%202-5%200-6-4l-1-1h-1v-2h4l3%202h4l2-1h1c2%203%204%202%203-1%200-2%200-3%202-4h2l-1%201v2h1l3-4%201%202s1%202%203%202l2%203c-1%201%203%203%206%202l1%201c-1%202%201%203%204%203v-1l-1-2%203%202h2c0-2%203-1%204%202%201%202%203%203%203%201l2-2c3-1%204-10%201-11v-2c3%200%202-6%200-8l-3-3-1-1c-2%201-4-1-4-3l-2-3c-1-2-1-2%201-3%201-2%204-3%204-1l-1%201v1h2l2-1-1%202c-1%201-1%201%201%201l3-3c1-2%201-2%202-1%202%202%203%203%202%201l1-2%201%201c1%202%206%201%208-1l2-1v4h4l-1-1-1-1v-7l1%202v2c2%200%202%201%202%207%200%203%201%204%203%204l2%202%201%201%201-2%201-4c1-1%202%200%201%201-1%203%202%203%205%201l3-3%201-1-1-2-1-2c1-3-1-7-2-5h-2c-1-1-1-1%201-4%202-4%203-8%202-10s0-7%201-8l2-2%201-4%206-2c4-2%205-2%204%200l-1%201c-2%200-3%205-2%208%201%202-1%207-2%205-1%200-2%205-1%207%200%202%201%202%206%202l3%201h3l1-3c-1-1%200-2%201-4l1-4%202-2%203-2c0-2%205-4%207-3v2l1%202c2%200%202%201%201%203l-1%204c1%202%201%203-1%206-2%202-2%202-3%201%200-2-2-1-1%201h-1l-5-1c-4%200-4%200-3%202%201%201%201%201-1%201s-2%202-1%206l1%201c0-2%200-2%202%200s2%202%201%203l2%201h5c1%201%202%203%201%204-1%202%206%201%209-1%203-4%203-9%200-8-2%200-2%200-1-1l-1-2v-4h-1l-1%201-1-1%202-2v-1l3-7%202%201c1%202%202%201%202-4%202-12%202-20%201-20l-1-1-1-1c-2%200-3-1-1-3s-1-5-5-5c-8-2-22-2-24-1-1%201-4%201-4-1%200-1-3-2-11-2-15-1-21-2-21-3l13%201h21l1-1c1%201%202-2%202-6s-2-6-4-4l-7%201c-7%200-7-3%200-3l4-2%201-1c3%200%202-2%200-3-2-2-2-2-1-3v-2h-4l1-1-1-1-3-2c-1-1-7%201-8%202l-7%203%2013-8%207%201%207%201%203%201%203%202c3%201%204%201%205-1s4%200%203%202l6%203c7%201%207%201%206-1h1c2%202%203%202%202%200h1c1%201%202%201%204-1v-2c-2%200-1-2%200-2%203%201%204-2%203-8-1-13-1-18%201-16l1%202v4l1%203%201%201-1%201-1%201%201%201%202%201%203%201c2%201%202%201%202-1%200-1%200-2-1-1l-1-1%203-1c2%200%202%200%202-2l-1-3h-2c0-1-1-1-1%201-1%202-1%202-1%200%200-1-1-2-2-1-3%200-2-1%201-3%203-3%204-4%202-4l-2-1%202-2c2%200%203-4%201-9s-2-7-1-6l1%202%202%203c1%201%202%202%201%204%200%202%200%202%201%201h2l-1%203c-2%201-3%206-1%206l1%202h1l2-1-2%203c-2%202-2%208%201%208h2c1%200%204-9%203-11l-2-3v-3l-2-7v-4l-1-4-1-1c0-2-5-2-7%200l-3%201%201-3c2%200%202-1%201-1l-1-1c0-2-1-5-4-8l-1-3%204%203%203%204v-6l1-7v-8l1-2c-1-1-7%200-8%201-2%202-5%203-5%202l2-2c2-1%202-1-1-1-5%200-7%201-6%202l-1%201v1h-3l-1-1h-3l-1%201h-2c0-2-1-2-2-2-2%201-6-1-6-2%200-3%204-4%207-2h4c2-3%203-2%202%201%200%204%200%204%204%201%201-1%203-2%204-1v-1h2c2%200%202%200%201-1v-2c-2%200-2%200-1-1l4-1c3%200%208-2%209-6l1-2c2%200-3-5-5-5s-2-1-2-2l-2-2c-1-1-2-2-1-3%201-2%205%200%205%202l2%204c2%201%202%201%202-3l-2-5-1-4c1-1%201-1%202%201l1-10V12l-5-2c-5-2-6-2-7%200-1%201-1%201-2-1l-4-3c-2-1-3-2-2-3%200-2-2-3-5-3-2%201-2%201%200%202l3%202h-3l-3-3c0-2-15-1-15%201v2l3%206-3-2c-2-3-5-4-5-2l2%202c3%202%202%203-1%201l-3-2-4-1h-4l-1-1V3c0-3%200-3-7-3l-8%201h-1c-1-2-55-1-55%201l-1%201-1-1c1-1%200-2-1-2v1l-1%201-1-1a109%20109%200%2000-35%201l1-1c1-1-1-1-5-1-7%200-7%201-3%204s4%205%200%205v2c2%200%202%201%201%201s-1%201%201%202v2l-1%201h4v1h-2v4c2%202%203%204%201%204-1%201-5-8-5-11s-1-2-4%204l-5%206c-2%200-1%202%201%204s6%203%206%201l3%201%202%202h-6c-5-1-5-1-4%201%200%202%200%202-1%201l-2-4-2-1v-3c-1%201-3%200-5-1-3-1-3-1-3%201%200%203%202%204%205%204%204%200%204%201%203%204%200%205-1%205-1%201l-1-3-1%201h-2c-2-1-5%200-11%202-2%201-4%202-5%201l1-3%201%201%205-1c7-2%207-2%204-7l-3-4-1-1v-2c1-1%202%200%203%201h2l4%204%204%202-5-12c-2-2-2-2%200-4%201-2%201-2%202%200l4%202%203%201h-3c-3%200-4%200-1%204%201%201%202%202%203%201l2%201h1l1-3%201-3c1%200%201-1-1-1l-3-1h3c3%200%203%200%202-2-1-1-1-1%201-1%202%201%203%200%200-2l-1-5c0-2-1-2-3-2-3%200-6%203-5%205l-2%202-1-1c0-3-5-5-15-6H0v5m200-3l2%203%2015%205%201-5c0-5-2-7-5-4h-2l-6-1c-6%200-6%200-5%202m52-1l-1%203c-2%201-2%203%200%202%202%200%201%201-1%205-2%203-4%204-2%200%201-2%200-4-1-4l-5%2012%201%201-1%203c-2%205-2%209%200%2012l2%203-1-3%201-2c1%201%203-4%202-7l1-2%202-1%201-2%201-1-1-1c-1%201-4-1-3-1%202-2%206-2%206%200l1%201h3l2%201-2%202-2-1-3%202c-2%204-2%204-1%206%202%202%202%207-1%208v6c-1%202-1%203-1%201s-2-4-4-3l1%203%201%203%201%203%202%205%204%206c3%202%203%202%201%204v2l1%202%202%207V62c2-1%202-8%200-9v-2c1%200%200-2-3-4-3-4-4-7-1-3h2l2-1v3l2%204c3%202%203%203%205%201h3l-2%202c-2%200-2%200%200%202%201%201%202%202%203%201%202%200%202%200%201%201s-1%202%201%204c2%203%201%204-2%200-2-2-2-2-4-1v2l2%201h-5c-2%200-2%201-1%202v1l-1%204c0%204%200%205%202%204l-1%202c-2%202-1%204%202%203l2%201h2l1-2%201-1%201-1%203-4c2-2%202-3%201-4v-3c0-2%202-3%202-1l1%201V54l1-3%202-8%201-3%201-2-1-2-1-1h1c2%200%201-3-1-7-1-2-2-3-3-2l-1-1%201-1%201-1-1-1c-2%201-3-1-2-2%202-3%200-5-2-4-3%201-4%200-2-1%203-1%201-4-2-4-2%200-2%200-1%203%200%203%200%203-2-1l-3-4c-2%200-2-6-1-7V1c-1-2-3-1-6%201-2%202-3%201-1-1%201-1%201-1-1-1s-3%200-2%201m77%206a311%20311%200%2000-3%208c0-7-1-5-2%203l-2-1-1-3v2a115%20115%200%20010%2011l2-1%202-3c1-4%201-5%201-2%200%202%200%202%202%201h1l-1%202-2%203-1%201-1%203-1%205c-1%202-3%2010-3%2016v11c1%201%201%201%202-1%200-2%201-2%205%202%205%204%205%205%206%2011v6c-1%201%203%2010%205%2012%202%200%202%201%202%203l2-2%201-2-1%203c0%202%200%203%201%202%202%200%202%200%201%201l2%203%203%205c2%204%203%204%204-3l1-5-1%206v7h7l6%201c3%201%204%200%205-2l4-3c2%200%203%202%201%207-1%204%201%207%205%207%207%202%208%202%207%204l1%204c3%202%202%205-1%207s-4%206-1%206v5c-1%203-1%203-3%201h-1l1%202%201%203v3c-2%201-2%202-2%204%201%201%200%202-2%203l-2%202-2%202c-3%203-3%205%200%205h2l2%201c2%200%202%200%200-2v-2c2%201%204%200%206-1l3-2%201%203%202%204c1%201%201%201-1%202-2%200-2%200%200%201h-1l-3%201c1%201%200%201-2%201-3%200-7%202-5%202l-2%201h-3c0-2-2-1-2%201h2c-1%202%201%205%203%204v1l1%202%202-1%201-2v1l2%201c1-1%202-1%202%201v11l-5-3c-8-3-9-4-8-5%202-1-1-8-3-9-2%200-4%203-5%207v2c2%200%202%200%201%205v6l3%206c2%202%208%208%2012%2010%202%201%205%200%205-2l2%201c1%201%202%202%203%201l5-2c2%200%203-1%203-6%200-4%200-4-2-2l-2%205c-1%203-2%204-5%201-2-2-2-5%201-6l2-2v-4c1-3%201-3%201-1v5c0%202%200%202%202-1l3-4v-70a4447%204447%200%20010-102V0h-10l-11%201h-1l-4-1-3%201-2%201-2-1-2-1c-2%200-3%201-3%202l-2%202V2c1-2%201-2-9-2l-10%201h-1l-5-1h-5l-1%207M53%207c1%202%200%202-6%203-2%201-2%201%201%201s7%203%207%206l2%201c1-1%203%200%205%201h2l2%202c1%202%201%202%203%201%201-2%200-4-2-4-1%201-2%200-2-1-1-2%200-4%202-4l1-1c0-1%2020-1%2024%201v-1c-1-1-4-2-12-2-9%200-11%200-12-2-2-2-2-2-4-1h-9l-1-1-1%201m166%209l-1%2017c0%2014%201%2015%203%2015l1%201c0%202%204%205%204%203v1c0%202%202%202%203-1%202-3%201-6%200-3-2%202-2%202-2%200-1-2%201-4%203-3l1%205c0%204%200%204%202%202%201-1%202-2%203-1v-1c-2-1-1-2%201-2%201%201%202%200%203-3l2-5-1-1c-1%201-1%201-1-1%201-2-2-8-3-6v2c1%200%201%201-1%202v2l1%202c-1%202-3%203-4%202h-1c0%201-1%202-2%201v-5c1-11%201-14-2-17l-3-2v2l-1%203-1-4c0-2%200-4-2-5l-2-2v2m-90%2045l-1%201-4%203-4%203-1%208c0%205%200%205-2%204-1-1-1-1-1%201l2%203c1%203%202%202%201-1%200-2%200-2%201%200l4%202c3%201%203%201%202%203l1%202h4l8%203c4%200%204%200%204-2l-3-1c-3%200-4-1-2-2h-1l-1-5c1-8%201-12-1-12l-2-5c-1-4-4-8-4-5m99%204l-2%203c-3%203-3%203-2%200%201-4-2-4-4%200-1%203-1%204%201%203%202%200%202%200%200%204l-1%206-1%202v2c1%202%205%200%203-1-1-1-1-2%201-2l3-6%203-6c2-5%202-6%200-6s-2%200-1%201m4%202v4l-2%202%202%202v3l1%202%202-1h1c1%201%202%201%205-2%204-4%204-5%200-8s-5-2-5%201c0%202%200%202-1%200l-1-2-1-1v-2l-1%202M75%2089l-1%203-1%201-1%201-1%202h1l2%206c-1%202-1%202-4%201l-3%201c1%202%200%202-2%202-3%200-3%200-1-1s2-1%200-1c-4%201-6-1-6-4l-1%201-1%201c0-2%200-2-2%200l-1%202-4-3-4-5-1-1-3-1h-2l2%202c2%202%202%202%200%201-3-1-2%200%205%205l7%206%202%202c2-1%202%2010-1%2021s-3%2011-5%2010v-2c2-1%202-2-1-4-3-3-3-3-3%202%200%206%200%207-3%207-2%200-2%200%200%202l4%202%202%202h1c3-4%2028%201%2026%205%200%202-5%202-8%201l-5-2-3-2c0-2-2-1-2%201l-5%204-2%203%202%201%201%204h-1l-3-1c-2%200-2%201%201%202l4%203c0%201%205%204%208%204%202%200%202%203%201%205l-1%201%202-1c2-2%206-3%209-1h2l-2-2c-4-1-6-3-4-5s4-8%203-10l2-2c2%200%203-1%202-2-1-3%201-1%203%203%202%203%202%204%203%203l1-1%202-1-2-1h-2c0-2%208%200%2011%202%201%201%202%202%203%201l2-1c2%200%201-1-2-3l-4-4-3-1h-6c-2%201-6-2-6-3%201-1-1-4-2-7-3-5-4-8-2-8v-2c-2-2-2-2-2%201v7l1%202c3%203%201%204-6%202l-8-2-4-2%201-2v-1l1-3%202-11%202-10%203%202%202%201%202-1c1-1%203-1%209%202v-1c-3-3-1-5%204-5%203%200%204%200%203-1s-1-1%202-1c7%202%2014%202%2013%201l-4-1c-5%200-17-2-16-3h-1l-2-1c0-2%201-2%204-2h5l-4-1c-3%200-4%200-4-3l1-2%201-1c-1-1%200-2%201-2l1-1c0-2-2-2-2-1-1%201-1%200-1-3v-4l-1%203m174%205c-3%204-4%209-2%208l2%201-1%201-2%201h-1c-1-3-4-1-4%201%201%204%203%206%205%205h3c0%203%204%201%204-2l1-3v-6c0-1%200-2-2-2v-5c-1-1-3%200-3%201m63%2033l-2%204c0%203%201%206%202%205l1%201%201%203%201-2v-3l1%202%201%205v5c-1%203-1%203-1%201%200-3-5-7-6-6l2%204%208%2012-2-1-2-1%201%204c0%202%203%201%204-1l1-1v1l1%201%201-1%201-2v-5l-2-3v4l-1%203-2-11c0-6-1-10-2-11l-3-5c0-4-1-4-3-2m-37%207c-6%204-7%208-2%207%202-1%202-1%201%201-3%202-3%205%200%203l-2%204-2%203%203%205c1%204%203%206%204%205l1%201-1%201v1c1%201%2013-1%2013-2h8l-2%201c-2%200-2%201-2%203v3l-1-3c-1-2-2-3-4-2l-7%201c-4%201-4%201-3%203%200%203%201%204%202%202h1c1%201%201%202-1%202s-3%200-4-3l-1-3-8%202-7%202%201%201-2%201-4%202c-2%202-2%203%202%204%202%201%207-3%205-4s-1-2%202-1c2%200%202%201%201%202l-1%203v3c0%202-1%203-3%203l-2%202v1c-1-2-2-1-2%201l-2%204-2%201h-1l-1%202v16c0%205%201%207%203%209l3%203%205-3%205-2%204-2%202-1%203-1c2-2%202-2-1-3h2c4%200%205%200%2010-4l6-4h2l2-1-2-2-1-1h-1l-3%201v-1l2-3%201-1%203-1-1-1h-2l-1-1c1-1%200-1-1-1l-5-3c-3-3-5-3-7-3s-2-4%201-6%204-3%204%200l1%201c1%200%202%201%202%203l3%202%203-1-1-1v-3h1l1%201v-3h2l-1-2c-2-2-1-6%201-5l2%201c2-1%202-5%201-5v-7c0-3%200-3-3-3l-4-2h1c4%202%205%201%205-6l-1-5-2%201%201-2c1%200%202-12%200-12l-1%202c0%201%200%202-1%201-1-2-2-1-2%202%200%202%200%202-1%200%200-3-2-2-2%201%200%202%200%202-1%200-1-3-1-3-1-1s0%202-1%200v-2l-5%203-5%202v-1l3-7c0-1-3%200-5%202m-54%207c-2%203-3%206-1%206l-1%203-3%205%202%205c1%200%203-5%202-6l1-2h2c1-1%202%200%202%201l1%201%205-7c-1-1-5%201-5%203v-5c0-7-1-8-5-4m83%202v2l1%202-2-1a870%20870%200%20010%2015c2%200%202-1%201-1-2-2-1-3%201-3l3%202%204%201c3%200%203%200%201-2v-3c3%200%202-3-3-8-5-7-4-6-6-4m-55%206c-7%201-8%202-8%207%200%203%200%204-1%203-1-2-1-2-4%203l-2%203v-2c4-7%205-14%203-14s-5%203-4%205l-2%202-3%201-3%202c-3%201-3%201-3%205%201%204%201%205%203%205l2-1h2c2%200%202%200%201-2%200-2%200-2%203%200%204%203%209%203%209%200%200-2%201-2%203-2%201%200%202-3%201-8%200-5%200-5%201-4h2l2-1-1%202v1l1%205c-1%203%200%204%201%204l1%201-1%201-1%203v2l3-2c0-2%201-11%203-14l1-3-2-2h-7m-63%203l-2%201h-1l-5%201-4-1%201%202c2%201%202%202%201%202-2%200%201%204%203%205h3c1-1%202-1%204%201h-1c-3%200-2%201%201%203s4%204%200%202h-2l-2%201-1-2c1-1%200-2-2-3l-3-1-1-2c-2-1-2-1-2%202%200%205%201%209%203%209h3l9%201h6c-2-2-2-2%200-1%202%200%202%200%201-2-3-3-2-4%200-1%202%201%203%202%205%201%203%200%203-1%200-3-2-1-3-1-3-8-1-6-9-11-11-7m147%2015v2l5%201%201%201-3%201h-1c-2-2-3-1-2%201l1%202h1l1%201%201%201h4l6%202c3%201%203%201%202-1-1-1-1-1%201-1%202%201%204-1%204-3l-2-1c-1%201-3%200-4-1l-3-2c-3%201-3%200-2-2%202-1%202-1%200-1s-3%200-2%201c0%202-3%201-6%200l-2-1m-123%2030l-2%202c-2%200-3%205-5%2018a51551%2051551%200%20000%2017l2%204c0%202%202%202%203%201h2c1%200%201%201-1%202v1l3%202c2%207%206%203%205-5v-5h-1l-9-1%202-2%206-11%201-2v-3c-2-1-3%200-3%202s0%202-1-1l-2-3-1-1%201-1c3%200%204-4%202-6v-2c1-1%201-4-1-6h-1m165%2025l2%203c2%202%202%202%201%203-2%202-2%202-1%203%202%202%205%202%206%200h2c2%201%204-1%204-4%201-3-5-4-6-2v-1l-2-1-3-1c-2-3-3-2-3%200m-152%2016h-3l-1%202-1%205c-1%203-1%203%201%203l1%202c-1%202%203%205%204%204l-1-2v-2c3-2%205-1%203%201-2%201-2%201%200%201l3-2v-2l-1-5-1-4-2-1h-2m-173%205c0%202%200%202-2%201l-9%203-1%201-2-1-1-1-1%201-1%202-1-1-1-1h-5c-4%200-4%202%200%203l1%201c-2%201-2%201%200%204%201%203%203%204%204%202h2c0%201%205-1%205-3s3-5%204-4l1-1%202-1%201%201-1%201-2%201-2%201c-2%201-2%201%200%202%202%202%203%202%203-1l1-1%201%201%202%201c2%200%204-4%203-6v-6c-1-1-1-1-1%201m340%2020l-2%202-2%201c0%202-3%204-5%203h-1v2l-1-2h-1c-3%202-2%203%200%203l-1%201c-3%202-4%201-4-2%201-3%201-3-2-3-2%200-2%200-1-1l2-1%201-2-2-2-1%201-1%201-2%201v2l2%205%203%204v3c1%201%200%201-1%201l-2-1-1-1v3l-2%202-1%203h12c7%200%2012%200%2011-1-2-1-4-3-4-5s0-2%201-1l2%201-1-2-1-2v-1l-1%201h-2c-1-2%200-2%203-6%203-3%204-4%205-3l1%202v-2h1l2-1-1-1-1-2-1-2-1%202m-78%201l1%201v3l-2%201-1%202v2l1%202-3-1c-2-1-2-1-2%201v2l-1%201%202%201c2-1%203%200%201%202v1l-2%203v1c2%200%204-1%204-3s0-2%201-1h8c1%200%204-2%204-4l-2-3c-2-3-3-4%200-4h1c0-2-4-5-6-5l-2-1c0-2-2-3-2-1m20%203v1c1%200%202%201%201%202l1%202c2-2%203%200%201%205l-4%204-1%201c0%204%200%204%206%204%204%200%206-1%206-2l3-1c2%200%202%200%201%201a1750%201750%200%20017%200l-4-2c-2%200-2%200-1-1%202%200%201-2-1-4s-2-2-1-3v-1h-1l-1-3c-1-1-1-1%201-1s2%200%201-1l-1-1-1-1-1%202h-1c-1-1-2%200-3%202l-2%201-1-3-2-2c0-1-2-1-2%201M24%20322c0%206%200%208%202%208l1-5v-5l2%203c2%205%203%205%205%200l2-4v5c0%205%200%206%202%206l1-8c0-7%200-8-2-8l-4%205-1%205-2-4-2-5-2-1c-2%200-2%201-2%208m34-7c-2%201-1%2015%201%2015l1-3c0-3%200-3%202-3%205%200%208-5%204-8-2-2-7-3-8-1m-37%2047l-2%201c-2%200-4%204-4%205l2-1c2-2%202-2%205-1l4%202-2-2c-3-2-2-3%203-3%203%200%204%200%203%201v1l1%201c0%201%201%202%203%201%203%200%203%200%202%202l-5%201h-6l-2%201%201%201-2%201c-2%200-4%201-4%203h1l2-1c2%200%202%200%201%201-2%200-1%202%201%202v-1h6c8%200%208%200%205%203h-5c-2-2-5-2-5%200l1%201c1-1%204%201%203%203%200%202%206-2%208-4%202-3%203-2%204%202l1%202c0-2%202-3%202%200l-2%202c-3%201-5%204-3%204l1-1h1l2-2h3l2%201-1-2c-1%200-1-1%201-2%201-1%201-1-1-1-1%201-2%201-2-1l-2-2h-1l2-2c2%200%206%203%205%204l3%201c2%200%203%200%202-1l-2-2v-2c-1%201-3%200-4-1l-3-1%202-2%201-1c-3%200-2-6%201-7%203%200%2010-3%208-3l-3-1c-2-2-30-2-32%200m45-1c-2%201-3%202-2%205l-1%202-6%202-3%201-2%201h4l3-1-1%205%201%202h1l2-3v-1c-2%201-2%200-2-2s4-3%205-1c0%201%201%202%202%201v-1c-2-1-2-3%200-3v-1c-2%200-3-1%200-3%201-1%201-1%201%201%200%203%206%202%2012%200%203-2%204-2%205-1h6l-1-3c0-1-7%200-11%202l-6%202c-4%200-4%200-4-2%201-2-1-3-3-2m54%200v1c3%200%202%202%200%204l-2%201h2c2-1%202%200%202%204l-1%204v5c0%203%200%203-2%202v1c0%203%200%203-2%203l-5%201c-1%200-2%200-2-2h-1c-1%202-1%202-11%202-12%200-9%201%204%201l12%201h1l3-1c3-1%202%202-2%203l-1%201c2%200%203%200%204%202l1%203v-3c0-1%200-2%202-1l1-1%202-2c2%200%202%200%201-1v-1c6-1%2012%200%2011%201h2c1%200%201%201-1%202l-2%203%204-2%202-3%203%202%202%201-1-2-1-1c0-2%201-2%205-1h6l-5-1c-5-2-5-2-5-6%200-2%200-3-1-2l-1%201v-1l-1-1c-2%200-2-1-1-3v-5l2-4c4-4%202-5-9-6l-9%201%201%201h3l-3%201c-2%200-2%200-1%201v2c-3%202-3%203-3-1l1-3h1c0-2-4-3-5-1m17%205l-2%202v2l2%201-1%203-2%202c1-1%202%200%202%201s-1%202-2%201l-1-1h-4l1-1%201-1c-1-1-2%200-4%202l-2%204v1c-2%202-1%204%201%204l5-1c2%200%206-1%208-3l1-9v-9l-3%202'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE20lEQVQ4yz1U7VPSWRT+/RNbn2qmZlxdE/MlzUQhfFcSUIFsUTFfQAQCBUF5MZBMRYQKNcV8SVATlczUzZna2XZrZ7YPzbazs//Os+fepj6c+d177jnnPvc5z/kJ7bfbMWA0wul0YnhoCN16Perr61FdXQ2NWoMh8nV2dsJiNmNnexvj/nFE56J49eoIy0vLMPQbUFZWBkmlBDdu3ICg1Wh4sEathlKphL6rC3V1dWhoaEBtbS0aGxvR29ODnrs9mHzwgAr6eczx8TE+fvgIRbMCWVlZEIlEKCwshCAuL+cLcbkYVTIZGOK21lYoFQp+QXd3NyU1wzE8jJmZGXjGPLBaLDg5PsH+/j6Kiopw+dIlZGdn49y5HyCoCVllRQWuX7+OOkKkoiK2ezasJFbQSCj7ensxZLfD6XAiFoshMjuL+JMn2N3dxdmbM3g8Hpw/fw6XqOjFixchlBNCDT27ob4B6jY16um5jL9gIIgOnQ6DJhNH2NXZhfl4HHGyg/0D7Ozs4P3795xLhvLChQu4cuXKV4Q5OTlQqVQYdY+ira0NtTU1kEgkkBEFLeRXKVXQU7Nmw2FMT01hcWEB796+w8nJCba3tvFs5Rk1sxsFBQUQWJJYLIZcLqcnNuLatWtgqG9Kb/LnmwfN6O/rw4hzBInlZSQ3N7H09Cli0SiWlpawML+AMF20troGna4DQnFxMeeO3TwbnsUtKlxGfMpuyrhcZqanMRGcwONHjylmmqOLzs2RXPrh8/ng8/pQQxTZiedWaqZQQQ1hiFg3pym5qakJUokUUqkUrS0tMBqMcI24kMlksLi4SEhW4ff5eeO8Hi+MpOEuktHY6Bg6Oghhbm4u111VVRVKS0tRXFTMNdV++zYPZAlm0mkikcDZ2RlOT0+5ZpnA99J7pGELpyUSiUDeJIfQ29NLRYqg1Wq5gxXLy8vjNDC5BO4HuDF5fPn7C3U/wGOjxGEoFOL8sulyDDvQSxITRt1uGptKnszIZaJmB2y8GD9MHsFgkBdlHWXkz8fn8fnzZy5wBsg0YKIpmsTW1hYERniQgqOROepiAl6aBLNpkIv2d9LZXjqNw5eHWF9bw9TkQ3z66xM3ds547O/rRx8VHaSibpcbglwhRyQ2h8zRS2wkn9OXkjc3kD7Yw+tfTrD8LIG9zD7++PMDTs/e4O1vv+Kf//5FcjuFIacD48H7sNis8Afu034YQqhEj0i5AS+0E1hXjGGp3oF93RTSdx5gQ+nFusqLnfYQ0rqHyOjD2GjxIdE0gpVbbsRrbFilnGXaMz/zCbtXh/G6dgIZmR/75WM4qPTiRYkT6TI30qUupHKsSGabsfmjGc+zBpHKtmDrJyu37dx7/JytUzlf/UKqwI4j5SReqx5iT+rFsXoGR820b51CpmYcqat2JEX3sEVfZql823dL5lm/r7+dCav5FqznWbAhsmCzwMbX3/Yb+VY8L7Rhp5SedNWKdbJk8RD3bRbRBSUOvl6nGqsiM18LNoMZT8IxhDwBdGl10CrVMHUbEAnNYNzlhaJWjsCoH/HwI74ftbtg1PfBbrRy02s7UFMhg6REDM0tGj2L1QIH/f7v0l+5oakRSvq7aEi4LtLnnZ/vQJQvQr/RgJeHh4jGohgwDaBZ0QwVjSWLr66pRqVUwnOY73/3oJEB/hhQogAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/3ddd4/mcp-cover.png","srcSet":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/078a8/mcp-cover.png 163w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/e56da/mcp-cover.png 327w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/3ddd4/mcp-cover.png 653w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/c5cc7/mcp-cover.png 980w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/6050d/mcp-cover.png 1200w","srcWebp":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/0acdf/mcp-cover.webp","srcSetWebp":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/ac59e/mcp-cover.webp 163w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/7660b/mcp-cover.webp 327w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/0acdf/mcp-cover.webp 653w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/75470/mcp-cover.webp 980w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/9000d/mcp-cover.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%205c0%204%200%205%202%204l1-2C2%205%203%206%207%208s5%204%201%202-6-1-4%202h2l3%202%203%202H8l1%201-4-2-4-3c-2%200-1%203%200%203v11L0%2041c0%2014%200%2014%203%2017%202%202%202%204-2%204l-1%204c0%202%200%203%201%202v2L0%2087v15h10l2%201-1%201c-1-1-1%200-1%201H4c-3%200-4%200-4%203%200%202%201%203%202%202%201%200%203%203%201%204v2l-1%201c-2%200-3%2021-1%2023v2l-1%2035v34l4%201c5%202%206%204%205%2010%200%205%201%206%2010%207%207%200%205%202-3%202-3%200-4%200-3%201l-1%201c-2-1-3%201-1%203s4%201%203%200c0-2%201-2%203-1l2%203v1l1%202c0%202%200%202-1%201h-8c-2-1-3-1-3-5l1-7c1-3-2-5-6-4s-4%208-1%2010c2%202%202%206-1%205-2-1-1%206%201%208s2%205-1%204c-1-1-2%202%200%204v25a595%20595%200%20000%2080c-1%202-2%2026%200%2026l1%203-1%202-1%202c0%202%200%202%202%202l-1%201c-1%201%200%202%206%202%207%200%208%200%2010-2l3-2v2h2c2-1%203-2%202-3s1-5%202-5v3l-1%202c1%201%202%201%204-1l3-1-1%202-2%202c0%202%204%203%2016%203h11l2-5%201-7c-1-2%200-2%204-1%201%201%201%201-1%202-1%200-2%201-2%203a264%20264%200%2001-1%206h1c-1%202%200%202%204%202%203%200%204%200%204-2s3-2%204%200c0%202%208%203%208%201h1c1%201%202%201%202-1l2-2c2%201%204%200%203-1v-1l5%203c4%202%204%202%207%201%205-1%206-1%203%201-3%201-3%201%205%201s9%200%2010-2%201-2%201%200%201%202%207%202l7-1h1a627%20627%200%200067%200c-6%200-6%200-8-3l-3-4%202-7c2-9%202-8%200-12-2-3-3-4-7-5l-4-3h-1l-2-2-1-2a109%20109%200%200132%201c2%200%204%200%203%201-1%200-1%201%201%202v3l-1-1-1-1c-1%200-2%201-2%203s0%202%201%201l2-1c1%201%200%203-1%202-2%200-1%202%200%203%202%201%2011%202%2014%200%203-1%203-1%203%201l1%202%201-1h1c1%200%204-2%203-3l1-1c2%201%202%204%200%203v3h-1c-2%200-2%200-1%201l3%202h1l-1%201v8c-1%202-1%202%202%202%202%201%203%200%203-1l2-2v3c-1%201%200%202%202%202%202%202%203%203%202%204a379%20379%200%200076%201l11%201%2010-1h1l11%201c8%200%2010%200%209-1v-1c1%201%202%200%201-1%200-2%201-1%203%201%201%202%2018%203%2021%201h1l4%201%204-1c-1-1-1-1%200%200%201%200%202-1%202-4%200-2%200-3-1-2-1%202-4%201-3-2l2-1%201-2V259l-2%201c-2%200-2%200%200-1%203-2%202-5-1-4l-3-1%202-1h2c1-1%201-1-1-3s-3-2-4-1c-2%202-2%200%200-2l1-2%201-1%201-2c0-3%200-3-3-2l-3%202v1l-1-1-2-1h-5l-2-1c-2%200-2%204-1%204l1%201-2%201-3-1%201-1v-1c-1-1-1-1%201-3s2-3%200-4v-3c-2%201-2%201-2-1%201-1-6-4-9-4l-2%205c-1%204-1%204-6%204l-4-2-1-1c-3-1%201-4%204-3l3-1%201-1c3%200%205-3%203-4v-1c3%201%202%200%200-2-4-5-4-14%200-11l1-2h1c1%202%202%202%203%201l-1-3c-2-2-4-7-3-9s-2-4-6-5c-6-2-10-6-10-10%201-3%202-4%203-2v1l-1%203%202%202c2%200%202%200%202-2-1-2%200-2%203-2s3%200%202-1c-1-2%200-3%202-1h1l-2-2c-8-3-8-3-2-3%205%200%206%200%207-3%203-5%203-5%203-1-1%204-1%204%201%203l2-3v-1l1-6%201-5%201%202c0%202%200%202%202%200v-8l-1-3-2-1h-2l-3-1c-2%200-4-3-2-3l1-3%203-7%201%201h1l1-2%201%201c0%201%201%202%202%201v-1l-1-2%202%201h2c2-2%202-4%200-5v-1c0-2-3-3-4-2l-1%201-2%201c-1%201-1%201%201%201h2c-1%201-1%201%200%200l2%201h-1l-2%201c0%202-1%202-2%200-2-2-2-2-3-1s-1%201-1-1c-1-2-3-3-3-1l-2%201c-1-1-2%200-3%201l-3%202%201-2%202-1-2-2c-3-2-4-2-7%201l-4%201c-3%201-5%205-3%206v1c-2%200-2%200-1%201l1%202c1%209%202%2011%206%2011%203%200%203%201%201%203-2%201-7-3-7-8-1-5-3-6-4-3l-2%202-1%202-3%204c-1%201-1%201-1-1v-4c-1%200-2%209-1%2010l-1%201c-1-1-1-1-1%202l3%203%201%203-1-1-3-1-3-2c-2-3-2-3-3%201v1l2%201v2h-4l-1%201-2%201-1%201c0-1%200-2-1-1l-1-1%202-1h1c1-2%200-2-1-2-3%200-5%202-4%204h-1c-1-1-1%200-1%202s0%202-1-1c-2-5-4-7-7-6-2%200-3%203-1%205v4c0%202%201%202%206%206l-1%202-2%202-1%203c0%202%200%202%202%201l2-1%202-1h1l1%202%203-4%201-2%202-2%201-1%201%201c0%201%201%202%202%201%202%200%203%202%201%202v3c2%204%202%2010%200%2013l-3%201-1%201c1%201-1%205-2%205l-1-1-1-1-2%201-1%201v-1l-1-2-1%201c0%201-1%202-3%202s-3%200-4%203l-2%203v1c1%200%201%201-1%202-1%201-2%202-1%203%200%202%200%203-2%204l-2%203h4c1-1%201-1%201%201l-1%202-1%205v5l-3%2015%201%201h-1c-2%200-2%200-2%202l-2%206v3l1%202c-1%201%200%204%201%204l1-1%201-1v2l1%201h1l-1%201v1c1%201%202%202%201%203s-1%201-2-1l-1-1-1%201c-1-1-2%200-2%201l1%201v2h-1c-1-1-1-1-1%201l-1%201h-2l-1%204c-1%202-2%202-11%202-10%200-10%200-9-2%201-3%200-4-1-2-2%203-3%202-2%200%200-2%201-3%202-2l1-1c1-1%200-1-2-1l-3%201-1%201-1-1-1-1c-2%200-4%205-3%206%204%202-5%202-81%202l-85-1c-7-6-16-7-18-2h-2l-3%201c-3%202-3%202-4%200l-4-1c-2%201-2%201-1%202l-14%201c-12%200-15%200-14-1%202-2%202-5%200-6-2-2-2-2-1-4v-3l-1-2h-1c-1%201-1%201-3-1s-7-3-5-1l-1%201-1-3c0-2-1-2-3-2-1%200-2%200-1-1%201-3-4-7-6-7-2%201-3%200-3-2%200-3%201-3%203-2l3-1v-3l-2-1h2v-1l1-2%201%201c0%202%2020%200%2027-1%208-3%208-3%203-7-4-3-4-4%200-2%206%203%2011%200%2011-5l1-4c1-1%200-2-3-5-4-3-5-6-3-6l1%201%202%203%202%201h1c1-1%201-1%201%201l2%202%201%201%202%201%201-2h2l1%203%202%202%204%201%206%201%206%202c1%201%205%202%205%200l2-1%202-1c2-2%203-3%203%200h6l9-2-17%205-5%201v2l-1%201v-1l-2-1-4-1c-2%200-2%200-3%202%200%202-2%203-2%200-2-3-3%200-2%204%201%203%201%203%202%201l2-1v1c-1%202-1%206%201%206v6c0%201-2%200-4-3-4-3-6-3-6%200l-5%201-1%202h-7l-1-1-1-2c-1%200-1%204%201%205l3%201c2-1%204%201%204%203-1%202%200%204%203%204l3%202c0%202%202%203%203%201l3-1c2%200%203%200%202%203%200%203%202%202%204-1%202-5%201-7-4-8l-3%201v3c-2%202-5%200-6-4l-1-1h-1v-2h4l3%202h4l2-1h1c2%203%204%202%203-1%200-2%200-3%202-4h2l-1%201v2h1l3-4%201%202s1%202%203%202l2%203c-1%201%203%203%206%202l1%201c-1%202%201%203%204%203v-1l-1-2%203%202h2c0-2%203-1%204%202%201%202%203%203%203%201l2-2c3-1%204-10%201-11v-2c3%200%202-6%200-8l-3-3-1-1c-2%201-4-1-4-3l-2-3c-1-2-1-2%201-3%201-2%204-3%204-1l-1%201v1h2l2-1-1%202c-1%201-1%201%201%201l3-3c1-2%201-2%202-1%202%202%203%203%202%201l1-2%201%201c1%202%206%201%208-1l2-1v4h4l-1-1-1-1v-7l1%202v2c2%200%202%201%202%207%200%203%201%204%203%204l2%202%201%201%201-2%201-4c1-1%202%200%201%201-1%203%202%203%205%201l3-3%201-1-1-2-1-2c1-3-1-7-2-5h-2c-1-1-1-1%201-4%202-4%203-8%202-10s0-7%201-8l2-2%201-4%206-2c4-2%205-2%204%200l-1%201c-2%200-3%205-2%208%201%202-1%207-2%205-1%200-2%205-1%207%200%202%201%202%206%202l3%201h3l1-3c-1-1%200-2%201-4l1-4%202-2%203-2c0-2%205-4%207-3v2l1%202c2%200%202%201%201%203l-1%204c1%202%201%203-1%206-2%202-2%202-3%201%200-2-2-1-1%201h-1l-5-1c-4%200-4%200-3%202%201%201%201%201-1%201s-2%202-1%206l1%201c0-2%200-2%202%200s2%202%201%203l2%201h5c1%201%202%203%201%204-1%202%206%201%209-1%203-4%203-9%200-8-2%200-2%200-1-1l-1-2v-4h-1l-1%201-1-1%202-2v-1l3-7%202%201c1%202%202%201%202-4%202-12%202-20%201-20l-1-1-1-1c-2%200-3-1-1-3s-1-5-5-5c-8-2-22-2-24-1-1%201-4%201-4-1%200-1-3-2-11-2-15-1-21-2-21-3l13%201h21l1-1c1%201%202-2%202-6s-2-6-4-4l-7%201c-7%200-7-3%200-3l4-2%201-1c3%200%202-2%200-3-2-2-2-2-1-3v-2h-4l1-1-1-1-3-2c-1-1-7%201-8%202l-7%203%2013-8%207%201%207%201%203%201%203%202c3%201%204%201%205-1s4%200%203%202l6%203c7%201%207%201%206-1h1c2%202%203%202%202%200h1c1%201%202%201%204-1v-2c-2%200-1-2%200-2%203%201%204-2%203-8-1-13-1-18%201-16l1%202v4l1%203%201%201-1%201-1%201%201%201%202%201%203%201c2%201%202%201%202-1%200-1%200-2-1-1l-1-1%203-1c2%200%202%200%202-2l-1-3h-2c0-1-1-1-1%201-1%202-1%202-1%200%200-1-1-2-2-1-3%200-2-1%201-3%203-3%204-4%202-4l-2-1%202-2c2%200%203-4%201-9s-2-7-1-6l1%202%202%203c1%201%202%202%201%204%200%202%200%202%201%201h2l-1%203c-2%201-3%206-1%206l1%202h1l2-1-2%203c-2%202-2%208%201%208h2c1%200%204-9%203-11l-2-3v-3l-2-7v-4l-1-4-1-1c0-2-5-2-7%200l-3%201%201-3c2%200%202-1%201-1l-1-1c0-2-1-5-4-8l-1-3%204%203%203%204v-6l1-7v-8l1-2c-1-1-7%200-8%201-2%202-5%203-5%202l2-2c2-1%202-1-1-1-5%200-7%201-6%202l-1%201v1h-3l-1-1h-3l-1%201h-2c0-2-1-2-2-2-2%201-6-1-6-2%200-3%204-4%207-2h4c2-3%203-2%202%201%200%204%200%204%204%201%201-1%203-2%204-1v-1h2c2%200%202%200%201-1v-2c-2%200-2%200-1-1l4-1c3%200%208-2%209-6l1-2c2%200-3-5-5-5s-2-1-2-2l-2-2c-1-1-2-2-1-3%201-2%205%200%205%202l2%204c2%201%202%201%202-3l-2-5-1-4c1-1%201-1%202%201l1-10V12l-5-2c-5-2-6-2-7%200-1%201-1%201-2-1l-4-3c-2-1-3-2-2-3%200-2-2-3-5-3-2%201-2%201%200%202l3%202h-3l-3-3c0-2-15-1-15%201v2l3%206-3-2c-2-3-5-4-5-2l2%202c3%202%202%203-1%201l-3-2-4-1h-4l-1-1V3c0-3%200-3-7-3l-8%201h-1c-1-2-55-1-55%201l-1%201-1-1c1-1%200-2-1-2v1l-1%201-1-1a109%20109%200%2000-35%201l1-1c1-1-1-1-5-1-7%200-7%201-3%204s4%205%200%205v2c2%200%202%201%201%201s-1%201%201%202v2l-1%201h4v1h-2v4c2%202%203%204%201%204-1%201-5-8-5-11s-1-2-4%204l-5%206c-2%200-1%202%201%204s6%203%206%201l3%201%202%202h-6c-5-1-5-1-4%201%200%202%200%202-1%201l-2-4-2-1v-3c-1%201-3%200-5-1-3-1-3-1-3%201%200%203%202%204%205%204%204%200%204%201%203%204%200%205-1%205-1%201l-1-3-1%201h-2c-2-1-5%200-11%202-2%201-4%202-5%201l1-3%201%201%205-1c7-2%207-2%204-7l-3-4-1-1v-2c1-1%202%200%203%201h2l4%204%204%202-5-12c-2-2-2-2%200-4%201-2%201-2%202%200l4%202%203%201h-3c-3%200-4%200-1%204%201%201%202%202%203%201l2%201h1l1-3%201-3c1%200%201-1-1-1l-3-1h3c3%200%203%200%202-2-1-1-1-1%201-1%202%201%203%200%200-2l-1-5c0-2-1-2-3-2-3%200-6%203-5%205l-2%202-1-1c0-3-5-5-15-6H0v5m200-3l2%203%2015%205%201-5c0-5-2-7-5-4h-2l-6-1c-6%200-6%200-5%202m52-1l-1%203c-2%201-2%203%200%202%202%200%201%201-1%205-2%203-4%204-2%200%201-2%200-4-1-4l-5%2012%201%201-1%203c-2%205-2%209%200%2012l2%203-1-3%201-2c1%201%203-4%202-7l1-2%202-1%201-2%201-1-1-1c-1%201-4-1-3-1%202-2%206-2%206%200l1%201h3l2%201-2%202-2-1-3%202c-2%204-2%204-1%206%202%202%202%207-1%208v6c-1%202-1%203-1%201s-2-4-4-3l1%203%201%203%201%203%202%205%204%206c3%202%203%202%201%204v2l1%202%202%207V62c2-1%202-8%200-9v-2c1%200%200-2-3-4-3-4-4-7-1-3h2l2-1v3l2%204c3%202%203%203%205%201h3l-2%202c-2%200-2%200%200%202%201%201%202%202%203%201%202%200%202%200%201%201s-1%202%201%204c2%203%201%204-2%200-2-2-2-2-4-1v2l2%201h-5c-2%200-2%201-1%202v1l-1%204c0%204%200%205%202%204l-1%202c-2%202-1%204%202%203l2%201h2l1-2%201-1%201-1%203-4c2-2%202-3%201-4v-3c0-2%202-3%202-1l1%201V54l1-3%202-8%201-3%201-2-1-2-1-1h1c2%200%201-3-1-7-1-2-2-3-3-2l-1-1%201-1%201-1-1-1c-2%201-3-1-2-2%202-3%200-5-2-4-3%201-4%200-2-1%203-1%201-4-2-4-2%200-2%200-1%203%200%203%200%203-2-1l-3-4c-2%200-2-6-1-7V1c-1-2-3-1-6%201-2%202-3%201-1-1%201-1%201-1-1-1s-3%200-2%201m77%206a311%20311%200%2000-3%208c0-7-1-5-2%203l-2-1-1-3v2a115%20115%200%20010%2011l2-1%202-3c1-4%201-5%201-2%200%202%200%202%202%201h1l-1%202-2%203-1%201-1%203-1%205c-1%202-3%2010-3%2016v11c1%201%201%201%202-1%200-2%201-2%205%202%205%204%205%205%206%2011v6c-1%201%203%2010%205%2012%202%200%202%201%202%203l2-2%201-2-1%203c0%202%200%203%201%202%202%200%202%200%201%201l2%203%203%205c2%204%203%204%204-3l1-5-1%206v7h7l6%201c3%201%204%200%205-2l4-3c2%200%203%202%201%207-1%204%201%207%205%207%207%202%208%202%207%204l1%204c3%202%202%205-1%207s-4%206-1%206v5c-1%203-1%203-3%201h-1l1%202%201%203v3c-2%201-2%202-2%204%201%201%200%202-2%203l-2%202-2%202c-3%203-3%205%200%205h2l2%201c2%200%202%200%200-2v-2c2%201%204%200%206-1l3-2%201%203%202%204c1%201%201%201-1%202-2%200-2%200%200%201h-1l-3%201c1%201%200%201-2%201-3%200-7%202-5%202l-2%201h-3c0-2-2-1-2%201h2c-1%202%201%205%203%204v1l1%202%202-1%201-2v1l2%201c1-1%202-1%202%201v11l-5-3c-8-3-9-4-8-5%202-1-1-8-3-9-2%200-4%203-5%207v2c2%200%202%200%201%205v6l3%206c2%202%208%208%2012%2010%202%201%205%200%205-2l2%201c1%201%202%202%203%201l5-2c2%200%203-1%203-6%200-4%200-4-2-2l-2%205c-1%203-2%204-5%201-2-2-2-5%201-6l2-2v-4c1-3%201-3%201-1v5c0%202%200%202%202-1l3-4v-70a4447%204447%200%20010-102V0h-10l-11%201h-1l-4-1-3%201-2%201-2-1-2-1c-2%200-3%201-3%202l-2%202V2c1-2%201-2-9-2l-10%201h-1l-5-1h-5l-1%207M53%207c1%202%200%202-6%203-2%201-2%201%201%201s7%203%207%206l2%201c1-1%203%200%205%201h2l2%202c1%202%201%202%203%201%201-2%200-4-2-4-1%201-2%200-2-1-1-2%200-4%202-4l1-1c0-1%2020-1%2024%201v-1c-1-1-4-2-12-2-9%200-11%200-12-2-2-2-2-2-4-1h-9l-1-1-1%201m166%209l-1%2017c0%2014%201%2015%203%2015l1%201c0%202%204%205%204%203v1c0%202%202%202%203-1%202-3%201-6%200-3-2%202-2%202-2%200-1-2%201-4%203-3l1%205c0%204%200%204%202%202%201-1%202-2%203-1v-1c-2-1-1-2%201-2%201%201%202%200%203-3l2-5-1-1c-1%201-1%201-1-1%201-2-2-8-3-6v2c1%200%201%201-1%202v2l1%202c-1%202-3%203-4%202h-1c0%201-1%202-2%201v-5c1-11%201-14-2-17l-3-2v2l-1%203-1-4c0-2%200-4-2-5l-2-2v2m-90%2045l-1%201-4%203-4%203-1%208c0%205%200%205-2%204-1-1-1-1-1%201l2%203c1%203%202%202%201-1%200-2%200-2%201%200l4%202c3%201%203%201%202%203l1%202h4l8%203c4%200%204%200%204-2l-3-1c-3%200-4-1-2-2h-1l-1-5c1-8%201-12-1-12l-2-5c-1-4-4-8-4-5m99%204l-2%203c-3%203-3%203-2%200%201-4-2-4-4%200-1%203-1%204%201%203%202%200%202%200%200%204l-1%206-1%202v2c1%202%205%200%203-1-1-1-1-2%201-2l3-6%203-6c2-5%202-6%200-6s-2%200-1%201m4%202v4l-2%202%202%202v3l1%202%202-1h1c1%201%202%201%205-2%204-4%204-5%200-8s-5-2-5%201c0%202%200%202-1%200l-1-2-1-1v-2l-1%202M75%2089l-1%203-1%201-1%201-1%202h1l2%206c-1%202-1%202-4%201l-3%201c1%202%200%202-2%202-3%200-3%200-1-1s2-1%200-1c-4%201-6-1-6-4l-1%201-1%201c0-2%200-2-2%200l-1%202-4-3-4-5-1-1-3-1h-2l2%202c2%202%202%202%200%201-3-1-2%200%205%205l7%206%202%202c2-1%202%2010-1%2021s-3%2011-5%2010v-2c2-1%202-2-1-4-3-3-3-3-3%202%200%206%200%207-3%207-2%200-2%200%200%202l4%202%202%202h1c3-4%2028%201%2026%205%200%202-5%202-8%201l-5-2-3-2c0-2-2-1-2%201l-5%204-2%203%202%201%201%204h-1l-3-1c-2%200-2%201%201%202l4%203c0%201%205%204%208%204%202%200%202%203%201%205l-1%201%202-1c2-2%206-3%209-1h2l-2-2c-4-1-6-3-4-5s4-8%203-10l2-2c2%200%203-1%202-2-1-3%201-1%203%203%202%203%202%204%203%203l1-1%202-1-2-1h-2c0-2%208%200%2011%202%201%201%202%202%203%201l2-1c2%200%201-1-2-3l-4-4-3-1h-6c-2%201-6-2-6-3%201-1-1-4-2-7-3-5-4-8-2-8v-2c-2-2-2-2-2%201v7l1%202c3%203%201%204-6%202l-8-2-4-2%201-2v-1l1-3%202-11%202-10%203%202%202%201%202-1c1-1%203-1%209%202v-1c-3-3-1-5%204-5%203%200%204%200%203-1s-1-1%202-1c7%202%2014%202%2013%201l-4-1c-5%200-17-2-16-3h-1l-2-1c0-2%201-2%204-2h5l-4-1c-3%200-4%200-4-3l1-2%201-1c-1-1%200-2%201-2l1-1c0-2-2-2-2-1-1%201-1%200-1-3v-4l-1%203m174%205c-3%204-4%209-2%208l2%201-1%201-2%201h-1c-1-3-4-1-4%201%201%204%203%206%205%205h3c0%203%204%201%204-2l1-3v-6c0-1%200-2-2-2v-5c-1-1-3%200-3%201m63%2033l-2%204c0%203%201%206%202%205l1%201%201%203%201-2v-3l1%202%201%205v5c-1%203-1%203-1%201%200-3-5-7-6-6l2%204%208%2012-2-1-2-1%201%204c0%202%203%201%204-1l1-1v1l1%201%201-1%201-2v-5l-2-3v4l-1%203-2-11c0-6-1-10-2-11l-3-5c0-4-1-4-3-2m-37%207c-6%204-7%208-2%207%202-1%202-1%201%201-3%202-3%205%200%203l-2%204-2%203%203%205c1%204%203%206%204%205l1%201-1%201v1c1%201%2013-1%2013-2h8l-2%201c-2%200-2%201-2%203v3l-1-3c-1-2-2-3-4-2l-7%201c-4%201-4%201-3%203%200%203%201%204%202%202h1c1%201%201%202-1%202s-3%200-4-3l-1-3-8%202-7%202%201%201-2%201-4%202c-2%202-2%203%202%204%202%201%207-3%205-4s-1-2%202-1c2%200%202%201%201%202l-1%203v3c0%202-1%203-3%203l-2%202v1c-1-2-2-1-2%201l-2%204-2%201h-1l-1%202v16c0%205%201%207%203%209l3%203%205-3%205-2%204-2%202-1%203-1c2-2%202-2-1-3h2c4%200%205%200%2010-4l6-4h2l2-1-2-2-1-1h-1l-3%201v-1l2-3%201-1%203-1-1-1h-2l-1-1c1-1%200-1-1-1l-5-3c-3-3-5-3-7-3s-2-4%201-6%204-3%204%200l1%201c1%200%202%201%202%203l3%202%203-1-1-1v-3h1l1%201v-3h2l-1-2c-2-2-1-6%201-5l2%201c2-1%202-5%201-5v-7c0-3%200-3-3-3l-4-2h1c4%202%205%201%205-6l-1-5-2%201%201-2c1%200%202-12%200-12l-1%202c0%201%200%202-1%201-1-2-2-1-2%202%200%202%200%202-1%200%200-3-2-2-2%201%200%202%200%202-1%200-1-3-1-3-1-1s0%202-1%200v-2l-5%203-5%202v-1l3-7c0-1-3%200-5%202m-54%207c-2%203-3%206-1%206l-1%203-3%205%202%205c1%200%203-5%202-6l1-2h2c1-1%202%200%202%201l1%201%205-7c-1-1-5%201-5%203v-5c0-7-1-8-5-4m83%202v2l1%202-2-1a870%20870%200%20010%2015c2%200%202-1%201-1-2-2-1-3%201-3l3%202%204%201c3%200%203%200%201-2v-3c3%200%202-3-3-8-5-7-4-6-6-4m-55%206c-7%201-8%202-8%207%200%203%200%204-1%203-1-2-1-2-4%203l-2%203v-2c4-7%205-14%203-14s-5%203-4%205l-2%202-3%201-3%202c-3%201-3%201-3%205%201%204%201%205%203%205l2-1h2c2%200%202%200%201-2%200-2%200-2%203%200%204%203%209%203%209%200%200-2%201-2%203-2%201%200%202-3%201-8%200-5%200-5%201-4h2l2-1-1%202v1l1%205c-1%203%200%204%201%204l1%201-1%201-1%203v2l3-2c0-2%201-11%203-14l1-3-2-2h-7m-63%203l-2%201h-1l-5%201-4-1%201%202c2%201%202%202%201%202-2%200%201%204%203%205h3c1-1%202-1%204%201h-1c-3%200-2%201%201%203s4%204%200%202h-2l-2%201-1-2c1-1%200-2-2-3l-3-1-1-2c-2-1-2-1-2%202%200%205%201%209%203%209h3l9%201h6c-2-2-2-2%200-1%202%200%202%200%201-2-3-3-2-4%200-1%202%201%203%202%205%201%203%200%203-1%200-3-2-1-3-1-3-8-1-6-9-11-11-7m147%2015v2l5%201%201%201-3%201h-1c-2-2-3-1-2%201l1%202h1l1%201%201%201h4l6%202c3%201%203%201%202-1-1-1-1-1%201-1%202%201%204-1%204-3l-2-1c-1%201-3%200-4-1l-3-2c-3%201-3%200-2-2%202-1%202-1%200-1s-3%200-2%201c0%202-3%201-6%200l-2-1m-123%2030l-2%202c-2%200-3%205-5%2018a51551%2051551%200%20000%2017l2%204c0%202%202%202%203%201h2c1%200%201%201-1%202v1l3%202c2%207%206%203%205-5v-5h-1l-9-1%202-2%206-11%201-2v-3c-2-1-3%200-3%202s0%202-1-1l-2-3-1-1%201-1c3%200%204-4%202-6v-2c1-1%201-4-1-6h-1m165%2025l2%203c2%202%202%202%201%203-2%202-2%202-1%203%202%202%205%202%206%200h2c2%201%204-1%204-4%201-3-5-4-6-2v-1l-2-1-3-1c-2-3-3-2-3%200m-152%2016h-3l-1%202-1%205c-1%203-1%203%201%203l1%202c-1%202%203%205%204%204l-1-2v-2c3-2%205-1%203%201-2%201-2%201%200%201l3-2v-2l-1-5-1-4-2-1h-2m-173%205c0%202%200%202-2%201l-9%203-1%201-2-1-1-1-1%201-1%202-1-1-1-1h-5c-4%200-4%202%200%203l1%201c-2%201-2%201%200%204%201%203%203%204%204%202h2c0%201%205-1%205-3s3-5%204-4l1-1%202-1%201%201-1%201-2%201-2%201c-2%201-2%201%200%202%202%202%203%202%203-1l1-1%201%201%202%201c2%200%204-4%203-6v-6c-1-1-1-1-1%201m340%2020l-2%202-2%201c0%202-3%204-5%203h-1v2l-1-2h-1c-3%202-2%203%200%203l-1%201c-3%202-4%201-4-2%201-3%201-3-2-3-2%200-2%200-1-1l2-1%201-2-2-2-1%201-1%201-2%201v2l2%205%203%204v3c1%201%200%201-1%201l-2-1-1-1v3l-2%202-1%203h12c7%200%2012%200%2011-1-2-1-4-3-4-5s0-2%201-1l2%201-1-2-1-2v-1l-1%201h-2c-1-2%200-2%203-6%203-3%204-4%205-3l1%202v-2h1l2-1-1-1-1-2-1-2-1%202m-78%201l1%201v3l-2%201-1%202v2l1%202-3-1c-2-1-2-1-2%201v2l-1%201%202%201c2-1%203%200%201%202v1l-2%203v1c2%200%204-1%204-3s0-2%201-1h8c1%200%204-2%204-4l-2-3c-2-3-3-4%200-4h1c0-2-4-5-6-5l-2-1c0-2-2-3-2-1m20%203v1c1%200%202%201%201%202l1%202c2-2%203%200%201%205l-4%204-1%201c0%204%200%204%206%204%204%200%206-1%206-2l3-1c2%200%202%200%201%201a1750%201750%200%20017%200l-4-2c-2%200-2%200-1-1%202%200%201-2-1-4s-2-2-1-3v-1h-1l-1-3c-1-1-1-1%201-1s2%200%201-1l-1-1-1-1-1%202h-1c-1-1-2%200-3%202l-2%201-1-3-2-2c0-1-2-1-2%201M24%20322c0%206%200%208%202%208l1-5v-5l2%203c2%205%203%205%205%200l2-4v5c0%205%200%206%202%206l1-8c0-7%200-8-2-8l-4%205-1%205-2-4-2-5-2-1c-2%200-2%201-2%208m34-7c-2%201-1%2015%201%2015l1-3c0-3%200-3%202-3%205%200%208-5%204-8-2-2-7-3-8-1m-37%2047l-2%201c-2%200-4%204-4%205l2-1c2-2%202-2%205-1l4%202-2-2c-3-2-2-3%203-3%203%200%204%200%203%201v1l1%201c0%201%201%202%203%201%203%200%203%200%202%202l-5%201h-6l-2%201%201%201-2%201c-2%200-4%201-4%203h1l2-1c2%200%202%200%201%201-2%200-1%202%201%202v-1h6c8%200%208%200%205%203h-5c-2-2-5-2-5%200l1%201c1-1%204%201%203%203%200%202%206-2%208-4%202-3%203-2%204%202l1%202c0-2%202-3%202%200l-2%202c-3%201-5%204-3%204l1-1h1l2-2h3l2%201-1-2c-1%200-1-1%201-2%201-1%201-1-1-1-1%201-2%201-2-1l-2-2h-1l2-2c2%200%206%203%205%204l3%201c2%200%203%200%202-1l-2-2v-2c-1%201-3%200-4-1l-3-1%202-2%201-1c-3%200-2-6%201-7%203%200%2010-3%208-3l-3-1c-2-2-30-2-32%200m45-1c-2%201-3%202-2%205l-1%202-6%202-3%201-2%201h4l3-1-1%205%201%202h1l2-3v-1c-2%201-2%200-2-2s4-3%205-1c0%201%201%202%202%201v-1c-2-1-2-3%200-3v-1c-2%200-3-1%200-3%201-1%201-1%201%201%200%203%206%202%2012%200%203-2%204-2%205-1h6l-1-3c0-1-7%200-11%202l-6%202c-4%200-4%200-4-2%201-2-1-3-3-2m54%200v1c3%200%202%202%200%204l-2%201h2c2-1%202%200%202%204l-1%204v5c0%203%200%203-2%202v1c0%203%200%203-2%203l-5%201c-1%200-2%200-2-2h-1c-1%202-1%202-11%202-12%200-9%201%204%201l12%201h1l3-1c3-1%202%202-2%203l-1%201c2%200%203%200%204%202l1%203v-3c0-1%200-2%202-1l1-1%202-2c2%200%202%200%201-1v-1c6-1%2012%200%2011%201h2c1%200%201%201-1%202l-2%203%204-2%202-3%203%202%202%201-1-2-1-1c0-2%201-2%205-1h6l-5-1c-5-2-5-2-5-6%200-2%200-3-1-2l-1%201v-1l-1-1c-2%200-2-1-1-3v-5l2-4c4-4%202-5-9-6l-9%201%201%201h3l-3%201c-2%200-2%200-1%201v2c-3%202-3%203-3-1l1-3h1c0-2-4-3-5-1m17%205l-2%202v2l2%201-1%203-2%202c1-1%202%200%202%201s-1%202-2%201l-1-1h-4l1-1%201-1c-1-1-2%200-4%202l-2%204v1c-2%202-1%204%201%204l5-1c2%200%206-1%208-3l1-9v-9l-3%202'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAE20lEQVQ4yz1U7VPSWRT+/RNbn2qmZlxdE/MlzUQhfFcSUIFsUTFfQAQCBUF5MZBMRYQKNcV8SVATlczUzZna2XZrZ7YPzbazs//Os+fepj6c+d177jnnPvc5z/kJ7bfbMWA0wul0YnhoCN16Perr61FdXQ2NWoMh8nV2dsJiNmNnexvj/nFE56J49eoIy0vLMPQbUFZWBkmlBDdu3ICg1Wh4sEathlKphL6rC3V1dWhoaEBtbS0aGxvR29ODnrs9mHzwgAr6eczx8TE+fvgIRbMCWVlZEIlEKCwshCAuL+cLcbkYVTIZGOK21lYoFQp+QXd3NyU1wzE8jJmZGXjGPLBaLDg5PsH+/j6Kiopw+dIlZGdn49y5HyCoCVllRQWuX7+OOkKkoiK2ezasJFbQSCj7ensxZLfD6XAiFoshMjuL+JMn2N3dxdmbM3g8Hpw/fw6XqOjFixchlBNCDT27ob4B6jY16um5jL9gIIgOnQ6DJhNH2NXZhfl4HHGyg/0D7Ozs4P3795xLhvLChQu4cuXKV4Q5OTlQqVQYdY+ira0NtTU1kEgkkBEFLeRXKVXQU7Nmw2FMT01hcWEB796+w8nJCba3tvFs5Rk1sxsFBQUQWJJYLIZcLqcnNuLatWtgqG9Kb/LnmwfN6O/rw4hzBInlZSQ3N7H09Cli0SiWlpawML+AMF20troGna4DQnFxMeeO3TwbnsUtKlxGfMpuyrhcZqanMRGcwONHjylmmqOLzs2RXPrh8/ng8/pQQxTZiedWaqZQQQ1hiFg3pym5qakJUokUUqkUrS0tMBqMcI24kMlksLi4SEhW4ff5eeO8Hi+MpOEuktHY6Bg6Oghhbm4u111VVRVKS0tRXFTMNdV++zYPZAlm0mkikcDZ2RlOT0+5ZpnA99J7pGELpyUSiUDeJIfQ29NLRYqg1Wq5gxXLy8vjNDC5BO4HuDF5fPn7C3U/wGOjxGEoFOL8sulyDDvQSxITRt1uGptKnszIZaJmB2y8GD9MHsFgkBdlHWXkz8fn8fnzZy5wBsg0YKIpmsTW1hYERniQgqOROepiAl6aBLNpkIv2d9LZXjqNw5eHWF9bw9TkQ3z66xM3ds547O/rRx8VHaSibpcbglwhRyQ2h8zRS2wkn9OXkjc3kD7Yw+tfTrD8LIG9zD7++PMDTs/e4O1vv+Kf//5FcjuFIacD48H7sNis8Afu034YQqhEj0i5AS+0E1hXjGGp3oF93RTSdx5gQ+nFusqLnfYQ0rqHyOjD2GjxIdE0gpVbbsRrbFilnGXaMz/zCbtXh/G6dgIZmR/75WM4qPTiRYkT6TI30qUupHKsSGabsfmjGc+zBpHKtmDrJyu37dx7/JytUzlf/UKqwI4j5SReqx5iT+rFsXoGR820b51CpmYcqat2JEX3sEVfZql823dL5lm/r7+dCav5FqznWbAhsmCzwMbX3/Yb+VY8L7Rhp5SedNWKdbJk8RD3bRbRBSUOvl6nGqsiM18LNoMZT8IxhDwBdGl10CrVMHUbEAnNYNzlhaJWjsCoH/HwI74ftbtg1PfBbrRy02s7UFMhg6REDM0tGj2L1QIH/f7v0l+5oakRSvq7aEi4LtLnnZ/vQJQvQr/RgJeHh4jGohgwDaBZ0QwVjSWLr66pRqVUwnOY73/3oJEB/hhQogAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/502b1/mcp-cover.png","srcSet":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/f2e6d/mcp-cover.png 114w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/4ddba/mcp-cover.png 229w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/502b1/mcp-cover.png 457w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/7ddc2/mcp-cover.png 686w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/435bf/mcp-cover.png 914w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/6050d/mcp-cover.png 1200w","srcWebp":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/15384/mcp-cover.webp","srcSetWebp":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/31fce/mcp-cover.webp 114w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/e3e25/mcp-cover.webp 229w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/15384/mcp-cover.webp 457w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/0258d/mcp-cover.webp 686w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/64ea2/mcp-cover.webp 914w,\n/static/2b5897d3dd0bc9b258bd2274fa0ade58/9000d/mcp-cover.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%205c0%204%200%205%202%204l1-2C2%205%203%206%207%208s5%204%201%202-6-1-4%202h2l3%202%203%202H8l1%201-4-2-4-3c-2%200-1%203%200%203v11L0%2041c0%2014%200%2014%203%2017%202%202%202%204-2%204l-1%204c0%202%200%203%201%202v2L0%2087v15h10l2%201-1%201c-1-1-1%200-1%201H4c-3%200-4%200-4%203%200%202%201%203%202%202%201%200%203%203%201%204v2l-1%201c-2%200-3%2021-1%2023v2l-1%2035v34l4%201c5%202%206%204%205%2010%200%205%201%206%2010%207%207%200%205%202-3%202-3%200-4%200-3%201l-1%201c-2-1-3%201-1%203s4%201%203%200c0-2%201-2%203-1l2%203v1l1%202c0%202%200%202-1%201h-8c-2-1-3-1-3-5l1-7c1-3-2-5-6-4s-4%208-1%2010c2%202%202%206-1%205-2-1-1%206%201%208s2%205-1%204c-1-1-2%202%200%204v25a595%20595%200%20000%2080c-1%202-2%2026%200%2026l1%203-1%202-1%202c0%202%200%202%202%202l-1%201c-1%201%200%202%206%202%207%200%208%200%2010-2l3-2v2h2c2-1%203-2%202-3s1-5%202-5v3l-1%202c1%201%202%201%204-1l3-1-1%202-2%202c0%202%204%203%2016%203h11l2-5%201-7c-1-2%200-2%204-1%201%201%201%201-1%202-1%200-2%201-2%203a264%20264%200%2001-1%206h1c-1%202%200%202%204%202%203%200%204%200%204-2s3-2%204%200c0%202%208%203%208%201h1c1%201%202%201%202-1l2-2c2%201%204%200%203-1v-1l5%203c4%202%204%202%207%201%205-1%206-1%203%201-3%201-3%201%205%201s9%200%2010-2%201-2%201%200%201%202%207%202l7-1h1a627%20627%200%200067%200c-6%200-6%200-8-3l-3-4%202-7c2-9%202-8%200-12-2-3-3-4-7-5l-4-3h-1l-2-2-1-2a109%20109%200%200132%201c2%200%204%200%203%201-1%200-1%201%201%202v3l-1-1-1-1c-1%200-2%201-2%203s0%202%201%201l2-1c1%201%200%203-1%202-2%200-1%202%200%203%202%201%2011%202%2014%200%203-1%203-1%203%201l1%202%201-1h1c1%200%204-2%203-3l1-1c2%201%202%204%200%203v3h-1c-2%200-2%200-1%201l3%202h1l-1%201v8c-1%202-1%202%202%202%202%201%203%200%203-1l2-2v3c-1%201%200%202%202%202%202%202%203%203%202%204a379%20379%200%200076%201l11%201%2010-1h1l11%201c8%200%2010%200%209-1v-1c1%201%202%200%201-1%200-2%201-1%203%201%201%202%2018%203%2021%201h1l4%201%204-1c-1-1-1-1%200%200%201%200%202-1%202-4%200-2%200-3-1-2-1%202-4%201-3-2l2-1%201-2V259l-2%201c-2%200-2%200%200-1%203-2%202-5-1-4l-3-1%202-1h2c1-1%201-1-1-3s-3-2-4-1c-2%202-2%200%200-2l1-2%201-1%201-2c0-3%200-3-3-2l-3%202v1l-1-1-2-1h-5l-2-1c-2%200-2%204-1%204l1%201-2%201-3-1%201-1v-1c-1-1-1-1%201-3s2-3%200-4v-3c-2%201-2%201-2-1%201-1-6-4-9-4l-2%205c-1%204-1%204-6%204l-4-2-1-1c-3-1%201-4%204-3l3-1%201-1c3%200%205-3%203-4v-1c3%201%202%200%200-2-4-5-4-14%200-11l1-2h1c1%202%202%202%203%201l-1-3c-2-2-4-7-3-9s-2-4-6-5c-6-2-10-6-10-10%201-3%202-4%203-2v1l-1%203%202%202c2%200%202%200%202-2-1-2%200-2%203-2s3%200%202-1c-1-2%200-3%202-1h1l-2-2c-8-3-8-3-2-3%205%200%206%200%207-3%203-5%203-5%203-1-1%204-1%204%201%203l2-3v-1l1-6%201-5%201%202c0%202%200%202%202%200v-8l-1-3-2-1h-2l-3-1c-2%200-4-3-2-3l1-3%203-7%201%201h1l1-2%201%201c0%201%201%202%202%201v-1l-1-2%202%201h2c2-2%202-4%200-5v-1c0-2-3-3-4-2l-1%201-2%201c-1%201-1%201%201%201h2c-1%201-1%201%200%200l2%201h-1l-2%201c0%202-1%202-2%200-2-2-2-2-3-1s-1%201-1-1c-1-2-3-3-3-1l-2%201c-1-1-2%200-3%201l-3%202%201-2%202-1-2-2c-3-2-4-2-7%201l-4%201c-3%201-5%205-3%206v1c-2%200-2%200-1%201l1%202c1%209%202%2011%206%2011%203%200%203%201%201%203-2%201-7-3-7-8-1-5-3-6-4-3l-2%202-1%202-3%204c-1%201-1%201-1-1v-4c-1%200-2%209-1%2010l-1%201c-1-1-1-1-1%202l3%203%201%203-1-1-3-1-3-2c-2-3-2-3-3%201v1l2%201v2h-4l-1%201-2%201-1%201c0-1%200-2-1-1l-1-1%202-1h1c1-2%200-2-1-2-3%200-5%202-4%204h-1c-1-1-1%200-1%202s0%202-1-1c-2-5-4-7-7-6-2%200-3%203-1%205v4c0%202%201%202%206%206l-1%202-2%202-1%203c0%202%200%202%202%201l2-1%202-1h1l1%202%203-4%201-2%202-2%201-1%201%201c0%201%201%202%202%201%202%200%203%202%201%202v3c2%204%202%2010%200%2013l-3%201-1%201c1%201-1%205-2%205l-1-1-1-1-2%201-1%201v-1l-1-2-1%201c0%201-1%202-3%202s-3%200-4%203l-2%203v1c1%200%201%201-1%202-1%201-2%202-1%203%200%202%200%203-2%204l-2%203h4c1-1%201-1%201%201l-1%202-1%205v5l-3%2015%201%201h-1c-2%200-2%200-2%202l-2%206v3l1%202c-1%201%200%204%201%204l1-1%201-1v2l1%201h1l-1%201v1c1%201%202%202%201%203s-1%201-2-1l-1-1-1%201c-1-1-2%200-2%201l1%201v2h-1c-1-1-1-1-1%201l-1%201h-2l-1%204c-1%202-2%202-11%202-10%200-10%200-9-2%201-3%200-4-1-2-2%203-3%202-2%200%200-2%201-3%202-2l1-1c1-1%200-1-2-1l-3%201-1%201-1-1-1-1c-2%200-4%205-3%206%204%202-5%202-81%202l-85-1c-7-6-16-7-18-2h-2l-3%201c-3%202-3%202-4%200l-4-1c-2%201-2%201-1%202l-14%201c-12%200-15%200-14-1%202-2%202-5%200-6-2-2-2-2-1-4v-3l-1-2h-1c-1%201-1%201-3-1s-7-3-5-1l-1%201-1-3c0-2-1-2-3-2-1%200-2%200-1-1%201-3-4-7-6-7-2%201-3%200-3-2%200-3%201-3%203-2l3-1v-3l-2-1h2v-1l1-2%201%201c0%202%2020%200%2027-1%208-3%208-3%203-7-4-3-4-4%200-2%206%203%2011%200%2011-5l1-4c1-1%200-2-3-5-4-3-5-6-3-6l1%201%202%203%202%201h1c1-1%201-1%201%201l2%202%201%201%202%201%201-2h2l1%203%202%202%204%201%206%201%206%202c1%201%205%202%205%200l2-1%202-1c2-2%203-3%203%200h6l9-2-17%205-5%201v2l-1%201v-1l-2-1-4-1c-2%200-2%200-3%202%200%202-2%203-2%200-2-3-3%200-2%204%201%203%201%203%202%201l2-1v1c-1%202-1%206%201%206v6c0%201-2%200-4-3-4-3-6-3-6%200l-5%201-1%202h-7l-1-1-1-2c-1%200-1%204%201%205l3%201c2-1%204%201%204%203-1%202%200%204%203%204l3%202c0%202%202%203%203%201l3-1c2%200%203%200%202%203%200%203%202%202%204-1%202-5%201-7-4-8l-3%201v3c-2%202-5%200-6-4l-1-1h-1v-2h4l3%202h4l2-1h1c2%203%204%202%203-1%200-2%200-3%202-4h2l-1%201v2h1l3-4%201%202s1%202%203%202l2%203c-1%201%203%203%206%202l1%201c-1%202%201%203%204%203v-1l-1-2%203%202h2c0-2%203-1%204%202%201%202%203%203%203%201l2-2c3-1%204-10%201-11v-2c3%200%202-6%200-8l-3-3-1-1c-2%201-4-1-4-3l-2-3c-1-2-1-2%201-3%201-2%204-3%204-1l-1%201v1h2l2-1-1%202c-1%201-1%201%201%201l3-3c1-2%201-2%202-1%202%202%203%203%202%201l1-2%201%201c1%202%206%201%208-1l2-1v4h4l-1-1-1-1v-7l1%202v2c2%200%202%201%202%207%200%203%201%204%203%204l2%202%201%201%201-2%201-4c1-1%202%200%201%201-1%203%202%203%205%201l3-3%201-1-1-2-1-2c1-3-1-7-2-5h-2c-1-1-1-1%201-4%202-4%203-8%202-10s0-7%201-8l2-2%201-4%206-2c4-2%205-2%204%200l-1%201c-2%200-3%205-2%208%201%202-1%207-2%205-1%200-2%205-1%207%200%202%201%202%206%202l3%201h3l1-3c-1-1%200-2%201-4l1-4%202-2%203-2c0-2%205-4%207-3v2l1%202c2%200%202%201%201%203l-1%204c1%202%201%203-1%206-2%202-2%202-3%201%200-2-2-1-1%201h-1l-5-1c-4%200-4%200-3%202%201%201%201%201-1%201s-2%202-1%206l1%201c0-2%200-2%202%200s2%202%201%203l2%201h5c1%201%202%203%201%204-1%202%206%201%209-1%203-4%203-9%200-8-2%200-2%200-1-1l-1-2v-4h-1l-1%201-1-1%202-2v-1l3-7%202%201c1%202%202%201%202-4%202-12%202-20%201-20l-1-1-1-1c-2%200-3-1-1-3s-1-5-5-5c-8-2-22-2-24-1-1%201-4%201-4-1%200-1-3-2-11-2-15-1-21-2-21-3l13%201h21l1-1c1%201%202-2%202-6s-2-6-4-4l-7%201c-7%200-7-3%200-3l4-2%201-1c3%200%202-2%200-3-2-2-2-2-1-3v-2h-4l1-1-1-1-3-2c-1-1-7%201-8%202l-7%203%2013-8%207%201%207%201%203%201%203%202c3%201%204%201%205-1s4%200%203%202l6%203c7%201%207%201%206-1h1c2%202%203%202%202%200h1c1%201%202%201%204-1v-2c-2%200-1-2%200-2%203%201%204-2%203-8-1-13-1-18%201-16l1%202v4l1%203%201%201-1%201-1%201%201%201%202%201%203%201c2%201%202%201%202-1%200-1%200-2-1-1l-1-1%203-1c2%200%202%200%202-2l-1-3h-2c0-1-1-1-1%201-1%202-1%202-1%200%200-1-1-2-2-1-3%200-2-1%201-3%203-3%204-4%202-4l-2-1%202-2c2%200%203-4%201-9s-2-7-1-6l1%202%202%203c1%201%202%202%201%204%200%202%200%202%201%201h2l-1%203c-2%201-3%206-1%206l1%202h1l2-1-2%203c-2%202-2%208%201%208h2c1%200%204-9%203-11l-2-3v-3l-2-7v-4l-1-4-1-1c0-2-5-2-7%200l-3%201%201-3c2%200%202-1%201-1l-1-1c0-2-1-5-4-8l-1-3%204%203%203%204v-6l1-7v-8l1-2c-1-1-7%200-8%201-2%202-5%203-5%202l2-2c2-1%202-1-1-1-5%200-7%201-6%202l-1%201v1h-3l-1-1h-3l-1%201h-2c0-2-1-2-2-2-2%201-6-1-6-2%200-3%204-4%207-2h4c2-3%203-2%202%201%200%204%200%204%204%201%201-1%203-2%204-1v-1h2c2%200%202%200%201-1v-2c-2%200-2%200-1-1l4-1c3%200%208-2%209-6l1-2c2%200-3-5-5-5s-2-1-2-2l-2-2c-1-1-2-2-1-3%201-2%205%200%205%202l2%204c2%201%202%201%202-3l-2-5-1-4c1-1%201-1%202%201l1-10V12l-5-2c-5-2-6-2-7%200-1%201-1%201-2-1l-4-3c-2-1-3-2-2-3%200-2-2-3-5-3-2%201-2%201%200%202l3%202h-3l-3-3c0-2-15-1-15%201v2l3%206-3-2c-2-3-5-4-5-2l2%202c3%202%202%203-1%201l-3-2-4-1h-4l-1-1V3c0-3%200-3-7-3l-8%201h-1c-1-2-55-1-55%201l-1%201-1-1c1-1%200-2-1-2v1l-1%201-1-1a109%20109%200%2000-35%201l1-1c1-1-1-1-5-1-7%200-7%201-3%204s4%205%200%205v2c2%200%202%201%201%201s-1%201%201%202v2l-1%201h4v1h-2v4c2%202%203%204%201%204-1%201-5-8-5-11s-1-2-4%204l-5%206c-2%200-1%202%201%204s6%203%206%201l3%201%202%202h-6c-5-1-5-1-4%201%200%202%200%202-1%201l-2-4-2-1v-3c-1%201-3%200-5-1-3-1-3-1-3%201%200%203%202%204%205%204%204%200%204%201%203%204%200%205-1%205-1%201l-1-3-1%201h-2c-2-1-5%200-11%202-2%201-4%202-5%201l1-3%201%201%205-1c7-2%207-2%204-7l-3-4-1-1v-2c1-1%202%200%203%201h2l4%204%204%202-5-12c-2-2-2-2%200-4%201-2%201-2%202%200l4%202%203%201h-3c-3%200-4%200-1%204%201%201%202%202%203%201l2%201h1l1-3%201-3c1%200%201-1-1-1l-3-1h3c3%200%203%200%202-2-1-1-1-1%201-1%202%201%203%200%200-2l-1-5c0-2-1-2-3-2-3%200-6%203-5%205l-2%202-1-1c0-3-5-5-15-6H0v5m200-3l2%203%2015%205%201-5c0-5-2-7-5-4h-2l-6-1c-6%200-6%200-5%202m52-1l-1%203c-2%201-2%203%200%202%202%200%201%201-1%205-2%203-4%204-2%200%201-2%200-4-1-4l-5%2012%201%201-1%203c-2%205-2%209%200%2012l2%203-1-3%201-2c1%201%203-4%202-7l1-2%202-1%201-2%201-1-1-1c-1%201-4-1-3-1%202-2%206-2%206%200l1%201h3l2%201-2%202-2-1-3%202c-2%204-2%204-1%206%202%202%202%207-1%208v6c-1%202-1%203-1%201s-2-4-4-3l1%203%201%203%201%203%202%205%204%206c3%202%203%202%201%204v2l1%202%202%207V62c2-1%202-8%200-9v-2c1%200%200-2-3-4-3-4-4-7-1-3h2l2-1v3l2%204c3%202%203%203%205%201h3l-2%202c-2%200-2%200%200%202%201%201%202%202%203%201%202%200%202%200%201%201s-1%202%201%204c2%203%201%204-2%200-2-2-2-2-4-1v2l2%201h-5c-2%200-2%201-1%202v1l-1%204c0%204%200%205%202%204l-1%202c-2%202-1%204%202%203l2%201h2l1-2%201-1%201-1%203-4c2-2%202-3%201-4v-3c0-2%202-3%202-1l1%201V54l1-3%202-8%201-3%201-2-1-2-1-1h1c2%200%201-3-1-7-1-2-2-3-3-2l-1-1%201-1%201-1-1-1c-2%201-3-1-2-2%202-3%200-5-2-4-3%201-4%200-2-1%203-1%201-4-2-4-2%200-2%200-1%203%200%203%200%203-2-1l-3-4c-2%200-2-6-1-7V1c-1-2-3-1-6%201-2%202-3%201-1-1%201-1%201-1-1-1s-3%200-2%201m77%206a311%20311%200%2000-3%208c0-7-1-5-2%203l-2-1-1-3v2a115%20115%200%20010%2011l2-1%202-3c1-4%201-5%201-2%200%202%200%202%202%201h1l-1%202-2%203-1%201-1%203-1%205c-1%202-3%2010-3%2016v11c1%201%201%201%202-1%200-2%201-2%205%202%205%204%205%205%206%2011v6c-1%201%203%2010%205%2012%202%200%202%201%202%203l2-2%201-2-1%203c0%202%200%203%201%202%202%200%202%200%201%201l2%203%203%205c2%204%203%204%204-3l1-5-1%206v7h7l6%201c3%201%204%200%205-2l4-3c2%200%203%202%201%207-1%204%201%207%205%207%207%202%208%202%207%204l1%204c3%202%202%205-1%207s-4%206-1%206v5c-1%203-1%203-3%201h-1l1%202%201%203v3c-2%201-2%202-2%204%201%201%200%202-2%203l-2%202-2%202c-3%203-3%205%200%205h2l2%201c2%200%202%200%200-2v-2c2%201%204%200%206-1l3-2%201%203%202%204c1%201%201%201-1%202-2%200-2%200%200%201h-1l-3%201c1%201%200%201-2%201-3%200-7%202-5%202l-2%201h-3c0-2-2-1-2%201h2c-1%202%201%205%203%204v1l1%202%202-1%201-2v1l2%201c1-1%202-1%202%201v11l-5-3c-8-3-9-4-8-5%202-1-1-8-3-9-2%200-4%203-5%207v2c2%200%202%200%201%205v6l3%206c2%202%208%208%2012%2010%202%201%205%200%205-2l2%201c1%201%202%202%203%201l5-2c2%200%203-1%203-6%200-4%200-4-2-2l-2%205c-1%203-2%204-5%201-2-2-2-5%201-6l2-2v-4c1-3%201-3%201-1v5c0%202%200%202%202-1l3-4v-70a4447%204447%200%20010-102V0h-10l-11%201h-1l-4-1-3%201-2%201-2-1-2-1c-2%200-3%201-3%202l-2%202V2c1-2%201-2-9-2l-10%201h-1l-5-1h-5l-1%207M53%207c1%202%200%202-6%203-2%201-2%201%201%201s7%203%207%206l2%201c1-1%203%200%205%201h2l2%202c1%202%201%202%203%201%201-2%200-4-2-4-1%201-2%200-2-1-1-2%200-4%202-4l1-1c0-1%2020-1%2024%201v-1c-1-1-4-2-12-2-9%200-11%200-12-2-2-2-2-2-4-1h-9l-1-1-1%201m166%209l-1%2017c0%2014%201%2015%203%2015l1%201c0%202%204%205%204%203v1c0%202%202%202%203-1%202-3%201-6%200-3-2%202-2%202-2%200-1-2%201-4%203-3l1%205c0%204%200%204%202%202%201-1%202-2%203-1v-1c-2-1-1-2%201-2%201%201%202%200%203-3l2-5-1-1c-1%201-1%201-1-1%201-2-2-8-3-6v2c1%200%201%201-1%202v2l1%202c-1%202-3%203-4%202h-1c0%201-1%202-2%201v-5c1-11%201-14-2-17l-3-2v2l-1%203-1-4c0-2%200-4-2-5l-2-2v2m-90%2045l-1%201-4%203-4%203-1%208c0%205%200%205-2%204-1-1-1-1-1%201l2%203c1%203%202%202%201-1%200-2%200-2%201%200l4%202c3%201%203%201%202%203l1%202h4l8%203c4%200%204%200%204-2l-3-1c-3%200-4-1-2-2h-1l-1-5c1-8%201-12-1-12l-2-5c-1-4-4-8-4-5m99%204l-2%203c-3%203-3%203-2%200%201-4-2-4-4%200-1%203-1%204%201%203%202%200%202%200%200%204l-1%206-1%202v2c1%202%205%200%203-1-1-1-1-2%201-2l3-6%203-6c2-5%202-6%200-6s-2%200-1%201m4%202v4l-2%202%202%202v3l1%202%202-1h1c1%201%202%201%205-2%204-4%204-5%200-8s-5-2-5%201c0%202%200%202-1%200l-1-2-1-1v-2l-1%202M75%2089l-1%203-1%201-1%201-1%202h1l2%206c-1%202-1%202-4%201l-3%201c1%202%200%202-2%202-3%200-3%200-1-1s2-1%200-1c-4%201-6-1-6-4l-1%201-1%201c0-2%200-2-2%200l-1%202-4-3-4-5-1-1-3-1h-2l2%202c2%202%202%202%200%201-3-1-2%200%205%205l7%206%202%202c2-1%202%2010-1%2021s-3%2011-5%2010v-2c2-1%202-2-1-4-3-3-3-3-3%202%200%206%200%207-3%207-2%200-2%200%200%202l4%202%202%202h1c3-4%2028%201%2026%205%200%202-5%202-8%201l-5-2-3-2c0-2-2-1-2%201l-5%204-2%203%202%201%201%204h-1l-3-1c-2%200-2%201%201%202l4%203c0%201%205%204%208%204%202%200%202%203%201%205l-1%201%202-1c2-2%206-3%209-1h2l-2-2c-4-1-6-3-4-5s4-8%203-10l2-2c2%200%203-1%202-2-1-3%201-1%203%203%202%203%202%204%203%203l1-1%202-1-2-1h-2c0-2%208%200%2011%202%201%201%202%202%203%201l2-1c2%200%201-1-2-3l-4-4-3-1h-6c-2%201-6-2-6-3%201-1-1-4-2-7-3-5-4-8-2-8v-2c-2-2-2-2-2%201v7l1%202c3%203%201%204-6%202l-8-2-4-2%201-2v-1l1-3%202-11%202-10%203%202%202%201%202-1c1-1%203-1%209%202v-1c-3-3-1-5%204-5%203%200%204%200%203-1s-1-1%202-1c7%202%2014%202%2013%201l-4-1c-5%200-17-2-16-3h-1l-2-1c0-2%201-2%204-2h5l-4-1c-3%200-4%200-4-3l1-2%201-1c-1-1%200-2%201-2l1-1c0-2-2-2-2-1-1%201-1%200-1-3v-4l-1%203m174%205c-3%204-4%209-2%208l2%201-1%201-2%201h-1c-1-3-4-1-4%201%201%204%203%206%205%205h3c0%203%204%201%204-2l1-3v-6c0-1%200-2-2-2v-5c-1-1-3%200-3%201m63%2033l-2%204c0%203%201%206%202%205l1%201%201%203%201-2v-3l1%202%201%205v5c-1%203-1%203-1%201%200-3-5-7-6-6l2%204%208%2012-2-1-2-1%201%204c0%202%203%201%204-1l1-1v1l1%201%201-1%201-2v-5l-2-3v4l-1%203-2-11c0-6-1-10-2-11l-3-5c0-4-1-4-3-2m-37%207c-6%204-7%208-2%207%202-1%202-1%201%201-3%202-3%205%200%203l-2%204-2%203%203%205c1%204%203%206%204%205l1%201-1%201v1c1%201%2013-1%2013-2h8l-2%201c-2%200-2%201-2%203v3l-1-3c-1-2-2-3-4-2l-7%201c-4%201-4%201-3%203%200%203%201%204%202%202h1c1%201%201%202-1%202s-3%200-4-3l-1-3-8%202-7%202%201%201-2%201-4%202c-2%202-2%203%202%204%202%201%207-3%205-4s-1-2%202-1c2%200%202%201%201%202l-1%203v3c0%202-1%203-3%203l-2%202v1c-1-2-2-1-2%201l-2%204-2%201h-1l-1%202v16c0%205%201%207%203%209l3%203%205-3%205-2%204-2%202-1%203-1c2-2%202-2-1-3h2c4%200%205%200%2010-4l6-4h2l2-1-2-2-1-1h-1l-3%201v-1l2-3%201-1%203-1-1-1h-2l-1-1c1-1%200-1-1-1l-5-3c-3-3-5-3-7-3s-2-4%201-6%204-3%204%200l1%201c1%200%202%201%202%203l3%202%203-1-1-1v-3h1l1%201v-3h2l-1-2c-2-2-1-6%201-5l2%201c2-1%202-5%201-5v-7c0-3%200-3-3-3l-4-2h1c4%202%205%201%205-6l-1-5-2%201%201-2c1%200%202-12%200-12l-1%202c0%201%200%202-1%201-1-2-2-1-2%202%200%202%200%202-1%200%200-3-2-2-2%201%200%202%200%202-1%200-1-3-1-3-1-1s0%202-1%200v-2l-5%203-5%202v-1l3-7c0-1-3%200-5%202m-54%207c-2%203-3%206-1%206l-1%203-3%205%202%205c1%200%203-5%202-6l1-2h2c1-1%202%200%202%201l1%201%205-7c-1-1-5%201-5%203v-5c0-7-1-8-5-4m83%202v2l1%202-2-1a870%20870%200%20010%2015c2%200%202-1%201-1-2-2-1-3%201-3l3%202%204%201c3%200%203%200%201-2v-3c3%200%202-3-3-8-5-7-4-6-6-4m-55%206c-7%201-8%202-8%207%200%203%200%204-1%203-1-2-1-2-4%203l-2%203v-2c4-7%205-14%203-14s-5%203-4%205l-2%202-3%201-3%202c-3%201-3%201-3%205%201%204%201%205%203%205l2-1h2c2%200%202%200%201-2%200-2%200-2%203%200%204%203%209%203%209%200%200-2%201-2%203-2%201%200%202-3%201-8%200-5%200-5%201-4h2l2-1-1%202v1l1%205c-1%203%200%204%201%204l1%201-1%201-1%203v2l3-2c0-2%201-11%203-14l1-3-2-2h-7m-63%203l-2%201h-1l-5%201-4-1%201%202c2%201%202%202%201%202-2%200%201%204%203%205h3c1-1%202-1%204%201h-1c-3%200-2%201%201%203s4%204%200%202h-2l-2%201-1-2c1-1%200-2-2-3l-3-1-1-2c-2-1-2-1-2%202%200%205%201%209%203%209h3l9%201h6c-2-2-2-2%200-1%202%200%202%200%201-2-3-3-2-4%200-1%202%201%203%202%205%201%203%200%203-1%200-3-2-1-3-1-3-8-1-6-9-11-11-7m147%2015v2l5%201%201%201-3%201h-1c-2-2-3-1-2%201l1%202h1l1%201%201%201h4l6%202c3%201%203%201%202-1-1-1-1-1%201-1%202%201%204-1%204-3l-2-1c-1%201-3%200-4-1l-3-2c-3%201-3%200-2-2%202-1%202-1%200-1s-3%200-2%201c0%202-3%201-6%200l-2-1m-123%2030l-2%202c-2%200-3%205-5%2018a51551%2051551%200%20000%2017l2%204c0%202%202%202%203%201h2c1%200%201%201-1%202v1l3%202c2%207%206%203%205-5v-5h-1l-9-1%202-2%206-11%201-2v-3c-2-1-3%200-3%202s0%202-1-1l-2-3-1-1%201-1c3%200%204-4%202-6v-2c1-1%201-4-1-6h-1m165%2025l2%203c2%202%202%202%201%203-2%202-2%202-1%203%202%202%205%202%206%200h2c2%201%204-1%204-4%201-3-5-4-6-2v-1l-2-1-3-1c-2-3-3-2-3%200m-152%2016h-3l-1%202-1%205c-1%203-1%203%201%203l1%202c-1%202%203%205%204%204l-1-2v-2c3-2%205-1%203%201-2%201-2%201%200%201l3-2v-2l-1-5-1-4-2-1h-2m-173%205c0%202%200%202-2%201l-9%203-1%201-2-1-1-1-1%201-1%202-1-1-1-1h-5c-4%200-4%202%200%203l1%201c-2%201-2%201%200%204%201%203%203%204%204%202h2c0%201%205-1%205-3s3-5%204-4l1-1%202-1%201%201-1%201-2%201-2%201c-2%201-2%201%200%202%202%202%203%202%203-1l1-1%201%201%202%201c2%200%204-4%203-6v-6c-1-1-1-1-1%201m340%2020l-2%202-2%201c0%202-3%204-5%203h-1v2l-1-2h-1c-3%202-2%203%200%203l-1%201c-3%202-4%201-4-2%201-3%201-3-2-3-2%200-2%200-1-1l2-1%201-2-2-2-1%201-1%201-2%201v2l2%205%203%204v3c1%201%200%201-1%201l-2-1-1-1v3l-2%202-1%203h12c7%200%2012%200%2011-1-2-1-4-3-4-5s0-2%201-1l2%201-1-2-1-2v-1l-1%201h-2c-1-2%200-2%203-6%203-3%204-4%205-3l1%202v-2h1l2-1-1-1-1-2-1-2-1%202m-78%201l1%201v3l-2%201-1%202v2l1%202-3-1c-2-1-2-1-2%201v2l-1%201%202%201c2-1%203%200%201%202v1l-2%203v1c2%200%204-1%204-3s0-2%201-1h8c1%200%204-2%204-4l-2-3c-2-3-3-4%200-4h1c0-2-4-5-6-5l-2-1c0-2-2-3-2-1m20%203v1c1%200%202%201%201%202l1%202c2-2%203%200%201%205l-4%204-1%201c0%204%200%204%206%204%204%200%206-1%206-2l3-1c2%200%202%200%201%201a1750%201750%200%20017%200l-4-2c-2%200-2%200-1-1%202%200%201-2-1-4s-2-2-1-3v-1h-1l-1-3c-1-1-1-1%201-1s2%200%201-1l-1-1-1-1-1%202h-1c-1-1-2%200-3%202l-2%201-1-3-2-2c0-1-2-1-2%201M24%20322c0%206%200%208%202%208l1-5v-5l2%203c2%205%203%205%205%200l2-4v5c0%205%200%206%202%206l1-8c0-7%200-8-2-8l-4%205-1%205-2-4-2-5-2-1c-2%200-2%201-2%208m34-7c-2%201-1%2015%201%2015l1-3c0-3%200-3%202-3%205%200%208-5%204-8-2-2-7-3-8-1m-37%2047l-2%201c-2%200-4%204-4%205l2-1c2-2%202-2%205-1l4%202-2-2c-3-2-2-3%203-3%203%200%204%200%203%201v1l1%201c0%201%201%202%203%201%203%200%203%200%202%202l-5%201h-6l-2%201%201%201-2%201c-2%200-4%201-4%203h1l2-1c2%200%202%200%201%201-2%200-1%202%201%202v-1h6c8%200%208%200%205%203h-5c-2-2-5-2-5%200l1%201c1-1%204%201%203%203%200%202%206-2%208-4%202-3%203-2%204%202l1%202c0-2%202-3%202%200l-2%202c-3%201-5%204-3%204l1-1h1l2-2h3l2%201-1-2c-1%200-1-1%201-2%201-1%201-1-1-1-1%201-2%201-2-1l-2-2h-1l2-2c2%200%206%203%205%204l3%201c2%200%203%200%202-1l-2-2v-2c-1%201-3%200-4-1l-3-1%202-2%201-1c-3%200-2-6%201-7%203%200%2010-3%208-3l-3-1c-2-2-30-2-32%200m45-1c-2%201-3%202-2%205l-1%202-6%202-3%201-2%201h4l3-1-1%205%201%202h1l2-3v-1c-2%201-2%200-2-2s4-3%205-1c0%201%201%202%202%201v-1c-2-1-2-3%200-3v-1c-2%200-3-1%200-3%201-1%201-1%201%201%200%203%206%202%2012%200%203-2%204-2%205-1h6l-1-3c0-1-7%200-11%202l-6%202c-4%200-4%200-4-2%201-2-1-3-3-2m54%200v1c3%200%202%202%200%204l-2%201h2c2-1%202%200%202%204l-1%204v5c0%203%200%203-2%202v1c0%203%200%203-2%203l-5%201c-1%200-2%200-2-2h-1c-1%202-1%202-11%202-12%200-9%201%204%201l12%201h1l3-1c3-1%202%202-2%203l-1%201c2%200%203%200%204%202l1%203v-3c0-1%200-2%202-1l1-1%202-2c2%200%202%200%201-1v-1c6-1%2012%200%2011%201h2c1%200%201%201-1%202l-2%203%204-2%202-3%203%202%202%201-1-2-1-1c0-2%201-2%205-1h6l-5-1c-5-2-5-2-5-6%200-2%200-3-1-2l-1%201v-1l-1-1c-2%200-2-1-1-3v-5l2-4c4-4%202-5-9-6l-9%201%201%201h3l-3%201c-2%200-2%200-1%201v2c-3%202-3%203-3-1l1-3h1c0-2-4-3-5-1m17%205l-2%202v2l2%201-1%203-2%202c1-1%202%200%202%201s-1%202-2%201l-1-1h-4l1-1%201-1c-1-1-2%200-4%202l-2%204v1c-2%202-1%204%201%204l5-1c2%200%206-1%208-3l1-9v-9l-3%202'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/2b5897d3dd0bc9b258bd2274fa0ade58/6050d/mcp-cover.png"}}},{"id":"205d0f58-c767-5ce1-8525-cfc99a7ee765","slug":"/vector-databases-from-layman-to-professional","secret":false,"title":"Vector Databases From Layman to Professional","author":"Luke Celitan","date":"November 26th, 2025","dateForSEO":"2025-11-26T00:00:00.000Z","timeToRead":7,"excerpt":"Vector Databases and the Modern Data Stack: From Layman to Professional (With Netflix Case Study and Lakehouse Integration) 1. Introduction…","subscription":true,"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Vector Databases From Layman to Professional\",\n  \"excerpt\": null,\n  \"date\": \"2025-11-26T00:00:00.000Z\",\n  \"hero\": \"vectrordb-cover.png\",\n  \"author\": \"Luke Celitan\",\n  \"category\": \"Post\",\n  \"tech\": [\"Rust\", \"VectorDatabase\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"vector-databases-and-the-modern-data-stack-from-layman-to-professional\"\n  }, \"Vector Databases and the Modern Data Stack: From Layman to Professional\"), mdx(\"p\", null, mdx(\"em\", {\n    parentName: \"p\"\n  }, \"(With Netflix Case Study and Lakehouse Integration)\")), mdx(\"h2\", {\n    \"id\": \"1-introduction-to-vector-databases\"\n  }, \"1. Introduction to Vector Databases\"), mdx(\"h3\", {\n    \"id\": \"why-we-need-advanced-search-in-the-ai-era\"\n  }, \"Why We Need Advanced Search in the AI Era\"), mdx(\"p\", null, \"Every day, organizations generate huge volumes of \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"unstructured data\"), \"\\u2014text, images, audio, video, chat logs, and sensor readings. Traditional relational or keyword-based search systems fail to grasp intent and semantics.  \"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"When someone searches \\u201Csports cars,\\u201D the expectation is logical\\u2014results should include Ferraris and Porsches, not just any text containing the words \\u201Csports\\u201D or \\u201Ccars.\\u201D\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Vector databases\"), \" make such semantics-aware retrieval possible. They convert data into high-dimensional numeric vectors (embeddings), enabling systems that truly \\u201Cunderstand\\u201D context. These embeddings power \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"semantic search\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"recommendation systems\"), \", and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"retrieval-augmented generation (RAG)\"), \" for large language models (LLMs).\"), mdx(\"h3\", {\n    \"id\": \"from-relational-to-vector-databases\"\n  }, \"From Relational to Vector Databases\"), mdx(\"p\", null, \"Relational databases handle structured, predictable data well but struggle with multimedia and context-rich content.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"When AI systems began encoding non-text data (images, audio) into continuous vector spaces, traditional indexing methods (\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"like *B-trees\"), \") reached their natural limits.  \"), mdx(\"p\", null, \"*\", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"B\\u2011trees are a way for databases to keep information in order so that searches, inserts, and deletes happen quickly \\u2014 kind of like a super\\u2011efficient alphabetized filing cabinet.\\nThey\\u2019re designed for structured, exact\\u2011match data (like numbers, names, or IDs), not for fuzzy, high\\u2011dimensional relationships like AI embeddings. B\\u2011trees are great when you need to find an exact number or value (e.g., \\u201Cuser ID 105\\u201D).\\nBut AI embeddings live in thousands of numerical dimensions, where we care about closeness (semantic similarity), not exact matches. A B\\u2011tree can\\u2019t easily navigate that kind of continuous, high\\u2011dimensional space \\u2014 which is why vector indexes (like HNSW or IVF) replaced them for semantic search.\")), mdx(\"p\", null, \"Enter \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"vector databases\"), \"\\u2014storage engines built for \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"similarity search\"), \" across embedding spaces.\"), mdx(\"p\", null, \"Embedding models transform multimodal data into vectors positioned such that \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"semantic similarity\"), \" equals \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"geometric closeness\"), \". This simple but powerful idea revolutionized how we retrieve and connect information.\"), mdx(\"h2\", {\n    \"id\": \"2-understanding-embeddings\"\n  }, \"2. Understanding Embeddings\"), mdx(WordEmbeddingCanvas, {\n    mdxType: \"WordEmbeddingCanvas\"\n  }), mdx(\"h3\", {\n    \"id\": \"whats-a-vector-embedding\"\n  }, \"What\\u2019s a Vector Embedding?\"), mdx(\"p\", null, \"Embeddings are numerical arrays that capture the conceptual meaning of data.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Example\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Numeric Vector (simplified)\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\u201Cman\\u201D\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"[-0.30, 0.85, 0.45]\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\u201Cwoman\\u201D\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"[0.30, 0.48, 0.29]\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\u201Cking\\u201D\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"[0.20, 0.72, 0.35]\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"\\u201Cqueen\\u201D\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"[0.89, 0.41, 0.20]\")))), mdx(\"p\", null, \"Because both words are semantically similar, their vectors are close together in multidimensional space.\"), mdx(\"h3\", {\n    \"id\": \"how-embedding-models-work\"\n  }, \"How Embedding Models Work\"), mdx(\"p\", null, \"Embedding models encode text, image, or audio into consistent vector spaces.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"These are central to AI assistants, search engines, and contextual retrieval pipelines.\"), mdx(\"p\", null, \"Core process:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Data is chunked and converted into embeddings.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Stored with metadata in a vector database.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"User queries are embedded and compared using similarity search.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Relevant vectors are retrieved and used as enriched input for LLMs.\")), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Category\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Common Implementations\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Embedding Models\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"OpenAI, SentenceTransformers, Cohere\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Frameworks\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"LangChain, LlamaIndex\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Vector DBs\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Milvus, Pinecone, Weaviate\")))), mdx(\"h3\", {\n    \"id\": \"similarity-metrics\"\n  }, \"Similarity Metrics\"), mdx(\"p\", null, \"To measure semantic closeness, vector databases rely on mathematical distance metrics.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Metric\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Common Use\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cosine Similarity\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Measures angle between vectors\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Text data\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Euclidean Distance\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Straight-line distance\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Dense vectors\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Manhattan Distance\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Sum of absolute differences\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Sparse or high-dimensional data\")))), mdx(\"p\", null, \"Example of Rust language implementation of cosine similarity*\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-rust\"\n  }, \"fn cosine_similarity(a: &Vec<f32>, b: &Vec<f32>) -> f32 {\\n    let dot: f32 = a.iter().zip(b.iter()).map(|(x, y)| x * y).sum();\\n    let norm_a = (a.iter().map(|x| x.powi(2)).sum::<f32>()).sqrt();\\n    let norm_b = (b.iter().map(|x| x.powi(2)).sum::<f32>()).sqrt();\\n    dot / (norm_a * norm_b)\\n}\\n\")), mdx(\"h2\", {\n    \"id\": \"3-architecture--operation\"\n  }, \"3. Architecture & Operation\"), mdx(\"h3\", {\n    \"id\": \"typical-vector-database-architecture\"\n  }, \"Typical Vector Database Architecture\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"+---------------------------------------------+\\n| Client/API                                  |\\n|---------------------------------------------|\\n| Service Layer   \\u2192 Auth, routing, logging     |\\n| Query Layer     \\u2192 Parsing, optimization      |\\n| Index Layer     \\u2192 ANN, graph-based search    |\\n| Storage Layer   \\u2192 Metadata + embeddings      |\\n+---------------------------------------------+\\n\")), mdx(\"p\", null, \"Each layer plays a role\\u2014clients send queries, the service layer handles auth and routing, the query layer optimizes search execution, and the index layer retrieves relevant vectors efficiently.\"), mdx(\"h3\", {\n    \"id\": \"32-query-workflow\"\n  }, \"3.2 Query Workflow\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"User sends an input (text or image).  \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Embedding model converts it into a numeric vector.  \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The index retrieves top-K similar vectors.  \"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Matching documents are returned or summarized through an AI model.\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"struct VectorDB {\\n    vectors: Vec<(Vec<f32>, String)>,\\n}\\n\\nimpl VectorDB {\\n    fn search(&self, query: &Vec<f32>, top_k: usize) -> Vec<String> {\\n        let mut ranked: Vec<(f32, &String)> = self.vectors\\n            .iter()\\n            .map(|(vec, name)| (cosine_similarity(query, vec), name))\\n            .collect();\\n        ranked.sort_by(|a, b| b.0.partial_cmp(&a.0).unwrap());\\n        ranked.into_iter().take(top_k).map(|(_, n)| n.clone()).collect()\\n    }\\n}\\n\")), mdx(\"h3\", {\n    \"id\": \"33-gpu-acceleration\"\n  }, \"3.3 GPU Acceleration\"), mdx(\"p\", null, \"NVIDIA\\u2019s \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"CAGRA\"), \" algorithm, integrated via the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"RAPIDS cuVS\"), \" library, accelerates vector search using thousands of GPU cores.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Index building that once took days can now complete in hours while sustaining real-time inference throughput.\"), mdx(\"h2\", {\n    \"id\": \"4-benefits-of-vector-databases\"\n  }, \"4. Benefits of Vector Databases\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Advantage\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Semantic Search\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Understands meaning, not just keywords\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Scalability\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Handles billions of embeddings efficiently\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"GPU Acceleration\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Enables low-latency, high-QPS workloads\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Hybrid Search\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Combines dense vector and keyword search\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Fault Tolerance\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Replication and partitioning ensure resilience\")))), mdx(\"h2\", {\n    \"id\": \"5-popular-use-cases\"\n  }, \"5. Popular Use Cases\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Natural Language Processing:\"), \" Contextual document retrieval, legal search  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Computer Vision:\"), \" Image similarity, content moderation  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Recommendation Systems:\"), \" \\u201CUsers who liked this also liked\\u2026\\u201D logic  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Scientific Research:\"), \" Genomic sequence comparison  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Chatbots:\"), \" Retrieval-augmented, grounded responses  \")), mdx(\"h2\", {\n    \"id\": \"6-indexing--search-algorithms\"\n  }, \"6. Indexing & Search Algorithms\"), mdx(\"h3\", {\n    \"id\": \"graph-based-indexing\"\n  }, \"Graph-Based Indexing\"), mdx(\"p\", null, \"Graph-based methods like \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"HNSW\"), \" (Hierarchical Navigable Small World) and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"CAGRA\"), \" (GPU-parallelized) efficiently locate nearest neighbors through layered traversal graphs.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"Query \\u2192 Node 1 \\u2192 Node 2/3 ... \\u2192 Closest Neighbors\\n\")), mdx(\"h3\", {\n    \"id\": \"quantization-and-compression\"\n  }, \"Quantization and Compression\"), mdx(\"p\", null, \"Quantization and compression are techniques that shrink the size of stored embeddings while keeping them usable for similarity search. The core idea is to replace full\\u2011precision floating\\u2011point numbers with smaller, discrete representations \\u2014 a bit like rounding \\u2014 but done in a far smarter, statistically aware way.  \"), mdx(\"p\", null, \"Instead of simple decimal rounding (e.g., \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"0.12345 \\u2192 0.12\"), \"), vector databases use learned mappings or codebooks so the reduced\\u2011precision vectors preserve their original semantic relationships. This greatly reduces \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"memory footprint\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"disk usage\"), \", and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"search latency\"), \", often with negligible loss in accuracy.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Method\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Benefit\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Product Quantization (PQ)\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Splits each vector into smaller subspaces (chunks) and replaces each chunk with the index of its nearest centroid from a trained \", mdx(\"em\", {\n    parentName: \"td\"\n  }, \"codebook\"), \". Only these compact codes are stored, allowing rapid lookup via centroid tables.\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Dramatically cuts storage needs and speeds up approximate nearest\\u2011neighbor searches on massive datasets.\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Scalar Quantization (SQ)\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Compresses each numeric element of a vector into an integer (often 8\\u2011bit), using scaling and mapping rules to assign the closest available discrete value. Keeps the relationships between vectors close to their original form while storing far less data.\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Reduces memory by up to 75% per vector with minimal impact on similarity accuracy.\")))), mdx(\"p\", null, \"By applying PQ or SQ, systems effectively perform \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"precision\\u2011reduction with meaning preservation\"), \", making billion\\u2011scale vector collections practical for real\\u2011time AI workloads.\"), mdx(\"h3\", {\n    \"id\": \"clustering-and-organization\"\n  }, \"Clustering and Organization\"), mdx(\"p\", null, \"Clustering groups similar vectors to accelerate search speed using methods like \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"K-means\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"DBSCAN\"), \", and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"HDBSCAN\"), \".\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Clusters act as semantic \\u201Cneighborhoods\\u201D for efficient query routing.\"), mdx(\"h2\", {\n    \"id\": \"7-advanced-features\"\n  }, \"7. Advanced Features\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Capability\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Function\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Filter queries\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Combine vector similarity with metadata filters\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Hybrid search\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Merge semantic (dense) and keyword (sparse) results\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Multimodal search\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cross-domain matching\\u2014text \\u2194 image\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Query expansion\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Include synonyms and related terms automatically\")))), mdx(\"h2\", {\n    \"id\": \"8-scaling--optimization\"\n  }, \"8. Scaling & Optimization\"), mdx(\"h3\", {\n    \"id\": \"gpu-acceleration\"\n  }, \"GPU Acceleration\"), mdx(\"p\", null, \"Using \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"RAPIDS cuVS\"), \" and CUDA-enabled infrastructure lowers query latency dramatically. Parallel tensor-core computations power dense retrieval at scale.\"), mdx(\"h3\", {\n    \"id\": \"scaling-strategies\"\n  }, \"Scaling Strategies\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Strategy\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Vertical Scaling\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Add more powerful GPUs/CPUs\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Horizontal Scaling\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Distribute data and load across nodes\")))), mdx(\"h3\", {\n    \"id\": \"efficiency-tactics\"\n  }, \"Efficiency Tactics\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Use quantization and compression  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Cache frequent queries  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Employ disk-based indexing to control memory cost  \")), mdx(\"h2\", {\n    \"id\": \"9-netflix-and-beyond-real-world-impact\"\n  }, \"9. Netflix and Beyond: Real-World Impact\"), mdx(\"p\", null, \"As AI applications become more sophisticated, the demands on \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"vector databases\"), \" are rising fast. Modern systems must balance \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"performance, accuracy, scalability, and cost-effectiveness\"), \" while integrating seamlessly with the broader AI ecosystem. For enterprises deploying AI at production scale, understanding and leveraging vector database technology is not just technical\\u2014it\\u2019s strategic.  \"), mdx(\"h3\", {\n    \"id\": \"netflix-studio-search-a-federated-vector-powered-architecture\"\n  }, \"Netflix Studio Search: A Federated Vector-Powered Architecture\"), mdx(\"p\", null, \"Over the past few years, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Netflix Content Engineering\"), \" transitioned many of its services toward a \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"federated GraphQL platform\"), \". This approach allows separate domain teams to independently build and operate their own \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Domain Graph Services (DGS)\"), \" while connecting their data under a single unified schema.  \"), mdx(\"p\", null, \"Imagine three main entities in this federated graph:  \"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Entity\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Description\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Movie\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Represents titles (shows, films, shorts, etc.)\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Production\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Tracks the studio processes behind each film\\u2014vendors, shooting locations, logistics\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, mdx(\"strong\", {\n    parentName: \"td\"\n  }, \"Talent\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Represents the people\\u2014actors, directors, crew\\u2014associated with productions\")))), mdx(\"p\", null, \"A developer might run a query such as: \\u201CFind all movies currently in production where \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Ryan Reynolds\"), \" is acting.\\u201D Each piece of that data lives in separate DGSs and must be fetched, filtered, and correlatively linked across service boundaries.  \"), mdx(\"p\", null, \"To make large-scale, cross-domain searching feasible, Netflix built \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Studio Search\"), \", a platform capable of indexing and semantically searching portions of the federated graph. Originally built on \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Elasticsearch\"), \", Studio Search combines metadata events, domain schemas, and federated GraphQL definitions to construct an intelligent subgraph index that supports contextual queries.  \"), mdx(\"h3\", {\n    \"id\": \"the-role-of-vector-databases-in-studio-search\"\n  }, \"The Role of Vector Databases in Studio Search\"), mdx(\"p\", null, \"While the early prototypes of Studio Search relied heavily on text-based search (via Elasticsearch analyzers), newer iterations explore the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"integration of vector representations\"), \" for semantic indexing. By embedding entities like titles, talent names, or production descriptions as numerical vectors, Netflix can improve lookup accuracy and enable fuzzy, \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"meaning-based retrieval\"), \".  \"), mdx(\"p\", null, \"This step moves Studio Search closer to the architectures seen in modern \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"vector databases (Milvus, LanceDB, Weaviate)\"), \" \\u2014 turning the graph itself into a \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"semantic knowledge space\"), \". Rather than matching literal keywords, the system compares meaning, context, and relatedness between entities across domains.  \"), mdx(\"p\", null, \"Embedding pipelines at Netflix employ \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Change Data Capture (CDC)\"), \" streams and GraphQL event triggers to update the index. Each time an entity changes (e.g., a production update, talent addition), an event triggers a data re-fetch, and the embedding vectors for affected documents are recalculated and replaced in near real-time.  \"), mdx(\"h3\", {\n    \"id\": \"architecture-overview\"\n  }, \"Architecture Overview\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"Studio Apps \\u2192 Data Mesh (Kafka Streams) \\u2192 GraphQL Processor \\u2192 Federated Gateway \\u2192 Vector/Elasticsearch Sink \\u2192 Search Index  \\n\")), mdx(\"p\", null, \"Netflix combines stream processing (\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Apache Flink\"), \") with its federated GraphQL queries to continuously enrich subgraph data and feed it into the indexing layer. As adoption increased, the team automated index provisioning using configuration-driven pipelines defined through simple YAML schemas \\u2014 dramatically simplifying scaling.  \"), mdx(\"h3\", {\n    \"id\": \"reverse-lookups-and-relationship-awareness\"\n  }, \"Reverse Lookups and Relationship Awareness\"), mdx(\"p\", null, \"When related entities such as Production or Talent change, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"reverse lookups\"), \" ensure freshness by querying for all affected Movies and triggering updates on those vectors. This mirrors techniques used in \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"vector search graphs\"), \", where connections between vectors are dynamically recalculated to reflect real-world data evolution.  \"), mdx(\"p\", null, \"By leveraging their existing \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Data Mesh\"), \", Netflix implemented systems capable of precise, high-throughput updates that maintain semantic consistency among millions of indexed entities.  \"), mdx(\"h3\", {\n    \"id\": \"querying-with-studio-search-dsl\"\n  }, \"Querying with Studio Search DSL\"), mdx(\"p\", null, \"Netflix engineered its own custom \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"search DSL\"), \", similar to SQL, that abstracts the complexity of constructing Elasticsearch (or vector database) queries. Complex filters such as:  \"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"(genre == 'comedy') AND (country ANY ['FR', 'SP'])\\n\")), mdx(\"p\", null, \"translate directly into optimized search expressions. This DSL is extendable enough to support hybrid search scenarios\\u2014combining classical filtering logic with semantic similarity queries based on embedded vectors.  \"), mdx(\"h3\", {\n    \"id\": \"security-hydration-and-federation\"\n  }, \"Security, Hydration, and Federation\"), mdx(\"p\", null, \"To keep data secure, Studio Search applies \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u201Clate-binding\\u201D security\"), \", evaluating policies at query time and embedding user access rules directly into search filters. Results are \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"hydrated\"), \" using federation\\u2014retrieving related data from other DGS endpoints dynamically, similar to how vector databases enrich query results using stored metadata.  \"), mdx(\"h3\", {\n    \"id\": \"from-text-search-to-semantic-search\"\n  }, \"From Text Search to Semantic Search\"), mdx(\"p\", null, \"While Elasticsearch remains useful for structured and text queries, Netflix\\u2019s move toward \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"vector representations\"), \" bridges the gap between keyword and semantic search. Embeddings allow \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"contextual discovery\"), \" across the federated content universe, making queries such as \\u201Cfind upbeat comedies featuring actors similar to Ryan Reynolds\\u201D computationally feasible.  \"), mdx(\"p\", null, \"In this configuration, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"vector databases\"), \" serve as the backbone behind semantic enrichment, powering multimodal retrieval across text, metadata, and audiovisual embeddings.  \"), mdx(\"h3\", {\n    \"id\": \"broader-implications\"\n  }, \"Broader Implications\"), mdx(\"p\", null, \"Netflix\\u2019s evolution mirrors a broader industry trend: integrating \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"vector indexing\"), \" within analytic and search frameworks.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Companies across domains now increasingly use hybrid setups \\u2014 \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Iceberg for analytical data\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"LanceDB or Milvus for vectors\"), \", unified via shared APIs and query layers. Netflix\\u2019s federated model embodies this hybrid direction, merging \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"GraphQL, search pipelines, and vector spaces\"), \" into one cohesive architecture.  \"), mdx(\"p\", null, \"As AI-driven content operations expand, systems like Studio Search demonstrate how \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"vector databases\"), \" can directly support complex, federated ecosystems \\u2014 connecting billions of entities, maintaining freshness, enforcing domain policies, and enabling true contextual discovery across distributed data graphs.  \"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Netflix\\u2019s Studio Search isn\\u2019t just an indexing solution; it\\u2019s a living, vector-aware data mesh that proves semantic intelligence can scale to enterprise levels\\u2014bridging federation, search, and machine reasoning in one unified pipeline.\")), mdx(\"h2\", {\n    \"id\": \"10-vector-dbs-meet-the-lakehouse-iceberg-and-lance-integration\"\n  }, \"10. Vector DBs Meet the Lakehouse: Iceberg and Lance Integration\"), mdx(\"p\", null, \"As vector databases merge with modern analytics stacks, the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"lakehouse\"), \" model\\u2014blending data lake flexibility with warehouse efficiency\\u2014plays a vital role.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Apache Iceberg\"), \" revolutionized structured data management with schema evolution and ACID transactions, while \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Lance\"), \" represents the next leap forward for AI, offering vector indexing and multimodal data support natively.\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Layer\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Iceberg Role\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Lance Role\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"File Format\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Uses Parquet, ORC, Avro\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Lance\\u2019s own high-performance columnar format\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Table Format\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Three-level metadata (table \\u2192 manifest list \\u2192 manifest)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Single-level manifests and fragments\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Catalog Spec\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"REST catalog spec\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Lance Namespace (Arrow Flight gRPC coming)\")))), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Lance advantages for AI/ML\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Fast random access\"), \" for dense vector lookups (10k+ QPS under 50\\u202Fms)  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Native multimodal support:\"), \" blobs and embeddings stored together  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Zero-cost schema evolution:\"), \" add columns without full rewrites  \")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Iceberg strengths\")), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Mature ecosystem integration\"), \" with Spark, Flink, Trino  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Optimized for OLAP workloads\"), \" via partition pruning  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Centralized observability\"), \" and lineage tracking through catalogs  \")), mdx(\"h3\", {\n    \"id\": \"unified-data-strategy\"\n  }, \"Unified Data Strategy\"), mdx(\"p\", null, \"Enterprises like \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Netflix\"), \" now combine both formats:  \"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Iceberg\"), \" for BI and analytics  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Lance (and LanceDB)\"), \" for AI, ML, and multimodal workloads\", mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Together, they bridge structured analytics and semantic intelligence.\")), mdx(\"h2\", {\n    \"id\": \"11-choosing-and-evaluating-a-vector-database\"\n  }, \"11. Choosing and Evaluating a Vector Database\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Criterion\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Consideration\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Performance\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Recall, QPS under load\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Security\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"IAM, encryption, isolation\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Data Type Support\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Text, embeddings, images, audio\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cost\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"GPU, RAM, and disk trade-offs\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Ecosystem\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Integration with AI frameworks like Ray or LangChain\")))), mdx(\"p\", null, \"Popular vendors: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Milvus/Zilliz Cloud\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Pinecone\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Weaviate\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Elasticsearch (hybrid mode)\"), \".\"), mdx(\"h2\", {\n    \"id\": \"12-looking-ahead\"\n  }, \"12. Looking Ahead\"), mdx(\"p\", null, \"Upcoming shifts shaping the vector database space:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"LLM grounding\"), \" using domain-specific embeddings  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Cross-cloud deployments\"), \" for resilient AI search  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Declarative infrastructure\"), \" for automatic provisioning  \"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Native multimodal capabilities\"), \" as a default standard  \")), mdx(\"h2\", {\n    \"id\": \"13-conclusion\"\n  }, \"13. Conclusion\"), mdx(\"p\", null, \"Vector databases represent a definitive shift\\u2014from keyword to \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"meaning\"), \"-oriented retrieval.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"When combined with lakehouse technologies like Iceberg and Lance, they unify \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"analytics, AI, and multimodal data\"), \" in one architecture.  \"), mdx(\"p\", null, \"From Netflix\\u2019s creative indexing to NVIDIA\\u2019s GPU-accelerated systems, vector databases are rapidly becoming the connective tissue of modern AI data infrastructure\\u2014powering the next generation of \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"context-aware, intelligent computing\"), \".\"));\n}\n;\nMDXContent.isMDXComponent = true;","tech":["Rust","VectorDatabase"],"category":"Post","appDescription":null,"hero":{"full":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVQ4y1VUW0xcVRS9M/fO484M83CGh0w7lOExPDo8E55psS20qZWHwFCSltL5KAOkpcgAgpREIUYLQ6GiUZSYWEONSSEQq7GxnwbGEivVah+2MZhU6nf9X+6zR2j82Dnn7rPOOnvvtfeVJEmCMIvFAqfTie1vrVa7s9cpOmg0GvbpdDro9XpeFUXmVfjNZnPsTnFxMZKTk5Geloaxt8YQDAaRkZGxQyaADoeDCRVFgclkgsFgQGJiArzeVNrrYbfb2S8wkohKVVUkxMfjyOHDaD/Vjp5zPWhqbILRYKSLifygiESYqhr58p49e9Da2gq/38+PGo3GGOF2JElJSajaX0WkRzA39zGePfsHfX1hJiwoKECa14uUFA+ys7JQVFQEkZnI5nT7aWSRT6dTYlmJ6Gw2G0eRn5ePrs4ujI6O4u7dX/HkyV8oKSmB253MxG63GxXl5cjJzmbSQHMzXj56FGVlZVwWJhQFtlqtfKG7uxuLi4t8MDExiadP/0YgEEBcnAWe3bs5TYFTKPWcnBzk5eVR1ClwuZxcVyaUZRk+nw8tLS1YW4siGo3i6tWrWF5exsLCAiYnJ1FfV8f1rampQVFhEeNFlCLihISE54IIwl3uXdwGItX19XXc+PYGka1g/pN5XL/+NTY27uDc2bOoqa5G6/Hj6Ax1su3NzeXobDYrq79DKNLQaCR+/eZ3N7G0tERRRdDW1oaVlRUWp6Ghget8vuc8Ji5OoLurmwlFhC6X63+9KYncheylpSWIRCKIEFmoI4SM9HRc+ewKtra2UEcpi9crKyqJ8CL6w/1ITU1lQXyZmXwmomRCE6lssZjh8XgopVbuw1eOHeOa1dbWcmt0hkKoPnQIbuoE4Q+eDqKclN2/bx9HGA6HMT4+/lxls9nELzXU13NqotChMx0kQCGD2k6epLMGrmFZaRkOU3nGx8aQ5cuEjTqknFrp4IEDNHpURzGPRqOBD0XjKqR6HM117/kezExPM7CyogLhvj4SrhMOGjNrXBxecNih0nRYKJjt4RA8kqShcTLboFrsKK+sQma2H7JORWaWH4NDoxgZHcO1pa8wM/shZL3KFzWyASbCC5zYSxJNCfFoFNpPNSp4L6DD5SYtrvV48GnQgalXZcydMOGjE2Z80fUiohPlmG+3kV+L6SbCBvT4PJSEmWYF040ypho0uESrMOn+sIQ/Ih78+UE+HkW8ePROIjYv+7D5fj42Z/14fMmH+xdj/oeEZbsg4d4QrSP/2YXne+l2Px2+68XD2RLcm8zC/Ut+tgczBXgwnYffyf947iU8uFyI3wj3y9spEHd+GojZj2EJG7RuDMZM+r5Xi9U+GdEBFeuvq/hhyIq1ARPWwnpE+w1Y69fTt4rooAm3hq34+c143B5ScWtAx3ZnxIzV1zRY7ZXYpHgb/SztRtiMErxuJ9wuM30bsCveQnsLXHE6OC0yEggnMKda6vDN8pc429GOeJsRVWWFSHKYYDfJZPTH3l91ALl783akj6mog0E1Q29QSUkD/V0MkBU9KSnz2fAbF3Am1BXDahW27bv/Aiw3swgbR44+AAAAAElFTkSuQmCC","aspectRatio":1,"src":"/static/a9512cd26a37e7e29a9581aa9bf2553f/a1946/vectrordb-cover.png","srcSet":"/static/a9512cd26a37e7e29a9581aa9bf2553f/5b37e/vectrordb-cover.png 236w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/49058/vectrordb-cover.png 472w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/a1946/vectrordb-cover.png 944w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/6050d/vectrordb-cover.png 1200w","srcWebp":"/static/a9512cd26a37e7e29a9581aa9bf2553f/99fbb/vectrordb-cover.webp","srcSetWebp":"/static/a9512cd26a37e7e29a9581aa9bf2553f/77392/vectrordb-cover.webp 236w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/1f177/vectrordb-cover.webp 472w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/99fbb/vectrordb-cover.webp 944w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/9000d/vectrordb-cover.webp 1200w","sizes":"(max-width: 944px) 100vw, 944px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%2076v77l2-1c4%200%208%203%208%207l-1%203-1%201c2%201-2%204-5%204H0v119h37c37%200%2037%200%2034-2s-4-4-4-7c1-3%200-3-15-3H38l16-1%2015-1c0-2%205-3%207-2h1c2-2%209-1%2010%201%202%204%200%2010-3%2012l-3%203h51l46-1c-10-2-24-7-30-12-21-13-38-37-31-44l2-1h2c1-2%202-2%202-1%201%201%201%200%201-1%200-3%200-3%201-2%202%202%203%201%202-1v-1h4l4%201h1l-1-2-1-1h3l1-2%201-2%201%203v2l3%205a40%2040%200%20007%2011l8%208%205%205%201%201%204%201c-1%201%203%203%206%203%201-1%202%200%202%201h3l1%201%202%201h1l1-2a103%20103%200%200018-3l3-1-3-3c-4-5-4-6%201-2l4%204%205-3%209-8a302%20302%200%20018-10c0-4%204-7%205-4%201%201%201%200%201-1-1-3%204-4%205-1l-1%201-1%201%202%202v3h4l1%201h1l1%201%201-1h1c2%201-2%205-15%2019l-32%2032-2%203h17v-7l1-7v14h63l6-5%205-5v10h87l1-4%201-3-1%203v4h21V0H0v76m54-54a114%20114%200%20011%2013l1-1%201%201%201%201%202%202h2v-2l1-1%201%201%202%202%203%203h2l1%201h2c1%201%204%202%208%201%202%200%202%200%201%201v1c1-1%202%200%203%201l1%202v-2l1-1h5v1c-1%200-2%201-1%202l1%201%201-1c0-2%201-2%203-1%201%201%201%202-1%202-1%201-2%201-1%202h3v2l-1%202h1l2-1h2c2%202%201%203-2%202l-2%201v1c-2%200-2%201-1%202h3c0%202-2%203-4%202-2%200-1%202%200%202%201%201%201%201%200%200l-1%201-1%201%201%203h1v-2l1%201%202%201c2%201%202%201%201%202h-3c0%202%201%204%202%203v2l1%201h1l-1%201-2-1h-1v2c2%201%202%202-1%201v1c2%201%202%202%201%204v2l-22%2023-22%2022v10l-1%209-1%201%201%201%201%2019%201%2027v8h3l3-1h2c1%201%202%202%203%201l2%201%201%201%201-1%202-1%202%201%202%201c1-1%201-1%200%200l2%201h2v-1h1l1-1h1l4%201c4-1%204-1%201%204-1%203-3%204-5%204l-3%202-1%202c-5%200-6%200-5%202l-1%202c-1-1-2%200-3%202l-3%202c-1-1-3%202-2%202l-4%201v1l-1%201c-3-2-5%201-5%206v7c-1%204%200%205%206%205%205%200%206%200%206-2%200-3%204-10%208-17%2011-14%2030-24%2050-24h5l-6-3-7-5c-4-5-1-18%206-30%203-5%208-6%207-2h1v1c-1%202-1%202%201%202%201-1%202-1%202%201l2%201%201%201v1c1-1%201-1%200%200l2%204%203%201h1v10l-3%2012v6h47v-77h-7c-6%201-7%200-7-1A124%20124%200%200057%2018h-4l1%204m263%2024a295%20295%200%200018%2017v-2l2%202%202%201c1%200-5-7-14-15l-16-16%2012%2013%2013%2014c0%201-8-6-17-16l-17-16%2017%2018m-22%200l11%2013%2010%2011-10-9c-5-6-10-10-10-9l9%209%207%209-7-6-7-6%206%206%204%206c-3-1-2%200%201%203l3%201h2v2c-1%200%201%203%205%206%205%205%207%206%202%201l-1-3-2-4c-6-6-5-6%201%200l6%205c1%200-1-3-4-5l-4-5c0-1%204%202%208%207l9%208a287%20287%200%2000-39-40m18%2012l12%2012-12-10-11-11%2017%2018a260%20260%200%200013%2011l-6-7%209%208%208%208-6-8c-5-4-8-8-7-8l10%209%209%209-7-9-8-9%202%201h1l-3-4-2-3%201-2c-1%200-2%200-3%202l-2%202-5-6c-4-3-6-6-5-6l-1-2-2-1h-2l6%208%208%208c0%201-6-4-12-11l-12-11%2010%2012m-13%209c3%204%203%205-1%202l-2-1v2a584%20584%200%2000-21%201h20l9%209%209%209-7-9-8-9%2014%2014%2014%2013-12-13-12-14%2014%2013a390%20390%200%2000-17-17M107%2091c-7%202-13%2011-12%2018%204%2021%2035%2018%2033-3-1-11-11-18-21-15m129%2036l1%203%201-1h1l1-1h1l5%201c3%200%206%203%207%207l2%204-4%205c-5%205-8%205-13%201l-4-6c0-2-1-3-2-3v-1l-1-1-1%201-3%203c-2%203-2%203%200%203l2-1-2%202c-1%202-2%203-3%202l-1%201%201%201%202%202%202%202h-6l2%201v1l-1%203%202-1h1v2l2-4c0-2%202-3%204-3v1l-1%202-1%201v1c1%201%201%201-1%201l-2%203h1c1-1%201-1%201%201l1%202%201-2v-1c3%201%202%203-5%209l-6%208%204-2c2-2%203-1%201%202-1%201%200%202%201%203l1%203c1%204%201%205%203%205s2%200%201%201l-1%202h1c1-1%201-1%201%201v2l1%202%201-1h1v2l2%201h4l1%201v1l1-1c0-1%201-2%203-2%201%200%202%200%201%201l1%201c1-1%201%200%201%201l-1%201h-2l1%201%201%204v3l1-1%201-1v1l3%201h3l11%201c12%200%2013-1%2013-11l2-5%201-2c1-12%201-12%204-12%205-1%205-2%201-2l-4%201h-1v-4l-1-2v-2l-2-9c-2-7-2-8-16-22l-14-14h-7c-6%200-7%201-7%202m73%2051h-3v37l1-18%201-11c0%205%200%207%201%206h1l1%202v2c1%201%201%200%201-3%200-4-1-5-2-5l-1-2%201-4%201-3c1%200%202%204%202%2011l1%2011v-12c-1-12-1-12-5-11m6%2023v24l1-19%201-19v38l1-18v-18l1%2020%201%2021v-43l1%2021%201%2021v-43l1%2019%201%2020v-23l1-23c0-1-1-2-5-2h-5v24m37%202c-7%205-9%2012-7%2020%205%2010%2019%2012%2026%203%2011-13-5-32-19-23m-164%207v1c-2%201-2%2010-2%2022%200%204%205%204%2012%201%209-5%2015-14%2015-22v-3h-13l-12%201m89%205l-6%204c-2%202-3%206-1%206l2%206%202%202%201%202%201%201c1%201%203%202%203%204%202%203%2011%202%2014-2%2010-11-3-27-16-23M0%20378v19h4c2-1%203%200%203%201h1l1-1h1c2-2%2010-3%209-1l3%201%204%201%202%201h5l122%201h120l-20-20-19-20h-76l-79%201c-2%200-3%201-3%202%200%202%200%202-1%200l-1-3v6l-1-3-1-3v6l-1-3-1-3v3c0%202%200%202-1%200l-1-1c0%201-1%202-2%201-2%200-2%200%200-1%201-1%201-1-1-1l-2%201h-6l-1%201c-1-2-3-2-31-3H0v18m292%202v20h108v-40h-66l-1%203c0%203-5%206-8%206-4%200-10-3-10-6s-2-3-13-3h-10v20'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"regular":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVQ4y1VUW0xcVRS9M/fO484M83CGh0w7lOExPDo8E55psS20qZWHwFCSltL5KAOkpcgAgpREIUYLQ6GiUZSYWEONSSEQq7GxnwbGEivVah+2MZhU6nf9X+6zR2j82Dnn7rPOOnvvtfeVJEmCMIvFAqfTie1vrVa7s9cpOmg0GvbpdDro9XpeFUXmVfjNZnPsTnFxMZKTk5Geloaxt8YQDAaRkZGxQyaADoeDCRVFgclkgsFgQGJiArzeVNrrYbfb2S8wkohKVVUkxMfjyOHDaD/Vjp5zPWhqbILRYKSLifygiESYqhr58p49e9Da2gq/38+PGo3GGOF2JElJSajaX0WkRzA39zGePfsHfX1hJiwoKECa14uUFA+ys7JQVFQEkZnI5nT7aWSRT6dTYlmJ6Gw2G0eRn5ePrs4ujI6O4u7dX/HkyV8oKSmB253MxG63GxXl5cjJzmbSQHMzXj56FGVlZVwWJhQFtlqtfKG7uxuLi4t8MDExiadP/0YgEEBcnAWe3bs5TYFTKPWcnBzk5eVR1ClwuZxcVyaUZRk+nw8tLS1YW4siGo3i6tWrWF5exsLCAiYnJ1FfV8f1rampQVFhEeNFlCLihISE54IIwl3uXdwGItX19XXc+PYGka1g/pN5XL/+NTY27uDc2bOoqa5G6/Hj6Ax1su3NzeXobDYrq79DKNLQaCR+/eZ3N7G0tERRRdDW1oaVlRUWp6Ghget8vuc8Ji5OoLurmwlFhC6X63+9KYncheylpSWIRCKIEFmoI4SM9HRc+ewKtra2UEcpi9crKyqJ8CL6w/1ITU1lQXyZmXwmomRCE6lssZjh8XgopVbuw1eOHeOa1dbWcmt0hkKoPnQIbuoE4Q+eDqKclN2/bx9HGA6HMT4+/lxls9nELzXU13NqotChMx0kQCGD2k6epLMGrmFZaRkOU3nGx8aQ5cuEjTqknFrp4IEDNHpURzGPRqOBD0XjKqR6HM117/kezExPM7CyogLhvj4SrhMOGjNrXBxecNih0nRYKJjt4RA8kqShcTLboFrsKK+sQma2H7JORWaWH4NDoxgZHcO1pa8wM/shZL3KFzWyASbCC5zYSxJNCfFoFNpPNSp4L6DD5SYtrvV48GnQgalXZcydMOGjE2Z80fUiohPlmG+3kV+L6SbCBvT4PJSEmWYF040ypho0uESrMOn+sIQ/Ih78+UE+HkW8ePROIjYv+7D5fj42Z/14fMmH+xdj/oeEZbsg4d4QrSP/2YXne+l2Px2+68XD2RLcm8zC/Ut+tgczBXgwnYffyf947iU8uFyI3wj3y9spEHd+GojZj2EJG7RuDMZM+r5Xi9U+GdEBFeuvq/hhyIq1ARPWwnpE+w1Y69fTt4rooAm3hq34+c143B5ScWtAx3ZnxIzV1zRY7ZXYpHgb/SztRtiMErxuJ9wuM30bsCveQnsLXHE6OC0yEggnMKda6vDN8pc429GOeJsRVWWFSHKYYDfJZPTH3l91ALl783akj6mog0E1Q29QSUkD/V0MkBU9KSnz2fAbF3Am1BXDahW27bv/Aiw3swgbR44+AAAAAElFTkSuQmCC","aspectRatio":1,"src":"/static/a9512cd26a37e7e29a9581aa9bf2553f/3ddd4/vectrordb-cover.png","srcSet":"/static/a9512cd26a37e7e29a9581aa9bf2553f/078a8/vectrordb-cover.png 163w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/e56da/vectrordb-cover.png 327w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/3ddd4/vectrordb-cover.png 653w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/c5cc7/vectrordb-cover.png 980w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/6050d/vectrordb-cover.png 1200w","srcWebp":"/static/a9512cd26a37e7e29a9581aa9bf2553f/0acdf/vectrordb-cover.webp","srcSetWebp":"/static/a9512cd26a37e7e29a9581aa9bf2553f/ac59e/vectrordb-cover.webp 163w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/7660b/vectrordb-cover.webp 327w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/0acdf/vectrordb-cover.webp 653w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/75470/vectrordb-cover.webp 980w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/9000d/vectrordb-cover.webp 1200w","sizes":"(max-width: 653px) 100vw, 653px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%2076v77l2-1c4%200%208%203%208%207l-1%203-1%201c2%201-2%204-5%204H0v119h37c37%200%2037%200%2034-2s-4-4-4-7c1-3%200-3-15-3H38l16-1%2015-1c0-2%205-3%207-2h1c2-2%209-1%2010%201%202%204%200%2010-3%2012l-3%203h51l46-1c-10-2-24-7-30-12-21-13-38-37-31-44l2-1h2c1-2%202-2%202-1%201%201%201%200%201-1%200-3%200-3%201-2%202%202%203%201%202-1v-1h4l4%201h1l-1-2-1-1h3l1-2%201-2%201%203v2l3%205a40%2040%200%20007%2011l8%208%205%205%201%201%204%201c-1%201%203%203%206%203%201-1%202%200%202%201h3l1%201%202%201h1l1-2a103%20103%200%200018-3l3-1-3-3c-4-5-4-6%201-2l4%204%205-3%209-8a302%20302%200%20018-10c0-4%204-7%205-4%201%201%201%200%201-1-1-3%204-4%205-1l-1%201-1%201%202%202v3h4l1%201h1l1%201%201-1h1c2%201-2%205-15%2019l-32%2032-2%203h17v-7l1-7v14h63l6-5%205-5v10h87l1-4%201-3-1%203v4h21V0H0v76m54-54a114%20114%200%20011%2013l1-1%201%201%201%201%202%202h2v-2l1-1%201%201%202%202%203%203h2l1%201h2c1%201%204%202%208%201%202%200%202%200%201%201v1c1-1%202%200%203%201l1%202v-2l1-1h5v1c-1%200-2%201-1%202l1%201%201-1c0-2%201-2%203-1%201%201%201%202-1%202-1%201-2%201-1%202h3v2l-1%202h1l2-1h2c2%202%201%203-2%202l-2%201v1c-2%200-2%201-1%202h3c0%202-2%203-4%202-2%200-1%202%200%202%201%201%201%201%200%200l-1%201-1%201%201%203h1v-2l1%201%202%201c2%201%202%201%201%202h-3c0%202%201%204%202%203v2l1%201h1l-1%201-2-1h-1v2c2%201%202%202-1%201v1c2%201%202%202%201%204v2l-22%2023-22%2022v10l-1%209-1%201%201%201%201%2019%201%2027v8h3l3-1h2c1%201%202%202%203%201l2%201%201%201%201-1%202-1%202%201%202%201c1-1%201-1%200%200l2%201h2v-1h1l1-1h1l4%201c4-1%204-1%201%204-1%203-3%204-5%204l-3%202-1%202c-5%200-6%200-5%202l-1%202c-1-1-2%200-3%202l-3%202c-1-1-3%202-2%202l-4%201v1l-1%201c-3-2-5%201-5%206v7c-1%204%200%205%206%205%205%200%206%200%206-2%200-3%204-10%208-17%2011-14%2030-24%2050-24h5l-6-3-7-5c-4-5-1-18%206-30%203-5%208-6%207-2h1v1c-1%202-1%202%201%202%201-1%202-1%202%201l2%201%201%201v1c1-1%201-1%200%200l2%204%203%201h1v10l-3%2012v6h47v-77h-7c-6%201-7%200-7-1A124%20124%200%200057%2018h-4l1%204m263%2024a295%20295%200%200018%2017v-2l2%202%202%201c1%200-5-7-14-15l-16-16%2012%2013%2013%2014c0%201-8-6-17-16l-17-16%2017%2018m-22%200l11%2013%2010%2011-10-9c-5-6-10-10-10-9l9%209%207%209-7-6-7-6%206%206%204%206c-3-1-2%200%201%203l3%201h2v2c-1%200%201%203%205%206%205%205%207%206%202%201l-1-3-2-4c-6-6-5-6%201%200l6%205c1%200-1-3-4-5l-4-5c0-1%204%202%208%207l9%208a287%20287%200%2000-39-40m18%2012l12%2012-12-10-11-11%2017%2018a260%20260%200%200013%2011l-6-7%209%208%208%208-6-8c-5-4-8-8-7-8l10%209%209%209-7-9-8-9%202%201h1l-3-4-2-3%201-2c-1%200-2%200-3%202l-2%202-5-6c-4-3-6-6-5-6l-1-2-2-1h-2l6%208%208%208c0%201-6-4-12-11l-12-11%2010%2012m-13%209c3%204%203%205-1%202l-2-1v2a584%20584%200%2000-21%201h20l9%209%209%209-7-9-8-9%2014%2014%2014%2013-12-13-12-14%2014%2013a390%20390%200%2000-17-17M107%2091c-7%202-13%2011-12%2018%204%2021%2035%2018%2033-3-1-11-11-18-21-15m129%2036l1%203%201-1h1l1-1h1l5%201c3%200%206%203%207%207l2%204-4%205c-5%205-8%205-13%201l-4-6c0-2-1-3-2-3v-1l-1-1-1%201-3%203c-2%203-2%203%200%203l2-1-2%202c-1%202-2%203-3%202l-1%201%201%201%202%202%202%202h-6l2%201v1l-1%203%202-1h1v2l2-4c0-2%202-3%204-3v1l-1%202-1%201v1c1%201%201%201-1%201l-2%203h1c1-1%201-1%201%201l1%202%201-2v-1c3%201%202%203-5%209l-6%208%204-2c2-2%203-1%201%202-1%201%200%202%201%203l1%203c1%204%201%205%203%205s2%200%201%201l-1%202h1c1-1%201-1%201%201v2l1%202%201-1h1v2l2%201h4l1%201v1l1-1c0-1%201-2%203-2%201%200%202%200%201%201l1%201c1-1%201%200%201%201l-1%201h-2l1%201%201%204v3l1-1%201-1v1l3%201h3l11%201c12%200%2013-1%2013-11l2-5%201-2c1-12%201-12%204-12%205-1%205-2%201-2l-4%201h-1v-4l-1-2v-2l-2-9c-2-7-2-8-16-22l-14-14h-7c-6%200-7%201-7%202m73%2051h-3v37l1-18%201-11c0%205%200%207%201%206h1l1%202v2c1%201%201%200%201-3%200-4-1-5-2-5l-1-2%201-4%201-3c1%200%202%204%202%2011l1%2011v-12c-1-12-1-12-5-11m6%2023v24l1-19%201-19v38l1-18v-18l1%2020%201%2021v-43l1%2021%201%2021v-43l1%2019%201%2020v-23l1-23c0-1-1-2-5-2h-5v24m37%202c-7%205-9%2012-7%2020%205%2010%2019%2012%2026%203%2011-13-5-32-19-23m-164%207v1c-2%201-2%2010-2%2022%200%204%205%204%2012%201%209-5%2015-14%2015-22v-3h-13l-12%201m89%205l-6%204c-2%202-3%206-1%206l2%206%202%202%201%202%201%201c1%201%203%202%203%204%202%203%2011%202%2014-2%2010-11-3-27-16-23M0%20378v19h4c2-1%203%200%203%201h1l1-1h1c2-2%2010-3%209-1l3%201%204%201%202%201h5l122%201h120l-20-20-19-20h-76l-79%201c-2%200-3%201-3%202%200%202%200%202-1%200l-1-3v6l-1-3-1-3v6l-1-3-1-3v3c0%202%200%202-1%200l-1-1c0%201-1%202-2%201-2%200-2%200%200-1%201-1%201-1-1-1l-2%201h-6l-1%201c-1-2-3-2-31-3H0v18m292%202v20h108v-40h-66l-1%203c0%203-5%206-8%206-4%200-10-3-10-6s-2-3-13-3h-10v20'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"narrow":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVQ4y1VUW0xcVRS9M/fO484M83CGh0w7lOExPDo8E55psS20qZWHwFCSltL5KAOkpcgAgpREIUYLQ6GiUZSYWEONSSEQq7GxnwbGEivVah+2MZhU6nf9X+6zR2j82Dnn7rPOOnvvtfeVJEmCMIvFAqfTie1vrVa7s9cpOmg0GvbpdDro9XpeFUXmVfjNZnPsTnFxMZKTk5Geloaxt8YQDAaRkZGxQyaADoeDCRVFgclkgsFgQGJiArzeVNrrYbfb2S8wkohKVVUkxMfjyOHDaD/Vjp5zPWhqbILRYKSLifygiESYqhr58p49e9Da2gq/38+PGo3GGOF2JElJSajaX0WkRzA39zGePfsHfX1hJiwoKECa14uUFA+ys7JQVFQEkZnI5nT7aWSRT6dTYlmJ6Gw2G0eRn5ePrs4ujI6O4u7dX/HkyV8oKSmB253MxG63GxXl5cjJzmbSQHMzXj56FGVlZVwWJhQFtlqtfKG7uxuLi4t8MDExiadP/0YgEEBcnAWe3bs5TYFTKPWcnBzk5eVR1ClwuZxcVyaUZRk+nw8tLS1YW4siGo3i6tWrWF5exsLCAiYnJ1FfV8f1rampQVFhEeNFlCLihISE54IIwl3uXdwGItX19XXc+PYGka1g/pN5XL/+NTY27uDc2bOoqa5G6/Hj6Ax1su3NzeXobDYrq79DKNLQaCR+/eZ3N7G0tERRRdDW1oaVlRUWp6Ghget8vuc8Ji5OoLurmwlFhC6X63+9KYncheylpSWIRCKIEFmoI4SM9HRc+ewKtra2UEcpi9crKyqJ8CL6w/1ITU1lQXyZmXwmomRCE6lssZjh8XgopVbuw1eOHeOa1dbWcmt0hkKoPnQIbuoE4Q+eDqKclN2/bx9HGA6HMT4+/lxls9nELzXU13NqotChMx0kQCGD2k6epLMGrmFZaRkOU3nGx8aQ5cuEjTqknFrp4IEDNHpURzGPRqOBD0XjKqR6HM117/kezExPM7CyogLhvj4SrhMOGjNrXBxecNih0nRYKJjt4RA8kqShcTLboFrsKK+sQma2H7JORWaWH4NDoxgZHcO1pa8wM/shZL3KFzWyASbCC5zYSxJNCfFoFNpPNSp4L6DD5SYtrvV48GnQgalXZcydMOGjE2Z80fUiohPlmG+3kV+L6SbCBvT4PJSEmWYF040ypho0uESrMOn+sIQ/Ih78+UE+HkW8ePROIjYv+7D5fj42Z/14fMmH+xdj/oeEZbsg4d4QrSP/2YXne+l2Px2+68XD2RLcm8zC/Ut+tgczBXgwnYffyf947iU8uFyI3wj3y9spEHd+GojZj2EJG7RuDMZM+r5Xi9U+GdEBFeuvq/hhyIq1ARPWwnpE+w1Y69fTt4rooAm3hq34+c143B5ScWtAx3ZnxIzV1zRY7ZXYpHgb/SztRtiMErxuJ9wuM30bsCveQnsLXHE6OC0yEggnMKda6vDN8pc429GOeJsRVWWFSHKYYDfJZPTH3l91ALl783akj6mog0E1Q29QSUkD/V0MkBU9KSnz2fAbF3Am1BXDahW27bv/Aiw3swgbR44+AAAAAElFTkSuQmCC","aspectRatio":1,"src":"/static/a9512cd26a37e7e29a9581aa9bf2553f/502b1/vectrordb-cover.png","srcSet":"/static/a9512cd26a37e7e29a9581aa9bf2553f/f2e6d/vectrordb-cover.png 114w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/4ddba/vectrordb-cover.png 229w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/502b1/vectrordb-cover.png 457w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/7ddc2/vectrordb-cover.png 686w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/435bf/vectrordb-cover.png 914w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/6050d/vectrordb-cover.png 1200w","srcWebp":"/static/a9512cd26a37e7e29a9581aa9bf2553f/15384/vectrordb-cover.webp","srcSetWebp":"/static/a9512cd26a37e7e29a9581aa9bf2553f/31fce/vectrordb-cover.webp 114w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/e3e25/vectrordb-cover.webp 229w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/15384/vectrordb-cover.webp 457w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/0258d/vectrordb-cover.webp 686w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/64ea2/vectrordb-cover.webp 914w,\n/static/a9512cd26a37e7e29a9581aa9bf2553f/9000d/vectrordb-cover.webp 1200w","sizes":"(max-width: 457px) 100vw, 457px","tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%2076v77l2-1c4%200%208%203%208%207l-1%203-1%201c2%201-2%204-5%204H0v119h37c37%200%2037%200%2034-2s-4-4-4-7c1-3%200-3-15-3H38l16-1%2015-1c0-2%205-3%207-2h1c2-2%209-1%2010%201%202%204%200%2010-3%2012l-3%203h51l46-1c-10-2-24-7-30-12-21-13-38-37-31-44l2-1h2c1-2%202-2%202-1%201%201%201%200%201-1%200-3%200-3%201-2%202%202%203%201%202-1v-1h4l4%201h1l-1-2-1-1h3l1-2%201-2%201%203v2l3%205a40%2040%200%20007%2011l8%208%205%205%201%201%204%201c-1%201%203%203%206%203%201-1%202%200%202%201h3l1%201%202%201h1l1-2a103%20103%200%200018-3l3-1-3-3c-4-5-4-6%201-2l4%204%205-3%209-8a302%20302%200%20018-10c0-4%204-7%205-4%201%201%201%200%201-1-1-3%204-4%205-1l-1%201-1%201%202%202v3h4l1%201h1l1%201%201-1h1c2%201-2%205-15%2019l-32%2032-2%203h17v-7l1-7v14h63l6-5%205-5v10h87l1-4%201-3-1%203v4h21V0H0v76m54-54a114%20114%200%20011%2013l1-1%201%201%201%201%202%202h2v-2l1-1%201%201%202%202%203%203h2l1%201h2c1%201%204%202%208%201%202%200%202%200%201%201v1c1-1%202%200%203%201l1%202v-2l1-1h5v1c-1%200-2%201-1%202l1%201%201-1c0-2%201-2%203-1%201%201%201%202-1%202-1%201-2%201-1%202h3v2l-1%202h1l2-1h2c2%202%201%203-2%202l-2%201v1c-2%200-2%201-1%202h3c0%202-2%203-4%202-2%200-1%202%200%202%201%201%201%201%200%200l-1%201-1%201%201%203h1v-2l1%201%202%201c2%201%202%201%201%202h-3c0%202%201%204%202%203v2l1%201h1l-1%201-2-1h-1v2c2%201%202%202-1%201v1c2%201%202%202%201%204v2l-22%2023-22%2022v10l-1%209-1%201%201%201%201%2019%201%2027v8h3l3-1h2c1%201%202%202%203%201l2%201%201%201%201-1%202-1%202%201%202%201c1-1%201-1%200%200l2%201h2v-1h1l1-1h1l4%201c4-1%204-1%201%204-1%203-3%204-5%204l-3%202-1%202c-5%200-6%200-5%202l-1%202c-1-1-2%200-3%202l-3%202c-1-1-3%202-2%202l-4%201v1l-1%201c-3-2-5%201-5%206v7c-1%204%200%205%206%205%205%200%206%200%206-2%200-3%204-10%208-17%2011-14%2030-24%2050-24h5l-6-3-7-5c-4-5-1-18%206-30%203-5%208-6%207-2h1v1c-1%202-1%202%201%202%201-1%202-1%202%201l2%201%201%201v1c1-1%201-1%200%200l2%204%203%201h1v10l-3%2012v6h47v-77h-7c-6%201-7%200-7-1A124%20124%200%200057%2018h-4l1%204m263%2024a295%20295%200%200018%2017v-2l2%202%202%201c1%200-5-7-14-15l-16-16%2012%2013%2013%2014c0%201-8-6-17-16l-17-16%2017%2018m-22%200l11%2013%2010%2011-10-9c-5-6-10-10-10-9l9%209%207%209-7-6-7-6%206%206%204%206c-3-1-2%200%201%203l3%201h2v2c-1%200%201%203%205%206%205%205%207%206%202%201l-1-3-2-4c-6-6-5-6%201%200l6%205c1%200-1-3-4-5l-4-5c0-1%204%202%208%207l9%208a287%20287%200%2000-39-40m18%2012l12%2012-12-10-11-11%2017%2018a260%20260%200%200013%2011l-6-7%209%208%208%208-6-8c-5-4-8-8-7-8l10%209%209%209-7-9-8-9%202%201h1l-3-4-2-3%201-2c-1%200-2%200-3%202l-2%202-5-6c-4-3-6-6-5-6l-1-2-2-1h-2l6%208%208%208c0%201-6-4-12-11l-12-11%2010%2012m-13%209c3%204%203%205-1%202l-2-1v2a584%20584%200%2000-21%201h20l9%209%209%209-7-9-8-9%2014%2014%2014%2013-12-13-12-14%2014%2013a390%20390%200%2000-17-17M107%2091c-7%202-13%2011-12%2018%204%2021%2035%2018%2033-3-1-11-11-18-21-15m129%2036l1%203%201-1h1l1-1h1l5%201c3%200%206%203%207%207l2%204-4%205c-5%205-8%205-13%201l-4-6c0-2-1-3-2-3v-1l-1-1-1%201-3%203c-2%203-2%203%200%203l2-1-2%202c-1%202-2%203-3%202l-1%201%201%201%202%202%202%202h-6l2%201v1l-1%203%202-1h1v2l2-4c0-2%202-3%204-3v1l-1%202-1%201v1c1%201%201%201-1%201l-2%203h1c1-1%201-1%201%201l1%202%201-2v-1c3%201%202%203-5%209l-6%208%204-2c2-2%203-1%201%202-1%201%200%202%201%203l1%203c1%204%201%205%203%205s2%200%201%201l-1%202h1c1-1%201-1%201%201v2l1%202%201-1h1v2l2%201h4l1%201v1l1-1c0-1%201-2%203-2%201%200%202%200%201%201l1%201c1-1%201%200%201%201l-1%201h-2l1%201%201%204v3l1-1%201-1v1l3%201h3l11%201c12%200%2013-1%2013-11l2-5%201-2c1-12%201-12%204-12%205-1%205-2%201-2l-4%201h-1v-4l-1-2v-2l-2-9c-2-7-2-8-16-22l-14-14h-7c-6%200-7%201-7%202m73%2051h-3v37l1-18%201-11c0%205%200%207%201%206h1l1%202v2c1%201%201%200%201-3%200-4-1-5-2-5l-1-2%201-4%201-3c1%200%202%204%202%2011l1%2011v-12c-1-12-1-12-5-11m6%2023v24l1-19%201-19v38l1-18v-18l1%2020%201%2021v-43l1%2021%201%2021v-43l1%2019%201%2020v-23l1-23c0-1-1-2-5-2h-5v24m37%202c-7%205-9%2012-7%2020%205%2010%2019%2012%2026%203%2011-13-5-32-19-23m-164%207v1c-2%201-2%2010-2%2022%200%204%205%204%2012%201%209-5%2015-14%2015-22v-3h-13l-12%201m89%205l-6%204c-2%202-3%206-1%206l2%206%202%202%201%202%201%201c1%201%203%202%203%204%202%203%2011%202%2014-2%2010-11-3-27-16-23M0%20378v19h4c2-1%203%200%203%201h1l1-1h1c2-2%2010-3%209-1l3%201%204%201%202%201h5l122%201h120l-20-20-19-20h-76l-79%201c-2%200-3%201-3%202%200%202%200%202-1%200l-1-3v6l-1-3-1-3v6l-1-3-1-3v3c0%202%200%202-1%200l-1-1c0%201-1%202-2%201-2%200-2%200%200-1%201-1%201-1-1-1l-2%201h-6l-1%201c-1-2-3-2-31-3H0v18m292%202v20h108v-40h-66l-1%203c0%203-5%206-8%206-4%200-10-3-10-6s-2-3-13-3h-10v20'%20fill='%23fafafa'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"seo":{"src":"/static/a9512cd26a37e7e29a9581aa9bf2553f/6050d/vectrordb-cover.png"}}}]}},"staticQueryHashes":["1609575157","2068910035","2361467917","2361467917","3838421970","500183989","5650841"]}