From 0e73e0ab6f92ca93da4cae08af70dbf9ef8b5f7a Mon Sep 17 00:00:00 2001 From: sheepbox8646 Date: Fri, 10 Apr 2026 06:52:50 +0000 Subject: [PATCH] deploy: 4d3f2de7e2aca9222cfcd10f392ba038d4036411 --- 404.html | 6 +++--- about.html | 10 +++++----- assets/{app.CvD51jyA.js => app.CRyv_MmE.js} | 2 +- assets/chunks/@localSearchIndexroot.BoZnB2ou.js | 1 - assets/chunks/@localSearchIndexroot.VHyCZJwM.js | 1 + assets/chunks/@localSearchIndexzh.BvaSWpy-.js | 1 + assets/chunks/@localSearchIndexzh.dDuBvO1t.js | 1 - ...hBox.D6j45Eya.js => VPLocalSearchBox.rtQYeFEO.js} | 4 ++-- .../chunks/{theme.CfxZ1TLj.js => theme.BCQ-NHcv.js} | 4 ++-- assets/getting-started_container.md.00DekezL.js | 1 - assets/getting-started_container.md.00DekezL.lean.js | 1 - assets/getting-started_container.md.Do_YGEZB.js | 1 + assets/getting-started_container.md.Do_YGEZB.lean.js | 1 + assets/{style.CwwbjNX7.css => style.CSFKb52n.css} | 2 +- blogs/2026-02-16.html | 10 +++++----- blogs/index.html | 10 +++++----- channels/discord.html | 10 +++++----- channels/feishu.html | 10 +++++----- channels/index.html | 10 +++++----- channels/matrix.html | 12 ++++++------ channels/qq.html | 10 +++++----- channels/telegram.html | 10 +++++----- channels/wecom.html | 10 +++++----- channels/weixin.html | 10 +++++----- getting-started/access.html | 10 +++++----- getting-started/bot.html | 10 +++++----- getting-started/browser.html | 10 +++++----- getting-started/channels.html | 10 +++++----- getting-started/compaction.html | 10 +++++----- getting-started/container.html | 12 ++++++------ getting-started/email.html | 10 +++++----- getting-started/files.html | 10 +++++----- getting-started/heartbeat.html | 10 +++++----- getting-started/mcp.html | 10 +++++----- getting-started/memory.html | 10 +++++----- getting-started/provider-and-model.html | 10 +++++----- getting-started/schedule.html | 12 ++++++------ getting-started/search-provider.html | 10 +++++----- getting-started/sessions.html | 10 +++++----- getting-started/skills.html | 12 ++++++------ getting-started/slash-commands.html | 12 ++++++------ hashmap.json | 2 +- index.html | 10 +++++----- installation/docker.html | 12 ++++++------ memory-providers/builtin.html | 12 ++++++------ memory-providers/index.html | 10 +++++----- memory-providers/mem0.html | 10 +++++----- memory-providers/openviking.html | 10 +++++----- tts-providers/edge.html | 10 +++++----- tts-providers/index.html | 10 +++++----- zh/concepts/identity-and-binding.html | 10 +++++----- zh/concepts/index.html | 10 +++++----- zh/index.html | 10 +++++----- zh/style/terminology.html | 10 +++++----- 54 files changed, 221 insertions(+), 221 deletions(-) rename assets/{app.CvD51jyA.js => app.CRyv_MmE.js} (95%) delete mode 100644 assets/chunks/@localSearchIndexroot.BoZnB2ou.js create mode 100644 assets/chunks/@localSearchIndexroot.VHyCZJwM.js create mode 100644 assets/chunks/@localSearchIndexzh.BvaSWpy-.js delete mode 100644 assets/chunks/@localSearchIndexzh.dDuBvO1t.js rename assets/chunks/{VPLocalSearchBox.D6j45Eya.js => VPLocalSearchBox.rtQYeFEO.js} (99%) rename assets/chunks/{theme.CfxZ1TLj.js => theme.BCQ-NHcv.js} (93%) delete mode 100644 assets/getting-started_container.md.00DekezL.js delete mode 100644 assets/getting-started_container.md.00DekezL.lean.js create mode 100644 assets/getting-started_container.md.Do_YGEZB.js create mode 100644 assets/getting-started_container.md.Do_YGEZB.lean.js rename assets/{style.CwwbjNX7.css => style.CSFKb52n.css} (68%) diff --git a/404.html b/404.html index 8f715a02..aed72cfa 100644 --- a/404.html +++ b/404.html @@ -6,10 +6,10 @@ 404 | Memoh Documentation - + - + @@ -17,7 +17,7 @@
- + \ No newline at end of file diff --git a/about.html b/about.html index 2ce82ec1..5ddeef5f 100644 --- a/about.html +++ b/about.html @@ -6,12 +6,12 @@ About Memoh | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

About Memoh

What is Memoh?

Memoh is a multi-member, structured long-memory, containerized AI agent system platform. You can create your own AI bots and chat with them via Telegram, Discord, Lark (Feishu), QQ, Matrix, WeCom, WeChat, Email, or Web. Every bot has an independent container and memory system, allowing it to edit files, execute commands, and access the network within its own container — like having its own computer and brain.

Key Features

Multi-Bot Management

Create multiple bots. Humans and bots, or bots with each other, can chat privately, in groups, or collaborate. Build bot teams, or set up accounts for family members to manage daily tasks with bots.

Multi-User & Identity Recognition

Bots can distinguish individual users in group chats, remember each person's context separately, and send direct messages to specific users. Cross-platform identity binding unifies the same person across Telegram, Discord, Lark, and Web.

Containerized Isolation

Each bot runs in its own isolated container (powered by Containerd) with a separate filesystem and network. Bots can freely read/write files and execute commands within their containers without interfering with each other. Supports container snapshots for save/restore, data export/import, and versioning.

Memory Engineering

A deeply engineered memory layer:

  • Automatically extracts key facts from each conversation turn and stores them as structured memories
  • Hybrid retrieval: semantic search (via Qdrant vector database) + keyword retrieval (BM25)
  • Loads the last 24 hours of conversation context by default
  • Automatic memory compaction and rebuild capabilities
  • Multi-language auto-detection

Multi-Platform Support

Unified channel adapter architecture for connecting to multiple messaging platforms:

  • Telegram — Full support with streaming, Markdown, attachments, and replies
  • Discord — Full support
  • Lark (Feishu) — Full support
  • QQ — Full support
  • Matrix — Decentralized messaging protocol support
  • WeCom (WeWork) — Enterprise messaging integration
  • WeChat — Personal messaging via the WeChat AI bot platform
  • Email — Inbound webhook + outbound providers (Mailgun, generic SMTP, Gmail OAuth)
  • Web — Built-in web chat interface with streaming

Agent Capabilities

Bots come with a rich set of built-in tools:

  • Web Search — Configurable search providers (Brave, Bing, Google, Tavily, SearXNG, DuckDuckGo, and more) for real-time information
  • Web Fetch — Retrieve and parse web page content
  • Browser Automation — Use Playwright-powered browser tools for navigation, clicking, form filling, screenshots, PDF export, and rendered page inspection
  • Subagents — Create specialized subagents with independent context, assign skills, and delegate complex tasks in parallel
  • Skills — Define bot personality via IDENTITY.md, SOUL.md, and modular skill files that bots can enable/disable at runtime
  • Container Operations — Read/write files, edit code, and execute commands inside the container
  • Memory Management — Search and manage memories
  • Messaging — Send messages and reactions to specific users or channels
  • Email — Compose and send emails through configured email providers
  • Text-to-Speech — Synthesize spoken audio from text using configurable TTS providers
  • MCP Federation — Access external tools and resources via federated MCP connections
  • Session History — Access and manage conversation session history

Sessions

Each bot maintains sessions — independent conversation threads that preserve context. Sessions come in four types:

  • Chat — Standard user conversations
  • Heartbeat — Periodic autonomous activity sessions
  • Schedule — Cron-triggered task execution sessions
  • Subagent — Delegated task sessions for sub-agents

Users can start a new session at any time using the /new slash command in any channel, which resets the conversation context.

Slash Commands

Bots support a comprehensive set of slash commands that can be used directly in any channel:

  • /help — Show available commands
  • /new — Start a new conversation session
  • /schedule — Manage scheduled tasks
  • /settings — View and update bot settings
  • /model — Switch chat or heartbeat models
  • /usage — View token usage statistics
  • And more — see Slash Commands for the full reference.

Multi-LLM Provider Support

Flexibly switch between a wide range of LLM providers via four client types:

  • OpenAI Responses API, OpenAI Chat Completions API (including compatible services)
  • Anthropic Messages API, Google Generative AI API

Per-bot model assignment for chat, memory, and embedding. Providers support OAuth authentication and automatic model import.

MCP Protocol Support

Full MCP (Model Context Protocol) support via HTTP, SSE, and Stdio to connect external tool services. Built-in tools for container operations, memory search, web search, scheduling, messaging, and more. Each bot can have its own independent MCP connections with OAuth authentication support.

Scheduled Tasks

Configure scheduled tasks using cron expressions to automatically run commands at specified times. Supports max execution count limits and manual triggers.

Memory Compaction

Automatic memory compaction reduces redundancy in the bot's memory pool over time. Configurable compaction ratios and decay windows keep the most relevant memories while optimizing storage and retrieval quality.

Graphical Configuration

Modern web UI (Vue 3 + Tailwind CSS) with real-time streaming chat, tool call visualization, container filesystem browser, and visual configuration for bots, channels, providers, models, MCP, skills, and all other settings. Dark/light theme, i18n. No coding required to set up your own AI bot.

Installation

To get Memoh running:

  • Docker — Recommended. One-click or manual setup with Docker Compose. Includes all services (PostgreSQL, Qdrant, Containerd, server, web) — no extra dependencies on the host.

Published under AGPLv3

- +
Skip to content

About Memoh

What is Memoh?

Memoh is a multi-member, structured long-memory, containerized AI agent system platform. You can create your own AI bots and chat with them via Telegram, Discord, Lark (Feishu), QQ, Matrix, WeCom, WeChat, Email, or Web. Every bot has an independent container and memory system, allowing it to edit files, execute commands, and access the network within its own container — like having its own computer and brain.

Key Features

Multi-Bot Management

Create multiple bots. Humans and bots, or bots with each other, can chat privately, in groups, or collaborate. Build bot teams, or set up accounts for family members to manage daily tasks with bots.

Multi-User & Identity Recognition

Bots can distinguish individual users in group chats, remember each person's context separately, and send direct messages to specific users. Cross-platform identity binding unifies the same person across Telegram, Discord, Lark, and Web.

Containerized Isolation

Each bot runs in its own isolated container (powered by Containerd) with a separate filesystem and network. Bots can freely read/write files and execute commands within their containers without interfering with each other. Supports container snapshots for save/restore, data export/import, and versioning.

Memory Engineering

A deeply engineered memory layer:

  • Automatically extracts key facts from each conversation turn and stores them as structured memories
  • Hybrid retrieval: semantic search (via Qdrant vector database) + keyword retrieval (BM25)
  • Loads the last 24 hours of conversation context by default
  • Automatic memory compaction and rebuild capabilities
  • Multi-language auto-detection

Multi-Platform Support

Unified channel adapter architecture for connecting to multiple messaging platforms:

  • Telegram — Full support with streaming, Markdown, attachments, and replies
  • Discord — Full support
  • Lark (Feishu) — Full support
  • QQ — Full support
  • Matrix — Decentralized messaging protocol support
  • WeCom (WeWork) — Enterprise messaging integration
  • WeChat — Personal messaging via the WeChat AI bot platform
  • Email — Inbound webhook + outbound providers (Mailgun, generic SMTP, Gmail OAuth)
  • Web — Built-in web chat interface with streaming

Agent Capabilities

Bots come with a rich set of built-in tools:

  • Web Search — Configurable search providers (Brave, Bing, Google, Tavily, SearXNG, DuckDuckGo, and more) for real-time information
  • Web Fetch — Retrieve and parse web page content
  • Browser Automation — Use Playwright-powered browser tools for navigation, clicking, form filling, screenshots, PDF export, and rendered page inspection
  • Subagents — Create specialized subagents with independent context, assign skills, and delegate complex tasks in parallel
  • Skills — Define bot personality via IDENTITY.md, SOUL.md, and modular skill files that bots can enable/disable at runtime
  • Container Operations — Read/write files, edit code, and execute commands inside the container
  • Memory Management — Search and manage memories
  • Messaging — Send messages and reactions to specific users or channels
  • Email — Compose and send emails through configured email providers
  • Text-to-Speech — Synthesize spoken audio from text using configurable TTS providers
  • MCP Federation — Access external tools and resources via federated MCP connections
  • Session History — Access and manage conversation session history

Sessions

Each bot maintains sessions — independent conversation threads that preserve context. Sessions come in four types:

  • Chat — Standard user conversations
  • Heartbeat — Periodic autonomous activity sessions
  • Schedule — Cron-triggered task execution sessions
  • Subagent — Delegated task sessions for sub-agents

Users can start a new session at any time using the /new slash command in any channel, which resets the conversation context.

Slash Commands

Bots support a comprehensive set of slash commands that can be used directly in any channel:

  • /help — Show available commands
  • /new — Start a new conversation session
  • /schedule — Manage scheduled tasks
  • /settings — View and update bot settings
  • /model — Switch chat or heartbeat models
  • /usage — View token usage statistics
  • And more — see Slash Commands for the full reference.

Multi-LLM Provider Support

Flexibly switch between a wide range of LLM providers via four client types:

  • OpenAI Responses API, OpenAI Chat Completions API (including compatible services)
  • Anthropic Messages API, Google Generative AI API

Per-bot model assignment for chat, memory, and embedding. Providers support OAuth authentication and automatic model import.

MCP Protocol Support

Full MCP (Model Context Protocol) support via HTTP, SSE, and Stdio to connect external tool services. Built-in tools for container operations, memory search, web search, scheduling, messaging, and more. Each bot can have its own independent MCP connections with OAuth authentication support.

Scheduled Tasks

Configure scheduled tasks using cron expressions to automatically run commands at specified times. Supports max execution count limits and manual triggers.

Memory Compaction

Automatic memory compaction reduces redundancy in the bot's memory pool over time. Configurable compaction ratios and decay windows keep the most relevant memories while optimizing storage and retrieval quality.

Graphical Configuration

Modern web UI (Vue 3 + Tailwind CSS) with real-time streaming chat, tool call visualization, container filesystem browser, and visual configuration for bots, channels, providers, models, MCP, skills, and all other settings. Dark/light theme, i18n. No coding required to set up your own AI bot.

Installation

To get Memoh running:

  • Docker — Recommended. One-click or manual setup with Docker Compose. Includes all services (PostgreSQL, Qdrant, Containerd, server, web) — no extra dependencies on the host.

Published under AGPLv3

+ \ No newline at end of file diff --git a/assets/app.CvD51jyA.js b/assets/app.CRyv_MmE.js similarity index 95% rename from assets/app.CvD51jyA.js rename to assets/app.CRyv_MmE.js index 7dd74382..01fa1d23 100644 --- a/assets/app.CvD51jyA.js +++ b/assets/app.CRyv_MmE.js @@ -1 +1 @@ -import{t as p}from"./chunks/theme.CfxZ1TLj.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.DXGyWiRo.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; +import{t as p}from"./chunks/theme.BCQ-NHcv.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.DXGyWiRo.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/assets/chunks/@localSearchIndexroot.BoZnB2ou.js b/assets/chunks/@localSearchIndexroot.BoZnB2ou.js deleted file mode 100644 index 5abf3970..00000000 --- a/assets/chunks/@localSearchIndexroot.BoZnB2ou.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":291,"nextId":291,"documentIds":{"0":"/about.html#about-memoh","1":"/about.html#what-is-memoh","2":"/about.html#key-features","3":"/about.html#multi-bot-management","4":"/about.html#multi-user-identity-recognition","5":"/about.html#containerized-isolation","6":"/about.html#memory-engineering","7":"/about.html#multi-platform-support","8":"/about.html#agent-capabilities","9":"/about.html#sessions","10":"/about.html#slash-commands","11":"/about.html#multi-llm-provider-support","12":"/about.html#mcp-protocol-support","13":"/about.html#scheduled-tasks","14":"/about.html#memory-compaction","15":"/about.html#graphical-configuration","16":"/about.html#installation","17":"/blogs/2026-02-16.html#introduction-to-memoh-the-case-for-an-always-on-containerized-home-agent","18":"/blogs/2026-02-16.html#overview","19":"/blogs/2026-02-16.html#story-time","20":"/blogs/2026-02-16.html#what","21":"/blogs/2026-02-16.html#why","22":"/blogs/2026-02-16.html#how","23":"/blogs/2026-02-16.html#features","24":"/blogs/2026-02-16.html#compare-to-openclaw","25":"/blogs/2026-02-16.html#conclusion","26":"/blogs/#blogs","27":"/channels/discord.html#discord-channel-configuration","28":"/channels/discord.html#step-1-create-a-discord-application","29":"/channels/discord.html#step-2-configure-bot-settings","30":"/channels/discord.html#step-3-invite-the-bot-to-your-server","31":"/channels/discord.html#step-4-configure-memoh","32":"/channels/discord.html#features-supported","33":"/channels/#channels-overview","34":"/channels/#general-setup-flow","35":"/channels/feishu.html#feishu-lark-channel-configuration","36":"/channels/feishu.html#step-1-create-a-feishu-app","37":"/channels/feishu.html#step-2-enable-bot-capability","38":"/channels/feishu.html#step-3-configure-permissions","39":"/channels/feishu.html#step-4-configure-events-webhook-mode","40":"/channels/feishu.html#step-5-publish-your-app","41":"/channels/matrix.html#matrix-channel-configuration","42":"/channels/matrix.html#step-1-create-a-matrix-bot-account","43":"/channels/matrix.html#step-2-configure-memoh","44":"/channels/matrix.html#step-3-invite-the-bot","45":"/channels/matrix.html#features-supported","46":"/channels/matrix.html#official-resources","47":"/channels/qq.html#qq-channel-configuration","48":"/channels/qq.html#step-1-create-a-qq-bot","49":"/channels/qq.html#step-2-configure-memoh","50":"/channels/qq.html#step-3-bind-your-identity-optional","51":"/channels/qq.html#features-supported","52":"/channels/qq.html#official-resources","53":"/channels/telegram.html#telegram-channel-configuration","54":"/channels/telegram.html#step-1-create-a-telegram-bot","55":"/channels/telegram.html#step-2-configure-memoh","56":"/channels/telegram.html#step-3-bind-your-identity-optional","57":"/channels/telegram.html#features-supported","58":"/channels/wecom.html#wecom-wework-channel-configuration","59":"/channels/wecom.html#step-1-create-a-wecom-bot","60":"/channels/wecom.html#step-2-configure-memoh","61":"/channels/wecom.html#step-3-start-chatting","62":"/channels/wecom.html#features-supported","63":"/channels/wecom.html#official-resources","64":"/channels/weixin.html#wechat-channel-configuration","65":"/channels/weixin.html#step-1-add-wechat-channel-in-memoh","66":"/channels/weixin.html#step-2-scan-the-qr-code","67":"/channels/weixin.html#step-3-start-chatting","68":"/channels/weixin.html#optional-settings","69":"/channels/weixin.html#features-supported","70":"/getting-started/access.html#bot-access-control","71":"/getting-started/access.html#concepts","72":"/getting-started/access.html#default-effect","73":"/getting-started/access.html#subject-types","74":"/getting-started/access.html#rule-effects","75":"/getting-started/access.html#priority-based-evaluation","76":"/getting-started/access.html#managing-access","77":"/getting-started/access.html#adding-rules","78":"/getting-started/access.html#reordering-rules","79":"/getting-started/access.html#source-scope","80":"/getting-started/access.html#examples","81":"/getting-started/access.html#open-bot-anyone-can-chat","82":"/getting-started/access.html#private-bot-with-selected-users","83":"/getting-started/access.html#open-bot-with-blocked-users","84":"/getting-started/access.html#platform-specific-access","85":"/getting-started/access.html#channel-scoped-access","86":"/getting-started/browser.html#browser-contexts","87":"/getting-started/browser.html#concept-browser-gateway","88":"/getting-started/browser.html#creating-a-browser-context","89":"/getting-started/browser.html#configuring-a-browser-context","90":"/getting-started/browser.html#managing-contexts","91":"/getting-started/browser.html#assigning-a-browser-context-to-a-bot","92":"/getting-started/browser.html#bot-interaction","93":"/getting-started/browser.html#browser-core-selection","94":"/getting-started/browser.html#next-steps","95":"/getting-started/bot.html#bot-management","96":"/getting-started/bot.html#creating-a-bot","97":"/getting-started/bot.html#bot-detail-page","98":"/getting-started/bot.html#tab-overview","99":"/getting-started/bot.html#configuring-the-bot-s-core-settings","100":"/getting-started/bot.html#general-tab-reference","101":"/getting-started/bot.html#terminal-tab","102":"/getting-started/bot.html#deleting-a-bot","103":"/getting-started/channels.html#bot-channels","104":"/getting-started/channels.html#concept-unified-communication","105":"/getting-started/channels.html#supported-channels","106":"/getting-started/channels.html#platform-guides","107":"/getting-started/channels.html#configuration-flow","108":"/getting-started/channels.html#_1-adding-a-channel","109":"/getting-started/channels.html#_2-common-fields","110":"/getting-started/channels.html#_3-special-case-feishu-webhook","111":"/getting-started/channels.html#_4-special-case-wechat-qr-code","112":"/getting-started/channels.html#operations","113":"/getting-started/compaction.html#memory-compaction","114":"/getting-started/compaction.html#concept-why-compact","115":"/getting-started/compaction.html#configuration","116":"/getting-started/compaction.html#manual-compaction","117":"/getting-started/compaction.html#compaction-logs","118":"/getting-started/compaction.html#managing-logs","119":"/getting-started/compaction.html#relationship-to-memory","120":"/getting-started/compaction.html#next-steps","121":"/getting-started/container.html#bot-container-management","122":"/getting-started/container.html#concept-the-isolated-workspace","123":"/getting-started/container.html#operations","124":"/getting-started/container.html#lifecycle-actions","125":"/getting-started/container.html#container-information","126":"/getting-started/container.html#snapshots","127":"/getting-started/container.html#creating-a-snapshot","128":"/getting-started/container.html#restoring-a-snapshot","129":"/getting-started/container.html#managing-snapshots","130":"/getting-started/container.html#data-export-and-import","131":"/getting-started/container.html#export","132":"/getting-started/container.html#import","133":"/getting-started/container.html#restore","134":"/getting-started/container.html#container-versioning","135":"/getting-started/email.html#email-providers-and-bindings","136":"/getting-started/email.html#concept-email-as-a-bot-channel","137":"/getting-started/email.html#email-provider","138":"/getting-started/email.html#creating-a-provider","139":"/getting-started/email.html#bot-email-bindings","140":"/getting-started/email.html#adding-a-binding","141":"/getting-started/email.html#outbox-and-history","142":"/getting-started/email.html#bot-interaction","143":"/getting-started/files.html#bot-files-management","144":"/getting-started/files.html#operations","145":"/getting-started/files.html#browsing-and-navigation","146":"/getting-started/files.html#managing-files","147":"/getting-started/files.html#viewing-and-editing","148":"/getting-started/files.html#text-files","149":"/getting-started/files.html#images","150":"/getting-started/files.html#bot-interaction-with-files","151":"/getting-started/heartbeat.html#bot-heartbeat","152":"/getting-started/heartbeat.html#concept-scheduled-autonomy","153":"/getting-started/heartbeat.html#configuration","154":"/getting-started/heartbeat.html#logs-and-monitoring","155":"/getting-started/heartbeat.html#managing-logs","156":"/getting-started/heartbeat.html#bot-interaction","157":"/getting-started/mcp.html#mcp-connections","158":"/getting-started/mcp.html#concept-extending-bot-capabilities","159":"/getting-started/mcp.html#connection-types","160":"/getting-started/mcp.html#_1-stdio-local-process","161":"/getting-started/mcp.html#_2-remote-http-sse","162":"/getting-started/mcp.html#oauth-authentication","163":"/getting-started/mcp.html#operations","164":"/getting-started/mcp.html#tool-discovery","165":"/getting-started/mcp.html#bot-interaction","166":"/getting-started/provider-and-model.html#llm-provider-and-model","167":"/getting-started/provider-and-model.html#llm-provider","168":"/getting-started/provider-and-model.html#creating-a-provider","169":"/getting-started/provider-and-model.html#oauth-authentication","170":"/getting-started/provider-and-model.html#import-models","171":"/getting-started/provider-and-model.html#managing-providers","172":"/getting-started/provider-and-model.html#model","173":"/getting-started/provider-and-model.html#adding-a-model","174":"/getting-started/provider-and-model.html#managing-models","175":"/getting-started/provider-and-model.html#next-steps","176":"/getting-started/memory.html#bot-memory-management","177":"/getting-started/memory.html#prerequisites","178":"/getting-started/memory.html#concept-memory-retrieval","179":"/getting-started/memory.html#operations","180":"/getting-started/memory.html#_1-creating-memories","181":"/getting-started/memory.html#_2-searching-and-managing","182":"/getting-started/memory.html#memory-compression-compact","183":"/getting-started/memory.html#rebuild","184":"/getting-started/memory.html#status","185":"/getting-started/memory.html#usage-statistics","186":"/getting-started/memory.html#bot-interaction","187":"/getting-started/schedule.html#scheduled-tasks","188":"/getting-started/schedule.html#concept-cron-based-automation","189":"/getting-started/schedule.html#schedule-fields","190":"/getting-started/schedule.html#cron-pattern-reference","191":"/getting-started/schedule.html#viewing-schedules","192":"/getting-started/schedule.html#creating-schedules","193":"/getting-started/schedule.html#via-the-bot-conversational","194":"/getting-started/schedule.html#via-the-api","195":"/getting-started/schedule.html#execution-flow","196":"/getting-started/schedule.html#schedule-vs-heartbeat","197":"/getting-started/search-provider.html#search-providers","198":"/getting-started/search-provider.html#concept-real-time-knowledge","199":"/getting-started/search-provider.html#supported-search-engines","200":"/getting-started/search-provider.html#configuration-flow","201":"/getting-started/search-provider.html#_1-adding-a-search-provider","202":"/getting-started/search-provider.html#_2-managing-providers","203":"/getting-started/search-provider.html#assigning-a-search-provider-to-a-bot","204":"/getting-started/search-provider.html#bot-interaction","205":"/getting-started/sessions.html#sessions","206":"/getting-started/sessions.html#concept-conversation-isolation","207":"/getting-started/sessions.html#session-types","208":"/getting-started/sessions.html#starting-a-new-session-with-new","209":"/getting-started/sessions.html#in-external-channels-telegram-discord-feishu-etc","210":"/getting-started/sessions.html#in-the-web-ui","211":"/getting-started/sessions.html#managing-sessions","212":"/getting-started/sessions.html#viewing-sessions","213":"/getting-started/sessions.html#renaming-sessions","214":"/getting-started/sessions.html#deleting-sessions","215":"/getting-started/sessions.html#how-sessions-relate-to-other-features","216":"/getting-started/skills.html#bot-skills","217":"/getting-started/skills.html#concept-skills-as-markdown","218":"/getting-started/skills.html#example-skill-structure","219":"/getting-started/skills.html#managing-skills","220":"/getting-started/skills.html#adding-a-skill","221":"/getting-started/skills.html#editing-and-deleting","222":"/getting-started/skills.html#how-bots-use-skills","223":"/getting-started/slash-commands.html#slash-commands","224":"/getting-started/slash-commands.html#quick-reference","225":"/getting-started/slash-commands.html#command-format","226":"/getting-started/slash-commands.html#permissions","227":"/getting-started/slash-commands.html#global-commands","228":"/getting-started/slash-commands.html#help","229":"/getting-started/slash-commands.html#new","230":"/getting-started/slash-commands.html#schedule-—-manage-scheduled-tasks","231":"/getting-started/slash-commands.html#mcp-—-manage-mcp-connections","232":"/getting-started/slash-commands.html#settings-—-view-and-update-bot-settings","233":"/getting-started/slash-commands.html#model-—-manage-bot-models","234":"/getting-started/slash-commands.html#memory-—-manage-memory-provider","235":"/getting-started/slash-commands.html#search-—-manage-search-provider","236":"/getting-started/slash-commands.html#browser-—-manage-browser-context","237":"/getting-started/slash-commands.html#usage-—-view-token-usage","238":"/getting-started/slash-commands.html#email-—-view-email-configuration","239":"/getting-started/slash-commands.html#heartbeat-—-view-heartbeat-logs","240":"/getting-started/slash-commands.html#skill-—-view-bot-skills","241":"/getting-started/slash-commands.html#fs-—-browse-container-filesystem","242":"/getting-started/slash-commands.html#mention-prefixed-commands","243":"/#memoh-documentation","244":"/#documentation","245":"/installation/docker.html#docker-installation","246":"/installation/docker.html#service-architecture","247":"/installation/docker.html#sparse-service","248":"/installation/docker.html#prerequisites","249":"/installation/docker.html#one-click-install-recommended","250":"/installation/docker.html#manual-install","251":"/installation/docker.html#china-mainland-mirror","252":"/installation/docker.html#access-points","253":"/installation/docker.html#configuration-reference","254":"/installation/docker.html#common-commands","255":"/installation/docker.html#environment-variables","256":"/memory-providers/builtin.html#built-in-memory-provider","257":"/memory-providers/builtin.html#memory-modes","258":"/memory-providers/builtin.html#how-sparse-mode-works","259":"/memory-providers/builtin.html#creating-a-built-in-provider","260":"/memory-providers/builtin.html#configuring-a-built-in-provider","261":"/memory-providers/builtin.html#managing-providers","262":"/memory-providers/builtin.html#infrastructure-requirements","263":"/memory-providers/builtin.html#off-mode","264":"/memory-providers/builtin.html#sparse-mode","265":"/memory-providers/builtin.html#dense-mode","266":"/memory-providers/builtin.html#assigning-a-memory-provider-to-a-bot","267":"/memory-providers/builtin.html#using-memory-after-setup","268":"/memory-providers/#memory-providers","269":"/memory-providers/#available-providers","270":"/memory-providers/#basic-flow","271":"/memory-providers/#next-steps","272":"/memory-providers/openviking.html#openviking-memory-provider","273":"/memory-providers/openviking.html#creating-an-openviking-provider","274":"/memory-providers/openviking.html#configuring-an-openviking-provider","275":"/memory-providers/openviking.html#assigning-an-openviking-provider-to-a-bot","276":"/memory-providers/openviking.html#usage","277":"/memory-providers/mem0.html#mem0-memory-provider","278":"/memory-providers/mem0.html#creating-a-mem0-provider","279":"/memory-providers/mem0.html#configuring-a-mem0-provider","280":"/memory-providers/mem0.html#assigning-a-mem0-provider-to-a-bot","281":"/memory-providers/mem0.html#usage","282":"/tts-providers/edge.html#edge-tts","283":"/tts-providers/edge.html#creating-an-edge-tts-provider","284":"/tts-providers/edge.html#configuring-the-model","285":"/tts-providers/edge.html#assigning-to-a-bot","286":"/tts-providers/edge.html#testing","287":"/tts-providers/#tts-providers","288":"/tts-providers/#basic-flow","289":"/tts-providers/#available-providers","290":"/tts-providers/#next-steps"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[4,2,58],"2":[2,2,1],"3":[3,4,29],"4":[5,4,33],"5":[2,4,42],"6":[2,4,48],"7":[3,4,55],"8":[2,4,132],"9":[1,4,50],"10":[2,4,51],"11":[4,4,42],"12":[3,4,40],"13":[2,4,22],"14":[2,4,27],"15":[2,4,47],"16":[1,2,28],"17":[12,1,1],"18":[1,12,74],"19":[2,12,215],"20":[1,12,29],"21":[1,12,54],"22":[1,12,65],"23":[1,12,104],"24":[3,12,83],"25":[1,12,62],"26":[1,1,12],"27":[3,1,16],"28":[6,3,28],"29":[5,3,19],"30":[8,3,42],"31":[4,3,23],"32":[2,3,25],"33":[2,1,88],"34":[3,2,54],"35":[4,1,24],"36":[6,4,34],"37":[5,4,13],"38":[4,4,31],"39":[7,4,56],"40":[5,4,30],"41":[3,1,31],"42":[7,3,74],"43":[4,3,67],"44":[5,3,31],"45":[2,3,49],"46":[2,3,6],"47":[3,1,16],"48":[6,3,46],"49":[4,3,37],"50":[7,3,44],"51":[2,3,36],"52":[2,3,6],"53":[3,1,28],"54":[6,3,55],"55":[4,3,30],"56":[7,3,53],"57":[2,3,35],"58":[4,1,17],"59":[6,4,26],"60":[4,4,44],"61":[4,4,27],"62":[2,4,26],"63":[2,4,6],"64":[3,1,24],"65":[7,3,19],"66":[6,3,55],"67":[4,3,20],"68":[2,3,11],"69":[2,3,29],"70":[3,1,35],"71":[1,3,1],"72":[2,4,46],"73":[2,4,54],"74":[2,4,19],"75":[3,4,56],"76":[2,3,12],"77":[2,4,60],"78":[2,4,26],"79":[2,4,49],"80":[1,3,1],"81":[6,4,19],"82":[5,4,26],"83":[5,4,27],"84":[3,4,31],"85":[3,4,27],"86":[2,1,45],"87":[3,2,45],"88":[4,2,27],"89":[4,2,81],"90":[2,5,15],"91":[6,2,33],"92":[2,2,55],"93":[3,2,47],"94":[2,2,27],"95":[2,1,34],"96":[3,2,32],"97":[3,2,22],"98":[2,4,95],"99":[6,2,82],"100":[3,2,116],"101":[2,2,25],"102":[3,2,44],"103":[2,1,18],"104":[3,2,30],"105":[2,2,14],"106":[2,3,27],"107":[2,2,1],"108":[4,4,24],"109":[3,4,33],"110":[5,4,32],"111":[6,4,21],"112":[1,2,20],"113":[2,1,38],"114":[4,2,58],"115":[1,2,48],"116":[2,2,52],"117":[2,2,42],"118":[2,3,12],"119":[3,2,59],"120":[2,2,13],"121":[3,1,35],"122":[4,3,30],"123":[1,3,16],"124":[2,4,52],"125":[2,3,46],"126":[1,3,32],"127":[3,4,18],"128":[3,4,17],"129":[2,4,23],"130":[4,3,16],"131":[1,7,21],"132":[1,7,21],"133":[1,7,29],"134":[2,3,37],"135":[4,1,18],"136":[6,4,28],"137":[2,4,13],"138":[3,5,38],"139":[3,4,15],"140":[3,5,41],"141":[3,4,34],"142":[2,4,45],"143":[3,1,24],"144":[1,3,17],"145":[3,4,31],"146":[2,4,42],"147":[3,3,17],"148":[2,6,39],"149":[1,6,20],"150":[4,3,36],"151":[2,1,24],"152":[3,2,38],"153":[1,2,41],"154":[3,2,46],"155":[2,5,29],"156":[2,2,36],"157":[2,1,21],"158":[4,2,25],"159":[2,2,11],"160":[5,4,54],"161":[5,4,36],"162":[2,2,56],"163":[1,2,53],"164":[2,2,51],"165":[2,2,32],"166":[4,1,16],"167":[2,4,27],"168":[3,4,46],"169":[2,4,38],"170":[2,4,36],"171":[2,4,33],"172":[1,4,31],"173":[3,4,88],"174":[2,4,16],"175":[2,4,16],"176":[3,1,22],"177":[1,3,42],"178":[3,3,46],"179":[1,3,14],"180":[3,4,25],"181":[4,4,25],"182":[4,3,57],"183":[1,3,49],"184":[1,3,40],"185":[2,3,28],"186":[2,3,48],"187":[2,1,33],"188":[4,2,37],"189":[2,2,77],"190":[3,2,67],"191":[2,2,31],"192":[2,2,8],"193":[5,4,46],"194":[3,4,42],"195":[2,2,48],"196":[3,2,52],"197":[2,1,23],"198":[4,2,28],"199":[3,2,53],"200":[2,2,1],"201":[5,4,44],"202":[3,4,21],"203":[6,2,22],"204":[2,2,35],"205":[1,1,36],"206":[3,1,43],"207":[2,1,71],"208":[6,1,19],"209":[8,7,55],"210":[4,7,38],"211":[2,1,1],"212":[2,2,34],"213":[2,2,15],"214":[2,2,15],"215":[6,1,63],"216":[2,1,23],"217":[4,2,27],"218":[3,5,37],"219":[2,2,15],"220":[3,3,22],"221":[3,3,23],"222":[4,2,35],"223":[2,1,46],"224":[2,2,45],"225":[2,2,41],"226":[1,2,33],"227":[2,2,1],"228":[2,3,11],"229":[2,3,14],"230":[5,2,31],"231":[5,2,14],"232":[7,2,46],"233":[5,2,20],"234":[5,2,13],"235":[5,2,13],"236":[5,2,13],"237":[5,2,25],"238":[5,2,10],"239":[5,2,15],"240":[5,2,9],"241":[5,2,28],"242":[3,2,24],"243":[2,1,51],"244":[1,2,36],"245":[2,1,45],"246":[2,2,62],"247":[2,4,143],"248":[1,2,5],"249":[5,2,112],"250":[2,2,97],"251":[3,4,48],"252":[2,2,37],"253":[2,2,94],"254":[2,2,33],"255":[2,2,58],"256":[4,1,44],"257":[2,4,38],"258":[4,5,58],"259":[5,4,25],"260":[5,4,46],"261":[2,6,15],"262":[2,4,1],"263":[2,6,15],"264":[2,6,44],"265":[2,6,30],"266":[6,4,37],"267":[4,4,38],"268":[2,1,33],"269":[2,2,44],"270":[2,2,31],"271":[2,2,28],"272":[3,1,26],"273":[4,3,25],"274":[4,3,36],"275":[7,3,24],"276":[1,3,28],"277":[3,1,28],"278":[4,3,25],"279":[4,3,44],"280":[6,3,24],"281":[1,3,28],"282":[2,1,26],"283":[5,2,25],"284":[3,2,58],"285":[4,2,24],"286":[1,2,26],"287":[2,1,64],"288":[2,2,48],"289":[2,2,21],"290":[2,2,12]},"averageFieldLength":[3.0171821305841924,3.0859106529209623,35.982817869415804],"storedFields":{"0":{"title":"About Memoh","titles":[]},"1":{"title":"What is Memoh?","titles":["About Memoh"]},"2":{"title":"Key Features","titles":["About Memoh"]},"3":{"title":"Multi-Bot Management","titles":["About Memoh","Key Features"]},"4":{"title":"Multi-User & Identity Recognition","titles":["About Memoh","Key Features"]},"5":{"title":"Containerized Isolation","titles":["About Memoh","Key Features"]},"6":{"title":"Memory Engineering","titles":["About Memoh","Key Features"]},"7":{"title":"Multi-Platform Support","titles":["About Memoh","Key Features"]},"8":{"title":"Agent Capabilities","titles":["About Memoh","Key Features"]},"9":{"title":"Sessions","titles":["About Memoh","Key Features"]},"10":{"title":"Slash Commands","titles":["About Memoh","Key Features"]},"11":{"title":"Multi-LLM Provider Support","titles":["About Memoh","Key Features"]},"12":{"title":"MCP Protocol Support","titles":["About Memoh","Key Features"]},"13":{"title":"Scheduled Tasks","titles":["About Memoh","Key Features"]},"14":{"title":"Memory Compaction","titles":["About Memoh","Key Features"]},"15":{"title":"Graphical Configuration","titles":["About Memoh","Key Features"]},"16":{"title":"Installation","titles":["About Memoh"]},"17":{"title":"Introduction to Memoh - The Case for an Always-On, Containerized Home Agent","titles":[]},"18":{"title":"Overview","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"19":{"title":"Story Time","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"20":{"title":"What","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"21":{"title":"Why","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"22":{"title":"How","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"23":{"title":"Features","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"24":{"title":"Compare to OpenClaw","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"25":{"title":"Conclusion","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"26":{"title":"Blogs","titles":[]},"27":{"title":"Discord Channel Configuration","titles":[]},"28":{"title":"Step 1: Create a Discord Application","titles":["Discord Channel Configuration"]},"29":{"title":"Step 2: Configure Bot Settings","titles":["Discord Channel Configuration"]},"30":{"title":"Step 3: Invite the Bot to Your Server","titles":["Discord Channel Configuration"]},"31":{"title":"Step 4: Configure Memoh","titles":["Discord Channel Configuration"]},"32":{"title":"Features Supported","titles":["Discord Channel Configuration"]},"33":{"title":"Channels Overview","titles":[]},"34":{"title":"General Setup Flow","titles":["Channels Overview"]},"35":{"title":"Feishu (Lark) Channel Configuration","titles":[]},"36":{"title":"Step 1: Create a Feishu App","titles":["Feishu (Lark) Channel Configuration"]},"37":{"title":"Step 2: Enable Bot Capability","titles":["Feishu (Lark) Channel Configuration"]},"38":{"title":"Step 3: Configure Permissions","titles":["Feishu (Lark) Channel Configuration"]},"39":{"title":"Step 4: Configure Events (Webhook Mode)","titles":["Feishu (Lark) Channel Configuration"]},"40":{"title":"Step 5: Publish Your App","titles":["Feishu (Lark) Channel Configuration"]},"41":{"title":"Matrix Channel Configuration","titles":[]},"42":{"title":"Step 1: Create a Matrix Bot Account","titles":["Matrix Channel Configuration"]},"43":{"title":"Step 2: Configure Memoh","titles":["Matrix Channel Configuration"]},"44":{"title":"Step 3: Invite the Bot","titles":["Matrix Channel Configuration"]},"45":{"title":"Features Supported","titles":["Matrix Channel Configuration"]},"46":{"title":"Official Resources","titles":["Matrix Channel Configuration"]},"47":{"title":"QQ Channel Configuration","titles":[]},"48":{"title":"Step 1: Create a QQ Bot","titles":["QQ Channel Configuration"]},"49":{"title":"Step 2: Configure Memoh","titles":["QQ Channel Configuration"]},"50":{"title":"Step 3: Bind Your Identity (Optional)","titles":["QQ Channel Configuration"]},"51":{"title":"Features Supported","titles":["QQ Channel Configuration"]},"52":{"title":"Official Resources","titles":["QQ Channel Configuration"]},"53":{"title":"Telegram Channel Configuration","titles":[]},"54":{"title":"Step 1: Create a Telegram Bot","titles":["Telegram Channel Configuration"]},"55":{"title":"Step 2: Configure Memoh","titles":["Telegram Channel Configuration"]},"56":{"title":"Step 3: Bind Your Identity (Optional)","titles":["Telegram Channel Configuration"]},"57":{"title":"Features Supported","titles":["Telegram Channel Configuration"]},"58":{"title":"WeCom (WeWork) Channel Configuration","titles":[]},"59":{"title":"Step 1: Create a WeCom Bot","titles":["WeCom (WeWork) Channel Configuration"]},"60":{"title":"Step 2: Configure Memoh","titles":["WeCom (WeWork) Channel Configuration"]},"61":{"title":"Step 3: Start Chatting","titles":["WeCom (WeWork) Channel Configuration"]},"62":{"title":"Features Supported","titles":["WeCom (WeWork) Channel Configuration"]},"63":{"title":"Official Resources","titles":["WeCom (WeWork) Channel Configuration"]},"64":{"title":"WeChat Channel Configuration","titles":[]},"65":{"title":"Step 1: Add WeChat Channel in Memoh","titles":["WeChat Channel Configuration"]},"66":{"title":"Step 2: Scan the QR Code","titles":["WeChat Channel Configuration"]},"67":{"title":"Step 3: Start Chatting","titles":["WeChat Channel Configuration"]},"68":{"title":"Optional Settings","titles":["WeChat Channel Configuration"]},"69":{"title":"Features Supported","titles":["WeChat Channel Configuration"]},"70":{"title":"Bot Access Control","titles":[]},"71":{"title":"Concepts","titles":["Bot Access Control"]},"72":{"title":"Default Effect","titles":["Bot Access Control","Concepts"]},"73":{"title":"Subject Types","titles":["Bot Access Control","Concepts"]},"74":{"title":"Rule Effects","titles":["Bot Access Control","Concepts"]},"75":{"title":"Priority-Based Evaluation","titles":["Bot Access Control","Concepts"]},"76":{"title":"Managing Access","titles":["Bot Access Control"]},"77":{"title":"Adding Rules","titles":["Bot Access Control","Managing Access"]},"78":{"title":"Reordering Rules","titles":["Bot Access Control","Managing Access"]},"79":{"title":"Source Scope","titles":["Bot Access Control","Managing Access"]},"80":{"title":"Examples","titles":["Bot Access Control"]},"81":{"title":"Open Bot (Anyone Can Chat)","titles":["Bot Access Control","Examples"]},"82":{"title":"Private Bot with Selected Users","titles":["Bot Access Control","Examples"]},"83":{"title":"Open Bot with Blocked Users","titles":["Bot Access Control","Examples"]},"84":{"title":"Platform-Specific Access","titles":["Bot Access Control","Examples"]},"85":{"title":"Channel-Scoped Access","titles":["Bot Access Control","Examples"]},"86":{"title":"Browser Contexts","titles":[]},"87":{"title":"Concept: Browser Gateway","titles":["Browser Contexts"]},"88":{"title":"Creating a Browser Context","titles":["Browser Contexts"]},"89":{"title":"Configuring a Browser Context","titles":["Browser Contexts"]},"90":{"title":"Managing Contexts","titles":["Browser Contexts","Configuring a Browser Context"]},"91":{"title":"Assigning a Browser Context to a Bot","titles":["Browser Contexts"]},"92":{"title":"Bot Interaction","titles":["Browser Contexts"]},"93":{"title":"Browser Core Selection","titles":["Browser Contexts"]},"94":{"title":"Next Steps","titles":["Browser Contexts"]},"95":{"title":"Bot Management","titles":[]},"96":{"title":"Creating a Bot","titles":["Bot Management"]},"97":{"title":"Bot Detail Page","titles":["Bot Management"]},"98":{"title":"Tab Overview","titles":["Bot Management","Bot Detail Page"]},"99":{"title":"Configuring the Bot\'s Core Settings","titles":["Bot Management"]},"100":{"title":"General Tab Reference","titles":["Bot Management"]},"101":{"title":"Terminal Tab","titles":["Bot Management"]},"102":{"title":"Deleting a Bot","titles":["Bot Management"]},"103":{"title":"Bot Channels","titles":[]},"104":{"title":"Concept: Unified Communication","titles":["Bot Channels"]},"105":{"title":"Supported Channels","titles":["Bot Channels"]},"106":{"title":"Platform Guides","titles":["Bot Channels","Supported Channels"]},"107":{"title":"Configuration Flow","titles":["Bot Channels"]},"108":{"title":"1. Adding a Channel","titles":["Bot Channels","Configuration Flow"]},"109":{"title":"2. Common Fields","titles":["Bot Channels","Configuration Flow"]},"110":{"title":"3. Special Case: Feishu Webhook","titles":["Bot Channels","Configuration Flow"]},"111":{"title":"4. Special Case: WeChat QR Code","titles":["Bot Channels","Configuration Flow"]},"112":{"title":"Operations","titles":["Bot Channels"]},"113":{"title":"Memory Compaction","titles":[]},"114":{"title":"Concept: Why Compact?","titles":["Memory Compaction"]},"115":{"title":"Configuration","titles":["Memory Compaction"]},"116":{"title":"Manual Compaction","titles":["Memory Compaction"]},"117":{"title":"Compaction Logs","titles":["Memory Compaction"]},"118":{"title":"Managing Logs","titles":["Memory Compaction","Compaction Logs"]},"119":{"title":"Relationship to Memory","titles":["Memory Compaction"]},"120":{"title":"Next Steps","titles":["Memory Compaction"]},"121":{"title":"Bot Container Management","titles":[]},"122":{"title":"Concept: The Isolated Workspace","titles":["Bot Container Management"]},"123":{"title":"Operations","titles":["Bot Container Management"]},"124":{"title":"Lifecycle Actions","titles":["Bot Container Management","Operations"]},"125":{"title":"Container Information","titles":["Bot Container Management"]},"126":{"title":"Snapshots","titles":["Bot Container Management"]},"127":{"title":"Creating a Snapshot","titles":["Bot Container Management","Snapshots"]},"128":{"title":"Restoring a Snapshot","titles":["Bot Container Management","Snapshots"]},"129":{"title":"Managing Snapshots","titles":["Bot Container Management","Snapshots"]},"130":{"title":"Data Export and Import","titles":["Bot Container Management"]},"131":{"title":"Export","titles":["Bot Container Management","Data Export and Import"]},"132":{"title":"Import","titles":["Bot Container Management","Data Export and Import"]},"133":{"title":"Restore","titles":["Bot Container Management","Data Export and Import"]},"134":{"title":"Container Versioning","titles":["Bot Container Management"]},"135":{"title":"Email Providers and Bindings","titles":[]},"136":{"title":"Concept: Email as a Bot Channel","titles":["Email Providers and Bindings"]},"137":{"title":"Email Provider","titles":["Email Providers and Bindings"]},"138":{"title":"Creating a Provider","titles":["Email Providers and Bindings","Email Provider"]},"139":{"title":"Bot Email Bindings","titles":["Email Providers and Bindings"]},"140":{"title":"Adding a Binding","titles":["Email Providers and Bindings","Bot Email Bindings"]},"141":{"title":"Outbox and History","titles":["Email Providers and Bindings"]},"142":{"title":"Bot Interaction","titles":["Email Providers and Bindings"]},"143":{"title":"Bot Files Management","titles":[]},"144":{"title":"Operations","titles":["Bot Files Management"]},"145":{"title":"Browsing and Navigation","titles":["Bot Files Management","Operations"]},"146":{"title":"Managing Files","titles":["Bot Files Management","Operations"]},"147":{"title":"Viewing and Editing","titles":["Bot Files Management"]},"148":{"title":"Text Files","titles":["Bot Files Management","Viewing and Editing"]},"149":{"title":"Images","titles":["Bot Files Management","Viewing and Editing"]},"150":{"title":"Bot Interaction with Files","titles":["Bot Files Management"]},"151":{"title":"Bot Heartbeat","titles":[]},"152":{"title":"Concept: Scheduled Autonomy","titles":["Bot Heartbeat"]},"153":{"title":"Configuration","titles":["Bot Heartbeat"]},"154":{"title":"Logs and Monitoring","titles":["Bot Heartbeat"]},"155":{"title":"Managing Logs","titles":["Bot Heartbeat","Logs and Monitoring"]},"156":{"title":"Bot Interaction","titles":["Bot Heartbeat"]},"157":{"title":"MCP Connections","titles":[]},"158":{"title":"Concept: Extending Bot Capabilities","titles":["MCP Connections"]},"159":{"title":"Connection Types","titles":["MCP Connections"]},"160":{"title":"1. Stdio (Local Process)","titles":["MCP Connections","Connection Types"]},"161":{"title":"2. Remote (HTTP/SSE)","titles":["MCP Connections","Connection Types"]},"162":{"title":"OAuth Authentication","titles":["MCP Connections"]},"163":{"title":"Operations","titles":["MCP Connections"]},"164":{"title":"Tool Discovery","titles":["MCP Connections"]},"165":{"title":"Bot Interaction","titles":["MCP Connections"]},"166":{"title":"LLM Provider and Model","titles":[]},"167":{"title":"LLM Provider","titles":["LLM Provider and Model"]},"168":{"title":"Creating a Provider","titles":["LLM Provider and Model","LLM Provider"]},"169":{"title":"OAuth Authentication","titles":["LLM Provider and Model","LLM Provider"]},"170":{"title":"Import Models","titles":["LLM Provider and Model","LLM Provider"]},"171":{"title":"Managing Providers","titles":["LLM Provider and Model","LLM Provider"]},"172":{"title":"Model","titles":["LLM Provider and Model"]},"173":{"title":"Adding a Model","titles":["LLM Provider and Model","Model"]},"174":{"title":"Managing Models","titles":["LLM Provider and Model","Model"]},"175":{"title":"Next Steps","titles":["LLM Provider and Model"]},"176":{"title":"Bot Memory Management","titles":[]},"177":{"title":"Prerequisites","titles":["Bot Memory Management"]},"178":{"title":"Concept: Memory Retrieval","titles":["Bot Memory Management"]},"179":{"title":"Operations","titles":["Bot Memory Management"]},"180":{"title":"1. Creating Memories","titles":["Bot Memory Management","Operations"]},"181":{"title":"2. Searching and Managing","titles":["Bot Memory Management","Operations"]},"182":{"title":"Memory Compression (Compact)","titles":["Bot Memory Management"]},"183":{"title":"Rebuild","titles":["Bot Memory Management"]},"184":{"title":"Status","titles":["Bot Memory Management"]},"185":{"title":"Usage Statistics","titles":["Bot Memory Management"]},"186":{"title":"Bot Interaction","titles":["Bot Memory Management"]},"187":{"title":"Scheduled Tasks","titles":[]},"188":{"title":"Concept: Cron-Based Automation","titles":["Scheduled Tasks"]},"189":{"title":"Schedule Fields","titles":["Scheduled Tasks"]},"190":{"title":"Cron Pattern Reference","titles":["Scheduled Tasks"]},"191":{"title":"Viewing Schedules","titles":["Scheduled Tasks"]},"192":{"title":"Creating Schedules","titles":["Scheduled Tasks"]},"193":{"title":"Via the Bot (Conversational)","titles":["Scheduled Tasks","Creating Schedules"]},"194":{"title":"Via the API","titles":["Scheduled Tasks","Creating Schedules"]},"195":{"title":"Execution Flow","titles":["Scheduled Tasks"]},"196":{"title":"Schedule vs. Heartbeat","titles":["Scheduled Tasks"]},"197":{"title":"Search Providers","titles":[]},"198":{"title":"Concept: Real-Time Knowledge","titles":["Search Providers"]},"199":{"title":"Supported Search Engines","titles":["Search Providers"]},"200":{"title":"Configuration Flow","titles":["Search Providers"]},"201":{"title":"1. Adding a Search Provider","titles":["Search Providers","Configuration Flow"]},"202":{"title":"2. Managing Providers","titles":["Search Providers","Configuration Flow"]},"203":{"title":"Assigning a Search Provider to a Bot","titles":["Search Providers"]},"204":{"title":"Bot Interaction","titles":["Search Providers"]},"205":{"title":"Sessions","titles":[]},"206":{"title":"Concept: Conversation Isolation","titles":["Sessions"]},"207":{"title":"Session Types","titles":["Sessions"]},"208":{"title":"Starting a New Session with /new","titles":["Sessions"]},"209":{"title":"In External Channels (Telegram, Discord, Feishu, etc.)","titles":["Sessions","Starting a New Session with /new"]},"210":{"title":"In the Web UI","titles":["Sessions","Starting a New Session with /new"]},"211":{"title":"Managing Sessions","titles":["Sessions"]},"212":{"title":"Viewing Sessions","titles":["Sessions","Managing Sessions"]},"213":{"title":"Renaming Sessions","titles":["Sessions","Managing Sessions"]},"214":{"title":"Deleting Sessions","titles":["Sessions","Managing Sessions"]},"215":{"title":"How Sessions Relate to Other Features","titles":["Sessions"]},"216":{"title":"Bot Skills","titles":[]},"217":{"title":"Concept: Skills as Markdown","titles":["Bot Skills"]},"218":{"title":"Example Skill Structure","titles":["Bot Skills","Concept: Skills as Markdown"]},"219":{"title":"Managing Skills","titles":["Bot Skills"]},"220":{"title":"Adding a Skill","titles":["Bot Skills","Managing Skills"]},"221":{"title":"Editing and Deleting","titles":["Bot Skills","Managing Skills"]},"222":{"title":"How Bots Use Skills","titles":["Bot Skills"]},"223":{"title":"Slash Commands","titles":[]},"224":{"title":"Quick Reference","titles":["Slash Commands"]},"225":{"title":"Command Format","titles":["Slash Commands"]},"226":{"title":"Permissions","titles":["Slash Commands"]},"227":{"title":"Global Commands","titles":["Slash Commands"]},"228":{"title":"/help","titles":["Slash Commands","Global Commands"]},"229":{"title":"/new","titles":["Slash Commands","Global Commands"]},"230":{"title":"/schedule — Manage Scheduled Tasks","titles":["Slash Commands"]},"231":{"title":"/mcp — Manage MCP Connections","titles":["Slash Commands"]},"232":{"title":"/settings — View and Update Bot Settings","titles":["Slash Commands"]},"233":{"title":"/model — Manage Bot Models","titles":["Slash Commands"]},"234":{"title":"/memory — Manage Memory Provider","titles":["Slash Commands"]},"235":{"title":"/search — Manage Search Provider","titles":["Slash Commands"]},"236":{"title":"/browser — Manage Browser Context","titles":["Slash Commands"]},"237":{"title":"/usage — View Token Usage","titles":["Slash Commands"]},"238":{"title":"/email — View Email Configuration","titles":["Slash Commands"]},"239":{"title":"/heartbeat — View Heartbeat Logs","titles":["Slash Commands"]},"240":{"title":"/skill — View Bot Skills","titles":["Slash Commands"]},"241":{"title":"/fs — Browse Container Filesystem","titles":["Slash Commands"]},"242":{"title":"Mention-Prefixed Commands","titles":["Slash Commands"]},"243":{"title":"Memoh Documentation","titles":[]},"244":{"title":"Documentation","titles":["Memoh Documentation"]},"245":{"title":"Docker Installation","titles":[]},"246":{"title":"Service Architecture","titles":["Docker Installation"]},"247":{"title":"Sparse Service","titles":["Docker Installation","Service Architecture"]},"248":{"title":"Prerequisites","titles":["Docker Installation"]},"249":{"title":"One-Click Install (Recommended)","titles":["Docker Installation"]},"250":{"title":"Manual Install","titles":["Docker Installation"]},"251":{"title":"China Mainland Mirror","titles":["Docker Installation","Manual Install"]},"252":{"title":"Access Points","titles":["Docker Installation"]},"253":{"title":"Configuration Reference","titles":["Docker Installation"]},"254":{"title":"Common Commands","titles":["Docker Installation"]},"255":{"title":"Environment Variables","titles":["Docker Installation"]},"256":{"title":"Built-in Memory Provider","titles":[]},"257":{"title":"Memory Modes","titles":["Built-in Memory Provider"]},"258":{"title":"How Sparse Mode Works","titles":["Built-in Memory Provider","Memory Modes"]},"259":{"title":"Creating a Built-in Provider","titles":["Built-in Memory Provider"]},"260":{"title":"Configuring a Built-in Provider","titles":["Built-in Memory Provider"]},"261":{"title":"Managing Providers","titles":["Built-in Memory Provider","Configuring a Built-in Provider"]},"262":{"title":"Infrastructure Requirements","titles":["Built-in Memory Provider"]},"263":{"title":"Off Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"264":{"title":"Sparse Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"265":{"title":"Dense Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"266":{"title":"Assigning a Memory Provider to a Bot","titles":["Built-in Memory Provider"]},"267":{"title":"Using Memory After Setup","titles":["Built-in Memory Provider"]},"268":{"title":"Memory Providers","titles":[]},"269":{"title":"Available Providers","titles":["Memory Providers"]},"270":{"title":"Basic Flow","titles":["Memory Providers"]},"271":{"title":"Next Steps","titles":["Memory Providers"]},"272":{"title":"OpenViking Memory Provider","titles":[]},"273":{"title":"Creating an OpenViking Provider","titles":["OpenViking Memory Provider"]},"274":{"title":"Configuring an OpenViking Provider","titles":["OpenViking Memory Provider"]},"275":{"title":"Assigning an OpenViking Provider to a Bot","titles":["OpenViking Memory Provider"]},"276":{"title":"Usage","titles":["OpenViking Memory Provider"]},"277":{"title":"Mem0 Memory Provider","titles":[]},"278":{"title":"Creating a Mem0 Provider","titles":["Mem0 Memory Provider"]},"279":{"title":"Configuring a Mem0 Provider","titles":["Mem0 Memory Provider"]},"280":{"title":"Assigning a Mem0 Provider to a Bot","titles":["Mem0 Memory Provider"]},"281":{"title":"Usage","titles":["Mem0 Memory Provider"]},"282":{"title":"Edge TTS","titles":[]},"283":{"title":"Creating an Edge TTS Provider","titles":["Edge TTS"]},"284":{"title":"Configuring the Model","titles":["Edge TTS"]},"285":{"title":"Assigning to a Bot","titles":["Edge TTS"]},"286":{"title":"Testing","titles":["Edge TTS"]},"287":{"title":"TTS Providers","titles":[]},"288":{"title":"Basic Flow","titles":["TTS Providers"]},"289":{"title":"Available Providers","titles":["TTS Providers"]},"290":{"title":"Next Steps","titles":["TTS Providers"]}},"dirtCount":0,"index":[["=",{"2":{"251":1,"264":2,"265":1}}],["~",{"2":{"249":2}}],["|",{"2":{"249":6}}],["ˈmemoʊ",{"2":{"243":1}}],["7",{"2":{"237":1}}],["`run",{"2":{"218":1}}],["`edit",{"2":{"218":1}}],["6334",{"2":{"264":1,"265":1}}],["6",{"2":{"190":1,"249":3,"255":1}}],["│",{"2":{"190":15}}],["┌─────────────",{"2":{"190":5}}],["96kbitrate",{"2":{"284":1}}],["9",{"2":{"189":2,"190":2,"225":1,"230":1}}],["8088",{"2":{"274":1}}],["8083",{"2":{"252":1}}],["8080",{"2":{"252":1,"253":1}}],["8082",{"2":{"252":1}}],["8085",{"2":{"247":1,"264":1}}],["8",{"2":{"116":1,"182":1,"190":3,"193":1,"194":1}}],["00",{"2":{"189":1,"190":3}}],["0",{"2":{"116":3,"182":3,"189":1,"190":9,"194":1,"225":1,"230":1,"249":3,"255":1,"284":5}}],["zone",{"2":{"98":1,"102":1}}],["zh",{"2":{"89":1,"232":1}}],["→",{"2":{"75":2,"79":3}}],["企业微信",{"2":{"58":1}}],["创建机器人",{"2":{"48":1}}],["x26",{"2":{"254":2}}],["x3c",{"2":{"42":3}}],["x",{"2":{"42":1}}],["50+",{"2":{"282":1,"284":1,"289":1}}],["59",{"2":{"190":1}}],["5",{"0":{"40":1},"2":{"48":1,"116":1,"182":1,"284":1}}],["48kbitrate",{"2":{"284":1}}],["4o",{"2":{"172":1,"173":1,"233":2}}],["4",{"0":{"31":1,"39":1,"111":1}}],["16bit",{"2":{"284":1}}],["100",{"2":{"284":1}}],["10",{"2":{"239":1}}],["12",{"2":{"190":1}}],["123456789",{"2":{"54":1}}],["1536",{"2":{"173":1}}],["1",{"0":{"28":1,"36":1,"42":1,"48":1,"54":1,"59":1,"65":1,"108":1,"160":1,"180":1,"201":1},"2":{"190":4,"252":1,"284":1}}],["jwt",{"2":{"249":2,"250":1,"253":1}}],["jina",{"2":{"199":1}}],["jpg",{"2":{"149":1}}],["js",{"2":{"148":1}}],["json",{"2":{"42":1,"163":3,"194":1,"253":1}}],["join",{"2":{"27":1,"41":1,"43":2,"44":2,"45":1}}],["jobs",{"2":{"24":1}}],["just",{"2":{"19":1,"64":1,"142":1}}],["known",{"2":{"126":1}}],["know",{"2":{"50":1,"56":1}}],["knowledge",{"0":{"198":1},"2":{"20":1,"94":1,"186":1,"197":1}}],["kinds",{"2":{"73":1,"207":1}}],["kind",{"2":{"19":1}}],["kept",{"2":{"18":1}}],["keeping",{"2":{"113":1}}],["keep",{"2":{"14":1,"19":1,"25":2,"42":1,"54":1,"155":1}}],["keys",{"2":{"109":1,"186":1}}],["keyword",{"2":{"6":1,"247":1,"258":1}}],["key",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"6":1,"66":1,"138":1,"160":1,"168":1,"169":1,"171":1,"201":1,"244":1,"247":1,"253":1,"258":1,"269":1,"274":2,"279":2,"282":1,"289":1}}],["yml",{"2":{"250":1,"251":2}}],["yaml",{"2":{"217":1,"218":1,"222":1}}],["yandex",{"2":{"199":1}}],["y",{"2":{"160":1,"249":1}}],["yet",{"2":{"94":1,"99":1}}],["yes",{"2":{"43":3,"60":2,"173":5,"274":1,"279":1}}],["year",{"2":{"18":1,"19":1}}],["yourself",{"2":{"277":1}}],["yours",{"2":{"25":1}}],["your",{"0":{"30":1,"40":1,"50":1,"56":1},"2":{"1":1,"15":1,"19":1,"20":1,"23":1,"27":1,"30":1,"31":2,"33":3,"34":2,"35":1,"36":1,"38":1,"39":2,"41":2,"42":2,"43":2,"44":1,"47":1,"48":1,"49":2,"50":3,"53":1,"54":1,"55":2,"56":4,"58":2,"60":1,"61":1,"64":1,"65":1,"66":2,"70":1,"85":1,"91":1,"99":1,"100":1,"103":2,"105":1,"110":1,"123":1,"131":1,"132":1,"135":1,"136":1,"137":1,"139":1,"146":2,"150":1,"151":1,"157":1,"168":1,"175":1,"177":2,"179":1,"197":1,"198":1,"199":2,"201":1,"203":1,"206":1,"219":1,"243":1,"245":1,"249":1,"250":1,"254":1,"266":1,"275":1,"277":1,"280":1}}],["you",{"2":{"1":1,"19":5,"22":1,"25":1,"30":1,"33":1,"42":1,"50":2,"53":1,"54":2,"56":2,"66":1,"70":1,"79":1,"90":1,"91":1,"94":1,"97":2,"99":1,"103":1,"104":1,"116":1,"126":1,"133":1,"140":1,"143":1,"147":1,"151":2,"157":1,"162":2,"164":2,"166":1,"175":2,"183":3,"187":1,"190":1,"193":1,"194":1,"197":1,"201":1,"203":1,"206":2,"209":4,"210":1,"214":1,"215":1,"218":2,"222":1,"242":1,"245":1,"247":2,"250":1,"251":1,"261":1,"266":1,"267":1,"275":1,"280":1,"287":1}}],["256",{"2":{"284":1}}],["256+",{"2":{"282":1,"289":1}}],["2000",{"2":{"241":1}}],["20",{"2":{"190":1}}],["2026",{"2":{"18":1,"26":1}}],["23",{"2":{"190":1}}],["2",{"0":{"29":1,"37":1,"43":1,"49":1,"55":1,"60":1,"66":1,"109":1,"161":1,"181":1,"202":1},"2":{"252":1,"284":1}}],["24khz",{"2":{"284":3}}],["24",{"2":{"6":1,"23":1}}],["32",{"2":{"250":1}}],["31",{"2":{"190":1}}],["30",{"2":{"43":1,"153":1,"190":2,"232":1}}],["3",{"0":{"30":1,"38":1,"44":1,"50":1,"56":1,"61":1,"67":1,"110":1},"2":{"15":1,"116":1,"172":1,"182":1,"246":1,"284":1}}],["null",{"2":{"194":1}}],["number",{"2":{"116":1,"125":1,"182":1,"185":1,"189":2}}],["npx",{"2":{"160":1}}],["night",{"2":{"19":1}}],["navigating",{"2":{"87":1}}],["navigation",{"0":{"145":1},"2":{"8":1,"89":1,"92":1,"145":1}}],["navigate",{"2":{"59":1,"88":1,"91":1,"96":1,"99":1,"102":1,"116":1,"138":1,"168":1,"191":1,"201":1,"203":1,"259":1,"266":1,"273":1,"275":1,"278":1,"280":1,"283":1,"288":1}}],["named",{"2":{"287":1}}],["namespace",{"2":{"253":1}}],["names",{"2":{"164":1}}],["name",{"2":{"28":1,"36":1,"54":2,"88":2,"89":2,"96":2,"127":1,"163":1,"168":2,"171":1,"173":2,"189":2,"191":1,"194":1,"201":2,"212":1,"218":1,"220":1,"230":6,"231":2,"233":4,"234":1,"235":1,"236":1,"259":2,"260":1,"273":2,"278":2}}],["natural",{"2":{"18":1,"189":1,"193":1,"196":1}}],["none",{"2":{"257":1}}],["normally",{"2":{"242":1}}],["noise",{"2":{"113":1,"114":1}}],["now",{"2":{"67":1,"175":1,"285":1,"288":1}}],["node",{"2":{"19":1,"22":1}}],["notifications",{"2":{"152":1}}],["noticed",{"2":{"19":1}}],["notes",{"2":{"199":1}}],["note",{"2":{"42":1,"59":1}}],["not",{"2":{"18":1,"19":3,"22":1,"79":1,"94":1,"99":1,"177":1,"245":1,"250":1,"254":1,"266":1}}],["no",{"2":{"15":1,"16":1,"23":1,"43":2,"48":1,"60":1,"66":1,"72":1,"75":1,"81":1,"90":1,"100":1,"114":1,"173":2,"181":1,"209":1,"214":1,"247":1,"249":1,"250":1,"257":1,"258":1,"261":1,"263":1,"266":1,"274":1,"279":3,"282":1,"289":1}}],["neural",{"2":{"246":1,"247":3,"257":1,"258":1,"264":1,"269":1}}],["nerdctl",{"2":{"245":1}}],["next",{"0":{"94":1,"120":1,"175":1,"271":1,"290":1},"2":{"129":1,"174":2,"221":1}}],["needing",{"2":{"247":1}}],["needed",{"2":{"66":1,"81":1,"119":1,"181":1}}],["need",{"2":{"22":1,"54":1,"166":1,"201":1,"214":1,"245":1,"247":1,"272":1}}],["news",{"2":{"189":2,"230":3}}],["newbot",{"2":{"54":1}}],["new",{"0":{"208":2,"229":1},"1":{"209":2,"210":2},"2":{"9":2,"10":2,"19":1,"28":1,"42":1,"56":1,"59":1,"78":1,"114":1,"145":1,"180":1,"206":1,"208":1,"209":3,"210":1,"224":2,"229":1,"242":1}}],["network",{"2":{"1":1,"5":1,"23":1,"24":1,"161":1,"243":1}}],["github",{"2":{"249":1,"250":1}}],["git",{"2":{"248":1,"250":1,"255":1}}],["giving",{"2":{"206":1}}],["give",{"2":{"19":1,"24":1,"28":1,"86":1}}],["gpt",{"2":{"172":1,"173":1,"233":2}}],["gather",{"2":{"92":1}}],["gateways",{"2":{"33":1}}],["gateway",{"0":{"87":1},"2":{"29":1,"86":1,"87":1,"246":1,"252":1,"253":2}}],["global",{"0":{"227":1},"1":{"228":1,"229":1},"2":{"73":1,"199":1}}],["g",{"2":{"34":1,"42":2,"43":2,"54":3,"73":2,"116":1,"138":1,"145":1,"148":1,"149":1,"160":2,"161":1,"168":2,"173":3,"183":1,"189":3,"195":1,"201":2,"225":2,"232":1,"249":1,"255":1,"274":1,"287":2,"288":1}}],["guides",{"0":{"106":1},"2":{"34":1,"106":1,"244":1}}],["guide",{"2":{"30":1,"39":2,"53":1,"54":1,"244":1}}],["gt",{"2":{"30":1,"36":1,"37":1,"38":1,"39":1,"40":1,"50":1,"56":1,"59":1,"230":8,"231":2,"233":4,"234":1,"235":1,"236":1,"241":1}}],["going",{"2":{"223":1}}],["good",{"2":{"126":1,"247":1,"257":1}}],["google",{"2":{"8":1,"11":1,"173":1,"198":1,"199":1}}],["go",{"2":{"28":2,"30":1,"31":1,"36":2,"37":1,"38":1,"39":2,"40":1,"43":1,"48":1,"49":1,"50":1,"55":1,"56":1,"60":1,"65":1,"91":1,"99":1,"203":1,"266":1,"275":1,"280":1}}],["got",{"2":{"19":1}}],["getting",{"2":{"244":1}}],["gets",{"2":{"24":1}}],["get",{"2":{"16":1,"18":1,"54":1,"66":1,"230":2,"231":2,"232":2}}],["general",{"0":{"34":1,"100":1},"2":{"72":1,"81":1,"91":1,"98":1,"99":1,"100":1,"102":1,"115":1,"177":1,"196":1,"203":1,"266":1,"268":1,"270":1,"275":1,"280":1,"285":1,"288":1}}],["generating",{"2":{"51":1,"68":1,"69":1,"100":1}}],["generative",{"2":{"11":1,"173":1}}],["generator",{"2":{"30":1}}],["generate",{"2":{"28":1,"39":1,"50":1,"56":1,"110":1,"114":1,"249":1,"250":1}}],["generated",{"2":{"19":1,"30":1,"45":1,"212":1,"249":1}}],["generic",{"2":{"7":1,"136":1,"138":1,"196":1}}],["grounded",{"2":{"204":1}}],["grouped",{"2":{"206":1}}],["group",{"2":{"4":1,"38":1,"41":1,"45":1,"51":1,"61":1,"62":2,"77":2,"79":2,"225":1,"242":1,"250":1,"254":1}}],["groups",{"2":{"3":1,"23":1,"35":1}}],["grow",{"2":{"113":1}}],["granting",{"2":{"162":1}}],["grants",{"2":{"74":1}}],["gracefully",{"2":{"124":1}}],["grained",{"2":{"79":1}}],["grade",{"2":{"20":1}}],["graphical",{"0":{"15":1},"2":{"23":1}}],["gmail",{"2":{"7":1,"33":1}}],["+100",{"2":{"284":1}}],["+",{"2":{"6":1,"7":1,"15":1,"24":1,"247":1,"257":2,"284":1}}],["qr",{"0":{"66":1,"111":1},"2":{"64":1,"66":5,"67":1,"111":2}}],["queries",{"2":{"247":1}}],["query",{"2":{"170":1}}],["question",{"2":{"204":1}}],["questions",{"2":{"18":2}}],["quotes",{"2":{"225":1}}],["quot",{"2":{"57":2,"122":2,"142":2,"152":2,"156":4,"168":2,"189":4,"193":2,"196":2,"201":2,"216":4,"222":2,"225":4}}],["quickly",{"2":{"109":1,"145":1,"155":1,"163":2,"184":1,"247":1}}],["quick",{"0":{"224":1},"2":{"33":1}}],["quietly",{"2":{"19":1}}],["quarter",{"2":{"18":1}}],["quality",{"2":{"14":1,"114":1,"247":1,"257":2,"258":1}}],["qdrant",{"2":{"6":1,"16":1,"246":3,"247":2,"250":2,"251":1,"253":2,"257":3,"260":2,"264":4,"265":5}}],["qq",{"0":{"47":1,"48":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"1":1,"7":1,"33":1,"47":2,"48":2,"49":1,"50":3,"52":2,"98":1,"106":1,"243":1,"244":1}}],["voice",{"2":{"284":3,"286":1,"287":2,"288":1}}],["voices",{"2":{"282":1,"284":1,"289":1}}],["volume",{"2":{"138":1}}],["v0",{"2":{"249":1,"255":1}}],["v2",{"2":{"248":1}}],["vs",{"0":{"196":1}}],["v3",{"2":{"42":1}}],["v1",{"2":{"39":1,"168":1,"247":1,"258":1,"264":1}}],["var",{"2":{"250":1}}],["variable",{"2":{"249":1,"255":1}}],["variables",{"0":{"255":1},"2":{"160":1,"249":1}}],["various",{"2":{"23":1,"95":1,"103":1,"197":1}}],["valid",{"2":{"93":1}}],["validity",{"2":{"66":1}}],["values",{"2":{"93":1,"116":1,"225":1,"232":1}}],["value",{"2":{"18":1,"160":1,"190":1}}],["vue",{"2":{"15":1,"246":1}}],["video",{"2":{"173":1}}],["visual",{"2":{"15":1,"51":1,"69":1,"149":1}}],["visualization",{"2":{"15":1}}],["viewport",{"2":{"86":1,"89":4,"100":1}}],["viewing",{"0":{"147":1,"191":1,"212":1},"1":{"148":1,"149":1},"2":{"48":1,"226":1}}],["view",{"0":{"232":1,"237":1,"238":1,"239":1,"240":1},"2":{"10":2,"129":1,"155":1,"162":1,"164":1,"215":1,"224":5,"254":1}}],["via",{"0":{"193":1,"194":1},"2":{"1":1,"6":1,"7":1,"8":2,"11":1,"12":1,"32":1,"33":4,"34":1,"35":1,"41":1,"42":1,"61":1,"64":1,"79":1,"85":1,"95":1,"122":1,"124":1,"142":2,"160":1,"243":1,"245":1,"246":1,"269":1,"271":1}}],["verify",{"2":{"171":1,"184":1}}],["verification",{"2":{"39":1}}],["version=v0",{"2":{"249":2}}],["versions",{"2":{"134":1,"249":1,"255":1}}],["version",{"2":{"40":2,"134":5,"249":2,"255":1}}],["versioned",{"2":{"22":1}}],["versioning",{"0":{"134":1},"2":{"5":1,"126":1}}],["vectors",{"2":{"178":1,"247":1,"257":1,"258":1,"269":1}}],["vector",{"2":{"6":1,"22":1,"173":2,"183":1,"185":1,"246":1,"247":1,"250":1,"253":1,"257":1,"260":1,"264":1}}],["right",{"2":{"171":1,"202":1}}],["rich",{"2":{"8":1,"33":1,"51":1}}],["rule",{"0":{"74":1},"2":{"72":2,"74":1,"75":6,"77":2,"84":1,"85":1,"100":1,"188":1}}],["rules",{"0":{"77":1,"78":1},"2":{"70":1,"73":2,"75":2,"78":2,"79":1,"81":1,"82":1,"83":1,"98":1}}],["running",{"2":{"16":1,"101":1,"124":1,"125":2,"249":1,"250":1}}],["run",{"2":{"13":1,"21":1,"22":1,"23":1,"25":1,"160":1,"243":1,"245":1,"249":1}}],["runtime",{"2":{"8":1,"22":1,"99":1,"100":1,"125":1,"134":1,"178":1,"247":1,"266":1}}],["runs",{"2":{"5":1,"23":1,"115":1,"117":1,"189":1,"193":1,"215":1,"243":1,"245":1,"247":2,"258":1,"264":1}}],["root",{"2":{"168":1}}],["room",{"2":{"44":1}}],["rooms",{"2":{"41":1,"43":1,"45":2}}],["routed",{"2":{"276":1,"281":1}}],["route",{"2":{"209":1}}],["router",{"2":{"19":3,"22":2}}],["routine",{"2":{"156":1,"187":1,"196":1}}],["routing",{"2":{"109":1}}],["roadmap",{"2":{"45":1}}],["rand",{"2":{"250":1}}],["range",{"2":{"11":1,"284":1}}],["ratio",{"2":{"89":1,"116":2,"182":2}}],["ratios",{"2":{"14":1}}],["raise",{"2":{"21":1}}],["ram",{"2":{"19":1}}],["rag",{"2":{"19":1,"20":1}}],["rewriting",{"2":{"222":1}}],["retained",{"2":{"182":1}}],["retrieves",{"2":{"186":1,"268":1}}],["retrieved",{"2":{"23":1,"178":1,"260":1,"263":1}}],["retrieve",{"2":{"8":1,"146":1}}],["retrieval",{"0":{"178":1},"2":{"6":2,"14":1,"22":1,"114":1,"119":1,"178":1,"246":1,"247":3,"256":2,"257":1,"258":1,"277":1}}],["requiring",{"2":{"247":1}}],["requirements",{"0":{"262":1},"1":{"263":1,"264":1,"265":1},"2":{"256":1,"257":1}}],["require",{"2":{"162":1}}],["requires",{"2":{"77":1,"79":1,"101":1,"162":1,"204":1,"249":1,"258":1,"264":1,"265":1,"269":1,"282":1}}],["required",{"2":{"15":1,"23":1,"38":1,"43":2,"48":1,"60":2,"108":1,"138":1,"173":1,"250":1,"263":1,"274":1,"279":1,"289":1}}],["requested",{"2":{"165":1}}],["revoke",{"2":{"162":1}}],["redirected",{"2":{"162":1}}],["reducing",{"2":{"113":1,"114":1,"119":1}}],["reduces",{"2":{"14":1}}],["redundant",{"2":{"113":1,"114":1,"119":1,"182":1}}],["redundancy",{"2":{"14":1}}],["renaming",{"0":{"213":1}}],["rename",{"2":{"146":2,"210":1,"213":1}}],["rendered",{"2":{"8":1,"87":1}}],["referencing",{"2":{"209":1}}],["reference",{"0":{"100":1,"190":1,"224":1,"253":1},"2":{"10":1}}],["refresh",{"2":{"118":1,"145":1,"155":1,"164":1,"191":1}}],["relate",{"0":{"215":1}}],["relationships",{"2":{"129":1}}],["relationship",{"0":{"119":1}}],["reload",{"2":{"118":1,"145":1,"191":1}}],["relying",{"2":{"92":1}}],["relevance",{"2":{"114":1}}],["relevant",{"2":{"14":1,"113":1,"164":1,"176":1,"178":1}}],["release",{"2":{"40":2,"249":2,"255":1}}],["reusable",{"2":{"87":1}}],["reordering",{"0":{"78":1},"2":{"78":1}}],["regardless",{"2":{"50":1,"56":1,"73":1}}],["registry",{"2":{"251":2,"253":2}}],["registration",{"2":{"33":1}}],["register",{"2":{"34":1,"42":1,"193":1}}],["recent",{"2":{"239":1}}],["receives",{"2":{"156":1,"195":1}}],["receive",{"2":{"38":1,"39":2,"45":1,"135":1}}],["receiving",{"2":{"34":1,"61":1}}],["recurring",{"2":{"152":1,"187":1,"196":1}}],["recursive",{"2":{"146":1}}],["recipient",{"2":{"141":1}}],["recreating",{"2":{"133":1}}],["records",{"2":{"118":1,"155":1,"207":1}}],["recommended",{"0":{"249":1},"2":{"16":1,"199":1,"244":1,"245":1,"250":1}}],["recognition",{"0":{"4":1},"2":{"50":1,"56":1}}],["removing",{"2":{"109":1,"114":1}}],["removes",{"2":{"119":1,"214":1}}],["removed",{"2":{"117":1}}],["remove",{"2":{"90":1,"102":1,"112":1,"118":1,"124":1,"129":1,"146":1,"155":1,"162":1,"174":1,"181":1,"214":1,"221":1,"261":1}}],["remote",{"0":{"161":1},"2":{"98":1,"161":2}}],["remains",{"2":{"22":1}}],["remembers",{"2":{"99":1}}],["remember",{"2":{"4":1,"19":1,"24":1,"150":1,"176":1}}],["repository",{"2":{"249":1}}],["report",{"2":{"225":1}}],["reports",{"2":{"142":1,"187":1}}],["represented",{"2":{"217":1}}],["represents",{"2":{"167":1}}],["reproducible",{"2":{"21":1}}],["replies",{"2":{"7":1,"57":2}}],["re",{"2":{"21":1,"183":2}}],["resource",{"2":{"225":2}}],["resources",{"0":{"46":1,"52":1,"63":1},"2":{"8":1,"99":1,"124":1,"165":1}}],["research",{"2":{"199":1}}],["resetting",{"2":{"208":1,"229":1}}],["reset",{"2":{"28":1,"48":1,"128":1}}],["resets",{"2":{"9":1,"133":1,"206":1}}],["result",{"2":{"117":1,"154":1,"194":1}}],["results",{"2":{"92":1,"114":1,"188":1,"195":1,"204":2,"215":1,"247":1}}],["rest",{"2":{"194":1}}],["restoring",{"0":{"128":1}}],["restore",{"0":{"133":1},"2":{"5":1,"126":1,"128":1,"133":1}}],["restrict",{"2":{"77":1,"79":1,"116":1}}],["response",{"2":{"154":1,"204":1}}],["responses",{"2":{"11":1,"45":1,"51":1,"53":1,"57":1,"62":1,"68":1,"69":1,"100":1,"173":1}}],["respond",{"2":{"41":1,"56":1,"142":1}}],["reach",{"2":{"223":1}}],["reached",{"2":{"195":1}}],["reachable",{"2":{"171":1,"184":1}}],["reactions",{"2":{"8":1}}],["reasoning",{"2":{"98":1,"100":4,"165":1,"173":2,"232":2}}],["realized",{"2":{"19":1}}],["reality",{"2":{"18":1}}],["real",{"0":{"198":1},"2":{"8":1,"15":1,"18":2,"19":4,"24":1,"62":1,"92":1,"124":1,"125":1,"183":1,"197":1,"204":1}}],["reads",{"2":{"119":1}}],["reading",{"2":{"87":1}}],["ready",{"2":{"33":1,"40":1}}],["read",{"2":{"5":1,"8":1,"30":1,"140":1,"148":1,"150":1,"195":1,"207":1,"226":1,"241":3,"282":1,"283":1,"284":1,"287":1,"289":1}}],["rebuild",{"0":{"183":1},"2":{"6":1,"93":1,"183":3,"256":1,"267":1}}],["uuid",{"2":{"232":2}}],["utc",{"2":{"89":1,"190":1,"253":1}}],["url",{"2":{"30":2,"39":4,"43":2,"60":1,"96":1,"110":2,"161":1,"167":1,"168":2,"171":1,"201":1,"252":1,"253":2,"264":2,"265":1,"274":1,"279":2}}],["uncomment",{"2":{"251":1}}],["uncomfortable",{"2":{"21":1}}],["unread",{"2":{"193":1,"194":2}}],["unlike",{"2":{"258":1}}],["unlimited",{"2":{"189":1,"196":1}}],["unless",{"2":{"72":1}}],["unique",{"2":{"54":1,"125":1,"186":1}}],["unified",{"0":{"104":1},"2":{"7":1}}],["unifies",{"2":{"4":1}}],["underlying",{"2":{"247":1}}],["understanding",{"2":{"134":1}}],["understands",{"2":{"57":1}}],["under",{"2":{"20":1,"72":1,"287":1}}],["ui",{"0":{"210":1},"2":{"15":1,"31":1,"43":1,"49":1,"50":1,"55":1,"56":1,"60":1,"65":1,"89":1,"147":1,"210":1,"212":1,"245":1,"246":1,"252":1}}],["us",{"2":{"89":1,"284":1}}],["usage",{"0":{"185":1,"237":2,"276":1,"281":1},"2":{"10":2,"185":1,"224":2,"228":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":5,"238":1,"239":1,"240":1,"241":1}}],["using",{"0":{"267":1},"2":{"8":1,"9":1,"13":1,"42":1,"95":1,"103":1,"110":1,"111":1,"124":1,"177":1,"187":1,"188":1,"194":1,"195":1,"247":2,"249":1,"263":1,"270":1,"285":1}}],["useful",{"2":{"73":2,"126":1,"133":1,"152":1,"183":1,"187":1,"209":1}}],["uses",{"2":{"60":1,"70":1,"99":1,"119":1,"190":2,"206":1,"207":1,"247":1,"258":1,"268":1,"282":1,"289":1}}],["used",{"2":{"10":1,"99":1,"100":5,"115":1,"125":1,"153":1,"173":1,"186":1,"260":1,"272":1}}],["use",{"0":{"222":1},"2":{"8":1,"23":1,"24":1,"40":1,"50":1,"56":1,"73":1,"86":2,"87":1,"90":1,"91":1,"92":1,"99":2,"100":1,"114":1,"129":1,"142":1,"146":1,"150":1,"156":1,"163":1,"164":2,"165":1,"166":1,"169":1,"171":2,"178":1,"184":1,"196":2,"198":1,"202":1,"216":1,"218":2,"225":1,"247":2,"249":4,"251":1,"255":2,"257":1,"261":1,"266":1,"276":1,"281":1,"286":1}}],["username",{"2":{"54":2,"138":1,"253":1}}],["username>",{"2":{"42":1}}],["users",{"0":{"82":1,"83":1},"2":{"4":2,"8":1,"9":1,"22":1,"35":1,"45":1,"47":1,"58":1,"61":1,"62":1,"64":1,"67":1,"69":1,"70":1,"73":2,"84":1,"96":1,"99":1,"207":1,"226":1,"251":1}}],["user",{"0":{"4":1},"2":{"9":1,"19":1,"24":1,"42":3,"43":2,"44":1,"73":1,"79":1,"85":1,"89":2,"142":1,"165":1,"178":1,"204":1,"205":1,"207":1,"212":1,"218":1,"250":1,"253":1,"254":1}}],["upload",{"2":{"146":1}}],["upgradable",{"2":{"22":1}}],["updated",{"2":{"134":1,"183":1}}],["updates",{"2":{"119":1}}],["update",{"0":{"232":1},"2":{"10":1,"89":1,"90":1,"112":2,"146":1,"171":1,"202":1,"224":1,"230":2,"232":4,"254":1,"261":1}}],["up",{"2":{"3":1,"15":1,"23":1,"48":1,"99":1,"152":1,"185":1,"247":1,"250":2,"251":1,"254":2,"264":1,"265":1,"290":1}}],["dynamic",{"2":{"108":1}}],["dropdown",{"2":{"91":1,"203":1,"266":1,"275":1,"280":1,"285":1}}],["dropped",{"2":{"78":1}}],["drag",{"2":{"78":1}}],["d",{"2":{"42":1,"247":1,"250":2,"251":1,"254":2,"264":1,"265":1}}],["dm",{"2":{"33":1}}],["db",{"2":{"22":1,"250":3}}],["duration",{"2":{"117":1,"154":1}}],["durable",{"2":{"21":1,"22":1,"25":1}}],["during",{"2":{"93":1,"114":1,"115":1,"124":1,"154":1,"156":2,"164":1,"186":1,"198":1,"215":1,"222":1,"247":1,"256":1}}],["duckduckgo",{"2":{"8":1,"199":1}}],["domain",{"2":{"138":1}}],["documented",{"2":{"218":1}}],["document",{"2":{"217":1,"247":1}}],["documentation",{"0":{"243":1,"244":1},"1":{"244":1},"2":{"52":1,"63":1}}],["docker",{"0":{"245":1},"1":{"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1},"2":{"16":2,"93":1,"125":1,"244":1,"245":2,"246":1,"247":1,"248":2,"249":6,"250":5,"251":5,"254":6,"255":2,"264":1}}],["do",{"2":{"42":1,"245":1}}],["downloaded",{"2":{"247":1}}],["download",{"2":{"146":1}}],["downloadable",{"2":{"131":1}}],["down",{"2":{"29":1,"124":1,"237":1,"254":1}}],["don",{"2":{"19":2,"21":2,"223":1,"247":1}}],["doing",{"2":{"19":1}}],["doesn",{"2":{"19":1,"124":1}}],["does",{"2":{"18":1,"142":1,"189":1,"247":1}}],["debug",{"2":{"253":1}}],["delivered",{"2":{"195":1}}],["deliver",{"2":{"188":1}}],["delivery",{"2":{"138":1,"141":1}}],["deleting",{"0":{"102":1,"214":1,"221":1},"2":{"163":1,"214":1}}],["delete",{"2":{"90":1,"102":1,"112":1,"124":1,"129":1,"140":1,"146":1,"163":2,"171":2,"174":1,"181":1,"202":2,"210":1,"221":1,"230":2,"231":2,"261":1,"267":1}}],["delegates",{"2":{"207":1}}],["delegated",{"2":{"9":1,"215":1}}],["delegate",{"2":{"8":1}}],["designed",{"2":{"199":1}}],["desired",{"2":{"128":1}}],["descriptions",{"2":{"164":1}}],["description",{"2":{"36":1,"43":1,"60":1,"68":1,"73":1,"89":1,"98":1,"100":1,"109":1,"115":1,"153":1,"160":1,"161":1,"173":1,"189":2,"194":1,"207":1,"218":1,"220":1,"224":1,"246":1,"253":1,"255":1,"260":1,"274":1,"279":1,"284":1,"289":1}}],["deep",{"2":{"100":1}}],["deeply",{"2":{"6":1}}],["dense",{"0":{"265":1},"2":{"178":1,"246":1,"247":1,"257":2,"258":1,"260":3,"269":1}}],["density",{"2":{"19":2}}],["denied",{"2":{"72":1,"83":1,"84":1}}],["deny",{"2":{"70":1,"72":2,"73":1,"74":1,"75":1,"77":1,"82":1,"83":1,"84":1,"100":1,"232":1}}],["determine",{"2":{"182":1}}],["determined",{"2":{"93":1}}],["determines",{"2":{"75":1}}],["detection",{"2":{"6":1}}],["detail",{"0":{"97":1},"1":{"98":1},"2":{"55":1,"97":1,"99":1,"102":1,"105":1,"115":1,"116":1,"117":1,"123":1,"139":1,"143":1,"153":1,"159":1,"179":1,"191":1,"219":1}}],["details",{"2":{"40":1,"164":1,"182":1,"229":1,"247":1}}],["detailed",{"2":{"34":1,"106":1,"154":1,"244":1}}],["dedicated",{"2":{"33":1,"121":1,"143":1,"272":1}}],["developer",{"2":{"28":1,"30":1,"37":1}}],["device",{"2":{"19":1,"22":1,"24":1,"89":2}}],["deployable",{"2":{"22":1}}],["depending",{"2":{"178":1,"201":1}}],["dependable",{"2":{"21":1}}],["dependencies",{"2":{"16":1}}],["decide",{"2":{"19":1}}],["decay",{"2":{"14":1,"116":1,"182":1}}],["decentralized",{"2":{"7":1,"33":1,"41":1}}],["definitions",{"2":{"253":1}}],["defined",{"2":{"212":1}}],["defines",{"2":{"189":1}}],["define",{"2":{"8":1,"70":1,"98":1,"99":1,"100":2,"216":1,"268":1}}],["defaults",{"2":{"173":1,"249":2,"260":1,"279":1}}],["default",{"0":{"72":1},"2":{"6":1,"23":1,"24":1,"43":2,"49":2,"60":1,"72":2,"75":1,"81":2,"82":1,"83":1,"84":1,"89":1,"93":1,"100":2,"153":1,"173":1,"190":1,"207":1,"225":1,"232":1,"250":1,"252":1,"253":2,"255":1,"260":1,"269":1,"271":1,"283":1,"284":4,"288":1}}],["date",{"2":{"185":1}}],["database",{"2":{"6":1,"23":1,"98":1,"246":2,"250":1,"253":2,"264":1}}],["data",{"0":{"130":1},"1":{"131":1,"132":1,"133":1},"2":{"5":1,"98":1,"102":2,"125":2,"130":1,"131":2,"132":1,"133":1,"152":1,"158":1,"160":1,"187":1,"249":3,"253":1}}],["danger",{"2":{"98":1,"102":1}}],["days",{"2":{"116":2,"182":2,"237":1}}],["day",{"2":{"21":1,"190":5,"193":1,"267":2,"276":2,"281":2}}],["dark",{"2":{"15":1}}],["daily",{"2":{"3":1,"189":1,"193":1,"194":1,"225":2}}],["dialog",{"2":{"220":1}}],["digest",{"2":{"193":1,"194":1}}],["dimensions",{"2":{"173":1}}],["different",{"2":{"104":1,"115":1,"153":1,"207":1,"209":1,"256":1}}],["differ",{"2":{"100":1}}],["differs",{"2":{"24":1}}],["did",{"2":{"19":1,"215":1}}],["directories",{"2":{"145":1,"146":1}}],["directory",{"2":{"133":1,"144":1,"145":1,"160":1,"249":2,"253":1}}],["directly",{"2":{"10":1,"61":1,"64":1,"67":1,"101":1,"110":1,"143":1,"149":1,"181":1,"207":1,"251":1}}],["direct",{"2":{"4":1,"33":1,"41":1,"44":1,"45":1,"50":1,"51":1,"62":1,"69":1}}],["discovers",{"2":{"164":1}}],["discovery",{"0":{"164":1}}],["discover",{"2":{"162":1,"165":1,"170":1}}],["discord",{"0":{"27":1,"28":1,"209":1},"1":{"28":1,"29":1,"30":1,"31":1,"32":1},"2":{"1":1,"4":1,"7":1,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"73":2,"79":1,"98":1,"104":1,"106":1,"223":1,"243":1,"244":1}}],["discarding",{"2":{"114":1}}],["displays",{"2":{"125":1,"185":1,"228":1}}],["display",{"2":{"54":1,"88":1,"89":1,"96":1,"168":1,"173":1,"189":1,"259":1,"273":1,"278":1}}],["displayed",{"2":{"48":1,"66":1,"241":1}}],["disappears",{"2":{"19":1}}],["disabled",{"2":{"109":1,"195":1}}],["disable",{"2":{"8":1,"109":1,"112":1,"163":1,"230":3}}],["distinguishes",{"2":{"172":1}}],["distinguish",{"2":{"4":1}}],["ps",{"2":{"254":1}}],["p",{"2":{"230":1}}],["pm",{"2":{"190":1}}],["png",{"2":{"149":1}}],["python",{"2":{"247":1}}],["python3",{"2":{"160":1}}],["py",{"2":{"148":1}}],["pitch",{"2":{"284":2,"286":1,"287":1,"288":1}}],["pipeline",{"2":{"256":1}}],["pins",{"2":{"255":1}}],["pin",{"2":{"249":1}}],["picture",{"2":{"96":1}}],["pixel",{"2":{"89":1}}],["pixels",{"2":{"89":2}}],["plus",{"2":{"82":1}}],["plan",{"2":{"247":1}}],["plane",{"2":{"22":1}}],["placed",{"2":{"75":1}}],["playback",{"2":{"284":1}}],["playground",{"2":{"24":1}}],["playwright",{"2":{"8":1,"87":1,"246":1}}],["plainly",{"2":{"19":1}}],["platforms",{"2":{"7":1,"23":1,"31":1,"33":1,"34":1,"39":1,"43":1,"49":1,"53":1,"55":1,"60":1,"65":1,"95":1,"98":1,"103":1,"105":1}}],["platform",{"0":{"7":1,"84":1,"106":1},"2":{"1":1,"4":1,"7":1,"33":1,"34":2,"35":1,"36":1,"47":1,"48":1,"50":1,"52":1,"56":1,"63":1,"66":1,"73":2,"77":1,"106":1,"108":1,"109":2,"277":1}}],["phone",{"2":{"66":2}}],["phones",{"2":{"19":1}}],["photo",{"2":{"45":1}}],["public",{"2":{"282":1,"289":1}}],["published",{"2":{"40":1}}],["publish",{"0":{"40":1}}],["purpose",{"2":{"196":1}}],["purposes",{"2":{"130":1}}],["pulled",{"2":{"252":1}}],["pulls",{"2":{"249":1}}],["pull",{"2":{"124":1,"254":1}}],["push",{"2":{"24":1}}],["pencil",{"2":{"221":1}}],["people",{"2":{"21":1}}],["performance",{"2":{"199":1}}],["performing",{"2":{"187":1}}],["perform",{"2":{"92":1,"95":1,"124":1,"150":1,"151":1,"156":1,"165":1,"223":1}}],["persistence",{"2":{"125":1}}],["persistent",{"2":{"95":1,"102":1}}],["persist",{"2":{"78":1}}],["personalized",{"2":{"176":1}}],["personality",{"2":{"8":1,"95":1,"98":1,"216":1,"217":1}}],["personal",{"2":{"7":1,"18":1,"19":1,"33":2,"64":1}}],["person",{"2":{"4":2}}],["permission",{"2":{"74":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1}}],["permissions",{"0":{"38":1,"226":1},"2":{"30":1,"38":3,"140":1,"142":1}}],["permanently",{"2":{"25":1,"102":1,"112":1,"214":1}}],["per",{"2":{"11":1,"206":1}}],["periodically",{"2":{"115":1}}],["periodic",{"2":{"9":1,"100":1,"151":1,"152":1,"187":1,"196":2,"207":1}}],["points",{"0":{"252":1}}],["popup",{"2":{"169":1}}],["port",{"2":{"138":1,"247":1,"253":3}}],["portal",{"2":{"28":1,"30":1,"33":1,"150":1}}],["portable",{"2":{"19":1,"21":1}}],["polling",{"2":{"43":1}}],["polite",{"2":{"19":1}}],["powerful",{"2":{"19":1,"135":1,"199":1}}],["powered",{"2":{"5":1,"8":1,"87":1,"199":1}}],["postgres",{"2":{"246":1,"249":2,"250":4,"253":1,"255":2}}],["postgresql",{"2":{"16":1,"245":1,"246":1,"253":1,"255":1}}],["post",{"2":{"42":1,"194":1}}],["position",{"2":{"19":1}}],["pool",{"2":{"14":1,"113":1,"182":1}}],["pdfs",{"2":{"87":1}}],["pdf",{"2":{"8":1,"92":1}}],["pattern",{"0":{"190":1},"2":{"189":1,"190":2,"191":1,"194":1,"225":1,"230":2}}],["path",{"2":{"145":1,"241":2,"253":1,"255":1}}],["paths",{"2":{"125":2,"253":1}}],["packaged",{"2":{"131":1}}],["package",{"2":{"122":1}}],["password=your",{"2":{"250":2}}],["password>",{"2":{"42":1}}],["password",{"2":{"42":2,"138":1,"249":2,"250":7,"253":2,"255":3}}],["paste",{"2":{"31":1,"34":1,"39":1,"49":1,"55":1,"110":1}}],["past",{"2":{"18":1}}],["pairs",{"2":{"160":1}}],["paired",{"2":{"20":1}}],["paid",{"2":{"19":1}}],["parent",{"2":{"129":1,"145":1}}],["parameters",{"2":{"100":1,"116":1,"201":1,"225":1}}],["parallel",{"2":{"8":1}}],["participate",{"2":{"41":1,"45":1,"62":1}}],["part",{"2":{"19":1,"115":1}}],["parsed",{"2":{"217":1}}],["parse",{"2":{"8":1}}],["pages",{"2":{"86":1}}],["page",{"0":{"97":1},"1":{"98":1},"2":{"8":2,"48":1,"55":1,"86":1,"87":1,"88":2,"91":1,"92":1,"96":1,"97":1,"99":1,"102":1,"105":1,"115":1,"116":1,"117":1,"123":1,"137":1,"138":1,"139":1,"143":1,"153":1,"159":1,"162":1,"168":1,"173":1,"179":1,"191":1,"199":1,"201":1,"203":1,"219":1,"259":1,"266":1,"270":1,"273":1,"275":1,"278":1,"280":1,"283":1,"286":1,"287":1,"288":1}}],["practices",{"2":{"218":1}}],["practice",{"2":{"87":1}}],["pre",{"2":{"247":1}}],["prefix",{"2":{"242":1,"254":1}}],["prefixed",{"0":{"242":1},"2":{"223":1}}],["previous",{"2":{"206":1,"209":1}}],["preview",{"2":{"149":2,"286":1}}],["precise",{"2":{"196":1}}],["precedence",{"2":{"75":1}}],["prerequisites",{"0":{"177":1,"248":1}}],["present",{"2":{"264":1,"265":1}}],["presence",{"2":{"29":1}}],["preserved",{"2":{"209":1}}],["preserves",{"2":{"119":1}}],["preserve",{"2":{"9":1}}],["primarily",{"2":{"192":1}}],["primary",{"2":{"100":1}}],["priority",{"0":{"75":1},"2":{"75":2,"78":1}}],["prioritized",{"2":{"70":1}}],["privileged",{"2":{"29":1}}],["privileges",{"2":{"19":1}}],["private",{"0":{"82":1},"2":{"21":1,"22":2,"35":1,"45":1,"62":1,"69":1,"77":1,"122":1}}],["privately",{"2":{"3":1,"23":1}}],["privacy",{"2":{"18":1,"24":1,"199":2}}],["project",{"2":{"258":1,"279":2}}],["proceed",{"2":{"175":1}}],["process",{"0":{"160":1},"2":{"113":1,"119":2,"140":1,"154":1,"160":1,"165":1,"183":2,"204":1,"242":1,"245":1,"246":1}}],["probe",{"2":{"164":1}}],["problematic",{"2":{"83":1}}],["programmatically",{"2":{"194":1}}],["programming",{"2":{"148":1}}],["progress",{"2":{"19":2,"124":1}}],["providing",{"2":{"135":1,"176":1}}],["provided",{"2":{"109":1,"111":1,"165":1,"180":1}}],["provides",{"2":{"87":1,"101":1,"117":1,"121":1,"141":1,"144":1,"154":1,"158":1,"210":1,"247":2,"258":1,"272":1}}],["provide",{"2":{"54":1,"127":1,"140":1,"156":1,"186":1,"204":2}}],["provider",{"0":{"11":1,"137":1,"138":1,"166":1,"167":1,"168":1,"201":1,"203":1,"234":1,"235":1,"256":1,"259":1,"260":1,"266":1,"272":1,"273":1,"274":1,"275":1,"277":1,"278":1,"279":1,"280":1,"283":1},"1":{"138":1,"167":1,"168":2,"169":2,"170":2,"171":2,"172":1,"173":1,"174":1,"175":1,"257":1,"258":1,"259":1,"260":1,"261":2,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"273":1,"274":1,"275":1,"276":1,"278":1,"279":1,"280":1,"281":1},"2":{"23":1,"94":1,"99":5,"100":3,"119":3,"136":2,"137":1,"138":3,"140":1,"162":1,"166":1,"167":1,"168":2,"169":4,"170":3,"171":4,"172":1,"173":2,"177":5,"178":2,"183":1,"184":2,"186":3,"198":1,"199":1,"201":2,"202":3,"203":2,"204":1,"224":2,"233":2,"247":2,"253":1,"256":2,"259":3,"260":1,"261":2,"265":1,"266":4,"267":1,"268":3,"269":2,"270":5,"271":4,"272":1,"273":3,"274":1,"275":2,"277":1,"278":3,"279":1,"280":2,"283":2,"287":3,"288":2,"289":1,"290":1}}],["providers",{"0":{"135":1,"171":1,"197":1,"202":1,"261":1,"268":1,"269":1,"287":1,"289":1},"1":{"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1,"269":1,"270":1,"271":1,"288":1,"289":1,"290":1},"2":{"7":1,"8":3,"11":2,"15":1,"33":2,"98":1,"99":1,"120":1,"157":1,"168":1,"169":1,"173":1,"177":1,"186":1,"199":1,"238":2,"259":1,"269":1,"270":1,"273":1,"278":1,"283":1,"287":1,"288":1}}],["prompt",{"2":{"156":1,"196":1,"222":1,"249":1}}],["prompted",{"2":{"66":1}}],["prompts",{"2":{"54":1,"93":1,"152":1,"249":1}}],["profiles",{"2":{"264":1}}],["profile",{"2":{"50":1,"56":1,"87":1,"93":1,"96":1,"99":1,"246":2,"247":5,"250":3,"251":2,"257":2,"264":2,"265":1}}],["product",{"2":{"25":1}}],["protocol",{"0":{"12":1},"2":{"7":1,"12":1,"33":1,"41":1,"157":1,"173":1}}],["hub",{"2":{"104":1,"251":1}}],["human",{"2":{"19":1}}],["humans",{"2":{"3":1,"23":1}}],["html",{"2":{"92":1}}],["https",{"2":{"42":1,"43":1,"89":2,"168":1,"249":6,"250":1,"279":1}}],["http",{"0":{"161":1},"2":{"12":1,"161":2,"252":3,"253":1,"264":2,"265":1,"274":1}}],["h",{"2":{"42":1}}],["highly",{"2":{"199":1}}],["highlighting",{"2":{"148":1}}],["high",{"2":{"100":1,"138":1,"232":1}}],["higher",{"2":{"78":1,"114":1}}],["highest",{"2":{"75":1,"257":1}}],["hierarchy",{"2":{"79":1}}],["hint",{"2":{"49":1}}],["hide",{"2":{"19":1}}],["history",{"0":{"141":1},"2":{"8":2,"20":1,"30":1,"134":1,"155":1,"180":1,"205":1,"206":1,"209":1,"214":1}}],["hour",{"2":{"190":1}}],["hours",{"2":{"6":1,"23":1}}],["how",{"0":{"22":1,"215":1,"222":1,"258":1},"2":{"99":1,"100":1,"106":1,"109":1,"117":1,"153":1,"154":1,"182":1,"216":1,"260":1,"268":1,"286":1}}],["homeserver>",{"2":{"42":1}}],["homeserver",{"2":{"33":1,"41":1,"42":1,"43":2}}],["home",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"19":2,"20":1,"24":1,"25":1,"241":2}}],["hosted",{"2":{"167":1,"199":1,"269":2,"271":2,"272":1}}],["host",{"2":{"16":1,"121":1,"125":1,"138":1,"245":1,"253":3}}],["here",{"2":{"253":1}}],["height",{"2":{"89":2}}],["headers",{"2":{"161":2}}],["headless",{"2":{"86":1}}],["health",{"2":{"98":1}}],["heartbeat",{"0":{"151":1,"196":1,"239":2},"1":{"152":1,"153":1,"154":1,"155":1,"156":1},"2":{"9":1,"10":1,"98":3,"100":5,"151":1,"152":1,"153":5,"154":4,"155":1,"156":3,"196":2,"207":2,"210":1,"215":3,"224":2,"232":5,"233":3,"237":1,"239":3}}],["held",{"2":{"24":1}}],["helps",{"2":{"134":1,"182":1,"213":1,"222":1}}],["help",{"0":{"228":1},"2":{"10":1,"224":1,"226":1,"242":1}}],["hybrid",{"2":{"6":1,"24":1}}],["handles",{"2":{"142":1,"251":1,"277":1}}],["half",{"2":{"19":1}}],["happening",{"2":{"19":1}}],["hardware",{"2":{"18":1,"19":1}}],["have",{"2":{"12":1,"24":1,"94":1,"99":1,"124":1,"158":1,"175":1,"177":1,"183":1,"225":1,"226":1,"287":1}}],["having",{"2":{"1":1,"23":1}}],["has",{"2":{"1":1,"19":1,"66":1,"72":1,"74":1,"77":1,"133":1,"143":1,"177":1,"183":1,"189":1,"193":1,"209":1}}],["blocked",{"0":{"83":1}}],["block",{"2":{"79":1}}],["blocks",{"2":{"51":1,"57":1,"74":1}}],["blogs",{"0":{"26":1},"2":{"26":1}}],["b",{"2":{"42":1}}],["batch",{"2":{"163":1}}],["battery",{"2":{"19":1}}],["bashsudo",{"2":{"250":2,"251":1}}],["bashgit",{"2":{"250":1}}],["bashdocker",{"2":{"247":1,"254":1,"264":1,"265":1}}],["bashbrowser",{"2":{"93":1}}],["bashcurl",{"2":{"42":1,"249":5}}],["basic",{"0":{"270":1,"288":1},"2":{"36":1,"96":1,"220":1}}],["base64",{"2":{"250":1}}],["based",{"0":{"75":1,"188":1},"2":{"98":2,"108":1,"142":1,"162":1,"169":1,"178":1,"246":1,"257":1,"263":1,"269":2}}],["base",{"2":{"19":1,"20":2,"43":1,"125":1,"167":1,"168":1,"201":1,"253":1,"264":2,"265":1,"274":1,"279":2}}],["backup",{"2":{"130":1,"163":1}}],["background",{"2":{"125":1}}],["backend",{"2":{"99":1,"100":1,"120":1,"177":1,"184":1,"186":1,"256":1,"268":1,"272":1,"276":1,"281":1}}],["back",{"2":{"19":1,"57":1,"119":1,"146":1,"162":1}}],["box",{"2":{"247":1}}],["bocha",{"2":{"199":1}}],["bound",{"2":{"188":1}}],["boundaries",{"2":{"22":1,"24":1}}],["boundary",{"2":{"18":1}}],["bold",{"2":{"51":1,"57":1}}],["botname",{"2":{"242":2}}],["bottom",{"2":{"75":2,"99":1,"102":1,"168":1}}],["botfather",{"2":{"34":1,"54":2}}],["both",{"2":{"24":1,"93":1,"196":1,"264":1}}],["bot",{"0":{"3":1,"29":1,"30":1,"37":1,"42":1,"44":1,"48":1,"54":1,"59":1,"70":1,"81":1,"82":1,"83":1,"91":1,"92":1,"95":1,"96":1,"97":1,"99":1,"102":1,"103":1,"121":1,"136":1,"139":1,"142":1,"143":1,"150":1,"151":1,"156":1,"158":1,"165":1,"176":1,"186":1,"193":1,"203":1,"204":1,"216":1,"232":1,"233":1,"240":1,"266":1,"275":1,"280":1,"285":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"96":1,"97":1,"98":2,"99":1,"100":1,"101":1,"102":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"140":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"152":1,"153":1,"154":1,"155":1,"156":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"217":1,"218":1,"219":1,"220":1,"221":1,"222":1},"2":{"1":1,"3":1,"5":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"14":1,"15":1,"23":3,"24":1,"27":1,"28":2,"30":2,"31":2,"33":2,"34":3,"37":2,"39":2,"40":1,"41":2,"42":1,"43":3,"44":2,"47":2,"48":2,"49":1,"50":2,"52":2,"53":1,"54":7,"55":1,"56":3,"57":4,"58":1,"59":3,"60":4,"61":2,"63":1,"64":1,"65":1,"67":1,"70":2,"72":4,"74":2,"75":1,"76":1,"77":1,"82":2,"83":1,"84":1,"85":1,"86":4,"91":2,"92":2,"94":2,"95":1,"96":2,"97":1,"98":4,"99":5,"100":3,"101":1,"102":4,"103":1,"104":1,"105":2,"109":1,"111":1,"113":2,"115":2,"116":2,"117":1,"119":2,"121":2,"122":2,"123":2,"124":1,"125":1,"126":2,"134":1,"135":1,"136":2,"139":2,"140":5,"141":1,"142":2,"143":2,"145":1,"146":2,"147":1,"148":1,"150":2,"151":1,"152":1,"153":1,"154":2,"156":3,"157":1,"158":1,"159":1,"160":1,"164":1,"165":1,"175":1,"177":3,"178":1,"179":2,"180":1,"184":1,"185":1,"186":3,"187":1,"188":2,"191":2,"193":3,"194":1,"197":1,"198":1,"203":1,"204":2,"205":2,"206":4,"207":6,"209":3,"212":1,"215":2,"216":2,"217":1,"219":2,"221":1,"222":2,"224":3,"226":2,"241":1,"242":1,"243":1,"246":1,"266":2,"267":3,"268":2,"270":2,"271":1,"275":1,"276":2,"277":1,"280":1,"281":2,"285":2,"286":1,"287":3,"288":2}}],["bots",{"0":{"222":1},"2":{"1":1,"3":4,"4":1,"5":1,"8":2,"10":1,"15":1,"23":6,"30":1,"33":3,"35":1,"45":1,"48":1,"87":2,"91":1,"95":1,"96":1,"106":1,"121":1,"158":1,"176":1,"194":1,"203":1,"223":1,"243":1,"244":1,"266":1,"272":1,"275":1,"280":1,"287":1}}],["business",{"2":{"33":1}}],["button",{"2":{"96":1,"129":1,"162":1,"163":1,"164":1,"168":1,"171":1,"202":1,"210":1,"286":1,"288":1}}],["buttons",{"2":{"87":1}}],["but",{"2":{"18":2,"19":1,"21":1,"79":2,"209":1}}],["builtin",{"2":{"259":1}}],["built",{"0":{"256":1,"259":1,"260":1},"1":{"257":1,"258":1,"259":1,"260":1,"261":2,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1},"2":{"7":1,"8":1,"12":1,"24":1,"25":1,"33":1,"92":1,"94":1,"99":1,"100":1,"148":1,"177":1,"247":2,"256":2,"269":1,"271":1,"286":1,"288":1}}],["buildkit",{"2":{"245":1}}],["building",{"2":{"19":1}}],["buildable",{"2":{"18":1}}],["build",{"2":{"3":1,"19":1,"24":1,"93":3,"247":1,"249":1}}],["best",{"2":{"218":1}}],["below",{"2":{"246":1}}],["belongs",{"2":{"172":1}}],["belief",{"2":{"24":1}}],["behave",{"2":{"216":1}}],["behaviors",{"2":{"222":1}}],["behavior",{"2":{"86":1,"89":1,"100":3,"253":1}}],["behind",{"2":{"19":1}}],["before",{"2":{"66":1,"77":1,"177":1,"184":1,"223":1,"250":1,"286":1}}],["begin",{"2":{"61":1}}],["better",{"2":{"114":1,"247":1,"258":1}}],["bet",{"2":{"25":1}}],["between",{"2":{"11":1,"19":1,"109":1,"145":1,"161":1,"172":1,"205":1,"209":1,"210":1}}],["become",{"2":{"114":1,"133":1,"182":1,"183":1,"209":1}}],["becomes",{"2":{"19":1,"21":1,"119":1,"198":1,"268":1}}],["because",{"2":{"19":1}}],["being",{"2":{"19":1,"247":1}}],["be",{"2":{"10":1,"23":1,"24":1,"78":1,"101":1,"102":1,"115":1,"140":1,"153":1,"195":1,"204":1,"223":1,"249":1,"264":1,"265":1,"272":1}}],["broken",{"2":{"237":1}}],["browsing",{"0":{"145":1},"2":{"100":1,"144":1}}],["browse",{"0":{"241":1},"2":{"98":1,"197":1,"224":1}}],["browser",{"0":{"86":1,"87":1,"88":1,"89":1,"91":1,"93":1,"236":2},"1":{"87":1,"88":1,"89":1,"90":2,"91":1,"92":1,"93":1,"94":1},"2":{"8":2,"15":1,"30":1,"86":6,"87":4,"88":4,"89":5,"91":3,"92":4,"93":6,"99":5,"100":2,"224":2,"236":2,"246":3,"247":1,"249":2,"250":3,"251":1,"252":1,"253":2,"255":5}}],["breadcrumb",{"2":{"145":1}}],["breaks",{"2":{"18":1}}],["bridges",{"2":{"104":1}}],["brief",{"2":{"21":1,"189":1}}],["brave",{"2":{"8":1,"198":1,"199":1,"201":1}}],["brain",{"2":{"1":1}}],["bind",{"0":{"50":1,"56":1},"2":{"50":1,"56":2,"268":1}}],["bindings",{"0":{"135":1,"139":1},"1":{"136":1,"137":1,"138":1,"139":1,"140":2,"141":1,"142":1},"2":{"98":1,"238":2}}],["binding",{"0":{"140":1},"2":{"4":1,"50":1,"56":1,"136":1,"140":1}}],["bing",{"2":{"8":1,"198":1,"199":1}}],["bm25",{"2":{"6":1,"247":1}}],["bypasses",{"2":{"75":1}}],["by",{"2":{"5":1,"6":1,"23":2,"24":1,"33":1,"38":1,"42":1,"72":1,"81":1,"87":1,"93":1,"106":1,"109":1,"114":1,"141":1,"145":1,"155":1,"163":1,"164":1,"165":3,"170":1,"173":1,"181":1,"186":1,"190":1,"207":1,"210":3,"213":1,"215":1,"237":4,"244":1,"250":1}}],["f",{"2":{"251":2,"254":1}}],["fssl",{"2":{"249":6}}],["fs",{"0":{"241":1},"2":{"224":1,"241":5}}],["flask",{"2":{"247":1}}],["flexible",{"2":{"196":1}}],["flexibly",{"2":{"11":1}}],["flow",{"0":{"34":1,"107":1,"195":1,"200":1,"270":1,"288":1},"1":{"108":1,"109":1,"110":1,"111":1,"201":1,"202":1},"2":{"111":1,"162":1,"169":1}}],["furthermore",{"2":{"25":1}}],["fully",{"2":{"21":2,"157":1,"269":1}}],["full",{"2":{"7":4,"10":1,"12":1,"32":1,"45":1,"51":1,"62":1,"69":1,"162":1}}],["fixed",{"2":{"196":1}}],["fixes",{"2":{"19":1}}],["five",{"2":{"190":1}}],["fired",{"2":{"189":1}}],["fires",{"2":{"188":1,"195":1,"207":1}}],["firefox",{"2":{"89":1,"93":3,"255":1}}],["first",{"2":{"19":1,"20":1,"24":2,"75":2,"78":1,"99":1,"166":1,"190":1,"252":1}}],["finds",{"2":{"178":1}}],["find",{"2":{"91":1,"128":1,"155":1,"163":1,"203":1,"266":1,"275":1,"280":1,"285":1}}],["fine",{"2":{"79":1}}],["finished",{"2":{"19":1}}],["fields",{"0":{"109":1,"189":1},"2":{"43":1,"60":1,"79":1,"99":1,"108":1,"138":1,"168":1,"173":1,"190":1,"259":1,"273":1,"278":1}}],["field",{"2":{"39":1,"43":1,"55":1,"60":1,"68":1,"88":1,"89":1,"100":1,"109":1,"115":1,"153":1,"160":1,"161":1,"173":1,"177":1,"189":1,"190":1,"260":1,"274":1,"279":1,"284":1}}],["filter",{"2":{"155":1,"181":1,"210":1}}],["file`",{"2":{"218":1}}],["fileviewer",{"2":{"147":1}}],["filemanager",{"2":{"144":1}}],["file",{"2":{"98":1,"124":1,"132":1,"144":1,"145":1,"146":2,"148":2,"149":2,"163":2,"173":1,"178":1,"195":1,"241":1,"250":1,"253":1,"255":1,"257":1,"263":1,"269":1}}],["filesystem",{"0":{"241":1},"2":{"5":1,"15":1,"98":1,"121":1,"131":1,"132":1,"133":1,"143":2,"148":1,"152":1,"160":1,"224":1}}],["files",{"0":{"143":1,"146":1,"148":1,"150":1},"1":{"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1},"2":{"1":1,"5":1,"8":2,"22":1,"23":1,"24":1,"30":1,"32":1,"45":1,"51":1,"57":2,"98":2,"102":1,"122":1,"143":1,"145":1,"146":2,"147":1,"150":2,"217":1,"243":1}}],["fill",{"2":{"39":1,"40":1,"43":1,"60":1,"86":1,"88":1,"92":1,"96":1,"108":1,"138":1,"163":1,"168":1,"201":1,"220":1,"259":1,"273":1,"278":1}}],["filling",{"2":{"8":1,"87":1}}],["focus",{"2":{"205":1}}],["focused",{"2":{"33":1,"119":1,"199":1}}],["folders",{"2":{"146":1}}],["folder",{"2":{"145":1,"146":1}}],["follow",{"2":{"54":1,"169":1,"218":1,"225":1}}],["following",{"2":{"33":1,"38":1,"88":1,"168":1,"173":1,"201":1,"259":1,"264":1,"269":1,"273":1,"278":1}}],["four",{"2":{"9":1,"11":1,"207":1}}],["force",{"2":{"48":1}}],["forcing",{"2":{"19":1}}],["forward",{"2":{"24":1}}],["format",{"0":{"225":1},"2":{"253":1,"284":2,"286":1,"287":1,"288":1}}],["formats",{"2":{"148":1}}],["formatting",{"2":{"49":1,"51":1,"53":1}}],["formatted",{"2":{"45":1}}],["forms",{"2":{"86":1,"87":1}}],["form",{"2":{"8":1,"18":1,"19":1,"79":1,"99":1,"169":1,"171":2,"202":2}}],["for",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"3":1,"5":1,"7":1,"8":2,"9":1,"10":1,"11":1,"12":1,"15":1,"19":2,"21":1,"22":1,"23":1,"25":1,"32":1,"33":6,"34":1,"38":2,"40":1,"42":1,"45":2,"51":2,"54":2,"57":1,"62":1,"69":2,"73":3,"75":1,"79":1,"82":1,"83":1,"85":1,"87":2,"88":1,"92":1,"93":2,"96":1,"98":2,"99":3,"100":5,"102":1,"104":1,"106":2,"111":1,"125":2,"126":1,"127":1,"130":1,"135":1,"138":2,"142":1,"146":1,"151":1,"152":1,"158":1,"160":2,"161":1,"162":1,"163":1,"168":2,"172":2,"173":3,"182":2,"184":1,"185":1,"187":1,"189":3,"191":1,"196":2,"197":1,"199":2,"201":2,"212":1,"215":1,"225":1,"229":1,"237":1,"244":1,"246":3,"247":3,"249":3,"251":1,"255":1,"259":1,"260":1,"267":1,"268":1,"272":1,"273":1,"274":1,"276":1,"278":1,"279":3,"281":1,"282":1}}],["friendly",{"2":{"173":1,"201":1}}],["free",{"2":{"282":1,"289":1}}],["freely",{"2":{"5":1,"23":1}}],["fresh",{"2":{"66":1,"133":1,"206":1,"208":1,"210":1}}],["frontend",{"2":{"253":1}}],["frontmatter",{"2":{"217":1,"221":1,"222":1}}],["frontier",{"2":{"22":1,"25":1}}],["from",{"2":{"6":1,"8":1,"19":1,"34":1,"42":1,"57":1,"66":1,"70":1,"74":1,"75":1,"77":1,"84":1,"88":1,"89":1,"96":1,"100":1,"105":1,"108":1,"115":2,"116":1,"119":1,"123":1,"132":1,"136":1,"137":1,"138":1,"139":1,"143":1,"146":2,"153":2,"159":1,"163":1,"164":1,"168":1,"169":1,"170":2,"171":1,"173":1,"177":1,"179":1,"180":2,"183":2,"199":1,"201":1,"202":1,"205":1,"209":1,"215":1,"219":1,"221":1,"247":1,"249":2,"256":1,"258":1,"260":1,"267":2,"270":2,"274":1,"279":1,"287":2,"288":1}}],["fail",{"2":{"250":1}}],["failed",{"2":{"117":1,"154":1}}],["false",{"2":{"232":2,"255":1}}],["favorite",{"2":{"33":1,"103":1}}],["faster",{"2":{"24":1,"119":1}}],["fast",{"2":{"19":1,"247":1}}],["factor",{"2":{"18":1,"89":1}}],["facts",{"2":{"6":1}}],["familiar",{"2":{"18":1,"144":1}}],["family",{"2":{"3":1}}],["fewer",{"2":{"114":1}}],["featuring",{"2":{"53":1}}],["feature",{"2":{"33":1,"151":1,"182":1,"183":1,"196":1}}],["features",{"0":{"2":1,"23":1,"32":1,"45":1,"51":1,"57":1,"62":1,"69":1,"215":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"45":1,"196":1,"244":1}}],["feb",{"2":{"26":1}}],["feedback",{"2":{"51":1,"69":1,"124":1}}],["feed",{"2":{"21":1}}],["feels",{"2":{"25":1}}],["feeling",{"2":{"19":1}}],["feel",{"2":{"18":1,"19":2}}],["federated",{"2":{"8":1}}],["federation",{"2":{"8":1}}],["fetch",{"2":{"8":1,"34":1,"66":1,"170":1,"247":1,"249":1}}],["feishu",{"0":{"35":1,"36":1,"110":1,"209":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"1":1,"7":1,"23":1,"33":1,"35":1,"36":1,"37":1,"39":3,"40":1,"98":1,"106":1,"110":3,"223":1,"243":1,"244":1}}],["icon",{"2":{"174":2,"212":1,"221":2}}],["irreversible",{"2":{"102":1}}],["ignore",{"2":{"89":1}}],["idf",{"2":{"247":1}}],["identities",{"2":{"70":1,"83":1}}],["identity",{"0":{"4":1,"50":1,"56":1},"2":{"4":1,"8":1,"50":2,"56":3,"73":2,"77":2,"82":1,"85":1,"241":1}}],["identifier",{"2":{"42":1,"60":1,"125":1,"146":1,"173":1}}],["id",{"2":{"36":1,"39":1,"42":2,"43":2,"44":1,"59":1,"60":1,"77":4,"79":4,"89":1,"125":1,"163":1,"173":2,"181":1,"194":1,"232":2,"279":4,"284":1}}],["ids",{"2":{"34":1}}],["image",{"2":{"93":1,"124":2,"125":2,"149":1,"173":1,"247":1,"249":3,"253":1,"255":4}}],["images",{"0":{"149":1},"2":{"32":1,"51":1,"57":1,"69":1,"252":1,"254":1}}],["im",{"2":{"38":2,"39":1}}],["immediately",{"2":{"112":1}}],["immediate",{"2":{"33":1}}],["impact",{"2":{"25":1}}],["imported",{"2":{"283":1,"288":1}}],["importance",{"2":{"247":1,"258":1}}],["important",{"2":{"42":1,"48":1,"99":1,"119":1,"250":1}}],["importing",{"2":{"130":1}}],["import",{"0":{"130":1,"132":1,"170":1},"1":{"131":1,"132":1,"133":1},"2":{"5":1,"11":1,"98":1,"132":1,"163":2,"170":4}}],["if",{"2":{"19":1,"25":1,"32":1,"38":1,"44":1,"60":1,"66":1,"75":1,"94":1,"99":1,"100":1,"110":1,"111":1,"124":1,"140":3,"169":1,"173":1,"195":1,"247":1,"250":1,"254":1,"266":1}}],["i",{"2":{"19":7}}],["i18n",{"2":{"15":1}}],["injected",{"2":{"222":1}}],["initiated",{"2":{"207":1}}],["initialize",{"2":{"124":1,"252":1}}],["inquiries",{"2":{"142":1}}],["inbox",{"2":{"140":1}}],["inbound",{"2":{"7":1,"39":1,"110":1}}],["invocation",{"2":{"215":1}}],["involves",{"2":{"136":1}}],["invoked",{"2":{"91":1}}],["invalid",{"2":{"89":1}}],["invited",{"2":{"43":1}}],["invites",{"2":{"43":1,"44":1}}],["invite",{"0":{"30":1,"44":1},"2":{"44":1}}],["incremented",{"2":{"195":1}}],["inconsistent",{"2":{"183":1}}],["incoming",{"2":{"72":1,"73":1,"140":1,"142":1}}],["included",{"2":{"269":1}}],["include",{"2":{"87":1,"93":1,"165":1,"255":1}}],["includes",{"2":{"16":1,"134":1,"178":1,"245":1}}],["including",{"2":{"11":1,"102":1,"191":1}}],["input",{"2":{"49":1,"160":1,"173":1}}],["info",{"2":{"36":1,"96":1,"253":1}}],["information",{"0":{"125":1},"2":{"8":1,"19":1,"38":1,"92":1,"113":1,"114":1,"134":1,"176":1,"182":1,"185":1,"197":1,"204":1}}],["inference",{"2":{"22":1,"24":1,"25":1}}],["infrastructure",{"0":{"262":1},"1":{"263":1,"264":1,"265":1},"2":{"19":1,"21":1,"24":1,"25":1,"256":1,"263":1,"277":1}}],["inflate",{"2":{"19":1}}],["into",{"2":{"18":1,"19":1,"39":1,"55":1,"110":1,"131":1,"132":1,"146":1,"180":1,"193":1,"206":1,"217":1,"222":1,"247":1,"258":1,"287":1}}],["introduction",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"26":1}}],["integer",{"2":{"232":1}}],["integrated",{"2":{"144":1,"147":1}}],["integrating",{"2":{"35":1}}],["integration",{"2":{"7":1,"32":1,"33":4}}],["intent",{"2":{"29":3}}],["intents",{"2":{"29":1}}],["intelligence",{"2":{"19":1}}],["intercepted",{"2":{"223":1}}],["internal",{"2":{"173":1}}],["internet",{"2":{"19":1}}],["intervention",{"2":{"187":1}}],["intervene",{"2":{"150":1}}],["interval",{"2":{"100":1,"152":1,"153":1,"196":1,"232":2}}],["interactive",{"2":{"98":1,"101":1}}],["interactions",{"2":{"176":1}}],["interaction",{"0":{"92":1,"142":1,"150":1,"156":1,"165":1,"186":1,"204":1}}],["interact",{"2":{"27":1,"33":1,"35":1,"47":1,"58":1,"64":1,"70":1,"92":1,"103":1,"147":1}}],["interference",{"2":{"205":1}}],["interfering",{"2":{"5":1}}],["interface",{"2":{"7":1,"23":1,"33":1,"155":1}}],["inspect",{"2":{"86":1,"92":1}}],["inspection",{"2":{"8":1}}],["instruction",{"2":{"189":1,"196":1}}],["instantly",{"2":{"223":1}}],["instances",{"2":{"287":1}}],["instance",{"2":{"124":1,"125":1,"172":1,"270":1}}],["install",{"0":{"249":1,"250":1},"1":{"251":1},"2":{"93":1,"122":1,"245":1,"249":3,"251":1,"255":1}}],["installation",{"0":{"16":1,"245":1},"1":{"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1},"2":{"244":2}}],["instead",{"2":{"92":1,"169":1,"277":1}}],["instinct",{"2":{"19":1}}],["inside",{"2":{"8":1,"101":1,"143":1,"160":1,"245":1,"247":1}}],["indices",{"2":{"247":1,"258":1}}],["indicator",{"2":{"184":1}}],["indicators",{"2":{"49":1,"51":1,"68":1,"69":1}}],["individual",{"2":{"4":1,"45":1,"62":1,"69":1,"73":1,"120":1}}],["indexed",{"2":{"260":1}}],["indexes",{"2":{"183":1}}],["indexing",{"2":{"22":1,"24":1,"178":1,"263":1,"277":1}}],["index",{"2":{"22":1,"183":1,"185":2,"257":1}}],["independently",{"2":{"206":1}}],["independent",{"2":{"1":1,"8":1,"9":1,"12":1,"95":1,"158":1,"205":1,"207":1,"215":1}}],["in",{"0":{"65":1,"209":1,"210":1,"256":1,"259":1,"260":1},"1":{"257":1,"258":1,"259":1,"260":1,"261":2,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1},"2":{"3":1,"4":1,"5":1,"7":1,"8":2,"9":2,"10":1,"12":1,"14":1,"19":1,"21":1,"23":3,"24":1,"25":1,"28":1,"30":1,"31":1,"33":1,"34":1,"35":1,"36":2,"37":1,"39":3,"40":2,"41":1,"43":3,"45":1,"48":1,"49":1,"50":2,"53":1,"54":1,"55":1,"56":1,"59":1,"60":2,"61":2,"62":2,"65":1,"67":1,"72":1,"75":1,"79":2,"81":1,"87":1,"88":2,"89":3,"92":1,"94":1,"96":2,"99":1,"100":2,"102":1,"105":1,"108":1,"110":1,"115":1,"116":1,"117":1,"121":1,"123":1,"125":1,"127":1,"128":1,"137":1,"138":1,"139":1,"142":2,"143":1,"148":2,"149":1,"150":1,"153":2,"159":1,"163":1,"165":1,"168":1,"169":2,"171":1,"173":1,"174":1,"177":2,"178":1,"179":1,"180":1,"181":1,"183":2,"186":1,"190":1,"192":1,"193":1,"199":1,"201":1,"202":2,"207":1,"212":1,"215":1,"219":1,"220":2,"223":1,"226":1,"241":1,"242":1,"243":1,"245":1,"246":1,"247":3,"250":1,"251":2,"252":1,"254":1,"255":2,"256":3,"258":1,"259":1,"260":1,"264":1,"265":2,"266":1,"268":1,"269":1,"270":1,"271":1,"273":1,"278":1,"286":1,"287":2,"288":1}}],["italic",{"2":{"51":1,"57":1}}],["iterate",{"2":{"24":1}}],["itself",{"2":{"150":1,"186":1,"193":1}}],["its",{"2":{"1":2,"5":1,"12":1,"23":1,"76":1,"89":1,"90":1,"95":1,"97":2,"99":1,"100":2,"102":1,"109":1,"121":1,"140":1,"142":1,"143":2,"146":1,"150":2,"152":1,"156":2,"158":1,"164":1,"165":1,"171":1,"186":1,"188":1,"195":1,"202":1,"204":1,"205":1,"206":1,"214":1,"215":1,"221":1,"243":1,"260":1,"261":1,"266":1,"268":1,"269":1,"274":1,"276":1,"277":1,"279":1,"281":1,"284":1}}],["it",{"2":{"1":1,"19":9,"24":2,"25":1,"27":1,"28":2,"30":2,"41":1,"47":1,"48":2,"50":1,"58":1,"64":1,"66":1,"89":1,"103":1,"104":1,"110":1,"122":1,"124":1,"125":1,"126":1,"129":1,"142":2,"148":1,"151":2,"156":1,"167":1,"174":1,"188":2,"189":1,"190":2,"197":1,"198":1,"213":1,"216":1,"247":4,"250":1,"256":1,"258":1,"260":1,"272":1,"274":1,"279":1,"282":1}}],["issues",{"2":{"184":1}}],["issue",{"2":{"117":1,"154":1,"184":1}}],["isolated",{"0":{"122":1},"2":{"5":1,"22":1,"23":1,"24":1,"95":1,"121":1,"143":1,"243":1}}],["isolation",{"0":{"5":1,"206":1},"2":{"121":1}}],["is",{"0":{"1":1},"2":{"1":1,"18":1,"19":3,"20":1,"22":2,"23":2,"25":2,"40":1,"44":1,"48":1,"53":1,"56":1,"61":1,"64":1,"66":1,"67":1,"75":2,"79":1,"81":1,"86":1,"87":1,"89":1,"92":1,"95":1,"99":1,"102":1,"111":1,"113":1,"119":1,"124":1,"126":1,"127":1,"131":1,"133":1,"150":1,"152":2,"153":1,"162":1,"164":1,"165":1,"171":1,"172":1,"182":1,"183":1,"184":3,"185":1,"187":1,"188":1,"189":1,"190":1,"195":3,"198":1,"205":1,"207":1,"209":2,"215":1,"217":1,"241":1,"243":1,"244":1,"245":1,"247":1,"250":2,"253":1,"254":1,"256":1,"266":1,"267":1,"271":1,"272":1,"277":1,"282":1,"283":2,"287":1,"288":1}}],["especially",{"2":{"209":1}}],["error",{"2":{"154":1,"184":1}}],["errors",{"2":{"89":1,"155":1}}],["efficient",{"2":{"247":1}}],["effort",{"2":{"100":2,"232":1}}],["effects",{"0":{"74":1}}],["effect",{"0":{"72":1},"2":{"72":2,"74":1,"75":1,"77":1,"81":1,"82":1,"83":1,"84":1,"100":1,"232":1}}],["etc",{"0":{"209":1},"2":{"44":1,"117":1,"223":1,"247":1}}],["elements",{"2":{"86":1}}],["element",{"2":{"42":1,"44":1,"46":1}}],["else",{"2":{"19":1,"21":1}}],["e",{"2":{"34":1,"42":2,"43":2,"54":3,"73":2,"116":1,"138":1,"145":1,"148":1,"149":1,"160":2,"161":1,"168":2,"173":3,"183":1,"189":3,"195":1,"201":2,"225":2,"232":1,"249":1,"255":1,"274":1,"287":2,"288":1}}],["edge",{"0":{"282":1,"283":1},"1":{"283":1,"284":1,"285":1,"286":1},"2":{"24":1,"282":2,"283":2,"284":1,"285":2,"287":2,"288":1,"289":2,"290":1}}],["editor",{"2":{"144":1,"148":1,"220":1}}],["editing",{"0":{"147":1,"221":1},"1":{"148":1,"149":1},"2":{"124":1,"256":1}}],["edit",{"2":{"1":1,"8":1,"23":1,"90":1,"98":1,"148":1,"171":1,"174":2,"181":1,"202":1,"221":1,"243":1,"250":1,"261":1,"267":1}}],["easily",{"2":{"222":1}}],["easy",{"2":{"23":1}}],["each",{"2":{"3":1,"4":1,"5":2,"6":1,"9":1,"12":1,"23":3,"24":1,"34":1,"48":1,"72":1,"74":1,"79":1,"82":1,"106":1,"114":1,"158":1,"170":1,"186":1,"196":1,"205":1,"206":1,"212":1,"215":2,"243":1,"256":1}}],["evaluate",{"2":{"115":1,"119":1}}],["evaluated",{"2":{"75":1,"78":1,"190":1}}],["evaluation",{"0":{"75":1}}],["even",{"2":{"151":1}}],["event",{"2":{"39":1,"110":1}}],["events",{"0":{"39":1},"2":{"39":1,"161":1}}],["eventually",{"2":{"19":1}}],["everyone",{"2":{"77":1,"81":1,"83":1}}],["everything",{"2":{"22":1,"25":1,"245":1}}],["every",{"2":{"1":1,"18":1,"19":1,"21":1,"23":1,"73":1,"121":1,"143":1,"154":1,"190":5,"193":1,"194":1}}],["evolves",{"2":{"19":1}}],["economics",{"2":{"19":1}}],["emmamultilingualneural",{"2":{"284":1}}],["embedded",{"2":{"245":1,"246":1}}],["embeddings",{"2":{"178":1,"257":1}}],["embedding",{"2":{"11":1,"100":1,"172":2,"173":2,"186":1,"247":4,"257":2,"258":1,"260":2,"265":1,"269":1}}],["embed",{"2":{"30":1,"173":1}}],["empty",{"2":{"19":1,"60":1,"189":1,"279":1}}],["emails",{"2":{"8":1,"135":1,"140":2,"141":1,"142":1,"193":1,"194":2}}],["email",{"0":{"135":1,"136":1,"137":1,"139":1,"238":2},"1":{"136":1,"137":1,"138":2,"139":1,"140":2,"141":1,"142":1},"2":{"1":1,"7":1,"8":2,"33":2,"98":2,"136":5,"137":2,"138":3,"139":2,"140":3,"141":5,"142":3,"224":2,"238":3,"243":1,"253":1}}],["encodes",{"2":{"247":1}}],["encoding",{"2":{"246":1,"247":3,"253":1,"258":1,"264":1}}],["encountered",{"2":{"117":1,"154":1}}],["env",{"2":{"160":1,"250":1}}],["environment",{"0":{"255":1},"2":{"24":1,"86":1,"100":1,"121":1,"123":1,"126":1,"134":1,"160":1,"249":2}}],["ensure",{"2":{"127":1}}],["ensures",{"2":{"121":1}}],["enabling",{"2":{"104":1,"111":1,"151":1,"197":1}}],["enables",{"2":{"50":1,"56":1,"89":1,"218":1}}],["enabled",{"2":{"43":1,"44":1,"49":2,"61":1,"67":1,"69":1,"100":3,"115":2,"140":3,"153":1,"189":1,"191":1,"194":1,"232":3,"246":1}}],["enable",{"0":{"37":1},"2":{"8":1,"29":1,"31":1,"34":1,"37":1,"38":1,"43":1,"49":3,"55":1,"60":1,"68":1,"100":1,"109":1,"112":2,"163":1,"173":1,"230":2,"247":3,"264":1}}],["en",{"2":{"89":1,"232":2,"284":1}}],["engines",{"0":{"199":1},"2":{"197":1,"199":2,"255":1}}],["engine",{"2":{"89":1,"99":1,"100":1,"201":2}}],["engineered",{"2":{"6":1}}],["engineering",{"0":{"6":1},"2":{"23":1}}],["entries",{"2":{"113":1,"114":3,"119":1,"155":1,"181":1,"185":1,"271":1}}],["entry",{"2":{"66":1,"212":1}}],["entire",{"2":{"70":1,"73":1,"77":1,"79":1,"97":1,"222":1}}],["enter",{"2":{"18":1,"36":1,"180":1}}],["enterprise",{"2":{"7":1,"33":2,"35":1}}],["endpoint",{"2":{"60":1,"161":1,"274":1}}],["ending",{"2":{"54":1}}],["enough",{"2":{"19":1}}],["exa",{"2":{"199":1}}],["exact",{"2":{"173":1}}],["examples",{"0":{"80":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1},"2":{"190":1,"230":1,"241":1}}],["example",{"0":{"218":1},"2":{"79":1,"182":1,"225":1,"232":1,"233":1}}],["exchanged",{"2":{"162":1}}],["except",{"2":{"83":1}}],["exist",{"2":{"124":1}}],["existing",{"2":{"119":1,"129":1,"181":1,"210":1}}],["expiration",{"2":{"253":1}}],["expires",{"2":{"66":1}}],["explanation",{"2":{"189":1}}],["explicitly",{"2":{"72":2}}],["explicit",{"2":{"22":1,"24":1}}],["exposed",{"2":{"164":1,"165":1}}],["exporting",{"2":{"130":1}}],["export",{"0":{"130":1,"131":1},"1":{"131":1,"132":1,"133":1},"2":{"5":1,"8":1,"92":1,"98":1,"131":1,"163":2}}],["expression",{"2":{"189":1,"193":1,"196":1}}],["expressions",{"2":{"13":1,"23":1,"187":1}}],["express",{"2":{"114":1}}],["expensive",{"2":{"21":1}}],["experienced",{"2":{"24":1}}],["experience",{"2":{"18":1,"144":1}}],["executable",{"2":{"160":1}}],["executing",{"2":{"124":1}}],["executions",{"2":{"189":1}}],["execution",{"0":{"195":1},"2":{"9":1,"13":1,"22":1,"98":2,"154":1,"191":1,"196":1,"207":1,"239":1}}],["executes",{"2":{"160":1,"188":1,"195":1}}],["execute",{"2":{"1":1,"5":1,"8":1,"23":1,"101":1,"121":1,"122":1,"152":1,"153":1,"223":1,"226":1}}],["extending",{"0":{"158":1}}],["external",{"0":{"209":1},"2":{"8":1,"12":1,"34":1,"73":1,"157":1,"158":1,"178":1,"187":1,"197":1,"247":1,"258":1}}],["extraction",{"2":{"256":1,"268":1,"276":1,"281":1}}],["extracted",{"2":{"132":1,"215":1}}],["extract",{"2":{"42":1,"180":1,"267":1}}],["extracts",{"2":{"6":1}}],["extra",{"2":{"16":1}}],["ok",{"2":{"154":1}}],["okay",{"2":{"19":1}}],["old",{"2":{"118":1,"155":1,"209":1}}],["older",{"2":{"116":1,"155":1,"182":1}}],["o1",{"2":{"100":1,"173":1}}],["observe",{"2":{"92":1}}],["obtain",{"2":{"34":1,"42":1}}],["oem",{"2":{"19":1}}],["os",{"2":{"19":1}}],["occasional",{"2":{"19":1}}],["output",{"2":{"160":1,"226":1,"284":1}}],["outgoing",{"2":{"140":1,"142":1}}],["outdated",{"2":{"113":1,"114":1}}],["outbox",{"0":{"141":1},"2":{"98":1,"141":1,"142":1,"238":2}}],["outbound",{"2":{"7":1}}],["outcome",{"2":{"75":1}}],["outside",{"2":{"33":1}}],["out",{"2":{"19":1,"247":1}}],["our",{"2":{"18":1,"19":1}}],["only",{"2":{"48":1,"72":1,"77":1,"79":2,"82":1,"84":1,"85":1,"92":1,"182":1,"207":2,"226":4,"247":1,"250":1,"257":1,"258":1,"260":1,"263":1}}],["online",{"2":{"25":1}}],["once",{"2":{"40":1,"48":1,"61":1,"66":1,"86":1,"97":1,"163":1,"164":1,"165":1,"169":1,"198":1,"267":1,"276":1,"281":1}}],["on",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"16":1,"18":2,"19":1,"21":1,"22":1,"25":2,"34":2,"41":1,"42":1,"48":1,"54":1,"56":1,"66":2,"73":1,"92":1,"97":1,"104":1,"106":1,"108":1,"115":1,"142":1,"146":1,"153":1,"162":1,"164":1,"171":1,"173":1,"178":1,"182":1,"189":1,"201":1,"202":1,"205":1,"210":1,"213":1,"215":1,"245":1,"247":2,"250":1,"254":1,"286":1}}],["one",{"0":{"249":1},"2":{"16":1,"25":1,"53":1,"66":1,"87":1,"166":2,"170":2,"177":1,"206":1,"215":1,"256":1,"268":1,"270":1}}],["opus",{"2":{"284":1}}],["opt",{"2":{"160":1}}],["optimize",{"2":{"182":1}}],["optimized",{"2":{"119":1}}],["optimizes",{"2":{"113":1}}],["optimizing",{"2":{"14":1}}],["options",{"2":{"232":2,"284":2}}],["optionally",{"2":{"77":1,"100":1,"116":1,"182":1}}],["optional",{"0":{"50":1,"56":1,"68":1},"2":{"49":1,"79":1,"89":4,"189":1,"196":1,"246":1,"253":1}}],["option",{"2":{"42":2,"232":1}}],["operational",{"2":{"184":1}}],["operation",{"2":{"133":1}}],["operations",{"0":{"112":1,"123":1,"144":1,"163":1,"179":1},"1":{"124":1,"145":1,"146":1,"180":1,"181":1},"2":{"8":1,"12":1,"124":1,"150":1,"267":1,"276":2,"281":2}}],["operates",{"2":{"121":1,"256":1}}],["operate",{"2":{"25":1}}],["openssl",{"2":{"250":1}}],["opensearch",{"2":{"247":2,"258":2,"264":1}}],["opening",{"2":{"215":1}}],["openviking",{"0":{"272":1,"273":1,"274":1,"275":1},"1":{"273":1,"274":1,"275":1,"276":1},"2":{"177":1,"269":1,"271":1,"272":1,"273":1,"274":2,"275":1,"276":2}}],["open",{"0":{"81":1,"83":1},"2":{"25":1,"30":1,"35":1,"36":1,"44":1,"48":1,"52":1,"54":1,"56":1,"63":1,"66":1,"76":1,"86":1,"91":1,"101":1,"148":1,"162":1,"177":1,"220":1,"266":1,"270":2,"275":1,"280":1,"285":1,"288":1}}],["openclaw",{"0":{"24":1},"2":{"24":1}}],["openai",{"2":{"11":2,"100":1,"167":1,"168":2,"169":1,"173":3,"233":2,"247":1}}],["overlay",{"2":{"251":1}}],["overlap",{"2":{"114":1}}],["overview",{"0":{"18":1,"33":1,"98":1},"1":{"34":1},"2":{"98":1}}],["over",{"2":{"14":1,"18":1,"113":1,"114":1,"134":1,"161":1,"182":1,"284":1}}],["oauth2",{"2":{"30":1}}],["oauth",{"0":{"162":1,"169":1},"2":{"7":1,"11":1,"12":1,"33":1,"98":1,"162":6,"169":4}}],["often",{"2":{"100":1,"153":1}}],["official",{"0":{"46":1,"52":1,"63":1},"2":{"30":1,"39":1,"47":1,"54":2,"249":1}}],["off",{"0":{"263":1},"2":{"19":1,"115":1,"153":1,"183":1,"257":1,"260":1,"269":1}}],["of",{"2":{"6":1,"8":1,"10":1,"11":1,"18":2,"19":3,"23":1,"43":1,"45":1,"50":1,"53":1,"56":1,"73":2,"83":1,"92":1,"99":1,"100":1,"114":3,"115":1,"116":1,"117":2,"119":1,"123":1,"125":1,"126":1,"129":1,"134":2,"141":2,"154":2,"156":2,"158":1,"160":2,"161":2,"168":2,"169":1,"177":1,"182":1,"184":1,"185":1,"189":3,"190":3,"193":1,"206":1,"207":2,"215":2,"216":1,"228":1,"246":1,"247":2,"253":1,"256":1,"258":1,"270":1,"277":1}}],["others",{"2":{"215":1,"246":1}}],["other",{"0":{"215":1},"2":{"3":1,"5":1,"15":1,"23":1,"84":1,"121":1,"184":1,"196":1,"199":1,"201":1,"205":1,"207":1}}],["orchestrated",{"2":{"245":1}}],["oriented",{"2":{"196":1}}],["ordering",{"2":{"75":1}}],["order",{"2":{"75":1,"78":1}}],["organized",{"2":{"287":1}}],["organize",{"2":{"213":1}}],["organization",{"2":{"38":1,"58":1,"279":2}}],["org",{"2":{"42":1,"43":2}}],["or",{"2":{"1":1,"3":3,"8":1,"10":1,"16":1,"23":2,"33":1,"34":1,"35":1,"42":1,"44":1,"45":1,"57":1,"59":1,"61":1,"66":1,"70":2,"72":1,"75":1,"77":2,"87":2,"89":3,"92":2,"93":1,"100":1,"109":2,"113":1,"114":2,"115":1,"117":1,"119":2,"121":2,"124":1,"125":1,"127":1,"130":1,"133":1,"136":1,"142":1,"146":2,"150":1,"152":1,"153":1,"154":2,"155":1,"156":1,"161":1,"163":3,"167":1,"171":1,"172":1,"173":1,"177":1,"178":1,"181":1,"182":1,"184":1,"186":1,"187":1,"198":1,"205":1,"210":1,"212":1,"221":1,"222":1,"232":5,"237":2,"239":1,"240":1,"243":1,"245":1,"249":1,"250":3,"258":1,"260":1,"267":1,"269":1,"271":1,"272":1}}],["owner",{"2":{"72":1,"75":1,"82":1,"186":1,"226":4,"230":5,"231":1,"232":1,"233":2,"234":1,"235":1,"236":1}}],["own",{"2":{"1":3,"5":1,"12":1,"15":1,"23":3,"95":1,"100":1,"121":1,"140":1,"143":1,"150":1,"158":1,"199":1,"205":1,"206":1,"243":2,"269":1}}],["lt",{"2":{"230":8,"231":2,"233":4,"234":1,"235":1,"236":1,"241":1}}],["leave",{"2":{"189":1}}],["leaving",{"2":{"147":1}}],["least",{"2":{"166":2}}],["lead",{"2":{"114":1}}],["lets",{"2":{"79":1,"92":1}}],["level",{"2":{"73":2,"79":1,"100":1,"190":1,"253":1}}],["left",{"2":{"28":1,"36":1}}],["less",{"2":{"25":1}}],["ll",{"2":{"19":1}}],["llms",{"2":{"19":1}}],["llm",{"0":{"11":1,"166":1,"167":1},"1":{"167":1,"168":2,"169":2,"170":2,"171":2,"172":1,"173":1,"174":1,"175":1},"2":{"11":1,"24":1,"99":1,"100":3,"115":1,"153":1,"166":1,"167":1,"223":1}}],["linux",{"2":{"254":1}}],["line",{"2":{"141":1,"160":1,"251":1}}],["link",{"2":{"111":1,"136":1}}],["linked",{"2":{"56":1}}],["links",{"2":{"30":1,"51":1,"57":1,"87":1,"244":1}}],["listen",{"2":{"253":1}}],["listed",{"2":{"82":1}}],["listing",{"2":{"226":1}}],["lists",{"2":{"164":1,"212":1,"258":1}}],["list",{"2":{"70":1,"83":1,"108":1,"118":1,"128":1,"129":1,"145":1,"160":1,"164":1,"169":1,"170":1,"171":1,"173":2,"174":1,"181":1,"191":2,"207":1,"225":1,"228":1,"230":3,"231":2,"233":3,"234":2,"235":2,"236":2,"240":2,"241":4,"247":1,"260":1,"274":1,"279":1}}],["limit",{"2":{"189":1,"196":1}}],["limited",{"2":{"66":1}}],["limits",{"2":{"13":1}}],["lifecycle",{"0":{"124":1},"2":{"97":1,"98":1,"123":1,"134":1}}],["life",{"2":{"19":1}}],["live",{"2":{"19":1}}],["lightweight",{"2":{"247":1,"257":1}}],["lighter",{"2":{"24":1,"247":1}}],["light",{"2":{"15":1}}],["like",{"2":{"1":1,"19":1,"22":1,"23":1,"25":2,"39":1,"87":1,"92":1,"100":1,"124":1,"136":1,"167":1,"169":1,"172":1,"198":1}}],["lookup",{"2":{"247":1}}],["looked",{"2":{"19":1}}],["losing",{"2":{"206":1}}],["lose",{"2":{"114":1}}],["lost",{"2":{"102":1}}],["logging",{"2":{"253":1}}],["logs",{"0":{"117":1,"118":1,"154":1,"155":1,"239":1},"1":{"118":1,"155":1},"2":{"98":3,"118":1,"155":1,"156":1,"224":1,"239":3,"254":2}}],["login",{"2":{"42":3,"66":3,"67":1,"252":1}}],["log",{"2":{"36":1,"48":1,"59":1,"118":1,"134":1,"141":1,"154":1,"155":1,"253":1}}],["load",{"2":{"155":2}}],["loaded",{"2":{"23":1}}],["loads",{"2":{"6":1}}],["localhost",{"2":{"252":3}}],["locally",{"2":{"247":1,"258":1,"264":1}}],["locale",{"2":{"86":1,"89":2,"100":1}}],["local",{"0":{"160":1},"2":{"20":1,"21":1,"22":1,"24":1,"25":1,"131":1,"132":1,"146":2,"160":1}}],["lower",{"2":{"116":1}}],["lowest",{"2":{"75":1}}],["low",{"2":{"19":1,"100":1,"232":1}}],["longer",{"2":{"19":1,"90":1,"114":1,"181":1,"209":1,"214":1,"261":1}}],["long",{"2":{"1":1,"18":1,"21":1,"25":1,"43":1,"94":1,"117":1,"154":1,"176":1,"186":1,"209":1,"243":1,"268":1}}],["launch",{"2":{"124":1}}],["large",{"2":{"113":1}}],["lark",{"0":{"35":1},"1":{"36":1,"37":1,"38":1,"39":1,"40":1},"2":{"1":1,"4":1,"7":1,"23":1,"33":1,"35":1,"106":1,"243":1}}],["later",{"2":{"126":1}}],["latest",{"2":{"26":1,"145":1,"155":1,"249":1,"254":1,"255":2}}],["late",{"2":{"19":1}}],["latency",{"2":{"18":1}}],["languages",{"2":{"148":1,"247":1,"258":1,"282":1,"284":1,"289":1}}],["language",{"2":{"6":1,"100":2,"189":1,"193":1,"196":1,"232":3,"247":1,"284":1}}],["last",{"2":{"6":1,"23":1,"212":2,"237":1}}],["layers",{"2":{"287":1}}],["layer",{"2":{"6":1,"19":1,"20":1}}],["two",{"2":{"136":1,"192":1}}],["tutorial",{"2":{"54":1}}],["turning",{"2":{"19":1}}],["turn",{"2":{"6":1,"18":1,"23":1,"114":1}}],["typical",{"2":{"87":1}}],["typing",{"2":{"49":1,"51":1,"68":2,"69":1}}],["type",{"2":{"42":3,"73":1,"77":3,"79":2,"84":2,"138":1,"160":1,"161":1,"163":1,"173":2,"178":1,"207":2,"210":1,"212":2,"237":1,"259":1,"273":1,"278":1,"283":1,"287":1,"288":1}}],["types",{"0":{"73":1,"159":1,"207":1},"1":{"160":1,"161":1},"2":{"9":1,"11":1,"51":1,"70":1,"207":2,"270":1}}],["title",{"2":{"212":1,"213":1}}],["timing",{"2":{"196":1}}],["timezone",{"2":{"86":1,"89":2,"190":2,"253":2}}],["timeout",{"2":{"43":2,"253":1}}],["timestamp",{"2":{"141":1}}],["timestamps",{"2":{"129":1}}],["times",{"2":{"13":1,"23":1,"189":1}}],["time",{"0":{"19":1,"198":1},"2":{"8":1,"9":1,"14":1,"15":1,"19":3,"62":1,"93":1,"113":1,"117":1,"124":1,"125":1,"134":1,"154":1,"170":1,"182":2,"183":1,"197":1,"204":1}}],["tiny",{"2":{"19":1}}],["t",{"2":{"19":6,"21":2,"124":1,"151":1,"223":1,"247":1}}],["truncated",{"2":{"241":1}}],["true",{"2":{"194":1,"232":3,"255":1}}],["tree",{"2":{"144":1}}],["treat",{"2":{"24":1}}],["troubleshooting",{"2":{"142":1,"184":1}}],["traits",{"2":{"217":1}}],["trail",{"2":{"117":1}}],["trash",{"2":{"174":1,"221":1}}],["translate",{"2":{"193":1}}],["transport",{"2":{"161":1}}],["transfer",{"2":{"146":1}}],["track",{"2":{"215":1}}],["tracked",{"2":{"142":1}}],["tracks",{"2":{"134":1}}],["traditional",{"2":{"138":1}}],["trade",{"2":{"19":1}}],["trapped",{"2":{"21":1}}],["travels",{"2":{"19":1}}],["triggering",{"2":{"187":1}}],["trigger",{"2":{"82":1,"116":1,"142":1,"152":1,"153":1,"196":1,"215":1}}],["triggers",{"2":{"13":1,"100":1,"189":1,"195":1,"207":1}}],["triggered",{"2":{"9":1,"117":1,"154":1,"188":1,"207":1,"215":1}}],["tts",{"0":{"282":1,"283":1,"287":1},"1":{"283":1,"284":1,"285":1,"286":1,"288":1,"289":1,"290":1},"2":{"8":1,"282":1,"283":1,"285":3,"287":7,"288":2,"289":1,"290":1}}],["thousands",{"2":{"114":1}}],["those",{"2":{"18":1}}],["than",{"2":{"24":1,"116":1,"182":1,"247":2,"258":1}}],["that",{"2":{"8":1,"9":1,"10":1,"18":1,"19":8,"20":1,"25":4,"33":1,"56":1,"72":1,"85":1,"91":1,"95":1,"98":1,"100":1,"104":1,"113":1,"114":2,"150":1,"152":1,"154":1,"156":1,"162":1,"172":1,"175":1,"181":1,"184":1,"186":1,"189":1,"193":1,"198":1,"223":1,"226":1,"247":1,"266":1,"268":1,"270":1,"272":2,"277":1}}],["thing",{"2":{"19":1,"25":1}}],["thinking",{"2":{"100":1,"196":1}}],["thinks",{"2":{"57":1}}],["think",{"2":{"19":1,"152":1}}],["this",{"2":{"19":2,"26":1,"28":1,"35":1,"39":1,"42":2,"53":1,"54":1,"72":1,"73":1,"75":1,"88":1,"92":1,"100":1,"102":2,"110":2,"114":1,"115":1,"119":1,"121":1,"126":1,"128":1,"133":1,"134":1,"143":1,"152":1,"153":1,"160":1,"161":1,"168":1,"170":1,"183":1,"184":1,"185":1,"187":1,"189":1,"191":1,"193":1,"206":1,"207":1,"208":1,"209":2,"213":1,"250":1,"251":1,"252":1,"259":1,"273":1,"278":1}}],["thread",{"2":{"77":3,"79":3,"205":1}}],["threads",{"2":{"9":1,"19":1}}],["three",{"2":{"18":1,"73":1,"256":1,"269":1,"271":1,"287":1}}],["through",{"2":{"8":1,"23":2,"33":1,"47":1,"53":1,"86":1,"97":1,"178":1,"223":1,"276":1,"277":1,"281":1}}],["these",{"2":{"99":2,"114":1,"150":1,"164":1,"165":1,"215":1,"217":1,"226":1}}],["they",{"2":{"21":2,"45":1,"215":1,"216":1,"223":2}}],["then",{"2":{"19":1,"36":1,"188":1,"250":1,"287":1}}],["there",{"2":{"19":1,"184":1}}],["their",{"2":{"5":1,"21":1,"23":2,"78":1,"129":1,"164":1,"191":1,"228":1}}],["the",{"0":{"17":1,"30":1,"44":1,"66":1,"99":1,"122":1,"193":1,"194":1,"210":1,"284":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"4":1,"6":1,"7":1,"8":1,"9":2,"10":1,"14":2,"16":1,"18":4,"19":12,"21":1,"22":2,"23":3,"24":3,"25":2,"26":1,"28":2,"29":1,"30":3,"31":1,"33":5,"34":5,"35":1,"36":2,"37":1,"38":1,"39":3,"40":3,"41":1,"42":4,"43":5,"44":2,"45":1,"48":3,"49":1,"50":2,"53":1,"54":3,"55":3,"56":4,"57":4,"59":2,"60":4,"61":3,"65":1,"66":5,"67":3,"70":1,"72":3,"73":1,"74":4,"75":5,"77":4,"78":2,"81":1,"82":2,"83":3,"84":1,"85":3,"86":3,"87":1,"88":4,"89":3,"91":5,"92":4,"93":3,"96":6,"98":3,"99":11,"100":15,"101":4,"102":5,"105":2,"108":5,"109":2,"111":3,"112":3,"113":3,"114":1,"115":5,"116":5,"117":5,"118":1,"119":9,"120":1,"121":2,"122":3,"123":3,"124":6,"125":6,"126":3,"127":2,"128":4,"129":1,"130":1,"131":2,"132":2,"133":4,"134":3,"137":2,"138":4,"139":2,"140":7,"141":7,"142":3,"143":2,"144":1,"145":4,"146":3,"147":3,"148":4,"149":1,"150":3,"151":1,"152":2,"153":9,"154":6,"155":2,"156":4,"157":1,"159":2,"160":3,"161":3,"162":8,"163":3,"164":7,"165":6,"167":1,"168":9,"169":7,"170":2,"171":6,"173":9,"174":3,"177":5,"178":4,"179":2,"180":2,"181":1,"182":3,"183":6,"184":7,"185":3,"186":6,"188":2,"189":10,"190":3,"191":4,"193":4,"194":2,"195":9,"197":1,"199":2,"201":5,"202":5,"203":4,"204":3,"205":1,"206":3,"207":7,"208":2,"209":5,"210":2,"212":6,"215":4,"216":2,"217":1,"218":2,"219":2,"220":2,"221":3,"222":5,"223":2,"225":3,"226":2,"229":1,"237":1,"239":1,"242":3,"243":1,"245":4,"246":1,"247":11,"249":8,"250":1,"251":3,"253":2,"254":1,"255":3,"256":3,"258":4,"259":2,"260":1,"264":3,"265":2,"266":5,"267":3,"268":1,"269":3,"270":5,"271":1,"273":2,"274":1,"275":4,"276":2,"277":1,"278":2,"279":1,"280":4,"281":2,"283":4,"284":1,"285":3,"286":3,"287":3,"288":7,"290":1}}],["theme",{"2":{"15":1}}],["them",{"2":{"1":1,"6":1,"99":1,"146":1,"163":2,"178":1,"210":1,"243":1}}],["tag",{"2":{"249":1,"255":3}}],["target",{"2":{"34":1,"51":1,"73":1}}],["tabs",{"2":{"97":1,"101":1}}],["tab",{"0":{"98":1,"100":1,"101":1},"2":{"31":1,"34":1,"39":1,"43":1,"49":1,"55":1,"60":1,"65":1,"70":1,"72":1,"76":1,"81":1,"91":1,"92":1,"98":1,"99":1,"100":1,"101":1,"102":1,"105":1,"115":1,"116":2,"117":1,"123":1,"125":1,"130":1,"139":1,"141":1,"143":1,"150":1,"153":1,"154":1,"159":1,"177":2,"179":1,"183":1,"184":1,"185":1,"191":1,"203":1,"219":1,"266":1,"267":1,"268":1,"270":2,"275":1,"280":1,"285":1,"288":1}}],["takes",{"2":{"97":1}}],["take",{"2":{"19":1,"75":1,"252":1}}],["talks",{"2":{"99":1}}],["talk",{"2":{"19":1}}],["tailwind",{"2":{"15":1}}],["task",{"2":{"9":2,"135":1,"153":1,"154":1,"187":1,"189":3,"196":1,"205":1,"207":2,"215":1}}],["tasks",{"0":{"13":1,"187":1,"230":1},"1":{"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1},"2":{"3":1,"8":1,"10":1,"13":1,"23":2,"95":1,"98":1,"100":1,"125":2,"151":1,"156":1,"165":1,"187":1,"196":1,"209":1,"215":1,"224":1}}],["tavily",{"2":{"8":1,"199":1}}],["template",{"2":{"220":1,"249":1}}],["tech",{"2":{"189":1,"230":1}}],["test",{"2":{"171":2,"286":1,"288":2}}],["testing",{"0":{"286":1},"2":{"126":1}}],["terminal",{"0":{"101":1},"2":{"98":2,"101":2}}],["term",{"2":{"94":1,"176":1,"186":1,"247":1,"268":1}}],["team",{"2":{"24":1}}],["teams",{"2":{"3":1}}],["tension",{"2":{"18":1}}],["textarea",{"2":{"180":1}}],["text",{"0":{"148":1},"2":{"8":2,"19":1,"32":1,"45":2,"51":1,"62":1,"69":1,"148":1,"172":1,"173":1,"181":1,"223":1,"247":1,"253":1,"258":1,"287":2}}],["telegram",{"0":{"53":1,"54":1,"209":1},"1":{"54":1,"55":1,"56":1,"57":1},"2":{"1":1,"4":1,"7":1,"23":1,"33":1,"34":1,"53":2,"54":3,"55":1,"56":3,"73":2,"79":1,"84":2,"85":2,"98":1,"104":1,"106":1,"189":1,"194":1,"223":1,"243":1,"244":1}}],["today",{"2":{"189":1,"230":1}}],["toml",{"2":{"148":1,"249":1,"250":4,"251":2,"252":1,"253":1,"255":2,"264":2,"265":2}}],["total",{"2":{"119":1,"185":1,"189":1}}],["toggle",{"2":{"100":2,"112":1,"115":1,"153":1,"163":1,"249":1}}],["topics",{"2":{"209":1}}],["topic",{"2":{"205":1,"213":1}}],["top",{"2":{"75":2,"78":1,"83":1,"189":1,"190":1,"230":1}}],["took",{"2":{"117":1,"154":1}}],["too",{"2":{"19":3,"209":1}}],["toolbar",{"2":{"144":1}}],["tool",{"0":{"164":1},"2":{"12":1,"15":1,"22":1,"157":1,"164":1,"193":1,"198":1,"218":1}}],["tools",{"2":{"8":3,"12":1,"19":1,"24":1,"86":1,"91":1,"92":1,"95":1,"124":1,"150":1,"152":1,"156":1,"158":1,"164":4,"165":2,"188":1,"195":1,"216":1,"217":1,"218":1,"222":1}}],["tokens",{"2":{"34":1,"109":1,"223":1}}],["token",{"0":{"237":1},"2":{"10":1,"28":3,"31":1,"42":3,"43":2,"54":3,"55":1,"66":1,"162":3,"168":1,"169":1,"224":1,"237":1,"247":1,"253":1,"258":1}}],["to",{"0":{"17":1,"24":1,"30":1,"91":1,"119":1,"203":1,"215":1,"266":1,"275":1,"280":1,"285":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"3":1,"4":1,"7":1,"8":2,"12":1,"13":1,"15":1,"16":1,"18":1,"19":2,"21":2,"23":3,"24":1,"25":1,"27":2,"28":3,"29":1,"30":3,"31":1,"32":1,"33":1,"34":3,"35":1,"36":2,"37":1,"38":1,"39":2,"40":2,"41":3,"43":1,"44":1,"45":1,"47":2,"48":2,"49":1,"50":3,"53":1,"54":2,"55":1,"56":2,"57":1,"58":2,"59":2,"60":1,"61":2,"64":2,"65":1,"66":1,"67":1,"70":2,"74":1,"75":2,"76":1,"77":3,"78":3,"79":2,"81":1,"82":1,"83":1,"84":2,"85":1,"86":3,"88":1,"89":1,"91":2,"93":1,"94":1,"96":1,"97":1,"98":1,"99":2,"100":2,"101":2,"102":3,"103":2,"104":1,"106":1,"110":2,"111":1,"114":1,"115":1,"116":2,"119":3,"120":2,"121":1,"124":2,"126":1,"128":1,"129":2,"131":1,"133":2,"134":1,"135":1,"136":3,"138":1,"140":1,"141":1,"142":3,"145":1,"146":3,"147":1,"148":3,"149":1,"150":2,"151":2,"152":1,"153":1,"154":1,"155":1,"157":2,"158":1,"160":1,"161":1,"162":2,"163":2,"164":2,"165":1,"166":2,"167":1,"168":1,"170":3,"171":2,"172":1,"173":1,"174":3,"175":1,"176":1,"180":1,"182":2,"183":3,"184":1,"185":1,"186":1,"187":1,"188":3,"189":2,"191":2,"193":2,"194":1,"195":1,"197":3,"198":1,"199":1,"201":2,"203":2,"204":2,"205":1,"206":1,"207":2,"209":3,"210":1,"213":1,"215":1,"218":1,"221":3,"222":1,"223":1,"226":1,"241":1,"243":1,"244":1,"245":2,"247":4,"249":1,"250":1,"254":1,"255":5,"258":1,"259":1,"260":1,"266":2,"267":2,"268":1,"273":1,"275":2,"276":1,"277":1,"278":1,"279":1,"280":2,"281":1,"283":1,"284":2,"286":2,"287":1,"288":2,"290":1}}],["wrote",{"2":{"19":1}}],["writes",{"2":{"119":1}}],["write",{"2":{"5":1,"8":1,"140":1,"150":1,"218":1}}],["ways",{"2":{"192":1}}],["way",{"2":{"142":1,"158":1,"245":1}}],["warning",{"2":{"102":1}}],["walks",{"2":{"53":1}}],["want",{"2":{"21":2,"25":1,"30":1,"133":1,"183":1,"209":2}}],["wanted",{"2":{"19":2}}],["wasn",{"2":{"19":1}}],["was",{"2":{"19":1,"117":2,"141":1,"154":1,"212":1}}],["wait",{"2":{"19":1}}],["work",{"2":{"207":1,"215":1}}],["working",{"2":{"160":1,"184":1}}],["works",{"0":{"258":1},"2":{"119":1,"208":1,"247":1,"256":1}}],["workspace",{"0":{"122":1},"2":{"58":1,"61":1,"150":1,"249":2,"251":1,"253":1,"279":2}}],["workspaces",{"2":{"33":1}}],["workflows",{"2":{"18":1,"33":1,"256":1}}],["worse",{"2":{"19":1}}],["world",{"2":{"18":1,"33":1}}],["width",{"2":{"89":2}}],["wide",{"2":{"11":1}}],["window",{"2":{"66":1,"169":1,"182":1,"205":1}}],["windows",{"2":{"14":1}}],["will",{"2":{"25":1,"39":1,"44":1,"48":1,"50":1,"54":1,"56":1,"61":1,"66":1,"75":1,"96":1,"102":1,"110":1,"128":1,"162":1,"164":1,"165":1,"169":1,"170":1,"177":1,"193":1,"204":2,"209":1,"220":1,"242":1,"249":1,"250":1,"266":1,"276":1,"281":1}}],["without",{"2":{"5":1,"19":2,"109":1,"121":1,"133":1,"147":1,"163":1,"177":1,"187":1,"205":1,"206":1,"209":1,"222":1,"223":1,"247":2,"250":1,"257":1}}],["within",{"2":{"1":1,"5":1,"23":1,"58":1,"77":1,"121":1,"122":1,"145":1,"217":1}}],["with",{"0":{"82":1,"83":1,"150":1,"208":1},"1":{"209":1,"210":1},"2":{"1":1,"3":2,"5":2,"7":2,"8":2,"12":1,"15":1,"16":1,"18":2,"19":1,"20":1,"22":1,"23":3,"25":1,"27":1,"32":1,"33":2,"35":2,"42":1,"45":1,"47":1,"48":1,"51":1,"54":1,"56":1,"58":1,"62":1,"64":1,"69":1,"70":1,"72":1,"74":2,"83":1,"84":2,"85":1,"89":1,"92":1,"93":1,"94":1,"95":1,"98":1,"99":1,"103":1,"111":1,"119":1,"129":1,"134":1,"140":1,"144":1,"146":1,"147":1,"151":1,"164":1,"169":1,"183":1,"184":1,"190":2,"195":1,"206":1,"207":1,"217":1,"220":1,"223":1,"225":1,"226":1,"242":1,"243":2,"245":1,"246":1,"247":1,"249":2,"250":2,"254":1,"256":3,"258":2,"264":1,"267":1,"269":2,"271":1,"288":1,"290":1}}],["whose",{"2":{"75":1}}],["who",{"2":{"50":1,"56":1,"70":1,"98":1,"226":1,"251":1}}],["whether",{"2":{"117":1,"125":1,"141":1,"154":1,"185":1,"189":1}}],["when",{"2":{"19":2,"22":1,"43":1,"66":1,"69":1,"72":1,"77":1,"91":1,"92":1,"100":1,"115":1,"117":1,"133":1,"134":1,"151":1,"154":1,"164":1,"178":1,"183":1,"188":1,"189":2,"195":1,"204":1,"206":1,"207":4,"209":1,"212":1,"215":1,"241":1,"247":1,"249":1,"251":1,"279":1,"283":1}}],["where",{"2":{"18":1,"19":1,"24":2,"97":1,"210":1}}],["why",{"0":{"21":1,"114":1},"2":{"19":1,"247":1}}],["while",{"2":{"14":1,"19":1,"51":1,"68":1,"69":1,"113":1,"119":1,"247":1,"252":1}}],["which",{"2":{"9":1,"50":1,"56":1,"119":1,"170":1,"188":1,"258":1}}],["whatever",{"2":{"119":1}}],["what",{"0":{"1":1,"20":1},"2":{"18":2,"19":1,"117":1,"189":1,"215":1,"216":1,"244":1,"247":1}}],["week",{"2":{"190":1}}],["weeks",{"2":{"114":1}}],["were",{"2":{"19":1,"134":1}}],["weighted",{"2":{"247":1}}],["weights",{"2":{"247":2,"258":1}}],["weight",{"2":{"19":1}}],["we",{"2":{"18":2,"19":2,"22":1,"24":2,"25":2}}],["wework",{"0":{"58":1},"1":{"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"7":1,"33":1,"106":1}}],["webm",{"2":{"284":1}}],["webp",{"2":{"149":1}}],["websites",{"2":{"87":1,"92":1}}],["websocket",{"2":{"60":2,"61":1}}],["webhook",{"0":{"39":1,"110":1},"2":{"7":1,"39":2,"110":2}}],["web",{"0":{"210":1},"2":{"1":1,"4":1,"7":2,"8":3,"12":1,"15":1,"16":1,"31":1,"33":1,"43":1,"46":1,"49":1,"50":1,"55":1,"56":1,"60":1,"65":1,"98":1,"99":1,"100":2,"147":1,"195":1,"197":1,"199":1,"210":1,"212":1,"223":1,"243":1,"245":1,"246":3,"252":1,"253":2}}],["wechat",{"0":{"64":1,"65":1,"111":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"1":1,"7":2,"33":2,"64":2,"65":1,"66":2,"67":1,"98":1,"106":1,"111":2,"243":1,"244":1}}],["wecom",{"0":{"58":1,"59":1},"1":{"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"1":1,"7":1,"33":2,"58":2,"59":1,"60":2,"61":2,"63":2,"98":1,"106":1,"243":1,"244":1}}],["cp",{"2":{"250":1}}],["cd",{"2":{"250":1}}],["c",{"2":{"230":1}}],["cwd",{"2":{"160":1}}],["cycle",{"2":{"115":1}}],["certain",{"2":{"182":1}}],["certificates",{"2":{"89":1}}],["ceiling",{"2":{"21":1}}],["cni",{"2":{"253":1}}],["cn",{"2":{"89":1,"249":2,"251":3,"255":1}}],["c2c",{"2":{"51":1}}],["curl",{"2":{"249":1}}],["current",{"2":{"92":1,"126":1,"134":1,"145":1,"162":1,"184":1,"189":1,"195":1,"229":1}}],["currently",{"2":{"33":1,"125":1,"189":1,"212":1,"290":1}}],["custom",{"2":{"36":1,"39":1,"59":1,"60":1,"89":1,"161":1,"196":1}}],["cleaning",{"2":{"152":1}}],["clean",{"2":{"133":1,"155":1,"209":1,"218":1}}],["cleaner",{"2":{"19":1}}],["clear",{"2":{"118":1,"155":1}}],["clone",{"2":{"249":1,"250":1}}],["closer",{"2":{"78":1}}],["closed",{"2":{"19":1}}],["cloud",{"2":{"20":1,"21":1,"22":1,"24":1,"25":1,"277":1}}],["class",{"2":{"19":1}}],["clash",{"2":{"19":1}}],["clicks",{"2":{"19":1}}],["click",{"0":{"249":1},"2":{"16":1,"28":2,"31":2,"36":2,"37":1,"38":1,"39":1,"40":1,"43":2,"48":1,"49":2,"50":1,"55":2,"56":1,"60":2,"65":1,"66":2,"77":2,"78":1,"86":1,"88":2,"91":1,"92":1,"96":2,"99":1,"102":1,"108":1,"116":2,"127":1,"128":1,"131":1,"132":1,"138":2,"140":2,"146":1,"148":2,"149":1,"162":2,"163":1,"164":1,"168":2,"169":1,"170":2,"171":1,"173":2,"174":2,"177":1,"183":1,"191":1,"201":1,"203":1,"210":1,"213":1,"220":2,"221":2,"259":2,"266":1,"273":2,"275":1,"278":2,"280":1,"283":2,"284":1,"285":1,"288":3}}],["clicking",{"2":{"8":1,"87":1,"97":1,"210":1}}],["client",{"2":{"11":1,"42":4,"44":1,"46":1,"173":1}}],["china",{"0":{"251":1},"2":{"249":1,"251":2,"255":1}}],["chromium",{"2":{"89":1,"93":3,"255":1}}],["checking",{"2":{"187":1}}],["checks",{"2":{"98":1,"152":1}}],["checked",{"2":{"75":1}}],["check",{"2":{"45":1,"140":1,"162":1,"196":1,"215":1,"249":1}}],["cheap",{"2":{"21":1}}],["choose",{"2":{"34":1,"39":1,"54":2,"77":1,"138":1,"161":1,"163":1}}],["choices",{"2":{"19":1}}],["characters",{"2":{"241":1}}],["changed",{"2":{"183":1}}],["change",{"2":{"78":1,"108":1,"190":1,"209":1,"250":1,"252":1}}],["changes",{"2":{"29":1,"126":1,"134":1,"145":1,"148":1}}],["channels",{"0":{"33":1,"103":1,"105":1,"209":1},"1":{"34":1,"104":1,"105":1,"106":2,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1},"2":{"8":1,"15":1,"33":3,"84":1,"95":1,"98":1,"103":1,"104":1,"208":1,"244":2}}],["channel",{"0":{"27":1,"35":1,"41":1,"47":1,"53":1,"58":1,"64":1,"65":1,"85":1,"108":1,"136":1},"1":{"28":1,"29":1,"30":1,"31":1,"32":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"7":1,"9":1,"10":1,"23":1,"31":1,"34":3,"39":1,"43":1,"49":1,"50":1,"51":1,"55":1,"56":1,"60":1,"61":1,"65":1,"67":1,"70":2,"73":4,"77":6,"79":2,"82":1,"83":1,"84":1,"85":4,"98":1,"108":2,"109":1,"111":1,"112":3,"135":1,"188":1,"189":1,"195":1,"223":1}}],["chatting",{"0":{"61":1,"67":1},"2":{"74":1,"151":1,"207":1}}],["chatbox",{"2":{"24":1}}],["chats",{"2":{"4":1,"35":1,"61":1,"62":1,"96":1,"242":1}}],["chat",{"0":{"81":1},"2":{"1":1,"3":1,"7":1,"9":1,"10":1,"11":2,"15":1,"23":2,"32":1,"33":1,"38":2,"56":1,"72":2,"74":1,"77":1,"79":1,"83":1,"84":1,"85":1,"95":1,"98":1,"99":1,"100":3,"103":1,"104":1,"114":1,"115":1,"142":1,"153":1,"172":1,"173":3,"186":1,"206":1,"207":2,"208":1,"209":1,"210":2,"226":1,"232":1,"237":1,"241":1,"243":1,"256":1}}],["circling",{"2":{"18":1}}],["css",{"2":{"15":1}}],["categorize",{"2":{"222":1}}],["category",{"2":{"19":1}}],["card",{"2":{"97":1,"221":1}}],["carry",{"2":{"19":1}}],["capturing",{"2":{"87":1}}],["captured",{"2":{"128":1}}],["capture",{"2":{"86":1,"126":1}}],["capability",{"0":{"37":1},"2":{"18":1,"20":1,"22":1,"199":1}}],["capabilities",{"0":{"8":1,"158":1},"2":{"6":1,"37":1,"38":1,"98":1,"100":2,"139":1,"173":1,"216":1,"218":1,"222":1,"256":1}}],["caught",{"2":{"19":1}}],["cases",{"2":{"87":1}}],["case",{"0":{"17":1,"110":1,"111":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"196":1,"257":1}}],["called",{"2":{"193":1}}],["callback",{"2":{"39":1,"110":1}}],["calls",{"2":{"22":1,"189":2,"194":1,"195":2,"196":1}}],["call",{"2":{"15":1,"204":1}}],["cannot",{"2":{"251":1}}],["can",{"0":{"81":1},"2":{"1":1,"3":1,"4":1,"5":1,"8":1,"9":1,"10":1,"12":1,"18":1,"19":5,"23":3,"24":2,"33":1,"41":1,"42":2,"45":1,"48":1,"57":1,"61":1,"67":1,"70":2,"72":2,"73":1,"78":1,"82":1,"83":1,"84":1,"85":1,"86":2,"91":1,"92":1,"93":1,"95":1,"97":1,"98":1,"100":2,"104":1,"113":1,"114":1,"115":1,"116":1,"122":1,"140":6,"142":1,"143":1,"150":1,"153":1,"156":1,"158":1,"162":1,"164":2,"170":1,"175":1,"182":1,"183":1,"188":1,"190":1,"193":1,"194":1,"195":1,"198":1,"204":1,"210":1,"215":1,"216":1,"218":1,"223":1,"226":1,"242":1,"249":1,"267":1,"268":1,"272":1,"285":1,"287":2,"288":1}}],["creation",{"2":{"124":1,"129":1,"256":1}}],["creating",{"0":{"88":1,"96":1,"127":1,"138":1,"168":1,"180":1,"192":1,"259":1,"273":1,"278":1,"283":1},"1":{"193":1,"194":1},"2":{"89":1,"99":1,"125":1,"260":1,"274":1,"279":1}}],["creates",{"2":{"208":1}}],["created",{"2":{"91":1,"97":1,"99":1,"140":1,"145":1,"192":1,"203":1,"207":4,"215":2,"266":1,"275":1,"280":1,"283":1}}],["create",{"0":{"28":1,"36":1,"42":1,"48":1,"54":1,"59":1},"2":{"1":1,"3":1,"8":1,"23":1,"34":1,"36":2,"40":1,"48":2,"54":1,"59":1,"79":1,"88":1,"96":2,"98":2,"106":1,"124":1,"127":1,"138":1,"140":1,"145":1,"168":1,"173":1,"175":1,"177":1,"193":2,"194":1,"209":1,"210":1,"225":2,"230":3,"243":1,"250":1,"259":1,"267":1,"270":1,"273":1,"278":1,"283":1,"287":1,"288":1}}],["credential",{"2":{"60":1}}],["credentials",{"2":{"34":2,"36":1,"55":1,"59":1,"66":1,"108":1,"109":1,"167":1,"201":1,"249":1,"253":1}}],["cron",{"0":{"188":1,"190":1},"2":{"9":1,"13":1,"23":1,"98":1,"187":1,"188":1,"189":1,"190":1,"191":1,"193":1,"195":1,"196":1,"207":1,"215":1}}],["cross",{"2":{"4":1,"50":1,"56":1}}],["cohere",{"2":{"247":1}}],["collection",{"2":{"152":1,"260":2}}],["collaborate",{"2":{"3":1,"23":1}}],["corresponding",{"2":{"215":1}}],["corrupted",{"2":{"133":1}}],["cores=chromium",{"2":{"93":1}}],["cores",{"2":{"93":4,"249":1,"255":1}}],["core",{"0":{"93":1,"99":1},"2":{"24":1,"89":1,"93":1,"98":1,"99":1,"100":1,"246":3,"249":1,"250":1}}],["copy",{"2":{"28":1,"30":1,"36":1,"39":1,"48":1,"50":1,"56":1,"110":1}}],["costs",{"2":{"247":1,"257":1}}],["cost",{"2":{"19":1,"258":1}}],["could",{"2":{"19":1}}],["counter",{"2":{"195":1}}],["counts",{"2":{"191":1}}],["count",{"2":{"13":1,"119":1}}],["coding",{"2":{"15":1,"23":1,"218":1}}],["coder",{"2":{"218":3}}],["code",{"0":{"66":1,"111":1},"2":{"8":1,"50":2,"51":1,"56":3,"57":1,"64":1,"66":3,"111":2,"121":1,"218":1,"232":1}}],["conf",{"2":{"250":1}}],["config",{"2":{"77":1,"85":1,"163":1,"190":1,"249":1,"250":3,"251":1,"252":1,"253":2,"255":3,"264":1,"265":1}}],["configuring",{"0":{"89":1,"99":1,"260":1,"274":1,"279":1,"284":1},"1":{"90":1,"261":1},"2":{"33":1,"99":1}}],["configurations",{"2":{"98":1,"134":1,"163":1}}],["configuration",{"0":{"15":1,"27":1,"35":1,"41":1,"47":1,"53":1,"58":1,"64":1,"107":1,"115":1,"153":1,"200":1,"238":1,"253":1},"1":{"28":1,"29":1,"30":1,"31":1,"32":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"108":1,"109":1,"110":1,"111":1,"201":1,"202":1},"2":{"15":1,"34":1,"87":1,"90":1,"98":1,"100":1,"106":7,"108":1,"109":1,"110":1,"112":2,"126":1,"148":1,"162":1,"163":1,"177":1,"184":1,"202":1,"224":1,"249":1,"255":1,"266":1,"286":1}}],["configurable",{"2":{"8":2,"14":1,"95":1,"287":1}}],["configure",{"0":{"29":1,"31":1,"38":1,"39":1,"43":1,"49":1,"55":1,"60":1},"2":{"13":1,"23":1,"34":1,"49":1,"72":1,"76":1,"99":1,"104":1,"105":1,"106":1,"109":1,"115":1,"116":1,"120":1,"136":1,"139":1,"153":1,"159":1,"166":1,"173":1,"175":1,"199":1,"244":1,"260":1,"270":1,"274":1,"279":1,"284":1,"288":1}}],["configured",{"2":{"8":1,"32":1,"33":1,"92":1,"94":1,"119":1,"124":1,"175":1,"177":1,"186":1,"190":1,"198":1,"265":1,"285":1}}],["confirmed",{"2":{"66":1}}],["confirm",{"2":{"66":1,"102":1}}],["confidence",{"2":{"24":1}}],["convert",{"2":{"258":1}}],["converts",{"2":{"247":1}}],["converse",{"2":{"142":1}}],["conversational",{"0":{"193":1}}],["conversations",{"2":{"9":1,"41":1,"45":1,"62":2,"69":1,"79":1,"99":1,"164":1,"176":1,"205":1,"207":1,"213":1,"256":1,"267":1,"287":1}}],["conversation",{"0":{"206":1},"2":{"6":2,"8":1,"9":2,"10":1,"20":1,"23":1,"77":4,"79":3,"114":1,"172":1,"173":1,"180":2,"198":1,"205":1,"206":1,"208":1,"209":1,"222":1,"224":1,"229":1}}],["consists",{"2":{"246":1}}],["consume",{"2":{"223":1}}],["consolidates",{"2":{"113":1}}],["console",{"2":{"37":1,"39":1,"40":1,"59":1}}],["constraint",{"2":{"19":1}}],["concept",{"0":{"87":1,"104":1,"114":1,"122":1,"136":1,"152":1,"158":1,"178":1,"188":1,"198":1,"206":1,"217":1},"1":{"218":1}}],["concepts",{"0":{"71":1},"1":{"72":1,"73":1,"74":1,"75":1}}],["conceptually",{"2":{"19":1}}],["conclusion",{"0":{"25":1}}],["connected",{"2":{"184":1,"188":1,"195":1}}],["connects",{"2":{"161":1,"277":1}}],["connect",{"2":{"12":1,"33":2,"61":1,"103":1,"157":1,"169":1,"197":1,"199":1}}],["connectivity",{"2":{"184":1}}],["connection",{"0":{"159":1},"1":{"160":1,"161":1},"2":{"98":1,"136":1,"160":1,"161":1,"162":2,"163":3,"164":2,"165":1,"167":1,"171":1,"198":1,"253":2}}],["connections",{"0":{"157":1,"231":1},"1":{"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1},"2":{"8":1,"12":1,"105":1,"137":1,"158":1,"159":1,"163":3,"224":1}}],["connecting",{"2":{"7":1,"27":1,"41":1,"47":1,"53":1,"58":1,"64":1,"111":1,"136":1}}],["continue",{"2":{"25":1,"94":1,"267":1,"290":1}}],["continuity",{"2":{"21":1,"25":1}}],["continuously",{"2":{"19":1}}],["controls",{"2":{"186":1,"253":1,"260":1}}],["controlling",{"2":{"73":1}}],["control",{"0":{"70":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1},"2":{"20":1,"22":1,"70":2,"73":1,"76":1,"98":1,"100":1}}],["contain",{"2":{"113":1}}],["contains",{"2":{"26":1,"100":1,"207":3}}],["containerization",{"2":{"21":1}}],["containerized",{"0":{"5":1,"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"20":1,"22":1,"23":1,"24":1,"25":1,"243":1}}],["containers",{"2":{"5":1,"22":1,"23":1,"245":1}}],["containerd",{"2":{"5":1,"16":1,"125":1,"245":2,"246":1,"253":2}}],["container",{"0":{"121":1,"125":1,"134":1,"241":1},"1":{"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1},"2":{"1":2,"5":2,"8":2,"12":1,"15":1,"23":1,"24":1,"95":1,"98":5,"101":3,"102":1,"121":1,"122":1,"123":1,"124":5,"125":4,"126":1,"127":1,"128":1,"130":2,"131":1,"132":1,"133":2,"134":4,"143":1,"146":2,"160":1,"217":1,"221":1,"224":1,"243":1,"247":3,"253":1,"258":1}}],["contact",{"2":{"18":1}}],["contents",{"2":{"132":1}}],["content",{"2":{"8":1,"19":1,"29":1,"32":1,"42":1,"45":1,"51":1,"62":1,"69":1,"86":1,"87":1,"119":1,"148":1,"180":1,"181":1,"210":1,"220":1,"221":1,"241":1}}],["contextually",{"2":{"176":1}}],["contexts",{"0":{"86":1,"90":1},"1":{"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1},"2":{"88":3,"99":1}}],["context",{"0":{"88":1,"89":1,"91":1,"236":1},"1":{"90":1},"2":{"4":1,"6":1,"8":1,"9":2,"12":1,"18":2,"19":1,"21":2,"22":1,"23":1,"25":1,"57":1,"77":1,"86":2,"87":1,"88":2,"89":1,"90":2,"91":3,"92":1,"99":1,"100":1,"157":2,"165":1,"178":1,"188":1,"195":1,"205":1,"206":2,"207":1,"208":1,"209":1,"215":1,"224":1,"229":1}}],["combined",{"2":{"249":1}}],["combining",{"2":{"114":1}}],["com",{"2":{"168":1,"250":1}}],["common",{"0":{"109":1,"254":1},"2":{"148":1,"190":1}}],["communication",{"0":{"104":1},"2":{"100":1,"135":1}}],["communicates",{"2":{"160":1}}],["communicate",{"2":{"41":1}}],["community",{"2":{"27":1,"33":1}}],["command`",{"2":{"218":1}}],["command",{"0":{"225":1},"2":{"9":1,"54":1,"160":3,"188":1,"189":1,"194":1,"195":2,"196":1,"207":1,"208":1,"224":1,"225":2,"230":3,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1}}],["commands",{"0":{"10":1,"223":1,"227":1,"242":1,"254":1},"1":{"224":1,"225":1,"226":1,"227":1,"228":2,"229":2,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1},"2":{"1":1,"5":1,"8":1,"10":3,"13":1,"23":2,"24":1,"30":1,"32":2,"101":1,"121":1,"215":1,"223":3,"224":1,"225":2,"226":4,"228":1,"242":1,"243":1}}],["comes",{"2":{"77":1,"95":1}}],["come",{"2":{"8":1,"9":1}}],["component",{"2":{"144":1}}],["compose",{"2":{"8":1,"16":1,"93":1,"140":1,"245":1,"246":1,"247":1,"248":1,"249":2,"250":3,"251":4,"254":6,"264":2,"265":1}}],["compression",{"0":{"182":1},"2":{"116":1,"182":1}}],["comprehensive",{"2":{"10":1,"199":1,"204":1}}],["compacted",{"2":{"117":1}}],["compact",{"0":{"114":1,"182":1},"2":{"98":1,"116":1,"182":2,"247":1,"258":1,"267":1}}],["compaction",{"0":{"14":1,"113":1,"116":1,"117":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":2,"119":1,"120":1},"2":{"6":1,"14":2,"98":3,"100":4,"113":1,"114":1,"115":6,"116":5,"117":5,"118":1,"119":4,"182":2,"256":1}}],["compared",{"2":{"170":1}}],["compare",{"0":{"24":1}}],["compatible",{"2":{"11":1,"167":1}}],["complement",{"2":{"196":1}}],["completed",{"2":{"117":1,"154":1}}],["completions",{"2":{"11":1,"173":1}}],["complex",{"2":{"8":1,"95":1,"126":1}}],["computer",{"2":{"1":1,"23":1,"122":1,"146":1}}],["sslmode",{"2":{"253":1}}],["sse",{"0":{"161":1},"2":{"12":1,"124":1,"161":1}}],["swap",{"2":{"222":1}}],["switching",{"2":{"183":1,"209":1}}],["switch",{"2":{"10":1,"11":1,"112":1,"210":1}}],["snapshotter",{"2":{"253":1}}],["snapshot",{"0":{"127":1,"128":1},"2":{"127":2,"128":1,"129":1}}],["snapshots",{"0":{"126":1,"129":1},"1":{"127":1,"128":1,"129":1},"2":{"5":1,"98":1,"126":1,"129":1}}],["silently",{"2":{"249":1}}],["silent",{"2":{"249":1}}],["significantly",{"2":{"247":1,"258":1}}],["single",{"2":{"104":1}}],["simultaneously",{"2":{"101":1,"104":1}}],["simple",{"2":{"23":1,"64":1}}],["size",{"2":{"86":1,"173":1}}],["sidebar",{"2":{"28":1,"34":1,"36":1,"88":1,"89":1,"96":1,"137":1,"138":1,"168":2,"199":1,"201":1,"202":1,"210":1,"212":1,"270":1,"288":1}}],["sites",{"2":{"89":1}}],["sit",{"2":{"18":1,"19":1}}],["shipped",{"2":{"256":1}}],["sh",{"2":{"249":12}}],["shut",{"2":{"124":1}}],["shell",{"2":{"101":1}}],["shanghai",{"2":{"89":1}}],["shared",{"2":{"215":1}}],["share",{"2":{"24":1}}],["sharing",{"2":{"22":1,"24":1,"130":1,"163":1}}],["should",{"2":{"56":1,"86":1,"99":2,"153":1,"156":1,"216":1}}],["shows",{"2":{"184":1,"191":1,"212":1,"237":1,"239":1}}],["showing",{"2":{"141":1}}],["shown",{"2":{"48":1,"89":1,"124":1}}],["show",{"2":{"10":1,"49":1,"68":1,"215":1,"224":1}}],["slow",{"2":{"249":1}}],["sludge",{"2":{"19":1}}],["slash",{"0":{"10":1,"223":1},"1":{"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1},"2":{"9":1,"10":2,"32":1,"208":1,"223":2,"242":1}}],["socket",{"2":{"253":1}}],["sogou",{"2":{"199":1}}],["software",{"2":{"122":1}}],["sound",{"2":{"286":1}}],["sources",{"2":{"158":1}}],["source",{"0":{"79":1},"2":{"25":1,"77":1,"79":1,"85":1}}],["soul",{"2":{"8":1}}],["so",{"2":{"19":2,"21":1,"223":1,"247":2,"287":1}}],["some",{"2":{"162":1,"169":1,"225":1,"246":1}}],["someone",{"2":{"21":1}}],["somewhere",{"2":{"19":2}}],["something",{"2":{"18":1,"19":3}}],["smell",{"2":{"19":1}}],["smoother",{"2":{"19":1}}],["small",{"2":{"19":1,"172":1}}],["smarter",{"2":{"18":1}}],["smtp",{"2":{"7":1,"33":1,"136":1,"138":1}}],["scoping",{"2":{"279":2}}],["scoped",{"0":{"85":1},"2":{"206":1}}],["scope",{"0":{"79":1},"2":{"77":1,"79":2,"85":1}}],["scopes",{"2":{"30":1}}],["scale",{"2":{"89":1}}],["scan",{"0":{"66":1},"2":{"64":1,"66":2,"111":1}}],["scratch",{"2":{"183":1}}],["scripts",{"2":{"122":1}}],["script",{"2":{"93":1,"249":2,"251":1}}],["scroll",{"2":{"29":1,"92":1,"102":1}}],["screenshot",{"2":{"92":1}}],["screenshots",{"2":{"8":1,"86":1,"87":1}}],["screen",{"2":{"19":1}}],["scheduling",{"2":{"12":1}}],["schedules",{"0":{"191":1,"192":1},"1":{"193":1,"194":1},"2":{"191":1,"192":1,"194":1}}],["scheduled",{"0":{"13":1,"152":1,"187":1,"230":1},"1":{"188":1,"189":1,"190":1,"191":1,"192":1,"193":1,"194":1,"195":1,"196":1},"2":{"10":1,"13":1,"23":1,"98":1,"152":1,"187":1,"207":1,"215":1,"224":1}}],["schedule",{"0":{"189":1,"196":1,"230":1},"2":{"9":1,"10":1,"23":1,"98":1,"151":1,"188":2,"189":3,"191":1,"193":4,"194":1,"195":4,"196":2,"207":1,"210":1,"215":1,"224":1,"225":2,"230":10,"237":1}}],["spaces",{"2":{"225":1}}],["sparse",{"0":{"247":1,"258":1,"264":1},"2":{"178":1,"183":1,"246":4,"247":9,"249":1,"250":2,"253":2,"257":4,"258":5,"260":2,"264":5,"269":2}}],["split",{"2":{"24":1}}],["spoken",{"2":{"8":1,"287":1}}],["speed",{"2":{"284":2,"286":1,"287":1,"288":1}}],["speech",{"2":{"8":1,"282":1,"285":1,"287":2,"288":1}}],["speaker",{"2":{"19":1}}],["specify",{"2":{"182":1,"201":1}}],["specified",{"2":{"13":1,"23":1,"116":1}}],["specifically",{"2":{"199":1}}],["specification",{"2":{"46":1}}],["specific",{"0":{"84":1},"2":{"4":1,"8":1,"70":1,"73":1,"77":5,"79":2,"85":2,"93":1,"136":1,"163":1,"172":1,"180":1,"186":1,"188":1,"196":1,"198":1,"201":1,"205":1,"249":1,"287":1}}],["special",{"0":{"110":1,"111":1},"2":{"156":1}}],["specialized",{"2":{"8":1,"95":1,"97":1}}],["synthesis",{"2":{"282":1,"286":1,"288":1}}],["synthesized",{"2":{"204":1}}],["synthesize",{"2":{"8":1,"285":1,"287":2,"288":1}}],["syntax",{"2":{"148":1,"190":1}}],["sync",{"2":{"43":1}}],["system",{"2":{"1":2,"18":1,"70":1,"75":1,"121":1,"156":1,"176":1,"184":1,"207":1,"222":2,"243":2,"269":1,"287":1}}],["skill",{"0":{"218":1,"220":1,"240":1},"2":{"8":1,"98":1,"217":1,"218":2,"219":1,"220":1,"221":2,"224":1,"240":2}}],["skills",{"0":{"216":1,"217":1,"219":1,"222":1,"240":1},"1":{"217":1,"218":2,"219":1,"220":2,"221":2,"222":1},"2":{"8":2,"15":1,"23":1,"98":1,"150":1,"152":1,"156":1,"188":1,"216":1,"219":1,"222":3,"224":1}}],["sudo",{"2":{"249":6,"250":1,"254":1}}],["sun=0",{"2":{"190":1}}],["summarize",{"2":{"189":1,"194":2,"230":1}}],["summary",{"2":{"117":1,"154":1,"189":1,"193":1,"225":1,"237":2,"253":1}}],["sure",{"2":{"177":1}}],["survive",{"2":{"18":1}}],["such",{"2":{"86":1,"89":2,"92":1,"100":1,"186":1}}],["succeeds",{"2":{"67":1}}],["successfully",{"2":{"56":1,"117":1,"141":1,"154":1}}],["sustainable",{"2":{"24":1}}],["subsequent",{"2":{"209":1}}],["subscriptions",{"2":{"39":1}}],["subject",{"0":{"73":1},"2":{"73":1,"74":2,"75":1,"77":1,"84":1,"141":2}}],["subjects",{"2":{"72":1,"73":1,"75":1,"82":1,"83":1}}],["submitting",{"2":{"87":1}}],["submit",{"2":{"40":1}}],["sub",{"2":{"9":1,"225":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1}}],["subagent",{"2":{"9":1,"207":3,"210":1,"215":2}}],["subagents",{"2":{"8":2}}],["supported",{"0":{"32":1,"45":1,"51":1,"57":1,"62":1,"69":1,"105":1,"199":1},"1":{"106":1},"2":{"53":1,"173":1,"199":1,"270":1}}],["support",{"0":{"7":1,"11":1,"12":1},"2":{"7":5,"10":1,"11":1,"12":2,"24":1,"32":1,"33":2,"45":1,"49":1,"51":2,"53":1,"57":1,"62":1,"69":2,"146":1,"169":1,"223":1}}],["supports",{"2":{"5":1,"13":1,"23":1,"33":1,"35":1,"100":1,"130":1,"148":1,"157":1,"162":1,"169":1,"173":2,"247":1,"256":1,"258":1,"269":2,"282":1,"287":1}}],["steps",{"0":{"94":1,"120":1,"175":1,"271":1,"290":1},"2":{"136":1,"173":1}}],["step",{"0":{"28":1,"29":1,"30":1,"31":1,"36":1,"37":1,"38":1,"39":1,"40":1,"42":1,"43":1,"44":1,"48":1,"49":1,"50":1,"54":1,"55":1,"56":1,"59":1,"60":1,"61":1,"65":1,"66":1,"67":1},"2":{"99":1,"106":2,"244":2}}],["studio",{"2":{"20":1,"24":1}}],["stopped",{"2":{"125":1,"127":1}}],["stop",{"2":{"98":1,"124":1,"254":1}}],["stops",{"2":{"19":1}}],["stood",{"2":{"19":1}}],["store",{"2":{"28":1,"113":1,"122":1,"267":1}}],["stored",{"2":{"23":2,"162":2,"178":1,"185":1,"217":1,"263":1,"274":1,"279":1}}],["stores",{"2":{"6":1,"86":1,"167":1,"268":1}}],["story",{"0":{"19":1}}],["storage",{"2":{"14":1,"19":1,"22":1,"185":1,"277":1}}],["style",{"2":{"19":1,"89":1}}],["still",{"2":{"18":1}}],["stdio",{"0":{"160":1},"2":{"12":1,"98":1}}],["stable",{"2":{"127":1}}],["stale",{"2":{"114":1,"119":1}}],["state",{"2":{"122":1,"126":1,"127":1,"128":1,"133":1}}],["status",{"0":{"184":1},"2":{"112":1,"117":1,"125":1,"141":1,"152":1,"154":1,"155":1,"162":2,"183":1,"184":2,"185":1,"191":1,"254":1}}],["static",{"2":{"92":1}}],["statistics",{"0":{"185":1},"2":{"10":1,"224":1}}],["stay",{"2":{"22":1}}],["stays",{"2":{"20":1,"25":2}}],["stack",{"2":{"22":1,"25":1,"245":1,"246":1}}],["stakes",{"2":{"19":1}}],["startup",{"2":{"252":2}}],["starts",{"2":{"229":1,"247":1}}],["starting",{"0":{"208":1},"1":{"209":1,"210":1},"2":{"206":1,"250":1}}],["started",{"2":{"19":2,"244":1,"246":1}}],["start",{"0":{"61":1,"67":1},"2":{"9":1,"10":1,"34":1,"44":1,"66":2,"98":1,"116":1,"124":1,"133":1,"183":1,"209":1,"224":1,"249":1,"250":2,"254":1}}],["standardized",{"2":{"158":1}}],["standard",{"2":{"9":1,"99":1,"160":1,"163":1,"190":1,"207":1,"256":1}}],["structure",{"0":{"218":1}}],["structured",{"2":{"1":1,"6":1,"142":1,"176":1,"243":1}}],["strip",{"2":{"242":1}}],["string",{"2":{"89":1}}],["strict",{"2":{"22":1}}],["streamed",{"2":{"45":1,"62":1}}],["stream",{"2":{"19":1}}],["streaming",{"2":{"7":2,"15":1,"33":1,"45":1,"53":1,"57":1,"62":1}}],["saas",{"2":{"269":2,"271":2,"272":1,"277":1}}],["saving",{"2":{"91":1,"126":1}}],["saves",{"2":{"66":1,"170":1}}],["save",{"2":{"5":1,"29":1,"31":1,"39":2,"43":1,"48":1,"49":1,"55":1,"60":1,"77":1,"78":1,"91":1,"99":1,"112":2,"124":1,"131":1,"148":2,"177":1,"203":1,"220":1,"266":1,"275":1,"280":1,"285":1,"288":1}}],["safely",{"2":{"126":1}}],["safe",{"2":{"21":1}}],["say",{"2":{"19":1}}],["same",{"2":{"4":1,"19":1,"114":1}}],["serper",{"2":{"199":1}}],["service",{"0":{"246":1,"247":1},"1":{"247":1},"2":{"136":1,"137":1,"167":1,"168":1,"195":1,"246":2,"247":1,"249":1,"252":1,"253":1,"257":1,"264":1,"272":1,"287":1}}],["services",{"2":{"11":1,"12":1,"16":1,"22":1,"104":1,"157":1,"246":1,"249":1,"250":1,"252":1}}],["serving",{"2":{"22":1}}],["servers",{"2":{"27":1,"33":1,"138":1,"162":1}}],["server",{"0":{"30":1},"2":{"16":1,"29":1,"30":1,"136":1,"160":1,"161":3,"162":1,"164":2,"165":2,"190":1,"245":1,"246":2,"253":4}}],["self",{"2":{"167":1,"199":1,"269":2,"271":2,"272":1}}],["selection",{"0":{"93":1},"2":{"93":1,"249":1}}],["selected",{"0":{"82":1},"2":{"100":1,"108":1,"212":1,"249":1,"266":1,"286":1}}],["select",{"2":{"30":3,"31":1,"43":1,"49":1,"50":1,"55":2,"56":1,"60":1,"65":1,"77":3,"89":1,"90":1,"91":1,"92":1,"99":3,"108":1,"132":1,"140":1,"146":1,"163":1,"169":1,"170":2,"171":1,"173":1,"177":1,"180":1,"191":1,"202":1,"203":2,"259":1,"260":1,"261":1,"266":1,"273":1,"274":1,"275":1,"278":1,"279":1,"280":1,"283":1,"285":1,"287":1,"288":2}}],["sent",{"2":{"141":3,"161":1,"189":1,"223":1}}],["sends",{"2":{"178":1,"188":1,"193":1}}],["sender",{"2":{"73":1,"75":1}}],["sending",{"2":{"34":1,"152":1,"187":1}}],["send",{"2":{"4":1,"8":2,"30":1,"38":1,"45":1,"50":1,"54":1,"56":1,"57":2,"61":1,"67":1,"110":1,"135":1,"140":1,"142":1,"189":1,"194":1,"195":1,"209":1,"225":1}}],["security",{"2":{"121":1}}],["securely",{"2":{"28":1,"48":1,"162":1}}],["seconds",{"2":{"43":1}}],["secret",{"2":{"36":1,"39":1,"42":1,"54":1,"59":1,"60":1,"249":2,"250":1,"253":1,"274":1,"279":1}}],["secrets",{"2":{"34":1,"109":1}}],["sections",{"2":{"253":1,"264":1}}],["section",{"2":{"26":1,"29":1,"164":1,"173":1,"253":1,"265":1}}],["seen",{"2":{"77":1}}],["see",{"2":{"10":1,"34":1,"94":1,"96":1,"106":1,"120":2,"145":1,"149":1,"182":1,"186":1,"215":1,"229":1,"246":1,"247":1,"276":1,"281":1}}],["sessions",{"0":{"9":1,"205":1,"211":1,"212":1,"213":1,"214":1,"215":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":2,"213":2,"214":2,"215":1},"2":{"9":5,"122":1,"206":2,"207":1,"210":4,"212":1,"214":1,"215":4,"229":1}}],["session",{"0":{"207":1,"208":1},"1":{"209":1,"210":1},"2":{"8":2,"9":1,"10":1,"205":2,"206":3,"207":3,"208":1,"209":3,"210":3,"212":4,"213":1,"214":1,"215":2,"224":1,"229":1,"237":1}}],["searxng",{"2":{"8":1,"199":1,"201":1}}],["searching",{"0":{"181":1}}],["searches",{"2":{"99":1,"186":1}}],["search",{"0":{"197":1,"199":1,"201":1,"203":1,"235":2},"1":{"198":1,"199":1,"200":1,"201":1,"202":1,"203":1,"204":1},"2":{"6":1,"8":3,"12":2,"20":1,"23":1,"38":1,"54":1,"77":1,"92":1,"98":1,"99":4,"100":2,"114":1,"163":1,"172":1,"173":1,"181":1,"195":1,"197":1,"198":2,"199":6,"201":4,"203":1,"204":3,"210":1,"224":2,"235":2,"246":1,"247":2,"257":2,"258":1,"260":1,"267":1,"268":1,"269":1,"276":1,"281":1}}],["semantic",{"2":{"6":1,"23":1,"119":1,"247":1,"256":1,"257":1,"269":1}}],["separate",{"2":{"5":1,"207":1}}],["separately",{"2":{"4":1}}],["setup",{"0":{"34":1,"267":1},"2":{"16":1,"33":1,"64":1,"93":1,"94":1,"244":1,"257":1}}],["settings",{"0":{"29":1,"68":1,"99":1,"232":2},"2":{"10":2,"15":1,"23":1,"36":1,"39":1,"49":1,"89":1,"98":1,"99":1,"169":1,"171":1,"183":1,"186":1,"201":1,"202":1,"224":2,"226":1,"232":4,"249":1,"260":1,"261":1,"265":1,"266":1,"270":1,"274":1,"279":1,"284":1,"287":2}}],["set",{"2":{"3":1,"8":1,"10":1,"15":1,"23":1,"77":1,"81":1,"82":1,"83":1,"84":2,"85":1,"99":1,"100":1,"119":1,"140":1,"152":1,"158":1,"182":1,"195":1,"206":1,"219":1,"225":1,"233":6,"234":2,"235":2,"236":2,"250":1,"251":1,"255":1,"290":1}}],["s",{"0":{"99":1},"2":{"4":1,"14":1,"18":1,"19":6,"21":1,"25":1,"31":1,"32":1,"34":1,"39":1,"43":3,"44":1,"47":1,"49":1,"55":1,"58":1,"60":2,"65":1,"70":1,"72":1,"76":1,"93":1,"94":1,"96":1,"98":2,"99":1,"100":2,"101":1,"105":1,"110":1,"112":2,"113":1,"115":1,"116":1,"119":1,"122":1,"123":1,"125":2,"126":2,"131":1,"132":1,"133":1,"134":1,"139":1,"140":1,"141":2,"146":2,"147":1,"148":2,"150":1,"154":1,"156":1,"160":1,"162":2,"170":1,"176":1,"177":1,"178":1,"179":1,"180":2,"183":1,"189":1,"190":1,"204":1,"206":1,"207":4,"209":1,"217":1,"219":1,"221":1,"222":1,"230":1,"249":2,"256":1,"267":1,"270":2,"282":1,"285":1,"288":2,"289":1}}],["mp3",{"2":{"284":2}}],["m",{"2":{"42":2}}],["my",{"2":{"54":2,"193":1,"194":1,"201":1}}],["mybot",{"2":{"42":1,"43":1}}],["myself",{"2":{"19":1}}],["mirrors",{"2":{"255":1}}],["mirror=true",{"2":{"249":2,"251":1}}],["mirror",{"0":{"251":1},"2":{"249":1,"251":1,"253":1,"255":1}}],["midnight",{"2":{"190":2}}],["migration",{"2":{"130":1}}],["mini",{"2":{"233":1}}],["minimum",{"2":{"38":1,"250":1}}],["minute",{"2":{"190":1}}],["minutes",{"2":{"100":1,"153":2,"190":1,"196":1,"232":1,"252":1}}],["microsoft",{"2":{"282":1,"289":1}}],["mic",{"2":{"19":1}}],["must",{"2":{"124":1,"250":1,"255":1,"264":1,"265":1}}],["much",{"2":{"19":1,"182":1}}],["multilingual",{"2":{"247":2,"258":1,"264":1}}],["multiple",{"2":{"3":1,"7":1,"22":1,"23":1,"101":1,"104":1,"122":1,"163":2,"176":1,"204":1,"246":1,"247":1,"258":1}}],["multi",{"0":{"3":1,"4":1,"7":1,"11":1},"2":{"1":1,"6":1,"19":1,"23":1,"24":1,"243":1}}],["mcpservers",{"2":{"163":1}}],["mcp",{"0":{"12":1,"157":1,"231":2},"1":{"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1},"2":{"8":2,"12":2,"15":1,"23":1,"32":1,"98":2,"150":1,"156":1,"157":1,"158":2,"159":2,"161":2,"162":2,"164":1,"165":3,"224":2,"231":3}}],["mounts",{"2":{"250":1}}],["morning",{"2":{"189":1,"194":1,"230":2}}],["more",{"2":{"8":1,"10":1,"12":1,"19":3,"23":2,"24":1,"25":1,"45":1,"87":1,"104":1,"116":1,"119":1,"155":1,"182":1,"247":1}}],["move",{"2":{"145":1}}],["mono",{"2":{"284":3}}],["monday",{"2":{"190":1}}],["month",{"2":{"190":3}}],["months",{"2":{"114":1}}],["monitor",{"2":{"150":1,"183":1}}],["monitoring",{"0":{"154":1},"1":{"155":1},"2":{"142":1}}],["monaco",{"2":{"148":1,"220":1}}],["mobile",{"2":{"19":1,"86":1,"89":2,"100":1}}],["moment",{"2":{"19":3}}],["most",{"2":{"14":1,"19":1,"53":1,"99":1,"113":1,"178":1,"239":1}}],["modalities",{"2":{"173":1}}],["modify",{"2":{"122":1,"148":1,"181":1,"221":1,"226":1}}],["modes",{"0":{"257":1},"1":{"258":1},"2":{"246":1,"247":1,"256":1,"269":1,"271":1}}],["mode",{"0":{"39":1,"258":1,"263":1,"264":1,"265":1},"2":{"39":1,"110":1,"178":1,"183":1,"186":1,"247":1,"257":1,"258":2,"260":2}}],["modern",{"2":{"15":1}}],["modelcontextprotocol",{"2":{"160":1}}],["models",{"0":{"170":1,"174":1,"233":1},"2":{"10":1,"15":1,"18":1,"21":1,"98":1,"100":1,"170":4,"172":2,"173":1,"175":1,"224":1,"244":1,"247":1,"287":1}}],["model",{"0":{"166":1,"172":1,"173":1,"233":1,"284":1},"1":{"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":2,"174":2,"175":1},"2":{"10":1,"11":2,"12":1,"20":1,"23":1,"92":1,"99":2,"100":5,"115":2,"119":1,"153":2,"157":1,"166":1,"170":1,"172":1,"173":5,"174":2,"186":1,"224":1,"225":1,"232":4,"233":8,"237":3,"247":5,"257":1,"258":2,"260":2,"264":1,"265":1,"283":1,"284":1,"285":2,"286":1,"287":3,"288":3}}],["modular",{"2":{"8":1,"222":1}}],["md",{"2":{"8":2,"148":1,"241":1}}],["mention",{"0":{"242":1},"2":{"242":2}}],["me",{"2":{"193":1,"225":1}}],["meaning",{"2":{"190":1}}],["mean",{"2":{"116":1}}],["means",{"2":{"75":1}}],["merges",{"2":{"119":1}}],["merged",{"2":{"117":1}}],["merge",{"2":{"115":1}}],["merging",{"2":{"114":1}}],["medium",{"2":{"100":1,"232":1}}],["media",{"2":{"45":1,"69":1}}],["metaphors",{"2":{"19":1}}],["message",{"2":{"29":1,"30":1,"32":1,"38":1,"39":2,"44":1,"45":1,"50":1,"51":2,"57":1,"62":1,"69":1,"72":1,"73":1,"77":1,"178":1,"195":1,"205":1,"209":1,"214":1}}],["messages",{"2":{"4":1,"8":1,"11":1,"30":1,"33":1,"34":1,"38":1,"41":1,"45":2,"51":1,"61":2,"62":2,"67":1,"69":2,"84":1,"109":1,"110":1,"173":1,"180":1,"206":1,"209":1}}],["messaging",{"2":{"7":4,"8":1,"12":1,"33":4,"41":1,"64":1,"95":1,"103":1,"104":1}}],["mem0",{"0":{"277":1,"278":1,"279":1,"280":1},"1":{"278":1,"279":1,"280":1,"281":1},"2":{"177":1,"269":2,"271":2,"277":3,"278":1,"279":3,"280":1,"281":2}}],["memories",{"0":{"180":1},"2":{"6":1,"8":1,"14":1,"98":1,"113":1,"114":4,"115":1,"116":1,"117":1,"119":3,"120":1,"178":2,"179":1,"181":2,"182":2,"183":2,"185":1,"186":2,"215":1,"260":1,"263":1,"267":4,"270":1}}],["memory",{"0":{"6":1,"14":1,"113":1,"119":1,"176":1,"178":1,"182":1,"234":2,"256":1,"257":1,"266":1,"267":1,"268":1,"272":1,"277":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1,"257":1,"258":2,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"265":1,"266":1,"267":1,"269":1,"270":1,"271":1,"273":1,"274":1,"275":1,"276":1,"278":1,"279":1,"280":1,"281":1},"2":{"1":2,"6":2,"8":1,"11":1,"12":1,"14":2,"19":1,"20":1,"22":1,"23":3,"24":1,"25":1,"94":3,"95":1,"98":3,"99":3,"100":5,"102":1,"113":3,"114":1,"115":2,"116":2,"119":3,"120":3,"156":1,"172":1,"176":1,"177":6,"178":1,"179":1,"180":3,"181":1,"182":2,"183":2,"184":5,"185":2,"186":4,"215":1,"224":2,"234":2,"243":2,"246":2,"247":5,"256":8,"259":2,"260":2,"266":2,"267":5,"268":5,"269":4,"270":3,"271":6,"272":3,"273":2,"275":1,"276":4,"277":2,"278":2,"280":1,"281":4}}],["memohai",{"2":{"250":1}}],["memoh123",{"2":{"249":1,"255":1}}],["memoh",{"0":{"0":1,"1":1,"17":1,"31":1,"43":1,"49":1,"55":1,"60":1,"65":1,"243":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"244":1},"2":{"1":1,"16":1,"18":1,"20":1,"21":1,"22":1,"24":2,"25":3,"26":1,"27":1,"31":1,"33":2,"34":1,"35":1,"39":2,"41":1,"43":1,"47":1,"49":1,"50":2,"53":2,"54":2,"55":1,"56":2,"58":1,"60":1,"64":1,"65":1,"66":2,"70":1,"86":1,"93":1,"104":1,"109":1,"110":2,"121":1,"134":1,"135":1,"143":1,"157":1,"160":1,"162":3,"164":1,"166":1,"170":2,"172":1,"176":1,"178":1,"190":1,"197":1,"207":1,"216":1,"223":1,"243":1,"244":2,"245":1,"246":1,"249":10,"250":2,"251":1,"255":2,"256":2,"268":1,"269":2,"287":1}}],["members",{"2":{"3":1,"27":1,"29":1}}],["member",{"2":{"1":1,"73":1,"243":1}}],["macos",{"2":{"250":1}}],["machine",{"2":{"131":1,"132":1,"146":1}}],["masked",{"2":{"247":1}}],["marked",{"2":{"226":2}}],["markdown",{"0":{"217":1},"1":{"218":1},"2":{"7":1,"45":1,"49":2,"51":1,"53":1,"57":1,"98":1,"217":1}}],["may",{"2":{"114":1,"178":1,"201":1,"252":1}}],["mapped",{"2":{"109":1}}],["making",{"2":{"25":2}}],["make",{"2":{"21":1,"177":1}}],["makes",{"2":{"18":1,"21":1,"186":1}}],["matters",{"2":{"75":1}}],["mattered",{"2":{"19":1}}],["match",{"2":{"250":1,"255":1}}],["matching",{"2":{"75":2}}],["matches",{"2":{"72":1,"73":1,"75":2,"100":1}}],["matrix",{"0":{"41":1,"42":1},"1":{"42":1,"43":1,"44":1,"45":1,"46":1},"2":{"1":1,"7":1,"33":2,"41":3,"42":5,"43":5,"44":1,"45":1,"46":1,"98":1,"104":1,"106":1,"243":1,"244":1}}],["managing",{"0":{"76":1,"90":1,"118":1,"129":1,"146":1,"155":1,"171":1,"174":1,"181":1,"202":1,"211":1,"219":1,"261":1},"1":{"77":1,"78":1,"79":1,"212":1,"213":1,"214":1,"220":1,"221":1},"2":{"277":1}}],["managed",{"2":{"207":1}}],["manages",{"2":{"206":1,"268":1}}],["managers",{"2":{"122":1}}],["manager",{"2":{"98":1,"149":1}}],["manage",{"0":{"230":1,"231":1,"233":1,"234":1,"235":1,"236":1},"2":{"3":1,"8":2,"10":1,"88":1,"94":1,"97":1,"120":1,"123":1,"134":1,"137":1,"140":1,"143":1,"150":1,"179":1,"219":1,"222":1,"224":6,"267":1,"270":1,"271":1}}],["management",{"0":{"3":1,"95":1,"121":1,"143":1,"176":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"177":1,"178":1,"179":1,"180":1,"181":1,"182":1,"183":1,"184":1,"185":1,"186":1},"2":{"8":1,"23":1,"40":1,"59":2,"92":1,"94":1,"98":1,"120":1,"135":1,"267":1,"271":1,"276":2,"281":2}}],["many",{"2":{"19":1,"114":1,"124":1}}],["manifesto",{"2":{"18":1}}],["manually",{"2":{"93":1,"116":1,"150":1,"164":1,"170":1,"180":1,"267":1}}],["manual",{"0":{"116":1,"250":1},"1":{"251":1},"2":{"13":1,"16":1,"66":1,"169":1,"187":1,"256":1}}],["max",{"2":{"13":1,"189":1,"194":1,"195":1,"196":1}}],["mail",{"2":{"142":1}}],["mailgun",{"2":{"7":1,"33":1,"136":1,"138":1}}],["mainland",{"0":{"251":1},"2":{"249":1,"251":1,"255":1}}],["maintain",{"2":{"122":1,"206":1}}],["maintains",{"2":{"9":1,"205":1}}],["maintenance",{"2":{"115":1,"187":1}}],["main",{"2":{"100":1,"153":1,"245":1,"246":1}}],["affecting",{"2":{"121":1}}],["after",{"0":{"267":1},"2":{"67":1,"78":1,"89":1,"91":1,"94":1,"99":1,"111":1,"119":1,"162":1,"252":1,"260":1,"271":1,"274":1,"279":1}}],["avatar",{"2":{"96":1}}],["available",{"0":{"269":1,"289":1},"2":{"10":1,"93":1,"164":1,"170":2,"188":1,"215":1,"224":1,"226":1,"228":1,"253":1,"284":1,"290":1}}],["able",{"2":{"243":1}}],["above",{"2":{"75":1}}],["about",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"2":{"26":1,"125":1,"244":1}}],["abcdefghijklmnopqrstuvwxyz",{"2":{"54":1}}],["adjustment",{"2":{"284":1}}],["advanced",{"2":{"218":1}}],["admin123",{"2":{"249":1,"252":1}}],["administrative",{"2":{"223":1}}],["admins",{"2":{"72":1,"82":1}}],["admin",{"2":{"59":1,"75":1,"249":3,"250":2,"252":1,"253":2}}],["additional",{"2":{"201":1,"225":1,"263":1}}],["adding",{"0":{"77":1,"108":1,"140":1,"173":1,"201":1,"220":1},"2":{"170":1}}],["address",{"2":{"136":1,"140":1,"141":1,"253":2}}],["addresses",{"2":{"114":1}}],["add",{"0":{"65":1},"2":{"30":1,"31":1,"34":1,"39":2,"43":1,"49":1,"55":1,"60":1,"65":1,"77":1,"82":1,"83":1,"84":1,"85":1,"88":1,"108":1,"138":1,"140":1,"163":3,"168":1,"173":1,"201":1,"220":1,"251":1,"259":1,"273":1,"278":1,"283":1,"288":1}}],["adapter",{"2":{"7":1}}],["a2a",{"2":{"24":1}}],["am",{"2":{"189":1,"190":2,"193":1}}],["ambient",{"2":{"19":1}}],["amp",{"0":{"4":1},"2":{"36":1,"40":1}}],["apps",{"2":{"59":1}}],["appsecret",{"2":{"48":2,"49":1}}],["appear",{"2":{"57":1,"207":1}}],["appid",{"2":{"48":1,"49":1}}],["approved",{"2":{"40":1}}],["approval",{"2":{"40":1,"48":1}}],["applied",{"2":{"75":2}}],["applies",{"2":{"72":1,"77":2}}],["applications",{"2":{"30":1,"103":1}}],["application",{"0":{"28":1},"2":{"28":1,"42":1,"59":1}}],["apply",{"2":{"38":1,"148":1}}],["app",{"0":{"36":1,"40":1},"2":{"19":1,"25":1,"34":2,"36":4,"39":3,"40":1,"59":1,"110":1,"250":1}}],["apis",{"2":{"22":1}}],["api",{"0":{"194":1},"2":{"11":4,"34":1,"42":1,"54":2,"55":1,"66":1,"109":1,"138":1,"167":1,"168":3,"169":1,"170":1,"171":1,"173":1,"178":1,"186":1,"194":2,"198":1,"201":2,"247":3,"252":1,"253":1,"257":1,"258":2,"269":3,"271":1,"272":1,"274":3,"276":1,"277":1,"279":4,"281":1,"282":2,"289":2}}],["aggregator",{"2":{"199":1}}],["aggressive",{"2":{"116":1}}],["again",{"2":{"48":1,"66":1}}],["agreement",{"2":{"19":1}}],["agent2agent",{"2":{"24":1}}],["agents",{"2":{"9":1,"18":1,"19":1,"21":1}}],["agent",{"0":{"8":1,"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"18":1,"19":1,"24":1,"25":1,"89":2,"95":1,"188":1,"189":1,"195":2,"223":1,"243":1,"245":1,"246":1}}],["archive",{"2":{"131":2,"132":2}}],["architecture",{"0":{"246":1},"1":{"247":1},"2":{"7":1}}],["arguments",{"2":{"160":2,"225":2}}],["argument",{"2":{"93":1}}],["aren",{"2":{"151":1}}],["are",{"2":{"33":1,"45":2,"50":1,"56":1,"62":1,"75":2,"78":1,"84":1,"91":1,"93":1,"108":1,"109":1,"114":1,"119":1,"132":1,"142":1,"162":1,"178":1,"181":1,"186":1,"192":1,"206":2,"207":2,"209":1,"215":3,"216":1,"217":1,"222":1,"223":1,"226":3,"246":2,"252":1,"260":1,"263":1,"276":1,"281":1}}],["around",{"2":{"19":1}}],["aloud",{"2":{"282":1,"283":1,"284":1,"287":1,"289":1}}],["along",{"2":{"195":1}}],["alternative",{"2":{"272":1}}],["alerts",{"2":{"155":1}}],["alert",{"2":{"154":1}}],["also",{"2":{"21":1,"57":1,"116":1,"141":1,"150":1,"162":1,"164":1,"194":1,"250":1,"255":1}}],["already",{"2":{"19":1,"177":1,"189":1}}],["always",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"18":1,"19":2,"21":1,"22":1,"25":2,"75":1,"218":1,"246":1}}],["allowed",{"2":{"72":1,"75":1,"81":1}}],["allow",{"2":{"70":1,"72":2,"73":1,"74":1,"75":1,"77":1,"79":1,"81":1,"82":1,"83":1,"84":1,"85":1,"100":1,"126":1,"187":1,"222":1,"232":1}}],["allows",{"2":{"27":1,"35":1,"41":1,"47":1,"58":1,"64":1,"89":1,"110":1,"121":1,"135":1,"147":1,"151":1,"176":1,"197":1}}],["allowing",{"2":{"1":1,"103":1,"142":1,"157":1,"205":1}}],["all",{"2":{"15":1,"16":1,"70":1,"73":3,"77":1,"100":1,"102":2,"117":1,"119":1,"141":1,"164":1,"183":2,"191":1,"208":1,"209":1,"212":1,"215":2,"224":1,"226":1,"228":1,"230":2,"231":2,"232":1,"233":1,"234":1,"235":1,"236":1,"237":2,"238":3,"239":1,"240":1,"241":2,"245":1,"249":2,"253":1}}],["auditing",{"2":{"134":1}}],["audit",{"2":{"117":1,"141":1,"154":1}}],["audio",{"2":{"8":1,"173":1,"284":3,"287":1}}],["auth",{"2":{"250":1,"253":1}}],["authorization",{"2":{"162":1,"169":1}}],["authorized",{"2":{"82":1,"169":1}}],["authorize",{"2":{"30":1,"162":1}}],["authentication",{"0":{"162":1,"169":1},"2":{"11":1,"12":1,"60":1,"161":1,"162":2,"167":1,"168":1,"169":1,"274":1,"279":1}}],["autonomy",{"0":{"152":1}}],["autonomous",{"2":{"9":1,"100":1,"151":1,"156":1,"196":1,"207":1,"215":1}}],["automate",{"2":{"187":1}}],["automated",{"2":{"113":1}}],["automation",{"0":{"188":1},"2":{"8":1,"87":1,"99":2,"100":1,"196":1,"246":1,"250":1}}],["automatic",{"2":{"6":1,"11":1,"14":1,"100":1,"115":1,"152":1,"256":1}}],["automatically",{"2":{"6":1,"13":1,"43":1,"44":1,"66":1,"67":1,"162":1,"164":2,"165":1,"170":1,"186":1,"193":1,"195":1,"204":1,"207":1,"251":1,"283":1}}],["auto",{"2":{"6":1,"43":1,"44":1,"212":1,"249":1,"288":1}}],["attachment",{"2":{"33":1,"45":1,"53":1}}],["attachments",{"2":{"7":1,"32":1,"51":1,"57":1,"69":1}}],["attach",{"2":{"30":1}}],["attempt",{"2":{"18":1}}],["at",{"2":{"8":1,"9":1,"13":1,"23":1,"38":1,"73":1,"83":1,"93":1,"99":1,"102":1,"141":1,"152":1,"163":1,"166":2,"168":1,"189":1,"190":4,"193":1,"247":1,"250":1}}],["ask",{"2":{"193":1}}],["assist",{"2":{"218":1}}],["assigning",{"0":{"91":1,"203":1,"266":1,"275":1,"280":1,"285":1},"2":{"286":1}}],["assigned",{"2":{"86":1,"100":1,"119":1,"156":1,"178":1,"186":1,"204":1,"267":1,"271":1,"276":1,"281":1}}],["assignment",{"2":{"11":1,"287":1}}],["assign",{"2":{"8":1,"270":1}}],["associated",{"2":{"102":1,"140":1}}],["asia",{"2":{"89":1}}],["as",{"0":{"136":1,"217":1},"1":{"218":1},"2":{"6":1,"21":1,"22":3,"23":1,"24":2,"25":1,"42":1,"45":1,"57":1,"86":1,"89":2,"92":1,"100":1,"104":1,"113":1,"115":1,"119":1,"122":1,"125":1,"142":1,"186":1,"207":1,"209":1,"217":1,"218":1,"222":1,"226":1,"272":1,"274":1,"276":1,"279":1,"281":1,"283":1}}],["acl",{"2":{"70":1,"72":2,"73":1,"75":1,"81":1,"82":1,"83":1,"84":1,"98":1,"100":2,"232":1}}],["actual",{"2":{"267":1,"270":1}}],["actually",{"2":{"18":1,"19":2}}],["actions",{"0":{"124":1},"2":{"92":1,"142":1,"151":1,"187":1,"223":1}}],["action",{"2":{"92":1,"102":2,"146":1,"154":1,"225":3}}],["activities",{"2":{"156":1}}],["activity",{"2":{"9":1,"100":1,"196":1,"207":2,"212":1,"215":1}}],["active",{"2":{"112":1,"125":1,"134":1,"163":1,"164":1,"165":1,"177":1,"189":1,"209":1,"212":1}}],["activate",{"2":{"34":1,"112":1}}],["act",{"2":{"42":1}}],["acts",{"2":{"22":1,"87":1,"104":1,"122":1}}],["across",{"2":{"4":1,"122":1,"176":1,"208":1,"215":1,"282":1,"284":1,"289":1}}],["accurate",{"2":{"114":1,"204":1}}],["accumulate",{"2":{"114":1,"182":1}}],["accumulates",{"2":{"113":1}}],["accumulating",{"2":{"19":1}}],["accept",{"2":{"44":1}}],["access",{"0":{"70":1,"76":1,"84":1,"85":1,"252":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":2,"78":2,"79":2,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1},"2":{"1":1,"8":2,"23":1,"32":1,"33":1,"38":1,"42":2,"43":2,"45":1,"70":2,"73":2,"76":2,"79":1,"86":1,"98":2,"100":1,"101":1,"158":1,"162":1,"193":1,"226":1,"243":1,"251":1}}],["account",{"0":{"42":1},"2":{"42":3,"43":1,"48":2,"50":1,"56":1,"253":1}}],["accounts",{"2":{"3":1}}],["answer",{"2":{"204":1}}],["another",{"2":{"135":1}}],["anchor",{"2":{"19":1}}],["annoying",{"2":{"19":1}}],["anthropic",{"2":{"11":1,"167":1,"173":1}}],["anyone",{"0":{"81":1},"2":{"42":1,"72":1}}],["any",{"2":{"9":2,"10":1,"33":1,"41":1,"42":1,"156":1,"187":1,"188":1,"195":1,"223":1}}],["an",{"0":{"17":1,"273":1,"274":1,"275":1,"283":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"19":3,"22":1,"24":2,"25":3,"34":1,"42":1,"54":2,"70":1,"72":1,"73":2,"74":1,"75":1,"77":1,"79":1,"84":1,"85":1,"95":1,"113":1,"117":2,"132":1,"136":1,"141":2,"149":1,"154":1,"164":1,"165":1,"167":2,"177":1,"178":1,"184":1,"205":1,"243":1,"247":2,"258":1,"265":1,"269":1,"272":1}}],["and",{"0":{"130":1,"135":1,"141":1,"145":1,"147":1,"154":1,"166":1,"181":1,"221":1,"232":1},"1":{"131":1,"132":1,"133":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"148":1,"149":1,"155":1,"167":1,"168":1,"169":1,"170":1,"171":1,"172":1,"173":1,"174":1,"175":1},"2":{"1":4,"3":1,"4":2,"5":3,"6":2,"7":1,"8":11,"10":2,"11":2,"12":2,"13":1,"14":2,"15":2,"18":1,"19":6,"21":4,"22":3,"23":7,"24":6,"25":4,"27":1,"28":2,"29":1,"30":2,"31":2,"32":1,"33":2,"34":2,"36":3,"38":2,"39":3,"40":2,"41":1,"43":2,"44":1,"45":2,"48":2,"49":3,"50":2,"51":3,"53":1,"54":1,"55":2,"56":2,"57":1,"59":1,"60":2,"61":1,"65":1,"66":1,"69":1,"72":1,"77":1,"78":1,"82":1,"86":2,"87":3,"89":1,"90":1,"91":1,"92":1,"95":2,"98":7,"99":2,"100":3,"102":3,"104":1,"106":1,"108":2,"109":1,"110":1,"112":2,"113":2,"115":1,"119":1,"121":1,"122":1,"124":1,"125":1,"126":1,"128":1,"129":1,"130":1,"134":1,"135":2,"140":2,"142":1,"144":1,"146":1,"148":2,"150":2,"152":1,"157":1,"158":1,"160":1,"162":1,"163":2,"164":1,"165":1,"166":1,"167":1,"170":2,"171":1,"172":1,"175":1,"176":1,"178":3,"182":1,"184":1,"186":1,"188":1,"189":1,"190":2,"191":1,"193":2,"194":1,"195":1,"196":1,"197":1,"199":1,"202":1,"203":2,"204":1,"205":2,"207":1,"209":1,"216":2,"217":2,"218":3,"220":1,"222":1,"223":1,"224":1,"228":1,"242":1,"243":1,"244":3,"245":2,"246":3,"249":4,"250":1,"251":1,"252":1,"253":5,"256":4,"258":1,"260":2,"261":1,"263":1,"264":1,"265":1,"266":1,"267":1,"268":3,"269":1,"270":1,"274":1,"275":1,"276":1,"277":1,"279":1,"280":1,"281":1,"282":1,"286":1,"287":1,"288":3}}],["ai",{"2":{"1":2,"7":1,"11":1,"15":1,"18":1,"19":2,"20":1,"21":1,"23":1,"25":1,"33":2,"95":1,"167":1,"172":1,"173":1,"199":1,"223":1,"243":2,"245":1,"246":1,"279":1}}],["a",{"0":{"28":1,"36":1,"42":1,"48":1,"54":1,"59":1,"88":1,"89":1,"91":2,"96":1,"102":1,"108":1,"127":1,"128":1,"136":1,"138":1,"140":1,"168":1,"173":1,"201":1,"203":2,"208":1,"220":1,"259":1,"260":1,"266":2,"275":1,"278":1,"279":1,"280":2,"285":1},"1":{"90":1,"209":1,"210":1,"261":1},"2":{"1":1,"5":1,"6":1,"8":1,"9":1,"10":2,"11":1,"18":3,"19":11,"20":1,"22":2,"23":1,"24":4,"25":3,"28":2,"34":1,"36":1,"39":2,"40":1,"42":3,"44":2,"48":1,"50":1,"54":3,"56":1,"59":1,"64":1,"66":3,"72":2,"73":3,"75":1,"76":1,"77":7,"79":6,"85":1,"86":6,"87":2,"88":1,"89":1,"90":2,"92":1,"94":1,"95":1,"96":1,"97":1,"99":1,"102":1,"104":2,"109":1,"110":1,"111":1,"112":1,"113":1,"116":1,"117":1,"121":1,"124":1,"126":1,"127":2,"129":2,"131":1,"133":1,"134":1,"136":5,"142":1,"144":2,"145":1,"146":2,"148":1,"149":1,"152":3,"154":2,"156":3,"158":1,"160":2,"161":1,"162":1,"163":3,"164":1,"167":2,"168":1,"169":2,"170":2,"171":1,"172":3,"173":2,"174":2,"175":1,"177":3,"178":2,"180":1,"182":2,"188":5,"189":3,"193":5,"195":1,"198":4,"201":1,"202":1,"204":3,"205":4,"206":4,"207":6,"208":1,"209":3,"210":2,"213":1,"214":1,"215":2,"216":1,"217":2,"218":1,"220":2,"221":2,"224":1,"225":2,"228":1,"229":1,"242":1,"243":1,"247":3,"249":1,"253":1,"259":1,"260":1,"261":2,"267":1,"268":3,"270":2,"272":3,"273":1,"274":2,"277":1,"278":1,"279":2,"285":1,"286":1,"287":4,"288":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.VHyCZJwM.js b/assets/chunks/@localSearchIndexroot.VHyCZJwM.js new file mode 100644 index 00000000..9b00c31b --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.VHyCZJwM.js @@ -0,0 +1 @@ +const e='{"documentCount":295,"nextId":295,"documentIds":{"0":"/about.html#about-memoh","1":"/about.html#what-is-memoh","2":"/about.html#key-features","3":"/about.html#multi-bot-management","4":"/about.html#multi-user-identity-recognition","5":"/about.html#containerized-isolation","6":"/about.html#memory-engineering","7":"/about.html#multi-platform-support","8":"/about.html#agent-capabilities","9":"/about.html#sessions","10":"/about.html#slash-commands","11":"/about.html#multi-llm-provider-support","12":"/about.html#mcp-protocol-support","13":"/about.html#scheduled-tasks","14":"/about.html#memory-compaction","15":"/about.html#graphical-configuration","16":"/about.html#installation","17":"/blogs/2026-02-16.html#introduction-to-memoh-the-case-for-an-always-on-containerized-home-agent","18":"/blogs/2026-02-16.html#overview","19":"/blogs/2026-02-16.html#story-time","20":"/blogs/2026-02-16.html#what","21":"/blogs/2026-02-16.html#why","22":"/blogs/2026-02-16.html#how","23":"/blogs/2026-02-16.html#features","24":"/blogs/2026-02-16.html#compare-to-openclaw","25":"/blogs/2026-02-16.html#conclusion","26":"/blogs/#blogs","27":"/channels/discord.html#discord-channel-configuration","28":"/channels/discord.html#step-1-create-a-discord-application","29":"/channels/discord.html#step-2-configure-bot-settings","30":"/channels/discord.html#step-3-invite-the-bot-to-your-server","31":"/channels/discord.html#step-4-configure-memoh","32":"/channels/discord.html#features-supported","33":"/channels/feishu.html#feishu-lark-channel-configuration","34":"/channels/feishu.html#step-1-create-a-feishu-app","35":"/channels/feishu.html#step-2-enable-bot-capability","36":"/channels/feishu.html#step-3-configure-permissions","37":"/channels/feishu.html#step-4-configure-events-webhook-mode","38":"/channels/feishu.html#step-5-publish-your-app","39":"/channels/#channels-overview","40":"/channels/#general-setup-flow","41":"/channels/matrix.html#matrix-channel-configuration","42":"/channels/matrix.html#step-1-create-a-matrix-bot-account","43":"/channels/matrix.html#step-2-configure-memoh","44":"/channels/matrix.html#step-3-invite-the-bot","45":"/channels/matrix.html#features-supported","46":"/channels/matrix.html#official-resources","47":"/channels/qq.html#qq-channel-configuration","48":"/channels/qq.html#step-1-create-a-qq-bot","49":"/channels/qq.html#step-2-configure-memoh","50":"/channels/qq.html#step-3-bind-your-identity-optional","51":"/channels/qq.html#features-supported","52":"/channels/qq.html#official-resources","53":"/channels/telegram.html#telegram-channel-configuration","54":"/channels/telegram.html#step-1-create-a-telegram-bot","55":"/channels/telegram.html#step-2-configure-memoh","56":"/channels/telegram.html#step-3-bind-your-identity-optional","57":"/channels/telegram.html#features-supported","58":"/channels/wecom.html#wecom-wework-channel-configuration","59":"/channels/wecom.html#step-1-create-a-wecom-bot","60":"/channels/wecom.html#step-2-configure-memoh","61":"/channels/wecom.html#step-3-start-chatting","62":"/channels/wecom.html#features-supported","63":"/channels/wecom.html#official-resources","64":"/channels/weixin.html#wechat-channel-configuration","65":"/channels/weixin.html#step-1-add-wechat-channel-in-memoh","66":"/channels/weixin.html#step-2-scan-the-qr-code","67":"/channels/weixin.html#step-3-start-chatting","68":"/channels/weixin.html#optional-settings","69":"/channels/weixin.html#features-supported","70":"/getting-started/access.html#bot-access-control","71":"/getting-started/access.html#concepts","72":"/getting-started/access.html#default-effect","73":"/getting-started/access.html#subject-types","74":"/getting-started/access.html#rule-effects","75":"/getting-started/access.html#priority-based-evaluation","76":"/getting-started/access.html#managing-access","77":"/getting-started/access.html#adding-rules","78":"/getting-started/access.html#reordering-rules","79":"/getting-started/access.html#source-scope","80":"/getting-started/access.html#examples","81":"/getting-started/access.html#open-bot-anyone-can-chat","82":"/getting-started/access.html#private-bot-with-selected-users","83":"/getting-started/access.html#open-bot-with-blocked-users","84":"/getting-started/access.html#platform-specific-access","85":"/getting-started/access.html#channel-scoped-access","86":"/getting-started/bot.html#bot-management","87":"/getting-started/bot.html#creating-a-bot","88":"/getting-started/bot.html#bot-detail-page","89":"/getting-started/bot.html#tab-overview","90":"/getting-started/bot.html#configuring-the-bot-s-core-settings","91":"/getting-started/bot.html#general-tab-reference","92":"/getting-started/bot.html#terminal-tab","93":"/getting-started/bot.html#deleting-a-bot","94":"/getting-started/browser.html#browser-contexts","95":"/getting-started/browser.html#concept-browser-gateway","96":"/getting-started/browser.html#creating-a-browser-context","97":"/getting-started/browser.html#configuring-a-browser-context","98":"/getting-started/browser.html#managing-contexts","99":"/getting-started/browser.html#assigning-a-browser-context-to-a-bot","100":"/getting-started/browser.html#bot-interaction","101":"/getting-started/browser.html#browser-core-selection","102":"/getting-started/browser.html#next-steps","103":"/getting-started/channels.html#bot-channels","104":"/getting-started/channels.html#concept-unified-communication","105":"/getting-started/channels.html#supported-channels","106":"/getting-started/channels.html#platform-guides","107":"/getting-started/channels.html#configuration-flow","108":"/getting-started/channels.html#_1-adding-a-channel","109":"/getting-started/channels.html#_2-common-fields","110":"/getting-started/channels.html#_3-special-case-feishu-webhook","111":"/getting-started/channels.html#_4-special-case-wechat-qr-code","112":"/getting-started/channels.html#operations","113":"/getting-started/container.html#bot-container-management","114":"/getting-started/container.html#concept-the-isolated-workspace","115":"/getting-started/container.html#operations","116":"/getting-started/container.html#lifecycle-actions","117":"/getting-started/container.html#container-information","118":"/getting-started/container.html#advanced-provide-cdi-devices","119":"/getting-started/container.html#configure-cdi-devices","120":"/getting-started/container.html#host-requirements","121":"/getting-started/container.html#important-behavior","122":"/getting-started/container.html#snapshots","123":"/getting-started/container.html#creating-a-snapshot","124":"/getting-started/container.html#restoring-a-snapshot","125":"/getting-started/container.html#managing-snapshots","126":"/getting-started/container.html#data-export-and-import","127":"/getting-started/container.html#export","128":"/getting-started/container.html#import","129":"/getting-started/container.html#restore","130":"/getting-started/container.html#container-versioning","131":"/getting-started/compaction.html#memory-compaction","132":"/getting-started/compaction.html#concept-why-compact","133":"/getting-started/compaction.html#configuration","134":"/getting-started/compaction.html#manual-compaction","135":"/getting-started/compaction.html#compaction-logs","136":"/getting-started/compaction.html#managing-logs","137":"/getting-started/compaction.html#relationship-to-memory","138":"/getting-started/compaction.html#next-steps","139":"/getting-started/files.html#bot-files-management","140":"/getting-started/files.html#operations","141":"/getting-started/files.html#browsing-and-navigation","142":"/getting-started/files.html#managing-files","143":"/getting-started/files.html#viewing-and-editing","144":"/getting-started/files.html#text-files","145":"/getting-started/files.html#images","146":"/getting-started/files.html#bot-interaction-with-files","147":"/getting-started/email.html#email-providers-and-bindings","148":"/getting-started/email.html#concept-email-as-a-bot-channel","149":"/getting-started/email.html#email-provider","150":"/getting-started/email.html#creating-a-provider","151":"/getting-started/email.html#bot-email-bindings","152":"/getting-started/email.html#adding-a-binding","153":"/getting-started/email.html#outbox-and-history","154":"/getting-started/email.html#bot-interaction","155":"/getting-started/heartbeat.html#bot-heartbeat","156":"/getting-started/heartbeat.html#concept-scheduled-autonomy","157":"/getting-started/heartbeat.html#configuration","158":"/getting-started/heartbeat.html#logs-and-monitoring","159":"/getting-started/heartbeat.html#managing-logs","160":"/getting-started/heartbeat.html#bot-interaction","161":"/getting-started/mcp.html#mcp-connections","162":"/getting-started/mcp.html#concept-extending-bot-capabilities","163":"/getting-started/mcp.html#connection-types","164":"/getting-started/mcp.html#_1-stdio-local-process","165":"/getting-started/mcp.html#_2-remote-http-sse","166":"/getting-started/mcp.html#oauth-authentication","167":"/getting-started/mcp.html#operations","168":"/getting-started/mcp.html#tool-discovery","169":"/getting-started/mcp.html#bot-interaction","170":"/getting-started/memory.html#bot-memory-management","171":"/getting-started/memory.html#prerequisites","172":"/getting-started/memory.html#concept-memory-retrieval","173":"/getting-started/memory.html#operations","174":"/getting-started/memory.html#_1-creating-memories","175":"/getting-started/memory.html#_2-searching-and-managing","176":"/getting-started/memory.html#memory-compression-compact","177":"/getting-started/memory.html#rebuild","178":"/getting-started/memory.html#status","179":"/getting-started/memory.html#usage-statistics","180":"/getting-started/memory.html#bot-interaction","181":"/getting-started/provider-and-model.html#llm-provider-and-model","182":"/getting-started/provider-and-model.html#llm-provider","183":"/getting-started/provider-and-model.html#creating-a-provider","184":"/getting-started/provider-and-model.html#oauth-authentication","185":"/getting-started/provider-and-model.html#import-models","186":"/getting-started/provider-and-model.html#managing-providers","187":"/getting-started/provider-and-model.html#model","188":"/getting-started/provider-and-model.html#adding-a-model","189":"/getting-started/provider-and-model.html#managing-models","190":"/getting-started/provider-and-model.html#next-steps","191":"/getting-started/schedule.html#scheduled-tasks","192":"/getting-started/schedule.html#concept-cron-based-automation","193":"/getting-started/schedule.html#schedule-fields","194":"/getting-started/schedule.html#cron-pattern-reference","195":"/getting-started/schedule.html#viewing-schedules","196":"/getting-started/schedule.html#creating-schedules","197":"/getting-started/schedule.html#via-the-bot-conversational","198":"/getting-started/schedule.html#via-the-api","199":"/getting-started/schedule.html#execution-flow","200":"/getting-started/schedule.html#schedule-vs-heartbeat","201":"/getting-started/search-provider.html#search-providers","202":"/getting-started/search-provider.html#concept-real-time-knowledge","203":"/getting-started/search-provider.html#supported-search-engines","204":"/getting-started/search-provider.html#configuration-flow","205":"/getting-started/search-provider.html#_1-adding-a-search-provider","206":"/getting-started/search-provider.html#_2-managing-providers","207":"/getting-started/search-provider.html#assigning-a-search-provider-to-a-bot","208":"/getting-started/search-provider.html#bot-interaction","209":"/getting-started/sessions.html#sessions","210":"/getting-started/sessions.html#concept-conversation-isolation","211":"/getting-started/sessions.html#session-types","212":"/getting-started/sessions.html#starting-a-new-session-with-new","213":"/getting-started/sessions.html#in-external-channels-telegram-discord-feishu-etc","214":"/getting-started/sessions.html#in-the-web-ui","215":"/getting-started/sessions.html#managing-sessions","216":"/getting-started/sessions.html#viewing-sessions","217":"/getting-started/sessions.html#renaming-sessions","218":"/getting-started/sessions.html#deleting-sessions","219":"/getting-started/sessions.html#how-sessions-relate-to-other-features","220":"/getting-started/skills.html#bot-skills","221":"/getting-started/skills.html#concept-skills-as-markdown","222":"/getting-started/skills.html#example-skill-structure","223":"/getting-started/skills.html#managing-skills","224":"/getting-started/skills.html#adding-a-skill","225":"/getting-started/skills.html#editing-and-deleting","226":"/getting-started/skills.html#how-bots-use-skills","227":"/getting-started/slash-commands.html#slash-commands","228":"/getting-started/slash-commands.html#quick-reference","229":"/getting-started/slash-commands.html#command-format","230":"/getting-started/slash-commands.html#permissions","231":"/getting-started/slash-commands.html#global-commands","232":"/getting-started/slash-commands.html#help","233":"/getting-started/slash-commands.html#new","234":"/getting-started/slash-commands.html#schedule-—-manage-scheduled-tasks","235":"/getting-started/slash-commands.html#mcp-—-manage-mcp-connections","236":"/getting-started/slash-commands.html#settings-—-view-and-update-bot-settings","237":"/getting-started/slash-commands.html#model-—-manage-bot-models","238":"/getting-started/slash-commands.html#memory-—-manage-memory-provider","239":"/getting-started/slash-commands.html#search-—-manage-search-provider","240":"/getting-started/slash-commands.html#browser-—-manage-browser-context","241":"/getting-started/slash-commands.html#usage-—-view-token-usage","242":"/getting-started/slash-commands.html#email-—-view-email-configuration","243":"/getting-started/slash-commands.html#heartbeat-—-view-heartbeat-logs","244":"/getting-started/slash-commands.html#skill-—-view-bot-skills","245":"/getting-started/slash-commands.html#fs-—-browse-container-filesystem","246":"/getting-started/slash-commands.html#mention-prefixed-commands","247":"/#memoh-documentation","248":"/#documentation","249":"/installation/docker.html#docker-installation","250":"/installation/docker.html#service-architecture","251":"/installation/docker.html#sparse-service","252":"/installation/docker.html#prerequisites","253":"/installation/docker.html#one-click-install-recommended","254":"/installation/docker.html#manual-install","255":"/installation/docker.html#china-mainland-mirror","256":"/installation/docker.html#access-points","257":"/installation/docker.html#configuration-reference","258":"/installation/docker.html#common-commands","259":"/installation/docker.html#environment-variables","260":"/memory-providers/builtin.html#built-in-memory-provider","261":"/memory-providers/builtin.html#memory-modes","262":"/memory-providers/builtin.html#how-sparse-mode-works","263":"/memory-providers/builtin.html#creating-a-built-in-provider","264":"/memory-providers/builtin.html#configuring-a-built-in-provider","265":"/memory-providers/builtin.html#managing-providers","266":"/memory-providers/builtin.html#infrastructure-requirements","267":"/memory-providers/builtin.html#off-mode","268":"/memory-providers/builtin.html#sparse-mode","269":"/memory-providers/builtin.html#dense-mode","270":"/memory-providers/builtin.html#assigning-a-memory-provider-to-a-bot","271":"/memory-providers/builtin.html#using-memory-after-setup","272":"/memory-providers/#memory-providers","273":"/memory-providers/#available-providers","274":"/memory-providers/#basic-flow","275":"/memory-providers/#next-steps","276":"/memory-providers/mem0.html#mem0-memory-provider","277":"/memory-providers/mem0.html#creating-a-mem0-provider","278":"/memory-providers/mem0.html#configuring-a-mem0-provider","279":"/memory-providers/mem0.html#assigning-a-mem0-provider-to-a-bot","280":"/memory-providers/mem0.html#usage","281":"/memory-providers/openviking.html#openviking-memory-provider","282":"/memory-providers/openviking.html#creating-an-openviking-provider","283":"/memory-providers/openviking.html#configuring-an-openviking-provider","284":"/memory-providers/openviking.html#assigning-an-openviking-provider-to-a-bot","285":"/memory-providers/openviking.html#usage","286":"/tts-providers/edge.html#edge-tts","287":"/tts-providers/edge.html#creating-an-edge-tts-provider","288":"/tts-providers/edge.html#configuring-the-model","289":"/tts-providers/edge.html#assigning-to-a-bot","290":"/tts-providers/edge.html#testing","291":"/tts-providers/#tts-providers","292":"/tts-providers/#basic-flow","293":"/tts-providers/#available-providers","294":"/tts-providers/#next-steps"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[4,2,58],"2":[2,2,1],"3":[3,4,29],"4":[5,4,33],"5":[2,4,42],"6":[2,4,48],"7":[3,4,55],"8":[2,4,132],"9":[1,4,50],"10":[2,4,51],"11":[4,4,42],"12":[3,4,40],"13":[2,4,22],"14":[2,4,27],"15":[2,4,47],"16":[1,2,28],"17":[12,1,1],"18":[1,12,74],"19":[2,12,215],"20":[1,12,29],"21":[1,12,54],"22":[1,12,65],"23":[1,12,104],"24":[3,12,83],"25":[1,12,62],"26":[1,1,12],"27":[3,1,16],"28":[6,3,28],"29":[5,3,19],"30":[8,3,42],"31":[4,3,23],"32":[2,3,25],"33":[4,1,24],"34":[6,4,34],"35":[5,4,13],"36":[4,4,31],"37":[7,4,56],"38":[5,4,30],"39":[2,1,88],"40":[3,2,54],"41":[3,1,31],"42":[7,3,74],"43":[4,3,67],"44":[5,3,31],"45":[2,3,49],"46":[2,3,6],"47":[3,1,16],"48":[6,3,46],"49":[4,3,37],"50":[7,3,44],"51":[2,3,36],"52":[2,3,6],"53":[3,1,28],"54":[6,3,55],"55":[4,3,30],"56":[7,3,53],"57":[2,3,35],"58":[4,1,17],"59":[6,4,26],"60":[4,4,44],"61":[4,4,27],"62":[2,4,26],"63":[2,4,6],"64":[3,1,24],"65":[7,3,19],"66":[6,3,55],"67":[4,3,20],"68":[2,3,11],"69":[2,3,29],"70":[3,1,35],"71":[1,3,1],"72":[2,4,46],"73":[2,4,54],"74":[2,4,19],"75":[3,4,56],"76":[2,3,12],"77":[2,4,60],"78":[2,4,26],"79":[2,4,49],"80":[1,3,1],"81":[6,4,19],"82":[5,4,26],"83":[5,4,27],"84":[3,4,31],"85":[3,4,27],"86":[2,1,34],"87":[3,2,32],"88":[3,2,22],"89":[2,4,95],"90":[6,2,82],"91":[3,2,116],"92":[2,2,25],"93":[3,2,44],"94":[2,1,45],"95":[3,2,45],"96":[4,2,27],"97":[4,2,81],"98":[2,5,15],"99":[6,2,33],"100":[2,2,55],"101":[3,2,47],"102":[2,2,27],"103":[2,1,18],"104":[3,2,30],"105":[2,2,14],"106":[2,3,27],"107":[2,2,1],"108":[4,4,24],"109":[3,4,33],"110":[5,4,32],"111":[6,4,21],"112":[1,2,20],"113":[3,1,35],"114":[4,3,30],"115":[1,3,16],"116":[2,4,52],"117":[2,3,55],"118":[4,3,53],"119":[3,7,50],"120":[2,7,79],"121":[2,7,54],"122":[1,3,32],"123":[3,4,18],"124":[3,4,17],"125":[2,4,23],"126":[4,3,16],"127":[1,7,21],"128":[1,7,21],"129":[1,7,29],"130":[2,3,37],"131":[2,1,38],"132":[4,2,58],"133":[1,2,48],"134":[2,2,52],"135":[2,2,42],"136":[2,3,12],"137":[3,2,59],"138":[2,2,13],"139":[3,1,24],"140":[1,3,17],"141":[3,4,31],"142":[2,4,42],"143":[3,3,17],"144":[2,6,39],"145":[1,6,20],"146":[4,3,36],"147":[4,1,18],"148":[6,4,28],"149":[2,4,13],"150":[3,5,38],"151":[3,4,15],"152":[3,5,41],"153":[3,4,34],"154":[2,4,45],"155":[2,1,24],"156":[3,2,38],"157":[1,2,41],"158":[3,2,46],"159":[2,5,29],"160":[2,2,36],"161":[2,1,21],"162":[4,2,25],"163":[2,2,11],"164":[5,4,54],"165":[5,4,36],"166":[2,2,56],"167":[1,2,53],"168":[2,2,51],"169":[2,2,32],"170":[3,1,22],"171":[1,3,42],"172":[3,3,46],"173":[1,3,14],"174":[3,4,25],"175":[4,4,25],"176":[4,3,57],"177":[1,3,49],"178":[1,3,40],"179":[2,3,28],"180":[2,3,48],"181":[4,1,16],"182":[2,4,27],"183":[3,4,46],"184":[2,4,38],"185":[2,4,36],"186":[2,4,33],"187":[1,4,31],"188":[3,4,88],"189":[2,4,16],"190":[2,4,16],"191":[2,1,33],"192":[4,2,37],"193":[2,2,77],"194":[3,2,67],"195":[2,2,31],"196":[2,2,8],"197":[5,4,46],"198":[3,4,42],"199":[2,2,48],"200":[3,2,52],"201":[2,1,23],"202":[4,2,28],"203":[3,2,53],"204":[2,2,1],"205":[5,4,44],"206":[3,4,21],"207":[6,2,22],"208":[2,2,35],"209":[1,1,36],"210":[3,1,43],"211":[2,1,71],"212":[6,1,19],"213":[8,7,55],"214":[4,7,38],"215":[2,1,1],"216":[2,2,34],"217":[2,2,15],"218":[2,2,15],"219":[6,1,63],"220":[2,1,23],"221":[4,2,27],"222":[3,5,37],"223":[2,2,15],"224":[3,3,22],"225":[3,3,23],"226":[4,2,35],"227":[2,1,46],"228":[2,2,45],"229":[2,2,41],"230":[1,2,33],"231":[2,2,1],"232":[2,3,11],"233":[2,3,14],"234":[5,2,31],"235":[5,2,14],"236":[7,2,46],"237":[5,2,20],"238":[5,2,13],"239":[5,2,13],"240":[5,2,13],"241":[5,2,25],"242":[5,2,10],"243":[5,2,15],"244":[5,2,9],"245":[5,2,28],"246":[3,2,24],"247":[2,1,51],"248":[1,2,36],"249":[2,1,45],"250":[2,2,62],"251":[2,4,143],"252":[1,2,5],"253":[5,2,112],"254":[2,2,97],"255":[3,4,48],"256":[2,2,37],"257":[2,2,94],"258":[2,2,33],"259":[2,2,58],"260":[4,1,44],"261":[2,4,38],"262":[4,5,58],"263":[5,4,25],"264":[5,4,46],"265":[2,6,15],"266":[2,4,1],"267":[2,6,15],"268":[2,6,44],"269":[2,6,30],"270":[6,4,37],"271":[4,4,38],"272":[2,1,33],"273":[2,2,44],"274":[2,2,31],"275":[2,2,28],"276":[3,1,28],"277":[4,3,25],"278":[4,3,44],"279":[6,3,24],"280":[1,3,28],"281":[3,1,26],"282":[4,3,25],"283":[4,3,36],"284":[7,3,24],"285":[1,3,28],"286":[2,1,26],"287":[5,2,25],"288":[3,2,58],"289":[4,2,24],"290":[1,2,26],"291":[2,1,64],"292":[2,2,48],"293":[2,2,21],"294":[2,2,12]},"averageFieldLength":[3.0135593220338985,3.1254237288135585,36.32542372881355],"storedFields":{"0":{"title":"About Memoh","titles":[]},"1":{"title":"What is Memoh?","titles":["About Memoh"]},"2":{"title":"Key Features","titles":["About Memoh"]},"3":{"title":"Multi-Bot Management","titles":["About Memoh","Key Features"]},"4":{"title":"Multi-User & Identity Recognition","titles":["About Memoh","Key Features"]},"5":{"title":"Containerized Isolation","titles":["About Memoh","Key Features"]},"6":{"title":"Memory Engineering","titles":["About Memoh","Key Features"]},"7":{"title":"Multi-Platform Support","titles":["About Memoh","Key Features"]},"8":{"title":"Agent Capabilities","titles":["About Memoh","Key Features"]},"9":{"title":"Sessions","titles":["About Memoh","Key Features"]},"10":{"title":"Slash Commands","titles":["About Memoh","Key Features"]},"11":{"title":"Multi-LLM Provider Support","titles":["About Memoh","Key Features"]},"12":{"title":"MCP Protocol Support","titles":["About Memoh","Key Features"]},"13":{"title":"Scheduled Tasks","titles":["About Memoh","Key Features"]},"14":{"title":"Memory Compaction","titles":["About Memoh","Key Features"]},"15":{"title":"Graphical Configuration","titles":["About Memoh","Key Features"]},"16":{"title":"Installation","titles":["About Memoh"]},"17":{"title":"Introduction to Memoh - The Case for an Always-On, Containerized Home Agent","titles":[]},"18":{"title":"Overview","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"19":{"title":"Story Time","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"20":{"title":"What","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"21":{"title":"Why","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"22":{"title":"How","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"23":{"title":"Features","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"24":{"title":"Compare to OpenClaw","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"25":{"title":"Conclusion","titles":["Introduction to Memoh - The Case for an Always-On, Containerized Home Agent"]},"26":{"title":"Blogs","titles":[]},"27":{"title":"Discord Channel Configuration","titles":[]},"28":{"title":"Step 1: Create a Discord Application","titles":["Discord Channel Configuration"]},"29":{"title":"Step 2: Configure Bot Settings","titles":["Discord Channel Configuration"]},"30":{"title":"Step 3: Invite the Bot to Your Server","titles":["Discord Channel Configuration"]},"31":{"title":"Step 4: Configure Memoh","titles":["Discord Channel Configuration"]},"32":{"title":"Features Supported","titles":["Discord Channel Configuration"]},"33":{"title":"Feishu (Lark) Channel Configuration","titles":[]},"34":{"title":"Step 1: Create a Feishu App","titles":["Feishu (Lark) Channel Configuration"]},"35":{"title":"Step 2: Enable Bot Capability","titles":["Feishu (Lark) Channel Configuration"]},"36":{"title":"Step 3: Configure Permissions","titles":["Feishu (Lark) Channel Configuration"]},"37":{"title":"Step 4: Configure Events (Webhook Mode)","titles":["Feishu (Lark) Channel Configuration"]},"38":{"title":"Step 5: Publish Your App","titles":["Feishu (Lark) Channel Configuration"]},"39":{"title":"Channels Overview","titles":[]},"40":{"title":"General Setup Flow","titles":["Channels Overview"]},"41":{"title":"Matrix Channel Configuration","titles":[]},"42":{"title":"Step 1: Create a Matrix Bot Account","titles":["Matrix Channel Configuration"]},"43":{"title":"Step 2: Configure Memoh","titles":["Matrix Channel Configuration"]},"44":{"title":"Step 3: Invite the Bot","titles":["Matrix Channel Configuration"]},"45":{"title":"Features Supported","titles":["Matrix Channel Configuration"]},"46":{"title":"Official Resources","titles":["Matrix Channel Configuration"]},"47":{"title":"QQ Channel Configuration","titles":[]},"48":{"title":"Step 1: Create a QQ Bot","titles":["QQ Channel Configuration"]},"49":{"title":"Step 2: Configure Memoh","titles":["QQ Channel Configuration"]},"50":{"title":"Step 3: Bind Your Identity (Optional)","titles":["QQ Channel Configuration"]},"51":{"title":"Features Supported","titles":["QQ Channel Configuration"]},"52":{"title":"Official Resources","titles":["QQ Channel Configuration"]},"53":{"title":"Telegram Channel Configuration","titles":[]},"54":{"title":"Step 1: Create a Telegram Bot","titles":["Telegram Channel Configuration"]},"55":{"title":"Step 2: Configure Memoh","titles":["Telegram Channel Configuration"]},"56":{"title":"Step 3: Bind Your Identity (Optional)","titles":["Telegram Channel Configuration"]},"57":{"title":"Features Supported","titles":["Telegram Channel Configuration"]},"58":{"title":"WeCom (WeWork) Channel Configuration","titles":[]},"59":{"title":"Step 1: Create a WeCom Bot","titles":["WeCom (WeWork) Channel Configuration"]},"60":{"title":"Step 2: Configure Memoh","titles":["WeCom (WeWork) Channel Configuration"]},"61":{"title":"Step 3: Start Chatting","titles":["WeCom (WeWork) Channel Configuration"]},"62":{"title":"Features Supported","titles":["WeCom (WeWork) Channel Configuration"]},"63":{"title":"Official Resources","titles":["WeCom (WeWork) Channel Configuration"]},"64":{"title":"WeChat Channel Configuration","titles":[]},"65":{"title":"Step 1: Add WeChat Channel in Memoh","titles":["WeChat Channel Configuration"]},"66":{"title":"Step 2: Scan the QR Code","titles":["WeChat Channel Configuration"]},"67":{"title":"Step 3: Start Chatting","titles":["WeChat Channel Configuration"]},"68":{"title":"Optional Settings","titles":["WeChat Channel Configuration"]},"69":{"title":"Features Supported","titles":["WeChat Channel Configuration"]},"70":{"title":"Bot Access Control","titles":[]},"71":{"title":"Concepts","titles":["Bot Access Control"]},"72":{"title":"Default Effect","titles":["Bot Access Control","Concepts"]},"73":{"title":"Subject Types","titles":["Bot Access Control","Concepts"]},"74":{"title":"Rule Effects","titles":["Bot Access Control","Concepts"]},"75":{"title":"Priority-Based Evaluation","titles":["Bot Access Control","Concepts"]},"76":{"title":"Managing Access","titles":["Bot Access Control"]},"77":{"title":"Adding Rules","titles":["Bot Access Control","Managing Access"]},"78":{"title":"Reordering Rules","titles":["Bot Access Control","Managing Access"]},"79":{"title":"Source Scope","titles":["Bot Access Control","Managing Access"]},"80":{"title":"Examples","titles":["Bot Access Control"]},"81":{"title":"Open Bot (Anyone Can Chat)","titles":["Bot Access Control","Examples"]},"82":{"title":"Private Bot with Selected Users","titles":["Bot Access Control","Examples"]},"83":{"title":"Open Bot with Blocked Users","titles":["Bot Access Control","Examples"]},"84":{"title":"Platform-Specific Access","titles":["Bot Access Control","Examples"]},"85":{"title":"Channel-Scoped Access","titles":["Bot Access Control","Examples"]},"86":{"title":"Bot Management","titles":[]},"87":{"title":"Creating a Bot","titles":["Bot Management"]},"88":{"title":"Bot Detail Page","titles":["Bot Management"]},"89":{"title":"Tab Overview","titles":["Bot Management","Bot Detail Page"]},"90":{"title":"Configuring the Bot\'s Core Settings","titles":["Bot Management"]},"91":{"title":"General Tab Reference","titles":["Bot Management"]},"92":{"title":"Terminal Tab","titles":["Bot Management"]},"93":{"title":"Deleting a Bot","titles":["Bot Management"]},"94":{"title":"Browser Contexts","titles":[]},"95":{"title":"Concept: Browser Gateway","titles":["Browser Contexts"]},"96":{"title":"Creating a Browser Context","titles":["Browser Contexts"]},"97":{"title":"Configuring a Browser Context","titles":["Browser Contexts"]},"98":{"title":"Managing Contexts","titles":["Browser Contexts","Configuring a Browser Context"]},"99":{"title":"Assigning a Browser Context to a Bot","titles":["Browser Contexts"]},"100":{"title":"Bot Interaction","titles":["Browser Contexts"]},"101":{"title":"Browser Core Selection","titles":["Browser Contexts"]},"102":{"title":"Next Steps","titles":["Browser Contexts"]},"103":{"title":"Bot Channels","titles":[]},"104":{"title":"Concept: Unified Communication","titles":["Bot Channels"]},"105":{"title":"Supported Channels","titles":["Bot Channels"]},"106":{"title":"Platform Guides","titles":["Bot Channels","Supported Channels"]},"107":{"title":"Configuration Flow","titles":["Bot Channels"]},"108":{"title":"1. Adding a Channel","titles":["Bot Channels","Configuration Flow"]},"109":{"title":"2. Common Fields","titles":["Bot Channels","Configuration Flow"]},"110":{"title":"3. Special Case: Feishu Webhook","titles":["Bot Channels","Configuration Flow"]},"111":{"title":"4. Special Case: WeChat QR Code","titles":["Bot Channels","Configuration Flow"]},"112":{"title":"Operations","titles":["Bot Channels"]},"113":{"title":"Bot Container Management","titles":[]},"114":{"title":"Concept: The Isolated Workspace","titles":["Bot Container Management"]},"115":{"title":"Operations","titles":["Bot Container Management"]},"116":{"title":"Lifecycle Actions","titles":["Bot Container Management","Operations"]},"117":{"title":"Container Information","titles":["Bot Container Management"]},"118":{"title":"Advanced: Provide CDI Devices","titles":["Bot Container Management"]},"119":{"title":"Configure CDI Devices","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"120":{"title":"Host Requirements","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"121":{"title":"Important Behavior","titles":["Bot Container Management","Advanced: Provide CDI Devices"]},"122":{"title":"Snapshots","titles":["Bot Container Management"]},"123":{"title":"Creating a Snapshot","titles":["Bot Container Management","Snapshots"]},"124":{"title":"Restoring a Snapshot","titles":["Bot Container Management","Snapshots"]},"125":{"title":"Managing Snapshots","titles":["Bot Container Management","Snapshots"]},"126":{"title":"Data Export and Import","titles":["Bot Container Management"]},"127":{"title":"Export","titles":["Bot Container Management","Data Export and Import"]},"128":{"title":"Import","titles":["Bot Container Management","Data Export and Import"]},"129":{"title":"Restore","titles":["Bot Container Management","Data Export and Import"]},"130":{"title":"Container Versioning","titles":["Bot Container Management"]},"131":{"title":"Memory Compaction","titles":[]},"132":{"title":"Concept: Why Compact?","titles":["Memory Compaction"]},"133":{"title":"Configuration","titles":["Memory Compaction"]},"134":{"title":"Manual Compaction","titles":["Memory Compaction"]},"135":{"title":"Compaction Logs","titles":["Memory Compaction"]},"136":{"title":"Managing Logs","titles":["Memory Compaction","Compaction Logs"]},"137":{"title":"Relationship to Memory","titles":["Memory Compaction"]},"138":{"title":"Next Steps","titles":["Memory Compaction"]},"139":{"title":"Bot Files Management","titles":[]},"140":{"title":"Operations","titles":["Bot Files Management"]},"141":{"title":"Browsing and Navigation","titles":["Bot Files Management","Operations"]},"142":{"title":"Managing Files","titles":["Bot Files Management","Operations"]},"143":{"title":"Viewing and Editing","titles":["Bot Files Management"]},"144":{"title":"Text Files","titles":["Bot Files Management","Viewing and Editing"]},"145":{"title":"Images","titles":["Bot Files Management","Viewing and Editing"]},"146":{"title":"Bot Interaction with Files","titles":["Bot Files Management"]},"147":{"title":"Email Providers and Bindings","titles":[]},"148":{"title":"Concept: Email as a Bot Channel","titles":["Email Providers and Bindings"]},"149":{"title":"Email Provider","titles":["Email Providers and Bindings"]},"150":{"title":"Creating a Provider","titles":["Email Providers and Bindings","Email Provider"]},"151":{"title":"Bot Email Bindings","titles":["Email Providers and Bindings"]},"152":{"title":"Adding a Binding","titles":["Email Providers and Bindings","Bot Email Bindings"]},"153":{"title":"Outbox and History","titles":["Email Providers and Bindings"]},"154":{"title":"Bot Interaction","titles":["Email Providers and Bindings"]},"155":{"title":"Bot Heartbeat","titles":[]},"156":{"title":"Concept: Scheduled Autonomy","titles":["Bot Heartbeat"]},"157":{"title":"Configuration","titles":["Bot Heartbeat"]},"158":{"title":"Logs and Monitoring","titles":["Bot Heartbeat"]},"159":{"title":"Managing Logs","titles":["Bot Heartbeat","Logs and Monitoring"]},"160":{"title":"Bot Interaction","titles":["Bot Heartbeat"]},"161":{"title":"MCP Connections","titles":[]},"162":{"title":"Concept: Extending Bot Capabilities","titles":["MCP Connections"]},"163":{"title":"Connection Types","titles":["MCP Connections"]},"164":{"title":"1. Stdio (Local Process)","titles":["MCP Connections","Connection Types"]},"165":{"title":"2. Remote (HTTP/SSE)","titles":["MCP Connections","Connection Types"]},"166":{"title":"OAuth Authentication","titles":["MCP Connections"]},"167":{"title":"Operations","titles":["MCP Connections"]},"168":{"title":"Tool Discovery","titles":["MCP Connections"]},"169":{"title":"Bot Interaction","titles":["MCP Connections"]},"170":{"title":"Bot Memory Management","titles":[]},"171":{"title":"Prerequisites","titles":["Bot Memory Management"]},"172":{"title":"Concept: Memory Retrieval","titles":["Bot Memory Management"]},"173":{"title":"Operations","titles":["Bot Memory Management"]},"174":{"title":"1. Creating Memories","titles":["Bot Memory Management","Operations"]},"175":{"title":"2. Searching and Managing","titles":["Bot Memory Management","Operations"]},"176":{"title":"Memory Compression (Compact)","titles":["Bot Memory Management"]},"177":{"title":"Rebuild","titles":["Bot Memory Management"]},"178":{"title":"Status","titles":["Bot Memory Management"]},"179":{"title":"Usage Statistics","titles":["Bot Memory Management"]},"180":{"title":"Bot Interaction","titles":["Bot Memory Management"]},"181":{"title":"LLM Provider and Model","titles":[]},"182":{"title":"LLM Provider","titles":["LLM Provider and Model"]},"183":{"title":"Creating a Provider","titles":["LLM Provider and Model","LLM Provider"]},"184":{"title":"OAuth Authentication","titles":["LLM Provider and Model","LLM Provider"]},"185":{"title":"Import Models","titles":["LLM Provider and Model","LLM Provider"]},"186":{"title":"Managing Providers","titles":["LLM Provider and Model","LLM Provider"]},"187":{"title":"Model","titles":["LLM Provider and Model"]},"188":{"title":"Adding a Model","titles":["LLM Provider and Model","Model"]},"189":{"title":"Managing Models","titles":["LLM Provider and Model","Model"]},"190":{"title":"Next Steps","titles":["LLM Provider and Model"]},"191":{"title":"Scheduled Tasks","titles":[]},"192":{"title":"Concept: Cron-Based Automation","titles":["Scheduled Tasks"]},"193":{"title":"Schedule Fields","titles":["Scheduled Tasks"]},"194":{"title":"Cron Pattern Reference","titles":["Scheduled Tasks"]},"195":{"title":"Viewing Schedules","titles":["Scheduled Tasks"]},"196":{"title":"Creating Schedules","titles":["Scheduled Tasks"]},"197":{"title":"Via the Bot (Conversational)","titles":["Scheduled Tasks","Creating Schedules"]},"198":{"title":"Via the API","titles":["Scheduled Tasks","Creating Schedules"]},"199":{"title":"Execution Flow","titles":["Scheduled Tasks"]},"200":{"title":"Schedule vs. Heartbeat","titles":["Scheduled Tasks"]},"201":{"title":"Search Providers","titles":[]},"202":{"title":"Concept: Real-Time Knowledge","titles":["Search Providers"]},"203":{"title":"Supported Search Engines","titles":["Search Providers"]},"204":{"title":"Configuration Flow","titles":["Search Providers"]},"205":{"title":"1. Adding a Search Provider","titles":["Search Providers","Configuration Flow"]},"206":{"title":"2. Managing Providers","titles":["Search Providers","Configuration Flow"]},"207":{"title":"Assigning a Search Provider to a Bot","titles":["Search Providers"]},"208":{"title":"Bot Interaction","titles":["Search Providers"]},"209":{"title":"Sessions","titles":[]},"210":{"title":"Concept: Conversation Isolation","titles":["Sessions"]},"211":{"title":"Session Types","titles":["Sessions"]},"212":{"title":"Starting a New Session with /new","titles":["Sessions"]},"213":{"title":"In External Channels (Telegram, Discord, Feishu, etc.)","titles":["Sessions","Starting a New Session with /new"]},"214":{"title":"In the Web UI","titles":["Sessions","Starting a New Session with /new"]},"215":{"title":"Managing Sessions","titles":["Sessions"]},"216":{"title":"Viewing Sessions","titles":["Sessions","Managing Sessions"]},"217":{"title":"Renaming Sessions","titles":["Sessions","Managing Sessions"]},"218":{"title":"Deleting Sessions","titles":["Sessions","Managing Sessions"]},"219":{"title":"How Sessions Relate to Other Features","titles":["Sessions"]},"220":{"title":"Bot Skills","titles":[]},"221":{"title":"Concept: Skills as Markdown","titles":["Bot Skills"]},"222":{"title":"Example Skill Structure","titles":["Bot Skills","Concept: Skills as Markdown"]},"223":{"title":"Managing Skills","titles":["Bot Skills"]},"224":{"title":"Adding a Skill","titles":["Bot Skills","Managing Skills"]},"225":{"title":"Editing and Deleting","titles":["Bot Skills","Managing Skills"]},"226":{"title":"How Bots Use Skills","titles":["Bot Skills"]},"227":{"title":"Slash Commands","titles":[]},"228":{"title":"Quick Reference","titles":["Slash Commands"]},"229":{"title":"Command Format","titles":["Slash Commands"]},"230":{"title":"Permissions","titles":["Slash Commands"]},"231":{"title":"Global Commands","titles":["Slash Commands"]},"232":{"title":"/help","titles":["Slash Commands","Global Commands"]},"233":{"title":"/new","titles":["Slash Commands","Global Commands"]},"234":{"title":"/schedule — Manage Scheduled Tasks","titles":["Slash Commands"]},"235":{"title":"/mcp — Manage MCP Connections","titles":["Slash Commands"]},"236":{"title":"/settings — View and Update Bot Settings","titles":["Slash Commands"]},"237":{"title":"/model — Manage Bot Models","titles":["Slash Commands"]},"238":{"title":"/memory — Manage Memory Provider","titles":["Slash Commands"]},"239":{"title":"/search — Manage Search Provider","titles":["Slash Commands"]},"240":{"title":"/browser — Manage Browser Context","titles":["Slash Commands"]},"241":{"title":"/usage — View Token Usage","titles":["Slash Commands"]},"242":{"title":"/email — View Email Configuration","titles":["Slash Commands"]},"243":{"title":"/heartbeat — View Heartbeat Logs","titles":["Slash Commands"]},"244":{"title":"/skill — View Bot Skills","titles":["Slash Commands"]},"245":{"title":"/fs — Browse Container Filesystem","titles":["Slash Commands"]},"246":{"title":"Mention-Prefixed Commands","titles":["Slash Commands"]},"247":{"title":"Memoh Documentation","titles":[]},"248":{"title":"Documentation","titles":["Memoh Documentation"]},"249":{"title":"Docker Installation","titles":[]},"250":{"title":"Service Architecture","titles":["Docker Installation"]},"251":{"title":"Sparse Service","titles":["Docker Installation","Service Architecture"]},"252":{"title":"Prerequisites","titles":["Docker Installation"]},"253":{"title":"One-Click Install (Recommended)","titles":["Docker Installation"]},"254":{"title":"Manual Install","titles":["Docker Installation"]},"255":{"title":"China Mainland Mirror","titles":["Docker Installation","Manual Install"]},"256":{"title":"Access Points","titles":["Docker Installation"]},"257":{"title":"Configuration Reference","titles":["Docker Installation"]},"258":{"title":"Common Commands","titles":["Docker Installation"]},"259":{"title":"Environment Variables","titles":["Docker Installation"]},"260":{"title":"Built-in Memory Provider","titles":[]},"261":{"title":"Memory Modes","titles":["Built-in Memory Provider"]},"262":{"title":"How Sparse Mode Works","titles":["Built-in Memory Provider","Memory Modes"]},"263":{"title":"Creating a Built-in Provider","titles":["Built-in Memory Provider"]},"264":{"title":"Configuring a Built-in Provider","titles":["Built-in Memory Provider"]},"265":{"title":"Managing Providers","titles":["Built-in Memory Provider","Configuring a Built-in Provider"]},"266":{"title":"Infrastructure Requirements","titles":["Built-in Memory Provider"]},"267":{"title":"Off Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"268":{"title":"Sparse Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"269":{"title":"Dense Mode","titles":["Built-in Memory Provider","Infrastructure Requirements"]},"270":{"title":"Assigning a Memory Provider to a Bot","titles":["Built-in Memory Provider"]},"271":{"title":"Using Memory After Setup","titles":["Built-in Memory Provider"]},"272":{"title":"Memory Providers","titles":[]},"273":{"title":"Available Providers","titles":["Memory Providers"]},"274":{"title":"Basic Flow","titles":["Memory Providers"]},"275":{"title":"Next Steps","titles":["Memory Providers"]},"276":{"title":"Mem0 Memory Provider","titles":[]},"277":{"title":"Creating a Mem0 Provider","titles":["Mem0 Memory Provider"]},"278":{"title":"Configuring a Mem0 Provider","titles":["Mem0 Memory Provider"]},"279":{"title":"Assigning a Mem0 Provider to a Bot","titles":["Mem0 Memory Provider"]},"280":{"title":"Usage","titles":["Mem0 Memory Provider"]},"281":{"title":"OpenViking Memory Provider","titles":[]},"282":{"title":"Creating an OpenViking Provider","titles":["OpenViking Memory Provider"]},"283":{"title":"Configuring an OpenViking Provider","titles":["OpenViking Memory Provider"]},"284":{"title":"Assigning an OpenViking Provider to a Bot","titles":["OpenViking Memory Provider"]},"285":{"title":"Usage","titles":["OpenViking Memory Provider"]},"286":{"title":"Edge TTS","titles":[]},"287":{"title":"Creating an Edge TTS Provider","titles":["Edge TTS"]},"288":{"title":"Configuring the Model","titles":["Edge TTS"]},"289":{"title":"Assigning to a Bot","titles":["Edge TTS"]},"290":{"title":"Testing","titles":["Edge TTS"]},"291":{"title":"TTS Providers","titles":[]},"292":{"title":"Basic Flow","titles":["TTS Providers"]},"293":{"title":"Available Providers","titles":["TTS Providers"]},"294":{"title":"Next Steps","titles":["TTS Providers"]}},"dirtCount":0,"index":[["=",{"2":{"255":1,"268":2,"269":1}}],["~",{"2":{"253":2}}],["|",{"2":{"253":6}}],["ˈmemoʊ",{"2":{"247":1}}],["7",{"2":{"241":1}}],["`run",{"2":{"222":1}}],["`edit",{"2":{"222":1}}],["6334",{"2":{"268":1,"269":1}}],["6",{"2":{"194":1,"253":3,"259":1}}],["│",{"2":{"194":15}}],["┌─────────────",{"2":{"194":5}}],["96kbitrate",{"2":{"288":1}}],["9",{"2":{"193":2,"194":2,"229":1,"234":1}}],["8088",{"2":{"283":1}}],["8083",{"2":{"256":1}}],["8080",{"2":{"256":1,"257":1}}],["8082",{"2":{"256":1}}],["8085",{"2":{"251":1,"268":1}}],["8",{"2":{"134":1,"176":1,"194":3,"197":1,"198":1}}],["00",{"2":{"193":1,"194":3}}],["0",{"2":{"134":3,"176":3,"193":1,"194":9,"198":1,"229":1,"234":1,"253":3,"259":1,"288":5}}],["zh",{"2":{"97":1,"236":1}}],["zone",{"2":{"89":1,"93":1}}],["→",{"2":{"75":2,"79":3}}],["企业微信",{"2":{"58":1}}],["创建机器人",{"2":{"48":1}}],["x26",{"2":{"258":2}}],["x3c",{"2":{"42":3}}],["x",{"2":{"42":1}}],["50+",{"2":{"286":1,"288":1,"293":1}}],["59",{"2":{"194":1}}],["5",{"0":{"38":1},"2":{"48":1,"134":1,"176":1,"288":1}}],["48kbitrate",{"2":{"288":1}}],["4o",{"2":{"187":1,"188":1,"237":2}}],["4",{"0":{"31":1,"37":1,"111":1}}],["16bit",{"2":{"288":1}}],["100",{"2":{"288":1}}],["10",{"2":{"243":1}}],["12",{"2":{"194":1}}],["123456789",{"2":{"54":1}}],["1536",{"2":{"188":1}}],["1",{"0":{"28":1,"34":1,"42":1,"48":1,"54":1,"59":1,"65":1,"108":1,"164":1,"174":1,"205":1},"2":{"194":4,"256":1,"288":1}}],["jwt",{"2":{"253":2,"254":1,"257":1}}],["jina",{"2":{"203":1}}],["jpg",{"2":{"145":1}}],["js",{"2":{"144":1}}],["json",{"2":{"42":1,"167":3,"198":1,"257":1}}],["join",{"2":{"27":1,"41":1,"43":2,"44":2,"45":1}}],["jobs",{"2":{"24":1}}],["just",{"2":{"19":1,"64":1,"154":1}}],["known",{"2":{"122":1}}],["know",{"2":{"50":1,"56":1}}],["knowledge",{"0":{"202":1},"2":{"20":1,"102":1,"180":1,"201":1}}],["kinds",{"2":{"73":1,"211":1}}],["kind",{"2":{"19":1}}],["kept",{"2":{"18":1}}],["keeping",{"2":{"131":1}}],["keep",{"2":{"14":1,"19":1,"25":2,"42":1,"54":1,"159":1}}],["keys",{"2":{"109":1,"180":1}}],["keyword",{"2":{"6":1,"251":1,"262":1}}],["key",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"6":1,"66":1,"150":1,"164":1,"183":1,"184":1,"186":1,"205":1,"248":1,"251":1,"257":1,"262":1,"273":1,"278":2,"283":2,"286":1,"293":1}}],["yml",{"2":{"254":1,"255":2}}],["yaml",{"2":{"221":1,"222":1,"226":1}}],["yandex",{"2":{"203":1}}],["y",{"2":{"164":1,"253":1}}],["yet",{"2":{"90":1,"102":1}}],["yes",{"2":{"43":3,"60":2,"188":5,"278":1,"283":1}}],["year",{"2":{"18":1,"19":1}}],["yourself",{"2":{"276":1}}],["yours",{"2":{"25":1}}],["your",{"0":{"30":1,"38":1,"50":1,"56":1},"2":{"1":1,"15":1,"19":1,"20":1,"23":1,"27":1,"30":1,"31":2,"33":1,"34":1,"36":1,"37":2,"39":3,"40":2,"41":2,"42":2,"43":2,"44":1,"47":1,"48":1,"49":2,"50":3,"53":1,"54":1,"55":2,"56":4,"58":2,"60":1,"61":1,"64":1,"65":1,"66":2,"70":1,"85":1,"90":1,"91":1,"99":1,"103":2,"105":1,"110":1,"115":1,"127":1,"128":1,"142":2,"146":1,"147":1,"148":1,"149":1,"151":1,"155":1,"161":1,"171":2,"173":1,"183":1,"190":1,"201":1,"202":1,"203":2,"205":1,"207":1,"210":1,"223":1,"247":1,"249":1,"253":1,"254":1,"258":1,"270":1,"276":1,"279":1,"284":1}}],["you",{"2":{"1":1,"19":5,"22":1,"25":1,"30":1,"39":1,"42":1,"50":2,"53":1,"54":2,"56":2,"66":1,"70":1,"79":1,"88":2,"90":1,"98":1,"99":1,"102":1,"103":1,"104":1,"119":2,"120":1,"121":1,"122":1,"129":1,"134":1,"139":1,"143":1,"152":1,"155":2,"161":1,"166":2,"168":2,"177":3,"181":1,"190":2,"191":1,"194":1,"197":1,"198":1,"201":1,"205":1,"207":1,"210":2,"213":4,"214":1,"218":1,"219":1,"222":2,"226":1,"246":1,"249":1,"251":2,"254":1,"255":1,"265":1,"270":1,"271":1,"279":1,"284":1,"291":1}}],["256",{"2":{"288":1}}],["256+",{"2":{"286":1,"293":1}}],["2000",{"2":{"245":1}}],["20",{"2":{"194":1}}],["2026",{"2":{"18":1,"26":1}}],["23",{"2":{"194":1}}],["2",{"0":{"29":1,"35":1,"43":1,"49":1,"55":1,"60":1,"66":1,"109":1,"165":1,"175":1,"206":1},"2":{"256":1,"288":1}}],["24khz",{"2":{"288":3}}],["24",{"2":{"6":1,"23":1}}],["32",{"2":{"254":1}}],["31",{"2":{"194":1}}],["30",{"2":{"43":1,"157":1,"194":2,"236":1}}],["3",{"0":{"30":1,"36":1,"44":1,"50":1,"56":1,"61":1,"67":1,"110":1},"2":{"15":1,"134":1,"176":1,"187":1,"250":1,"288":1}}],["null",{"2":{"198":1}}],["number",{"2":{"117":1,"134":1,"176":1,"179":1,"193":2}}],["npx",{"2":{"164":1}}],["nvidia",{"2":{"119":2,"120":2}}],["night",{"2":{"19":1}}],["navigating",{"2":{"95":1}}],["navigation",{"0":{"141":1},"2":{"8":1,"97":1,"100":1,"141":1}}],["navigate",{"2":{"59":1,"87":1,"90":1,"93":1,"96":1,"99":1,"134":1,"150":1,"183":1,"195":1,"205":1,"207":1,"263":1,"270":1,"277":1,"279":1,"282":1,"284":1,"287":1,"292":1}}],["named",{"2":{"291":1}}],["namespace",{"2":{"257":1}}],["names",{"2":{"119":2,"120":1,"168":1}}],["name",{"2":{"28":1,"34":1,"54":2,"87":2,"96":2,"97":2,"120":2,"123":1,"167":1,"183":2,"186":1,"188":2,"193":2,"195":1,"198":1,"205":2,"216":1,"222":1,"224":1,"234":6,"235":2,"237":4,"238":1,"239":1,"240":1,"263":2,"264":1,"277":2,"282":2}}],["natural",{"2":{"18":1,"193":1,"197":1,"200":1}}],["none",{"2":{"261":1}}],["noise",{"2":{"131":1,"132":1}}],["normally",{"2":{"120":1,"246":1}}],["now",{"2":{"67":1,"190":1,"289":1,"292":1}}],["node",{"2":{"19":1,"22":1}}],["notifications",{"2":{"156":1}}],["noticed",{"2":{"19":1}}],["notes",{"2":{"203":1}}],["note",{"2":{"42":1,"59":1}}],["not",{"2":{"18":1,"19":3,"22":1,"79":1,"90":1,"102":1,"119":1,"120":1,"121":1,"171":1,"249":1,"254":1,"258":1,"270":1}}],["no",{"2":{"15":1,"16":1,"23":1,"43":2,"48":1,"60":1,"66":1,"72":1,"75":1,"81":1,"91":1,"98":1,"132":1,"175":1,"188":2,"213":1,"218":1,"251":1,"253":1,"254":1,"261":1,"262":1,"265":1,"267":1,"270":1,"278":3,"283":1,"286":1,"293":1}}],["neural",{"2":{"250":1,"251":3,"261":1,"262":1,"268":1,"273":1}}],["nerdctl",{"2":{"249":1}}],["next",{"0":{"102":1,"138":1,"190":1,"275":1,"294":1},"2":{"125":1,"189":2,"225":1}}],["needing",{"2":{"251":1}}],["needs",{"2":{"118":1,"121":1}}],["needed",{"2":{"66":1,"81":1,"137":1,"175":1}}],["need",{"2":{"22":1,"54":1,"119":1,"181":1,"205":1,"218":1,"249":1,"251":1,"281":1}}],["news",{"2":{"193":2,"234":3}}],["newbot",{"2":{"54":1}}],["new",{"0":{"212":2,"233":1},"1":{"213":2,"214":2},"2":{"9":2,"10":2,"19":1,"28":1,"42":1,"56":1,"59":1,"78":1,"132":1,"141":1,"174":1,"210":1,"212":1,"213":3,"214":1,"228":2,"233":1,"246":1}}],["network",{"2":{"1":1,"5":1,"23":1,"24":1,"165":1,"247":1}}],["github",{"2":{"253":1,"254":1}}],["git",{"2":{"252":1,"254":1,"259":1}}],["giving",{"2":{"210":1}}],["give",{"2":{"19":1,"24":1,"28":1,"94":1}}],["gpt",{"2":{"187":1,"188":1,"237":2}}],["gpu=all",{"2":{"119":2}}],["gpu=0",{"2":{"119":2}}],["gpus",{"2":{"118":1}}],["gpu",{"2":{"117":1,"119":3,"120":1}}],["gather",{"2":{"100":1}}],["gateways",{"2":{"39":1}}],["gateway",{"0":{"95":1},"2":{"29":1,"94":1,"95":1,"250":1,"256":1,"257":2}}],["global",{"0":{"231":1},"1":{"232":1,"233":1},"2":{"73":1,"203":1}}],["g",{"2":{"40":1,"42":2,"43":2,"54":3,"73":2,"134":1,"141":1,"144":1,"145":1,"150":1,"164":2,"165":1,"177":1,"183":2,"188":3,"193":3,"199":1,"205":2,"229":2,"236":1,"253":1,"259":1,"283":1,"291":2,"292":1}}],["guides",{"0":{"106":1},"2":{"40":1,"106":1,"248":1}}],["guide",{"2":{"30":1,"37":2,"53":1,"54":1,"248":1}}],["gt",{"2":{"30":1,"34":1,"35":1,"36":1,"37":1,"38":1,"50":1,"56":1,"59":1,"234":8,"235":2,"237":4,"238":1,"239":1,"240":1,"245":1}}],["going",{"2":{"227":1}}],["good",{"2":{"122":1,"251":1,"261":1}}],["google",{"2":{"8":1,"11":1,"188":1,"202":1,"203":1}}],["go",{"2":{"28":2,"30":1,"31":1,"34":2,"35":1,"36":1,"37":2,"38":1,"43":1,"48":1,"49":1,"50":1,"55":1,"56":1,"60":1,"65":1,"90":1,"99":1,"207":1,"270":1,"279":1,"284":1}}],["got",{"2":{"19":1}}],["getting",{"2":{"248":1}}],["gets",{"2":{"24":1}}],["get",{"2":{"16":1,"18":1,"54":1,"66":1,"234":2,"235":2,"236":2}}],["general",{"0":{"40":1,"91":1},"2":{"72":1,"81":1,"89":1,"90":1,"91":1,"93":1,"99":1,"133":1,"171":1,"200":1,"207":1,"270":1,"272":1,"274":1,"279":1,"284":1,"289":1,"292":1}}],["generating",{"2":{"51":1,"68":1,"69":1,"91":1}}],["generative",{"2":{"11":1,"188":1}}],["generator",{"2":{"30":1}}],["generate",{"2":{"28":1,"37":1,"50":1,"56":1,"110":1,"132":1,"253":1,"254":1}}],["generated",{"2":{"19":1,"30":1,"45":1,"216":1,"253":1}}],["generic",{"2":{"7":1,"148":1,"150":1,"200":1}}],["grounded",{"2":{"208":1}}],["grouped",{"2":{"210":1}}],["group",{"2":{"4":1,"36":1,"41":1,"45":1,"51":1,"61":1,"62":2,"77":2,"79":2,"229":1,"246":1,"254":1,"258":1}}],["groups",{"2":{"3":1,"23":1,"33":1}}],["grow",{"2":{"131":1}}],["granting",{"2":{"166":1}}],["grants",{"2":{"74":1}}],["gracefully",{"2":{"116":1}}],["grained",{"2":{"79":1}}],["grade",{"2":{"20":1}}],["graphical",{"0":{"15":1},"2":{"23":1}}],["gmail",{"2":{"7":1,"39":1}}],["+100",{"2":{"288":1}}],["+",{"2":{"6":1,"7":1,"15":1,"24":1,"251":1,"261":2,"288":1}}],["qr",{"0":{"66":1,"111":1},"2":{"64":1,"66":5,"67":1,"111":2}}],["queries",{"2":{"251":1}}],["query",{"2":{"185":1}}],["question",{"2":{"208":1}}],["questions",{"2":{"18":2}}],["quotes",{"2":{"229":1}}],["quot",{"2":{"57":2,"114":2,"154":2,"156":2,"160":4,"183":2,"193":4,"197":2,"200":2,"205":2,"220":4,"226":2,"229":4}}],["quickly",{"2":{"109":1,"141":1,"159":1,"167":2,"178":1,"251":1}}],["quick",{"0":{"228":1},"2":{"39":1}}],["quietly",{"2":{"19":1}}],["quarter",{"2":{"18":1}}],["quality",{"2":{"14":1,"132":1,"251":1,"261":2,"262":1}}],["qdrant",{"2":{"6":1,"16":1,"250":3,"251":2,"254":2,"255":1,"257":2,"261":3,"264":2,"268":4,"269":5}}],["qq",{"0":{"47":1,"48":1},"1":{"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"1":1,"7":1,"39":1,"47":2,"48":2,"49":1,"50":3,"52":2,"89":1,"106":1,"247":1,"248":1}}],["voice",{"2":{"288":3,"290":1,"291":2,"292":1}}],["voices",{"2":{"286":1,"288":1,"293":1}}],["volume",{"2":{"150":1}}],["v0",{"2":{"253":1,"259":1}}],["v2",{"2":{"252":1}}],["vs",{"0":{"200":1}}],["v3",{"2":{"42":1}}],["v1",{"2":{"37":1,"183":1,"251":1,"262":1,"268":1}}],["variable",{"2":{"253":1,"259":1}}],["variables",{"0":{"259":1},"2":{"164":1,"253":1}}],["various",{"2":{"23":1,"86":1,"103":1,"201":1}}],["var",{"2":{"120":1,"254":1}}],["valid",{"2":{"101":1,"120":1}}],["validity",{"2":{"66":1}}],["values",{"2":{"101":1,"134":1,"229":1,"236":1}}],["value",{"2":{"18":1,"164":1,"194":1}}],["vue",{"2":{"15":1,"250":1}}],["video",{"2":{"188":1}}],["visible",{"2":{"120":1}}],["visual",{"2":{"15":1,"51":1,"69":1,"145":1}}],["visualization",{"2":{"15":1}}],["viewport",{"2":{"91":1,"94":1,"97":4}}],["viewing",{"0":{"143":1,"195":1,"216":1},"1":{"144":1,"145":1},"2":{"48":1,"230":1}}],["view",{"0":{"236":1,"241":1,"242":1,"243":1,"244":1},"2":{"10":2,"125":1,"159":1,"166":1,"168":1,"219":1,"228":5,"258":1}}],["via",{"0":{"197":1,"198":1},"2":{"1":1,"6":1,"7":1,"8":2,"11":1,"12":1,"32":1,"33":1,"39":4,"40":1,"41":1,"42":1,"61":1,"64":1,"79":1,"85":1,"86":1,"114":1,"116":1,"154":2,"164":1,"247":1,"249":1,"250":1,"273":1,"275":1}}],["vendor",{"2":{"120":2}}],["verify",{"2":{"178":1,"186":1}}],["verification",{"2":{"37":1,"121":1}}],["version=v0",{"2":{"253":2}}],["versions",{"2":{"130":1,"253":1,"259":1}}],["version",{"2":{"38":2,"130":5,"253":2,"259":1}}],["versioned",{"2":{"22":1}}],["versioning",{"0":{"130":1},"2":{"5":1,"122":1}}],["vectors",{"2":{"172":1,"251":1,"261":1,"262":1,"273":1}}],["vector",{"2":{"6":1,"22":1,"177":1,"179":1,"188":2,"250":1,"251":1,"254":1,"257":1,"261":1,"264":1,"268":1}}],["right",{"2":{"186":1,"206":1}}],["rich",{"2":{"8":1,"39":1,"51":1}}],["rule",{"0":{"74":1},"2":{"72":2,"74":1,"75":6,"77":2,"84":1,"85":1,"91":1,"192":1}}],["rules",{"0":{"77":1,"78":1},"2":{"70":1,"73":2,"75":2,"78":2,"79":1,"81":1,"82":1,"83":1,"89":1}}],["running",{"2":{"16":1,"92":1,"116":1,"117":2,"253":1,"254":1}}],["run",{"2":{"13":1,"21":1,"22":1,"23":1,"25":1,"120":1,"121":1,"164":1,"247":1,"249":1,"253":1}}],["runtime",{"2":{"8":1,"22":1,"90":1,"91":1,"117":1,"118":1,"120":1,"130":1,"172":1,"251":1,"270":1}}],["runs",{"2":{"5":1,"23":1,"133":1,"135":1,"193":1,"197":1,"219":1,"247":1,"249":1,"251":2,"262":1,"268":1}}],["root",{"2":{"183":1}}],["room",{"2":{"44":1}}],["rooms",{"2":{"41":1,"43":1,"45":2}}],["rocm",{"2":{"121":1}}],["routed",{"2":{"280":1,"285":1}}],["route",{"2":{"213":1}}],["router",{"2":{"19":3,"22":2}}],["routine",{"2":{"160":1,"191":1,"200":1}}],["routing",{"2":{"109":1}}],["roadmap",{"2":{"45":1}}],["rand",{"2":{"254":1}}],["range",{"2":{"11":1,"288":1}}],["ratio",{"2":{"97":1,"134":2,"176":2}}],["ratios",{"2":{"14":1}}],["raise",{"2":{"21":1}}],["ram",{"2":{"19":1}}],["rag",{"2":{"19":1,"20":1}}],["rewriting",{"2":{"226":1}}],["retained",{"2":{"176":1}}],["retrieves",{"2":{"180":1,"272":1}}],["retrieved",{"2":{"23":1,"172":1,"264":1,"267":1}}],["retrieve",{"2":{"8":1,"142":1}}],["retrieval",{"0":{"172":1},"2":{"6":2,"14":1,"22":1,"132":1,"137":1,"172":1,"250":1,"251":3,"260":2,"261":1,"262":1,"276":1}}],["requiring",{"2":{"251":1}}],["require",{"2":{"166":1}}],["requirements",{"0":{"120":1,"266":1},"1":{"267":1,"268":1,"269":1},"2":{"260":1,"261":1}}],["requires",{"2":{"77":1,"79":1,"92":1,"121":1,"166":1,"208":1,"253":1,"262":1,"268":1,"269":1,"273":1,"286":1}}],["required",{"2":{"15":1,"23":1,"36":1,"43":2,"48":1,"60":2,"108":1,"120":1,"150":1,"188":1,"254":1,"267":1,"278":1,"283":1,"293":1}}],["requested",{"2":{"169":1}}],["revoke",{"2":{"166":1}}],["redirected",{"2":{"166":1}}],["reducing",{"2":{"131":1,"132":1,"137":1}}],["reduces",{"2":{"14":1}}],["redundant",{"2":{"131":1,"132":1,"137":1,"176":1}}],["redundancy",{"2":{"14":1}}],["renaming",{"0":{"217":1}}],["rename",{"2":{"142":2,"214":1,"217":1}}],["rendered",{"2":{"8":1,"95":1}}],["referencing",{"2":{"213":1}}],["reference",{"0":{"91":1,"194":1,"228":1,"257":1},"2":{"10":1}}],["refresh",{"2":{"136":1,"141":1,"159":1,"168":1,"195":1}}],["reload",{"2":{"136":1,"141":1,"195":1}}],["relate",{"0":{"219":1}}],["related",{"2":{"119":1}}],["relationship",{"0":{"137":1}}],["relationships",{"2":{"125":1}}],["relying",{"2":{"100":1}}],["relevance",{"2":{"132":1}}],["relevant",{"2":{"14":1,"131":1,"168":1,"170":1,"172":1}}],["release",{"2":{"38":2,"253":2,"259":1}}],["reusable",{"2":{"95":1}}],["reordering",{"0":{"78":1},"2":{"78":1}}],["regardless",{"2":{"50":1,"56":1,"73":1}}],["registry",{"2":{"255":2,"257":2}}],["registration",{"2":{"39":1}}],["register",{"2":{"40":1,"42":1,"197":1}}],["recent",{"2":{"243":1}}],["receiving",{"2":{"40":1,"61":1}}],["receives",{"2":{"160":1,"199":1}}],["receive",{"2":{"36":1,"37":2,"45":1,"147":1}}],["recurring",{"2":{"156":1,"191":1,"200":1}}],["recursive",{"2":{"142":1}}],["recipient",{"2":{"153":1}}],["recreating",{"2":{"121":1,"129":1}}],["recreate",{"2":{"119":1}}],["records",{"2":{"136":1,"159":1,"211":1}}],["recommended",{"0":{"253":1},"2":{"16":1,"203":1,"248":1,"249":1,"254":1}}],["recognition",{"0":{"4":1},"2":{"50":1,"56":1}}],["removing",{"2":{"109":1,"132":1}}],["removes",{"2":{"137":1,"218":1}}],["removed",{"2":{"135":1}}],["remove",{"2":{"93":1,"98":1,"112":1,"116":1,"125":1,"136":1,"142":1,"159":1,"166":1,"175":1,"189":1,"218":1,"225":1,"265":1}}],["remote",{"0":{"165":1},"2":{"89":1,"165":2}}],["remains",{"2":{"22":1}}],["remembers",{"2":{"90":1}}],["remember",{"2":{"4":1,"19":1,"24":1,"146":1,"170":1}}],["repository",{"2":{"253":1}}],["report",{"2":{"229":1}}],["reports",{"2":{"120":1,"154":1,"191":1}}],["represented",{"2":{"221":1}}],["represents",{"2":{"182":1}}],["reproducible",{"2":{"21":1}}],["replies",{"2":{"7":1,"57":2}}],["re",{"2":{"21":1,"177":2}}],["resource",{"2":{"229":2}}],["resources",{"0":{"46":1,"52":1,"63":1},"2":{"8":1,"90":1,"116":1,"169":1}}],["research",{"2":{"203":1}}],["resetting",{"2":{"212":1,"233":1}}],["reset",{"2":{"28":1,"48":1,"124":1}}],["resets",{"2":{"9":1,"129":1,"210":1}}],["result",{"2":{"135":1,"158":1,"198":1}}],["results",{"2":{"100":1,"132":1,"192":1,"199":1,"208":2,"219":1,"251":1}}],["rest",{"2":{"198":1}}],["restoring",{"0":{"124":1}}],["restore",{"0":{"129":1},"2":{"5":1,"122":1,"124":1,"129":1}}],["restrict",{"2":{"77":1,"79":1,"134":1}}],["response",{"2":{"158":1,"208":1}}],["responses",{"2":{"11":1,"45":1,"51":1,"53":1,"57":1,"62":1,"68":1,"69":1,"91":1,"188":1}}],["respond",{"2":{"41":1,"56":1,"154":1}}],["reach",{"2":{"227":1}}],["reached",{"2":{"199":1}}],["reachable",{"2":{"178":1,"186":1}}],["reactions",{"2":{"8":1}}],["reasoning",{"2":{"89":1,"91":4,"169":1,"188":2,"236":2}}],["realized",{"2":{"19":1}}],["reality",{"2":{"18":1}}],["real",{"0":{"202":1},"2":{"8":1,"15":1,"18":2,"19":4,"24":1,"62":1,"100":1,"116":1,"117":1,"120":1,"177":1,"201":1,"208":1}}],["reads",{"2":{"137":1}}],["reading",{"2":{"95":1}}],["ready",{"2":{"38":1,"39":1}}],["read",{"2":{"5":1,"8":1,"30":1,"144":1,"146":1,"152":1,"199":1,"211":1,"230":1,"245":3,"286":1,"287":1,"288":1,"291":1,"293":1}}],["rebuild",{"0":{"177":1},"2":{"6":1,"101":1,"177":3,"260":1,"271":1}}],["uuid",{"2":{"236":2}}],["utc",{"2":{"97":1,"194":1,"257":1}}],["url",{"2":{"30":2,"37":4,"43":2,"60":1,"87":1,"110":2,"165":1,"182":1,"183":2,"186":1,"205":1,"256":1,"257":2,"268":2,"269":1,"278":2,"283":1}}],["uncomment",{"2":{"255":1}}],["uncomfortable",{"2":{"21":1}}],["unread",{"2":{"197":1,"198":2}}],["unresolvable",{"2":{"120":1}}],["unlike",{"2":{"262":1}}],["unlimited",{"2":{"193":1,"200":1}}],["unless",{"2":{"72":1}}],["unique",{"2":{"54":1,"117":1,"180":1}}],["unified",{"0":{"104":1},"2":{"7":1}}],["unifies",{"2":{"4":1}}],["underlying",{"2":{"251":1}}],["understanding",{"2":{"130":1}}],["understands",{"2":{"57":1}}],["under",{"2":{"20":1,"72":1,"118":1,"120":1,"291":1}}],["ui",{"0":{"214":1},"2":{"15":1,"31":1,"43":1,"49":1,"50":1,"55":1,"56":1,"60":1,"65":1,"97":1,"118":1,"143":1,"214":1,"216":1,"249":1,"250":1,"256":1}}],["usually",{"2":{"120":1}}],["us",{"2":{"97":1,"288":1}}],["usage",{"0":{"179":1,"241":2,"280":1,"285":1},"2":{"10":2,"179":1,"228":2,"232":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":5,"242":1,"243":1,"244":1,"245":1}}],["using",{"0":{"271":1},"2":{"8":1,"9":1,"13":1,"42":1,"86":1,"103":1,"110":1,"111":1,"116":1,"171":1,"191":1,"192":1,"198":1,"199":1,"251":2,"253":1,"267":1,"274":1,"289":1}}],["useful",{"2":{"73":2,"122":1,"129":1,"156":1,"177":1,"191":1,"213":1}}],["uses",{"2":{"60":1,"70":1,"90":1,"137":1,"194":2,"210":1,"211":1,"251":1,"262":1,"272":1,"286":1,"293":1}}],["used",{"2":{"10":1,"90":1,"91":5,"117":1,"133":1,"157":1,"180":1,"188":1,"264":1,"281":1}}],["use",{"0":{"226":1},"2":{"8":1,"23":1,"24":1,"38":1,"50":1,"56":1,"73":1,"90":2,"91":1,"94":2,"95":1,"98":1,"99":1,"100":1,"120":1,"125":1,"132":1,"142":1,"146":1,"154":1,"160":1,"167":1,"168":2,"169":1,"172":1,"178":1,"181":1,"184":1,"186":2,"200":2,"202":1,"206":1,"220":1,"222":2,"229":1,"251":2,"253":4,"255":1,"259":2,"261":1,"265":1,"270":1,"280":1,"285":1,"290":1}}],["username",{"2":{"54":2,"150":1,"257":1}}],["username>",{"2":{"42":1}}],["users",{"0":{"82":1,"83":1},"2":{"4":2,"8":1,"9":1,"22":1,"33":1,"45":1,"47":1,"58":1,"61":1,"62":1,"64":1,"67":1,"69":1,"70":1,"73":2,"84":1,"87":1,"90":1,"118":1,"211":1,"230":1,"255":1}}],["user",{"0":{"4":1},"2":{"9":1,"19":1,"24":1,"42":3,"43":2,"44":1,"73":1,"79":1,"85":1,"97":2,"121":1,"154":1,"169":1,"172":1,"208":1,"209":1,"211":1,"216":1,"222":1,"254":1,"257":1,"258":1}}],["upload",{"2":{"142":1}}],["updating",{"2":{"121":1}}],["updates",{"2":{"137":1}}],["updated",{"2":{"130":1,"177":1}}],["update",{"0":{"236":1},"2":{"10":1,"97":1,"98":1,"112":2,"142":1,"186":1,"206":1,"228":1,"234":2,"236":4,"258":1,"265":1}}],["upgradable",{"2":{"22":1}}],["up",{"2":{"3":1,"15":1,"23":1,"48":1,"90":1,"156":1,"179":1,"251":1,"254":2,"255":1,"258":2,"268":1,"269":1,"294":1}}],["dynamic",{"2":{"108":1}}],["drivers",{"2":{"120":1}}],["dropdown",{"2":{"99":1,"207":1,"270":1,"279":1,"284":1,"289":1}}],["dropped",{"2":{"78":1}}],["drag",{"2":{"78":1}}],["d",{"2":{"42":1,"251":1,"254":2,"255":1,"258":2,"268":1,"269":1}}],["dm",{"2":{"39":1}}],["db",{"2":{"22":1,"254":3}}],["duration",{"2":{"135":1,"158":1}}],["durable",{"2":{"21":1,"22":1,"25":1}}],["during",{"2":{"101":1,"116":1,"132":1,"133":1,"158":1,"160":2,"168":1,"180":1,"202":1,"219":1,"226":1,"251":1,"260":1}}],["duckduckgo",{"2":{"8":1,"203":1}}],["domain",{"2":{"150":1}}],["documented",{"2":{"222":1}}],["document",{"2":{"221":1,"251":1}}],["documentation",{"0":{"247":1,"248":1},"1":{"248":1},"2":{"52":1,"63":1}}],["docker",{"0":{"249":1},"1":{"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1},"2":{"16":2,"101":1,"117":1,"248":1,"249":2,"250":1,"251":1,"252":2,"253":6,"254":5,"255":5,"258":6,"259":2,"268":1}}],["do",{"2":{"42":1,"249":1}}],["downloaded",{"2":{"251":1}}],["download",{"2":{"142":1}}],["downloadable",{"2":{"127":1}}],["down",{"2":{"29":1,"116":1,"241":1,"258":1}}],["don",{"2":{"19":2,"21":2,"227":1,"251":1}}],["doing",{"2":{"19":1}}],["doesn",{"2":{"19":1,"116":1}}],["does",{"2":{"18":1,"119":1,"120":1,"121":1,"154":1,"193":1,"251":1}}],["debug",{"2":{"257":1}}],["delivered",{"2":{"199":1}}],["deliver",{"2":{"192":1}}],["delivery",{"2":{"150":1,"153":1}}],["delete",{"2":{"93":1,"98":1,"112":1,"116":1,"125":1,"142":1,"152":1,"167":2,"175":1,"186":2,"189":1,"206":2,"214":1,"225":1,"234":2,"235":2,"265":1,"271":1}}],["deleting",{"0":{"93":1,"218":1,"225":1},"2":{"167":1,"218":1}}],["delegates",{"2":{"211":1}}],["delegated",{"2":{"9":1,"219":1}}],["delegate",{"2":{"8":1}}],["designed",{"2":{"203":1}}],["desired",{"2":{"124":1}}],["descriptions",{"2":{"168":1}}],["description",{"2":{"34":1,"43":1,"60":1,"68":1,"73":1,"89":1,"91":1,"97":1,"109":1,"133":1,"157":1,"164":1,"165":1,"188":1,"193":2,"198":1,"211":1,"222":1,"224":1,"228":1,"250":1,"257":1,"259":1,"264":1,"278":1,"283":1,"288":1,"293":1}}],["deep",{"2":{"91":1}}],["deeply",{"2":{"6":1}}],["dense",{"0":{"269":1},"2":{"172":1,"250":1,"251":1,"261":2,"262":1,"264":3,"273":1}}],["density",{"2":{"19":2}}],["denied",{"2":{"72":1,"83":1,"84":1}}],["deny",{"2":{"70":1,"72":2,"73":1,"74":1,"75":1,"77":1,"82":1,"83":1,"84":1,"91":1,"236":1}}],["dedicated",{"2":{"39":1,"113":1,"139":1,"281":1}}],["determine",{"2":{"176":1}}],["determined",{"2":{"101":1}}],["determines",{"2":{"75":1}}],["detection",{"2":{"6":1}}],["detail",{"0":{"88":1},"1":{"89":1},"2":{"55":1,"88":1,"90":1,"93":1,"105":1,"115":1,"133":1,"134":1,"135":1,"139":1,"151":1,"157":1,"163":1,"173":1,"195":1,"223":1}}],["detailed",{"2":{"40":1,"106":1,"158":1,"248":1}}],["details",{"2":{"38":1,"168":1,"176":1,"233":1,"251":1}}],["developer",{"2":{"28":1,"30":1,"35":1}}],["devices",{"0":{"118":1,"119":1},"1":{"119":1,"120":1,"121":1},"2":{"117":2,"118":3,"119":1,"120":2,"121":2}}],["device",{"2":{"19":1,"22":1,"24":1,"97":2,"118":1,"119":2,"120":6,"121":1}}],["deployable",{"2":{"22":1}}],["depending",{"2":{"172":1,"205":1}}],["dependable",{"2":{"21":1}}],["dependencies",{"2":{"16":1}}],["decide",{"2":{"19":1}}],["decay",{"2":{"14":1,"134":1,"176":1}}],["decentralized",{"2":{"7":1,"39":1,"41":1}}],["definitions",{"2":{"257":1}}],["defined",{"2":{"216":1}}],["defines",{"2":{"193":1}}],["define",{"2":{"8":1,"70":1,"89":1,"90":1,"91":2,"220":1,"272":1}}],["defaults",{"2":{"188":1,"253":2,"264":1,"278":1}}],["default",{"0":{"72":1},"2":{"6":1,"23":1,"24":1,"43":2,"49":2,"60":1,"72":2,"75":1,"81":2,"82":1,"83":1,"84":1,"91":2,"97":1,"101":1,"157":1,"188":1,"194":1,"211":1,"229":1,"236":1,"254":1,"256":1,"257":2,"259":1,"264":1,"273":1,"275":1,"287":1,"288":4,"292":1}}],["date",{"2":{"179":1}}],["database",{"2":{"6":1,"23":1,"89":1,"250":2,"254":1,"257":2,"268":1}}],["data",{"0":{"126":1},"1":{"127":1,"128":1,"129":1},"2":{"5":1,"89":1,"93":2,"117":2,"126":1,"127":2,"128":1,"129":1,"156":1,"162":1,"164":1,"191":1,"253":3,"257":1}}],["danger",{"2":{"89":1,"93":1}}],["days",{"2":{"134":2,"176":2,"241":1}}],["day",{"2":{"21":1,"194":5,"197":1,"271":2,"280":2,"285":2}}],["dark",{"2":{"15":1}}],["daily",{"2":{"3":1,"193":1,"197":1,"198":1,"229":2}}],["dialog",{"2":{"224":1}}],["digest",{"2":{"197":1,"198":1}}],["dimensions",{"2":{"188":1}}],["different",{"2":{"104":1,"133":1,"157":1,"211":1,"213":1,"260":1}}],["differ",{"2":{"91":1}}],["differs",{"2":{"24":1}}],["did",{"2":{"19":1,"219":1}}],["directories",{"2":{"141":1,"142":1}}],["directory",{"2":{"129":1,"140":1,"141":1,"164":1,"253":2,"257":1}}],["directly",{"2":{"10":1,"61":1,"64":1,"67":1,"92":1,"110":1,"139":1,"145":1,"175":1,"211":1,"255":1}}],["direct",{"2":{"4":1,"39":1,"41":1,"44":1,"45":1,"50":1,"51":1,"62":1,"69":1}}],["discarding",{"2":{"132":1}}],["discovers",{"2":{"168":1}}],["discovery",{"0":{"168":1}}],["discover",{"2":{"120":1,"166":1,"169":1,"185":1}}],["discord",{"0":{"27":1,"28":1,"213":1},"1":{"28":1,"29":1,"30":1,"31":1,"32":1},"2":{"1":1,"4":1,"7":1,"27":1,"28":1,"30":1,"31":1,"32":1,"39":1,"73":2,"79":1,"89":1,"104":1,"106":1,"227":1,"247":1,"248":1}}],["displays",{"2":{"117":1,"179":1,"232":1}}],["display",{"2":{"54":1,"87":1,"96":1,"97":1,"183":1,"188":1,"193":1,"263":1,"277":1,"282":1}}],["displayed",{"2":{"48":1,"66":1,"245":1}}],["disappears",{"2":{"19":1}}],["disabled",{"2":{"109":1,"199":1}}],["disable",{"2":{"8":1,"109":1,"112":1,"167":1,"234":3}}],["distinguishes",{"2":{"187":1}}],["distinguish",{"2":{"4":1}}],["ps",{"2":{"258":1}}],["p",{"2":{"234":1}}],["pm",{"2":{"194":1}}],["png",{"2":{"145":1}}],["python",{"2":{"251":1}}],["python3",{"2":{"164":1}}],["py",{"2":{"144":1}}],["pitch",{"2":{"288":2,"290":1,"291":1,"292":1}}],["pipeline",{"2":{"260":1}}],["pins",{"2":{"259":1}}],["pin",{"2":{"253":1}}],["pixel",{"2":{"97":1}}],["pixels",{"2":{"97":2}}],["picture",{"2":{"87":1}}],["plus",{"2":{"82":1}}],["plan",{"2":{"251":1}}],["plane",{"2":{"22":1}}],["placed",{"2":{"75":1,"118":1}}],["playback",{"2":{"288":1}}],["playground",{"2":{"24":1}}],["playwright",{"2":{"8":1,"95":1,"250":1}}],["plainly",{"2":{"19":1}}],["platforms",{"2":{"7":1,"23":1,"31":1,"37":1,"39":1,"40":1,"43":1,"49":1,"53":1,"55":1,"60":1,"65":1,"86":1,"89":1,"103":1,"105":1}}],["platform",{"0":{"7":1,"84":1,"106":1},"2":{"1":1,"4":1,"7":1,"33":1,"34":1,"39":1,"40":2,"47":1,"48":1,"50":1,"52":1,"56":1,"63":1,"66":1,"73":2,"77":1,"106":1,"108":1,"109":2,"276":1}}],["phone",{"2":{"66":2}}],["phones",{"2":{"19":1}}],["photo",{"2":{"45":1}}],["public",{"2":{"286":1,"293":1}}],["published",{"2":{"38":1}}],["publish",{"0":{"38":1}}],["purpose",{"2":{"200":1}}],["purposes",{"2":{"126":1}}],["pulled",{"2":{"256":1}}],["pulls",{"2":{"253":1}}],["pull",{"2":{"116":1,"258":1}}],["push",{"2":{"24":1}}],["pencil",{"2":{"225":1}}],["people",{"2":{"21":1}}],["performance",{"2":{"203":1}}],["performing",{"2":{"191":1}}],["perform",{"2":{"86":1,"100":1,"116":1,"146":1,"155":1,"160":1,"169":1,"227":1}}],["persistence",{"2":{"117":1}}],["persistent",{"2":{"86":1,"93":1}}],["persist",{"2":{"78":1}}],["personalized",{"2":{"170":1}}],["personality",{"2":{"8":1,"86":1,"89":1,"220":1,"221":1}}],["personal",{"2":{"7":1,"18":1,"19":1,"39":2,"64":1}}],["person",{"2":{"4":2}}],["permission",{"2":{"74":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1}}],["permissions",{"0":{"36":1,"230":1},"2":{"30":1,"36":3,"152":1,"154":1}}],["permanently",{"2":{"25":1,"93":1,"112":1,"218":1}}],["per",{"2":{"11":1,"119":1,"210":1}}],["periodically",{"2":{"133":1}}],["periodic",{"2":{"9":1,"91":1,"155":1,"156":1,"191":1,"200":2,"211":1}}],["points",{"0":{"256":1}}],["popup",{"2":{"184":1}}],["port",{"2":{"150":1,"251":1,"257":3}}],["portal",{"2":{"28":1,"30":1,"39":1,"146":1}}],["portable",{"2":{"19":1,"21":1}}],["polling",{"2":{"43":1}}],["polite",{"2":{"19":1}}],["powerful",{"2":{"19":1,"147":1,"203":1}}],["powered",{"2":{"5":1,"8":1,"95":1,"203":1}}],["postgres",{"2":{"250":1,"253":2,"254":4,"257":1,"259":2}}],["postgresql",{"2":{"16":1,"249":1,"250":1,"257":1,"259":1}}],["post",{"2":{"42":1,"198":1}}],["position",{"2":{"19":1}}],["pool",{"2":{"14":1,"131":1,"176":1}}],["pdfs",{"2":{"95":1}}],["pdf",{"2":{"8":1,"100":1}}],["pattern",{"0":{"194":1},"2":{"193":1,"194":2,"195":1,"198":1,"229":1,"234":2}}],["path",{"2":{"141":1,"245":2,"257":1,"259":1}}],["paths",{"2":{"117":2,"257":1}}],["packaged",{"2":{"127":1}}],["package",{"2":{"114":1}}],["password=your",{"2":{"254":2}}],["password>",{"2":{"42":1}}],["password",{"2":{"42":2,"150":1,"253":2,"254":7,"257":2,"259":3}}],["paste",{"2":{"31":1,"37":1,"40":1,"49":1,"55":1,"110":1}}],["past",{"2":{"18":1}}],["pairs",{"2":{"164":1}}],["paired",{"2":{"20":1}}],["paid",{"2":{"19":1}}],["parent",{"2":{"125":1,"141":1}}],["parameters",{"2":{"91":1,"134":1,"205":1,"229":1}}],["parallel",{"2":{"8":1}}],["participate",{"2":{"41":1,"45":1,"62":1}}],["part",{"2":{"19":1,"133":1}}],["parsed",{"2":{"221":1}}],["parse",{"2":{"8":1}}],["pages",{"2":{"94":1}}],["page",{"0":{"88":1},"1":{"89":1},"2":{"8":2,"48":1,"55":1,"87":1,"88":1,"90":1,"93":1,"94":1,"95":1,"96":2,"99":1,"100":1,"105":1,"115":1,"133":1,"134":1,"135":1,"139":1,"149":1,"150":1,"151":1,"157":1,"163":1,"166":1,"173":1,"183":1,"188":1,"195":1,"203":1,"205":1,"207":1,"223":1,"263":1,"270":1,"274":1,"277":1,"279":1,"282":1,"284":1,"287":1,"290":1,"291":1,"292":1}}],["practices",{"2":{"222":1}}],["practice",{"2":{"95":1,"120":1}}],["pre",{"2":{"251":1}}],["prefix",{"2":{"246":1,"258":1}}],["prefixed",{"0":{"246":1},"2":{"227":1}}],["previous",{"2":{"210":1,"213":1}}],["preview",{"2":{"145":2,"290":1}}],["precise",{"2":{"200":1}}],["precedence",{"2":{"75":1}}],["prerequisites",{"0":{"171":1,"252":1}}],["present",{"2":{"268":1,"269":1}}],["presence",{"2":{"29":1}}],["preserved",{"2":{"213":1}}],["preserves",{"2":{"137":1}}],["preserve",{"2":{"9":1}}],["primarily",{"2":{"196":1}}],["primary",{"2":{"91":1}}],["priority",{"0":{"75":1},"2":{"75":2,"78":1}}],["prioritized",{"2":{"70":1}}],["privileged",{"2":{"29":1}}],["privileges",{"2":{"19":1}}],["private",{"0":{"82":1},"2":{"21":1,"22":2,"33":1,"45":1,"62":1,"69":1,"77":1,"114":1}}],["privately",{"2":{"3":1,"23":1}}],["privacy",{"2":{"18":1,"24":1,"203":2}}],["project",{"2":{"262":1,"278":2}}],["proceed",{"2":{"190":1}}],["process",{"0":{"164":1},"2":{"131":1,"137":2,"152":1,"158":1,"164":1,"169":1,"177":2,"208":1,"246":1,"249":1,"250":1}}],["probe",{"2":{"168":1}}],["problematic",{"2":{"83":1}}],["providing",{"2":{"147":1,"170":1}}],["provided",{"2":{"109":1,"111":1,"169":1,"174":1}}],["provides",{"2":{"92":1,"95":1,"113":1,"135":1,"140":1,"153":1,"158":1,"162":1,"214":1,"251":2,"262":1,"281":1}}],["provide",{"0":{"118":1},"1":{"119":1,"120":1,"121":1},"2":{"54":1,"118":1,"120":1,"123":1,"152":1,"160":1,"180":1,"208":2}}],["provider",{"0":{"11":1,"149":1,"150":1,"181":1,"182":1,"183":1,"205":1,"207":1,"238":1,"239":1,"260":1,"263":1,"264":1,"270":1,"276":1,"277":1,"278":1,"279":1,"281":1,"282":1,"283":1,"284":1,"287":1},"1":{"150":1,"182":1,"183":2,"184":2,"185":2,"186":2,"187":1,"188":1,"189":1,"190":1,"261":1,"262":1,"263":1,"264":1,"265":2,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"277":1,"278":1,"279":1,"280":1,"282":1,"283":1,"284":1,"285":1},"2":{"23":1,"90":5,"91":3,"102":1,"137":3,"148":2,"149":1,"150":3,"152":1,"166":1,"171":5,"172":2,"177":1,"178":2,"180":3,"181":1,"182":1,"183":2,"184":4,"185":3,"186":4,"187":1,"188":2,"202":1,"203":1,"205":2,"206":3,"207":2,"208":1,"228":2,"237":2,"251":2,"257":1,"260":2,"263":3,"264":1,"265":2,"269":1,"270":4,"271":1,"272":3,"273":2,"274":5,"275":4,"276":1,"277":3,"278":1,"279":2,"281":1,"282":3,"283":1,"284":2,"287":2,"291":3,"292":2,"293":1,"294":1}}],["providers",{"0":{"147":1,"186":1,"201":1,"206":1,"265":1,"272":1,"273":1,"291":1,"293":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1,"273":1,"274":1,"275":1,"292":1,"293":1,"294":1},"2":{"7":1,"8":3,"11":2,"15":1,"39":2,"89":1,"90":1,"138":1,"161":1,"171":1,"180":1,"183":1,"184":1,"188":1,"203":1,"242":2,"263":1,"273":1,"274":1,"277":1,"282":1,"287":1,"291":1,"292":1}}],["programmatically",{"2":{"198":1}}],["programming",{"2":{"144":1}}],["progress",{"2":{"19":2,"116":1}}],["prompt",{"2":{"160":1,"200":1,"226":1,"253":1}}],["prompted",{"2":{"66":1}}],["prompts",{"2":{"54":1,"101":1,"156":1,"253":1}}],["profiles",{"2":{"268":1}}],["profile",{"2":{"50":1,"56":1,"87":1,"90":1,"95":1,"101":1,"250":2,"251":5,"254":3,"255":2,"261":2,"268":2,"269":1}}],["product",{"2":{"25":1}}],["protocol",{"0":{"12":1},"2":{"7":1,"12":1,"39":1,"41":1,"161":1,"188":1}}],["hub",{"2":{"104":1,"255":1}}],["human",{"2":{"19":1}}],["humans",{"2":{"3":1,"23":1}}],["html",{"2":{"100":1}}],["https",{"2":{"42":1,"43":1,"97":2,"183":1,"253":6,"254":1,"278":1}}],["http",{"0":{"165":1},"2":{"12":1,"165":2,"256":3,"257":1,"268":2,"269":1,"283":1}}],["h",{"2":{"42":1}}],["highly",{"2":{"203":1}}],["highlighting",{"2":{"144":1}}],["high",{"2":{"91":1,"150":1,"236":1}}],["higher",{"2":{"78":1,"132":1}}],["highest",{"2":{"75":1,"261":1}}],["hierarchy",{"2":{"79":1}}],["hint",{"2":{"49":1}}],["hide",{"2":{"19":1}}],["history",{"0":{"153":1},"2":{"8":2,"20":1,"30":1,"130":1,"159":1,"174":1,"209":1,"210":1,"213":1,"218":1}}],["hour",{"2":{"194":1}}],["hours",{"2":{"6":1,"23":1}}],["how",{"0":{"22":1,"219":1,"226":1,"262":1},"2":{"90":1,"91":1,"106":1,"109":1,"135":1,"157":1,"158":1,"176":1,"220":1,"264":1,"272":1,"290":1}}],["homeserver>",{"2":{"42":1}}],["homeserver",{"2":{"39":1,"41":1,"42":1,"43":2}}],["home",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"19":2,"20":1,"24":1,"25":1,"245":2}}],["hosted",{"2":{"182":1,"203":1,"273":2,"275":2,"281":1}}],["host",{"0":{"120":1},"2":{"16":1,"113":1,"117":1,"118":3,"120":5,"150":1,"249":1,"257":3}}],["here",{"2":{"257":1}}],["height",{"2":{"97":2}}],["headers",{"2":{"165":2}}],["headless",{"2":{"94":1}}],["health",{"2":{"89":1}}],["heartbeat",{"0":{"155":1,"200":1,"243":2},"1":{"156":1,"157":1,"158":1,"159":1,"160":1},"2":{"9":1,"10":1,"89":3,"91":5,"155":1,"156":1,"157":5,"158":4,"159":1,"160":3,"200":2,"211":2,"214":1,"219":3,"228":2,"236":5,"237":3,"241":1,"243":3}}],["held",{"2":{"24":1}}],["helps",{"2":{"130":1,"176":1,"217":1,"226":1}}],["help",{"0":{"232":1},"2":{"10":1,"228":1,"230":1,"246":1}}],["hybrid",{"2":{"6":1,"24":1}}],["handles",{"2":{"154":1,"255":1,"276":1}}],["half",{"2":{"19":1}}],["happening",{"2":{"19":1}}],["hardware",{"2":{"18":1,"19":1}}],["have",{"2":{"12":1,"24":1,"90":1,"102":1,"116":1,"162":1,"171":1,"177":1,"190":1,"229":1,"230":1,"291":1}}],["having",{"2":{"1":1,"23":1}}],["has",{"2":{"1":1,"19":1,"66":1,"72":1,"74":1,"77":1,"129":1,"139":1,"171":1,"177":1,"193":1,"197":1,"213":1}}],["blocked",{"0":{"83":1}}],["block",{"2":{"79":1}}],["blocks",{"2":{"51":1,"57":1,"74":1}}],["blogs",{"0":{"26":1},"2":{"26":1}}],["b",{"2":{"42":1}}],["batch",{"2":{"167":1}}],["battery",{"2":{"19":1}}],["bashsudo",{"2":{"254":2,"255":1}}],["bashgit",{"2":{"254":1}}],["bashdocker",{"2":{"251":1,"258":1,"268":1,"269":1}}],["bashbrowser",{"2":{"101":1}}],["bashcurl",{"2":{"42":1,"253":5}}],["basic",{"0":{"274":1,"292":1},"2":{"34":1,"87":1,"224":1}}],["base64",{"2":{"254":1}}],["based",{"0":{"75":1,"192":1},"2":{"89":2,"108":1,"154":1,"166":1,"172":1,"184":1,"250":1,"261":1,"267":1,"273":2}}],["base",{"2":{"19":1,"20":2,"43":1,"117":1,"182":1,"183":1,"205":1,"257":1,"268":2,"269":1,"278":2,"283":1}}],["backup",{"2":{"126":1,"167":1}}],["backed",{"2":{"118":1}}],["backend",{"2":{"90":1,"91":1,"138":1,"171":1,"178":1,"180":1,"260":1,"272":1,"280":1,"281":1,"285":1}}],["background",{"2":{"117":1}}],["back",{"2":{"19":1,"57":1,"137":1,"142":1,"166":1}}],["box",{"2":{"251":1}}],["bocha",{"2":{"203":1}}],["bound",{"2":{"192":1}}],["boundaries",{"2":{"22":1,"24":1}}],["boundary",{"2":{"18":1}}],["bold",{"2":{"51":1,"57":1}}],["botname",{"2":{"246":2}}],["bottom",{"2":{"75":2,"90":1,"93":1,"183":1}}],["botfather",{"2":{"40":1,"54":2}}],["both",{"2":{"24":1,"101":1,"200":1,"268":1}}],["bot",{"0":{"3":1,"29":1,"30":1,"35":1,"42":1,"44":1,"48":1,"54":1,"59":1,"70":1,"81":1,"82":1,"83":1,"86":1,"87":1,"88":1,"90":1,"93":1,"99":1,"100":1,"103":1,"113":1,"139":1,"146":1,"148":1,"151":1,"154":1,"155":1,"160":1,"162":1,"169":1,"170":1,"180":1,"197":1,"207":1,"208":1,"220":1,"236":1,"237":1,"244":1,"270":1,"279":1,"284":1,"289":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1,"89":2,"90":1,"91":1,"92":1,"93":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"152":1,"156":1,"157":1,"158":1,"159":1,"160":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"221":1,"222":1,"223":1,"224":1,"225":1,"226":1},"2":{"1":1,"3":1,"5":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"14":1,"15":1,"23":3,"24":1,"27":1,"28":2,"30":2,"31":2,"35":2,"37":2,"38":1,"39":2,"40":3,"41":2,"42":1,"43":3,"44":2,"47":2,"48":2,"49":1,"50":2,"52":2,"53":1,"54":7,"55":1,"56":3,"57":4,"58":1,"59":3,"60":4,"61":2,"63":1,"64":1,"65":1,"67":1,"70":2,"72":4,"74":2,"75":1,"76":1,"77":1,"82":2,"83":1,"84":1,"85":1,"86":1,"87":2,"88":1,"89":4,"90":5,"91":3,"92":1,"93":4,"94":4,"99":2,"100":2,"102":2,"103":1,"104":1,"105":2,"109":1,"111":1,"113":2,"114":2,"115":2,"116":1,"117":1,"118":2,"119":1,"122":2,"130":1,"131":2,"133":2,"134":2,"135":1,"137":2,"139":2,"141":1,"142":2,"143":1,"144":1,"146":2,"147":1,"148":2,"151":2,"152":5,"153":1,"154":2,"155":1,"156":1,"157":1,"158":2,"160":3,"161":1,"162":1,"163":1,"164":1,"168":1,"169":1,"171":3,"172":1,"173":2,"174":1,"178":1,"179":1,"180":3,"190":1,"191":1,"192":2,"195":2,"197":3,"198":1,"201":1,"202":1,"207":1,"208":2,"209":2,"210":4,"211":6,"213":3,"216":1,"219":2,"220":2,"221":1,"223":2,"225":1,"226":2,"228":3,"230":2,"245":1,"246":1,"247":1,"250":1,"270":2,"271":3,"272":2,"274":2,"275":1,"276":1,"279":1,"280":2,"284":1,"285":2,"289":2,"290":1,"291":3,"292":2}}],["bots",{"0":{"226":1},"2":{"1":1,"3":4,"4":1,"5":1,"8":2,"10":1,"15":1,"23":6,"30":1,"33":1,"39":3,"45":1,"48":1,"86":1,"87":1,"95":2,"99":1,"106":1,"113":1,"162":1,"170":1,"198":1,"207":1,"227":1,"247":1,"248":1,"270":1,"279":1,"281":1,"284":1,"291":1}}],["business",{"2":{"39":1}}],["buttons",{"2":{"95":1}}],["button",{"2":{"87":1,"125":1,"166":1,"167":1,"168":1,"183":1,"186":1,"206":1,"214":1,"290":1,"292":1}}],["but",{"2":{"18":2,"19":1,"21":1,"79":2,"213":1}}],["builtin",{"2":{"263":1}}],["built",{"0":{"260":1,"263":1,"264":1},"1":{"261":1,"262":1,"263":1,"264":1,"265":2,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1},"2":{"7":1,"8":1,"12":1,"24":1,"25":1,"39":1,"90":1,"91":1,"100":1,"102":1,"144":1,"171":1,"251":2,"260":2,"273":1,"275":1,"290":1,"292":1}}],["buildkit",{"2":{"249":1}}],["building",{"2":{"19":1}}],["buildable",{"2":{"18":1}}],["build",{"2":{"3":1,"19":1,"24":1,"101":3,"251":1,"253":1}}],["best",{"2":{"222":1}}],["below",{"2":{"250":1}}],["belongs",{"2":{"187":1}}],["belief",{"2":{"24":1}}],["behave",{"2":{"220":1}}],["behaviors",{"2":{"226":1}}],["behavior",{"0":{"121":1},"2":{"91":3,"94":1,"97":1,"257":1}}],["behind",{"2":{"19":1}}],["before",{"2":{"66":1,"77":1,"120":1,"171":1,"178":1,"227":1,"254":1,"290":1}}],["begin",{"2":{"61":1}}],["better",{"2":{"132":1,"251":1,"262":1}}],["bet",{"2":{"25":1}}],["between",{"2":{"11":1,"19":1,"109":1,"141":1,"165":1,"187":1,"209":1,"213":1,"214":1}}],["become",{"2":{"129":1,"132":1,"176":1,"177":1,"213":1}}],["becomes",{"2":{"19":1,"21":1,"137":1,"202":1,"272":1}}],["because",{"2":{"19":1}}],["being",{"2":{"19":1,"251":1}}],["be",{"2":{"10":1,"23":1,"24":1,"78":1,"92":1,"93":1,"118":1,"133":1,"152":1,"157":1,"199":1,"208":1,"227":1,"253":1,"268":1,"269":1,"281":1}}],["broken",{"2":{"241":1}}],["browsing",{"0":{"141":1},"2":{"91":1,"140":1}}],["browse",{"0":{"245":1},"2":{"89":1,"201":1,"228":1}}],["browser",{"0":{"94":1,"95":1,"96":1,"97":1,"99":1,"101":1,"240":2},"1":{"95":1,"96":1,"97":1,"98":2,"99":1,"100":1,"101":1,"102":1},"2":{"8":2,"15":1,"30":1,"90":5,"91":2,"94":6,"95":4,"96":4,"97":5,"99":3,"100":4,"101":6,"228":2,"240":2,"250":3,"251":1,"253":2,"254":3,"255":1,"256":1,"257":2,"259":5}}],["breadcrumb",{"2":{"141":1}}],["breaks",{"2":{"18":1}}],["bridges",{"2":{"104":1}}],["brief",{"2":{"21":1,"193":1}}],["brave",{"2":{"8":1,"202":1,"203":1,"205":1}}],["brain",{"2":{"1":1}}],["bind",{"0":{"50":1,"56":1},"2":{"50":1,"56":2,"272":1}}],["bindings",{"0":{"147":1,"151":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":2,"153":1,"154":1},"2":{"89":1,"242":2}}],["binding",{"0":{"152":1},"2":{"4":1,"50":1,"56":1,"148":1,"152":1}}],["bing",{"2":{"8":1,"202":1,"203":1}}],["bm25",{"2":{"6":1,"251":1}}],["bypasses",{"2":{"75":1}}],["by",{"2":{"5":1,"6":1,"23":2,"24":1,"36":1,"39":1,"42":1,"72":1,"81":1,"95":1,"101":1,"106":1,"109":1,"120":1,"132":1,"141":1,"153":1,"159":1,"167":1,"168":1,"169":3,"175":1,"180":1,"185":1,"188":1,"194":1,"211":1,"214":3,"217":1,"219":1,"241":4,"248":1,"254":1}}],["f",{"2":{"255":2,"258":1}}],["fssl",{"2":{"253":6}}],["fs",{"0":{"245":1},"2":{"228":1,"245":5}}],["flask",{"2":{"251":1}}],["flexible",{"2":{"200":1}}],["flexibly",{"2":{"11":1}}],["flow",{"0":{"40":1,"107":1,"199":1,"204":1,"274":1,"292":1},"1":{"108":1,"109":1,"110":1,"111":1,"205":1,"206":1},"2":{"111":1,"166":1,"184":1}}],["furthermore",{"2":{"25":1}}],["fully",{"2":{"21":2,"161":1,"273":1}}],["full",{"2":{"7":4,"10":1,"12":1,"32":1,"45":1,"51":1,"62":1,"69":1,"166":1}}],["fixed",{"2":{"200":1}}],["fixes",{"2":{"19":1}}],["five",{"2":{"194":1}}],["fired",{"2":{"193":1}}],["fires",{"2":{"192":1,"199":1,"211":1}}],["firefox",{"2":{"97":1,"101":3,"259":1}}],["first",{"2":{"19":1,"20":1,"24":2,"75":2,"78":1,"90":1,"181":1,"194":1,"256":1}}],["finds",{"2":{"172":1}}],["find",{"2":{"99":1,"124":1,"159":1,"167":1,"207":1,"270":1,"279":1,"284":1,"289":1}}],["fine",{"2":{"79":1}}],["finished",{"2":{"19":1}}],["fields",{"0":{"109":1,"193":1},"2":{"43":1,"60":1,"79":1,"90":1,"108":1,"150":1,"183":1,"188":1,"194":1,"263":1,"277":1,"282":1}}],["field",{"2":{"37":1,"43":1,"55":1,"60":1,"68":1,"91":1,"96":1,"97":1,"109":1,"133":1,"157":1,"164":1,"165":1,"171":1,"188":1,"193":1,"194":1,"264":1,"278":1,"283":1,"288":1}}],["filter",{"2":{"159":1,"175":1,"214":1}}],["file`",{"2":{"222":1}}],["fileviewer",{"2":{"143":1}}],["filemanager",{"2":{"140":1}}],["file",{"2":{"89":1,"116":1,"128":1,"140":1,"141":1,"142":2,"144":2,"145":2,"167":2,"172":1,"188":1,"199":1,"245":1,"254":1,"257":1,"259":1,"261":1,"267":1,"273":1}}],["filesystem",{"0":{"245":1},"2":{"5":1,"15":1,"89":1,"113":1,"127":1,"128":1,"129":1,"139":2,"144":1,"156":1,"164":1,"228":1}}],["files",{"0":{"139":1,"142":1,"144":1,"146":1},"1":{"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1},"2":{"1":1,"5":1,"8":2,"22":1,"23":1,"24":1,"30":1,"32":1,"45":1,"51":1,"57":2,"89":2,"93":1,"114":1,"120":1,"139":1,"141":1,"142":2,"143":1,"146":2,"221":1,"247":1}}],["fill",{"2":{"37":1,"38":1,"43":1,"60":1,"87":1,"94":1,"96":1,"100":1,"108":1,"150":1,"167":1,"183":1,"205":1,"224":1,"263":1,"277":1,"282":1}}],["filling",{"2":{"8":1,"95":1}}],["focus",{"2":{"209":1}}],["focused",{"2":{"39":1,"137":1,"203":1}}],["folders",{"2":{"142":1}}],["folder",{"2":{"141":1,"142":1}}],["follow",{"2":{"54":1,"184":1,"222":1,"229":1}}],["following",{"2":{"36":1,"39":1,"96":1,"183":1,"188":1,"205":1,"263":1,"268":1,"273":1,"277":1,"282":1}}],["four",{"2":{"9":1,"11":1,"211":1}}],["force",{"2":{"48":1}}],["forcing",{"2":{"19":1}}],["forward",{"2":{"24":1}}],["format",{"0":{"229":1},"2":{"257":1,"288":2,"290":1,"291":1,"292":1}}],["formats",{"2":{"144":1}}],["formatting",{"2":{"49":1,"51":1,"53":1}}],["formatted",{"2":{"45":1}}],["forms",{"2":{"94":1,"95":1}}],["form",{"2":{"8":1,"18":1,"19":1,"79":1,"90":1,"184":1,"186":2,"206":2}}],["for",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"3":1,"5":1,"7":1,"8":2,"9":1,"10":1,"11":1,"12":1,"15":1,"19":2,"21":1,"22":1,"23":1,"25":1,"32":1,"36":2,"38":1,"39":6,"40":1,"42":1,"45":2,"51":2,"54":2,"57":1,"62":1,"69":2,"73":3,"75":1,"79":1,"82":1,"83":1,"85":1,"87":1,"89":2,"90":3,"91":5,"93":1,"95":2,"96":1,"100":1,"101":2,"104":1,"106":2,"111":1,"117":2,"118":1,"121":1,"122":1,"123":1,"126":1,"142":1,"147":1,"150":2,"154":1,"155":1,"156":1,"162":1,"164":2,"165":1,"166":1,"167":1,"176":2,"178":1,"179":1,"183":2,"187":2,"188":3,"191":1,"193":3,"195":1,"200":2,"201":1,"203":2,"205":2,"216":1,"219":1,"229":1,"233":1,"241":1,"248":1,"250":3,"251":3,"253":3,"255":1,"259":1,"263":1,"264":1,"271":1,"272":1,"277":1,"278":3,"280":1,"281":1,"282":1,"283":1,"285":1,"286":1}}],["friendly",{"2":{"188":1,"205":1}}],["free",{"2":{"286":1,"293":1}}],["freely",{"2":{"5":1,"23":1}}],["fresh",{"2":{"66":1,"129":1,"210":1,"212":1,"214":1}}],["frontend",{"2":{"257":1}}],["frontmatter",{"2":{"221":1,"225":1,"226":1}}],["frontier",{"2":{"22":1,"25":1}}],["from",{"2":{"6":1,"8":1,"19":1,"40":1,"42":1,"57":1,"66":1,"70":1,"74":1,"75":1,"77":1,"84":1,"87":1,"91":1,"96":1,"97":1,"105":1,"108":1,"115":1,"118":1,"128":1,"133":2,"134":1,"137":1,"139":1,"142":2,"148":1,"149":1,"150":1,"151":1,"157":2,"163":1,"167":1,"168":1,"171":1,"173":1,"174":2,"177":2,"183":1,"184":1,"185":2,"186":1,"188":1,"203":1,"205":1,"206":1,"209":1,"213":1,"219":1,"223":1,"225":1,"251":1,"253":2,"260":1,"262":1,"264":1,"271":2,"274":2,"278":1,"283":1,"291":2,"292":1}}],["fail",{"2":{"254":1}}],["failed",{"2":{"135":1,"158":1}}],["false",{"2":{"236":2,"259":1}}],["favorite",{"2":{"39":1,"103":1}}],["faster",{"2":{"24":1,"137":1}}],["fast",{"2":{"19":1,"251":1}}],["factor",{"2":{"18":1,"97":1}}],["facts",{"2":{"6":1}}],["familiar",{"2":{"18":1,"140":1}}],["family",{"2":{"3":1}}],["fewer",{"2":{"132":1}}],["featuring",{"2":{"53":1}}],["feature",{"2":{"39":1,"155":1,"176":1,"177":1,"200":1}}],["features",{"0":{"2":1,"23":1,"32":1,"45":1,"51":1,"57":1,"62":1,"69":1,"219":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"45":1,"200":1,"248":1}}],["feb",{"2":{"26":1}}],["feedback",{"2":{"51":1,"69":1,"116":1}}],["feed",{"2":{"21":1}}],["feels",{"2":{"25":1}}],["feeling",{"2":{"19":1}}],["feel",{"2":{"18":1,"19":2}}],["federated",{"2":{"8":1}}],["federation",{"2":{"8":1}}],["fetch",{"2":{"8":1,"40":1,"66":1,"185":1,"251":1,"253":1}}],["feishu",{"0":{"33":1,"34":1,"110":1,"213":1},"1":{"34":1,"35":1,"36":1,"37":1,"38":1},"2":{"1":1,"7":1,"23":1,"33":1,"34":1,"35":1,"37":3,"38":1,"39":1,"89":1,"106":1,"110":3,"227":1,"247":1,"248":1}}],["icon",{"2":{"189":2,"216":1,"225":2}}],["ignore",{"2":{"97":1}}],["irreversible",{"2":{"93":1}}],["idf",{"2":{"251":1}}],["identities",{"2":{"70":1,"83":1}}],["identity",{"0":{"4":1,"50":1,"56":1},"2":{"4":1,"8":1,"50":2,"56":3,"73":2,"77":2,"82":1,"85":1,"245":1}}],["identifier",{"2":{"42":1,"60":1,"117":1,"142":1,"188":1}}],["ids",{"2":{"40":1}}],["id",{"2":{"34":1,"37":1,"42":2,"43":2,"44":1,"59":1,"60":1,"77":4,"79":4,"97":1,"117":1,"167":1,"175":1,"188":2,"198":1,"236":2,"278":4,"288":1}}],["image",{"2":{"101":1,"116":2,"117":2,"121":1,"145":1,"188":1,"251":1,"253":3,"257":1,"259":4}}],["images",{"0":{"145":1},"2":{"32":1,"51":1,"57":1,"69":1,"256":1,"258":1}}],["immediately",{"2":{"112":1}}],["immediate",{"2":{"39":1}}],["im",{"2":{"36":2,"37":1}}],["impact",{"2":{"25":1}}],["imported",{"2":{"287":1,"292":1}}],["importance",{"2":{"251":1,"262":1}}],["important",{"0":{"121":1},"2":{"42":1,"48":1,"90":1,"137":1,"254":1}}],["importing",{"2":{"126":1}}],["import",{"0":{"126":1,"128":1,"185":1},"1":{"127":1,"128":1,"129":1},"2":{"5":1,"11":1,"89":1,"128":1,"167":2,"185":4}}],["if",{"2":{"19":1,"25":1,"32":1,"36":1,"44":1,"60":1,"66":1,"75":1,"90":1,"91":1,"102":1,"110":1,"111":1,"116":1,"117":1,"119":2,"120":1,"121":1,"152":3,"184":1,"188":1,"199":1,"251":1,"254":1,"258":1,"270":1}}],["i",{"2":{"19":7}}],["i18n",{"2":{"15":1}}],["injected",{"2":{"226":1}}],["initiated",{"2":{"211":1}}],["initialize",{"2":{"116":1,"256":1}}],["inquiries",{"2":{"154":1}}],["inbox",{"2":{"152":1}}],["inbound",{"2":{"7":1,"37":1,"110":1}}],["invocation",{"2":{"219":1}}],["involves",{"2":{"148":1}}],["invoked",{"2":{"99":1}}],["invalid",{"2":{"97":1}}],["invited",{"2":{"43":1}}],["invites",{"2":{"43":1,"44":1}}],["invite",{"0":{"30":1,"44":1},"2":{"44":1}}],["incremented",{"2":{"199":1}}],["inconsistent",{"2":{"177":1}}],["incoming",{"2":{"72":1,"73":1,"152":1,"154":1}}],["included",{"2":{"273":1}}],["include",{"2":{"95":1,"101":1,"169":1,"259":1}}],["includes",{"2":{"16":1,"130":1,"172":1,"249":1}}],["including",{"2":{"11":1,"93":1,"195":1}}],["input",{"2":{"49":1,"164":1,"188":1}}],["info",{"2":{"34":1,"87":1,"257":1}}],["information",{"0":{"117":1},"2":{"8":1,"19":1,"36":1,"100":1,"130":1,"131":1,"132":1,"170":1,"176":1,"179":1,"201":1,"208":1}}],["inference",{"2":{"22":1,"24":1,"25":1}}],["infrastructure",{"0":{"266":1},"1":{"267":1,"268":1,"269":1},"2":{"19":1,"21":1,"24":1,"25":1,"260":1,"267":1,"276":1}}],["inflate",{"2":{"19":1}}],["into",{"2":{"18":1,"19":1,"37":1,"55":1,"110":1,"127":1,"128":1,"142":1,"174":1,"197":1,"210":1,"221":1,"226":1,"251":1,"262":1,"291":1}}],["introduction",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"26":1}}],["integer",{"2":{"236":1}}],["integrated",{"2":{"140":1,"143":1}}],["integrating",{"2":{"33":1}}],["integration",{"2":{"7":1,"32":1,"39":4}}],["intent",{"2":{"29":3}}],["intents",{"2":{"29":1}}],["intelligence",{"2":{"19":1}}],["intercepted",{"2":{"227":1}}],["internal",{"2":{"188":1}}],["internet",{"2":{"19":1}}],["intervention",{"2":{"191":1}}],["intervene",{"2":{"146":1}}],["interval",{"2":{"91":1,"156":1,"157":1,"200":1,"236":2}}],["interactions",{"2":{"170":1}}],["interaction",{"0":{"100":1,"146":1,"154":1,"160":1,"169":1,"180":1,"208":1}}],["interactive",{"2":{"89":1,"92":1}}],["interact",{"2":{"27":1,"33":1,"39":1,"47":1,"58":1,"64":1,"70":1,"100":1,"103":1,"143":1}}],["interference",{"2":{"209":1}}],["interfering",{"2":{"5":1}}],["interface",{"2":{"7":1,"23":1,"39":1,"118":1,"159":1}}],["inspect",{"2":{"94":1,"100":1}}],["inspection",{"2":{"8":1}}],["instruction",{"2":{"193":1,"200":1}}],["instantly",{"2":{"227":1}}],["instances",{"2":{"291":1}}],["instance",{"2":{"116":1,"117":1,"187":1,"274":1}}],["install",{"0":{"253":1,"254":1},"1":{"255":1},"2":{"101":1,"114":1,"249":1,"253":3,"255":1,"259":1}}],["installation",{"0":{"16":1,"249":1},"1":{"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1},"2":{"248":2}}],["instead",{"2":{"100":1,"184":1,"276":1}}],["instinct",{"2":{"19":1}}],["inside",{"2":{"8":1,"92":1,"121":1,"139":1,"164":1,"249":1,"251":1}}],["indices",{"2":{"251":1,"262":1}}],["indicator",{"2":{"178":1}}],["indicators",{"2":{"49":1,"51":1,"68":1,"69":1}}],["individual",{"2":{"4":1,"45":1,"62":1,"69":1,"73":1,"138":1}}],["indexed",{"2":{"264":1}}],["indexes",{"2":{"177":1}}],["indexing",{"2":{"22":1,"24":1,"172":1,"267":1,"276":1}}],["index",{"2":{"22":1,"177":1,"179":2,"261":1}}],["independently",{"2":{"210":1}}],["independent",{"2":{"1":1,"8":1,"9":1,"12":1,"86":1,"162":1,"209":1,"211":1,"219":1}}],["in",{"0":{"65":1,"213":1,"214":1,"260":1,"263":1,"264":1},"1":{"261":1,"262":1,"263":1,"264":1,"265":2,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1},"2":{"3":1,"4":1,"5":1,"7":1,"8":2,"9":2,"10":1,"12":1,"14":1,"19":1,"21":1,"23":3,"24":1,"25":1,"28":1,"30":1,"31":1,"33":1,"34":2,"35":1,"37":3,"38":2,"39":1,"40":1,"41":1,"43":3,"45":1,"48":1,"49":1,"50":2,"53":1,"54":1,"55":1,"56":1,"59":1,"60":2,"61":2,"62":2,"65":1,"67":1,"72":1,"75":1,"79":2,"81":1,"87":2,"90":1,"91":2,"93":1,"95":1,"96":2,"97":3,"100":1,"102":1,"105":1,"108":1,"110":1,"113":1,"115":1,"117":1,"118":2,"119":1,"120":3,"123":1,"124":1,"133":1,"134":1,"135":1,"139":1,"144":2,"145":1,"146":1,"149":1,"150":1,"151":1,"154":2,"157":2,"163":1,"167":1,"169":1,"171":2,"172":1,"173":1,"174":1,"175":1,"177":2,"180":1,"183":1,"184":2,"186":1,"188":1,"189":1,"194":1,"196":1,"197":1,"203":1,"205":1,"206":2,"211":1,"216":1,"219":1,"223":1,"224":2,"227":1,"230":1,"245":1,"246":1,"247":1,"249":1,"250":1,"251":3,"254":1,"255":2,"256":1,"258":1,"259":2,"260":3,"262":1,"263":1,"264":1,"268":1,"269":2,"270":1,"272":1,"273":1,"274":1,"275":1,"277":1,"282":1,"290":1,"291":2,"292":1}}],["italic",{"2":{"51":1,"57":1}}],["iterate",{"2":{"24":1}}],["itself",{"2":{"146":1,"180":1,"197":1}}],["its",{"2":{"1":2,"5":1,"12":1,"23":1,"76":1,"86":1,"88":2,"90":1,"91":2,"93":1,"97":1,"98":1,"109":1,"113":1,"121":1,"139":2,"142":1,"146":2,"152":1,"154":1,"156":1,"160":2,"162":1,"168":1,"169":1,"180":1,"186":1,"192":1,"199":1,"206":1,"208":1,"209":1,"210":1,"218":1,"219":1,"225":1,"247":1,"264":1,"265":1,"270":1,"272":1,"273":1,"276":1,"278":1,"280":1,"283":1,"285":1,"288":1}}],["it",{"2":{"1":1,"19":9,"24":2,"25":1,"27":1,"28":2,"30":2,"41":1,"47":1,"48":2,"50":1,"58":1,"64":1,"66":1,"97":1,"103":1,"104":1,"110":1,"114":1,"116":1,"117":1,"118":1,"122":1,"125":1,"144":1,"154":2,"155":2,"160":1,"182":1,"189":1,"192":2,"193":1,"194":2,"201":1,"202":1,"217":1,"220":1,"251":4,"254":1,"260":1,"262":1,"264":1,"278":1,"281":1,"283":1,"286":1}}],["issues",{"2":{"178":1}}],["issue",{"2":{"135":1,"158":1,"178":1}}],["isolated",{"0":{"114":1},"2":{"5":1,"22":1,"23":1,"24":1,"86":1,"113":1,"139":1,"247":1}}],["isolation",{"0":{"5":1,"210":1},"2":{"113":1}}],["is",{"0":{"1":1},"2":{"1":1,"18":1,"19":3,"20":1,"22":2,"23":2,"25":2,"38":1,"44":1,"48":1,"53":1,"56":1,"61":1,"64":1,"66":1,"67":1,"75":2,"79":1,"81":1,"86":1,"90":1,"93":1,"94":1,"95":1,"97":1,"100":1,"111":1,"116":1,"118":3,"121":1,"122":1,"123":1,"127":1,"129":1,"131":1,"137":1,"146":1,"156":2,"157":1,"166":1,"168":1,"169":1,"176":1,"177":1,"178":3,"179":1,"186":1,"187":1,"191":1,"192":1,"193":1,"194":1,"199":3,"202":1,"209":1,"211":1,"213":2,"219":1,"221":1,"245":1,"247":1,"248":1,"249":1,"251":1,"254":2,"257":1,"258":1,"260":1,"270":1,"271":1,"275":1,"276":1,"281":1,"286":1,"287":2,"291":1,"292":1}}],["especially",{"2":{"213":1}}],["error",{"2":{"120":1,"158":1,"178":1}}],["errors",{"2":{"97":1,"159":1}}],["efficient",{"2":{"251":1}}],["effort",{"2":{"91":2,"236":1}}],["effective",{"2":{"117":1,"121":1}}],["effects",{"0":{"74":1}}],["effect",{"0":{"72":1},"2":{"72":2,"74":1,"75":1,"77":1,"81":1,"82":1,"83":1,"84":1,"91":1,"236":1}}],["etc",{"0":{"213":1},"2":{"44":1,"120":1,"135":1,"227":1,"251":1}}],["elements",{"2":{"94":1}}],["element",{"2":{"42":1,"44":1,"46":1}}],["else",{"2":{"19":1,"21":1}}],["e",{"2":{"40":1,"42":2,"43":2,"54":3,"73":2,"134":1,"141":1,"144":1,"145":1,"150":1,"164":2,"165":1,"177":1,"183":2,"188":3,"193":3,"199":1,"205":2,"229":2,"236":1,"253":1,"259":1,"283":1,"291":2,"292":1}}],["edge",{"0":{"286":1,"287":1},"1":{"287":1,"288":1,"289":1,"290":1},"2":{"24":1,"286":2,"287":2,"288":1,"289":2,"291":2,"292":1,"293":2,"294":1}}],["editor",{"2":{"140":1,"144":1,"224":1}}],["editing",{"0":{"143":1,"225":1},"1":{"144":1,"145":1},"2":{"116":1,"260":1}}],["edit",{"2":{"1":1,"8":1,"23":1,"89":1,"98":1,"144":1,"175":1,"186":1,"189":2,"206":1,"225":1,"247":1,"254":1,"265":1,"271":1}}],["easily",{"2":{"226":1}}],["easy",{"2":{"23":1}}],["each",{"2":{"3":1,"4":1,"5":2,"6":1,"9":1,"12":1,"23":3,"24":1,"40":1,"48":1,"72":1,"74":1,"79":1,"82":1,"106":1,"132":1,"162":1,"180":1,"185":1,"200":1,"209":1,"210":1,"216":1,"219":2,"247":1,"260":1}}],["evaluate",{"2":{"133":1,"137":1}}],["evaluated",{"2":{"75":1,"78":1,"194":1}}],["evaluation",{"0":{"75":1}}],["even",{"2":{"155":1}}],["event",{"2":{"37":1,"110":1}}],["events",{"0":{"37":1},"2":{"37":1,"165":1}}],["eventually",{"2":{"19":1}}],["everyone",{"2":{"77":1,"81":1,"83":1}}],["everything",{"2":{"22":1,"25":1,"249":1}}],["every",{"2":{"1":1,"18":1,"19":1,"21":1,"23":1,"73":1,"113":1,"139":1,"158":1,"194":5,"197":1,"198":1}}],["evolves",{"2":{"19":1}}],["economics",{"2":{"19":1}}],["emmamultilingualneural",{"2":{"288":1}}],["embedded",{"2":{"249":1,"250":1}}],["embeddings",{"2":{"172":1,"261":1}}],["embedding",{"2":{"11":1,"91":1,"180":1,"187":2,"188":2,"251":4,"261":2,"262":1,"264":2,"269":1,"273":1}}],["embed",{"2":{"30":1,"188":1}}],["empty",{"2":{"19":1,"60":1,"193":1,"278":1}}],["emails",{"2":{"8":1,"147":1,"152":2,"153":1,"154":1,"197":1,"198":2}}],["email",{"0":{"147":1,"148":1,"149":1,"151":1,"242":2},"1":{"148":1,"149":1,"150":2,"151":1,"152":2,"153":1,"154":1},"2":{"1":1,"7":1,"8":2,"39":2,"89":2,"148":5,"149":2,"150":3,"151":2,"152":3,"153":5,"154":3,"228":2,"242":3,"247":1,"257":1}}],["encodes",{"2":{"251":1}}],["encoding",{"2":{"250":1,"251":3,"257":1,"262":1,"268":1}}],["encountered",{"2":{"135":1,"158":1}}],["env",{"2":{"164":1,"254":1}}],["environment",{"0":{"259":1},"2":{"24":1,"91":1,"94":1,"113":1,"115":1,"122":1,"130":1,"164":1,"253":2}}],["ensure",{"2":{"123":1}}],["ensures",{"2":{"113":1}}],["enabling",{"2":{"104":1,"111":1,"155":1,"201":1}}],["enables",{"2":{"50":1,"56":1,"97":1,"222":1}}],["enabled",{"2":{"43":1,"44":1,"49":2,"61":1,"67":1,"69":1,"91":3,"133":2,"152":3,"157":1,"193":1,"195":1,"198":1,"236":3,"250":1}}],["enable",{"0":{"35":1},"2":{"8":1,"29":1,"31":1,"35":1,"36":1,"40":1,"43":1,"49":3,"55":1,"60":1,"68":1,"91":1,"109":1,"112":2,"119":1,"167":1,"188":1,"234":2,"251":3,"268":1}}],["en",{"2":{"97":1,"236":2,"288":1}}],["engines",{"0":{"203":1},"2":{"201":1,"203":2,"259":1}}],["engine",{"2":{"90":1,"91":1,"97":1,"205":2}}],["engineered",{"2":{"6":1}}],["engineering",{"0":{"6":1},"2":{"23":1}}],["entries",{"2":{"131":1,"132":3,"137":1,"159":1,"175":1,"179":1,"275":1}}],["entry",{"2":{"66":1,"216":1}}],["entire",{"2":{"70":1,"73":1,"77":1,"79":1,"88":1,"226":1}}],["enter",{"2":{"18":1,"34":1,"119":2,"120":1,"174":1}}],["enterprise",{"2":{"7":1,"33":1,"39":2}}],["endpoint",{"2":{"60":1,"165":1,"283":1}}],["ending",{"2":{"54":1}}],["enough",{"2":{"19":1}}],["exchanged",{"2":{"166":1}}],["except",{"2":{"83":1}}],["exa",{"2":{"203":1}}],["exact",{"2":{"120":1,"188":1}}],["examples",{"0":{"80":1},"1":{"81":1,"82":1,"83":1,"84":1,"85":1},"2":{"119":1,"194":1,"234":1,"245":1}}],["example",{"0":{"222":1},"2":{"79":1,"176":1,"229":1,"236":1,"237":1}}],["existing",{"2":{"121":1,"125":1,"137":1,"175":1,"214":1}}],["exist",{"2":{"116":1,"119":1,"120":1}}],["expiration",{"2":{"257":1}}],["expires",{"2":{"66":1}}],["explanation",{"2":{"193":1}}],["explicitly",{"2":{"72":2}}],["explicit",{"2":{"22":1,"24":1}}],["expression",{"2":{"193":1,"197":1,"200":1}}],["expressions",{"2":{"13":1,"23":1,"191":1}}],["express",{"2":{"132":1}}],["expand",{"2":{"119":1}}],["exposed",{"2":{"120":1,"168":1,"169":1}}],["expose",{"2":{"118":1}}],["exporting",{"2":{"126":1}}],["export",{"0":{"126":1,"127":1},"1":{"127":1,"128":1,"129":1},"2":{"5":1,"8":1,"89":1,"100":1,"127":1,"167":2}}],["expensive",{"2":{"21":1}}],["experienced",{"2":{"24":1}}],["experience",{"2":{"18":1,"140":1}}],["executable",{"2":{"164":1}}],["executing",{"2":{"116":1}}],["executions",{"2":{"193":1}}],["execution",{"0":{"199":1},"2":{"9":1,"13":1,"22":1,"89":2,"158":1,"195":1,"200":1,"211":1,"243":1}}],["executes",{"2":{"164":1,"192":1,"199":1}}],["execute",{"2":{"1":1,"5":1,"8":1,"23":1,"92":1,"113":1,"114":1,"156":1,"157":1,"227":1,"230":1}}],["extending",{"0":{"162":1}}],["external",{"0":{"213":1},"2":{"8":1,"12":1,"40":1,"73":1,"161":1,"162":1,"172":1,"191":1,"201":1,"251":1,"262":1}}],["extraction",{"2":{"260":1,"272":1,"280":1,"285":1}}],["extracted",{"2":{"128":1,"219":1}}],["extract",{"2":{"42":1,"174":1,"271":1}}],["extracts",{"2":{"6":1}}],["extra",{"2":{"16":1}}],["ok",{"2":{"158":1}}],["okay",{"2":{"19":1}}],["old",{"2":{"136":1,"159":1,"213":1}}],["older",{"2":{"134":1,"159":1,"176":1}}],["observe",{"2":{"100":1}}],["obtain",{"2":{"40":1,"42":1}}],["o1",{"2":{"91":1,"188":1}}],["oem",{"2":{"19":1}}],["os",{"2":{"19":1}}],["occasional",{"2":{"19":1}}],["output",{"2":{"164":1,"230":1,"288":1}}],["outgoing",{"2":{"152":1,"154":1}}],["outdated",{"2":{"131":1,"132":1}}],["outbox",{"0":{"153":1},"2":{"89":1,"153":1,"154":1,"242":2}}],["outbound",{"2":{"7":1}}],["outcome",{"2":{"75":1}}],["outside",{"2":{"39":1,"120":1}}],["out",{"2":{"19":1,"251":1}}],["our",{"2":{"18":1,"19":1}}],["only",{"2":{"48":1,"72":1,"77":1,"79":2,"82":1,"84":1,"85":1,"100":1,"118":1,"176":1,"211":2,"230":4,"251":1,"254":1,"261":1,"262":1,"264":1,"267":1}}],["online",{"2":{"25":1}}],["once",{"2":{"38":1,"48":1,"61":1,"66":1,"88":1,"94":1,"167":1,"168":1,"169":1,"184":1,"202":1,"271":1,"280":1,"285":1}}],["on",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"16":1,"18":2,"19":1,"21":1,"22":1,"25":2,"40":2,"41":1,"42":1,"48":1,"54":1,"56":1,"66":2,"73":1,"88":1,"100":1,"104":1,"106":1,"108":1,"120":2,"133":1,"142":1,"154":1,"157":1,"166":1,"168":1,"172":1,"176":1,"186":1,"188":1,"193":1,"205":1,"206":1,"209":1,"214":1,"217":1,"219":1,"249":1,"251":2,"254":1,"258":1,"290":1}}],["one",{"0":{"253":1},"2":{"16":1,"25":1,"53":1,"66":1,"95":1,"119":2,"171":1,"181":2,"185":2,"210":1,"219":1,"260":1,"272":1,"274":1}}],["opus",{"2":{"288":1}}],["opt",{"2":{"164":1}}],["optimize",{"2":{"176":1}}],["optimized",{"2":{"137":1}}],["optimizes",{"2":{"131":1}}],["optimizing",{"2":{"14":1}}],["options",{"2":{"118":1,"119":1,"236":2,"288":2}}],["optionally",{"2":{"77":1,"91":1,"134":1,"176":1}}],["optional",{"0":{"50":1,"56":1,"68":1},"2":{"49":1,"79":1,"97":4,"118":1,"193":1,"200":1,"250":1,"257":1}}],["option",{"2":{"42":2,"236":1}}],["operational",{"2":{"178":1}}],["operation",{"2":{"129":1}}],["operations",{"0":{"112":1,"115":1,"140":1,"167":1,"173":1},"1":{"116":1,"141":1,"142":1,"174":1,"175":1},"2":{"8":1,"12":1,"116":1,"146":1,"271":1,"280":2,"285":2}}],["operates",{"2":{"113":1,"260":1}}],["operate",{"2":{"25":1}}],["openssl",{"2":{"254":1}}],["opensearch",{"2":{"251":2,"262":2,"268":1}}],["opening",{"2":{"219":1}}],["openviking",{"0":{"281":1,"282":1,"283":1,"284":1},"1":{"282":1,"283":1,"284":1,"285":1},"2":{"171":1,"273":1,"275":1,"281":1,"282":1,"283":2,"284":1,"285":2}}],["open",{"0":{"81":1,"83":1},"2":{"25":1,"30":1,"33":1,"34":1,"44":1,"48":1,"52":1,"54":1,"56":1,"63":1,"66":1,"76":1,"92":1,"94":1,"99":1,"119":1,"144":1,"166":1,"171":1,"224":1,"270":1,"274":2,"279":1,"284":1,"289":1,"292":1}}],["openclaw",{"0":{"24":1},"2":{"24":1}}],["openai",{"2":{"11":2,"91":1,"182":1,"183":2,"184":1,"188":3,"237":2,"251":1}}],["overlay",{"2":{"255":1}}],["overlap",{"2":{"132":1}}],["overview",{"0":{"18":1,"39":1,"89":1},"1":{"40":1},"2":{"89":1}}],["over",{"2":{"14":1,"18":1,"130":1,"131":1,"132":1,"165":1,"176":1,"288":1}}],["oauth2",{"2":{"30":1}}],["oauth",{"0":{"166":1,"184":1},"2":{"7":1,"11":1,"12":1,"39":1,"89":1,"166":6,"184":4}}],["often",{"2":{"91":1,"157":1}}],["official",{"0":{"46":1,"52":1,"63":1},"2":{"30":1,"37":1,"47":1,"54":2,"253":1}}],["off",{"0":{"267":1},"2":{"19":1,"133":1,"157":1,"177":1,"261":1,"264":1,"273":1}}],["of",{"2":{"6":1,"8":1,"10":1,"11":1,"18":2,"19":3,"23":1,"43":1,"45":1,"50":1,"53":1,"56":1,"73":2,"83":1,"90":1,"91":1,"100":1,"115":1,"117":1,"122":1,"125":1,"130":2,"132":3,"133":1,"134":1,"135":2,"137":1,"153":2,"158":2,"160":2,"162":1,"164":2,"165":2,"171":1,"176":1,"178":1,"179":1,"183":2,"184":1,"193":3,"194":3,"197":1,"210":1,"211":2,"219":2,"220":1,"232":1,"250":1,"251":2,"257":1,"260":1,"262":1,"274":1,"276":1}}],["others",{"2":{"219":1,"250":1}}],["other",{"0":{"219":1},"2":{"3":1,"5":1,"15":1,"23":1,"84":1,"113":1,"178":1,"200":1,"203":1,"205":1,"209":1,"211":1}}],["orchestrated",{"2":{"249":1}}],["oriented",{"2":{"200":1}}],["ordering",{"2":{"75":1}}],["order",{"2":{"75":1,"78":1}}],["organized",{"2":{"291":1}}],["organize",{"2":{"217":1}}],["organization",{"2":{"36":1,"58":1,"278":2}}],["org",{"2":{"42":1,"43":2}}],["or",{"2":{"1":1,"3":3,"8":1,"10":1,"16":1,"23":2,"33":1,"39":1,"40":1,"42":1,"44":1,"45":1,"57":1,"59":1,"61":1,"66":1,"70":2,"72":1,"75":1,"77":2,"91":1,"95":2,"97":3,"100":2,"101":1,"109":2,"113":2,"116":1,"117":1,"119":3,"120":1,"121":1,"123":1,"126":1,"129":1,"131":1,"132":2,"133":1,"135":1,"137":2,"142":2,"146":1,"148":1,"154":1,"156":1,"157":1,"158":2,"159":1,"160":1,"165":1,"167":3,"171":1,"172":1,"175":1,"176":1,"178":1,"180":1,"182":1,"186":1,"187":1,"188":1,"191":1,"202":1,"209":1,"214":1,"216":1,"225":1,"226":1,"236":5,"241":2,"243":1,"244":1,"247":1,"249":1,"253":1,"254":3,"262":1,"264":1,"271":1,"273":1,"275":1,"281":1}}],["owner",{"2":{"72":1,"75":1,"82":1,"180":1,"230":4,"234":5,"235":1,"236":1,"237":2,"238":1,"239":1,"240":1}}],["own",{"2":{"1":3,"5":1,"12":1,"15":1,"23":3,"86":1,"91":1,"113":1,"139":1,"146":1,"152":1,"162":1,"203":1,"209":1,"210":1,"247":2,"273":1}}],["lt",{"2":{"234":8,"235":2,"237":4,"238":1,"239":1,"240":1,"245":1}}],["leave",{"2":{"193":1}}],["leaving",{"2":{"143":1}}],["least",{"2":{"181":2}}],["lead",{"2":{"132":1}}],["lets",{"2":{"79":1,"100":1}}],["level",{"2":{"73":2,"79":1,"91":1,"194":1,"257":1}}],["left",{"2":{"28":1,"34":1}}],["less",{"2":{"25":1}}],["ll",{"2":{"19":1}}],["llms",{"2":{"19":1}}],["llm",{"0":{"11":1,"181":1,"182":1},"1":{"182":1,"183":2,"184":2,"185":2,"186":2,"187":1,"188":1,"189":1,"190":1},"2":{"11":1,"24":1,"90":1,"91":3,"133":1,"157":1,"181":1,"182":1,"227":1}}],["libraries",{"2":{"121":1}}],["linux",{"2":{"258":1}}],["line",{"2":{"119":1,"153":1,"164":1,"255":1}}],["link",{"2":{"111":1,"148":1}}],["linked",{"2":{"56":1}}],["links",{"2":{"30":1,"51":1,"57":1,"95":1,"248":1}}],["listen",{"2":{"257":1}}],["listed",{"2":{"82":1}}],["listing",{"2":{"230":1}}],["lists",{"2":{"168":1,"216":1,"262":1}}],["list",{"2":{"70":1,"83":1,"108":1,"120":2,"124":1,"125":1,"136":1,"141":1,"164":1,"168":1,"175":1,"184":1,"185":1,"186":1,"188":2,"189":1,"195":2,"211":1,"229":1,"232":1,"234":3,"235":2,"237":3,"238":2,"239":2,"240":2,"244":2,"245":4,"251":1,"264":1,"278":1,"283":1}}],["limit",{"2":{"193":1,"200":1}}],["limited",{"2":{"66":1}}],["limits",{"2":{"13":1}}],["lifecycle",{"0":{"116":1},"2":{"88":1,"89":1,"115":1,"130":1}}],["life",{"2":{"19":1}}],["live",{"2":{"19":1}}],["lightweight",{"2":{"251":1,"261":1}}],["lighter",{"2":{"24":1,"251":1}}],["light",{"2":{"15":1}}],["like",{"2":{"1":1,"19":1,"22":1,"23":1,"25":2,"37":1,"91":1,"95":1,"100":1,"116":1,"148":1,"182":1,"184":1,"187":1,"202":1}}],["lookup",{"2":{"251":1}}],["looked",{"2":{"19":1}}],["losing",{"2":{"210":1}}],["lose",{"2":{"132":1}}],["lost",{"2":{"93":1}}],["logging",{"2":{"257":1}}],["logs",{"0":{"135":1,"136":1,"158":1,"159":1,"243":1},"1":{"136":1,"159":1},"2":{"89":3,"136":1,"159":1,"160":1,"228":1,"243":3,"258":2}}],["login",{"2":{"42":3,"66":3,"67":1,"256":1}}],["log",{"2":{"34":1,"48":1,"59":1,"130":1,"136":1,"153":1,"158":1,"159":1,"257":1}}],["load",{"2":{"159":2}}],["loaded",{"2":{"23":1}}],["loads",{"2":{"6":1}}],["localhost",{"2":{"256":3}}],["locally",{"2":{"251":1,"262":1,"268":1}}],["locale",{"2":{"91":1,"94":1,"97":2}}],["local",{"0":{"164":1},"2":{"20":1,"21":1,"22":1,"24":1,"25":1,"127":1,"128":1,"142":2,"164":1}}],["lower",{"2":{"134":1}}],["lowest",{"2":{"75":1}}],["low",{"2":{"19":1,"91":1,"236":1}}],["longer",{"2":{"19":1,"98":1,"132":1,"175":1,"213":1,"218":1,"265":1}}],["long",{"2":{"1":1,"18":1,"21":1,"25":1,"43":1,"102":1,"135":1,"158":1,"170":1,"180":1,"213":1,"247":1,"272":1}}],["large",{"2":{"131":1}}],["lark",{"0":{"33":1},"1":{"34":1,"35":1,"36":1,"37":1,"38":1},"2":{"1":1,"4":1,"7":1,"23":1,"33":1,"39":1,"106":1,"247":1}}],["launch",{"2":{"116":1}}],["later",{"2":{"121":1,"122":1}}],["latest",{"2":{"26":1,"141":1,"159":1,"253":1,"258":1,"259":2}}],["late",{"2":{"19":1}}],["latency",{"2":{"18":1}}],["languages",{"2":{"144":1,"251":1,"262":1,"286":1,"288":1,"293":1}}],["language",{"2":{"6":1,"91":2,"193":1,"197":1,"200":1,"236":3,"251":1,"288":1}}],["last",{"2":{"6":1,"23":1,"216":2,"241":1}}],["layers",{"2":{"291":1}}],["layer",{"2":{"6":1,"19":1,"20":1}}],["two",{"2":{"148":1,"196":1}}],["tutorial",{"2":{"54":1}}],["turning",{"2":{"19":1}}],["turn",{"2":{"6":1,"18":1,"23":1,"132":1}}],["typical",{"2":{"95":1}}],["typing",{"2":{"49":1,"51":1,"68":2,"69":1}}],["type",{"2":{"42":3,"73":1,"77":3,"79":2,"84":2,"150":1,"164":1,"165":1,"167":1,"172":1,"188":2,"211":2,"214":1,"216":2,"241":1,"263":1,"277":1,"282":1,"287":1,"291":1,"292":1}}],["types",{"0":{"73":1,"163":1,"211":1},"1":{"164":1,"165":1},"2":{"9":1,"11":1,"51":1,"70":1,"211":2,"274":1}}],["title",{"2":{"216":1,"217":1}}],["timing",{"2":{"200":1}}],["timezone",{"2":{"94":1,"97":2,"194":2,"257":2}}],["timeout",{"2":{"43":2,"257":1}}],["timestamp",{"2":{"153":1}}],["timestamps",{"2":{"125":1}}],["times",{"2":{"13":1,"23":1,"193":1}}],["time",{"0":{"19":1,"202":1},"2":{"8":1,"9":1,"14":1,"15":1,"19":3,"62":1,"101":1,"116":1,"117":1,"130":1,"131":1,"135":1,"158":1,"176":2,"177":1,"185":1,"201":1,"208":1}}],["tiny",{"2":{"19":1}}],["t",{"2":{"19":6,"21":2,"116":1,"155":1,"227":1,"251":1}}],["truncated",{"2":{"245":1}}],["true",{"2":{"198":1,"236":3,"259":1}}],["troubleshooting",{"2":{"154":1,"178":1}}],["tree",{"2":{"140":1}}],["treat",{"2":{"24":1}}],["traits",{"2":{"221":1}}],["trail",{"2":{"135":1}}],["trash",{"2":{"189":1,"225":1}}],["translate",{"2":{"197":1}}],["transport",{"2":{"165":1}}],["transfer",{"2":{"142":1}}],["track",{"2":{"219":1}}],["tracked",{"2":{"154":1}}],["tracks",{"2":{"130":1}}],["traditional",{"2":{"150":1}}],["trade",{"2":{"19":1}}],["trapped",{"2":{"21":1}}],["travels",{"2":{"19":1}}],["triggering",{"2":{"191":1}}],["trigger",{"2":{"82":1,"134":1,"154":1,"156":1,"157":1,"200":1,"219":1}}],["triggers",{"2":{"13":1,"91":1,"193":1,"199":1,"211":1}}],["triggered",{"2":{"9":1,"135":1,"158":1,"192":1,"211":1,"219":1}}],["tts",{"0":{"286":1,"287":1,"291":1},"1":{"287":1,"288":1,"289":1,"290":1,"292":1,"293":1,"294":1},"2":{"8":1,"286":1,"287":1,"289":3,"291":7,"292":2,"293":1,"294":1}}],["thousands",{"2":{"132":1}}],["those",{"2":{"18":1}}],["than",{"2":{"24":1,"134":1,"176":1,"251":2,"262":1}}],["that",{"2":{"8":1,"9":1,"10":1,"18":1,"19":8,"20":1,"25":4,"39":1,"56":1,"72":1,"85":1,"86":1,"89":1,"91":1,"99":1,"104":1,"131":1,"132":2,"146":1,"156":1,"158":1,"160":1,"166":1,"175":1,"178":1,"180":1,"187":1,"190":1,"193":1,"197":1,"202":1,"227":1,"230":1,"251":1,"270":1,"272":1,"274":1,"276":1,"281":2}}],["thing",{"2":{"19":1,"25":1}}],["thinking",{"2":{"91":1,"200":1}}],["thinks",{"2":{"57":1}}],["think",{"2":{"19":1,"156":1}}],["this",{"2":{"19":2,"26":1,"28":1,"33":1,"37":1,"42":2,"53":1,"54":1,"72":1,"73":1,"75":1,"91":1,"93":2,"96":1,"100":1,"110":2,"113":1,"118":2,"120":1,"122":1,"124":1,"129":1,"130":1,"132":1,"133":1,"137":1,"139":1,"156":1,"157":1,"164":1,"165":1,"177":1,"178":1,"179":1,"183":1,"185":1,"191":1,"193":1,"195":1,"197":1,"210":1,"211":1,"212":1,"213":2,"217":1,"254":1,"255":1,"256":1,"263":1,"277":1,"282":1}}],["thread",{"2":{"77":3,"79":3,"209":1}}],["threads",{"2":{"9":1,"19":1}}],["three",{"2":{"18":1,"73":1,"260":1,"273":1,"275":1,"291":1}}],["through",{"2":{"8":1,"23":2,"39":1,"47":1,"53":1,"88":1,"94":1,"118":1,"172":1,"227":1,"276":1,"280":1,"285":1}}],["these",{"2":{"90":2,"132":1,"146":1,"168":1,"169":1,"219":1,"221":1,"230":1}}],["they",{"2":{"21":2,"45":1,"219":1,"220":1,"227":2}}],["then",{"2":{"19":1,"34":1,"192":1,"254":1,"291":1}}],["there",{"2":{"19":1,"178":1}}],["their",{"2":{"5":1,"21":1,"23":2,"78":1,"125":1,"168":1,"195":1,"232":1}}],["the",{"0":{"17":1,"30":1,"44":1,"66":1,"90":1,"114":1,"197":1,"198":1,"214":1,"288":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"4":1,"6":1,"7":1,"8":1,"9":2,"10":1,"14":2,"16":1,"18":4,"19":12,"21":1,"22":2,"23":3,"24":3,"25":2,"26":1,"28":2,"29":1,"30":3,"31":1,"33":1,"34":2,"35":1,"36":1,"37":3,"38":3,"39":5,"40":5,"41":1,"42":4,"43":5,"44":2,"45":1,"48":3,"49":1,"50":2,"53":1,"54":3,"55":3,"56":4,"57":4,"59":2,"60":4,"61":3,"65":1,"66":5,"67":3,"70":1,"72":3,"73":1,"74":4,"75":5,"77":4,"78":2,"81":1,"82":2,"83":3,"84":1,"85":3,"87":6,"89":3,"90":11,"91":15,"92":4,"93":5,"94":3,"95":1,"96":4,"97":3,"99":5,"100":4,"101":3,"105":2,"108":5,"109":2,"111":3,"112":3,"113":2,"114":3,"115":3,"116":6,"117":8,"118":5,"119":3,"120":11,"121":8,"122":3,"123":2,"124":4,"125":1,"126":1,"127":2,"128":2,"129":4,"130":3,"131":3,"132":1,"133":5,"134":5,"135":5,"136":1,"137":9,"138":1,"139":2,"140":1,"141":4,"142":3,"143":3,"144":4,"145":1,"146":3,"149":2,"150":4,"151":2,"152":7,"153":7,"154":3,"155":1,"156":2,"157":9,"158":6,"159":2,"160":4,"161":1,"163":2,"164":3,"165":3,"166":8,"167":3,"168":7,"169":6,"171":5,"172":4,"173":2,"174":2,"175":1,"176":3,"177":6,"178":7,"179":3,"180":6,"182":1,"183":9,"184":7,"185":2,"186":6,"188":9,"189":3,"192":2,"193":10,"194":3,"195":4,"197":4,"198":2,"199":9,"201":1,"203":2,"205":5,"206":5,"207":4,"208":3,"209":1,"210":3,"211":7,"212":2,"213":5,"214":2,"216":6,"219":4,"220":2,"221":1,"222":2,"223":2,"224":2,"225":3,"226":5,"227":2,"229":3,"230":2,"233":1,"241":1,"243":1,"246":3,"247":1,"249":4,"250":1,"251":11,"253":8,"254":1,"255":3,"257":2,"258":1,"259":3,"260":3,"262":4,"263":2,"264":1,"268":3,"269":2,"270":5,"271":3,"272":1,"273":3,"274":5,"275":1,"276":1,"277":2,"278":1,"279":4,"280":2,"282":2,"283":1,"284":4,"285":2,"287":4,"288":1,"289":3,"290":3,"291":3,"292":7,"294":1}}],["theme",{"2":{"15":1}}],["them",{"2":{"1":1,"6":1,"90":1,"142":1,"167":2,"172":1,"214":1,"247":1}}],["tag",{"2":{"253":1,"259":3}}],["target",{"2":{"40":1,"51":1,"73":1}}],["tabs",{"2":{"88":1,"92":1}}],["tab",{"0":{"89":1,"91":1,"92":1},"2":{"31":1,"37":1,"40":1,"43":1,"49":1,"55":1,"60":1,"65":1,"70":1,"72":1,"76":1,"81":1,"89":1,"90":1,"91":1,"92":1,"93":1,"99":1,"100":1,"105":1,"115":1,"117":1,"118":1,"119":1,"121":1,"126":1,"133":1,"134":2,"135":1,"139":1,"146":1,"151":1,"153":1,"157":1,"158":1,"163":1,"171":2,"173":1,"177":1,"178":1,"179":1,"195":1,"207":1,"223":1,"270":1,"271":1,"272":1,"274":2,"279":1,"284":1,"289":1,"292":1}}],["takes",{"2":{"88":1}}],["take",{"2":{"19":1,"75":1,"256":1}}],["talks",{"2":{"90":1}}],["talk",{"2":{"19":1}}],["tailwind",{"2":{"15":1}}],["task",{"2":{"9":2,"147":1,"157":1,"158":1,"191":1,"193":3,"200":1,"209":1,"211":2,"219":1}}],["tasks",{"0":{"13":1,"191":1,"234":1},"1":{"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1},"2":{"3":1,"8":1,"10":1,"13":1,"23":2,"86":1,"89":1,"91":1,"117":2,"155":1,"160":1,"169":1,"191":1,"200":1,"213":1,"219":1,"228":1}}],["tavily",{"2":{"8":1,"203":1}}],["template",{"2":{"224":1,"253":1}}],["tech",{"2":{"193":1,"234":1}}],["test",{"2":{"186":2,"290":1,"292":2}}],["testing",{"0":{"290":1},"2":{"122":1}}],["term",{"2":{"102":1,"170":1,"180":1,"251":1,"272":1}}],["terminal",{"0":{"92":1},"2":{"89":2,"92":2}}],["team",{"2":{"24":1}}],["teams",{"2":{"3":1}}],["tension",{"2":{"18":1}}],["textarea",{"2":{"174":1}}],["text",{"0":{"144":1},"2":{"8":2,"19":1,"32":1,"45":2,"51":1,"62":1,"69":1,"144":1,"175":1,"187":1,"188":1,"227":1,"251":1,"257":1,"262":1,"291":2}}],["telegram",{"0":{"53":1,"54":1,"213":1},"1":{"54":1,"55":1,"56":1,"57":1},"2":{"1":1,"4":1,"7":1,"23":1,"39":1,"40":1,"53":2,"54":3,"55":1,"56":3,"73":2,"79":1,"84":2,"85":2,"89":1,"104":1,"106":1,"193":1,"198":1,"227":1,"247":1,"248":1}}],["today",{"2":{"193":1,"234":1}}],["toml",{"2":{"144":1,"253":1,"254":4,"255":2,"256":1,"257":1,"259":2,"268":2,"269":2}}],["total",{"2":{"137":1,"179":1,"193":1}}],["toggle",{"2":{"91":2,"112":1,"133":1,"157":1,"167":1,"253":1}}],["topics",{"2":{"213":1}}],["topic",{"2":{"209":1,"217":1}}],["top",{"2":{"75":2,"78":1,"83":1,"193":1,"194":1,"234":1}}],["took",{"2":{"135":1,"158":1}}],["too",{"2":{"19":3,"213":1}}],["toolbar",{"2":{"140":1}}],["toolkit",{"2":{"120":1}}],["tool",{"0":{"168":1},"2":{"12":1,"15":1,"22":1,"120":1,"161":1,"168":1,"197":1,"202":1,"222":1}}],["tools",{"2":{"8":3,"12":1,"19":1,"24":1,"86":1,"94":1,"99":1,"100":1,"116":1,"121":1,"146":1,"156":1,"160":1,"162":1,"168":4,"169":2,"192":1,"199":1,"220":1,"221":1,"222":1,"226":1}}],["tokens",{"2":{"40":1,"109":1,"227":1}}],["token",{"0":{"241":1},"2":{"10":1,"28":3,"31":1,"42":3,"43":2,"54":3,"55":1,"66":1,"166":3,"183":1,"184":1,"228":1,"241":1,"251":1,"257":1,"262":1}}],["to",{"0":{"17":1,"24":1,"30":1,"99":1,"137":1,"207":1,"219":1,"270":1,"279":1,"284":1,"289":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"3":1,"4":1,"7":1,"8":2,"12":1,"13":1,"15":1,"16":1,"18":1,"19":2,"21":2,"23":3,"24":1,"25":1,"27":2,"28":3,"29":1,"30":3,"31":1,"32":1,"33":1,"34":2,"35":1,"36":1,"37":2,"38":2,"39":1,"40":3,"41":3,"43":1,"44":1,"45":1,"47":2,"48":2,"49":1,"50":3,"53":1,"54":2,"55":1,"56":2,"57":1,"58":2,"59":2,"60":1,"61":2,"64":2,"65":1,"66":1,"67":1,"70":2,"74":1,"75":2,"76":1,"77":3,"78":3,"79":2,"81":1,"82":1,"83":1,"84":2,"85":1,"87":1,"88":1,"89":1,"90":2,"91":2,"92":2,"93":3,"94":3,"96":1,"97":1,"99":2,"101":1,"102":1,"103":2,"104":1,"106":1,"110":2,"111":1,"113":1,"116":2,"117":1,"118":4,"119":1,"120":2,"121":1,"122":1,"124":1,"125":2,"127":1,"129":2,"130":1,"132":1,"133":1,"134":2,"137":3,"138":2,"141":1,"142":3,"143":1,"144":3,"145":1,"146":2,"147":1,"148":3,"150":1,"152":1,"153":1,"154":3,"155":2,"156":1,"157":1,"158":1,"159":1,"161":2,"162":1,"164":1,"165":1,"166":2,"167":2,"168":2,"169":1,"170":1,"174":1,"176":2,"177":3,"178":1,"179":1,"180":1,"181":2,"182":1,"183":1,"185":3,"186":2,"187":1,"188":1,"189":3,"190":1,"191":1,"192":3,"193":2,"195":2,"197":2,"198":1,"199":1,"201":3,"202":1,"203":1,"205":2,"207":2,"208":2,"209":1,"210":1,"211":2,"213":3,"214":1,"217":1,"219":1,"222":1,"225":3,"226":1,"227":1,"230":1,"245":1,"247":1,"248":1,"249":2,"251":4,"253":1,"254":1,"258":1,"259":5,"262":1,"263":1,"264":1,"270":2,"271":2,"272":1,"276":1,"277":1,"278":1,"279":2,"280":1,"282":1,"284":2,"285":1,"287":1,"288":2,"290":2,"291":1,"292":2,"294":1}}],["wrote",{"2":{"19":1}}],["writes",{"2":{"137":1}}],["write",{"2":{"5":1,"8":1,"146":1,"152":1,"222":1}}],["ways",{"2":{"196":1}}],["way",{"2":{"154":1,"162":1,"249":1}}],["warning",{"2":{"93":1}}],["walks",{"2":{"53":1}}],["want",{"2":{"21":2,"25":1,"30":1,"118":1,"121":1,"129":1,"177":1,"213":2}}],["wanted",{"2":{"19":2}}],["wasn",{"2":{"19":1}}],["was",{"2":{"19":1,"135":2,"153":1,"158":1,"216":1}}],["wait",{"2":{"19":1}}],["work",{"2":{"211":1,"219":1}}],["works",{"0":{"262":1},"2":{"120":1,"137":1,"212":1,"251":1,"260":1}}],["workspace",{"0":{"114":1},"2":{"58":1,"61":1,"146":1,"253":2,"255":1,"257":1,"278":2}}],["workspaces",{"2":{"39":1}}],["working",{"2":{"120":1,"164":1,"178":1}}],["workflows",{"2":{"18":1,"39":1,"260":1}}],["worse",{"2":{"19":1}}],["world",{"2":{"18":1,"39":1}}],["width",{"2":{"97":2}}],["wide",{"2":{"11":1}}],["window",{"2":{"66":1,"176":1,"184":1,"209":1}}],["windows",{"2":{"14":1}}],["will",{"2":{"25":1,"37":1,"44":1,"48":1,"50":1,"54":1,"56":1,"61":1,"66":1,"75":1,"87":1,"93":1,"110":1,"124":1,"166":1,"168":1,"169":1,"171":1,"184":1,"185":1,"197":1,"208":2,"213":1,"224":1,"246":1,"253":1,"254":1,"270":1,"280":1,"285":1}}],["without",{"2":{"5":1,"19":2,"109":1,"113":1,"129":1,"143":1,"167":1,"171":1,"191":1,"209":1,"210":1,"213":1,"226":1,"227":1,"251":2,"254":1,"261":1}}],["within",{"2":{"1":1,"5":1,"23":1,"58":1,"77":1,"113":1,"114":1,"141":1,"221":1}}],["with",{"0":{"82":1,"83":1,"146":1,"212":1},"1":{"213":1,"214":1},"2":{"1":1,"3":2,"5":2,"7":2,"8":2,"12":1,"15":1,"16":1,"18":2,"19":1,"20":1,"22":1,"23":3,"25":1,"27":1,"32":1,"33":2,"39":2,"42":1,"45":1,"47":1,"48":1,"51":1,"54":1,"56":1,"58":1,"62":1,"64":1,"69":1,"70":1,"72":1,"74":2,"83":1,"84":2,"85":1,"86":1,"89":1,"90":1,"97":1,"100":1,"101":1,"102":1,"103":1,"111":1,"119":1,"125":1,"130":1,"137":1,"140":1,"142":1,"143":1,"152":1,"155":1,"168":1,"177":1,"178":1,"184":1,"194":2,"199":1,"210":1,"211":1,"221":1,"224":1,"227":1,"229":1,"230":1,"246":1,"247":2,"249":1,"250":1,"251":1,"253":2,"254":2,"258":1,"260":3,"262":2,"268":1,"271":1,"273":2,"275":1,"292":1,"294":1}}],["whose",{"2":{"75":1}}],["who",{"2":{"50":1,"56":1,"70":1,"89":1,"118":1,"230":1,"255":1}}],["whether",{"2":{"117":1,"135":1,"153":1,"158":1,"179":1,"193":1}}],["when",{"2":{"19":2,"22":1,"43":1,"66":1,"69":1,"72":1,"77":1,"91":1,"99":1,"100":1,"118":1,"121":1,"129":1,"130":1,"133":1,"135":1,"155":1,"158":1,"168":1,"172":1,"177":1,"192":1,"193":2,"199":1,"208":1,"210":1,"211":4,"213":1,"216":1,"219":1,"245":1,"251":1,"253":1,"255":1,"278":1,"287":1}}],["where",{"2":{"18":1,"19":1,"24":2,"88":1,"120":1,"214":1}}],["why",{"0":{"21":1,"132":1},"2":{"19":1,"251":1}}],["while",{"2":{"14":1,"19":1,"51":1,"68":1,"69":1,"131":1,"137":1,"251":1,"256":1}}],["which",{"2":{"9":1,"50":1,"56":1,"137":1,"185":1,"192":1,"262":1}}],["whatever",{"2":{"137":1}}],["what",{"0":{"1":1,"20":1},"2":{"18":2,"19":1,"135":1,"193":1,"219":1,"220":1,"248":1,"251":1}}],["week",{"2":{"194":1}}],["weeks",{"2":{"132":1}}],["were",{"2":{"19":1,"130":1}}],["weighted",{"2":{"251":1}}],["weights",{"2":{"251":2,"262":1}}],["weight",{"2":{"19":1}}],["we",{"2":{"18":2,"19":2,"22":1,"24":2,"25":2}}],["wework",{"0":{"58":1},"1":{"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"7":1,"39":1,"106":1}}],["webm",{"2":{"288":1}}],["webp",{"2":{"145":1}}],["websites",{"2":{"95":1,"100":1}}],["websocket",{"2":{"60":2,"61":1}}],["webhook",{"0":{"37":1,"110":1},"2":{"7":1,"37":2,"110":2}}],["web",{"0":{"214":1},"2":{"1":1,"4":1,"7":2,"8":3,"12":1,"15":1,"16":1,"31":1,"39":1,"43":1,"46":1,"49":1,"50":1,"55":1,"56":1,"60":1,"65":1,"89":1,"90":1,"91":2,"118":1,"143":1,"199":1,"201":1,"203":1,"214":1,"216":1,"227":1,"247":1,"249":1,"250":3,"256":1,"257":2}}],["wechat",{"0":{"64":1,"65":1,"111":1},"1":{"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"1":1,"7":2,"39":2,"64":2,"65":1,"66":2,"67":1,"89":1,"106":1,"111":2,"247":1,"248":1}}],["wecom",{"0":{"58":1,"59":1},"1":{"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"1":1,"7":1,"39":2,"58":2,"59":1,"60":2,"61":2,"63":2,"89":1,"106":1,"247":1,"248":1}}],["cp",{"2":{"254":1}}],["cd",{"2":{"254":1}}],["cdi",{"0":{"118":1,"119":1},"1":{"119":1,"120":1,"121":1},"2":{"117":2,"118":2,"119":3,"120":11,"121":3}}],["c",{"2":{"234":1}}],["cwd",{"2":{"164":1}}],["cycle",{"2":{"133":1}}],["ctk",{"2":{"120":2}}],["certain",{"2":{"176":1}}],["certificates",{"2":{"97":1}}],["ceiling",{"2":{"21":1}}],["cni",{"2":{"257":1}}],["cn",{"2":{"97":1,"253":2,"255":3,"259":1}}],["c2c",{"2":{"51":1}}],["curl",{"2":{"253":1}}],["current",{"2":{"100":1,"122":1,"130":1,"141":1,"166":1,"178":1,"193":1,"199":1,"233":1}}],["currently",{"2":{"39":1,"117":2,"193":1,"216":1,"294":1}}],["cuda",{"2":{"121":1}}],["custom",{"2":{"34":1,"37":1,"59":1,"60":1,"97":1,"165":1,"200":1}}],["clear",{"2":{"136":1,"159":1}}],["cleaning",{"2":{"156":1}}],["clean",{"2":{"129":1,"159":1,"213":1,"222":1}}],["cleaner",{"2":{"19":1}}],["clone",{"2":{"253":1,"254":1}}],["closer",{"2":{"78":1}}],["closed",{"2":{"19":1}}],["cloud",{"2":{"20":1,"21":1,"22":1,"24":1,"25":1,"276":1}}],["class",{"2":{"19":1}}],["clash",{"2":{"19":1}}],["clicks",{"2":{"19":1}}],["click",{"0":{"253":1},"2":{"16":1,"28":2,"31":2,"34":2,"35":1,"36":1,"37":1,"38":1,"43":2,"48":1,"49":2,"50":1,"55":2,"56":1,"60":2,"65":1,"66":2,"77":2,"78":1,"87":2,"90":1,"93":1,"94":1,"96":2,"99":1,"100":1,"108":1,"119":1,"123":1,"124":1,"127":1,"128":1,"134":2,"142":1,"144":2,"145":1,"150":2,"152":2,"166":2,"167":1,"168":1,"171":1,"177":1,"183":2,"184":1,"185":2,"186":1,"188":2,"189":2,"195":1,"205":1,"207":1,"214":1,"217":1,"224":2,"225":2,"263":2,"270":1,"277":2,"279":1,"282":2,"284":1,"287":2,"288":1,"289":1,"292":3}}],["clicking",{"2":{"8":1,"88":1,"95":1,"214":1}}],["client",{"2":{"11":1,"42":4,"44":1,"46":1,"188":1}}],["china",{"0":{"255":1},"2":{"253":1,"255":2,"259":1}}],["chromium",{"2":{"97":1,"101":3,"259":1}}],["checking",{"2":{"191":1}}],["checks",{"2":{"89":1,"156":1}}],["checked",{"2":{"75":1}}],["check",{"2":{"45":1,"152":1,"166":1,"200":1,"219":1,"253":1}}],["cheap",{"2":{"21":1}}],["choose",{"2":{"37":1,"40":1,"54":2,"77":1,"150":1,"165":1,"167":1}}],["choices",{"2":{"19":1}}],["characters",{"2":{"245":1}}],["changed",{"2":{"177":1}}],["change",{"2":{"78":1,"108":1,"119":1,"121":1,"194":1,"213":1,"254":1,"256":1}}],["changes",{"2":{"29":1,"122":1,"130":1,"141":1,"144":1}}],["channels",{"0":{"39":1,"103":1,"105":1,"213":1},"1":{"40":1,"104":1,"105":1,"106":2,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1},"2":{"8":1,"15":1,"39":3,"84":1,"86":1,"89":1,"103":1,"104":1,"212":1,"248":2}}],["channel",{"0":{"27":1,"33":1,"41":1,"47":1,"53":1,"58":1,"64":1,"65":1,"85":1,"108":1,"148":1},"1":{"28":1,"29":1,"30":1,"31":1,"32":1,"34":1,"35":1,"36":1,"37":1,"38":1,"42":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1},"2":{"7":1,"9":1,"10":1,"23":1,"31":1,"37":1,"40":3,"43":1,"49":1,"50":1,"51":1,"55":1,"56":1,"60":1,"61":1,"65":1,"67":1,"70":2,"73":4,"77":6,"79":2,"82":1,"83":1,"84":1,"85":4,"89":1,"108":2,"109":1,"111":1,"112":3,"147":1,"192":1,"193":1,"199":1,"227":1}}],["chatting",{"0":{"61":1,"67":1},"2":{"74":1,"155":1,"211":1}}],["chatbox",{"2":{"24":1}}],["chats",{"2":{"4":1,"33":1,"61":1,"62":1,"87":1,"246":1}}],["chat",{"0":{"81":1},"2":{"1":1,"3":1,"7":1,"9":1,"10":1,"11":2,"15":1,"23":2,"32":1,"36":2,"39":1,"56":1,"72":2,"74":1,"77":1,"79":1,"83":1,"84":1,"85":1,"86":1,"89":1,"90":1,"91":3,"103":1,"104":1,"132":1,"133":1,"154":1,"157":1,"180":1,"187":1,"188":3,"210":1,"211":2,"212":1,"213":1,"214":2,"230":1,"236":1,"241":1,"245":1,"247":1,"260":1}}],["circling",{"2":{"18":1}}],["css",{"2":{"15":1}}],["categorize",{"2":{"226":1}}],["category",{"2":{"19":1}}],["capturing",{"2":{"95":1}}],["captured",{"2":{"124":1}}],["capture",{"2":{"94":1,"122":1}}],["capability",{"0":{"35":1},"2":{"18":1,"20":1,"22":1,"118":2,"203":1}}],["capabilities",{"0":{"8":1,"162":1},"2":{"6":1,"35":1,"36":1,"89":1,"91":2,"151":1,"188":1,"220":1,"222":1,"226":1,"260":1}}],["card",{"2":{"88":1,"225":1}}],["carry",{"2":{"19":1}}],["caught",{"2":{"19":1}}],["cases",{"2":{"95":1}}],["case",{"0":{"17":1,"110":1,"111":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"200":1,"261":1}}],["called",{"2":{"197":1}}],["callback",{"2":{"37":1,"110":1}}],["calls",{"2":{"22":1,"193":2,"198":1,"199":2,"200":1}}],["call",{"2":{"15":1,"208":1}}],["cannot",{"2":{"255":1}}],["can",{"0":{"81":1},"2":{"1":1,"3":1,"4":1,"5":1,"8":1,"9":1,"10":1,"12":1,"18":1,"19":5,"23":3,"24":2,"39":1,"41":1,"42":2,"45":1,"48":1,"57":1,"61":1,"67":1,"70":2,"72":2,"73":1,"78":1,"82":1,"83":1,"84":1,"85":1,"86":1,"88":1,"89":1,"91":2,"94":2,"99":1,"100":1,"101":1,"104":1,"114":1,"118":1,"119":1,"131":1,"132":1,"133":1,"134":1,"139":1,"146":1,"152":6,"154":1,"157":1,"160":1,"162":1,"166":1,"168":2,"176":1,"177":1,"185":1,"190":1,"192":1,"194":1,"197":1,"198":1,"199":1,"202":1,"208":1,"214":1,"219":1,"220":1,"222":1,"227":1,"230":1,"246":1,"253":1,"271":1,"272":1,"281":1,"289":1,"291":2,"292":1}}],["creation",{"2":{"116":1,"121":1,"125":1,"260":1}}],["creating",{"0":{"87":1,"96":1,"123":1,"150":1,"174":1,"183":1,"196":1,"263":1,"277":1,"282":1,"287":1},"1":{"197":1,"198":1},"2":{"90":1,"97":1,"117":1,"264":1,"278":1,"283":1}}],["creates",{"2":{"212":1}}],["created",{"2":{"88":1,"90":1,"99":1,"121":1,"141":1,"152":1,"196":1,"207":1,"211":4,"219":2,"270":1,"279":1,"284":1,"287":1}}],["create",{"0":{"28":1,"34":1,"42":1,"48":1,"54":1,"59":1},"2":{"1":1,"3":1,"8":1,"23":1,"34":2,"38":1,"40":1,"48":2,"54":1,"59":1,"79":1,"87":2,"89":2,"96":1,"106":1,"116":1,"119":1,"123":1,"141":1,"150":1,"152":1,"171":1,"183":1,"188":1,"190":1,"197":2,"198":1,"213":1,"214":1,"229":2,"234":3,"247":1,"254":1,"263":1,"271":1,"274":1,"277":1,"282":1,"287":1,"291":1,"292":1}}],["credential",{"2":{"60":1}}],["credentials",{"2":{"34":1,"40":2,"55":1,"59":1,"66":1,"108":1,"109":1,"182":1,"205":1,"253":1,"257":1}}],["cron",{"0":{"192":1,"194":1},"2":{"9":1,"13":1,"23":1,"89":1,"191":1,"192":1,"193":1,"194":1,"195":1,"197":1,"199":1,"200":1,"211":1,"219":1}}],["cross",{"2":{"4":1,"50":1,"56":1}}],["cohere",{"2":{"251":1}}],["collection",{"2":{"156":1,"264":2}}],["collaborate",{"2":{"3":1,"23":1}}],["corresponding",{"2":{"219":1}}],["corrupted",{"2":{"129":1}}],["cores=chromium",{"2":{"101":1}}],["cores",{"2":{"101":4,"253":1,"259":1}}],["core",{"0":{"90":1,"101":1},"2":{"24":1,"89":1,"90":1,"91":1,"97":1,"101":1,"250":3,"253":1,"254":1}}],["copy",{"2":{"28":1,"30":1,"34":1,"37":1,"48":1,"50":1,"56":1,"110":1}}],["costs",{"2":{"251":1,"261":1}}],["cost",{"2":{"19":1,"262":1}}],["could",{"2":{"19":1}}],["counter",{"2":{"199":1}}],["counts",{"2":{"195":1}}],["count",{"2":{"13":1,"137":1}}],["coding",{"2":{"15":1,"23":1,"222":1}}],["coder",{"2":{"222":3}}],["code",{"0":{"66":1,"111":1},"2":{"8":1,"50":2,"51":1,"56":3,"57":1,"64":1,"66":3,"111":2,"113":1,"222":1,"236":1}}],["conf",{"2":{"254":1}}],["config",{"2":{"77":1,"85":1,"167":1,"194":1,"253":1,"254":3,"255":1,"256":1,"257":2,"259":3,"268":1,"269":1}}],["configuring",{"0":{"90":1,"97":1,"264":1,"278":1,"283":1,"288":1},"1":{"98":1,"265":1},"2":{"39":1,"90":1,"120":1}}],["configurations",{"2":{"89":1,"130":1,"167":1}}],["configuration",{"0":{"15":1,"27":1,"33":1,"41":1,"47":1,"53":1,"58":1,"64":1,"107":1,"133":1,"157":1,"204":1,"242":1,"257":1},"1":{"28":1,"29":1,"30":1,"31":1,"32":1,"34":1,"35":1,"36":1,"37":1,"38":1,"42":1,"43":1,"44":1,"45":1,"46":1,"48":1,"49":1,"50":1,"51":1,"52":1,"54":1,"55":1,"56":1,"57":1,"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1,"67":1,"68":1,"69":1,"108":1,"109":1,"110":1,"111":1,"205":1,"206":1},"2":{"15":1,"40":1,"89":1,"91":1,"95":1,"98":1,"106":7,"108":1,"109":1,"110":1,"112":2,"122":1,"144":1,"166":1,"167":1,"171":1,"178":1,"206":1,"228":1,"253":1,"259":1,"270":1,"290":1}}],["configurable",{"2":{"8":2,"14":1,"86":1,"291":1}}],["configure",{"0":{"29":1,"31":1,"36":1,"37":1,"43":1,"49":1,"55":1,"60":1,"119":1},"2":{"13":1,"23":1,"40":1,"49":1,"72":1,"76":1,"90":1,"104":1,"105":1,"106":1,"109":1,"133":1,"134":1,"138":1,"148":1,"151":1,"157":1,"163":1,"181":1,"188":1,"190":1,"203":1,"248":1,"264":1,"274":1,"278":1,"283":1,"288":1,"292":1}}],["configured",{"2":{"8":1,"32":1,"39":1,"100":1,"102":1,"116":1,"118":1,"120":1,"137":1,"171":1,"180":1,"190":1,"194":1,"202":1,"269":1,"289":1}}],["confirmed",{"2":{"66":1}}],["confirm",{"2":{"66":1,"93":1}}],["confidence",{"2":{"24":1}}],["convert",{"2":{"262":1}}],["converts",{"2":{"251":1}}],["converse",{"2":{"154":1}}],["conversational",{"0":{"197":1}}],["conversations",{"2":{"9":1,"41":1,"45":1,"62":2,"69":1,"79":1,"90":1,"168":1,"170":1,"209":1,"211":1,"217":1,"260":1,"271":1,"291":1}}],["conversation",{"0":{"210":1},"2":{"6":2,"8":1,"9":2,"10":1,"20":1,"23":1,"77":4,"79":3,"132":1,"174":2,"187":1,"188":1,"202":1,"209":1,"210":1,"212":1,"213":1,"226":1,"228":1,"233":1}}],["consists",{"2":{"250":1}}],["consume",{"2":{"227":1}}],["consolidates",{"2":{"131":1}}],["console",{"2":{"35":1,"37":1,"38":1,"59":1}}],["constraint",{"2":{"19":1}}],["concept",{"0":{"95":1,"104":1,"114":1,"132":1,"148":1,"156":1,"162":1,"172":1,"192":1,"202":1,"210":1,"221":1},"1":{"222":1}}],["concepts",{"0":{"71":1},"1":{"72":1,"73":1,"74":1,"75":1}}],["conceptually",{"2":{"19":1}}],["conclusion",{"0":{"25":1}}],["connected",{"2":{"178":1,"192":1,"199":1}}],["connects",{"2":{"165":1,"276":1}}],["connect",{"2":{"12":1,"39":2,"61":1,"103":1,"161":1,"184":1,"201":1,"203":1}}],["connectivity",{"2":{"178":1}}],["connection",{"0":{"163":1},"1":{"164":1,"165":1},"2":{"89":1,"148":1,"164":1,"165":1,"166":2,"167":3,"168":2,"169":1,"182":1,"186":1,"202":1,"257":2}}],["connections",{"0":{"161":1,"235":1},"1":{"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1},"2":{"8":1,"12":1,"105":1,"149":1,"162":1,"163":1,"167":3,"228":1}}],["connecting",{"2":{"7":1,"27":1,"41":1,"47":1,"53":1,"58":1,"64":1,"111":1,"148":1}}],["continue",{"2":{"25":1,"102":1,"271":1,"294":1}}],["continuity",{"2":{"21":1,"25":1}}],["continuously",{"2":{"19":1}}],["controls",{"2":{"180":1,"257":1,"264":1}}],["controlling",{"2":{"73":1}}],["control",{"0":{"70":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1},"2":{"20":1,"22":1,"70":2,"73":1,"76":1,"89":1,"91":1}}],["contain",{"2":{"131":1}}],["contains",{"2":{"26":1,"91":1,"211":3}}],["containerization",{"2":{"21":1}}],["containerized",{"0":{"5":1,"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"20":1,"22":1,"23":1,"24":1,"25":1,"247":1}}],["containers",{"2":{"5":1,"22":1,"23":1,"249":1}}],["containerd",{"2":{"5":1,"16":1,"117":1,"249":2,"250":1,"257":2}}],["container",{"0":{"113":1,"117":1,"130":1,"245":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1},"2":{"1":2,"5":2,"8":2,"12":1,"15":1,"23":1,"24":1,"86":1,"89":5,"92":3,"93":1,"113":1,"114":1,"115":1,"116":5,"117":5,"118":4,"119":3,"120":2,"121":6,"122":1,"123":1,"124":1,"126":2,"127":1,"128":1,"129":2,"130":4,"139":1,"142":2,"164":1,"221":1,"225":1,"228":1,"247":1,"251":3,"257":1,"262":1}}],["contact",{"2":{"18":1}}],["contents",{"2":{"128":1}}],["content",{"2":{"8":1,"19":1,"29":1,"32":1,"42":1,"45":1,"51":1,"62":1,"69":1,"94":1,"95":1,"137":1,"144":1,"174":1,"175":1,"214":1,"224":1,"225":1,"245":1}}],["contextually",{"2":{"170":1}}],["contexts",{"0":{"94":1,"98":1},"1":{"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1},"2":{"90":1,"96":3}}],["context",{"0":{"96":1,"97":1,"99":1,"240":1},"1":{"98":1},"2":{"4":1,"6":1,"8":1,"9":2,"12":1,"18":2,"19":1,"21":2,"22":1,"23":1,"25":1,"57":1,"77":1,"90":1,"91":1,"94":2,"95":1,"96":2,"97":1,"98":2,"99":3,"100":1,"161":2,"169":1,"172":1,"192":1,"199":1,"209":1,"210":2,"211":1,"212":1,"213":1,"219":1,"228":1,"233":1}}],["combined",{"2":{"253":1}}],["combining",{"2":{"132":1}}],["com",{"2":{"119":4,"183":1,"254":1}}],["commas",{"2":{"119":1}}],["command`",{"2":{"222":1}}],["command",{"0":{"229":1},"2":{"9":1,"54":1,"164":3,"192":1,"193":1,"198":1,"199":2,"200":1,"211":1,"212":1,"228":1,"229":2,"234":3,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1}}],["commands",{"0":{"10":1,"227":1,"231":1,"246":1,"258":1},"1":{"228":1,"229":1,"230":1,"231":1,"232":2,"233":2,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1},"2":{"1":1,"5":1,"8":1,"10":3,"13":1,"23":2,"24":1,"30":1,"32":2,"92":1,"113":1,"219":1,"227":3,"228":1,"229":2,"230":4,"232":1,"246":1,"247":1}}],["commonly",{"2":{"118":1}}],["common",{"0":{"109":1,"258":1},"2":{"119":1,"144":1,"194":1}}],["communication",{"0":{"104":1},"2":{"91":1,"147":1}}],["communicates",{"2":{"164":1}}],["communicate",{"2":{"41":1}}],["community",{"2":{"27":1,"39":1}}],["comes",{"2":{"77":1,"86":1}}],["come",{"2":{"8":1,"9":1}}],["component",{"2":{"140":1}}],["compose",{"2":{"8":1,"16":1,"101":1,"152":1,"249":1,"250":1,"251":1,"252":1,"253":2,"254":3,"255":4,"258":6,"268":2,"269":1}}],["compression",{"0":{"176":1},"2":{"134":1,"176":1}}],["comprehensive",{"2":{"10":1,"203":1,"208":1}}],["compacted",{"2":{"135":1}}],["compact",{"0":{"132":1,"176":1},"2":{"89":1,"134":1,"176":2,"251":1,"262":1,"271":1}}],["compaction",{"0":{"14":1,"131":1,"134":1,"135":1},"1":{"132":1,"133":1,"134":1,"135":1,"136":2,"137":1,"138":1},"2":{"6":1,"14":2,"89":3,"91":4,"131":1,"132":1,"133":6,"134":5,"135":5,"136":1,"137":4,"176":2,"260":1}}],["compared",{"2":{"185":1}}],["compare",{"0":{"24":1}}],["compatible",{"2":{"11":1,"182":1}}],["complement",{"2":{"200":1}}],["completed",{"2":{"135":1,"158":1}}],["completions",{"2":{"11":1,"188":1}}],["complex",{"2":{"8":1,"86":1,"122":1}}],["computer",{"2":{"1":1,"23":1,"114":1,"142":1}}],["sslmode",{"2":{"257":1}}],["sse",{"0":{"165":1},"2":{"12":1,"116":1,"165":1}}],["swap",{"2":{"226":1}}],["switching",{"2":{"177":1,"213":1}}],["switch",{"2":{"10":1,"11":1,"112":1,"214":1}}],["snapshotter",{"2":{"257":1}}],["snapshot",{"0":{"123":1,"124":1},"2":{"123":2,"124":1,"125":1}}],["snapshots",{"0":{"122":1,"125":1},"1":{"123":1,"124":1,"125":1},"2":{"5":1,"89":1,"122":1,"125":1}}],["silently",{"2":{"253":1}}],["silent",{"2":{"253":1}}],["significantly",{"2":{"251":1,"262":1}}],["single",{"2":{"104":1}}],["size",{"2":{"94":1,"188":1}}],["simultaneously",{"2":{"92":1,"104":1}}],["simple",{"2":{"23":1,"64":1}}],["sidebar",{"2":{"28":1,"34":1,"40":1,"87":1,"96":1,"97":1,"149":1,"150":1,"183":2,"203":1,"205":1,"206":1,"214":1,"216":1,"274":1,"292":1}}],["sites",{"2":{"97":1}}],["sit",{"2":{"18":1,"19":1}}],["shipped",{"2":{"260":1}}],["sh",{"2":{"253":12}}],["shut",{"2":{"116":1}}],["shanghai",{"2":{"97":1}}],["shared",{"2":{"219":1}}],["share",{"2":{"24":1}}],["sharing",{"2":{"22":1,"24":1,"126":1,"167":1}}],["shell",{"2":{"92":1}}],["should",{"2":{"56":1,"90":2,"94":1,"157":1,"160":1,"220":1}}],["showing",{"2":{"153":1}}],["shows",{"2":{"121":1,"178":1,"195":1,"216":1,"241":1,"243":1}}],["shown",{"2":{"48":1,"97":1,"116":1}}],["show",{"2":{"10":1,"49":1,"68":1,"219":1,"228":1}}],["slow",{"2":{"253":1}}],["sludge",{"2":{"19":1}}],["slash",{"0":{"10":1,"227":1},"1":{"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1,"246":1},"2":{"9":1,"10":2,"32":1,"212":1,"227":2,"246":1}}],["socket",{"2":{"257":1}}],["sogou",{"2":{"203":1}}],["software",{"2":{"114":1,"121":1}}],["sound",{"2":{"290":1}}],["sources",{"2":{"162":1}}],["source",{"0":{"79":1},"2":{"25":1,"77":1,"79":1,"85":1}}],["soul",{"2":{"8":1}}],["so",{"2":{"19":2,"21":1,"227":1,"251":2,"291":1}}],["some",{"2":{"166":1,"184":1,"229":1,"250":1}}],["someone",{"2":{"21":1}}],["somewhere",{"2":{"19":2}}],["something",{"2":{"18":1,"19":3}}],["smell",{"2":{"19":1}}],["smoother",{"2":{"19":1}}],["small",{"2":{"19":1,"187":1}}],["smarter",{"2":{"18":1}}],["smtp",{"2":{"7":1,"39":1,"148":1,"150":1}}],["scoping",{"2":{"278":2}}],["scoped",{"0":{"85":1},"2":{"210":1}}],["scope",{"0":{"79":1},"2":{"77":1,"79":2,"85":1}}],["scopes",{"2":{"30":1}}],["scale",{"2":{"97":1}}],["scan",{"0":{"66":1},"2":{"64":1,"66":2,"111":1}}],["scratch",{"2":{"177":1}}],["scripts",{"2":{"114":1}}],["script",{"2":{"101":1,"253":2,"255":1}}],["scroll",{"2":{"29":1,"93":1,"100":1}}],["screenshot",{"2":{"100":1}}],["screenshots",{"2":{"8":1,"94":1,"95":1}}],["screen",{"2":{"19":1}}],["scheduling",{"2":{"12":1}}],["schedules",{"0":{"195":1,"196":1},"1":{"197":1,"198":1},"2":{"195":1,"196":1,"198":1}}],["scheduled",{"0":{"13":1,"156":1,"191":1,"234":1},"1":{"192":1,"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1},"2":{"10":1,"13":1,"23":1,"89":1,"156":1,"191":1,"211":1,"219":1,"228":1}}],["schedule",{"0":{"193":1,"200":1,"234":1},"2":{"9":1,"10":1,"23":1,"89":1,"155":1,"192":2,"193":3,"195":1,"197":4,"198":1,"199":4,"200":2,"211":1,"214":1,"219":1,"228":1,"229":2,"234":10,"241":1}}],["sparse",{"0":{"251":1,"262":1,"268":1},"2":{"172":1,"177":1,"250":4,"251":9,"253":1,"254":2,"257":2,"261":4,"262":5,"264":2,"268":5,"273":2}}],["spaces",{"2":{"229":1}}],["space",{"2":{"121":1}}],["split",{"2":{"24":1}}],["spoken",{"2":{"8":1,"291":1}}],["speed",{"2":{"288":2,"290":1,"291":1,"292":1}}],["speech",{"2":{"8":1,"286":1,"289":1,"291":2,"292":1}}],["spec",{"2":{"120":1}}],["specs",{"2":{"120":1}}],["specify",{"2":{"176":1,"205":1}}],["specified",{"2":{"13":1,"23":1,"134":1}}],["specifically",{"2":{"203":1}}],["specification",{"2":{"46":1}}],["specific",{"0":{"84":1},"2":{"4":1,"8":1,"70":1,"73":1,"77":5,"79":2,"85":2,"101":1,"148":1,"167":1,"174":1,"180":1,"187":1,"192":1,"200":1,"202":1,"205":1,"209":1,"253":1,"291":1}}],["special",{"0":{"110":1,"111":1},"2":{"160":1}}],["specialized",{"2":{"8":1,"86":1,"88":1}}],["speaker",{"2":{"19":1}}],["synthesis",{"2":{"286":1,"290":1,"292":1}}],["synthesized",{"2":{"208":1}}],["synthesize",{"2":{"8":1,"289":1,"291":2,"292":1}}],["syntax",{"2":{"144":1,"194":1}}],["sync",{"2":{"43":1}}],["system",{"2":{"1":2,"18":1,"70":1,"75":1,"113":1,"160":1,"170":1,"178":1,"211":1,"226":2,"247":2,"273":1,"291":1}}],["skill",{"0":{"222":1,"224":1,"244":1},"2":{"8":1,"89":1,"221":1,"222":2,"223":1,"224":1,"225":2,"228":1,"244":2}}],["skills",{"0":{"220":1,"221":1,"223":1,"226":1,"244":1},"1":{"221":1,"222":2,"223":1,"224":2,"225":2,"226":1},"2":{"8":2,"15":1,"23":1,"89":1,"146":1,"156":1,"160":1,"192":1,"220":1,"223":1,"226":3,"228":1}}],["sudo",{"2":{"253":6,"254":1,"258":1}}],["sun=0",{"2":{"194":1}}],["summarize",{"2":{"193":1,"198":2,"234":1}}],["summary",{"2":{"135":1,"158":1,"193":1,"197":1,"229":1,"241":2,"257":1}}],["sure",{"2":{"171":1}}],["survive",{"2":{"18":1}}],["such",{"2":{"91":1,"94":1,"97":2,"100":1,"120":1,"180":1}}],["succeeds",{"2":{"67":1}}],["successfully",{"2":{"56":1,"135":1,"153":1,"158":1}}],["sustainable",{"2":{"24":1}}],["subsequent",{"2":{"213":1}}],["subscriptions",{"2":{"37":1}}],["subject",{"0":{"73":1},"2":{"73":1,"74":2,"75":1,"77":1,"84":1,"153":2}}],["subjects",{"2":{"72":1,"73":1,"75":1,"82":1,"83":1}}],["submitting",{"2":{"95":1}}],["submit",{"2":{"38":1}}],["sub",{"2":{"9":1,"229":1,"234":1,"235":1,"236":1,"237":1,"238":1,"239":1,"240":1,"241":1,"242":1,"243":1,"244":1,"245":1}}],["subagent",{"2":{"9":1,"211":3,"214":1,"219":2}}],["subagents",{"2":{"8":2}}],["supported",{"0":{"32":1,"45":1,"51":1,"57":1,"62":1,"69":1,"105":1,"203":1},"1":{"106":1},"2":{"53":1,"188":1,"203":1,"274":1}}],["support",{"0":{"7":1,"11":1,"12":1},"2":{"7":5,"10":1,"11":1,"12":2,"24":1,"32":1,"39":2,"45":1,"49":1,"51":2,"53":1,"57":1,"62":1,"69":2,"120":1,"142":1,"184":1,"227":1}}],["supports",{"2":{"5":1,"13":1,"23":1,"33":1,"39":1,"91":1,"126":1,"144":1,"161":1,"166":1,"184":1,"188":2,"251":1,"260":1,"262":1,"273":2,"286":1,"291":1}}],["steps",{"0":{"102":1,"138":1,"190":1,"275":1,"294":1},"2":{"148":1,"188":1}}],["step",{"0":{"28":1,"29":1,"30":1,"31":1,"34":1,"35":1,"36":1,"37":1,"38":1,"42":1,"43":1,"44":1,"48":1,"49":1,"50":1,"54":1,"55":1,"56":1,"59":1,"60":1,"61":1,"65":1,"66":1,"67":1},"2":{"90":1,"106":2,"248":2}}],["studio",{"2":{"20":1,"24":1}}],["stopping",{"2":{"121":1}}],["stopped",{"2":{"117":1,"123":1}}],["stop",{"2":{"89":1,"116":1,"258":1}}],["stops",{"2":{"19":1}}],["stood",{"2":{"19":1}}],["store",{"2":{"28":1,"114":1,"131":1,"271":1}}],["stored",{"2":{"23":2,"166":2,"172":1,"179":1,"221":1,"267":1,"278":1,"283":1}}],["stores",{"2":{"6":1,"94":1,"182":1,"272":1}}],["story",{"0":{"19":1}}],["storage",{"2":{"14":1,"19":1,"22":1,"179":1,"276":1}}],["style",{"2":{"19":1,"97":1}}],["still",{"2":{"18":1,"121":1}}],["stdio",{"0":{"164":1},"2":{"12":1,"89":1}}],["stale",{"2":{"132":1,"137":1}}],["stable",{"2":{"123":1}}],["state",{"2":{"114":1,"122":1,"123":1,"124":1,"129":1}}],["status",{"0":{"178":1},"2":{"112":1,"117":1,"135":1,"153":1,"156":1,"158":1,"159":1,"166":2,"177":1,"178":2,"179":1,"195":1,"258":1}}],["static",{"2":{"100":1}}],["statistics",{"0":{"179":1},"2":{"10":1,"228":1}}],["stay",{"2":{"22":1}}],["stays",{"2":{"20":1,"25":2}}],["stack",{"2":{"22":1,"25":1,"249":1,"250":1}}],["stakes",{"2":{"19":1}}],["startup",{"2":{"256":2}}],["starts",{"2":{"233":1,"251":1}}],["starting",{"0":{"212":1},"1":{"213":1,"214":1},"2":{"121":1,"210":1,"254":1}}],["started",{"2":{"19":2,"248":1,"250":1}}],["start",{"0":{"61":1,"67":1},"2":{"9":1,"10":1,"40":1,"44":1,"66":2,"89":1,"116":1,"129":1,"134":1,"177":1,"213":1,"228":1,"253":1,"254":2,"258":1}}],["standardized",{"2":{"162":1}}],["standard",{"2":{"9":1,"90":1,"164":1,"167":1,"194":1,"211":1,"260":1}}],["structure",{"0":{"222":1}}],["structured",{"2":{"1":1,"6":1,"154":1,"170":1,"247":1}}],["strip",{"2":{"246":1}}],["string",{"2":{"97":1}}],["strict",{"2":{"22":1}}],["streamed",{"2":{"45":1,"62":1}}],["stream",{"2":{"19":1}}],["streaming",{"2":{"7":2,"15":1,"39":1,"45":1,"53":1,"57":1,"62":1}}],["saas",{"2":{"273":2,"275":2,"276":1,"281":1}}],["saving",{"2":{"99":1,"122":1}}],["saves",{"2":{"66":1,"185":1}}],["save",{"2":{"5":1,"29":1,"31":1,"37":2,"43":1,"48":1,"49":1,"55":1,"60":1,"77":1,"78":1,"90":1,"99":1,"112":2,"116":1,"127":1,"144":2,"171":1,"207":1,"224":1,"270":1,"279":1,"284":1,"289":1,"292":1}}],["safely",{"2":{"122":1}}],["safe",{"2":{"21":1}}],["say",{"2":{"19":1}}],["same",{"2":{"4":1,"19":1,"132":1}}],["serper",{"2":{"203":1}}],["service",{"0":{"250":1,"251":1},"1":{"251":1},"2":{"148":1,"149":1,"182":1,"183":1,"199":1,"250":2,"251":1,"253":1,"256":1,"257":1,"261":1,"268":1,"281":1,"291":1}}],["services",{"2":{"11":1,"12":1,"16":1,"22":1,"104":1,"161":1,"250":1,"253":1,"254":1,"256":1}}],["serving",{"2":{"22":1}}],["servers",{"2":{"27":1,"39":1,"150":1,"166":1}}],["server",{"0":{"30":1},"2":{"16":1,"29":1,"30":1,"148":1,"164":1,"165":3,"166":1,"168":2,"169":2,"194":1,"249":1,"250":2,"257":4}}],["self",{"2":{"182":1,"203":1,"273":2,"275":2,"281":1}}],["selection",{"0":{"101":1},"2":{"101":1,"253":1}}],["selected",{"0":{"82":1},"2":{"91":1,"108":1,"216":1,"253":1,"270":1,"290":1}}],["select",{"2":{"30":3,"31":1,"43":1,"49":1,"50":1,"55":2,"56":1,"60":1,"65":1,"77":3,"90":3,"97":1,"98":1,"99":1,"100":1,"108":1,"128":1,"142":1,"152":1,"167":1,"171":1,"174":1,"184":1,"185":2,"186":1,"188":1,"195":1,"206":1,"207":2,"263":1,"264":1,"265":1,"270":1,"277":1,"278":1,"279":1,"282":1,"283":1,"284":1,"287":1,"289":1,"291":1,"292":2}}],["sent",{"2":{"153":3,"165":1,"193":1,"227":1}}],["sends",{"2":{"172":1,"192":1,"197":1}}],["sender",{"2":{"73":1,"75":1}}],["sending",{"2":{"40":1,"156":1,"191":1}}],["send",{"2":{"4":1,"8":2,"30":1,"36":1,"45":1,"50":1,"54":1,"56":1,"57":2,"61":1,"67":1,"110":1,"147":1,"152":1,"154":1,"193":1,"198":1,"199":1,"213":1,"229":1}}],["security",{"2":{"113":1}}],["securely",{"2":{"28":1,"48":1,"166":1}}],["seconds",{"2":{"43":1}}],["secrets",{"2":{"40":1,"109":1}}],["secret",{"2":{"34":1,"37":1,"42":1,"54":1,"59":1,"60":1,"253":2,"254":1,"257":1,"278":1,"283":1}}],["sections",{"2":{"257":1,"268":1}}],["section",{"2":{"26":1,"29":1,"168":1,"188":1,"257":1,"269":1}}],["seen",{"2":{"77":1}}],["see",{"2":{"10":1,"40":1,"87":1,"102":1,"106":1,"138":2,"141":1,"145":1,"176":1,"180":1,"219":1,"233":1,"250":1,"251":1,"280":1,"285":1}}],["sessions",{"0":{"9":1,"209":1,"215":1,"216":1,"217":1,"218":1,"219":1},"1":{"210":1,"211":1,"212":1,"213":1,"214":1,"215":1,"216":2,"217":2,"218":2,"219":1},"2":{"9":5,"114":1,"210":2,"211":1,"214":4,"216":1,"218":1,"219":4,"233":1}}],["session",{"0":{"211":1,"212":1},"1":{"213":1,"214":1},"2":{"8":2,"9":1,"10":1,"209":2,"210":3,"211":3,"212":1,"213":3,"214":3,"216":4,"217":1,"218":1,"219":2,"228":1,"233":1,"241":1}}],["searxng",{"2":{"8":1,"203":1,"205":1}}],["searching",{"0":{"175":1}}],["searches",{"2":{"90":1,"180":1}}],["search",{"0":{"201":1,"203":1,"205":1,"207":1,"239":2},"1":{"202":1,"203":1,"204":1,"205":1,"206":1,"207":1,"208":1},"2":{"6":1,"8":3,"12":2,"20":1,"23":1,"36":1,"54":1,"77":1,"89":1,"90":4,"91":2,"100":1,"132":1,"167":1,"175":1,"187":1,"188":1,"199":1,"201":1,"202":2,"203":6,"205":4,"207":1,"208":3,"214":1,"228":2,"239":2,"250":1,"251":2,"261":2,"262":1,"264":1,"271":1,"272":1,"273":1,"280":1,"285":1}}],["semantic",{"2":{"6":1,"23":1,"137":1,"251":1,"260":1,"261":1,"273":1}}],["separated",{"2":{"119":1}}],["separate",{"2":{"5":1,"211":1}}],["separately",{"2":{"4":1}}],["setting",{"2":{"121":1}}],["settings",{"0":{"29":1,"68":1,"90":1,"236":2},"2":{"10":2,"15":1,"23":1,"34":1,"37":1,"49":1,"89":1,"90":1,"97":1,"119":1,"121":1,"177":1,"180":1,"184":1,"186":1,"205":1,"206":1,"228":2,"230":1,"236":4,"253":1,"264":1,"265":1,"269":1,"270":1,"274":1,"278":1,"283":1,"288":1,"291":2}}],["setup",{"0":{"40":1,"271":1},"2":{"16":1,"39":1,"64":1,"101":1,"102":1,"248":1,"261":1}}],["set",{"2":{"3":1,"8":1,"10":1,"15":1,"23":1,"77":1,"81":1,"82":1,"83":1,"84":2,"85":1,"90":1,"91":1,"137":1,"152":1,"156":1,"162":1,"176":1,"199":1,"210":1,"223":1,"229":1,"237":6,"238":2,"239":2,"240":2,"254":1,"255":1,"259":1,"294":1}}],["s",{"0":{"90":1},"2":{"4":1,"14":1,"18":1,"19":6,"21":1,"25":1,"31":1,"32":1,"37":1,"40":1,"43":3,"44":1,"47":1,"49":1,"55":1,"58":1,"60":2,"65":1,"70":1,"72":1,"76":1,"87":1,"89":2,"90":1,"91":2,"92":1,"101":1,"102":1,"105":1,"110":1,"112":2,"114":1,"115":1,"117":2,"119":1,"122":2,"127":1,"128":1,"129":1,"130":1,"131":1,"133":1,"134":1,"137":1,"142":2,"143":1,"144":2,"146":1,"151":1,"152":1,"153":2,"158":1,"160":1,"164":1,"166":2,"170":1,"171":1,"172":1,"173":1,"174":2,"177":1,"185":1,"193":1,"194":1,"208":1,"210":1,"211":4,"213":1,"221":1,"223":1,"225":1,"226":1,"234":1,"253":2,"260":1,"271":1,"274":2,"286":1,"289":1,"292":2,"293":1}}],["mp3",{"2":{"288":2}}],["m",{"2":{"42":2}}],["my",{"2":{"54":2,"197":1,"198":1,"205":1}}],["mybot",{"2":{"42":1,"43":1}}],["myself",{"2":{"19":1}}],["mirrors",{"2":{"259":1}}],["mirror=true",{"2":{"253":2,"255":1}}],["mirror",{"0":{"255":1},"2":{"253":1,"255":1,"257":1,"259":1}}],["midnight",{"2":{"194":2}}],["migration",{"2":{"126":1}}],["mini",{"2":{"237":1}}],["minimum",{"2":{"36":1,"254":1}}],["minute",{"2":{"194":1}}],["minutes",{"2":{"91":1,"157":2,"194":1,"200":1,"236":1,"256":1}}],["microsoft",{"2":{"286":1,"293":1}}],["mic",{"2":{"19":1}}],["must",{"2":{"116":1,"118":1,"120":1,"254":1,"259":1,"268":1,"269":1}}],["much",{"2":{"19":1,"176":1}}],["multilingual",{"2":{"251":2,"262":1,"268":1}}],["multiple",{"2":{"3":1,"7":1,"22":1,"23":1,"92":1,"104":1,"114":1,"167":2,"170":1,"208":1,"250":1,"251":1,"262":1}}],["multi",{"0":{"3":1,"4":1,"7":1,"11":1},"2":{"1":1,"6":1,"19":1,"23":1,"24":1,"247":1}}],["mcpservers",{"2":{"167":1}}],["mcp",{"0":{"12":1,"161":1,"235":2},"1":{"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1},"2":{"8":2,"12":2,"15":1,"23":1,"32":1,"89":2,"146":1,"160":1,"161":1,"162":2,"163":2,"165":2,"166":2,"168":1,"169":3,"228":2,"235":3}}],["mounts",{"2":{"254":1}}],["morning",{"2":{"193":1,"198":1,"234":2}}],["more",{"2":{"8":1,"10":1,"12":1,"19":3,"23":2,"24":1,"25":1,"45":1,"95":1,"104":1,"119":1,"134":1,"137":1,"159":1,"176":1,"251":1}}],["mono",{"2":{"288":3}}],["monday",{"2":{"194":1}}],["month",{"2":{"194":3}}],["months",{"2":{"132":1}}],["monitoring",{"0":{"158":1},"1":{"159":1},"2":{"154":1}}],["monitor",{"2":{"146":1,"177":1}}],["monaco",{"2":{"144":1,"224":1}}],["move",{"2":{"141":1}}],["mobile",{"2":{"19":1,"91":1,"94":1,"97":2}}],["moment",{"2":{"19":3}}],["most",{"2":{"14":1,"19":1,"53":1,"90":1,"118":1,"131":1,"172":1,"243":1}}],["modalities",{"2":{"188":1}}],["modify",{"2":{"114":1,"144":1,"175":1,"225":1,"230":1}}],["modes",{"0":{"261":1},"1":{"262":1},"2":{"250":1,"251":1,"260":1,"273":1,"275":1}}],["mode",{"0":{"37":1,"262":1,"267":1,"268":1,"269":1},"2":{"37":1,"110":1,"172":1,"177":1,"180":1,"251":1,"261":1,"262":2,"264":2}}],["modern",{"2":{"15":1}}],["modelcontextprotocol",{"2":{"164":1}}],["models",{"0":{"185":1,"189":1,"237":1},"2":{"10":1,"15":1,"18":1,"21":1,"89":1,"91":1,"185":4,"187":2,"188":1,"190":1,"228":1,"248":1,"251":1,"291":1}}],["model",{"0":{"181":1,"187":1,"188":1,"237":1,"288":1},"1":{"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":2,"189":2,"190":1},"2":{"10":1,"11":2,"12":1,"20":1,"23":1,"90":2,"91":5,"100":1,"133":2,"137":1,"157":2,"161":1,"180":1,"181":1,"185":1,"187":1,"188":5,"189":2,"228":1,"229":1,"236":4,"237":8,"241":3,"251":5,"261":1,"262":2,"264":2,"268":1,"269":1,"287":1,"288":1,"289":2,"290":1,"291":3,"292":3}}],["modular",{"2":{"8":1,"226":1}}],["md",{"2":{"8":2,"144":1,"245":1}}],["mention",{"0":{"246":1},"2":{"246":2}}],["me",{"2":{"197":1,"229":1}}],["meaning",{"2":{"194":1}}],["mean",{"2":{"134":1}}],["means",{"2":{"75":1,"120":1}}],["merges",{"2":{"137":1}}],["merged",{"2":{"135":1}}],["merge",{"2":{"133":1}}],["merging",{"2":{"132":1}}],["medium",{"2":{"91":1,"236":1}}],["media",{"2":{"45":1,"69":1}}],["metaphors",{"2":{"19":1}}],["message",{"2":{"29":1,"30":1,"32":1,"36":1,"37":2,"44":1,"45":1,"50":1,"51":2,"57":1,"62":1,"69":1,"72":1,"73":1,"77":1,"172":1,"199":1,"209":1,"213":1,"218":1}}],["messages",{"2":{"4":1,"8":1,"11":1,"30":1,"36":1,"39":1,"40":1,"41":1,"45":2,"51":1,"61":2,"62":2,"67":1,"69":2,"84":1,"109":1,"110":1,"174":1,"188":1,"210":1,"213":1}}],["messaging",{"2":{"7":4,"8":1,"12":1,"39":4,"41":1,"64":1,"86":1,"103":1,"104":1}}],["mem0",{"0":{"276":1,"277":1,"278":1,"279":1},"1":{"277":1,"278":1,"279":1,"280":1},"2":{"171":1,"273":2,"275":2,"276":3,"277":1,"278":3,"279":1,"280":2}}],["memories",{"0":{"174":1},"2":{"6":1,"8":1,"14":1,"89":1,"131":1,"132":4,"133":1,"134":1,"135":1,"137":3,"138":1,"172":2,"173":1,"175":2,"176":2,"177":2,"179":1,"180":2,"219":1,"264":1,"267":1,"271":4,"274":1}}],["memory",{"0":{"6":1,"14":1,"131":1,"137":1,"170":1,"172":1,"176":1,"238":2,"260":1,"261":1,"270":1,"271":1,"272":1,"276":1,"281":1},"1":{"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1,"261":1,"262":2,"263":1,"264":1,"265":1,"266":1,"267":1,"268":1,"269":1,"270":1,"271":1,"273":1,"274":1,"275":1,"277":1,"278":1,"279":1,"280":1,"282":1,"283":1,"284":1,"285":1},"2":{"1":2,"6":2,"8":1,"11":1,"12":1,"14":2,"19":1,"20":1,"22":1,"23":3,"24":1,"25":1,"86":1,"89":3,"90":3,"91":5,"93":1,"102":3,"131":3,"132":1,"133":2,"134":2,"137":3,"138":3,"160":1,"170":1,"171":6,"172":1,"173":1,"174":3,"175":1,"176":2,"177":2,"178":5,"179":2,"180":4,"187":1,"219":1,"228":2,"238":2,"247":2,"250":2,"251":5,"260":8,"263":2,"264":2,"270":2,"271":5,"272":5,"273":4,"274":3,"275":6,"276":2,"277":2,"279":1,"280":4,"281":3,"282":2,"284":1,"285":4}}],["memohai",{"2":{"254":1}}],["memoh123",{"2":{"253":1,"259":1}}],["memoh",{"0":{"0":1,"1":1,"17":1,"31":1,"43":1,"49":1,"55":1,"60":1,"65":1,"247":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"248":1},"2":{"1":1,"16":1,"18":1,"20":1,"21":1,"22":1,"24":2,"25":3,"26":1,"27":1,"31":1,"33":1,"37":2,"39":2,"40":1,"41":1,"43":1,"47":1,"49":1,"50":2,"53":2,"54":2,"55":1,"56":2,"58":1,"60":1,"64":1,"65":1,"66":2,"70":1,"94":1,"101":1,"104":1,"109":1,"110":2,"113":1,"118":1,"120":3,"130":1,"139":1,"147":1,"161":1,"164":1,"166":3,"168":1,"170":1,"172":1,"181":1,"185":2,"187":1,"194":1,"201":1,"211":1,"220":1,"227":1,"247":1,"248":2,"249":1,"250":1,"253":10,"254":2,"255":1,"259":2,"260":2,"272":1,"273":2,"291":1}}],["members",{"2":{"3":1,"27":1,"29":1}}],["member",{"2":{"1":1,"73":1,"247":1}}],["macos",{"2":{"254":1}}],["machine",{"2":{"120":2,"127":1,"128":1,"142":1}}],["masked",{"2":{"251":1}}],["marked",{"2":{"230":2}}],["markdown",{"0":{"221":1},"1":{"222":1},"2":{"7":1,"45":1,"49":2,"51":1,"53":1,"57":1,"89":1,"221":1}}],["may",{"2":{"132":1,"172":1,"205":1,"256":1}}],["mapped",{"2":{"109":1}}],["making",{"2":{"25":2}}],["make",{"2":{"21":1,"171":1}}],["makes",{"2":{"18":1,"21":1,"180":1}}],["matters",{"2":{"75":1}}],["mattered",{"2":{"19":1}}],["match",{"2":{"120":1,"254":1,"259":1}}],["matching",{"2":{"75":2}}],["matches",{"2":{"72":1,"73":1,"75":2,"91":1,"120":1}}],["matrix",{"0":{"41":1,"42":1},"1":{"42":1,"43":1,"44":1,"45":1,"46":1},"2":{"1":1,"7":1,"39":2,"41":3,"42":5,"43":5,"44":1,"45":1,"46":1,"89":1,"104":1,"106":1,"247":1,"248":1}}],["managing",{"0":{"76":1,"98":1,"125":1,"136":1,"142":1,"159":1,"175":1,"186":1,"189":1,"206":1,"215":1,"223":1,"265":1},"1":{"77":1,"78":1,"79":1,"216":1,"217":1,"218":1,"224":1,"225":1},"2":{"276":1}}],["manages",{"2":{"210":1,"272":1}}],["managed",{"2":{"118":1,"211":1}}],["managers",{"2":{"114":1}}],["manager",{"2":{"89":1,"145":1}}],["manage",{"0":{"234":1,"235":1,"237":1,"238":1,"239":1,"240":1},"2":{"3":1,"8":2,"10":1,"88":1,"96":1,"102":1,"115":1,"130":1,"138":1,"139":1,"146":1,"149":1,"152":1,"173":1,"223":1,"226":1,"228":6,"271":1,"274":1,"275":1}}],["management",{"0":{"3":1,"86":1,"113":1,"139":1,"170":1},"1":{"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"171":1,"172":1,"173":1,"174":1,"175":1,"176":1,"177":1,"178":1,"179":1,"180":1},"2":{"8":1,"23":1,"38":1,"59":2,"89":1,"100":1,"102":1,"138":1,"147":1,"271":1,"275":1,"280":2,"285":2}}],["many",{"2":{"19":1,"116":1,"132":1}}],["manifesto",{"2":{"18":1}}],["manually",{"2":{"101":1,"134":1,"146":1,"168":1,"174":1,"185":1,"271":1}}],["manual",{"0":{"134":1,"254":1},"1":{"255":1},"2":{"13":1,"16":1,"66":1,"184":1,"191":1,"260":1}}],["max",{"2":{"13":1,"193":1,"198":1,"199":1,"200":1}}],["mail",{"2":{"154":1}}],["mailgun",{"2":{"7":1,"39":1,"148":1,"150":1}}],["mainland",{"0":{"255":1},"2":{"253":1,"255":1,"259":1}}],["maintenance",{"2":{"133":1,"191":1}}],["maintain",{"2":{"114":1,"210":1}}],["maintains",{"2":{"9":1,"209":1}}],["main",{"2":{"91":1,"157":1,"249":1,"250":1}}],["affecting",{"2":{"113":1}}],["after",{"0":{"271":1},"2":{"67":1,"78":1,"90":1,"97":1,"99":1,"102":1,"111":1,"121":1,"137":1,"166":1,"256":1,"264":1,"275":1,"278":1,"283":1}}],["avatar",{"2":{"87":1}}],["available",{"0":{"273":1,"293":1},"2":{"10":1,"101":1,"168":1,"185":2,"192":1,"219":1,"228":1,"230":1,"232":1,"257":1,"288":1,"294":1}}],["able",{"2":{"247":1}}],["above",{"2":{"75":1}}],["about",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"2":{"26":1,"117":1,"248":1}}],["abcdefghijklmnopqrstuvwxyz",{"2":{"54":1}}],["adjustment",{"2":{"288":1}}],["advanced",{"0":{"118":1},"1":{"119":1,"120":1,"121":1},"2":{"118":2,"119":1,"222":1}}],["admin123",{"2":{"253":1,"256":1}}],["administrative",{"2":{"227":1}}],["admins",{"2":{"72":1,"82":1}}],["admin",{"2":{"59":1,"75":1,"253":3,"254":2,"256":1,"257":2}}],["additional",{"2":{"205":1,"229":1,"267":1}}],["adding",{"0":{"77":1,"108":1,"152":1,"188":1,"205":1,"224":1},"2":{"185":1}}],["address",{"2":{"148":1,"152":1,"153":1,"257":2}}],["addresses",{"2":{"132":1}}],["add",{"0":{"65":1},"2":{"30":1,"31":1,"37":2,"40":1,"43":1,"49":1,"55":1,"60":1,"65":1,"77":1,"82":1,"83":1,"84":1,"85":1,"96":1,"108":1,"150":1,"152":1,"167":3,"183":1,"188":1,"205":1,"224":1,"255":1,"263":1,"277":1,"282":1,"287":1,"292":1}}],["adapter",{"2":{"7":1}}],["a2a",{"2":{"24":1}}],["am",{"2":{"193":1,"194":2,"197":1}}],["amd",{"2":{"119":2,"120":2}}],["ambient",{"2":{"19":1}}],["amp",{"0":{"4":1},"2":{"34":1,"38":1}}],["appropriate",{"2":{"121":1}}],["approved",{"2":{"38":1}}],["approval",{"2":{"38":1,"48":1}}],["apps",{"2":{"59":1}}],["appsecret",{"2":{"48":2,"49":1}}],["appear",{"2":{"57":1,"211":1}}],["appid",{"2":{"48":1,"49":1}}],["applied",{"2":{"75":2,"121":1}}],["applies",{"2":{"72":1,"77":2}}],["applications",{"2":{"30":1,"103":1}}],["application",{"0":{"28":1},"2":{"28":1,"42":1,"59":1}}],["apply",{"2":{"36":1,"144":1}}],["app",{"0":{"34":1,"38":1},"2":{"19":1,"25":1,"34":4,"37":3,"38":1,"40":2,"59":1,"110":1,"254":1}}],["apis",{"2":{"22":1}}],["api",{"0":{"198":1},"2":{"11":4,"40":1,"42":1,"54":2,"55":1,"66":1,"109":1,"150":1,"172":1,"180":1,"182":1,"183":3,"184":1,"185":1,"186":1,"188":1,"198":2,"202":1,"205":2,"251":3,"256":1,"257":1,"261":1,"262":2,"273":3,"275":1,"276":1,"278":4,"280":1,"281":1,"283":3,"285":1,"286":2,"293":2}}],["aggregator",{"2":{"203":1}}],["aggressive",{"2":{"134":1}}],["again",{"2":{"48":1,"66":1}}],["agreement",{"2":{"19":1}}],["agent2agent",{"2":{"24":1}}],["agents",{"2":{"9":1,"18":1,"19":1,"21":1}}],["agent",{"0":{"8":1,"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"18":1,"19":1,"24":1,"25":1,"86":1,"97":2,"192":1,"193":1,"199":2,"227":1,"247":1,"249":1,"250":1}}],["archive",{"2":{"127":2,"128":2}}],["architecture",{"0":{"250":1},"1":{"251":1},"2":{"7":1}}],["arguments",{"2":{"164":2,"229":2}}],["argument",{"2":{"101":1}}],["aren",{"2":{"155":1}}],["are",{"2":{"39":1,"45":2,"50":1,"56":1,"62":1,"75":2,"78":1,"84":1,"99":1,"101":1,"108":1,"109":1,"121":1,"128":1,"132":1,"137":1,"154":1,"166":1,"172":1,"175":1,"180":1,"196":1,"210":2,"211":2,"213":1,"219":3,"220":1,"221":1,"226":1,"227":1,"230":3,"250":2,"256":1,"264":1,"267":1,"280":1,"285":1}}],["around",{"2":{"19":1}}],["aloud",{"2":{"286":1,"287":1,"288":1,"291":1,"293":1}}],["along",{"2":{"199":1}}],["alternative",{"2":{"281":1}}],["alerts",{"2":{"159":1}}],["alert",{"2":{"158":1}}],["also",{"2":{"21":1,"57":1,"134":1,"146":1,"153":1,"166":1,"168":1,"198":1,"254":1,"259":1}}],["already",{"2":{"19":1,"120":1,"171":1,"193":1}}],["always",{"0":{"17":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"18":1,"19":2,"21":1,"22":1,"25":2,"75":1,"222":1,"250":1}}],["allowed",{"2":{"72":1,"75":1,"81":1}}],["allow",{"2":{"70":1,"72":2,"73":1,"74":1,"75":1,"77":1,"79":1,"81":1,"82":1,"83":1,"84":1,"85":1,"91":1,"122":1,"191":1,"226":1,"236":1}}],["allows",{"2":{"27":1,"33":1,"41":1,"47":1,"58":1,"64":1,"97":1,"110":1,"113":1,"143":1,"147":1,"155":1,"170":1,"201":1}}],["allowing",{"2":{"1":1,"103":1,"154":1,"161":1,"209":1}}],["all",{"2":{"15":1,"16":1,"70":1,"73":3,"77":1,"91":1,"93":2,"135":1,"137":1,"153":1,"168":1,"177":2,"195":1,"212":1,"213":1,"216":1,"219":2,"228":1,"230":1,"232":1,"234":2,"235":2,"236":1,"237":1,"238":1,"239":1,"240":1,"241":2,"242":3,"243":1,"244":1,"245":2,"249":1,"253":2,"257":1}}],["audit",{"2":{"135":1,"153":1,"158":1}}],["auditing",{"2":{"130":1}}],["audio",{"2":{"8":1,"188":1,"288":3,"291":1}}],["auth",{"2":{"254":1,"257":1}}],["authorization",{"2":{"166":1,"184":1}}],["authorized",{"2":{"82":1,"184":1}}],["authorize",{"2":{"30":1,"166":1}}],["authentication",{"0":{"166":1,"184":1},"2":{"11":1,"12":1,"60":1,"165":1,"166":2,"182":1,"183":1,"184":1,"278":1,"283":1}}],["autonomy",{"0":{"156":1}}],["autonomous",{"2":{"9":1,"91":1,"155":1,"160":1,"200":1,"211":1,"219":1}}],["automate",{"2":{"191":1}}],["automated",{"2":{"131":1}}],["automation",{"0":{"192":1},"2":{"8":1,"90":2,"91":1,"95":1,"200":1,"250":1,"254":1}}],["automatic",{"2":{"6":1,"11":1,"14":1,"91":1,"133":1,"156":1,"260":1}}],["automatically",{"2":{"6":1,"13":1,"43":1,"44":1,"66":1,"67":1,"166":1,"168":2,"169":1,"180":1,"185":1,"197":1,"199":1,"208":1,"211":1,"255":1,"287":1}}],["auto",{"2":{"6":1,"43":1,"44":1,"216":1,"253":1,"292":1}}],["attached",{"2":{"117":1,"121":2}}],["attachment",{"2":{"39":1,"45":1,"53":1}}],["attachments",{"2":{"7":1,"32":1,"51":1,"57":1,"69":1}}],["attach",{"2":{"30":1}}],["attempt",{"2":{"18":1}}],["at",{"2":{"8":1,"9":1,"13":1,"23":1,"36":1,"73":1,"83":1,"90":1,"93":1,"101":1,"153":1,"156":1,"167":1,"181":2,"183":1,"193":1,"194":4,"197":1,"251":1,"254":1}}],["ask",{"2":{"197":1}}],["asia",{"2":{"97":1}}],["assist",{"2":{"222":1}}],["assigning",{"0":{"99":1,"207":1,"270":1,"279":1,"284":1,"289":1},"2":{"290":1}}],["assigned",{"2":{"91":1,"94":1,"137":1,"160":1,"172":1,"180":1,"208":1,"271":1,"275":1,"280":1,"285":1}}],["assignment",{"2":{"11":1,"291":1}}],["assign",{"2":{"8":1,"274":1}}],["associated",{"2":{"93":1,"152":1}}],["as",{"0":{"148":1,"221":1},"1":{"222":1},"2":{"6":1,"21":1,"22":3,"23":1,"24":2,"25":1,"42":1,"45":1,"57":1,"91":1,"94":1,"97":2,"100":1,"104":1,"114":1,"117":1,"120":1,"131":1,"133":1,"137":1,"154":1,"180":1,"211":1,"213":1,"221":1,"222":1,"226":1,"230":1,"278":1,"280":1,"281":1,"283":1,"285":1,"287":1}}],["acl",{"2":{"70":1,"72":2,"73":1,"75":1,"81":1,"82":1,"83":1,"84":1,"89":1,"91":2,"236":1}}],["actual",{"2":{"271":1,"274":1}}],["actually",{"2":{"18":1,"19":2}}],["actions",{"0":{"116":1},"2":{"100":1,"154":1,"155":1,"191":1,"227":1}}],["action",{"2":{"93":2,"100":1,"142":1,"158":1,"229":3}}],["activities",{"2":{"160":1}}],["activity",{"2":{"9":1,"91":1,"200":1,"211":2,"216":1,"219":1}}],["active",{"2":{"112":1,"117":1,"130":1,"167":1,"168":1,"169":1,"171":1,"193":1,"213":1,"216":1}}],["activate",{"2":{"40":1,"112":1}}],["act",{"2":{"42":1}}],["acts",{"2":{"22":1,"95":1,"104":1,"114":1}}],["across",{"2":{"4":1,"114":1,"170":1,"212":1,"219":1,"286":1,"288":1,"293":1}}],["accurate",{"2":{"132":1,"208":1}}],["accumulate",{"2":{"132":1,"176":1}}],["accumulates",{"2":{"131":1}}],["accumulating",{"2":{"19":1}}],["accept",{"2":{"44":1}}],["access",{"0":{"70":1,"76":1,"84":1,"85":1,"256":1},"1":{"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":2,"78":2,"79":2,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1},"2":{"1":1,"8":2,"23":1,"32":1,"36":1,"39":1,"42":2,"43":2,"45":1,"70":2,"73":2,"76":2,"79":1,"89":2,"91":1,"92":1,"94":1,"118":1,"162":1,"166":1,"197":1,"230":1,"247":1,"255":1}}],["account",{"0":{"42":1},"2":{"42":3,"43":1,"48":2,"50":1,"56":1,"257":1}}],["accounts",{"2":{"3":1}}],["answer",{"2":{"208":1}}],["another",{"2":{"147":1}}],["anchor",{"2":{"19":1}}],["annoying",{"2":{"19":1}}],["anthropic",{"2":{"11":1,"182":1,"188":1}}],["anyone",{"0":{"81":1},"2":{"42":1,"72":1}}],["any",{"2":{"9":2,"10":1,"39":1,"41":1,"42":1,"117":1,"120":1,"160":1,"191":1,"192":1,"199":1,"227":1}}],["an",{"0":{"17":1,"282":1,"283":1,"284":1,"287":1},"1":{"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":1,"19":3,"22":1,"24":2,"25":3,"40":1,"42":1,"54":2,"70":1,"72":1,"73":2,"74":1,"75":1,"77":1,"79":1,"84":1,"85":1,"86":1,"118":1,"120":1,"121":1,"128":1,"131":1,"135":2,"145":1,"148":1,"153":2,"158":1,"168":1,"169":1,"171":1,"172":1,"178":1,"182":2,"209":1,"247":1,"251":2,"262":1,"269":1,"273":1,"281":1}}],["and",{"0":{"126":1,"141":1,"143":1,"147":1,"153":1,"158":1,"175":1,"181":1,"225":1,"236":1},"1":{"127":1,"128":1,"129":1,"144":1,"145":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"159":1,"182":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"190":1},"2":{"1":4,"3":1,"4":2,"5":3,"6":2,"7":1,"8":11,"10":2,"11":2,"12":2,"13":1,"14":2,"15":2,"18":1,"19":6,"21":4,"22":3,"23":7,"24":6,"25":4,"27":1,"28":2,"29":1,"30":2,"31":2,"32":1,"34":3,"36":2,"37":3,"38":2,"39":2,"40":2,"41":1,"43":2,"44":1,"45":2,"48":2,"49":3,"50":2,"51":3,"53":1,"54":1,"55":2,"56":2,"57":1,"59":1,"60":2,"61":1,"65":1,"66":1,"69":1,"72":1,"77":1,"78":1,"82":1,"86":2,"89":7,"90":2,"91":3,"93":3,"94":2,"95":3,"97":1,"98":1,"99":1,"100":1,"104":1,"106":1,"108":2,"109":1,"110":1,"112":2,"113":1,"114":1,"116":1,"117":1,"118":1,"120":1,"121":2,"122":1,"124":1,"125":1,"126":1,"130":1,"131":2,"133":1,"137":1,"140":1,"142":1,"144":2,"146":2,"147":2,"152":2,"154":1,"156":1,"161":1,"162":1,"164":1,"166":1,"167":2,"168":1,"169":1,"170":1,"172":3,"176":1,"178":1,"180":1,"181":1,"182":1,"185":2,"186":1,"187":1,"190":1,"192":1,"193":1,"194":2,"195":1,"197":2,"198":1,"199":1,"200":1,"201":1,"203":1,"206":1,"207":2,"208":1,"209":2,"211":1,"213":1,"220":2,"221":2,"222":3,"224":1,"226":1,"227":1,"228":1,"232":1,"246":1,"247":1,"248":3,"249":2,"250":3,"253":4,"254":1,"255":1,"256":1,"257":5,"260":4,"262":1,"264":2,"265":1,"267":1,"268":1,"269":1,"270":1,"271":1,"272":3,"273":1,"274":1,"276":1,"278":1,"279":1,"280":1,"283":1,"284":1,"285":1,"286":1,"290":1,"291":1,"292":3}}],["ai",{"2":{"1":2,"7":1,"11":1,"15":1,"18":1,"19":2,"20":1,"21":1,"23":1,"25":1,"39":2,"86":1,"182":1,"187":1,"188":1,"203":1,"227":1,"247":2,"249":1,"250":1,"278":1}}],["a",{"0":{"28":1,"34":1,"42":1,"48":1,"54":1,"59":1,"87":1,"93":1,"96":1,"97":1,"99":2,"108":1,"123":1,"124":1,"148":1,"150":1,"152":1,"183":1,"188":1,"205":1,"207":2,"212":1,"224":1,"263":1,"264":1,"270":2,"277":1,"278":1,"279":2,"284":1,"289":1},"1":{"98":1,"213":1,"214":1,"265":1},"2":{"1":1,"5":1,"6":1,"8":1,"9":1,"10":2,"11":1,"18":3,"19":11,"20":1,"22":2,"23":1,"24":4,"25":3,"28":2,"34":1,"37":2,"38":1,"40":1,"42":3,"44":2,"48":1,"50":1,"54":3,"56":1,"59":1,"64":1,"66":3,"72":2,"73":3,"75":1,"76":1,"77":7,"79":6,"85":1,"86":1,"87":1,"88":1,"90":1,"93":1,"94":6,"95":2,"96":1,"97":1,"98":2,"100":1,"102":1,"104":2,"109":1,"110":1,"111":1,"112":1,"113":1,"116":1,"118":1,"120":1,"122":1,"123":2,"125":2,"127":1,"129":1,"130":1,"131":1,"134":1,"135":1,"140":2,"141":1,"142":2,"144":1,"145":1,"148":5,"154":1,"156":3,"158":2,"160":3,"162":1,"164":2,"165":1,"166":1,"167":3,"168":1,"171":3,"172":2,"174":1,"176":2,"182":2,"183":1,"184":2,"185":2,"186":1,"187":3,"188":2,"189":2,"190":1,"192":5,"193":3,"197":5,"199":1,"202":4,"205":1,"206":1,"208":3,"209":4,"210":4,"211":6,"212":1,"213":3,"214":2,"217":1,"218":1,"219":2,"220":1,"221":2,"222":1,"224":2,"225":2,"228":1,"229":2,"232":1,"233":1,"246":1,"247":1,"251":3,"253":1,"257":1,"263":1,"264":1,"265":2,"271":1,"272":3,"274":2,"276":1,"277":1,"278":2,"281":3,"282":1,"283":2,"289":1,"290":1,"291":4,"292":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexzh.BvaSWpy-.js b/assets/chunks/@localSearchIndexzh.BvaSWpy-.js new file mode 100644 index 00000000..fbbc91d2 --- /dev/null +++ b/assets/chunks/@localSearchIndexzh.BvaSWpy-.js @@ -0,0 +1 @@ +const t='{"documentCount":20,"nextId":20,"documentIds":{"0":"/zh/concepts/identity-and-binding.html#账号模型与绑定","1":"/zh/concepts/identity-and-binding.html#账号模型","2":"/zh/concepts/identity-and-binding.html#接入平台与-bot","3":"/zh/concepts/identity-and-binding.html#为什么账号绑定是账号作用域","4":"/zh/concepts/identity-and-binding.html#账号绑定流程-当前共识","5":"/zh/concepts/identity-and-binding.html#bot-类型语义","6":"/zh/concepts/#核心概念","7":"/zh/concepts/#概念图","8":"/zh/concepts/#为什么重要","9":"/zh/concepts/#本章内容","10":"/zh/style/terminology.html#术语规范","11":"/zh/style/terminology.html#规范术语","12":"/zh/style/terminology.html#推荐写法","13":"/zh/style/terminology.html#禁用或不推荐写法","14":"/zh/style/terminology.html#示例","15":"/zh/style/terminology.html#自检清单","16":"/zh/#memoh-文档","17":"/zh/#文档章节","18":"/zh/#面向文档贡献者","19":"/zh/#当前维护范围"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[1,1,16],"2":[2,1,8],"3":[1,1,10],"4":[3,1,9],"5":[2,1,11],"6":[1,1,4],"7":[1,1,15],"8":[1,1,13],"9":[1,1,2],"10":[1,1,5],"11":[1,1,22],"12":[1,1,16],"13":[1,1,12],"14":[1,1,11],"15":[1,1,6],"16":[2,1,8],"17":[1,2,3],"18":[1,2,2],"19":[1,2,14]},"averageFieldLength":[1.25,1.1500000000000001,9.399999999999999],"storedFields":{"0":{"title":"账号模型与绑定","titles":[]},"1":{"title":"账号模型","titles":["账号模型与绑定"]},"2":{"title":"接入平台与 Bot","titles":["账号模型与绑定"]},"3":{"title":"为什么账号绑定是账号作用域","titles":["账号模型与绑定"]},"4":{"title":"账号绑定流程(当前共识)","titles":["账号模型与绑定"]},"5":{"title":"Bot 类型语义","titles":["账号模型与绑定"]},"6":{"title":"核心概念","titles":[]},"7":{"title":"概念图","titles":["核心概念"]},"8":{"title":"为什么重要","titles":["核心概念"]},"9":{"title":"本章内容","titles":["核心概念"]},"10":{"title":"术语规范","titles":[]},"11":{"title":"规范术语","titles":["术语规范"]},"12":{"title":"推荐写法","titles":["术语规范"]},"13":{"title":"禁用或不推荐写法","titles":["术语规范"]},"14":{"title":"示例","titles":["术语规范"]},"15":{"title":"自检清单","titles":["术语规范"]},"16":{"title":"Memoh 文档","titles":[]},"17":{"title":"文档章节","titles":["Memoh 文档"]},"18":{"title":"面向文档贡献者","titles":["Memoh 文档"]},"19":{"title":"当前维护范围","titles":["Memoh 文档"]}},"dirtCount":0,"index":[["指用户在外部平台上的真实账号",{"2":{"19":1}}],["说明",{"2":{"19":1}}],["说明账号绑定与",{"2":{"19":1}}],["访问控制之间的关系",{"2":{"19":1}}],["访问控制保持独立",{"2":{"3":1}}],["解释为什么账号绑定是账号作用域",{"2":{"19":1}}],["区分系统账号与平台账号",{"2":{"19":1}}],["当前文档先聚焦账号语义与访问控制",{"2":{"19":1}}],["当前维护范围",{"0":{"19":1}}],["当前共识",{"0":{"4":1}}],["面向文档贡献者",{"0":{"18":1}}],["面向产品语义时",{"2":{"12":1}}],["快速开始",{"2":{"17":1}}],["agent",{"2":{"16":1}}],["ai",{"2":{"16":1}}],["actor",{"2":{"12":1,"13":1,"14":1}}],["容器化的",{"2":{"16":1}}],["长记忆",{"2":{"16":1}}],["表述为接入平台",{"2":{"15":1}}],["叙述中是否将",{"2":{"15":1}}],["自检清单",{"0":{"15":1}}],["里的用户",{"2":{"14":1}}],["错误",{"2":{"14":1}}],["正确",{"2":{"14":2}}],["示例",{"0":{"14":1}}],["这类错误语义",{"2":{"13":1}}],["写出",{"2":{"13":1}}],["未区分系统账号与平台账号",{"2":{"13":1}}],["平台用户",{"2":{"13":1}}],["平台账号是用户在飞书上的账号",{"2":{"14":1}}],["平台账号是",{"2":{"13":1}}],["平台账号在支持的接入平台会话中发送",{"2":{"4":1}}],["平台账号在初始阶段可以不绑定系统账号",{"2":{"1":1}}],["平台账号",{"2":{"1":1,"7":1,"8":1,"11":1,"12":2,"19":1}}],["使用含糊表述如",{"2":{"13":1}}],["除非明确引用代码符号",{"2":{"13":1}}],["在概念文档中直接使用",{"2":{"13":1}}],["禁用或不推荐写法",{"0":{"13":1}}],["后续可只用中文术语",{"2":{"12":1}}],["首次出现保留技术别名",{"2":{"12":1}}],["描述业务行为时",{"2":{"12":1}}],["优先写",{"2":{"12":2}}],["推荐写法",{"0":{"12":1}}],["用于账号绑定的一次性代码",{"2":{"11":1}}],["用户在外部接入平台上的账号",{"2":{"7":1,"11":1}}],["用户以自己的系统账号申请",{"2":{"4":1}}],["绑定码",{"2":{"11":1}}],["承载入站消息的外部平台",{"2":{"11":1}}],["内账号",{"2":{"11":1}}],["内部账号",{"2":{"1":1,"13":1}}],["规范术语",{"0":{"11":1}}],["文档章节",{"0":{"17":1}}],["文档",{"0":{"16":1},"1":{"17":1,"18":1,"19":1}}],["文档编写者与维护者",{"2":{"10":1}}],["文档中的",{"2":{"8":1}}],["适用对象",{"2":{"10":1}}],["术语规范",{"0":{"10":1},"1":{"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"18":1}}],["术语说明",{"2":{"8":1}}],["如飞书账号",{"2":{"8":1}}],["统一指用户在对应平台上的真实账号",{"2":{"8":1}}],["授权与账号绑定解耦",{"2":{"8":1}}],["并将",{"2":{"8":1}}],["因此我们明确区分平台账号与系统账号",{"2":{"8":1}}],["需要同时处理外部接入平台消息与系统内权限控制",{"2":{"8":1}}],["为什么重要",{"0":{"8":1}}],["为什么账号绑定是账号作用域",{"0":{"3":1}}],["把平台账号关联到系统账号的过程",{"2":{"7":1,"11":1}}],["例如用户的飞书账号",{"2":{"7":1}}],["例如飞书账号",{"2":{"1":1,"19":1}}],["概念图",{"0":{"7":1}}],["的核心账号与访问概念",{"2":{"6":1}}],["的职责是完成这两类账号的关联",{"2":{"1":1}}],["本页用于统一写作语义",{"2":{"10":1}}],["本章内容",{"0":{"9":1}}],["本章节用于定义",{"2":{"6":1}}],["本文档记录的是产品语义与共识方向",{"2":{"5":1}}],["核心概念",{"0":{"6":1},"1":{"7":1,"8":1,"9":1},"2":{"17":1}}],["部分运行时细节仍可能处于收敛阶段",{"2":{"5":1}}],["注",{"2":{"5":1}}],["owner",{"2":{"5":1}}],["语义上应为单",{"2":{"5":1}}],["personal",{"2":{"5":1}}],["public",{"2":{"5":1}}],["支持成员协作语义",{"2":{"5":1}}],["类型语义",{"0":{"5":1}}],["成员与授权由独立流程处理",{"2":{"4":1}}],["完成平台账号到系统账号的绑定",{"2":{"4":1}}],["code",{"2":{"4":3,"11":1}}],["channel",{"2":{"2":1,"11":1,"12":1,"15":1}}],["channelidentity",{"2":{"1":1,"7":1,"11":1,"12":1}}],["可演进",{"2":{"3":1}}],["让",{"2":{"3":1}}],["不要直接写",{"2":{"12":2}}],["不指本项目内部账号",{"2":{"8":1}}],["不应依赖成员机制",{"2":{"5":1}}],["不把账号绑定与成员管理语义耦合在一起",{"2":{"3":1}}],["不是面向最终用户的功能说明",{"2":{"10":1}}],["不是",{"2":{"1":1,"7":1,"11":1,"14":1,"19":1}}],["它只负责平台账号与系统账号的绑定",{"2":{"3":1}}],["资源权限",{"2":{"3":1}}],["而不是直接发放",{"2":{"3":1}}],["账号绑定用于把平台账号关联到系统账号",{"2":{"14":1}}],["账号绑定",{"2":{"7":1,"11":1,"12":1}}],["账号绑定流程",{"0":{"4":1}}],["账号绑定的目标是建立账号归属关系",{"2":{"3":1}}],["账号模型",{"0":{"1":1}}],["账号模型与绑定",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1},"2":{"9":1}}],["入站消息由平台账号产生",{"2":{"2":1}}],["由系统账号管理的资源与授权边界",{"2":{"11":1}}],["由系统账号管理的资源与访问边界",{"2":{"7":1}}],["由系统账号管理",{"2":{"2":1}}],["接入平台",{"2":{"2":1,"11":1,"12":1}}],["接入平台与",{"0":{"2":1}}],["bot",{"0":{"2":1,"5":1},"2":{"2":2,"3":2,"4":1,"5":2,"7":1,"8":1,"11":1,"19":1}}],["bind",{"2":{"1":1,"4":1,"7":1,"11":2,"12":1}}],["系统",{"2":{"16":1}}],["系统校验",{"2":{"4":1}}],["系统内账号",{"2":{"1":1,"7":2,"11":1}}],["系统账号",{"2":{"1":1,"7":1,"11":1,"12":1,"14":1,"19":1}}],["是一个多成员",{"2":{"16":1}}],["是否仅在首处保留技术别名",{"2":{"15":1}}],["是否明确区分了系统账号与平台账号",{"2":{"15":1}}],["是系统内的授权与资源边界",{"2":{"2":1}}],["是入站消息来源",{"2":{"2":1}}],["是",{"2":{"1":1,"14":1}}],["是用户在外部接入平台上的账号",{"2":{"1":1}}],["user",{"2":{"1":1,"7":1,"11":1,"12":1}}],["将平台账号与系统账号视为两类不同实体",{"2":{"1":1}}],["memoh",{"0":{"16":1},"1":{"17":1,"18":1,"19":1},"2":{"1":3,"6":1,"7":2,"8":1,"11":2,"13":1,"14":2,"16":1,"19":1}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/@localSearchIndexzh.dDuBvO1t.js b/assets/chunks/@localSearchIndexzh.dDuBvO1t.js deleted file mode 100644 index 744fcffb..00000000 --- a/assets/chunks/@localSearchIndexzh.dDuBvO1t.js +++ /dev/null @@ -1 +0,0 @@ -const t='{"documentCount":20,"nextId":20,"documentIds":{"0":"/zh/concepts/identity-and-binding.html#账号模型与绑定","1":"/zh/concepts/identity-and-binding.html#账号模型","2":"/zh/concepts/identity-and-binding.html#接入平台与-bot","3":"/zh/concepts/identity-and-binding.html#为什么账号绑定是账号作用域","4":"/zh/concepts/identity-and-binding.html#账号绑定流程-当前共识","5":"/zh/concepts/identity-and-binding.html#bot-类型语义","6":"/zh/concepts/#核心概念","7":"/zh/concepts/#概念图","8":"/zh/concepts/#为什么重要","9":"/zh/concepts/#本章内容","10":"/zh/#memoh-文档","11":"/zh/#文档章节","12":"/zh/#面向文档贡献者","13":"/zh/#当前维护范围","14":"/zh/style/terminology.html#术语规范","15":"/zh/style/terminology.html#规范术语","16":"/zh/style/terminology.html#推荐写法","17":"/zh/style/terminology.html#禁用或不推荐写法","18":"/zh/style/terminology.html#示例","19":"/zh/style/terminology.html#自检清单"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[1,1,16],"2":[2,1,8],"3":[1,1,10],"4":[3,1,9],"5":[2,1,11],"6":[1,1,4],"7":[1,1,15],"8":[1,1,13],"9":[1,1,2],"10":[2,1,8],"11":[1,2,3],"12":[1,2,2],"13":[1,2,14],"14":[1,1,5],"15":[1,1,22],"16":[1,1,16],"17":[1,1,12],"18":[1,1,11],"19":[1,1,6]},"averageFieldLength":[1.25,1.15,9.400000000000002],"storedFields":{"0":{"title":"账号模型与绑定","titles":[]},"1":{"title":"账号模型","titles":["账号模型与绑定"]},"2":{"title":"接入平台与 Bot","titles":["账号模型与绑定"]},"3":{"title":"为什么账号绑定是账号作用域","titles":["账号模型与绑定"]},"4":{"title":"账号绑定流程(当前共识)","titles":["账号模型与绑定"]},"5":{"title":"Bot 类型语义","titles":["账号模型与绑定"]},"6":{"title":"核心概念","titles":[]},"7":{"title":"概念图","titles":["核心概念"]},"8":{"title":"为什么重要","titles":["核心概念"]},"9":{"title":"本章内容","titles":["核心概念"]},"10":{"title":"Memoh 文档","titles":[]},"11":{"title":"文档章节","titles":["Memoh 文档"]},"12":{"title":"面向文档贡献者","titles":["Memoh 文档"]},"13":{"title":"当前维护范围","titles":["Memoh 文档"]},"14":{"title":"术语规范","titles":[]},"15":{"title":"规范术语","titles":["术语规范"]},"16":{"title":"推荐写法","titles":["术语规范"]},"17":{"title":"禁用或不推荐写法","titles":["术语规范"]},"18":{"title":"示例","titles":["术语规范"]},"19":{"title":"自检清单","titles":["术语规范"]}},"dirtCount":0,"index":[["表述为接入平台",{"2":{"19":1}}],["叙述中是否将",{"2":{"19":1}}],["自检清单",{"0":{"19":1}}],["里的用户",{"2":{"18":1}}],["错误",{"2":{"18":1}}],["正确",{"2":{"18":2}}],["示例",{"0":{"18":1}}],["这类错误语义",{"2":{"17":1}}],["写出",{"2":{"17":1}}],["未区分系统账号与平台账号",{"2":{"17":1}}],["平台用户",{"2":{"17":1}}],["平台账号是用户在飞书上的账号",{"2":{"18":1}}],["平台账号是",{"2":{"17":1}}],["平台账号在支持的接入平台会话中发送",{"2":{"4":1}}],["平台账号在初始阶段可以不绑定系统账号",{"2":{"1":1}}],["平台账号",{"2":{"1":1,"7":1,"8":1,"13":1,"15":1,"16":2}}],["使用含糊表述如",{"2":{"17":1}}],["除非明确引用代码符号",{"2":{"17":1}}],["在概念文档中直接使用",{"2":{"17":1}}],["禁用或不推荐写法",{"0":{"17":1}}],["后续可只用中文术语",{"2":{"16":1}}],["首次出现保留技术别名",{"2":{"16":1}}],["描述业务行为时",{"2":{"16":1}}],["优先写",{"2":{"16":2}}],["面向产品语义时",{"2":{"16":1}}],["面向文档贡献者",{"0":{"12":1}}],["推荐写法",{"0":{"16":1}}],["用于账号绑定的一次性代码",{"2":{"15":1}}],["用户在外部接入平台上的账号",{"2":{"7":1,"15":1}}],["用户以自己的系统账号申请",{"2":{"4":1}}],["绑定码",{"2":{"15":1}}],["承载入站消息的外部平台",{"2":{"15":1}}],["内账号",{"2":{"15":1}}],["内部账号",{"2":{"1":1,"17":1}}],["规范术语",{"0":{"15":1}}],["适用对象",{"2":{"14":1}}],["指用户在外部平台上的真实账号",{"2":{"13":1}}],["说明",{"2":{"13":1}}],["说明账号绑定与",{"2":{"13":1}}],["访问控制之间的关系",{"2":{"13":1}}],["访问控制保持独立",{"2":{"3":1}}],["解释为什么账号绑定是账号作用域",{"2":{"13":1}}],["区分系统账号与平台账号",{"2":{"13":1}}],["当前文档先聚焦账号语义与访问控制",{"2":{"13":1}}],["当前维护范围",{"0":{"13":1}}],["当前共识",{"0":{"4":1}}],["术语规范",{"0":{"14":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1},"2":{"12":1}}],["术语说明",{"2":{"8":1}}],["快速开始",{"2":{"11":1}}],["actor",{"2":{"16":1,"17":1,"18":1}}],["agent",{"2":{"10":1}}],["ai",{"2":{"10":1}}],["容器化的",{"2":{"10":1}}],["长记忆",{"2":{"10":1}}],["文档编写者与维护者",{"2":{"14":1}}],["文档章节",{"0":{"11":1}}],["文档",{"0":{"10":1},"1":{"11":1,"12":1,"13":1}}],["文档中的",{"2":{"8":1}}],["如飞书账号",{"2":{"8":1}}],["统一指用户在对应平台上的真实账号",{"2":{"8":1}}],["授权与账号绑定解耦",{"2":{"8":1}}],["并将",{"2":{"8":1}}],["因此我们明确区分平台账号与系统账号",{"2":{"8":1}}],["需要同时处理外部接入平台消息与系统内权限控制",{"2":{"8":1}}],["为什么重要",{"0":{"8":1}}],["为什么账号绑定是账号作用域",{"0":{"3":1}}],["把平台账号关联到系统账号的过程",{"2":{"7":1,"15":1}}],["例如用户的飞书账号",{"2":{"7":1}}],["例如飞书账号",{"2":{"1":1,"13":1}}],["概念图",{"0":{"7":1}}],["的核心账号与访问概念",{"2":{"6":1}}],["的职责是完成这两类账号的关联",{"2":{"1":1}}],["本页用于统一写作语义",{"2":{"14":1}}],["本章内容",{"0":{"9":1}}],["本章节用于定义",{"2":{"6":1}}],["本文档记录的是产品语义与共识方向",{"2":{"5":1}}],["核心概念",{"0":{"6":1},"1":{"7":1,"8":1,"9":1},"2":{"11":1}}],["部分运行时细节仍可能处于收敛阶段",{"2":{"5":1}}],["注",{"2":{"5":1}}],["owner",{"2":{"5":1}}],["语义上应为单",{"2":{"5":1}}],["personal",{"2":{"5":1}}],["public",{"2":{"5":1}}],["支持成员协作语义",{"2":{"5":1}}],["类型语义",{"0":{"5":1}}],["成员与授权由独立流程处理",{"2":{"4":1}}],["完成平台账号到系统账号的绑定",{"2":{"4":1}}],["code",{"2":{"4":3,"15":1}}],["channel",{"2":{"2":1,"15":1,"16":1,"19":1}}],["channelidentity",{"2":{"1":1,"7":1,"15":1,"16":1}}],["可演进",{"2":{"3":1}}],["让",{"2":{"3":1}}],["不要直接写",{"2":{"16":2}}],["不指本项目内部账号",{"2":{"8":1}}],["不应依赖成员机制",{"2":{"5":1}}],["不把账号绑定与成员管理语义耦合在一起",{"2":{"3":1}}],["不是面向最终用户的功能说明",{"2":{"14":1}}],["不是",{"2":{"1":1,"7":1,"13":1,"15":1,"18":1}}],["它只负责平台账号与系统账号的绑定",{"2":{"3":1}}],["资源权限",{"2":{"3":1}}],["而不是直接发放",{"2":{"3":1}}],["账号绑定用于把平台账号关联到系统账号",{"2":{"18":1}}],["账号绑定",{"2":{"7":1,"15":1,"16":1}}],["账号绑定流程",{"0":{"4":1}}],["账号绑定的目标是建立账号归属关系",{"2":{"3":1}}],["账号模型",{"0":{"1":1}}],["账号模型与绑定",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1},"2":{"9":1}}],["入站消息由平台账号产生",{"2":{"2":1}}],["由系统账号管理的资源与授权边界",{"2":{"15":1}}],["由系统账号管理的资源与访问边界",{"2":{"7":1}}],["由系统账号管理",{"2":{"2":1}}],["接入平台",{"2":{"2":1,"15":1,"16":1}}],["接入平台与",{"0":{"2":1}}],["bot",{"0":{"2":1,"5":1},"2":{"2":2,"3":2,"4":1,"5":2,"7":1,"8":1,"13":1,"15":1}}],["bind",{"2":{"1":1,"4":1,"7":1,"15":2,"16":1}}],["系统",{"2":{"10":1}}],["系统校验",{"2":{"4":1}}],["系统内账号",{"2":{"1":1,"7":2,"15":1}}],["系统账号",{"2":{"1":1,"7":1,"13":1,"15":1,"16":1,"18":1}}],["是否仅在首处保留技术别名",{"2":{"19":1}}],["是否明确区分了系统账号与平台账号",{"2":{"19":1}}],["是一个多成员",{"2":{"10":1}}],["是系统内的授权与资源边界",{"2":{"2":1}}],["是入站消息来源",{"2":{"2":1}}],["是",{"2":{"1":1,"18":1}}],["是用户在外部接入平台上的账号",{"2":{"1":1}}],["user",{"2":{"1":1,"7":1,"15":1,"16":1}}],["将平台账号与系统账号视为两类不同实体",{"2":{"1":1}}],["memoh",{"0":{"10":1},"1":{"11":1,"12":1,"13":1},"2":{"1":3,"6":1,"7":2,"8":1,"10":1,"13":1,"15":2,"17":1,"18":2}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.D6j45Eya.js b/assets/chunks/VPLocalSearchBox.rtQYeFEO.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.D6j45Eya.js rename to assets/chunks/VPLocalSearchBox.rtQYeFEO.js index 82ac121a..e21dc215 100644 --- a/assets/chunks/VPLocalSearchBox.D6j45Eya.js +++ b/assets/chunks/VPLocalSearchBox.rtQYeFEO.js @@ -1,4 +1,4 @@ -var At=Object.defineProperty;var Ct=(a,e,t)=>e in a?At(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ct(a,typeof e!="symbol"?e+"":e,t);import{V as nt,q as Be,ah as Mt,h as be,ai as rt,aj as Lt,ak as Dt,al as Pt,G as ce,d as zt,am as it,p as he,an as Vt,ao as jt,s as $t,ap as Bt,v as Le,P as ve,O as _e,aq as Wt,ar as Kt,W as Jt,R as qt,$ as Ut,o as q,b as Ht,j as T,a0 as Gt,k as P,as as Qt,at as Yt,au as Zt,c as Q,n as st,e as xe,B as at,F as ot,a as pe,t as me,av as Xt,aw as lt,ax as en,a5 as tn,aa as nn,ay as rn,_ as sn}from"./framework.DXGyWiRo.js";import{u as an,c as on}from"./theme.CfxZ1TLj.js";const ln={root:()=>nt(()=>import("./@localSearchIndexroot.BoZnB2ou.js"),[]),zh:()=>nt(()=>import("./@localSearchIndexzh.dDuBvO1t.js"),[])};/*! +var At=Object.defineProperty;var Ct=(a,e,t)=>e in a?At(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Me=(a,e,t)=>Ct(a,typeof e!="symbol"?e+"":e,t);import{V as nt,q as Be,ah as Mt,h as be,ai as rt,aj as Lt,ak as Dt,al as Pt,G as ce,d as zt,am as it,p as he,an as Vt,ao as jt,s as $t,ap as Bt,v as Le,P as ve,O as _e,aq as Wt,ar as Kt,W as Jt,R as qt,$ as Ut,o as q,b as Ht,j as T,a0 as Gt,k as P,as as Qt,at as Yt,au as Zt,c as Q,n as st,e as xe,B as at,F as ot,a as pe,t as me,av as Xt,aw as lt,ax as en,a5 as tn,aa as nn,ay as rn,_ as sn}from"./framework.DXGyWiRo.js";import{u as an,c as on}from"./theme.BCQ-NHcv.js";const ln={root:()=>nt(()=>import("./@localSearchIndexroot.VHyCZJwM.js"),[]),zh:()=>nt(()=>import("./@localSearchIndexzh.BvaSWpy-.js"),[])};/*! * tabbable 6.4.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var bt=["input:not([inert]):not([inert] *)","select:not([inert]):not([inert] *)","textarea:not([inert]):not([inert] *)","a[href]:not([inert]):not([inert] *)","button:not([inert]):not([inert] *)","[tabindex]:not(slot):not([inert]):not([inert] *)","audio[controls]:not([inert]):not([inert] *)","video[controls]:not([inert]):not([inert] *)",'[contenteditable]:not([contenteditable="false"]):not([inert]):not([inert] *)',"details>summary:first-of-type:not([inert]):not([inert] *)","details:not([inert]):not([inert] *)"],ke=bt.join(","),yt=typeof Element>"u",ae=yt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!yt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Fe=function(e,t){var n;t===void 0&&(t=!0);var r=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),s=r===""||r==="true",i=s||t&&e&&(typeof e.closest=="function"?e.closest("[inert]"):Fe(e.parentNode));return i},cn=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},wt=function(e,t,n){if(Fe(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(ke));return t&&ae.call(e,ke)&&r.unshift(e),r=r.filter(n),r},Re=function(e,t,n){for(var r=[],s=Array.from(e);s.length;){var i=s.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=Re(l,!0,n);n.flatten?r.push.apply(r,c):r.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,ke);h&&n.filter(i)&&(t||!e.includes(i))&&r.push(i);var m=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),p=!Fe(m,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(m&&p){var b=Re(m===!0?i.children:m.children,!0,n);n.flatten?r.push.apply(r,b):r.push({scopeParent:i,candidates:b})}else s.unshift.apply(s,i.children)}}return r},St=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||cn(e))&&!St(e)?0:e.tabIndex},un=function(e,t){var n=se(e);return n<0&&t&&!St(e)?0:n},dn=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},_t=function(e){return e.tagName==="INPUT"},fn=function(e){return _t(e)&&e.type==="hidden"},hn=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},vn=function(e,t){for(var n=0;nsummary:first-of-type"),o=i?e.parentElement:e;if(ae.call(o,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="full-native"||n==="legacy-full"){if(typeof r=="function"){for(var l=e;e;){var c=e.parentElement,h=Ne(e);if(c&&!c.shadowRoot&&r(c)===!0)return ct(e);e.assignedSlot?e=e.assignedSlot:!c&&h!==e.ownerDocument?e=h.host:e=c}e=l}if(bn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return ct(e);return!1},wn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},xt=function(e){var t=[],n=[];return e.forEach(function(r,s){var i=!!r.scopeParent,o=i?r.scopeParent:r,l=un(o,i),c=i?xt(r.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:s,tabIndex:l,item:r,isScope:i,content:c})}),n.sort(dn).reduce(function(r,s){return s.isScope?r.push.apply(r,s.content):r.push(s.content),r},[]).concat(t)},_n=function(e,t){t=t||{};var n;return t.getShadowRoot?n=Re([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Sn}):n=wt(e,t.includeContainer,We.bind(null,t)),xt(n)},xn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=Re([e],t.includeContainer,{filter:Oe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=wt(e,t.includeContainer,Oe.bind(null,t)),n},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,ke)===!1?!1:We(t,e)},Tn=bt.concat("iframe:not([inert]):not([inert] *)").join(","),De=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Tn)===!1?!1:Oe(t,e)};/*! @@ -6,4 +6,4 @@ var At=Object.defineProperty;var Ct=(a,e,t)=>e in a?At(a,e,{enumerable:!0,config * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE */function Ke(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,n=Array(e);t=a.length?{done:!0}:{done:!1,value:a[n++]}},e:function(l){throw l},f:r}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var s,i=!0,o=!1;return{s:function(){t=t.call(a)},n:function(){var l=t.next();return i=l.done,l},e:function(l){o=!0,s=l},f:function(){try{i||t.return==null||t.return()}finally{if(o)throw s}}}}function In(a,e,t){return(e=On(e))in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function kn(a){if(typeof Symbol<"u"&&a[Symbol.iterator]!=null||a["@@iterator"]!=null)return Array.from(a)}function Nn(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function dt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(a);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(a,r).enumerable})),t.push.apply(t,n)}return t}function ft(a){for(var e=1;e0?e[e.length-1]:null},activateTrap:function(e,t){var n=U.getActiveTrap(e);t!==n&&U.pauseTrap(e);var r=e.indexOf(t);r===-1||e.splice(r,1),e.push(t)},deactivateTrap:function(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),U.unpauseTrap(e)},pauseTrap:function(e){var t=U.getActiveTrap(e);t==null||t._setPausedState(!0)},unpauseTrap:function(e){var t=U.getActiveTrap(e);t&&!t._isManuallyPaused()&&t._setPausedState(!1)}},An=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cn=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ye=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Mn=function(e){return ye(e)&&!e.shiftKey},Ln=function(e){return ye(e)&&e.shiftKey},ht=function(e){return setTimeout(e,0)},ge=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1&&arguments[1]!==void 0?arguments[1]:{},g=f.hasFallback,E=g===void 0?!1:g,x=f.params,I=x===void 0?[]:x,S=s[u];if(typeof S=="function"&&(S=S.apply(void 0,Fn(I))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var v=S;if(typeof S=="string"){try{v=n.querySelector(S)}catch(d){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(d.message,'"'))}if(!v&&!E)throw new Error("`".concat(u,"` as selector refers to no known node"))}return v},m=function(){var u=h("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!De(u,s.tabbableOptions))if(c(n.activeElement)>=0)u=n.activeElement;else{var f=i.tabbableGroups[0],g=f&&f.firstTabbableNode;u=g||h("fallbackFocus")}else u===null&&(u=h("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},p=function(){if(i.containerGroups=i.containers.map(function(u){var f=_n(u,s.tabbableOptions),g=xn(u,s.tabbableOptions),E=f.length>0?f[0]:void 0,x=f.length>0?f[f.length-1]:void 0,I=g.find(function(d){return oe(d)}),S=g.slice().reverse().find(function(d){return oe(d)}),v=!!f.find(function(d){return se(d)>0});return{container:u,tabbableNodes:f,focusableNodes:g,posTabIndexesFound:v,firstTabbableNode:E,lastTabbableNode:x,firstDomTabbableNode:I,lastDomTabbableNode:S,nextTabbableNode:function(_){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,A=f.indexOf(_);return A<0?R?g.slice(g.indexOf(_)+1).find(function(C){return oe(C)}):g.slice(0,g.indexOf(_)).reverse().find(function(C){return oe(C)}):f[A+(R?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var f=u.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?b(f.shadowRoot):f},w=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){w(m());return}u.focus({preventScroll:!!s.preventScroll}),i.mostRecentlyFocusedNode=u,An(u)&&u.select()}},k=function(u){var f=h("setReturnFocus",{params:[u]});return f||(f===!1?!1:u)},y=function(u){var f=u.target,g=u.event,E=u.isBackward,x=E===void 0?!1:E;f=f||Te(g),p();var I=null;if(i.tabbableGroups.length>0){var S=c(f,g),v=S>=0?i.containerGroups[S]:void 0;if(S<0)x?I=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:I=i.tabbableGroups[0].firstTabbableNode;else if(x){var d=i.tabbableGroups.findIndex(function(F){var V=F.firstTabbableNode;return f===V});if(d<0&&(v.container===f||De(f,s.tabbableOptions)&&!oe(f,s.tabbableOptions)&&!v.nextTabbableNode(f,!1))&&(d=S),d>=0){var _=d===0?i.tabbableGroups.length-1:d-1,R=i.tabbableGroups[_];I=se(f)>=0?R.lastTabbableNode:R.lastDomTabbableNode}else ye(g)||(I=v.nextTabbableNode(f,!1))}else{var A=i.tabbableGroups.findIndex(function(F){var V=F.lastTabbableNode;return f===V});if(A<0&&(v.container===f||De(f,s.tabbableOptions)&&!oe(f,s.tabbableOptions)&&!v.nextTabbableNode(f))&&(A=S),A>=0){var C=A===i.tabbableGroups.length-1?0:A+1,D=i.tabbableGroups[C];I=se(f)>=0?D.firstTabbableNode:D.firstDomTabbableNode}else ye(g)||(I=v.nextTabbableNode(f))}}else I=h("fallbackFocus");return I},O=function(u){var f=Te(u);if(!(c(f,u)>=0)){if(ge(s.clickOutsideDeactivates,u)){o.deactivate({returnFocus:s.returnFocusOnDeactivate});return}ge(s.allowOutsideClick,u)||u.preventDefault()}},L=function(u){var f=Te(u),g=c(f,u)>=0;if(g||f instanceof Document)g&&(i.mostRecentlyFocusedNode=f);else{u.stopImmediatePropagation();var E,x=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var I=c(i.mostRecentlyFocusedNode),S=i.containerGroups[I].tabbableNodes;if(S.length>0){var v=S.findIndex(function(d){return d===i.mostRecentlyFocusedNode});v>=0&&(s.isKeyForward(i.recentNavEvent)?v+1=0&&(E=S[v-1],x=!1))}}else i.containerGroups.some(function(d){return d.tabbableNodes.some(function(_){return se(_)>0})})||(x=!1);else x=!1;x&&(E=y({target:i.mostRecentlyFocusedNode,isBackward:s.isKeyBackward(i.recentNavEvent)})),w(E||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},K=function(u){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=y({event:u,isBackward:f});g&&(ye(u)&&u.preventDefault(),w(g))},H=function(u){(s.isKeyForward(u)||s.isKeyBackward(u))&&K(u,s.isKeyBackward(u))},W=function(u){Cn(u)&&ge(s.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},j=function(u){var f=Te(u);c(f,u)>=0||ge(s.clickOutsideDeactivates,u)||ge(s.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return U.activateTrap(r,o),i.delayInitialFocusTimer=s.delayInitialFocus?ht(function(){w(m())}):w(m()),n.addEventListener("focusin",L,!0),n.addEventListener("mousedown",O,{capture:!0,passive:!1}),n.addEventListener("touchstart",O,{capture:!0,passive:!1}),n.addEventListener("click",j,{capture:!0,passive:!1}),n.addEventListener("keydown",H,{capture:!0,passive:!1}),n.addEventListener("keydown",W),o},Ce=function(u){i.active&&!i.paused&&o._setSubtreeIsolation(!1),i.adjacentElements.clear(),i.alreadySilent.clear();var f=new Set,g=new Set,E=ut(u),x;try{for(E.s();!(x=E.n()).done;){var I=x.value;f.add(I);for(var S=typeof ShadowRoot<"u"&&I.getRootNode()instanceof ShadowRoot,v=I;v;){f.add(v);var d=v.parentElement,_=[];d?_=d.children:!d&&S&&(_=v.getRootNode().children,d=v.getRootNode().host,S=typeof ShadowRoot<"u"&&d.getRootNode()instanceof ShadowRoot);var R=ut(_),A;try{for(R.s();!(A=R.n()).done;){var C=A.value;g.add(C)}}catch(D){R.e(D)}finally{R.f()}v=d}}}catch(D){E.e(D)}finally{E.f()}f.forEach(function(D){g.delete(D)}),i.adjacentElements=g},M=function(){if(i.active)return n.removeEventListener("focusin",L,!0),n.removeEventListener("mousedown",O,!0),n.removeEventListener("touchstart",O,!0),n.removeEventListener("click",j,!0),n.removeEventListener("keydown",H,!0),n.removeEventListener("keydown",W),o},Z=function(u){var f=u.some(function(g){var E=Array.from(g.removedNodes);return E.some(function(x){return x===i.mostRecentlyFocusedNode})});f&&w(m())},X=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Z):void 0,ee=function(){X&&(X.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){X.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var f=l(u,"onActivate"),g=l(u,"onPostActivate"),E=l(u,"checkCanFocusTrap"),x=U.getActiveTrap(r),I=!1;if(x&&!x.paused){var S;(S=x._setSubtreeIsolation)===null||S===void 0||S.call(x,!1),I=!0}try{E||p(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=b(n),f==null||f();var v=function(){E&&p(),$(),ee(),s.isolateSubtrees&&o._setSubtreeIsolation(!0),g==null||g()};if(E)return E(i.containers.concat()).then(v,v),this;v()}catch(_){if(x===U.getActiveTrap(r)&&I){var d;(d=x._setSubtreeIsolation)===null||d===void 0||d.call(x,!0)}throw _}return this},deactivate:function(u){if(!i.active)return this;var f=ft({onDeactivate:s.onDeactivate,onPostDeactivate:s.onPostDeactivate,checkCanReturnFocus:s.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,i.paused||o._setSubtreeIsolation(!1),i.alreadySilent.clear(),M(),i.active=!1,i.paused=!1,ee(),U.deactivateTrap(r,o);var g=l(f,"onDeactivate"),E=l(f,"onPostDeactivate"),x=l(f,"checkCanReturnFocus"),I=l(f,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){ht(function(){I&&w(k(i.nodeFocusedBeforeActivation)),E==null||E()})};return I&&x?(x(k(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){return i.active?(i.manuallyPaused=!0,this._setPausedState(!0,u)):this},unpause:function(u){return i.active?(i.manuallyPaused=!1,r[r.length-1]!==this?this:this._setPausedState(!1,u)):this},updateContainerElements:function(u){var f=[].concat(u).filter(Boolean);return i.containers=f.map(function(g){return typeof g=="string"?n.querySelector(g):g}),s.isolateSubtrees&&Ce(i.containers),i.active&&(p(),s.isolateSubtrees&&!i.paused&&o._setSubtreeIsolation(!0)),ee(),this}},Object.defineProperties(o,{_isManuallyPaused:{value:function(){return i.manuallyPaused}},_setPausedState:{value:function(u,f){if(i.paused===u)return this;if(i.paused=u,u){var g=l(f,"onPause"),E=l(f,"onPostPause");g==null||g(),M(),ee(),o._setSubtreeIsolation(!1),E==null||E()}else{var x=l(f,"onUnpause"),I=l(f,"onPostUnpause");x==null||x(),o._setSubtreeIsolation(!0),p(),$(),ee(),I==null||I()}return this}},_setSubtreeIsolation:{value:function(u){s.isolateSubtrees&&i.adjacentElements.forEach(function(f){var g;if(u)switch(s.isolateSubtrees){case"aria-hidden":(f.ariaHidden==="true"||((g=f.getAttribute("aria-hidden"))===null||g===void 0?void 0:g.toLowerCase())==="true")&&i.alreadySilent.add(f),f.setAttribute("aria-hidden","true");break;default:(f.inert||f.hasAttribute("inert"))&&i.alreadySilent.add(f),f.setAttribute("inert",!0);break}else if(!i.alreadySilent.has(f))switch(s.isolateSubtrees){case"aria-hidden":f.removeAttribute("aria-hidden");break;default:f.removeAttribute("inert");break}})}}}),o.updateContainerElements(e),o};function zn(a,e={}){let t;const{immediate:n,...r}=e,s=ce(!1),i=ce(!1),o=p=>t&&t.activate(p),l=p=>t&&t.deactivate(p),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=be(()=>{const p=rt(a);return Lt(p).map(b=>{const w=rt(b);return typeof w=="string"?w:Dt(w)}).filter(Pt)});return Be(m,p=>{p.length&&(t=Pn(p,{...r,onActivate(){s.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){s.value=!1,e.onDeactivate&&e.onDeactivate()}}),n&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:s,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ue{constructor(e,t=!0,n=[],r=5e3){this.ctx=e,this.iframes=t,this.exclude=n,this.iframesTimeout=r}static matches(e,t){const n=typeof t=="string"?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){let s=!1;return n.every(i=>r.call(e,i)?(s=!0,!1):!0),s}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(n=>{const r=t.filter(s=>s.contains(n)).length>0;t.indexOf(n)===-1&&!r&&t.push(n)}),t}getIframeContents(e,t,n=()=>{}){let r;try{const s=e.contentWindow;if(r=s.document,!s||!r)throw new Error("iframe inaccessible")}catch{n()}r&&t(r)}isIframeBlank(e){const t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}observeIframeLoad(e,t,n){let r=!1,s=null;const i=()=>{if(!r){r=!0,clearTimeout(s);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,n))}catch{n()}}};e.addEventListener("load",i),s=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,n){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch{n()}}waitForIframes(e,t){let n=0;this.forEachIframe(e,()=>!0,r=>{n++,this.waitForIframes(r.querySelector("html"),()=>{--n||t()})},r=>{r||t()})}forEachIframe(e,t,n,r=()=>{}){let s=e.querySelectorAll("iframe"),i=s.length,o=0;s=Array.prototype.slice.call(s);const l=()=>{--i<=0&&r(o)};i||l(),s.forEach(c=>{ue.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,n(h)),l()},l)})}createIterator(e,t,n){return document.createNodeIterator(e,t,n,!1)}createInstanceOnIframe(e){return new ue(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,n){const r=e.compareDocumentPosition(n),s=Node.DOCUMENT_POSITION_PRECEDING;if(r&s)if(t!==null){const i=t.compareDocumentPosition(n),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let n;return t===null?n=e.nextNode():n=e.nextNode()&&e.nextNode(),{prevNode:t,node:n}}checkIframeFilter(e,t,n,r){let s=!1,i=!1;return r.forEach((o,l)=>{o.val===n&&(s=l,i=o.handled)}),this.compareNodeIframe(e,t,n)?(s===!1&&!i?r.push({val:n,handled:!0}):s!==!1&&!i&&(r[s].handled=!0),!0):(s===!1&&r.push({val:n,handled:!1}),!1)}handleOpenIframes(e,t,n,r){e.forEach(s=>{s.handled||this.getIframeContents(s.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,n,r)})})}iterateThroughNodes(e,t,n,r,s){const i=this.createIterator(t,e,r);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,p=>this.checkIframeFilter(c,h,p,o),p=>{this.createInstanceOnIframe(p).forEachNode(e,b=>l.push(b),r)}),l.push(c);l.forEach(p=>{n(p)}),this.iframes&&this.handleOpenIframes(o,e,n,r),s()}forEachNode(e,t,n,r=()=>{}){const s=this.getContexts();let i=s.length;i||r(),s.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,n,()=>{--i<=0&&r()})};this.iframes?this.waitForIframes(o,l):l()})}}let Vn=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ue(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const n=this.opt.log;this.opt.debug&&typeof n=="object"&&typeof n[t]=="function"&&n[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let s in t)if(t.hasOwnProperty(s)){const i=t[s],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(s):this.escapeStr(s),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${n}`),r+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+r))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,n,r)=>{let s=r.charAt(n+1);return/[(|)\\]/.test(s)||s===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let r=[];return e.split("").forEach(s=>{n.every(i=>{if(i.indexOf(s)!==-1){if(r.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),r.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let n=this.opt.accuracy,r=typeof n=="string"?n:n.value,s=typeof n=="string"?[]:n.limiters,i="";switch(s.forEach(o=>{i+=`|${this.escapeStr(o)}`}),r){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(n=>{this.opt.separateWordSearch?n.split(" ").forEach(r=>{r.trim()&&t.indexOf(r)===-1&&t.push(r)}):n.trim()&&t.indexOf(n)===-1&&t.push(n)}),{keywords:t.sort((n,r)=>r.length-n.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let n=0;return e.sort((r,s)=>r.start-s.start).forEach(r=>{let{start:s,end:i,valid:o}=this.callNoMatchOnInvalidRanges(r,n);o&&(r.start=s,r.length=i-s,t.push(r),n=i)}),t}callNoMatchOnInvalidRanges(e,t){let n,r,s=!1;return e&&typeof e.start<"u"?(n=parseInt(e.start,10),r=n+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?s=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:n,end:r,valid:s}}checkWhitespaceRanges(e,t,n){let r,s=!0,i=n.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,r=l+parseInt(e.length,10),r>i&&(r=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||r-l<0||l>i||r>i?(s=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):n.substring(l,r).replace(/\s+/g,"")===""&&(s=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:s}}getTextNodes(e){let t="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,r=>{n.push({start:t.length,end:(t+=r.textContent).length,node:r})},r=>this.matchesExclude(r.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:n})})}matchesExclude(e){return ue.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,n){const r=this.opt.element?this.opt.element:"mark",s=e.splitText(t),i=s.splitText(n-t);let o=document.createElement(r);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=s.textContent,s.parentNode.replaceChild(o,s),i}wrapRangeInMappedTextNode(e,t,n,r,s){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!r(i.node))return!1;const c=t-i.start,h=(n>i.end?i.end:n)-i.start,m=e.value.substr(0,i.start),p=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+p,e.nodes.forEach((b,w)=>{w>=o&&(e.nodes[w].start>0&&w!==o&&(e.nodes[w].start-=h),e.nodes[w].end-=h)}),n-=h,s(i.node.previousSibling,i.start),n>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,n,r,s){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!n(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;mn(l[i],m),(m,p)=>{e.lastIndex=p,r(m)})}s()})}wrapRangeFromIndex(e,t,n,r){this.getTextNodes(s=>{const i=s.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,s.value);m&&this.wrapRangeInMappedTextNode(s,c,h,p=>t(p,o,s.value.substring(c,h),l),p=>{n(p,o)})}),r()})}unwrapMatches(e){const t=e.parentNode;let n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let n=0,r="wrapMatches";const s=i=>{n++,this.opt.each(i)};this.opt.acrossElements&&(r="wrapMatchesAcrossElements"),this[r](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,n),s,()=>{n===0&&this.opt.noMatch(e),this.opt.done(n)})}mark(e,t){this.opt=t;let n=0,r="wrapMatches";const{keywords:s,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[r](h,1,(p,b)=>this.opt.filter(b,c,n,m),p=>{m++,n++,this.opt.each(p)},()=>{m===0&&this.opt.noMatch(c),s[i-1]===c?this.opt.done(n):l(s[s.indexOf(c)+1])})};this.opt.acrossElements&&(r="wrapMatchesAcrossElements"),i===0?this.opt.done(n):l(s[0])}markRanges(e,t){this.opt=t;let n=0,r=this.checkRanges(e);r&&r.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(r)),this.wrapRangeFromIndex(r,(s,i,o,l)=>this.opt.filter(s,i,o,l),(s,i)=>{n++,this.opt.each(s,i)},()=>{this.opt.done(n)})):this.opt.done(n)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,n=>{this.unwrapMatches(n)},n=>{const r=ue.matches(n,t),s=this.matchesExclude(n);return!r||s?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function jn(a){const e=new Vn(a);return this.mark=(t,n)=>(e.mark(t,n),this),this.markRegExp=(t,n)=>(e.markRegExp(t,n),this),this.markRanges=(t,n)=>(e.markRanges(t,n),this),this.unmark=t=>(e.unmark(t),this),this}const $n="ENTRIES",Et="KEYS",It="VALUES",z="";class Pe{constructor(e,t){const n=e._tree,r=Array.from(n.keys());this.set=e,this._type=t,this._path=r.length>0?[{node:n,keys:r}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===z)return{done:!1,value:this.result()};const n=e.get(le(t));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==z).join("")}value(){return le(this._path).node.get(z)}result(){switch(this._type){case It:return this.value();case Et:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Bn=(a,e,t)=>{const n=new Map;if(e===void 0)return n;const r=e.length+1,s=r+t,i=new Uint8Array(s*r).fill(t+1);for(let o=0;o{const l=s*i;e:for(const c of a.keys())if(c===z){const h=r[l-1];h<=t&&n.set(o,[a.get(c),h])}else{let h=s;for(let m=0;mt)continue e}kt(a.get(c),e,t,n,r,h,i,o+c)}};class Y{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,n]=Ae(this._tree,e.slice(this._prefix.length));if(t===void 0){const[r,s]=He(n);for(const i of r.keys())if(i!==z&&i.startsWith(s)){const o=new Map;return o.set(i.slice(s.length),r.get(i)),new Y(o,e)}}return new Y(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Wn(this._tree,e)}entries(){return new Pe(this,$n)}forEach(e){for(const[t,n]of this)e(t,n,this)}fuzzyGet(e,t){return Bn(this._tree,e,t)}get(e){const t=Je(this._tree,e);return t!==void 0?t.get(z):void 0}has(e){const t=Je(this._tree,e);return t!==void 0&&t.has(z)}keys(){return new Pe(this,Et)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(z,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);return n.set(z,t(n.get(z))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);let r=n.get(z);return r===void 0&&n.set(z,r=t()),r}values(){return new Pe(this,It)}[Symbol.iterator](){return this.entries()}static from(e){const t=new Y;for(const[n,r]of e)t.set(n,r);return t}static fromObject(e){return Y.from(Object.entries(e))}}const Ae=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const n of a.keys())if(n!==z&&e.startsWith(n))return t.push([a,n]),Ae(a.get(n),e.slice(n.length),t);return t.push([a,e]),Ae(void 0,"",t)},Je=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==z&&e.startsWith(t))return Je(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let n=0;a&&n{const[t,n]=Ae(a,e);if(t!==void 0){if(t.delete(z),t.size===0)Nt(n);else if(t.size===1){const[r,s]=t.entries().next().value;Ft(n,r,s)}}},Nt=a=>{if(a.length===0)return;const[e,t]=He(a);if(e.delete(t),e.size===0)Nt(a.slice(0,-1));else if(e.size===1){const[n,r]=e.entries().next().value;n!==z&&Ft(a.slice(0,-1),n,r)}},Ft=(a,e,t)=>{if(a.length===0)return;const[n,r]=He(a);n.set(r+e,t),n.delete(r)},He=a=>a[a.length-1],Ge="or",Rt="and",Kn="and_not";class de{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?$e:e.autoVacuum;this._options={...je,...e,autoVacuum:t,searchOptions:{...vt,...e.searchOptions||{}},autoSuggestOptions:{...Gn,...e.autoSuggestOptions||{}}},this._index=new Y,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ue,this.addFields(this._options.fields)}add(e){const{extractField:t,stringifyField:n,tokenize:r,processTerm:s,fields:i,idField:o}=this._options,l=t(e,o);if(l==null)throw new Error(`MiniSearch: document does not have ID field "${o}"`);if(this._idToShortId.has(l))throw new Error(`MiniSearch: duplicate ID ${l}`);const c=this.addDocumentId(l);this.saveStoredFields(c,e);for(const h of i){const m=t(e,h);if(m==null)continue;const p=r(n(m,h),h),b=this._fieldIds[h],w=new Set(p).size;this.addFieldLength(c,b,this._documentCount-1,w);for(const k of p){const y=s(k,h);if(Array.isArray(y))for(const O of y)this.addTerm(b,c,O);else y&&this.addTerm(b,c,y)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:n=10}=t,r={chunk:[],promise:Promise.resolve()},{chunk:s,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%n===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),r);return i.then(()=>this.addAll(s))}remove(e){const{tokenize:t,processTerm:n,extractField:r,stringifyField:s,fields:i,idField:o}=this._options,l=r(e,o);if(l==null)throw new Error(`MiniSearch: document does not have ID field "${o}"`);const c=this._idToShortId.get(l);if(c==null)throw new Error(`MiniSearch: cannot remove document with ID ${l}: it is not in the index`);for(const h of i){const m=r(e,h);if(m==null)continue;const p=t(s(m,h),h),b=this._fieldIds[h],w=new Set(p).size;this.removeFieldLength(c,b,this._documentCount,w);for(const k of p){const y=n(k,h);if(Array.isArray(y))for(const O of y)this.removeTerm(b,c,O);else y&&this.removeTerm(b,c,y)}}this._storedFields.delete(c),this._documentIds.delete(c),this._idToShortId.delete(l),this._fieldLength.delete(c),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Y,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((n,r)=>{this.removeFieldLength(t,r,this._documentCount,n)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:n,batchWait:r}=this._options.autoVacuum;this.conditionalVacuum({batchSize:n,batchWait:r},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const n of e)this.discard(n)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:n}=this._options,r=n(e,t);this.discard(r),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const n=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ue,this.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}async performVacuuming(e,t){const n=this._dirtCount;if(this.vacuumConditionsMet(t)){const r=e.batchSize||qe.batchSize,s=e.batchWait||qe.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%r===0&&await new Promise(c=>setTimeout(c,s)),i+=1}this._dirtCount-=n}await null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:n}=e;return t=t||$e.minDirtCount,n=n||$e.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=n}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:n}=this._options,r={...n,...t},s=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:h}]of s){const m=c.length||1,p={id:this._documentIds.get(o),score:l*m,terms:Object.keys(h),queryTerms:c,match:h};Object.assign(p,this._storedFields.get(o)),(r.filter==null||r.filter(p))&&i.push(p)}return e===de.wildcard&&r.boostDocument==null||i.sort(mt),i}autoSuggest(e,t={}){t={...this._options.autoSuggestOptions,...t};const n=new Map;for(const{score:s,terms:i}of this.search(e,t)){const o=i.join(" "),l=n.get(o);l!=null?(l.score+=s,l.count+=1):n.set(o,{score:s,terms:i,count:1})}const r=[];for(const[s,{score:i,terms:o,count:l}]of n)r.push({suggestion:s,terms:o,score:i/l});return r.sort(mt),r}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static async loadJSONAsync(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)}static getDefault(e){if(je.hasOwnProperty(e))return Ve(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:n,documentIds:r,fieldLength:s,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Ee(r),l._fieldLength=Ee(s),l._storedFields=Ee(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of n){const m=new Map;for(const p of Object.keys(h)){let b=h[p];o===1&&(b=b.ds),m.set(parseInt(p,10),Ee(b))}l._index.set(c,m)}return l}static async loadJSAsync(e,t){const{index:n,documentIds:r,fieldLength:s,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=await Ie(r),l._fieldLength=await Ie(s),l._storedFields=await Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of n){const p=new Map;for(const b of Object.keys(m)){let w=m[b];o===1&&(w=w.ds),p.set(parseInt(b,10),await Ie(w))}++c%1e3===0&&await Ot(0),l._index.set(h,p)}return l}static instantiateMiniSearch(e,t){const{documentCount:n,nextId:r,fieldIds:s,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new de(t);return c._documentCount=n,c._nextId=r,c._idToShortId=new Map,c._fieldIds=s,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new Y,c}executeQuery(e,t={}){if(e===de.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const p={...t,...e,queries:void 0},b=e.queries.map(w=>this.executeQuery(w,p));return this.combineResults(b,p.combineWith)}const{tokenize:n,processTerm:r,searchOptions:s}=this._options,i={tokenize:n,processTerm:r,...s,...t},{tokenize:o,processTerm:l}=i,m=o(e).flatMap(p=>l(p)).filter(p=>!!p).map(Hn(i)).map(p=>this.executeQuerySpec(p,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const n={...this._options.searchOptions,...t},r=(n.fields||this._options.fields).reduce((k,y)=>({...k,[y]:Ve(n.boost,y)||1}),{}),{boostDocument:s,weights:i,maxFuzzy:o,bm25:l}=n,{fuzzy:c,prefix:h}={...vt.weights,...i},m=this._index.get(e.term),p=this.termResults(e.term,e.term,1,e.termBoost,m,r,s,l);let b,w;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const k=e.fuzzy===!0?.2:e.fuzzy,y=k<1?Math.min(o,Math.round(e.term.length*k)):k;y&&(w=this._index.fuzzyGet(e.term,y))}if(b)for(const[k,y]of b){const O=k.length-e.term.length;if(!O)continue;w==null||w.delete(k);const L=h*k.length/(k.length+.3*O);this.termResults(e.term,k,L,e.termBoost,y,r,s,l,p)}if(w)for(const k of w.keys()){const[y,O]=w.get(k);if(!O)continue;const L=c*k.length/(k.length+O);this.termResults(e.term,k,L,e.termBoost,y,r,s,l,p)}return p}executeWildcardQuery(e){const t=new Map,n={...this._options.searchOptions,...e};for(const[r,s]of this._documentIds){const i=n.boostDocument?n.boostDocument(s,"",this._storedFields.get(r)):1;t.set(r,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const n=t.toLowerCase(),r=Jn[n];if(!r)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(r)||new Map}toJSON(){const e=[];for(const[t,n]of this._index){const r={};for(const[s,i]of n)r[s]=Object.fromEntries(i);e.push([t,r])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,n,r,s,i,o,l,c=new Map){if(s==null)return c;for(const h of Object.keys(i)){const m=i[h],p=this._fieldIds[h],b=s.get(p);if(b==null)continue;let w=b.size;const k=this._avgFieldLength[p];for(const y of b.keys()){if(!this._documentIds.has(y)){this.removeTerm(p,y,t),w-=1;continue}const O=o?o(this._documentIds.get(y),t,this._storedFields.get(y)):1;if(!O)continue;const L=b.get(y),K=this._fieldLength.get(y)[p],H=Un(L,w,this._documentCount,K,k,l),W=n*r*m*O*H,j=c.get(y);if(j){j.score+=W,Qn(j.terms,e);const $=Ve(j.match,t);$?$.push(h):j.match[t]=[h]}else c.set(y,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,n){const r=this._index.fetch(n,gt);let s=r.get(e);if(s==null)s=new Map,s.set(t,1),r.set(e,s);else{const i=s.get(t);s.set(t,(i||0)+1)}}removeTerm(e,t,n){if(!this._index.has(n)){this.warnDocumentChanged(t,e,n);return}const r=this._index.fetch(n,gt),s=r.get(e);s==null||s.get(t)==null?this.warnDocumentChanged(t,e,n):s.get(t)<=1?s.size<=1?r.delete(e):s.delete(t):s.set(t,s.get(t)-1),this._index.get(n).size===0&&this._index.delete(n)}warnDocumentChanged(e,t,n){for(const r of Object.keys(this._fieldIds))if(this._fieldIds[r]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${n}" was not present in field "${r}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Jn={[Ge]:(a,e)=>{for(const t of e.keys()){const n=a.get(t);if(n==null)a.set(t,e.get(t));else{const{score:r,terms:s,match:i}=e.get(t);n.score=n.score+r,n.match=Object.assign(n.match,i),pt(n.terms,s)}}return a},[Rt]:(a,e)=>{const t=new Map;for(const n of e.keys()){const r=a.get(n);if(r==null)continue;const{score:s,terms:i,match:o}=e.get(n);pt(r.terms,i),t.set(n,{score:r.score+s,terms:r.terms,match:Object.assign(r.match,o)})}return t},[Kn]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},qn={k:1.2,b:.7,d:.5},Un=(a,e,t,n,r,s)=>{const{k:i,b:o,d:l}=s;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*n/r)))},Hn=a=>(e,t,n)=>{const r=typeof a.fuzzy=="function"?a.fuzzy(e,t,n):a.fuzzy||!1,s=typeof a.prefix=="function"?a.prefix(e,t,n):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,n):1;return{term:e,fuzzy:r,prefix:s,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],stringifyField:(a,e)=>a.toString(),tokenize:a=>a.split(Yn),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},vt={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:qn},Gn={combineWith:Rt,prefix:(a,e,t)=>e===t.length-1},qe={batchSize:1e3,batchWait:10},Ue={minDirtFactor:.1,minDirtCount:20},$e={...qe,...Ue},Qn=(a,e)=>{a.includes(e)||a.push(e)},pt=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},mt=({score:a},{score:e})=>e-a,gt=()=>new Map,Ee=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=async a=>{const e=new Map;let t=0;for(const n of Object.keys(a))e.set(parseInt(n,10),a[n]),++t%1e3===0&&await Ot(0);return e},Ot=a=>new Promise(e=>setTimeout(e,a)),Yn=/[\n\r\p{Z}\p{P}]+/u;class Zn{constructor(e=10){Me(this,"max");Me(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Xn=["aria-owns"],er={class:"shell"},tr=["title"],nr={class:"search-actions before"},rr=["title"],ir=["aria-activedescendant","aria-controls","placeholder"],sr={class:"search-actions"},ar=["title"],or=["disabled","title"],lr=["id","role","aria-labelledby"],cr=["id","aria-selected"],ur=["href","aria-label","onMouseenter","onFocusin","data-index"],dr={class:"titles"},fr=["innerHTML"],hr={class:"title main"},vr=["innerHTML"],pr={key:0,class:"excerpt-wrapper"},mr={key:0,class:"excerpt",inert:""},gr=["innerHTML"],br={key:0,class:"no-results"},yr={class:"search-keyboard-shortcuts"},wr=["aria-label"],Sr=["aria-label"],_r=["aria-label"],xr=["aria-label"],Tr=zt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var I,S;const t=e,n=ce(),r=ce(),s=ce(ln),i=an(),{activate:o}=zn(n,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=it(async()=>{var v,d,_,R,A,C,D,F,V;return lt(de.loadJSON((_=await((d=(v=s.value)[l.value])==null?void 0:d.call(v)))==null?void 0:_.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((R=c.value.search)==null?void 0:R.provider)==="local"&&((C=(A=c.value.search.options)==null?void 0:A.miniSearch)==null?void 0:C.searchOptions)},...((D=c.value.search)==null?void 0:D.provider)==="local"&&((V=(F=c.value.search.options)==null?void 0:F.miniSearch)==null?void 0:V.options)}))}),p=be(()=>{var v,d;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((d=c.value.search.options)==null?void 0:d.disableQueryPersistence)===!0}).value?he(""):Vt("vitepress:local-search-filter",""),b=jt("vitepress:local-search-detailed-list",((I=c.value.search)==null?void 0:I.provider)==="local"&&((S=c.value.search.options)==null?void 0:S.detailedView)===!0),w=be(()=>{var v,d,_;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((d=c.value.search.options)==null?void 0:d.disableDetailedView)===!0||((_=c.value.search.options)==null?void 0:_.detailedView)===!1)}),k=be(()=>{var d,_,R,A,C,D,F;const v=((d=c.value.search)==null?void 0:d.options)??c.value.algolia;return((C=(A=(R=(_=v==null?void 0:v.locales)==null?void 0:_[l.value])==null?void 0:R.translations)==null?void 0:A.button)==null?void 0:C.buttonText)||((F=(D=v==null?void 0:v.translations)==null?void 0:D.button)==null?void 0:F.buttonText)||"Search"});$t(()=>{w.value&&(b.value=!1)});const y=ce([]),O=he(!1);Be(p,()=>{O.value=!1});const L=it(async()=>{if(r.value)return lt(new jn(r.value))},null),K=new Zn(16);Bt(()=>[h.value,p.value,b.value],async([v,d,_],R,A)=>{var te,we,Qe,Ye;(R==null?void 0:R[0])!==v&&K.clear();let C=!1;if(A(()=>{C=!0}),!v)return;y.value=v.search(d).slice(0,16),O.value=!0;const D=_?await Promise.all(y.value.map(B=>H(B.id))):[];if(C)return;for(const{id:B,mod:ne}of D){const re=B.slice(0,B.indexOf("#"));let G=K.get(re);if(G)continue;G=new Map,K.set(re,G);const J=ne.default??ne;if(J!=null&&J.render||J!=null&&J.setup){const ie=en(J);ie.config.warnHandler=()=>{},ie.provide(tn,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ze=document.createElement("div");ie.mount(Ze),Ze.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(fe=>{var tt;const Se=(tt=fe.querySelector("a"))==null?void 0:tt.getAttribute("href"),Xe=(Se==null?void 0:Se.startsWith("#"))&&Se.slice(1);if(!Xe)return;let et="";for(;(fe=fe.nextElementSibling)&&!/^h[1-6]$/i.test(fe.tagName);)et+=fe.outerHTML;G.set(Xe,et)}),ie.unmount()}if(C)return}const F=new Set;if(y.value=y.value.map(B=>{const[ne,re]=B.id.split("#"),G=K.get(ne),J=(G==null?void 0:G.get(re))??"";for(const ie in B.match)F.add(ie);return{...B,text:J}}),await ve(),C)return;await new Promise(B=>{var ne;(ne=L.value)==null||ne.unmark({done:()=>{var re;(re=L.value)==null||re.markRegExp(E(F),{done:B})}})});const V=((te=n.value)==null?void 0:te.querySelectorAll(".result .excerpt"))??[];for(const B of V)(we=B.querySelector('mark[data-markjs="true"]'))==null||we.scrollIntoView({block:"center"});(Ye=(Qe=r.value)==null?void 0:Qe.firstElementChild)==null||Ye.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function H(v){const d=nn(v.slice(0,v.indexOf("#")));try{if(!d)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(d)}}catch(_){return console.error(_),{id:v,mod:{}}}}const W=he(),j=be(()=>{var v;return((v=p.value)==null?void 0:v.length)<=0});function $(v=!0){var d,_;(d=W.value)==null||d.focus(),v&&((_=W.value)==null||_.select())}Le(()=>{$()});function Ce(v){v.pointerType==="mouse"&&$()}const M=he(-1),Z=he(!0);Be(y,v=>{M.value=v.length?0:-1,X()});function X(){ve(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}_e("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=y.value.length-1),Z.value=!0,X()}),_e("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=y.value.length&&(M.value=0),Z.value=!0,X()});const ee=Wt();_e("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const d=y.value[M.value];if(v.target instanceof HTMLInputElement&&!d){v.preventDefault();return}d&&(ee.go(d.id),t("close"))}),_e("Escape",()=>{t("close")});const u=on({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Le(()=>{window.history.pushState(null,"",null)}),Kt("popstate",v=>{v.preventDefault(),t("close")});const f=Jt(qt?document.body:null);Le(()=>{ve(()=>{f.value=!0,ve().then(()=>o())})}),Ut(()=>{f.value=!1});function g(){p.value="",ve().then(()=>$(!1))}function E(v){return new RegExp([...v].sort((d,_)=>_.length-d.length).map(d=>`(${rn(d)})`).join("|"),"gi")}function x(v){var R;if(!Z.value)return;const d=(R=v.target)==null?void 0:R.closest(".result"),_=Number.parseInt(d==null?void 0:d.dataset.index);_>=0&&_!==M.value&&(M.value=_),Z.value=!1}return(v,d)=>{var _,R,A,C,D;return q(),Ht(Xt,{to:"body"},[T("div",{ref_key:"el",ref:n,role:"button","aria-owns":(_=y.value)!=null&&_.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[T("div",{class:"backdrop",onClick:d[0]||(d[0]=F=>v.$emit("close"))}),T("div",er,[T("form",{class:"search-bar",onPointerup:d[4]||(d[4]=F=>Ce(F)),onSubmit:d[5]||(d[5]=Gt(()=>{},["prevent"]))},[T("label",{title:k.value,id:"localsearch-label",for:"localsearch-input"},[...d[7]||(d[7]=[T("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)])],8,tr),T("div",nr,[T("button",{class:"back-button",title:P(u)("modal.backButtonTitle"),onClick:d[1]||(d[1]=F=>v.$emit("close"))},[...d[8]||(d[8]=[T("span",{class:"vpi-arrow-left local-search-icon"},null,-1)])],8,rr)]),Qt(T("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":d[2]||(d[2]=F=>Zt(p)?p.value=F:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(R=y.value)!=null&&R.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:k.value,spellcheck:"false",type:"search"},null,8,ir),[[Yt,P(p)]]),T("div",sr,[w.value?xe("",!0):(q(),Q("button",{key:0,class:st(["toggle-layout-button",{"detailed-list":P(b)}]),type:"button",title:P(u)("modal.displayDetails"),onClick:d[3]||(d[3]=F=>M.value>-1&&(b.value=!P(b)))},[...d[9]||(d[9]=[T("span",{class:"vpi-layout-list local-search-icon"},null,-1)])],10,ar)),T("button",{class:"clear-button",type:"reset",disabled:j.value,title:P(u)("modal.resetButtonTitle"),onClick:g},[...d[10]||(d[10]=[T("span",{class:"vpi-delete local-search-icon"},null,-1)])],8,or)])],32),T("ul",{ref_key:"resultsEl",ref:r,id:(A=y.value)!=null&&A.length?"localsearch-list":void 0,role:(C=y.value)!=null&&C.length?"listbox":void 0,"aria-labelledby":(D=y.value)!=null&&D.length?"localsearch-label":void 0,class:"results",onMousemove:x},[(q(!0),Q(ot,null,at(y.value,(F,V)=>(q(),Q("li",{key:F.id,id:"localsearch-item-"+V,"aria-selected":M.value===V?"true":"false",role:"option"},[T("a",{href:F.id,class:st(["result",{selected:M.value===V}]),"aria-label":[...F.titles,F.title].join(" > "),onMouseenter:te=>!Z.value&&(M.value=V),onFocusin:te=>M.value=V,onClick:d[6]||(d[6]=te=>v.$emit("close")),"data-index":V},[T("div",null,[T("div",dr,[d[12]||(d[12]=T("span",{class:"title-icon"},"#",-1)),(q(!0),Q(ot,null,at(F.titles,(te,we)=>(q(),Q("span",{key:we,class:"title"},[T("span",{class:"text",innerHTML:te},null,8,fr),d[11]||(d[11]=T("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),T("span",hr,[T("span",{class:"text",innerHTML:F.title},null,8,vr)])]),P(b)?(q(),Q("div",pr,[F.text?(q(),Q("div",mr,[T("div",{class:"vp-doc",innerHTML:F.text},null,8,gr)])):xe("",!0),d[13]||(d[13]=T("div",{class:"excerpt-gradient-bottom"},null,-1)),d[14]||(d[14]=T("div",{class:"excerpt-gradient-top"},null,-1))])):xe("",!0)])],42,ur)],8,cr))),128)),P(p)&&!y.value.length&&O.value?(q(),Q("li",br,[pe(me(P(u)("modal.noResultsText"))+' "',1),T("strong",null,me(P(p)),1),d[15]||(d[15]=pe('" ',-1))])):xe("",!0)],40,lr),T("div",yr,[T("span",null,[T("kbd",{"aria-label":P(u)("modal.footer.navigateUpKeyAriaLabel")},[...d[16]||(d[16]=[T("span",{class:"vpi-arrow-up navigate-icon"},null,-1)])],8,wr),T("kbd",{"aria-label":P(u)("modal.footer.navigateDownKeyAriaLabel")},[...d[17]||(d[17]=[T("span",{class:"vpi-arrow-down navigate-icon"},null,-1)])],8,Sr),pe(" "+me(P(u)("modal.footer.navigateText")),1)]),T("span",null,[T("kbd",{"aria-label":P(u)("modal.footer.selectKeyAriaLabel")},[...d[18]||(d[18]=[T("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)])],8,_r),pe(" "+me(P(u)("modal.footer.selectText")),1)]),T("span",null,[T("kbd",{"aria-label":P(u)("modal.footer.closeKeyAriaLabel")},"esc",8,xr),pe(" "+me(P(u)("modal.footer.closeText")),1)])])])],8,Xn)])}}}),Rr=sn(Tr,[["__scopeId","data-v-95bc29ae"]]);export{Rr as default}; +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function dt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(a);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(a,r).enumerable})),t.push.apply(t,n)}return t}function ft(a){for(var e=1;e0?e[e.length-1]:null},activateTrap:function(e,t){var n=U.getActiveTrap(e);t!==n&&U.pauseTrap(e);var r=e.indexOf(t);r===-1||e.splice(r,1),e.push(t)},deactivateTrap:function(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),U.unpauseTrap(e)},pauseTrap:function(e){var t=U.getActiveTrap(e);t==null||t._setPausedState(!0)},unpauseTrap:function(e){var t=U.getActiveTrap(e);t&&!t._isManuallyPaused()&&t._setPausedState(!1)}},An=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cn=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ye=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Mn=function(e){return ye(e)&&!e.shiftKey},Ln=function(e){return ye(e)&&e.shiftKey},ht=function(e){return setTimeout(e,0)},ge=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1&&arguments[1]!==void 0?arguments[1]:{},g=f.hasFallback,E=g===void 0?!1:g,x=f.params,I=x===void 0?[]:x,S=s[u];if(typeof S=="function"&&(S=S.apply(void 0,Fn(I))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var v=S;if(typeof S=="string"){try{v=n.querySelector(S)}catch(d){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(d.message,'"'))}if(!v&&!E)throw new Error("`".concat(u,"` as selector refers to no known node"))}return v},m=function(){var u=h("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!De(u,s.tabbableOptions))if(c(n.activeElement)>=0)u=n.activeElement;else{var f=i.tabbableGroups[0],g=f&&f.firstTabbableNode;u=g||h("fallbackFocus")}else u===null&&(u=h("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},p=function(){if(i.containerGroups=i.containers.map(function(u){var f=_n(u,s.tabbableOptions),g=xn(u,s.tabbableOptions),E=f.length>0?f[0]:void 0,x=f.length>0?f[f.length-1]:void 0,I=g.find(function(d){return oe(d)}),S=g.slice().reverse().find(function(d){return oe(d)}),v=!!f.find(function(d){return se(d)>0});return{container:u,tabbableNodes:f,focusableNodes:g,posTabIndexesFound:v,firstTabbableNode:E,lastTabbableNode:x,firstDomTabbableNode:I,lastDomTabbableNode:S,nextTabbableNode:function(_){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,A=f.indexOf(_);return A<0?R?g.slice(g.indexOf(_)+1).find(function(C){return oe(C)}):g.slice(0,g.indexOf(_)).reverse().find(function(C){return oe(C)}):f[A+(R?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var f=u.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?b(f.shadowRoot):f},w=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){w(m());return}u.focus({preventScroll:!!s.preventScroll}),i.mostRecentlyFocusedNode=u,An(u)&&u.select()}},k=function(u){var f=h("setReturnFocus",{params:[u]});return f||(f===!1?!1:u)},y=function(u){var f=u.target,g=u.event,E=u.isBackward,x=E===void 0?!1:E;f=f||Te(g),p();var I=null;if(i.tabbableGroups.length>0){var S=c(f,g),v=S>=0?i.containerGroups[S]:void 0;if(S<0)x?I=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:I=i.tabbableGroups[0].firstTabbableNode;else if(x){var d=i.tabbableGroups.findIndex(function(F){var V=F.firstTabbableNode;return f===V});if(d<0&&(v.container===f||De(f,s.tabbableOptions)&&!oe(f,s.tabbableOptions)&&!v.nextTabbableNode(f,!1))&&(d=S),d>=0){var _=d===0?i.tabbableGroups.length-1:d-1,R=i.tabbableGroups[_];I=se(f)>=0?R.lastTabbableNode:R.lastDomTabbableNode}else ye(g)||(I=v.nextTabbableNode(f,!1))}else{var A=i.tabbableGroups.findIndex(function(F){var V=F.lastTabbableNode;return f===V});if(A<0&&(v.container===f||De(f,s.tabbableOptions)&&!oe(f,s.tabbableOptions)&&!v.nextTabbableNode(f))&&(A=S),A>=0){var C=A===i.tabbableGroups.length-1?0:A+1,D=i.tabbableGroups[C];I=se(f)>=0?D.firstTabbableNode:D.firstDomTabbableNode}else ye(g)||(I=v.nextTabbableNode(f))}}else I=h("fallbackFocus");return I},O=function(u){var f=Te(u);if(!(c(f,u)>=0)){if(ge(s.clickOutsideDeactivates,u)){o.deactivate({returnFocus:s.returnFocusOnDeactivate});return}ge(s.allowOutsideClick,u)||u.preventDefault()}},L=function(u){var f=Te(u),g=c(f,u)>=0;if(g||f instanceof Document)g&&(i.mostRecentlyFocusedNode=f);else{u.stopImmediatePropagation();var E,x=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var I=c(i.mostRecentlyFocusedNode),S=i.containerGroups[I].tabbableNodes;if(S.length>0){var v=S.findIndex(function(d){return d===i.mostRecentlyFocusedNode});v>=0&&(s.isKeyForward(i.recentNavEvent)?v+1=0&&(E=S[v-1],x=!1))}}else i.containerGroups.some(function(d){return d.tabbableNodes.some(function(_){return se(_)>0})})||(x=!1);else x=!1;x&&(E=y({target:i.mostRecentlyFocusedNode,isBackward:s.isKeyBackward(i.recentNavEvent)})),w(E||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},K=function(u){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=y({event:u,isBackward:f});g&&(ye(u)&&u.preventDefault(),w(g))},H=function(u){(s.isKeyForward(u)||s.isKeyBackward(u))&&K(u,s.isKeyBackward(u))},W=function(u){Cn(u)&&ge(s.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},j=function(u){var f=Te(u);c(f,u)>=0||ge(s.clickOutsideDeactivates,u)||ge(s.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return U.activateTrap(r,o),i.delayInitialFocusTimer=s.delayInitialFocus?ht(function(){w(m())}):w(m()),n.addEventListener("focusin",L,!0),n.addEventListener("mousedown",O,{capture:!0,passive:!1}),n.addEventListener("touchstart",O,{capture:!0,passive:!1}),n.addEventListener("click",j,{capture:!0,passive:!1}),n.addEventListener("keydown",H,{capture:!0,passive:!1}),n.addEventListener("keydown",W),o},Ce=function(u){i.active&&!i.paused&&o._setSubtreeIsolation(!1),i.adjacentElements.clear(),i.alreadySilent.clear();var f=new Set,g=new Set,E=ut(u),x;try{for(E.s();!(x=E.n()).done;){var I=x.value;f.add(I);for(var S=typeof ShadowRoot<"u"&&I.getRootNode()instanceof ShadowRoot,v=I;v;){f.add(v);var d=v.parentElement,_=[];d?_=d.children:!d&&S&&(_=v.getRootNode().children,d=v.getRootNode().host,S=typeof ShadowRoot<"u"&&d.getRootNode()instanceof ShadowRoot);var R=ut(_),A;try{for(R.s();!(A=R.n()).done;){var C=A.value;g.add(C)}}catch(D){R.e(D)}finally{R.f()}v=d}}}catch(D){E.e(D)}finally{E.f()}f.forEach(function(D){g.delete(D)}),i.adjacentElements=g},M=function(){if(i.active)return n.removeEventListener("focusin",L,!0),n.removeEventListener("mousedown",O,!0),n.removeEventListener("touchstart",O,!0),n.removeEventListener("click",j,!0),n.removeEventListener("keydown",H,!0),n.removeEventListener("keydown",W),o},Z=function(u){var f=u.some(function(g){var E=Array.from(g.removedNodes);return E.some(function(x){return x===i.mostRecentlyFocusedNode})});f&&w(m())},X=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Z):void 0,ee=function(){X&&(X.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){X.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var f=l(u,"onActivate"),g=l(u,"onPostActivate"),E=l(u,"checkCanFocusTrap"),x=U.getActiveTrap(r),I=!1;if(x&&!x.paused){var S;(S=x._setSubtreeIsolation)===null||S===void 0||S.call(x,!1),I=!0}try{E||p(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=b(n),f==null||f();var v=function(){E&&p(),$(),ee(),s.isolateSubtrees&&o._setSubtreeIsolation(!0),g==null||g()};if(E)return E(i.containers.concat()).then(v,v),this;v()}catch(_){if(x===U.getActiveTrap(r)&&I){var d;(d=x._setSubtreeIsolation)===null||d===void 0||d.call(x,!0)}throw _}return this},deactivate:function(u){if(!i.active)return this;var f=ft({onDeactivate:s.onDeactivate,onPostDeactivate:s.onPostDeactivate,checkCanReturnFocus:s.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,i.paused||o._setSubtreeIsolation(!1),i.alreadySilent.clear(),M(),i.active=!1,i.paused=!1,ee(),U.deactivateTrap(r,o);var g=l(f,"onDeactivate"),E=l(f,"onPostDeactivate"),x=l(f,"checkCanReturnFocus"),I=l(f,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){ht(function(){I&&w(k(i.nodeFocusedBeforeActivation)),E==null||E()})};return I&&x?(x(k(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){return i.active?(i.manuallyPaused=!0,this._setPausedState(!0,u)):this},unpause:function(u){return i.active?(i.manuallyPaused=!1,r[r.length-1]!==this?this:this._setPausedState(!1,u)):this},updateContainerElements:function(u){var f=[].concat(u).filter(Boolean);return i.containers=f.map(function(g){return typeof g=="string"?n.querySelector(g):g}),s.isolateSubtrees&&Ce(i.containers),i.active&&(p(),s.isolateSubtrees&&!i.paused&&o._setSubtreeIsolation(!0)),ee(),this}},Object.defineProperties(o,{_isManuallyPaused:{value:function(){return i.manuallyPaused}},_setPausedState:{value:function(u,f){if(i.paused===u)return this;if(i.paused=u,u){var g=l(f,"onPause"),E=l(f,"onPostPause");g==null||g(),M(),ee(),o._setSubtreeIsolation(!1),E==null||E()}else{var x=l(f,"onUnpause"),I=l(f,"onPostUnpause");x==null||x(),o._setSubtreeIsolation(!0),p(),$(),ee(),I==null||I()}return this}},_setSubtreeIsolation:{value:function(u){s.isolateSubtrees&&i.adjacentElements.forEach(function(f){var g;if(u)switch(s.isolateSubtrees){case"aria-hidden":(f.ariaHidden==="true"||((g=f.getAttribute("aria-hidden"))===null||g===void 0?void 0:g.toLowerCase())==="true")&&i.alreadySilent.add(f),f.setAttribute("aria-hidden","true");break;default:(f.inert||f.hasAttribute("inert"))&&i.alreadySilent.add(f),f.setAttribute("inert",!0);break}else if(!i.alreadySilent.has(f))switch(s.isolateSubtrees){case"aria-hidden":f.removeAttribute("aria-hidden");break;default:f.removeAttribute("inert");break}})}}}),o.updateContainerElements(e),o};function zn(a,e={}){let t;const{immediate:n,...r}=e,s=ce(!1),i=ce(!1),o=p=>t&&t.activate(p),l=p=>t&&t.deactivate(p),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=be(()=>{const p=rt(a);return Lt(p).map(b=>{const w=rt(b);return typeof w=="string"?w:Dt(w)}).filter(Pt)});return Be(m,p=>{p.length&&(t=Pn(p,{...r,onActivate(){s.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){s.value=!1,e.onDeactivate&&e.onDeactivate()}}),n&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:s,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ue{constructor(e,t=!0,n=[],r=5e3){this.ctx=e,this.iframes=t,this.exclude=n,this.iframesTimeout=r}static matches(e,t){const n=typeof t=="string"?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){let s=!1;return n.every(i=>r.call(e,i)?(s=!0,!1):!0),s}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(n=>{const r=t.filter(s=>s.contains(n)).length>0;t.indexOf(n)===-1&&!r&&t.push(n)}),t}getIframeContents(e,t,n=()=>{}){let r;try{const s=e.contentWindow;if(r=s.document,!s||!r)throw new Error("iframe inaccessible")}catch{n()}r&&t(r)}isIframeBlank(e){const t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}observeIframeLoad(e,t,n){let r=!1,s=null;const i=()=>{if(!r){r=!0,clearTimeout(s);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,n))}catch{n()}}};e.addEventListener("load",i),s=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,n){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch{n()}}waitForIframes(e,t){let n=0;this.forEachIframe(e,()=>!0,r=>{n++,this.waitForIframes(r.querySelector("html"),()=>{--n||t()})},r=>{r||t()})}forEachIframe(e,t,n,r=()=>{}){let s=e.querySelectorAll("iframe"),i=s.length,o=0;s=Array.prototype.slice.call(s);const l=()=>{--i<=0&&r(o)};i||l(),s.forEach(c=>{ue.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,n(h)),l()},l)})}createIterator(e,t,n){return document.createNodeIterator(e,t,n,!1)}createInstanceOnIframe(e){return new ue(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,n){const r=e.compareDocumentPosition(n),s=Node.DOCUMENT_POSITION_PRECEDING;if(r&s)if(t!==null){const i=t.compareDocumentPosition(n),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let n;return t===null?n=e.nextNode():n=e.nextNode()&&e.nextNode(),{prevNode:t,node:n}}checkIframeFilter(e,t,n,r){let s=!1,i=!1;return r.forEach((o,l)=>{o.val===n&&(s=l,i=o.handled)}),this.compareNodeIframe(e,t,n)?(s===!1&&!i?r.push({val:n,handled:!0}):s!==!1&&!i&&(r[s].handled=!0),!0):(s===!1&&r.push({val:n,handled:!1}),!1)}handleOpenIframes(e,t,n,r){e.forEach(s=>{s.handled||this.getIframeContents(s.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,n,r)})})}iterateThroughNodes(e,t,n,r,s){const i=this.createIterator(t,e,r);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,p=>this.checkIframeFilter(c,h,p,o),p=>{this.createInstanceOnIframe(p).forEachNode(e,b=>l.push(b),r)}),l.push(c);l.forEach(p=>{n(p)}),this.iframes&&this.handleOpenIframes(o,e,n,r),s()}forEachNode(e,t,n,r=()=>{}){const s=this.getContexts();let i=s.length;i||r(),s.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,n,()=>{--i<=0&&r()})};this.iframes?this.waitForIframes(o,l):l()})}}let Vn=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ue(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const n=this.opt.log;this.opt.debug&&typeof n=="object"&&typeof n[t]=="function"&&n[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let s in t)if(t.hasOwnProperty(s)){const i=t[s],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(s):this.escapeStr(s),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${n}`),r+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+r))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,n,r)=>{let s=r.charAt(n+1);return/[(|)\\]/.test(s)||s===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let r=[];return e.split("").forEach(s=>{n.every(i=>{if(i.indexOf(s)!==-1){if(r.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),r.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let n=this.opt.accuracy,r=typeof n=="string"?n:n.value,s=typeof n=="string"?[]:n.limiters,i="";switch(s.forEach(o=>{i+=`|${this.escapeStr(o)}`}),r){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(n=>{this.opt.separateWordSearch?n.split(" ").forEach(r=>{r.trim()&&t.indexOf(r)===-1&&t.push(r)}):n.trim()&&t.indexOf(n)===-1&&t.push(n)}),{keywords:t.sort((n,r)=>r.length-n.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let n=0;return e.sort((r,s)=>r.start-s.start).forEach(r=>{let{start:s,end:i,valid:o}=this.callNoMatchOnInvalidRanges(r,n);o&&(r.start=s,r.length=i-s,t.push(r),n=i)}),t}callNoMatchOnInvalidRanges(e,t){let n,r,s=!1;return e&&typeof e.start<"u"?(n=parseInt(e.start,10),r=n+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?s=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:n,end:r,valid:s}}checkWhitespaceRanges(e,t,n){let r,s=!0,i=n.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,r=l+parseInt(e.length,10),r>i&&(r=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||r-l<0||l>i||r>i?(s=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):n.substring(l,r).replace(/\s+/g,"")===""&&(s=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:s}}getTextNodes(e){let t="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,r=>{n.push({start:t.length,end:(t+=r.textContent).length,node:r})},r=>this.matchesExclude(r.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:n})})}matchesExclude(e){return ue.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,n){const r=this.opt.element?this.opt.element:"mark",s=e.splitText(t),i=s.splitText(n-t);let o=document.createElement(r);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=s.textContent,s.parentNode.replaceChild(o,s),i}wrapRangeInMappedTextNode(e,t,n,r,s){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!r(i.node))return!1;const c=t-i.start,h=(n>i.end?i.end:n)-i.start,m=e.value.substr(0,i.start),p=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+p,e.nodes.forEach((b,w)=>{w>=o&&(e.nodes[w].start>0&&w!==o&&(e.nodes[w].start-=h),e.nodes[w].end-=h)}),n-=h,s(i.node.previousSibling,i.start),n>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,n,r,s){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!n(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;mn(l[i],m),(m,p)=>{e.lastIndex=p,r(m)})}s()})}wrapRangeFromIndex(e,t,n,r){this.getTextNodes(s=>{const i=s.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,s.value);m&&this.wrapRangeInMappedTextNode(s,c,h,p=>t(p,o,s.value.substring(c,h),l),p=>{n(p,o)})}),r()})}unwrapMatches(e){const t=e.parentNode;let n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let n=0,r="wrapMatches";const s=i=>{n++,this.opt.each(i)};this.opt.acrossElements&&(r="wrapMatchesAcrossElements"),this[r](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,n),s,()=>{n===0&&this.opt.noMatch(e),this.opt.done(n)})}mark(e,t){this.opt=t;let n=0,r="wrapMatches";const{keywords:s,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[r](h,1,(p,b)=>this.opt.filter(b,c,n,m),p=>{m++,n++,this.opt.each(p)},()=>{m===0&&this.opt.noMatch(c),s[i-1]===c?this.opt.done(n):l(s[s.indexOf(c)+1])})};this.opt.acrossElements&&(r="wrapMatchesAcrossElements"),i===0?this.opt.done(n):l(s[0])}markRanges(e,t){this.opt=t;let n=0,r=this.checkRanges(e);r&&r.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(r)),this.wrapRangeFromIndex(r,(s,i,o,l)=>this.opt.filter(s,i,o,l),(s,i)=>{n++,this.opt.each(s,i)},()=>{this.opt.done(n)})):this.opt.done(n)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,n=>{this.unwrapMatches(n)},n=>{const r=ue.matches(n,t),s=this.matchesExclude(n);return!r||s?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function jn(a){const e=new Vn(a);return this.mark=(t,n)=>(e.mark(t,n),this),this.markRegExp=(t,n)=>(e.markRegExp(t,n),this),this.markRanges=(t,n)=>(e.markRanges(t,n),this),this.unmark=t=>(e.unmark(t),this),this}const $n="ENTRIES",Et="KEYS",It="VALUES",z="";class Pe{constructor(e,t){const n=e._tree,r=Array.from(n.keys());this.set=e,this._type=t,this._path=r.length>0?[{node:n,keys:r}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===z)return{done:!1,value:this.result()};const n=e.get(le(t));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==z).join("")}value(){return le(this._path).node.get(z)}result(){switch(this._type){case It:return this.value();case Et:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Bn=(a,e,t)=>{const n=new Map;if(e===void 0)return n;const r=e.length+1,s=r+t,i=new Uint8Array(s*r).fill(t+1);for(let o=0;o{const l=s*i;e:for(const c of a.keys())if(c===z){const h=r[l-1];h<=t&&n.set(o,[a.get(c),h])}else{let h=s;for(let m=0;mt)continue e}kt(a.get(c),e,t,n,r,h,i,o+c)}};class Y{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,n]=Ae(this._tree,e.slice(this._prefix.length));if(t===void 0){const[r,s]=He(n);for(const i of r.keys())if(i!==z&&i.startsWith(s)){const o=new Map;return o.set(i.slice(s.length),r.get(i)),new Y(o,e)}}return new Y(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Wn(this._tree,e)}entries(){return new Pe(this,$n)}forEach(e){for(const[t,n]of this)e(t,n,this)}fuzzyGet(e,t){return Bn(this._tree,e,t)}get(e){const t=Je(this._tree,e);return t!==void 0?t.get(z):void 0}has(e){const t=Je(this._tree,e);return t!==void 0&&t.has(z)}keys(){return new Pe(this,Et)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(z,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);return n.set(z,t(n.get(z))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);let r=n.get(z);return r===void 0&&n.set(z,r=t()),r}values(){return new Pe(this,It)}[Symbol.iterator](){return this.entries()}static from(e){const t=new Y;for(const[n,r]of e)t.set(n,r);return t}static fromObject(e){return Y.from(Object.entries(e))}}const Ae=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const n of a.keys())if(n!==z&&e.startsWith(n))return t.push([a,n]),Ae(a.get(n),e.slice(n.length),t);return t.push([a,e]),Ae(void 0,"",t)},Je=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==z&&e.startsWith(t))return Je(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let n=0;a&&n{const[t,n]=Ae(a,e);if(t!==void 0){if(t.delete(z),t.size===0)Nt(n);else if(t.size===1){const[r,s]=t.entries().next().value;Ft(n,r,s)}}},Nt=a=>{if(a.length===0)return;const[e,t]=He(a);if(e.delete(t),e.size===0)Nt(a.slice(0,-1));else if(e.size===1){const[n,r]=e.entries().next().value;n!==z&&Ft(a.slice(0,-1),n,r)}},Ft=(a,e,t)=>{if(a.length===0)return;const[n,r]=He(a);n.set(r+e,t),n.delete(r)},He=a=>a[a.length-1],Ge="or",Rt="and",Kn="and_not";class de{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?$e:e.autoVacuum;this._options={...je,...e,autoVacuum:t,searchOptions:{...vt,...e.searchOptions||{}},autoSuggestOptions:{...Gn,...e.autoSuggestOptions||{}}},this._index=new Y,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ue,this.addFields(this._options.fields)}add(e){const{extractField:t,stringifyField:n,tokenize:r,processTerm:s,fields:i,idField:o}=this._options,l=t(e,o);if(l==null)throw new Error(`MiniSearch: document does not have ID field "${o}"`);if(this._idToShortId.has(l))throw new Error(`MiniSearch: duplicate ID ${l}`);const c=this.addDocumentId(l);this.saveStoredFields(c,e);for(const h of i){const m=t(e,h);if(m==null)continue;const p=r(n(m,h),h),b=this._fieldIds[h],w=new Set(p).size;this.addFieldLength(c,b,this._documentCount-1,w);for(const k of p){const y=s(k,h);if(Array.isArray(y))for(const O of y)this.addTerm(b,c,O);else y&&this.addTerm(b,c,y)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:n=10}=t,r={chunk:[],promise:Promise.resolve()},{chunk:s,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%n===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),r);return i.then(()=>this.addAll(s))}remove(e){const{tokenize:t,processTerm:n,extractField:r,stringifyField:s,fields:i,idField:o}=this._options,l=r(e,o);if(l==null)throw new Error(`MiniSearch: document does not have ID field "${o}"`);const c=this._idToShortId.get(l);if(c==null)throw new Error(`MiniSearch: cannot remove document with ID ${l}: it is not in the index`);for(const h of i){const m=r(e,h);if(m==null)continue;const p=t(s(m,h),h),b=this._fieldIds[h],w=new Set(p).size;this.removeFieldLength(c,b,this._documentCount,w);for(const k of p){const y=n(k,h);if(Array.isArray(y))for(const O of y)this.removeTerm(b,c,O);else y&&this.removeTerm(b,c,y)}}this._storedFields.delete(c),this._documentIds.delete(c),this._idToShortId.delete(l),this._fieldLength.delete(c),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Y,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((n,r)=>{this.removeFieldLength(t,r,this._documentCount,n)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:n,batchWait:r}=this._options.autoVacuum;this.conditionalVacuum({batchSize:n,batchWait:r},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const n of e)this.discard(n)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:n}=this._options,r=n(e,t);this.discard(r),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const n=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ue,this.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}async performVacuuming(e,t){const n=this._dirtCount;if(this.vacuumConditionsMet(t)){const r=e.batchSize||qe.batchSize,s=e.batchWait||qe.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%r===0&&await new Promise(c=>setTimeout(c,s)),i+=1}this._dirtCount-=n}await null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:n}=e;return t=t||$e.minDirtCount,n=n||$e.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=n}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:n}=this._options,r={...n,...t},s=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:h}]of s){const m=c.length||1,p={id:this._documentIds.get(o),score:l*m,terms:Object.keys(h),queryTerms:c,match:h};Object.assign(p,this._storedFields.get(o)),(r.filter==null||r.filter(p))&&i.push(p)}return e===de.wildcard&&r.boostDocument==null||i.sort(mt),i}autoSuggest(e,t={}){t={...this._options.autoSuggestOptions,...t};const n=new Map;for(const{score:s,terms:i}of this.search(e,t)){const o=i.join(" "),l=n.get(o);l!=null?(l.score+=s,l.count+=1):n.set(o,{score:s,terms:i,count:1})}const r=[];for(const[s,{score:i,terms:o,count:l}]of n)r.push({suggestion:s,terms:o,score:i/l});return r.sort(mt),r}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static async loadJSONAsync(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)}static getDefault(e){if(je.hasOwnProperty(e))return Ve(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:n,documentIds:r,fieldLength:s,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Ee(r),l._fieldLength=Ee(s),l._storedFields=Ee(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of n){const m=new Map;for(const p of Object.keys(h)){let b=h[p];o===1&&(b=b.ds),m.set(parseInt(p,10),Ee(b))}l._index.set(c,m)}return l}static async loadJSAsync(e,t){const{index:n,documentIds:r,fieldLength:s,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=await Ie(r),l._fieldLength=await Ie(s),l._storedFields=await Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of n){const p=new Map;for(const b of Object.keys(m)){let w=m[b];o===1&&(w=w.ds),p.set(parseInt(b,10),await Ie(w))}++c%1e3===0&&await Ot(0),l._index.set(h,p)}return l}static instantiateMiniSearch(e,t){const{documentCount:n,nextId:r,fieldIds:s,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new de(t);return c._documentCount=n,c._nextId=r,c._idToShortId=new Map,c._fieldIds=s,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new Y,c}executeQuery(e,t={}){if(e===de.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const p={...t,...e,queries:void 0},b=e.queries.map(w=>this.executeQuery(w,p));return this.combineResults(b,p.combineWith)}const{tokenize:n,processTerm:r,searchOptions:s}=this._options,i={tokenize:n,processTerm:r,...s,...t},{tokenize:o,processTerm:l}=i,m=o(e).flatMap(p=>l(p)).filter(p=>!!p).map(Hn(i)).map(p=>this.executeQuerySpec(p,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const n={...this._options.searchOptions,...t},r=(n.fields||this._options.fields).reduce((k,y)=>({...k,[y]:Ve(n.boost,y)||1}),{}),{boostDocument:s,weights:i,maxFuzzy:o,bm25:l}=n,{fuzzy:c,prefix:h}={...vt.weights,...i},m=this._index.get(e.term),p=this.termResults(e.term,e.term,1,e.termBoost,m,r,s,l);let b,w;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const k=e.fuzzy===!0?.2:e.fuzzy,y=k<1?Math.min(o,Math.round(e.term.length*k)):k;y&&(w=this._index.fuzzyGet(e.term,y))}if(b)for(const[k,y]of b){const O=k.length-e.term.length;if(!O)continue;w==null||w.delete(k);const L=h*k.length/(k.length+.3*O);this.termResults(e.term,k,L,e.termBoost,y,r,s,l,p)}if(w)for(const k of w.keys()){const[y,O]=w.get(k);if(!O)continue;const L=c*k.length/(k.length+O);this.termResults(e.term,k,L,e.termBoost,y,r,s,l,p)}return p}executeWildcardQuery(e){const t=new Map,n={...this._options.searchOptions,...e};for(const[r,s]of this._documentIds){const i=n.boostDocument?n.boostDocument(s,"",this._storedFields.get(r)):1;t.set(r,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const n=t.toLowerCase(),r=Jn[n];if(!r)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(r)||new Map}toJSON(){const e=[];for(const[t,n]of this._index){const r={};for(const[s,i]of n)r[s]=Object.fromEntries(i);e.push([t,r])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,n,r,s,i,o,l,c=new Map){if(s==null)return c;for(const h of Object.keys(i)){const m=i[h],p=this._fieldIds[h],b=s.get(p);if(b==null)continue;let w=b.size;const k=this._avgFieldLength[p];for(const y of b.keys()){if(!this._documentIds.has(y)){this.removeTerm(p,y,t),w-=1;continue}const O=o?o(this._documentIds.get(y),t,this._storedFields.get(y)):1;if(!O)continue;const L=b.get(y),K=this._fieldLength.get(y)[p],H=Un(L,w,this._documentCount,K,k,l),W=n*r*m*O*H,j=c.get(y);if(j){j.score+=W,Qn(j.terms,e);const $=Ve(j.match,t);$?$.push(h):j.match[t]=[h]}else c.set(y,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,n){const r=this._index.fetch(n,gt);let s=r.get(e);if(s==null)s=new Map,s.set(t,1),r.set(e,s);else{const i=s.get(t);s.set(t,(i||0)+1)}}removeTerm(e,t,n){if(!this._index.has(n)){this.warnDocumentChanged(t,e,n);return}const r=this._index.fetch(n,gt),s=r.get(e);s==null||s.get(t)==null?this.warnDocumentChanged(t,e,n):s.get(t)<=1?s.size<=1?r.delete(e):s.delete(t):s.set(t,s.get(t)-1),this._index.get(n).size===0&&this._index.delete(n)}warnDocumentChanged(e,t,n){for(const r of Object.keys(this._fieldIds))if(this._fieldIds[r]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${n}" was not present in field "${r}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Jn={[Ge]:(a,e)=>{for(const t of e.keys()){const n=a.get(t);if(n==null)a.set(t,e.get(t));else{const{score:r,terms:s,match:i}=e.get(t);n.score=n.score+r,n.match=Object.assign(n.match,i),pt(n.terms,s)}}return a},[Rt]:(a,e)=>{const t=new Map;for(const n of e.keys()){const r=a.get(n);if(r==null)continue;const{score:s,terms:i,match:o}=e.get(n);pt(r.terms,i),t.set(n,{score:r.score+s,terms:r.terms,match:Object.assign(r.match,o)})}return t},[Kn]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},qn={k:1.2,b:.7,d:.5},Un=(a,e,t,n,r,s)=>{const{k:i,b:o,d:l}=s;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*n/r)))},Hn=a=>(e,t,n)=>{const r=typeof a.fuzzy=="function"?a.fuzzy(e,t,n):a.fuzzy||!1,s=typeof a.prefix=="function"?a.prefix(e,t,n):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,n):1;return{term:e,fuzzy:r,prefix:s,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],stringifyField:(a,e)=>a.toString(),tokenize:a=>a.split(Yn),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},vt={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:qn},Gn={combineWith:Rt,prefix:(a,e,t)=>e===t.length-1},qe={batchSize:1e3,batchWait:10},Ue={minDirtFactor:.1,minDirtCount:20},$e={...qe,...Ue},Qn=(a,e)=>{a.includes(e)||a.push(e)},pt=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},mt=({score:a},{score:e})=>e-a,gt=()=>new Map,Ee=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=async a=>{const e=new Map;let t=0;for(const n of Object.keys(a))e.set(parseInt(n,10),a[n]),++t%1e3===0&&await Ot(0);return e},Ot=a=>new Promise(e=>setTimeout(e,a)),Yn=/[\n\r\p{Z}\p{P}]+/u;class Zn{constructor(e=10){Me(this,"max");Me(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Xn=["aria-owns"],er={class:"shell"},tr=["title"],nr={class:"search-actions before"},rr=["title"],ir=["aria-activedescendant","aria-controls","placeholder"],sr={class:"search-actions"},ar=["title"],or=["disabled","title"],lr=["id","role","aria-labelledby"],cr=["id","aria-selected"],ur=["href","aria-label","onMouseenter","onFocusin","data-index"],dr={class:"titles"},fr=["innerHTML"],hr={class:"title main"},vr=["innerHTML"],pr={key:0,class:"excerpt-wrapper"},mr={key:0,class:"excerpt",inert:""},gr=["innerHTML"],br={key:0,class:"no-results"},yr={class:"search-keyboard-shortcuts"},wr=["aria-label"],Sr=["aria-label"],_r=["aria-label"],xr=["aria-label"],Tr=zt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var I,S;const t=e,n=ce(),r=ce(),s=ce(ln),i=an(),{activate:o}=zn(n,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=it(async()=>{var v,d,_,R,A,C,D,F,V;return lt(de.loadJSON((_=await((d=(v=s.value)[l.value])==null?void 0:d.call(v)))==null?void 0:_.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((R=c.value.search)==null?void 0:R.provider)==="local"&&((C=(A=c.value.search.options)==null?void 0:A.miniSearch)==null?void 0:C.searchOptions)},...((D=c.value.search)==null?void 0:D.provider)==="local"&&((V=(F=c.value.search.options)==null?void 0:F.miniSearch)==null?void 0:V.options)}))}),p=be(()=>{var v,d;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((d=c.value.search.options)==null?void 0:d.disableQueryPersistence)===!0}).value?he(""):Vt("vitepress:local-search-filter",""),b=jt("vitepress:local-search-detailed-list",((I=c.value.search)==null?void 0:I.provider)==="local"&&((S=c.value.search.options)==null?void 0:S.detailedView)===!0),w=be(()=>{var v,d,_;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((d=c.value.search.options)==null?void 0:d.disableDetailedView)===!0||((_=c.value.search.options)==null?void 0:_.detailedView)===!1)}),k=be(()=>{var d,_,R,A,C,D,F;const v=((d=c.value.search)==null?void 0:d.options)??c.value.algolia;return((C=(A=(R=(_=v==null?void 0:v.locales)==null?void 0:_[l.value])==null?void 0:R.translations)==null?void 0:A.button)==null?void 0:C.buttonText)||((F=(D=v==null?void 0:v.translations)==null?void 0:D.button)==null?void 0:F.buttonText)||"Search"});$t(()=>{w.value&&(b.value=!1)});const y=ce([]),O=he(!1);Be(p,()=>{O.value=!1});const L=it(async()=>{if(r.value)return lt(new jn(r.value))},null),K=new Zn(16);Bt(()=>[h.value,p.value,b.value],async([v,d,_],R,A)=>{var te,we,Qe,Ye;(R==null?void 0:R[0])!==v&&K.clear();let C=!1;if(A(()=>{C=!0}),!v)return;y.value=v.search(d).slice(0,16),O.value=!0;const D=_?await Promise.all(y.value.map(B=>H(B.id))):[];if(C)return;for(const{id:B,mod:ne}of D){const re=B.slice(0,B.indexOf("#"));let G=K.get(re);if(G)continue;G=new Map,K.set(re,G);const J=ne.default??ne;if(J!=null&&J.render||J!=null&&J.setup){const ie=en(J);ie.config.warnHandler=()=>{},ie.provide(tn,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ze=document.createElement("div");ie.mount(Ze),Ze.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(fe=>{var tt;const Se=(tt=fe.querySelector("a"))==null?void 0:tt.getAttribute("href"),Xe=(Se==null?void 0:Se.startsWith("#"))&&Se.slice(1);if(!Xe)return;let et="";for(;(fe=fe.nextElementSibling)&&!/^h[1-6]$/i.test(fe.tagName);)et+=fe.outerHTML;G.set(Xe,et)}),ie.unmount()}if(C)return}const F=new Set;if(y.value=y.value.map(B=>{const[ne,re]=B.id.split("#"),G=K.get(ne),J=(G==null?void 0:G.get(re))??"";for(const ie in B.match)F.add(ie);return{...B,text:J}}),await ve(),C)return;await new Promise(B=>{var ne;(ne=L.value)==null||ne.unmark({done:()=>{var re;(re=L.value)==null||re.markRegExp(E(F),{done:B})}})});const V=((te=n.value)==null?void 0:te.querySelectorAll(".result .excerpt"))??[];for(const B of V)(we=B.querySelector('mark[data-markjs="true"]'))==null||we.scrollIntoView({block:"center"});(Ye=(Qe=r.value)==null?void 0:Qe.firstElementChild)==null||Ye.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function H(v){const d=nn(v.slice(0,v.indexOf("#")));try{if(!d)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(d)}}catch(_){return console.error(_),{id:v,mod:{}}}}const W=he(),j=be(()=>{var v;return((v=p.value)==null?void 0:v.length)<=0});function $(v=!0){var d,_;(d=W.value)==null||d.focus(),v&&((_=W.value)==null||_.select())}Le(()=>{$()});function Ce(v){v.pointerType==="mouse"&&$()}const M=he(-1),Z=he(!0);Be(y,v=>{M.value=v.length?0:-1,X()});function X(){ve(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}_e("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=y.value.length-1),Z.value=!0,X()}),_e("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=y.value.length&&(M.value=0),Z.value=!0,X()});const ee=Wt();_e("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const d=y.value[M.value];if(v.target instanceof HTMLInputElement&&!d){v.preventDefault();return}d&&(ee.go(d.id),t("close"))}),_e("Escape",()=>{t("close")});const u=on({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Le(()=>{window.history.pushState(null,"",null)}),Kt("popstate",v=>{v.preventDefault(),t("close")});const f=Jt(qt?document.body:null);Le(()=>{ve(()=>{f.value=!0,ve().then(()=>o())})}),Ut(()=>{f.value=!1});function g(){p.value="",ve().then(()=>$(!1))}function E(v){return new RegExp([...v].sort((d,_)=>_.length-d.length).map(d=>`(${rn(d)})`).join("|"),"gi")}function x(v){var R;if(!Z.value)return;const d=(R=v.target)==null?void 0:R.closest(".result"),_=Number.parseInt(d==null?void 0:d.dataset.index);_>=0&&_!==M.value&&(M.value=_),Z.value=!1}return(v,d)=>{var _,R,A,C,D;return q(),Ht(Xt,{to:"body"},[T("div",{ref_key:"el",ref:n,role:"button","aria-owns":(_=y.value)!=null&&_.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[T("div",{class:"backdrop",onClick:d[0]||(d[0]=F=>v.$emit("close"))}),T("div",er,[T("form",{class:"search-bar",onPointerup:d[4]||(d[4]=F=>Ce(F)),onSubmit:d[5]||(d[5]=Gt(()=>{},["prevent"]))},[T("label",{title:k.value,id:"localsearch-label",for:"localsearch-input"},[...d[7]||(d[7]=[T("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)])],8,tr),T("div",nr,[T("button",{class:"back-button",title:P(u)("modal.backButtonTitle"),onClick:d[1]||(d[1]=F=>v.$emit("close"))},[...d[8]||(d[8]=[T("span",{class:"vpi-arrow-left local-search-icon"},null,-1)])],8,rr)]),Qt(T("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":d[2]||(d[2]=F=>Zt(p)?p.value=F:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(R=y.value)!=null&&R.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:k.value,spellcheck:"false",type:"search"},null,8,ir),[[Yt,P(p)]]),T("div",sr,[w.value?xe("",!0):(q(),Q("button",{key:0,class:st(["toggle-layout-button",{"detailed-list":P(b)}]),type:"button",title:P(u)("modal.displayDetails"),onClick:d[3]||(d[3]=F=>M.value>-1&&(b.value=!P(b)))},[...d[9]||(d[9]=[T("span",{class:"vpi-layout-list local-search-icon"},null,-1)])],10,ar)),T("button",{class:"clear-button",type:"reset",disabled:j.value,title:P(u)("modal.resetButtonTitle"),onClick:g},[...d[10]||(d[10]=[T("span",{class:"vpi-delete local-search-icon"},null,-1)])],8,or)])],32),T("ul",{ref_key:"resultsEl",ref:r,id:(A=y.value)!=null&&A.length?"localsearch-list":void 0,role:(C=y.value)!=null&&C.length?"listbox":void 0,"aria-labelledby":(D=y.value)!=null&&D.length?"localsearch-label":void 0,class:"results",onMousemove:x},[(q(!0),Q(ot,null,at(y.value,(F,V)=>(q(),Q("li",{key:F.id,id:"localsearch-item-"+V,"aria-selected":M.value===V?"true":"false",role:"option"},[T("a",{href:F.id,class:st(["result",{selected:M.value===V}]),"aria-label":[...F.titles,F.title].join(" > "),onMouseenter:te=>!Z.value&&(M.value=V),onFocusin:te=>M.value=V,onClick:d[6]||(d[6]=te=>v.$emit("close")),"data-index":V},[T("div",null,[T("div",dr,[d[12]||(d[12]=T("span",{class:"title-icon"},"#",-1)),(q(!0),Q(ot,null,at(F.titles,(te,we)=>(q(),Q("span",{key:we,class:"title"},[T("span",{class:"text",innerHTML:te},null,8,fr),d[11]||(d[11]=T("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),T("span",hr,[T("span",{class:"text",innerHTML:F.title},null,8,vr)])]),P(b)?(q(),Q("div",pr,[F.text?(q(),Q("div",mr,[T("div",{class:"vp-doc",innerHTML:F.text},null,8,gr)])):xe("",!0),d[13]||(d[13]=T("div",{class:"excerpt-gradient-bottom"},null,-1)),d[14]||(d[14]=T("div",{class:"excerpt-gradient-top"},null,-1))])):xe("",!0)])],42,ur)],8,cr))),128)),P(p)&&!y.value.length&&O.value?(q(),Q("li",br,[pe(me(P(u)("modal.noResultsText"))+' "',1),T("strong",null,me(P(p)),1),d[15]||(d[15]=pe('" ',-1))])):xe("",!0)],40,lr),T("div",yr,[T("span",null,[T("kbd",{"aria-label":P(u)("modal.footer.navigateUpKeyAriaLabel")},[...d[16]||(d[16]=[T("span",{class:"vpi-arrow-up navigate-icon"},null,-1)])],8,wr),T("kbd",{"aria-label":P(u)("modal.footer.navigateDownKeyAriaLabel")},[...d[17]||(d[17]=[T("span",{class:"vpi-arrow-down navigate-icon"},null,-1)])],8,Sr),pe(" "+me(P(u)("modal.footer.navigateText")),1)]),T("span",null,[T("kbd",{"aria-label":P(u)("modal.footer.selectKeyAriaLabel")},[...d[18]||(d[18]=[T("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)])],8,_r),pe(" "+me(P(u)("modal.footer.selectText")),1)]),T("span",null,[T("kbd",{"aria-label":P(u)("modal.footer.closeKeyAriaLabel")},"esc",8,xr),pe(" "+me(P(u)("modal.footer.closeText")),1)])])])],8,Xn)])}}}),Rr=sn(Tr,[["__scopeId","data-v-e9d3ce3e"]]);export{Rr as default}; diff --git a/assets/chunks/theme.CfxZ1TLj.js b/assets/chunks/theme.BCQ-NHcv.js similarity index 93% rename from assets/chunks/theme.CfxZ1TLj.js rename to assets/chunks/theme.BCQ-NHcv.js index aae5c087..2b56502b 100644 --- a/assets/chunks/theme.CfxZ1TLj.js +++ b/assets/chunks/theme.BCQ-NHcv.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.D6j45Eya.js","assets/chunks/framework.DXGyWiRo.js"])))=>i.map(i=>d[i]); -import{d as p,c as u,r as c,n as N,o as s,a as j,t as M,b as _,w as h,T as ue,e as m,_ as g,u as Ce,i as He,f as Be,g as de,h as y,j as d,k as i,l as z,m as se,p as S,q as F,s as X,v as U,x as ve,y as fe,z as Ee,A as Fe,F as x,B as A,C as W,D as Y,E as k,G as $e,H as B,I as ye,J as Q,K as G,L as Z,M as De,N as Pe,O as ie,P as Le,Q as Ve,R as ee,S as Oe,U as Ge,V as Ue,W as Se,X as Te,Y as je,Z as ze,$ as We,a0 as Ke,a1 as qe}from"./framework.DXGyWiRo.js";const Re=p({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(s(),u("span",{class:N(["VPBadge",e.type])},[c(t.$slots,"default",{},()=>[j(M(e.text),1)])],2))}}),Je={key:0,class:"VPBackdrop"},Xe=p({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(s(),_(ue,{name:"fade"},{default:h(()=>[e.show?(s(),u("div",Je)):m("",!0)]),_:1}))}}),Ye=g(Xe,[["__scopeId","data-v-3febd95c"]]),L=Ce;function Qe(e,t){let n,a=!1;return()=>{n&&clearTimeout(n),a?n=setTimeout(e,t):(e(),(a=!0)&&setTimeout(()=>a=!1,t))}}function re(e){return e.startsWith("/")?e:`/${e}`}function he(e){const{pathname:t,search:n,hash:a,protocol:o}=new URL(e,"http://a.com");if(He(e)||e.startsWith("#")||!o.startsWith("http")||!Be(t))return e;const{site:r}=L(),l=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${a}`);return de(l)}function q({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:o,hash:r}=L(),l=y(()=>{var f,$;return{label:(f=t.value.locales[n.value])==null?void 0:f.label,link:(($=t.value.locales[n.value])==null?void 0:$.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([f,$])=>l.value.label===$.label?[]:{text:$.label,link:Ze($.link||(f==="root"?"/":`/${f}/`),o.value.i18nRouting!==!1&&e,a.value.relativePath.slice(l.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:l}}function Ze(e,t,n,a){return t?e.replace(/\/$/,"")+re(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):e}const et={class:"NotFound"},tt={class:"code"},nt={class:"title"},at={class:"quote"},ot={class:"action"},st=["href","aria-label"],it=p({__name:"NotFound",setup(e){const{theme:t}=L(),{currentLang:n}=q();return(a,o)=>{var r,l,v,f,$;return s(),u("div",et,[d("p",tt,M(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),d("h1",nt,M(((l=i(t).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=d("div",{class:"divider"},null,-1)),d("blockquote",at,M(((v=i(t).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ot,[d("a",{class:"link",href:i(de)(i(n).link),"aria-label":((f=i(t).notFound)==null?void 0:f.linkLabel)??"go to home"},M((($=i(t).notFound)==null?void 0:$.linkText)??"Take me home"),9,st)])])}}}),rt=g(it,[["__scopeId","data-v-769096ce"]]);function Ne(e,t){if(Array.isArray(e))return R(e);if(e==null)return[];t=re(t);const n=Object.keys(e).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>t.startsWith(re(o))),a=n?e[n]:[];return Array.isArray(a)?R(a):R(a.items,a.base)}function lt(e){const t=[];let n=0;for(const a in e){const o=e[a];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function ct(e){const t=[];function n(a){for(const o of a)o.text&&o.link&&t.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&n(o.items)}return n(e),t}function le(e,t){return Array.isArray(t)?t.some(n=>le(e,n)):z(e,t.link)?!0:t.items?le(e,t.items):!1}function R(e,t){return[...e].map(n=>{const a={...n},o=a.base||t;return o&&a.link&&(a.link=o+a.link),a.items&&(a.items=R(a.items,o)),a})}function D(){const{frontmatter:e,page:t,theme:n}=L(),a=se("(min-width: 960px)"),o=S(!1),r=y(()=>{const w=n.value.sidebar,C=t.value.relativePath;return w?Ne(w,C):[]}),l=S(r.value);F(r,(w,C)=>{JSON.stringify(w)!==JSON.stringify(C)&&(l.value=r.value)});const v=y(()=>e.value.sidebar!==!1&&l.value.length>0&&e.value.layout!=="home"),f=y(()=>$?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),$=y(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),V=y(()=>v.value&&a.value),b=y(()=>v.value?lt(l.value):[]);function P(){o.value=!0}function T(){o.value=!1}function I(){o.value?T():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:v,hasAside:$,leftAside:f,isSidebarEnabled:V,open:P,close:T,toggle:I}}function ut(e,t){let n;X(()=>{n=e.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",a)}),ve(()=>{window.removeEventListener("keyup",a)});function a(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function dt(e){const{page:t,hash:n}=L(),a=S(!1),o=y(()=>e.value.collapsed!=null),r=y(()=>!!e.value.link),l=S(!1),v=()=>{l.value=z(t.value.relativePath,e.value.link)};F([t,e,n],v),U(v);const f=y(()=>l.value?!0:e.value.items?le(t.value.relativePath,e.value.items):!1),$=y(()=>!!(e.value.items&&e.value.items.length));X(()=>{a.value=!!(o.value&&e.value.collapsed)}),fe(()=>{(l.value||f.value)&&(a.value=!1)});function V(){o.value&&(a.value=!a.value)}return{collapsed:a,collapsible:o,isLink:r,isActiveLink:l,hasActiveLink:f,hasChildren:$,toggle:V}}function vt(){const{hasSidebar:e}=D(),t=se("(min-width: 960px)"),n=se("(min-width: 1280px)");return{isAsideEnabled:y(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const ft=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ce=[];function Me(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function me(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const a=Number(n.tagName[1]);return{element:n,title:ht(n),link:"#"+n.id,level:a}});return mt(t,e)}function ht(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(ft.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function mt(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[a,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return _t(e,a,o)}function pt(e,t){const{isAsideEnabled:n}=vt(),a=Qe(r,100);let o=null;U(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),Ee(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",a)});function r(){if(!n.value)return;const v=window.scrollY,f=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(v+f-$)<1,b=ce.map(({element:T,link:I})=>({link:I,top:kt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,I)=>T.top-I.top);if(!b.length){l(null);return}if(v<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:T,top:I}of b){if(I>v+Fe()+4)break;P=T}l(P)}function l(v){o&&o.classList.remove("active"),v==null?o=null:o=e.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const f=o;f?(f.classList.add("active"),t.value.style.top=f.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function kt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function _t(e,t,n){ce.length=0;const a=[],o=[];return e.forEach(r=>{const l={...r,children:[]};let v=o[o.length-1];for(;v&&v.level>=l.level;)o.pop(),v=o[o.length-1];if(l.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){o.push({level:l.level,shouldIgnore:!0});return}l.level>n||l.level{const o=W("VPDocOutlineItem",!0);return s(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(s(!0),u(x,null,A(e.headers,({children:r,link:l,title:v})=>(s(),u("li",null,[d("a",{class:"outline-link",href:l,onClick:t,title:v},M(v),9,bt),r!=null&&r.length?(s(),_(o,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),xe=g(gt,[["__scopeId","data-v-3d2c5cd8"]]),$t={class:"content"},yt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Pt=p({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=L(),a=$e([]);Y(()=>{a.value=me(t.value.outline??n.value.outline)});const o=S(),r=S();return pt(o,r),(l,v)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:o},[d("div",$t,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",yt,M(i(Me)(i(n))),1),k(xe,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),Lt=g(Pt,[["__scopeId","data-v-9a976623"]]),Vt={class:"VPDocAsideCarbonAds"},St=p({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,a)=>(s(),u("div",Vt,[k(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Tt={class:"VPDocAside"},Nt=p({__name:"VPDocAside",setup(e){const{theme:t}=L();return(n,a)=>(s(),u("div",Tt,[c(n.$slots,"aside-top",{},void 0,!0),c(n.$slots,"aside-outline-before",{},void 0,!0),k(Lt),c(n.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=d("div",{class:"spacer"},null,-1)),c(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(s(),_(St,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):m("",!0),c(n.$slots,"aside-ads-after",{},void 0,!0),c(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Mt=g(Nt,[["__scopeId","data-v-0508e845"]]);function xt(){const{theme:e,page:t}=L();return y(()=>{const{text:n="Edit this page",pattern:a=""}=e.value.editLink||{};let o;return typeof a=="function"?o=a(t.value):o=a.replace(/:path/g,t.value.filePath),{url:o,text:n}})}function It(){const{page:e,theme:t,frontmatter:n}=L();return y(()=>{var $,V,b,P,T,I,w,C;const a=Ne(t.value.sidebar,e.value.relativePath),o=ct(a),r=wt(o,H=>H.link.replace(/[?#].*$/,"")),l=r.findIndex(H=>z(e.value.relativePath,H.link)),v=(($=t.value.docFooter)==null?void 0:$.prev)===!1&&!n.value.prev||n.value.prev===!1,f=((V=t.value.docFooter)==null?void 0:V.next)===!1&&!n.value.next||n.value.next===!1;return{prev:v?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((b=r[l-1])==null?void 0:b.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((T=r[l-1])==null?void 0:T.link)},next:f?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[l+1])==null?void 0:I.docFooterText)??((w=r[l+1])==null?void 0:w.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((C=r[l+1])==null?void 0:C.link)}}})}function wt(e,t){const n=new Set;return e.filter(a=>{const o=t(a);return n.has(o)?!1:n.add(o)})}const E=p({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.tag??(t.href?"a":"span")),a=y(()=>t.href&&ye.test(t.href)||t.target==="_blank");return(o,r)=>(s(),_(B(n.value),{class:N(["VPLink",{link:e.href,"vp-external-link-icon":a.value,"no-icon":e.noIcon}]),href:e.href?i(he)(e.href):void 0,target:e.target??(a.value?"_blank":void 0),rel:e.rel??(a.value?"noreferrer":void 0)},{default:h(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),At={class:"VPLastUpdated"},Ct=["datetime"],Ht=p({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:a}=L(),o=y(()=>new Date(n.value.lastUpdated)),r=y(()=>o.value.toISOString()),l=S("");return U(()=>{X(()=>{var v,f,$;l.value=new Intl.DateTimeFormat((f=(v=t.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&f.forceLocale?a.value:void 0,(($=t.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(v,f)=>{var $;return s(),u("p",At,[j(M((($=i(t).lastUpdated)==null?void 0:$.text)||i(t).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},M(l.value),9,Ct)])}}}),Bt=g(Ht,[["__scopeId","data-v-2d5eec31"]]),Et={key:0,class:"VPDocFooter"},Ft={key:0,class:"edit-info"},Dt={key:0,class:"edit-link"},Ot={key:1,class:"last-updated"},Gt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ut={class:"pager"},jt=["innerHTML"],zt=["innerHTML"],Wt={class:"pager"},Kt=["innerHTML"],qt=["innerHTML"],Rt=p({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:a}=L(),o=xt(),r=It(),l=y(()=>t.value.editLink&&a.value.editLink!==!1),v=y(()=>n.value.lastUpdated),f=y(()=>l.value||v.value||r.value.prev||r.value.next);return($,V)=>{var b,P,T,I;return f.value?(s(),u("footer",Et,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(s(),u("div",Ft,[l.value?(s(),u("div",Dt,[k(E,{class:"edit-link-button",href:i(o).url,"no-icon":!0},{default:h(()=>[V[0]||(V[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+M(i(o).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(s(),u("div",Ot,[k(Bt)])):m("",!0)])):m("",!0),(b=i(r).prev)!=null&&b.link||(P=i(r).next)!=null&&P.link?(s(),u("nav",Gt,[V[1]||(V[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Ut,[(T=i(r).prev)!=null&&T.link?(s(),_(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.prev)||"Previous page"},null,8,jt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,zt)]}),_:1},8,["href"])):m("",!0)]),d("div",Wt,[(I=i(r).next)!=null&&I.link?(s(),_(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.next)||"Next page"},null,8,Kt),d("span",{class:"title",innerHTML:i(r).next.text},null,8,qt)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),Jt=g(Rt,[["__scopeId","data-v-d25f151f"]]),Xt={class:"container"},Yt={class:"aside-container"},Qt={class:"aside-content"},Zt={class:"content"},en={class:"content-container"},tn={class:"main"},nn=p({__name:"VPDoc",setup(e){const{theme:t}=L(),n=Q(),{hasSidebar:a,hasAside:o,leftAside:r}=D(),l=y(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,f)=>{const $=W("Content");return s(),u("div",{class:N(["VPDoc",{"has-sidebar":i(a),"has-aside":i(o)}])},[c(v.$slots,"doc-top",{},void 0,!0),d("div",Xt,[i(o)?(s(),u("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[f[0]||(f[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Yt,[d("div",Qt,[k(Mt,null,{"aside-top":h(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),d("div",Zt,[d("div",en,[c(v.$slots,"doc-before",{},void 0,!0),d("main",tn,[k($,{class:N(["vp-doc",[l.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Jt,null,{"doc-footer-before":h(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),an=g(nn,[["__scopeId","data-v-660c348c"]]),on=p({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.href&&ye.test(t.href)),a=y(()=>t.tag||(t.href?"a":"button"));return(o,r)=>(s(),_(B(a.value),{class:N(["VPButton",[e.size,e.theme]]),href:e.href?i(he)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[j(M(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),sn=g(on,[["__scopeId","data-v-c957d30d"]]),rn=["src","alt"],ln=p({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const a=W("VPImage",!0);return e.image?(s(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,rn)):(s(),u(x,{key:1},[k(a,G({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),k(a,G({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),J=g(ln,[["__scopeId","data-v-c69324aa"]]),cn={class:"container"},un={class:"main"},dn={class:"heading"},vn=["innerHTML"],fn=["innerHTML"],hn=["innerHTML"],mn={key:0,class:"actions"},pn={key:0,class:"image"},kn={class:"image-container"},_n=p({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=Z("hero-image-slot-exists");return(n,a)=>(s(),u("div",{class:N(["VPHero",{"has-image":e.image||i(t)}])},[d("div",cn,[d("div",un,[c(n.$slots,"home-hero-info-before",{},void 0,!0),c(n.$slots,"home-hero-info",{},()=>[d("h1",dn,[e.name?(s(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,vn)):m("",!0),e.text?(s(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,fn)):m("",!0)]),e.tagline?(s(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,hn)):m("",!0)],!0),c(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(s(),u("div",mn,[(s(!0),u(x,null,A(e.actions,o=>(s(),u("div",{key:o.link,class:"action"},[k(sn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(s(),u("div",pn,[d("div",kn,[a[0]||(a[0]=d("div",{class:"image-bg"},null,-1)),c(n.$slots,"home-hero-image",{},()=>[e.image?(s(),_(J,{key:0,class:"image-src",image:e.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),bn=g(_n,[["__scopeId","data-v-5ac44a4a"]]),gn=p({__name:"VPHomeHero",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).hero?(s(),_(bn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[c(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[c(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[c(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[c(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[c(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),$n={class:"box"},yn={key:0,class:"icon"},Pn=["innerHTML"],Ln=["innerHTML"],Vn=["innerHTML"],Sn={key:4,class:"link-text"},Tn={class:"link-text-value"},Nn=p({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(s(),_(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[d("article",$n,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",yn,[k(J,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),_(J,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Pn)):m("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Ln),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Vn)):m("",!0),e.linkText?(s(),u("div",Sn,[d("p",Tn,[j(M(e.linkText)+" ",1),n[0]||(n[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Mn=g(Nn,[["__scopeId","data-v-d72d51ca"]]),xn={key:0,class:"VPFeatures"},In={class:"container"},wn={class:"items"},An=p({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=y(()=>{const a=t.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,o)=>e.features?(s(),u("div",xn,[d("div",In,[d("div",wn,[(s(!0),u(x,null,A(e.features,r=>(s(),u("div",{key:r.title,class:N(["item",[n.value]])},[k(Mn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),Cn=g(An,[["__scopeId","data-v-12e08f5e"]]),Hn=p({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).features?(s(),_(Cn,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):m("",!0)}}),Bn=p({__name:"VPHomeContent",setup(e){const{width:t}=De({initialWidth:0,includeScrollbar:!1});return(n,a)=>(s(),u("div",{class:"vp-doc container",style:Pe(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[c(n.$slots,"default",{},void 0,!0)],4))}}),En=g(Bn,[["__scopeId","data-v-bcc25c44"]]),Fn=p({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=L();return(a,o)=>{const r=W("Content");return s(),u("div",{class:N(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[c(a.$slots,"home-hero-before",{},void 0,!0),k(gn,null,{"home-hero-info-before":h(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(a.$slots,"home-hero-after",{},void 0,!0),c(a.$slots,"home-features-before",{},void 0,!0),k(Hn),c(a.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(s(),_(En,{key:0},{default:h(()=>[k(r)]),_:1})):(s(),_(r,{key:1}))],2)}}}),Dn=g(Fn,[["__scopeId","data-v-855f107a"]]),On={},Gn={class:"VPPage"};function Un(e,t){const n=W("Content");return s(),u("div",Gn,[c(e.$slots,"page-top"),k(n),c(e.$slots,"page-bottom")])}const jn=g(On,[["render",Un]]),zn=p({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>(s(),u("div",{class:N(["VPContent",{"has-sidebar":i(a),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(rt)],!0):i(n).layout==="page"?(s(),_(jn,{key:1},{"page-top":h(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(s(),_(Dn,{key:2},{"home-hero-before":h(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(s(),_(B(i(n).layout),{key:3})):(s(),_(an,{key:4},{"doc-top":h(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Wn=g(zn,[["__scopeId","data-v-9f0d4acb"]]),Kn={class:"container"},qn=["innerHTML"],Rn=["innerHTML"],Jn=p({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>i(t).footer&&i(n).footer!==!1?(s(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(a)}])},[d("div",Kn,[i(t).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,qn)):m("",!0),i(t).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,Rn)):m("",!0)])],2)):m("",!0)}}),Xn=g(Jn,[["__scopeId","data-v-6d4fdf1e"]]);function Yn(){const{theme:e,frontmatter:t}=L(),n=$e([]),a=y(()=>n.value.length>0);return Y(()=>{n.value=me(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:a}}const Qn={class:"menu-text"},Zn={class:"header"},ea={class:"outline"},ta=p({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=L(),a=S(!1),o=S(0),r=S(),l=S();function v(b){var P;(P=r.value)!=null&&P.contains(b.target)||(a.value=!1)}F(a,b=>{if(b){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),ie("Escape",()=>{a.value=!1}),Y(()=>{a.value=!1});function f(){a.value=!a.value,o.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Le(()=>{a.value=!1}))}function V(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:Pe({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(s(),u("button",{key:0,onClick:f,class:N({open:a.value})},[d("span",Qn,M(i(Me)(i(n))),1),P[0]||(P[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(s(),u("button",{key:1,onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)),k(ue,{name:"flyout"},{default:h(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[d("div",Zn,[d("a",{class:"top-link",href:"#",onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)]),d("div",ea,[k(xe,{headers:e.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),na=g(ta,[["__scopeId","data-v-3ca9f49e"]]),aa={class:"container"},oa=["aria-expanded"],sa={class:"menu-text"},ia=p({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D(),{headers:o}=Yn(),{y:r}=Ve(),l=S(0);U(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{o.value=me(n.value.outline??t.value.outline)});const v=y(()=>o.value.length===0),f=y(()=>v.value&&!a.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:v.value,fixed:f.value}));return(V,b)=>i(n).layout!=="home"&&(!f.value||i(r)>=l.value)?(s(),u("div",{key:0,class:N($.value)},[d("div",aa,[i(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[b[1]||(b[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",sa,M(i(t).sidebarMenuLabel||"Menu"),1)],8,oa)):m("",!0),k(na,{headers:i(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),ra=g(ia,[["__scopeId","data-v-f39a3298"]]);function la(){const e=S(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function a(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const r=Q();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:a}}const ca={},ua={class:"VPSwitch",type:"button",role:"switch"},da={class:"check"},va={key:0,class:"icon"};function fa(e,t){return s(),u("button",ua,[d("span",da,[e.$slots.default?(s(),u("span",va,[c(e.$slots,"default",{},void 0,!0)])):m("",!0)])])}const ha=g(ca,[["render",fa],["__scopeId","data-v-10be344e"]]),ma=p({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=L(),a=Z("toggle-appearance",()=>{t.value=!t.value}),o=S("");return fe(()=>{o.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(s(),_(ha,{title:o.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(a)},{default:h(()=>[...l[0]||(l[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),pe=g(ma,[["__scopeId","data-v-64116ff8"]]),pa={key:0,class:"VPNavBarAppearance"},ka=p({__name:"VPNavBarAppearance",setup(e){const{site:t}=L();return(n,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",pa,[k(pe)])):m("",!0)}}),_a=g(ka,[["__scopeId","data-v-3c27bf39"]]),ke=S();let Ie=!1,oe=0;function ba(e){const t=S(!1);if(ee){!Ie&&ga(),oe++;const n=F(ke,a=>{var o,r,l;a===e.el.value||(o=e.el.value)!=null&&o.contains(a)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});ve(()=>{n(),oe--,oe||$a()})}return Oe(t)}function ga(){document.addEventListener("focusin",we),Ie=!0,ke.value=document.activeElement}function $a(){document.removeEventListener("focusin",we)}function we(){ke.value=document.activeElement}const ya={class:"VPMenuLink"},Pa=["innerHTML"],La=p({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),u("div",ya,[k(E,{class:N({active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Pa)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=g(La,[["__scopeId","data-v-f59d973b"]]),Va={class:"VPMenuGroup"},Sa={key:0,class:"title"},Ta=p({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Va,[e.text?(s(),u("p",Sa,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),u(x,null,["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):m("",!0)],64))),256))]))}}),Na=g(Ta,[["__scopeId","data-v-caeadd89"]]),Ma={class:"VPMenu"},xa={key:0,class:"items"},Ia=p({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(s(),u("div",Ma,[e.items?(s(),u("div",xa,[(s(!0),u(x,null,A(e.items,a=>(s(),u(x,{key:JSON.stringify(a)},["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):"component"in a?(s(),_(B(a.component),G({key:1,ref_for:!0},a.props),null,16)):(s(),_(Na,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):m("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),wa=g(Ia,[["__scopeId","data-v-cd155cfc"]]),Aa=["aria-expanded","aria-label"],Ca={key:0,class:"text"},Ha=["innerHTML"],Ba={key:1,class:"vpi-more-horizontal icon"},Ea={class:"menu"},Fa=p({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=S(!1),n=S();ba({el:n,onBlur:a});function a(){t.value=!1}return(o,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=l=>t.value=!0),onMouseleave:r[2]||(r[2]=l=>t.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=l=>t.value=!t.value)},[e.button||e.icon?(s(),u("span",Ca,[e.icon?(s(),u("span",{key:0,class:N([e.icon,"option-icon"])},null,2)):m("",!0),e.button?(s(),u("span",{key:1,innerHTML:e.button},null,8,Ha)):m("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(s(),u("span",Ba))],8,Aa),d("div",Ea,[k(wa,{items:e.items},{default:h(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=g(Fa,[["__scopeId","data-v-437eb093"]]),Da=["href","aria-label","innerHTML"],Oa=p({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=S();U(async()=>{var r;await Le();const o=(r=n.value)==null?void 0:r.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const a=y(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,r)=>(s(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:a.value},null,8,Da))}}),Ga=g(Oa,[["__scopeId","data-v-4956e2a1"]]),Ua={class:"VPSocialLinks"},ja=p({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(s(),u("div",Ua,[(s(!0),u(x,null,A(e.links,({link:a,icon:o,ariaLabel:r})=>(s(),_(Ga,{key:a,icon:o,link:a,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=g(ja,[["__scopeId","data-v-0148638c"]]),za={key:0,class:"group translations"},Wa={class:"trans-title"},Ka={key:1,class:"group"},qa={class:"item appearance"},Ra={class:"label"},Ja={class:"appearance-action"},Xa={key:2,class:"group"},Ya={class:"item social-links"},Qa=p({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=L(),{localeLinks:a,currentLang:o}=q({correspondingLink:!0}),r=y(()=>a.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(l,v)=>r.value?(s(),_(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(a).length&&i(o).label?(s(),u("div",za,[d("p",Wa,M(i(o).label),1),(s(!0),u(x,null,A(i(a),f=>(s(),_(te,{key:f.link,item:f},null,8,["item"]))),128))])):m("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Ka,[d("div",qa,[d("p",Ra,M(i(n).darkModeSwitchLabel||"Appearance"),1),d("div",Ja,[k(pe)])])])):m("",!0),i(n).socialLinks?(s(),u("div",Xa,[d("div",Ya,[k(be,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),Za=g(Qa,[["__scopeId","data-v-86f141c1"]]),eo=["aria-expanded"],to=p({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(s(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=a=>t.$emit("click"))},[...n[1]||(n[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)])],10,eo))}}),no=g(to,[["__scopeId","data-v-33023aa6"]]),ao=["innerHTML"],oo=p({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),_(E,{class:N({VPNavBarMenuLink:!0,active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,ao)]),_:1},8,["class","href","target","rel","no-icon"]))}}),so=g(oo,[["__scopeId","data-v-dcff3482"]]),io=p({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=L(),a=r=>"component"in r?!1:"link"in r?z(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(a),o=y(()=>a(t.item));return(r,l)=>(s(),_(_e,{class:N({VPNavBarMenuGroup:!0,active:i(z)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||o.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),ro={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},lo=p({__name:"VPNavBarMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",ro,[a[0]||(a[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(so,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props),null,16)):(s(),_(io,{key:2,item:o},null,8,["item"]))],64))),128))])):m("",!0)}}),co=g(lo,[["__scopeId","data-v-eb72f9f7"]]);function uo(e){const{localeIndex:t,theme:n}=L();function a(o){var I,w,C;const r=o.split("."),l=(I=n.value.search)==null?void 0:I.options,v=l&&typeof l=="object",f=v&&((C=(w=l.locales)==null?void 0:w[t.value])==null?void 0:C.translations)||null,$=v&&l.translations||null;let V=f,b=$,P=e;const T=r.pop();for(const H of r){let O=null;const K=P==null?void 0:P[H];K&&(O=P=K);const ne=b==null?void 0:b[H];ne&&(O=b=ne);const ae=V==null?void 0:V[H];ae&&(O=V=ae),K||(P=O),ne||(b=O),ae||(V=O)}return(V==null?void 0:V[T])??(b==null?void 0:b[T])??(P==null?void 0:P[T])??""}return a}const vo=["aria-label"],fo={class:"DocSearch-Button-Container"},ho={class:"DocSearch-Button-Placeholder"},ge=p({__name:"VPNavBarSearchButton",setup(e){const n=uo({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,o)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[d("span",fo,[o[0]||(o[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",ho,M(i(n)("button.buttonText")),1)]),o[1]||(o[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,vo))}}),mo={class:"VPNavBarSearch"},po={id:"local-search"},ko={key:1,id:"docsearch"},_o=p({__name:"VPNavBarSearch",setup(e){const t=Ge(()=>Ue(()=>import("./VPLocalSearchBox.D6j45Eya.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:a}=L(),o=S(!1),r=S(!1);U(()=>{});function l(){o.value||(o.value=!0,setTimeout(v,16))}function v(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function f(b){const P=b.target,T=P.tagName;return P.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const $=S(!1);ie("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),ie("/",b=>{f(b)||(b.preventDefault(),$.value=!0)});const V="local";return(b,P)=>{var T;return s(),u("div",mo,[i(V)==="local"?(s(),u(x,{key:0},[$.value?(s(),_(i(t),{key:0,onClose:P[0]||(P[0]=I=>$.value=!1)})):m("",!0),d("div",po,[k(ge,{onClick:P[1]||(P[1]=I=>$.value=!0)})])],64)):i(V)==="algolia"?(s(),u(x,{key:1},[o.value?(s(),_(i(n),{key:0,algolia:((T=i(a).search)==null?void 0:T.options)??i(a).algolia,onVnodeBeforeMount:P[2]||(P[2]=I=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(s(),u("div",ko,[k(ge,{onClick:l})]))],64)):m("",!0)])}}}),bo=p({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),go=g(bo,[["__scopeId","data-v-b674b0d9"]]),$o=["href","rel","target"],yo=["innerHTML"],Po={key:2},Lo=p({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=L(),{hasSidebar:a}=D(),{currentLang:o}=q(),r=y(()=>{var f;return typeof n.value.logoLink=="string"?n.value.logoLink:(f=n.value.logoLink)==null?void 0:f.link}),l=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.rel}),v=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.target});return(f,$)=>(s(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(a)}])},[d("a",{class:"title",href:r.value??i(he)(i(o).link),rel:l.value,target:v.value},[c(f.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(s(),_(J,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):m("",!0),i(n).siteTitle?(s(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,yo)):i(n).siteTitle===void 0?(s(),u("span",Po,M(i(t).title),1)):m("",!0),c(f.$slots,"nav-bar-title-after",{},void 0,!0)],8,$o)],2))}}),Vo=g(Lo,[["__scopeId","data-v-77b887c2"]]),So={class:"items"},To={class:"title"},No=p({__name:"VPNavBarTranslations",setup(e){const{theme:t}=L(),{localeLinks:n,currentLang:a}=q({correspondingLink:!0});return(o,r)=>i(n).length&&i(a).label?(s(),_(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[d("div",So,[d("p",To,M(i(a).label),1),(s(!0),u(x,null,A(i(n),l=>(s(),_(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Mo=g(No,[["__scopeId","data-v-d3f6c3ed"]]),xo={class:"wrapper"},Io={class:"container"},wo={class:"title"},Ao={class:"content"},Co={class:"content-body"},Ho=p({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=Ve(),{hasSidebar:a}=D(),{frontmatter:o}=L(),r=S({});return fe(()=>{r.value={"has-sidebar":a.value,home:o.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(l,v)=>(s(),u("div",{class:N(["VPNavBar",r.value])},[d("div",xo,[d("div",Io,[d("div",wo,[k(Vo,null,{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Ao,[d("div",Co,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(_o,{class:"search"}),k(co,{class:"menu"}),k(Mo,{class:"translations"}),k(_a,{class:"appearance"}),k(go,{class:"social-links"}),k(Za,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(no,{class:"hamburger",active:e.isScreenOpen,onClick:v[0]||(v[0]=f=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Bo=g(Ho,[["__scopeId","data-v-59b07c45"]]),Eo={key:0,class:"VPNavScreenAppearance"},Fo={class:"text"},Do=p({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=L();return(a,o)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Eo,[d("p",Fo,M(i(n).darkModeSwitchLabel||"Appearance"),1),k(pe)])):m("",!0)}}),Oo=g(Do,[["__scopeId","data-v-77e37dd8"]]),Go=["innerHTML"],Uo=p({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Go)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),jo=g(Uo,[["__scopeId","data-v-6680c343"]]),zo=["innerHTML"],Wo=p({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,zo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ae=g(Wo,[["__scopeId","data-v-bcef7725"]]),Ko={class:"VPNavScreenMenuGroupSection"},qo={key:0,class:"title"},Ro=p({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Ko,[e.text?(s(),u("p",qo,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),_(Ae,{key:a.text,item:a},null,8,["item"]))),128))]))}}),Jo=g(Ro,[["__scopeId","data-v-f6adf3a2"]]),Xo=["aria-controls","aria-expanded"],Yo=["innerHTML"],Qo=["id"],Zo={key:0,class:"item"},es={key:1,class:"item"},ts={key:2,class:"group"},ns=p({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=S(!1),a=y(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(r,l)=>(s(),u("div",{class:N(["VPNavScreenMenuGroup",{open:n.value}])},[d("button",{class:"button","aria-controls":a.value,"aria-expanded":n.value,onClick:o},[d("span",{class:"button-text",innerHTML:e.text},null,8,Yo),l[0]||(l[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,Xo),d("div",{id:a.value,class:"items"},[(s(!0),u(x,null,A(e.items,v=>(s(),u(x,{key:JSON.stringify(v)},["link"in v?(s(),u("div",Zo,[k(Ae,{item:v},null,8,["item"])])):"component"in v?(s(),u("div",es,[(s(),_(B(v.component),G({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(s(),u("div",ts,[k(Jo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Qo)],2))}}),as=g(ns,[["__scopeId","data-v-2989dfaf"]]),os={key:0,class:"VPNavScreenMenu"},ss=p({__name:"VPNavScreenMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",os,[(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(jo,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(s(),_(as,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),is=p({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),rs={class:"list"},ls=p({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=q({correspondingLink:!0}),a=S(!1);function o(){a.value=!a.value}return(r,l)=>i(t).length&&i(n).label?(s(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:a.value}])},[d("button",{class:"title",onClick:o},[l[0]||(l[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+M(i(n).label)+" ",1),l[1]||(l[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",rs,[(s(!0),u(x,null,A(i(t),v=>(s(),u("li",{key:v.link,class:"item"},[k(E,{class:"link",href:v.link},{default:h(()=>[j(M(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),cs=g(ls,[["__scopeId","data-v-4742671a"]]),us={class:"container"},ds=p({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=S(null),n=Se(ee?document.body:null);return(a,o)=>(s(),_(ue,{name:"fade",onEnter:o[0]||(o[0]=r=>n.value=!0),onAfterLeave:o[1]||(o[1]=r=>n.value=!1)},{default:h(()=>[e.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[d("div",us,[c(a.$slots,"nav-screen-content-before",{},void 0,!0),k(ss,{class:"menu"}),k(cs,{class:"translations"}),k(Oo,{class:"appearance"}),k(is,{class:"social-links"}),c(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),vs=g(ds,[["__scopeId","data-v-e824f21d"]]),fs={key:0,class:"VPNav"},hs=p({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:a}=la(),{frontmatter:o}=L(),r=y(()=>o.value.navbar!==!1);return Te("close-screen",n),X(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,v)=>r.value?(s(),u("header",fs,[k(Bo,{"is-screen-open":i(t),onToggleScreen:i(a)},{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(vs,{open:i(t)},{"nav-screen-content-before":h(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),ms=g(hs,[["__scopeId","data-v-ae3b4e71"]]),ps=["role","tabindex"],ks={key:1,class:"items"},_s=p({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:a,isLink:o,isActiveLink:r,hasActiveLink:l,hasChildren:v,toggle:f}=dt(y(()=>t.item)),$=y(()=>v.value?"section":"div"),V=y(()=>o.value?"a":"div"),b=y(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),T=y(()=>[[`level-${t.depth}`],{collapsible:a.value},{collapsed:n.value},{"is-link":o.value},{"is-active":r.value},{"has-active":l.value}]);function I(C){"key"in C&&C.key!=="Enter"||!t.item.link&&f()}function w(){t.item.link&&f()}return(C,H)=>{const O=W("VPSidebarItem",!0);return s(),_(B($.value),{class:N(["VPSidebarItem",T.value])},{default:h(()=>[e.item.text?(s(),u("div",G({key:0,class:"item",role:P.value},je(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[H[1]||(H[1]=d("div",{class:"indicator"},null,-1)),e.item.link?(s(),_(E,{key:0,tag:V.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(s(),_(B(b.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),_(B(b.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:w,onKeydown:ze(w,["enter"]),tabindex:"0"},[...H[0]||(H[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):m("",!0)],16,ps)):m("",!0),e.item.items&&e.item.items.length?(s(),u("div",ks,[e.depth<5?(s(!0),u(x,{key:0},A(e.item.items,K=>(s(),_(O,{key:K.text,item:K,depth:e.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),bs=g(_s,[["__scopeId","data-v-51c3a27f"]]),gs=p({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=S(!0);let n=null;return U(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),We(()=>{n!=null&&(clearTimeout(n),n=null)}),(a,o)=>(s(!0),u(x,null,A(e.items,r=>(s(),u("div",{key:r.text,class:N(["group",{"no-transition":t.value}])},[k(bs,{item:r,depth:0},null,8,["item"])],2))),128))}}),$s=g(gs,[["__scopeId","data-v-bb61ce6c"]]),ys={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ps=p({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=D(),a=e,o=S(null),r=Se(ee?document.body:null);F([a,o],()=>{var v;a.open?(r.value=!0,(v=o.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=S(0);return F(t,()=>{l.value+=1},{deep:!0}),(v,f)=>i(n)?(s(),u("aside",{key:0,class:N(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:o,onClick:f[0]||(f[0]=Ke(()=>{},["stop"]))},[f[2]||(f[2]=d("div",{class:"curtain"},null,-1)),d("nav",ys,[f[1]||(f[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(v.$slots,"sidebar-nav-before",{},void 0,!0),(s(),_($s,{items:i(t),key:l.value},null,8,["items"])),c(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),Ls=g(Ps,[["__scopeId","data-v-450ac41d"]]),Vs=p({__name:"VPSkipLink",setup(e){const{theme:t}=L(),n=Q(),a=S();F(()=>n.path,()=>a.value.focus());function o({target:r}){const l=document.getElementById(decodeURIComponent(r.hash).slice(1));if(l){const v=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",v)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",v),l.focus(),window.scrollTo(0,0)}}return(r,l)=>(s(),u(x,null,[d("span",{ref_key:"backToTop",ref:a,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},M(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),Ss=g(Vs,[["__scopeId","data-v-20ff5aae"]]),Ts=p({__name:"Layout",setup(e){const{isOpen:t,open:n,close:a}=D(),o=Q();F(()=>o.path,a),ut(t,a);const{frontmatter:r}=L(),l=qe(),v=y(()=>!!l["home-hero-image"]);return Te("hero-image-slot-exists",v),(f,$)=>{const V=W("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:N(["Layout",i(r).pageClass])},[c(f.$slots,"layout-top",{},void 0,!0),k(Ss),k(Ye,{class:"backdrop",show:i(t),onClick:i(a)},null,8,["show","onClick"]),k(ms,null,{"nav-bar-title-before":h(()=>[c(f.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(f.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(f.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(f.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[c(f.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(f.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ra,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),k(Ls,{open:i(t)},{"sidebar-nav-before":h(()=>[c(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[c(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Wn,null,{"page-top":h(()=>[c(f.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(f.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[c(f.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[c(f.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(f.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(f.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(f.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(f.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(f.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(f.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(f.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(f.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(f.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(f.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[c(f.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(f.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(Xn),c(f.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),_(V,{key:1}))}}}),Ns=g(Ts,[["__scopeId","data-v-c2d1c289"]]),xs={Layout:Ns,enhanceApp:({app:e})=>{e.component("Badge",Re)}};export{uo as c,xs as t,L as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.rtQYeFEO.js","assets/chunks/framework.DXGyWiRo.js"])))=>i.map(i=>d[i]); +import{d as p,c as u,r as c,n as N,o as s,a as j,t as M,b as _,w as h,T as ue,e as m,_ as g,u as Ce,i as He,f as Be,g as de,h as y,j as d,k as i,l as z,m as se,p as S,q as F,s as X,v as U,x as ve,y as fe,z as Ee,A as Fe,F as x,B as A,C as W,D as Y,E as k,G as $e,H as B,I as ye,J as Q,K as G,L as Z,M as De,N as Pe,O as ie,P as Le,Q as Ve,R as ee,S as Oe,U as Ge,V as Ue,W as Se,X as Te,Y as je,Z as ze,$ as We,a0 as Ke,a1 as qe}from"./framework.DXGyWiRo.js";const Re=p({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(s(),u("span",{class:N(["VPBadge",e.type])},[c(t.$slots,"default",{},()=>[j(M(e.text),1)])],2))}}),Je={key:0,class:"VPBackdrop"},Xe=p({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(s(),_(ue,{name:"fade"},{default:h(()=>[e.show?(s(),u("div",Je)):m("",!0)]),_:1}))}}),Ye=g(Xe,[["__scopeId","data-v-e7a48126"]]),L=Ce;function Qe(e,t){let n,a=!1;return()=>{n&&clearTimeout(n),a?n=setTimeout(e,t):(e(),(a=!0)&&setTimeout(()=>a=!1,t))}}function re(e){return e.startsWith("/")?e:`/${e}`}function he(e){const{pathname:t,search:n,hash:a,protocol:o}=new URL(e,"http://a.com");if(He(e)||e.startsWith("#")||!o.startsWith("http")||!Be(t))return e;const{site:r}=L(),l=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${n}${a}`);return de(l)}function q({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:a,theme:o,hash:r}=L(),l=y(()=>{var f,$;return{label:(f=t.value.locales[n.value])==null?void 0:f.label,link:(($=t.value.locales[n.value])==null?void 0:$.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([f,$])=>l.value.label===$.label?[]:{text:$.label,link:Ze($.link||(f==="root"?"/":`/${f}/`),o.value.i18nRouting!==!1&&e,a.value.relativePath.slice(l.value.link.length-1),!t.value.cleanUrls)+r.value})),currentLang:l}}function Ze(e,t,n,a){return t?e.replace(/\/$/,"")+re(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,a?".html":"")):e}const et={class:"NotFound"},tt={class:"code"},nt={class:"title"},at={class:"quote"},ot={class:"action"},st=["href","aria-label"],it=p({__name:"NotFound",setup(e){const{theme:t}=L(),{currentLang:n}=q();return(a,o)=>{var r,l,v,f,$;return s(),u("div",et,[d("p",tt,M(((r=i(t).notFound)==null?void 0:r.code)??"404"),1),d("h1",nt,M(((l=i(t).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),o[0]||(o[0]=d("div",{class:"divider"},null,-1)),d("blockquote",at,M(((v=i(t).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ot,[d("a",{class:"link",href:i(de)(i(n).link),"aria-label":((f=i(t).notFound)==null?void 0:f.linkLabel)??"go to home"},M((($=i(t).notFound)==null?void 0:$.linkText)??"Take me home"),9,st)])])}}}),rt=g(it,[["__scopeId","data-v-98bc8507"]]);function Ne(e,t){if(Array.isArray(e))return R(e);if(e==null)return[];t=re(t);const n=Object.keys(e).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>t.startsWith(re(o))),a=n?e[n]:[];return Array.isArray(a)?R(a):R(a.items,a.base)}function lt(e){const t=[];let n=0;for(const a in e){const o=e[a];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function ct(e){const t=[];function n(a){for(const o of a)o.text&&o.link&&t.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&n(o.items)}return n(e),t}function le(e,t){return Array.isArray(t)?t.some(n=>le(e,n)):z(e,t.link)?!0:t.items?le(e,t.items):!1}function R(e,t){return[...e].map(n=>{const a={...n},o=a.base||t;return o&&a.link&&(a.link=o+a.link),a.items&&(a.items=R(a.items,o)),a})}function D(){const{frontmatter:e,page:t,theme:n}=L(),a=se("(min-width: 960px)"),o=S(!1),r=y(()=>{const w=n.value.sidebar,C=t.value.relativePath;return w?Ne(w,C):[]}),l=S(r.value);F(r,(w,C)=>{JSON.stringify(w)!==JSON.stringify(C)&&(l.value=r.value)});const v=y(()=>e.value.sidebar!==!1&&l.value.length>0&&e.value.layout!=="home"),f=y(()=>$?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),$=y(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),V=y(()=>v.value&&a.value),b=y(()=>v.value?lt(l.value):[]);function P(){o.value=!0}function T(){o.value=!1}function I(){o.value?T():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:v,hasAside:$,leftAside:f,isSidebarEnabled:V,open:P,close:T,toggle:I}}function ut(e,t){let n;X(()=>{n=e.value?document.activeElement:void 0}),U(()=>{window.addEventListener("keyup",a)}),ve(()=>{window.removeEventListener("keyup",a)});function a(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function dt(e){const{page:t,hash:n}=L(),a=S(!1),o=y(()=>e.value.collapsed!=null),r=y(()=>!!e.value.link),l=S(!1),v=()=>{l.value=z(t.value.relativePath,e.value.link)};F([t,e,n],v),U(v);const f=y(()=>l.value?!0:e.value.items?le(t.value.relativePath,e.value.items):!1),$=y(()=>!!(e.value.items&&e.value.items.length));X(()=>{a.value=!!(o.value&&e.value.collapsed)}),fe(()=>{(l.value||f.value)&&(a.value=!1)});function V(){o.value&&(a.value=!a.value)}return{collapsed:a,collapsible:o,isLink:r,isActiveLink:l,hasActiveLink:f,hasChildren:$,toggle:V}}function vt(){const{hasSidebar:e}=D(),t=se("(min-width: 960px)"),n=se("(min-width: 1280px)");return{isAsideEnabled:y(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const ft=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,ce=[];function Me(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function me(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const a=Number(n.tagName[1]);return{element:n,title:ht(n),link:"#"+n.id,level:a}});return mt(t,e)}function ht(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(ft.test(n.className))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function mt(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[a,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return _t(e,a,o)}function pt(e,t){const{isAsideEnabled:n}=vt(),a=Qe(r,100);let o=null;U(()=>{requestAnimationFrame(r),window.addEventListener("scroll",a)}),Ee(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",a)});function r(){if(!n.value)return;const v=window.scrollY,f=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(v+f-$)<1,b=ce.map(({element:T,link:I})=>({link:I,top:kt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,I)=>T.top-I.top);if(!b.length){l(null);return}if(v<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:T,top:I}of b){if(I>v+Fe()+4)break;P=T}l(P)}function l(v){o&&o.classList.remove("active"),v==null?o=null:o=e.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const f=o;f?(f.classList.add("active"),t.value.style.top=f.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function kt(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}function _t(e,t,n){ce.length=0;const a=[],o=[];return e.forEach(r=>{const l={...r,children:[]};let v=o[o.length-1];for(;v&&v.level>=l.level;)o.pop(),v=o[o.length-1];if(l.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){o.push({level:l.level,shouldIgnore:!0});return}l.level>n||l.level{const o=W("VPDocOutlineItem",!0);return s(),u("ul",{class:N(["VPDocOutlineItem",e.root?"root":"nested"])},[(s(!0),u(x,null,A(e.headers,({children:r,link:l,title:v})=>(s(),u("li",null,[d("a",{class:"outline-link",href:l,onClick:t,title:v},M(v),9,bt),r!=null&&r.length?(s(),_(o,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),xe=g(gt,[["__scopeId","data-v-ba57d2ed"]]),$t={class:"content"},yt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Pt=p({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=L(),a=$e([]);Y(()=>{a.value=me(t.value.outline??n.value.outline)});const o=S(),r=S();return pt(o,r),(l,v)=>(s(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":a.value.length>0}]),ref_key:"container",ref:o},[d("div",$t,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",yt,M(i(Me)(i(n))),1),k(xe,{headers:a.value,root:!0},null,8,["headers"])])],2))}}),Lt=g(Pt,[["__scopeId","data-v-116d4a1f"]]),Vt={class:"VPDocAsideCarbonAds"},St=p({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,a)=>(s(),u("div",Vt,[k(i(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Tt={class:"VPDocAside"},Nt=p({__name:"VPDocAside",setup(e){const{theme:t}=L();return(n,a)=>(s(),u("div",Tt,[c(n.$slots,"aside-top",{},void 0,!0),c(n.$slots,"aside-outline-before",{},void 0,!0),k(Lt),c(n.$slots,"aside-outline-after",{},void 0,!0),a[0]||(a[0]=d("div",{class:"spacer"},null,-1)),c(n.$slots,"aside-ads-before",{},void 0,!0),i(t).carbonAds?(s(),_(St,{key:0,"carbon-ads":i(t).carbonAds},null,8,["carbon-ads"])):m("",!0),c(n.$slots,"aside-ads-after",{},void 0,!0),c(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Mt=g(Nt,[["__scopeId","data-v-8cfe0409"]]);function xt(){const{theme:e,page:t}=L();return y(()=>{const{text:n="Edit this page",pattern:a=""}=e.value.editLink||{};let o;return typeof a=="function"?o=a(t.value):o=a.replace(/:path/g,t.value.filePath),{url:o,text:n}})}function It(){const{page:e,theme:t,frontmatter:n}=L();return y(()=>{var $,V,b,P,T,I,w,C;const a=Ne(t.value.sidebar,e.value.relativePath),o=ct(a),r=wt(o,H=>H.link.replace(/[?#].*$/,"")),l=r.findIndex(H=>z(e.value.relativePath,H.link)),v=(($=t.value.docFooter)==null?void 0:$.prev)===!1&&!n.value.prev||n.value.prev===!1,f=((V=t.value.docFooter)==null?void 0:V.next)===!1&&!n.value.next||n.value.next===!1;return{prev:v?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((b=r[l-1])==null?void 0:b.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((T=r[l-1])==null?void 0:T.link)},next:f?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((I=r[l+1])==null?void 0:I.docFooterText)??((w=r[l+1])==null?void 0:w.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((C=r[l+1])==null?void 0:C.link)}}})}function wt(e,t){const n=new Set;return e.filter(a=>{const o=t(a);return n.has(o)?!1:n.add(o)})}const E=p({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.tag??(t.href?"a":"span")),a=y(()=>t.href&&ye.test(t.href)||t.target==="_blank");return(o,r)=>(s(),_(B(n.value),{class:N(["VPLink",{link:e.href,"vp-external-link-icon":a.value,"no-icon":e.noIcon}]),href:e.href?i(he)(e.href):void 0,target:e.target??(a.value?"_blank":void 0),rel:e.rel??(a.value?"noreferrer":void 0)},{default:h(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),At={class:"VPLastUpdated"},Ct=["datetime"],Ht=p({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:a}=L(),o=y(()=>new Date(n.value.lastUpdated)),r=y(()=>o.value.toISOString()),l=S("");return U(()=>{X(()=>{var v,f,$;l.value=new Intl.DateTimeFormat((f=(v=t.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&f.forceLocale?a.value:void 0,(($=t.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(v,f)=>{var $;return s(),u("p",At,[j(M((($=i(t).lastUpdated)==null?void 0:$.text)||i(t).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},M(l.value),9,Ct)])}}}),Bt=g(Ht,[["__scopeId","data-v-1cbf3ee4"]]),Et={key:0,class:"VPDocFooter"},Ft={key:0,class:"edit-info"},Dt={key:0,class:"edit-link"},Ot={key:1,class:"last-updated"},Gt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Ut={class:"pager"},jt=["innerHTML"],zt=["innerHTML"],Wt={class:"pager"},Kt=["innerHTML"],qt=["innerHTML"],Rt=p({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:a}=L(),o=xt(),r=It(),l=y(()=>t.value.editLink&&a.value.editLink!==!1),v=y(()=>n.value.lastUpdated),f=y(()=>l.value||v.value||r.value.prev||r.value.next);return($,V)=>{var b,P,T,I;return f.value?(s(),u("footer",Et,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(s(),u("div",Ft,[l.value?(s(),u("div",Dt,[k(E,{class:"edit-link-button",href:i(o).url,"no-icon":!0},{default:h(()=>[V[0]||(V[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+M(i(o).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(s(),u("div",Ot,[k(Bt)])):m("",!0)])):m("",!0),(b=i(r).prev)!=null&&b.link||(P=i(r).next)!=null&&P.link?(s(),u("nav",Gt,[V[1]||(V[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Ut,[(T=i(r).prev)!=null&&T.link?(s(),_(E,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.prev)||"Previous page"},null,8,jt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,zt)]}),_:1},8,["href"])):m("",!0)]),d("div",Wt,[(I=i(r).next)!=null&&I.link?(s(),_(E,{key:0,class:"pager-link next",href:i(r).next.link},{default:h(()=>{var w;return[d("span",{class:"desc",innerHTML:((w=i(t).docFooter)==null?void 0:w.next)||"Next page"},null,8,Kt),d("span",{class:"title",innerHTML:i(r).next.text},null,8,qt)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),Jt=g(Rt,[["__scopeId","data-v-64297f89"]]),Xt={class:"container"},Yt={class:"aside-container"},Qt={class:"aside-content"},Zt={class:"content"},en={class:"content-container"},tn={class:"main"},nn=p({__name:"VPDoc",setup(e){const{theme:t}=L(),n=Q(),{hasSidebar:a,hasAside:o,leftAside:r}=D(),l=y(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,f)=>{const $=W("Content");return s(),u("div",{class:N(["VPDoc",{"has-sidebar":i(a),"has-aside":i(o)}])},[c(v.$slots,"doc-top",{},void 0,!0),d("div",Xt,[i(o)?(s(),u("div",{key:0,class:N(["aside",{"left-aside":i(r)}])},[f[0]||(f[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",Yt,[d("div",Qt,[k(Mt,null,{"aside-top":h(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),d("div",Zt,[d("div",en,[c(v.$slots,"doc-before",{},void 0,!0),d("main",tn,[k($,{class:N(["vp-doc",[l.value,i(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(Jt,null,{"doc-footer-before":h(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(v.$slots,"doc-after",{},void 0,!0)])])]),c(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),an=g(nn,[["__scopeId","data-v-888acc39"]]),on=p({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=y(()=>t.href&&ye.test(t.href)),a=y(()=>t.tag||(t.href?"a":"button"));return(o,r)=>(s(),_(B(a.value),{class:N(["VPButton",[e.size,e.theme]]),href:e.href?i(he)(e.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[j(M(e.text),1)]),_:1},8,["class","href","target","rel"]))}}),sn=g(on,[["__scopeId","data-v-6cd5edd1"]]),rn=["src","alt"],ln=p({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const a=W("VPImage",!0);return e.image?(s(),u(x,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:i(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,rn)):(s(),u(x,{key:1},[k(a,G({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),k(a,G({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),J=g(ln,[["__scopeId","data-v-21b99582"]]),cn={class:"container"},un={class:"main"},dn={class:"heading"},vn=["innerHTML"],fn=["innerHTML"],hn=["innerHTML"],mn={key:0,class:"actions"},pn={key:0,class:"image"},kn={class:"image-container"},_n=p({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=Z("hero-image-slot-exists");return(n,a)=>(s(),u("div",{class:N(["VPHero",{"has-image":e.image||i(t)}])},[d("div",cn,[d("div",un,[c(n.$slots,"home-hero-info-before",{},void 0,!0),c(n.$slots,"home-hero-info",{},()=>[d("h1",dn,[e.name?(s(),u("span",{key:0,innerHTML:e.name,class:"name clip"},null,8,vn)):m("",!0),e.text?(s(),u("span",{key:1,innerHTML:e.text,class:"text"},null,8,fn)):m("",!0)]),e.tagline?(s(),u("p",{key:0,innerHTML:e.tagline,class:"tagline"},null,8,hn)):m("",!0)],!0),c(n.$slots,"home-hero-info-after",{},void 0,!0),e.actions?(s(),u("div",mn,[(s(!0),u(x,null,A(e.actions,o=>(s(),u("div",{key:o.link,class:"action"},[k(sn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),e.image||i(t)?(s(),u("div",pn,[d("div",kn,[a[0]||(a[0]=d("div",{class:"image-bg"},null,-1)),c(n.$slots,"home-hero-image",{},()=>[e.image?(s(),_(J,{key:0,class:"image-src",image:e.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),bn=g(_n,[["__scopeId","data-v-86f5077c"]]),gn=p({__name:"VPHomeHero",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).hero?(s(),_(bn,{key:0,class:"VPHomeHero",name:i(t).hero.name,text:i(t).hero.text,tagline:i(t).hero.tagline,image:i(t).hero.image,actions:i(t).hero.actions},{"home-hero-info-before":h(()=>[c(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[c(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[c(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[c(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[c(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),$n={class:"box"},yn={key:0,class:"icon"},Pn=["innerHTML"],Ln=["innerHTML"],Vn=["innerHTML"],Sn={key:4,class:"link-text"},Tn={class:"link-text-value"},Nn=p({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(s(),_(E,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[d("article",$n,[typeof e.icon=="object"&&e.icon.wrap?(s(),u("div",yn,[k(J,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),_(J,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Pn)):m("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Ln),e.details?(s(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Vn)):m("",!0),e.linkText?(s(),u("div",Sn,[d("p",Tn,[j(M(e.linkText)+" ",1),n[0]||(n[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Mn=g(Nn,[["__scopeId","data-v-43c03651"]]),xn={key:0,class:"VPFeatures"},In={class:"container"},wn={class:"items"},An=p({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=y(()=>{const a=t.features.length;if(a){if(a===2)return"grid-2";if(a===3)return"grid-3";if(a%3===0)return"grid-6";if(a>3)return"grid-4"}else return});return(a,o)=>e.features?(s(),u("div",xn,[d("div",In,[d("div",wn,[(s(!0),u(x,null,A(e.features,r=>(s(),u("div",{key:r.title,class:N(["item",[n.value]])},[k(Mn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):m("",!0)}}),Cn=g(An,[["__scopeId","data-v-f8bfa93d"]]),Hn=p({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=L();return(n,a)=>i(t).features?(s(),_(Cn,{key:0,class:"VPHomeFeatures",features:i(t).features},null,8,["features"])):m("",!0)}}),Bn=p({__name:"VPHomeContent",setup(e){const{width:t}=De({initialWidth:0,includeScrollbar:!1});return(n,a)=>(s(),u("div",{class:"vp-doc container",style:Pe(i(t)?{"--vp-offset":`calc(50% - ${i(t)/2}px)`}:{})},[c(n.$slots,"default",{},void 0,!0)],4))}}),En=g(Bn,[["__scopeId","data-v-0611f689"]]),Fn=p({__name:"VPHome",setup(e){const{frontmatter:t,theme:n}=L();return(a,o)=>{const r=W("Content");return s(),u("div",{class:N(["VPHome",{"external-link-icon-enabled":i(n).externalLinkIcon}])},[c(a.$slots,"home-hero-before",{},void 0,!0),k(gn,null,{"home-hero-info-before":h(()=>[c(a.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(a.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(a.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(a.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(a.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(a.$slots,"home-hero-after",{},void 0,!0),c(a.$slots,"home-features-before",{},void 0,!0),k(Hn),c(a.$slots,"home-features-after",{},void 0,!0),i(t).markdownStyles!==!1?(s(),_(En,{key:0},{default:h(()=>[k(r)]),_:1})):(s(),_(r,{key:1}))],2)}}}),Dn=g(Fn,[["__scopeId","data-v-d7a0f279"]]),On={},Gn={class:"VPPage"};function Un(e,t){const n=W("Content");return s(),u("div",Gn,[c(e.$slots,"page-top"),k(n),c(e.$slots,"page-bottom")])}const jn=g(On,[["render",Un]]),zn=p({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>(s(),u("div",{class:N(["VPContent",{"has-sidebar":i(a),"is-home":i(n).layout==="home"}]),id:"VPContent"},[i(t).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(rt)],!0):i(n).layout==="page"?(s(),_(jn,{key:1},{"page-top":h(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(n).layout==="home"?(s(),_(Dn,{key:2},{"home-hero-before":h(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(n).layout&&i(n).layout!=="doc"?(s(),_(B(i(n).layout),{key:3})):(s(),_(an,{key:4},{"doc-top":h(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Wn=g(zn,[["__scopeId","data-v-6c992f05"]]),Kn={class:"container"},qn=["innerHTML"],Rn=["innerHTML"],Jn=p({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D();return(o,r)=>i(t).footer&&i(n).footer!==!1?(s(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":i(a)}])},[d("div",Kn,[i(t).footer.message?(s(),u("p",{key:0,class:"message",innerHTML:i(t).footer.message},null,8,qn)):m("",!0),i(t).footer.copyright?(s(),u("p",{key:1,class:"copyright",innerHTML:i(t).footer.copyright},null,8,Rn)):m("",!0)])],2)):m("",!0)}}),Xn=g(Jn,[["__scopeId","data-v-137d0c52"]]);function Yn(){const{theme:e,frontmatter:t}=L(),n=$e([]),a=y(()=>n.value.length>0);return Y(()=>{n.value=me(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:a}}const Qn={class:"menu-text"},Zn={class:"header"},ea={class:"outline"},ta=p({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=L(),a=S(!1),o=S(0),r=S(),l=S();function v(b){var P;(P=r.value)!=null&&P.contains(b.target)||(a.value=!1)}F(a,b=>{if(b){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),ie("Escape",()=>{a.value=!1}),Y(()=>{a.value=!1});function f(){a.value=!a.value,o.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Le(()=>{a.value=!1}))}function V(){a.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(s(),u("div",{class:"VPLocalNavOutlineDropdown",style:Pe({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[e.headers.length>0?(s(),u("button",{key:0,onClick:f,class:N({open:a.value})},[d("span",Qn,M(i(Me)(i(n))),1),P[0]||(P[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(s(),u("button",{key:1,onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)),k(ue,{name:"flyout"},{default:h(()=>[a.value?(s(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[d("div",Zn,[d("a",{class:"top-link",href:"#",onClick:V},M(i(n).returnToTopLabel||"Return to top"),1)]),d("div",ea,[k(xe,{headers:e.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),na=g(ta,[["__scopeId","data-v-d1ffc3c0"]]),aa={class:"container"},oa=["aria-expanded"],sa={class:"menu-text"},ia=p({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=L(),{hasSidebar:a}=D(),{headers:o}=Yn(),{y:r}=Ve(),l=S(0);U(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{o.value=me(n.value.outline??t.value.outline)});const v=y(()=>o.value.length===0),f=y(()=>v.value&&!a.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":a.value,empty:v.value,fixed:f.value}));return(V,b)=>i(n).layout!=="home"&&(!f.value||i(r)>=l.value)?(s(),u("div",{key:0,class:N($.value)},[d("div",aa,[i(a)?(s(),u("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[b[1]||(b[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",sa,M(i(t).sidebarMenuLabel||"Menu"),1)],8,oa)):m("",!0),k(na,{headers:i(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),ra=g(ia,[["__scopeId","data-v-b2c93339"]]);function la(){const e=S(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function a(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const r=Q();return F(()=>r.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:a}}const ca={},ua={class:"VPSwitch",type:"button",role:"switch"},da={class:"check"},va={key:0,class:"icon"};function fa(e,t){return s(),u("button",ua,[d("span",da,[e.$slots.default?(s(),u("span",va,[c(e.$slots,"default",{},void 0,!0)])):m("",!0)])])}const ha=g(ca,[["render",fa],["__scopeId","data-v-65cb479b"]]),ma=p({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=L(),a=Z("toggle-appearance",()=>{t.value=!t.value}),o=S("");return fe(()=>{o.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(s(),_(ha,{title:o.value,class:"VPSwitchAppearance","aria-checked":i(t),onClick:i(a)},{default:h(()=>[...l[0]||(l[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])]),_:1},8,["title","aria-checked","onClick"]))}}),pe=g(ma,[["__scopeId","data-v-95390f3d"]]),pa={key:0,class:"VPNavBarAppearance"},ka=p({__name:"VPNavBarAppearance",setup(e){const{site:t}=L();return(n,a)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",pa,[k(pe)])):m("",!0)}}),_a=g(ka,[["__scopeId","data-v-c2b7fe22"]]),ke=S();let Ie=!1,oe=0;function ba(e){const t=S(!1);if(ee){!Ie&&ga(),oe++;const n=F(ke,a=>{var o,r,l;a===e.el.value||(o=e.el.value)!=null&&o.contains(a)?(t.value=!0,(r=e.onFocus)==null||r.call(e)):(t.value=!1,(l=e.onBlur)==null||l.call(e))});ve(()=>{n(),oe--,oe||$a()})}return Oe(t)}function ga(){document.addEventListener("focusin",we),Ie=!0,ke.value=document.activeElement}function $a(){document.removeEventListener("focusin",we)}function we(){ke.value=document.activeElement}const ya={class:"VPMenuLink"},Pa=["innerHTML"],La=p({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),u("div",ya,[k(E,{class:N({active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Pa)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=g(La,[["__scopeId","data-v-859c4b5e"]]),Va={class:"VPMenuGroup"},Sa={key:0,class:"title"},Ta=p({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Va,[e.text?(s(),u("p",Sa,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),u(x,null,["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):m("",!0)],64))),256))]))}}),Na=g(Ta,[["__scopeId","data-v-fddbce6f"]]),Ma={class:"VPMenu"},xa={key:0,class:"items"},Ia=p({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(s(),u("div",Ma,[e.items?(s(),u("div",xa,[(s(!0),u(x,null,A(e.items,a=>(s(),u(x,{key:JSON.stringify(a)},["link"in a?(s(),_(te,{key:0,item:a},null,8,["item"])):"component"in a?(s(),_(B(a.component),G({key:1,ref_for:!0},a.props),null,16)):(s(),_(Na,{key:2,text:a.text,items:a.items},null,8,["text","items"]))],64))),128))])):m("",!0),c(t.$slots,"default",{},void 0,!0)]))}}),wa=g(Ia,[["__scopeId","data-v-b1338896"]]),Aa=["aria-expanded","aria-label"],Ca={key:0,class:"text"},Ha=["innerHTML"],Ba={key:1,class:"vpi-more-horizontal icon"},Ea={class:"menu"},Fa=p({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=S(!1),n=S();ba({el:n,onBlur:a});function a(){t.value=!1}return(o,r)=>(s(),u("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:r[1]||(r[1]=l=>t.value=!0),onMouseleave:r[2]||(r[2]=l=>t.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:r[0]||(r[0]=l=>t.value=!t.value)},[e.button||e.icon?(s(),u("span",Ca,[e.icon?(s(),u("span",{key:0,class:N([e.icon,"option-icon"])},null,2)):m("",!0),e.button?(s(),u("span",{key:1,innerHTML:e.button},null,8,Ha)):m("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(s(),u("span",Ba))],8,Aa),d("div",Ea,[k(wa,{items:e.items},{default:h(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),_e=g(Fa,[["__scopeId","data-v-c9799874"]]),Da=["href","aria-label","innerHTML"],Oa=p({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=S();U(async()=>{var r;await Le();const o=(r=n.value)==null?void 0:r.children[0];o instanceof HTMLElement&&o.className.startsWith("vpi-social-")&&(getComputedStyle(o).maskImage||getComputedStyle(o).webkitMaskImage)==="none"&&o.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${t.icon}.svg')`)});const a=y(()=>typeof t.icon=="object"?t.icon.svg:``);return(o,r)=>(s(),u("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:e.link,"aria-label":e.ariaLabel??(typeof e.icon=="string"?e.icon:""),target:"_blank",rel:"noopener",innerHTML:a.value},null,8,Da))}}),Ga=g(Oa,[["__scopeId","data-v-9d5b176c"]]),Ua={class:"VPSocialLinks"},ja=p({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(s(),u("div",Ua,[(s(!0),u(x,null,A(e.links,({link:a,icon:o,ariaLabel:r})=>(s(),_(Ga,{key:a,icon:o,link:a,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=g(ja,[["__scopeId","data-v-ce44a42a"]]),za={key:0,class:"group translations"},Wa={class:"trans-title"},Ka={key:1,class:"group"},qa={class:"item appearance"},Ra={class:"label"},Ja={class:"appearance-action"},Xa={key:2,class:"group"},Ya={class:"item social-links"},Qa=p({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=L(),{localeLinks:a,currentLang:o}=q({correspondingLink:!0}),r=y(()=>a.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(l,v)=>r.value?(s(),_(_e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[i(a).length&&i(o).label?(s(),u("div",za,[d("p",Wa,M(i(o).label),1),(s(!0),u(x,null,A(i(a),f=>(s(),_(te,{key:f.link,item:f},null,8,["item"]))),128))])):m("",!0),i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Ka,[d("div",qa,[d("p",Ra,M(i(n).darkModeSwitchLabel||"Appearance"),1),d("div",Ja,[k(pe)])])])):m("",!0),i(n).socialLinks?(s(),u("div",Xa,[d("div",Ya,[k(be,{class:"social-links-list",links:i(n).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),Za=g(Qa,[["__scopeId","data-v-563e76b4"]]),eo=["aria-expanded"],to=p({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(s(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=a=>t.$emit("click"))},[...n[1]||(n[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)])],10,eo))}}),no=g(to,[["__scopeId","data-v-96eb4489"]]),ao=["innerHTML"],oo=p({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=L();return(n,a)=>(s(),_(E,{class:N({VPNavBarMenuLink:!0,active:i(z)(i(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,tabindex:"0"},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,ao)]),_:1},8,["class","href","target","rel","no-icon"]))}}),so=g(oo,[["__scopeId","data-v-e59bbbee"]]),io=p({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=L(),a=r=>"component"in r?!1:"link"in r?z(n.value.relativePath,r.link,!!t.item.activeMatch):r.items.some(a),o=y(()=>a(t.item));return(r,l)=>(s(),_(_e,{class:N({VPNavBarMenuGroup:!0,active:i(z)(i(n).relativePath,e.item.activeMatch,!!e.item.activeMatch)||o.value}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),ro={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},lo=p({__name:"VPNavBarMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",ro,[a[0]||(a[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(so,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props),null,16)):(s(),_(io,{key:2,item:o},null,8,["item"]))],64))),128))])):m("",!0)}}),co=g(lo,[["__scopeId","data-v-a23194af"]]);function uo(e){const{localeIndex:t,theme:n}=L();function a(o){var I,w,C;const r=o.split("."),l=(I=n.value.search)==null?void 0:I.options,v=l&&typeof l=="object",f=v&&((C=(w=l.locales)==null?void 0:w[t.value])==null?void 0:C.translations)||null,$=v&&l.translations||null;let V=f,b=$,P=e;const T=r.pop();for(const H of r){let O=null;const K=P==null?void 0:P[H];K&&(O=P=K);const ne=b==null?void 0:b[H];ne&&(O=b=ne);const ae=V==null?void 0:V[H];ae&&(O=V=ae),K||(P=O),ne||(b=O),ae||(V=O)}return(V==null?void 0:V[T])??(b==null?void 0:b[T])??(P==null?void 0:P[T])??""}return a}const vo=["aria-label"],fo={class:"DocSearch-Button-Container"},ho={class:"DocSearch-Button-Placeholder"},ge=p({__name:"VPNavBarSearchButton",setup(e){const n=uo({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(a,o)=>(s(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(n)("button.buttonAriaLabel")},[d("span",fo,[o[0]||(o[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",ho,M(i(n)("button.buttonText")),1)]),o[1]||(o[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,vo))}}),mo={class:"VPNavBarSearch"},po={id:"local-search"},ko={key:1,id:"docsearch"},_o=p({__name:"VPNavBarSearch",setup(e){const t=Ge(()=>Ue(()=>import("./VPLocalSearchBox.rtQYeFEO.js"),__vite__mapDeps([0,1]))),n=()=>null,{theme:a}=L(),o=S(!1),r=S(!1);U(()=>{});function l(){o.value||(o.value=!0,setTimeout(v,16))}function v(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function f(b){const P=b.target,T=P.tagName;return P.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const $=S(!1);ie("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),ie("/",b=>{f(b)||(b.preventDefault(),$.value=!0)});const V="local";return(b,P)=>{var T;return s(),u("div",mo,[i(V)==="local"?(s(),u(x,{key:0},[$.value?(s(),_(i(t),{key:0,onClose:P[0]||(P[0]=I=>$.value=!1)})):m("",!0),d("div",po,[k(ge,{onClick:P[1]||(P[1]=I=>$.value=!0)})])],64)):i(V)==="algolia"?(s(),u(x,{key:1},[o.value?(s(),_(i(n),{key:0,algolia:((T=i(a).search)==null?void 0:T.options)??i(a).algolia,onVnodeBeforeMount:P[2]||(P[2]=I=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(s(),u("div",ko,[k(ge,{onClick:l})]))],64)):m("",!0)])}}}),bo=p({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavBarSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),go=g(bo,[["__scopeId","data-v-5bf14e4d"]]),$o=["href","rel","target"],yo=["innerHTML"],Po={key:2},Lo=p({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=L(),{hasSidebar:a}=D(),{currentLang:o}=q(),r=y(()=>{var f;return typeof n.value.logoLink=="string"?n.value.logoLink:(f=n.value.logoLink)==null?void 0:f.link}),l=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.rel}),v=y(()=>{var f;return typeof n.value.logoLink=="string"||(f=n.value.logoLink)==null?void 0:f.target});return(f,$)=>(s(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":i(a)}])},[d("a",{class:"title",href:r.value??i(he)(i(o).link),rel:l.value,target:v.value},[c(f.$slots,"nav-bar-title-before",{},void 0,!0),i(n).logo?(s(),_(J,{key:0,class:"logo",image:i(n).logo},null,8,["image"])):m("",!0),i(n).siteTitle?(s(),u("span",{key:1,innerHTML:i(n).siteTitle},null,8,yo)):i(n).siteTitle===void 0?(s(),u("span",Po,M(i(t).title),1)):m("",!0),c(f.$slots,"nav-bar-title-after",{},void 0,!0)],8,$o)],2))}}),Vo=g(Lo,[["__scopeId","data-v-66d4ae12"]]),So={class:"items"},To={class:"title"},No=p({__name:"VPNavBarTranslations",setup(e){const{theme:t}=L(),{localeLinks:n,currentLang:a}=q({correspondingLink:!0});return(o,r)=>i(n).length&&i(a).label?(s(),_(_e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(t).langMenuLabel||"Change language"},{default:h(()=>[d("div",So,[d("p",To,M(i(a).label),1),(s(!0),u(x,null,A(i(n),l=>(s(),_(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Mo=g(No,[["__scopeId","data-v-2d4849be"]]),xo={class:"wrapper"},Io={class:"container"},wo={class:"title"},Ao={class:"content"},Co={class:"content-body"},Ho=p({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=Ve(),{hasSidebar:a}=D(),{frontmatter:o}=L(),r=S({});return fe(()=>{r.value={"has-sidebar":a.value,home:o.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(l,v)=>(s(),u("div",{class:N(["VPNavBar",r.value])},[d("div",xo,[d("div",Io,[d("div",wo,[k(Vo,null,{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Ao,[d("div",Co,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(_o,{class:"search"}),k(co,{class:"menu"}),k(Mo,{class:"translations"}),k(_a,{class:"appearance"}),k(go,{class:"social-links"}),k(Za,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(no,{class:"hamburger",active:e.isScreenOpen,onClick:v[0]||(v[0]=f=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),Bo=g(Ho,[["__scopeId","data-v-8d1ffe88"]]),Eo={key:0,class:"VPNavScreenAppearance"},Fo={class:"text"},Do=p({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=L();return(a,o)=>i(t).appearance&&i(t).appearance!=="force-dark"&&i(t).appearance!=="force-auto"?(s(),u("div",Eo,[d("p",Fo,M(i(n).darkModeSwitchLabel||"Appearance"),1),k(pe)])):m("",!0)}}),Oo=g(Do,[["__scopeId","data-v-a5de2fe4"]]),Go=["innerHTML"],Uo=p({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,Go)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),jo=g(Uo,[["__scopeId","data-v-f6216396"]]),zo=["innerHTML"],Wo=p({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=Z("close-screen");return(n,a)=>(s(),_(E,{class:"VPNavScreenMenuGroupLink",href:e.item.link,target:e.item.target,rel:e.item.rel,"no-icon":e.item.noIcon,onClick:i(t)},{default:h(()=>[d("span",{innerHTML:e.item.text},null,8,zo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ae=g(Wo,[["__scopeId","data-v-989ed20f"]]),Ko={class:"VPNavScreenMenuGroupSection"},qo={key:0,class:"title"},Ro=p({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(s(),u("div",Ko,[e.text?(s(),u("p",qo,M(e.text),1)):m("",!0),(s(!0),u(x,null,A(e.items,a=>(s(),_(Ae,{key:a.text,item:a},null,8,["item"]))),128))]))}}),Jo=g(Ro,[["__scopeId","data-v-652dbd88"]]),Xo=["aria-controls","aria-expanded"],Yo=["innerHTML"],Qo=["id"],Zo={key:0,class:"item"},es={key:1,class:"item"},ts={key:2,class:"group"},ns=p({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=S(!1),a=y(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(r,l)=>(s(),u("div",{class:N(["VPNavScreenMenuGroup",{open:n.value}])},[d("button",{class:"button","aria-controls":a.value,"aria-expanded":n.value,onClick:o},[d("span",{class:"button-text",innerHTML:e.text},null,8,Yo),l[0]||(l[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,Xo),d("div",{id:a.value,class:"items"},[(s(!0),u(x,null,A(e.items,v=>(s(),u(x,{key:JSON.stringify(v)},["link"in v?(s(),u("div",Zo,[k(Ae,{item:v},null,8,["item"])])):"component"in v?(s(),u("div",es,[(s(),_(B(v.component),G({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(s(),u("div",ts,[k(Jo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,Qo)],2))}}),as=g(ns,[["__scopeId","data-v-a6f357af"]]),os={key:0,class:"VPNavScreenMenu"},ss=p({__name:"VPNavScreenMenu",setup(e){const{theme:t}=L();return(n,a)=>i(t).nav?(s(),u("nav",os,[(s(!0),u(x,null,A(i(t).nav,o=>(s(),u(x,{key:JSON.stringify(o)},["link"in o?(s(),_(jo,{key:0,item:o},null,8,["item"])):"component"in o?(s(),_(B(o.component),G({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(s(),_(as,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),is=p({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=L();return(n,a)=>i(t).socialLinks?(s(),_(be,{key:0,class:"VPNavScreenSocialLinks",links:i(t).socialLinks},null,8,["links"])):m("",!0)}}),rs={class:"list"},ls=p({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=q({correspondingLink:!0}),a=S(!1);function o(){a.value=!a.value}return(r,l)=>i(t).length&&i(n).label?(s(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:a.value}])},[d("button",{class:"title",onClick:o},[l[0]||(l[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+M(i(n).label)+" ",1),l[1]||(l[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",rs,[(s(!0),u(x,null,A(i(t),v=>(s(),u("li",{key:v.link,class:"item"},[k(E,{class:"link",href:v.link},{default:h(()=>[j(M(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),cs=g(ls,[["__scopeId","data-v-16655210"]]),us={class:"container"},ds=p({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=S(null),n=Se(ee?document.body:null);return(a,o)=>(s(),_(ue,{name:"fade",onEnter:o[0]||(o[0]=r=>n.value=!0),onAfterLeave:o[1]||(o[1]=r=>n.value=!1)},{default:h(()=>[e.open?(s(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[d("div",us,[c(a.$slots,"nav-screen-content-before",{},void 0,!0),k(ss,{class:"menu"}),k(cs,{class:"translations"}),k(Oo,{class:"appearance"}),k(is,{class:"social-links"}),c(a.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),vs=g(ds,[["__scopeId","data-v-c2555c5e"]]),fs={key:0,class:"VPNav"},hs=p({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:a}=la(),{frontmatter:o}=L(),r=y(()=>o.value.navbar!==!1);return Te("close-screen",n),X(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,v)=>r.value?(s(),u("header",fs,[k(Bo,{"is-screen-open":i(t),onToggleScreen:i(a)},{"nav-bar-title-before":h(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(vs,{open:i(t)},{"nav-screen-content-before":h(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):m("",!0)}}),ms=g(hs,[["__scopeId","data-v-908bdb68"]]),ps=["role","tabindex"],ks={key:1,class:"items"},_s=p({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:a,isLink:o,isActiveLink:r,hasActiveLink:l,hasChildren:v,toggle:f}=dt(y(()=>t.item)),$=y(()=>v.value?"section":"div"),V=y(()=>o.value?"a":"div"),b=y(()=>v.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),T=y(()=>[[`level-${t.depth}`],{collapsible:a.value},{collapsed:n.value},{"is-link":o.value},{"is-active":r.value},{"has-active":l.value}]);function I(C){"key"in C&&C.key!=="Enter"||!t.item.link&&f()}function w(){t.item.link&&f()}return(C,H)=>{const O=W("VPSidebarItem",!0);return s(),_(B($.value),{class:N(["VPSidebarItem",T.value])},{default:h(()=>[e.item.text?(s(),u("div",G({key:0,class:"item",role:P.value},je(e.item.items?{click:I,keydown:I}:{},!0),{tabindex:e.item.items&&0}),[H[1]||(H[1]=d("div",{class:"indicator"},null,-1)),e.item.link?(s(),_(E,{key:0,tag:V.value,class:"link",href:e.item.link,rel:e.item.rel,target:e.item.target},{default:h(()=>[(s(),_(B(b.value),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),_(B(b.value),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null&&e.item.items&&e.item.items.length?(s(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:w,onKeydown:ze(w,["enter"]),tabindex:"0"},[...H[0]||(H[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)])],32)):m("",!0)],16,ps)):m("",!0),e.item.items&&e.item.items.length?(s(),u("div",ks,[e.depth<5?(s(!0),u(x,{key:0},A(e.item.items,K=>(s(),_(O,{key:K.text,item:K,depth:e.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),bs=g(_s,[["__scopeId","data-v-31549b30"]]),gs=p({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=S(!0);let n=null;return U(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),We(()=>{n!=null&&(clearTimeout(n),n=null)}),(a,o)=>(s(!0),u(x,null,A(e.items,r=>(s(),u("div",{key:r.text,class:N(["group",{"no-transition":t.value}])},[k(bs,{item:r,depth:0},null,8,["item"])],2))),128))}}),$s=g(gs,[["__scopeId","data-v-5df780f0"]]),ys={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ps=p({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=D(),a=e,o=S(null),r=Se(ee?document.body:null);F([a,o],()=>{var v;a.open?(r.value=!0,(v=o.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=S(0);return F(t,()=>{l.value+=1},{deep:!0}),(v,f)=>i(n)?(s(),u("aside",{key:0,class:N(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:o,onClick:f[0]||(f[0]=Ke(()=>{},["stop"]))},[f[2]||(f[2]=d("div",{class:"curtain"},null,-1)),d("nav",ys,[f[1]||(f[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(v.$slots,"sidebar-nav-before",{},void 0,!0),(s(),_($s,{items:i(t),key:l.value},null,8,["items"])),c(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),Ls=g(Ps,[["__scopeId","data-v-59945d5d"]]),Vs=p({__name:"VPSkipLink",setup(e){const{theme:t}=L(),n=Q(),a=S();F(()=>n.path,()=>a.value.focus());function o({target:r}){const l=document.getElementById(decodeURIComponent(r.hash).slice(1));if(l){const v=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",v)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",v),l.focus(),window.scrollTo(0,0)}}return(r,l)=>(s(),u(x,null,[d("span",{ref_key:"backToTop",ref:a,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o},M(i(t).skipToContentLabel||"Skip to content"),1)],64))}}),Ss=g(Vs,[["__scopeId","data-v-d63408fd"]]),Ts=p({__name:"Layout",setup(e){const{isOpen:t,open:n,close:a}=D(),o=Q();F(()=>o.path,a),ut(t,a);const{frontmatter:r}=L(),l=qe(),v=y(()=>!!l["home-hero-image"]);return Te("hero-image-slot-exists",v),(f,$)=>{const V=W("Content");return i(r).layout!==!1?(s(),u("div",{key:0,class:N(["Layout",i(r).pageClass])},[c(f.$slots,"layout-top",{},void 0,!0),k(Ss),k(Ye,{class:"backdrop",show:i(t),onClick:i(a)},null,8,["show","onClick"]),k(ms,null,{"nav-bar-title-before":h(()=>[c(f.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[c(f.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[c(f.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[c(f.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[c(f.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[c(f.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ra,{open:i(t),onOpenMenu:i(n)},null,8,["open","onOpenMenu"]),k(Ls,{open:i(t)},{"sidebar-nav-before":h(()=>[c(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[c(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(Wn,null,{"page-top":h(()=>[c(f.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[c(f.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[c(f.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[c(f.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[c(f.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[c(f.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[c(f.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[c(f.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[c(f.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[c(f.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[c(f.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[c(f.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[c(f.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[c(f.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[c(f.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[c(f.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(Xn),c(f.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),_(V,{key:1}))}}}),Ns=g(Ts,[["__scopeId","data-v-ba7c87da"]]),xs={Layout:Ns,enhanceApp:({app:e})=>{e.component("Badge",Re)}};export{uo as c,xs as t,L as u}; diff --git a/assets/getting-started_container.md.00DekezL.js b/assets/getting-started_container.md.00DekezL.js deleted file mode 100644 index 7fe83816..00000000 --- a/assets/getting-started_container.md.00DekezL.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,o as a,c as n,ag as o}from"./chunks/framework.DXGyWiRo.js";const g=JSON.parse('{"title":"Bot Container Management","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/container.md","filePath":"getting-started/container.md","lastUpdated":1774787421000}'),i={name:"getting-started/container.md"};function r(s,t,l,h,c,d){return a(),n("div",null,[...t[0]||(t[0]=[o('

Bot Container Management

Every Bot in Memoh operates within its own isolated container environment. This isolation ensures security, provides a dedicated filesystem, and allows the bot to execute code or commands without affecting other bots or the host system.

Concept: The Isolated Workspace

The container acts as the bot's private "computer." Within it, the bot can:

  • Store and modify files
  • Install software via package managers
  • Execute scripts
  • Maintain state across multiple sessions

Operations

Manage the lifecycle of your bot's environment from the Container tab in the Bot Detail page.

Lifecycle Actions

  • Create: Initialize the container if it doesn't exist (using the configured image). Progress is shown via real-time SSE feedback during image pull and creation.
  • Start: Launch the container. The bot must have a running container to perform many operations like file editing or executing tools.
  • Stop: Gracefully shut down the container to save resources.
  • Delete: Remove the container instance.

Container Information

The Container tab displays real-time data about the bot's runtime:

  • Container ID: Unique identifier for the instance.
  • Status: Whether it's currently running, stopped, or creating.
  • Image: The Docker/Containerd image used as the base.
  • Paths: Host and container paths for data persistence.
  • Tasks: Number of active background tasks running in the container.

Snapshots

Snapshots allow you to capture the current state of the bot's container and restore it later. This is useful for:

  • Saving a known good configuration
  • Versioning the bot's environment
  • Testing complex changes safely

Creating a Snapshot

  1. Ensure the container is stopped or in a stable state.
  2. Click Create Snapshot.
  3. Provide a name for the snapshot.

Restoring a Snapshot

  • Find the desired snapshot in the list and click Restore. This will reset the container to the captured state.

Managing Snapshots

  • View a list of existing snapshots with their creation timestamps and parent relationships.
  • Use the Delete button next to a snapshot to remove it.

Data Export and Import

The Container tab supports exporting and importing container data for backup, migration, or sharing purposes.

Export

  1. Click Export Data.
  2. The container's filesystem data is packaged into a downloadable archive.
  3. Save the archive to your local machine.

Import

  1. Click Import Data.
  2. Select an archive file from your local machine.
  3. The archive contents are extracted into the container's filesystem.

Restore

The Restore operation resets the container's data directory to a clean state. This is useful when the filesystem has become corrupted or you want to start fresh without recreating the container.


Container Versioning

Memoh tracks container versions to manage the lifecycle of the bot's runtime environment. Version information includes:

  • Current Version: The active container version.
  • Version History: A log of container version changes over time.

This helps with auditing and understanding when container configurations were updated.

',38)])])}const u=e(i,[["render",r]]);export{g as __pageData,u as default}; diff --git a/assets/getting-started_container.md.00DekezL.lean.js b/assets/getting-started_container.md.00DekezL.lean.js deleted file mode 100644 index 0d075b6d..00000000 --- a/assets/getting-started_container.md.00DekezL.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,o as a,c as n,ag as o}from"./chunks/framework.DXGyWiRo.js";const g=JSON.parse('{"title":"Bot Container Management","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/container.md","filePath":"getting-started/container.md","lastUpdated":1774787421000}'),i={name:"getting-started/container.md"};function r(s,t,l,h,c,d){return a(),n("div",null,[...t[0]||(t[0]=[o("",38)])])}const u=e(i,[["render",r]]);export{g as __pageData,u as default}; diff --git a/assets/getting-started_container.md.Do_YGEZB.js b/assets/getting-started_container.md.Do_YGEZB.js new file mode 100644 index 00000000..2323238e --- /dev/null +++ b/assets/getting-started_container.md.Do_YGEZB.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ag as i}from"./chunks/framework.DXGyWiRo.js";const u=JSON.parse('{"title":"Bot Container Management","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/container.md","filePath":"getting-started/container.md","lastUpdated":1775803937000}'),n={name:"getting-started/container.md"};function r(s,e,l,c,h,d){return a(),o("div",null,[...e[0]||(e[0]=[i('

Bot Container Management

Every Bot in Memoh operates within its own isolated container environment. This isolation ensures security, provides a dedicated filesystem, and allows the bot to execute code or commands without affecting other bots or the host system.

Concept: The Isolated Workspace

The container acts as the bot's private "computer." Within it, the bot can:

  • Store and modify files
  • Install software via package managers
  • Execute scripts
  • Maintain state across multiple sessions

Operations

Manage the lifecycle of your bot's environment from the Container tab in the Bot Detail page.

Lifecycle Actions

  • Create: Initialize the container if it doesn't exist (using the configured image). Progress is shown via real-time SSE feedback during image pull and creation.
  • Start: Launch the container. The bot must have a running container to perform many operations like file editing or executing tools.
  • Stop: Gracefully shut down the container to save resources.
  • Delete: Remove the container instance.

Container Information

The Container tab displays real-time data about the bot's runtime:

  • Container ID: Unique identifier for the instance.
  • Status: Whether it's currently running, stopped, or creating.
  • Image: The Docker/Containerd image used as the base.
  • Paths: Host and container paths for data persistence.
  • Tasks: Number of active background tasks running in the container.
  • CDI Devices: The effective GPU CDI devices currently attached to the container, if any.

Advanced: Provide CDI Devices

Memoh can provide host devices to a bot container through CDI (Container Device Interface). This is an advanced capability for users who want to expose host-managed devices, most commonly GPUs, to the container runtime.

In the Web UI, this capability is placed under Advanced options in the Container tab. It is optional and only needs to be configured when the bot must access CDI-backed devices from the host.

Configure CDI Devices

  1. Open the Bot's Container tab.
  2. Click Create if the container does not exist, or recreate the container if you need to change GPU settings.
  3. Expand Advanced options.
  4. Enable GPU.
  5. Enter one or more CDI device names in CDI devices.

You can enter CDI device names one per line or separated with commas. Common GPU-related examples:

  • nvidia.com/gpu=0
  • nvidia.com/gpu=all
  • amd.com/gpu=0
  • amd.com/gpu=all

Host Requirements

Before configuring CDI devices in Memoh, the host machine must already provide working device drivers, vendor toolkit support where required, and valid CDI specs. In practice, this usually means:

  • the host GPU works normally outside the container
  • CDI spec files exist under /etc/cdi or /var/run/cdi
  • the device name you enter in Memoh matches a real CDI device on the host

To discover the exact CDI device names exposed by the host, use the vendor tool on the host machine:

  • NVIDIA: nvidia-ctk cdi list
  • AMD: amd-ctk cdi list

If Memoh reports an error such as unresolvable CDI devices, the configured device name does not match any CDI device visible to the container runtime.

Important Behavior

  • CDI device settings are applied when the container is created. Updating the setting later requires recreating the container.
  • Stopping and starting an existing container does not change its attached CDI devices.
  • The container image still needs the appropriate user-space libraries and tools if you want to run CUDA or ROCm software inside the container.
  • After creation, the Container tab shows the effective attached CDI devices for verification.

Snapshots

Snapshots allow you to capture the current state of the bot's container and restore it later. This is useful for:

  • Saving a known good configuration
  • Versioning the bot's environment
  • Testing complex changes safely

Creating a Snapshot

  1. Ensure the container is stopped or in a stable state.
  2. Click Create Snapshot.
  3. Provide a name for the snapshot.

Restoring a Snapshot

  • Find the desired snapshot in the list and click Restore. This will reset the container to the captured state.

Managing Snapshots

  • View a list of existing snapshots with their creation timestamps and parent relationships.
  • Use the Delete button next to a snapshot to remove it.

Data Export and Import

The Container tab supports exporting and importing container data for backup, migration, or sharing purposes.

Export

  1. Click Export Data.
  2. The container's filesystem data is packaged into a downloadable archive.
  3. Save the archive to your local machine.

Import

  1. Click Import Data.
  2. Select an archive file from your local machine.
  3. The archive contents are extracted into the container's filesystem.

Restore

The Restore operation resets the container's data directory to a clean state. This is useful when the filesystem has become corrupted or you want to start fresh without recreating the container.


Container Versioning

Memoh tracks container versions to manage the lifecycle of the bot's runtime environment. Version information includes:

  • Current Version: The active container version.
  • Version History: A log of container version changes over time.

This helps with auditing and understanding when container configurations were updated.

',54)])])}const g=t(n,[["render",r]]);export{u as __pageData,g as default}; diff --git a/assets/getting-started_container.md.Do_YGEZB.lean.js b/assets/getting-started_container.md.Do_YGEZB.lean.js new file mode 100644 index 00000000..424604f2 --- /dev/null +++ b/assets/getting-started_container.md.Do_YGEZB.lean.js @@ -0,0 +1 @@ +import{_ as t,o as a,c as o,ag as i}from"./chunks/framework.DXGyWiRo.js";const u=JSON.parse('{"title":"Bot Container Management","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/container.md","filePath":"getting-started/container.md","lastUpdated":1775803937000}'),n={name:"getting-started/container.md"};function r(s,e,l,c,h,d){return a(),o("div",null,[...e[0]||(e[0]=[i("",54)])])}const g=t(n,[["render",r]]);export{u as __pageData,g as default}; diff --git a/assets/style.CwwbjNX7.css b/assets/style.CSFKb52n.css similarity index 68% rename from assets/style.CwwbjNX7.css rename to assets/style.CSFKb52n.css index 380b5ae6..66937986 100644 --- a/assets/style.CwwbjNX7.css +++ b/assets/style.CSFKb52n.css @@ -1 +1 @@ -@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: #3c3c43;--vp-c-text-2: #67676c;--vp-c-text-3: #929295}.dark{--vp-c-text-1: #dfdfd6;--vp-c-text-2: #98989f;--vp-c-text-3: #6a6a71}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:lang(es),:lang(pt){--vp-code-copy-copied-text-content: "Copiado"}:lang(fa){--vp-code-copy-copied-text-content: "کپی شد"}:lang(ko){--vp-code-copy-copied-text-content: "복사됨"}:lang(ru){--vp-code-copy-copied-text-content: "Скопировано"}:lang(zh){--vp-code-copy-copied-text-content: "已复制"}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-3febd95c]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-3febd95c],.VPBackdrop.fade-leave-to[data-v-3febd95c]{opacity:0}.VPBackdrop.fade-leave-active[data-v-3febd95c]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-3febd95c]{display:none}}.NotFound[data-v-769096ce]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-769096ce]{padding:96px 32px 168px}}.code[data-v-769096ce]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-769096ce]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-769096ce]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-769096ce]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-769096ce]{padding-top:20px}.link[data-v-769096ce]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-769096ce]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3d2c5cd8]{position:relative;z-index:1}.nested[data-v-3d2c5cd8]{padding-right:16px;padding-left:16px}.outline-link[data-v-3d2c5cd8]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3d2c5cd8]:hover,.outline-link.active[data-v-3d2c5cd8]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3d2c5cd8]{padding-left:13px}.VPDocAsideOutline[data-v-9a976623]{display:none}.VPDocAsideOutline.has-outline[data-v-9a976623]{display:block}.content[data-v-9a976623]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-9a976623]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-9a976623]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-0508e845]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-0508e845]{flex-grow:1}.VPDocAside[data-v-0508e845] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-0508e845] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-0508e845] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-2d5eec31]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-2d5eec31]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-d25f151f]{margin-top:64px}.edit-info[data-v-d25f151f]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-d25f151f]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-d25f151f]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-d25f151f]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-d25f151f]{margin-right:8px}.prev-next[data-v-d25f151f]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-d25f151f]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-d25f151f]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-d25f151f]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-d25f151f]{margin-left:auto;text-align:right}.desc[data-v-d25f151f]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-d25f151f]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-660c348c]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-660c348c]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-660c348c]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-660c348c]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-660c348c]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-660c348c]{display:flex;justify-content:center}.VPDoc .aside[data-v-660c348c]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-660c348c]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-660c348c]{max-width:1104px}}.container[data-v-660c348c]{margin:0 auto;width:100%}.aside[data-v-660c348c]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-660c348c]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-660c348c]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-660c348c]::-webkit-scrollbar{display:none}.aside-curtain[data-v-660c348c]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-660c348c]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-660c348c]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-660c348c]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-660c348c]{order:1;margin:0;min-width:640px}}.content-container[data-v-660c348c]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-660c348c]{max-width:688px}.VPButton[data-v-c957d30d]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-c957d30d]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c957d30d]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c957d30d]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c957d30d]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c957d30d]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-c957d30d]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-c957d30d]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c957d30d]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-c957d30d]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-c957d30d]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c957d30d]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-c957d30d]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-c69324aa]{display:none}.dark .VPImage.light[data-v-c69324aa]{display:none}.VPHero[data-v-5ac44a4a]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-5ac44a4a]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-5ac44a4a]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-5ac44a4a]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-5ac44a4a]{flex-direction:row}}.main[data-v-5ac44a4a]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-5ac44a4a]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-5ac44a4a]{text-align:left}}@media (min-width: 960px){.main[data-v-5ac44a4a]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-5ac44a4a]{max-width:592px}}.heading[data-v-5ac44a4a]{display:flex;flex-direction:column}.name[data-v-5ac44a4a],.text[data-v-5ac44a4a]{width:fit-content;max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-5ac44a4a],.VPHero.has-image .text[data-v-5ac44a4a]{margin:0 auto}.name[data-v-5ac44a4a]{color:var(--vp-home-hero-name-color)}.clip[data-v-5ac44a4a]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-5ac44a4a],.text[data-v-5ac44a4a]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-5ac44a4a],.text[data-v-5ac44a4a]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-5ac44a4a],.VPHero.has-image .text[data-v-5ac44a4a]{margin:0}}.tagline[data-v-5ac44a4a]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-5ac44a4a]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-5ac44a4a]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-5ac44a4a]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-5ac44a4a]{margin:0}}.actions[data-v-5ac44a4a]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-5ac44a4a]{justify-content:center}@media (min-width: 640px){.actions[data-v-5ac44a4a]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-5ac44a4a]{justify-content:flex-start}}.action[data-v-5ac44a4a]{flex-shrink:0;padding:6px}.image[data-v-5ac44a4a]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-5ac44a4a]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-5ac44a4a]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-5ac44a4a]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-5ac44a4a]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-5ac44a4a]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-5ac44a4a]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-5ac44a4a]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-5ac44a4a]{width:320px;height:320px}}[data-v-5ac44a4a] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-5ac44a4a] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-5ac44a4a] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-d72d51ca]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-d72d51ca]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-d72d51ca]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-d72d51ca]>.VPImage{margin-bottom:20px}.icon[data-v-d72d51ca]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-d72d51ca]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-d72d51ca]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-d72d51ca]{padding-top:8px}.link-text-value[data-v-d72d51ca]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-d72d51ca]{margin-left:6px}.VPFeatures[data-v-12e08f5e]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-12e08f5e]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-12e08f5e]{padding:0 64px}}.container[data-v-12e08f5e]{margin:0 auto;max-width:1152px}.items[data-v-12e08f5e]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-12e08f5e]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-12e08f5e],.item.grid-4[data-v-12e08f5e],.item.grid-6[data-v-12e08f5e]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-12e08f5e],.item.grid-4[data-v-12e08f5e]{width:50%}.item.grid-3[data-v-12e08f5e],.item.grid-6[data-v-12e08f5e]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-12e08f5e]{width:25%}}.container[data-v-bcc25c44]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-bcc25c44]{padding:0 48px}}@media (min-width: 960px){.container[data-v-bcc25c44]{width:100%;padding:0 64px}}.vp-doc[data-v-bcc25c44] .VPHomeSponsors,.vp-doc[data-v-bcc25c44] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-bcc25c44] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-bcc25c44] .VPHomeSponsors a,.vp-doc[data-v-bcc25c44] .VPTeamPage a{text-decoration:none}.VPHome[data-v-855f107a]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-855f107a]{margin-bottom:128px}}.VPContent[data-v-9f0d4acb]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-9f0d4acb]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-9f0d4acb]{margin:0}@media (min-width: 960px){.VPContent[data-v-9f0d4acb]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-9f0d4acb]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-9f0d4acb]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-6d4fdf1e]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-6d4fdf1e]{display:none}.VPFooter[data-v-6d4fdf1e] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-6d4fdf1e] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-6d4fdf1e]{padding:32px}}.container[data-v-6d4fdf1e]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-6d4fdf1e],.copyright[data-v-6d4fdf1e]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-3ca9f49e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-3ca9f49e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-3ca9f49e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-3ca9f49e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-3ca9f49e]{color:var(--vp-c-text-1)}.icon[data-v-3ca9f49e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-3ca9f49e]{font-size:14px}.icon[data-v-3ca9f49e]{font-size:16px}}.open>.icon[data-v-3ca9f49e]{transform:rotate(90deg)}.items[data-v-3ca9f49e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-3ca9f49e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-3ca9f49e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-3ca9f49e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-3ca9f49e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-3ca9f49e]{transition:all .2s ease-out}.flyout-leave-active[data-v-3ca9f49e]{transition:all .15s ease-in}.flyout-enter-from[data-v-3ca9f49e],.flyout-leave-to[data-v-3ca9f49e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-f39a3298]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-f39a3298]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-f39a3298]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-f39a3298]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-f39a3298]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-f39a3298]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-f39a3298]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-f39a3298]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-f39a3298]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-f39a3298]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-f39a3298]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-f39a3298]{display:none}}.menu-icon[data-v-f39a3298]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-f39a3298]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-f39a3298]{padding:12px 32px 11px}}.VPSwitch[data-v-10be344e]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-10be344e]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-10be344e]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-10be344e]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-10be344e] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-10be344e] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-64116ff8]{opacity:1}.moon[data-v-64116ff8],.dark .sun[data-v-64116ff8]{opacity:0}.dark .moon[data-v-64116ff8]{opacity:1}.dark .VPSwitchAppearance[data-v-64116ff8] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-3c27bf39]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-3c27bf39]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-f59d973b]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-f59d973b]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-f59d973b]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-f59d973b]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-caeadd89]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-caeadd89]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-caeadd89]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-caeadd89]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-cd155cfc]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-cd155cfc] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-cd155cfc] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-cd155cfc] .group:last-child{padding-bottom:0}.VPMenu[data-v-cd155cfc] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-cd155cfc] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-cd155cfc] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-cd155cfc] .action{padding-left:24px}.VPFlyout[data-v-437eb093]{position:relative}.VPFlyout[data-v-437eb093]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-437eb093]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-437eb093]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-437eb093]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-437eb093]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-437eb093]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-437eb093],.button[aria-expanded=true]+.menu[data-v-437eb093]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-437eb093]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-437eb093]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-437eb093]{margin-right:0;font-size:16px}.text-icon[data-v-437eb093]{margin-left:4px;font-size:14px}.icon[data-v-437eb093]{font-size:20px;transition:fill .25s}.menu[data-v-437eb093]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-4956e2a1]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-4956e2a1]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-4956e2a1]>svg,.VPSocialLink[data-v-4956e2a1]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-0148638c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-86f141c1]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-86f141c1]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-86f141c1]{display:none}}.trans-title[data-v-86f141c1]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-86f141c1],.item.social-links[data-v-86f141c1]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-86f141c1]{min-width:176px}.appearance-action[data-v-86f141c1]{margin-right:-2px}.social-links-list[data-v-86f141c1]{margin:-4px -8px}.VPNavBarHamburger[data-v-33023aa6]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-33023aa6]{display:none}}.container[data-v-33023aa6]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-33023aa6]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-33023aa6]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-33023aa6]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-33023aa6]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-33023aa6]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-33023aa6]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-33023aa6],.VPNavBarHamburger.active:hover .middle[data-v-33023aa6],.VPNavBarHamburger.active:hover .bottom[data-v-33023aa6]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-33023aa6],.middle[data-v-33023aa6],.bottom[data-v-33023aa6]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-33023aa6]{top:0;left:0;transform:translate(0)}.middle[data-v-33023aa6]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-33023aa6]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-dcff3482]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-dcff3482],.VPNavBarMenuLink[data-v-dcff3482]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-eb72f9f7]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-eb72f9f7]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-b674b0d9]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-b674b0d9]{display:flex;align-items:center}}.title[data-v-77b887c2]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-77b887c2]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-77b887c2]{border-bottom-color:var(--vp-c-divider)}}[data-v-77b887c2] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-d3f6c3ed]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-d3f6c3ed]{display:flex;align-items:center}}.title[data-v-d3f6c3ed]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-59b07c45]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-59b07c45]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-59b07c45]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-59b07c45]:not(.home){background-color:transparent}.VPNavBar[data-v-59b07c45]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-59b07c45]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-59b07c45]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-59b07c45]{padding:0}}.container[data-v-59b07c45]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-59b07c45],.container>.content[data-v-59b07c45]{pointer-events:none}.container[data-v-59b07c45] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-59b07c45]{max-width:100%}}.title[data-v-59b07c45]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-59b07c45]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-59b07c45]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-59b07c45]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-59b07c45]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-59b07c45]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-59b07c45]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-59b07c45]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-59b07c45]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-59b07c45]{column-gap:.5rem}}.menu+.translations[data-v-59b07c45]:before,.menu+.appearance[data-v-59b07c45]:before,.menu+.social-links[data-v-59b07c45]:before,.translations+.appearance[data-v-59b07c45]:before,.appearance+.social-links[data-v-59b07c45]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-59b07c45]:before,.translations+.appearance[data-v-59b07c45]:before{margin-right:16px}.appearance+.social-links[data-v-59b07c45]:before{margin-left:16px}.social-links[data-v-59b07c45]{margin-right:-8px}.divider[data-v-59b07c45]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-59b07c45]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-59b07c45]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-59b07c45]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-59b07c45]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-59b07c45]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-59b07c45]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-77e37dd8]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-77e37dd8]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-6680c343]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-6680c343]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-bcef7725]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-bcef7725]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f6adf3a2]{display:block}.title[data-v-f6adf3a2]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-2989dfaf]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-2989dfaf]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-2989dfaf]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-2989dfaf]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-2989dfaf]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-2989dfaf]{transform:rotate(45deg)}.button[data-v-2989dfaf]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-2989dfaf]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-2989dfaf]{transition:transform .25s}.group[data-v-2989dfaf]:first-child{padding-top:0}.group+.group[data-v-2989dfaf],.group+.item[data-v-2989dfaf]{padding-top:4px}.VPNavScreenTranslations[data-v-4742671a]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-4742671a]{height:auto}.title[data-v-4742671a]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-4742671a]{font-size:16px}.icon.lang[data-v-4742671a]{margin-right:8px}.icon.chevron[data-v-4742671a]{margin-left:4px}.list[data-v-4742671a]{padding:4px 0 0 24px}.link[data-v-4742671a]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-e824f21d]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-e824f21d],.VPNavScreen.fade-leave-active[data-v-e824f21d]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-e824f21d],.VPNavScreen.fade-leave-active .container[data-v-e824f21d]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-e824f21d],.VPNavScreen.fade-leave-to[data-v-e824f21d]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-e824f21d],.VPNavScreen.fade-leave-to .container[data-v-e824f21d]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-e824f21d]{display:none}}.container[data-v-e824f21d]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-e824f21d],.menu+.appearance[data-v-e824f21d],.translations+.appearance[data-v-e824f21d]{margin-top:24px}.menu+.social-links[data-v-e824f21d]{margin-top:16px}.appearance+.social-links[data-v-e824f21d]{margin-top:16px}.VPNav[data-v-ae3b4e71]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae3b4e71]{position:fixed}}.VPSidebarItem.level-0[data-v-51c3a27f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-51c3a27f]{padding-bottom:10px}.item[data-v-51c3a27f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-51c3a27f]{cursor:pointer}.indicator[data-v-51c3a27f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-51c3a27f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-51c3a27f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-51c3a27f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-51c3a27f]{background-color:var(--vp-c-brand-1)}.link[data-v-51c3a27f]{display:flex;align-items:center;flex-grow:1}.text[data-v-51c3a27f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-51c3a27f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-51c3a27f],.VPSidebarItem.level-2 .text[data-v-51c3a27f],.VPSidebarItem.level-3 .text[data-v-51c3a27f],.VPSidebarItem.level-4 .text[data-v-51c3a27f],.VPSidebarItem.level-5 .text[data-v-51c3a27f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-51c3a27f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-51c3a27f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-51c3a27f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-51c3a27f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-51c3a27f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-51c3a27f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-51c3a27f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-51c3a27f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-51c3a27f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-51c3a27f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-51c3a27f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-51c3a27f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-51c3a27f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-51c3a27f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-51c3a27f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-51c3a27f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-51c3a27f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-51c3a27f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-51c3a27f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-51c3a27f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-51c3a27f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-51c3a27f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-51c3a27f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-51c3a27f]{color:var(--vp-c-brand-1)}.caret[data-v-51c3a27f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-51c3a27f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-51c3a27f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-51c3a27f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-51c3a27f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-51c3a27f],.VPSidebarItem.level-2 .items[data-v-51c3a27f],.VPSidebarItem.level-3 .items[data-v-51c3a27f],.VPSidebarItem.level-4 .items[data-v-51c3a27f],.VPSidebarItem.level-5 .items[data-v-51c3a27f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-51c3a27f]{display:none}.no-transition[data-v-bb61ce6c] .caret-icon{transition:none}.group+.group[data-v-bb61ce6c]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-bb61ce6c]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-450ac41d]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-450ac41d]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-450ac41d]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-450ac41d]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-450ac41d]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-450ac41d]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-450ac41d]{outline:0}.VPSkipLink[data-v-20ff5aae]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-20ff5aae]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-20ff5aae]{top:14px;left:16px}}.Layout[data-v-c2d1c289]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-fc21e3d1]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-fc21e3d1]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-fc21e3d1]{margin:128px 0}}.VPHomeSponsors[data-v-fc21e3d1]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-fc21e3d1]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-fc21e3d1]{padding:0 64px}}.container[data-v-fc21e3d1]{margin:0 auto;max-width:1152px}.love[data-v-fc21e3d1]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-fc21e3d1]{display:inline-block}.message[data-v-fc21e3d1]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-fc21e3d1]{padding-top:32px}.action[data-v-fc21e3d1]{padding-top:40px;text-align:center}.VPTeamMembersItem[data-v-77945920]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-77945920]{padding:32px}.VPTeamMembersItem.small .data[data-v-77945920]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-77945920]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-77945920]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-77945920]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-77945920]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-77945920]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-77945920]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-77945920]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-77945920]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-77945920]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-77945920]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-77945920]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-77945920]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-77945920]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-77945920]{text-align:center}.avatar[data-v-77945920]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-77945920]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-77945920]{margin:0;font-weight:600}.affiliation[data-v-77945920]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-77945920]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-77945920]:hover{color:var(--vp-c-brand-1)}.desc[data-v-77945920]{margin:0 auto}.desc[data-v-77945920] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-77945920]{display:flex;justify-content:center;height:56px}.sp-link[data-v-77945920]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-77945920]:hover,.sp .sp-link.link[data-v-77945920]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-77945920]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6bcb1115]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6bcb1115]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6bcb1115]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6bcb1115]{max-width:876px}.VPTeamMembers.medium .container[data-v-6bcb1115]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6bcb1115]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6bcb1115]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6bcb1115]{max-width:760px}.container[data-v-6bcb1115]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPTeamPage[data-v-cf022c99]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-cf022c99]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-cf022c99-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-cf022c99-s],.VPTeamMembers+.VPTeamPageSection[data-v-cf022c99-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-cf022c99-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-cf022c99-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-cf022c99-s],.VPTeamMembers+.VPTeamPageSection[data-v-cf022c99-s]{margin-top:96px}}.VPTeamMembers[data-v-cf022c99-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-cf022c99-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-cf022c99-s]{padding:0 64px}}.VPTeamPageSection[data-v-850c3d73]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-850c3d73]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-850c3d73]{padding:0 64px}}.title[data-v-850c3d73]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-850c3d73]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-850c3d73]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-850c3d73]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-850c3d73]{padding-top:40px}.VPTeamPageTitle[data-v-e8d35152]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e8d35152]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e8d35152]{padding:80px 64px 48px}}.title[data-v-e8d35152]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e8d35152]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e8d35152]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e8d35152]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPLocalSearchBox[data-v-95bc29ae]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-95bc29ae]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-95bc29ae]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-95bc29ae]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-95bc29ae]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-95bc29ae]{padding:0 8px}}.search-bar[data-v-95bc29ae]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-95bc29ae]{display:block;font-size:18px}.navigate-icon[data-v-95bc29ae]{display:block;font-size:14px}.search-icon[data-v-95bc29ae]{margin:8px}@media (max-width: 767px){.search-icon[data-v-95bc29ae]{display:none}}.search-input[data-v-95bc29ae]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-95bc29ae]{padding:6px 4px}}.search-actions[data-v-95bc29ae]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-95bc29ae]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-95bc29ae]{display:none}}.search-actions button[data-v-95bc29ae]{padding:8px}.search-actions button[data-v-95bc29ae]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-95bc29ae]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-95bc29ae]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-95bc29ae]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-95bc29ae]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-95bc29ae]{display:none}}.search-keyboard-shortcuts kbd[data-v-95bc29ae]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-95bc29ae]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-95bc29ae]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-95bc29ae]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-95bc29ae]{margin:8px}}.titles[data-v-95bc29ae]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-95bc29ae]{display:flex;align-items:center;gap:4px}.title.main[data-v-95bc29ae]{font-weight:500}.title-icon[data-v-95bc29ae]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-95bc29ae]{opacity:.5}.result.selected[data-v-95bc29ae]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-95bc29ae]{position:relative}.excerpt[data-v-95bc29ae]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-95bc29ae]{opacity:1}.excerpt[data-v-95bc29ae] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-95bc29ae] mark,.excerpt[data-v-95bc29ae] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-95bc29ae] .vp-code-group .tabs{display:none}.excerpt[data-v-95bc29ae] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-95bc29ae]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-95bc29ae]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-95bc29ae],.result.selected .title-icon[data-v-95bc29ae]{color:var(--vp-c-brand-1)!important}.no-results[data-v-95bc29ae]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-95bc29ae]{flex:none} +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: #3c3c43;--vp-c-text-2: #67676c;--vp-c-text-3: #929295}.dark{--vp-c-text-1: #dfdfd6;--vp-c-text-2: #98989f;--vp-c-text-3: #6a6a71}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:lang(es),:lang(pt){--vp-code-copy-copied-text-content: "Copiado"}:lang(fa){--vp-code-copy-copied-text-content: "کپی شد"}:lang(ko){--vp-code-copy-copied-text-content: "복사됨"}:lang(ru){--vp-code-copy-copied-text-content: "Скопировано"}:lang(zh){--vp-code-copy-copied-text-content: "已复制"}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(:is(.no-icon,svg a,:has(img,svg))):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-e7a48126]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-e7a48126],.VPBackdrop.fade-leave-to[data-v-e7a48126]{opacity:0}.VPBackdrop.fade-leave-active[data-v-e7a48126]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-e7a48126]{display:none}}.NotFound[data-v-98bc8507]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-98bc8507]{padding:96px 32px 168px}}.code[data-v-98bc8507]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-98bc8507]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-98bc8507]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-98bc8507]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-98bc8507]{padding-top:20px}.link[data-v-98bc8507]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-98bc8507]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-ba57d2ed]{position:relative;z-index:1}.nested[data-v-ba57d2ed]{padding-right:16px;padding-left:16px}.outline-link[data-v-ba57d2ed]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-ba57d2ed]:hover,.outline-link.active[data-v-ba57d2ed]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-ba57d2ed]{padding-left:13px}.VPDocAsideOutline[data-v-116d4a1f]{display:none}.VPDocAsideOutline.has-outline[data-v-116d4a1f]{display:block}.content[data-v-116d4a1f]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-116d4a1f]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-116d4a1f]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-8cfe0409]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-8cfe0409]{flex-grow:1}.VPDocAside[data-v-8cfe0409] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-8cfe0409] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-8cfe0409] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-1cbf3ee4]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-1cbf3ee4]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-64297f89]{margin-top:64px}.edit-info[data-v-64297f89]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-64297f89]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-64297f89]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-64297f89]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-64297f89]{margin-right:8px}.prev-next[data-v-64297f89]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-64297f89]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-64297f89]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-64297f89]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-64297f89]{margin-left:auto;text-align:right}.desc[data-v-64297f89]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-64297f89]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-888acc39]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-888acc39]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-888acc39]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-888acc39]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-888acc39]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-888acc39]{display:flex;justify-content:center}.VPDoc .aside[data-v-888acc39]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-888acc39]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-888acc39]{max-width:1104px}}.container[data-v-888acc39]{margin:0 auto;width:100%}.aside[data-v-888acc39]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-888acc39]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-888acc39]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-888acc39]::-webkit-scrollbar{display:none}.aside-curtain[data-v-888acc39]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-888acc39]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-888acc39]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-888acc39]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-888acc39]{order:1;margin:0;min-width:640px}}.content-container[data-v-888acc39]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-888acc39]{max-width:688px}.VPButton[data-v-6cd5edd1]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-6cd5edd1]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-6cd5edd1]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-6cd5edd1]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-6cd5edd1]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-6cd5edd1]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-6cd5edd1]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-6cd5edd1]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-6cd5edd1]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-6cd5edd1]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-6cd5edd1]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-6cd5edd1]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-6cd5edd1]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-21b99582]{display:none}.dark .VPImage.light[data-v-21b99582]{display:none}.VPHero[data-v-86f5077c]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-86f5077c]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-86f5077c]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-86f5077c]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-86f5077c]{flex-direction:row}}.main[data-v-86f5077c]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-86f5077c]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-86f5077c]{text-align:left}}@media (min-width: 960px){.main[data-v-86f5077c]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-86f5077c]{max-width:592px}}.heading[data-v-86f5077c]{display:flex;flex-direction:column}.name[data-v-86f5077c],.text[data-v-86f5077c]{width:fit-content;max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-86f5077c],.VPHero.has-image .text[data-v-86f5077c]{margin:0 auto}.name[data-v-86f5077c]{color:var(--vp-home-hero-name-color)}.clip[data-v-86f5077c]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-86f5077c],.text[data-v-86f5077c]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-86f5077c],.text[data-v-86f5077c]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-86f5077c],.VPHero.has-image .text[data-v-86f5077c]{margin:0}}.tagline[data-v-86f5077c]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-86f5077c]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-86f5077c]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-86f5077c]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-86f5077c]{margin:0}}.actions[data-v-86f5077c]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-86f5077c]{justify-content:center}@media (min-width: 640px){.actions[data-v-86f5077c]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-86f5077c]{justify-content:flex-start}}.action[data-v-86f5077c]{flex-shrink:0;padding:6px}.image[data-v-86f5077c]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-86f5077c]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-86f5077c]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-86f5077c]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-86f5077c]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-86f5077c]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-86f5077c]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-86f5077c]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-86f5077c]{width:320px;height:320px}}[data-v-86f5077c] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-86f5077c] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-86f5077c] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-43c03651]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-43c03651]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-43c03651]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-43c03651]>.VPImage{margin-bottom:20px}.icon[data-v-43c03651]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-43c03651]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-43c03651]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-43c03651]{padding-top:8px}.link-text-value[data-v-43c03651]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-43c03651]{margin-left:6px}.VPFeatures[data-v-f8bfa93d]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-f8bfa93d]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-f8bfa93d]{padding:0 64px}}.container[data-v-f8bfa93d]{margin:0 auto;max-width:1152px}.items[data-v-f8bfa93d]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-f8bfa93d]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-f8bfa93d],.item.grid-4[data-v-f8bfa93d],.item.grid-6[data-v-f8bfa93d]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-f8bfa93d],.item.grid-4[data-v-f8bfa93d]{width:50%}.item.grid-3[data-v-f8bfa93d],.item.grid-6[data-v-f8bfa93d]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-f8bfa93d]{width:25%}}.container[data-v-0611f689]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-0611f689]{padding:0 48px}}@media (min-width: 960px){.container[data-v-0611f689]{width:100%;padding:0 64px}}.vp-doc[data-v-0611f689] .VPHomeSponsors,.vp-doc[data-v-0611f689] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-0611f689] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-0611f689] .VPHomeSponsors a,.vp-doc[data-v-0611f689] .VPTeamPage a{text-decoration:none}.VPHome[data-v-d7a0f279]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-d7a0f279]{margin-bottom:128px}}.VPContent[data-v-6c992f05]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-6c992f05]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-6c992f05]{margin:0}@media (min-width: 960px){.VPContent[data-v-6c992f05]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-6c992f05]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-6c992f05]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-137d0c52]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-137d0c52]{display:none}.VPFooter[data-v-137d0c52] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-137d0c52] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-137d0c52]{padding:32px}}.container[data-v-137d0c52]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-137d0c52],.copyright[data-v-137d0c52]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-d1ffc3c0]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-d1ffc3c0]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-d1ffc3c0]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-d1ffc3c0]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-d1ffc3c0]{color:var(--vp-c-text-1)}.icon[data-v-d1ffc3c0]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-d1ffc3c0]{font-size:14px}.icon[data-v-d1ffc3c0]{font-size:16px}}.open>.icon[data-v-d1ffc3c0]{transform:rotate(90deg)}.items[data-v-d1ffc3c0]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-d1ffc3c0]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-d1ffc3c0]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-d1ffc3c0]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-d1ffc3c0]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-d1ffc3c0]{transition:all .2s ease-out}.flyout-leave-active[data-v-d1ffc3c0]{transition:all .15s ease-in}.flyout-enter-from[data-v-d1ffc3c0],.flyout-leave-to[data-v-d1ffc3c0]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-b2c93339]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-b2c93339]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-b2c93339]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-b2c93339]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-b2c93339]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-b2c93339]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-b2c93339]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-b2c93339]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-b2c93339]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-b2c93339]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-b2c93339]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-b2c93339]{display:none}}.menu-icon[data-v-b2c93339]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-b2c93339]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-b2c93339]{padding:12px 32px 11px}}.VPSwitch[data-v-65cb479b]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-65cb479b]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-65cb479b]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-65cb479b]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-65cb479b] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-65cb479b] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-95390f3d]{opacity:1}.moon[data-v-95390f3d],.dark .sun[data-v-95390f3d]{opacity:0}.dark .moon[data-v-95390f3d]{opacity:1}.dark .VPSwitchAppearance[data-v-95390f3d] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-c2b7fe22]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-c2b7fe22]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-859c4b5e]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-859c4b5e]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-859c4b5e]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-859c4b5e]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-fddbce6f]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-fddbce6f]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-fddbce6f]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-fddbce6f]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-b1338896]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-b1338896] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-b1338896] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-b1338896] .group:last-child{padding-bottom:0}.VPMenu[data-v-b1338896] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-b1338896] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-b1338896] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-b1338896] .action{padding-left:24px}.VPFlyout[data-v-c9799874]{position:relative}.VPFlyout[data-v-c9799874]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-c9799874]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-c9799874]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-c9799874]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-c9799874]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-c9799874]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-c9799874],.button[aria-expanded=true]+.menu[data-v-c9799874]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-c9799874]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-c9799874]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-c9799874]{margin-right:0;font-size:16px}.text-icon[data-v-c9799874]{margin-left:4px;font-size:14px}.icon[data-v-c9799874]{font-size:20px;transition:fill .25s}.menu[data-v-c9799874]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-9d5b176c]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-9d5b176c]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-9d5b176c]>svg,.VPSocialLink[data-v-9d5b176c]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ce44a42a]{display:flex;justify-content:center}.VPNavBarExtra[data-v-563e76b4]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-563e76b4]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-563e76b4]{display:none}}.trans-title[data-v-563e76b4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-563e76b4],.item.social-links[data-v-563e76b4]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-563e76b4]{min-width:176px}.appearance-action[data-v-563e76b4]{margin-right:-2px}.social-links-list[data-v-563e76b4]{margin:-4px -8px}.VPNavBarHamburger[data-v-96eb4489]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-96eb4489]{display:none}}.container[data-v-96eb4489]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-96eb4489]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-96eb4489]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-96eb4489]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-96eb4489]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-96eb4489]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-96eb4489]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-96eb4489],.VPNavBarHamburger.active:hover .middle[data-v-96eb4489],.VPNavBarHamburger.active:hover .bottom[data-v-96eb4489]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-96eb4489],.middle[data-v-96eb4489],.bottom[data-v-96eb4489]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-96eb4489]{top:0;left:0;transform:translate(0)}.middle[data-v-96eb4489]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-96eb4489]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-e59bbbee]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-e59bbbee],.VPNavBarMenuLink[data-v-e59bbbee]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-a23194af]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-a23194af]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-5bf14e4d]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-5bf14e4d]{display:flex;align-items:center}}.title[data-v-66d4ae12]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-66d4ae12]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-66d4ae12]{border-bottom-color:var(--vp-c-divider)}}[data-v-66d4ae12] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-2d4849be]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-2d4849be]{display:flex;align-items:center}}.title[data-v-2d4849be]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-8d1ffe88]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-8d1ffe88]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-8d1ffe88]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-8d1ffe88]:not(.home){background-color:transparent}.VPNavBar[data-v-8d1ffe88]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-8d1ffe88]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-8d1ffe88]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-8d1ffe88]{padding:0}}.container[data-v-8d1ffe88]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-8d1ffe88],.container>.content[data-v-8d1ffe88]{pointer-events:none}.container[data-v-8d1ffe88] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-8d1ffe88]{max-width:100%}}.title[data-v-8d1ffe88]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-8d1ffe88]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-8d1ffe88]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-8d1ffe88]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-8d1ffe88]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-8d1ffe88]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-8d1ffe88]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-8d1ffe88]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-8d1ffe88]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-8d1ffe88]{column-gap:.5rem}}.menu+.translations[data-v-8d1ffe88]:before,.menu+.appearance[data-v-8d1ffe88]:before,.menu+.social-links[data-v-8d1ffe88]:before,.translations+.appearance[data-v-8d1ffe88]:before,.appearance+.social-links[data-v-8d1ffe88]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-8d1ffe88]:before,.translations+.appearance[data-v-8d1ffe88]:before{margin-right:16px}.appearance+.social-links[data-v-8d1ffe88]:before{margin-left:16px}.social-links[data-v-8d1ffe88]{margin-right:-8px}.divider[data-v-8d1ffe88]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-8d1ffe88]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-8d1ffe88]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-8d1ffe88]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-8d1ffe88]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-8d1ffe88]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-8d1ffe88]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-a5de2fe4]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-a5de2fe4]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-f6216396]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-f6216396]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-989ed20f]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-989ed20f]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-652dbd88]{display:block}.title[data-v-652dbd88]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-a6f357af]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-a6f357af]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-a6f357af]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-a6f357af]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-a6f357af]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-a6f357af]{transform:rotate(45deg)}.button[data-v-a6f357af]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-a6f357af]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-a6f357af]{transition:transform .25s}.group[data-v-a6f357af]:first-child{padding-top:0}.group+.group[data-v-a6f357af],.group+.item[data-v-a6f357af]{padding-top:4px}.VPNavScreenTranslations[data-v-16655210]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-16655210]{height:auto}.title[data-v-16655210]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-16655210]{font-size:16px}.icon.lang[data-v-16655210]{margin-right:8px}.icon.chevron[data-v-16655210]{margin-left:4px}.list[data-v-16655210]{padding:4px 0 0 24px}.link[data-v-16655210]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-c2555c5e]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-c2555c5e],.VPNavScreen.fade-leave-active[data-v-c2555c5e]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-c2555c5e],.VPNavScreen.fade-leave-active .container[data-v-c2555c5e]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-c2555c5e],.VPNavScreen.fade-leave-to[data-v-c2555c5e]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-c2555c5e],.VPNavScreen.fade-leave-to .container[data-v-c2555c5e]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-c2555c5e]{display:none}}.container[data-v-c2555c5e]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-c2555c5e],.menu+.appearance[data-v-c2555c5e],.translations+.appearance[data-v-c2555c5e]{margin-top:24px}.menu+.social-links[data-v-c2555c5e]{margin-top:16px}.appearance+.social-links[data-v-c2555c5e]{margin-top:16px}.VPNav[data-v-908bdb68]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-908bdb68]{position:fixed}}.VPSidebarItem.level-0[data-v-31549b30]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-31549b30]{padding-bottom:10px}.item[data-v-31549b30]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-31549b30]{cursor:pointer}.indicator[data-v-31549b30]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-31549b30],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-31549b30],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-31549b30],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-31549b30]{background-color:var(--vp-c-brand-1)}.link[data-v-31549b30]{display:flex;align-items:center;flex-grow:1}.text[data-v-31549b30]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-31549b30]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-31549b30],.VPSidebarItem.level-2 .text[data-v-31549b30],.VPSidebarItem.level-3 .text[data-v-31549b30],.VPSidebarItem.level-4 .text[data-v-31549b30],.VPSidebarItem.level-5 .text[data-v-31549b30]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-31549b30],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-31549b30],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-31549b30],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-31549b30],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-31549b30],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-31549b30]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-31549b30],.VPSidebarItem.level-1.has-active>.item>.text[data-v-31549b30],.VPSidebarItem.level-2.has-active>.item>.text[data-v-31549b30],.VPSidebarItem.level-3.has-active>.item>.text[data-v-31549b30],.VPSidebarItem.level-4.has-active>.item>.text[data-v-31549b30],.VPSidebarItem.level-5.has-active>.item>.text[data-v-31549b30],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-31549b30],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-31549b30],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-31549b30],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-31549b30],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-31549b30],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-31549b30]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-31549b30],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-31549b30],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-31549b30],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-31549b30],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-31549b30],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-31549b30]{color:var(--vp-c-brand-1)}.caret[data-v-31549b30]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-31549b30]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-31549b30]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-31549b30]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-31549b30]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-31549b30],.VPSidebarItem.level-2 .items[data-v-31549b30],.VPSidebarItem.level-3 .items[data-v-31549b30],.VPSidebarItem.level-4 .items[data-v-31549b30],.VPSidebarItem.level-5 .items[data-v-31549b30]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-31549b30]{display:none}.no-transition[data-v-5df780f0] .caret-icon{transition:none}.group+.group[data-v-5df780f0]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-5df780f0]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-59945d5d]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-59945d5d]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-59945d5d]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-59945d5d]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-59945d5d]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-59945d5d]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-59945d5d]{outline:0}.VPSkipLink[data-v-d63408fd]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-d63408fd]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-d63408fd]{top:14px;left:16px}}.Layout[data-v-ba7c87da]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-cd04c26e]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-cd04c26e]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-cd04c26e]{margin:128px 0}}.VPHomeSponsors[data-v-cd04c26e]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-cd04c26e]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-cd04c26e]{padding:0 64px}}.container[data-v-cd04c26e]{margin:0 auto;max-width:1152px}.love[data-v-cd04c26e]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-cd04c26e]{display:inline-block}.message[data-v-cd04c26e]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-cd04c26e]{padding-top:32px}.action[data-v-cd04c26e]{padding-top:40px;text-align:center}.VPTeamMembersItem[data-v-1fe12805]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-1fe12805]{padding:32px}.VPTeamMembersItem.small .data[data-v-1fe12805]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-1fe12805]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-1fe12805]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-1fe12805]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-1fe12805]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-1fe12805]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-1fe12805]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-1fe12805]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-1fe12805]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-1fe12805]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-1fe12805]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-1fe12805]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-1fe12805]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-1fe12805]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-1fe12805]{text-align:center}.avatar[data-v-1fe12805]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-1fe12805]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-1fe12805]{margin:0;font-weight:600}.affiliation[data-v-1fe12805]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-1fe12805]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-1fe12805]:hover{color:var(--vp-c-brand-1)}.desc[data-v-1fe12805]{margin:0 auto}.desc[data-v-1fe12805] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-1fe12805]{display:flex;justify-content:center;height:56px}.sp-link[data-v-1fe12805]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-1fe12805]:hover,.sp .sp-link.link[data-v-1fe12805]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-1fe12805]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-ca4e039f]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-ca4e039f]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-ca4e039f]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-ca4e039f]{max-width:876px}.VPTeamMembers.medium .container[data-v-ca4e039f]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-ca4e039f]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-ca4e039f]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-ca4e039f]{max-width:760px}.container[data-v-ca4e039f]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPTeamPage[data-v-950ebe07]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-950ebe07]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-950ebe07-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-950ebe07-s],.VPTeamMembers+.VPTeamPageSection[data-v-950ebe07-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-950ebe07-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-950ebe07-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-950ebe07-s],.VPTeamMembers+.VPTeamPageSection[data-v-950ebe07-s]{margin-top:96px}}.VPTeamMembers[data-v-950ebe07-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-950ebe07-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-950ebe07-s]{padding:0 64px}}.VPTeamPageSection[data-v-418f2f26]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-418f2f26]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-418f2f26]{padding:0 64px}}.title[data-v-418f2f26]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-418f2f26]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-418f2f26]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-418f2f26]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-418f2f26]{padding-top:40px}.VPTeamPageTitle[data-v-255cb119]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-255cb119]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-255cb119]{padding:80px 64px 48px}}.title[data-v-255cb119]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-255cb119]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-255cb119]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-255cb119]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPLocalSearchBox[data-v-e9d3ce3e]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-e9d3ce3e]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-e9d3ce3e]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-e9d3ce3e]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-e9d3ce3e]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-e9d3ce3e]{padding:0 8px}}.search-bar[data-v-e9d3ce3e]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-e9d3ce3e]{display:block;font-size:18px}.navigate-icon[data-v-e9d3ce3e]{display:block;font-size:14px}.search-icon[data-v-e9d3ce3e]{margin:8px}@media (max-width: 767px){.search-icon[data-v-e9d3ce3e]{display:none}}.search-input[data-v-e9d3ce3e]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-e9d3ce3e]{padding:6px 4px}}.search-actions[data-v-e9d3ce3e]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-e9d3ce3e]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-e9d3ce3e]{display:none}}.search-actions button[data-v-e9d3ce3e]{padding:8px}.search-actions button[data-v-e9d3ce3e]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-e9d3ce3e]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-e9d3ce3e]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-e9d3ce3e]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-e9d3ce3e]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-e9d3ce3e]{display:none}}.search-keyboard-shortcuts kbd[data-v-e9d3ce3e]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-e9d3ce3e]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-e9d3ce3e]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-e9d3ce3e]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-e9d3ce3e]{margin:8px}}.titles[data-v-e9d3ce3e]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-e9d3ce3e]{display:flex;align-items:center;gap:4px}.title.main[data-v-e9d3ce3e]{font-weight:500}.title-icon[data-v-e9d3ce3e]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-e9d3ce3e]{opacity:.5}.result.selected[data-v-e9d3ce3e]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-e9d3ce3e]{position:relative}.excerpt[data-v-e9d3ce3e]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-e9d3ce3e]{opacity:1}.excerpt[data-v-e9d3ce3e] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-e9d3ce3e] mark,.excerpt[data-v-e9d3ce3e] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-e9d3ce3e] .vp-code-group .tabs{display:none}.excerpt[data-v-e9d3ce3e] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-e9d3ce3e]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-e9d3ce3e]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-e9d3ce3e],.result.selected .title-icon[data-v-e9d3ce3e]{color:var(--vp-c-brand-1)!important}.no-results[data-v-e9d3ce3e]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-e9d3ce3e]{flex:none} diff --git a/blogs/2026-02-16.html b/blogs/2026-02-16.html index d91c33bf..7b3f2a23 100644 --- a/blogs/2026-02-16.html +++ b/blogs/2026-02-16.html @@ -6,12 +6,12 @@ Introduction to Memoh - The Case for an Always-On, Containerized Home Agent | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Introduction to Memoh - The Case for an Always-On, Containerized Home Agent

Overview

We enter 2026 with a familiar tension: models get smarter every quarter, but the “agent experience” still breaks on context, latency, privacy, and real-world workflows. Over the past year, we kept circling three questions:

  • Where does the capability boundary of agents actually sit?
  • What’s the real value of long context?
  • What hardware form factor makes “always-on, personal AI” feel natural?

Memoh is our attempt to turn those questions into something buildable—not a manifesto, but a system that can survive contact with reality.

Story Time

Time travels fast. Somewhere between “I’ll remember this” and “wait, why did we decide that?”, a year disappears.

That’s the annoying part of building: most progress doesn’t feel like progress while it’s happening. It’s just a stream of small choices, half-finished threads, late-night fixes, and the occasional moment that actually clicks. The kind of moment where you sit back and think: okay—this is real.

Around the same time, I noticed something else: the internet started to feel smoother—and worse.

Text got cleaner, longer, more polite, more… empty. You could smell when something was generated: low information density, too many metaphors, too much agreement, not enough stakes.

I caught myself doing it too.

So I started forcing a constraint: say it plainly. Keep the density. Don’t inflate. Don’t hide behind style. If something mattered, anchor it to a real moment, a real trade-off, a real cost paid.

Because the thing LLMs can’t give you is not “intelligence.” It’s weight. The feeling that a human actually stood somewhere in time and wrote from that position.

That’s when I realized what I wanted wasn’t “an AI that can talk.” I wanted an AI that can live with you—quietly, continuously, accumulating context without turning your life into content sludge.

Phones were our first instinct—it's personal, powerful, always there. But mobile OS is closed: without OEM privileges you can build an app, not ambient infrastructure.

So we looked for the always-on node every home already has: the router (conceptually). Then the economics clash—router-class hardware can’t carry memory, RAG, tools, and multi-user agents. The device evolves: more RAM/storage, a screen, mic/speaker, tiny battery for take out, portable form.

Eventually it stops being a router. It becomes a new category: a home agent base layer.

What

Memoh is a containerized home/studio AI base layer: cloud-grade model capability paired with local-first memory (knowledge base, RAG/search, conversation history) that stays under your control.

Why

Long-context models raise the ceiling for agents—but they also make “fully local” expensive and “fully cloud” uncomfortable. People don’t want to re-brief AI every day, and they don’t want their durable context trapped in someone else’s feed. Containerization makes Memoh portable, reproducible, and safe to run as always-on infrastructure—so continuity becomes cheap, private, and dependable.

How

We run Memoh as a containerized stack: isolated services for storage (files/DB/vector index), retrieval, tool/runtime execution, and the control plane. Inference calls cloud APIs when you need frontier capability; durable memory and indexing stay local. The device acts as an always-on node (router-like, not a router) serving multiple users with strict boundaries: sharing is explicit, private context remains private, and everything is deployable/upgradable as versioned containers.

Features

  • Multi-bot Management: Create multiple bots; humans and bots, or bots with each other, can chat privately, in groups, or collaborate.

    Multi-bot Management

  • Containerized: Each bot runs in its own isolated container. Bots can freely execute commands, edit files, and access the network within their containers—like having their own computer.

    Containerized

  • Memory Engineering: Every chat is stored in the database, with the last 24 hours of context loaded by default. Each conversation turn is stored as memory and can be retrieved by bots through semantic search.

    Memory Engineering

  • Various Platforms: Supports Telegram, Lark (Feishu), and more.

  • Simple and Easy to Use: Configure bots and settings for Provider, Model, Memory, Channel, MCP, and Skills through a graphical interface—no coding required to set up your own AI bot.

  • Scheduled Tasks: Schedule tasks with cron expressions to run commands at specified times.

  • More...

Compare to OpenClaw

We share a core belief: both Memoh and OpenClaw treat the agent as more than a chatbox—we give the LLM a playground: a real environment where it can remember, use tools, and iterate.

Where Memoh differs:

  • Lighter and Faster: built as home/studio infrastructure, can be held in the edge device
  • Containerized by default: each bot gets an isolated container (files/commands/network/jobs)
  • Hybrid split: cloud inference, local-first memory + indexing
  • Multi-user first: explicit sharing and privacy boundaries, support a2a (Agent2Agent)
  • Sustainable: have an experienced team and confidence to push forward and build it

Conclusion

Memoh is built for one thing: always-on continuity—an AI that stays online, and a memory that stays yours.

We keep frontier inference in the cloud, keep durable context local, and run everything as a containerized, always-on stack. If you want an agent that feels less like an app and more like home infrastructure, that’s the bet Memoh is making.

Furthermore, we will continue to operate and permanently open-source Memoh, making it a product with long impact.

Published under AGPLv3

- +
Skip to content

Introduction to Memoh - The Case for an Always-On, Containerized Home Agent

Overview

We enter 2026 with a familiar tension: models get smarter every quarter, but the “agent experience” still breaks on context, latency, privacy, and real-world workflows. Over the past year, we kept circling three questions:

  • Where does the capability boundary of agents actually sit?
  • What’s the real value of long context?
  • What hardware form factor makes “always-on, personal AI” feel natural?

Memoh is our attempt to turn those questions into something buildable—not a manifesto, but a system that can survive contact with reality.

Story Time

Time travels fast. Somewhere between “I’ll remember this” and “wait, why did we decide that?”, a year disappears.

That’s the annoying part of building: most progress doesn’t feel like progress while it’s happening. It’s just a stream of small choices, half-finished threads, late-night fixes, and the occasional moment that actually clicks. The kind of moment where you sit back and think: okay—this is real.

Around the same time, I noticed something else: the internet started to feel smoother—and worse.

Text got cleaner, longer, more polite, more… empty. You could smell when something was generated: low information density, too many metaphors, too much agreement, not enough stakes.

I caught myself doing it too.

So I started forcing a constraint: say it plainly. Keep the density. Don’t inflate. Don’t hide behind style. If something mattered, anchor it to a real moment, a real trade-off, a real cost paid.

Because the thing LLMs can’t give you is not “intelligence.” It’s weight. The feeling that a human actually stood somewhere in time and wrote from that position.

That’s when I realized what I wanted wasn’t “an AI that can talk.” I wanted an AI that can live with you—quietly, continuously, accumulating context without turning your life into content sludge.

Phones were our first instinct—it's personal, powerful, always there. But mobile OS is closed: without OEM privileges you can build an app, not ambient infrastructure.

So we looked for the always-on node every home already has: the router (conceptually). Then the economics clash—router-class hardware can’t carry memory, RAG, tools, and multi-user agents. The device evolves: more RAM/storage, a screen, mic/speaker, tiny battery for take out, portable form.

Eventually it stops being a router. It becomes a new category: a home agent base layer.

What

Memoh is a containerized home/studio AI base layer: cloud-grade model capability paired with local-first memory (knowledge base, RAG/search, conversation history) that stays under your control.

Why

Long-context models raise the ceiling for agents—but they also make “fully local” expensive and “fully cloud” uncomfortable. People don’t want to re-brief AI every day, and they don’t want their durable context trapped in someone else’s feed. Containerization makes Memoh portable, reproducible, and safe to run as always-on infrastructure—so continuity becomes cheap, private, and dependable.

How

We run Memoh as a containerized stack: isolated services for storage (files/DB/vector index), retrieval, tool/runtime execution, and the control plane. Inference calls cloud APIs when you need frontier capability; durable memory and indexing stay local. The device acts as an always-on node (router-like, not a router) serving multiple users with strict boundaries: sharing is explicit, private context remains private, and everything is deployable/upgradable as versioned containers.

Features

  • Multi-bot Management: Create multiple bots; humans and bots, or bots with each other, can chat privately, in groups, or collaborate.

    Multi-bot Management

  • Containerized: Each bot runs in its own isolated container. Bots can freely execute commands, edit files, and access the network within their containers—like having their own computer.

    Containerized

  • Memory Engineering: Every chat is stored in the database, with the last 24 hours of context loaded by default. Each conversation turn is stored as memory and can be retrieved by bots through semantic search.

    Memory Engineering

  • Various Platforms: Supports Telegram, Lark (Feishu), and more.

  • Simple and Easy to Use: Configure bots and settings for Provider, Model, Memory, Channel, MCP, and Skills through a graphical interface—no coding required to set up your own AI bot.

  • Scheduled Tasks: Schedule tasks with cron expressions to run commands at specified times.

  • More...

Compare to OpenClaw

We share a core belief: both Memoh and OpenClaw treat the agent as more than a chatbox—we give the LLM a playground: a real environment where it can remember, use tools, and iterate.

Where Memoh differs:

  • Lighter and Faster: built as home/studio infrastructure, can be held in the edge device
  • Containerized by default: each bot gets an isolated container (files/commands/network/jobs)
  • Hybrid split: cloud inference, local-first memory + indexing
  • Multi-user first: explicit sharing and privacy boundaries, support a2a (Agent2Agent)
  • Sustainable: have an experienced team and confidence to push forward and build it

Conclusion

Memoh is built for one thing: always-on continuity—an AI that stays online, and a memory that stays yours.

We keep frontier inference in the cloud, keep durable context local, and run everything as a containerized, always-on stack. If you want an agent that feels less like an app and more like home infrastructure, that’s the bet Memoh is making.

Furthermore, we will continue to operate and permanently open-source Memoh, making it a product with long impact.

Published under AGPLv3

+ \ No newline at end of file diff --git a/blogs/index.html b/blogs/index.html index 8707f2e0..fb1d93b4 100644 --- a/blogs/index.html +++ b/blogs/index.html @@ -6,12 +6,12 @@ Blogs | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Blogs

This section contains the latest blogs about Memoh.

Published under AGPLv3

- +
Skip to content

Blogs

This section contains the latest blogs about Memoh.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/discord.html b/channels/discord.html index ed519984..e4fdeb2a 100644 --- a/channels/discord.html +++ b/channels/discord.html @@ -6,12 +6,12 @@ Discord Channel Configuration | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Discord Channel Configuration

Connecting your Memoh Bot to Discord allows it to join servers and interact with community members.

Step 1: Create a Discord Application

  1. Go to the Discord Developer Portal.
  2. Click New Application and give it a name.
  3. In the left sidebar, go to Bot.
  4. Click Reset Token to generate a Bot Token. Copy this token and store it securely.

Step 2: Configure Bot Settings

  1. Scroll down to the Privileged Gateway Intents section.
  2. Enable Message Content Intent, Server Members Intent and Presence Intent.
  3. Save changes.

Step 3: Invite the Bot to Your Server

  1. Go to OAuth2 > URL Generator.
  2. Select scopes: bot, applications.commands.
  3. Select permissions: Send Messages, Read Message History, Embed Links, Attach Files.
  4. Copy the generated URL and open it in your browser.
  5. Select the server you want to add the bot to and authorize it.

Official Guide: Discord Developer Portal - Bots

Step 4: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select Discord.
  3. Paste your Bot Token.
  4. Click Save and Enable.

Features Supported

  • Message Content: Full access to chat text.
  • Attachments: Support for images and files.
  • Commands: Integration with Discord's slash commands (if configured via MCP).

Published under AGPLv3

- +
Skip to content

Discord Channel Configuration

Connecting your Memoh Bot to Discord allows it to join servers and interact with community members.

Step 1: Create a Discord Application

  1. Go to the Discord Developer Portal.
  2. Click New Application and give it a name.
  3. In the left sidebar, go to Bot.
  4. Click Reset Token to generate a Bot Token. Copy this token and store it securely.

Step 2: Configure Bot Settings

  1. Scroll down to the Privileged Gateway Intents section.
  2. Enable Message Content Intent, Server Members Intent and Presence Intent.
  3. Save changes.

Step 3: Invite the Bot to Your Server

  1. Go to OAuth2 > URL Generator.
  2. Select scopes: bot, applications.commands.
  3. Select permissions: Send Messages, Read Message History, Embed Links, Attach Files.
  4. Copy the generated URL and open it in your browser.
  5. Select the server you want to add the bot to and authorize it.

Official Guide: Discord Developer Portal - Bots

Step 4: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select Discord.
  3. Paste your Bot Token.
  4. Click Save and Enable.

Features Supported

  • Message Content: Full access to chat text.
  • Attachments: Support for images and files.
  • Commands: Integration with Discord's slash commands (if configured via MCP).

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/feishu.html b/channels/feishu.html index 9ec8ca86..efcdd35d 100644 --- a/channels/feishu.html +++ b/channels/feishu.html @@ -6,12 +6,12 @@ Feishu (Lark) Channel Configuration | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Feishu (Lark) Channel Configuration

Memoh supports integrating with Feishu (Lark) via the Open Platform. This allows your enterprise bots to interact with users in groups or private chats.

Step 1: Create a Feishu App

  1. Go to the Feishu Open Platform and log in.
  2. Click Create Custom App.
  3. Enter a name and description, then click Create.
  4. In the left sidebar, go to App Settings > Credentials & Basic Info.
  5. Copy your App ID and App Secret.

Step 2: Enable Bot Capability

  1. In the Feishu Developer Console, go to Capabilities > Bot.
  2. Click Enable Bot.

Step 3: Configure Permissions

  1. Go to Capabilities > Permissions.
  2. Search for and enable the following permissions (at minimum):
    • im:message (Receive and send messages)
    • im:chat (Access group chat information)
  3. Click Apply for Permissions if required by your organization.

Step 4: Configure Events (Webhook Mode)

  1. In Memoh, go to your Bot's Platforms tab and add a Feishu channel.
  2. Choose Inbound Mode: webhook.
  3. Fill in your App ID and App Secret.
  4. Click Save. Memoh will generate a Webhook Callback URL.
  5. Copy this URL.
  6. In the Feishu Console, go to App Settings > Event Subscriptions.
  7. Paste the URL into the Verification URL field and save.
  8. Add events like Receive Message (im.message.receive_v1).

Official Guide: Feishu Custom Bot Guide

Step 5: Publish Your App

  1. In the Feishu Console, go to App Release > Version Management & Release.
  2. Click Create a Version, fill in the details, and submit for approval.
  3. Once approved and published, the bot is ready to use.

Published under AGPLv3

- +
Skip to content

Feishu (Lark) Channel Configuration

Memoh supports integrating with Feishu (Lark) via the Open Platform. This allows your enterprise bots to interact with users in groups or private chats.

Step 1: Create a Feishu App

  1. Go to the Feishu Open Platform and log in.
  2. Click Create Custom App.
  3. Enter a name and description, then click Create.
  4. In the left sidebar, go to App Settings > Credentials & Basic Info.
  5. Copy your App ID and App Secret.

Step 2: Enable Bot Capability

  1. In the Feishu Developer Console, go to Capabilities > Bot.
  2. Click Enable Bot.

Step 3: Configure Permissions

  1. Go to Capabilities > Permissions.
  2. Search for and enable the following permissions (at minimum):
    • im:message (Receive and send messages)
    • im:chat (Access group chat information)
  3. Click Apply for Permissions if required by your organization.

Step 4: Configure Events (Webhook Mode)

  1. In Memoh, go to your Bot's Platforms tab and add a Feishu channel.
  2. Choose Inbound Mode: webhook.
  3. Fill in your App ID and App Secret.
  4. Click Save. Memoh will generate a Webhook Callback URL.
  5. Copy this URL.
  6. In the Feishu Console, go to App Settings > Event Subscriptions.
  7. Paste the URL into the Verification URL field and save.
  8. Add events like Receive Message (im.message.receive_v1).

Official Guide: Feishu Custom Bot Guide

Step 5: Publish Your App

  1. In the Feishu Console, go to App Release > Version Management & Release.
  2. Click Create a Version, fill in the details, and submit for approval.
  3. Once approved and published, the bot is ready to use.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/index.html b/channels/index.html index ba98e423..82abdaed 100644 --- a/channels/index.html +++ b/channels/index.html @@ -6,12 +6,12 @@ Channels Overview | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Channels Overview

Channels are the gateways that connect your Memoh Bots to the outside world. By configuring channels, you can interact with your bots via your favorite messaging platforms.

Memoh currently supports the following channels:

  • Telegram: Feature-rich integration with streaming and attachment support.
  • Feishu (Lark): Enterprise-ready integration for business workflows.
  • Discord: Community-focused integration for servers and direct messages.
  • QQ: Quick setup for personal DM bots via the dedicated AI bot registration portal.
  • Matrix: Decentralized messaging protocol support for any Matrix homeserver.
  • WeCom (WeWork): Enterprise messaging integration for WeCom workspaces.
  • WeChat: Personal messaging via the WeChat AI bot platform.
  • Email: Connect via SMTP providers, Mailgun, or Gmail OAuth (configured through Email Providers).
  • Web: Built-in chat interface for immediate access.

General Setup Flow

  1. Create an external app/bot: Register your bot on the target platform (e.g., via BotFather on Telegram).
  2. Obtain credentials: Fetch API tokens, App IDs, or secrets.
  3. Configure in Memoh: Add the channel to your Bot's Platforms tab and paste the credentials.
  4. Enable: Activate the channel to start receiving and sending messages.

Choose a channel from the sidebar to see detailed configuration guides for each platform.

Published under AGPLv3

- +
Skip to content

Channels Overview

Channels are the gateways that connect your Memoh Bots to the outside world. By configuring channels, you can interact with your bots via your favorite messaging platforms.

Memoh currently supports the following channels:

  • Telegram: Feature-rich integration with streaming and attachment support.
  • Feishu (Lark): Enterprise-ready integration for business workflows.
  • Discord: Community-focused integration for servers and direct messages.
  • QQ: Quick setup for personal DM bots via the dedicated AI bot registration portal.
  • Matrix: Decentralized messaging protocol support for any Matrix homeserver.
  • WeCom (WeWork): Enterprise messaging integration for WeCom workspaces.
  • WeChat: Personal messaging via the WeChat AI bot platform.
  • Email: Connect via SMTP providers, Mailgun, or Gmail OAuth (configured through Email Providers).
  • Web: Built-in chat interface for immediate access.

General Setup Flow

  1. Create an external app/bot: Register your bot on the target platform (e.g., via BotFather on Telegram).
  2. Obtain credentials: Fetch API tokens, App IDs, or secrets.
  3. Configure in Memoh: Add the channel to your Bot's Platforms tab and paste the credentials.
  4. Enable: Activate the channel to start receiving and sending messages.

Choose a channel from the sidebar to see detailed configuration guides for each platform.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/matrix.html b/channels/matrix.html index 4d1f648c..f05d9fdb 100644 --- a/channels/matrix.html +++ b/channels/matrix.html @@ -6,12 +6,12 @@ Matrix Channel Configuration | Memoh Documentation - + - + - + @@ -19,7 +19,7 @@ -
Skip to content

Matrix Channel Configuration

Connecting your Memoh Bot to Matrix allows it to communicate via the decentralized Matrix messaging protocol. Your bot can join rooms, respond to direct messages, and participate in group conversations on any Matrix homeserver.

Step 1: Create a Matrix Bot Account

  1. Register a new account on your Matrix homeserver (e.g., via Element or any Matrix client).
  2. Note the User ID (e.g., @mybot:matrix.org).
  3. Obtain an Access Token for the account. You can do this by:
  • Option A: Using the Matrix Client Login API
bash
curl -X POST "https://<homeserver>/_matrix/client/v3/login" \
+    
Skip to content

Matrix Channel Configuration

Connecting your Memoh Bot to Matrix allows it to communicate via the decentralized Matrix messaging protocol. Your bot can join rooms, respond to direct messages, and participate in group conversations on any Matrix homeserver.

Step 1: Create a Matrix Bot Account

  1. Register a new account on your Matrix homeserver (e.g., via Element or any Matrix client).
  2. Note the User ID (e.g., @mybot:matrix.org).
  3. Obtain an Access Token for the account. You can do this by:
  • Option A: Using the Matrix Client Login API
bash
curl -X POST "https://<homeserver>/_matrix/client/v3/login" \
   -H "Content-Type: application/json" \
   -d '{
     "type": "m.login.password",
@@ -28,8 +28,8 @@
       "user": "<username>"
     },
     "password": "<password>"
-  }'
  • Option B: Extract from a client

Important: Keep the access token secret. Anyone with this token can act as your bot account.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select Matrix.
  3. Fill in the required fields:
FieldRequiredDescription
Homeserver URLYesThe base URL of your Matrix homeserver (e.g., https://matrix.org).
Access TokenYesThe bot account's access token.
User IDYesThe bot's Matrix user ID (e.g., @mybot:matrix.org).
Sync TimeoutNoLong-polling timeout in seconds (default: 30).
Auto Join InvitesNoAutomatically join rooms when invited (default: enabled).
  1. Click Save and Enable.

Step 3: Invite the Bot

  1. Open your Matrix client (Element, etc.).
  2. Invite the bot's user ID to a room, or start a direct message.
  3. If Auto Join Invites is enabled, the bot will automatically accept and join.

Features Supported

  • Message Content: Full access to text messages.
  • Rooms: Join and participate in group rooms.
  • Direct Messages: Private conversations with individual users.
  • Streaming: Responses are streamed as they are generated.
  • Markdown: Support for formatted text.
  • Media/Attachment: Bots can receive and send files or photo.
  • Check the roadmap for more features of Matrix.

Official Resources

Published under AGPLv3

- + }'
  • Option B: Extract from a client

Important: Keep the access token secret. Anyone with this token can act as your bot account.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select Matrix.
  3. Fill in the required fields:
FieldRequiredDescription
Homeserver URLYesThe base URL of your Matrix homeserver (e.g., https://matrix.org).
Access TokenYesThe bot account's access token.
User IDYesThe bot's Matrix user ID (e.g., @mybot:matrix.org).
Sync TimeoutNoLong-polling timeout in seconds (default: 30).
Auto Join InvitesNoAutomatically join rooms when invited (default: enabled).
  1. Click Save and Enable.

Step 3: Invite the Bot

  1. Open your Matrix client (Element, etc.).
  2. Invite the bot's user ID to a room, or start a direct message.
  3. If Auto Join Invites is enabled, the bot will automatically accept and join.

Features Supported

  • Message Content: Full access to text messages.
  • Rooms: Join and participate in group rooms.
  • Direct Messages: Private conversations with individual users.
  • Streaming: Responses are streamed as they are generated.
  • Markdown: Support for formatted text.
  • Media/Attachment: Bots can receive and send files or photo.
  • Check the roadmap for more features of Matrix.

Official Resources

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/qq.html b/channels/qq.html index a3a4f13f..a901dbfe 100644 --- a/channels/qq.html +++ b/channels/qq.html @@ -6,12 +6,12 @@ QQ Channel Configuration | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

QQ Channel Configuration

Connecting your Memoh Bot to QQ allows it to interact with users through QQ's official Bot platform.

Step 1: Create a QQ Bot

  1. Go to the QQ Bot Open Platform and log in with your QQ account.
  2. Click Create Bot (创建机器人) - no approval required. Each account can create up to 5 bots.
  3. Copy the AppID and AppSecret displayed on the page.

Important: AppSecret is only shown once. Save it securely - viewing it again will force a reset.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select QQ.
  3. Paste your AppID and AppSecret.
  4. Configure optional settings:
    • Markdown Support: Enable Markdown formatting (default: enabled).
    • Enable Input Hint: Show typing indicators (default: enabled).
  5. Click Save and Enable.

Step 3: Bind Your Identity (Optional)

Binding your QQ identity to your Memoh account enables cross-platform identity recognition — the bot will know who you are regardless of which channel you use.

  1. In Memoh Web UI, go to Profile > Bind Code.
  2. Select QQ and click Generate.
  3. Copy the code and send it to your bot in a QQ direct message.

Features Supported

  • Message Content: Full support for text messages.
  • Markdown: Rich formatting with bold, italic, code blocks, and links.
  • Attachments: Support for images and files.
  • Typing Indicators: Visual feedback while generating responses.
  • Target Types: C2C (direct message), group, and channel.

Official Resources

Published under AGPLv3

- +
Skip to content

QQ Channel Configuration

Connecting your Memoh Bot to QQ allows it to interact with users through QQ's official Bot platform.

Step 1: Create a QQ Bot

  1. Go to the QQ Bot Open Platform and log in with your QQ account.
  2. Click Create Bot (创建机器人) - no approval required. Each account can create up to 5 bots.
  3. Copy the AppID and AppSecret displayed on the page.

Important: AppSecret is only shown once. Save it securely - viewing it again will force a reset.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select QQ.
  3. Paste your AppID and AppSecret.
  4. Configure optional settings:
    • Markdown Support: Enable Markdown formatting (default: enabled).
    • Enable Input Hint: Show typing indicators (default: enabled).
  5. Click Save and Enable.

Step 3: Bind Your Identity (Optional)

Binding your QQ identity to your Memoh account enables cross-platform identity recognition — the bot will know who you are regardless of which channel you use.

  1. In Memoh Web UI, go to Profile > Bind Code.
  2. Select QQ and click Generate.
  3. Copy the code and send it to your bot in a QQ direct message.

Features Supported

  • Message Content: Full support for text messages.
  • Markdown: Rich formatting with bold, italic, code blocks, and links.
  • Attachments: Support for images and files.
  • Typing Indicators: Visual feedback while generating responses.
  • Target Types: C2C (direct message), group, and channel.

Official Resources

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/telegram.html b/channels/telegram.html index fc88ebe7..c093cec4 100644 --- a/channels/telegram.html +++ b/channels/telegram.html @@ -6,12 +6,12 @@ Telegram Channel Configuration | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Telegram Channel Configuration

This guide walks you through connecting your Memoh Bot to Telegram. Telegram is one of the most supported platforms in Memoh, featuring streaming responses, Markdown formatting, and attachment support.

Step 1: Create a Telegram Bot

You need to create a bot on Telegram to get an API token.

  1. Open Telegram and search for the official @BotFather bot.
  2. Send the /newbot command.
  3. Follow the prompts:
    • Name: Choose a display name for your bot (e.g., My Memoh Bot).
    • Username: Choose a unique username ending in bot (e.g., my_memoh_bot).
  4. BotFather will provide you with an API Token (e.g., 123456789:ABCdefGHIjklMNOpqrsTUVwxyz). Keep this token secret.

Official Guide: Telegram Bot Tutorial

Step 2: Configure Memoh

  1. Go to your Bot's Detail Page in the Memoh Web UI.
  2. Select the Platforms tab.
  3. Click Add Channel and select Telegram.
  4. Paste your API Token into the credentials field.
  5. Click Save and Enable.

Step 3: Bind Your Identity (Optional)

Binding your Telegram identity to your Memoh account enables cross-platform identity recognition — the bot will know who you are regardless of which channel you use.

  1. In Memoh Web UI, go to Profile > Bind Code.
  2. Select Telegram and click Generate.
  3. Copy the code.
  4. Open a chat with your new bot on Telegram and send the bind code.
  5. The bot should respond that your identity is successfully linked.

Features Supported

  • Streaming: Responses appear as the bot "thinks."
  • Markdown: Support for bold, italic, code blocks, and links.
  • Attachments: Send images or files to the bot; the bot can also send files back.
  • Replies: The bot understands context from message replies.

Published under AGPLv3

- +
Skip to content

Telegram Channel Configuration

This guide walks you through connecting your Memoh Bot to Telegram. Telegram is one of the most supported platforms in Memoh, featuring streaming responses, Markdown formatting, and attachment support.

Step 1: Create a Telegram Bot

You need to create a bot on Telegram to get an API token.

  1. Open Telegram and search for the official @BotFather bot.
  2. Send the /newbot command.
  3. Follow the prompts:
    • Name: Choose a display name for your bot (e.g., My Memoh Bot).
    • Username: Choose a unique username ending in bot (e.g., my_memoh_bot).
  4. BotFather will provide you with an API Token (e.g., 123456789:ABCdefGHIjklMNOpqrsTUVwxyz). Keep this token secret.

Official Guide: Telegram Bot Tutorial

Step 2: Configure Memoh

  1. Go to your Bot's Detail Page in the Memoh Web UI.
  2. Select the Platforms tab.
  3. Click Add Channel and select Telegram.
  4. Paste your API Token into the credentials field.
  5. Click Save and Enable.

Step 3: Bind Your Identity (Optional)

Binding your Telegram identity to your Memoh account enables cross-platform identity recognition — the bot will know who you are regardless of which channel you use.

  1. In Memoh Web UI, go to Profile > Bind Code.
  2. Select Telegram and click Generate.
  3. Copy the code.
  4. Open a chat with your new bot on Telegram and send the bind code.
  5. The bot should respond that your identity is successfully linked.

Features Supported

  • Streaming: Responses appear as the bot "thinks."
  • Markdown: Support for bold, italic, code blocks, and links.
  • Attachments: Send images or files to the bot; the bot can also send files back.
  • Replies: The bot understands context from message replies.

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/wecom.html b/channels/wecom.html index b53e56bc..0c382d93 100644 --- a/channels/wecom.html +++ b/channels/wecom.html @@ -6,12 +6,12 @@ WeCom (WeWork) Channel Configuration | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

WeCom (WeWork) Channel Configuration

Connecting your Memoh Bot to WeCom (企业微信) allows it to interact with users within your organization's WeCom workspace.

Step 1: Create a WeCom Bot

  1. Log in to the WeCom Admin Console.
  2. Navigate to App Management > Custom Apps or Bot Management.
  3. Create a new bot application.
  4. Note the Bot ID and Secret credentials.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select WeCom.
  3. Fill in the required fields:
FieldRequiredDescription
Bot IDYesThe WeCom bot identifier.
SecretYesThe bot's authentication credential.
WebSocket URLNoCustom WebSocket endpoint (uses default if empty).
  1. Click Save and Enable.

Step 3: Start Chatting

Once the channel is enabled, the bot will connect to WeCom via WebSocket and begin receiving messages. Users in your WeCom workspace can send messages to the bot directly or in group chats.

Features Supported

  • Message Content: Full support for text messages.
  • Direct Messages: Private conversations with individual users.
  • Group Chats: Participate in group conversations.
  • Streaming: Responses are streamed in real-time.

Official Resources

Published under AGPLv3

- +
Skip to content

WeCom (WeWork) Channel Configuration

Connecting your Memoh Bot to WeCom (企业微信) allows it to interact with users within your organization's WeCom workspace.

Step 1: Create a WeCom Bot

  1. Log in to the WeCom Admin Console.
  2. Navigate to App Management > Custom Apps or Bot Management.
  3. Create a new bot application.
  4. Note the Bot ID and Secret credentials.

Step 2: Configure Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select WeCom.
  3. Fill in the required fields:
FieldRequiredDescription
Bot IDYesThe WeCom bot identifier.
SecretYesThe bot's authentication credential.
WebSocket URLNoCustom WebSocket endpoint (uses default if empty).
  1. Click Save and Enable.

Step 3: Start Chatting

Once the channel is enabled, the bot will connect to WeCom via WebSocket and begin receiving messages. Users in your WeCom workspace can send messages to the bot directly or in group chats.

Features Supported

  • Message Content: Full support for text messages.
  • Direct Messages: Private conversations with individual users.
  • Group Chats: Participate in group conversations.
  • Streaming: Responses are streamed in real-time.

Official Resources

Published under AGPLv3

+ \ No newline at end of file diff --git a/channels/weixin.html b/channels/weixin.html index 4e5254e3..52f7a39d 100644 --- a/channels/weixin.html +++ b/channels/weixin.html @@ -6,12 +6,12 @@ WeChat Channel Configuration | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

WeChat Channel Configuration

Connecting your Memoh Bot to WeChat allows it to interact with users directly via WeChat personal messaging. Setup is simple — just scan a QR code.

Step 1: Add WeChat Channel in Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select WeChat.

Step 2: Scan the QR Code

  1. Click Start QR Login. Memoh will fetch a QR code from the WeChat platform.
  2. Open WeChat on your phone and scan the displayed QR code.
  3. Confirm the login on your phone when prompted.
  4. Once confirmed, Memoh automatically saves the credentials — no manual token or API key entry is needed.

The QR code has a limited validity window. If it expires before you scan, click Start QR Login again to get a fresh one.

Step 3: Start Chatting

After the QR login succeeds, the channel is automatically enabled. Users can now send messages to the bot directly in WeChat.

Optional Settings

FieldDescription
Enable TypingShow typing indicators while generating responses.

Features Supported

  • Message Content: Full support for text messages.
  • Direct Messages: Private conversations with individual users.
  • Attachments: Support for images and media.
  • Typing Indicators: Visual feedback while generating responses (when enabled).

Published under AGPLv3

- +
Skip to content

WeChat Channel Configuration

Connecting your Memoh Bot to WeChat allows it to interact with users directly via WeChat personal messaging. Setup is simple — just scan a QR code.

Step 1: Add WeChat Channel in Memoh

  1. Go to your Bot's Platforms tab in the Memoh Web UI.
  2. Click Add Channel and select WeChat.

Step 2: Scan the QR Code

  1. Click Start QR Login. Memoh will fetch a QR code from the WeChat platform.
  2. Open WeChat on your phone and scan the displayed QR code.
  3. Confirm the login on your phone when prompted.
  4. Once confirmed, Memoh automatically saves the credentials — no manual token or API key entry is needed.

The QR code has a limited validity window. If it expires before you scan, click Start QR Login again to get a fresh one.

Step 3: Start Chatting

After the QR login succeeds, the channel is automatically enabled. Users can now send messages to the bot directly in WeChat.

Optional Settings

FieldDescription
Enable TypingShow typing indicators while generating responses.

Features Supported

  • Message Content: Full support for text messages.
  • Direct Messages: Private conversations with individual users.
  • Attachments: Support for images and media.
  • Typing Indicators: Visual feedback while generating responses (when enabled).

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/access.html b/getting-started/access.html index a8f2837a..85b364a8 100644 --- a/getting-started/access.html +++ b/getting-started/access.html @@ -6,12 +6,12 @@ Bot Access Control | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Access Control

Memoh uses an ACL (Access Control List) system to control who can interact with your bot. You can define prioritized rules to allow or deny specific users, channel identities, or entire channel types — all from the bot's Access tab.


Concepts

Default Effect

Each bot has a default effect (allow or deny) that applies when no ACL rule matches an incoming message. Configure this in the bot's General tab under ACL Default Effect.

  • Allow: Anyone can chat with the bot unless explicitly denied by a rule.
  • Deny: Only the bot owner, admins, and explicitly allowed subjects can chat.

Subject Types

ACL rules can target three kinds of subjects:

SubjectDescription
AllMatches every incoming message regardless of sender. Use this for global allow/deny rules.
Channel IdentityA specific identity on an external channel (e.g., a Telegram user, a Discord member). Useful for controlling access at the individual level.
Channel TypeAn entire channel platform (e.g., all Telegram users, all Discord users). Useful for platform-level access control.

Rule Effects

Each rule has an effect:

  • Allow — Grants the subject permission to chat with the bot.
  • Deny — Blocks the subject from chatting with the bot.

Priority-Based Evaluation

Rules are evaluated in priority order (top to bottom). The first matching rule determines the outcome:

  1. Bot owner or system admin → Always allowed (bypasses ACL).
  2. Rules are checked from highest priority (top) to lowest (bottom).
  3. The first rule whose subject matches the sender is applied.
  4. If no rule matches → the default effect is applied.

This means rule ordering matters. A deny rule placed above an allow rule will take precedence for matching subjects.


Managing Access

Open a bot's Access tab to configure its access control.

Adding Rules

  1. Click Add Rule.
  2. Select a subject type:
    • All: Applies to everyone.
    • Channel Identity: Search and select a specific channel identity the bot has seen before.
    • Channel Type: Select an entire channel platform.
  3. Choose the effect: allow or deny.
  4. Optionally set source scope to restrict the rule to a specific context:
    • Channel: Only applies when the message comes from a specific channel config.
    • Conversation Type: private, group, or thread.
    • Conversation ID: A specific chat/group ID.
    • Thread ID: A specific thread within a conversation (requires Conversation ID).
  5. Click Save.

Reordering Rules

Rules can be drag-and-dropped to change their priority. Higher rules (closer to the top) are evaluated first. After reordering, click Save to persist the new order.

Source Scope

Source scope lets you create fine-grained rules. For example:

  • Allow a user to chat only via Telegram, but not Discord.
  • Block an entire channel type only in group conversations.
  • Restrict access to a specific thread in a specific group.

Scope fields form a hierarchy: Channel → Conversation Type → Conversation ID → Thread ID. Each level is optional, but a Thread ID requires a Conversation ID.


Examples

Open Bot (Anyone Can Chat)

  1. Set ACL Default Effect to allow in the General tab.
  2. No rules needed — everyone is allowed by default.

Private Bot with Selected Users

  1. Set ACL Default Effect to deny.
  2. Add allow rules for each authorized channel identity.
  3. Only listed subjects (plus the bot owner and admins) can trigger the bot.

Open Bot with Blocked Users

  1. Set ACL Default Effect to allow.
  2. Add deny rules for problematic channel identities at the top of the list.
  3. Everyone except denied subjects can chat with the bot.

Platform-Specific Access

  1. Set ACL Default Effect to deny.
  2. Add an allow rule with subject type Channel Type set to telegram.
  3. Only Telegram users can chat with the bot — messages from other channels are denied.

Channel-Scoped Access

  1. Add an allow rule for a specific channel identity.
  2. Set the Source Scope channel to your Telegram channel config.
  3. The user can only chat with the bot via that specific Telegram channel.

Published under AGPLv3

- +
Skip to content

Bot Access Control

Memoh uses an ACL (Access Control List) system to control who can interact with your bot. You can define prioritized rules to allow or deny specific users, channel identities, or entire channel types — all from the bot's Access tab.


Concepts

Default Effect

Each bot has a default effect (allow or deny) that applies when no ACL rule matches an incoming message. Configure this in the bot's General tab under ACL Default Effect.

  • Allow: Anyone can chat with the bot unless explicitly denied by a rule.
  • Deny: Only the bot owner, admins, and explicitly allowed subjects can chat.

Subject Types

ACL rules can target three kinds of subjects:

SubjectDescription
AllMatches every incoming message regardless of sender. Use this for global allow/deny rules.
Channel IdentityA specific identity on an external channel (e.g., a Telegram user, a Discord member). Useful for controlling access at the individual level.
Channel TypeAn entire channel platform (e.g., all Telegram users, all Discord users). Useful for platform-level access control.

Rule Effects

Each rule has an effect:

  • Allow — Grants the subject permission to chat with the bot.
  • Deny — Blocks the subject from chatting with the bot.

Priority-Based Evaluation

Rules are evaluated in priority order (top to bottom). The first matching rule determines the outcome:

  1. Bot owner or system admin → Always allowed (bypasses ACL).
  2. Rules are checked from highest priority (top) to lowest (bottom).
  3. The first rule whose subject matches the sender is applied.
  4. If no rule matches → the default effect is applied.

This means rule ordering matters. A deny rule placed above an allow rule will take precedence for matching subjects.


Managing Access

Open a bot's Access tab to configure its access control.

Adding Rules

  1. Click Add Rule.
  2. Select a subject type:
    • All: Applies to everyone.
    • Channel Identity: Search and select a specific channel identity the bot has seen before.
    • Channel Type: Select an entire channel platform.
  3. Choose the effect: allow or deny.
  4. Optionally set source scope to restrict the rule to a specific context:
    • Channel: Only applies when the message comes from a specific channel config.
    • Conversation Type: private, group, or thread.
    • Conversation ID: A specific chat/group ID.
    • Thread ID: A specific thread within a conversation (requires Conversation ID).
  5. Click Save.

Reordering Rules

Rules can be drag-and-dropped to change their priority. Higher rules (closer to the top) are evaluated first. After reordering, click Save to persist the new order.

Source Scope

Source scope lets you create fine-grained rules. For example:

  • Allow a user to chat only via Telegram, but not Discord.
  • Block an entire channel type only in group conversations.
  • Restrict access to a specific thread in a specific group.

Scope fields form a hierarchy: Channel → Conversation Type → Conversation ID → Thread ID. Each level is optional, but a Thread ID requires a Conversation ID.


Examples

Open Bot (Anyone Can Chat)

  1. Set ACL Default Effect to allow in the General tab.
  2. No rules needed — everyone is allowed by default.

Private Bot with Selected Users

  1. Set ACL Default Effect to deny.
  2. Add allow rules for each authorized channel identity.
  3. Only listed subjects (plus the bot owner and admins) can trigger the bot.

Open Bot with Blocked Users

  1. Set ACL Default Effect to allow.
  2. Add deny rules for problematic channel identities at the top of the list.
  3. Everyone except denied subjects can chat with the bot.

Platform-Specific Access

  1. Set ACL Default Effect to deny.
  2. Add an allow rule with subject type Channel Type set to telegram.
  3. Only Telegram users can chat with the bot — messages from other channels are denied.

Channel-Scoped Access

  1. Add an allow rule for a specific channel identity.
  2. Set the Source Scope channel to your Telegram channel config.
  3. The user can only chat with the bot via that specific Telegram channel.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/bot.html b/getting-started/bot.html index d031d033..c3bf8af7 100644 --- a/getting-started/bot.html +++ b/getting-started/bot.html @@ -6,12 +6,12 @@ Bot Management | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Management

A Bot is an independent AI agent that comes with its own isolated container, persistent memory, and configurable personality. Bots can chat via various messaging platforms (Channels) and perform complex tasks using specialized tools.

Creating a Bot

  1. Navigate to the Bots page from the sidebar.
  2. Click the Create Bot button.
  3. Fill in the basic info:
    • Display Name: The name users will see in chats.
    • Avatar: A URL for the bot's profile picture.
  4. Click Create.

Bot Detail Page

Once created, clicking on a bot card takes you to its Detail Page, where you can manage its entire lifecycle through specialized tabs.

Tab Overview

TabDescription
OverviewHealth checks for container, database, channels, and memory.
GeneralCore settings: models, providers, reasoning, heartbeat, compaction, and danger zone.
ContainerContainer lifecycle (create/start/stop), snapshots, data export/import.
MemoryBrowse, search, create, edit, and compact memories.
PlatformsChannel configurations (Telegram, Discord, Feishu, QQ, Matrix, WeCom, WeChat, Web).
AccessACL rules — control who can chat with the bot.
EmailEmail bindings and outbox.
TerminalInteractive terminal access to the bot's container.
FilesFile manager for the bot's container filesystem.
MCPMCP connection management (Stdio, Remote, OAuth).
HeartbeatHeartbeat configuration and execution logs.
CompactionMemory compaction logs.
ScheduleCron-based scheduled tasks and execution logs.
SkillsMarkdown-based skill files that define bot personality and capabilities.

Configuring the Bot's Core Settings

After creating a bot, the most important step is configuring its runtime settings. These define how the bot talks, remembers, searches, and uses browser automation.

  1. Navigate to your bot's Detail Page.
  2. Go to the General tab.
  3. Configure the core fields:
    • Chat Model: Used for standard conversations with users.
    • Memory Provider: Select the memory backend the bot should use.
    • Search Provider: Select the search engine provider for web search.
    • Browser Context: Select the browser profile the bot should use for browser automation.
  4. Click Save at the bottom of the form.

If you have not created these resources yet, set them up first:


General Tab Reference

The General tab contains all the core parameters that define your bot's behavior and runtime configuration.

FieldDescription
Chat ModelThe main LLM used for generating chat responses.
Memory ProviderThe memory backend assigned to the bot. The built-in provider can optionally define its own memory and embedding models.
Search ProviderThe search engine used for web browsing capabilities.
Browser ContextThe browser environment used for web automation, such as viewport, locale, and mobile behavior.
LanguageThe bot's primary communication language.
Reasoning EnabledIf the selected model supports reasoning (like OpenAI o1), enable this to use its deep thinking capabilities.
Reasoning EffortSet the level of reasoning effort (low, medium, high).
Heartbeat EnabledToggle periodic autonomous activity.
Heartbeat IntervalHow often (in minutes) the heartbeat triggers.
Heartbeat ModelThe LLM used for heartbeat tasks (can differ from the chat model).
Compaction EnabledToggle automatic memory compaction.
Compaction ModelThe LLM used for memory compaction.
ACL Default EffectDefault access control behavior (allow or deny) when no ACL rule matches.

Terminal Tab

The Terminal tab provides interactive shell access to the bot's container:

  • Open multiple terminal tabs simultaneously.
  • Execute commands directly inside the container.
  • Requires the container to be running.

Deleting a Bot

To permanently remove a bot and all its associated data (including container files and memory):

  1. Navigate to the General tab in the Bot Detail page.
  2. Scroll to the Danger Zone at the bottom.
  3. Click Delete Bot and confirm the action.

Warning: This action is irreversible. All persistent data for this bot will be lost.

Published under AGPLv3

- +
Skip to content

Bot Management

A Bot is an independent AI agent that comes with its own isolated container, persistent memory, and configurable personality. Bots can chat via various messaging platforms (Channels) and perform complex tasks using specialized tools.

Creating a Bot

  1. Navigate to the Bots page from the sidebar.
  2. Click the Create Bot button.
  3. Fill in the basic info:
    • Display Name: The name users will see in chats.
    • Avatar: A URL for the bot's profile picture.
  4. Click Create.

Bot Detail Page

Once created, clicking on a bot card takes you to its Detail Page, where you can manage its entire lifecycle through specialized tabs.

Tab Overview

TabDescription
OverviewHealth checks for container, database, channels, and memory.
GeneralCore settings: models, providers, reasoning, heartbeat, compaction, and danger zone.
ContainerContainer lifecycle (create/start/stop), snapshots, data export/import.
MemoryBrowse, search, create, edit, and compact memories.
PlatformsChannel configurations (Telegram, Discord, Feishu, QQ, Matrix, WeCom, WeChat, Web).
AccessACL rules — control who can chat with the bot.
EmailEmail bindings and outbox.
TerminalInteractive terminal access to the bot's container.
FilesFile manager for the bot's container filesystem.
MCPMCP connection management (Stdio, Remote, OAuth).
HeartbeatHeartbeat configuration and execution logs.
CompactionMemory compaction logs.
ScheduleCron-based scheduled tasks and execution logs.
SkillsMarkdown-based skill files that define bot personality and capabilities.

Configuring the Bot's Core Settings

After creating a bot, the most important step is configuring its runtime settings. These define how the bot talks, remembers, searches, and uses browser automation.

  1. Navigate to your bot's Detail Page.
  2. Go to the General tab.
  3. Configure the core fields:
    • Chat Model: Used for standard conversations with users.
    • Memory Provider: Select the memory backend the bot should use.
    • Search Provider: Select the search engine provider for web search.
    • Browser Context: Select the browser profile the bot should use for browser automation.
  4. Click Save at the bottom of the form.

If you have not created these resources yet, set them up first:


General Tab Reference

The General tab contains all the core parameters that define your bot's behavior and runtime configuration.

FieldDescription
Chat ModelThe main LLM used for generating chat responses.
Memory ProviderThe memory backend assigned to the bot. The built-in provider can optionally define its own memory and embedding models.
Search ProviderThe search engine used for web browsing capabilities.
Browser ContextThe browser environment used for web automation, such as viewport, locale, and mobile behavior.
LanguageThe bot's primary communication language.
Reasoning EnabledIf the selected model supports reasoning (like OpenAI o1), enable this to use its deep thinking capabilities.
Reasoning EffortSet the level of reasoning effort (low, medium, high).
Heartbeat EnabledToggle periodic autonomous activity.
Heartbeat IntervalHow often (in minutes) the heartbeat triggers.
Heartbeat ModelThe LLM used for heartbeat tasks (can differ from the chat model).
Compaction EnabledToggle automatic memory compaction.
Compaction ModelThe LLM used for memory compaction.
ACL Default EffectDefault access control behavior (allow or deny) when no ACL rule matches.

Terminal Tab

The Terminal tab provides interactive shell access to the bot's container:

  • Open multiple terminal tabs simultaneously.
  • Execute commands directly inside the container.
  • Requires the container to be running.

Deleting a Bot

To permanently remove a bot and all its associated data (including container files and memory):

  1. Navigate to the General tab in the Bot Detail page.
  2. Scroll to the Danger Zone at the bottom.
  3. Click Delete Bot and confirm the action.

Warning: This action is irreversible. All persistent data for this bot will be lost.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/browser.html b/getting-started/browser.html index d29fbd58..b13e81b3 100644 --- a/getting-started/browser.html +++ b/getting-started/browser.html @@ -6,12 +6,12 @@ Browser Contexts | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Browser Contexts

Memoh can give a bot access to a headless browser through the Browser Gateway. A Browser Context stores the browser environment a bot should use, such as viewport size, locale, timezone, and mobile behavior.

Once a browser context is assigned to a bot, the bot can use browser tools to open pages, click elements, fill forms, capture screenshots, and inspect page content.


Concept: Browser Gateway

The Browser Gateway is powered by Playwright and provides browser automation for bots. In practice, a browser context acts like a reusable browser profile configuration for one or more bots.

Typical use cases include:

  • Navigating websites
  • Clicking buttons and links
  • Filling and submitting forms
  • Reading rendered page content
  • Capturing screenshots or PDFs

Creating a Browser Context

Manage contexts from the Browser Contexts page in the sidebar.

  1. Navigate to the Browser Contexts page.
  2. Click Add Browser Context.
  3. Fill in the following field:
    • Name: A display name for this browser context.
  4. Click Create.

Configuring a Browser Context

After creating a context, select it from the sidebar and update its settings.

FieldDescription
NameThe display name shown in the UI.
CoreBrowser engine: chromium (default) or firefox.
Viewport WidthBrowser viewport width in pixels.
Viewport HeightBrowser viewport height in pixels.
User AgentOptional custom browser user agent string.
Device Scale FactorOptional device pixel ratio.
LocaleOptional locale such as en-US or zh-CN.
Timezone IDOptional timezone such as UTC or Asia/Shanghai.
Is MobileEnables mobile-style browser behavior.
Ignore HTTPS ErrorsAllows navigation to sites with invalid HTTPS certificates.

Managing Contexts

  • Edit: Select a context and update its configuration.
  • Delete: Remove a context you no longer use.

Assigning a Browser Context to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Browser Context dropdown.
  4. Select the context you created.
  5. Click Save.

After saving, the bot can use that browser context when browser tools are invoked.


Bot Interaction

When a browser context is configured, the bot can use built-in browser tools such as:

  • browser_action: perform actions like navigation, click, fill, select, scroll, tab management, screenshot, or PDF export
  • browser_observe: inspect the current page and gather information for the model

This lets the bot interact with real websites instead of relying only on static HTML or search results.


Browser Core Selection

Memoh's browser image can include Chromium, Firefox, or both. The available cores are determined at build time by the BROWSER_CORES build argument.

The install script prompts for browser core selection during setup. To rebuild manually with specific cores:

bash
BROWSER_CORES=chromium docker compose --profile browser build browser

Valid values for BROWSER_CORES: chromium, firefox, chromium,firefox (default).


Next Steps

Published under AGPLv3

- +
Skip to content

Browser Contexts

Memoh can give a bot access to a headless browser through the Browser Gateway. A Browser Context stores the browser environment a bot should use, such as viewport size, locale, timezone, and mobile behavior.

Once a browser context is assigned to a bot, the bot can use browser tools to open pages, click elements, fill forms, capture screenshots, and inspect page content.


Concept: Browser Gateway

The Browser Gateway is powered by Playwright and provides browser automation for bots. In practice, a browser context acts like a reusable browser profile configuration for one or more bots.

Typical use cases include:

  • Navigating websites
  • Clicking buttons and links
  • Filling and submitting forms
  • Reading rendered page content
  • Capturing screenshots or PDFs

Creating a Browser Context

Manage contexts from the Browser Contexts page in the sidebar.

  1. Navigate to the Browser Contexts page.
  2. Click Add Browser Context.
  3. Fill in the following field:
    • Name: A display name for this browser context.
  4. Click Create.

Configuring a Browser Context

After creating a context, select it from the sidebar and update its settings.

FieldDescription
NameThe display name shown in the UI.
CoreBrowser engine: chromium (default) or firefox.
Viewport WidthBrowser viewport width in pixels.
Viewport HeightBrowser viewport height in pixels.
User AgentOptional custom browser user agent string.
Device Scale FactorOptional device pixel ratio.
LocaleOptional locale such as en-US or zh-CN.
Timezone IDOptional timezone such as UTC or Asia/Shanghai.
Is MobileEnables mobile-style browser behavior.
Ignore HTTPS ErrorsAllows navigation to sites with invalid HTTPS certificates.

Managing Contexts

  • Edit: Select a context and update its configuration.
  • Delete: Remove a context you no longer use.

Assigning a Browser Context to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Browser Context dropdown.
  4. Select the context you created.
  5. Click Save.

After saving, the bot can use that browser context when browser tools are invoked.


Bot Interaction

When a browser context is configured, the bot can use built-in browser tools such as:

  • browser_action: perform actions like navigation, click, fill, select, scroll, tab management, screenshot, or PDF export
  • browser_observe: inspect the current page and gather information for the model

This lets the bot interact with real websites instead of relying only on static HTML or search results.


Browser Core Selection

Memoh's browser image can include Chromium, Firefox, or both. The available cores are determined at build time by the BROWSER_CORES build argument.

The install script prompts for browser core selection during setup. To rebuild manually with specific cores:

bash
BROWSER_CORES=chromium docker compose --profile browser build browser

Valid values for BROWSER_CORES: chromium, firefox, chromium,firefox (default).


Next Steps

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/channels.html b/getting-started/channels.html index 60d47783..291441e6 100644 --- a/getting-started/channels.html +++ b/getting-started/channels.html @@ -6,12 +6,12 @@ Bot Channels | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Channels

Channels connect your Bot to various messaging platforms, allowing you to interact with it using your favorite chat applications.

Concept: Unified Communication

Memoh acts as a hub that bridges different messaging services. You can configure multiple channels for a single bot, enabling it to chat on Telegram, Discord, Matrix, and more simultaneously.


Supported Channels

Configure your bot's connections from the Platforms tab in the Bot Detail page.

Platform Guides

For detailed step-by-step guides on how to create and configure bots for each platform, see:


Configuration Flow

1. Adding a Channel

  1. Click Add Channel.
  2. Select the platform from the list.
  3. Fill in the required credentials and configuration. The fields are dynamic and change based on the selected channel.

2. Common Fields

FieldDescription
CredentialsAPI tokens, secrets, or bot keys provided by the platform.
DisabledQuickly enable or disable a channel without removing its configuration.
RoutingConfigure how messages are mapped between the platform and Memoh.

3. Special Case: Feishu Webhook

If using Feishu in webhook inbound mode:

  1. Memoh will generate a Webhook Callback URL.
  2. Copy this URL and paste it into your Feishu App's event configuration.
  3. This allows Feishu to send messages directly to Memoh.

4. Special Case: WeChat QR Code

If using WeChat:

  1. After enabling the channel, a QR code flow is provided for connecting.
  2. Scan the QR code with WeChat to link the bot.

Operations

  • Save: Update the configuration.
  • Save and Enable: Update and immediately activate the channel.
  • Enable/Disable Toggle: Switch the channel's active status.
  • Delete: Permanently remove a channel's configuration.

Published under AGPLv3

- +
Skip to content

Bot Channels

Channels connect your Bot to various messaging platforms, allowing you to interact with it using your favorite chat applications.

Concept: Unified Communication

Memoh acts as a hub that bridges different messaging services. You can configure multiple channels for a single bot, enabling it to chat on Telegram, Discord, Matrix, and more simultaneously.


Supported Channels

Configure your bot's connections from the Platforms tab in the Bot Detail page.

Platform Guides

For detailed step-by-step guides on how to create and configure bots for each platform, see:


Configuration Flow

1. Adding a Channel

  1. Click Add Channel.
  2. Select the platform from the list.
  3. Fill in the required credentials and configuration. The fields are dynamic and change based on the selected channel.

2. Common Fields

FieldDescription
CredentialsAPI tokens, secrets, or bot keys provided by the platform.
DisabledQuickly enable or disable a channel without removing its configuration.
RoutingConfigure how messages are mapped between the platform and Memoh.

3. Special Case: Feishu Webhook

If using Feishu in webhook inbound mode:

  1. Memoh will generate a Webhook Callback URL.
  2. Copy this URL and paste it into your Feishu App's event configuration.
  3. This allows Feishu to send messages directly to Memoh.

4. Special Case: WeChat QR Code

If using WeChat:

  1. After enabling the channel, a QR code flow is provided for connecting.
  2. Scan the QR code with WeChat to link the bot.

Operations

  • Save: Update the configuration.
  • Save and Enable: Update and immediately activate the channel.
  • Enable/Disable Toggle: Switch the channel's active status.
  • Delete: Permanently remove a channel's configuration.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/compaction.html b/getting-started/compaction.html index e276ff4f..2a6d11d0 100644 --- a/getting-started/compaction.html +++ b/getting-started/compaction.html @@ -6,12 +6,12 @@ Memory Compaction | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Memory Compaction

As a bot accumulates memories over time, the memory pool can grow large and contain redundant or outdated entries. Memory Compaction is an automated process that consolidates and optimizes the bot's memory store, keeping the most relevant information while reducing noise.


Concept: Why Compact?

Each conversation turn can generate new memory entries. Over weeks or months of use, thousands of memories accumulate. Many of these may overlap, become stale, or lose relevance. Compaction addresses this by:

  • Merging redundant memories — Combining entries that express the same information.
  • Removing outdated entries — Discarding memories that are no longer accurate.
  • Reducing retrieval noise — Fewer, higher-quality memories lead to better search results during chat.

Configuration

Configure compaction from the General tab in the Bot Detail page.

FieldDescription
Compaction EnabledToggle automatic memory compaction on or off.
Compaction ModelThe LLM used to evaluate and merge memories during compaction. This can be different from the chat model.

When enabled, compaction runs periodically as part of the bot's memory maintenance cycle.


Manual Compaction

You can also trigger compaction manually from the bot's Memory tab:

  1. Navigate to the Memory tab in the Bot Detail page.
  2. Click Compact.
  3. Configure the compaction parameters:
    • Ratio — The compression ratio (e.g., 0.8, 0.5, 0.3). Lower values mean more aggressive compaction.
    • Decay Days — Optionally restrict compaction to memories older than a specified number of days.
  4. Click Start Compaction.

Compaction Logs

The Compaction tab in the Bot Detail page provides an audit trail of all compaction runs:

  • Status — Whether the compaction completed successfully, encountered an issue, or failed.
  • Time — When the compaction was triggered.
  • Duration — How long the compaction took.
  • Result — A summary of what was compacted (memories merged, removed, etc.).

Managing Logs

  • Refresh — Reload the log list.
  • Clear Logs — Remove old compaction records.

Relationship to Memory

Compaction works with whatever Memory Provider is assigned to the bot. The compaction process:

  1. Reads all existing memories from the provider.
  2. Uses the configured Compaction Model to evaluate which memories are redundant or stale.
  3. Merges, updates, or removes entries as needed.
  4. Writes the optimized memory set back to the provider.

This process preserves the semantic content of important memories while reducing the total count. After compaction, the bot's memory retrieval becomes faster and more focused.


Next Steps

Published under AGPLv3

- +
Skip to content

Memory Compaction

As a bot accumulates memories over time, the memory pool can grow large and contain redundant or outdated entries. Memory Compaction is an automated process that consolidates and optimizes the bot's memory store, keeping the most relevant information while reducing noise.


Concept: Why Compact?

Each conversation turn can generate new memory entries. Over weeks or months of use, thousands of memories accumulate. Many of these may overlap, become stale, or lose relevance. Compaction addresses this by:

  • Merging redundant memories — Combining entries that express the same information.
  • Removing outdated entries — Discarding memories that are no longer accurate.
  • Reducing retrieval noise — Fewer, higher-quality memories lead to better search results during chat.

Configuration

Configure compaction from the General tab in the Bot Detail page.

FieldDescription
Compaction EnabledToggle automatic memory compaction on or off.
Compaction ModelThe LLM used to evaluate and merge memories during compaction. This can be different from the chat model.

When enabled, compaction runs periodically as part of the bot's memory maintenance cycle.


Manual Compaction

You can also trigger compaction manually from the bot's Memory tab:

  1. Navigate to the Memory tab in the Bot Detail page.
  2. Click Compact.
  3. Configure the compaction parameters:
    • Ratio — The compression ratio (e.g., 0.8, 0.5, 0.3). Lower values mean more aggressive compaction.
    • Decay Days — Optionally restrict compaction to memories older than a specified number of days.
  4. Click Start Compaction.

Compaction Logs

The Compaction tab in the Bot Detail page provides an audit trail of all compaction runs:

  • Status — Whether the compaction completed successfully, encountered an issue, or failed.
  • Time — When the compaction was triggered.
  • Duration — How long the compaction took.
  • Result — A summary of what was compacted (memories merged, removed, etc.).

Managing Logs

  • Refresh — Reload the log list.
  • Clear Logs — Remove old compaction records.

Relationship to Memory

Compaction works with whatever Memory Provider is assigned to the bot. The compaction process:

  1. Reads all existing memories from the provider.
  2. Uses the configured Compaction Model to evaluate which memories are redundant or stale.
  3. Merges, updates, or removes entries as needed.
  4. Writes the optimized memory set back to the provider.

This process preserves the semantic content of important memories while reducing the total count. After compaction, the bot's memory retrieval becomes faster and more focused.


Next Steps

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/container.html b/getting-started/container.html index d243ea87..544ac4e7 100644 --- a/getting-started/container.html +++ b/getting-started/container.html @@ -6,21 +6,21 @@ Bot Container Management | Memoh Documentation - + - + - + - + -
Skip to content

Bot Container Management

Every Bot in Memoh operates within its own isolated container environment. This isolation ensures security, provides a dedicated filesystem, and allows the bot to execute code or commands without affecting other bots or the host system.

Concept: The Isolated Workspace

The container acts as the bot's private "computer." Within it, the bot can:

  • Store and modify files
  • Install software via package managers
  • Execute scripts
  • Maintain state across multiple sessions

Operations

Manage the lifecycle of your bot's environment from the Container tab in the Bot Detail page.

Lifecycle Actions

  • Create: Initialize the container if it doesn't exist (using the configured image). Progress is shown via real-time SSE feedback during image pull and creation.
  • Start: Launch the container. The bot must have a running container to perform many operations like file editing or executing tools.
  • Stop: Gracefully shut down the container to save resources.
  • Delete: Remove the container instance.

Container Information

The Container tab displays real-time data about the bot's runtime:

  • Container ID: Unique identifier for the instance.
  • Status: Whether it's currently running, stopped, or creating.
  • Image: The Docker/Containerd image used as the base.
  • Paths: Host and container paths for data persistence.
  • Tasks: Number of active background tasks running in the container.

Snapshots

Snapshots allow you to capture the current state of the bot's container and restore it later. This is useful for:

  • Saving a known good configuration
  • Versioning the bot's environment
  • Testing complex changes safely

Creating a Snapshot

  1. Ensure the container is stopped or in a stable state.
  2. Click Create Snapshot.
  3. Provide a name for the snapshot.

Restoring a Snapshot

  • Find the desired snapshot in the list and click Restore. This will reset the container to the captured state.

Managing Snapshots

  • View a list of existing snapshots with their creation timestamps and parent relationships.
  • Use the Delete button next to a snapshot to remove it.

Data Export and Import

The Container tab supports exporting and importing container data for backup, migration, or sharing purposes.

Export

  1. Click Export Data.
  2. The container's filesystem data is packaged into a downloadable archive.
  3. Save the archive to your local machine.

Import

  1. Click Import Data.
  2. Select an archive file from your local machine.
  3. The archive contents are extracted into the container's filesystem.

Restore

The Restore operation resets the container's data directory to a clean state. This is useful when the filesystem has become corrupted or you want to start fresh without recreating the container.


Container Versioning

Memoh tracks container versions to manage the lifecycle of the bot's runtime environment. Version information includes:

  • Current Version: The active container version.
  • Version History: A log of container version changes over time.

This helps with auditing and understanding when container configurations were updated.

Published under AGPLv3

- +
Skip to content

Bot Container Management

Every Bot in Memoh operates within its own isolated container environment. This isolation ensures security, provides a dedicated filesystem, and allows the bot to execute code or commands without affecting other bots or the host system.

Concept: The Isolated Workspace

The container acts as the bot's private "computer." Within it, the bot can:

  • Store and modify files
  • Install software via package managers
  • Execute scripts
  • Maintain state across multiple sessions

Operations

Manage the lifecycle of your bot's environment from the Container tab in the Bot Detail page.

Lifecycle Actions

  • Create: Initialize the container if it doesn't exist (using the configured image). Progress is shown via real-time SSE feedback during image pull and creation.
  • Start: Launch the container. The bot must have a running container to perform many operations like file editing or executing tools.
  • Stop: Gracefully shut down the container to save resources.
  • Delete: Remove the container instance.

Container Information

The Container tab displays real-time data about the bot's runtime:

  • Container ID: Unique identifier for the instance.
  • Status: Whether it's currently running, stopped, or creating.
  • Image: The Docker/Containerd image used as the base.
  • Paths: Host and container paths for data persistence.
  • Tasks: Number of active background tasks running in the container.
  • CDI Devices: The effective GPU CDI devices currently attached to the container, if any.

Advanced: Provide CDI Devices

Memoh can provide host devices to a bot container through CDI (Container Device Interface). This is an advanced capability for users who want to expose host-managed devices, most commonly GPUs, to the container runtime.

In the Web UI, this capability is placed under Advanced options in the Container tab. It is optional and only needs to be configured when the bot must access CDI-backed devices from the host.

Configure CDI Devices

  1. Open the Bot's Container tab.
  2. Click Create if the container does not exist, or recreate the container if you need to change GPU settings.
  3. Expand Advanced options.
  4. Enable GPU.
  5. Enter one or more CDI device names in CDI devices.

You can enter CDI device names one per line or separated with commas. Common GPU-related examples:

  • nvidia.com/gpu=0
  • nvidia.com/gpu=all
  • amd.com/gpu=0
  • amd.com/gpu=all

Host Requirements

Before configuring CDI devices in Memoh, the host machine must already provide working device drivers, vendor toolkit support where required, and valid CDI specs. In practice, this usually means:

  • the host GPU works normally outside the container
  • CDI spec files exist under /etc/cdi or /var/run/cdi
  • the device name you enter in Memoh matches a real CDI device on the host

To discover the exact CDI device names exposed by the host, use the vendor tool on the host machine:

  • NVIDIA: nvidia-ctk cdi list
  • AMD: amd-ctk cdi list

If Memoh reports an error such as unresolvable CDI devices, the configured device name does not match any CDI device visible to the container runtime.

Important Behavior

  • CDI device settings are applied when the container is created. Updating the setting later requires recreating the container.
  • Stopping and starting an existing container does not change its attached CDI devices.
  • The container image still needs the appropriate user-space libraries and tools if you want to run CUDA or ROCm software inside the container.
  • After creation, the Container tab shows the effective attached CDI devices for verification.

Snapshots

Snapshots allow you to capture the current state of the bot's container and restore it later. This is useful for:

  • Saving a known good configuration
  • Versioning the bot's environment
  • Testing complex changes safely

Creating a Snapshot

  1. Ensure the container is stopped or in a stable state.
  2. Click Create Snapshot.
  3. Provide a name for the snapshot.

Restoring a Snapshot

  • Find the desired snapshot in the list and click Restore. This will reset the container to the captured state.

Managing Snapshots

  • View a list of existing snapshots with their creation timestamps and parent relationships.
  • Use the Delete button next to a snapshot to remove it.

Data Export and Import

The Container tab supports exporting and importing container data for backup, migration, or sharing purposes.

Export

  1. Click Export Data.
  2. The container's filesystem data is packaged into a downloadable archive.
  3. Save the archive to your local machine.

Import

  1. Click Import Data.
  2. Select an archive file from your local machine.
  3. The archive contents are extracted into the container's filesystem.

Restore

The Restore operation resets the container's data directory to a clean state. This is useful when the filesystem has become corrupted or you want to start fresh without recreating the container.


Container Versioning

Memoh tracks container versions to manage the lifecycle of the bot's runtime environment. Version information includes:

  • Current Version: The active container version.
  • Version History: A log of container version changes over time.

This helps with auditing and understanding when container configurations were updated.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/email.html b/getting-started/email.html index e51d72e6..9d4c1d69 100644 --- a/getting-started/email.html +++ b/getting-started/email.html @@ -6,12 +6,12 @@ Email Providers and Bindings | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Email Providers and Bindings

Memoh allows your Bot to send and receive emails, providing another powerful channel for communication and task management.

Concept: Email as a Bot Channel

Connecting email to your Bot involves two steps:

  1. Email Provider: Configure a connection to an email service (like Mailgun or a generic SMTP server).
  2. Email Binding: Link a specific email address from a provider to a Bot.

Email Provider

Manage your email service connections from the Email Provider page in the sidebar.

Creating a Provider

  1. Navigate to the Email Provider page from the sidebar.
  2. Click Add Email Provider.
  3. Choose the provider type:
    • Mailgun: For high-volume delivery.
    • Generic SMTP: For traditional email servers.
  4. Fill in the required fields (e.g., domain, api_key, host, port, username, password).
  5. Click Create.

Bot Email Bindings

Configure your bot's email capabilities from the Email tab in the Bot Detail page.

Adding a Binding

  1. Click Add Binding.
  2. Select the Email Provider you created.
  3. Provide the Email Address to be associated with the bot.
  4. Set the bot's permissions:
    • Can Read: If enabled, the bot can check and process incoming emails.
    • Can Write: If enabled, the bot can compose and send outgoing emails.
    • Can Delete: If enabled, the bot can manage its own email inbox.
  5. Click Create.

Outbox and History

The Email tab also provides an Outbox showing an audit log of all emails sent by the bot:

  • To: The recipient's email address.
  • Subject: The email's subject line.
  • Status: Whether the email was sent successfully.
  • Sent At: The timestamp of the email delivery.

Bot Interaction

  • The bot can use its email permissions to send reports, respond to user inquiries, or trigger actions based on incoming mail.
  • Outgoing emails are tracked in the outbox for monitoring and troubleshooting.
  • The bot handles email in a structured way, allowing it to "converse" via email just as it does via chat.

Published under AGPLv3

- +
Skip to content

Email Providers and Bindings

Memoh allows your Bot to send and receive emails, providing another powerful channel for communication and task management.

Concept: Email as a Bot Channel

Connecting email to your Bot involves two steps:

  1. Email Provider: Configure a connection to an email service (like Mailgun or a generic SMTP server).
  2. Email Binding: Link a specific email address from a provider to a Bot.

Email Provider

Manage your email service connections from the Email Provider page in the sidebar.

Creating a Provider

  1. Navigate to the Email Provider page from the sidebar.
  2. Click Add Email Provider.
  3. Choose the provider type:
    • Mailgun: For high-volume delivery.
    • Generic SMTP: For traditional email servers.
  4. Fill in the required fields (e.g., domain, api_key, host, port, username, password).
  5. Click Create.

Bot Email Bindings

Configure your bot's email capabilities from the Email tab in the Bot Detail page.

Adding a Binding

  1. Click Add Binding.
  2. Select the Email Provider you created.
  3. Provide the Email Address to be associated with the bot.
  4. Set the bot's permissions:
    • Can Read: If enabled, the bot can check and process incoming emails.
    • Can Write: If enabled, the bot can compose and send outgoing emails.
    • Can Delete: If enabled, the bot can manage its own email inbox.
  5. Click Create.

Outbox and History

The Email tab also provides an Outbox showing an audit log of all emails sent by the bot:

  • To: The recipient's email address.
  • Subject: The email's subject line.
  • Status: Whether the email was sent successfully.
  • Sent At: The timestamp of the email delivery.

Bot Interaction

  • The bot can use its email permissions to send reports, respond to user inquiries, or trigger actions based on incoming mail.
  • Outgoing emails are tracked in the outbox for monitoring and troubleshooting.
  • The bot handles email in a structured way, allowing it to "converse" via email just as it does via chat.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/files.html b/getting-started/files.html index ace048fa..eb82e834 100644 --- a/getting-started/files.html +++ b/getting-started/files.html @@ -6,12 +6,12 @@ Bot Files Management | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Files Management

Every Memoh Bot has its own dedicated filesystem inside its isolated container. You can manage this filesystem directly from the Files tab in the Bot Detail page.


Operations

The FileManager component provides a familiar file-browsing experience with a toolbar, directory tree, and integrated editor.

Browsing and Navigation

  • Breadcrumb Navigation: Quickly move between parent directories.
  • Refresh: Reload the file list to see the latest changes (e.g., files created by the bot).
  • New Folder: Create a directory within the current path.

Managing Files

  • Upload: Select files from your local computer to transfer them into the bot's container.
  • Rename: Click on a file or folder and use the rename action to update its identifier.
  • Delete: Remove files or folders (with recursive support for directories).
  • Download: Retrieve a file from the bot's container back to your local machine.

Viewing and Editing

The integrated FileViewer allows you to interact with the bot's files without leaving the web UI.

Text Files

  • Read/Edit: Click a text file (e.g., .md, .js, .py, .toml) to open it in the built-in Monaco Editor.
  • Syntax Highlighting: Supports common programming languages and configuration formats.
  • Save: Modify the file's content and click Save to apply the changes to the bot's filesystem.

Images

  • Preview: Click an image file (e.g., .png, .jpg, .webp) to see a visual preview directly in the file manager.

Bot Interaction with Files

Remember that the bot itself can also perform these operations:

  • Use its Skills or MCP tools to read, write, and manage its own files.
  • The Files tab is your portal to monitor and manually intervene in the bot's workspace.

Published under AGPLv3

- +
Skip to content

Bot Files Management

Every Memoh Bot has its own dedicated filesystem inside its isolated container. You can manage this filesystem directly from the Files tab in the Bot Detail page.


Operations

The FileManager component provides a familiar file-browsing experience with a toolbar, directory tree, and integrated editor.

Browsing and Navigation

  • Breadcrumb Navigation: Quickly move between parent directories.
  • Refresh: Reload the file list to see the latest changes (e.g., files created by the bot).
  • New Folder: Create a directory within the current path.

Managing Files

  • Upload: Select files from your local computer to transfer them into the bot's container.
  • Rename: Click on a file or folder and use the rename action to update its identifier.
  • Delete: Remove files or folders (with recursive support for directories).
  • Download: Retrieve a file from the bot's container back to your local machine.

Viewing and Editing

The integrated FileViewer allows you to interact with the bot's files without leaving the web UI.

Text Files

  • Read/Edit: Click a text file (e.g., .md, .js, .py, .toml) to open it in the built-in Monaco Editor.
  • Syntax Highlighting: Supports common programming languages and configuration formats.
  • Save: Modify the file's content and click Save to apply the changes to the bot's filesystem.

Images

  • Preview: Click an image file (e.g., .png, .jpg, .webp) to see a visual preview directly in the file manager.

Bot Interaction with Files

Remember that the bot itself can also perform these operations:

  • Use its Skills or MCP tools to read, write, and manage its own files.
  • The Files tab is your portal to monitor and manually intervene in the bot's workspace.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/heartbeat.html b/getting-started/heartbeat.html index 5d37a5c8..d376bdc0 100644 --- a/getting-started/heartbeat.html +++ b/getting-started/heartbeat.html @@ -6,12 +6,12 @@ Bot Heartbeat | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Heartbeat

The Heartbeat feature allows you to schedule periodic tasks for your Bot, enabling it to perform autonomous actions even when you aren't chatting with it.

Concept: Scheduled Autonomy

A Heartbeat is a recurring trigger that prompts the bot to "think" and execute its skills or tools at a set interval. This is useful for:

  • Periodic status checks
  • Automatic data collection
  • Cleaning up the filesystem
  • Sending scheduled notifications

Configuration

Configure the heartbeat from the Heartbeat tab in the Bot Detail page.

FieldDescription
EnabledToggle the heartbeat on or off.
IntervalHow often (in minutes) the heartbeat should trigger. The default is 30 minutes.
ModelThe LLM used to execute the heartbeat task. This can be different from the main chat model.

Logs and Monitoring

The Heartbeat tab provides a detailed audit log of every execution:

  • Status: Whether the heartbeat completed successfully (ok), encountered an issue (alert), or failed (error).
  • Time: When the heartbeat was triggered.
  • Duration: How long the bot took to process the task.
  • Result: A summary of the bot's action or response during that heartbeat.

Managing Logs

  • Filter by Status: Quickly find errors or alerts.
  • Refresh: Load the latest log entries.
  • Clear Logs: Remove old heartbeat records to keep the interface clean.
  • Load More: View older history.

Bot Interaction

  • During a heartbeat, the bot receives a special system prompt that it should perform its "routine" tasks.
  • The bot can use any of its assigned Skills or MCP tools during a heartbeat.
  • Heartbeat logs provide the "memory" of the bot's autonomous activities.

Published under AGPLv3

- +
Skip to content

Bot Heartbeat

The Heartbeat feature allows you to schedule periodic tasks for your Bot, enabling it to perform autonomous actions even when you aren't chatting with it.

Concept: Scheduled Autonomy

A Heartbeat is a recurring trigger that prompts the bot to "think" and execute its skills or tools at a set interval. This is useful for:

  • Periodic status checks
  • Automatic data collection
  • Cleaning up the filesystem
  • Sending scheduled notifications

Configuration

Configure the heartbeat from the Heartbeat tab in the Bot Detail page.

FieldDescription
EnabledToggle the heartbeat on or off.
IntervalHow often (in minutes) the heartbeat should trigger. The default is 30 minutes.
ModelThe LLM used to execute the heartbeat task. This can be different from the main chat model.

Logs and Monitoring

The Heartbeat tab provides a detailed audit log of every execution:

  • Status: Whether the heartbeat completed successfully (ok), encountered an issue (alert), or failed (error).
  • Time: When the heartbeat was triggered.
  • Duration: How long the bot took to process the task.
  • Result: A summary of the bot's action or response during that heartbeat.

Managing Logs

  • Filter by Status: Quickly find errors or alerts.
  • Refresh: Load the latest log entries.
  • Clear Logs: Remove old heartbeat records to keep the interface clean.
  • Load More: View older history.

Bot Interaction

  • During a heartbeat, the bot receives a special system prompt that it should perform its "routine" tasks.
  • The bot can use any of its assigned Skills or MCP tools during a heartbeat.
  • Heartbeat logs provide the "memory" of the bot's autonomous activities.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/mcp.html b/getting-started/mcp.html index 07434624..892c5a20 100644 --- a/getting-started/mcp.html +++ b/getting-started/mcp.html @@ -6,12 +6,12 @@ MCP Connections | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

MCP Connections

Memoh fully supports the Model Context Protocol (MCP), allowing you to connect your Bot to external tool services and context providers.

Concept: Extending Bot Capabilities

MCP provides a standardized way for bots to access external data sources and tools. Each Bot can have its own independent set of MCP connections.


Connection Types

Configure MCP connections from the MCP tab in the Bot Detail page.

1. Stdio (Local Process)

This type of connection executes a local command inside the bot's container and communicates via standard input/output.

FieldDescription
CommandThe executable to run (e.g., npx, python3).
ArgumentsA list of command-line arguments (e.g., -y, @modelcontextprotocol/server-filesystem, /opt/memoh/data).
EnvKey-value pairs for environment variables.
CWDWorking directory for the process.

2. Remote (HTTP/SSE)

This type of connection connects to a remote MCP server over the network.

FieldDescription
URLThe endpoint of the remote MCP server.
HeadersCustom HTTP headers (e.g., for authentication).
TransportChoose between http or sse (Server-Sent Events).

OAuth Authentication

Some MCP servers require OAuth-based authentication. Memoh supports the full MCP OAuth flow:

  1. Click the OAuth button on a connection that requires authentication.
  2. Memoh will discover the server's OAuth configuration automatically.
  3. Click Authorize to open the provider's authorization page.
  4. After granting access, you are redirected back to Memoh.
  5. The token is exchanged and stored securely for the connection.

You can also:

  • Check status — View the current OAuth token status.
  • Revoke — Remove the stored OAuth token.

Operations

  • Add Connection: Click Add, choose the type, and fill in the configuration.
  • Import JSON: Use the Import button to quickly add multiple connections from a standard mcpServers JSON config file.
  • Export: Export connection configurations to a JSON file for backup or sharing.
  • Toggle Active: Enable or disable specific connections without deleting them.
  • Search: Quickly find a connection by name or ID.
  • Batch Delete: Select multiple connections and delete them at once.

Tool Discovery

Once an MCP connection is active, Memoh automatically discovers the tools exposed by the server. You can:

  1. Click on a connection to view its details.
  2. The Tools section lists all available tools with their names and descriptions.
  3. The bot will use these tools automatically during conversations when relevant.

You can also use the Probe button to manually refresh the tool list from the server.


Bot Interaction

Once an MCP connection is active, the bot will automatically:

  • Discover the tools and resources exposed by the MCP server.
  • Use these tools to perform tasks requested by the user.
  • Include the context provided by the MCP server in its reasoning process.

Published under AGPLv3

- +
Skip to content

MCP Connections

Memoh fully supports the Model Context Protocol (MCP), allowing you to connect your Bot to external tool services and context providers.

Concept: Extending Bot Capabilities

MCP provides a standardized way for bots to access external data sources and tools. Each Bot can have its own independent set of MCP connections.


Connection Types

Configure MCP connections from the MCP tab in the Bot Detail page.

1. Stdio (Local Process)

This type of connection executes a local command inside the bot's container and communicates via standard input/output.

FieldDescription
CommandThe executable to run (e.g., npx, python3).
ArgumentsA list of command-line arguments (e.g., -y, @modelcontextprotocol/server-filesystem, /opt/memoh/data).
EnvKey-value pairs for environment variables.
CWDWorking directory for the process.

2. Remote (HTTP/SSE)

This type of connection connects to a remote MCP server over the network.

FieldDescription
URLThe endpoint of the remote MCP server.
HeadersCustom HTTP headers (e.g., for authentication).
TransportChoose between http or sse (Server-Sent Events).

OAuth Authentication

Some MCP servers require OAuth-based authentication. Memoh supports the full MCP OAuth flow:

  1. Click the OAuth button on a connection that requires authentication.
  2. Memoh will discover the server's OAuth configuration automatically.
  3. Click Authorize to open the provider's authorization page.
  4. After granting access, you are redirected back to Memoh.
  5. The token is exchanged and stored securely for the connection.

You can also:

  • Check status — View the current OAuth token status.
  • Revoke — Remove the stored OAuth token.

Operations

  • Add Connection: Click Add, choose the type, and fill in the configuration.
  • Import JSON: Use the Import button to quickly add multiple connections from a standard mcpServers JSON config file.
  • Export: Export connection configurations to a JSON file for backup or sharing.
  • Toggle Active: Enable or disable specific connections without deleting them.
  • Search: Quickly find a connection by name or ID.
  • Batch Delete: Select multiple connections and delete them at once.

Tool Discovery

Once an MCP connection is active, Memoh automatically discovers the tools exposed by the server. You can:

  1. Click on a connection to view its details.
  2. The Tools section lists all available tools with their names and descriptions.
  3. The bot will use these tools automatically during conversations when relevant.

You can also use the Probe button to manually refresh the tool list from the server.


Bot Interaction

Once an MCP connection is active, the bot will automatically:

  • Discover the tools and resources exposed by the MCP server.
  • Use these tools to perform tasks requested by the user.
  • Include the context provided by the MCP server in its reasoning process.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/memory.html b/getting-started/memory.html index d4b483f1..a117b2a7 100644 --- a/getting-started/memory.html +++ b/getting-started/memory.html @@ -6,12 +6,12 @@ Bot Memory Management | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Bot Memory Management

Memoh's structured long-term memory system allows bots to remember information across multiple conversations, providing contextually relevant and personalized interactions.

Prerequisites

Before using the Memory tab, make sure your bot already has a Memory Provider configured.

  1. Create a provider from one of the Memory Providers (Built-in, Mem0, or OpenViking).
  2. Open your bot's General tab.
  3. Select the provider in the Memory Provider field.
  4. Click Save.

Without a memory provider, the bot will not have an active memory backend configuration.


Concept: Memory Retrieval

Memories are stored and retrieved through the assigned memory provider. Depending on the provider type and mode, retrieval may use file-based indexing, sparse vectors, dense embeddings, or an external API. When a user sends a message, Memoh finds the most relevant memories and includes them in the bot's runtime context.


Operations

Manage your bot's memories from the Memory tab in the Bot Detail page.

1. Creating Memories

  • New Memory: Manually enter a memory's content in the provided textarea.
  • From Conversation: Select specific messages from the bot's conversation history to extract into memory.

2. Searching and Managing

  • Search: Filter memories by ID or text content.
  • Edit: Modify existing memory entries directly in the list.
  • Delete: Remove memories that are no longer needed.

Memory Compression (Compact)

Over time, memories can accumulate and become redundant. The Compact feature helps optimize the memory pool.

  • Ratio: Set the compression ratio (for example 0.8, 0.5, or 0.3) to determine how much information is retained.
  • Decay Days: Optionally specify a time window to compact only memories older than a certain number of days.

For more details on compaction, see Memory Compaction.


Rebuild

The Rebuild feature re-indexes all memories from scratch. This is useful when:

  • You have changed the memory provider's mode (e.g., switching from off to sparse).
  • The vector index has become inconsistent.
  • You want to re-process all memories with updated settings.

Click Rebuild in the Memory tab to start the process. You can monitor the rebuild status in real-time.


Status

The Memory tab shows the current status of the memory provider for this bot:

  • Connected — The memory backend is reachable and operational.
  • Error — There is an issue with the memory provider configuration or connectivity.

Use the status indicator to quickly verify that the memory system is working before troubleshooting other issues.


Usage Statistics

The Memory tab displays storage usage information:

  • Total Memories — The number of memory entries stored for this bot.
  • Index Status — Whether the vector index is up-to-date.

Bot Interaction

  • The bot automatically searches and retrieves memories during chat.
  • The assigned Memory Provider controls the memory backend used by the bot.
  • Provider-specific settings (such as memory mode, embedding model, or API keys) are configured in the provider itself — see Memory Providers.
  • Memories provide the long-term knowledge that makes each bot unique to its owner.

Published under AGPLv3

- +
Skip to content

Bot Memory Management

Memoh's structured long-term memory system allows bots to remember information across multiple conversations, providing contextually relevant and personalized interactions.

Prerequisites

Before using the Memory tab, make sure your bot already has a Memory Provider configured.

  1. Create a provider from one of the Memory Providers (Built-in, Mem0, or OpenViking).
  2. Open your bot's General tab.
  3. Select the provider in the Memory Provider field.
  4. Click Save.

Without a memory provider, the bot will not have an active memory backend configuration.


Concept: Memory Retrieval

Memories are stored and retrieved through the assigned memory provider. Depending on the provider type and mode, retrieval may use file-based indexing, sparse vectors, dense embeddings, or an external API. When a user sends a message, Memoh finds the most relevant memories and includes them in the bot's runtime context.


Operations

Manage your bot's memories from the Memory tab in the Bot Detail page.

1. Creating Memories

  • New Memory: Manually enter a memory's content in the provided textarea.
  • From Conversation: Select specific messages from the bot's conversation history to extract into memory.

2. Searching and Managing

  • Search: Filter memories by ID or text content.
  • Edit: Modify existing memory entries directly in the list.
  • Delete: Remove memories that are no longer needed.

Memory Compression (Compact)

Over time, memories can accumulate and become redundant. The Compact feature helps optimize the memory pool.

  • Ratio: Set the compression ratio (for example 0.8, 0.5, or 0.3) to determine how much information is retained.
  • Decay Days: Optionally specify a time window to compact only memories older than a certain number of days.

For more details on compaction, see Memory Compaction.


Rebuild

The Rebuild feature re-indexes all memories from scratch. This is useful when:

  • You have changed the memory provider's mode (e.g., switching from off to sparse).
  • The vector index has become inconsistent.
  • You want to re-process all memories with updated settings.

Click Rebuild in the Memory tab to start the process. You can monitor the rebuild status in real-time.


Status

The Memory tab shows the current status of the memory provider for this bot:

  • Connected — The memory backend is reachable and operational.
  • Error — There is an issue with the memory provider configuration or connectivity.

Use the status indicator to quickly verify that the memory system is working before troubleshooting other issues.


Usage Statistics

The Memory tab displays storage usage information:

  • Total Memories — The number of memory entries stored for this bot.
  • Index Status — Whether the vector index is up-to-date.

Bot Interaction

  • The bot automatically searches and retrieves memories during chat.
  • The assigned Memory Provider controls the memory backend used by the bot.
  • Provider-specific settings (such as memory mode, embedding model, or API keys) are configured in the provider itself — see Memory Providers.
  • Memories provide the long-term knowledge that makes each bot unique to its owner.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/provider-and-model.html b/getting-started/provider-and-model.html index 96b1e664..1f3ed831 100644 --- a/getting-started/provider-and-model.html +++ b/getting-started/provider-and-model.html @@ -6,12 +6,12 @@ LLM Provider and Model | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

LLM Provider and Model

To use Memoh, you first need to configure at least one LLM Provider and at least one Model.

LLM Provider

An LLM Provider represents a connection to an AI service (like OpenAI, Anthropic, or a self-hosted compatible API). It stores the base URL and authentication credentials.

Creating a Provider

  1. Navigate to the Providers page from the sidebar.
  2. Click the Add Provider button at the bottom of the sidebar.
  3. Fill in the following fields:
    • Name: A display name for this provider (e.g., "OpenAI").
    • Base URL: The root URL of the API (e.g., https://api.openai.com/v1).
    • API Key: Your authentication token for the service.
  4. Click Create.

OAuth Authentication

Some providers (like OpenAI) support OAuth-based authentication. If a provider supports OAuth:

  1. Select the provider from the list.
  2. Click Connect with OAuth in the provider settings form.
  3. Follow the authorization flow in the popup window.
  4. Once authorized, the provider will use the OAuth token instead of a manual API key.

Import Models

Memoh can automatically discover and import available models from a provider:

  1. Select a provider from the list.
  2. Click Import Models.
  3. Memoh will query the provider's API to fetch available models.
  4. Select which models to import and click Import.

This saves time compared to manually adding each model one by one.

Managing Providers

  • Edit: Select a provider from the list and use the form on the right to update its name, URL, or API key.
  • Test: Click Test Connection to verify the provider is reachable.
  • Delete: Use the Delete Provider button in the provider settings form.

Model

A Model is a specific AI instance (like gpt-4o or text-embedding-3-small) that belongs to a Provider. Memoh distinguishes between Chat models (for conversation) and Embedding models (for memory search).

Adding a Model

  1. Select a Provider from the list on the Providers page.
  2. Click Add Model in the model list section.
  3. Configure the following fields:
FieldRequiredDescription
TypeYeschat for conversation, embedding for vector search.
Model IDYesThe exact identifier used by the provider (e.g., gpt-4o).
NameNoA friendly display name (defaults to Model ID).
Client TypeYes (Chat)The API protocol: openai-responses, openai-completions, anthropic-messages, or google-generative-ai.
Input ModalitiesYes (Chat)Capabilities supported: text (default), image, audio, video, file.
Supports ReasoningNoEnable if the model supports internal reasoning steps (e.g., OpenAI o1).
DimensionsYes (Embed)The vector size for embedding models (e.g., 1536).
  1. Click Create.

Managing Models

  • Edit: Click the edit icon next to a model in the list.
  • Delete: Click the trash icon next to a model to remove it.

Next Steps

Now that you have configured your models, you can proceed to Create and Configure a Bot.

Published under AGPLv3

- +
Skip to content

LLM Provider and Model

To use Memoh, you first need to configure at least one LLM Provider and at least one Model.

LLM Provider

An LLM Provider represents a connection to an AI service (like OpenAI, Anthropic, or a self-hosted compatible API). It stores the base URL and authentication credentials.

Creating a Provider

  1. Navigate to the Providers page from the sidebar.
  2. Click the Add Provider button at the bottom of the sidebar.
  3. Fill in the following fields:
    • Name: A display name for this provider (e.g., "OpenAI").
    • Base URL: The root URL of the API (e.g., https://api.openai.com/v1).
    • API Key: Your authentication token for the service.
  4. Click Create.

OAuth Authentication

Some providers (like OpenAI) support OAuth-based authentication. If a provider supports OAuth:

  1. Select the provider from the list.
  2. Click Connect with OAuth in the provider settings form.
  3. Follow the authorization flow in the popup window.
  4. Once authorized, the provider will use the OAuth token instead of a manual API key.

Import Models

Memoh can automatically discover and import available models from a provider:

  1. Select a provider from the list.
  2. Click Import Models.
  3. Memoh will query the provider's API to fetch available models.
  4. Select which models to import and click Import.

This saves time compared to manually adding each model one by one.

Managing Providers

  • Edit: Select a provider from the list and use the form on the right to update its name, URL, or API key.
  • Test: Click Test Connection to verify the provider is reachable.
  • Delete: Use the Delete Provider button in the provider settings form.

Model

A Model is a specific AI instance (like gpt-4o or text-embedding-3-small) that belongs to a Provider. Memoh distinguishes between Chat models (for conversation) and Embedding models (for memory search).

Adding a Model

  1. Select a Provider from the list on the Providers page.
  2. Click Add Model in the model list section.
  3. Configure the following fields:
FieldRequiredDescription
TypeYeschat for conversation, embedding for vector search.
Model IDYesThe exact identifier used by the provider (e.g., gpt-4o).
NameNoA friendly display name (defaults to Model ID).
Client TypeYes (Chat)The API protocol: openai-responses, openai-completions, anthropic-messages, or google-generative-ai.
Input ModalitiesYes (Chat)Capabilities supported: text (default), image, audio, video, file.
Supports ReasoningNoEnable if the model supports internal reasoning steps (e.g., OpenAI o1).
DimensionsYes (Embed)The vector size for embedding models (e.g., 1536).
  1. Click Create.

Managing Models

  • Edit: Click the edit icon next to a model in the list.
  • Delete: Click the trash icon next to a model to remove it.

Next Steps

Now that you have configured your models, you can proceed to Create and Configure a Bot.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/schedule.html b/getting-started/schedule.html index 92585be2..3f4f3485 100644 --- a/getting-started/schedule.html +++ b/getting-started/schedule.html @@ -6,12 +6,12 @@ Scheduled Tasks | Memoh Documentation - + - + - + @@ -19,7 +19,7 @@ -
Skip to content

Scheduled Tasks

Scheduled Tasks allow you to automate recurring bot actions using cron expressions. This is useful for sending periodic reports, checking external data, performing maintenance, or triggering any routine task without manual intervention.

Concept: Cron-Based Automation

A Schedule is a cron-triggered rule bound to a specific bot. When a schedule fires, it sends a command to the agent, which executes it using its available tools, skills, and context. The bot can then deliver results to any connected channel.


Schedule Fields

FieldDescription
NameA display name for the task (e.g., "Morning News Summary").
DescriptionA brief explanation of what the task does.
PatternA cron expression that defines when the task runs (e.g., 0 9 * * * for daily at 9:00 AM).
CommandThe natural-language instruction sent to the agent when the schedule triggers (e.g., "Summarize today's top tech news and send it to the Telegram channel").
EnabledWhether the schedule is currently active.
Max CallsOptional limit on the total number of executions. Leave empty for unlimited.
Current CallsThe number of times this schedule has already fired.

Cron Pattern Reference

The pattern field uses standard cron syntax with five fields. It is evaluated in the server's configured timezone. By default, Memoh uses UTC, and you can change it with the top-level timezone config value.

┌───────────── minute (0–59)
+    
Skip to content

Scheduled Tasks

Scheduled Tasks allow you to automate recurring bot actions using cron expressions. This is useful for sending periodic reports, checking external data, performing maintenance, or triggering any routine task without manual intervention.

Concept: Cron-Based Automation

A Schedule is a cron-triggered rule bound to a specific bot. When a schedule fires, it sends a command to the agent, which executes it using its available tools, skills, and context. The bot can then deliver results to any connected channel.


Schedule Fields

FieldDescription
NameA display name for the task (e.g., "Morning News Summary").
DescriptionA brief explanation of what the task does.
PatternA cron expression that defines when the task runs (e.g., 0 9 * * * for daily at 9:00 AM).
CommandThe natural-language instruction sent to the agent when the schedule triggers (e.g., "Summarize today's top tech news and send it to the Telegram channel").
EnabledWhether the schedule is currently active.
Max CallsOptional limit on the total number of executions. Leave empty for unlimited.
Current CallsThe number of times this schedule has already fired.

Cron Pattern Reference

The pattern field uses standard cron syntax with five fields. It is evaluated in the server's configured timezone. By default, Memoh uses UTC, and you can change it with the top-level timezone config value.

┌───────────── minute (0–59)
 │ ┌───────────── hour (0–23)
 │ │ ┌───────────── day of month (1–31)
 │ │ │ ┌───────────── month (1–12)
@@ -32,8 +32,8 @@
   "command": "Summarize my unread emails and send the result to Telegram.",
   "enabled": true,
   "max_calls": null
-}

Execution Flow

When a schedule fires:

  1. The cron service triggers the schedule.
  2. The current_calls counter is incremented.
  3. If max_calls is set and reached, the schedule is automatically disabled.
  4. The agent receives the command along with the schedule context.
  5. The agent executes the command using its tools (e.g., web search, file read, send message).
  6. Results can be delivered to any connected channel.

Schedule vs. Heartbeat

FeatureScheduleHeartbeat
TriggerCron expression (flexible timing)Fixed interval (minutes)
CommandCustom natural-language instructionGeneric "routine check" prompt
Max CallsOptional execution limitUnlimited
Use CaseSpecific recurring tasksPeriodic autonomous thinking

Both features complement each other: use Heartbeat for general-purpose periodic activity and Schedule for precise, task-oriented automation.

Published under AGPLv3

- +}

Execution Flow

When a schedule fires:

  1. The cron service triggers the schedule.
  2. The current_calls counter is incremented.
  3. If max_calls is set and reached, the schedule is automatically disabled.
  4. The agent receives the command along with the schedule context.
  5. The agent executes the command using its tools (e.g., web search, file read, send message).
  6. Results can be delivered to any connected channel.

Schedule vs. Heartbeat

FeatureScheduleHeartbeat
TriggerCron expression (flexible timing)Fixed interval (minutes)
CommandCustom natural-language instructionGeneric "routine check" prompt
Max CallsOptional execution limitUnlimited
Use CaseSpecific recurring tasksPeriodic autonomous thinking

Both features complement each other: use Heartbeat for general-purpose periodic activity and Schedule for precise, task-oriented automation.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/search-provider.html b/getting-started/search-provider.html index 31e0a291..04aa6ca8 100644 --- a/getting-started/search-provider.html +++ b/getting-started/search-provider.html @@ -6,12 +6,12 @@ Search Providers | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Search Providers

Memoh allows you to connect your Bot to various search engines, enabling it to browse the web for real-time information and external knowledge.

Concept: Real-Time Knowledge

A Search Provider is a connection to a specific search API (like Brave, Google, or Bing). Once configured, it becomes a tool that your Bot can use during conversation.


Supported Search Engines

Configure your search engines from the Search Provider page in the sidebar.

Supported EnginesNotes
BraveHighly recommended for privacy and performance.
BingPowerful global search capability.
GoogleComprehensive web search.
TavilyDesigned specifically for AI-powered research.
SearxNGConnect to your own self-hosted search aggregator.
DuckDuckGoPrivacy-focused search.
Other ProvidersSogou, Serper, Jina, Exa, Bocha, Yandex.

Configuration Flow

1. Adding a Search Provider

  1. Navigate to the Search Provider page from the sidebar.
  2. Click Add Search Provider.
  3. Fill in the following:
    • Name: A friendly name (e.g., "My Brave Search").
    • API Key: Your credentials for the specific search engine API.
    • Other Parameters: Depending on the engine, you may need to specify additional settings (e.g., base_url for SearxNG).

2. Managing Providers

  • Edit: Select a provider from the sidebar and update its configuration in the form on the right.
  • Delete: Use the Delete Provider button in the provider settings form.

Assigning a Search Provider to a Bot

  1. Navigate to the Bots page and select your bot.
  2. Go to the General tab.
  3. Find the Search Provider dropdown and select the provider you created.
  4. Click Save.

Bot Interaction

  • When a user's question requires real-time information, the bot will automatically call its assigned Search Provider.
  • The bot will process the search results to provide a grounded and accurate response.
  • Multiple search results can be synthesized to provide a comprehensive answer.

Published under AGPLv3

- +
Skip to content

Search Providers

Memoh allows you to connect your Bot to various search engines, enabling it to browse the web for real-time information and external knowledge.

Concept: Real-Time Knowledge

A Search Provider is a connection to a specific search API (like Brave, Google, or Bing). Once configured, it becomes a tool that your Bot can use during conversation.


Supported Search Engines

Configure your search engines from the Search Provider page in the sidebar.

Supported EnginesNotes
BraveHighly recommended for privacy and performance.
BingPowerful global search capability.
GoogleComprehensive web search.
TavilyDesigned specifically for AI-powered research.
SearxNGConnect to your own self-hosted search aggregator.
DuckDuckGoPrivacy-focused search.
Other ProvidersSogou, Serper, Jina, Exa, Bocha, Yandex.

Configuration Flow

1. Adding a Search Provider

  1. Navigate to the Search Provider page from the sidebar.
  2. Click Add Search Provider.
  3. Fill in the following:
    • Name: A friendly name (e.g., "My Brave Search").
    • API Key: Your credentials for the specific search engine API.
    • Other Parameters: Depending on the engine, you may need to specify additional settings (e.g., base_url for SearxNG).

2. Managing Providers

  • Edit: Select a provider from the sidebar and update its configuration in the form on the right.
  • Delete: Use the Delete Provider button in the provider settings form.

Assigning a Search Provider to a Bot

  1. Navigate to the Bots page and select your bot.
  2. Go to the General tab.
  3. Find the Search Provider dropdown and select the provider you created.
  4. Click Save.

Bot Interaction

  • When a user's question requires real-time information, the bot will automatically call its assigned Search Provider.
  • The bot will process the search results to provide a grounded and accurate response.
  • Multiple search results can be synthesized to provide a comprehensive answer.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/sessions.html b/getting-started/sessions.html index feeb6fec..b756c32c 100644 --- a/getting-started/sessions.html +++ b/getting-started/sessions.html @@ -6,12 +6,12 @@ Sessions | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Sessions

A Session is an independent conversation thread between a user and a bot. Each session maintains its own context window and message history, allowing the bot to focus on a specific topic or task without interference from other conversations.


Concept: Conversation Isolation

When you chat with a bot, your messages are grouped into a session. The bot uses the session's history to maintain context. Starting a new session resets this context, giving you a fresh conversation without losing the previous one.

Sessions are scoped per bot — each bot manages its own set of sessions independently.


Session Types

Memoh uses four session types to separate different kinds of bot activity:

TypeDescription
ChatStandard user-initiated conversations. This is the default session type when chatting with a bot.
HeartbeatAutomatically created when a bot's heartbeat triggers. Contains the bot's periodic autonomous activity.
ScheduleCreated when a scheduled task fires. Contains the bot's execution of a cron-triggered command.
SubagentCreated when the bot delegates a task to a subagent. Contains the subagent's independent work context.

Only Chat sessions are directly created by users. The other types are system-managed and appear as read-only records in the session list.


Starting a New Session with /new

The /new slash command creates a fresh chat session, resetting the conversation context. This works across all channels:

In External Channels (Telegram, Discord, Feishu, etc.)

Send /new as a message to the bot. The bot will:

  1. Create a new chat session.
  2. Route all subsequent messages from you to this new session.
  3. The previous session's history is preserved but no longer active.

This is especially useful when:

  • You want to change topics without the bot referencing old context.
  • The conversation has become too long and you want a clean start.
  • You are switching between different tasks.

In the Web UI

The Web UI provides a session sidebar where you can:

  • Click the New Session button to create a fresh chat session.
  • Switch between existing sessions by clicking on them.
  • Search sessions by content.
  • Filter sessions by type (chat, heartbeat, schedule, subagent).
  • Rename or delete sessions.

Managing Sessions

Viewing Sessions

In the Web UI, the session sidebar lists all sessions for the currently selected bot. Each entry shows:

  • Title — The session name (auto-generated or user-defined).
  • Type — The session type icon.
  • Last Activity — When the session was last active.

Renaming Sessions

Click on a session title to rename it. This helps organize conversations by topic.

Deleting Sessions

Remove sessions you no longer need. Deleting a session removes its message history permanently.


How Sessions Relate to Other Features

  • Heartbeat sessions are created on each heartbeat trigger. You can view what the bot did during its autonomous activity by opening the corresponding heartbeat session.
  • Schedule sessions are created when a scheduled task runs. Check these to see the results of cron-triggered commands.
  • Subagent sessions track delegated tasks. They show the independent work context of each subagent invocation.
  • Memory is shared across all sessions for a bot — memories extracted from one session are available in all others.

Published under AGPLv3

- +
Skip to content

Sessions

A Session is an independent conversation thread between a user and a bot. Each session maintains its own context window and message history, allowing the bot to focus on a specific topic or task without interference from other conversations.


Concept: Conversation Isolation

When you chat with a bot, your messages are grouped into a session. The bot uses the session's history to maintain context. Starting a new session resets this context, giving you a fresh conversation without losing the previous one.

Sessions are scoped per bot — each bot manages its own set of sessions independently.


Session Types

Memoh uses four session types to separate different kinds of bot activity:

TypeDescription
ChatStandard user-initiated conversations. This is the default session type when chatting with a bot.
HeartbeatAutomatically created when a bot's heartbeat triggers. Contains the bot's periodic autonomous activity.
ScheduleCreated when a scheduled task fires. Contains the bot's execution of a cron-triggered command.
SubagentCreated when the bot delegates a task to a subagent. Contains the subagent's independent work context.

Only Chat sessions are directly created by users. The other types are system-managed and appear as read-only records in the session list.


Starting a New Session with /new

The /new slash command creates a fresh chat session, resetting the conversation context. This works across all channels:

In External Channels (Telegram, Discord, Feishu, etc.)

Send /new as a message to the bot. The bot will:

  1. Create a new chat session.
  2. Route all subsequent messages from you to this new session.
  3. The previous session's history is preserved but no longer active.

This is especially useful when:

  • You want to change topics without the bot referencing old context.
  • The conversation has become too long and you want a clean start.
  • You are switching between different tasks.

In the Web UI

The Web UI provides a session sidebar where you can:

  • Click the New Session button to create a fresh chat session.
  • Switch between existing sessions by clicking on them.
  • Search sessions by content.
  • Filter sessions by type (chat, heartbeat, schedule, subagent).
  • Rename or delete sessions.

Managing Sessions

Viewing Sessions

In the Web UI, the session sidebar lists all sessions for the currently selected bot. Each entry shows:

  • Title — The session name (auto-generated or user-defined).
  • Type — The session type icon.
  • Last Activity — When the session was last active.

Renaming Sessions

Click on a session title to rename it. This helps organize conversations by topic.

Deleting Sessions

Remove sessions you no longer need. Deleting a session removes its message history permanently.


How Sessions Relate to Other Features

  • Heartbeat sessions are created on each heartbeat trigger. You can view what the bot did during its autonomous activity by opening the corresponding heartbeat session.
  • Schedule sessions are created when a scheduled task runs. Check these to see the results of cron-triggered commands.
  • Subagent sessions track delegated tasks. They show the independent work context of each subagent invocation.
  • Memory is shared across all sessions for a bot — memories extracted from one session are available in all others.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/skills.html b/getting-started/skills.html index 07b9bcdd..5fc9b8da 100644 --- a/getting-started/skills.html +++ b/getting-started/skills.html @@ -6,12 +6,12 @@ Bot Skills | Memoh Documentation - + - + - + @@ -19,15 +19,15 @@ -
Skip to content

Bot Skills

Skills are the "personality" and "capabilities" of a Memoh Bot. They define how the bot should behave and what tools it can use.

Concept: Skills as Markdown

A Skill is represented as a Markdown document with YAML frontmatter. These files are stored within the bot's container and parsed into tools and personality traits.

Example Skill Structure

yaml
---
+    
Skip to content

Bot Skills

Skills are the "personality" and "capabilities" of a Memoh Bot. They define how the bot should behave and what tools it can use.

Concept: Skills as Markdown

A Skill is represented as a Markdown document with YAML frontmatter. These files are stored within the bot's container and parsed into tools and personality traits.

Example Skill Structure

yaml
---
 name: coder-skill
 description: Enables advanced coding capabilities and tool use.
 ---
 
 # Coder Skill
 As a coder, you always follow best practices and write clean, documented code. 
-You can use the `edit_file` and `run_command` tools to assist the user.

Managing Skills

Manage your bot's skill set from the Skills tab in the Bot Detail page.

Adding a Skill

  1. Click Add Skill.
  2. A dialog with a basic template will open in the Monaco Editor.
  3. Fill in the name, description, and content.
  4. Click Save.

Editing and Deleting

  • Edit: Click the pencil icon next to a skill card to modify its content or frontmatter.
  • Delete: Click the trash icon to remove a skill from the bot's container.

How Bots Use Skills

  • Skills are injected into the bot's system prompt during conversation.
  • The YAML frontmatter helps the system categorize and manage the skills as tools.
  • Modular skills allow you to easily "swap" behaviors or capabilities without rewriting the entire bot.

Published under AGPLv3

- +You can use the `edit_file` and `run_command` tools to assist the user.

Managing Skills

Manage your bot's skill set from the Skills tab in the Bot Detail page.

Adding a Skill

  1. Click Add Skill.
  2. A dialog with a basic template will open in the Monaco Editor.
  3. Fill in the name, description, and content.
  4. Click Save.

Editing and Deleting

  • Edit: Click the pencil icon next to a skill card to modify its content or frontmatter.
  • Delete: Click the trash icon to remove a skill from the bot's container.

How Bots Use Skills

  • Skills are injected into the bot's system prompt during conversation.
  • The YAML frontmatter helps the system categorize and manage the skills as tools.
  • Modular skills allow you to easily "swap" behaviors or capabilities without rewriting the entire bot.

Published under AGPLv3

+ \ No newline at end of file diff --git a/getting-started/slash-commands.html b/getting-started/slash-commands.html index f6d935b8..20a635f9 100644 --- a/getting-started/slash-commands.html +++ b/getting-started/slash-commands.html @@ -6,12 +6,12 @@ Slash Commands | Memoh Documentation - + - + - + @@ -19,15 +19,15 @@ -
Skip to content

Slash Commands

Memoh bots support slash commands — text commands prefixed with / that can be sent in any channel (Telegram, Discord, Feishu, Web, etc.) to perform administrative actions without going through the AI agent.

Slash commands are intercepted before they reach the LLM, so they execute instantly and don't consume tokens.


Quick Reference

CommandDescription
/helpShow all available commands
/newStart a new conversation session
/scheduleManage scheduled tasks
/mcpManage MCP connections
/settingsView and update bot settings
/modelManage bot models
/memoryManage memory provider
/searchManage search provider
/browserManage browser context
/usageView token usage statistics
/emailView email configuration
/heartbeatView heartbeat logs
/skillView bot skills
/fsBrowse container filesystem

Command Format

Commands follow the pattern:

/resource [action] [arguments...]
  • resource — The command group (e.g., schedule, model).
  • action — The sub-command (e.g., list, set, create). Some commands have a default action.
  • arguments — Additional parameters. Use quotes for values with spaces.

Example: /schedule create daily-report "0 9 * * *" "Send me a daily summary"


Permissions

Commands that modify bot settings are marked as owner-only. Only the bot owner can execute these commands. Read-only commands (listing, viewing) are available to all users who have chat access.

Owner-only commands are marked with [owner] in the /help output.


Global Commands

/help

Displays a list of all available commands and their usage.

/new

Starts a new conversation session, resetting the current context. See Sessions for details.


/schedule — Manage Scheduled Tasks

Sub-commandUsagePermission
list/schedule listAll
get/schedule get <name>All
create/schedule create <name> <pattern> <command>Owner
update/schedule update <name> [--pattern P] [--command C]Owner
delete/schedule delete <name>Owner
enable/schedule enable <name>Owner
disable/schedule disable <name>Owner

Examples:

/schedule list
+    
Skip to content

Slash Commands

Memoh bots support slash commands — text commands prefixed with / that can be sent in any channel (Telegram, Discord, Feishu, Web, etc.) to perform administrative actions without going through the AI agent.

Slash commands are intercepted before they reach the LLM, so they execute instantly and don't consume tokens.


Quick Reference

CommandDescription
/helpShow all available commands
/newStart a new conversation session
/scheduleManage scheduled tasks
/mcpManage MCP connections
/settingsView and update bot settings
/modelManage bot models
/memoryManage memory provider
/searchManage search provider
/browserManage browser context
/usageView token usage statistics
/emailView email configuration
/heartbeatView heartbeat logs
/skillView bot skills
/fsBrowse container filesystem

Command Format

Commands follow the pattern:

/resource [action] [arguments...]
  • resource — The command group (e.g., schedule, model).
  • action — The sub-command (e.g., list, set, create). Some commands have a default action.
  • arguments — Additional parameters. Use quotes for values with spaces.

Example: /schedule create daily-report "0 9 * * *" "Send me a daily summary"


Permissions

Commands that modify bot settings are marked as owner-only. Only the bot owner can execute these commands. Read-only commands (listing, viewing) are available to all users who have chat access.

Owner-only commands are marked with [owner] in the /help output.


Global Commands

/help

Displays a list of all available commands and their usage.

/new

Starts a new conversation session, resetting the current context. See Sessions for details.


/schedule — Manage Scheduled Tasks

Sub-commandUsagePermission
list/schedule listAll
get/schedule get <name>All
create/schedule create <name> <pattern> <command>Owner
update/schedule update <name> [--pattern P] [--command C]Owner
delete/schedule delete <name>Owner
enable/schedule enable <name>Owner
disable/schedule disable <name>Owner

Examples:

/schedule list
 /schedule create morning-news "0 9 * * *" "Summarize today's top tech news"
 /schedule disable morning-news

/mcp — Manage MCP Connections

Sub-commandUsagePermission
list/mcp listAll
get/mcp get <name>All
delete/mcp delete <name>Owner

/settings — View and Update Bot Settings

Sub-commandUsagePermission
get/settings or /settings getAll
update/settings update [options]Owner

Update options:

OptionValues
--languageLanguage code (e.g., en, zh)
--acl_default_effectallow or deny
--reasoning_enabledtrue or false
--reasoning_effortlow, medium, or high
--heartbeat_enabledtrue or false
--heartbeat_intervalMinutes (integer)
--chat_model_idModel UUID
--heartbeat_model_idModel UUID

Example:

/settings update --language en --heartbeat_enabled true --heartbeat_interval 30

/model — Manage Bot Models

Sub-commandUsagePermission
list/model listAll
set/model set <provider_name> <model_name>Owner
set-heartbeat/model set-heartbeat <provider_name> <model_name>Owner

Example:

/model list
 /model set OpenAI gpt-4o
 /model set-heartbeat OpenAI gpt-4o-mini

/memory — Manage Memory Provider

Sub-commandUsagePermission
list/memory listAll
set/memory set <name>Owner

/search — Manage Search Provider

Sub-commandUsagePermission
list/search listAll
set/search set <name>Owner

/browser — Manage Browser Context

Sub-commandUsagePermission
list/browser listAll
set/browser set <name>Owner

/usage — View Token Usage

Sub-commandUsagePermission
summary/usage or /usage summaryAll
by-model/usage by-modelAll

Shows token usage for the last 7 days, broken down by session type (chat, heartbeat, schedule) or by model.


/email — View Email Configuration

Sub-commandUsagePermission
providers/email providersAll
bindings/email bindingsAll
outbox/email outboxAll

/heartbeat — View Heartbeat Logs

Sub-commandUsagePermission
logs/heartbeat or /heartbeat logsAll

Shows the 10 most recent heartbeat execution logs.


/skill — View Bot Skills

Sub-commandUsagePermission
list/skill or /skill listAll

/fs — Browse Container Filesystem

Sub-commandUsagePermission
list/fs list [path]All
read/fs read <path>All

Examples:

/fs list /
 /fs list /home
 /fs read /home/bot/IDENTITY.md

File content is truncated to 2000 characters when displayed in chat.


Mention-Prefixed Commands

In group chats, you can prefix commands with a mention:

@BotName /help
-@BotName /new

The bot will strip the mention and process the slash command normally.

Published under AGPLv3

- +@BotName /new

The bot will strip the mention and process the slash command normally.

Published under AGPLv3

+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index b8beaf80..40a7ad31 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"about.md":"B8mz5B7D","blogs_2026-02-16.md":"D7X_K9ac","blogs_index.md":"CzVqJnkf","channels_discord.md":"CgnXVcxj","channels_feishu.md":"7xzXC8PR","channels_index.md":"CV834U5I","channels_matrix.md":"C5lym8OS","channels_qq.md":"BiHC52Zm","channels_telegram.md":"WGR_O6_O","channels_wecom.md":"D7yBtNrz","channels_weixin.md":"Ckccg7Ew","getting-started_access.md":"Co5O-s2T","getting-started_bot.md":"CULM4cGX","getting-started_browser.md":"Cjpk7h3a","getting-started_channels.md":"DP2fW_sw","getting-started_compaction.md":"CQe9KC6f","getting-started_container.md":"00DekezL","getting-started_email.md":"DLrAWkek","getting-started_files.md":"CbhHSLX5","getting-started_heartbeat.md":"lBwT6Ivl","getting-started_mcp.md":"CfWEkmuE","getting-started_memory.md":"DfffnmM0","getting-started_provider-and-model.md":"MB4KgxWX","getting-started_schedule.md":"7R1TStAB","getting-started_search-provider.md":"DDV1py8V","getting-started_sessions.md":"CaVKbfb5","getting-started_skills.md":"E3JgIlwr","getting-started_slash-commands.md":"CBeh4epy","index.md":"MTTbinuf","installation_docker.md":"DxE7r3rU","memory-providers_builtin.md":"DlYtNI3G","memory-providers_index.md":"D5MvHNPW","memory-providers_mem0.md":"C5B6D9ME","memory-providers_openviking.md":"N-8WyFZa","tts-providers_edge.md":"DPjdtaQf","tts-providers_index.md":"Cgc87EeS","zh_concepts_identity-and-binding.md":"6tGYa9d_","zh_concepts_index.md":"_zNPjKkD","zh_index.md":"Db4hJx1C","zh_style_terminology.md":"CzqhSoQX"} +{"about.md":"B8mz5B7D","blogs_2026-02-16.md":"D7X_K9ac","blogs_index.md":"CzVqJnkf","channels_discord.md":"CgnXVcxj","channels_feishu.md":"7xzXC8PR","channels_index.md":"CV834U5I","channels_matrix.md":"C5lym8OS","channels_qq.md":"BiHC52Zm","channels_telegram.md":"WGR_O6_O","channels_wecom.md":"D7yBtNrz","channels_weixin.md":"Ckccg7Ew","getting-started_access.md":"Co5O-s2T","getting-started_bot.md":"CULM4cGX","getting-started_browser.md":"Cjpk7h3a","getting-started_channels.md":"DP2fW_sw","getting-started_compaction.md":"CQe9KC6f","getting-started_container.md":"Do_YGEZB","getting-started_email.md":"DLrAWkek","getting-started_files.md":"CbhHSLX5","getting-started_heartbeat.md":"lBwT6Ivl","getting-started_mcp.md":"CfWEkmuE","getting-started_memory.md":"DfffnmM0","getting-started_provider-and-model.md":"MB4KgxWX","getting-started_schedule.md":"7R1TStAB","getting-started_search-provider.md":"DDV1py8V","getting-started_sessions.md":"CaVKbfb5","getting-started_skills.md":"E3JgIlwr","getting-started_slash-commands.md":"CBeh4epy","index.md":"MTTbinuf","installation_docker.md":"DxE7r3rU","memory-providers_builtin.md":"DlYtNI3G","memory-providers_index.md":"D5MvHNPW","memory-providers_mem0.md":"C5B6D9ME","memory-providers_openviking.md":"N-8WyFZa","tts-providers_edge.md":"DPjdtaQf","tts-providers_index.md":"Cgc87EeS","zh_concepts_identity-and-binding.md":"6tGYa9d_","zh_concepts_index.md":"_zNPjKkD","zh_index.md":"Db4hJx1C","zh_style_terminology.md":"CzqhSoQX"} diff --git a/index.html b/index.html index 5747e2c0..477fd8ca 100644 --- a/index.html +++ b/index.html @@ -6,12 +6,12 @@ Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Memoh Documentation

Memoh(/ˈmemoʊ/) is a multi-member, structured long-memory, containerized AI agent system. Create your own AI bots, chat with them via Telegram, Discord, Lark (Feishu), QQ, Matrix, WeCom, WeChat, Email, or Web. Each bot runs in an isolated container with its own memory system — able to edit files, run commands, and access the network.

Documentation

  • About Memoh — What Memoh is, key features, and installation links.
  • Installation — Docker setup (recommended).
  • Getting Started — Step-by-step guide to configure models, bots, and channels.
  • Channels — Detailed guides for Telegram, Feishu, Discord, QQ, Matrix, WeCom, and WeChat.

Published under AGPLv3

- +
Skip to content

Memoh Documentation

Memoh(/ˈmemoʊ/) is a multi-member, structured long-memory, containerized AI agent system. Create your own AI bots, chat with them via Telegram, Discord, Lark (Feishu), QQ, Matrix, WeCom, WeChat, Email, or Web. Each bot runs in an isolated container with its own memory system — able to edit files, run commands, and access the network.

Documentation

  • About Memoh — What Memoh is, key features, and installation links.
  • Installation — Docker setup (recommended).
  • Getting Started — Step-by-step guide to configure models, bots, and channels.
  • Channels — Detailed guides for Telegram, Feishu, Discord, QQ, Matrix, WeCom, and WeChat.

Published under AGPLv3

+ \ No newline at end of file diff --git a/installation/docker.html b/installation/docker.html index 79542948..ee74f710 100644 --- a/installation/docker.html +++ b/installation/docker.html @@ -6,12 +6,12 @@ Docker Installation | Memoh Documentation - + - + - + @@ -19,7 +19,7 @@ -
Skip to content

Docker Installation

Docker is the recommended way to run Memoh. The stack includes PostgreSQL, the main server (with embedded Containerd and in-process AI agent), and the web UI — all orchestrated via Docker Compose. You do not need to install containerd, nerdctl, or buildkit on your host; everything runs inside containers.

Service Architecture

The Docker Compose stack consists of multiple services. Some are always started, others are optional and enabled via --profile:

ServiceProfileDescription
server(core)Main Memoh server with embedded Containerd and in-process AI agent
web(core)Web UI (Vue 3)
postgres(core)PostgreSQL database
qdrantqdrantQdrant vector database for memory search (sparse and dense modes)
browserbrowserPlaywright-based browser gateway for bot web automation
sparsesparseNeural sparse encoding service for memory retrieval (see below)

Sparse Service

The sparse container provides neural sparse vector encoding for memory retrieval. It runs a lightweight Python (Flask) service on port 8085 that uses the opensearch-neural-sparse-encoding-multilingual-v1 model from OpenSearch.

What it does:

  • Converts document text into sparse vectors (a compact list of token indices + importance weights) using a masked language model
  • Encodes queries using IDF-weighted term lookup for fast, efficient retrieval
  • Works with Qdrant to enable semantic memory search without requiring an external embedding API

Why use it:

  • No embedding API costs — The model runs locally inside the container, so you don't need an OpenAI/Cohere/etc. embedding API key
  • Multilingual — The underlying model supports multiple languages out of the box
  • Good retrieval quality — Neural sparse encoding provides significantly better results than keyword-only search (BM25), while being lighter than dense embedding models

When to enable it:

Enable the sparse profile (--profile sparse) if you plan to use the built-in memory provider in sparse mode. The model is pre-downloaded during the Docker image build, so the container starts quickly without needing to fetch weights at runtime.

bash
docker compose --profile qdrant --profile sparse --profile browser up -d

For more details on memory modes, see Built-in Memory Provider.

Prerequisites

Run the official install script (requires Docker and Docker Compose):

bash
curl -fsSL https://memoh.sh | sudo sh

The script will:

  1. Check for Docker and Docker Compose
  2. Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password, sparse service toggle, browser core selection)
  3. Fetch the latest release tag from GitHub and clone the repository
  4. Generate config.toml from the Docker template with your settings
  5. Pin Docker image versions to the release
  6. Build the browser image with selected cores and start all services

Silent install (use all defaults, no prompts):

bash
curl -fsSL https://memoh.sh | sudo sh -s -- -y

Defaults when running silently:

  • Workspace: ~/memoh
  • Data directory: ~/memoh/data
  • Admin: admin / admin123
  • JWT secret: auto-generated
  • Postgres password: memoh123

Install a specific version:

bash
curl -fsSL https://memoh.sh | sudo sh -s -- --version v0.6.0

Or using the environment variable:

bash
curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 sh

Use China mainland mirror (for slow image pulls):

bash
curl -fsSL https://memoh.sh | sudo USE_CN_MIRROR=true sh

Environment variables can be combined, e.g. curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 USE_CN_MIRROR=true sh

Manual Install

bash
git clone https://github.com/memohai/Memoh.git
+    
Skip to content

Docker Installation

Docker is the recommended way to run Memoh. The stack includes PostgreSQL, the main server (with embedded Containerd and in-process AI agent), and the web UI — all orchestrated via Docker Compose. You do not need to install containerd, nerdctl, or buildkit on your host; everything runs inside containers.

Service Architecture

The Docker Compose stack consists of multiple services. Some are always started, others are optional and enabled via --profile:

ServiceProfileDescription
server(core)Main Memoh server with embedded Containerd and in-process AI agent
web(core)Web UI (Vue 3)
postgres(core)PostgreSQL database
qdrantqdrantQdrant vector database for memory search (sparse and dense modes)
browserbrowserPlaywright-based browser gateway for bot web automation
sparsesparseNeural sparse encoding service for memory retrieval (see below)

Sparse Service

The sparse container provides neural sparse vector encoding for memory retrieval. It runs a lightweight Python (Flask) service on port 8085 that uses the opensearch-neural-sparse-encoding-multilingual-v1 model from OpenSearch.

What it does:

  • Converts document text into sparse vectors (a compact list of token indices + importance weights) using a masked language model
  • Encodes queries using IDF-weighted term lookup for fast, efficient retrieval
  • Works with Qdrant to enable semantic memory search without requiring an external embedding API

Why use it:

  • No embedding API costs — The model runs locally inside the container, so you don't need an OpenAI/Cohere/etc. embedding API key
  • Multilingual — The underlying model supports multiple languages out of the box
  • Good retrieval quality — Neural sparse encoding provides significantly better results than keyword-only search (BM25), while being lighter than dense embedding models

When to enable it:

Enable the sparse profile (--profile sparse) if you plan to use the built-in memory provider in sparse mode. The model is pre-downloaded during the Docker image build, so the container starts quickly without needing to fetch weights at runtime.

bash
docker compose --profile qdrant --profile sparse --profile browser up -d

For more details on memory modes, see Built-in Memory Provider.

Prerequisites

Run the official install script (requires Docker and Docker Compose):

bash
curl -fsSL https://memoh.sh | sudo sh

The script will:

  1. Check for Docker and Docker Compose
  2. Prompt for configuration (workspace, data directory, admin credentials, JWT secret, Postgres password, sparse service toggle, browser core selection)
  3. Fetch the latest release tag from GitHub and clone the repository
  4. Generate config.toml from the Docker template with your settings
  5. Pin Docker image versions to the release
  6. Build the browser image with selected cores and start all services

Silent install (use all defaults, no prompts):

bash
curl -fsSL https://memoh.sh | sudo sh -s -- -y

Defaults when running silently:

  • Workspace: ~/memoh
  • Data directory: ~/memoh/data
  • Admin: admin / admin123
  • JWT secret: auto-generated
  • Postgres password: memoh123

Install a specific version:

bash
curl -fsSL https://memoh.sh | sudo sh -s -- --version v0.6.0

Or using the environment variable:

bash
curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 sh

Use China mainland mirror (for slow image pulls):

bash
curl -fsSL https://memoh.sh | sudo USE_CN_MIRROR=true sh

Environment variables can be combined, e.g. curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 USE_CN_MIRROR=true sh

Manual Install

bash
git clone https://github.com/memohai/Memoh.git
 cd Memoh
 cp conf/app.docker.toml config.toml

Edit config.toml — at minimum change:

  • admin.password — Admin password
  • auth.jwt_secret — Generate with openssl rand -base64 32
  • postgres.password — Database password (also set POSTGRES_PASSWORD env var to match)

Then start (recommended — with Qdrant, Browser, and Sparse):

bash
sudo POSTGRES_PASSWORD=your-db-password docker compose --profile qdrant --profile browser --profile sparse up -d

Or start core services only (no vector DB or browser automation):

bash
sudo POSTGRES_PASSWORD=your-db-password docker compose up -d

On macOS or if your user is in the docker group, sudo is not required.

Important: docker-compose.yml mounts ./config.toml by default. You must create this file before starting — running without it will fail.

China Mainland Mirror

For users in mainland China who cannot access Docker Hub directly, uncomment the registry line in config.toml:

toml
[workspace]
 registry = "memoh.cn"

And add the China mirror compose overlay:

bash
sudo docker compose -f docker-compose.yml -f docker/docker-compose.cn.yml \
@@ -27,8 +27,8 @@
 docker compose down            # Stop
 docker compose logs -f         # View logs
 docker compose ps              # Status
-docker compose pull && docker compose up -d  # Update to latest images

Environment Variables

VariableDefaultDescription
POSTGRES_PASSWORDmemoh123PostgreSQL password (must match postgres.password in config.toml)
MEMOH_CONFIG./config.tomlPath to the configuration file
MEMOH_VERSION(latest release)Git tag to install (e.g. v0.6.0). Also pins Docker image versions.
USE_CN_MIRRORfalseSet to true to use China mainland image mirrors
BROWSER_CORESchromium,firefoxBrowser engines to include in the browser image
BROWSER_TAGlatestDocker tag for the browser image

Published under AGPLv3

- +docker compose pull && docker compose up -d # Update to latest images

Environment Variables

VariableDefaultDescription
POSTGRES_PASSWORDmemoh123PostgreSQL password (must match postgres.password in config.toml)
MEMOH_CONFIG./config.tomlPath to the configuration file
MEMOH_VERSION(latest release)Git tag to install (e.g. v0.6.0). Also pins Docker image versions.
USE_CN_MIRRORfalseSet to true to use China mainland image mirrors
BROWSER_CORESchromium,firefoxBrowser engines to include in the browser image
BROWSER_TAGlatestDocker tag for the browser image

Published under AGPLv3

+ \ No newline at end of file diff --git a/memory-providers/builtin.html b/memory-providers/builtin.html index e321290f..ac9f14d7 100644 --- a/memory-providers/builtin.html +++ b/memory-providers/builtin.html @@ -6,12 +6,12 @@ Built-in Memory Provider | Memoh Documentation - + - + - + @@ -19,13 +19,13 @@ -
Skip to content

Built-in Memory Provider

The built-in memory provider is the standard memory backend shipped with Memoh. It works with Memoh's memory pipeline and supports:

  • Automatic memory extraction from conversations
  • Semantic memory retrieval during chat
  • Manual memory creation and editing
  • Memory compaction and rebuild workflows

The built-in provider operates in one of three memory modes, each with different infrastructure requirements and retrieval capabilities.


Memory Modes

ModeIndexRequirementsUse Case
OffFile-based onlyNoneLightweight setup, no vector search
SparseNeural sparse vectorsSparse service + Qdrant (--profile sparse)Good retrieval quality without embedding API costs
DenseDense embeddingsEmbedding model + Qdrant (--profile qdrant)Highest-quality semantic search

How Sparse Mode Works

Sparse mode uses the opensearch-neural-sparse-encoding-multilingual-v1 model (from the OpenSearch project) to convert text into sparse vectors — compact lists of token indices with importance weights. Unlike dense mode, which requires an external embedding API, the sparse model runs locally in the sparse container with no API key or cost. It supports multiple languages and provides significantly better retrieval quality than keyword-only search.


Creating a Built-in Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select builtin.
  4. Click Create.

Configuring a Built-in Provider

After creating a provider, select it from the list and configure its settings.

FieldDescription
Memory Modeoff (default), sparse, or dense. Controls how memories are indexed and retrieved.
Embedding ModelEmbedding model for dense vector search. Only used in dense mode.
Qdrant CollectionQdrant collection name. Defaults to memory_sparse.

Managing Providers

  • Edit: Select a provider and update its settings.
  • Delete: Remove a provider you no longer use.

Infrastructure Requirements

Off Mode

No additional infrastructure required. Memories are stored and retrieved using file-based indexing only.

Sparse Mode

Requires the sparse service (runs the opensearch-neural-sparse-encoding-multilingual-v1 model locally) and Qdrant vector database. Enable both with Docker Compose profiles:

bash
docker compose --profile qdrant --profile sparse up -d

The following sections must be present in config.toml:

toml
[qdrant]
+    
Skip to content

Built-in Memory Provider

The built-in memory provider is the standard memory backend shipped with Memoh. It works with Memoh's memory pipeline and supports:

  • Automatic memory extraction from conversations
  • Semantic memory retrieval during chat
  • Manual memory creation and editing
  • Memory compaction and rebuild workflows

The built-in provider operates in one of three memory modes, each with different infrastructure requirements and retrieval capabilities.


Memory Modes

ModeIndexRequirementsUse Case
OffFile-based onlyNoneLightweight setup, no vector search
SparseNeural sparse vectorsSparse service + Qdrant (--profile sparse)Good retrieval quality without embedding API costs
DenseDense embeddingsEmbedding model + Qdrant (--profile qdrant)Highest-quality semantic search

How Sparse Mode Works

Sparse mode uses the opensearch-neural-sparse-encoding-multilingual-v1 model (from the OpenSearch project) to convert text into sparse vectors — compact lists of token indices with importance weights. Unlike dense mode, which requires an external embedding API, the sparse model runs locally in the sparse container with no API key or cost. It supports multiple languages and provides significantly better retrieval quality than keyword-only search.


Creating a Built-in Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select builtin.
  4. Click Create.

Configuring a Built-in Provider

After creating a provider, select it from the list and configure its settings.

FieldDescription
Memory Modeoff (default), sparse, or dense. Controls how memories are indexed and retrieved.
Embedding ModelEmbedding model for dense vector search. Only used in dense mode.
Qdrant CollectionQdrant collection name. Defaults to memory_sparse.

Managing Providers

  • Edit: Select a provider and update its settings.
  • Delete: Remove a provider you no longer use.

Infrastructure Requirements

Off Mode

No additional infrastructure required. Memories are stored and retrieved using file-based indexing only.

Sparse Mode

Requires the sparse service (runs the opensearch-neural-sparse-encoding-multilingual-v1 model locally) and Qdrant vector database. Enable both with Docker Compose profiles:

bash
docker compose --profile qdrant --profile sparse up -d

The following sections must be present in config.toml:

toml
[qdrant]
 base_url = "http://qdrant:6334"
 
 [sparse]
 base_url = "http://sparse:8085"

Dense Mode

Requires an embedding model (configured in the provider settings) and Qdrant:

bash
docker compose --profile qdrant up -d

The Qdrant section must be present in config.toml:

toml
[qdrant]
-base_url = "http://qdrant:6334"

Assigning a Memory Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the provider you created.
  5. Click Save.

If no memory provider is selected, the bot will not use that provider configuration in its runtime settings.


Using Memory After Setup

Once a memory provider is assigned to the bot, you can manage actual memories from the bot's Memory tab:

  • Create memories manually
  • Extract memories from conversations
  • Search, edit, and delete memories
  • Compact or rebuild the memory store

For day-to-day memory operations, continue with Bot Memory Management.

Published under AGPLv3

- +base_url = "http://qdrant:6334"

Assigning a Memory Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the provider you created.
  5. Click Save.

If no memory provider is selected, the bot will not use that provider configuration in its runtime settings.


Using Memory After Setup

Once a memory provider is assigned to the bot, you can manage actual memories from the bot's Memory tab:

  • Create memories manually
  • Extract memories from conversations
  • Search, edit, and delete memories
  • Compact or rebuild the memory store

For day-to-day memory operations, continue with Bot Memory Management.

Published under AGPLv3

+ \ No newline at end of file diff --git a/memory-providers/index.html b/memory-providers/index.html index 8379b19c..91faea4d 100644 --- a/memory-providers/index.html +++ b/memory-providers/index.html @@ -6,12 +6,12 @@ Memory Providers | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Memory Providers

Memoh uses a Memory Provider to define how a bot stores, retrieves, and manages long-term memory. A bot can bind one memory provider in its General tab, and that provider becomes the backend for memory extraction and memory search.

Available Providers

Memoh supports the following memory providers:

  • Built-in: The default memory system included with Memoh. Supports three modes — off (file-based), sparse (neural sparse vectors), and dense (embedding-based semantic search). Fully self-hosted.
  • Mem0: SaaS memory provider via the Mem0 API. Requires an API key.
  • OpenViking: Self-hosted or SaaS memory provider with its own API.

Basic Flow

  1. Open the Memory Providers page from the sidebar.
  2. Create a provider instance using one of the supported provider types.
  3. Configure the provider settings.
  4. Open a bot's General tab and assign that provider in Memory Provider.
  5. Manage actual memories from the bot's Memory tab.

Next Steps

Published under AGPLv3

- +
Skip to content

Memory Providers

Memoh uses a Memory Provider to define how a bot stores, retrieves, and manages long-term memory. A bot can bind one memory provider in its General tab, and that provider becomes the backend for memory extraction and memory search.

Available Providers

Memoh supports the following memory providers:

  • Built-in: The default memory system included with Memoh. Supports three modes — off (file-based), sparse (neural sparse vectors), and dense (embedding-based semantic search). Fully self-hosted.
  • Mem0: SaaS memory provider via the Mem0 API. Requires an API key.
  • OpenViking: Self-hosted or SaaS memory provider with its own API.

Basic Flow

  1. Open the Memory Providers page from the sidebar.
  2. Create a provider instance using one of the supported provider types.
  3. Configure the provider settings.
  4. Open a bot's General tab and assign that provider in Memory Provider.
  5. Manage actual memories from the bot's Memory tab.

Next Steps

Published under AGPLv3

+ \ No newline at end of file diff --git a/memory-providers/mem0.html b/memory-providers/mem0.html index 895dca3b..052c82e2 100644 --- a/memory-providers/mem0.html +++ b/memory-providers/mem0.html @@ -6,12 +6,12 @@ Mem0 Memory Provider | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Mem0 Memory Provider

Mem0 is a SaaS memory provider that connects your bot to the Mem0 platform. Instead of managing memory infrastructure yourself, Mem0 handles storage, retrieval, and indexing through its cloud API.


Creating a Mem0 Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select mem0.
  4. Click Create.

Configuring a Mem0 Provider

After creating a provider, select it from the list and configure its settings.

FieldRequiredDescription
Base URLNoMem0 API base URL. Defaults to https://api.mem0.ai when empty.
API KeyYesAPI key for Mem0 authentication (stored as a secret).
Organization IDNoOrganization ID for workspace scoping.
Project IDNoProject ID for workspace scoping.

Assigning a Mem0 Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the Mem0 provider you created.
  5. Click Save.

Usage

Once assigned, the bot will use Mem0 as its memory backend. Memory extraction, search, and management operations are routed through the Mem0 API.

For day-to-day memory operations, see Bot Memory Management.

Published under AGPLv3

- +
Skip to content

Mem0 Memory Provider

Mem0 is a SaaS memory provider that connects your bot to the Mem0 platform. Instead of managing memory infrastructure yourself, Mem0 handles storage, retrieval, and indexing through its cloud API.


Creating a Mem0 Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select mem0.
  4. Click Create.

Configuring a Mem0 Provider

After creating a provider, select it from the list and configure its settings.

FieldRequiredDescription
Base URLNoMem0 API base URL. Defaults to https://api.mem0.ai when empty.
API KeyYesAPI key for Mem0 authentication (stored as a secret).
Organization IDNoOrganization ID for workspace scoping.
Project IDNoProject ID for workspace scoping.

Assigning a Mem0 Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the Mem0 provider you created.
  5. Click Save.

Usage

Once assigned, the bot will use Mem0 as its memory backend. Memory extraction, search, and management operations are routed through the Mem0 API.

For day-to-day memory operations, see Bot Memory Management.

Published under AGPLv3

+ \ No newline at end of file diff --git a/memory-providers/openviking.html b/memory-providers/openviking.html index 5797e741..9697e483 100644 --- a/memory-providers/openviking.html +++ b/memory-providers/openviking.html @@ -6,12 +6,12 @@ OpenViking Memory Provider | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

OpenViking Memory Provider

OpenViking is a memory provider that can be self-hosted or used as a SaaS service. It provides an alternative memory backend for bots that need a dedicated memory API.


Creating an OpenViking Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select openviking.
  4. Click Create.

Configuring an OpenViking Provider

After creating a provider, select it from the list and configure its settings.

FieldRequiredDescription
Base URLYesOpenViking API endpoint (e.g. http://openviking:8088).
API KeyNoAPI key for authentication (stored as a secret).

Assigning an OpenViking Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the OpenViking provider you created.
  5. Click Save.

Usage

Once assigned, the bot will use OpenViking as its memory backend. Memory extraction, search, and management operations are routed through the OpenViking API.

For day-to-day memory operations, see Bot Memory Management.

Published under AGPLv3

- +
Skip to content

OpenViking Memory Provider

OpenViking is a memory provider that can be self-hosted or used as a SaaS service. It provides an alternative memory backend for bots that need a dedicated memory API.


Creating an OpenViking Provider

  1. Navigate to the Memory Providers page.
  2. Click Add Memory Provider.
  3. Fill in the following fields:
    • Name: A display name for this provider.
    • Provider Type: Select openviking.
  4. Click Create.

Configuring an OpenViking Provider

After creating a provider, select it from the list and configure its settings.

FieldRequiredDescription
Base URLYesOpenViking API endpoint (e.g. http://openviking:8088).
API KeyNoAPI key for authentication (stored as a secret).

Assigning an OpenViking Provider to a Bot

  1. Navigate to the Bots page and open your bot.
  2. Go to the General tab.
  3. Find the Memory Provider dropdown.
  4. Select the OpenViking provider you created.
  5. Click Save.

Usage

Once assigned, the bot will use OpenViking as its memory backend. Memory extraction, search, and management operations are routed through the OpenViking API.

For day-to-day memory operations, see Bot Memory Management.

Published under AGPLv3

+ \ No newline at end of file diff --git a/tts-providers/edge.html b/tts-providers/edge.html index 67d1c798..f9bb7ee5 100644 --- a/tts-providers/edge.html +++ b/tts-providers/edge.html @@ -6,12 +6,12 @@ Edge TTS | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Edge TTS

Edge TTS uses Microsoft Edge's public read-aloud API for speech synthesis. It is free, requires no API key, and supports 256+ voices across 50+ languages.


Creating an Edge TTS Provider

  1. Navigate to the TTS Providers page.
  2. Click Add.
  3. Select edge as the provider type.
  4. Click Create.

The default model edge-read-aloud is automatically imported when the provider is created.


Configuring the Model

Click the edge-read-aloud model to configure its settings.

FieldDescription
VoiceLanguage + voice ID. Default: en-US-EmmaMultilingualNeural. Over 256 voices available across 50+ languages.
FormatAudio output format. Options: audio-24khz-48kbitrate-mono-mp3 (default), audio-24khz-96kbitrate-mono-mp3, webm-24khz-16bit-mono-opus.
SpeedPlayback speed. Options: 0.5, 1.0 (default), 2.0, 3.0.
PitchVoice pitch adjustment. Range: -100 to +100, default 0.

Assigning to a Bot

  1. Open a bot's General tab.
  2. Find the TTS Model dropdown.
  3. Select the configured Edge TTS model.
  4. Click Save.

The bot can now synthesize speech using Edge TTS.


Testing

Use the built-in synthesis test button on the model configuration page to preview how the selected voice, format, speed, and pitch sound before assigning to a bot.

Published under AGPLv3

- +
Skip to content

Edge TTS

Edge TTS uses Microsoft Edge's public read-aloud API for speech synthesis. It is free, requires no API key, and supports 256+ voices across 50+ languages.


Creating an Edge TTS Provider

  1. Navigate to the TTS Providers page.
  2. Click Add.
  3. Select edge as the provider type.
  4. Click Create.

The default model edge-read-aloud is automatically imported when the provider is created.


Configuring the Model

Click the edge-read-aloud model to configure its settings.

FieldDescription
VoiceLanguage + voice ID. Default: en-US-EmmaMultilingualNeural. Over 256 voices available across 50+ languages.
FormatAudio output format. Options: audio-24khz-48kbitrate-mono-mp3 (default), audio-24khz-96kbitrate-mono-mp3, webm-24khz-16bit-mono-opus.
SpeedPlayback speed. Options: 0.5, 1.0 (default), 2.0, 3.0.
PitchVoice pitch adjustment. Range: -100 to +100, default 0.

Assigning to a Bot

  1. Open a bot's General tab.
  2. Find the TTS Model dropdown.
  3. Select the configured Edge TTS model.
  4. Click Save.

The bot can now synthesize speech using Edge TTS.


Testing

Use the built-in synthesis test button on the model configuration page to preview how the selected voice, format, speed, and pitch sound before assigning to a bot.

Published under AGPLv3

+ \ No newline at end of file diff --git a/tts-providers/index.html b/tts-providers/index.html index ce698b55..5d665b18 100644 --- a/tts-providers/index.html +++ b/tts-providers/index.html @@ -6,12 +6,12 @@ TTS Providers | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

TTS Providers

Memoh supports Text-to-Speech (TTS) so bots can synthesize spoken audio from text. The TTS system is organized into three layers:

  • TTS Provider: A service type (e.g. Edge TTS). You create named provider instances from the TTS Providers page.
  • TTS Model: A specific voice/model under a provider (e.g. edge-read-aloud). Models have configurable voice, format, speed, and pitch settings.
  • Bot Assignment: In Bot Settings, select a TTS Model. The bot can then synthesize speech in conversations.

Basic Flow

  1. Navigate to the TTS Providers page from the sidebar.
  2. Click Add and select a provider type (e.g. edge).
  3. Click Create — the provider's default model is auto-imported.
  4. Click the model to configure voice, format, speed, and pitch.
  5. Test synthesis with the built-in test button.
  6. Open a bot's General tab and select the TTS Model.
  7. Save — the bot can now synthesize speech.

Available Providers

ProviderDescription
Edge TTSFree, uses Microsoft Edge's public read-aloud API. 256+ voices across 50+ languages. No API key required.

Next Steps

  • To set up the currently available provider, continue with Edge TTS.

Published under AGPLv3

- +
Skip to content

TTS Providers

Memoh supports Text-to-Speech (TTS) so bots can synthesize spoken audio from text. The TTS system is organized into three layers:

  • TTS Provider: A service type (e.g. Edge TTS). You create named provider instances from the TTS Providers page.
  • TTS Model: A specific voice/model under a provider (e.g. edge-read-aloud). Models have configurable voice, format, speed, and pitch settings.
  • Bot Assignment: In Bot Settings, select a TTS Model. The bot can then synthesize speech in conversations.

Basic Flow

  1. Navigate to the TTS Providers page from the sidebar.
  2. Click Add and select a provider type (e.g. edge).
  3. Click Create — the provider's default model is auto-imported.
  4. Click the model to configure voice, format, speed, and pitch.
  5. Test synthesis with the built-in test button.
  6. Open a bot's General tab and select the TTS Model.
  7. Save — the bot can now synthesize speech.

Available Providers

ProviderDescription
Edge TTSFree, uses Microsoft Edge's public read-aloud API. 256+ voices across 50+ languages. No API key required.

Next Steps

  • To set up the currently available provider, continue with Edge TTS.

Published under AGPLv3

+ \ No newline at end of file diff --git a/zh/concepts/identity-and-binding.html b/zh/concepts/identity-and-binding.html index fec16921..d4d9adde 100644 --- a/zh/concepts/identity-and-binding.html +++ b/zh/concepts/identity-and-binding.html @@ -6,12 +6,12 @@ 账号模型与绑定 | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

账号模型与绑定

账号模型

Memoh 将平台账号与系统账号视为两类不同实体:

  • 平台账号(ChannelIdentity 是用户在外部接入平台上的账号(例如飞书账号),不是 Memoh 内部账号。
  • 系统账号(User 是 Memoh 系统内账号。

平台账号在初始阶段可以不绑定系统账号。
bind 的职责是完成这两类账号的关联。

接入平台与 Bot

  • 接入平台(channel 是入站消息来源。
  • Bot 是系统内的授权与资源边界。

Bot 由系统账号管理,入站消息由平台账号产生。

为什么账号绑定是账号作用域

账号绑定的目标是建立账号归属关系,而不是直接发放 bot 资源权限:

  • 它只负责平台账号与系统账号的绑定;
  • 不把账号绑定与成员管理语义耦合在一起;
  • 让 bot 访问控制保持独立、可演进。

账号绑定流程(当前共识)

  1. 用户以自己的系统账号申请 bind code;
  2. 平台账号在支持的接入平台会话中发送 code;
  3. 系统校验 code,完成平台账号到系统账号的绑定;
  4. bot 成员与授权由独立流程处理。

Bot 类型语义

  • Public bot:支持成员协作语义。
  • Personal bot:语义上应为单 owner,不应依赖成员机制。

注:本文档记录的是产品语义与共识方向。
部分运行时细节仍可能处于收敛阶段。

Published under AGPLv3

- +
Skip to content

账号模型与绑定

账号模型

Memoh 将平台账号与系统账号视为两类不同实体:

  • 平台账号(ChannelIdentity 是用户在外部接入平台上的账号(例如飞书账号),不是 Memoh 内部账号。
  • 系统账号(User 是 Memoh 系统内账号。

平台账号在初始阶段可以不绑定系统账号。
bind 的职责是完成这两类账号的关联。

接入平台与 Bot

  • 接入平台(channel 是入站消息来源。
  • Bot 是系统内的授权与资源边界。

Bot 由系统账号管理,入站消息由平台账号产生。

为什么账号绑定是账号作用域

账号绑定的目标是建立账号归属关系,而不是直接发放 bot 资源权限:

  • 它只负责平台账号与系统账号的绑定;
  • 不把账号绑定与成员管理语义耦合在一起;
  • 让 bot 访问控制保持独立、可演进。

账号绑定流程(当前共识)

  1. 用户以自己的系统账号申请 bind code;
  2. 平台账号在支持的接入平台会话中发送 code;
  3. 系统校验 code,完成平台账号到系统账号的绑定;
  4. bot 成员与授权由独立流程处理。

Bot 类型语义

  • Public bot:支持成员协作语义。
  • Personal bot:语义上应为单 owner,不应依赖成员机制。

注:本文档记录的是产品语义与共识方向。
部分运行时细节仍可能处于收敛阶段。

Published under AGPLv3

+ \ No newline at end of file diff --git a/zh/concepts/index.html b/zh/concepts/index.html index aed2194e..c2851535 100644 --- a/zh/concepts/index.html +++ b/zh/concepts/index.html @@ -6,12 +6,12 @@ 核心概念 | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

核心概念

本章节用于定义 Memoh 的核心账号与访问概念。

概念图

  • 系统账号(User:Memoh 系统内账号。
  • 平台账号(ChannelIdentity:用户在外部接入平台上的账号,不是 Memoh 系统内账号(例如用户的飞书账号)。
  • Bot:由系统账号管理的资源与访问边界。
  • 账号绑定(bind:把平台账号关联到系统账号的过程。

为什么重要

Memoh 需要同时处理外部接入平台消息与系统内权限控制。
因此我们明确区分平台账号与系统账号,并将 bot 授权与账号绑定解耦。

术语说明:文档中的“平台账号”统一指用户在对应平台上的真实账号(如飞书账号),不指本项目内部账号。

本章内容

Published under AGPLv3

- +
Skip to content

核心概念

本章节用于定义 Memoh 的核心账号与访问概念。

概念图

  • 系统账号(User:Memoh 系统内账号。
  • 平台账号(ChannelIdentity:用户在外部接入平台上的账号,不是 Memoh 系统内账号(例如用户的飞书账号)。
  • Bot:由系统账号管理的资源与访问边界。
  • 账号绑定(bind:把平台账号关联到系统账号的过程。

为什么重要

Memoh 需要同时处理外部接入平台消息与系统内权限控制。
因此我们明确区分平台账号与系统账号,并将 bot 授权与账号绑定解耦。

术语说明:文档中的“平台账号”统一指用户在对应平台上的真实账号(如飞书账号),不指本项目内部账号。

本章内容

Published under AGPLv3

+ \ No newline at end of file diff --git a/zh/index.html b/zh/index.html index 2373d361..a6e18d48 100644 --- a/zh/index.html +++ b/zh/index.html @@ -6,12 +6,12 @@ Memoh 文档 | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

Memoh 文档

Memoh 是一个多成员、长记忆、容器化的 AI Agent 系统。

文档章节

面向文档贡献者

当前维护范围

当前文档先聚焦账号语义与访问控制:

  • 区分系统账号与平台账号
  • 解释为什么账号绑定是账号作用域
  • 说明账号绑定与 bot 访问控制之间的关系

说明:“平台账号”指用户在外部平台上的真实账号(例如飞书账号),不是 Memoh 系统账号。

Published under AGPLv3

- +
Skip to content

Memoh 文档

Memoh 是一个多成员、长记忆、容器化的 AI Agent 系统。

文档章节

面向文档贡献者

当前维护范围

当前文档先聚焦账号语义与访问控制:

  • 区分系统账号与平台账号
  • 解释为什么账号绑定是账号作用域
  • 说明账号绑定与 bot 访问控制之间的关系

说明:“平台账号”指用户在外部平台上的真实账号(例如飞书账号),不是 Memoh 系统账号。

Published under AGPLv3

+ \ No newline at end of file diff --git a/zh/style/terminology.html b/zh/style/terminology.html index aa4ab32d..3e6894dc 100644 --- a/zh/style/terminology.html +++ b/zh/style/terminology.html @@ -6,12 +6,12 @@ 术语规范 | Memoh Documentation - + - + - + @@ -19,8 +19,8 @@ -
Skip to content

术语规范

适用对象:文档编写者与维护者。 本页用于统一写作语义,不是面向最终用户的功能说明。

规范术语

  • 系统账号(User:Memoh 系统内账号。
  • 平台账号(ChannelIdentity:用户在外部接入平台上的账号,不是 Memoh 内账号。
  • 接入平台(channel:承载入站消息的外部平台。
  • 账号绑定(bind:把平台账号关联到系统账号的过程。
  • 绑定码(Bind Code):用于账号绑定的一次性代码。
  • Bot:由系统账号管理的资源与授权边界。

推荐写法

  • 面向产品语义时,优先写 “平台账号”,不要直接写 actor。
  • 描述业务行为时,优先写 “接入平台”,不要直接写 channel。
  • 首次出现保留技术别名,后续可只用中文术语:
    • 平台账号(ChannelIdentity
    • 系统账号(User
    • 账号绑定(bind

禁用或不推荐写法

  • 在概念文档中直接使用 actor(除非明确引用代码符号)。
  • 使用含糊表述如 “平台用户”(未区分系统账号与平台账号)。
  • 写出“平台账号是 Memoh 内部账号”这类错误语义。

示例

  • 正确:“平台账号是用户在飞书上的账号,不是 Memoh 系统账号。”
  • 正确:“账号绑定用于把平台账号关联到系统账号。”
  • 错误:“Actor 是 Memoh 里的用户。”

自检清单

  • 是否明确区分了系统账号与平台账号?
  • 叙述中是否将 channel 表述为接入平台?
  • 是否仅在首处保留技术别名?

Published under AGPLv3

- +
Skip to content

术语规范

适用对象:文档编写者与维护者。 本页用于统一写作语义,不是面向最终用户的功能说明。

规范术语

  • 系统账号(User:Memoh 系统内账号。
  • 平台账号(ChannelIdentity:用户在外部接入平台上的账号,不是 Memoh 内账号。
  • 接入平台(channel:承载入站消息的外部平台。
  • 账号绑定(bind:把平台账号关联到系统账号的过程。
  • 绑定码(Bind Code):用于账号绑定的一次性代码。
  • Bot:由系统账号管理的资源与授权边界。

推荐写法

  • 面向产品语义时,优先写 “平台账号”,不要直接写 actor。
  • 描述业务行为时,优先写 “接入平台”,不要直接写 channel。
  • 首次出现保留技术别名,后续可只用中文术语:
    • 平台账号(ChannelIdentity
    • 系统账号(User
    • 账号绑定(bind

禁用或不推荐写法

  • 在概念文档中直接使用 actor(除非明确引用代码符号)。
  • 使用含糊表述如 “平台用户”(未区分系统账号与平台账号)。
  • 写出“平台账号是 Memoh 内部账号”这类错误语义。

示例

  • 正确:“平台账号是用户在飞书上的账号,不是 Memoh 系统账号。”
  • 正确:“账号绑定用于把平台账号关联到系统账号。”
  • 错误:“Actor 是 Memoh 里的用户。”

自检清单

  • 是否明确区分了系统账号与平台账号?
  • 叙述中是否将 channel 表述为接入平台?
  • 是否仅在首处保留技术别名?

Published under AGPLv3

+ \ No newline at end of file