@absolutejs/ai 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/ai/structuredOutputError.ts", "../src/plugins/aiChat.ts", "../src/ai/memoryStore.ts", "../src/ai/client/turnQueue.ts", "../types/typeGuards.ts", "../src/ai/protocol.ts", "../src/ai/toolOutput.ts", "../src/ai/inputCapacity.ts", "../src/ai/contextPolicy.ts", "../src/ai/streamAI.ts", "../src/ai/streamAIToSSE.ts", "../src/constants.ts", "../src/ai/htmxRenderers.ts", "../src/ai/generateAI.ts", "../src/ai/streamAIWithTools.ts", "../src/ai/errors/providerError.ts", "../src/ai/providerProxy.ts", "../src/ai/ui/uiCards.ts", "../src/ai/ui/catalog.ts", "../src/ai/ui/svg.ts", "../src/ai/conversationManager.ts", "../src/ai/syncConversationStore.ts", "../src/ai/client/actions.ts", "../src/ai/client/connection.ts", "../src/ai/client/messageStore.ts", "../src/ai/client/createAIStream.ts", "../src/ai/providers/openaiCapacity.ts", "../src/ai/resilience.ts", "../src/ai/providers/instrumentation.ts", "../src/ai/models/reasoning.ts", "../src/ai/providers/reasoning.ts", "../src/ai/providers/openaiResponses.ts", "../src/ai/providers/openai.ts", "../src/ai/providers/openaiCompatible.ts", "../src/ai/providers/gemini.ts", "../src/ai/providers/anthropic.ts", "../src/ai/providers/ollama.ts", "../src/ai/providers/openrouterClient.ts", "../src/ai/providers/openrouter.ts", "../src/ai/providers/oauth2TokenSource.ts", "../src/ai/providerStatusMonitor.ts", "../src/ai/prepareTextInput.ts", "../src/ai/textSource.ts", "../src/ai/storedToolResultRecovery.ts", "../src/ai/providerRouter.ts"],
3
+ "sources": ["../src/ai/structuredOutputError.ts", "../src/plugins/aiChat.ts", "../src/ai/memoryStore.ts", "../src/ai/client/turnQueue.ts", "../types/typeGuards.ts", "../src/ai/protocol.ts", "../src/ai/toolOutput.ts", "../src/ai/inputCapacity.ts", "../src/ai/contextPolicy.ts", "../src/ai/streamAI.ts", "../src/ai/streamAIToSSE.ts", "../src/constants.ts", "../src/ai/htmxRenderers.ts", "../src/ai/generateAI.ts", "../src/ai/streamAIWithTools.ts", "../src/ai/errors/providerError.ts", "../src/ai/providerProxy.ts", "../src/ai/ui/uiCards.ts", "../src/ai/ui/catalog.ts", "../src/ai/ui/svg.ts", "../src/ai/ui/formSubmission.ts", "../src/ai/ui/backgroundWork.ts", "../src/ai/conversationManager.ts", "../src/ai/syncConversationStore.ts", "../src/ai/client/actions.ts", "../src/ai/client/connection.ts", "../src/ai/client/messageStore.ts", "../src/ai/client/createAIStream.ts", "../src/ai/providers/openaiCapacity.ts", "../src/ai/resilience.ts", "../src/ai/providers/instrumentation.ts", "../src/ai/models/reasoning.ts", "../src/ai/providers/reasoning.ts", "../src/ai/providers/openaiResponses.ts", "../src/ai/providers/openai.ts", "../src/ai/providers/openaiCompatible.ts", "../src/ai/providers/gemini.ts", "../src/ai/providers/anthropic.ts", "../src/ai/providers/ollama.ts", "../src/ai/providers/openrouterClient.ts", "../src/ai/providers/openrouter.ts", "../src/ai/providers/oauth2TokenSource.ts", "../src/ai/providerStatusMonitor.ts", "../src/ai/prepareTextInput.ts", "../src/ai/textSource.ts", "../src/ai/storedToolResultRecovery.ts", "../src/ai/providerRouter.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { AIUsage } from \"../../types/ai\";\n\nconst record = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\n/** Extract bounded validation diagnostics, never the rejected value. Supports\n * TypeBox/Ajv errors and Zod issues without requiring either validator. */\nexport const structuredOutputDiagnostics = (error: unknown): string => {\n const source = record(error) && record(error.cause) ? error.cause : error;\n const issues = record(source) ? (source.errors ?? source.issues) : undefined;\n if (Array.isArray(issues)) {\n const details = issues\n .slice(0, 10)\n .filter(record)\n .map((issue) => {\n const path =\n typeof issue.instancePath === \"string\"\n ? issue.instancePath\n : Array.isArray(issue.path)\n ? issue.path.join(\".\")\n : \"/\";\n const expected = record(issue.params)\n ? issue.params.type\n : issue.expected;\n const message =\n typeof expected === \"string\"\n ? `must be ${expected}`\n : typeof issue.keyword === \"string\"\n ? `failed ${issue.keyword} validation`\n : typeof issue.code === \"string\"\n ? `failed ${issue.code} validation`\n : \"does not satisfy the schema\";\n return `${path.slice(0, 160) || \"/\"}: ${message.slice(0, 160)}`;\n });\n if (details.length) return details.join(\"; \").slice(0, 1500);\n }\n return (\n error instanceof Error\n ? error.message\n : \"Output does not satisfy the schema\"\n ).slice(0, 1500);\n};\n\n/** A completed generation produced no valid structured result after bounded\n * repair. Transport/auth/budget failures retain their original error types. */\nexport class StructuredOutputError extends Error {\n readonly code = \"AI_STRUCTURED_OUTPUT_INVALID\";\n constructor(\n readonly reason: \"validation\" | \"missing_tool\",\n readonly attempts: number,\n readonly usage: AIUsage | undefined,\n cause: unknown,\n ) {\n super(\n `Structured AI output failed after ${attempts} attempt(s): ${structuredOutputDiagnostics(cause)}`,\n { cause },\n );\n this.name = \"StructuredOutputError\";\n }\n}\n",
6
6
  "import { Elysia } from \"elysia\";\nimport { websocket } from \"elysia/websocket\";\nimport type {\n AIAttachment,\n AIChatPluginConfig,\n AIConversation,\n AIConversationStore,\n AIMessage,\n} from \"../../types/ai\";\nimport { createMemoryStore } from \"../ai/memoryStore\";\nimport { createConversationTurnQueue } from \"../ai/client/turnQueue\";\nimport { generateId, parseAIMessage } from \"../ai/protocol\";\nimport { streamAI } from \"../ai/streamAI\";\nimport { streamAIToSSE } from \"../ai/streamAIToSSE\";\nimport { resolveRenderers } from \"../ai/htmxRenderers\";\nimport { EXCLUDE_LAST_OFFSET } from \"../constants\";\n\nconst DEFAULT_PATH = \"/chat\";\nconst MAX_PREFIX_LEN = 12;\nconst TITLE_MAX_LENGTH = 80;\nconst NOT_FOUND = -1;\n\nconst defaultParseProvider = (content: string) => {\n const colonIdx = content.indexOf(\":\");\n const hasPrefix = colonIdx > 0 && colonIdx < MAX_PREFIX_LEN;\n\n return {\n content: hasPrefix ? content.slice(colonIdx + 1) : content,\n providerName: hasPrefix ? content.slice(0, colonIdx) : \"anthropic\",\n };\n};\n\nconst appendMessage = (conversation: AIConversation, message: AIMessage) => {\n conversation.messages.push(message);\n conversation.lastMessageAt = Date.now();\n\n if (!conversation.title && message.role === \"user\") {\n conversation.title = message.content.slice(0, TITLE_MAX_LENGTH);\n }\n};\n\nconst getHistory = (conversation: AIConversation) =>\n conversation.messages.map((msg) => ({\n content: msg.content,\n role: msg.role,\n }));\n\nconst branchConversation = (\n source: AIConversation,\n fromMessageId: string,\n mode: \"append\" | \"replace\",\n) => {\n const cutoffIndex = source.messages.findIndex(\n (msg) => msg.id === fromMessageId,\n );\n\n if (cutoffIndex === NOT_FOUND) {\n return null;\n }\n\n if (mode === \"replace\" && source.messages[cutoffIndex]?.role !== \"user\") {\n return null;\n }\n\n const newId = generateId();\n const branchedMessages = source.messages\n .slice(0, cutoffIndex + (mode === \"replace\" ? 0 : 1))\n .map((msg) => ({ ...msg, conversationId: newId }));\n\n const newConversation: AIConversation = {\n createdAt: Date.now(),\n id: newId,\n messages: branchedMessages,\n };\n\n return newConversation;\n};\n\nconst buildUserMessage = (content: string, attachments?: AIAttachment[]) => {\n if (attachments && attachments.length > 0) {\n return {\n content: [\n ...attachments.map((att) => {\n if (att.media_type === \"application/pdf\") {\n return {\n name: att.name,\n source: {\n data: att.data,\n media_type: att.media_type,\n type: \"base64\" as const,\n },\n type: \"document\" as const,\n };\n }\n\n return {\n source: {\n data: att.data,\n media_type: att.media_type,\n type: \"base64\" as const,\n },\n type: \"image\" as const,\n };\n }),\n { content, type: \"text\" as const },\n ],\n role: \"user\" as const,\n };\n }\n\n return { content, role: \"user\" as const };\n};\n\nconst resolveModel = (\n config: AIChatPluginConfig,\n parsed: { model?: string; providerName: string },\n) => {\n if (parsed.model) {\n return parsed.model;\n }\n\n if (typeof config.model === \"string\") {\n return config.model;\n }\n\n if (typeof config.model === \"function\") {\n return config.model(parsed.providerName);\n }\n\n return parsed.providerName;\n};\n\nconst resolveTools = (\n config: AIChatPluginConfig,\n providerName: string,\n model: string,\n) =>\n typeof config.tools === \"function\"\n ? config.tools(providerName, model)\n : config.tools;\n\nconst resolveReasoning = (\n config: AIChatPluginConfig,\n providerName: string,\n model: string,\n) =>\n typeof config.reasoning === \"function\"\n ? config.reasoning(providerName, model)\n : config.reasoning;\n\nexport const aiChat = (config: AIChatPluginConfig) => {\n const path = config.path ?? DEFAULT_PATH;\n const store: AIConversationStore = config.store ?? createMemoryStore();\n const parseProvider = config.parseProvider ?? defaultParseProvider;\n const abortControllers = new Map<string, AbortController>();\n type ChatSocket = { readyState: number; send: (data: string) => void };\n type QueuedUserTurn = {\n attachments?: AIAttachment[];\n clientMessageId: string;\n content: string;\n conversationId: string;\n ws: ChatSocket;\n };\n const turnQueues = new Map<\n string,\n ReturnType<typeof createConversationTurnQueue<QueuedUserTurn>>\n >();\n\n const sendServerEvent = (ws: ChatSocket, event: Record<string, unknown>) => {\n if (ws.readyState === 1) ws.send(JSON.stringify(event));\n };\n\n const handleCancel = (conversationId: string) => {\n turnQueues.get(conversationId)?.cancel({ clearPending: true });\n const controller = abortControllers.get(conversationId);\n\n if (controller) {\n controller.abort();\n abortControllers.delete(conversationId);\n }\n };\n\n const handleBranch = async (\n ws: ChatSocket,\n messageId: string,\n conversationId: string,\n content: string,\n mode: \"append\" | \"replace\",\n ) => {\n const source = await store.get(conversationId);\n\n if (!source) {\n return;\n }\n\n const editedAttachments =\n mode === \"replace\"\n ? source.messages.find(({ id }) => id === messageId)?.attachments\n : undefined;\n const newConv = branchConversation(source, messageId, mode);\n\n if (newConv) {\n await store.set(newConv.id, newConv);\n const clientMessageId = generateId();\n sendServerEvent(ws, {\n attachments: editedAttachments,\n content,\n fromMessageId: messageId,\n messageId: clientMessageId,\n mode,\n newConversationId: newConv.id,\n oldConversationId: conversationId,\n type: \"branched\",\n });\n enqueueUserMessage({\n attachments: editedAttachments,\n clientMessageId,\n content,\n conversationId: newConv.id,\n ws,\n });\n }\n };\n\n const handleUserMessage = async (\n ws: ChatSocket,\n rawContent: string,\n conversationId: string,\n clientMessageId: string,\n attachments?: AIAttachment[],\n queueSignal?: AbortSignal,\n ) => {\n const assistantMessageId = generateId();\n const parsed = parseProvider(rawContent);\n const { content, providerName } = parsed;\n\n const conversation = await store.getOrCreate(conversationId);\n const history = getHistory(conversation);\n\n const controller = new AbortController();\n abortControllers.set(conversationId, controller);\n const abortFromQueue = () => controller.abort();\n queueSignal?.addEventListener(\"abort\", abortFromQueue, { once: true });\n\n appendMessage(conversation, {\n attachments,\n content,\n conversationId,\n id: clientMessageId,\n role: \"user\",\n timestamp: Date.now(),\n });\n await store.set(conversationId, conversation);\n\n const model = resolveModel(config, parsed);\n const userMessage = buildUserMessage(content, attachments);\n\n try {\n await streamAI(ws, conversationId, assistantMessageId, {\n contextPolicy: config.contextPolicy,\n maxTurns: config.maxTurns,\n messages: [...history, userMessage],\n model,\n provider: config.provider(providerName),\n signal: controller.signal,\n systemPrompt: config.systemPrompt,\n reasoning: resolveReasoning(config, providerName, model),\n tools: resolveTools(config, providerName, model),\n onComplete: async (fullResponse, usage) => {\n const conv = await store.get(conversationId);\n\n if (conv) {\n appendMessage(conv, {\n content: fullResponse,\n conversationId,\n id: assistantMessageId,\n role: \"assistant\",\n timestamp: Date.now(),\n });\n await store.set(conversationId, conv);\n }\n\n config.onComplete?.(conversationId, fullResponse, usage);\n },\n });\n } finally {\n queueSignal?.removeEventListener(\"abort\", abortFromQueue);\n if (abortControllers.get(conversationId) === controller) {\n abortControllers.delete(conversationId);\n }\n }\n };\n\n const queueForConversation = (conversationId: string) => {\n const existing = turnQueues.get(conversationId);\n if (existing) return existing;\n const queue = createConversationTurnQueue<QueuedUserTurn>({\n execute: async (turn, { signal }) => {\n sendServerEvent(turn.ws, {\n conversationId: turn.conversationId,\n messageId: turn.clientMessageId,\n type: \"turn_started\",\n });\n await handleUserMessage(\n turn.ws,\n turn.content,\n turn.conversationId,\n turn.clientMessageId,\n turn.attachments,\n signal,\n );\n },\n onError: (error, turn) => {\n sendServerEvent(turn.input.ws, {\n message: error instanceof Error ? error.message : \"AI turn failed\",\n type: \"error\",\n });\n },\n });\n turnQueues.set(conversationId, queue);\n let unsubscribe: () => void = () => undefined;\n unsubscribe = queue.subscribe(({ items }) => {\n if (items.length === 0 && turnQueues.get(conversationId) === queue) {\n turnQueues.delete(conversationId);\n unsubscribe();\n }\n });\n\n return queue;\n };\n\n function enqueueUserMessage(turn: QueuedUserTurn) {\n const queue = queueForConversation(turn.conversationId);\n const wasBusy = queue.getSnapshot().items.length > 0;\n queue.enqueue(turn, turn.clientMessageId);\n if (wasBusy) {\n const queued = queue\n .getSnapshot()\n .items.filter(({ status }) => status === \"queued\");\n const position =\n queued.findIndex(({ id }) => id === turn.clientMessageId) + 1;\n sendServerEvent(turn.ws, {\n conversationId: turn.conversationId,\n messageId: turn.clientMessageId,\n position,\n type: \"turn_queued\",\n });\n }\n }\n\n const htmxRoutes = () => {\n if (!config.htmx) {\n return new Elysia();\n }\n\n const renderers = resolveRenderers(\n typeof config.htmx === \"object\" ? config.htmx.render : undefined,\n );\n\n return new Elysia()\n .post(`${path}/message`, async ({ body }) => {\n const requestBody = body && typeof body === \"object\" ? body : {};\n const rawContent =\n \"content\" in requestBody ? String(requestBody.content) : undefined;\n const rawConvId =\n \"conversationId\" in requestBody\n ? String(requestBody.conversationId)\n : undefined;\n const rawAttachmentsValue =\n \"attachments\" in requestBody ? requestBody.attachments : undefined;\n const rawAttachments: AIAttachment[] | undefined = Array.isArray(\n rawAttachmentsValue,\n )\n ? rawAttachmentsValue\n : undefined;\n\n if (!rawContent) {\n return new Response(\"Missing content\", { status: 400 });\n }\n\n const conversationId = rawConvId || generateId();\n const messageId = generateId();\n const parsed = parseProvider(rawContent);\n const { content } = parsed;\n\n const conversation = await store.getOrCreate(conversationId);\n\n appendMessage(conversation, {\n attachments: rawAttachments,\n content,\n conversationId,\n id: messageId,\n role: \"user\",\n timestamp: Date.now(),\n });\n await store.set(conversationId, conversation);\n\n const sseUrl = `${path}/sse/${conversationId}/${messageId}`;\n\n return new Response(\n `<div id=\"msg-${messageId}\" class=\"message user\">` +\n `<div>${content}</div>` +\n `</div>` +\n `<div id=\"response-${messageId}\" ` +\n `hx-ext=\"sse\" ` +\n `sse-connect=\"${sseUrl}\" ` +\n `hx-swap=\"innerHTML\">` +\n `<div id=\"sse-content-${messageId}\" sse-swap=\"content\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-thinking-${messageId}\" sse-swap=\"thinking\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-tools-${messageId}\" sse-swap=\"tools\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-images-${messageId}\" sse-swap=\"images\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-status-${messageId}\" sse-swap=\"status\" hx-swap=\"innerHTML\"></div>` +\n `</div>`,\n { headers: { \"Content-Type\": \"text/html\" } },\n );\n })\n .get(\n `${path}/sse/:conversationId/:messageId`,\n async function* ({ params }) {\n const { conversationId, messageId } = params;\n const conversation = await store.get(conversationId);\n\n if (!conversation) {\n yield {\n data: renderers.error(\"Conversation not found\"),\n event: \"status\",\n };\n\n return;\n }\n\n const parsed = parseProvider(\n conversation.messages.at(EXCLUDE_LAST_OFFSET)?.content ?? \"\",\n );\n const { providerName } = parsed;\n const model = resolveModel(config, parsed);\n\n const controller = new AbortController();\n abortControllers.set(conversationId, controller);\n\n const history = getHistory(conversation);\n\n const lastMsg = conversation.messages.at(EXCLUDE_LAST_OFFSET);\n const userMessage = buildUserMessage(\n lastMsg?.content ?? \"\",\n lastMsg?.attachments,\n );\n\n const sseStream = streamAIToSSE(\n conversationId,\n messageId,\n {\n contextPolicy: config.contextPolicy,\n maxTurns: config.maxTurns,\n messages: [...history.slice(0, EXCLUDE_LAST_OFFSET), userMessage],\n model,\n provider: config.provider(providerName),\n signal: controller.signal,\n systemPrompt: config.systemPrompt,\n reasoning: resolveReasoning(config, providerName, model),\n tools: resolveTools(config, providerName, model),\n },\n renderers,\n );\n\n for await (const event of sseStream) {\n yield event;\n }\n\n const conv = await store.get(conversationId);\n\n if (conv) {\n await store.set(conversationId, conv);\n }\n\n abortControllers.delete(conversationId);\n },\n )\n .get(`${path}/history/:conversationId`, async ({ params }) => {\n const conv = await store.get(params.conversationId);\n\n if (!conv) {\n return new Response(\"\", { status: 404 });\n }\n\n const html = conv.messages\n .map(\n (msg) =>\n `<div class=\"message ${msg.role}\"><div>${msg.content}</div></div>`,\n )\n .join(\"\");\n\n return new Response(html, {\n headers: { \"Content-Type\": \"text/html\" },\n });\n })\n .get(`${path}/conversations/list`, async () => {\n const convos = await store.list();\n const html = convos\n .map(\n (c) =>\n `<div class=\"conversation-item\" ` +\n `hx-get=\"${path}/history/${c.id}\" ` +\n `hx-target=\"#messages\" ` +\n `hx-swap=\"innerHTML\">` +\n `<span class=\"title\">${c.title}</span>` +\n `<span class=\"count\">${c.messageCount} messages</span>` +\n `</div>`,\n )\n .join(\"\");\n\n return new Response(\n html || '<div class=\"empty\">No conversations</div>',\n { headers: { \"Content-Type\": \"text/html\" } },\n );\n });\n };\n\n const app = new Elysia()\n // Elysia 2 no longer bundles WebSocket support; without this the\n // chat socket below type-checks and is simply never served.\n .use(websocket())\n .ws(path, {\n message: async (ws, raw) => {\n const msg = parseAIMessage(raw);\n\n if (!msg) {\n return;\n }\n\n if (msg.type === \"cancel\" && msg.conversationId) {\n handleCancel(msg.conversationId);\n\n return;\n }\n\n if (msg.type === \"branch\") {\n await handleBranch(\n ws,\n msg.messageId,\n msg.conversationId,\n msg.content,\n \"append\",\n );\n\n return;\n }\n\n if (msg.type === \"edit\") {\n await handleBranch(\n ws,\n msg.messageId,\n msg.conversationId,\n msg.content,\n \"replace\",\n );\n\n return;\n }\n\n if (msg.type === \"message\") {\n const conversationId = msg.conversationId ?? generateId();\n enqueueUserMessage({\n attachments: msg.attachments,\n clientMessageId: msg.messageId ?? generateId(),\n content: msg.content,\n conversationId,\n ws,\n });\n }\n },\n })\n .get(`${path}/conversations`, () => store.list())\n .get(`${path}/conversations/:id`, async ({ params }) => {\n const conv = await store.get(params.id);\n\n if (!conv) {\n return new Response(\"Not found\", { status: 404 });\n }\n\n return {\n id: conv.id,\n messages: conv.messages,\n title: conv.title ?? \"Untitled\",\n };\n })\n .delete(`${path}/conversations/:id`, async ({ params }) => {\n await store.remove(params.id);\n\n return { ok: true };\n })\n .use(htmxRoutes());\n\n // aiChat mounts chat/SSE/WS routes whose paths are CONFIGURABLE (config.path\n // → Elysia keys them by `string`) and the htmx branch is a conditional union\n // — so the inferred return both can't be precisely typed and explodes a\n // consumer's server type. It exposes no global context, so the honest public\n // type is a base Elysia (routes reached by path at runtime).\n return app as unknown as Elysia;\n};\n",
@@ -16,23 +16,25 @@
16
16
  "export const ANGULAR_INIT_TIMEOUT_MS = 500;\nexport const ANSI_ESCAPE_LENGTH = 3;\nexport const ASCII_SPACE = 32;\nexport const BASE_36_RADIX = 36;\nexport const BUN_BUILD_WARNING_SUPPRESSION =\n \"wildcard sideEffects are not supported yet\";\nexport const BODY_SLICE_LENGTH = 2000;\nexport const BYTES_PER_KILOBYTE = 1024;\nexport const CLI_ARGS_OFFSET = 3;\nexport const CSS_ERROR_RESOLVE_DELAY_MS = 50;\nexport const CSS_MAX_CHECK_ATTEMPTS = 10;\nexport const CSS_MAX_PARSE_TIMEOUT_MS = 500;\nexport const CSS_SHEET_READY_TIMEOUT_MS = 100;\nexport const DEFAULT_CHUNK_SIZE = 16_384;\nexport const DEFAULT_DEBOUNCE_MS = 15;\nexport const DEFAULT_PORT = 3000;\nexport const DEV_SERVER_RESTART_DEBOUNCE_MS = 100;\nexport const DOM_UPDATE_DELAY_MS = 50;\nexport const FILE_PROTOCOL_PREFIX_LENGTH = 7;\nexport const FOCUS_ID_PREFIX_LENGTH = 3;\nexport const FOCUS_IDX_PREFIX_LENGTH = 4;\nexport const FOCUS_NAME_PREFIX_LENGTH = 5;\nexport const HMR_UPDATE_TIMEOUT_MS = 2000;\nexport const HOOK_SIGNATURE_LENGTH = 12;\nexport const EXCLUDE_LAST_OFFSET = -1;\nexport const HTTP_STATUS_OK = 200;\nexport const HTTP_STATUS_BAD_REQUEST = 400;\nexport const HTTP_STATUS_NOT_FOUND = 404;\nexport const HOURS_IN_DAY = 24;\nexport const HOURS_IN_HALF_DAY = 12;\nexport const MAX_ERROR_LENGTH = 200;\nexport const MAX_RECONNECT_ATTEMPTS = 60;\nexport const MILLISECONDS_IN_A_SECOND = 1000;\nexport const MINUTES_IN_AN_HOUR = 60;\nexport const SECONDS_IN_A_MINUTE = 60;\nexport const MILLISECONDS_IN_A_MINUTE =\n MILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;\nexport const MILLISECONDS_IN_A_DAY =\n MILLISECONDS_IN_A_SECOND *\n SECONDS_IN_A_MINUTE *\n MINUTES_IN_AN_HOUR *\n HOURS_IN_DAY;\nexport const OVERLAY_FADE_DURATION_MS = 150;\nexport const PING_INTERVAL_MS = 30_000;\nexport const RAF_BATCH_COUNT = 3;\nexport const RANDOM_ID_END_INDEX = 11;\nexport const REBUILD_BATCH_DELAY_MS = 10;\nexport const REBUILD_RELOAD_DELAY_MS = 200;\nexport const RECONNECT_INITIAL_DELAY_MS = 500;\nexport const RECONNECT_POLL_INTERVAL_MS = 300;\nexport const RAG_CHUNK_ID_PAD_LENGTH = 3;\nexport const RAG_DOCUMENT_ID_PREVIEW_LENGTH = 32;\nexport const RAG_DOCUMENT_SLUG_MAX_LENGTH = 48;\nexport const RAG_MIN_CHUNK_LENGTH_FLOOR = 120;\nexport const RAG_NATIVE_QUERY_CANDIDATE_LIMIT = 1000;\nexport const RAG_SEARCH_SCORE_DECIMAL_PLACES = 3;\nexport const RAG_VECTOR_DIMENSIONS_DEFAULT = 24;\nexport const REACT_STREAM_SLOT_FAST_DELAY_MS = 5;\nexport const REACT_STREAM_SLOT_SLOW_DELAY_MS = 20;\nexport const SIGINT_EXIT_CODE = 130;\nexport const SIGTERM_EXIT_CODE = 143;\nexport const SVELTE_CSS_LOAD_TIMEOUT_MS = 500;\nexport const TIME_PRECISION = 2;\nexport const TWO_THIRDS = 2 / 3;\nexport const UNFOUND_INDEX = -1;\nexport const WEBSOCKET_NORMAL_CLOSURE = 1000;\n",
17
17
  "import type {\n AIHTMXRenderConfig,\n AIUsage,\n RAGRetrievalTrace,\n RAGSource,\n} from \"../../types/ai\";\nimport { MILLISECONDS_IN_A_SECOND } from \"../constants\";\n\nexport type ResolvedRenderers = Required<AIHTMXRenderConfig>;\n\nconst escapeHtml = (text: string) =>\n text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\");\n\nconst defaultChunk = (_text: string, fullContent: string) =>\n `<div class=\"ai-content\">${escapeHtml(fullContent)}</div>`;\n\nconst defaultMessageStart = ({\n cancelUrl,\n content,\n messageId,\n sseUrl,\n}: {\n conversationId: string;\n messageId: string;\n content: string;\n sseUrl: string;\n cancelUrl: string;\n}) =>\n `<div id=\"msg-${messageId}\" class=\"message user\">` +\n `<div>${escapeHtml(content)}</div>` +\n `</div>` +\n `<div id=\"response-${messageId}\" ` +\n `hx-ext=\"sse\" ` +\n `sse-connect=\"${escapeHtml(sseUrl)}\" ` +\n `hx-swap=\"innerHTML\">` +\n `<div id=\"sse-retrieval-${messageId}\" sse-swap=\"retrieval\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-sources-${messageId}\" sse-swap=\"sources\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-content-${messageId}\" sse-swap=\"content\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-thinking-${messageId}\" sse-swap=\"thinking\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-tools-${messageId}\" sse-swap=\"tools\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-images-${messageId}\" sse-swap=\"images\" hx-swap=\"innerHTML\"></div>` +\n `<div id=\"sse-status-${messageId}\" sse-swap=\"status\" hx-swap=\"innerHTML\">` +\n `<button type=\"button\" class=\"ai-cancel-button\" hx-post=\"${escapeHtml(cancelUrl)}\" hx-target=\"#sse-status-${messageId}\" hx-swap=\"innerHTML\">Cancel</button>` +\n `</div>` +\n `</div>`;\n\nconst defaultThinking = (text: string) =>\n `<details class=\"ai-thinking\"><summary>Thinking</summary><p>${escapeHtml(text)}</p></details>`;\n\nconst defaultToolRunning = (name: string, _input: unknown) =>\n `<div class=\"ai-tool running\"><span class=\"tool-name\">${escapeHtml(name)}</span> <span class=\"tool-status\">Running...</span></div>`;\n\nconst defaultToolComplete = (name: string, result: string) =>\n `<details class=\"ai-tool complete\"><summary>${escapeHtml(name)}</summary><pre>${escapeHtml(result)}</pre></details>`;\n\nconst defaultImage = (data: string, format: string, revisedPrompt?: string) =>\n `<figure class=\"ai-image\">` +\n `<img src=\"data:image/${escapeHtml(format)};base64,${data}\" alt=\"${revisedPrompt ? escapeHtml(revisedPrompt) : \"Generated image\"}\" />${\n revisedPrompt ? `<figcaption>${escapeHtml(revisedPrompt)}</figcaption>` : \"\"\n }</figure>`;\n\nconst defaultComplete = (\n usage?: AIUsage,\n durationMs?: number,\n model?: string,\n) => {\n const parts: string[] = [];\n\n if (model) {\n parts.push(escapeHtml(model));\n }\n\n if (usage) {\n parts.push(`${usage.inputTokens}in / ${usage.outputTokens}out`);\n }\n\n if (durationMs !== undefined) {\n const seconds = (durationMs / MILLISECONDS_IN_A_SECOND).toFixed(1);\n parts.push(`${seconds}s`);\n }\n\n return parts.length > 0\n ? `<div class=\"ai-usage\">${parts.join(\" · \")}</div>`\n : \"\";\n};\n\nconst defaultError = (message: string) =>\n `<div class=\"ai-error\">${escapeHtml(message)}</div>`;\n\nconst defaultCanceled = () => `<div class=\"ai-canceled\">Canceled.</div>`;\n\nconst defaultRAGRetrieving = () =>\n `<div class=\"ai-retrieving\">Retrieving sources...</div>`;\n\nconst renderTraceSummary = (trace?: RAGRetrievalTrace) => {\n if (!trace) {\n return \"\";\n }\n\n return (\n `<div class=\"ai-trace-summary\">` +\n `Mode: ${escapeHtml(trace.mode)} · Final: ${trace.resultCounts.final} · Vector: ${trace.resultCounts.vector} · Lexical: ${trace.resultCounts.lexical}` +\n `</div>`\n );\n};\n\nconst defaultRAGRetrieved = (\n sources: RAGSource[],\n input?: { trace?: RAGRetrievalTrace },\n) =>\n sources.length === 0\n ? \"\"\n : `<div class=\"ai-sources\">` +\n `<h4>Citations</h4>` +\n renderTraceSummary(input?.trace) +\n `<ul>` +\n `${sources\n .map(\n (source) =>\n `<li>[${source.chunkId}] ${escapeHtml(source.text)}${\n source.source ? ` (${escapeHtml(source.source)})` : \"\"\n }</li>`,\n )\n .join(\"\")}` +\n `</ul>` +\n `</div>`;\n\nexport const resolveRenderers = (\n custom?: AIHTMXRenderConfig,\n): ResolvedRenderers => ({\n chunk: custom?.chunk ?? defaultChunk,\n messageStart: custom?.messageStart ?? defaultMessageStart,\n complete: custom?.complete ?? defaultComplete,\n canceled: custom?.canceled ?? defaultCanceled,\n error: custom?.error ?? defaultError,\n image: custom?.image ?? defaultImage,\n ragRetrieving: custom?.ragRetrieving ?? defaultRAGRetrieving,\n ragRetrieved: custom?.ragRetrieved ?? defaultRAGRetrieved,\n thinking: custom?.thinking ?? defaultThinking,\n toolComplete: custom?.toolComplete ?? defaultToolComplete,\n toolRunning: custom?.toolRunning ?? defaultToolRunning,\n});\n",
18
18
  "import { toolOutputText, toolResultBlock } from \"./toolOutput\";\nimport {\n StructuredOutputError,\n structuredOutputDiagnostics,\n} from \"./structuredOutputError\";\nimport { streamWithAIContext, type AIContextPolicy } from \"./contextPolicy\";\nimport type {\n AICitationChunk,\n AIImageData,\n AIProviderConfig,\n AIProviderContentBlock,\n AIProviderMessage,\n AIProviderResponseFormat,\n AIProviderToolChoice,\n AIProviderToolDefinition,\n AIResponseMetadata,\n AIToolMap,\n AIToolOutput,\n AIUsage,\n ReasoningConfig,\n} from \"../../types/ai\";\n\n// Non-streaming convenience layer over the streaming provider interface.\n// Backend transforms (cleanup, extraction, reformatting) need the finished\n// result, not incremental tokens — so these helpers consume `provider.stream()`\n// to completion and hand back the assembled value. Same request, same\n// transport as streaming; they just spare every caller the collection loop.\n\nconst DEFAULT_OBJECT_TOOL_NAME = \"respond\";\n\nexport type GenerateAIToolCall = {\n id: string;\n name: string;\n input: unknown;\n};\n\nexport type GenerateAIOptions = {\n maxRetries?: number;\n contextPolicy?: AIContextPolicy | false;\n provider: AIProviderConfig;\n model: string;\n messages: AIProviderMessage[];\n systemPrompt?: string;\n /** Cache the system prompt (Anthropic prompt caching). See AIProviderStreamParams. */\n cacheSystemPrompt?: boolean;\n /** Per-call override of the provider `promptCaching` default. See AIProviderStreamParams. */\n promptCaching?: boolean;\n providerOptions?: Record<string, unknown>;\n maxTokens?: number;\n temperature?: number;\n topP?: number;\n stopSequences?: string[];\n tools?: AIProviderToolDefinition[];\n toolChoice?: AIProviderToolChoice;\n responseFormat?: AIProviderResponseFormat;\n /** Portable reasoning effort — translated per provider/model. */\n reasoning?: ReasoningConfig;\n signal?: AbortSignal;\n};\n\nexport type GenerateAIResult = {\n /** Exact assistant blocks retained for protocol-safe tool/repair turns. */\n contentBlocks?: AIProviderContentBlock[];\n /** Actual request history after any context recovery. */\n requestMessages?: AIProviderMessage[];\n citations: AICitationChunk[];\n /** Finished images the model generated (e.g. OpenAI's hosted image tool). */\n images: AIImageData[];\n metadata?: AIResponseMetadata;\n text: string;\n toolCalls: GenerateAIToolCall[];\n usage?: AIUsage;\n};\n\n/**\n * One-shot, non-streaming generation. Drains the provider stream and returns\n * the full assembled text, any tool calls the model made (with input already\n * JSON-parsed by the provider), and final token usage.\n */\nexport const generateAI = async (\n options: GenerateAIOptions,\n): Promise<GenerateAIResult> => {\n let requestMessages = options.messages;\n const stream = streamWithAIContext(\n options.provider,\n {\n cacheSystemPrompt: options.cacheSystemPrompt,\n maxTokens: options.maxTokens,\n maxRetries: options.maxRetries,\n messages: options.messages,\n model: options.model,\n promptCaching: options.promptCaching,\n providerOptions: options.providerOptions,\n reasoning: options.reasoning,\n responseFormat: options.responseFormat,\n signal: options.signal,\n stopSequences: options.stopSequences,\n systemPrompt: options.systemPrompt,\n temperature: options.temperature,\n toolChoice: options.toolChoice,\n tools: options.tools,\n topP: options.topP,\n },\n options.contextPolicy,\n (request) => {\n requestMessages = request.messages;\n },\n );\n\n const contentBlocks: AIProviderContentBlock[] = [];\n let thinking: { text: string; signature?: string } | undefined;\n const flushThinking = () => {\n if (thinking)\n contentBlocks.push({\n type: \"thinking\",\n thinking: thinking.text,\n signature: thinking.signature,\n });\n thinking = undefined;\n };\n let text = \"\";\n const toolCalls: GenerateAIToolCall[] = [];\n const citations: AICitationChunk[] = [];\n const images: AIImageData[] = [];\n let usage: AIUsage | undefined;\n let metadata: AIResponseMetadata | undefined;\n\n for await (const chunk of stream) {\n if (chunk.type === \"thinking\") {\n thinking ??= { text: \"\" };\n thinking.text += chunk.content;\n if (chunk.signature) thinking.signature = chunk.signature;\n } else if (chunk.type === \"text\") {\n flushThinking();\n const last = contentBlocks.at(-1);\n if (last?.type === \"text\") last.content += chunk.content;\n else contentBlocks.push({ type: \"text\", content: chunk.content });\n text += chunk.content;\n } else if (chunk.type === \"tool_use\") {\n flushThinking();\n contentBlocks.push({\n type: \"tool_use\",\n id: chunk.id,\n name: chunk.name,\n input:\n chunk.input && typeof chunk.input === \"object\" ? chunk.input : {},\n providerData: chunk.providerData,\n });\n toolCalls.push({ id: chunk.id, input: chunk.input, name: chunk.name });\n } else if (chunk.type === \"provider_event\") {\n flushThinking();\n contentBlocks.push({\n type: \"provider_data\",\n provider: chunk.provider,\n data: chunk.data,\n });\n } else if (chunk.type === \"citation\") {\n citations.push(chunk);\n } else if (chunk.type === \"image\") {\n if (!chunk.isPartial) {\n const { type: _type, ...image } = chunk;\n images.push(image);\n }\n } else if (chunk.type === \"done\") {\n usage = chunk.usage;\n metadata = chunk.metadata;\n }\n }\n\n flushThinking();\n return {\n citations,\n contentBlocks,\n images,\n requestMessages,\n metadata,\n text,\n toolCalls,\n usage,\n };\n};\n\nconst DEFAULT_TOOL_MAX_TURNS = 6;\n\nexport type GenerateAIWithToolsOptions = Omit<\n GenerateAIOptions,\n \"tools\" | \"toolChoice\"\n> & {\n /** Tools the model may call — each with a `handler` the loop runs on its behalf. */\n tools: AIToolMap;\n /** Max model⇄tool round-trips before forcing a final answer. Default 6. */\n maxTurns?: number;\n /** Observe each executed tool call (name, parsed input, string result). */\n onToolUse?: (name: string, input: unknown, result: string) => void;\n};\n\nexport type GenerateAIWithToolsResult = {\n text: string;\n /** Finished images generated across every turn. */\n images: AIImageData[];\n toolCalls: GenerateAIToolCall[];\n /** Model turns consumed, including a forced final synthesis when needed. */\n turns: number;\n /** Whether the model completed normally or required max-turn finalization. */\n stopReason: \"completed\" | \"max_turns_finalized\";\n usage?: AIUsage;\n /** The full message thread incl. assistant tool_use + tool_result turns. */\n messages: AIProviderMessage[];\n};\n\nexport const mergeUsage = (\n left: AIUsage | undefined,\n right: AIUsage | undefined,\n) => {\n if (!left) return right;\n if (!right) return left;\n const add = (a?: number, b?: number) =>\n a === undefined && b === undefined ? undefined : (a ?? 0) + (b ?? 0);\n const serverToolUse = { ...left.serverToolUse };\n for (const [key, value] of Object.entries(right.serverToolUse ?? {}))\n serverToolUse[key] = (serverToolUse[key] ?? 0) + value;\n\n return {\n cacheReadInputTokens: add(\n left.cacheReadInputTokens,\n right.cacheReadInputTokens,\n ),\n cacheWriteInputTokens: add(\n left.cacheWriteInputTokens,\n right.cacheWriteInputTokens,\n ),\n costCredits: add(left.costCredits, right.costCredits),\n inputTokens: (left.inputTokens ?? 0) + (right.inputTokens ?? 0),\n outputTokens: (left.outputTokens ?? 0) + (right.outputTokens ?? 0),\n reasoningTokens: add(left.reasoningTokens, right.reasoningTokens),\n serverToolUse:\n Object.keys(serverToolUse).length > 0 ? serverToolUse : undefined,\n upstreamInferenceCostCredits: add(\n left.upstreamInferenceCostCredits,\n right.upstreamInferenceCostCredits,\n ),\n };\n};\n\nexport const toProviderTools = (tools: AIToolMap): AIProviderToolDefinition[] =>\n Object.entries(tools).map(([name, definition]) => ({\n ...(definition.deferLoading ? { deferLoading: true } : {}),\n description: definition.description,\n input_schema: definition.input,\n name,\n }));\n\n/**\n * Agentic, non-streaming generation: the model may call the provided handler tools, this\n * runs them, feeds the results back, and loops until the model answers (or `maxTurns`).\n * Transport-agnostic — usable from HTTP/SSE/generator paths, unlike the WebSocket `streamAI`.\n * Returns the final text, every tool call made, summed usage, and the full message thread.\n */\nexport const generateAIWithTools = async (\n options: GenerateAIWithToolsOptions,\n): Promise<GenerateAIWithToolsResult> => {\n const {\n maxTurns = DEFAULT_TOOL_MAX_TURNS,\n onToolUse,\n tools,\n ...base\n } = options;\n const providerTools = toProviderTools(tools);\n const toolCalls: GenerateAIToolCall[] = [];\n const images: AIImageData[] = [];\n let usage: AIUsage | undefined;\n let turns = 0;\n\n const executeCalls = async (\n messages: AIProviderMessage[],\n result: GenerateAIResult,\n ) => {\n toolCalls.push(...result.toolCalls);\n const assistantBlocks: AIProviderContentBlock[] = result.contentBlocks ?? [\n ...(result.text ? [{ content: result.text, type: \"text\" as const }] : []),\n ...result.toolCalls.map((call) => ({\n id: call.id,\n // Providers (Anthropic) require tool_use.input to be an object on the way back;\n // a no-arg tool can parse to null/undefined, so coerce to {}.\n input: call.input && typeof call.input === \"object\" ? call.input : {},\n name: call.name,\n type: \"tool_use\" as const,\n })),\n ];\n const resultBlocks = await Promise.all(\n result.toolCalls.map(async (call) => {\n const definition = tools[call.name];\n const output: AIToolOutput = definition\n ? await Promise.resolve(definition.handler(call.input)).catch(\n (err: unknown) =>\n `Error: ${err instanceof Error ? err.message : String(err)}`,\n )\n : `Error: unknown tool \"${call.name}\"`;\n onToolUse?.(call.name, call.input, toolOutputText(output));\n\n return toolResultBlock(call.id, output);\n }),\n );\n\n return [\n ...(result.requestMessages ?? messages),\n { content: assistantBlocks, role: \"assistant\" as const },\n { content: resultBlocks, role: \"user\" as const },\n ];\n };\n\n const runTurn = async (\n messages: AIProviderMessage[],\n turnsLeft: number,\n ): Promise<GenerateAIWithToolsResult> => {\n turns += 1;\n const result = await generateAI({\n ...base,\n messages,\n toolChoice: \"auto\",\n tools: providerTools,\n });\n usage = mergeUsage(usage, result.usage);\n images.push(...result.images);\n if (result.toolCalls.length === 0) {\n return {\n images,\n messages: result.requestMessages ?? messages,\n stopReason: \"completed\",\n text: result.text,\n toolCalls,\n turns,\n usage,\n };\n }\n const nextMessages = await executeCalls(messages, result);\n if (turnsLeft <= 1) {\n turns += 1;\n const final = await generateAI({\n ...base,\n messages: nextMessages,\n toolChoice: \"none\",\n tools: providerTools,\n });\n usage = mergeUsage(usage, final.usage);\n images.push(...final.images);\n\n return {\n images,\n messages: final.requestMessages ?? nextMessages,\n stopReason: \"max_turns_finalized\",\n text: final.text,\n toolCalls,\n turns,\n usage,\n };\n }\n\n return runTurn(nextMessages, turnsLeft - 1);\n };\n\n return runTurn(options.messages, Math.max(1, maxTurns));\n};\n\nexport type GenerateObjectAIOptions<T> = {\n maxRetries?: number;\n contextPolicy?: AIContextPolicy | false;\n provider: AIProviderConfig;\n model: string;\n messages: AIProviderMessage[];\n schema: Record<string, unknown>;\n systemPrompt?: string;\n /** Cache the system prompt (Anthropic prompt caching). See AIProviderStreamParams. */\n cacheSystemPrompt?: boolean;\n /** Per-call override of the provider `promptCaching` default. See AIProviderStreamParams. */\n promptCaching?: boolean;\n toolName?: string;\n toolDescription?: string;\n maxTokens?: number;\n temperature?: number;\n /** Portable reasoning effort — translated per provider/model. */\n reasoning?: ReasoningConfig;\n validate?: (raw: unknown) => T;\n /**\n * When the model fails to produce usable structured output — it skips the tool\n * call, or `validate` throws — re-prompt it with the specific failure and ask\n * it to correct itself, up to this many EXTRA attempts. Default 1.\n *\n * Models routinely overrun a `maxLength`, pick an off-enum value, or drop a\n * field; those are recoverable deviations, not fatal errors. One repair pass\n * turns the common failure from \"the whole feature throws\" into \"the model\n * fixes its own output\". Set to 0 to restore strict single-attempt behaviour.\n */\n maxRepairAttempts?: number;\n signal?: AbortSignal;\n};\n\nexport type GenerateObjectAIResult<T> = {\n object: T;\n usage?: AIUsage;\n};\n\nconst DEFAULT_OBJECT_REPAIR_ATTEMPTS = 1;\n\n/**\n * One-shot structured output, provider-agnostic. Exposes the caller's JSON\n * schema as a single synthetic tool and forces the model to call it, then\n * returns the parsed tool input as the result object. Pass `validate` (e.g. a\n * Zod `schema.parse`) to narrow `unknown` to `T` and reject malformed output.\n *\n * Malformed output is not treated as fatal: when the model skips the tool call\n * or `validate` throws, the call is retried with the specific failure fed back\n * to the model (`maxRepairAttempts`, default 1) so it can correct itself before\n * the error finally surfaces.\n *\n * Works for any provider that supports forced tool choice — it does not rely\n * on a provider-specific structured-output API.\n */\nexport const generateObjectAI = async <T = unknown>(\n options: GenerateObjectAIOptions<T>,\n): Promise<GenerateObjectAIResult<T>> => {\n const toolName = options.toolName ?? DEFAULT_OBJECT_TOOL_NAME;\n\n const tool: AIProviderToolDefinition = {\n description:\n options.toolDescription ??\n \"Return the final structured result. Call this exactly once.\",\n input_schema: options.schema,\n name: toolName,\n };\n\n const maxRepairAttempts = Math.max(\n 0,\n options.maxRepairAttempts ?? DEFAULT_OBJECT_REPAIR_ATTEMPTS,\n );\n // Grows by an assistant tool_use + user tool_result pair after each failed\n // attempt, so the model sees exactly what it got wrong on the retry.\n const messages: AIProviderMessage[] = [...options.messages];\n let usage: AIUsage | undefined;\n let lastError: unknown;\n let reason: \"validation\" | \"missing_tool\" = \"missing_tool\";\n let attempts = 0;\n\n for (let attempt = 0; attempt <= maxRepairAttempts; attempt += 1) {\n attempts += 1;\n const result = await generateAI({\n contextPolicy: options.contextPolicy,\n cacheSystemPrompt: options.cacheSystemPrompt,\n maxTokens: options.maxTokens,\n maxRetries: options.maxRetries,\n messages,\n model: options.model,\n promptCaching: options.promptCaching,\n provider: options.provider,\n reasoning: options.reasoning,\n signal: options.signal,\n systemPrompt: options.systemPrompt,\n temperature: options.temperature,\n toolChoice: { name: toolName },\n tools: [tool],\n });\n usage = mergeUsage(usage, result.usage);\n if (result.requestMessages)\n messages.splice(0, messages.length, ...result.requestMessages);\n\n const call = result.toolCalls.find(\n (toolCall) => toolCall.name === toolName,\n );\n\n let failure: string | undefined;\n let object: T | undefined;\n if (!call) {\n reason = \"missing_tool\";\n lastError = new Error(\n `generateObjectAI: model did not call the \"${toolName}\" tool`,\n );\n failure = `You did not call the \"${toolName}\" tool. Call it exactly once with the structured result.`;\n } else {\n try {\n object = options.validate\n ? options.validate(call.input)\n : (call.input as T);\n } catch (error) {\n reason = \"validation\";\n lastError = error;\n failure = `Your \"${toolName}\" output failed validation: ${structuredOutputDiagnostics(\n error,\n )}. Call \"${toolName}\" again with corrected output that satisfies the schema.`;\n }\n }\n\n if (failure === undefined) return { object: object as T, usage };\n if (attempt >= maxRepairAttempts) break;\n\n // Retain the exact assistant protocol blocks, even if it called the wrong\n // tool or omitted the structured-output tool entirely.\n if (result.contentBlocks?.length)\n messages.push({ role: \"assistant\", content: result.contentBlocks });\n if (result.toolCalls.length) {\n messages.push({\n role: \"user\",\n content: result.toolCalls.map((pending) => ({\n content:\n pending.id === call?.id\n ? failure\n : `Only call the \"${toolName}\" tool with the requested structured result.`,\n tool_use_id: pending.id,\n type: \"tool_result\" as const,\n })),\n });\n } else messages.push({ content: failure, role: \"user\" });\n }\n\n throw new StructuredOutputError(reason, attempts, usage, lastError);\n};\n",
19
- "import { toolOutputText, toolResultBlock } from \"./toolOutput\";\nimport { streamWithAIContext } from \"./contextPolicy\";\nimport type {\n AIImageData,\n AIProviderContentBlock,\n AIResponseMetadata,\n AIProviderMessage,\n AIProviderStreamParams,\n AIProviderToolChoice,\n AIToolMap,\n AIToolOutput,\n AIUsage,\n} from \"../../types/ai\";\nimport {\n mergeUsage,\n toProviderTools,\n type GenerateAIOptions,\n type GenerateAIToolCall,\n} from \"./generateAI\";\n\nimport { AIInputError } from \"./inputCapacity\";\n\nconst DEFAULT_STREAM_TOOL_MAX_TURNS = 8;\n\nexport type StreamAIWithToolsOptions = Omit<\n GenerateAIOptions,\n \"tools\" | \"toolChoice\"\n> & {\n /** Tools the model may call — each with a `handler` the loop runs on its behalf. */\n tools: AIToolMap;\n /** Stop immediately after one of these tools executes successfully; do not generate an extra reply. */\n stopAfterTools?: string[];\n /** @deprecated Capacity validation is automatic. Use contextPolicy; false is the explicit raw opt-out. */\n validateInput?: boolean;\n /** Max model⇄tool round-trips before forcing a final answer. Default 8. */\n maxTurns?: number;\n toolChoice?: AIProviderToolChoice;\n};\n\nexport type StreamAIWithToolsSummary = {\n /** All assistant text across every turn, concatenated in stream order. */\n text: string;\n /** Finished images the model generated across every turn. */\n images: AIImageData[];\n /** Every tool call the model made (executed or not), in order. */\n toolCalls: GenerateAIToolCall[];\n /** Model turns consumed (1 = no tool round-trips). */\n turns: number;\n /** Summed usage across all turns. */\n usage?: AIUsage;\n};\n\nexport type StreamAIWithToolsEvent =\n | { type: \"tool_input_start\"; id: string; name: string }\n | { type: \"thinking\"; content: string }\n | { type: \"text\"; content: string }\n /** A generated image; `isPartial` previews arrive before the finished one. */\n | ({ type: \"image\" } & AIImageData)\n | {\n type: \"audio\";\n data: string;\n format: string;\n transcript?: string;\n audioId?: string;\n }\n /** A model turn finished streaming — carries that turn's own usage, so\n * metering can bill per-turn instead of waiting for the summed total. */\n | { type: \"turn\"; usage?: AIUsage; metadata?: AIResponseMetadata }\n | { type: \"tool_start\"; id: string; name: string; input: unknown }\n | {\n type: \"tool_result\";\n id: string;\n name: string;\n input: unknown;\n ms: number;\n /** False when the handler threw or the tool name was unknown. */\n ok: boolean;\n result: string;\n }\n | ({ type: \"done\" } & StreamAIWithToolsSummary);\n\nconst toolCallKey = (call: GenerateAIToolCall) =>\n `${call.name}:${JSON.stringify(call.input)}`;\n\n// Coalesce contiguous text deltas into one content block (providers stream text\n// as many small chunks; sending each back as its own block bloats the thread).\nconst pushText = (blocks: AIProviderContentBlock[], content: string) => {\n const last = blocks[blocks.length - 1];\n if (last && last.type === \"text\") {\n last.content += content;\n\n return;\n }\n blocks.push({ content, type: \"text\" });\n};\n\ntype ThinkingAccumulator = { signature: string; text: string };\n\nconst flushThinking = (\n blocks: AIProviderContentBlock[],\n thinking: ThinkingAccumulator | null,\n) => {\n if (!thinking) return null;\n blocks.push({\n signature: thinking.signature || undefined,\n thinking: thinking.text,\n type: \"thinking\",\n });\n\n return null;\n};\n\ntype TurnOutcome = {\n metadata?: AIResponseMetadata;\n blocks: AIProviderContentBlock[];\n pending: GenerateAIToolCall[];\n stopReason?: string;\n usage?: AIUsage;\n};\n\nconst executeToolHandler = async (\n tools: AIToolMap,\n call: GenerateAIToolCall,\n) => {\n const definition = tools[call.name];\n if (!definition) {\n return { ok: false, output: `Error: unknown tool \"${call.name}\"` };\n }\n try {\n const output: AIToolOutput = await definition.handler(call.input);\n\n return { ok: true, output };\n } catch (err) {\n return {\n ok: false,\n output: `Error: ${err instanceof Error ? err.message : String(err)}`,\n };\n }\n};\n\n/**\n * Agentic STREAMING generation: text/thinking deltas are yielded live while the\n * model may call the provided handler tools mid-answer — the loop runs them,\n * feeds the results back, and continues streaming until the model finishes (or\n * `maxTurns`). Transport-agnostic (an async generator, unlike the WebSocket\n * `streamAI`), so HTTP/SSE handlers can re-encode events however they like.\n *\n * Event order per turn: thinking/text deltas → turn → tool_start/tool_result\n * pairs → next turn's deltas… → done (with the summed usage + full text).\n */\nexport const streamAIWithTools = async function* (\n options: StreamAIWithToolsOptions,\n): AsyncGenerator<StreamAIWithToolsEvent, StreamAIWithToolsSummary> {\n const {\n maxTurns = DEFAULT_STREAM_TOOL_MAX_TURNS,\n provider,\n stopAfterTools,\n validateInput,\n contextPolicy,\n toolChoice,\n tools,\n ...base\n } = options;\n const providerTools = toProviderTools(tools);\n const allToolCalls: GenerateAIToolCall[] = [];\n const executedKeys = new Set<string>();\n const messages: AIProviderMessage[] = [...options.messages];\n let usage: AIUsage | undefined;\n let fullText = \"\";\n const images: AIImageData[] = [];\n let turn = 0;\n\n const streamOneTurn = async function* (\n selectedToolChoice: AIProviderToolChoice = toolChoice ?? \"auto\",\n ): AsyncGenerator<StreamAIWithToolsEvent, TurnOutcome> {\n const request: AIProviderStreamParams = {\n cacheSystemPrompt: base.cacheSystemPrompt,\n maxTokens: base.maxTokens,\n messages,\n model: base.model,\n promptCaching: base.promptCaching,\n providerOptions: base.providerOptions,\n reasoning: base.reasoning,\n signal: base.signal,\n stopSequences: base.stopSequences,\n systemPrompt: base.systemPrompt,\n temperature: base.temperature,\n toolChoice: selectedToolChoice,\n tools: providerTools,\n topP: base.topP,\n };\n const policy =\n contextPolicy ?? (validateInput === false ? false : undefined);\n const stream = streamWithAIContext(\n provider,\n request,\n policy,\n (prepared) => {\n messages.splice(0, messages.length, ...prepared.messages);\n },\n );\n\n const blocks: AIProviderContentBlock[] = [];\n const pending: GenerateAIToolCall[] = [];\n let thinking: ThinkingAccumulator | null = null;\n let stopReason: string | undefined;\n let turnUsage: AIUsage | undefined;\n let turnMetadata: AIResponseMetadata | undefined;\n let completed = false;\n\n for await (const chunk of stream) {\n if (base.signal?.aborted) break;\n if (chunk.type === \"thinking\") {\n if (chunk.content) yield { content: chunk.content, type: \"thinking\" };\n thinking = thinking ?? { signature: \"\", text: \"\" };\n thinking.text += chunk.content;\n if (chunk.signature) thinking.signature = chunk.signature;\n } else if (chunk.type === \"text\") {\n thinking = flushThinking(blocks, thinking);\n fullText += chunk.content;\n pushText(blocks, chunk.content);\n yield { content: chunk.content, type: \"text\" };\n } else if (chunk.type === \"image\") {\n const { type: _type, ...image } = chunk;\n if (!image.isPartial) images.push(image);\n yield { ...image, type: \"image\" };\n } else if (chunk.type === \"audio\") {\n yield {\n audioId: chunk.audioId,\n data: chunk.data,\n format: chunk.format,\n transcript: chunk.transcript,\n type: \"audio\",\n };\n } else if (chunk.type === \"tool_input_start\") {\n yield chunk;\n } else if (chunk.type === \"tool_use\") {\n thinking = flushThinking(blocks, thinking);\n pending.push({ id: chunk.id, input: chunk.input, name: chunk.name });\n blocks.push({\n id: chunk.id,\n // Providers (Anthropic) require tool_use.input to be an object on the\n // way back; a no-arg tool can parse to null/undefined, so coerce to {}.\n input:\n chunk.input && typeof chunk.input === \"object\" ? chunk.input : {},\n name: chunk.name,\n providerData: chunk.providerData,\n type: \"tool_use\",\n });\n } else if (chunk.type === \"provider_event\") {\n thinking = flushThinking(blocks, thinking);\n blocks.push({\n data: chunk.data,\n provider: chunk.provider,\n type: \"provider_data\",\n });\n } else if (chunk.type === \"done\") {\n thinking = flushThinking(blocks, thinking);\n stopReason = chunk.stopReason;\n turnUsage = chunk.usage;\n turnMetadata = chunk.metadata;\n completed = true;\n }\n }\n thinking = flushThinking(blocks, thinking);\n if (policy !== false && !completed)\n throw new AIInputError(\n \"capacity_unavailable\",\n \"The model response was interrupted before completion. Preserve the original input for retry.\",\n );\n\n return {\n blocks,\n pending,\n stopReason,\n usage: turnUsage,\n metadata: turnMetadata,\n };\n };\n\n while (turn < maxTurns) {\n turn += 1;\n const outcome = yield* streamOneTurn();\n usage = mergeUsage(usage, outcome.usage);\n yield {\n type: \"turn\",\n usage: outcome.usage,\n ...(outcome.metadata ? { metadata: outcome.metadata } : {}),\n };\n\n const { blocks, pending } = outcome;\n allToolCalls.push(...pending);\n\n // Anthropic server tools may pause a long-running turn. Their opaque\n // server_tool_use/result blocks are already preserved as provider_data;\n // replay the assistant message unchanged so the provider can finish.\n if (\n outcome.stopReason === \"pause_turn\" &&\n turn < maxTurns &&\n base.signal?.aborted !== true\n ) {\n messages.push({ content: blocks, role: \"assistant\" });\n continue;\n }\n\n // Stop when the model answered without tools, the caller aborted, or every\n // requested call is an exact repeat of one already executed (a stuck model\n // would otherwise loop forever).\n const allRepeats =\n pending.length > 0 &&\n pending.every((call) => executedKeys.has(toolCallKey(call)));\n const finished =\n pending.length === 0 || allRepeats || base.signal?.aborted === true;\n if (finished) break;\n\n messages.push({ content: blocks, role: \"assistant\" });\n const resultBlocks: AIProviderContentBlock[] = [];\n let terminalToolSucceeded = false;\n for (const call of pending) {\n yield {\n id: call.id,\n input: call.input,\n name: call.name,\n type: \"tool_start\",\n };\n const startedAt = Date.now();\n // Sequential on purpose: tool_start/tool_result events stay ordered for\n // live progress UIs, and a caller-side per-tool timeout bounds the cost.\n // eslint-disable-next-line no-await-in-loop\n const { ok, output } = await executeToolHandler(tools, call);\n const result = toolOutputText(output);\n executedKeys.add(toolCallKey(call));\n yield {\n id: call.id,\n input: call.input,\n ms: Date.now() - startedAt,\n name: call.name,\n ok,\n result,\n type: \"tool_result\",\n };\n resultBlocks.push(toolResultBlock(call.id, output));\n if (ok && stopAfterTools?.includes(call.name)) {\n terminalToolSucceeded = true;\n break;\n }\n }\n if (terminalToolSucceeded) break;\n messages.push({ content: resultBlocks, role: \"user\" });\n\n // maxTurns bounds tool-capable model turns. Execute calls from the final\n // allowed turn, feed their results back, then force one no-tools synthesis\n // turn so completed tool work is never silently discarded.\n if (turn >= Math.max(1, maxTurns)) {\n turn += 1;\n const final = yield* streamOneTurn(\"none\");\n usage = mergeUsage(usage, final.usage);\n yield {\n type: \"turn\",\n usage: final.usage,\n ...(final.metadata ? { metadata: final.metadata } : {}),\n };\n allToolCalls.push(...final.pending);\n break;\n }\n }\n\n const summary: StreamAIWithToolsSummary = {\n images,\n text: fullText,\n toolCalls: allToolCalls,\n turns: turn,\n usage,\n };\n yield { ...summary, type: \"done\" };\n\n return summary;\n};\n",
19
+ "import { toolOutputText, toolResultBlock } from \"./toolOutput\";\nimport { streamWithAIContext } from \"./contextPolicy\";\nimport type {\n AIImageData,\n AIProviderContentBlock,\n AIResponseMetadata,\n AIProviderMessage,\n AIProviderStreamParams,\n AIProviderToolChoice,\n AIToolMap,\n AIToolOutput,\n AIUsage,\n} from \"../../types/ai\";\nimport {\n mergeUsage,\n toProviderTools,\n type GenerateAIOptions,\n type GenerateAIToolCall,\n} from \"./generateAI\";\n\nimport { AIInputError } from \"./inputCapacity\";\n\nconst DEFAULT_STREAM_TOOL_MAX_TURNS = 8;\n\nexport type StreamAIWithToolsOptions = Omit<\n GenerateAIOptions,\n \"tools\" | \"toolChoice\"\n> & {\n /** Tools the model may call — each with a `handler` the loop runs on its behalf. */\n tools: AIToolMap;\n /** Stop immediately after one of these tools executes successfully; do not generate an extra reply. */\n stopAfterTools?: string[];\n /** Finish sibling tools before handing control back. Failed tools retain the repair round-trip. */\n stopAfterToolTurn?: string[];\n /** @deprecated Capacity validation is automatic. Use contextPolicy; false is the explicit raw opt-out. */\n validateInput?: boolean;\n /** Max model⇄tool round-trips before forcing a final answer. Default 8. */\n maxTurns?: number;\n toolChoice?: AIProviderToolChoice;\n};\n\nexport type StreamAIWithToolsSummary = {\n /** All assistant text across every turn, concatenated in stream order. */\n text: string;\n /** Finished images the model generated across every turn. */\n images: AIImageData[];\n /** Every tool call the model made (executed or not), in order. */\n toolCalls: GenerateAIToolCall[];\n /** Model turns consumed (1 = no tool round-trips). */\n turns: number;\n /** Summed usage across all turns. */\n usage?: AIUsage;\n};\n\nexport type StreamAIWithToolsEvent =\n | { type: \"tool_input_start\"; id: string; name: string }\n | { type: \"thinking\"; content: string }\n | { type: \"text\"; content: string }\n /** A generated image; `isPartial` previews arrive before the finished one. */\n | ({ type: \"image\" } & AIImageData)\n | {\n type: \"audio\";\n data: string;\n format: string;\n transcript?: string;\n audioId?: string;\n }\n /** A model turn finished streaming — carries that turn's own usage, so\n * metering can bill per-turn instead of waiting for the summed total. */\n | { type: \"turn\"; usage?: AIUsage; metadata?: AIResponseMetadata }\n | { type: \"tool_start\"; id: string; name: string; input: unknown }\n | {\n type: \"tool_result\";\n id: string;\n name: string;\n input: unknown;\n ms: number;\n /** False when the handler threw or the tool name was unknown. */\n ok: boolean;\n result: string;\n }\n | ({ type: \"done\" } & StreamAIWithToolsSummary);\n\nconst toolCallKey = (call: GenerateAIToolCall) =>\n `${call.name}:${JSON.stringify(call.input)}`;\n\n// Coalesce contiguous text deltas into one content block (providers stream text\n// as many small chunks; sending each back as its own block bloats the thread).\nconst pushText = (blocks: AIProviderContentBlock[], content: string) => {\n const last = blocks[blocks.length - 1];\n if (last && last.type === \"text\") {\n last.content += content;\n\n return;\n }\n blocks.push({ content, type: \"text\" });\n};\n\ntype ThinkingAccumulator = { signature: string; text: string };\n\nconst flushThinking = (\n blocks: AIProviderContentBlock[],\n thinking: ThinkingAccumulator | null,\n) => {\n if (!thinking) return null;\n blocks.push({\n signature: thinking.signature || undefined,\n thinking: thinking.text,\n type: \"thinking\",\n });\n\n return null;\n};\n\ntype TurnOutcome = {\n metadata?: AIResponseMetadata;\n blocks: AIProviderContentBlock[];\n pending: GenerateAIToolCall[];\n stopReason?: string;\n usage?: AIUsage;\n};\n\nconst executeToolHandler = async (\n tools: AIToolMap,\n call: GenerateAIToolCall,\n) => {\n const definition = tools[call.name];\n if (!definition) {\n return { ok: false, output: `Error: unknown tool \"${call.name}\"` };\n }\n try {\n const output: AIToolOutput = await definition.handler(call.input);\n\n return { ok: true, output };\n } catch (err) {\n return {\n ok: false,\n output: `Error: ${err instanceof Error ? err.message : String(err)}`,\n };\n }\n};\n\n/**\n * Agentic STREAMING generation: text/thinking deltas are yielded live while the\n * model may call the provided handler tools mid-answer — the loop runs them,\n * feeds the results back, and continues streaming until the model finishes (or\n * `maxTurns`). Transport-agnostic (an async generator, unlike the WebSocket\n * `streamAI`), so HTTP/SSE handlers can re-encode events however they like.\n *\n * Event order per turn: thinking/text deltas → turn → tool_start/tool_result\n * pairs → next turn's deltas… → done (with the summed usage + full text).\n */\nexport const streamAIWithTools = async function* (\n options: StreamAIWithToolsOptions,\n): AsyncGenerator<StreamAIWithToolsEvent, StreamAIWithToolsSummary> {\n const {\n maxTurns = DEFAULT_STREAM_TOOL_MAX_TURNS,\n provider,\n stopAfterTools,\n stopAfterToolTurn,\n validateInput,\n contextPolicy,\n toolChoice,\n tools,\n ...base\n } = options;\n const providerTools = toProviderTools(tools);\n const allToolCalls: GenerateAIToolCall[] = [];\n const executedKeys = new Set<string>();\n const messages: AIProviderMessage[] = [...options.messages];\n let usage: AIUsage | undefined;\n let fullText = \"\";\n const images: AIImageData[] = [];\n let turn = 0;\n\n const streamOneTurn = async function* (\n selectedToolChoice: AIProviderToolChoice = toolChoice ?? \"auto\",\n ): AsyncGenerator<StreamAIWithToolsEvent, TurnOutcome> {\n const request: AIProviderStreamParams = {\n cacheSystemPrompt: base.cacheSystemPrompt,\n maxTokens: base.maxTokens,\n messages,\n model: base.model,\n promptCaching: base.promptCaching,\n providerOptions: base.providerOptions,\n reasoning: base.reasoning,\n signal: base.signal,\n stopSequences: base.stopSequences,\n systemPrompt: base.systemPrompt,\n temperature: base.temperature,\n toolChoice: selectedToolChoice,\n tools: providerTools,\n topP: base.topP,\n };\n const policy =\n contextPolicy ?? (validateInput === false ? false : undefined);\n const stream = streamWithAIContext(\n provider,\n request,\n policy,\n (prepared) => {\n messages.splice(0, messages.length, ...prepared.messages);\n },\n );\n\n const blocks: AIProviderContentBlock[] = [];\n const pending: GenerateAIToolCall[] = [];\n let thinking: ThinkingAccumulator | null = null;\n let stopReason: string | undefined;\n let turnUsage: AIUsage | undefined;\n let turnMetadata: AIResponseMetadata | undefined;\n let completed = false;\n\n for await (const chunk of stream) {\n if (base.signal?.aborted) break;\n if (chunk.type === \"thinking\") {\n if (chunk.content) yield { content: chunk.content, type: \"thinking\" };\n thinking = thinking ?? { signature: \"\", text: \"\" };\n thinking.text += chunk.content;\n if (chunk.signature) thinking.signature = chunk.signature;\n } else if (chunk.type === \"text\") {\n thinking = flushThinking(blocks, thinking);\n fullText += chunk.content;\n pushText(blocks, chunk.content);\n yield { content: chunk.content, type: \"text\" };\n } else if (chunk.type === \"image\") {\n const { type: _type, ...image } = chunk;\n if (!image.isPartial) images.push(image);\n yield { ...image, type: \"image\" };\n } else if (chunk.type === \"audio\") {\n yield {\n audioId: chunk.audioId,\n data: chunk.data,\n format: chunk.format,\n transcript: chunk.transcript,\n type: \"audio\",\n };\n } else if (chunk.type === \"tool_input_start\") {\n yield chunk;\n } else if (chunk.type === \"tool_use\") {\n thinking = flushThinking(blocks, thinking);\n pending.push({ id: chunk.id, input: chunk.input, name: chunk.name });\n blocks.push({\n id: chunk.id,\n // Providers (Anthropic) require tool_use.input to be an object on the\n // way back; a no-arg tool can parse to null/undefined, so coerce to {}.\n input:\n chunk.input && typeof chunk.input === \"object\" ? chunk.input : {},\n name: chunk.name,\n providerData: chunk.providerData,\n type: \"tool_use\",\n });\n } else if (chunk.type === \"provider_event\") {\n thinking = flushThinking(blocks, thinking);\n blocks.push({\n data: chunk.data,\n provider: chunk.provider,\n type: \"provider_data\",\n });\n } else if (chunk.type === \"done\") {\n thinking = flushThinking(blocks, thinking);\n stopReason = chunk.stopReason;\n turnUsage = chunk.usage;\n turnMetadata = chunk.metadata;\n completed = true;\n }\n }\n thinking = flushThinking(blocks, thinking);\n if (policy !== false && !completed)\n throw new AIInputError(\n \"capacity_unavailable\",\n \"The model response was interrupted before completion. Preserve the original input for retry.\",\n );\n\n return {\n blocks,\n pending,\n stopReason,\n usage: turnUsage,\n metadata: turnMetadata,\n };\n };\n\n while (turn < maxTurns) {\n turn += 1;\n const outcome = yield* streamOneTurn();\n usage = mergeUsage(usage, outcome.usage);\n yield {\n type: \"turn\",\n usage: outcome.usage,\n ...(outcome.metadata ? { metadata: outcome.metadata } : {}),\n };\n\n const { blocks, pending } = outcome;\n allToolCalls.push(...pending);\n\n // Anthropic server tools may pause a long-running turn. Their opaque\n // server_tool_use/result blocks are already preserved as provider_data;\n // replay the assistant message unchanged so the provider can finish.\n if (\n outcome.stopReason === \"pause_turn\" &&\n turn < maxTurns &&\n base.signal?.aborted !== true\n ) {\n messages.push({ content: blocks, role: \"assistant\" });\n continue;\n }\n\n // Stop when the model answered without tools, the caller aborted, or every\n // requested call is an exact repeat of one already executed (a stuck model\n // would otherwise loop forever).\n const allRepeats =\n pending.length > 0 &&\n pending.every((call) => executedKeys.has(toolCallKey(call)));\n const finished =\n pending.length === 0 || allRepeats || base.signal?.aborted === true;\n if (finished) break;\n\n messages.push({ content: blocks, role: \"assistant\" });\n const resultBlocks: AIProviderContentBlock[] = [];\n let terminalToolSucceeded = false;\n let toolFailed = false;\n let handoffToolSucceeded = false;\n for (const call of pending) {\n yield {\n id: call.id,\n input: call.input,\n name: call.name,\n type: \"tool_start\",\n };\n const startedAt = Date.now();\n // Sequential on purpose: tool_start/tool_result events stay ordered for\n // live progress UIs, and a caller-side per-tool timeout bounds the cost.\n // eslint-disable-next-line no-await-in-loop\n const { ok, output } = await executeToolHandler(tools, call);\n toolFailed ||= !ok;\n const result = toolOutputText(output);\n executedKeys.add(toolCallKey(call));\n yield {\n id: call.id,\n input: call.input,\n ms: Date.now() - startedAt,\n name: call.name,\n ok,\n result,\n type: \"tool_result\",\n };\n resultBlocks.push(toolResultBlock(call.id, output));\n if (ok && stopAfterTools?.includes(call.name)) {\n terminalToolSucceeded = true;\n break;\n }\n if (ok && stopAfterToolTurn?.includes(call.name))\n handoffToolSucceeded = true;\n }\n if (terminalToolSucceeded || (handoffToolSucceeded && !toolFailed)) break;\n messages.push({ content: resultBlocks, role: \"user\" });\n\n // maxTurns bounds tool-capable model turns. Execute calls from the final\n // allowed turn, feed their results back, then force one no-tools synthesis\n // turn so completed tool work is never silently discarded.\n if (turn >= Math.max(1, maxTurns)) {\n turn += 1;\n const final = yield* streamOneTurn(\"none\");\n usage = mergeUsage(usage, final.usage);\n yield {\n type: \"turn\",\n usage: final.usage,\n ...(final.metadata ? { metadata: final.metadata } : {}),\n };\n allToolCalls.push(...final.pending);\n break;\n }\n }\n\n const summary: StreamAIWithToolsSummary = {\n images,\n text: fullText,\n toolCalls: allToolCalls,\n turns: turn,\n usage,\n };\n yield { ...summary, type: \"done\" };\n\n return summary;\n};\n",
20
20
  "// Structured provider error. Replaces the previous `throw new Error(\"Anthropic\n// API error 529: ...\")` strings so consumers can classify outages\n// programmatically (retryable? which provider? what status?) instead of parsing\n// message text. Surfaced both by the retry/circuit-breaker layer and to end\n// callers via `instanceof ProviderError`.\n\n// Public status pages (also serve the Atlassian Statuspage JSON API at\n// /api/v2/*), keyed by the provider name passed to the factories. Anthropic\n// moved theirs to status.claude.com — status.anthropic.com only HTTP-redirects,\n// which breaks JSON polling, so we point at the canonical host.\nexport const PROVIDER_STATUS_PAGES: Record<string, string> = {\n anthropic: \"https://status.claude.com\",\n gemini: \"https://status.cloud.google.com\",\n google: \"https://status.cloud.google.com\",\n openai: \"https://status.openai.com\",\n openrouter: \"https://status.openrouter.ai\",\n};\n\n// HTTP statuses that mean \"the provider is unavailable / overloaded / rate\n// limited\", i.e. retrying later may succeed — NOT a malformed request. 529 is\n// Anthropic's \"overloaded\". 4xx auth/validation (400/401/403/404/422) are\n// deliberately excluded: those are the caller's fault and never self-heal.\nconst RETRYABLE_STATUSES = new Set([\n 408, 409, 425, 429, 500, 502, 503, 504, 529,\n]);\n\n// Connection-level failure fingerprints (fetch rejects before any HTTP status).\nconst CONNECTION_ERROR_PATTERNS = [\n \"econnreset\",\n \"econnrefused\",\n \"etimedout\",\n \"enotfound\",\n \"eai_again\",\n \"socket hang up\",\n \"fetch failed\",\n \"network\",\n \"terminated\",\n \"timed out\",\n \"timeout\",\n \"and not retryable\",\n \"no response body\",\n];\n\nconst isAbortError = (err: unknown): boolean =>\n err instanceof Error &&\n (err.name === \"AbortError\" || /\\babort(ed)?\\b/i.test(err.message));\n\n/** Public status page for a provider, or null when we don't track one. */\nexport const providerStatusPage = (provider: string): string | null =>\n PROVIDER_STATUS_PAGES[provider] ?? null;\n\nexport type ProviderErrorInit = {\n provider: string;\n message: string;\n status?: number | null;\n /** Provider-specific error type, e.g. Anthropic's \"overloaded_error\". */\n type?: string | null;\n retryable: boolean;\n cause?: unknown;\n /** Provider-native structured details, when the response exposes them. */\n metadata?: Record<string, unknown>;\n};\n\nexport class ProviderError extends Error {\n readonly provider: string;\n /** HTTP status when the failure carried one; null for connection errors. */\n readonly status: number | null;\n readonly type: string | null;\n /** Whether retrying the same request later could plausibly succeed. */\n readonly retryable: boolean;\n readonly metadata: Record<string, unknown> | undefined;\n /** Provider status page, when known — for surfacing \"is it them?\" to users. */\n readonly statusPageUrl: string | null;\n\n constructor(init: ProviderErrorInit) {\n super(\n init.message,\n init.cause === undefined ? undefined : { cause: init.cause },\n );\n this.name = \"ProviderError\";\n this.provider = init.provider;\n this.status = init.status ?? null;\n this.type = init.type ?? null;\n this.retryable = init.retryable;\n this.metadata = init.metadata;\n this.statusPageUrl = providerStatusPage(init.provider);\n }\n\n /** Build from a non-2xx HTTP response (status + body text are known). */\n static fromResponse(\n provider: string,\n status: number,\n body: string,\n type?: string | null,\n ): ProviderError {\n let metadata: Record<string, unknown> | undefined;\n try {\n const parsed = JSON.parse(body);\n const details = parsed?.error ?? parsed;\n if (details && typeof details === \"object\" && !Array.isArray(details))\n metadata = details;\n } catch {\n /* Non-JSON error bodies retain their original message. */\n }\n return new ProviderError({\n metadata,\n message: `${capitalize(provider)} API error ${status}: ${body}`,\n provider,\n retryable: RETRYABLE_STATUSES.has(status),\n status,\n type: type ?? null,\n });\n }\n\n /**\n * Normalize any thrown value into a ProviderError. Passes existing\n * ProviderErrors through unchanged; classifies connection errors and\n * status-bearing message strings; rethrows aborts to the caller (an aborted\n * request is the caller's intent, never a provider outage).\n */\n static from(err: unknown, provider: string): ProviderError {\n if (err instanceof ProviderError) return err;\n if (isAbortError(err)) throw err;\n\n const rawMessage = err instanceof Error ? err.message : String(err ?? \"\");\n const lower = rawMessage.toLowerCase();\n\n const statusMatch = lower.match(/api error\\s+(\\d{3})/);\n const status = statusMatch ? Number(statusMatch[1]) : null;\n\n const retryable =\n (status !== null && RETRYABLE_STATUSES.has(status)) ||\n (status === null &&\n CONNECTION_ERROR_PATTERNS.some((pattern) => lower.includes(pattern)));\n\n return new ProviderError({\n cause: err,\n message: rawMessage || `${capitalize(provider)} request failed`,\n provider,\n retryable,\n status,\n });\n }\n}\n\nconst capitalize = (value: string): string =>\n value.charAt(0).toUpperCase() + value.slice(1);\n",
21
21
  "import type {\n AIChunk,\n AIProviderConfig,\n AIProviderStreamParams,\n} from \"../../types/ai\";\nimport { ProviderError } from \"./errors/providerError\";\n\nexport type ProviderProxyStreamParams = Omit<\n AIProviderStreamParams,\n \"onSpan\" | \"onUsage\" | \"signal\"\n>;\n\nexport type RemoteProviderConfig = {\n fetch?: typeof fetch;\n headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);\n url: string;\n};\n\nexport type ProviderProxyResponseOptions = {\n headers?: HeadersInit;\n heartbeatMs?: number;\n onError?: (error: unknown) => void | Promise<void>;\n signal?: AbortSignal;\n};\n\nconst DEFAULT_HEARTBEAT_MS = 5_000;\nconst encoder = new TextEncoder();\n\nconst wireParams = (\n params: AIProviderStreamParams,\n): ProviderProxyStreamParams => ({\n ...(params.cacheSystemPrompt === undefined\n ? {}\n : { cacheSystemPrompt: params.cacheSystemPrompt }),\n ...(params.frequencyPenalty === undefined\n ? {}\n : { frequencyPenalty: params.frequencyPenalty }),\n ...(params.maxTokens === undefined ? {} : { maxTokens: params.maxTokens }),\n messages: params.messages,\n model: params.model,\n ...(params.parallelToolCalls === undefined\n ? {}\n : { parallelToolCalls: params.parallelToolCalls }),\n ...(params.presencePenalty === undefined\n ? {}\n : { presencePenalty: params.presencePenalty }),\n ...(params.promptCaching === undefined\n ? {}\n : { promptCaching: params.promptCaching }),\n ...(params.reasoning === undefined ? {} : { reasoning: params.reasoning }),\n ...(params.responseFormat === undefined\n ? {}\n : { responseFormat: params.responseFormat }),\n ...(params.seed === undefined ? {} : { seed: params.seed }),\n ...(params.stopSequences === undefined\n ? {}\n : { stopSequences: params.stopSequences }),\n ...(params.systemPrompt === undefined\n ? {}\n : { systemPrompt: params.systemPrompt }),\n ...(params.temperature === undefined\n ? {}\n : { temperature: params.temperature }),\n ...(params.toolChoice === undefined ? {} : { toolChoice: params.toolChoice }),\n ...(params.toolResultClearing === undefined\n ? {}\n : { toolResultClearing: params.toolResultClearing }),\n ...(params.tools === undefined ? {} : { tools: params.tools }),\n ...(params.topP === undefined ? {} : { topP: params.topP }),\n});\n\nexport const parseProviderProxyParams = (\n value: unknown,\n): ProviderProxyStreamParams | null => {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const input = value as Record<string, unknown>;\n if (typeof input.model !== \"string\" || input.model.trim() === \"\") return null;\n if (!Array.isArray(input.messages)) return null;\n // Copy only transport-safe provider fields. Function-valued callbacks and\n // AbortSignal objects can never cross this boundary.\n return wireParams(input as AIProviderStreamParams);\n};\n\nconst encodeEvent = (event: string, data: unknown) =>\n encoder.encode(`event: ${event}\\ndata: ${JSON.stringify(data)}\\n\\n`);\n\nconst errorPayload = (error: unknown) => {\n const providerError =\n error instanceof ProviderError\n ? error\n : ProviderError.from(error, \"remote\");\n return {\n message: providerError.message,\n provider: providerError.provider,\n retryable: providerError.retryable,\n status: providerError.status,\n type: providerError.type,\n };\n};\n\nconst streamResponseBody = (\n iterator: AsyncIterator<AIChunk>,\n heartbeatMs: number,\n onError?: (error: unknown) => void | Promise<void>,\n onCancel?: (reason: unknown) => void,\n): ReadableStream<Uint8Array> => {\n let closed = false;\n\n const send = (\n controller: ReadableStreamDefaultController<Uint8Array>,\n value: Uint8Array,\n ) => {\n if (closed) return false;\n try {\n controller.enqueue(value);\n return true;\n } catch {\n closed = true;\n return false;\n }\n };\n\n return new ReadableStream<Uint8Array>({\n cancel(reason) {\n closed = true;\n onCancel?.(reason);\n },\n async start(controller) {\n try {\n for (;;) {\n const pending = iterator.next();\n let next: IteratorResult<AIChunk>;\n for (;;) {\n let timer: ReturnType<typeof setTimeout> | undefined;\n const heartbeat = new Promise<\"heartbeat\">((resolve) => {\n timer = setTimeout(() => resolve(\"heartbeat\"), heartbeatMs);\n });\n const winner =\n heartbeatMs > 0\n ? await Promise.race([pending, heartbeat])\n : await pending;\n if (timer) clearTimeout(timer);\n if (winner === \"heartbeat\") {\n if (!send(controller, encoder.encode(\": ping\\n\\n\"))) return;\n continue;\n }\n next = winner;\n break;\n }\n if (closed || next.done) break;\n if (!send(controller, encodeEvent(\"chunk\", next.value))) break;\n }\n } catch (error) {\n if (closed) return;\n await onError?.(error);\n send(controller, encodeEvent(\"error\", errorPayload(error)));\n } finally {\n await iterator.return?.();\n if (!closed) {\n closed = true;\n try {\n controller.close();\n } catch {\n // The consumer can cancel between the closed check and close().\n }\n }\n }\n },\n });\n};\n\nexport const createProviderProxyResponse = async (\n provider: AIProviderConfig,\n value: unknown,\n options: ProviderProxyResponseOptions = {},\n): Promise<Response> => {\n const params = parseProviderProxyParams(value);\n if (!params) {\n return Response.json(\n { error: \"invalid provider stream request\" },\n { status: 400 },\n );\n }\n const disconnectController = new AbortController();\n const signal = options.signal\n ? AbortSignal.any([options.signal, disconnectController.signal])\n : disconnectController.signal;\n const iterator = provider\n .stream({ ...params, signal })\n [Symbol.asyncIterator]();\n return new Response(\n streamResponseBody(\n iterator,\n options.heartbeatMs ?? DEFAULT_HEARTBEAT_MS,\n options.onError,\n (reason) => disconnectController.abort(reason),\n ),\n {\n headers: {\n \"cache-control\": \"no-cache\",\n \"content-type\": \"text/event-stream; charset=utf-8\",\n \"x-accel-buffering\": \"no\",\n ...Object.fromEntries(new Headers(options.headers)),\n },\n },\n );\n};\n\nconst parseRemoteStream = async function* (\n response: Response,\n): AsyncGenerator<AIChunk> {\n if (!response.ok) {\n throw ProviderError.fromResponse(\n \"remote\",\n response.status,\n await response.text(),\n );\n }\n if (!response.body)\n throw new ProviderError({\n message: \"Remote provider returned no response body\",\n provider: \"remote\",\n retryable: true,\n });\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n try {\n for (;;) {\n const { done, value } = await reader.read();\n buffer += decoder.decode(value, { stream: !done });\n const frames = buffer.split(/\\r?\\n\\r?\\n/);\n buffer = frames.pop() ?? \"\";\n for (const frame of frames) {\n if (frame.startsWith(\":\")) continue;\n const event = /^event:\\s*(.+)$/m.exec(frame)?.[1];\n const data = frame\n .split(/\\r?\\n/)\n .filter((line) => line.startsWith(\"data:\"))\n .map((line) => line.slice(5).trimStart())\n .join(\"\\n\");\n if (!data) continue;\n const parsed = JSON.parse(data) as\n | AIChunk\n | {\n message?: string;\n provider?: string;\n retryable?: boolean;\n status?: number | null;\n type?: string | null;\n };\n if (event === \"error\") {\n throw new ProviderError({\n message:\n \"message\" in parsed && typeof parsed.message === \"string\"\n ? parsed.message\n : \"Remote provider stream failed\",\n provider:\n \"provider\" in parsed && typeof parsed.provider === \"string\"\n ? parsed.provider\n : \"remote\",\n retryable:\n \"retryable\" in parsed && typeof parsed.retryable === \"boolean\"\n ? parsed.retryable\n : true,\n status:\n \"status\" in parsed &&\n (typeof parsed.status === \"number\" || parsed.status === null)\n ? parsed.status\n : null,\n type:\n \"type\" in parsed &&\n (typeof parsed.type === \"string\" || parsed.type === null)\n ? parsed.type\n : null,\n });\n }\n if (event === \"chunk\") yield parsed as AIChunk;\n }\n if (done) break;\n }\n } finally {\n reader.releaseLock();\n }\n};\n\nexport const remoteProvider = (\n config: RemoteProviderConfig,\n): AIProviderConfig => ({\n stream: async function* (params) {\n const headers =\n typeof config.headers === \"function\"\n ? await config.headers()\n : config.headers;\n const response = await (config.fetch ?? fetch)(config.url, {\n body: JSON.stringify(wireParams(params)),\n headers: {\n \"content-type\": \"application/json\",\n ...Object.fromEntries(new Headers(headers)),\n },\n method: \"POST\",\n signal: params.signal,\n });\n yield* parseRemoteStream(response);\n },\n});\n",
22
22
  "import type { AIToolMap } from \"../../../types/ai\";\n\n/**\n * UI cards — the generative-UI primitive extracted from onSpark's chat.\n *\n * A \"card\" is a schema-only tool: the model calls it with a structured payload,\n * the handler validates before ACKNOWLEDGING (steering the model's continuation), and the\n * host watches the executed tool calls to render the payload as a real,\n * host-styled component (a chart, a table, an approval card, a deep link…).\n * No model-written code ever executes: the payload is validated by the card's\n * `parse` before success is reported. Invalid calls return a tool error so the\n * model can repair them; the collector also excludes invalid payloads.\n */\nexport class UiCardValidationError extends Error {\n readonly card: string;\n\n constructor(card: string) {\n super(\n `UI card \"${card}\" was not rendered: input failed validation. Correct the input to match the tool schema and retry.`,\n );\n this.name = \"UiCardValidationError\";\n this.card = card;\n }\n}\n\nexport type UiCardDefinition<T = unknown> = {\n /** Tool name the model calls, e.g. \"render_chart\". */\n name: string;\n /** Tool description — steer WHEN the model should render this card. */\n description: string;\n /** JSON schema for the tool input. */\n inputSchema: Record<string, unknown>;\n /** Tool-result text fed back to the model (e.g. \"(chart rendered — don't\n * repeat its numbers in text)\"). */\n ack: string;\n /** Validate + narrow the raw model input to the card payload. Return null\n * to reject the call with a tool error. Keep this pure: it runs during\n * tool execution and again when collecting cards for rendering. */\n parse: (input: unknown) => T | null;\n};\n\nexport type UiCardEvent = {\n /** The card's tool name. */\n card: string;\n /** The parsed, validated payload. */\n data: unknown;\n};\n\nexport type UiCards = {\n /** AIToolMap entries (ack handlers) — spread into the tools you hand to\n * streamAIWithTools / generateAIWithTools. */\n tools: AIToolMap;\n /** Pull validated card events out of a turn's tool calls, in call order.\n * Invalid payloads and non-card tools are skipped. */\n collect: (\n calls: readonly { name: string; input: unknown }[],\n ) => UiCardEvent[];\n /** Is this tool name one of the registered cards? */\n has: (name: string) => boolean;\n};\n\n/** Build the tool map + collector for a set of UI cards. */\nexport const createUiCards = (\n definitions: readonly UiCardDefinition[],\n): UiCards => {\n const byName = new Map(\n definitions.map((definition) => [definition.name, definition]),\n );\n\n const tools: AIToolMap = Object.fromEntries(\n definitions.map((definition) => [\n definition.name,\n {\n description: definition.description,\n handler: async (input) => {\n if (definition.parse(input) === null) {\n throw new UiCardValidationError(definition.name);\n }\n\n return definition.ack;\n },\n input: definition.inputSchema,\n },\n ]),\n );\n\n const collect = (calls: readonly { name: string; input: unknown }[]) => {\n const events: UiCardEvent[] = [];\n for (const call of calls) {\n const definition = byName.get(call.name);\n if (!definition) continue;\n const data = definition.parse(call.input);\n if (data !== null) events.push({ card: definition.name, data });\n }\n\n return events;\n };\n\n return { collect, has: (name: string) => byName.has(name), tools };\n};\n",
23
- "import type { UiCardDefinition } from \"./uiCards\";\n\n/**\n * Built-in UI card catalog: chart, table, stat tiles, form, choice, confirm,\n * diff, plan, and credential-request cards. Declarative specs the model\n * authors and the host renders — see svg.ts for the dependency-free default\n * chart renderer. Caps are hard product guards (a model can't render a\n * 400-row table into a chat bubble).\n *\n * Card identity: every spec carries an optional `cardId`. When a host\n * receives a card whose cardId it has already rendered in the conversation,\n * it MUST replace that earlier render in place instead of appending a new\n * card. This is a pure host rendering contract — no loop-side state — and it\n * is how planCard progresses: the model re-emits the same cardId with\n * updated step statuses. The field lives here, in the shared spec layer, so\n * every host implements the same semantics.\n */\n\nexport const CHART_TYPES = [\"bar\", \"line\", \"donut\"] as const;\nexport type ChartType = (typeof CHART_TYPES)[number];\n\nexport type ChartSeries = { name: string; values: number[] };\n\nexport type ChartSpec = {\n type: ChartType;\n title: string;\n /** Category labels: x-axis (bar/line) or slice names (donut). */\n labels: string[];\n /** ≤ 8 series (fixed hue order). Donut charts use exactly one series. */\n series: ChartSeries[];\n /** Value formatting, e.g. \"$\" / \"%\". */\n unitPrefix?: string;\n unitSuffix?: string;\n /** Optional action buttons rendered under the card (≤ 3). */\n actions?: UiAction[];\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type TableSpec = {\n title?: string;\n columns: string[];\n rows: string[][];\n /** Optional action buttons rendered under the card (≤ 3). */\n actions?: UiAction[];\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type StatTile = {\n label: string;\n value: string;\n /** Optional change annotation, e.g. \"+12% vs last month\". */\n delta?: string;\n deltaDirection?: \"up\" | \"down\" | \"flat\";\n};\n\nexport type StatTilesSpec = {\n tiles: StatTile[];\n actions?: UiAction[];\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\n/**\n * An action binding on a UI card: a button the host renders under the card\n * that, on click, invokes one of the HOST'S OWN tools with a model-authored\n * input. The host decides which tools are click-invokable (approval-gated\n * tools should queue their normal approval flow, and anything like \"approve a\n * pending action\" should be refused outright) and validates the input against\n * the tool exactly as if the model had called it.\n */\nexport type UiAction = {\n /** Button label, e.g. \"Create follow-up task\". */\n label: string;\n /** The host tool to invoke, e.g. \"create_task\". */\n tool: string;\n /** The tool input, fully resolved by the model (real ids, not placeholders). */\n input: Record<string, unknown>;\n};\n\nexport const FORM_FIELD_TYPES = [\n \"text\",\n \"textarea\",\n \"number\",\n \"select\",\n \"date\",\n \"checkbox\",\n \"password\",\n] as const;\nexport type FormFieldType = (typeof FORM_FIELD_TYPES)[number];\n\nexport type FormField = {\n /** Key the value is submitted under — a valid tool-input property name. */\n name: string;\n label: string;\n /**\n * \"password\" marks a sensitive field: hosts MUST render it masked (an\n * `<input type=\"password\">`-equivalent) and SHOULD route the submitted\n * value outside the model loop entirely (e.g. straight to the host's own\n * secret store) so it never enters the transcript. Password fields never\n * carry a prefill `value` — parseFormSpec drops it.\n */\n type: FormFieldType;\n placeholder?: string;\n required?: boolean;\n /** Choices — select fields only. */\n options?: string[];\n /** Prefill (checkbox: \"true\"/\"false\"; never present on password fields). */\n value?: string;\n};\n\n/**\n * An inline form the model renders when it needs several structured inputs\n * from the member before running a tool. On submit the host merges the field\n * values into `submit.input` under their field names and invokes `submit.tool`\n * exactly like a clicked UiAction.\n */\nexport type FormSpec = {\n title: string;\n description?: string;\n fields: FormField[];\n submit: UiAction;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type ChoiceOption = {\n /** Stable option id — merged into submit.input on selection. */\n id: string;\n label: string;\n description?: string;\n /** Tiny annotation rendered beside the label, e.g. \"recommended\". */\n badge?: string;\n};\n\n/**\n * A structured decision card: the member picks one option (or several when\n * `multi`) and the host merges `{ choice: id }` — or `{ choices: id[] }` —\n * into `submit.input`, then invokes `submit.tool` exactly like a clicked\n * UiAction. Same through-loop flow as FormSpec: a choice between\n * model-authored options is non-secret by definition, so loop-visible\n * submission is correct here.\n */\nexport type ChoiceSpec = {\n title: string;\n description?: string;\n /** ≤ 8 options. */\n options: ChoiceOption[];\n /** Allow selecting several options (`{ choices: id[] }` on submit). */\n multi?: boolean;\n submit: UiAction;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\n/**\n * An explicit-consent card for destructive or irreversible actions.\n *\n * TRUST CONTRACT: the host must invoke `confirm` ONLY on a real user click\n * of the confirm button — never programmatically, and never because the\n * model claims consent was given. Hosts SHOULD mint an unforgeable\n * server-side confirmation token at click time and require it on the\n * downstream action, so a model can never fabricate a confirmation: the\n * token exists only if the click happened.\n */\nexport type ConfirmSpec = {\n title: string;\n /** What will happen, in plain language (≤ 500 chars). */\n consequence: string;\n confirmLabel: string;\n cancelLabel?: string;\n confirm: UiAction;\n /** Render destructive styling (e.g. a red confirm button). */\n danger?: boolean;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type DiffFile = {\n path: string;\n /** Unified diff text — DISPLAY data only (the host renders the +/-\n * coloring); nothing is ever executed or applied from the text itself. */\n diff: string;\n /** The shown diff was cut to fit the display caps. */\n truncated?: boolean;\n};\n\n/**\n * Proposed file changes for review. Diffs are display data; the actual\n * change happens through `apply` — a normal UiAction against a host tool\n * with fully-resolved input. Applying files is destructive, so hosts SHOULD\n * route `apply` through a click-minted server-side token exactly like\n * ConfirmSpec. Oversized diffs are truncated by the parser, never rejected:\n * files beyond 6 drop, and diff bodies are cut to a 400-line total budget\n * with `truncated: true` set on every file that was cut.\n */\nexport type DiffSpec = {\n title: string;\n /** ≤ 6 files, ≤ 400 diff lines total across them. */\n files: DiffFile[];\n apply: UiAction;\n reject?: UiAction;\n note?: string;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport const PLAN_STEP_STATUSES = [\n \"pending\",\n \"active\",\n \"done\",\n \"error\",\n] as const;\nexport type PlanStepStatus = (typeof PLAN_STEP_STATUSES)[number];\n\nexport type PlanStep = {\n /** Stable step id — keep it identical across re-emits of the same plan. */\n id: string;\n label: string;\n status: PlanStepStatus;\n /** One-line progress or error note under the label. */\n detail?: string;\n};\n\n/**\n * A live multi-step plan. Display-only — no submit action. Progress works\n * through the card-identity contract: the model re-emits the SAME cardId\n * with updated step statuses and the host replaces the earlier render in\n * place, so the member sees one live plan instead of a stack of copies.\n */\nexport type PlanSpec = {\n title: string;\n /** ≤ 12 steps. */\n steps: PlanStep[];\n note?: string;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type CredentialKey = {\n /** Environment variable name, e.g. \"STRIPE_SECRET_KEY\". */\n key: string;\n /** Human label, e.g. \"Stripe secret key\". */\n label?: string;\n /** Where to obtain the credential (provider dashboard URL). */\n docsUrl?: string;\n /** Mask and never echo. Defaults to TRUE — parseCredentialSpec normalizes\n * it to an explicit boolean so hosts never have to guess. */\n secret?: boolean;\n /** Already configured on the host — render as set, offer replace. */\n isSet?: boolean;\n};\n\n/**\n * A credential-request card. Deliberately has NO submit UiAction — the type\n * makes through-loop submission impossible. The host UI collects the values\n * and stores them OUTSIDE the model loop (its own .env or secret store),\n * then sends a names-only continuation message (\"STRIPE_SECRET_KEY was\n * set\") so the model can proceed. Values never enter the transcript in\n * either direction: parseCredentialSpec drops any value-like field a model\n * attaches (the password-prefill-drop precedent), and hosts never echo\n * stored values back.\n */\nexport type CredentialSpec = {\n title: string;\n /** ≤ 8 keys. */\n keys: CredentialKey[];\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\n// Hard caps — chat-bubble scale, and the fixed 8-slot categorical order.\nexport const CHART_MAX_SERIES = 8;\nexport const CHART_MAX_POINTS = 24;\nexport const TABLE_MAX_COLUMNS = 8;\nexport const TABLE_MAX_ROWS = 30;\nexport const STAT_TILES_MAX = 6;\nexport const UI_ACTIONS_MAX = 3;\nexport const FORM_MAX_FIELDS = 8;\nexport const FORM_SELECT_MAX_OPTIONS = 12;\nexport const CHOICE_MAX_OPTIONS = 8;\nexport const CHOICE_TITLE_MAX_CHARS = 600;\nexport const CHOICE_LABEL_MAX_CHARS = 600;\nexport const CHOICE_DESCRIPTION_MAX_CHARS = 2000;\nexport const CONFIRM_CONSEQUENCE_MAX_CHARS = 500;\nexport const DIFF_MAX_FILES = 6;\nexport const DIFF_MAX_LINES = 400;\nexport const PLAN_MAX_STEPS = 12;\nexport const CREDENTIAL_MAX_KEYS = 8;\nexport const CARD_ID_MAX_CHARS = 64;\nconst LABEL_MAX_CHARS = 80;\nconst TITLE_MAX_CHARS = 120;\nconst CELL_MAX_CHARS = 160;\nconst UNIT_MAX_CHARS = 8;\nconst ACTION_LABEL_MAX_CHARS = 40;\nconst DESCRIPTION_MAX_CHARS = 280;\nconst BADGE_MAX_CHARS = 24;\nconst DIFF_PATH_MAX_CHARS = 260;\nconst DIFF_LINE_MAX_CHARS = 300;\nconst DOCS_URL_MAX_CHARS = 300;\n// Tool names are host identifiers, not prose.\nconst ACTION_TOOL_PATTERN = /^[a-z][a-z0-9_]{1,63}$/;\n// Field names become tool-input property keys.\nconst FIELD_NAME_PATTERN = /^[a-z][a-zA-Z0-9_]{0,63}$/;\n// Card / option / step ids: opaque identity tokens, not prose.\nconst CARD_ID_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;\n// Credential keys are environment variable names.\nconst ENV_KEY_PATTERN = /^[A-Z][A-Z0-9_]{0,63}$/;\nconst DOCS_URL_PATTERN = /^https?:\\/\\//;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst cleanString = (value: unknown, maxChars: number) =>\n typeof value === \"string\" && value.trim().length > 0\n ? value.trim().slice(0, maxChars)\n : null;\n\nconst cleanStringArray = (\n value: unknown,\n maxItems: number,\n maxChars: number,\n) => {\n if (!Array.isArray(value) || value.length === 0) return null;\n const cleaned: string[] = [];\n for (const entry of value.slice(0, maxItems)) {\n const text = cleanString(entry, maxChars);\n cleaned.push(text ?? \"\");\n }\n\n return cleaned;\n};\n\nconst cleanNumberArray = (value: unknown, maxItems: number) => {\n if (!Array.isArray(value) || value.length === 0) return null;\n const cleaned: number[] = [];\n for (const entry of value.slice(0, maxItems)) {\n if (typeof entry !== \"number\" || !Number.isFinite(entry)) return null;\n cleaned.push(entry);\n }\n\n return cleaned;\n};\n\n/** Trim, cap at 64 chars, then require the id charset; null when invalid. */\nconst cleanId = (value: unknown) => {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim().slice(0, CARD_ID_MAX_CHARS);\n\n return CARD_ID_PATTERN.test(trimmed) ? trimmed : null;\n};\n\n/** Attach a validated cardId to a spec; invalid ids drop silently — identity\n * is an enhancement, never a reason to sink a card. */\nconst applyCardId = (spec: { cardId?: string }, raw: unknown) => {\n const cardId = cleanId(raw);\n if (cardId) spec.cardId = cardId;\n};\n\n/** Validate a spec's optional action bindings; undefined when none/invalid.\n * Malformed entries drop individually — a bad button never sinks the card. */\nexport const parseUiActions = (value: unknown): UiAction[] | undefined => {\n if (!Array.isArray(value) || value.length === 0) return undefined;\n const actions: UiAction[] = [];\n for (const raw of value.slice(0, UI_ACTIONS_MAX)) {\n if (!isRecord(raw)) continue;\n const label = cleanString(raw.label, ACTION_LABEL_MAX_CHARS);\n const tool =\n typeof raw.tool === \"string\" && ACTION_TOOL_PATTERN.test(raw.tool)\n ? raw.tool\n : null;\n if (!label || !tool || !isRecord(raw.input)) continue;\n actions.push({ input: raw.input, label, tool });\n }\n\n return actions.length > 0 ? actions : undefined;\n};\n\nconst ACTIONS_SCHEMA = {\n description:\n \"Optional action buttons under the card (max 3): each invokes one of YOUR tools with a fully-resolved input when the member clicks it. Use real ids you looked up — never placeholders. Approval-gated tools queue their normal approval card.\",\n items: {\n properties: {\n input: {\n description: \"The exact tool input to send on click\",\n type: \"object\",\n },\n label: {\n description: 'Short button label, e.g. \"Create follow-up task\"',\n type: \"string\",\n },\n tool: { description: \"The tool name to invoke\", type: \"string\" },\n },\n required: [\"label\", \"tool\", \"input\"],\n type: \"object\",\n },\n type: \"array\",\n};\n\nconst CARD_ID_SCHEMA = {\n description:\n \"Optional stable card identity (letters/digits/_/-, max 64 chars). Re-emit a card with the SAME cardId to update the earlier render in place instead of adding a new card.\",\n type: \"string\",\n};\n\n// Reusable single-action binding schema (choice submit, confirm, diff apply).\nconst ACTION_BINDING_SCHEMA = {\n properties: {\n input: {\n description:\n \"The exact tool input to send (real ids you looked up, never placeholders)\",\n type: \"object\",\n },\n label: { description: \"Button label\", type: \"string\" },\n tool: { description: \"The tool name to invoke\", type: \"string\" },\n },\n required: [\"label\", \"tool\", \"input\"],\n type: \"object\",\n};\n\nexport const parseChartSpec = (input: unknown): ChartSpec | null => {\n if (!isRecord(input)) return null;\n const type = CHART_TYPES.find((entry) => entry === input.type);\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n const labels = cleanStringArray(\n input.labels,\n CHART_MAX_POINTS,\n LABEL_MAX_CHARS,\n );\n if (!type || !title || !labels) return null;\n\n if (!Array.isArray(input.series) || input.series.length === 0) return null;\n const series: ChartSeries[] = [];\n for (const raw of input.series.slice(0, CHART_MAX_SERIES)) {\n if (!isRecord(raw)) return null;\n const name = cleanString(raw.name, LABEL_MAX_CHARS);\n const values = cleanNumberArray(raw.values, CHART_MAX_POINTS);\n if (!name || !values) return null;\n // Every series aligns with the label axis; pad/trim mismatches drop.\n if (values.length !== labels.length) return null;\n series.push({ name, values });\n }\n // Donut: one series, non-negative slices.\n if (type === \"donut\") {\n const [only] = series;\n if (series.length !== 1 || !only) return null;\n if (only.values.some((value) => value < 0)) return null;\n }\n\n const spec: ChartSpec = { labels, series, title, type };\n const unitPrefix = cleanString(input.unitPrefix, UNIT_MAX_CHARS);\n const unitSuffix = cleanString(input.unitSuffix, UNIT_MAX_CHARS);\n if (unitPrefix) spec.unitPrefix = unitPrefix;\n if (unitSuffix) spec.unitSuffix = unitSuffix;\n const actions = parseUiActions(input.actions);\n if (actions) spec.actions = actions;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nexport const parseTableSpec = (input: unknown): TableSpec | null => {\n if (!isRecord(input)) return null;\n const columns = cleanStringArray(\n input.columns,\n TABLE_MAX_COLUMNS,\n LABEL_MAX_CHARS,\n );\n if (!columns) return null;\n if (!Array.isArray(input.rows) || input.rows.length === 0) return null;\n const rows: string[][] = [];\n for (const raw of input.rows.slice(0, TABLE_MAX_ROWS)) {\n const cells = cleanStringArray(raw, TABLE_MAX_COLUMNS, CELL_MAX_CHARS);\n if (!cells) return null;\n // Normalize ragged rows to the header width.\n while (cells.length < columns.length) cells.push(\"\");\n rows.push(cells.slice(0, columns.length));\n }\n\n const spec: TableSpec = { columns, rows };\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n if (title) spec.title = title;\n const actions = parseUiActions(input.actions);\n if (actions) spec.actions = actions;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nexport const parseStatTilesSpec = (input: unknown): StatTilesSpec | null => {\n if (!isRecord(input)) return null;\n if (!Array.isArray(input.tiles) || input.tiles.length === 0) return null;\n const tiles: StatTile[] = [];\n for (const raw of input.tiles.slice(0, STAT_TILES_MAX)) {\n if (!isRecord(raw)) return null;\n const label = cleanString(raw.label, LABEL_MAX_CHARS);\n const value = cleanString(raw.value, LABEL_MAX_CHARS);\n if (!label || !value) return null;\n const tile: StatTile = { label, value };\n const delta = cleanString(raw.delta, LABEL_MAX_CHARS);\n if (delta) tile.delta = delta;\n if (\n raw.deltaDirection === \"up\" ||\n raw.deltaDirection === \"down\" ||\n raw.deltaDirection === \"flat\"\n ) {\n tile.deltaDirection = raw.deltaDirection;\n }\n tiles.push(tile);\n }\n\n const spec: StatTilesSpec = { tiles };\n const actions = parseUiActions(input.actions);\n if (actions) spec.actions = actions;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nconst parseFormField = (raw: unknown): FormField | null => {\n if (!isRecord(raw)) return null;\n const name =\n typeof raw.name === \"string\" && FIELD_NAME_PATTERN.test(raw.name)\n ? raw.name\n : null;\n const label = cleanString(raw.label, LABEL_MAX_CHARS);\n const type = FORM_FIELD_TYPES.find((entry) => entry === raw.type);\n if (!name || !label || !type) return null;\n\n const field: FormField = { label, name, type };\n const placeholder = cleanString(raw.placeholder, LABEL_MAX_CHARS);\n if (placeholder) field.placeholder = placeholder;\n if (raw.required === true) field.required = true;\n // A password prefill would put a secret in the model transcript — drop it.\n const value =\n type === \"password\" ? null : cleanString(raw.value, CELL_MAX_CHARS);\n if (value) field.value = value;\n const options = cleanStringArray(\n raw.options,\n FORM_SELECT_MAX_OPTIONS,\n LABEL_MAX_CHARS,\n );\n if (options) field.options = options;\n // A select without choices can never be filled in.\n if (type === \"select\" && !options) return null;\n\n return field;\n};\n\nconst parseFormFields = (value: unknown): FormField[] | null => {\n if (!Array.isArray(value) || value.length === 0) return null;\n const fields: FormField[] = [];\n const seen = new Set<string>();\n for (const raw of value.slice(0, FORM_MAX_FIELDS)) {\n const field = parseFormField(raw);\n // One malformed or duplicate field sinks the form — a partial form would\n // submit a payload the bound tool never expected.\n if (!field || seen.has(field.name)) return null;\n seen.add(field.name);\n fields.push(field);\n }\n\n return fields;\n};\n\nexport const parseFormSpec = (input: unknown): FormSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n const fields = parseFormFields(input.fields);\n const [submit] = parseUiActions([input.submit]) ?? [];\n if (!title || !fields || !submit) return null;\n\n const spec: FormSpec = { fields, submit, title };\n const description = cleanString(input.description, DESCRIPTION_MAX_CHARS);\n if (description) spec.description = description;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\n// A decision must preserve every word and alternative. Reject oversized text\n// instead of silently changing its meaning; the card handler asks for a retry.\nconst completeString = (value: unknown, maxChars: number) => {\n if (typeof value !== \"string\") return null;\n const text = value.trim();\n\n return text.length > 0 && text.length <= maxChars ? text : null;\n};\n\nconst optionalCompleteString = (value: unknown, maxChars: number) =>\n value === undefined ||\n (typeof value === \"string\" && value.trim().length <= maxChars);\n\nconst parseChoiceOption = (raw: unknown): ChoiceOption | null => {\n if (!isRecord(raw)) return null;\n const id = completeString(raw.id, CARD_ID_MAX_CHARS);\n const label = completeString(raw.label, CHOICE_LABEL_MAX_CHARS);\n if (!id || !label) return null;\n if (!CARD_ID_PATTERN.test(id)) return null;\n if (\n !optionalCompleteString(raw.description, CHOICE_DESCRIPTION_MAX_CHARS) ||\n !optionalCompleteString(raw.badge, BADGE_MAX_CHARS)\n )\n return null;\n\n const option: ChoiceOption = { id, label };\n const description = completeString(\n raw.description,\n CHOICE_DESCRIPTION_MAX_CHARS,\n );\n if (description) option.description = description;\n const badge = completeString(raw.badge, BADGE_MAX_CHARS);\n if (badge) option.badge = badge;\n\n return option;\n};\n\nexport const parseChoiceSpec = (input: unknown): ChoiceSpec | null => {\n if (!isRecord(input)) return null;\n const title = completeString(input.title, CHOICE_TITLE_MAX_CHARS);\n if (!optionalCompleteString(input.description, CHOICE_DESCRIPTION_MAX_CHARS))\n return null;\n if (\n input.cardId !== undefined &&\n (typeof input.cardId !== \"string\" ||\n !CARD_ID_PATTERN.test(input.cardId.trim()))\n )\n return null;\n if (\n !isRecord(input.submit) ||\n !completeString(input.submit.label, ACTION_LABEL_MAX_CHARS)\n )\n return null;\n const [submit] = parseUiActions([input.submit]) ?? [];\n if (!title || !submit) return null;\n if (\n !Array.isArray(input.options) ||\n input.options.length === 0 ||\n input.options.length > CHOICE_MAX_OPTIONS\n )\n return null;\n const options: ChoiceOption[] = [];\n const seen = new Set<string>();\n for (const raw of input.options) {\n const option = parseChoiceOption(raw);\n // One malformed or duplicate option sinks the card — a partial option\n // set misrepresents the decision.\n if (!option || seen.has(option.id)) return null;\n seen.add(option.id);\n options.push(option);\n }\n\n const spec: ChoiceSpec = { options, submit, title };\n const description = completeString(\n input.description,\n CHOICE_DESCRIPTION_MAX_CHARS,\n );\n if (description) spec.description = description;\n if (input.multi === true) spec.multi = true;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nexport const parseConfirmSpec = (input: unknown): ConfirmSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n const consequence = cleanString(\n input.consequence,\n CONFIRM_CONSEQUENCE_MAX_CHARS,\n );\n const confirmLabel = cleanString(input.confirmLabel, ACTION_LABEL_MAX_CHARS);\n const [confirm] = parseUiActions([input.confirm]) ?? [];\n if (!title || !consequence || !confirmLabel || !confirm) return null;\n\n const spec: ConfirmSpec = { confirm, confirmLabel, consequence, title };\n const cancelLabel = cleanString(input.cancelLabel, ACTION_LABEL_MAX_CHARS);\n if (cancelLabel) spec.cancelLabel = cancelLabel;\n if (input.danger === true) spec.danger = true;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\n/** Shared line budget across a diff card's files — mutated as files parse. */\ntype DiffBudget = { remaining: number };\n\nconst parseDiffFile = (raw: unknown, budget: DiffBudget): DiffFile | null => {\n if (!isRecord(raw)) return null;\n const path = cleanString(raw.path, DIFF_PATH_MAX_CHARS);\n if (!path || typeof raw.diff !== \"string\" || raw.diff.trim().length === 0) {\n return null;\n }\n const lines = raw.diff\n .split(/\\r?\\n/)\n .map((line) => line.slice(0, DIFF_LINE_MAX_CHARS));\n const kept = lines.slice(0, Math.max(budget.remaining, 0));\n budget.remaining -= kept.length;\n\n const file: DiffFile = { diff: kept.join(\"\\n\"), path };\n // Size never rejects: over-budget diffs are cut and flagged instead.\n if (raw.truncated === true || kept.length < lines.length) {\n file.truncated = true;\n }\n\n return file;\n};\n\nexport const parseDiffSpec = (input: unknown): DiffSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n const [apply] = parseUiActions([input.apply]) ?? [];\n if (!title || !apply) return null;\n if (!Array.isArray(input.files) || input.files.length === 0) return null;\n const budget: DiffBudget = { remaining: DIFF_MAX_LINES };\n const files: DiffFile[] = [];\n for (const raw of input.files.slice(0, DIFF_MAX_FILES)) {\n const file = parseDiffFile(raw, budget);\n // A malformed file sinks the card — the member would otherwise review\n // (and apply) a change set they can't actually see in full.\n if (!file) return null;\n files.push(file);\n }\n\n const spec: DiffSpec = { apply, files, title };\n const [reject] = parseUiActions([input.reject]) ?? [];\n if (reject) spec.reject = reject;\n const note = cleanString(input.note, DESCRIPTION_MAX_CHARS);\n if (note) spec.note = note;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nconst parsePlanStep = (raw: unknown): PlanStep | null => {\n if (!isRecord(raw)) return null;\n const id = cleanId(raw.id);\n const label = cleanString(raw.label, LABEL_MAX_CHARS);\n const status = PLAN_STEP_STATUSES.find((entry) => entry === raw.status);\n if (!id || !label || !status) return null;\n\n const step: PlanStep = { id, label, status };\n const detail = cleanString(raw.detail, CELL_MAX_CHARS);\n if (detail) step.detail = detail;\n\n return step;\n};\n\nexport const parsePlanSpec = (input: unknown): PlanSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n if (!title) return null;\n if (!Array.isArray(input.steps) || input.steps.length === 0) return null;\n const steps: PlanStep[] = [];\n const seen = new Set<string>();\n for (const raw of input.steps.slice(0, PLAN_MAX_STEPS)) {\n const step = parsePlanStep(raw);\n // Malformed or duplicate step ids sink the card — stable ids are what\n // lets an in-place update line up with the previous render.\n if (!step || seen.has(step.id)) return null;\n seen.add(step.id);\n steps.push(step);\n }\n\n const spec: PlanSpec = { steps, title };\n const note = cleanString(input.note, DESCRIPTION_MAX_CHARS);\n if (note) spec.note = note;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nconst parseCredentialKey = (raw: unknown): CredentialKey | null => {\n if (!isRecord(raw)) return null;\n const key =\n typeof raw.key === \"string\" && ENV_KEY_PATTERN.test(raw.key)\n ? raw.key\n : null;\n if (!key) return null;\n\n // Only the known display fields survive: any value-like field a model\n // attaches (value, prefill, default…) is dropped here, mirroring the\n // password-prefill drop in parseFormField. Values NEVER ride this card.\n // secret defaults to TRUE — it is normalized explicit so hosts never guess.\n const entry: CredentialKey = { key, secret: raw.secret !== false };\n const label = cleanString(raw.label, LABEL_MAX_CHARS);\n if (label) entry.label = label;\n const docsUrl = cleanString(raw.docsUrl, DOCS_URL_MAX_CHARS);\n if (docsUrl && DOCS_URL_PATTERN.test(docsUrl)) entry.docsUrl = docsUrl;\n if (typeof raw.isSet === \"boolean\") entry.isSet = raw.isSet;\n\n return entry;\n};\n\nexport const parseCredentialSpec = (input: unknown): CredentialSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n if (!title) return null;\n if (!Array.isArray(input.keys) || input.keys.length === 0) return null;\n const keys: CredentialKey[] = [];\n const seen = new Set<string>();\n for (const raw of input.keys.slice(0, CREDENTIAL_MAX_KEYS)) {\n const entry = parseCredentialKey(raw);\n // A malformed or duplicate key sinks the card — a partial credential\n // request would leave setup silently incomplete.\n if (!entry || seen.has(entry.key)) return null;\n seen.add(entry.key);\n keys.push(entry);\n }\n\n const spec: CredentialSpec = { keys, title };\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nconst SERIES_SCHEMA = {\n properties: {\n name: { description: \"Series name (shown in the legend)\", type: \"string\" },\n values: {\n description: \"One number per label, same order as labels\",\n items: { type: \"number\" },\n type: \"array\",\n },\n },\n required: [\"name\", \"values\"],\n type: \"object\",\n};\n\n/** render_chart — bar / line / donut from data you already have. */\nexport const chartCard: UiCardDefinition<ChartSpec> = {\n ack: \"(chart rendered inline — do not repeat its numbers as text; add at most a 1-2 line takeaway)\",\n description:\n \"Render a real chart inline in the chat from data you have (tool results, the conversation). Use whenever numbers COMPARE or TREND: revenue by partner (bar), pipeline over time (line), share of a whole (donut). Rules: bar/line take up to 8 series aligned to the same labels; donut takes exactly ONE series of non-negative values (one slice per label). Prefer a chart over a wall of numbers, but never invent data for it.\",\n inputSchema: {\n properties: {\n actions: ACTIONS_SCHEMA,\n cardId: CARD_ID_SCHEMA,\n labels: {\n description:\n \"Category labels — x-axis for bar/line, slice names for donut (max 24)\",\n items: { type: \"string\" },\n type: \"array\",\n },\n series: {\n description: \"Data series (max 8; donut exactly 1)\",\n items: SERIES_SCHEMA,\n type: \"array\",\n },\n title: { description: \"Short chart title\", type: \"string\" },\n type: { enum: [...CHART_TYPES], type: \"string\" },\n unitPrefix: {\n description: 'Prepended to values, e.g. \"$\"',\n type: \"string\",\n },\n unitSuffix: {\n description: 'Appended to values, e.g. \"%\"',\n type: \"string\",\n },\n },\n required: [\"type\", \"title\", \"labels\", \"series\"],\n type: \"object\",\n },\n name: \"render_chart\",\n parse: parseChartSpec,\n};\n\n/** render_table — a compact data table. */\nexport const tableCard: UiCardDefinition<TableSpec> = {\n ack: \"(table rendered inline — do not repeat its rows as text)\",\n description:\n \"Render a compact data table inline in the chat (max 8 columns × 30 rows). Use for structured comparisons the member will scan — matches side by side, deal terms, task lists with dates. All cells are strings; format numbers yourself.\",\n inputSchema: {\n properties: {\n actions: ACTIONS_SCHEMA,\n cardId: CARD_ID_SCHEMA,\n columns: {\n description: \"Column headers (max 8)\",\n items: { type: \"string\" },\n type: \"array\",\n },\n rows: {\n description: \"Rows of cells, each aligned to columns (max 30)\",\n items: { items: { type: \"string\" }, type: \"array\" },\n type: \"array\",\n },\n title: { description: \"Optional table title\", type: \"string\" },\n },\n required: [\"columns\", \"rows\"],\n type: \"object\",\n },\n name: \"render_table\",\n parse: parseTableSpec,\n};\n\n/** render_stat_tiles — a row of headline numbers. */\nexport const statTilesCard: UiCardDefinition<StatTilesSpec> = {\n ack: \"(stat tiles rendered inline — do not repeat the numbers as text)\",\n description:\n \"Render a row of headline stat tiles inline in the chat (max 6): a label, a big value, and an optional delta with direction. Use for the 2-4 numbers that ARE the answer — total attributed revenue, pipeline value, credits remaining — instead of burying them in prose.\",\n inputSchema: {\n properties: {\n actions: ACTIONS_SCHEMA,\n cardId: CARD_ID_SCHEMA,\n tiles: {\n description: \"The tiles (max 6)\",\n items: {\n properties: {\n delta: {\n description: 'Optional change note, e.g. \"+12% vs last month\"',\n type: \"string\",\n },\n deltaDirection: { enum: [\"up\", \"down\", \"flat\"], type: \"string\" },\n label: { description: \"What the number is\", type: \"string\" },\n value: {\n description: 'The formatted headline value, e.g. \"$42,300\"',\n type: \"string\",\n },\n },\n required: [\"label\", \"value\"],\n type: \"object\",\n },\n type: \"array\",\n },\n },\n required: [\"tiles\"],\n type: \"object\",\n },\n name: \"render_stat_tiles\",\n parse: parseStatTilesSpec,\n};\n\n/** render_form — collect structured inputs, then run a bound tool on submit. */\nexport const formCard: UiCardDefinition<FormSpec> = {\n ack: \"(form rendered inline — the member fills and submits it, which runs the bound tool with their values. Do NOT re-ask for these values in text; wait for the submission)\",\n description:\n \"Render an inline form when you need SEVERAL structured inputs from the member before running a tool (task details, scheduling constraints, outreach parameters) — one form beats asking field-by-field in prose. Bind submit to one of YOUR tools with any values you already know pre-filled in submit.input; on submit the member's field values are merged into submit.input under each field's name and the tool runs exactly like a clicked action button. Field names must therefore be the tool's actual input property names. Never use it for values you could look up yourself. Use type \\\"password\\\" for sensitive values (API keys, secrets, credentials) — the host renders it masked and never pre-fill a value for it.\",\n inputSchema: {\n properties: {\n cardId: CARD_ID_SCHEMA,\n description: {\n description: \"Optional one-line helper text under the title\",\n type: \"string\",\n },\n fields: {\n description:\n \"The inputs to collect (max 8). Each field's name must be a real input property of the submit tool.\",\n items: {\n properties: {\n label: { description: \"Human label for the field\", type: \"string\" },\n name: {\n description:\n 'Tool-input property name the value submits under, e.g. \"title\"',\n type: \"string\",\n },\n options: {\n description: \"Choices — required for select fields (max 12)\",\n items: { type: \"string\" },\n type: \"array\",\n },\n placeholder: { type: \"string\" },\n required: { type: \"boolean\" },\n type: { enum: [...FORM_FIELD_TYPES], type: \"string\" },\n value: {\n description: 'Prefill value (checkbox: \"true\"/\"false\")',\n type: \"string\",\n },\n },\n required: [\"name\", \"label\", \"type\"],\n type: \"object\",\n },\n type: \"array\",\n },\n submit: {\n description:\n \"The submit binding: label for the button, the tool to run, and any input values you already resolved (real ids, never placeholders)\",\n properties: {\n input: {\n description:\n \"Pre-resolved input values; field values are merged in on top under their field names\",\n type: \"object\",\n },\n label: {\n description: 'Button label, e.g. \"Create task\"',\n type: \"string\",\n },\n tool: { description: \"The tool name to invoke\", type: \"string\" },\n },\n required: [\"label\", \"tool\", \"input\"],\n type: \"object\",\n },\n title: { description: \"Short form title\", type: \"string\" },\n },\n required: [\"title\", \"fields\", \"submit\"],\n type: \"object\",\n },\n name: \"render_form\",\n parse: parseFormSpec,\n};\n\n/** render_choice — a structured decision instead of \"reply 1 or 2\". */\nexport const choiceCard: UiCardDefinition<ChoiceSpec> = {\n ack: \"(choice card rendered inline — the member picks an option, which runs the bound tool with their selection merged in. Do not re-ask in text; wait for the selection)\",\n description:\n \"Render a structured choice card whenever the member must pick between concrete options (which plan, which duplicate record to keep, which time slot) — never ask them to 'reply 1 or 2' in prose. Give every option a stable id; on selection the host merges { choice: id } (or { choices: [ids] } when multi is true) into submit.input and invokes submit.tool exactly like a clicked action button, so put everything you already resolved into submit.input. Max 8 options. Use complete, concise labels; put supporting detail in descriptions. Titles and labels allow 600 characters, descriptions 2000. Inputs over these limits are rejected, never truncated.\",\n inputSchema: {\n properties: {\n cardId: {\n ...CARD_ID_SCHEMA,\n maxLength: CARD_ID_MAX_CHARS,\n pattern: CARD_ID_PATTERN.source,\n },\n description: {\n description: \"Optional helper text under the title\",\n maxLength: CHOICE_DESCRIPTION_MAX_CHARS,\n type: \"string\",\n },\n multi: {\n description:\n \"Allow selecting several options — submits { choices: [ids] } instead of { choice: id }\",\n type: \"boolean\",\n },\n options: {\n description: \"The options to choose between (max 8)\",\n items: {\n properties: {\n badge: {\n description:\n 'Tiny annotation beside the label, e.g. \"recommended\"',\n maxLength: BADGE_MAX_CHARS,\n type: \"string\",\n },\n description: {\n description: \"Supporting explanation of the option\",\n maxLength: CHOICE_DESCRIPTION_MAX_CHARS,\n type: \"string\",\n },\n id: {\n description:\n \"Stable option id merged into submit.input on selection (letters/digits/_/-)\",\n maxLength: CARD_ID_MAX_CHARS,\n pattern: CARD_ID_PATTERN.source,\n type: \"string\",\n },\n label: {\n description: \"The complete option, without cutting off words\",\n maxLength: CHOICE_LABEL_MAX_CHARS,\n minLength: 1,\n type: \"string\",\n },\n },\n required: [\"id\", \"label\"],\n type: \"object\",\n },\n maxItems: CHOICE_MAX_OPTIONS,\n minItems: 1,\n type: \"array\",\n },\n submit: {\n ...ACTION_BINDING_SCHEMA,\n properties: {\n ...ACTION_BINDING_SCHEMA.properties,\n label: {\n ...ACTION_BINDING_SCHEMA.properties.label,\n maxLength: ACTION_LABEL_MAX_CHARS,\n minLength: 1,\n },\n },\n description:\n \"The submit binding: the tool to run once a choice is made. The selection is merged into input as { choice: id } (or { choices: [ids] })\",\n },\n title: {\n description: \"The complete decision being made\",\n maxLength: CHOICE_TITLE_MAX_CHARS,\n minLength: 1,\n type: \"string\",\n },\n },\n required: [\"title\", \"options\", \"submit\"],\n type: \"object\",\n },\n name: \"render_choice\",\n parse: parseChoiceSpec,\n};\n\n/** render_confirm — explicit consent for destructive/irreversible actions. */\nexport const confirmCard: UiCardDefinition<ConfirmSpec> = {\n ack: \"(confirmation card rendered inline — NOTHING has run yet; the action only runs if the member clicks confirm. Do not claim or assume it happened; wait for the outcome)\",\n description:\n \"Render an explicit confirmation card before any destructive or irreversible action (deleting data, sending money or bulk email, cancelling a subscription). State the consequence in plain language — exactly what will happen. TRUST CONTRACT: the host invokes confirm ONLY on a real member click, never on your say-so; hosts SHOULD mint an unforgeable server-side confirmation token at click time and require it on the downstream action, so a confirmation can never be fabricated in text. Set danger: true for destructive styling. Rendering this card is never itself consent.\",\n inputSchema: {\n properties: {\n cancelLabel: {\n description: 'Optional dismiss label, e.g. \"Keep project\"',\n type: \"string\",\n },\n cardId: CARD_ID_SCHEMA,\n confirm: {\n ...ACTION_BINDING_SCHEMA,\n description:\n \"The action to run ONLY when the member clicks confirm (fully-resolved input, real ids)\",\n },\n confirmLabel: {\n description: 'The confirm button label, e.g. \"Delete project\"',\n type: \"string\",\n },\n consequence: {\n description:\n \"What will happen if confirmed, in plain language (max 500 chars)\",\n type: \"string\",\n },\n danger: {\n description: \"Render destructive (red) styling\",\n type: \"boolean\",\n },\n title: { description: \"Short question being confirmed\", type: \"string\" },\n },\n required: [\"title\", \"consequence\", \"confirmLabel\", \"confirm\"],\n type: \"object\",\n },\n name: \"render_confirm\",\n parse: parseConfirmSpec,\n};\n\n/** render_diff — proposed file changes for review before applying. */\nexport const diffCard: UiCardDefinition<DiffSpec> = {\n ack: \"(diff card rendered inline — the member reviews the changes and clicks apply or reject. Do not restate the diff in text and do not assume it was applied; wait for their decision)\",\n description:\n \"Render proposed file changes as reviewable unified diffs before applying them (max 6 files and 400 diff lines total — oversized diffs are truncated for display with truncated: true, never rejected). The diffs are DISPLAY data: the host renders the +/- coloring and nothing executes from the text. Bind apply (and optionally reject) to YOUR tools with fully-resolved input; hosts SHOULD route apply through a click-minted server-side token exactly like a confirmation card, because applying changes is destructive.\",\n inputSchema: {\n properties: {\n apply: {\n ...ACTION_BINDING_SCHEMA,\n description:\n \"The action that applies the changes when the member clicks it\",\n },\n cardId: CARD_ID_SCHEMA,\n files: {\n description: \"The changed files (max 6, 400 diff lines total)\",\n items: {\n properties: {\n diff: {\n description: \"Unified diff text for this file (display only)\",\n type: \"string\",\n },\n path: { description: \"File path being changed\", type: \"string\" },\n truncated: {\n description: \"Set true if you already cut the diff for size\",\n type: \"boolean\",\n },\n },\n required: [\"path\", \"diff\"],\n type: \"object\",\n },\n type: \"array\",\n },\n note: {\n description: \"Optional one-line note under the diffs\",\n type: \"string\",\n },\n reject: {\n ...ACTION_BINDING_SCHEMA,\n description: \"Optional action to run when the member rejects\",\n },\n title: { description: \"What the change set does\", type: \"string\" },\n },\n required: [\"title\", \"files\", \"apply\"],\n type: \"object\",\n },\n name: \"render_diff\",\n parse: parseDiffSpec,\n};\n\n/** render_plan — a live multi-step plan, updated in place via cardId. */\nexport const planCard: UiCardDefinition<PlanSpec> = {\n ack: \"(plan rendered inline — as you work, re-emit render_plan with the SAME cardId and updated step statuses instead of narrating progress; do not restate the steps as text)\",\n description:\n \"Render a live multi-step plan card (max 12 steps) when you start multi-step work. Display-only — it has no buttons. Set a cardId and give every step a stable id, then as you progress RE-EMIT this card with the SAME cardId and updated step statuses (pending / active / done / error): the host replaces the earlier render in place, so the member sees one live plan instead of a stack of copies.\",\n inputSchema: {\n properties: {\n cardId: CARD_ID_SCHEMA,\n note: {\n description: \"Optional one-line note under the steps\",\n type: \"string\",\n },\n steps: {\n description: \"The plan steps in order (max 12)\",\n items: {\n properties: {\n detail: {\n description: \"One-line progress or error note under the label\",\n type: \"string\",\n },\n id: {\n description:\n \"Stable step id — keep it identical across re-emits (letters/digits/_/-)\",\n type: \"string\",\n },\n label: { description: \"What this step does\", type: \"string\" },\n status: { enum: [...PLAN_STEP_STATUSES], type: \"string\" },\n },\n required: [\"id\", \"label\", \"status\"],\n type: \"object\",\n },\n type: \"array\",\n },\n title: { description: \"What the plan accomplishes\", type: \"string\" },\n },\n required: [\"title\", \"steps\"],\n type: \"object\",\n },\n name: \"render_plan\",\n parse: parsePlanSpec,\n};\n\n/** request_credentials — ask for env values WITHOUT a through-loop submit. */\nexport const credentialCard: UiCardDefinition<CredentialSpec> = {\n ack: \"(credential request rendered inline — the member enters the values in the host UI and they are stored outside this conversation; you will receive a message naming which keys were set, never the values. Do not ask for the values in text)\",\n description:\n \"Render a credential-request card when setup needs environment values from the member (API keys, secrets, connection strings) — max 8 keys, each an ENV_STYLE name with an optional label and docs link. This card deliberately has NO submit binding and collects NOTHING through you: the host UI gathers the values and stores them outside the model loop (its own .env or secret store), then sends a continuation message naming WHICH keys were set — never the values. Never ask for secret values in plain text, and never attach values to this card (any value-like field is dropped).\",\n inputSchema: {\n properties: {\n cardId: CARD_ID_SCHEMA,\n keys: {\n description: \"The environment keys to request (max 8)\",\n items: {\n properties: {\n docsUrl: {\n description:\n \"Where to obtain the credential (provider dashboard URL)\",\n type: \"string\",\n },\n isSet: {\n description:\n \"Already configured on the host — rendered as set, with a replace affordance\",\n type: \"boolean\",\n },\n key: {\n description:\n 'Environment variable name, e.g. \"STRIPE_SECRET_KEY\"',\n type: \"string\",\n },\n label: {\n description: 'Human label, e.g. \"Stripe secret key\"',\n type: \"string\",\n },\n secret: {\n description:\n \"Mask and never echo (default true — only set false for genuinely public values)\",\n type: \"boolean\",\n },\n },\n required: [\"key\"],\n type: \"object\",\n },\n type: \"array\",\n },\n title: {\n description: 'What the credentials unlock, e.g. \"Connect Stripe\"',\n type: \"string\",\n },\n },\n required: [\"title\", \"keys\"],\n type: \"object\",\n },\n name: \"request_credentials\",\n parse: parseCredentialSpec,\n};\n\n/** The built-in catalog, ready for createUiCards. */\nexport const BUILTIN_UI_CARDS = [\n chartCard,\n tableCard,\n statTilesCard,\n formCard,\n choiceCard,\n confirmCard,\n diffCard,\n planCard,\n credentialCard,\n] as const;\n",
23
+ "import type { UiCardDefinition } from \"./uiCards\";\n\n/**\n * Built-in UI card catalog: chart, table, stat tiles, form, choice, confirm,\n * diff, plan, and credential-request cards. Declarative specs the model\n * authors and the host renders — see svg.ts for the dependency-free default\n * chart renderer. Caps are hard product guards (a model can't render a\n * 400-row table into a chat bubble).\n *\n * Card identity: every spec carries an optional `cardId`. When a host\n * receives a card whose cardId it has already rendered in the conversation,\n * it MUST replace that earlier render in place instead of appending a new\n * card. This is a pure host rendering contract — no loop-side state — and it\n * is how planCard progresses: the model re-emits the same cardId with\n * updated step statuses. The field lives here, in the shared spec layer, so\n * every host implements the same semantics.\n */\n\nexport const CHART_TYPES = [\"bar\", \"line\", \"donut\"] as const;\nexport type ChartType = (typeof CHART_TYPES)[number];\n\nexport type ChartSeries = { name: string; values: number[] };\n\nexport type ChartSpec = {\n type: ChartType;\n title: string;\n /** Category labels: x-axis (bar/line) or slice names (donut). */\n labels: string[];\n /** ≤ 8 series (fixed hue order). Donut charts use exactly one series. */\n series: ChartSeries[];\n /** Value formatting, e.g. \"$\" / \"%\". */\n unitPrefix?: string;\n unitSuffix?: string;\n /** Optional action buttons rendered under the card (≤ 3). */\n actions?: UiAction[];\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type TableSpec = {\n title?: string;\n columns: string[];\n rows: string[][];\n /** Optional action buttons rendered under the card (≤ 3). */\n actions?: UiAction[];\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type StatTile = {\n label: string;\n value: string;\n /** Optional change annotation, e.g. \"+12% vs last month\". */\n delta?: string;\n deltaDirection?: \"up\" | \"down\" | \"flat\";\n};\n\nexport type StatTilesSpec = {\n tiles: StatTile[];\n actions?: UiAction[];\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\n/**\n * An action binding on a UI card: a button the host renders under the card\n * that, on click, invokes one of the HOST'S OWN tools with a model-authored\n * input. The host decides which tools are click-invokable (approval-gated\n * tools should queue their normal approval flow, and anything like \"approve a\n * pending action\" should be refused outright) and validates the input against\n * the tool exactly as if the model had called it.\n */\nexport type UiAction = {\n /** Button label, e.g. \"Create follow-up task\". */\n label: string;\n /** The host tool to invoke, e.g. \"create_task\". */\n tool: string;\n /** The tool input, fully resolved by the model (real ids, not placeholders). */\n input: Record<string, unknown>;\n};\n\nexport const FORM_FIELD_TYPES = [\n \"text\",\n \"textarea\",\n \"number\",\n \"select\",\n \"date\",\n \"checkbox\",\n \"password\",\n] as const;\nexport type FormFieldType = (typeof FORM_FIELD_TYPES)[number];\n\nexport type FormField = {\n /** Key the value is submitted under — a valid tool-input property name. */\n name: string;\n label: string;\n /**\n * \"password\" marks a sensitive field: hosts MUST render it masked (an\n * `<input type=\"password\">`-equivalent) and SHOULD route the submitted\n * value outside the model loop entirely (e.g. straight to the host's own\n * secret store) so it never enters the transcript. Password fields never\n * carry a prefill `value` — parseFormSpec drops it.\n */\n type: FormFieldType;\n placeholder?: string;\n required?: boolean;\n /** Choices — select fields only. */\n options?: string[];\n /** Submitted scalar type; select labels remain strings for display. */\n valueType?: \"string\" | \"number\" | \"integer\" | \"boolean\";\n /** Prefill (checkbox: \"true\"/\"false\"; never present on password fields). */\n value?: string;\n};\n\n/**\n * An inline form the model renders when it needs several structured inputs\n * from the member before running a tool. On submit the host merges the field\n * values into `submit.input` under their field names and invokes `submit.tool`\n * exactly like a clicked UiAction.\n */\nexport type FormSpec = {\n title: string;\n description?: string;\n fields: FormField[];\n submit: UiAction;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type ChoiceOption = {\n /** Stable option id — merged into submit.input on selection. */\n id: string;\n label: string;\n description?: string;\n /** Tiny annotation rendered beside the label, e.g. \"recommended\". */\n badge?: string;\n};\n\n/**\n * A structured decision card: the member picks one option (or several when\n * `multi`) and the host merges `{ choice: id }` — or `{ choices: id[] }` —\n * into `submit.input`, then invokes `submit.tool` exactly like a clicked\n * UiAction. Same through-loop flow as FormSpec: a choice between\n * model-authored options is non-secret by definition, so loop-visible\n * submission is correct here.\n */\nexport type ChoiceSpec = {\n title: string;\n description?: string;\n /** ≤ 8 options. */\n options: ChoiceOption[];\n /** Allow selecting several options (`{ choices: id[] }` on submit). */\n multi?: boolean;\n submit: UiAction;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\n/**\n * An explicit-consent card for destructive or irreversible actions.\n *\n * TRUST CONTRACT: the host must invoke `confirm` ONLY on a real user click\n * of the confirm button — never programmatically, and never because the\n * model claims consent was given. Hosts SHOULD mint an unforgeable\n * server-side confirmation token at click time and require it on the\n * downstream action, so a model can never fabricate a confirmation: the\n * token exists only if the click happened.\n */\nexport type ConfirmSpec = {\n title: string;\n /** What will happen, in plain language (≤ 500 chars). */\n consequence: string;\n confirmLabel: string;\n cancelLabel?: string;\n confirm: UiAction;\n /** Render destructive styling (e.g. a red confirm button). */\n danger?: boolean;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type DiffFile = {\n path: string;\n /** Unified diff text — DISPLAY data only (the host renders the +/-\n * coloring); nothing is ever executed or applied from the text itself. */\n diff: string;\n /** The shown diff was cut to fit the display caps. */\n truncated?: boolean;\n};\n\n/**\n * Proposed file changes for review. Diffs are display data; the actual\n * change happens through `apply` — a normal UiAction against a host tool\n * with fully-resolved input. Applying files is destructive, so hosts SHOULD\n * route `apply` through a click-minted server-side token exactly like\n * ConfirmSpec. Oversized diffs are truncated by the parser, never rejected:\n * files beyond 6 drop, and diff bodies are cut to a 400-line total budget\n * with `truncated: true` set on every file that was cut.\n */\nexport type DiffSpec = {\n title: string;\n /** ≤ 6 files, ≤ 400 diff lines total across them. */\n files: DiffFile[];\n apply: UiAction;\n reject?: UiAction;\n note?: string;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport const PLAN_STEP_STATUSES = [\n \"pending\",\n \"active\",\n \"done\",\n \"error\",\n] as const;\nexport type PlanStepStatus = (typeof PLAN_STEP_STATUSES)[number];\n\nexport type PlanStep = {\n /** Stable step id — keep it identical across re-emits of the same plan. */\n id: string;\n label: string;\n status: PlanStepStatus;\n /** One-line progress or error note under the label. */\n detail?: string;\n};\n\n/**\n * A live multi-step plan. Display-only — no submit action. Progress works\n * through the card-identity contract: the model re-emits the SAME cardId\n * with updated step statuses and the host replaces the earlier render in\n * place, so the member sees one live plan instead of a stack of copies.\n */\nexport type PlanSpec = {\n title: string;\n /** ≤ 12 steps. */\n steps: PlanStep[];\n note?: string;\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\nexport type CredentialKey = {\n /** Environment variable name, e.g. \"STRIPE_SECRET_KEY\". */\n key: string;\n /** Human label, e.g. \"Stripe secret key\". */\n label?: string;\n /** Where to obtain the credential (provider dashboard URL). */\n docsUrl?: string;\n /** Mask and never echo. Defaults to TRUE — parseCredentialSpec normalizes\n * it to an explicit boolean so hosts never have to guess. */\n secret?: boolean;\n /** Already configured on the host — render as set, offer replace. */\n isSet?: boolean;\n};\n\n/**\n * A credential-request card. Deliberately has NO submit UiAction — the type\n * makes through-loop submission impossible. The host UI collects the values\n * and stores them OUTSIDE the model loop (its own .env or secret store),\n * then sends a names-only continuation message (\"STRIPE_SECRET_KEY was\n * set\") so the model can proceed. Values never enter the transcript in\n * either direction: parseCredentialSpec drops any value-like field a model\n * attaches (the password-prefill-drop precedent), and hosts never echo\n * stored values back.\n */\nexport type CredentialSpec = {\n title: string;\n /** ≤ 8 keys. */\n keys: CredentialKey[];\n /** Stable card identity — see the card-identity contract in module docs. */\n cardId?: string;\n};\n\n// Hard caps — chat-bubble scale, and the fixed 8-slot categorical order.\nexport const CHART_MAX_SERIES = 8;\nexport const CHART_MAX_POINTS = 24;\nexport const TABLE_MAX_COLUMNS = 8;\nexport const TABLE_MAX_ROWS = 30;\nexport const STAT_TILES_MAX = 6;\nexport const UI_ACTIONS_MAX = 3;\nexport const FORM_MAX_FIELDS = 8;\nexport const FORM_SELECT_MAX_OPTIONS = 12;\nexport const CHOICE_MAX_OPTIONS = 8;\nexport const CHOICE_TITLE_MAX_CHARS = 600;\nexport const CHOICE_LABEL_MAX_CHARS = 600;\nexport const CHOICE_DESCRIPTION_MAX_CHARS = 2000;\nexport const CONFIRM_CONSEQUENCE_MAX_CHARS = 500;\nexport const DIFF_MAX_FILES = 6;\nexport const DIFF_MAX_LINES = 400;\nexport const PLAN_MAX_STEPS = 12;\nexport const CREDENTIAL_MAX_KEYS = 8;\nexport const CARD_ID_MAX_CHARS = 64;\nconst LABEL_MAX_CHARS = 80;\nconst TITLE_MAX_CHARS = 120;\nconst CELL_MAX_CHARS = 160;\nconst UNIT_MAX_CHARS = 8;\nconst ACTION_LABEL_MAX_CHARS = 40;\nconst DESCRIPTION_MAX_CHARS = 280;\nconst BADGE_MAX_CHARS = 24;\nconst DIFF_PATH_MAX_CHARS = 260;\nconst DIFF_LINE_MAX_CHARS = 300;\nconst DOCS_URL_MAX_CHARS = 300;\n// Tool names are host identifiers, not prose.\nconst ACTION_TOOL_PATTERN = /^[a-z][a-z0-9_]{1,63}$/;\n// Field names become tool-input property keys.\nconst FIELD_NAME_PATTERN = /^[a-z][a-zA-Z0-9_]{0,63}$/;\n// Card / option / step ids: opaque identity tokens, not prose.\nconst CARD_ID_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;\n// Credential keys are environment variable names.\nconst ENV_KEY_PATTERN = /^[A-Z][A-Z0-9_]{0,63}$/;\nconst DOCS_URL_PATTERN = /^https?:\\/\\//;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst cleanString = (value: unknown, maxChars: number) =>\n typeof value === \"string\" && value.trim().length > 0\n ? value.trim().slice(0, maxChars)\n : null;\n\nconst cleanStringArray = (\n value: unknown,\n maxItems: number,\n maxChars: number,\n) => {\n if (!Array.isArray(value) || value.length === 0) return null;\n const cleaned: string[] = [];\n for (const entry of value.slice(0, maxItems)) {\n const text = cleanString(entry, maxChars);\n cleaned.push(text ?? \"\");\n }\n\n return cleaned;\n};\n\nconst cleanNumberArray = (value: unknown, maxItems: number) => {\n if (!Array.isArray(value) || value.length === 0) return null;\n const cleaned: number[] = [];\n for (const entry of value.slice(0, maxItems)) {\n if (typeof entry !== \"number\" || !Number.isFinite(entry)) return null;\n cleaned.push(entry);\n }\n\n return cleaned;\n};\n\n/** Trim, cap at 64 chars, then require the id charset; null when invalid. */\nconst cleanId = (value: unknown) => {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim().slice(0, CARD_ID_MAX_CHARS);\n\n return CARD_ID_PATTERN.test(trimmed) ? trimmed : null;\n};\n\n/** Attach a validated cardId to a spec; invalid ids drop silently — identity\n * is an enhancement, never a reason to sink a card. */\nconst applyCardId = (spec: { cardId?: string }, raw: unknown) => {\n const cardId = cleanId(raw);\n if (cardId) spec.cardId = cardId;\n};\n\n/** Validate a spec's optional action bindings; undefined when none/invalid.\n * Malformed entries drop individually — a bad button never sinks the card. */\nexport const parseUiActions = (value: unknown): UiAction[] | undefined => {\n if (!Array.isArray(value) || value.length === 0) return undefined;\n const actions: UiAction[] = [];\n for (const raw of value.slice(0, UI_ACTIONS_MAX)) {\n if (!isRecord(raw)) continue;\n const label = cleanString(raw.label, ACTION_LABEL_MAX_CHARS);\n const tool =\n typeof raw.tool === \"string\" && ACTION_TOOL_PATTERN.test(raw.tool)\n ? raw.tool\n : null;\n if (!label || !tool || !isRecord(raw.input)) continue;\n actions.push({ input: raw.input, label, tool });\n }\n\n return actions.length > 0 ? actions : undefined;\n};\n\nconst ACTIONS_SCHEMA = {\n description:\n \"Optional action buttons under the card (max 3): each invokes one of YOUR tools with a fully-resolved input when the member clicks it. Use real ids you looked up — never placeholders. Approval-gated tools queue their normal approval card.\",\n items: {\n properties: {\n input: {\n description: \"The exact tool input to send on click\",\n type: \"object\",\n },\n label: {\n description: 'Short button label, e.g. \"Create follow-up task\"',\n type: \"string\",\n },\n tool: { description: \"The tool name to invoke\", type: \"string\" },\n },\n required: [\"label\", \"tool\", \"input\"],\n type: \"object\",\n },\n type: \"array\",\n};\n\nconst CARD_ID_SCHEMA = {\n description:\n \"Optional stable card identity (letters/digits/_/-, max 64 chars). Re-emit a card with the SAME cardId to update the earlier render in place instead of adding a new card.\",\n type: \"string\",\n};\n\n// Reusable single-action binding schema (choice submit, confirm, diff apply).\nconst ACTION_BINDING_SCHEMA = {\n properties: {\n input: {\n description:\n \"The exact tool input to send (real ids you looked up, never placeholders)\",\n type: \"object\",\n },\n label: { description: \"Button label\", type: \"string\" },\n tool: { description: \"The tool name to invoke\", type: \"string\" },\n },\n required: [\"label\", \"tool\", \"input\"],\n type: \"object\",\n};\n\nexport const parseChartSpec = (input: unknown): ChartSpec | null => {\n if (!isRecord(input)) return null;\n const type = CHART_TYPES.find((entry) => entry === input.type);\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n const labels = cleanStringArray(\n input.labels,\n CHART_MAX_POINTS,\n LABEL_MAX_CHARS,\n );\n if (!type || !title || !labels) return null;\n\n if (!Array.isArray(input.series) || input.series.length === 0) return null;\n const series: ChartSeries[] = [];\n for (const raw of input.series.slice(0, CHART_MAX_SERIES)) {\n if (!isRecord(raw)) return null;\n const name = cleanString(raw.name, LABEL_MAX_CHARS);\n const values = cleanNumberArray(raw.values, CHART_MAX_POINTS);\n if (!name || !values) return null;\n // Every series aligns with the label axis; pad/trim mismatches drop.\n if (values.length !== labels.length) return null;\n series.push({ name, values });\n }\n // Donut: one series, non-negative slices.\n if (type === \"donut\") {\n const [only] = series;\n if (series.length !== 1 || !only) return null;\n if (only.values.some((value) => value < 0)) return null;\n }\n\n const spec: ChartSpec = { labels, series, title, type };\n const unitPrefix = cleanString(input.unitPrefix, UNIT_MAX_CHARS);\n const unitSuffix = cleanString(input.unitSuffix, UNIT_MAX_CHARS);\n if (unitPrefix) spec.unitPrefix = unitPrefix;\n if (unitSuffix) spec.unitSuffix = unitSuffix;\n const actions = parseUiActions(input.actions);\n if (actions) spec.actions = actions;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nexport const parseTableSpec = (input: unknown): TableSpec | null => {\n if (!isRecord(input)) return null;\n const columns = cleanStringArray(\n input.columns,\n TABLE_MAX_COLUMNS,\n LABEL_MAX_CHARS,\n );\n if (!columns) return null;\n if (!Array.isArray(input.rows) || input.rows.length === 0) return null;\n const rows: string[][] = [];\n for (const raw of input.rows.slice(0, TABLE_MAX_ROWS)) {\n const cells = cleanStringArray(raw, TABLE_MAX_COLUMNS, CELL_MAX_CHARS);\n if (!cells) return null;\n // Normalize ragged rows to the header width.\n while (cells.length < columns.length) cells.push(\"\");\n rows.push(cells.slice(0, columns.length));\n }\n\n const spec: TableSpec = { columns, rows };\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n if (title) spec.title = title;\n const actions = parseUiActions(input.actions);\n if (actions) spec.actions = actions;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nexport const parseStatTilesSpec = (input: unknown): StatTilesSpec | null => {\n if (!isRecord(input)) return null;\n if (!Array.isArray(input.tiles) || input.tiles.length === 0) return null;\n const tiles: StatTile[] = [];\n for (const raw of input.tiles.slice(0, STAT_TILES_MAX)) {\n if (!isRecord(raw)) return null;\n const label = cleanString(raw.label, LABEL_MAX_CHARS);\n const value = cleanString(raw.value, LABEL_MAX_CHARS);\n if (!label || !value) return null;\n const tile: StatTile = { label, value };\n const delta = cleanString(raw.delta, LABEL_MAX_CHARS);\n if (delta) tile.delta = delta;\n if (\n raw.deltaDirection === \"up\" ||\n raw.deltaDirection === \"down\" ||\n raw.deltaDirection === \"flat\"\n ) {\n tile.deltaDirection = raw.deltaDirection;\n }\n tiles.push(tile);\n }\n\n const spec: StatTilesSpec = { tiles };\n const actions = parseUiActions(input.actions);\n if (actions) spec.actions = actions;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nconst parseFormField = (raw: unknown): FormField | null => {\n if (!isRecord(raw)) return null;\n const name =\n typeof raw.name === \"string\" && FIELD_NAME_PATTERN.test(raw.name)\n ? raw.name\n : null;\n const label = cleanString(raw.label, LABEL_MAX_CHARS);\n const type = FORM_FIELD_TYPES.find((entry) => entry === raw.type);\n if (!name || !label || !type) return null;\n\n const field: FormField = { label, name, type };\n if (raw.valueType !== undefined) {\n if (\n ![\"string\", \"number\", \"integer\", \"boolean\"].includes(\n String(raw.valueType),\n )\n )\n return null;\n field.valueType = raw.valueType as FormField[\"valueType\"];\n }\n const placeholder = cleanString(raw.placeholder, LABEL_MAX_CHARS);\n if (placeholder) field.placeholder = placeholder;\n if (raw.required === true) field.required = true;\n // A password prefill would put a secret in the model transcript — drop it.\n const value =\n type === \"password\" ? null : cleanString(raw.value, CELL_MAX_CHARS);\n if (value) field.value = value;\n const options = cleanStringArray(\n raw.options,\n FORM_SELECT_MAX_OPTIONS,\n LABEL_MAX_CHARS,\n );\n if (options) field.options = options;\n // A select without choices can never be filled in.\n if (type === \"select\" && !options) return null;\n\n return field;\n};\n\nconst parseFormFields = (value: unknown): FormField[] | null => {\n if (!Array.isArray(value) || value.length === 0) return null;\n const fields: FormField[] = [];\n const seen = new Set<string>();\n for (const raw of value.slice(0, FORM_MAX_FIELDS)) {\n const field = parseFormField(raw);\n // One malformed or duplicate field sinks the form — a partial form would\n // submit a payload the bound tool never expected.\n if (!field || seen.has(field.name)) return null;\n seen.add(field.name);\n fields.push(field);\n }\n\n return fields;\n};\n\nexport const parseFormSpec = (input: unknown): FormSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n const fields = parseFormFields(input.fields);\n const [submit] = parseUiActions([input.submit]) ?? [];\n if (!title || !fields || !submit) return null;\n\n const spec: FormSpec = { fields, submit, title };\n const description = cleanString(input.description, DESCRIPTION_MAX_CHARS);\n if (description) spec.description = description;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\n// A decision must preserve every word and alternative. Reject oversized text\n// instead of silently changing its meaning; the card handler asks for a retry.\nconst completeString = (value: unknown, maxChars: number) => {\n if (typeof value !== \"string\") return null;\n const text = value.trim();\n\n return text.length > 0 && text.length <= maxChars ? text : null;\n};\n\nconst optionalCompleteString = (value: unknown, maxChars: number) =>\n value === undefined ||\n (typeof value === \"string\" && value.trim().length <= maxChars);\n\nconst parseChoiceOption = (raw: unknown): ChoiceOption | null => {\n if (!isRecord(raw)) return null;\n const id = completeString(raw.id, CARD_ID_MAX_CHARS);\n const label = completeString(raw.label, CHOICE_LABEL_MAX_CHARS);\n if (!id || !label) return null;\n if (!CARD_ID_PATTERN.test(id)) return null;\n if (\n !optionalCompleteString(raw.description, CHOICE_DESCRIPTION_MAX_CHARS) ||\n !optionalCompleteString(raw.badge, BADGE_MAX_CHARS)\n )\n return null;\n\n const option: ChoiceOption = { id, label };\n const description = completeString(\n raw.description,\n CHOICE_DESCRIPTION_MAX_CHARS,\n );\n if (description) option.description = description;\n const badge = completeString(raw.badge, BADGE_MAX_CHARS);\n if (badge) option.badge = badge;\n\n return option;\n};\n\nexport const parseChoiceSpec = (input: unknown): ChoiceSpec | null => {\n if (!isRecord(input)) return null;\n const title = completeString(input.title, CHOICE_TITLE_MAX_CHARS);\n if (!optionalCompleteString(input.description, CHOICE_DESCRIPTION_MAX_CHARS))\n return null;\n if (\n input.cardId !== undefined &&\n (typeof input.cardId !== \"string\" ||\n !CARD_ID_PATTERN.test(input.cardId.trim()))\n )\n return null;\n if (\n !isRecord(input.submit) ||\n !completeString(input.submit.label, ACTION_LABEL_MAX_CHARS)\n )\n return null;\n const [submit] = parseUiActions([input.submit]) ?? [];\n if (!title || !submit) return null;\n if (\n !Array.isArray(input.options) ||\n input.options.length === 0 ||\n input.options.length > CHOICE_MAX_OPTIONS\n )\n return null;\n const options: ChoiceOption[] = [];\n const seen = new Set<string>();\n for (const raw of input.options) {\n const option = parseChoiceOption(raw);\n // One malformed or duplicate option sinks the card — a partial option\n // set misrepresents the decision.\n if (!option || seen.has(option.id)) return null;\n seen.add(option.id);\n options.push(option);\n }\n\n const spec: ChoiceSpec = { options, submit, title };\n const description = completeString(\n input.description,\n CHOICE_DESCRIPTION_MAX_CHARS,\n );\n if (description) spec.description = description;\n if (input.multi === true) spec.multi = true;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nexport const parseConfirmSpec = (input: unknown): ConfirmSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n const consequence = cleanString(\n input.consequence,\n CONFIRM_CONSEQUENCE_MAX_CHARS,\n );\n const confirmLabel = cleanString(input.confirmLabel, ACTION_LABEL_MAX_CHARS);\n const [confirm] = parseUiActions([input.confirm]) ?? [];\n if (!title || !consequence || !confirmLabel || !confirm) return null;\n\n const spec: ConfirmSpec = { confirm, confirmLabel, consequence, title };\n const cancelLabel = cleanString(input.cancelLabel, ACTION_LABEL_MAX_CHARS);\n if (cancelLabel) spec.cancelLabel = cancelLabel;\n if (input.danger === true) spec.danger = true;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\n/** Shared line budget across a diff card's files — mutated as files parse. */\ntype DiffBudget = { remaining: number };\n\nconst parseDiffFile = (raw: unknown, budget: DiffBudget): DiffFile | null => {\n if (!isRecord(raw)) return null;\n const path = cleanString(raw.path, DIFF_PATH_MAX_CHARS);\n if (!path || typeof raw.diff !== \"string\" || raw.diff.trim().length === 0) {\n return null;\n }\n const lines = raw.diff\n .split(/\\r?\\n/)\n .map((line) => line.slice(0, DIFF_LINE_MAX_CHARS));\n const kept = lines.slice(0, Math.max(budget.remaining, 0));\n budget.remaining -= kept.length;\n\n const file: DiffFile = { diff: kept.join(\"\\n\"), path };\n // Size never rejects: over-budget diffs are cut and flagged instead.\n if (raw.truncated === true || kept.length < lines.length) {\n file.truncated = true;\n }\n\n return file;\n};\n\nexport const parseDiffSpec = (input: unknown): DiffSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n const [apply] = parseUiActions([input.apply]) ?? [];\n if (!title || !apply) return null;\n if (!Array.isArray(input.files) || input.files.length === 0) return null;\n const budget: DiffBudget = { remaining: DIFF_MAX_LINES };\n const files: DiffFile[] = [];\n for (const raw of input.files.slice(0, DIFF_MAX_FILES)) {\n const file = parseDiffFile(raw, budget);\n // A malformed file sinks the card — the member would otherwise review\n // (and apply) a change set they can't actually see in full.\n if (!file) return null;\n files.push(file);\n }\n\n const spec: DiffSpec = { apply, files, title };\n const [reject] = parseUiActions([input.reject]) ?? [];\n if (reject) spec.reject = reject;\n const note = cleanString(input.note, DESCRIPTION_MAX_CHARS);\n if (note) spec.note = note;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nconst parsePlanStep = (raw: unknown): PlanStep | null => {\n if (!isRecord(raw)) return null;\n const id = cleanId(raw.id);\n const label = cleanString(raw.label, LABEL_MAX_CHARS);\n const status = PLAN_STEP_STATUSES.find((entry) => entry === raw.status);\n if (!id || !label || !status) return null;\n\n const step: PlanStep = { id, label, status };\n const detail = cleanString(raw.detail, CELL_MAX_CHARS);\n if (detail) step.detail = detail;\n\n return step;\n};\n\nexport const parsePlanSpec = (input: unknown): PlanSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n if (!title) return null;\n if (!Array.isArray(input.steps) || input.steps.length === 0) return null;\n const steps: PlanStep[] = [];\n const seen = new Set<string>();\n for (const raw of input.steps.slice(0, PLAN_MAX_STEPS)) {\n const step = parsePlanStep(raw);\n // Malformed or duplicate step ids sink the card — stable ids are what\n // lets an in-place update line up with the previous render.\n if (!step || seen.has(step.id)) return null;\n seen.add(step.id);\n steps.push(step);\n }\n\n const spec: PlanSpec = { steps, title };\n const note = cleanString(input.note, DESCRIPTION_MAX_CHARS);\n if (note) spec.note = note;\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nconst parseCredentialKey = (raw: unknown): CredentialKey | null => {\n if (!isRecord(raw)) return null;\n const key =\n typeof raw.key === \"string\" && ENV_KEY_PATTERN.test(raw.key)\n ? raw.key\n : null;\n if (!key) return null;\n\n // Only the known display fields survive: any value-like field a model\n // attaches (value, prefill, default…) is dropped here, mirroring the\n // password-prefill drop in parseFormField. Values NEVER ride this card.\n // secret defaults to TRUE — it is normalized explicit so hosts never guess.\n const entry: CredentialKey = { key, secret: raw.secret !== false };\n const label = cleanString(raw.label, LABEL_MAX_CHARS);\n if (label) entry.label = label;\n const docsUrl = cleanString(raw.docsUrl, DOCS_URL_MAX_CHARS);\n if (docsUrl && DOCS_URL_PATTERN.test(docsUrl)) entry.docsUrl = docsUrl;\n if (typeof raw.isSet === \"boolean\") entry.isSet = raw.isSet;\n\n return entry;\n};\n\nexport const parseCredentialSpec = (input: unknown): CredentialSpec | null => {\n if (!isRecord(input)) return null;\n const title = cleanString(input.title, TITLE_MAX_CHARS);\n if (!title) return null;\n if (!Array.isArray(input.keys) || input.keys.length === 0) return null;\n const keys: CredentialKey[] = [];\n const seen = new Set<string>();\n for (const raw of input.keys.slice(0, CREDENTIAL_MAX_KEYS)) {\n const entry = parseCredentialKey(raw);\n // A malformed or duplicate key sinks the card — a partial credential\n // request would leave setup silently incomplete.\n if (!entry || seen.has(entry.key)) return null;\n seen.add(entry.key);\n keys.push(entry);\n }\n\n const spec: CredentialSpec = { keys, title };\n applyCardId(spec, input.cardId);\n\n return spec;\n};\n\nconst SERIES_SCHEMA = {\n properties: {\n name: { description: \"Series name (shown in the legend)\", type: \"string\" },\n values: {\n description: \"One number per label, same order as labels\",\n items: { type: \"number\" },\n type: \"array\",\n },\n },\n required: [\"name\", \"values\"],\n type: \"object\",\n};\n\n/** render_chart — bar / line / donut from data you already have. */\nexport const chartCard: UiCardDefinition<ChartSpec> = {\n ack: \"(chart rendered inline — do not repeat its numbers as text; add at most a 1-2 line takeaway)\",\n description:\n \"Render a real chart inline in the chat from data you have (tool results, the conversation). Use whenever numbers COMPARE or TREND: revenue by partner (bar), pipeline over time (line), share of a whole (donut). Rules: bar/line take up to 8 series aligned to the same labels; donut takes exactly ONE series of non-negative values (one slice per label). Prefer a chart over a wall of numbers, but never invent data for it.\",\n inputSchema: {\n properties: {\n actions: ACTIONS_SCHEMA,\n cardId: CARD_ID_SCHEMA,\n labels: {\n description:\n \"Category labels — x-axis for bar/line, slice names for donut (max 24)\",\n items: { type: \"string\" },\n type: \"array\",\n },\n series: {\n description: \"Data series (max 8; donut exactly 1)\",\n items: SERIES_SCHEMA,\n type: \"array\",\n },\n title: { description: \"Short chart title\", type: \"string\" },\n type: { enum: [...CHART_TYPES], type: \"string\" },\n unitPrefix: {\n description: 'Prepended to values, e.g. \"$\"',\n type: \"string\",\n },\n unitSuffix: {\n description: 'Appended to values, e.g. \"%\"',\n type: \"string\",\n },\n },\n required: [\"type\", \"title\", \"labels\", \"series\"],\n type: \"object\",\n },\n name: \"render_chart\",\n parse: parseChartSpec,\n};\n\n/** render_table — a compact data table. */\nexport const tableCard: UiCardDefinition<TableSpec> = {\n ack: \"(table rendered inline — do not repeat its rows as text)\",\n description:\n \"Render a compact data table inline in the chat (max 8 columns × 30 rows). Use for structured comparisons the member will scan — matches side by side, deal terms, task lists with dates. All cells are strings; format numbers yourself.\",\n inputSchema: {\n properties: {\n actions: ACTIONS_SCHEMA,\n cardId: CARD_ID_SCHEMA,\n columns: {\n description: \"Column headers (max 8)\",\n items: { type: \"string\" },\n type: \"array\",\n },\n rows: {\n description: \"Rows of cells, each aligned to columns (max 30)\",\n items: { items: { type: \"string\" }, type: \"array\" },\n type: \"array\",\n },\n title: { description: \"Optional table title\", type: \"string\" },\n },\n required: [\"columns\", \"rows\"],\n type: \"object\",\n },\n name: \"render_table\",\n parse: parseTableSpec,\n};\n\n/** render_stat_tiles — a row of headline numbers. */\nexport const statTilesCard: UiCardDefinition<StatTilesSpec> = {\n ack: \"(stat tiles rendered inline — do not repeat the numbers as text)\",\n description:\n \"Render a row of headline stat tiles inline in the chat (max 6): a label, a big value, and an optional delta with direction. Use for the 2-4 numbers that ARE the answer — total attributed revenue, pipeline value, credits remaining — instead of burying them in prose.\",\n inputSchema: {\n properties: {\n actions: ACTIONS_SCHEMA,\n cardId: CARD_ID_SCHEMA,\n tiles: {\n description: \"The tiles (max 6)\",\n items: {\n properties: {\n delta: {\n description: 'Optional change note, e.g. \"+12% vs last month\"',\n type: \"string\",\n },\n deltaDirection: { enum: [\"up\", \"down\", \"flat\"], type: \"string\" },\n label: { description: \"What the number is\", type: \"string\" },\n value: {\n description: 'The formatted headline value, e.g. \"$42,300\"',\n type: \"string\",\n },\n },\n required: [\"label\", \"value\"],\n type: \"object\",\n },\n type: \"array\",\n },\n },\n required: [\"tiles\"],\n type: \"object\",\n },\n name: \"render_stat_tiles\",\n parse: parseStatTilesSpec,\n};\n\n/** render_form — collect structured inputs, then run a bound tool on submit. */\nexport const formCard: UiCardDefinition<FormSpec> = {\n ack: \"(form rendered inline — the member fills and submits it, which runs the bound tool with their values. Do NOT re-ask for these values in text; wait for the submission)\",\n description:\n \"Render an inline form when you need SEVERAL structured inputs from the member before running a tool (task details, scheduling constraints, outreach parameters) — one form beats asking field-by-field in prose. Bind submit to one of YOUR tools with any values you already know pre-filled in submit.input; on submit the member's field values are merged into submit.input under each field's name and the tool runs exactly like a clicked action button. Field names must therefore be the tool's actual input property names. Never use it for values you could look up yourself. Use type \\\"password\\\" for sensitive values (API keys, secrets, credentials) — the host renders it masked and never pre-fill a value for it.\",\n inputSchema: {\n properties: {\n cardId: CARD_ID_SCHEMA,\n description: {\n description: \"Optional one-line helper text under the title\",\n type: \"string\",\n },\n fields: {\n description:\n \"The inputs to collect (max 8). Each field's name must be a real input property of the submit tool.\",\n items: {\n properties: {\n label: { description: \"Human label for the field\", type: \"string\" },\n name: {\n description:\n 'Tool-input property name the value submits under, e.g. \"title\"',\n type: \"string\",\n },\n options: {\n description: \"Choices — required for select fields (max 12)\",\n items: { type: \"string\" },\n type: \"array\",\n },\n valueType: {\n enum: [\"string\", \"number\", \"integer\", \"boolean\"],\n type: \"string\",\n description:\n \"Submitted scalar type, especially integer for numeric select options\",\n },\n placeholder: { type: \"string\" },\n required: { type: \"boolean\" },\n type: { enum: [...FORM_FIELD_TYPES], type: \"string\" },\n value: {\n description: 'Prefill value (checkbox: \"true\"/\"false\")',\n type: \"string\",\n },\n },\n required: [\"name\", \"label\", \"type\"],\n type: \"object\",\n },\n type: \"array\",\n },\n submit: {\n description:\n \"The submit binding: label for the button, the tool to run, and any input values you already resolved (real ids, never placeholders)\",\n properties: {\n input: {\n description:\n \"Pre-resolved input values; field values are merged in on top under their field names\",\n type: \"object\",\n },\n label: {\n description: 'Button label, e.g. \"Create task\"',\n type: \"string\",\n },\n tool: { description: \"The tool name to invoke\", type: \"string\" },\n },\n required: [\"label\", \"tool\", \"input\"],\n type: \"object\",\n },\n title: { description: \"Short form title\", type: \"string\" },\n },\n required: [\"title\", \"fields\", \"submit\"],\n type: \"object\",\n },\n name: \"render_form\",\n parse: parseFormSpec,\n};\n\n/** render_choice — a structured decision instead of \"reply 1 or 2\". */\nexport const choiceCard: UiCardDefinition<ChoiceSpec> = {\n ack: \"(choice card rendered inline — the member picks an option, which runs the bound tool with their selection merged in. Do not re-ask in text; wait for the selection)\",\n description:\n \"Render a structured choice card whenever the member must pick between concrete options (which plan, which duplicate record to keep, which time slot) — never ask them to 'reply 1 or 2' in prose. Give every option a stable id; on selection the host merges { choice: id } (or { choices: [ids] } when multi is true) into submit.input and invokes submit.tool exactly like a clicked action button, so put everything you already resolved into submit.input. Max 8 options. Use complete, concise labels; put supporting detail in descriptions. Titles and labels allow 600 characters, descriptions 2000. Inputs over these limits are rejected, never truncated.\",\n inputSchema: {\n properties: {\n cardId: {\n ...CARD_ID_SCHEMA,\n maxLength: CARD_ID_MAX_CHARS,\n pattern: CARD_ID_PATTERN.source,\n },\n description: {\n description: \"Optional helper text under the title\",\n maxLength: CHOICE_DESCRIPTION_MAX_CHARS,\n type: \"string\",\n },\n multi: {\n description:\n \"Allow selecting several options — submits { choices: [ids] } instead of { choice: id }\",\n type: \"boolean\",\n },\n options: {\n description: \"The options to choose between (max 8)\",\n items: {\n properties: {\n badge: {\n description:\n 'Tiny annotation beside the label, e.g. \"recommended\"',\n maxLength: BADGE_MAX_CHARS,\n type: \"string\",\n },\n description: {\n description: \"Supporting explanation of the option\",\n maxLength: CHOICE_DESCRIPTION_MAX_CHARS,\n type: \"string\",\n },\n id: {\n description:\n \"Stable option id merged into submit.input on selection (letters/digits/_/-)\",\n maxLength: CARD_ID_MAX_CHARS,\n pattern: CARD_ID_PATTERN.source,\n type: \"string\",\n },\n label: {\n description: \"The complete option, without cutting off words\",\n maxLength: CHOICE_LABEL_MAX_CHARS,\n minLength: 1,\n type: \"string\",\n },\n },\n required: [\"id\", \"label\"],\n type: \"object\",\n },\n maxItems: CHOICE_MAX_OPTIONS,\n minItems: 1,\n type: \"array\",\n },\n submit: {\n ...ACTION_BINDING_SCHEMA,\n properties: {\n ...ACTION_BINDING_SCHEMA.properties,\n label: {\n ...ACTION_BINDING_SCHEMA.properties.label,\n maxLength: ACTION_LABEL_MAX_CHARS,\n minLength: 1,\n },\n },\n description:\n \"The submit binding: the tool to run once a choice is made. The selection is merged into input as { choice: id } (or { choices: [ids] })\",\n },\n title: {\n description: \"The complete decision being made\",\n maxLength: CHOICE_TITLE_MAX_CHARS,\n minLength: 1,\n type: \"string\",\n },\n },\n required: [\"title\", \"options\", \"submit\"],\n type: \"object\",\n },\n name: \"render_choice\",\n parse: parseChoiceSpec,\n};\n\n/** render_confirm — explicit consent for destructive/irreversible actions. */\nexport const confirmCard: UiCardDefinition<ConfirmSpec> = {\n ack: \"(confirmation card rendered inline — NOTHING has run yet; the action only runs if the member clicks confirm. Do not claim or assume it happened; wait for the outcome)\",\n description:\n \"Render an explicit confirmation card before any destructive or irreversible action (deleting data, sending money or bulk email, cancelling a subscription). State the consequence in plain language — exactly what will happen. TRUST CONTRACT: the host invokes confirm ONLY on a real member click, never on your say-so; hosts SHOULD mint an unforgeable server-side confirmation token at click time and require it on the downstream action, so a confirmation can never be fabricated in text. Set danger: true for destructive styling. Rendering this card is never itself consent.\",\n inputSchema: {\n properties: {\n cancelLabel: {\n description: 'Optional dismiss label, e.g. \"Keep project\"',\n type: \"string\",\n },\n cardId: CARD_ID_SCHEMA,\n confirm: {\n ...ACTION_BINDING_SCHEMA,\n description:\n \"The action to run ONLY when the member clicks confirm (fully-resolved input, real ids)\",\n },\n confirmLabel: {\n description: 'The confirm button label, e.g. \"Delete project\"',\n type: \"string\",\n },\n consequence: {\n description:\n \"What will happen if confirmed, in plain language (max 500 chars)\",\n type: \"string\",\n },\n danger: {\n description: \"Render destructive (red) styling\",\n type: \"boolean\",\n },\n title: { description: \"Short question being confirmed\", type: \"string\" },\n },\n required: [\"title\", \"consequence\", \"confirmLabel\", \"confirm\"],\n type: \"object\",\n },\n name: \"render_confirm\",\n parse: parseConfirmSpec,\n};\n\n/** render_diff — proposed file changes for review before applying. */\nexport const diffCard: UiCardDefinition<DiffSpec> = {\n ack: \"(diff card rendered inline — the member reviews the changes and clicks apply or reject. Do not restate the diff in text and do not assume it was applied; wait for their decision)\",\n description:\n \"Render proposed file changes as reviewable unified diffs before applying them (max 6 files and 400 diff lines total — oversized diffs are truncated for display with truncated: true, never rejected). The diffs are DISPLAY data: the host renders the +/- coloring and nothing executes from the text. Bind apply (and optionally reject) to YOUR tools with fully-resolved input; hosts SHOULD route apply through a click-minted server-side token exactly like a confirmation card, because applying changes is destructive.\",\n inputSchema: {\n properties: {\n apply: {\n ...ACTION_BINDING_SCHEMA,\n description:\n \"The action that applies the changes when the member clicks it\",\n },\n cardId: CARD_ID_SCHEMA,\n files: {\n description: \"The changed files (max 6, 400 diff lines total)\",\n items: {\n properties: {\n diff: {\n description: \"Unified diff text for this file (display only)\",\n type: \"string\",\n },\n path: { description: \"File path being changed\", type: \"string\" },\n truncated: {\n description: \"Set true if you already cut the diff for size\",\n type: \"boolean\",\n },\n },\n required: [\"path\", \"diff\"],\n type: \"object\",\n },\n type: \"array\",\n },\n note: {\n description: \"Optional one-line note under the diffs\",\n type: \"string\",\n },\n reject: {\n ...ACTION_BINDING_SCHEMA,\n description: \"Optional action to run when the member rejects\",\n },\n title: { description: \"What the change set does\", type: \"string\" },\n },\n required: [\"title\", \"files\", \"apply\"],\n type: \"object\",\n },\n name: \"render_diff\",\n parse: parseDiffSpec,\n};\n\n/** render_plan — a live multi-step plan, updated in place via cardId. */\nexport const planCard: UiCardDefinition<PlanSpec> = {\n ack: \"(plan rendered inline — as you work, re-emit render_plan with the SAME cardId and updated step statuses instead of narrating progress; do not restate the steps as text)\",\n description:\n \"Render a live multi-step plan card (max 12 steps) when you start multi-step work. Display-only — it has no buttons. Set a cardId and give every step a stable id, then as you progress RE-EMIT this card with the SAME cardId and updated step statuses (pending / active / done / error): the host replaces the earlier render in place, so the member sees one live plan instead of a stack of copies.\",\n inputSchema: {\n properties: {\n cardId: CARD_ID_SCHEMA,\n note: {\n description: \"Optional one-line note under the steps\",\n type: \"string\",\n },\n steps: {\n description: \"The plan steps in order (max 12)\",\n items: {\n properties: {\n detail: {\n description: \"One-line progress or error note under the label\",\n type: \"string\",\n },\n id: {\n description:\n \"Stable step id — keep it identical across re-emits (letters/digits/_/-)\",\n type: \"string\",\n },\n label: { description: \"What this step does\", type: \"string\" },\n status: { enum: [...PLAN_STEP_STATUSES], type: \"string\" },\n },\n required: [\"id\", \"label\", \"status\"],\n type: \"object\",\n },\n type: \"array\",\n },\n title: { description: \"What the plan accomplishes\", type: \"string\" },\n },\n required: [\"title\", \"steps\"],\n type: \"object\",\n },\n name: \"render_plan\",\n parse: parsePlanSpec,\n};\n\n/** request_credentials — ask for env values WITHOUT a through-loop submit. */\nexport const credentialCard: UiCardDefinition<CredentialSpec> = {\n ack: \"(credential request rendered inline — the member enters the values in the host UI and they are stored outside this conversation; you will receive a message naming which keys were set, never the values. Do not ask for the values in text)\",\n description:\n \"Render a credential-request card when setup needs environment values from the member (API keys, secrets, connection strings) — max 8 keys, each an ENV_STYLE name with an optional label and docs link. This card deliberately has NO submit binding and collects NOTHING through you: the host UI gathers the values and stores them outside the model loop (its own .env or secret store), then sends a continuation message naming WHICH keys were set — never the values. Never ask for secret values in plain text, and never attach values to this card (any value-like field is dropped).\",\n inputSchema: {\n properties: {\n cardId: CARD_ID_SCHEMA,\n keys: {\n description: \"The environment keys to request (max 8)\",\n items: {\n properties: {\n docsUrl: {\n description:\n \"Where to obtain the credential (provider dashboard URL)\",\n type: \"string\",\n },\n isSet: {\n description:\n \"Already configured on the host — rendered as set, with a replace affordance\",\n type: \"boolean\",\n },\n key: {\n description:\n 'Environment variable name, e.g. \"STRIPE_SECRET_KEY\"',\n type: \"string\",\n },\n label: {\n description: 'Human label, e.g. \"Stripe secret key\"',\n type: \"string\",\n },\n secret: {\n description:\n \"Mask and never echo (default true — only set false for genuinely public values)\",\n type: \"boolean\",\n },\n },\n required: [\"key\"],\n type: \"object\",\n },\n type: \"array\",\n },\n title: {\n description: 'What the credentials unlock, e.g. \"Connect Stripe\"',\n type: \"string\",\n },\n },\n required: [\"title\", \"keys\"],\n type: \"object\",\n },\n name: \"request_credentials\",\n parse: parseCredentialSpec,\n};\n\n/** The built-in catalog, ready for createUiCards. */\nexport const BUILTIN_UI_CARDS = [\n chartCard,\n tableCard,\n statTilesCard,\n formCard,\n choiceCard,\n confirmCard,\n diffCard,\n planCard,\n credentialCard,\n] as const;\n",
24
24
  "import type { ChartSpec } from \"./catalog\";\n\n/**\n * Dependency-free default chart renderer: a validated ChartSpec in, a\n * self-contained SVG string out. Pure — no DOM — so it runs server-side or in\n * any framework component (call it client-side with the viewer's mode so dark\n * themes get the dark-stepped palette, not an automatic flip).\n *\n * Design method: thin marks with rounded data-ends, 2px surface gaps between\n * adjacent fills, recessive horizontal grid, a legend for ≥2 series plus\n * direct labels, all text in text tokens (never series colors), native <title>\n * hover tooltips per mark. The default palette is the validated reference set\n * (worst adjacent CVD ΔE 24.2 light / 10.3 dark) — override `palette` with\n * your brand's VALIDATED hues, in their fixed slot order.\n */\n\nexport type UiSvgTheme = {\n /** Categorical hues in fixed slot order (series 1..n). */\n palette: string[];\n surface: string;\n textPrimary: string;\n textSecondary: string;\n grid: string;\n};\n\nexport const LIGHT_UI_THEME: UiSvgTheme = {\n grid: \"#e4e4e0\",\n palette: [\n \"#2a78d6\",\n \"#1baf7a\",\n \"#eda100\",\n \"#008300\",\n \"#4a3aa7\",\n \"#e34948\",\n \"#e87ba4\",\n \"#eb6834\",\n ],\n surface: \"#fcfcfb\",\n textPrimary: \"#0b0b0b\",\n textSecondary: \"#52514e\",\n};\n\nexport const DARK_UI_THEME: UiSvgTheme = {\n grid: \"#333331\",\n palette: [\n \"#3987e5\",\n \"#199e70\",\n \"#c98500\",\n \"#008300\",\n \"#9085e9\",\n \"#e66767\",\n \"#d55181\",\n \"#d95926\",\n ],\n surface: \"#1a1a19\",\n textPrimary: \"#ffffff\",\n textSecondary: \"#c3c2b7\",\n};\n\nexport type RenderChartSvgOptions = {\n mode?: \"light\" | \"dark\";\n /** Override any theme slot (e.g. your brand palette / chat-bubble surface). */\n theme?: Partial<UiSvgTheme>;\n width?: number;\n height?: number;\n};\n\nconst WIDTH = 640;\nconst HEIGHT = 340;\nconst MARGIN = { bottom: 42, left: 56, right: 16, top: 64 };\nconst BAR_END_RADIUS = 4;\nconst MARK_GAP = 2;\nconst LINE_WIDTH = 2;\nconst MAX_DIRECT_LABELED_SERIES = 4;\nconst TICK_TARGET = 4;\nconst FONT =\n \"system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif\";\n\nconst escapeXml = (value: string) =>\n value\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&apos;\");\n\nconst formatValue = (value: number, spec: ChartSpec) => {\n // Sign leads the unit (\"-$4k\", not \"$-4000\").\n const sign = value < 0 ? \"-\" : \"\";\n const abs = Math.abs(value);\n const compact =\n abs >= 1_000_000\n ? `${(abs / 1_000_000).toFixed(1).replace(/\\.0$/, \"\")}M`\n : abs >= 10_000\n ? `${(abs / 1_000).toFixed(1).replace(/\\.0$/, \"\")}k`\n : abs >= 1_000\n ? abs.toLocaleString(\"en-US\")\n : `${Number.isInteger(abs) ? abs : abs.toFixed(1)}`;\n\n return `${sign}${spec.unitPrefix ?? \"\"}${compact}${spec.unitSuffix ?? \"\"}`;\n};\n\n// \"Nice\" tick step: 1/2/5 × 10^n covering the domain in ~TICK_TARGET steps.\nconst niceTicks = (min: number, max: number) => {\n const span = max - min || 1;\n const rough = span / TICK_TARGET;\n const power = Math.pow(10, Math.floor(Math.log10(rough)));\n const candidates = [1, 2, 5, 10].map((step) => step * power);\n const step =\n candidates.find((candidate) => candidate >= rough) ??\n candidates[candidates.length - 1] ??\n rough;\n const start = Math.floor(min / step) * step;\n const ticks: number[] = [];\n for (let tick = start; tick <= max + step / 2; tick += step) {\n ticks.push(Math.abs(tick) < step / 1e6 ? 0 : tick);\n }\n\n return ticks;\n};\n\ntype Frame = {\n theme: UiSvgTheme;\n plotLeft: number;\n plotRight: number;\n plotTop: number;\n plotBottom: number;\n};\n\nconst headerSvg = (spec: ChartSpec, frame: Frame) => {\n const { theme } = frame;\n const parts = [\n `<text x=\"${frame.plotLeft}\" y=\"24\" fill=\"${theme.textPrimary}\" font-size=\"15\" font-weight=\"600\">${escapeXml(spec.title)}</text>`,\n ];\n // Legend only when identity needs it: 2+ series (a single series is named\n // by the title). Swatch + name in text ink, never colored text.\n if (spec.series.length > 1) {\n let x = frame.plotLeft;\n const swatches = spec.series.map((series, index) => {\n const color = theme.palette[index % theme.palette.length];\n const label = escapeXml(series.name);\n const item = `<rect x=\"${x}\" y=\"38\" width=\"10\" height=\"10\" rx=\"2\" fill=\"${color}\"/><text x=\"${x + 14}\" y=\"47\" fill=\"${theme.textSecondary}\" font-size=\"11\">${label}</text>`;\n x += 14 + series.name.length * 6 + 18;\n\n return item;\n });\n parts.push(...swatches);\n }\n\n return parts.join(\"\");\n};\n\nconst gridSvg = (\n ticks: number[],\n yFor: (value: number) => number,\n spec: ChartSpec,\n frame: Frame,\n) =>\n ticks\n .map((tick) => {\n const y = yFor(tick);\n const isZero = tick === 0;\n\n return `<line x1=\"${frame.plotLeft}\" y1=\"${y}\" x2=\"${frame.plotRight}\" y2=\"${y}\" stroke=\"${isZero ? frame.theme.textSecondary : frame.theme.grid}\" stroke-width=\"1\"/><text x=\"${frame.plotLeft - 8}\" y=\"${y + 3.5}\" fill=\"${frame.theme.textSecondary}\" font-size=\"10\" text-anchor=\"end\">${escapeXml(formatValue(tick, spec))}</text>`;\n })\n .join(\"\");\n\nconst xLabelsSvg = (\n spec: ChartSpec,\n xCenter: (index: number) => number,\n frame: Frame,\n) => {\n // Thin out crowded label axes instead of colliding.\n const every = Math.ceil(spec.labels.length / 12);\n\n return spec.labels\n .map((label, index) => {\n if (index % every !== 0) return \"\";\n const short = label.length > 12 ? `${label.slice(0, 11)}…` : label;\n\n return `<text x=\"${xCenter(index)}\" y=\"${frame.plotBottom + 18}\" fill=\"${frame.theme.textSecondary}\" font-size=\"10\" text-anchor=\"middle\">${escapeXml(short)}</text>`;\n })\n .join(\"\");\n};\n\n// Bar with a rounded TOP data-end anchored to the baseline (flipped when the\n// value is negative). Radius collapses on very short bars.\nconst barPath = (\n x: number,\n yValue: number,\n yBase: number,\n width: number,\n): string => {\n const up = yValue <= yBase;\n const top = Math.min(yValue, yBase);\n const bottom = Math.max(yValue, yBase);\n const radius = Math.min(BAR_END_RADIUS, width / 2, bottom - top);\n if (radius <= 0) return \"\";\n if (up) {\n return `M${x},${bottom} L${x},${top + radius} Q${x},${top} ${x + radius},${top} L${x + width - radius},${top} Q${x + width},${top} ${x + width},${top + radius} L${x + width},${bottom} Z`;\n }\n\n return `M${x},${top} L${x},${bottom - radius} Q${x},${bottom} ${x + radius},${bottom} L${x + width - radius},${bottom} Q${x + width},${bottom} ${x + width},${bottom - radius} L${x + width},${top} Z`;\n};\n\nconst valueDomain = (spec: ChartSpec) => {\n const all = spec.series.flatMap((series) => series.values);\n const min = Math.min(0, ...all);\n const max = Math.max(0, ...all);\n\n return max === min ? { max: min + 1, min } : { max, min };\n};\n\nconst cartesianSvg = (spec: ChartSpec, frame: Frame) => {\n const { theme } = frame;\n const domain = valueDomain(spec);\n const ticks = niceTicks(domain.min, domain.max);\n const lo = Math.min(domain.min, ticks[0] ?? domain.min);\n const hi = Math.max(domain.max, ticks[ticks.length - 1] ?? domain.max);\n const yFor = (value: number) =>\n frame.plotBottom -\n ((value - lo) / (hi - lo)) * (frame.plotBottom - frame.plotTop);\n const slot = (frame.plotRight - frame.plotLeft) / spec.labels.length;\n const xCenter = (index: number) => frame.plotLeft + slot * (index + 0.5);\n\n const parts: string[] = [gridSvg(ticks, yFor, spec, frame)];\n\n if (spec.type === \"bar\") {\n const group = Math.min(slot * 0.72, 64);\n const barWidth = Math.max(\n 2,\n (group - MARK_GAP * (spec.series.length - 1)) / spec.series.length,\n );\n const yBase = yFor(Math.max(lo, Math.min(hi, 0)));\n spec.series.forEach((series, seriesIndex) => {\n const color = theme.palette[seriesIndex % theme.palette.length];\n series.values.forEach((value, index) => {\n const x =\n xCenter(index) - group / 2 + seriesIndex * (barWidth + MARK_GAP);\n const tooltip = `${escapeXml(series.name)} · ${escapeXml(spec.labels[index] ?? \"\")}: ${escapeXml(formatValue(value, spec))}`;\n\n parts.push(\n `<path d=\"${barPath(x, yFor(value), yBase, barWidth)}\" fill=\"${color}\"><title>${tooltip}</title></path>`,\n );\n });\n });\n // Selective direct labels: single series with few bars gets its values.\n const [only] = spec.series;\n if (spec.series.length === 1 && only && spec.labels.length <= 8) {\n only.values.forEach((value, index) => {\n const above = value >= 0;\n parts.push(\n `<text x=\"${xCenter(index)}\" y=\"${yFor(value) + (above ? -6 : 14)}\" fill=\"${theme.textSecondary}\" font-size=\"10\" text-anchor=\"middle\">${escapeXml(formatValue(value, spec))}</text>`,\n );\n });\n }\n } else {\n spec.series.forEach((series, seriesIndex) => {\n const color = theme.palette[seriesIndex % theme.palette.length];\n const points = series.values.map(\n (value, index) => `${xCenter(index)},${yFor(value)}`,\n );\n parts.push(\n `<polyline points=\"${points.join(\" \")}\" fill=\"none\" stroke=\"${color}\" stroke-width=\"${LINE_WIDTH}\" stroke-linejoin=\"round\" stroke-linecap=\"round\"/>`,\n );\n series.values.forEach((value, index) => {\n const tooltip = `${escapeXml(series.name)} · ${escapeXml(spec.labels[index] ?? \"\")}: ${escapeXml(formatValue(value, spec))}`;\n // ≥8px hover targets with a 2px surface ring where marks may overlap.\n parts.push(\n `<circle cx=\"${xCenter(index)}\" cy=\"${yFor(value)}\" r=\"4\" fill=\"${color}\" stroke=\"${theme.surface}\" stroke-width=\"2\"><title>${tooltip}</title></circle>`,\n );\n });\n // Direct series label at the line's end for small multiples.\n const last = series.values[series.values.length - 1];\n if (\n spec.series.length <= MAX_DIRECT_LABELED_SERIES &&\n last !== undefined\n ) {\n parts.push(\n `<text x=\"${frame.plotRight + 4}\" y=\"${yFor(last) + 3.5}\" fill=\"${theme.textSecondary}\" font-size=\"10\">${escapeXml(series.name)}</text>`,\n );\n }\n });\n }\n parts.push(xLabelsSvg(spec, xCenter, frame));\n\n return parts.join(\"\");\n};\n\nconst donutSvg = (spec: ChartSpec, frame: Frame) => {\n const { theme } = frame;\n const [series] = spec.series;\n if (!series) return \"\";\n const total = series.values.reduce((sum, value) => sum + value, 0);\n if (total <= 0) return \"\";\n const cx = (frame.plotLeft + frame.plotRight) / 2;\n const cy = (frame.plotTop + frame.plotBottom) / 2 + 4;\n const radius = Math.min(\n (frame.plotBottom - frame.plotTop) / 2 - 4,\n (frame.plotRight - frame.plotLeft) / 4,\n );\n const ring = Math.max(14, radius * 0.34);\n const mid = radius - ring / 2;\n // 2px surface gap between segments, expressed as an angle at mid-radius.\n const gapAngle = MARK_GAP / mid;\n\n const parts: string[] = [];\n let angle = -Math.PI / 2;\n series.values.forEach((value, index) => {\n const sweep = (value / total) * Math.PI * 2;\n const start = angle + gapAngle / 2;\n const end = angle + sweep - gapAngle / 2;\n angle += sweep;\n if (end <= start) return;\n const large = end - start > Math.PI ? 1 : 0;\n const x1 = cx + mid * Math.cos(start);\n const y1 = cy + mid * Math.sin(start);\n const x2 = cx + mid * Math.cos(end);\n const y2 = cy + mid * Math.sin(end);\n const color = theme.palette[index % theme.palette.length];\n const share = `${Math.round((value / total) * 100)}%`;\n const tooltip = `${escapeXml(spec.labels[index] ?? \"\")}: ${escapeXml(formatValue(value, spec))} (${share})`;\n parts.push(\n `<path d=\"M${x1},${y1} A${mid},${mid} 0 ${large} 1 ${x2},${y2}\" fill=\"none\" stroke=\"${color}\" stroke-width=\"${ring}\"><title>${tooltip}</title></path>`,\n );\n });\n parts.push(\n `<text x=\"${cx}\" y=\"${cy + 5}\" fill=\"${theme.textPrimary}\" font-size=\"16\" font-weight=\"600\" text-anchor=\"middle\">${escapeXml(formatValue(total, spec))}</text>`,\n );\n // Slice identity lives in the legend row for donuts.\n let x = frame.plotLeft;\n spec.labels.forEach((label, index) => {\n const color = theme.palette[index % theme.palette.length];\n parts.push(\n `<rect x=\"${x}\" y=\"38\" width=\"10\" height=\"10\" rx=\"2\" fill=\"${color}\"/><text x=\"${x + 14}\" y=\"47\" fill=\"${theme.textSecondary}\" font-size=\"11\">${escapeXml(label)}</text>`,\n );\n x += 14 + label.length * 6 + 18;\n });\n\n return parts.join(\"\");\n};\n\n/** Render a validated ChartSpec to a self-contained SVG string. */\nexport const renderChartSvg = (\n spec: ChartSpec,\n options: RenderChartSvgOptions = {},\n) => {\n const base = options.mode === \"dark\" ? DARK_UI_THEME : LIGHT_UI_THEME;\n const theme: UiSvgTheme = { ...base, ...options.theme };\n const width = options.width ?? WIDTH;\n const height = options.height ?? HEIGHT;\n const frame: Frame = {\n plotBottom: height - MARGIN.bottom,\n plotLeft: MARGIN.left,\n plotRight:\n width -\n MARGIN.right -\n // Room for end-of-line direct labels.\n (spec.type === \"line\" ? 64 : 0),\n plotTop: MARGIN.top,\n theme,\n };\n\n const body =\n spec.type === \"donut\" ? donutSvg(spec, frame) : cartesianSvg(spec, frame);\n\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\" role=\"img\" aria-label=\"${escapeXml(spec.title)}\" font-family=\"${FONT}\"><rect width=\"${width}\" height=\"${height}\" fill=\"${theme.surface}\" rx=\"12\"/>${spec.type === \"donut\" ? headerSvg({ ...spec, series: [] }, frame) : headerSvg(spec, frame)}${body}</svg>`;\n};\n",
25
+ "import type { FormSpec } from \"./catalog\";\nexport type FormSubmission =\n | { ok: true; input: Record<string, unknown> }\n | { ok: false; errors: Record<string, string> };\n/** Convert typed fields once for every renderer. Final tool-schema validation\n * and authorization remain the host's responsibility. Never include secrets in errors. */\nexport const prepareFormSubmission = (\n form: FormSpec,\n values: Record<string, unknown>,\n): FormSubmission => {\n const input: Record<string, unknown> = { ...form.submit.input };\n const errors: Record<string, string> = {};\n for (const field of form.fields) {\n if ([\"__proto__\", \"constructor\", \"prototype\"].includes(field.name)) {\n errors.form = \"Invalid field name\";\n continue;\n }\n const raw = values[field.name];\n if (\n raw === undefined ||\n raw === null ||\n (typeof raw === \"string\" && !raw.trim())\n ) {\n if (field.required) errors[field.name] = \"This field is required\";\n continue;\n }\n if (field.type === \"select\" && !field.options?.includes(String(raw))) {\n errors[field.name] = \"Choose one of the available options\";\n continue;\n }\n const type =\n field.valueType ??\n (field.type === \"number\"\n ? \"number\"\n : field.type === \"checkbox\"\n ? \"boolean\"\n : \"string\");\n let value: unknown = raw;\n if (type === \"number\" || type === \"integer\") {\n value =\n typeof raw === \"number\"\n ? raw\n : typeof raw === \"string\" &&\n /^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?$/iu.test(raw.trim())\n ? Number(raw)\n : NaN;\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n (type === \"integer\" && !Number.isSafeInteger(value))\n ) {\n errors[field.name] =\n type === \"integer\" ? \"Enter a whole number\" : \"Enter a number\";\n continue;\n }\n } else if (type === \"boolean\") {\n if (![true, false, \"true\", \"false\"].includes(raw as boolean | string)) {\n errors[field.name] = \"Choose yes or no\";\n continue;\n }\n value = raw === true || raw === \"true\";\n if (field.type === \"checkbox\" && field.required && !value) {\n errors[field.name] = \"This field is required\";\n continue;\n }\n } else {\n if (typeof raw !== \"string\") {\n errors[field.name] = \"Enter text\";\n continue;\n }\n value = field.type === \"password\" ? raw : raw.trim();\n }\n input[field.name] = value;\n }\n return Object.keys(errors).length\n ? { ok: false, errors }\n : { ok: true, input };\n};\n",
26
+ "/** Framework-neutral state for one durable task. Accounting belongs in billing,\n * not the normal progress card. Hosts derive actions from trusted saved state. */\nexport type BackgroundWorkCard = {\n workId: string;\n title: string;\n status:\n | \"preparing\"\n | \"running\"\n | \"paused\"\n | \"completed\"\n | \"failed\"\n | \"unknown\";\n completedSteps: number;\n totalSteps: number;\n pauseReason?: \"funding\" | \"policy\";\n fundingConfirmed?: boolean;\n hasResults: boolean;\n};\nexport const backgroundWorkNextAction = (work: BackgroundWorkCard) => {\n if (\n !work.workId ||\n !Number.isSafeInteger(work.totalSteps) ||\n work.totalSteps < 1 ||\n !Number.isSafeInteger(work.completedSteps) ||\n work.completedSteps < 0 ||\n work.completedSteps > work.totalSteps\n )\n throw new Error(\"Invalid background work progress\");\n if (work.status === \"completed\")\n return { kind: \"view_results\", label: \"View results\" } as const;\n if (work.status === \"paused\" && work.pauseReason === \"funding\")\n return work.fundingConfirmed\n ? ({ kind: \"continue\", label: \"Continue research\" } as const)\n : ({ kind: \"top_up\", label: \"Add credits\" } as const);\n if (work.status === \"unknown\")\n return { kind: \"check_status\", label: \"Check status\" } as const;\n if (work.hasResults)\n return { kind: \"view_results\", label: \"View saved results\" } as const;\n return { kind: \"check_status\", label: \"Check status\" } as const;\n};\n",
25
27
  "import type {\n AIConversation,\n AIMessage,\n AIProviderMessage,\n} from \"../../types/ai\";\nimport { generateId } from \"./protocol\";\n\nconst NOT_FOUND = -1;\nconst TITLE_MAX_LENGTH = 80;\n\nexport const createConversationManager = () => {\n const conversations = new Map<string, AIConversation>();\n\n const getOrCreate = (conversationId?: string) => {\n const id = conversationId ?? generateId();\n let conversation = conversations.get(id);\n\n if (!conversation) {\n conversation = { createdAt: Date.now(), id, messages: [] };\n conversations.set(id, conversation);\n }\n\n return conversation;\n };\n\n const appendMessage = (conversationId: string, message: AIMessage) => {\n const conversation = getOrCreate(conversationId);\n conversation.messages.push(message);\n conversation.lastMessageAt = Date.now();\n\n if (!conversation.title && message.role === \"user\") {\n conversation.title = message.content.slice(0, TITLE_MAX_LENGTH);\n }\n };\n\n const fork = (\n fromMessageId: string,\n sourceConversationId: string,\n mode: \"append\" | \"replace\",\n ) => {\n const source = conversations.get(sourceConversationId);\n\n if (!source) {\n return null;\n }\n\n const cutoffIndex = source.messages.findIndex(\n (msg) => msg.id === fromMessageId,\n );\n\n if (cutoffIndex === NOT_FOUND) {\n return null;\n }\n\n if (mode === \"replace\" && source.messages[cutoffIndex]?.role !== \"user\") {\n return null;\n }\n\n const newId = generateId();\n const branchedMessages = source.messages\n .slice(0, cutoffIndex + (mode === \"replace\" ? 0 : 1))\n .map((msg) => ({ ...msg, conversationId: newId }));\n\n const newConversation: AIConversation = {\n createdAt: Date.now(),\n id: newId,\n messages: branchedMessages,\n };\n conversations.set(newId, newConversation);\n\n return newId;\n };\n\n const branch = (fromMessageId: string, sourceConversationId: string) =>\n fork(fromMessageId, sourceConversationId, \"append\");\n\n const edit = (messageId: string, sourceConversationId: string) =>\n fork(messageId, sourceConversationId, \"replace\");\n\n const emptyHistory: AIProviderMessage[] = [];\n\n const getHistory = (conversationId: string) => {\n const conversation = conversations.get(conversationId);\n\n if (!conversation) {\n return emptyHistory;\n }\n\n const history: AIProviderMessage[] = conversation.messages.map((msg) => ({\n content: msg.content,\n role: msg.role,\n }));\n\n return history;\n };\n\n const getAbortController = (conversationId: string) => {\n const conversation = getOrCreate(conversationId);\n const controller = new AbortController();\n conversation.activeStreamAbort = controller;\n\n return controller;\n };\n\n const abort = (conversationId: string) => {\n const conversation = conversations.get(conversationId);\n\n if (conversation?.activeStreamAbort) {\n conversation.activeStreamAbort.abort();\n conversation.activeStreamAbort = undefined;\n }\n };\n\n const get = (conversationId: string) => conversations.get(conversationId);\n\n const remove = (conversationId: string) =>\n conversations.delete(conversationId);\n\n const list = () =>\n Array.from(conversations.values())\n .map((conv) => ({\n createdAt: conv.createdAt,\n id: conv.id,\n lastMessageAt: conv.lastMessageAt,\n messageCount: conv.messages.length,\n title: conv.title ?? \"Untitled\",\n }))\n .sort(\n (first, second) =>\n (second.lastMessageAt ?? second.createdAt) -\n (first.lastMessageAt ?? first.createdAt),\n );\n\n const getMessages = (conversationId: string) => {\n const conversation = conversations.get(conversationId);\n\n if (!conversation) {\n return [];\n }\n\n return conversation.messages;\n };\n\n return {\n abort,\n appendMessage,\n branch,\n edit,\n get,\n getAbortController,\n getHistory,\n getMessages,\n getOrCreate,\n list,\n remove,\n };\n};\n",
26
28
  "import { createSyncEngine, defineReactiveQuery } from \"@absolutejs/sync/engine\";\nimport type { SyncEngine } from \"@absolutejs/sync/engine\";\nimport { createMemoryStore } from \"./memoryStore\";\nimport type {\n AIConversation,\n AIConversationStore,\n AIMessage,\n} from \"../../types/ai\";\n\nexport type SyncConversationStoreOptions = {\n /** Engine to register on (one is created if omitted). */\n engine?: SyncEngine;\n /** Backing store for persistence (defaults to the in-memory store). */\n inner?: AIConversationStore;\n /** Live messages collection name (subscribe with the conversation id). Default `aiMessages`. */\n collection?: string;\n /** Change-feed table the live collection reads. Default `aiMessages`. */\n table?: string;\n};\n\nexport type SyncConversationStore = AIConversationStore & {\n /** Mount with `syncSocket` for live conversations. */\n engine: SyncEngine;\n /** Collection name to subscribe to (params = the conversation id). */\n collection: string;\n};\n\nconst messageChanged = (previous: AIMessage, next: AIMessage) =>\n previous.content !== next.content ||\n previous.isStreaming !== next.isStreaming ||\n previous.thinking !== next.thinking;\n\n/**\n * A sync-backed {@link AIConversationStore}: a drop-in for `createMemoryStore`\n * (or any store via `inner`) that ALSO makes conversations live. Every persisted\n * message flows through the sync engine's change feed, so a second device or tab\n * subscribed to the conversation sees messages appear — and stream — without its\n * own chat socket. Mount `store.engine` with `syncSocket` and subscribe to\n * `store.collection` with the conversation id as params.\n */\nexport const createSyncConversationStore = (\n options: SyncConversationStoreOptions = {},\n): SyncConversationStore => {\n const engine = options.engine ?? createSyncEngine();\n const inner = options.inner ?? createMemoryStore();\n const collection = options.collection ?? \"aiMessages\";\n const table = options.table ?? \"aiMessages\";\n const messages = new Map<string, AIMessage>();\n\n engine.registerReader(table, {\n all: () => [...messages.values()],\n key: (row) => (row as AIMessage).id,\n });\n // Live per-conversation messages: the subscription's params are the\n // conversation id; the result re-runs as messages are persisted/streamed.\n engine.registerReactive(\n defineReactiveQuery<AIMessage, string>({\n name: collection,\n key: (message) => message.id,\n run: async ({ db, params }) => {\n const all = await db.all<AIMessage>(table);\n\n return all.filter((message) => message.conversationId === params);\n },\n }),\n );\n\n // Reflect a conversation's current messages into the change feed, emitting only\n // the rows that actually changed (so streaming updates are cheap).\n const syncConversation = async (id: string, conversation: AIConversation) => {\n const current = new Set(conversation.messages.map((message) => message.id));\n for (const [messageId, message] of [...messages]) {\n if (message.conversationId === id && !current.has(messageId)) {\n messages.delete(messageId);\n await engine.applyChange(table, { op: \"delete\", row: message });\n }\n }\n for (const message of conversation.messages) {\n const previous = messages.get(message.id);\n if (previous && !messageChanged(previous, message)) {\n continue;\n }\n messages.set(message.id, message);\n await engine.applyChange(table, {\n op: previous ? \"update\" : \"insert\",\n row: message,\n });\n }\n };\n\n return {\n collection,\n engine,\n get: (id) => inner.get(id),\n getOrCreate: async (id) => {\n const conversation = await inner.getOrCreate(id);\n await syncConversation(id, conversation);\n\n return conversation;\n },\n list: () => inner.list(),\n remove: async (id) => {\n for (const [messageId, message] of [...messages]) {\n if (message.conversationId === id) {\n messages.delete(messageId);\n await engine.applyChange(table, { op: \"delete\", row: message });\n }\n }\n await inner.remove(id);\n },\n set: async (id, conversation) => {\n await inner.set(id, conversation);\n await syncConversation(id, conversation);\n },\n };\n};\n",
27
29
  "import type { AIServerMessage } from \"../../../types/ai\";\n\nexport const serverMessageToAction = (message: AIServerMessage) => {\n switch (message.type) {\n case \"chunk\":\n return {\n content: message.content,\n conversationId: message.conversationId,\n messageId: message.messageId,\n type: \"chunk\" as const,\n };\n case \"thinking\":\n return {\n content: message.content,\n conversationId: message.conversationId,\n messageId: message.messageId,\n type: \"thinking\" as const,\n };\n case \"tool_status\":\n return {\n conversationId: message.conversationId,\n input: message.input,\n messageId: message.messageId,\n name: message.name,\n result: message.result,\n status: message.status,\n type: \"tool_status\" as const,\n };\n case \"image\":\n return {\n conversationId: message.conversationId,\n data: message.data,\n format: message.format,\n imageId: message.imageId,\n isPartial: message.isPartial,\n messageId: message.messageId,\n revisedPrompt: message.revisedPrompt,\n type: \"image\" as const,\n };\n case \"audio\":\n return {\n audioId: message.audioId,\n conversationId: message.conversationId,\n data: message.data,\n format: message.format,\n messageId: message.messageId,\n transcript: message.transcript,\n type: \"audio\" as const,\n };\n case \"complete\":\n return {\n conversationId: message.conversationId,\n durationMs: message.durationMs,\n messageId: message.messageId,\n model: message.model,\n sources: message.sources,\n type: \"complete\" as const,\n usage: message.usage,\n };\n case \"turn_queued\":\n return {\n conversationId: message.conversationId,\n messageId: message.messageId,\n position: message.position,\n type: \"turn_queued\" as const,\n };\n case \"turn_started\":\n return {\n conversationId: message.conversationId,\n messageId: message.messageId,\n type: \"turn_started\" as const,\n };\n case \"branched\":\n return {\n attachments: message.attachments,\n content: message.content,\n fromMessageId: message.fromMessageId,\n messageId: message.messageId,\n mode: message.mode,\n newConversationId: message.newConversationId,\n oldConversationId: message.oldConversationId,\n type: \"branch\" as const,\n };\n case \"rag_retrieving\":\n return {\n conversationId: message.conversationId,\n messageId: message.messageId,\n retrievalStartedAt: message.retrievalStartedAt,\n type: \"rag_retrieving\" as const,\n };\n case \"rag_retrieved\":\n return {\n conversationId: message.conversationId,\n messageId: message.messageId,\n retrievalDurationMs: message.retrievalDurationMs,\n retrievalStartedAt: message.retrievalStartedAt,\n retrievedAt: message.retrievedAt,\n sources: message.sources,\n trace: message.trace,\n type: \"rag_retrieved\" as const,\n };\n case \"error\":\n return { message: message.message, type: \"error\" as const };\n default:\n return null;\n }\n};\n",
28
30
  "import type {\n AIClientMessage,\n AIConnectionOptions,\n AIServerMessage,\n} from \"../../../types/ai\";\nimport { isValidAIServerMessage } from \"../../../types/typeGuards\";\n\nconst WS_OPEN = 1;\nconst WS_NORMAL_CLOSURE = 1000;\nconst WS_CLOSED = 3;\nconst DEFAULT_PING_INTERVAL = 30_000;\nconst RECONNECT_INITIAL_DELAY = 500;\nconst RECONNECT_POLL_INTERVAL = 300;\nconst DEFAULT_MAX_RECONNECT_ATTEMPTS = 60;\n\ntype AIConnectionState = {\n isConnected: boolean;\n pendingMessages: string[];\n pingInterval: ReturnType<typeof setInterval> | null;\n reconnectAttempts: number;\n reconnectTimeout: ReturnType<typeof setTimeout> | null;\n ws: WebSocket | null;\n};\n\ntype AIConnectionHandle = {\n close: () => void;\n getReadyState: () => number;\n send: (msg: AIClientMessage) => void;\n subscribe: (callback: (msg: AIServerMessage) => void) => () => void;\n};\n\n// eslint-disable-next-line no-empty-function\nconst noop = () => {};\nconst noopUnsubscribe = () => noop;\n\nconst NOOP_CONNECTION: AIConnectionHandle = {\n close: noop,\n send: noop,\n subscribe: noopUnsubscribe,\n getReadyState: () => WS_CLOSED,\n};\n\nconst buildWsUrl = (path: string) => {\n const { hostname, port, protocol } = window.location;\n const wsProtocol = protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const portSuffix = port ? `:${port}` : \"\";\n\n return `${wsProtocol}//${hostname}${portSuffix}${path}`;\n};\n\nconst parseServerMessage = (event: MessageEvent) => {\n let data: unknown;\n\n try {\n data = JSON.parse(String(event.data));\n } catch {\n return null;\n }\n\n if (\n data &&\n typeof data === \"object\" &&\n \"type\" in data &&\n data.type === \"pong\"\n ) {\n return null;\n }\n\n if (!isValidAIServerMessage(data)) {\n return null;\n }\n\n return data;\n};\n\nexport const createAIConnection = (\n path: string,\n options: AIConnectionOptions = {},\n) => {\n if (typeof window === \"undefined\") {\n return NOOP_CONNECTION;\n }\n\n const shouldReconnect = options.reconnect !== false;\n const pingInterval = options.pingInterval ?? DEFAULT_PING_INTERVAL;\n const maxReconnectAttempts =\n options.maxReconnectAttempts ?? DEFAULT_MAX_RECONNECT_ATTEMPTS;\n\n const listeners = new Set<(msg: AIServerMessage) => void>();\n\n const connState: AIConnectionState = {\n isConnected: false,\n pendingMessages: [],\n pingInterval: null,\n reconnectAttempts: 0,\n reconnectTimeout: null,\n ws: null,\n };\n\n const flushPendingMessages = () => {\n if (connState.ws?.readyState !== WS_OPEN) {\n return;\n }\n\n while (connState.pendingMessages.length > 0) {\n const next = connState.pendingMessages.shift();\n if (typeof next === \"string\") {\n connState.ws.send(next);\n }\n }\n };\n\n const clearTimers = () => {\n if (connState.pingInterval) {\n clearInterval(connState.pingInterval);\n connState.pingInterval = null;\n }\n\n if (connState.reconnectTimeout) {\n clearTimeout(connState.reconnectTimeout);\n connState.reconnectTimeout = null;\n }\n };\n\n const scheduleReconnect = () => {\n connState.reconnectAttempts++;\n const delay =\n connState.reconnectAttempts === 1\n ? RECONNECT_INITIAL_DELAY\n : RECONNECT_POLL_INTERVAL;\n\n connState.reconnectTimeout = setTimeout(() => {\n if (connState.reconnectAttempts > maxReconnectAttempts) {\n return;\n }\n\n connect();\n }, delay);\n };\n\n const connect = () => {\n const url = buildWsUrl(path);\n const wsInstance = new WebSocket(url, options.protocols);\n\n wsInstance.onopen = () => {\n connState.isConnected = true;\n connState.reconnectAttempts = 0;\n flushPendingMessages();\n\n connState.pingInterval = setInterval(() => {\n if (wsInstance.readyState === WS_OPEN && connState.isConnected) {\n wsInstance.send(JSON.stringify({ type: \"ping\" }));\n }\n }, pingInterval);\n };\n\n wsInstance.onmessage = (event: MessageEvent) => {\n const message = parseServerMessage(event);\n\n if (!message) {\n return;\n }\n\n listeners.forEach((listener) => listener(message));\n };\n\n wsInstance.onclose = (event: CloseEvent) => {\n connState.isConnected = false;\n clearTimers();\n\n const shouldAttemptReconnect =\n shouldReconnect &&\n event.code !== WS_NORMAL_CLOSURE &&\n connState.reconnectAttempts < maxReconnectAttempts;\n\n if (shouldAttemptReconnect) {\n scheduleReconnect();\n }\n };\n\n wsInstance.onerror = () => {\n // Error is followed by close event, reconnection handled there\n };\n\n connState.ws = wsInstance;\n };\n\n const send = (msg: AIClientMessage) => {\n const serialized = JSON.stringify(msg);\n\n if (connState.ws?.readyState === WS_OPEN) {\n connState.ws.send(serialized);\n\n return;\n }\n\n connState.pendingMessages.push(serialized);\n };\n\n const subscribe = (callback: (msg: AIServerMessage) => void) => {\n listeners.add(callback);\n\n return () => {\n listeners.delete(callback);\n };\n };\n\n const close = () => {\n clearTimers();\n\n if (connState.ws) {\n connState.ws.close(WS_NORMAL_CLOSURE);\n connState.ws = null;\n }\n\n connState.isConnected = false;\n listeners.clear();\n };\n\n const getReadyState = () => connState.ws?.readyState ?? WS_CLOSED;\n\n connect();\n\n return { close, getReadyState, send, subscribe };\n};\n",
29
31
  "import type {\n AIConversation,\n RAGSource,\n AIImageData,\n AIMessage,\n AIStreamState,\n AIStoreAction,\n AIToolCall,\n} from \"../../../types/ai\";\n\nconst EMPTY_STATE: AIStreamState = {\n activeConversationId: null,\n conversations: new Map(),\n error: null,\n isStreaming: false,\n};\n\nconst initialActiveConversationId: string | null = null;\nconst initialError: string | null = null;\n\n// eslint-disable-next-line absolute/no-useless-function -- returns a new instance each call\nconst freshState = () => ({\n activeConversationId: initialActiveConversationId,\n conversations: new Map<string, AIConversation>(),\n error: initialError,\n isStreaming: false,\n});\n\nconst findAssistantMessage = (\n conversation: AIConversation,\n messageId: string,\n) =>\n conversation.messages.find(\n (msg) => msg.id === messageId && msg.role === \"assistant\",\n );\n\nconst getOrCreate = (state: AIStreamState, conversationId: string) => {\n let conversation = state.conversations.get(conversationId);\n\n if (!conversation) {\n conversation = {\n createdAt: Date.now(),\n id: conversationId,\n messages: [],\n };\n state.conversations.set(conversationId, conversation);\n }\n\n return conversation;\n};\n\nconst handleSend = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"send\" },\n) => {\n const conversation = getOrCreate(state, action.conversationId);\n const message: AIMessage = {\n attachments: action.attachments,\n content: action.content,\n conversationId: action.conversationId,\n id: action.messageId,\n isQueued: false,\n role: \"user\",\n timestamp: Date.now(),\n };\n\n conversation.messages = [...conversation.messages, message];\n state.activeConversationId = action.conversationId;\n state.error = null;\n state.isStreaming = true;\n};\n\nconst updateUserQueueState = (\n state: AIStreamState,\n conversationId: string,\n messageId: string,\n isQueued: boolean,\n) => {\n const conversation = state.conversations.get(conversationId);\n if (!conversation) return;\n conversation.messages = conversation.messages.map((message) =>\n message.id === messageId && message.role === \"user\"\n ? { ...message, isQueued }\n : message,\n );\n};\n\nconst handleTurnQueued = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"turn_queued\" },\n) => {\n updateUserQueueState(state, action.conversationId, action.messageId, true);\n};\n\nconst handleTurnStarted = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"turn_started\" },\n) => {\n updateUserQueueState(state, action.conversationId, action.messageId, false);\n state.isStreaming = true;\n};\n\nconst handleChunk = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"chunk\" },\n) => {\n const conversation = getOrCreate(state, action.conversationId);\n const existingIdx = conversation.messages.findIndex(\n (msg) => msg.id === action.messageId && msg.role === \"assistant\",\n );\n\n if (existingIdx >= 0) {\n const prevContent = conversation.messages[existingIdx]?.content ?? \"\";\n conversation.messages = conversation.messages.map((msg, idx) =>\n idx === existingIdx\n ? { ...msg, content: prevContent + action.content }\n : msg,\n );\n\n return;\n }\n\n const message: AIMessage = {\n content: action.content,\n conversationId: action.conversationId,\n id: action.messageId,\n isStreaming: true,\n role: \"assistant\",\n timestamp: Date.now(),\n };\n\n conversation.messages = [...conversation.messages, message];\n};\n\nconst handleThinking = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"thinking\" },\n) => {\n const conversation = getOrCreate(state, action.conversationId);\n const existingIdx = conversation.messages.findIndex(\n (msg) => msg.id === action.messageId && msg.role === \"assistant\",\n );\n\n if (existingIdx >= 0) {\n const prevThinking = conversation.messages[existingIdx]?.thinking ?? \"\";\n conversation.messages = conversation.messages.map((msg, idx) =>\n idx === existingIdx\n ? { ...msg, thinking: prevThinking + action.content }\n : msg,\n );\n\n return;\n }\n\n const message: AIMessage = {\n content: \"\",\n conversationId: action.conversationId,\n id: action.messageId,\n isStreaming: true,\n role: \"assistant\",\n thinking: action.content,\n timestamp: Date.now(),\n };\n\n conversation.messages = [...conversation.messages, message];\n};\n\nconst upsertToolCall = (message: AIMessage, toolCall: AIToolCall) => {\n if (!message.toolCalls) {\n message.toolCalls = [toolCall];\n\n return;\n }\n\n const existingIdx = message.toolCalls.findIndex(\n (existing) => existing.name === toolCall.name,\n );\n\n if (existingIdx >= 0) {\n message.toolCalls[existingIdx] = toolCall;\n } else {\n message.toolCalls = [...message.toolCalls, toolCall];\n }\n};\n\nconst getOrCreateAssistantMessage = (\n conversation: AIConversation,\n messageId: string,\n conversationId: string,\n) => {\n const existing = findAssistantMessage(conversation, messageId);\n\n if (existing) {\n return existing;\n }\n\n const message: AIMessage = {\n content: \"\",\n conversationId,\n id: messageId,\n isStreaming: true,\n role: \"assistant\",\n timestamp: Date.now(),\n };\n conversation.messages = [...conversation.messages, message];\n\n return message;\n};\n\nconst handleRAGRetrieved = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"rag_retrieved\" },\n) => {\n const conversation = getOrCreate(state, action.conversationId);\n const message = getOrCreateAssistantMessage(\n conversation,\n action.messageId,\n action.conversationId,\n );\n\n message.sources = action.sources;\n message.retrievalStartedAt =\n action.retrievalStartedAt ?? message.retrievalStartedAt;\n message.retrievedAt = action.retrievedAt;\n message.retrievalDurationMs = action.retrievalDurationMs;\n message.retrievalTrace = action.trace;\n conversation.messages = [...conversation.messages];\n};\n\nconst handleRAGRetrieving = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"rag_retrieving\" },\n) => {\n const conversation = getOrCreate(state, action.conversationId);\n const message = getOrCreateAssistantMessage(\n conversation,\n action.messageId,\n action.conversationId,\n );\n\n message.retrievalStartedAt = action.retrievalStartedAt;\n conversation.messages = [...conversation.messages];\n};\n\nconst handleToolStatus = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"tool_status\" },\n) => {\n const conversation = getOrCreate(state, action.conversationId);\n const message = getOrCreateAssistantMessage(\n conversation,\n action.messageId,\n action.conversationId,\n );\n\n const toolCall: AIToolCall = {\n id: action.messageId,\n input: action.input,\n name: action.name,\n result: action.status === \"complete\" ? (action.result ?? \"\") : undefined,\n };\n\n upsertToolCall(message, toolCall);\n conversation.messages = [...conversation.messages];\n};\n\nconst markMessageComplete = (\n conversation: AIConversation,\n messageId: string,\n usage?: { inputTokens: number; outputTokens: number },\n durationMs?: number,\n model?: string,\n sources?: RAGSource[],\n) => {\n conversation.messages = conversation.messages.map((msg) =>\n msg.id === messageId && msg.role === \"assistant\"\n ? {\n ...msg,\n durationMs,\n isStreaming: false,\n model,\n sources: sources ?? msg.sources,\n usage,\n }\n : msg,\n );\n};\n\nconst NOT_FOUND = -1;\n\nconst findExistingImageById = (\n images: AIImageData[],\n imageId: string | undefined,\n) => {\n if (!imageId) return NOT_FOUND;\n\n return images.findIndex((img) => img.imageId === imageId);\n};\n\nconst findReplaceablePartialIndex = (images: AIImageData[]) => {\n const lastIdx = images.length - 1;\n\n if (lastIdx >= 0 && images[lastIdx]?.isPartial) {\n return lastIdx;\n }\n\n return NOT_FOUND;\n};\n\nconst upsertImage = (message: AIMessage, imageData: AIImageData) => {\n if (!message.images) {\n message.images = [imageData];\n\n return;\n }\n\n const existingIdx = findExistingImageById(message.images, imageData.imageId);\n\n if (existingIdx >= 0) {\n message.images[existingIdx] = imageData;\n\n return;\n }\n\n const replaceableIdx = findReplaceablePartialIndex(message.images);\n\n if (replaceableIdx >= 0) {\n message.images[replaceableIdx] = imageData;\n\n return;\n }\n\n message.images = [...message.images, imageData];\n};\n\nconst handleImage = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"image\" },\n) => {\n const conversation = getOrCreate(state, action.conversationId);\n const message = getOrCreateAssistantMessage(\n conversation,\n action.messageId,\n action.conversationId,\n );\n\n upsertImage(message, {\n data: action.data,\n format: action.format,\n imageId: action.imageId,\n isPartial: action.isPartial,\n revisedPrompt: action.revisedPrompt,\n });\n\n conversation.messages = [...conversation.messages];\n};\n\nconst handleAudio = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"audio\" },\n) => {\n const conversation = getOrCreate(state, action.conversationId);\n const message = getOrCreateAssistantMessage(\n conversation,\n action.messageId,\n action.conversationId,\n );\n message.audio = [\n ...(message.audio ?? []),\n {\n audioId: action.audioId,\n data: action.data,\n format: action.format,\n transcript: action.transcript,\n },\n ];\n conversation.messages = [...conversation.messages];\n};\n\nconst handleComplete = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"complete\" },\n) => {\n const conversation = state.conversations.get(action.conversationId);\n\n if (conversation) {\n markMessageComplete(\n conversation,\n action.messageId,\n action.usage,\n action.durationMs,\n action.model,\n action.sources,\n );\n }\n\n state.isStreaming = false;\n};\n\nconst markConversationStreamsComplete = (conversation: AIConversation) => {\n const streamingMessages = conversation.messages.filter(\n (msg) => msg.isStreaming,\n );\n\n if (streamingMessages.length === 0) {\n return;\n }\n\n for (const msg of streamingMessages) {\n msg.isStreaming = false;\n }\n\n conversation.messages = [...conversation.messages];\n};\n\nconst markAllStreamsComplete = (state: AIStreamState) => {\n for (const [, conversation] of state.conversations) {\n markConversationStreamsComplete(conversation);\n }\n};\n\nconst handleBranch = (\n state: AIStreamState,\n action: AIStoreAction & { type: \"branch\" },\n) => {\n const source = state.conversations.get(action.oldConversationId);\n\n if (!source) {\n return;\n }\n\n const cutoffIndex = source.messages.findIndex(\n (msg) => msg.id === action.fromMessageId,\n );\n\n if (cutoffIndex < 0) {\n return;\n }\n\n const cutoffOffset = action.mode === \"replace\" ? 0 : 1;\n const branchedMessages = source.messages\n .slice(0, cutoffIndex + cutoffOffset)\n .map((msg) => ({ ...msg, conversationId: action.newConversationId }));\n\n const newConversation: AIConversation = {\n createdAt: Date.now(),\n id: action.newConversationId,\n messages: [\n ...branchedMessages,\n {\n attachments: action.attachments,\n content: action.content,\n conversationId: action.newConversationId,\n id: action.messageId,\n isQueued: false,\n role: \"user\",\n timestamp: Date.now(),\n },\n ],\n };\n\n state.conversations.set(action.newConversationId, newConversation);\n state.activeConversationId = action.newConversationId;\n state.isStreaming = true;\n};\n\nconst applyAction = (state: AIStreamState, action: AIStoreAction) => {\n switch (action.type) {\n case \"send\":\n handleSend(state, action);\n break;\n case \"chunk\":\n handleChunk(state, action);\n break;\n case \"thinking\":\n handleThinking(state, action);\n break;\n case \"tool_status\":\n handleToolStatus(state, action);\n break;\n case \"image\":\n handleImage(state, action);\n break;\n case \"audio\":\n handleAudio(state, action);\n break;\n case \"complete\":\n handleComplete(state, action);\n break;\n case \"turn_queued\":\n handleTurnQueued(state, action);\n break;\n case \"turn_started\":\n handleTurnStarted(state, action);\n break;\n case \"error\":\n state.error = action.message;\n state.isStreaming = false;\n break;\n case \"rag_retrieving\":\n handleRAGRetrieving(state, action);\n break;\n case \"rag_retrieved\":\n handleRAGRetrieved(state, action);\n break;\n case \"cancel\":\n state.isStreaming = false;\n markAllStreamsComplete(state);\n break;\n case \"branch\":\n handleBranch(state, action);\n break;\n case \"set_conversation\":\n state.activeConversationId = action.conversationId;\n break;\n }\n};\n\nexport const createAIMessageStore = () => {\n let state = freshState();\n const subscribers = new Set<() => void>();\n\n return {\n dispatch: (action: AIStoreAction) => {\n applyAction(state, action);\n // New reference so useSyncExternalStore detects the change\n state = { ...state, conversations: new Map(state.conversations) };\n subscribers.forEach((callback) => callback());\n },\n getServerSnapshot: () => EMPTY_STATE,\n getSnapshot: () => state,\n subscribe: (callback: () => void) => {\n subscribers.add(callback);\n\n return () => {\n subscribers.delete(callback);\n };\n },\n };\n};\n",
30
32
  "import type {\n AIAttachment,\n AIMessage,\n AIServerMessage,\n} from \"../../../types/ai\";\nimport { serverMessageToAction } from \"./actions\";\nimport { createAIConnection } from \"./connection\";\nimport { createAIMessageStore } from \"./messageStore\";\nimport { generateId } from \"../protocol\";\n\nexport const createAIStream = (path: string, conversationId?: string) => {\n const connection = createAIConnection(path);\n const store = createAIMessageStore();\n const listeners = new Set<() => void>();\n\n let currentError: string | null = null;\n let currentIsStreaming = false;\n let currentMessages: AIMessage[] = [];\n let activeConversationId: string | null = conversationId ?? null;\n\n const syncState = () => {\n const snapshot = store.getSnapshot();\n const convId = activeConversationId ?? snapshot.activeConversationId;\n const conversation = convId\n ? snapshot.conversations.get(convId)\n : undefined;\n activeConversationId = convId ?? snapshot.activeConversationId;\n currentError = snapshot.error;\n currentIsStreaming = snapshot.isStreaming;\n currentMessages = conversation?.messages ?? [];\n listeners.forEach((listener) => listener());\n };\n\n const unsubscribeStore = store.subscribe(syncState);\n\n const unsubscribeConnection = connection.subscribe(\n (message: AIServerMessage) => {\n const action = serverMessageToAction(message);\n if (action) {\n store.dispatch(action);\n }\n },\n );\n\n const branch = (messageId: string, content: string) => {\n if (activeConversationId) {\n connection.send({\n content,\n conversationId: activeConversationId,\n messageId,\n type: \"branch\",\n });\n }\n };\n\n const edit = (messageId: string, content: string) => {\n if (activeConversationId) {\n connection.send({\n content,\n conversationId: activeConversationId,\n messageId,\n type: \"edit\",\n });\n }\n };\n\n const cancel = () => {\n if (activeConversationId) {\n store.dispatch({ type: \"cancel\" });\n connection.send({\n conversationId: activeConversationId,\n type: \"cancel\",\n });\n }\n };\n\n const destroy = () => {\n unsubscribeStore();\n unsubscribeConnection();\n connection.close();\n listeners.clear();\n };\n\n const send = (content: string, attachments?: AIAttachment[]) => {\n const convId = activeConversationId ?? generateId();\n const msgId = generateId();\n\n store.dispatch({\n attachments,\n content,\n conversationId: convId,\n messageId: msgId,\n type: \"send\",\n });\n\n connection.send({\n attachments,\n content,\n conversationId: convId,\n messageId: msgId,\n type: \"message\",\n });\n };\n\n const subscribe = (callback: () => void) => {\n listeners.add(callback);\n\n return () => {\n listeners.delete(callback);\n };\n };\n\n return {\n branch,\n cancel,\n destroy,\n edit,\n send,\n subscribe,\n get error() {\n return currentError;\n },\n get isStreaming() {\n return currentIsStreaming;\n },\n get messages() {\n return currentMessages;\n },\n };\n};\n\nexport type CreateAIStream = typeof createAIStream;\n",
31
- "import type {\n AIProviderConfig,\n AIProviderStreamParams,\n} from \"../../../types/ai\";\nimport {\n AIInputError,\n capacityJson,\n inputTokenCount,\n positiveTokenLimit,\n type AIModelLimits,\n} from \"../inputCapacity\";\n\n// Exact IDs only: new variants/snapshots must not inherit a guessed context size.\n// Sources verified 2026-09-15: https://developers.openai.com/api/docs/models/{id}\nconst LIMITS: Record<string, AIModelLimits> = {\n \"gpt-4.1\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-mini\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-mini-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-nano\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-nano-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4o\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-4o-mini\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-4o-mini-2024-07-18\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-mini\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-mini-2025-08-07\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-nano\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-nano-2025-08-07\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-mini\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-nano\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.1\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.1-2025-11-13\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.2\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.2-2025-12-11\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-2026-03-05\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.5\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-6-astra\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-sol\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-terra\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-luna\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n o3: {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o3-2025-04-16\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o4-mini\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o4-mini-2025-04-16\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"gpt-5-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5.1-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5.2-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n};\nexport const openaiInputCapacity = (config: {\n baseUrl: string;\n fetch: typeof globalThis.fetch;\n key: () => Promise<string>;\n headers: (params: AIProviderStreamParams) => Promise<HeadersInit>;\n body: (params: AIProviderStreamParams) => Record<string, unknown>;\n /** For private deployments or models not yet in the documented catalog. */\n modelLimits?: (params: AIProviderStreamParams) => Promise<AIModelLimits>;\n}): NonNullable<AIProviderConfig[\"inputCapacity\"]> => ({\n outputTokens: (params) => {\n const value = config.body(params).max_output_tokens;\n return value === undefined ? undefined : positiveTokenLimit(value);\n },\n getLimits: async (params) => {\n if (config.modelLimits) return config.modelLimits(params);\n if (new URL(config.baseUrl).origin !== \"https://api.openai.com\")\n throw new AIInputError(\n \"capacity_unavailable\",\n \"This compatible endpoint must expose its own model capacity.\",\n );\n const limits = LIMITS[params.model];\n if (!limits)\n throw new AIInputError(\n \"capacity_unavailable\",\n `Model limits are unavailable for ${params.model}; no character limit has been substituted.`,\n );\n return { ...limits };\n },\n countTokens: async (params) => {\n const headers = new Headers(await config.headers(params));\n headers.set(\"Authorization\", `Bearer ${await config.key()}`);\n headers.set(\"Content-Type\", \"application/json\");\n const body = config.body(params);\n const counted: Record<string, unknown> = {};\n for (const key of [\n \"model\",\n \"input\",\n \"instructions\",\n \"tools\",\n \"tool_choice\",\n \"reasoning\",\n \"text\",\n \"parallel_tool_calls\",\n ])\n if (body[key] !== undefined) counted[key] = body[key];\n const response = await config.fetch(\n `${config.baseUrl}/v1/responses/input_tokens`,\n {\n method: \"POST\",\n headers,\n body: JSON.stringify(counted),\n signal: params.signal\n ? AbortSignal.any([params.signal, AbortSignal.timeout(15_000)])\n : AbortSignal.timeout(15_000),\n },\n );\n return inputTokenCount((await capacityJson(response)).input_tokens);\n },\n});\n",
33
+ "import type {\n AIProviderConfig,\n AIProviderStreamParams,\n} from \"../../../types/ai\";\nimport {\n AIInputError,\n capacityJson,\n inputTokenCount,\n positiveTokenLimit,\n type AIModelLimits,\n} from \"../inputCapacity\";\n\n// Exact IDs only: new variants/snapshots must not inherit a guessed context size.\n// Sources verified 2026-09-15: https://developers.openai.com/api/docs/models/{id}\nconst LIMITS: Record<string, AIModelLimits> = {\n \"gpt-4.1\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-mini\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-mini-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-nano\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4.1-nano-2025-04-14\": {\n maxInputTokens: 1047576,\n contextWindowTokens: 1047576,\n maxOutputTokens: 32768,\n },\n \"gpt-4o\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-4o-mini\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-4o-mini-2024-07-18\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-mini\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-mini-2025-08-07\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-nano\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5-nano-2025-08-07\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-mini\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-nano\": {\n maxInputTokens: 272000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.1\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.1-2025-11-13\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.2\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.2-2025-12-11\": {\n maxInputTokens: 400000,\n contextWindowTokens: 400000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.4-2026-03-05\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.5\": {\n maxInputTokens: 1050000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-6.1-sol\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-6-luna\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-6-astra\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-sol\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-terra\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n \"gpt-5.6-luna\": {\n maxInputTokens: 922000,\n contextWindowTokens: 1050000,\n maxOutputTokens: 128000,\n },\n o3: {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o3-2025-04-16\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o4-mini\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"o4-mini-2025-04-16\": {\n maxInputTokens: 200000,\n contextWindowTokens: 200000,\n maxOutputTokens: 100000,\n },\n \"gpt-5-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5.1-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n \"gpt-5.2-chat-latest\": {\n maxInputTokens: 128000,\n contextWindowTokens: 128000,\n maxOutputTokens: 16384,\n },\n};\nexport const openaiInputCapacity = (config: {\n baseUrl: string;\n fetch: typeof globalThis.fetch;\n key: () => Promise<string>;\n headers: (params: AIProviderStreamParams) => Promise<HeadersInit>;\n body: (params: AIProviderStreamParams) => Record<string, unknown>;\n /** For private deployments or models not yet in the documented catalog. */\n modelLimits?: (params: AIProviderStreamParams) => Promise<AIModelLimits>;\n}): NonNullable<AIProviderConfig[\"inputCapacity\"]> => ({\n outputTokens: (params) => {\n const value = config.body(params).max_output_tokens;\n return value === undefined ? undefined : positiveTokenLimit(value);\n },\n getLimits: async (params) => {\n if (config.modelLimits) return config.modelLimits(params);\n if (new URL(config.baseUrl).origin !== \"https://api.openai.com\")\n throw new AIInputError(\n \"capacity_unavailable\",\n \"This compatible endpoint must expose its own model capacity.\",\n );\n const limits = LIMITS[params.model];\n if (!limits)\n throw new AIInputError(\n \"capacity_unavailable\",\n `Model limits are unavailable for ${params.model}; no character limit has been substituted.`,\n );\n return { ...limits };\n },\n countTokens: async (params) => {\n const headers = new Headers(await config.headers(params));\n headers.set(\"Authorization\", `Bearer ${await config.key()}`);\n headers.set(\"Content-Type\", \"application/json\");\n const body = config.body(params);\n const counted: Record<string, unknown> = {};\n for (const key of [\n \"model\",\n \"input\",\n \"instructions\",\n \"tools\",\n \"tool_choice\",\n \"reasoning\",\n \"text\",\n \"parallel_tool_calls\",\n ])\n if (body[key] !== undefined) counted[key] = body[key];\n const response = await config.fetch(\n `${config.baseUrl}/v1/responses/input_tokens`,\n {\n method: \"POST\",\n headers,\n body: JSON.stringify(counted),\n signal: params.signal\n ? AbortSignal.any([params.signal, AbortSignal.timeout(15_000)])\n : AbortSignal.timeout(15_000),\n },\n );\n return inputTokenCount((await capacityJson(response)).input_tokens);\n },\n});\n",
32
34
  "import type {\n AIChunk,\n AIProviderConfig,\n AIProviderStreamParams,\n} from \"../../types/ai\";\nimport { ProviderError, providerStatusPage } from \"./errors/providerError\";\n\n// Resilience layer wrapped around every provider (via instrumentAIProvider).\n// Two behaviours, both automatic:\n//\n// 1. Bounded retry with exponential backoff on TRANSIENT failures that happen\n// before any chunk is emitted (connection drops, 429/5xx/529). Retrying is\n// only safe pre-first-chunk — once text has streamed to the consumer a retry\n// would duplicate output, so mid-stream failures are surfaced, never retried.\n//\n// 2. A per-provider circuit breaker. After enough consecutive request failures\n// the circuit OPENS and further calls fail fast (no hammering a provider\n// that's down) until a cooldown elapses, then a single half-open probe\n// decides whether to close. State is exposed via getProviderHealth().\n//\n// NOTE: state is per-process. Across multiple server instances each process\n// keeps its own view — this is best-effort local protection, not a distributed\n// breaker. Authoritative \"is the provider down\" should come from their status\n// page; this just stops one process from flogging a dead endpoint.\n\nexport type ResilienceConfig = {\n /** Max retry attempts AFTER the first try (so total tries = maxRetries + 1). */\n maxRetries: number;\n baseDelayMs: number;\n maxDelayMs: number;\n /** Consecutive failed requests before the circuit opens. */\n failureThreshold: number;\n /** How long the circuit stays open before allowing a half-open probe. */\n openMs: number;\n};\n\nconst DEFAULT_CONFIG: ResilienceConfig = {\n baseDelayMs: 500,\n failureThreshold: 4,\n maxDelayMs: 8000,\n maxRetries: 2,\n openMs: 30_000,\n};\n\nlet config: ResilienceConfig = { ...DEFAULT_CONFIG };\n\n/** Override the global resilience defaults (retry counts, breaker thresholds). */\nexport const configureProviderResilience = (\n partial: Partial<ResilienceConfig>,\n): void => {\n config = { ...config, ...partial };\n};\n\ntype CircuitState = \"closed\" | \"open\" | \"half-open\";\n\n// Externally-supplied availability (e.g. from a status-page monitor). When a\n// provider's API is reported down, the breaker trips PROACTIVELY — no warmup of\n// real user-facing failures needed.\ntype ExternalStatus = {\n available: boolean;\n /** Statuspage indicator, e.g. \"major_outage\" | \"operational\" | \"unknown\". */\n indicator: string;\n reason: string;\n checkedAt: number;\n};\n\ntype HealthRecord = {\n state: CircuitState;\n consecutiveFailures: number;\n lastFailureAt: number | null;\n lastSuccessAt: number | null;\n nextProbeAt: number | null;\n lastError: {\n status: number | null;\n type: string | null;\n message: string;\n } | null;\n external: ExternalStatus | null;\n};\n\nconst health = new Map<string, HealthRecord>();\n\nconst recordFor = (provider: string): HealthRecord => {\n const existing = health.get(provider);\n if (existing) return existing;\n const fresh: HealthRecord = {\n consecutiveFailures: 0,\n external: null,\n lastError: null,\n lastFailureAt: null,\n lastSuccessAt: null,\n nextProbeAt: null,\n state: \"closed\",\n };\n health.set(provider, fresh);\n\n return fresh;\n};\n\n/**\n * Feed externally-observed provider availability (typically from a status-page\n * monitor) into the breaker. A report of `available: false` makes the provider\n * fail fast immediately; `available: true` clears the external block (the\n * reactive breaker still governs real failures).\n */\nexport const setProviderAvailability = (\n provider: string,\n status: { available: boolean; indicator?: string; reason?: string },\n): void => {\n const record = recordFor(provider);\n record.external = {\n available: status.available,\n checkedAt: Date.now(),\n indicator:\n status.indicator ?? (status.available ? \"operational\" : \"unknown\"),\n reason: status.reason ?? \"\",\n };\n};\n\nconst noteSuccess = (provider: string): void => {\n const record = recordFor(provider);\n record.state = \"closed\";\n record.consecutiveFailures = 0;\n record.nextProbeAt = null;\n record.lastError = null;\n record.lastSuccessAt = Date.now();\n};\n\nconst noteFailure = (provider: string, error: ProviderError): void => {\n const record = recordFor(provider);\n record.consecutiveFailures += 1;\n record.lastFailureAt = Date.now();\n record.lastError = {\n message: error.message,\n status: error.status,\n type: error.type,\n };\n if (record.consecutiveFailures >= config.failureThreshold) {\n record.state = \"open\";\n record.nextProbeAt = Date.now() + config.openMs;\n }\n};\n\nexport type ProviderHealth = {\n provider: string;\n /**\n * True when the provider is usable: circuit closed AND not reported down by\n * an external status monitor.\n */\n healthy: boolean;\n state: CircuitState;\n consecutiveFailures: number;\n lastFailureAt: number | null;\n lastSuccessAt: number | null;\n /** When the breaker will next allow a probe (epoch ms), if open. */\n nextRetryAt: number | null;\n lastError: {\n status: number | null;\n type: string | null;\n message: string;\n } | null;\n statusPageUrl: string | null;\n /** Latest externally-observed status (e.g. status page), if any. */\n external: ExternalStatus | null;\n};\n\nconst snapshot = (provider: string, record: HealthRecord): ProviderHealth => ({\n consecutiveFailures: record.consecutiveFailures,\n external: record.external,\n healthy: record.state === \"closed\" && record.external?.available !== false,\n lastError: record.lastError,\n lastFailureAt: record.lastFailureAt,\n lastSuccessAt: record.lastSuccessAt,\n nextRetryAt: record.nextProbeAt,\n provider,\n state: record.state,\n statusPageUrl: providerStatusPage(provider),\n});\n\n/**\n * Inspect provider health as tracked by the circuit breaker. Pass a provider\n * name for one snapshot, or omit to get every provider seen this process.\n */\nexport function getProviderHealth(provider: string): ProviderHealth;\nexport function getProviderHealth(): ProviderHealth[];\nexport function getProviderHealth(\n provider?: string,\n): ProviderHealth | ProviderHealth[] {\n if (provider !== undefined) return snapshot(provider, recordFor(provider));\n\n return [...health.entries()].map(([name, record]) => snapshot(name, record));\n}\n\nconst backoffDelay = (attempt: number): number => {\n const exponential = config.baseDelayMs * 2 ** attempt;\n const capped = Math.min(exponential, config.maxDelayMs);\n // Full jitter: spread retries so concurrent callers don't reconnect in lockstep.\n return Math.round(capped / 2 + (Math.random() * capped) / 2);\n};\n\nconst sleep = (ms: number, signal?: AbortSignal): Promise<void> =>\n new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason ?? new Error(\"aborted\"));\n\n return;\n }\n const timer = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n const onAbort = () => {\n clearTimeout(timer);\n reject(signal?.reason ?? new Error(\"aborted\"));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n\nconst circuitOpen = (provider: string): ProviderError | null => {\n const record = recordFor(provider);\n\n // Proactive trip: an external monitor (status page) reported the API down, so\n // fail fast without waiting to accumulate real user-facing failures.\n if (record.external && !record.external.available) {\n return new ProviderError({\n message: `${provider} API is reported down${record.external.reason ? `: ${record.external.reason}` : \"\"}`,\n provider,\n retryable: true,\n status: null,\n type: record.external.indicator,\n });\n }\n\n if (record.state !== \"open\") return null;\n if (record.nextProbeAt !== null && Date.now() >= record.nextProbeAt) {\n // Cooldown elapsed: allow a single probe through.\n record.state = \"half-open\";\n\n return null;\n }\n const detail = record.lastError?.message ?? \"recent failures\";\n\n return new ProviderError({\n message: `${provider} is temporarily unavailable (circuit open after ${record.consecutiveFailures} failures): ${detail}`,\n provider,\n retryable: true,\n status: record.lastError?.status ?? null,\n type: record.lastError?.type ?? null,\n });\n};\n\n/**\n * Wrap a provider with retry + circuit-breaker behaviour. The returned config\n * has the same `stream(params) => AsyncIterable<AIChunk>` shape.\n */\nexport const withResilience = (\n provider: AIProviderConfig,\n providerName = \"unknown\",\n): AIProviderConfig => {\n const attempt = async function* (\n params: AIProviderStreamParams,\n attemptNo: number,\n ): AsyncIterable<AIChunk> {\n let yielded = false;\n try {\n for await (const chunk of provider.stream(params)) {\n yielded = true;\n yield chunk;\n }\n noteSuccess(providerName);\n } catch (err) {\n // Aborts are the caller's intent — propagate without touching health.\n const providerError = ProviderError.from(err, providerName);\n const canRetry =\n !yielded &&\n providerError.retryable &&\n attemptNo <\n (params.maxRetries === undefined\n ? config.maxRetries\n : Math.max(0, Math.min(config.maxRetries, params.maxRetries))) &&\n !params.signal?.aborted;\n\n if (canRetry) {\n await sleep(backoffDelay(attemptNo), params.signal);\n yield* attempt(params, attemptNo + 1);\n\n return;\n }\n\n // A circuit breaker represents provider availability. Local validation,\n // authentication, and other non-retryable request errors do not indicate\n // an outage and must not poison health shared by later requests.\n if (providerError.retryable) noteFailure(providerName, providerError);\n throw providerError;\n }\n };\n\n return {\n ...provider,\n stream: (params: AIProviderStreamParams) => {\n // Fail fast while the breaker is open — don't count this as a new failure\n // (no request was made); nextProbeAt already governs the cooldown.\n const tripped = circuitOpen(providerName);\n if (tripped) {\n return (async function* () {\n throw tripped;\n })();\n }\n\n return attempt(params, 0);\n },\n };\n};\n",
33
35
  "import type {\n AIChunk,\n AIProviderConfig,\n AIProviderStreamParams,\n AIUsage,\n} from \"../../../types/ai\";\nimport { withResilience } from \"../resilience\";\n\n// Every provider factory routes through here, so this is also where the\n// automatic retry + circuit-breaker layer is applied — wrapping the raw provider\n// BENEATH the usage/span tap so onUsage/onSpan fire once, for the attempt that\n// actually streamed.\nexport const instrumentAIProvider = (\n provider: AIProviderConfig,\n providerName?: string,\n): AIProviderConfig => {\n const resilient = withResilience(provider, providerName);\n\n return {\n ...provider,\n stream: (params: AIProviderStreamParams) => {\n if (!params.onUsage && !params.onSpan) {\n return resilient.stream(params);\n }\n return tapStream(resilient.stream(params), params, providerName);\n },\n };\n};\n\nasync function* tapStream(\n source: AsyncIterable<AIChunk>,\n params: AIProviderStreamParams,\n providerName?: string,\n): AsyncIterable<AIChunk> {\n const startedAt = Date.now();\n let lastUsage: AIUsage | undefined;\n try {\n for await (const chunk of source) {\n if (\n (chunk.type === \"done\" ||\n (chunk.type === \"usage_update\" && chunk.final)) &&\n chunk.usage\n ) {\n lastUsage = chunk.usage;\n }\n yield chunk;\n }\n } finally {\n if (lastUsage && params.onUsage) {\n try {\n params.onUsage({\n ...lastUsage,\n model: params.model,\n provider: providerName,\n });\n } catch {\n // operator-supplied callback errors must not affect stream consumers\n }\n }\n if (params.onSpan) {\n try {\n params.onSpan({\n durationMs: Date.now() - startedAt,\n model: params.model,\n provider: providerName,\n usage: lastUsage,\n });\n } catch {\n // same\n }\n }\n }\n}\n",
34
- "import type { ReasoningEffort } from \"../../../types/ai\";\n\nexport const REASONING_EFFORTS = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n] as const;\nexport type ReasoningSelection = \"auto\" | ReasoningEffort;\nexport type ModelReasoning = {\n kind: \"effort\" | \"budget\" | \"fixed\";\n efforts: readonly ReasoningEffort[];\n description: string;\n source: string;\n};\nexport const isReasoningSelection = (\n value: unknown,\n): value is ReasoningSelection =>\n value === \"auto\" || REASONING_EFFORTS.some((effort) => effort === value);\nconst profile = (\n kind: ModelReasoning[\"kind\"],\n efforts: readonly ReasoningEffort[],\n description: string,\n source: string,\n): ModelReasoning => ({ kind, efforts, description, source });\nconst claude = profile(\n \"effort\",\n [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n \"More thinking for harder problems; higher settings can take longer and use more credits.\",\n \"https://platform.claude.com/docs/en/build-with-claude/effort\",\n);\nconst claude46 = {\n ...claude,\n efforts: [\"low\", \"medium\", \"high\", \"max\"] as const,\n};\nconst opus45 = { ...claude, efforts: [\"low\", \"medium\", \"high\"] as const };\nconst haiku = profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n \"Thinking-token budget: Low 2,048; Medium 8,192; High 16,384. Actual usage can be lower.\",\n \"https://platform.claude.com/docs/en/build-with-claude/extended-thinking\",\n);\nconst gpt = profile(\n \"effort\",\n [\"none\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n claude.description,\n \"https://developers.openai.com/api/docs/models/gpt-5.6-sol\",\n);\nconst gemini = profile(\n \"effort\",\n [\"low\", \"medium\", \"high\"],\n claude.description,\n \"https://ai.google.dev/gemini-api/docs/openai\",\n);\nconst deepseek = profile(\n \"effort\",\n [\"none\", \"low\", \"high\", \"max\"],\n claude.description,\n \"https://api-docs.deepseek.com/guides/thinking_mode/\",\n);\nconst mistral = profile(\n \"effort\",\n [\"none\", \"high\"],\n \"Minimal thinking or full reasoning. This model does not offer intermediate effort levels.\",\n \"https://docs.mistral.ai/studio/conversations/reasoning\",\n);\nconst qwen = profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n haiku.description,\n \"https://help.aliyun.com/en/model-studio/deep-thinking\",\n);\n/** Exact reviewed IDs; unknown models expose only the provider default. Reviewed 2026-09-20;\n * Anthropic effort levels re-checked against the Models API 2026-09-25. */\nexport const MODEL_REASONING: Readonly<Record<string, ModelReasoning>> = {\n \"anthropic:claude-opus-5-5\": claude,\n \"anthropic:claude-fable-5-1\": claude,\n \"anthropic:claude-opus-5\": claude,\n \"anthropic:claude-sonnet-5\": claude,\n \"anthropic:claude-fable-5\": claude,\n \"anthropic:claude-opus-4-8\": claude,\n \"anthropic:claude-opus-4-7\": claude,\n \"anthropic:claude-sonnet-4-6\": claude46,\n \"anthropic:claude-opus-4-6\": claude46,\n \"anthropic:claude-opus-4-5\": opus45,\n \"anthropic:claude-haiku-4-5\": haiku,\n \"anthropic:claude-sonnet-4-5\": haiku,\n \"openai:gpt-6-astra\": {\n ...gpt,\n efforts: [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n source: \"https://developers.openai.com/api/docs/models/gpt-6-astra\",\n },\n \"openai:gpt-5.6-sol\": gpt,\n \"openai:gpt-5.6-terra\": gpt,\n \"openai:gpt-5.6-luna\": gpt,\n \"google:gemini-3.8-flash\": gemini,\n \"google:gemini-3.1-pro-preview\": gemini,\n \"google:gemini-2.5-flash\": profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n \"Thinking-token budget: Low 1,024; Medium 8,192; High 24,576.\",\n gemini.source,\n ),\n \"xai:grok-4.6\": profile(\n \"effort\",\n [\"low\", \"medium\", \"high\", \"xhigh\"],\n \"Always reasons. Choose how much thinking it should do.\",\n \"https://docs.x.ai/developers/model-capabilities/text/reasoning\",\n ),\n \"deepseek:deepseek-flash\": deepseek,\n \"deepseek:deepseek-v4-pro\": deepseek,\n \"mistral:mistral-medium-3-5\": mistral,\n \"mistral:mistral-small-latest\": mistral,\n \"alibaba:qwen3.8-max\": qwen,\n \"alibaba:qwen3.7-plus\": qwen,\n \"moonshot:kimi-k3\": profile(\n \"effort\",\n [\"low\", \"high\", \"max\"],\n \"Always reasons. Choose how much thinking it should do.\",\n \"https://platform.kimi.ai/docs/guide/kimi-k3-quickstart\",\n ),\n \"moonshot:kimi-k2.7-code\": profile(\n \"fixed\",\n [],\n \"Thinking is always enabled; this model has no documented adjustable effort control.\",\n \"https://www.kimi.ai/resources/kimi-k2-7-code\",\n ),\n};\nexport const getModelReasoning = (\n provider: string,\n model: string,\n): ModelReasoning | undefined => MODEL_REASONING[`${provider}:${model}`];\nexport const supportsReasoningSelection = (\n provider: string,\n model: string,\n selection: ReasoningSelection,\n): boolean =>\n selection === \"auto\" ||\n Boolean(getModelReasoning(provider, model)?.efforts.includes(selection));\nexport const reasoningSelectionLabel = (\n selection: ReasoningSelection,\n provider?: string,\n): string => {\n if (selection === \"auto\") return \"Auto\";\n if (selection === \"none\") return provider === \"mistral\" ? \"Minimal\" : \"Off\";\n if (selection === \"xhigh\") return \"Extra high\";\n return selection.charAt(0).toUpperCase() + selection.slice(1);\n};\n",
35
- "import type { ReasoningConfig, ReasoningEffort } from \"../../../types/ai\";\n\nimport { getModelReasoning } from \"../models/reasoning\";\n\nconst EFFORT_ORDER: ReasoningEffort[] = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n];\n\n// Anthropic models that take adaptive thinking + output_config.effort.\nconst ANTHROPIC_EFFORT = [\n /opus-4-[5-8]/,\n /sonnet-4-6/,\n /fable-5/,\n /mythos-5/,\n /opus-5/,\n /sonnet-5/,\n];\n// Anthropic models with adaptive thinking but NO effort parameter. Reserved:\n// only add a model here once it's CONFIRMED to accept adaptive thinking without\n// `output_config.effort`. Unconfirmed models fall through to \"none\" (no-op) so\n// we never risk a 400 — Haiku 4.5, for instance, rejects `effort` and is not\n// confirmed for adaptive, so it stays out.\nconst ANTHROPIC_ADAPTIVE_ONLY: RegExp[] = [];\n// Anthropic models that use legacy extended thinking (budget_tokens).\nconst ANTHROPIC_LEGACY_THINKING = [\n /haiku-4-5/,\n /sonnet-4-5/,\n /sonnet-4-0/,\n /sonnet-4-2025/,\n /opus-4-0/,\n /opus-4-1/,\n /opus-4-2025/,\n /3-7-sonnet/,\n];\n// Anthropic models that REMOVED temperature/top_p/top_k (sending them 400s).\nconst ANTHROPIC_NO_SAMPLING = [\n /opus-4-[78]/,\n /fable-5/,\n /mythos-5/,\n /opus-5/,\n /sonnet-5/,\n];\n// Anthropic models that support the `max` effort tier (others clamp max→high).\nconst ANTHROPIC_MAX_EFFORT = [\n /opus-4-[678]/,\n /sonnet-4-6/,\n /fable-5/,\n /mythos-5/,\n];\n// OpenAI reasoning models (effort-capable); everything else ignores effort.\nconst OPENAI_REASONING = [/(^|[^a-z])o[1345](-|$)/, /gpt-[56]/];\n// OpenAI reasoning models that support the `minimal` tier (others clamp →low).\nconst OPENAI_MINIMAL_EFFORT = [/gpt-5/];\n\nconst matches = (model: string, patterns: RegExp[]) =>\n patterns.some((pattern) => pattern.test(model));\n\nexport type AnthropicReasoningMode = \"effort\" | \"adaptive\" | \"legacy\" | \"none\";\n\nexport const anthropicReasoningMode = (\n model: string,\n): AnthropicReasoningMode => {\n if (matches(model, ANTHROPIC_EFFORT)) return \"effort\";\n if (matches(model, ANTHROPIC_ADAPTIVE_ONLY)) return \"adaptive\";\n if (matches(model, ANTHROPIC_LEGACY_THINKING)) return \"legacy\";\n\n return \"none\";\n};\n\n/** Modern Anthropic + Fable/Mythos reject temperature/top_p/top_k entirely. */\nexport const anthropicSupportsSampling = (model: string) =>\n !matches(model, ANTHROPIC_NO_SAMPLING);\n\nexport const isOpenAIReasoningModel = (model: string) =>\n matches(model, OPENAI_REASONING);\n\n// effort → legacy thinking budget (tokens). Kept under typical max_tokens; the\n// Anthropic provider raises max_tokens to fit when thinking is enabled.\nconst EFFORT_BUDGET: Record<ReasoningEffort, number> = {\n none: 0,\n xhigh: 24576,\n high: 16384,\n low: 2048,\n max: 32768,\n medium: 8192,\n minimal: 1024,\n};\n\n// budget tokens → nearest effort (when a caller gave only budgetTokens but the\n// target model is effort-based).\nconst budgetToEffort = (budget: number): ReasoningEffort => {\n if (budget <= 2048) return \"low\";\n if (budget <= 8192) return \"medium\";\n if (budget <= 16384) return \"high\";\n\n return \"max\";\n};\n\n/** The portable effort a config asks for, deriving from budgetTokens if needed. */\nexport const resolveEffort = (\n reasoning: ReasoningConfig,\n): ReasoningEffort | null => {\n if (reasoning.effort) return reasoning.effort;\n if (typeof reasoning.budgetTokens === \"number\") {\n return budgetToEffort(reasoning.budgetTokens);\n }\n\n return null;\n};\n\n/** The budget a config asks for, deriving from effort if needed. */\nexport const resolveBudgetTokens = (\n reasoning: ReasoningConfig,\n): number | null => {\n if (typeof reasoning.budgetTokens === \"number\") return reasoning.budgetTokens;\n if (reasoning.effort) return EFFORT_BUDGET[reasoning.effort];\n\n return null;\n};\n\nconst clampEffort = (\n effort: ReasoningEffort,\n allowed: ReasoningEffort[],\n): ReasoningEffort => {\n if (allowed.includes(effort)) return effort;\n // Walk DOWN the order to the nearest allowed tier (never silently escalate).\n const idx = EFFORT_ORDER.indexOf(effort);\n for (let lower = idx - 1; lower >= 0; lower -= 1) {\n const candidate = EFFORT_ORDER[lower];\n if (candidate && allowed.includes(candidate)) return candidate;\n }\n\n return allowed[0] ?? effort;\n};\n\n/** Anthropic `output_config.effort` value for an effort-capable model, or null. */\nexport const anthropicEffortValue = (\n model: string,\n reasoning: ReasoningConfig,\n) => {\n const effort = resolveEffort(reasoning);\n if (!effort) return null;\n const known = getModelReasoning(\"anthropic\", model);\n if (known?.kind === \"effort\") return clampEffort(effort, [...known.efforts]);\n const allowed: ReasoningEffort[] = matches(model, ANTHROPIC_MAX_EFFORT)\n ? [\"low\", \"medium\", \"high\", \"max\"]\n : [\"low\", \"medium\", \"high\"];\n\n return clampEffort(effort, allowed);\n};\n\n/** OpenAI `reasoning.effort` value for a reasoning model, or null. */\nexport const openaiEffortValue = (\n model: string,\n reasoning: ReasoningConfig,\n) => {\n if (!isOpenAIReasoningModel(model)) return null;\n const effort = resolveEffort(reasoning);\n if (!effort) return null;\n const known = getModelReasoning(\"openai\", model);\n if (known) return clampEffort(effort, [...known.efforts]);\n const allowed: ReasoningEffort[] = matches(model, OPENAI_MINIMAL_EFFORT)\n ? [\"minimal\", \"low\", \"medium\", \"high\"]\n : [\"low\", \"medium\", \"high\"];\n // OpenAI has no `max`; clamp it to `high`.\n const requested = effort === \"max\" ? \"high\" : effort;\n\n return clampEffort(requested, allowed);\n};\n\n/** Provider-specific Chat Completions controls. Never send a guessed parameter. */\nexport const compatibleReasoningBody = (\n provider: string,\n model: string,\n reasoning?: ReasoningConfig,\n): Record<string, unknown> => {\n if (!reasoning) return {};\n const known = getModelReasoning(provider, model);\n const effort = resolveEffort(reasoning);\n if (!known || !effort) return {};\n if (!known.efforts.includes(effort))\n throw new Error(\n `Unsupported reasoning effort ${effort} for ${provider}:${model}`,\n );\n if (provider === \"alibaba\")\n return effort === \"none\"\n ? { enable_thinking: false }\n : {\n enable_thinking: true,\n thinking_budget: resolveBudgetTokens(reasoning),\n };\n if (provider === \"deepseek\")\n return effort === \"none\"\n ? { thinking: { type: \"disabled\" } }\n : { thinking: { type: \"enabled\" }, reasoning_effort: effort };\n return { reasoning_effort: effort };\n};\nexport const geminiThinkingConfig = (\n model: string,\n reasoning?: ReasoningConfig,\n): Record<string, unknown> | undefined => {\n if (!reasoning) return undefined;\n const profile = getModelReasoning(\"google\", model);\n const effort = resolveEffort(reasoning);\n if (!profile || !effort) return undefined;\n if (!profile.efforts.includes(effort))\n throw new Error(`Unsupported reasoning effort ${effort} for ${model}`);\n if (profile.kind === \"effort\") return { thinkingLevel: effort };\n const budgets: Partial<Record<ReasoningEffort, number>> = {\n none: 0,\n low: 1024,\n medium: 8192,\n high: 24576,\n };\n return { thinkingBudget: reasoning.budgetTokens ?? budgets[effort] };\n};\n",
36
+ "import type { ReasoningEffort } from \"../../../types/ai\";\n\nexport const REASONING_EFFORTS = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n] as const;\nexport type ReasoningSelection = \"auto\" | ReasoningEffort;\nexport type ModelReasoning = {\n kind: \"effort\" | \"budget\" | \"fixed\";\n efforts: readonly ReasoningEffort[];\n description: string;\n source: string;\n};\nexport const isReasoningSelection = (\n value: unknown,\n): value is ReasoningSelection =>\n value === \"auto\" || REASONING_EFFORTS.some((effort) => effort === value);\nconst profile = (\n kind: ModelReasoning[\"kind\"],\n efforts: readonly ReasoningEffort[],\n description: string,\n source: string,\n): ModelReasoning => ({ kind, efforts, description, source });\nconst claude = profile(\n \"effort\",\n [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n \"More thinking for harder problems; higher settings can take longer and use more credits.\",\n \"https://platform.claude.com/docs/en/build-with-claude/effort\",\n);\nconst claude46 = {\n ...claude,\n efforts: [\"low\", \"medium\", \"high\", \"max\"] as const,\n};\nconst opus45 = { ...claude, efforts: [\"low\", \"medium\", \"high\"] as const };\nconst haiku = profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n \"Thinking-token budget: Low 2,048; Medium 8,192; High 16,384. Actual usage can be lower.\",\n \"https://platform.claude.com/docs/en/build-with-claude/extended-thinking\",\n);\nconst gpt = profile(\n \"effort\",\n [\"none\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n claude.description,\n \"https://developers.openai.com/api/docs/models/gpt-5.6-sol\",\n);\nconst gemini = profile(\n \"effort\",\n [\"low\", \"medium\", \"high\"],\n claude.description,\n \"https://ai.google.dev/gemini-api/docs/openai\",\n);\nconst deepseek = profile(\n \"effort\",\n [\"none\", \"low\", \"high\", \"max\"],\n claude.description,\n \"https://api-docs.deepseek.com/guides/thinking_mode/\",\n);\nconst mistral = profile(\n \"effort\",\n [\"none\", \"high\"],\n \"Minimal thinking or full reasoning. This model does not offer intermediate effort levels.\",\n \"https://docs.mistral.ai/studio/conversations/reasoning\",\n);\nconst qwen = profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n haiku.description,\n \"https://help.aliyun.com/en/model-studio/deep-thinking\",\n);\n/** Exact reviewed IDs; unknown models expose only the provider default. Reviewed 2026-09-20;\n * Anthropic effort levels re-checked against the Models API 2026-09-25. */\nexport const MODEL_REASONING: Readonly<Record<string, ModelReasoning>> = {\n \"anthropic:claude-opus-5-5\": claude,\n \"anthropic:claude-sonnet-5-5\": claude,\n \"anthropic:claude-haiku-5-5\": claude,\n \"openai:gpt-6.1-sol\": {\n ...gpt,\n efforts: [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n source: \"https://developers.openai.com/api/docs/models/gpt-6.1-sol\",\n },\n \"openai:gpt-6-luna\": {\n ...gpt,\n source: \"https://developers.openai.com/api/docs/models/gpt-6-luna\",\n },\n \"anthropic:claude-fable-5-1\": claude,\n \"anthropic:claude-opus-5\": claude,\n \"anthropic:claude-sonnet-5\": claude,\n \"anthropic:claude-fable-5\": claude,\n \"anthropic:claude-opus-4-8\": claude,\n \"anthropic:claude-opus-4-7\": claude,\n \"anthropic:claude-sonnet-4-6\": claude46,\n \"anthropic:claude-opus-4-6\": claude46,\n \"anthropic:claude-opus-4-5\": opus45,\n \"anthropic:claude-haiku-4-5\": haiku,\n \"anthropic:claude-sonnet-4-5\": haiku,\n \"openai:gpt-6-astra\": {\n ...gpt,\n efforts: [\"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n source: \"https://developers.openai.com/api/docs/models/gpt-6-astra\",\n },\n \"openai:gpt-5.6-sol\": gpt,\n \"openai:gpt-5.6-terra\": gpt,\n \"openai:gpt-5.6-luna\": gpt,\n \"google:gemini-3.8-flash\": gemini,\n \"google:gemini-3.1-pro-preview\": gemini,\n \"google:gemini-2.5-flash\": profile(\n \"budget\",\n [\"none\", \"low\", \"medium\", \"high\"],\n \"Thinking-token budget: Low 1,024; Medium 8,192; High 24,576.\",\n gemini.source,\n ),\n \"xai:grok-4.6\": profile(\n \"effort\",\n [\"low\", \"medium\", \"high\", \"xhigh\"],\n \"Always reasons. Choose how much thinking it should do.\",\n \"https://docs.x.ai/developers/model-capabilities/text/reasoning\",\n ),\n \"deepseek:deepseek-flash\": deepseek,\n \"deepseek:deepseek-v4-pro\": deepseek,\n \"mistral:mistral-medium-3-5\": mistral,\n \"mistral:mistral-small-latest\": mistral,\n \"alibaba:qwen3.8-max\": qwen,\n \"alibaba:qwen3.7-plus\": qwen,\n \"moonshot:kimi-k3\": profile(\n \"effort\",\n [\"low\", \"high\", \"max\"],\n \"Always reasons. Choose how much thinking it should do.\",\n \"https://platform.kimi.ai/docs/guide/kimi-k3-quickstart\",\n ),\n \"moonshot:kimi-k2.7-code\": profile(\n \"fixed\",\n [],\n \"Thinking is always enabled; this model has no documented adjustable effort control.\",\n \"https://www.kimi.ai/resources/kimi-k2-7-code\",\n ),\n};\nexport const getModelReasoning = (\n provider: string,\n model: string,\n): ModelReasoning | undefined => MODEL_REASONING[`${provider}:${model}`];\nexport const supportsReasoningSelection = (\n provider: string,\n model: string,\n selection: ReasoningSelection,\n): boolean =>\n selection === \"auto\" ||\n Boolean(getModelReasoning(provider, model)?.efforts.includes(selection));\nexport const reasoningSelectionLabel = (\n selection: ReasoningSelection,\n provider?: string,\n): string => {\n if (selection === \"auto\") return \"Auto\";\n if (selection === \"none\") return provider === \"mistral\" ? \"Minimal\" : \"Off\";\n if (selection === \"xhigh\") return \"Extra high\";\n return selection.charAt(0).toUpperCase() + selection.slice(1);\n};\n",
37
+ "import type { ReasoningConfig, ReasoningEffort } from \"../../../types/ai\";\n\nimport { getModelReasoning } from \"../models/reasoning\";\n\nconst EFFORT_ORDER: ReasoningEffort[] = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n];\n\n// Anthropic models that take adaptive thinking + output_config.effort.\nconst ANTHROPIC_EFFORT = [\n /opus-4-[5-8]/,\n /sonnet-4-6/,\n /fable-5/,\n /mythos-5/,\n /opus-5/,\n /sonnet-5/,\n /haiku-5/,\n];\n// Anthropic models with adaptive thinking but NO effort parameter. Reserved:\n// only add a model here once it's CONFIRMED to accept adaptive thinking without\n// `output_config.effort`. Unconfirmed models fall through to \"none\" (no-op) so\n// we never risk a 400 — Haiku 4.5, for instance, rejects `effort` and is not\n// confirmed for adaptive, so it stays out.\nconst ANTHROPIC_ADAPTIVE_ONLY: RegExp[] = [];\n// Anthropic models that use legacy extended thinking (budget_tokens).\nconst ANTHROPIC_LEGACY_THINKING = [\n /haiku-4-5/,\n /sonnet-4-5/,\n /sonnet-4-0/,\n /sonnet-4-2025/,\n /opus-4-0/,\n /opus-4-1/,\n /opus-4-2025/,\n /3-7-sonnet/,\n];\n// Anthropic models that REMOVED temperature/top_p/top_k (sending them 400s).\nconst ANTHROPIC_NO_SAMPLING = [\n /opus-4-[78]/,\n /fable-5/,\n /mythos-5/,\n /opus-5/,\n /sonnet-5/,\n /haiku-5/,\n];\n// Anthropic models that support the `max` effort tier (others clamp max→high).\nconst ANTHROPIC_MAX_EFFORT = [\n /opus-4-[678]/,\n /sonnet-4-6/,\n /fable-5/,\n /mythos-5/,\n];\n// OpenAI reasoning models (effort-capable); everything else ignores effort.\nconst OPENAI_REASONING = [/(^|[^a-z])o[1345](-|$)/, /gpt-[56]/];\n// OpenAI reasoning models that support the `minimal` tier (others clamp →low).\nconst OPENAI_MINIMAL_EFFORT = [/gpt-5/];\n\nconst matches = (model: string, patterns: RegExp[]) =>\n patterns.some((pattern) => pattern.test(model));\n\nexport type AnthropicReasoningMode = \"effort\" | \"adaptive\" | \"legacy\" | \"none\";\n\nexport const anthropicReasoningMode = (\n model: string,\n): AnthropicReasoningMode => {\n if (matches(model, ANTHROPIC_EFFORT)) return \"effort\";\n if (matches(model, ANTHROPIC_ADAPTIVE_ONLY)) return \"adaptive\";\n if (matches(model, ANTHROPIC_LEGACY_THINKING)) return \"legacy\";\n\n return \"none\";\n};\n\n/** Modern Anthropic + Fable/Mythos reject temperature/top_p/top_k entirely. */\nexport const anthropicSupportsSampling = (model: string) =>\n !matches(model, ANTHROPIC_NO_SAMPLING);\n\nexport const isOpenAIReasoningModel = (model: string) =>\n matches(model, OPENAI_REASONING);\n\n// effort → legacy thinking budget (tokens). Kept under typical max_tokens; the\n// Anthropic provider raises max_tokens to fit when thinking is enabled.\nconst EFFORT_BUDGET: Record<ReasoningEffort, number> = {\n none: 0,\n xhigh: 24576,\n high: 16384,\n low: 2048,\n max: 32768,\n medium: 8192,\n minimal: 1024,\n};\n\n// budget tokens → nearest effort (when a caller gave only budgetTokens but the\n// target model is effort-based).\nconst budgetToEffort = (budget: number): ReasoningEffort => {\n if (budget <= 2048) return \"low\";\n if (budget <= 8192) return \"medium\";\n if (budget <= 16384) return \"high\";\n\n return \"max\";\n};\n\n/** The portable effort a config asks for, deriving from budgetTokens if needed. */\nexport const resolveEffort = (\n reasoning: ReasoningConfig,\n): ReasoningEffort | null => {\n if (reasoning.effort) return reasoning.effort;\n if (typeof reasoning.budgetTokens === \"number\") {\n return budgetToEffort(reasoning.budgetTokens);\n }\n\n return null;\n};\n\n/** The budget a config asks for, deriving from effort if needed. */\nexport const resolveBudgetTokens = (\n reasoning: ReasoningConfig,\n): number | null => {\n if (typeof reasoning.budgetTokens === \"number\") return reasoning.budgetTokens;\n if (reasoning.effort) return EFFORT_BUDGET[reasoning.effort];\n\n return null;\n};\n\nconst clampEffort = (\n effort: ReasoningEffort,\n allowed: ReasoningEffort[],\n): ReasoningEffort => {\n if (allowed.includes(effort)) return effort;\n // Walk DOWN the order to the nearest allowed tier (never silently escalate).\n const idx = EFFORT_ORDER.indexOf(effort);\n for (let lower = idx - 1; lower >= 0; lower -= 1) {\n const candidate = EFFORT_ORDER[lower];\n if (candidate && allowed.includes(candidate)) return candidate;\n }\n\n return allowed[0] ?? effort;\n};\n\n/** Anthropic `output_config.effort` value for an effort-capable model, or null. */\nexport const anthropicEffortValue = (\n model: string,\n reasoning: ReasoningConfig,\n) => {\n const effort = resolveEffort(reasoning);\n if (!effort) return null;\n const known = getModelReasoning(\"anthropic\", model);\n if (known?.kind === \"effort\") return clampEffort(effort, [...known.efforts]);\n const allowed: ReasoningEffort[] = matches(model, ANTHROPIC_MAX_EFFORT)\n ? [\"low\", \"medium\", \"high\", \"max\"]\n : [\"low\", \"medium\", \"high\"];\n\n return clampEffort(effort, allowed);\n};\n\n/** OpenAI `reasoning.effort` value for a reasoning model, or null. */\nexport const openaiEffortValue = (\n model: string,\n reasoning: ReasoningConfig,\n) => {\n if (!isOpenAIReasoningModel(model)) return null;\n const effort = resolveEffort(reasoning);\n if (!effort) return null;\n const known = getModelReasoning(\"openai\", model);\n if (known) return clampEffort(effort, [...known.efforts]);\n const allowed: ReasoningEffort[] = matches(model, OPENAI_MINIMAL_EFFORT)\n ? [\"minimal\", \"low\", \"medium\", \"high\"]\n : [\"low\", \"medium\", \"high\"];\n // OpenAI has no `max`; clamp it to `high`.\n const requested = effort === \"max\" ? \"high\" : effort;\n\n return clampEffort(requested, allowed);\n};\n\n/** Provider-specific Chat Completions controls. Never send a guessed parameter. */\nexport const compatibleReasoningBody = (\n provider: string,\n model: string,\n reasoning?: ReasoningConfig,\n): Record<string, unknown> => {\n if (!reasoning) return {};\n const known = getModelReasoning(provider, model);\n const effort = resolveEffort(reasoning);\n if (!known || !effort) return {};\n if (!known.efforts.includes(effort))\n throw new Error(\n `Unsupported reasoning effort ${effort} for ${provider}:${model}`,\n );\n if (provider === \"alibaba\")\n return effort === \"none\"\n ? { enable_thinking: false }\n : {\n enable_thinking: true,\n thinking_budget: resolveBudgetTokens(reasoning),\n };\n if (provider === \"deepseek\")\n return effort === \"none\"\n ? { thinking: { type: \"disabled\" } }\n : { thinking: { type: \"enabled\" }, reasoning_effort: effort };\n return { reasoning_effort: effort };\n};\nexport const geminiThinkingConfig = (\n model: string,\n reasoning?: ReasoningConfig,\n): Record<string, unknown> | undefined => {\n if (!reasoning) return undefined;\n const profile = getModelReasoning(\"google\", model);\n const effort = resolveEffort(reasoning);\n if (!profile || !effort) return undefined;\n if (!profile.efforts.includes(effort))\n throw new Error(`Unsupported reasoning effort ${effort} for ${model}`);\n if (profile.kind === \"effort\") return { thinkingLevel: effort };\n const budgets: Partial<Record<ReasoningEffort, number>> = {\n none: 0,\n low: 1024,\n medium: 8192,\n high: 24576,\n };\n return { thinkingBudget: reasoning.budgetTokens ?? budgets[effort] };\n};\n",
36
38
  "import type {\n AIProviderConfig,\n AIProviderContentBlock,\n AIProviderMessage,\n AIProviderStreamParams,\n AIProviderToolDefinition,\n AIUsage,\n AIResponseMetadata,\n} from \"../../../types/ai\";\nimport { openaiInputCapacity } from \"./openaiCapacity\";\nimport { instrumentAIProvider } from \"./instrumentation\";\nimport { ProviderError } from \"../errors/providerError\";\nimport { isOpenAIReasoningModel, openaiEffortValue } from \"./reasoning\";\n\n// Opportunistic HTTP/2 multiplexing for outbound HTTPS (Bun 1.3.14+).\n// The `protocol` option lands in @types/bun 1.3.14; widen locally for now.\n// Hard-skip on non-HTTPS — Bun's h2 client throws HTTP2Unsupported on h2c.\ntype H2Init = RequestInit & { protocol?: \"http2\" };\nconst h2IfHttps = (url: string): H2Init =>\n url.startsWith(\"https://\") ? { protocol: \"http2\" } : {};\n\nexport type OpenAIResponsesConfig = {\n modelLimits?: (\n params: AIProviderStreamParams,\n ) => Promise<import(\"../inputCapacity\").AIModelLimits>;\n apiKey?: string;\n baseUrl?: string;\n fetch?: typeof globalThis.fetch;\n headers?:\n | HeadersInit\n | ((params: AIProviderStreamParams) => HeadersInit | Promise<HeadersInit>);\n imageModels?: Set<string> | string[];\n modelForCapabilities?: (model: string) => string;\n providerName?: string;\n tokenSource?: () => Promise<string> | string;\n transformRequestBody?: (\n body: Record<string, unknown>,\n params: AIProviderStreamParams,\n ) => Record<string, unknown>;\n};\n\ntype PendingFunctionCall = {\n callId: string;\n name: string;\n arguments: string;\n providerData?: Record<string, unknown>;\n};\n\ntype StreamState = {\n buffer: string;\n currentEvent: string;\n pendingCalls: Map<string, PendingFunctionCall>;\n usage: AIUsage | undefined;\n providerName: string;\n};\n\nconst DEFAULT_BASE_URL = \"https://api.openai.com\";\nconst EVENT_PREFIX_LENGTH = 7;\nconst DATA_PREFIX_LENGTH = 6;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst isRecordArray = (\n value: unknown,\n): value is Array<Record<string, unknown>> =>\n Array.isArray(value) && value.length > 0 && isRecord(value[0]);\n\n/* ─── Message conversion ─── */\n\nconst mapBlockToResponsesFormat = (block: AIProviderContentBlock) => {\n if (block.type === \"text\") {\n return { text: block.content, type: \"input_text\" };\n }\n\n // The Responses API takes input_image.image_url as a plain string (a URL or\n // data URI), and a file's URL as file_url rather than file_data.\n if (block.type === \"image\") {\n return {\n detail: \"auto\",\n image_url:\n block.source.type === \"url\"\n ? block.source.url\n : `data:${block.source.media_type};base64,${block.source.data}`,\n type: \"input_image\",\n };\n }\n\n if (block.type === \"document\") {\n return block.source.type === \"url\"\n ? { file_url: block.source.url, type: \"input_file\" }\n : {\n file_data: `data:${block.source.media_type};base64,${block.source.data}`,\n filename: block.name ?? \"document.pdf\",\n type: \"input_file\",\n };\n }\n\n if (block.type === \"audio\") {\n return {\n input_audio: { data: block.source.data, format: block.source.format },\n type: \"input_audio\",\n };\n }\n\n if (block.type === \"video\") {\n return {\n type: \"input_video\",\n video_url:\n block.source.type === \"url\"\n ? block.source.url\n : `data:${block.source.media_type};base64,${block.source.data}`,\n };\n }\n\n return null;\n};\n\nconst mapContentToResponsesFormat = (\n content: string | AIProviderContentBlock[],\n) => {\n if (typeof content === \"string\") {\n return content;\n }\n\n const parts = content\n .map(mapBlockToResponsesFormat)\n .filter((mapped) => mapped !== null);\n\n return parts.length > 0 ? parts : \"\";\n};\n\nconst hasToolBlocks = (content: AIProviderContentBlock[]) =>\n content.some(\n (block) => block.type === \"tool_use\" || block.type === \"tool_result\",\n );\n\nconst convertToolBlock = (block: AIProviderContentBlock) => {\n if (block.type === \"provider_data\" && block.provider === \"openrouter\") {\n return { ...block.data };\n }\n\n if (block.type === \"tool_use\") {\n // Replay the call without its output item `id`. With the id, OpenAI\n // requires the reasoning item that produced it, which is not replayed,\n // so every reasoning-model conversation 400s after its first tool round.\n if (block.providerData)\n return Object.fromEntries(\n Object.entries(block.providerData).filter(([key]) => key !== \"id\"),\n );\n return {\n arguments:\n typeof block.input === \"string\"\n ? block.input\n : JSON.stringify(block.input),\n call_id: block.id,\n name: block.name,\n type: \"function_call\",\n };\n }\n\n if (block.type === \"tool_result\") {\n return {\n call_id: block.tool_use_id,\n output: block.images?.length\n ? [\n { text: block.content, type: \"input_text\" },\n ...block.images.map((source) =>\n mapBlockToResponsesFormat({ source, type: \"image\" }),\n ),\n ]\n : block.content,\n type: \"function_call_output\",\n };\n }\n\n return null;\n};\n\nconst convertToolBlocks = (content: AIProviderContentBlock[]) =>\n content.map(convertToolBlock).filter((converted) => converted !== null);\n\nconst convertMessage = (msg: AIProviderMessage) => {\n if (\n typeof msg.content !== \"string\" &&\n Array.isArray(msg.content) &&\n hasToolBlocks(msg.content)\n ) {\n return convertToolBlocks(msg.content);\n }\n\n const content = mapContentToResponsesFormat(msg.content);\n\n return [\n {\n content,\n role: msg.role === \"system\" ? \"developer\" : msg.role,\n type: \"message\",\n },\n ];\n};\n\nconst buildInput = (messages: AIProviderMessage[]) => {\n const input: Array<Record<string, unknown>> = [];\n\n for (const msg of messages) {\n input.push(...convertMessage(msg));\n }\n\n return input;\n};\n\n// Strict mode requires every object to list all of its properties as\n// required and to forbid additional ones, recursively.\nconst isStrictCompatible = (schema: unknown): boolean => {\n if (Array.isArray(schema)) return schema.every(isStrictCompatible);\n if (!isRecord(schema)) return true;\n const { properties } = schema;\n if (isRecord(properties)) {\n const required = Array.isArray(schema.required) ? schema.required : [];\n if (schema.additionalProperties !== false) return false;\n if (!Object.keys(properties).every((key) => required.includes(key)))\n return false;\n }\n const nested = [schema.items, schema.anyOf];\n for (const map of [properties, schema.$defs, schema.definitions])\n if (isRecord(map)) nested.push(...Object.values(map));\n\n return nested.every(isStrictCompatible);\n};\n\n// The Responses API treats a function tool as strict unless told otherwise,\n// and a strict model fills every optional property with a placeholder\n// (`query: \" \"`, `startLine: 0`) instead of omitting it.\nconst mapToolDefinition = (tool: AIProviderToolDefinition) => ({\n description: tool.description,\n name: tool.name,\n parameters: tool.input_schema,\n strict: isStrictCompatible(tool.input_schema),\n type: \"function\",\n});\n\nconst buildTools = (\n tools: AIProviderToolDefinition[] | undefined,\n isImageModel: boolean,\n) => {\n const mapped = tools ? tools.map(mapToolDefinition) : [];\n const result: Array<Record<string, unknown>> = [...mapped];\n\n if (isImageModel) {\n result.push({ type: \"image_generation\" });\n }\n\n return result.length > 0 ? result : undefined;\n};\n\nexport const buildResponsesRequestBody = (\n params: AIProviderStreamParams,\n isImageModel: boolean,\n capabilityModel = params.model,\n) => {\n const body: Record<string, unknown> = {\n input: buildInput(params.messages),\n model: params.model,\n stream: true,\n };\n\n if (params.systemPrompt) {\n body.instructions = params.systemPrompt;\n }\n\n const tools = buildTools(params.tools, isImageModel);\n\n if (tools) {\n body.tools = tools;\n if (\n params.toolChoice === \"auto\" ||\n params.toolChoice === \"none\" ||\n params.toolChoice === \"required\"\n ) {\n body.tool_choice = params.toolChoice;\n } else if (params.toolChoice && typeof params.toolChoice === \"object\") {\n body.tool_choice = {\n name: params.toolChoice.name,\n type: \"function\",\n };\n }\n if (typeof params.parallelToolCalls === \"boolean\") {\n body.parallel_tool_calls = params.parallelToolCalls;\n }\n }\n\n // Reasoning models reject sampling parameters with a 400.\n const samples = !isOpenAIReasoningModel(capabilityModel);\n if (samples && typeof params.temperature === \"number\")\n body.temperature = params.temperature;\n if (samples && typeof params.topP === \"number\") body.top_p = params.topP;\n if (typeof params.maxTokens === \"number\")\n body.max_output_tokens = params.maxTokens;\n if (params.stopSequences && params.stopSequences.length > 0)\n body.stop = params.stopSequences;\n if (typeof params.seed === \"number\") body.seed = params.seed;\n if (typeof params.frequencyPenalty === \"number\")\n body.frequency_penalty = params.frequencyPenalty;\n if (typeof params.presencePenalty === \"number\")\n body.presence_penalty = params.presencePenalty;\n\n if (params.responseFormat) {\n if (\n params.responseFormat.type === \"text\" ||\n params.responseFormat.type === \"json_object\"\n ) {\n body.text = { format: { type: params.responseFormat.type } };\n } else if (params.responseFormat.type === \"json_schema\") {\n body.text = {\n format: {\n name: params.responseFormat.name,\n schema: params.responseFormat.schema,\n strict: params.responseFormat.strict ?? true,\n type: \"json_schema\",\n },\n };\n }\n }\n\n // Reasoning models take a `reasoning.effort` dial; non-reasoning models ignore\n // it. Effort comes from the portable `reasoning` knob, mapped per model.\n if (params.reasoning && isOpenAIReasoningModel(capabilityModel)) {\n const effort = openaiEffortValue(capabilityModel, params.reasoning);\n if (effort) {\n body.reasoning = {\n effort,\n summary: \"auto\",\n };\n }\n }\n\n return body;\n};\n\n/* ─── SSE parsing ─── */\n\nconst parseJSON = (data: string) => {\n try {\n return JSON.parse(data);\n } catch {\n return null;\n }\n};\n\nconst parseToolInput = (rawArguments: string) => {\n try {\n return JSON.parse(rawArguments);\n } catch {\n return rawArguments;\n }\n};\n\nconst extractUsage = (response: Record<string, unknown>) => {\n if (!isRecord(response.usage)) {\n return undefined;\n }\n\n const { usage } = response;\n const input = typeof usage.input_tokens === \"number\" ? usage.input_tokens : 0;\n // Total input includes cache reads and writes; report disjoint categories.\n const cached =\n isRecord(usage.input_tokens_details) &&\n typeof usage.input_tokens_details.cached_tokens === \"number\"\n ? usage.input_tokens_details.cached_tokens\n : 0;\n\n const outputDetails = isRecord(usage.output_tokens_details)\n ? usage.output_tokens_details\n : undefined;\n const inputDetails = isRecord(usage.input_tokens_details)\n ? usage.input_tokens_details\n : undefined;\n const costDetails = isRecord(usage.cost_details)\n ? usage.cost_details\n : undefined;\n const written =\n inputDetails && typeof inputDetails.cache_write_tokens === \"number\"\n ? inputDetails.cache_write_tokens\n : 0;\n const normalized: AIUsage = {\n cacheReadInputTokens: cached,\n cacheWriteInputTokens: written || undefined,\n costCredits: typeof usage.cost === \"number\" ? usage.cost : undefined,\n inputTokens: Math.max(0, input - cached - written),\n outputTokens:\n typeof usage.output_tokens === \"number\" ? usage.output_tokens : 0,\n reasoningTokens:\n outputDetails && typeof outputDetails.reasoning_tokens === \"number\"\n ? outputDetails.reasoning_tokens\n : undefined,\n upstreamInferenceCostCredits:\n costDetails && typeof costDetails.upstream_inference_cost === \"number\"\n ? costDetails.upstream_inference_cost\n : undefined,\n };\n if (isRecord(usage.server_tool_use)) {\n normalized.serverToolUse = Object.fromEntries(\n Object.entries(usage.server_tool_use).filter(\n (entry): entry is [string, number] => typeof entry[1] === \"number\",\n ),\n );\n }\n\n return normalized;\n};\n\nconst extractResponseMetadata = (\n response: Record<string, unknown>,\n): AIResponseMetadata | undefined => {\n const providerMetadata = isRecord(response.openrouter_metadata)\n ? response.openrouter_metadata\n : undefined;\n const generationId =\n typeof response.id === \"string\" ? response.id : undefined;\n const model = typeof response.model === \"string\" ? response.model : undefined;\n const provider =\n typeof response.provider === \"string\" ? response.provider : undefined;\n const serviceTier =\n typeof response.service_tier === \"string\"\n ? response.service_tier\n : undefined;\n if (!providerMetadata && !generationId && !model && !provider && !serviceTier)\n return;\n return { generationId, model, provider, providerMetadata, serviceTier };\n};\n\nconst extractMimeFormat = (mimeType: unknown) => {\n if (typeof mimeType !== \"string\") {\n return \"png\";\n }\n\n if (mimeType.includes(\"jpeg\")) return \"jpeg\";\n if (mimeType.includes(\"webp\")) return \"webp\";\n\n return \"png\";\n};\n\nconst processTextDelta = function* (parsed: Record<string, unknown>) {\n if (typeof parsed.delta === \"string\") {\n yield { content: parsed.delta, type: \"text\" as const };\n }\n};\n\nconst processPartialImage = function* (parsed: Record<string, unknown>) {\n const itemId =\n typeof parsed.item_id === \"string\" ? parsed.item_id : undefined;\n const b64 =\n typeof parsed.partial_image_b64 === \"string\"\n ? parsed.partial_image_b64\n : undefined;\n\n if (b64) {\n yield {\n data: b64,\n format: \"png\",\n imageId: itemId,\n isPartial: true,\n type: \"image\" as const,\n };\n }\n};\n\nconst processFunctionCallArgumentsDelta = (\n parsed: Record<string, unknown>,\n pendingCalls: Map<string, PendingFunctionCall>,\n) => {\n const itemId = typeof parsed.item_id === \"string\" ? parsed.item_id : \"\";\n const callId = typeof parsed.call_id === \"string\" ? parsed.call_id : \"\";\n const delta =\n typeof parsed.arguments_delta === \"string\" ? parsed.arguments_delta : \"\";\n\n const existing = pendingCalls.get(itemId);\n\n if (existing) {\n existing.arguments += delta;\n } else {\n pendingCalls.set(itemId, {\n arguments: delta,\n callId,\n name: \"\",\n });\n }\n};\n\nconst processFunctionCallArgumentsDone = function* (\n parsed: Record<string, unknown>,\n pendingCalls: Map<string, PendingFunctionCall>,\n) {\n const itemId = typeof parsed.item_id === \"string\" ? parsed.item_id : \"\";\n const callId = typeof parsed.call_id === \"string\" ? parsed.call_id : \"\";\n const fullArgs = typeof parsed.arguments === \"string\" ? parsed.arguments : \"\";\n\n const pending = pendingCalls.get(itemId);\n const name = pending?.name ?? \"\";\n const args = fullArgs || pending?.arguments || \"\";\n\n pendingCalls.delete(itemId);\n\n yield {\n id: callId || pending?.callId || itemId,\n input: parseToolInput(args),\n name,\n providerData: pending?.providerData\n ? { ...pending.providerData, arguments: args }\n : undefined,\n type: \"tool_use\" as const,\n };\n};\n\nconst processOutputItemAdded = (\n parsed: Record<string, unknown>,\n pendingCalls: Map<string, PendingFunctionCall>,\n) => {\n if (!isRecord(parsed.item)) {\n return;\n }\n\n const { item } = parsed;\n const itemId = typeof item.id === \"string\" ? item.id : \"\";\n const itemType = typeof item.type === \"string\" ? item.type : \"\";\n\n if (itemType !== \"function_call\") {\n return;\n }\n\n const callId = typeof item.call_id === \"string\" ? item.call_id : \"\";\n const name = typeof item.name === \"string\" ? item.name : \"\";\n\n pendingCalls.set(itemId, {\n arguments: \"\",\n callId,\n name,\n providerData: { ...item },\n });\n};\n\nconst processOutputItemDone = function* (parsed: Record<string, unknown>) {\n if (!isRecord(parsed.item) || typeof parsed.item.type !== \"string\") return;\n if (!parsed.item.type.startsWith(\"openrouter:\")) return;\n yield {\n data: { ...parsed.item },\n provider: \"openrouter\",\n type: \"provider_event\" as const,\n };\n};\n\nconst isCompletedImageGeneration = (item: Record<string, unknown>) =>\n item.type === \"image_generation_call\" &&\n item.status === \"completed\" &&\n typeof item.result === \"string\" &&\n item.result !== \"\";\n\nconst buildImageChunk = (item: Record<string, unknown>) => ({\n data: typeof item.result === \"string\" ? item.result : \"\",\n format: extractMimeFormat(item.output_format),\n imageId: typeof item.id === \"string\" ? item.id : undefined,\n isPartial: false,\n revisedPrompt:\n typeof item.revised_prompt === \"string\" ? item.revised_prompt : undefined,\n type: \"image\" as const,\n});\n\nconst extractImageFromOutput = function* (\n output: Array<Record<string, unknown>>,\n) {\n const completedImages = output.filter(isCompletedImageGeneration);\n\n for (const item of completedImages) {\n yield buildImageChunk(item);\n }\n};\n\nconst extractCitationsFromOutput = function* (\n output: Array<Record<string, unknown>>,\n) {\n for (const item of output) {\n if (!isRecordArray(item.content)) continue;\n for (const content of item.content) {\n if (!Array.isArray(content.annotations)) continue;\n for (const annotation of content.annotations) {\n if (!isRecord(annotation) || annotation.type !== \"url_citation\")\n continue;\n if (typeof annotation.url !== \"string\") continue;\n yield {\n content:\n typeof annotation.content === \"string\"\n ? annotation.content\n : undefined,\n endIndex:\n typeof annotation.end_index === \"number\"\n ? annotation.end_index\n : undefined,\n startIndex:\n typeof annotation.start_index === \"number\"\n ? annotation.start_index\n : undefined,\n title:\n typeof annotation.title === \"string\" ? annotation.title : undefined,\n type: \"citation\" as const,\n url: annotation.url,\n };\n }\n }\n }\n};\n\nconst processCompleted = function* (parsed: Record<string, unknown>) {\n if (!isRecord(parsed.response)) {\n yield { type: \"done\" as const, usage: undefined };\n\n return;\n }\n\n const { response } = parsed;\n const usage = extractUsage(response);\n const metadata = extractResponseMetadata(response);\n\n if (usage)\n yield { type: \"usage_update\" as const, usage, metadata, final: true };\n\n if (isRecordArray(response.output)) {\n yield* extractCitationsFromOutput(response.output);\n yield* extractImageFromOutput(response.output);\n }\n\n yield { metadata, type: \"done\" as const, usage };\n};\n\nconst responseFailure = (\n eventType: string,\n parsed: Record<string, unknown>,\n providerName: string,\n) => {\n const response = isRecord(parsed.response) ? parsed.response : parsed;\n const error = isRecord(response.error) ? response.error : undefined;\n const type =\n typeof response.error_type === \"string\"\n ? response.error_type\n : error && typeof error.code === \"string\"\n ? error.code\n : eventType;\n return new ProviderError({\n message:\n error && typeof error.message === \"string\"\n ? error.message\n : `OpenRouter Responses API: ${eventType}`,\n metadata: response,\n provider: providerName,\n retryable:\n type === \"rate_limit_exceeded\" ||\n type === \"provider_overloaded\" ||\n type === \"provider_unavailable\" ||\n type === \"server\",\n type,\n });\n};\n\nconst processSSEEvent = function* (\n eventType: string,\n parsed: Record<string, unknown>,\n pendingCalls: Map<string, PendingFunctionCall>,\n providerName: string,\n) {\n switch (eventType) {\n case \"response.reasoning_summary_text.delta\": {\n const delta = typeof parsed.delta === \"string\" ? parsed.delta : \"\";\n if (!delta) break;\n\n yield {\n content: delta,\n type: \"thinking\" as const,\n };\n\n break;\n }\n\n case \"response.output_text.delta\":\n yield* processTextDelta(parsed);\n break;\n\n case \"response.image_generation_call.partial_image\":\n yield* processPartialImage(parsed);\n break;\n\n case \"response.output_item.added\":\n processOutputItemAdded(parsed, pendingCalls);\n if (\n isRecord(parsed.item) &&\n parsed.item.type === \"function_call\" &&\n typeof parsed.item.name === \"string\"\n ) {\n const id =\n typeof parsed.item.call_id === \"string\"\n ? parsed.item.call_id\n : parsed.item.id;\n if (typeof id === \"string\")\n yield {\n type: \"tool_input_start\" as const,\n id,\n name: parsed.item.name,\n };\n }\n break;\n\n case \"response.output_item.done\":\n yield* processOutputItemDone(parsed);\n break;\n\n case \"response.function_call_arguments.delta\":\n processFunctionCallArgumentsDelta(parsed, pendingCalls);\n break;\n\n case \"response.function_call_arguments.done\":\n yield* processFunctionCallArgumentsDone(parsed, pendingCalls);\n break;\n\n case \"response.completed\":\n yield* processCompleted(parsed);\n break;\n\n case \"response.failed\":\n case \"response.incomplete\":\n case \"response.error\":\n case \"error\": {\n if (isRecord(parsed.response)) {\n const usage = extractUsage(parsed.response);\n if (usage)\n yield {\n type: \"usage_update\" as const,\n usage,\n metadata: extractResponseMetadata(parsed.response),\n final: false,\n };\n }\n throw responseFailure(eventType, parsed, providerName);\n }\n }\n};\n\nconst flushSSEBuffer = function* (state: StreamState) {\n if (!state.currentEvent || !state.buffer) {\n return;\n }\n\n const parsed = parseJSON(state.buffer);\n\n if (parsed) {\n yield* processSSEEvent(\n state.currentEvent,\n parsed,\n state.pendingCalls,\n state.providerName,\n );\n }\n\n state.currentEvent = \"\";\n state.buffer = \"\";\n};\n\nconst parseSSELine = (trimmed: string, state: StreamState) => {\n if (trimmed.startsWith(\"event: \")) {\n state.currentEvent = trimmed.slice(EVENT_PREFIX_LENGTH);\n } else if (trimmed.startsWith(\"data: \")) {\n state.buffer = trimmed.slice(DATA_PREFIX_LENGTH);\n }\n};\n\nconst processSSELine = function* (line: string, state: StreamState) {\n const trimmed = line.trim();\n\n if (trimmed) {\n parseSSELine(trimmed, state);\n\n return;\n }\n\n yield* flushSSEBuffer(state);\n};\n\nconst processSSELines = function* (lines: string[], state: StreamState) {\n for (const line of lines) {\n yield* processSSELine(line, state);\n }\n};\n\nconst drainReader = async function* (\n reader: ReadableStreamDefaultReader<Uint8Array>,\n decoder: TextDecoder,\n state: StreamState,\n signal?: AbortSignal,\n) {\n let textBuffer = \"\";\n\n for (\n let result = await reader.read();\n !result.done && !signal?.aborted;\n // eslint-disable-next-line no-await-in-loop\n result = await reader.read()\n ) {\n textBuffer += decoder.decode(result.value, { stream: true });\n const lines = textBuffer.split(\"\\n\");\n textBuffer = lines.pop() ?? \"\";\n\n yield* processSSELines(lines, state);\n }\n\n if (textBuffer.trim()) {\n yield* processSSELines([textBuffer, \"\"], state);\n }\n};\n\nconst parseSSEStream = async function* (\n body: ReadableStream<Uint8Array>,\n providerName: string,\n signal?: AbortSignal,\n) {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n const state: StreamState = {\n buffer: \"\",\n currentEvent: \"\",\n pendingCalls: new Map(),\n usage: undefined,\n providerName,\n };\n\n try {\n yield* drainReader(reader, decoder, state, signal);\n yield* flushSSEBuffer(state);\n } finally {\n reader.releaseLock();\n }\n};\n\nconst fetchResponsesStream = async function* (\n baseUrl: string,\n apiKey: string,\n body: Record<string, unknown>,\n fetchImpl: typeof globalThis.fetch,\n headers: HeadersInit,\n providerName: string,\n signal?: AbortSignal,\n) {\n const target = `${baseUrl}/v1/responses`;\n const requestHeaders = new Headers(headers);\n requestHeaders.set(\"Authorization\", `Bearer ${apiKey}`);\n requestHeaders.set(\"Content-Type\", \"application/json\");\n const response = await fetchImpl(target, {\n ...h2IfHttps(target),\n body: JSON.stringify(body),\n headers: requestHeaders,\n method: \"POST\",\n signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw ProviderError.fromResponse(providerName, response.status, errorText);\n }\n\n if (!response.body) {\n throw new ProviderError({\n message: `${providerName} Responses API returned no response body`,\n provider: providerName,\n retryable: true,\n });\n }\n\n yield* parseSSEStream(response.body, providerName, signal);\n};\n\nconst resolveImageModels = (\n imageModels: Set<string> | string[] | undefined,\n) => {\n if (!imageModels) {\n return new Set<string>();\n }\n\n if (imageModels instanceof Set) {\n return imageModels;\n }\n\n return new Set(imageModels);\n};\n\nexport const openaiResponses = (config: OpenAIResponsesConfig) => {\n if (!config.apiKey && !config.tokenSource)\n throw new Error(\"openaiResponses() requires either apiKey or tokenSource\");\n const baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n const fetchImpl = config.fetch ?? globalThis.fetch;\n const imageModels = resolveImageModels(config.imageModels);\n const providerName = config.providerName ?? \"openai-responses\";\n const resolveKey = async () =>\n config.tokenSource\n ? await Promise.resolve(config.tokenSource())\n : config.apiKey!;\n const resolveHeaders = async (params: AIProviderStreamParams) =>\n typeof config.headers === \"function\"\n ? await config.headers(params)\n : (config.headers ?? {});\n\n return instrumentAIProvider(\n {\n inputCapacity: openaiInputCapacity({\n baseUrl,\n fetch: fetchImpl,\n key: resolveKey,\n headers: resolveHeaders,\n modelLimits: config.modelLimits,\n body: (params) => {\n const built = buildResponsesRequestBody(\n params,\n imageModels.has(params.model),\n config.modelForCapabilities?.(params.model) ?? params.model,\n );\n return config.transformRequestBody\n ? config.transformRequestBody(built, params)\n : built;\n },\n }),\n stream: (params: AIProviderStreamParams) => {\n const isImageModel = imageModels.has(params.model);\n const builtBody = buildResponsesRequestBody(\n params,\n isImageModel,\n config.modelForCapabilities?.(params.model) ?? params.model,\n );\n const body = config.transformRequestBody\n ? config.transformRequestBody(builtBody, params)\n : builtBody;\n return (async function* () {\n const [apiKey, headers] = await Promise.all([\n resolveKey(),\n resolveHeaders(params),\n ]);\n yield* fetchResponsesStream(\n baseUrl,\n apiKey,\n body,\n fetchImpl,\n headers,\n providerName,\n params.signal,\n );\n })();\n },\n } satisfies AIProviderConfig,\n providerName,\n );\n};\n",
37
39
  "import type {\n AIImageSource,\n AIProviderConfig,\n AIProviderContentBlock,\n AIProviderMessage,\n AIProviderStreamParams,\n AIProviderToolDefinition,\n AIResponseMetadata,\n AIUsage,\n} from \"../../../types/ai\";\n\n// Opportunistic HTTP/2 multiplexing for outbound HTTPS (Bun 1.3.14+).\n// The `protocol` option lands in @types/bun 1.3.14; widen locally for now.\nimport { openaiInputCapacity } from \"./openaiCapacity\";\nimport { buildResponsesRequestBody } from \"./openaiResponses\";\nimport { instrumentAIProvider } from \"./instrumentation\";\nimport { ProviderError } from \"../errors/providerError\";\nimport {\n compatibleReasoningBody,\n isOpenAIReasoningModel,\n openaiEffortValue,\n} from \"./reasoning\";\n// Hard-skip on non-HTTPS — Bun's h2 client throws HTTP2Unsupported on h2c.\ntype H2Init = RequestInit & { protocol?: \"http2\" };\nconst h2IfHttps = (url: string): H2Init =>\n url.startsWith(\"https://\") ? { protocol: \"http2\" } : {};\n\nexport type OpenAIConfig = {\n modelLimits?: (\n params: AIProviderStreamParams,\n ) => Promise<import(\"../inputCapacity\").AIModelLimits>;\n apiKey?: string;\n baseUrl?: string;\n fetch?: typeof globalThis.fetch;\n headers?:\n | HeadersInit\n | ((params: AIProviderStreamParams) => HeadersInit | Promise<HeadersInit>);\n modelForCapabilities?: (model: string) => string;\n providerName?: string;\n tokenSource?: () => Promise<string> | string;\n transformRequestBody?: (\n body: Record<string, unknown>,\n params: AIProviderStreamParams,\n ) => Record<string, unknown>;\n};\n\ntype OpenAIMessage = {\n reasoning_content?: string;\n content: string | Array<Record<string, unknown>> | null;\n role: \"user\" | \"assistant\" | \"system\" | \"tool\";\n tool_call_id?: string;\n tool_calls?: Array<{\n function: { arguments: string; name: string };\n id: string;\n type: \"function\";\n }>;\n};\n\ntype PendingToolCall = {\n arguments: string;\n id: string;\n name: string;\n};\n\ntype UsageRef = {\n current: AIUsage | undefined;\n};\n\ntype MetadataRef = {\n current: AIResponseMetadata | undefined;\n};\n\ntype StreamState = {\n buffer: string;\n metadataRef: MetadataRef;\n pendingToolCalls: Map<number, PendingToolCall>;\n providerName: string;\n usageRef: UsageRef;\n};\n\nconst DEFAULT_BASE_URL = \"https://api.openai.com\";\nconst SSE_DATA_PREFIX_LENGTH = 6;\nconst DONE_SENTINEL = \"[DONE]\";\nconst NOT_FOUND = -1;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst isRecordArray = (\n value: unknown,\n): value is Array<Record<string, unknown>> =>\n Array.isArray(value) && value.length > 0 && isRecord(value[0]);\n\nconst hasArrayContent = (\n msg: AIProviderMessage,\n): msg is AIProviderMessage & { content: AIProviderContentBlock[] } =>\n typeof msg.content !== \"string\" && Array.isArray(msg.content);\n\nconst imageUrl = (source: AIImageSource) =>\n source.type === \"url\"\n ? source.url\n : `data:${source.media_type};base64,${source.data}`;\n\nconst buildToolMessages = (blocks: AIProviderContentBlock[]) => {\n const toolUseBlocks = blocks.filter((block) => block.type === \"tool_use\");\n const toolResultBlocks = blocks.filter(\n (block) => block.type === \"tool_result\",\n );\n const messages: OpenAIMessage[] = [];\n\n if (toolUseBlocks.length > 0) {\n messages.push({\n content: null,\n role: \"assistant\",\n tool_calls: toolUseBlocks.map((block) => ({\n function: {\n arguments:\n typeof block.input === \"string\"\n ? block.input\n : JSON.stringify(block.input),\n name: block.name,\n },\n id: block.id,\n type: \"function\" as const,\n })),\n });\n }\n\n for (const result of toolResultBlocks) {\n messages.push({\n content: typeof result.content === \"string\" ? result.content : \"\",\n role: \"tool\",\n tool_call_id: result.tool_use_id,\n });\n }\n\n // Tool messages carry text only, and must directly follow the tool calls,\n // so images a tool returned follow them in one user message.\n const images = toolResultBlocks.flatMap((result) => result.images ?? []);\n if (images.length > 0)\n messages.push({\n content: [\n { text: \"Images returned by the tool calls above:\", type: \"text\" },\n ...images.map((source) => ({\n image_url: { url: imageUrl(source) },\n type: \"image_url\",\n })),\n ],\n role: \"user\",\n });\n\n return messages;\n};\n\nconst mapToolDefinitions = (tools: AIProviderToolDefinition[]) =>\n tools.map((tool) => ({\n function: {\n description: tool.description,\n name: tool.name,\n parameters: tool.input_schema,\n },\n type: \"function\",\n }));\n\nconst mapContentBlockToOpenAI = (block: AIProviderContentBlock) => {\n if (block.type === \"image\") {\n return {\n image_url: { url: imageUrl(block.source) },\n type: \"image_url\",\n };\n }\n\n if (block.type === \"document\") {\n return {\n file: {\n file_data:\n block.source.type === \"url\"\n ? block.source.url\n : `data:${block.source.media_type};base64,${block.source.data}`,\n filename: block.name ?? \"document.pdf\",\n },\n type: \"file\",\n };\n }\n\n if (block.type === \"audio\") {\n return {\n input_audio: { data: block.source.data, format: block.source.format },\n type: \"input_audio\",\n };\n }\n\n if (block.type === \"video\") {\n return {\n type: \"video_url\",\n video_url: {\n url:\n block.source.type === \"url\"\n ? block.source.url\n : `data:${block.source.media_type};base64,${block.source.data}`,\n },\n };\n }\n\n if (block.type === \"text\") {\n return { text: block.content, type: \"text\" };\n }\n\n return null;\n};\n\nconst mapOpenAIContent = (msg: AIProviderStreamParams[\"messages\"][number]) => {\n if (typeof msg.content === \"string\") {\n return msg.content;\n }\n\n const hasMedia = msg.content.some(\n (block) =>\n block.type === \"image\" ||\n block.type === \"document\" ||\n block.type === \"audio\" ||\n block.type === \"video\",\n );\n\n if (!hasMedia) {\n return (\n msg.content\n .filter((block) => block.type === \"text\")\n .map((block) => block.content)\n .join(\"\") || null\n );\n }\n\n return msg.content\n .map(mapContentBlockToOpenAI)\n .filter((mapped) => mapped !== null);\n};\n\nconst buildRequestBody = (\n params: AIProviderStreamParams,\n capabilityModel = params.model,\n providerName = \"openai\",\n) => {\n // Expand each original message independently. Splicing forwards by the\n // original index overwrites results when a prior message expands to several.\n const messages: OpenAIMessage[] = params.messages.flatMap((msg) => {\n const mapped: OpenAIMessage[] =\n hasArrayContent(msg) &&\n msg.content.some(\n (block) => block.type === \"tool_use\" || block.type === \"tool_result\",\n )\n ? buildToolMessages(msg.content)\n : [{ content: mapOpenAIContent(msg), role: msg.role }];\n if (hasArrayContent(msg) && msg.role === \"assistant\") {\n const assistant = mapped.find((message) => message.role === \"assistant\");\n if (assistant) {\n assistant.content = mapOpenAIContent(msg);\n const thinking = msg.content\n .filter((block) => block.type === \"thinking\")\n .map((block) => block.thinking)\n .join(\"\");\n if (\n thinking &&\n [\"deepseek\", \"moonshot\", \"alibaba\"].includes(providerName)\n )\n assistant.reasoning_content = thinking;\n if (thinking && providerName === \"mistral\")\n assistant.content = [\n { type: \"thinking\", thinking: [{ type: \"text\", text: thinking }] },\n ...(typeof assistant.content === \"string\" && assistant.content\n ? [{ type: \"text\", text: assistant.content }]\n : []),\n ];\n }\n }\n return mapped;\n });\n\n if (params.systemPrompt) {\n messages.unshift({ content: params.systemPrompt, role: \"system\" });\n }\n\n const body: Record<string, unknown> = {\n messages,\n model: params.model,\n stream: true,\n stream_options: { include_usage: true },\n };\n\n if (params.tools && params.tools.length > 0) {\n body.tools = mapToolDefinitions(params.tools);\n if (\n params.toolChoice === \"auto\" ||\n params.toolChoice === \"none\" ||\n params.toolChoice === \"required\"\n ) {\n body.tool_choice = params.toolChoice;\n } else if (params.toolChoice && typeof params.toolChoice === \"object\") {\n body.tool_choice = {\n function: { name: params.toolChoice.name },\n type: \"function\",\n };\n }\n if (typeof params.parallelToolCalls === \"boolean\") {\n body.parallel_tool_calls = params.parallelToolCalls;\n }\n }\n\n // Reasoning models (o-series, GPT-5) reject temperature/top_p and use\n // `max_completion_tokens`; they take a `reasoning_effort` dial instead. Other\n // models take the usual sampling params and ignore reasoning.\n if (isOpenAIReasoningModel(capabilityModel)) {\n if (typeof params.maxTokens === \"number\") {\n body.max_completion_tokens = params.maxTokens;\n }\n if (params.reasoning) {\n const effort = openaiEffortValue(capabilityModel, params.reasoning);\n if (effort) body.reasoning_effort = effort;\n }\n } else {\n if (typeof params.temperature === \"number\") {\n body.temperature = params.temperature;\n }\n if (typeof params.topP === \"number\") body.top_p = params.topP;\n if (typeof params.maxTokens === \"number\")\n body.max_tokens = params.maxTokens;\n }\n if (providerName !== \"openai\")\n Object.assign(\n body,\n compatibleReasoningBody(providerName, params.model, params.reasoning),\n );\n if (params.stopSequences && params.stopSequences.length > 0)\n body.stop = params.stopSequences;\n if (typeof params.seed === \"number\") body.seed = params.seed;\n if (typeof params.frequencyPenalty === \"number\")\n body.frequency_penalty = params.frequencyPenalty;\n if (typeof params.presencePenalty === \"number\")\n body.presence_penalty = params.presencePenalty;\n\n if (params.responseFormat) {\n if (\n params.responseFormat.type === \"text\" ||\n params.responseFormat.type === \"json_object\"\n ) {\n body.response_format = { type: params.responseFormat.type };\n } else if (params.responseFormat.type === \"json_schema\") {\n body.response_format = {\n json_schema: {\n name: params.responseFormat.name,\n schema: params.responseFormat.schema,\n strict: params.responseFormat.strict ?? true,\n },\n type: \"json_schema\",\n };\n }\n }\n\n return body;\n};\n\nconst parseToolInput = (rawArguments: string) => {\n try {\n return JSON.parse(rawArguments);\n } catch {\n return rawArguments;\n }\n};\n\nconst flushPendingToolCalls = function* (\n pendingToolCalls: Map<number, PendingToolCall>,\n) {\n for (const [, tool] of pendingToolCalls) {\n const input = parseToolInput(tool.arguments);\n yield {\n id: tool.id,\n input,\n name: tool.name,\n type: \"tool_use\" as const,\n };\n }\n\n pendingToolCalls.clear();\n};\n\nconst extractUsage = (\n parsedUsage: Partial<Record<string, number>>,\n): AIUsage => {\n const prompt = parsedUsage.prompt_tokens ?? 0;\n const cached = parsedUsage.cached_tokens ?? 0;\n const written = parsedUsage.cache_write_tokens ?? 0;\n\n // Total input includes cache reads and writes. Keep all three categories\n // disjoint so consumers can apply each model's actual price exactly once.\n return {\n cacheReadInputTokens: cached,\n cacheWriteInputTokens: written || undefined,\n costCredits: parsedUsage.cost,\n inputTokens: Math.max(0, prompt - cached - written),\n outputTokens: parsedUsage.completion_tokens ?? 0,\n reasoningTokens: parsedUsage.reasoning_tokens || undefined,\n upstreamInferenceCostCredits:\n parsedUsage.upstream_inference_cost || undefined,\n };\n};\n\nconst resolveToolCallIndex = (toolCall: Record<string, unknown>) => {\n const raw = typeof toolCall.index === \"number\" ? toolCall.index : NOT_FOUND;\n\n return raw < 0 ? undefined : raw;\n};\n\nconst initPendingToolCall = (\n toolCall: Record<string, unknown>,\n func: Record<string, unknown> | null,\n index: number,\n pendingToolCalls: Map<number, PendingToolCall>,\n) => {\n if (pendingToolCalls.has(index)) {\n return;\n }\n\n const toolId = typeof toolCall.id === \"string\" ? toolCall.id : \"\";\n const toolName = func && typeof func.name === \"string\" ? func.name : \"\";\n\n pendingToolCalls.set(index, {\n arguments: \"\",\n id: toolId,\n name: toolName,\n });\n};\n\nconst updatePendingToolCall = (\n toolCall: Record<string, unknown>,\n func: Record<string, unknown> | null,\n pending: PendingToolCall,\n) => {\n if (typeof toolCall.id === \"string\") {\n pending.id = toolCall.id;\n }\n\n if (func && typeof func.name === \"string\") {\n pending.name = func.name;\n }\n\n if (func && typeof func.arguments === \"string\") {\n pending.arguments += func.arguments;\n }\n};\n\nconst processToolCallDelta = (\n toolCall: Record<string, unknown>,\n pendingToolCalls: Map<number, PendingToolCall>,\n) => {\n const index = resolveToolCallIndex(toolCall);\n if (index === undefined) {\n return;\n }\n\n const func = isRecord(toolCall.function) ? toolCall.function : null;\n initPendingToolCall(toolCall, func, index, pendingToolCalls);\n\n const pending = pendingToolCalls.get(index);\n if (!pending) {\n return;\n }\n\n updatePendingToolCall(toolCall, func, pending);\n};\n\nconst processToolCallDeltas = (\n toolCalls: Array<Record<string, unknown>>,\n pendingToolCalls: Map<number, PendingToolCall>,\n) => {\n for (const toolCall of toolCalls) {\n processToolCallDelta(toolCall, pendingToolCalls);\n }\n};\n\nconst processDelta = function* (\n delta: Record<string, unknown>,\n pendingToolCalls: Map<number, PendingToolCall>,\n) {\n if (typeof delta.reasoning_content === \"string\")\n yield { type: \"thinking\" as const, content: delta.reasoning_content };\n if (Array.isArray(delta.content)) {\n for (const part of delta.content) {\n if (!isRecord(part)) continue;\n if (part.type === \"text\" && typeof part.text === \"string\")\n yield { type: \"text\" as const, content: part.text };\n if (part.type === \"thinking\" && Array.isArray(part.thinking)) {\n for (const thought of part.thinking)\n if (isRecord(thought) && typeof thought.text === \"string\")\n yield { type: \"thinking\" as const, content: thought.text };\n }\n }\n }\n if (typeof delta.content === \"string\") {\n yield { content: delta.content, type: \"text\" as const };\n }\n\n if (isRecord(delta.audio)) {\n const audio = delta.audio;\n if (\n typeof audio.data === \"string\" ||\n typeof audio.transcript === \"string\"\n ) {\n yield {\n audioId: typeof audio.id === \"string\" ? audio.id : undefined,\n data: typeof audio.data === \"string\" ? audio.data : \"\",\n format: typeof audio.format === \"string\" ? audio.format : \"pcm16\",\n transcript:\n typeof audio.transcript === \"string\" ? audio.transcript : undefined,\n type: \"audio\" as const,\n };\n }\n }\n\n if (isRecordArray(delta.tool_calls)) {\n processToolCallDeltas(delta.tool_calls, pendingToolCalls);\n for (const call of delta.tool_calls) {\n if (\n isRecord(call.function) &&\n typeof call.function.name === \"string\" &&\n call.function.name\n )\n yield {\n type: \"tool_input_start\" as const,\n id: typeof call.id === \"string\" ? call.id : String(call.index),\n name: call.function.name,\n };\n }\n }\n\n if (Array.isArray(delta.annotations)) {\n for (const annotation of delta.annotations) {\n if (!isRecord(annotation) || annotation.type !== \"url_citation\") continue;\n const citation = isRecord(annotation.url_citation)\n ? annotation.url_citation\n : annotation;\n if (typeof citation.url !== \"string\") continue;\n yield {\n content:\n typeof citation.content === \"string\" ? citation.content : undefined,\n endIndex:\n typeof citation.end_index === \"number\"\n ? citation.end_index\n : undefined,\n startIndex:\n typeof citation.start_index === \"number\"\n ? citation.start_index\n : undefined,\n title: typeof citation.title === \"string\" ? citation.title : undefined,\n type: \"citation\" as const,\n url: citation.url,\n };\n }\n }\n};\n\nconst narrowResponseMetadata = (\n parsed: Record<string, unknown>,\n): AIResponseMetadata | undefined => {\n const providerMetadata = isRecord(parsed.openrouter_metadata)\n ? parsed.openrouter_metadata\n : undefined;\n const generationId = typeof parsed.id === \"string\" ? parsed.id : undefined;\n const model = typeof parsed.model === \"string\" ? parsed.model : undefined;\n const serviceTier =\n typeof parsed.service_tier === \"string\" ? parsed.service_tier : undefined;\n const selected =\n providerMetadata && isRecord(providerMetadata.endpoints)\n ? providerMetadata.endpoints.available\n : undefined;\n const selectedEndpoint = Array.isArray(selected)\n ? selected.find((entry) => isRecord(entry) && entry.selected === true)\n : undefined;\n const provider =\n isRecord(selectedEndpoint) && typeof selectedEndpoint.provider === \"string\"\n ? selectedEndpoint.provider\n : undefined;\n if (!providerMetadata && !generationId && !model && !serviceTier) return;\n\n return { generationId, model, provider, providerMetadata, serviceTier };\n};\n\nconst processChoice = function* (\n choice: Record<string, unknown>,\n pendingToolCalls: Map<number, PendingToolCall>,\n) {\n const delta = isRecord(choice.delta) ? choice.delta : null;\n if (delta) {\n yield* processDelta(delta, pendingToolCalls);\n }\n\n if (choice.finish_reason === \"tool_calls\") {\n yield* flushPendingToolCalls(pendingToolCalls);\n }\n};\n\nconst narrowUsageRecord = (parsed: Record<string, unknown>) => {\n if (!isRecord(parsed.usage)) {\n return undefined;\n }\n\n const { usage } = parsed;\n const promptTokens =\n typeof usage.prompt_tokens === \"number\" ? usage.prompt_tokens : 0;\n const completionTokens =\n typeof usage.completion_tokens === \"number\" ? usage.completion_tokens : 0;\n const cachedTokens =\n isRecord(usage.prompt_tokens_details) &&\n typeof usage.prompt_tokens_details.cached_tokens === \"number\"\n ? usage.prompt_tokens_details.cached_tokens\n : 0;\n const cacheWriteTokens =\n isRecord(usage.prompt_tokens_details) &&\n typeof usage.prompt_tokens_details.cache_write_tokens === \"number\"\n ? usage.prompt_tokens_details.cache_write_tokens\n : 0;\n const reasoningTokens =\n isRecord(usage.completion_tokens_details) &&\n typeof usage.completion_tokens_details.reasoning_tokens === \"number\"\n ? usage.completion_tokens_details.reasoning_tokens\n : 0;\n const cost = typeof usage.cost === \"number\" ? usage.cost : undefined;\n const upstreamInferenceCost =\n isRecord(usage.cost_details) &&\n typeof usage.cost_details.upstream_inference_cost === \"number\"\n ? usage.cost_details.upstream_inference_cost\n : undefined;\n\n const normalized = extractUsage({\n cache_write_tokens: cacheWriteTokens,\n cached_tokens: cachedTokens,\n completion_tokens: completionTokens,\n cost,\n prompt_tokens: promptTokens,\n reasoning_tokens: reasoningTokens,\n upstream_inference_cost: upstreamInferenceCost,\n });\n if (isRecord(usage.server_tool_use)) {\n normalized.serverToolUse = Object.fromEntries(\n Object.entries(usage.server_tool_use).filter(\n (entry): entry is [string, number] => typeof entry[1] === \"number\",\n ),\n );\n }\n\n return normalized;\n};\n\nconst processSSELine = function* (\n line: string,\n pendingToolCalls: Map<number, PendingToolCall>,\n providerName: string,\n) {\n const trimmed = line.trim();\n if (!trimmed || !trimmed.startsWith(\"data: \")) {\n return;\n }\n\n const data = trimmed.slice(SSE_DATA_PREFIX_LENGTH);\n if (data === DONE_SENTINEL) {\n yield* flushPendingToolCalls(pendingToolCalls);\n\n return;\n }\n\n let parsed: Record<string, unknown>;\n try {\n parsed = JSON.parse(data);\n } catch {\n return;\n }\n\n if (isRecord(parsed.error)) {\n const error = parsed.error;\n const metadata = isRecord(error.metadata) ? error.metadata : undefined;\n const status = typeof error.code === \"number\" ? error.code : null;\n const type =\n metadata && typeof metadata.error_type === \"string\"\n ? metadata.error_type\n : typeof error.error_type === \"string\"\n ? error.error_type\n : null;\n throw new ProviderError({\n message:\n typeof error.message === \"string\"\n ? error.message\n : \"OpenRouter stream failed\",\n metadata,\n provider: providerName,\n retryable:\n status === 408 ||\n status === 409 ||\n status === 425 ||\n status === 429 ||\n (status !== null && status >= 500),\n status,\n type,\n });\n }\n\n const usageUpdate = narrowUsageRecord(parsed);\n if (usageUpdate) {\n yield {\n type: \"usage_update\" as const,\n usage: usageUpdate,\n final: Array.isArray(parsed.choices) && parsed.choices.length === 0,\n metadata: narrowResponseMetadata(parsed),\n };\n }\n\n const metadata = narrowResponseMetadata(parsed);\n if (metadata) {\n yield { metadata, type: \"response_metadata\" as const };\n }\n\n const { choices } = parsed;\n if (!isRecordArray(choices)) {\n return;\n }\n\n const [firstChoice] = choices;\n if (!firstChoice) {\n return;\n }\n\n if (isRecord(firstChoice.error)) {\n const error = firstChoice.error;\n const metadata = isRecord(error.metadata) ? error.metadata : undefined;\n const status = typeof error.code === \"number\" ? error.code : null;\n throw new ProviderError({\n message:\n typeof error.message === \"string\"\n ? error.message\n : \"OpenRouter stream failed\",\n metadata,\n provider: providerName,\n retryable: status === 429 || (status !== null && status >= 500),\n status,\n type:\n metadata && typeof metadata.error_type === \"string\"\n ? metadata.error_type\n : null,\n });\n }\n\n yield* processChoice(firstChoice, pendingToolCalls);\n};\n\nconst collectYieldableChunks = (\n line: string,\n pendingToolCalls: Map<number, PendingToolCall>,\n usageRef: UsageRef,\n metadataRef: MetadataRef,\n providerName: string,\n) => {\n const allChunks = Array.from(\n processSSELine(line, pendingToolCalls, providerName),\n );\n const usageChunks = allChunks.filter(\n (chunk) => chunk.type === \"usage_update\",\n );\n const lastUsage = usageChunks.at(NOT_FOUND);\n\n if (lastUsage) {\n usageRef.current = lastUsage.usage;\n }\n\n const metadataChunks = allChunks.filter(\n (chunk) => chunk.type === \"response_metadata\",\n );\n const lastMetadata = metadataChunks.at(NOT_FOUND);\n if (lastMetadata && \"metadata\" in lastMetadata) {\n metadataRef.current = {\n ...metadataRef.current,\n ...lastMetadata.metadata,\n providerMetadata: {\n ...metadataRef.current?.providerMetadata,\n ...lastMetadata.metadata.providerMetadata,\n },\n };\n }\n\n return allChunks\n .filter((chunk) => chunk.type !== \"response_metadata\")\n .map((chunk) =>\n chunk.type === \"usage_update\"\n ? { ...chunk, metadata: metadataRef.current }\n : chunk,\n );\n};\n\nconst processSSELines = function* (\n lines: string[],\n pendingToolCalls: Map<number, PendingToolCall>,\n usageRef: UsageRef,\n metadataRef: MetadataRef,\n providerName: string,\n) {\n for (const line of lines) {\n yield* collectYieldableChunks(\n line,\n pendingToolCalls,\n usageRef,\n metadataRef,\n providerName,\n );\n }\n};\n\nconst processStreamValue = (\n value: Uint8Array,\n decoder: TextDecoder,\n state: StreamState,\n) => {\n state.buffer += decoder.decode(value, { stream: true });\n const lines = state.buffer.split(\"\\n\");\n state.buffer = lines.pop() ?? \"\";\n\n return lines;\n};\n\nconst drainReader = async function* (\n reader: ReadableStreamDefaultReader<Uint8Array>,\n decoder: TextDecoder,\n state: StreamState,\n signal?: AbortSignal,\n) {\n /* eslint-disable no-await-in-loop */\n for (\n let result = await reader.read();\n !result.done && !signal?.aborted;\n result = await reader.read()\n ) {\n /* eslint-enable no-await-in-loop */\n const lines = processStreamValue(result.value, decoder, state);\n yield* processSSELines(\n lines,\n state.pendingToolCalls,\n state.usageRef,\n state.metadataRef,\n state.providerName,\n );\n }\n};\n\nconst parseSSEStream = async function* (\n body: ReadableStream<Uint8Array>,\n initialMetadata?: AIResponseMetadata,\n providerName = \"openai\",\n signal?: AbortSignal,\n) {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n const state: StreamState = {\n buffer: \"\",\n metadataRef: { current: initialMetadata },\n pendingToolCalls: new Map<number, PendingToolCall>(),\n providerName,\n usageRef: { current: undefined },\n };\n\n try {\n yield* drainReader(reader, decoder, state, signal);\n yield {\n metadata: state.metadataRef.current,\n type: \"done\" as const,\n usage: state.usageRef.current,\n };\n } finally {\n reader.releaseLock();\n }\n};\n\nconst fetchOpenAIStream = async function* (\n baseUrl: string,\n apiKey: string,\n body: Record<string, unknown>,\n fetchImpl: typeof globalThis.fetch,\n headers: HeadersInit,\n providerName: string,\n signal?: AbortSignal,\n) {\n const target = `${baseUrl}/v1/chat/completions`;\n const requestHeaders = new Headers(headers);\n requestHeaders.set(\"Authorization\", `Bearer ${apiKey}`);\n requestHeaders.set(\"Content-Type\", \"application/json\");\n const response = await fetchImpl(target, {\n ...h2IfHttps(target),\n body: JSON.stringify(body),\n headers: requestHeaders,\n method: \"POST\",\n signal,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw ProviderError.fromResponse(providerName, response.status, errorText);\n }\n\n if (!response.body) {\n throw new ProviderError({\n message: `${providerName} API returned no response body`,\n provider: providerName,\n retryable: true,\n });\n }\n\n yield* parseSSEStream(\n response.body,\n {\n generationId: response.headers.get(\"X-Generation-Id\") ?? undefined,\n providerMetadata: {\n cacheAge: response.headers.get(\"X-OpenRouter-Cache-Age\") ?? undefined,\n cacheSourceId:\n response.headers.get(\"X-OpenRouter-Cache-Source-Id\") ?? undefined,\n cacheStatus:\n response.headers.get(\"X-OpenRouter-Cache-Status\") ?? undefined,\n cacheTtl: response.headers.get(\"X-OpenRouter-Cache-TTL\") ?? undefined,\n },\n },\n providerName,\n signal,\n );\n};\n\nexport const openai = (config: OpenAIConfig): AIProviderConfig => {\n const baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n const fetchImpl = config.fetch ?? globalThis.fetch;\n const providerName = config.providerName ?? \"openai\";\n if (!config.apiKey && !config.tokenSource) {\n throw new Error(\"openai() requires either apiKey or tokenSource\");\n }\n const resolveKey = async () => {\n if (config.tokenSource) {\n return await Promise.resolve(config.tokenSource());\n }\n return config.apiKey!;\n };\n const resolveHeaders = async (params: AIProviderStreamParams) =>\n typeof config.headers === \"function\"\n ? await config.headers(params)\n : (config.headers ?? {});\n\n return instrumentAIProvider(\n {\n inputCapacity: config.transformRequestBody\n ? undefined\n : openaiInputCapacity({\n baseUrl,\n fetch: fetchImpl,\n key: resolveKey,\n headers: resolveHeaders,\n modelLimits: config.modelLimits,\n body: (params) =>\n buildResponsesRequestBody(\n params,\n false,\n config.modelForCapabilities?.(params.model) ?? params.model,\n ),\n }),\n stream: (params: AIProviderStreamParams) => {\n const openaiBody = buildRequestBody(\n params,\n config.modelForCapabilities?.(params.model) ?? params.model,\n providerName,\n );\n const body = config.transformRequestBody\n ? config.transformRequestBody(openaiBody, params)\n : openaiBody;\n return (async function* () {\n const [apiKey, headers] = await Promise.all([\n resolveKey(),\n resolveHeaders(params),\n ]);\n yield* fetchOpenAIStream(\n baseUrl,\n apiKey,\n body,\n fetchImpl,\n headers,\n providerName,\n params.signal,\n );\n })();\n },\n },\n providerName,\n );\n};\n",
38
40
  "import { openai } from \"./openai\";\n\n/**\n * Creates a provider for any OpenAI-compatible API.\n * Many providers (Google, xAI, DeepSeek, Mistral, etc.)\n * expose OpenAI-compatible chat completion endpoints.\n */\nexport const alibaba = (config: { apiKey: string }) =>\n openaiCompatible({\n apiKey: config.apiKey,\n baseUrl: \"https://dashscope-intl.aliyuncs.com/compatible-mode\",\n });\nexport const deepseek = (config: { apiKey: string }) =>\n openaiCompatible({\n apiKey: config.apiKey,\n baseUrl: \"https://api.deepseek.com\",\n });\nexport const google = (config: { apiKey: string }) =>\n openaiCompatible({\n apiKey: config.apiKey,\n baseUrl: \"https://generativelanguage.googleapis.com/v1beta/openai\",\n });\nexport const meta = (config: { apiKey: string }) =>\n openaiCompatible({\n apiKey: config.apiKey,\n baseUrl: \"https://api.llama.com/compat/v1\",\n });\nexport const mistralai = (config: { apiKey: string }) =>\n openaiCompatible({\n apiKey: config.apiKey,\n baseUrl: \"https://api.mistral.ai\",\n });\nexport const moonshot = (config: { apiKey: string }) =>\n openaiCompatible({\n apiKey: config.apiKey,\n baseUrl: \"https://api.moonshot.ai\",\n });\nexport const openaiCompatible = (config: {\n apiKey?: string;\n baseUrl: string;\n tokenSource?: () => Promise<string> | string;\n}) =>\n openai({\n apiKey: config.apiKey,\n baseUrl: config.baseUrl,\n tokenSource: config.tokenSource,\n });\nexport const xai = (config: { apiKey: string }) =>\n openaiCompatible({\n apiKey: config.apiKey,\n baseUrl: \"https://api.x.ai\",\n });\n",
@@ -48,7 +50,7 @@
48
50
  "import type { AIContextPolicy } from \"./contextPolicy\";\n\n/** Reclaim older results ONLY for tools that reread immutable saved sources.\n * The caller guarantees these names can reproduce the original at the same\n * authorized version. Other results, calls, thinking and the newest lookup stay\n * intact. This does not delete originals, summarize facts, run tools, or truncate\n * the latest evidence. If that is insufficient, the policy fails explicitly. */\nexport const createAIStoredToolResultRecovery =\n (toolNames: readonly string[]): NonNullable<AIContextPolicy[\"recover\"]> =>\n async ({ params }) => {\n const names = new Set(toolNames);\n const eligible = new Set<string>();\n for (const message of params.messages) {\n if (typeof message.content === \"string\") continue;\n for (const block of message.content) {\n if (block.type === \"tool_use\" && names.has(block.name))\n eligible.add(block.id);\n }\n }\n const results = params.messages.flatMap((message) =>\n typeof message.content === \"string\"\n ? []\n : message.content.filter(\n (block) =>\n block.type === \"tool_result\" && eligible.has(block.tool_use_id),\n ),\n );\n const newest = results.at(-1);\n return params.messages.map((message) => ({\n ...message,\n content:\n typeof message.content === \"string\"\n ? message.content\n : message.content.map((block) => {\n if (\n block.type !== \"tool_result\" ||\n !eligible.has(block.tool_use_id) ||\n block === newest\n )\n return block;\n const marker =\n \"[Earlier lookup removed from working context. Its immutable original remains saved. The original tool call and source/version arguments above are unchanged: repeat that lookup if needed to verify facts. Do not infer facts from this marker.]\";\n // Do not replace a small text-only result with a larger marker.\n // Images always go: they cost far more than the marker.\n if (block.images?.length)\n return {\n content: marker,\n tool_use_id: block.tool_use_id,\n type: block.type,\n };\n return block.content.length > marker.length\n ? { ...block, content: marker }\n : block;\n }),\n }));\n };\n",
49
51
  "import type { AIProviderConfig, AIProviderStreamParams } from \"../../types/ai\";\nimport { AIInputError } from \"./inputCapacity\";\n\n/** Route exact model IDs to providers. Counting, limits and generation use the\n * same route, including when preparation uses a different model/provider. */\nexport const createAIProviderRouter = (\n routes: Readonly<Record<string, AIProviderConfig>>,\n): AIProviderConfig => {\n const providers = new Map(Object.entries(routes));\n const resolve = (params: AIProviderStreamParams) => {\n params.signal?.throwIfAborted();\n const provider = providers.get(params.model);\n if (!provider)\n throw new AIInputError(\n \"capacity_unavailable\",\n `No provider route for model ${params.model}.`,\n );\n return provider;\n };\n const capacity = (params: AIProviderStreamParams) => {\n const result = resolve(params).inputCapacity;\n if (!result)\n throw new AIInputError(\n \"capacity_unavailable\",\n `The provider for ${params.model} does not expose model capacity and token counting.`,\n );\n return result;\n };\n return {\n inputCapacity: {\n outputTokens: (params) => capacity(params).outputTokens?.(params),\n isContextError: (error) =>\n [...new Set(providers.values())].some(\n (provider) =>\n provider.inputCapacity?.isContextError?.(error) === true,\n ),\n getLimits: async (params) => capacity(params).getLimits(params),\n countScope: (params) =>\n capacity(params).countScope?.(params) ?? \"request\",\n countTokens: async (params) => capacity(params).countTokens(params),\n },\n stream: (params) => resolve(params).stream(params),\n };\n};\n"
50
52
  ],
51
- "mappings": ";;AAEA,IAAM,SAAS,CAAC,UACd,OAAO,UAAU,YAAY,UAAU;AAIlC,IAAM,8BAA8B,CAAC,UAA2B;AAAA,EACrE,MAAM,SAAS,OAAO,KAAK,KAAK,OAAO,MAAM,KAAK,IAAI,MAAM,QAAQ;AAAA,EACpE,MAAM,SAAS,OAAO,MAAM,IAAK,OAAO,UAAU,OAAO,SAAU;AAAA,EACnE,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,IACzB,MAAM,UAAU,OACb,MAAM,GAAG,EAAE,EACX,OAAO,MAAM,EACb,IAAI,CAAC,UAAU;AAAA,MACd,MAAM,OACJ,OAAO,MAAM,iBAAiB,WAC1B,MAAM,eACN,MAAM,QAAQ,MAAM,IAAI,IACtB,MAAM,KAAK,KAAK,GAAG,IACnB;AAAA,MACR,MAAM,WAAW,OAAO,MAAM,MAAM,IAChC,MAAM,OAAO,OACb,MAAM;AAAA,MACV,MAAM,UACJ,OAAO,aAAa,WAChB,WAAW,aACX,OAAO,MAAM,YAAY,WACvB,UAAU,MAAM,uBAChB,OAAO,MAAM,SAAS,WACpB,UAAU,MAAM,oBAChB;AAAA,MACV,OAAO,GAAG,KAAK,MAAM,GAAG,GAAG,KAAK,QAAQ,QAAQ,MAAM,GAAG,GAAG;AAAA,KAC7D;AAAA,IACH,IAAI,QAAQ;AAAA,MAAQ,OAAO,QAAQ,KAAK,IAAI,EAAE,MAAM,GAAG,IAAI;AAAA,EAC7D;AAAA,EACA,QACE,iBAAiB,QACb,MAAM,UACN,sCACJ,MAAM,GAAG,IAAI;AAAA;AAAA;AAKV,MAAM,8BAA8B,MAAM;AAAA,EAGpC;AAAA,EACA;AAAA,EACA;AAAA,EAJF,OAAO;AAAA,EAChB,WAAW,CACA,QACA,UACA,OACT,OACA;AAAA,IACA,MACE,qCAAqC,wBAAwB,4BAA4B,KAAK,KAC9F,EAAE,MAAM,CACV;AAAA,IARS;AAAA,IACA;AAAA,IACA;AAAA,IAOT,KAAK,OAAO;AAAA;AAEhB;;AC3DA;AACA;;;ACCO,IAAM,oBAAoB,MAA2B;AAAA,EAC1D,MAAM,gBAAgB,IAAI;AAAA,EAE1B,MAAM,MAAM,OAAO,OAAe,cAAc,IAAI,EAAE;AAAA,EAEtD,MAAM,cAAc,OAAO,OAAe;AAAA,IACxC,IAAI,eAAe,cAAc,IAAI,EAAE;AAAA,IAEvC,IAAI,CAAC,cAAc;AAAA,MACjB,eAAe,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE;AAAA,MACzD,cAAc,IAAI,IAAI,YAAY;AAAA,IACpC;AAAA,IAEA,OAAO;AAAA;AAAA,EAGT,MAAM,MAAM,OAAO,IAAY,iBAAiC;AAAA,IAC9D,cAAc,IAAI,IAAI,YAAY;AAAA;AAAA,EAGpC,MAAM,OAAO,YACX,MAAM,KAAK,cAAc,OAAO,CAAC,EAC9B,IAAI,CAAC,UAAU;AAAA,IACd,WAAW,KAAK;AAAA,IAChB,IAAI,KAAK;AAAA,IACT,eAAe,KAAK;AAAA,IACpB,cAAc,KAAK,SAAS;AAAA,IAC5B,OAAO,KAAK,SAAS;AAAA,EACvB,EAAE,EACD,KACC,CAAC,OAAO,YACL,OAAO,iBAAiB,OAAO,cAC/B,MAAM,iBAAiB,MAAM,UAClC;AAAA,EAEJ,MAAM,SAAS,OAAO,OAAe;AAAA,IACnC,cAAc,OAAO,EAAE;AAAA;AAAA,EAGzB,OAAO,EAAE,KAAK,aAAa,MAAM,QAAQ,IAAI;AAAA;;;AClB/C,IAAM,mBAAmB;AAAA;AAElB,MAAM,uCAAuC,MAAM;AAAA,EACxD,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,oCAAoC,gBAAgB;AAAA,IAC1D,KAAK,OAAO;AAAA;AAEhB;AAUO,IAAM,8BAA8B,CACzC,YACG;AAAA,EACH,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,QAA4C,CAAC;AAAA,EACnD,MAAM,YAAY,IAAI;AAAA,EAGtB,IAAI,cAAsC;AAAA,EAC1C,IAAI,WAAW;AAAA,EAEf,MAAM,WAAW,OAA6C;AAAA,IAC5D,OAAO,MAAM,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAAA,IACxC,SAAS,MAAM,KAAK,GAAG,aAAa,WAAW,SAAS;AAAA,EAC1D;AAAA,EAEA,MAAM,SAAS,MAAM;AAAA,IACnB,MAAM,OAAO,SAAS;AAAA,IACtB,UAAU,QAAQ,CAAC,aAAa,SAAS,IAAI,CAAC;AAAA;AAAA,EAGhD,MAAM,QAAQ,YAAY;AAAA,IACxB,IAAI;AAAA,MAAU;AAAA,IACd,MAAM,OAAO,MAAM,KAAK,GAAG,aAAa,WAAW,QAAQ;AAAA,IAC3D,IAAI,CAAC,QAAQ,MAAM,KAAK,GAAG,aAAa,WAAW,QAAQ;AAAA,MAAG;AAAA,IAC9D,WAAW;AAAA,IACX,KAAK,SAAS;AAAA,IACd,cAAc,IAAI;AAAA,IAClB,OAAO;AAAA,IACP,IAAI;AAAA,MACF,MAAM,QAAQ,QAAQ,KAAK,OAAO;AAAA,QAChC,IAAI,KAAK;AAAA,QACT,QAAQ,YAAY;AAAA,MACtB,CAAC;AAAA,MACD,MAAM,QAAQ,MAAM,UAAU,GAAG,SAAS,OAAO,KAAK,EAAE;AAAA,MACxD,IAAI,SAAS;AAAA,QAAG,MAAM,OAAO,OAAO,CAAC;AAAA,MACrC,OAAO,OAAO;AAAA,MACd,IAAI,YAAY,OAAO,SAAS;AAAA,QAC9B,MAAM,QAAQ,MAAM,UAAU,GAAG,SAAS,OAAO,KAAK,EAAE;AAAA,QACxD,IAAI,SAAS;AAAA,UAAG,MAAM,OAAO,OAAO,CAAC;AAAA,MACvC,EAAO;AAAA,QACL,KAAK,QAAQ;AAAA,QACb,KAAK,SAAS;AAAA,QACd,QAAQ,UAAU,OAAO,KAAK,KAAK,CAAC;AAAA;AAAA,cAEtC;AAAA,MACA,cAAc;AAAA,MACd,WAAW;AAAA,MACX,OAAO;AAAA,MACF,MAAM;AAAA;AAAA;AAAA,EAIf,MAAM,UAAU,CAAC,OAAc,KAAa,OAAO,WAAW,MAAM;AAAA,IAClE,IAAI,MAAM,UAAU,SAAS;AAAA,MAC3B,MAAM,IAAI,+BAA+B,OAAO;AAAA,IAClD;AAAA,IACA,MAAM,KAAK,EAAE,IAAI,OAAO,QAAQ,SAAS,CAAC;AAAA,IAC1C,OAAO;AAAA,IACF,MAAM;AAAA,IAEX,OAAO;AAAA;AAAA,EAGT,MAAM,SAAS,CAAC,OAAe;AAAA,IAC7B,MAAM,QAAQ,MAAM,UAClB,CAAC,SAAS,KAAK,OAAO,MAAM,KAAK,WAAW,SAC9C;AAAA,IACA,IAAI,QAAQ;AAAA,MAAG,OAAO;AAAA,IACtB,MAAM,OAAO,OAAO,CAAC;AAAA,IACrB,OAAO;AAAA,IACF,MAAM;AAAA,IAEX,OAAO;AAAA;AAAA,EAGT,MAAM,QAAQ,CAAC,OAAe;AAAA,IAC5B,MAAM,OAAO,MAAM,KACjB,CAAC,cAAc,UAAU,OAAO,MAAM,UAAU,WAAW,QAC7D;AAAA,IACA,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAClB,OAAO,KAAK;AAAA,IACZ,KAAK,SAAS;AAAA,IACd,OAAO;AAAA,IACF,MAAM;AAAA,IAEX,OAAO;AAAA;AAAA,EAGT,MAAM,SAAS,CAAC,QAAoC,CAAC,MAAM;AAAA,IACzD,aAAa,MAAM;AAAA,IACnB,IAAI,MAAM,cAAc;AAAA,MACtB,SAAS,QAAQ,MAAM,SAAS,EAAG,SAAS,GAAG,SAAS;AAAA,QACtD,IAAI,MAAM,QAAQ,WAAW;AAAA,UAAW,MAAM,OAAO,OAAO,CAAC;AAAA,MAC/D;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA,WAAW,CACT,aACG;AAAA,MACH,UAAU,IAAI,QAAQ;AAAA,MAEtB,OAAO,MAAM,UAAU,OAAO,QAAQ;AAAA;AAAA,EAE1C;AAAA;;;ACtJK,IAAM,yBAAyB,CACpC,SAC4B;AAAA,EAC5B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrC,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACtD,OAAO;AAAA,EACT;AAAA,EAEA,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,OAAO,aAAa,QAAQ,OAAO,KAAK,YAAY;AAAA,SACjD;AAAA,MACH,OACE,oBAAoB,QAAQ,OAAO,KAAK,mBAAmB;AAAA,SAE1D;AAAA,SACA;AAAA,MACH,OACE,eAAe,QACf,OAAO,KAAK,cAAc,YAC1B,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,oBAAoB,QACpB,OAAO,KAAK,mBAAmB;AAAA;AAAA,MAGjC,OAAO;AAAA;AAAA;AAIN,IAAM,yBAAyB,CACpC,SAC4B;AAAA,EAC5B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrC,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACtD,OAAO;AAAA,EACT;AAAA,EAEA,QAAQ,KAAK;AAAA,SACN;AAAA,SACA;AAAA,MACH,OACE,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,eAAe,QACf,oBAAoB;AAAA,SAEnB;AAAA,MACH,OACE,UAAU,QACV,YAAY,QACZ,eAAe,QACf,oBAAoB;AAAA,SAEnB;AAAA,MACH,OACE,UAAU,QACV,OAAO,KAAK,SAAS,YACrB,YAAY,QACZ,OAAO,KAAK,WAAW,YACvB,eAAe,QACf,OAAO,KAAK,cAAc,aAC1B,eAAe,QACf,oBAAoB;AAAA,SAEnB;AAAA,MACH,OACE,UAAU,QACV,OAAO,KAAK,SAAS,YACrB,YAAY,QACZ,OAAO,KAAK,WAAW,YACvB,eAAe,QACf,oBAAoB;AAAA,SAEnB;AAAA,MACH,OAAO,eAAe,QAAQ,oBAAoB;AAAA,SAC/C;AAAA,MACH,OACE,oBAAoB,QACpB,OAAO,KAAK,mBAAmB,YAC/B,eAAe,QACf,OAAO,KAAK,cAAc,YAC1B,cAAc,QACd,OAAO,KAAK,aAAa;AAAA,SAExB;AAAA,MACH,OACE,oBAAoB,QACpB,OAAO,KAAK,mBAAmB,YAC/B,eAAe,QACf,OAAO,KAAK,cAAc;AAAA,SAEzB;AAAA,MACH,OACE,aAAa,QACb,OAAO,KAAK,YAAY,YACxB,mBAAmB,QACnB,OAAO,KAAK,kBAAkB,YAC9B,eAAe,QACf,OAAO,KAAK,cAAc,YAC1B,uBAAuB,QACvB,OAAO,KAAK,sBAAsB,YAClC,uBAAuB,QACvB,OAAO,KAAK,sBAAsB,aACjC,EAAE,UAAU,SAAS,KAAK,SAAS,YAAY,KAAK,SAAS;AAAA,SAE7D;AAAA,MACH,OACE,oBAAoB,QACpB,eAAe,QACf,aAAa,QACb,MAAM,QAAQ,KAAK,OAAO;AAAA,SAEzB;AAAA,MACH,OAAO,aAAa,QAAQ,OAAO,KAAK,YAAY;AAAA;AAAA,MAEpD,OAAO;AAAA;AAAA;;;ACzHN,IAAM,aAAa,MAAM,OAAO,WAAW;AAE3C,IAAM,iBAAiB,CAAC,QAAiB;AAAA,EAC9C,IAAI,QAAQ,QAAQ,QAAQ,WAAW;AAAA,IACrC,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,EAEJ,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3B,OAAO;AAAA,EACT,EAAO,SAAI,eAAe,aAAa;AAAA,IACrC,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACrC,EAAO,SAAI,YAAY,OAAO,GAAG,GAAG;AAAA,IAClC,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACrC,EAAO,SAAI,OAAO,QAAQ,UAAU;AAAA,IAClC,IAAI,uBAAuB,GAAG,GAAG;AAAA,MAC/B,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,EACT,EAAO;AAAA,IACL,OAAO;AAAA;AAAA,EAGT,IAAI;AAAA,IACF,MAAM,SAAkB,KAAK,MAAM,IAAI;AAAA,IAEvC,IAAI,uBAAuB,MAAM,GAAG;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIJ,IAAM,qBAAqB,CAAC,YACjC,KAAK,UAAU,OAAO;;;ACnCjB,IAAM,iBAAiB,CAAC,WAC7B,OAAO,WAAW,WAAW,SAAS,OAAO;AAE/C,IAAM,mBAAmB,CAAC,WACxB,OAAO,WAAW,YAAY,CAAC,OAAO,QAAQ,SAC1C,YACA,OAAO;AAIN,IAAM,kBAAkB,CAC7B,WACA,QACA,UAAU,eAAe,MAAM,MAC8B;AAAA,EAC7D,MAAM,SAAsC,iBAAiB,MAAM;AAAA,EAEnE,OAAO,SACH,EAAE,SAAS,QAAQ,aAAa,WAAW,MAAM,cAAc,IAC/D,EAAE,SAAS,aAAa,WAAW,MAAM,cAAc;AAAA;;;ACPtD,MAAM,qBAAqB,MAAM;AAAA,EAEpB;AAAA,EAKA;AAAA,EACA;AAAA,EAPlB,WAAW,CACO,MAIhB,SACgB,gBACA,WAChB;AAAA,IACA,MAAM,OAAO;AAAA,IARG;AAAA,IAKA;AAAA,IACA;AAAA,IAGhB,KAAK,OAAO;AAAA;AAEhB;AACO,IAAM,qBAAqB,CAAC,UAA2B;AAAA,EAC5D,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,KAAK,KAAK,SAAS;AAAA,IACxE,MAAM,IAAI,aACR,wBACA,kDACF;AAAA,EACF,OAAO;AAAA;AAEF,IAAM,kBAAkB,CAAC,UAA2B;AAAA,EACzD,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ;AAAA,IACvE,MAAM,IAAI,aACR,wBACA,kDACF;AAAA,EACF,OAAO;AAAA;AAIF,IAAM,iBAAiB,OAC5B,UACA,WAC6B;AAAA,EAC7B,OAAO,QAAQ,eAAe;AAAA,EAC9B,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,aACR,wBACA,kEACF;AAAA,EACF,OAAO,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,IACzC,SAAS,cAAc,UAAU,MAAM;AAAA,IACvC,SAAS,cAAc,YAAY,MAAM;AAAA,EAC3C,CAAC,EAAE,MAAM,CAAC,UAAmB;AAAA,IAG3B,IACE,iBAAiB,SACjB,MAAM,SAAS,kBACf,UAAU,UACT,MAAM,SAAS,0BACd,MAAM,SAAS,qBACf,MAAM,SAAS;AAAA,MAEjB,MAAM,IAAI,aACR,MAAM,MACN,MAAM,SACN,oBAAoB,SAAS,OAAO,MAAM,mBAAmB,WACzD,MAAM,iBACN,WACJ,eAAe,SAAS,OAAO,MAAM,cAAc,WAC/C,MAAM,YACN,SACN;AAAA,IACF,MAAM;AAAA,GACP;AAAA,EACD,MAAM,cAAc,gBAAgB,MAAM;AAAA,EAC1C,MAAM,eAAe,mBACnB,SAAS,cAAc,eAAe,MAAM,KAC1C,OAAO,aACP,OAAO,eACX;AAAA,EACA,MAAM,iBAAiB,mBAAmB,OAAO,cAAc;AAAA,EAC/D,MAAM,kBAAkB,mBAAmB,OAAO,eAAe;AAAA,EACjE,MAAM,uBAAuB,KAAK,IAChC,GACA,KAAK,IACH,gBACA,OAAO,wBAAwB,YAC3B,iBACA,mBAAmB,OAAO,mBAAmB,IAAI,YACvD,CACF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,iBAAiB,SAAS,cAAc,aAAa,MAAM,KAAK;AAAA,IAChE;AAAA,IACA;AAAA,IACA,MACE,gBAAgB,mBAAmB,eAAe;AAAA,EACtD;AAAA;AAIK,IAAM,mBAAmB,CAC9B,MACA,QAAQ,WACL;AAAA,EACH,MAAM,QAAQ,IAAI;AAAA,EAClB,OAAO,OAAO,WAAmC;AAAA,IAC/C,MAAM,QAAQ,MAAM,IAAI,OAAO,KAAK;AAAA,IACpC,IAAI,SAAS,KAAK,IAAI,IAAI,MAAM,KAAK;AAAA,MAAO,OAAO,MAAM;AAAA,IACzD,MAAM,SAAS,MAAM,KAAK,MAAM;AAAA,IAChC,mBAAmB,OAAO,cAAc;AAAA,IACxC,mBAAmB,OAAO,eAAe;AAAA,IACzC,IAAI,MAAM,QAAQ;AAAA,MAAK,MAAM,MAAM;AAAA,IACnC,MAAM,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC;AAAA,IAClD,OAAO;AAAA;AAAA;AAIJ,IAAM,eAAe,OAC1B,aACqC;AAAA,EACrC,IAAI,CAAC,SAAS,IAAI;AAAA,IAGhB,MAAM,UAAmB,MAAM,SAAS,KAAK,EAAE,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IACpE,MAAM,SACJ,WAAW,OAAO,YAAY,YAAY,CAAC,MAAM,QAAQ,OAAO,IAC3D,UACD;AAAA,IACN,MAAM,gBAAgB,QAAQ;AAAA,IAC9B,MAAM,SACJ,iBACA,OAAO,kBAAkB,YACzB,CAAC,MAAM,QAAQ,aAAa,IACvB,gBACD;AAAA,IACN,MAAM,UAAU,QAAQ,WAAW,QAAQ;AAAA,IAC3C,MAAM,SACJ,OAAO,YAAY,WAAW,QAAQ,MAAM,GAAG,IAAI,IAAI;AAAA,IACzD,MAAM,KACJ,SAAS,QAAQ,IAAI,YAAY,KACjC,SAAS,QAAQ,IAAI,cAAc,KACnC,QAAQ;AAAA,IACV,MAAM,IAAI,aACR,wBACA,kCAAkC,SAAS,WAAW,SAAS,IAAI,WAAW,MAC9E,SAAS,QACT,OAAO,OAAO,WAAW,GAAG,MAAM,GAAG,GAAG,IAAI,SAC9C;AAAA,EACF;AAAA,EACA,MAAM,QAAiB,MAAM,SAAS,KAAK;AAAA,EAC3C,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAAA,IAC5D,MAAM,IAAI,aACR,wBACA,sCACF;AAAA,EACF,OAAO;AAAA;;;ACxHF,IAAM,mBAAmB,OAC9B,UACA,QACA,SAA0B,CAAC,MACI;AAAA,EAC/B,MAAM,WAAW,MAAM,eAAe,UAAU,MAAM;AAAA,EACtD,MAAM,uBAAuB,gBAC3B,OAAO,wBACL,KAAK,IAAI,MAAM,KAAK,KAAK,SAAS,uBAAuB,GAAG,CAAC,CACjE;AAAA,EACA,MAAM,0BAA0B,gBAC9B,OAAO,4BACJ,OAAO,OAAO,UAAU,OAAO,eAAe,SAC3C,KAAK,IAAI,MAAM,KAAK,MAAM,SAAS,uBAAuB,EAAE,CAAC,IAC7D,EACR;AAAA,EACA,MAAM,SACJ,OAAO,uBAAuB,YAC1B,SAAS,uBACT,mBAAmB,OAAO,kBAAkB;AAAA,EAClD,MAAM,YAAY,KAAK,IACrB,QACA,SAAS,uBACP,uBACA,uBACJ;AAAA,EACA,MAAM,qBAAqB,KAAK,IAAI,GAAG,SAAS;AAAA,EAChD,OAAO;AAAA,OACF;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBACE,SAAS,QACT,aAAa,KACb,SAAS,eAAe;AAAA,EAC5B;AAAA;AAKK,IAAM,uBAAuB,CAAC,UAAmB;AAAA,EAGtD,IACE,EAAE,iBAAiB,UACnB,MAAM,SAAS,mBACf,EAAE,YAAY,UACd,EAAE,UAAU,UACZ,EAAE,cAAc,UAChB,EAAE,cAAc;AAAA,IAEhB,OAAO;AAAA,EACT,IACE,OAAO,MAAM,aAAa,YACzB,MAAM,WAAW,QAAQ,OAAO,MAAM,WAAW,YACjD,MAAM,SAAS,QAAQ,OAAO,MAAM,SAAS;AAAA,IAE9C,OAAO;AAAA,EACT,MAAM,WACJ,MAAM,YACN,OAAO,MAAM,aAAa,YAC1B,CAAC,MAAM,QAAQ,MAAM,QAAQ,IACzB,MAAM,WACN;AAAA,EACN,MAAM,OAAO,YAAY,UAAU,WAAW,SAAS,OAAO,MAAM;AAAA,EACpE,KACG,MAAM,WAAW,QAAQ,MAAM,WAAW,OAAO,MAAM,WAAW,QACnE,SAAS;AAAA,IAET,OAAO;AAAA,EAGT,OACE,MAAM,aAAa,eACnB,MAAM,WAAW,OACjB,aAAa,aACb,UAAU,YACV,SAAS,SAAS,2BAClB,aAAa,YACb,OAAO,SAAS,YAAY,YAC5B,kDAAkD,KAAK,SAAS,OAAO;AAAA;AAI3E,IAAM,mBAAmB,CAAC,aACxB,KAAK,UACH,SAAS,QAAQ,CAAC,YAAY;AAAA,EAC5B,IAAI,QAAQ,SAAS;AAAA,IAAU,OAAO,CAAC,OAAO;AAAA,EAC9C,IAAI,OAAO,QAAQ,YAAY;AAAA,IAAU,OAAO,CAAC;AAAA,EACjD,MAAM,SAAS,QAAQ,QACpB,OAAO,CAAC,UAAU,MAAM,SAAS,MAAM,EACvC,IAAI,CAAC,UACJ,MAAM,SAAS,gBAAgB,KAAK,OAAO,SAAS,GAAG,IAAI,KAC7D;AAAA,EACF,OAAO,OAAO,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,SAAS,OAAO,CAAC,IAAI,CAAC;AAAA,CACrE,CACH;AACF,IAAM,WAAW,CAAC,YAA4D;AAAA,KACzE;AAAA,EACH,UAAU,gBAAgB,OAAO,QAAQ;AAAA,EACzC,OAAO,OAAO,SAAS,gBAAgB,OAAO,KAAK;AAAA,EACnD,iBACE,OAAO,mBAAmB,gBAAgB,OAAO,eAAe;AAAA,EAClE,gBACE,OAAO,kBAAkB,gBAAgB,OAAO,cAAc;AAAA,EAChE,WAAW,OAAO,aAAa,KAAK,OAAO,UAAU;AACvD;AACA,IAAM,WAAW,MACf,IAAI,aACF,mBACA,qIACF;AAIK,IAAM,sBAAsB,gBAAgB,CACjD,UACA,QACA,SAAkC,CAAC,GACnC,YACyB;AAAA,EACzB,OAAO,QAAQ,eAAe;AAAA,EAC9B,IAAI,WAAW,OAAO;AAAA,IACpB,aAAa,MAAM;AAAA,IACnB,OAAO,SAAS,OAAO,MAAM;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,IAAI,UAAU,SAAS,MAAM;AAAA,EAC7B,IAAI,WAAW,MAAM,iBAAiB,UAAU,SAAS,MAAM;AAAA,EAC/D,OAAO,UAAU;AAAA,IACf,MAAM;AAAA,IACN,UAAU,KAAK,UAAU,QAAQ,KAAK,SAAS,OAAO,EAAE;AAAA,EAC1D,CAAC;AAAA,EACD,IAAI,YAAY;AAAA,EAChB,MAAM,UAAU,OAAO,WAAoC;AAAA,IACzD,IACE,aACA,CAAC,OAAO,WACR,SAAS,eAAe,SAAS,OAAO;AAAA,MAExC,MAAM,SAAS;AAAA,IACjB,YAAY;AAAA,IACZ,MAAM,kBAAkB,iBAAiB,QAAQ,QAAQ;AAAA,IACzD,MAAM,WAAW,MAAM,OAAO,QAAQ;AAAA,MACpC,QAAQ,SAAS,OAAO;AAAA,MACxB,UAAU,KAAK,UAAU,QAAQ,KAAK,SAAS,OAAO,EAAE;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,IACD,QAAQ,QAAQ,eAAe;AAAA,IAC/B,IACE,CAAC,MAAM,QAAQ,QAAQ,KACvB,SAAS,KACP,CAAC,YACC,CAAC,WACD,CAAC,CAAC,QAAQ,aAAa,QAAQ,EAAE,SAAS,QAAQ,IAAI,KACrD,OAAO,QAAQ,YAAY,YAC1B,CAAC,MAAM,QAAQ,QAAQ,OAAO,CACpC,KACA,iBAAiB,QAAQ,MAAM;AAAA,MAE/B,MAAM,IAAI,aACR,uBACA,2GACF;AAAA,IACF,MAAM,cAAc,KAAK,SAAS,UAAU,gBAAgB,QAAQ,EAAE;AAAA,IACtE,MAAM,OAAO,MAAM,iBAAiB,UAAU,aAAa,MAAM;AAAA,IACjE,IAAI,CAAC,KAAK,sBAAsB,KAAK,eAAe,SAAS;AAAA,MAC3D,MAAM,SAAS;AAAA,IACjB,OAAO,UAAU;AAAA,MACf,MAAM;AAAA,MACN;AAAA,MACA,QAAQ,KAAK,UAAU,QAAQ,KAAK,SAAS,OAAO,EAAE;AAAA,MACtD,OAAO,KAAK,MAAM,QAAQ,KAAK,KAAK,OAAO,EAAE;AAAA,IAC/C,CAAC;AAAA,IACD,UAAU;AAAA,IACV,WAAW;AAAA;AAAA,EAEb,IAAI,CAAC,SAAS;AAAA,IAAoB,MAAM,QAAQ,eAAe;AAAA,EAC/D,IAAI,UAAU;AAAA,EACd,IAAI;AAAA,IACF,QAAQ,QAAQ,eAAe;AAAA,IAC/B,aAAa,OAAO;AAAA,IACpB,iBAAiB,SAAS,SAAS,OAAO,OAAO,GAAG;AAAA,MAClD,UAAU;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA,OAAO,OAAO;AAAA,IACd,QAAQ,QAAQ,eAAe;AAAA,IAC/B,IACE,WACA,aACA,CAAC,OAAO,WACR,EACE,SAAS,eAAe,iBAAiB,KAAK,KAC9C,qBAAqB,KAAK;AAAA,MAG5B,MAAM;AAAA,IACR,MAAM,QAAQ,oBAAoB;AAAA,IAClC,aAAa,OAAO;AAAA,IACpB,OAAO,SAAS,OAAO,OAAO;AAAA;AAAA;;;AC1OlC,IAAM,UAAU;AAChB,IAAM,yBAAyB;AAC/B,IAAM,qBAAqB;AAC3B,IAAM,oBAAoB;AAC1B,IAAM,eAAe;AAErB,IAAM,QAAQ,CAAC,iBAEb,IAAI,QAAc,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAElE,IAAM,oBAAoB,OAAO,WAAwB;AAAA,EACvD,IAAI,EAAE,SAAS,SAAS;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,QAAQ,QAAQ;AAAA,EAEhB,IACE,OACA,OAAO,QAAQ,YACf,oBAAoB,OACpB,OAAO,IAAI,mBAAmB,YAC9B,IAAI,iBAAiB,wBACrB;AAAA,IACA,MAAM,MAAM,kBAAkB;AAAA,EAChC;AAAA;AAGF,IAAM,cAAc,OAAO,QAAqB,YAA6B;AAAA,EAC3E,IAAI,OAAO,eAAe,SAAS;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,kBAAkB,MAAM;AAAA,EAE9B,OAAO,KAAK,mBAAmB,OAAO,CAAC;AAAA,EAEvC,OAAO;AAAA;AAGT,IAAM,uBAAuB,CAAC,UAC5B,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU;AAAA,KACtC,IAAI,eAAe,EAAE,cAAc,KAAK,IAAI,CAAC;AAAA,EACjD,aAAa,IAAI;AAAA,EACjB,cAAc,IAAI;AAAA,EAClB;AACF,EAAE;AAEJ,IAAM,qBAAqB,CACzB,OACA,YACG;AAAA,EACH,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO,MAAM;AAAA,EACf;AAAA,EAEA,MAAM,cAAc,QAAQ,KAAK;AAAA,EAEjC,IACE,eACA,OAAO,gBAAgB,YACvB,aAAa,aACb;AAAA,IACA,OAAO,YAAY;AAAA,EACrB;AAAA,EAEA,OAAO,MAAM;AAAA;AAGf,IAAM,mBAAmB,OACvB,QACA,OACA,WACA,mBAEA,YAAY,QAAQ;AAAA,EAClB;AAAA,EACA,MAAM,MAAM;AAAA,EACZ,QAAQ,MAAM;AAAA,EACd,SAAS,MAAM;AAAA,EACf,WAAW,MAAM;AAAA,EACjB;AAAA,EACA,eAAe,MAAM;AAAA,EACrB,MAAM;AACR,CAAC;AAEH,IAAM,mBAAmB,OACvB,QACA,OACA,WACA,mBAEA,YAAY,QAAQ;AAAA,EAClB,SAAS,MAAM;AAAA,EACf;AAAA,EACA,MAAM,MAAM;AAAA,EACZ,QAAQ,MAAM;AAAA,EACd;AAAA,EACA,YAAY,MAAM;AAAA,EAClB,MAAM;AACR,CAAC;AAEH,IAAM,kBAAkB,OACtB,QACA,UACA,WACA,WACA,mBAEA,YAAY,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AACR,CAAC;AAEH,IAAM,mBAAmB,OACvB,QACA,UACA,QACA,WACA,mBAEA,YAAY,QAAQ;AAAA,EAClB;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA,QAAQ;AAAA,EACR,MAAM;AACR,CAAC;AAEH,IAAM,cAAc,OAClB,SACA,UACA,cACG;AAAA,EACH,MAAM,UAAU,QAAQ,QAAQ;AAAA,EAEhC,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO,wBAAwB;AAAA,EACjC;AAAA,EAEA,IAAI;AAAA,IACF,OAAO,MAAM,QAAQ,QAAQ,SAAS;AAAA,IACtC,OAAO,KAAK;AAAA,IACZ,OAAO,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA;AAAA;AAIpE,IAAM,oBAAoB,CAAC,MAAc,UACvC,GAAG,QAAQ,KAAK,UAAU,KAAK;AA0BjC,IAAM,sBAAsB,CAC1B,OACA,OACA,SACA,QACA,WACA,mBACG;AAAA,EACH,MAAM,cAAc,mBAAmB,OAAO,QAAQ,OAAO;AAAA,EAC7D,MAAM,uBAAuB;AAAA,EAC7B,YAAY,QAAQ;AAAA,IAClB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAAA;AAGH,IAAM,yBAAyB,CAC7B,OACA,UACG;AAAA,EACH,MAAM,iBAAiB,KAAK;AAAA,IAC1B,IAAI,MAAM;AAAA,IACV,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,EACd,CAAC;AAAA;AAGH,IAAM,gBAAgB,CAAC,UAAyB;AAAA,EAC9C,IAAI,MAAM,iBAAiB;AAAA,IACzB,MAAM,cAAc,KAAK;AAAA,MACvB,WAAW,MAAM,gBAAgB,aAAa;AAAA,MAC9C,UAAU,MAAM,gBAAgB;AAAA,MAChC,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,kBAAkB;AAAA,EAC1B;AAAA;AAGF,IAAM,mBAAmB,CACvB,OACA,OACA,SACA,QACA,WACA,mBACG;AAAA,EACH,IAAI,iBAAiB;AAAA,EAErB,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,IAAI,MAAM,SAAS;AAAA,QACjB,YAAY,QAAQ;AAAA,UAClB,SAAS,MAAM;AAAA,UACf;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,IAAI,CAAC,MAAM,iBAAiB;AAAA,QAC1B,MAAM,kBAAkB,EAAE,WAAW,IAAI,MAAM,GAAG;AAAA,MACpD;AAAA,MACA,MAAM,gBAAgB,QAAQ,MAAM;AAAA,MACpC,IAAI,MAAM,WAAW;AAAA,QACnB,MAAM,gBAAgB,YAAY,MAAM;AAAA,MAC1C;AAAA,MACA;AAAA,SAEG;AAAA,MACH,cAAc,KAAK;AAAA,MACnB,oBACE,OACA,OACA,SACA,QACA,WACA,cACF;AAAA,MACA,MAAM,cAAc,KAAK;AAAA,QACvB,SAAS,MAAM;AAAA,QACf,MAAM;AAAA,MACR,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,iBAAiB,QAAQ,OAAO,WAAW,cAAc;AAAA,MACzD,QAAQ,UAAU;AAAA,QAChB,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,SAAS,MAAM;AAAA,QACf,WAAW,MAAM;AAAA,QACjB,eAAe,MAAM;AAAA,MACvB,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,iBAAiB,QAAQ,OAAO,WAAW,cAAc;AAAA,MACzD,QAAQ,UAAU;AAAA,QAChB,SAAS,MAAM;AAAA,QACf,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,YAAY,MAAM;AAAA,MACpB,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,cAAc,KAAK;AAAA,MACnB,uBAAuB,OAAO,KAAK;AAAA,MACnC,MAAM,cAAc,KAAK;AAAA,QACvB,IAAI,MAAM;AAAA,QACV,OACE,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAC/C,MAAM,QACN,CAAC;AAAA,QACP,MAAM,MAAM;AAAA,QACZ,cAAc,MAAM;AAAA,QACpB,MAAM;AAAA,MACR,CAAC;AAAA,MACD,iBAAiB;AAAA,MACjB;AAAA,SAEG;AAAA,MACH,cAAc,KAAK;AAAA,MACnB,MAAM,cAAc,KAAK;AAAA,QACvB,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,QAChB,MAAM,MAAM;AAAA,MACd,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,cAAc,KAAK;AAAA,MACnB,MAAM,eAAe,MAAM;AAAA,MAC3B;AAAA;AAAA,EAGJ,OAAO;AAAA;AAGT,IAAM,kBAAkB,OACtB,QACA,SACA,OACA,WACA,gBACA,WACG;AAAA,EACH,MAAM,YAAY,CAAC,GAAG,MAAM,gBAAgB;AAAA,EAC5C,MAAM,mBAAmB,CAAC;AAAA,EAI1B,MAAM,gBAAgB,KAAK;AAAA,IACzB,SAAS,MAAM;AAAA,IACf,MAAM;AAAA,EACR,CAAC;AAAA,EACD,MAAM,gBAAgB,CAAC;AAAA,EAGvB,MAAM,mBAA8D,CAAC;AAAA,EAErE,WAAW,YAAY,WAAW;AAAA,IAEhC,MAAM,gBACJ,QACA,SAAS,MACT,SAAS,OACT,WACA,cACF;AAAA,IAGA,MAAM,SAAS,MAAM,YAAY,SAAS,SAAS,MAAM,SAAS,KAAK;AAAA,IACvE,MAAM,SAAS,eAAe,MAAM;AAAA,IAGpC,MAAM,iBACJ,QACA,SAAS,MACT,QACA,WACA,cACF;AAAA,IAEA,QAAQ,YAAY,SAAS,MAAM,SAAS,OAAO,MAAM;AAAA,IAEzD,iBAAiB,KAAK,gBAAgB,SAAS,IAAI,MAAM,CAAC;AAAA,IAE1D,MAAM,iBAAiB,IACrB,kBAAkB,SAAS,MAAM,SAAS,KAAK,CACjD;AAAA,EACF;AAAA,EAEA,MAAM,gBAAgB,KAAK;AAAA,IACzB,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AAAA,EAED,MAAM,WAAW,QAAQ,QACrB,qBAAqB,QAAQ,KAAK,IAClC;AAAA,EAEJ,MAAM,SAAS,oBACb,QAAQ,UACR;AAAA,IACE,mBAAmB,QAAQ;AAAA,IAC3B,WAAW,QAAQ;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,OAAO,QAAQ;AAAA,IACf,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,oBAAoB,QAAQ;AAAA,IAC5B,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA,cAAc,QAAQ;AAAA,IACtB,OAAO;AAAA,EACT,GACA,QAAQ,eACR,CAAC,aAAa;AAAA,IACZ,MAAM,kBAAkB,SAAS;AAAA,GAErC;AAAA,EAEA,MAAM,kBACJ,QACA,OACA,SACA,QACA,WACA,gBACA,MACF;AAAA;AAGF,IAAM,oBAAoB,OACxB,QACA,OACA,SACA,QACA,WACA,gBACA,WACG;AAAA,EACH,IAAI,iBAAiB;AAAA,EAErB,iBAAiB,SAAS,QAAQ;AAAA,IAChC,IAAI,OAAO;AAAA,MAAS;AAAA,IAEpB,MAAM,YAAY,iBAChB,OACA,OACA,SACA,QACA,WACA,cACF;AAAA,IAEA,IAAI;AAAA,MAAW,iBAAiB;AAAA,EAIlC;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,yBAAyB,CAC7B,OACA,UACA,WAEA,MAAM,iBAAiB,SAAS,KAChC,MAAM,cAAc,YACpB,CAAC,OAAO;AAEV,IAAM,0BAA0B,CAAC,UAC/B,MAAM,iBAAiB,MAAM,CAAC,aAC5B,MAAM,iBAAiB,IACrB,kBAAkB,SAAS,MAAM,SAAS,KAAK,CACjD,CACF;AAEF,IAAM,sBAAsB,CAAC,WAA0B;AAAA,EACrD,cAAc,MAAM;AAAA,EACpB,OAAO,MAAM;AACf;AAEA,IAAM,kBAAkB,OACtB,QACA,SACA,UACA,kBACA,sBACA,WACA,gBACA,QACA,cACA,SACG;AAAA,EACH,MAAM,WAAW,QAAQ,YAAY;AAAA,EAErC,MAAM,QAAuB;AAAA,IAC3B,eAAe;AAAA,IACf,qBAAqB;AAAA,IACrB,iBAAiB,CAAC,GAAG,QAAQ;AAAA,IAC7B,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,kBAAkB,IAAI;AAAA,IACtB,kBAAkB;AAAA,EACpB;AAAA,EAEA,OAAO,uBAAuB,OAAO,UAAU,MAAM,GAAG;AAAA,IACtD,IAAI,wBAAwB,KAAK;AAAA,MAAG;AAAA,IAGpC,MAAM,gBACJ,QACA,SACA,OACA,WACA,gBACA,MACF;AAAA,IAEA,MAAM;AAAA,EACR;AAAA,EAEA,OAAO,oBAAoB,KAAK;AAAA;AAGlC,IAAM,eAAe,OACnB,QACA,WACA,gBACA,OACA,YACA,OACA,iBAEA,YAAY,QAAQ;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,cAAc;AAAA,EACvB,MAAM;AAAA,EACN;AACF,CAAC;AAEH,IAAM,YAAY,OAChB,QACA,KACA,WACA,mBAEA,YAAY,QAAQ;AAAA,EAClB;AAAA,EACA,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,EACxD;AAAA,EACA,MAAM;AACR,CAAC;AAEH,IAAM,kBAAkB,OACtB,OACA,SACA,QACA,WACA,mBACG;AAAA,EACH,MAAM,cAAc,mBAAmB,OAAO,QAAQ,OAAO;AAAA,EAE7D,MAAM,YAAY,QAAQ;AAAA,IACxB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AAAA,EAED,OAAO;AAAA;AAGT,IAAM,kBAAkB,OACtB,QACA,SACA,UACA,WACA,eACA,WACA,gBACA,QACA,cACA,cACG;AAAA,EACH,MAAM,aAAa,MAAM,gBACvB,QACA,SACA,UACA,WACA,eACA,WACA,gBACA,QACA,cACA,YACF;AAAA,EAEA,MAAM,aACJ,QACA,WACA,gBACA,WAAW,OACX,KAAK,IAAI,IAAI,WACb,QAAQ,OACR,QAAQ,YACV;AAAA,EACA,QAAQ,aACN,WAAW,cACX,WAAW,OACX,QAAQ,YACV;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,yBAAyB,OAC7B,OACA,SACA,QACA,WACA,mBACG;AAAA,EACH,MAAM,cAAc,MAAM,gBACxB,OACA,SACA,QACA,WACA,cACF;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,gBAAgB,OACpB,QACA,SACA,UACA,WACA,gBACA,QACA,cACG;AAAA,EACH,MAAM,WAAW,QAAQ,QACrB,qBAAqB,QAAQ,KAAK,IAClC;AAAA,EAEJ,MAAM,SAAS,oBACb,QAAQ,UACR;AAAA,IACE,mBAAmB,QAAQ;AAAA,IAC3B,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA,OAAO,QAAQ;AAAA,IACf,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,oBAAoB,QAAQ;AAAA,IAC5B,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA,cAAc,QAAQ;AAAA,IACtB,OAAO;AAAA,EACT,GACA,QAAQ,eACR,CAAC,aAAa;AAAA,IACZ,SAAS,OAAO,GAAG,SAAS,QAAQ,GAAG,SAAS,QAAQ;AAAA,GAE5D;AAAA,EAEA,MAAM,SAAS,MAAM,cACnB,QACA,SACA,QACA,UACA,WACA,gBACA,MACF;AAAA,EAEA,IAAI,OAAO,iBAAiB,SAAS,GAAG;AAAA,IACtC,MAAM,gBACJ,QACA,SACA,UACA,OAAO,kBACP,OAAO,eACP,WACA,gBACA,QACA,OAAO,cACP,SACF;AAAA,EACF,EAAO;AAAA,IACL,MAAM,aACJ,QACA,WACA,gBACA,OAAO,OACP,KAAK,IAAI,IAAI,WACb,QAAQ,OACR,QAAQ,YACV;AAAA,IACA,QAAQ,aACN,OAAO,cACP,OAAO,OACP,QAAQ,YACV;AAAA;AAAA;AAYJ,IAAM,sBAAsB,CAAC,UAA8B;AAAA,EACzD,IAAI,MAAM,iBAAiB;AAAA,IACzB,MAAM,cAAc,KAAK;AAAA,MACvB,WAAW,MAAM,gBAAgB,aAAa;AAAA,MAC9C,UAAU,MAAM,gBAAgB;AAAA,MAChC,MAAM;AAAA,IACR,CAAC;AAAA,IACD,MAAM,kBAAkB;AAAA,EAC1B;AAAA;AAGF,IAAM,qBAAqB,OACzB,OACA,SACA,QACA,OACA,WACA,mBACG;AAAA,EACH,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,IAAI,MAAM,SAAS;AAAA,QACjB,MAAM,YAAY,QAAQ;AAAA,UACxB,SAAS,MAAM;AAAA,UACf;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,IAAI,CAAC,MAAM,iBAAiB;AAAA,QAC1B,MAAM,kBAAkB,EAAE,WAAW,IAAI,MAAM,GAAG;AAAA,MACpD;AAAA,MACA,MAAM,gBAAgB,QAAQ,MAAM;AAAA,MACpC,IAAI,MAAM,WAAW;AAAA,QACnB,MAAM,gBAAgB,YAAY,MAAM;AAAA,MAC1C;AAAA,MACA;AAAA,SAEG;AAAA,MACH,oBAAoB,KAAK;AAAA,MACzB,MAAM,gBAAgB,MAAM,uBAC1B,OACA,SACA,QACA,WACA,cACF;AAAA,MACA,MAAM,cAAc,KAAK,EAAE,SAAS,MAAM,SAAS,MAAM,OAAO,CAAC;AAAA,MACjE;AAAA,SAEG;AAAA,MACH,MAAM,iBAAiB,QAAQ,OAAO,WAAW,cAAc;AAAA,MAC/D,QAAQ,UAAU;AAAA,QAChB,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,SAAS,MAAM;AAAA,QACf,WAAW,MAAM;AAAA,QACjB,eAAe,MAAM;AAAA,MACvB,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,MAAM,iBAAiB,QAAQ,OAAO,WAAW,cAAc;AAAA,MAC/D,QAAQ,UAAU;AAAA,QAChB,SAAS,MAAM;AAAA,QACf,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,YAAY,MAAM;AAAA,MACpB,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,oBAAoB,KAAK;AAAA,MACzB,MAAM,iBAAiB,KAAK;AAAA,QAC1B,IAAI,MAAM;AAAA,QACV,OAAO,MAAM;AAAA,QACb,MAAM,MAAM;AAAA,MACd,CAAC;AAAA,MACD,MAAM,cAAc,KAAK;AAAA,QACvB,IAAI,MAAM;AAAA,QACV,OACE,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAC/C,MAAM,QACN,CAAC;AAAA,QACP,MAAM,MAAM;AAAA,QACZ,cAAc,MAAM;AAAA,QACpB,MAAM;AAAA,MACR,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,oBAAoB,KAAK;AAAA,MACzB,MAAM,cAAc,KAAK;AAAA,QACvB,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,QAChB,MAAM,MAAM;AAAA,MACd,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,oBAAoB,KAAK;AAAA,MACzB,MAAM,QAAQ,MAAM;AAAA,MACpB;AAAA;AAAA;AAIN,IAAM,gBAAgB,OACpB,QACA,SACA,QACA,UACA,WACA,gBACA,WACG;AAAA,EACH,MAAM,QAA4B;AAAA,IAChC,eAAe,CAAC;AAAA,IAChB,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,kBAAkB,CAAC;AAAA,IACnB,OAAO;AAAA,EACT;AAAA,EAEA,iBAAiB,SAAS,QAAQ;AAAA,IAChC,IAAI,OAAO;AAAA,MAAS;AAAA,IAEpB,MAAM,mBACJ,OACA,SACA,QACA,OACA,WACA,cACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGF,IAAM,WAAW,OACtB,QACA,gBACA,WACA,YACG;AAAA,EACH,MAAM,SAAS,QAAQ,UAAU,IAAI,gBAAgB,EAAE;AAAA,EACvD,MAAM,YAAY,KAAK,IAAI;AAAA,EAE3B,MAAM,WAAgC,QAAQ,WAC1C,CAAC,GAAG,QAAQ,QAAQ,IACpB,CAAC;AAAA,EAEL,IAAI;AAAA,IACF,MAAM,cACJ,QACA,SACA,UACA,WACA,gBACA,QACA,SACF;AAAA,IACA,OAAO,KAAK;AAAA,IACZ,MAAM,kBACJ,QACA,KACA,WACA,gBACA,QACA,SACF;AAAA;AAAA;AAIJ,IAAM,oBAAoB,OACxB,QACA,KACA,WACA,gBACA,QACA,cACG;AAAA,EACH,IAAI,OAAO,SAAS;AAAA,IAClB,MAAM,aACJ,QACA,WACA,gBACA,WACA,KAAK,IAAI,IAAI,SACf;AAAA,IAEA;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,QAAQ,KAAK,WAAW,cAAc;AAAA;;;ACx4BxD,IAAM,qBAAoB;AAC1B,IAAM,uBAAuB;AAM7B,IAAM,iBAAiB,OAAO,gBAAgB;AAiB9C,IAAM,gBAAgB,gBAAgB,CACpC,QACA,QACA,YAC0B;AAAA,EAC1B,IAAI,CAAC,OAAO,SAAS,UAAU,KAAK,cAAc,GAAG;AAAA,IACnD,OAAO;AAAA,IAEP;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IACF,IAAI,OAAO,OAAO,KAAK;AAAA,IACvB,UAAS;AAAA,MACP,IAAI;AAAA,MACJ,MAAM,OAAO,IAAI,QAA+B,CAAC,YAAY;AAAA,QAC3D,QAAQ,WAAW,MAAM,QAAQ,cAAc,GAAG,UAAU;AAAA,OAC7D;AAAA,MAED,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,SAAS,MAAM,QAAQ,KAAK,CAAC,MAAM,IAAI,CAAC;AAAA,gBACxC;AAAA,QACA,IAAI;AAAA,UAAO,aAAa,KAAK;AAAA;AAAA,MAG/B,IAAI,WAAW,gBAAgB;AAAA,QAC7B,IAAI,OAAO;AAAA,UAAS;AAAA,QACpB,MAAM,EAAE,MAAM,IAAI,OAAO,OAAO;AAAA,QAEhC;AAAA,MACF;AAAA,MAEA,IAAI,OAAO;AAAA,QAAM;AAAA,MACjB,MAAM,OAAO;AAAA,MACb,OAAO,OAAO,KAAK;AAAA,IACrB;AAAA,YACA;AAAA,IACA,MAAM,OAAO,SAAS,SAAS;AAAA;AAAA;AAenC,IAAM,wBAAuB,CAAC,UAC5B,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU;AAAA,KACtC,IAAI,eAAe,EAAE,cAAc,KAAK,IAAI,CAAC;AAAA,EACjD,aAAa,IAAI;AAAA,EACjB,cAAc,IAAI;AAAA,EAClB;AACF,EAAE;AAEJ,IAAM,eAAc,OAClB,SACA,UACA,cACG;AAAA,EACH,MAAM,UAAU,QAAQ,QAAQ;AAAA,EAEhC,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO,wBAAwB;AAAA,EACjC;AAAA,EAEA,IAAI;AAAA,IACF,OAAO,MAAM,QAAQ,QAAQ,SAAS;AAAA,IACtC,OAAO,KAAK;AAAA,IACZ,OAAO,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA;AAAA;AASpE,IAAM,eAAe,CACnB,SACA,WACA,OACA,SAEA,QAAQ,mBACJ,EAAE,MAAM,KAAK,UAAU,EAAE,OAAO,KAAK,CAAC,GAAG,OAAO,UAAU,IAC1D,EAAE,MAAM,UAAU,MAAM,OAAO,IAAI,GAAG,OAAO,UAAU;AAE7D,IAAM,gBAAgB,CACpB,SACA,WACA,SAEA,QAAQ,mBACJ,EAAE,MAAM,KAAK,UAAU,EAAE,KAAK,CAAC,GAAG,OAAO,WAAW,IACpD,EAAE,MAAM,UAAU,SAAS,IAAI,GAAG,OAAO,WAAW;AAE1D,IAAM,aAAa,CACjB,SACA,WACA,MACA,QACA,kBAEA,QAAQ,mBACJ,EAAE,MAAM,KAAK,UAAU,EAAE,MAAM,QAAQ,cAAc,CAAC,GAAG,OAAO,SAAS,IACzE,EAAE,MAAM,UAAU,MAAM,MAAM,QAAQ,aAAa,GAAG,OAAO,SAAS;AAE5E,IAAM,aAAa,CACjB,MACA,QACA,YACA,aACc;AAAA,EACd,MAAM,KAAK,UAAU,EAAE,SAAS,MAAM,QAAQ,WAAW,CAAC;AAAA,EAC1D,OAAO;AACT;AAIA,IAAM,gBAAgB,CACpB,SACA,WACA,cACA,OACA,eACa;AAAA,EACb,QAAQ,aAAa,cAAc,KAAK;AAAA,EAExC,OAAO,QAAQ,mBACX;AAAA,IACE,MAAM,KAAK,UAAU,EAAE,YAAY,OAAO,QAAQ,OAAO,MAAM,CAAC;AAAA,IAChE,OAAO;AAAA,EACT,IACA;AAAA,IACE,MAAM,UAAU,SAAS,OAAO,YAAY,QAAQ,KAAK;AAAA,IACzD,OAAO;AAAA,EACT;AAAA;AAMN,IAAM,eAAe,CACnB,SACA,WACA,QACA,WACa;AAAA,EACb,IAAI,QAAQ,kBAAkB;AAAA,IAC5B,OAAO,EAAE,MAAM,KAAK,UAAU,EAAE,QAAQ,OAAO,CAAC,GAAG,OAAO,UAAU;AAAA,EACtE;AAAA,EAEA,OAAO,WAAW,YACd,EAAE,MAAM,UAAU,SAAS,GAAG,OAAO,SAAS,IAC9C,EAAE,MAAM,UAAU,MAAM,MAAM,GAAG,OAAO,SAAS;AAAA;AAIvD,IAAM,aAAa,CACjB,SACA,WACA,YAEA,QAAQ,mBACJ,EAAE,MAAM,KAAK,UAAU,EAAE,QAAQ,CAAC,GAAG,OAAO,QAAQ,IACpD,EAAE,MAAM,UAAU,MAAM,OAAO,GAAG,OAAO,SAAS;AAEjD,IAAM,gBAAgB,gBAAgB,CAC3C,gBACA,WACA,SACA,WACA;AAAA,EACA,MAAM,SAAS,QAAQ,UAAU,IAAI,gBAAgB,EAAE;AAAA,EACvD,MAAM,YAAY,KAAK,IAAI;AAAA,EAC3B,MAAM,WAAW,QAAQ,YAAY;AAAA,EAErC,MAAM,WAAgC,QAAQ,WAC1C,CAAC,GAAG,QAAQ,QAAQ,IACpB,CAAC;AAAA,EAEL,IAAI;AAAA,IACF,OAAO,cACL,YAAY,SAAS,WAAW,UAAU,QAAQ,WAAW,QAAQ,GACrE,QACA,QAAQ,eAAe,oBACzB;AAAA,IACA,OAAO,KAAK;AAAA,IAGZ,IAAI,OAAO,SAAS;AAAA,MAClB,MAAM,aAAa,SAAS,WAAW,WAAW,oBAAoB;AAAA,MAEtE;AAAA,IACF;AAAA,IAEA,MAAM,WACJ,SACA,WACA,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CACjD;AAAA;AAAA;AAmBJ,IAAM,iBAAgB,CACpB,UACA,kBACG;AAAA,EACH,cAAc,KAAK;AAAA,IACjB,WAAW,SAAS,aAAa;AAAA,IACjC,UAAU,SAAS;AAAA,IACnB,MAAM;AAAA,EACR,CAAC;AAAA;AAGH,IAAM,uBAAuB,UAAU,CACrC,SACA,WACA,YACA,WACA,SACA;AAAA,EACA,WAAW,oBAAoB,EAAE,WAAW,IAAI,MAAM,GAAG;AAAA,EACzD,WAAW,gBAAgB,QAAQ;AAAA,EACnC,WAAW,gBAAgB,YACzB,aAAa,WAAW,gBAAgB;AAAA,EAC1C,MAAM,cAAc,SAAS,WAAW,WAAW,gBAAgB,IAAI;AAAA;AAGzE,IAAM,qBAAqB,CAAC,eAA2B;AAAA,EACrD,IAAI,CAAC,WAAW;AAAA,IAAiB;AAAA,EAEjC,eAAc,WAAW,iBAAiB,WAAW,aAAa;AAAA,EAClE,WAAW,kBAAkB;AAAA;AAG/B,IAAM,mBAAmB,UAAU,CACjC,SACA,YACA,WACA,cACA,SACA;AAAA,EACA,mBAAmB,UAAU;AAAA,EAK7B,MAAM,OAAO,WAAW,cAAc,GAAG,EAAE;AAAA,EAC3C,IAAI,MAAM,SAAS;AAAA,IAAQ,KAAK,WAAW;AAAA,EACtC;AAAA,eAAW,cAAc,KAAK,EAAE,SAAS,MAAM,OAAO,CAAC;AAAA,EAC5D,MAAM,aAAa,SAAS,WAAW,SAAS,eAAe,OAAO;AAAA;AAGxE,IAAM,oBAAoB,UAAU,CAClC,OACA,WACA,SACA;AAAA,EACA,MAAM,WACJ,SACA,WACA,MAAM,MACN,MAAM,QACN,MAAM,aACR;AAAA,EACA,QAAQ,UAAU;AAAA,IAChB,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IACjB,eAAe,MAAM;AAAA,EACvB,CAAC;AAAA;AAGH,IAAM,oBAAoB,UAAU,CAClC,OACA,SACA;AAAA,EACA,MAAM,WAAW,MAAM,MAAM,MAAM,QAAQ,MAAM,YAAY,MAAM,OAAO;AAAA,EAC1E,QAAQ,UAAU;AAAA,IAChB,SAAS,MAAM;AAAA,IACf,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM;AAAA,IACd,YAAY,MAAM;AAAA,EACpB,CAAC;AAAA;AAGH,IAAM,sBAAsB,CAC1B,OACA,eACG;AAAA,EACH,mBAAmB,UAAU;AAAA,EAC7B,WAAW,iBAAiB,KAAK;AAAA,IAC/B,IAAI,MAAM;AAAA,IACV,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,EACd,CAAC;AAAA,EACD,WAAW,cAAc,KAAK;AAAA,IAC5B,IAAI,MAAM;AAAA,IACV,OACE,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAC/C,MAAM,QACN,CAAC;AAAA,IACP,MAAM,MAAM;AAAA,IACZ,cAAc,MAAM;AAAA,IACpB,MAAM;AAAA,EACR,CAAC;AAAA;AAGH,IAAM,eAAe,UAAU,CAC7B,OACA,YACA,WACA,SACA,cACA;AAAA,EACA,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,OAAO,qBACL,MAAM,SACN,MAAM,WACN,YACA,WACA,OACF;AAAA,MACA;AAAA,SAEG;AAAA,MACH,OAAO,iBACL,MAAM,SACN,YACA,WACA,cACA,OACF;AAAA,MACA;AAAA,SAEG;AAAA,MACH,OAAO,kBAAkB,OAAO,WAAW,OAAO;AAAA,MAClD;AAAA,SAEG;AAAA,MACH,OAAO,kBAAkB,OAAO,OAAO;AAAA,MACvC;AAAA,SAEG;AAAA,MACH,oBAAoB,OAAO,UAAU;AAAA,MACrC;AAAA,SAEG;AAAA,MAGH,IAAI,QAAQ;AAAA,QACV,MAAM;AAAA,UACJ,MAAM,KAAK,UAAU;AAAA,YACnB,QAAQ,MAAM;AAAA,YACd,IAAI,MAAM;AAAA,YACV,MAAM,MAAM;AAAA,YACZ,eAAe,MAAM;AAAA,YACrB,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,OAAO;AAAA,QACT;AAAA,MACF;AAAA,SAEG;AAAA,MACH,mBAAmB,UAAU;AAAA,MAC7B,WAAW,cAAc,KAAK;AAAA,QAC5B,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,QAChB,MAAM,MAAM;AAAA,MACd,CAAC;AAAA,MACD;AAAA,SAEG;AAAA,MACH,mBAAmB,UAAU;AAAA,MAC7B,WAAW,QAAQ,MAAM;AAAA,MACzB,WAAW,aAAa,MAAM;AAAA,MAC9B;AAAA;AAAA;AAON,IAAM,qBAAqB,CAAC,QAAgB,QAAgB;AAAA,EAC1D,IAAI,OAAO,UAAU;AAAA,IAAK,OAAO;AAAA,EAEjC,MAAM,UAAU,OAAO,SAAS;AAAA,EAChC,MAAM,UAAU,KAAK,KAAK,MAAM,CAAC;AAAA,EACjC,MAAM,UAAU,MAAM;AAAA,EACtB,MAAM,SAAS;AAAA,uBAA0B,cAAc;AAAA;AAAA,EAEvD,OACE,OAAO,MAAM,GAAG,OAAO,IAAI,SAAS,OAAO,MAAM,OAAO,SAAS,OAAO;AAAA;AAI5E,IAAM,mBAAmB,gBAAgB,CACvC,kBACA,SACA,WACA,WACA;AAAA,EACA,MAAM,mBAA8D,CAAC;AAAA,EAErE,WAAW,YAAY,kBAAkB;AAAA,IAGvC,IAAI,QAAQ,kBAAkB;AAAA,MAC5B,MAAM;AAAA,QACJ,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO,SAAS;AAAA,UAChB,MAAM,SAAS;AAAA,UACf,QAAQ;AAAA,QACV,CAAC;AAAA,QACD,OAAO;AAAA,MACT;AAAA,IACF,EAAO;AAAA,MACL,UAAU,gBAAgB,UAAU,YAClC,SAAS,MACT,SAAS,KACX;AAAA,MACA,MAAM,EAAE,MAAM,UAAU,cAAc,OAAO,QAAQ;AAAA;AAAA,IAIvD,MAAM,SAAS,MAAM,aAAY,SAAS,SAAS,MAAM,SAAS,KAAK;AAAA,IACvE,MAAM,SAAS,eAAe,MAAM;AAAA,IAEpC,IAAI,QAAQ,kBAAkB;AAAA,MAC5B,MAAM;AAAA,QACJ,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO,SAAS;AAAA,UAChB,MAAM,SAAS;AAAA,UACf;AAAA,UACA,QAAQ;AAAA,QACV,CAAC;AAAA,QACD,OAAO;AAAA,MACT;AAAA,IACF,EAAO;AAAA,MACL,UAAU,eAAe,UAAU,aAAa,QAC9C,UAAU,YAAY,SAAS,MAAM,SAAS,KAAK,GACnD,UAAU,aAAa,SAAS,MAAM,MAAM,CAC9C;AAAA,MACA,MAAM,EAAE,MAAM,UAAU,cAAc,OAAO,QAAQ;AAAA;AAAA,IAGvD,QAAQ,YAAY,SAAS,MAAM,SAAS,OAAO,MAAM;AAAA,IAIzD,MAAM,gBACJ,QAAQ,uBAAuB,YAC3B,mBAAmB,QAAQ,QAAQ,kBAAkB,IACrD;AAAA,IAEN,iBAAiB,KAAK,gBAAgB,SAAS,IAAI,QAAQ,aAAa,CAAC;AAAA,EAC3E;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,iBAAgB,gBAAgB,CACpC,QACA,YACA,WACA,SACA,WACA,QACA;AAAA,EACA,iBAAiB,SAAS,QAAQ;AAAA,IAChC,IAAI,OAAO;AAAA,MAAS;AAAA,IAEpB,MAAM,eAAe,UAAU;AAAA,IAC/B,OAAO,aACL,OACA,YACA,WACA,SACA,UAAU,YACZ;AAAA,IACA,IAAI,MAAM,SAAS;AAAA,MAAQ;AAAA,IAE3B,UAAU,eAAe,eAAe,MAAM;AAAA,EAChD;AAAA;AAMF,IAAM,qBAAqB,CAAC,YAAwB,WAClD,WAAW,iBAAiB,WAAW,KAAK,OAAO;AAErD,IAAM,cAAc,gBAAgB,CAClC,YACA,SACA,WACA,WACA;AAAA,EACA,UAAU,gBAAgB,KAAK;AAAA,IAC7B,SAAS,WAAW;AAAA,IACpB,MAAM;AAAA,EACR,CAAC;AAAA,EAED,MAAM,cAAc,OAAO,iBACzB,WAAW,kBACX,SACA,WACA,SACF;AAAA,EAEA,UAAU,gBAAgB,KAAK;AAAA,IAC7B,SAAS;AAAA,IACT,MAAM;AAAA,EACR,CAAC;AAAA;AAGH,IAAM,cAAc,gBAAgB,CAClC,SACA,WACA,UACA,QACA,WACA,UACA;AAAA,EACA,MAAM,YAAuB;AAAA,IAC3B,cAAc;AAAA,IACd,iBAAiB,CAAC,GAAG,QAAQ;AAAA,IAC7B,cAAc;AAAA,IACd,MAAM;AAAA,EACR;AAAA,EAEA,MAAM,WAAW,QAAQ,QACrB,sBAAqB,QAAQ,KAAK,IAClC;AAAA,EAEJ,MAAM,iBAA0B,EAAE,aAAa,GAAG,cAAc,EAAE;AAAA,EAClE,IAAI,eAAqC;AAAA,EACzC,IAAI,iBAAiB;AAAA,EAErB,IAAI;AAAA,IACF,MAAO,UAAU,QAAQ,YAAY,CAAC,OAAO,SAAS,UAAU,QAAQ;AAAA,MACtE,MAAM,aAAyB;AAAA,QAC7B,eAAe,CAAC;AAAA,QAChB,iBAAiB;AAAA,QACjB,kBAAkB,CAAC;AAAA,QACnB,YAAY;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,MAEA,MAAM,qBAAqB,UAAU;AAAA,MAErC,MAAM,SAAS,oBACb,QAAQ,UACR;AAAA,QACE,mBAAmB,QAAQ;AAAA,QAC3B,WAAW,QAAQ;AAAA,QACnB,UAAU,UAAU;AAAA,QACpB,OAAO,QAAQ;AAAA,QACf,eAAe,QAAQ;AAAA,QACvB,iBAAiB,QAAQ;AAAA,QACzB,WAAW,QAAQ;AAAA,QACnB;AAAA,QACA,cAAc,QAAQ;AAAA,QACtB,oBAAoB,QAAQ;AAAA,QAC5B,OAAO;AAAA,MACT,GACA,QAAQ,eACR,CAAC,aAAa;AAAA,QACZ,UAAU,kBAAkB,SAAS;AAAA,OAEzC;AAAA,MAEA,OAAO,eACL,QACA,YACA,WACA,SACA,WACA,MACF;AAAA,MAMA,QAAQ,SACN,UAAU,MACV,WAAW,OACX,UAAU,aAAa,MAAM,mBAAmB,MAAM,CACxD;AAAA,MACA,kBAAkB;AAAA,MAClB,eAAe,eAAe,WAAW,OAAO,eAAe;AAAA,MAC/D,eAAe,gBAAgB,WAAW,OAAO,gBAAgB;AAAA,MACjE,eAAe,wBACZ,eAAe,wBAAwB,MACvC,WAAW,OAAO,wBAAwB;AAAA,MAC7C,eAAe,yBACZ,eAAe,yBAAyB,MACxC,WAAW,OAAO,yBAAyB;AAAA,MAC9C,eAAe,eACZ,eAAe,eAAe,MAC9B,WAAW,OAAO,eAAe;AAAA,MACpC,eAAe,mBACZ,eAAe,mBAAmB,MAClC,WAAW,OAAO,mBAAmB;AAAA,MACxC,YAAY,KAAK,UAAU,OAAO,QAChC,WAAW,OAAO,iBAAiB,CAAC,CACtC,GAAG;AAAA,QACD,eAAe,kBAAkB,CAAC;AAAA,QAClC,eAAe,cAAc,QAC1B,eAAe,cAAc,QAAQ,KAAK;AAAA,MAC/C;AAAA,MACA,eAAe,gCACZ,eAAe,gCAAgC,MAC/C,WAAW,OAAO,gCAAgC;AAAA,MACrD,MAAM,qBACJ,eAAe,cAAc,eAAe;AAAA,MAE9C,IAAI,WAAW,eAAe,cAAc;AAAA,QAC1C,eAAe;AAAA,QACf,MAAM,aACJ,SACA,WACA,cACA,4CAA4C,WAAW,OAAO,gBAAgB,WAC5E,yFACJ;AAAA,QAEA;AAAA,MACF;AAAA,MAEA,IACE,QAAQ,kBACR,sBAAsB,QAAQ,gBAC9B;AAAA,QACA,eAAe;AAAA,QACf,MAAM,aACJ,SACA,WACA,oBACA,kCAAkC,sBAAsB,QAAQ,gCAC9D,GAAG,UAAU,0DACjB;AAAA,QAEA;AAAA,MACF;AAAA,MAEA,IACE,QAAQ,iBACR,KAAK,IAAI,IAAI,aAAa,QAAQ,eAClC;AAAA,QACA,eAAe;AAAA,QACf,MAAM,aACJ,SACA,WACA,mBACA,iCAAiC,KAAK,OAAO,KAAK,IAAI,IAAI,aAAa,IAAI,aACzE,GAAG,UAAU,yDACjB;AAAA,QAEA;AAAA,MACF;AAAA,MAEA,IAAI,mBAAmB,YAAY,MAAM,GAAG;AAAA,QAC1C,IAAI,OAAO,SAAS;AAAA,UAClB,eAAe;AAAA,UACf,MAAM,aACJ,SACA,WACA,WACA,oBACF;AAAA,QACF,EAAO;AAAA,UACL,eAAe;AAAA,UACf,MAAM,cACJ,SACA,WACA,UAAU,cACV,WAAW,OACX,KAAK,IAAI,IAAI,SACf;AAAA;AAAA,QAGF;AAAA,MACF;AAAA,MAEA,OAAO,YAAY,YAAY,SAAS,WAAW,SAAS;AAAA,IAC9D;AAAA,IAKA,IAAI,OAAO,SAAS;AAAA,MAClB,eAAe;AAAA,MACf,MAAM,aAAa,SAAS,WAAW,WAAW,oBAAoB;AAAA,IACxE,EAAO;AAAA,MACL,eAAe;AAAA,MACf,MAAM,aACJ,SACA,WACA,aACA,8BAA8B,mCAChC;AAAA;AAAA,IAEF,OAAO,OAAO;AAAA,IACd,eAAe,OAAO,UAAU,YAAY;AAAA,IAC5C,MAAM;AAAA,YACN;AAAA,IACA,IAAI;AAAA,MACF,MAAM,QAAQ,WAAW;AAAA,QACvB,YAAY,KAAK,IAAI,IAAI;AAAA,QACzB,cAAc,UAAU;AAAA,QACxB,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,MACT,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,QAAQ,MAAM,oCAAoC,KAAK;AAAA;AAAA;AAAA;;;ACpvBtD,IAAM,sBAAsB;AAI5B,IAAM,eAAe;AAIrB,IAAM,2BAA2B;AACjC,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAC5B,IAAM,2BACX,2BAA2B;AACtB,IAAM,wBACX,2BACA,sBACA,qBACA;AAsBK,IAAM,aAAa,IAAI;;;ACrD9B,IAAM,aAAa,CAAC,SAClB,KACG,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ;AAE3B,IAAM,eAAe,CAAC,OAAe,gBACnC,2BAA2B,WAAW,WAAW;AAEnD,IAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAQA,gBAAgB,qCAChB,QAAQ,WAAW,OAAO,YAC1B,WACA,qBAAqB,gBACrB,kBACA,gBAAgB,WAAW,MAAM,QACjC,yBACA,0BAA0B,+DAC1B,wBAAwB,6DACxB,wBAAwB,6DACxB,yBAAyB,8DACzB,sBAAsB,2DACtB,uBAAuB,4DACvB,uBAAuB,sDACvB,2DAA2D,WAAW,SAAS,6BAA6B,mDAC5G,WACA;AAEF,IAAM,kBAAkB,CAAC,SACvB,8DAA8D,WAAW,IAAI;AAE/E,IAAM,qBAAqB,CAAC,MAAc,WACxC,wDAAwD,WAAW,IAAI;AAEzE,IAAM,sBAAsB,CAAC,MAAc,WACzC,8CAA8C,WAAW,IAAI,mBAAmB,WAAW,MAAM;AAEnG,IAAM,eAAe,CAAC,MAAc,QAAgB,kBAClD,8BACA,wBAAwB,WAAW,MAAM,YAAY,cAAc,gBAAgB,WAAW,aAAa,IAAI,wBAC7G,gBAAgB,eAAe,WAAW,aAAa,mBAAmB;AAG9E,IAAM,kBAAkB,CACtB,OACA,YACA,UACG;AAAA,EACH,MAAM,QAAkB,CAAC;AAAA,EAEzB,IAAI,OAAO;AAAA,IACT,MAAM,KAAK,WAAW,KAAK,CAAC;AAAA,EAC9B;AAAA,EAEA,IAAI,OAAO;AAAA,IACT,MAAM,KAAK,GAAG,MAAM,mBAAmB,MAAM,iBAAiB;AAAA,EAChE;AAAA,EAEA,IAAI,eAAe,WAAW;AAAA,IAC5B,MAAM,WAAW,aAAa,0BAA0B,QAAQ,CAAC;AAAA,IACjE,MAAM,KAAK,GAAG,UAAU;AAAA,EAC1B;AAAA,EAEA,OAAO,MAAM,SAAS,IAClB,yBAAyB,MAAM,KAAK,QAAK,YACzC;AAAA;AAGN,IAAM,eAAe,CAAC,YACpB,yBAAyB,WAAW,OAAO;AAE7C,IAAM,kBAAkB,MAAM;AAE9B,IAAM,uBAAuB,MAC3B;AAEF,IAAM,qBAAqB,CAAC,UAA8B;AAAA,EACxD,IAAI,CAAC,OAAO;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EAEA,OACE,mCACA,SAAS,WAAW,MAAM,IAAI,iBAAc,MAAM,aAAa,sBAAmB,MAAM,aAAa,wBAAqB,MAAM,aAAa,YAC7I;AAAA;AAIJ,IAAM,sBAAsB,CAC1B,SACA,UAEA,QAAQ,WAAW,IACf,KACA,6BACA,uBACA,mBAAmB,OAAO,KAAK,IAC/B,SACA,GAAG,QACA,IACC,CAAC,WACC,QAAQ,OAAO,YAAY,WAAW,OAAO,IAAI,IAC/C,OAAO,SAAS,KAAK,WAAW,OAAO,MAAM,OAAO,SAE1D,EACC,KAAK,EAAE,MACV,UACA;AAEC,IAAM,mBAAmB,CAC9B,YACuB;AAAA,EACvB,OAAO,QAAQ,SAAS;AAAA,EACxB,cAAc,QAAQ,gBAAgB;AAAA,EACtC,UAAU,QAAQ,YAAY;AAAA,EAC9B,UAAU,QAAQ,YAAY;AAAA,EAC9B,OAAO,QAAQ,SAAS;AAAA,EACxB,OAAO,QAAQ,SAAS;AAAA,EACxB,eAAe,QAAQ,iBAAiB;AAAA,EACxC,cAAc,QAAQ,gBAAgB;AAAA,EACtC,UAAU,QAAQ,YAAY;AAAA,EAC9B,cAAc,QAAQ,gBAAgB;AAAA,EACtC,aAAa,QAAQ,eAAe;AACtC;;;AXhIA,IAAM,eAAe;AACrB,IAAM,iBAAiB;AACvB,IAAM,mBAAmB;AACzB,IAAM,YAAY;AAElB,IAAM,uBAAuB,CAAC,YAAoB;AAAA,EAChD,MAAM,WAAW,QAAQ,QAAQ,GAAG;AAAA,EACpC,MAAM,YAAY,WAAW,KAAK,WAAW;AAAA,EAE7C,OAAO;AAAA,IACL,SAAS,YAAY,QAAQ,MAAM,WAAW,CAAC,IAAI;AAAA,IACnD,cAAc,YAAY,QAAQ,MAAM,GAAG,QAAQ,IAAI;AAAA,EACzD;AAAA;AAGF,IAAM,gBAAgB,CAAC,cAA8B,YAAuB;AAAA,EAC1E,aAAa,SAAS,KAAK,OAAO;AAAA,EAClC,aAAa,gBAAgB,KAAK,IAAI;AAAA,EAEtC,IAAI,CAAC,aAAa,SAAS,QAAQ,SAAS,QAAQ;AAAA,IAClD,aAAa,QAAQ,QAAQ,QAAQ,MAAM,GAAG,gBAAgB;AAAA,EAChE;AAAA;AAGF,IAAM,aAAa,CAAC,iBAClB,aAAa,SAAS,IAAI,CAAC,SAAS;AAAA,EAClC,SAAS,IAAI;AAAA,EACb,MAAM,IAAI;AACZ,EAAE;AAEJ,IAAM,qBAAqB,CACzB,QACA,eACA,SACG;AAAA,EACH,MAAM,cAAc,OAAO,SAAS,UAClC,CAAC,QAAQ,IAAI,OAAO,aACtB;AAAA,EAEA,IAAI,gBAAgB,WAAW;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,SAAS,aAAa,OAAO,SAAS,cAAc,SAAS,QAAQ;AAAA,IACvE,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAQ,WAAW;AAAA,EACzB,MAAM,mBAAmB,OAAO,SAC7B,MAAM,GAAG,eAAe,SAAS,YAAY,IAAI,EAAE,EACnD,IAAI,CAAC,SAAS,KAAK,KAAK,gBAAgB,MAAM,EAAE;AAAA,EAEnD,MAAM,kBAAkC;AAAA,IACtC,WAAW,KAAK,IAAI;AAAA,IACpB,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,mBAAmB,CAAC,SAAiB,gBAAiC;AAAA,EAC1E,IAAI,eAAe,YAAY,SAAS,GAAG;AAAA,IACzC,OAAO;AAAA,MACL,SAAS;AAAA,QACP,GAAG,YAAY,IAAI,CAAC,QAAQ;AAAA,UAC1B,IAAI,IAAI,eAAe,mBAAmB;AAAA,YACxC,OAAO;AAAA,cACL,MAAM,IAAI;AAAA,cACV,QAAQ;AAAA,gBACN,MAAM,IAAI;AAAA,gBACV,YAAY,IAAI;AAAA,gBAChB,MAAM;AAAA,cACR;AAAA,cACA,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UAEA,OAAO;AAAA,YACL,QAAQ;AAAA,cACN,MAAM,IAAI;AAAA,cACV,YAAY,IAAI;AAAA,cAChB,MAAM;AAAA,YACR;AAAA,YACA,MAAM;AAAA,UACR;AAAA,SACD;AAAA,QACD,EAAE,SAAS,MAAM,OAAgB;AAAA,MACnC;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,SAAS,MAAM,OAAgB;AAAA;AAG1C,IAAM,eAAe,CACnB,QACA,WACG;AAAA,EACH,IAAI,OAAO,OAAO;AAAA,IAChB,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,IACpC,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,IAAI,OAAO,OAAO,UAAU,YAAY;AAAA,IACtC,OAAO,OAAO,MAAM,OAAO,YAAY;AAAA,EACzC;AAAA,EAEA,OAAO,OAAO;AAAA;AAGhB,IAAM,eAAe,CACnB,QACA,cACA,UAEA,OAAO,OAAO,UAAU,aACpB,OAAO,MAAM,cAAc,KAAK,IAChC,OAAO;AAEb,IAAM,mBAAmB,CACvB,QACA,cACA,UAEA,OAAO,OAAO,cAAc,aACxB,OAAO,UAAU,cAAc,KAAK,IACpC,OAAO;AAEN,IAAM,SAAS,CAAC,WAA+B;AAAA,EACpD,MAAM,OAAO,OAAO,QAAQ;AAAA,EAC5B,MAAM,QAA6B,OAAO,SAAS,kBAAkB;AAAA,EACrE,MAAM,gBAAgB,OAAO,iBAAiB;AAAA,EAC9C,MAAM,mBAAmB,IAAI;AAAA,EAS7B,MAAM,aAAa,IAAI;AAAA,EAKvB,MAAM,kBAAkB,CAAC,IAAgB,UAAmC;AAAA,IAC1E,IAAI,GAAG,eAAe;AAAA,MAAG,GAAG,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA;AAAA,EAGxD,MAAM,eAAe,CAAC,mBAA2B;AAAA,IAC/C,WAAW,IAAI,cAAc,GAAG,OAAO,EAAE,cAAc,KAAK,CAAC;AAAA,IAC7D,MAAM,aAAa,iBAAiB,IAAI,cAAc;AAAA,IAEtD,IAAI,YAAY;AAAA,MACd,WAAW,MAAM;AAAA,MACjB,iBAAiB,OAAO,cAAc;AAAA,IACxC;AAAA;AAAA,EAGF,MAAM,eAAe,OACnB,IACA,WACA,gBACA,SACA,SACG;AAAA,IACH,MAAM,SAAS,MAAM,MAAM,IAAI,cAAc;AAAA,IAE7C,IAAI,CAAC,QAAQ;AAAA,MACX;AAAA,IACF;AAAA,IAEA,MAAM,oBACJ,SAAS,YACL,OAAO,SAAS,KAAK,GAAG,SAAS,OAAO,SAAS,GAAG,cACpD;AAAA,IACN,MAAM,UAAU,mBAAmB,QAAQ,WAAW,IAAI;AAAA,IAE1D,IAAI,SAAS;AAAA,MACX,MAAM,MAAM,IAAI,QAAQ,IAAI,OAAO;AAAA,MACnC,MAAM,kBAAkB,WAAW;AAAA,MACnC,gBAAgB,IAAI;AAAA,QAClB,aAAa;AAAA,QACb;AAAA,QACA,eAAe;AAAA,QACf,WAAW;AAAA,QACX;AAAA,QACA,mBAAmB,QAAQ;AAAA,QAC3B,mBAAmB;AAAA,QACnB,MAAM;AAAA,MACR,CAAC;AAAA,MACD,mBAAmB;AAAA,QACjB,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA,gBAAgB,QAAQ;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAAA,EAGF,MAAM,oBAAoB,OACxB,IACA,YACA,gBACA,iBACA,aACA,gBACG;AAAA,IACH,MAAM,qBAAqB,WAAW;AAAA,IACtC,MAAM,SAAS,cAAc,UAAU;AAAA,IACvC,QAAQ,SAAS,iBAAiB;AAAA,IAElC,MAAM,eAAe,MAAM,MAAM,YAAY,cAAc;AAAA,IAC3D,MAAM,UAAU,WAAW,YAAY;AAAA,IAEvC,MAAM,aAAa,IAAI;AAAA,IACvB,iBAAiB,IAAI,gBAAgB,UAAU;AAAA,IAC/C,MAAM,iBAAiB,MAAM,WAAW,MAAM;AAAA,IAC9C,aAAa,iBAAiB,SAAS,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAAA,IAErE,cAAc,cAAc;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,WAAW,KAAK,IAAI;AAAA,IACtB,CAAC;AAAA,IACD,MAAM,MAAM,IAAI,gBAAgB,YAAY;AAAA,IAE5C,MAAM,QAAQ,aAAa,QAAQ,MAAM;AAAA,IACzC,MAAM,cAAc,iBAAiB,SAAS,WAAW;AAAA,IAEzD,IAAI;AAAA,MACF,MAAM,SAAS,IAAI,gBAAgB,oBAAoB;AAAA,QACrD,eAAe,OAAO;AAAA,QACtB,UAAU,OAAO;AAAA,QACjB,UAAU,CAAC,GAAG,SAAS,WAAW;AAAA,QAClC;AAAA,QACA,UAAU,OAAO,SAAS,YAAY;AAAA,QACtC,QAAQ,WAAW;AAAA,QACnB,cAAc,OAAO;AAAA,QACrB,WAAW,iBAAiB,QAAQ,cAAc,KAAK;AAAA,QACvD,OAAO,aAAa,QAAQ,cAAc,KAAK;AAAA,QAC/C,YAAY,OAAO,cAAc,UAAU;AAAA,UACzC,MAAM,OAAO,MAAM,MAAM,IAAI,cAAc;AAAA,UAE3C,IAAI,MAAM;AAAA,YACR,cAAc,MAAM;AAAA,cAClB,SAAS;AAAA,cACT;AAAA,cACA,IAAI;AAAA,cACJ,MAAM;AAAA,cACN,WAAW,KAAK,IAAI;AAAA,YACtB,CAAC;AAAA,YACD,MAAM,MAAM,IAAI,gBAAgB,IAAI;AAAA,UACtC;AAAA,UAEA,OAAO,aAAa,gBAAgB,cAAc,KAAK;AAAA;AAAA,MAE3D,CAAC;AAAA,cACD;AAAA,MACA,aAAa,oBAAoB,SAAS,cAAc;AAAA,MACxD,IAAI,iBAAiB,IAAI,cAAc,MAAM,YAAY;AAAA,QACvD,iBAAiB,OAAO,cAAc;AAAA,MACxC;AAAA;AAAA;AAAA,EAIJ,MAAM,uBAAuB,CAAC,mBAA2B;AAAA,IACvD,MAAM,WAAW,WAAW,IAAI,cAAc;AAAA,IAC9C,IAAI;AAAA,MAAU,OAAO;AAAA,IACrB,MAAM,QAAQ,4BAA4C;AAAA,MACxD,SAAS,OAAO,QAAQ,aAAa;AAAA,QACnC,gBAAgB,KAAK,IAAI;AAAA,UACvB,gBAAgB,KAAK;AAAA,UACrB,WAAW,KAAK;AAAA,UAChB,MAAM;AAAA,QACR,CAAC;AAAA,QACD,MAAM,kBACJ,KAAK,IACL,KAAK,SACL,KAAK,gBACL,KAAK,iBACL,KAAK,aACL,MACF;AAAA;AAAA,MAEF,SAAS,CAAC,OAAO,SAAS;AAAA,QACxB,gBAAgB,KAAK,MAAM,IAAI;AAAA,UAC7B,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,UAClD,MAAM;AAAA,QACR,CAAC;AAAA;AAAA,IAEL,CAAC;AAAA,IACD,WAAW,IAAI,gBAAgB,KAAK;AAAA,IACpC,IAAI,cAA0B,MAAG;AAAA,MAAG;AAAA;AAAA,IACpC,cAAc,MAAM,UAAU,GAAG,YAAY;AAAA,MAC3C,IAAI,MAAM,WAAW,KAAK,WAAW,IAAI,cAAc,MAAM,OAAO;AAAA,QAClE,WAAW,OAAO,cAAc;AAAA,QAChC,YAAY;AAAA,MACd;AAAA,KACD;AAAA,IAED,OAAO;AAAA;AAAA,EAGT,SAAS,kBAAkB,CAAC,MAAsB;AAAA,IAChD,MAAM,QAAQ,qBAAqB,KAAK,cAAc;AAAA,IACtD,MAAM,UAAU,MAAM,YAAY,EAAE,MAAM,SAAS;AAAA,IACnD,MAAM,QAAQ,MAAM,KAAK,eAAe;AAAA,IACxC,IAAI,SAAS;AAAA,MACX,MAAM,SAAS,MACZ,YAAY,EACZ,MAAM,OAAO,GAAG,aAAa,WAAW,QAAQ;AAAA,MACnD,MAAM,WACJ,OAAO,UAAU,GAAG,SAAS,OAAO,KAAK,eAAe,IAAI;AAAA,MAC9D,gBAAgB,KAAK,IAAI;AAAA,QACvB,gBAAgB,KAAK;AAAA,QACrB,WAAW,KAAK;AAAA,QAChB;AAAA,QACA,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA;AAAA,EAGF,MAAM,aAAa,MAAM;AAAA,IACvB,IAAI,CAAC,OAAO,MAAM;AAAA,MAChB,OAAO,IAAI;AAAA,IACb;AAAA,IAEA,MAAM,YAAY,iBAChB,OAAO,OAAO,SAAS,WAAW,OAAO,KAAK,SAAS,SACzD;AAAA,IAEA,OAAO,IAAI,OAAO,EACf,KAAK,GAAG,gBAAgB,SAAS,WAAW;AAAA,MAC3C,MAAM,cAAc,QAAQ,OAAO,SAAS,WAAW,OAAO,CAAC;AAAA,MAC/D,MAAM,aACJ,aAAa,cAAc,OAAO,YAAY,OAAO,IAAI;AAAA,MAC3D,MAAM,YACJ,oBAAoB,cAChB,OAAO,YAAY,cAAc,IACjC;AAAA,MACN,MAAM,sBACJ,iBAAiB,cAAc,YAAY,cAAc;AAAA,MAC3D,MAAM,iBAA6C,MAAM,QACvD,mBACF,IACI,sBACA;AAAA,MAEJ,IAAI,CAAC,YAAY;AAAA,QACf,OAAO,IAAI,SAAS,mBAAmB,EAAE,QAAQ,IAAI,CAAC;AAAA,MACxD;AAAA,MAEA,MAAM,iBAAiB,aAAa,WAAW;AAAA,MAC/C,MAAM,YAAY,WAAW;AAAA,MAC7B,MAAM,SAAS,cAAc,UAAU;AAAA,MACvC,QAAQ,YAAY;AAAA,MAEpB,MAAM,eAAe,MAAM,MAAM,YAAY,cAAc;AAAA,MAE3D,cAAc,cAAc;AAAA,QAC1B,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW,KAAK,IAAI;AAAA,MACtB,CAAC;AAAA,MACD,MAAM,MAAM,IAAI,gBAAgB,YAAY;AAAA,MAE5C,MAAM,SAAS,GAAG,YAAY,kBAAkB;AAAA,MAEhD,OAAO,IAAI,SACT,gBAAgB,qCACd,QAAQ,kBACR,WACA,qBAAqB,gBACrB,kBACA,gBAAgB,aAChB,yBACA,wBAAwB,6DACxB,yBAAyB,8DACzB,sBAAsB,2DACtB,uBAAuB,4DACvB,uBAAuB,4DACvB,UACF,EAAE,SAAS,EAAE,gBAAgB,YAAY,EAAE,CAC7C;AAAA,KACD,EACA,IACC,GAAG,uCACH,gBAAgB,GAAG,UAAU;AAAA,MAC3B,QAAQ,gBAAgB,cAAc;AAAA,MACtC,MAAM,eAAe,MAAM,MAAM,IAAI,cAAc;AAAA,MAEnD,IAAI,CAAC,cAAc;AAAA,QACjB,MAAM;AAAA,UACJ,MAAM,UAAU,MAAM,wBAAwB;AAAA,UAC9C,OAAO;AAAA,QACT;AAAA,QAEA;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,cACb,aAAa,SAAS,GAAG,mBAAmB,GAAG,WAAW,EAC5D;AAAA,MACA,QAAQ,iBAAiB;AAAA,MACzB,MAAM,QAAQ,aAAa,QAAQ,MAAM;AAAA,MAEzC,MAAM,aAAa,IAAI;AAAA,MACvB,iBAAiB,IAAI,gBAAgB,UAAU;AAAA,MAE/C,MAAM,UAAU,WAAW,YAAY;AAAA,MAEvC,MAAM,UAAU,aAAa,SAAS,GAAG,mBAAmB;AAAA,MAC5D,MAAM,cAAc,iBAClB,SAAS,WAAW,IACpB,SAAS,WACX;AAAA,MAEA,MAAM,YAAY,cAChB,gBACA,WACA;AAAA,QACE,eAAe,OAAO;AAAA,QACtB,UAAU,OAAO;AAAA,QACjB,UAAU,CAAC,GAAG,QAAQ,MAAM,GAAG,mBAAmB,GAAG,WAAW;AAAA,QAChE;AAAA,QACA,UAAU,OAAO,SAAS,YAAY;AAAA,QACtC,QAAQ,WAAW;AAAA,QACnB,cAAc,OAAO;AAAA,QACrB,WAAW,iBAAiB,QAAQ,cAAc,KAAK;AAAA,QACvD,OAAO,aAAa,QAAQ,cAAc,KAAK;AAAA,MACjD,GACA,SACF;AAAA,MAEA,iBAAiB,SAAS,WAAW;AAAA,QACnC,MAAM;AAAA,MACR;AAAA,MAEA,MAAM,OAAO,MAAM,MAAM,IAAI,cAAc;AAAA,MAE3C,IAAI,MAAM;AAAA,QACR,MAAM,MAAM,IAAI,gBAAgB,IAAI;AAAA,MACtC;AAAA,MAEA,iBAAiB,OAAO,cAAc;AAAA,KAE1C,EACC,IAAI,GAAG,gCAAgC,SAAS,aAAa;AAAA,MAC5D,MAAM,OAAO,MAAM,MAAM,IAAI,OAAO,cAAc;AAAA,MAElD,IAAI,CAAC,MAAM;AAAA,QACT,OAAO,IAAI,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;AAAA,MACzC;AAAA,MAEA,MAAM,OAAO,KAAK,SACf,IACC,CAAC,QACC,uBAAuB,IAAI,cAAc,IAAI,qBACjD,EACC,KAAK,EAAE;AAAA,MAEV,OAAO,IAAI,SAAS,MAAM;AAAA,QACxB,SAAS,EAAE,gBAAgB,YAAY;AAAA,MACzC,CAAC;AAAA,KACF,EACA,IAAI,GAAG,2BAA2B,YAAY;AAAA,MAC7C,MAAM,SAAS,MAAM,MAAM,KAAK;AAAA,MAChC,MAAM,OAAO,OACV,IACC,CAAC,MACC,oCACA,WAAW,gBAAgB,EAAE,SAC7B,2BACA,yBACA,uBAAuB,EAAE,iBACzB,uBAAuB,EAAE,iCACzB,QACJ,EACC,KAAK,EAAE;AAAA,MAEV,OAAO,IAAI,SACT,QAAQ,6CACR,EAAE,SAAS,EAAE,gBAAgB,YAAY,EAAE,CAC7C;AAAA,KACD;AAAA;AAAA,EAGL,MAAM,MAAM,IAAI,OAAO,EAGpB,IAAI,UAAU,CAAC,EACf,GAAG,MAAM;AAAA,IACR,SAAS,OAAO,IAAI,QAAQ;AAAA,MAC1B,MAAM,MAAM,eAAe,GAAG;AAAA,MAE9B,IAAI,CAAC,KAAK;AAAA,QACR;AAAA,MACF;AAAA,MAEA,IAAI,IAAI,SAAS,YAAY,IAAI,gBAAgB;AAAA,QAC/C,aAAa,IAAI,cAAc;AAAA,QAE/B;AAAA,MACF;AAAA,MAEA,IAAI,IAAI,SAAS,UAAU;AAAA,QACzB,MAAM,aACJ,IACA,IAAI,WACJ,IAAI,gBACJ,IAAI,SACJ,QACF;AAAA,QAEA;AAAA,MACF;AAAA,MAEA,IAAI,IAAI,SAAS,QAAQ;AAAA,QACvB,MAAM,aACJ,IACA,IAAI,WACJ,IAAI,gBACJ,IAAI,SACJ,SACF;AAAA,QAEA;AAAA,MACF;AAAA,MAEA,IAAI,IAAI,SAAS,WAAW;AAAA,QAC1B,MAAM,iBAAiB,IAAI,kBAAkB,WAAW;AAAA,QACxD,mBAAmB;AAAA,UACjB,aAAa,IAAI;AAAA,UACjB,iBAAiB,IAAI,aAAa,WAAW;AAAA,UAC7C,SAAS,IAAI;AAAA,UACb;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA;AAAA,EAEJ,CAAC,EACA,IAAI,GAAG,sBAAsB,MAAM,MAAM,KAAK,CAAC,EAC/C,IAAI,GAAG,0BAA0B,SAAS,aAAa;AAAA,IACtD,MAAM,OAAO,MAAM,MAAM,IAAI,OAAO,EAAE;AAAA,IAEtC,IAAI,CAAC,MAAM;AAAA,MACT,OAAO,IAAI,SAAS,aAAa,EAAE,QAAQ,IAAI,CAAC;AAAA,IAClD;AAAA,IAEA,OAAO;AAAA,MACL,IAAI,KAAK;AAAA,MACT,UAAU,KAAK;AAAA,MACf,OAAO,KAAK,SAAS;AAAA,IACvB;AAAA,GACD,EACA,OAAO,GAAG,0BAA0B,SAAS,aAAa;AAAA,IACzD,MAAM,MAAM,OAAO,OAAO,EAAE;AAAA,IAE5B,OAAO,EAAE,IAAI,KAAK;AAAA,GACnB,EACA,IAAI,WAAW,CAAC;AAAA,EAOnB,OAAO;AAAA;;AY1jBT,IAAM,2BAA2B;AAmD1B,IAAM,aAAa,OACxB,YAC8B;AAAA,EAC9B,IAAI,kBAAkB,QAAQ;AAAA,EAC9B,MAAM,SAAS,oBACb,QAAQ,UACR;AAAA,IACE,mBAAmB,QAAQ;AAAA,IAC3B,WAAW,QAAQ;AAAA,IACnB,YAAY,QAAQ;AAAA,IACpB,UAAU,QAAQ;AAAA,IAClB,OAAO,QAAQ;AAAA,IACf,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,WAAW,QAAQ;AAAA,IACnB,gBAAgB,QAAQ;AAAA,IACxB,QAAQ,QAAQ;AAAA,IAChB,eAAe,QAAQ;AAAA,IACvB,cAAc,QAAQ;AAAA,IACtB,aAAa,QAAQ;AAAA,IACrB,YAAY,QAAQ;AAAA,IACpB,OAAO,QAAQ;AAAA,IACf,MAAM,QAAQ;AAAA,EAChB,GACA,QAAQ,eACR,CAAC,YAAY;AAAA,IACX,kBAAkB,QAAQ;AAAA,GAE9B;AAAA,EAEA,MAAM,gBAA0C,CAAC;AAAA,EACjD,IAAI;AAAA,EACJ,MAAM,gBAAgB,MAAM;AAAA,IAC1B,IAAI;AAAA,MACF,cAAc,KAAK;AAAA,QACjB,MAAM;AAAA,QACN,UAAU,SAAS;AAAA,QACnB,WAAW,SAAS;AAAA,MACtB,CAAC;AAAA,IACH,WAAW;AAAA;AAAA,EAEb,IAAI,OAAO;AAAA,EACX,MAAM,YAAkC,CAAC;AAAA,EACzC,MAAM,YAA+B,CAAC;AAAA,EACtC,MAAM,SAAwB,CAAC;AAAA,EAC/B,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,iBAAiB,SAAS,QAAQ;AAAA,IAChC,IAAI,MAAM,SAAS,YAAY;AAAA,MAC7B,aAAa,EAAE,MAAM,GAAG;AAAA,MACxB,SAAS,QAAQ,MAAM;AAAA,MACvB,IAAI,MAAM;AAAA,QAAW,SAAS,YAAY,MAAM;AAAA,IAClD,EAAO,SAAI,MAAM,SAAS,QAAQ;AAAA,MAChC,cAAc;AAAA,MACd,MAAM,OAAO,cAAc,GAAG,EAAE;AAAA,MAChC,IAAI,MAAM,SAAS;AAAA,QAAQ,KAAK,WAAW,MAAM;AAAA,MAC5C;AAAA,sBAAc,KAAK,EAAE,MAAM,QAAQ,SAAS,MAAM,QAAQ,CAAC;AAAA,MAChE,QAAQ,MAAM;AAAA,IAChB,EAAO,SAAI,MAAM,SAAS,YAAY;AAAA,MACpC,cAAc;AAAA,MACd,cAAc,KAAK;AAAA,QACjB,MAAM;AAAA,QACN,IAAI,MAAM;AAAA,QACV,MAAM,MAAM;AAAA,QACZ,OACE,MAAM,SAAS,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ,CAAC;AAAA,QAClE,cAAc,MAAM;AAAA,MACtB,CAAC;AAAA,MACD,UAAU,KAAK,EAAE,IAAI,MAAM,IAAI,OAAO,MAAM,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,IACvE,EAAO,SAAI,MAAM,SAAS,kBAAkB;AAAA,MAC1C,cAAc;AAAA,MACd,cAAc,KAAK;AAAA,QACjB,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,QAChB,MAAM,MAAM;AAAA,MACd,CAAC;AAAA,IACH,EAAO,SAAI,MAAM,SAAS,YAAY;AAAA,MACpC,UAAU,KAAK,KAAK;AAAA,IACtB,EAAO,SAAI,MAAM,SAAS,SAAS;AAAA,MACjC,IAAI,CAAC,MAAM,WAAW;AAAA,QACpB,QAAQ,MAAM,UAAU,UAAU;AAAA,QAClC,OAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF,EAAO,SAAI,MAAM,SAAS,QAAQ;AAAA,MAChC,QAAQ,MAAM;AAAA,MACd,WAAW,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,cAAc;AAAA,EACd,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAGF,IAAM,yBAAyB;AA4BxB,IAAM,aAAa,CACxB,MACA,UACG;AAAA,EACH,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAClB,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,MAAM,MAAM,CAAC,GAAY,MACvB,MAAM,aAAa,MAAM,YAAY,aAAa,KAAK,MAAM,KAAK;AAAA,EACpE,MAAM,gBAAgB,KAAK,KAAK,cAAc;AAAA,EAC9C,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,iBAAiB,CAAC,CAAC;AAAA,IACjE,cAAc,QAAQ,cAAc,QAAQ,KAAK;AAAA,EAEnD,OAAO;AAAA,IACL,sBAAsB,IACpB,KAAK,sBACL,MAAM,oBACR;AAAA,IACA,uBAAuB,IACrB,KAAK,uBACL,MAAM,qBACR;AAAA,IACA,aAAa,IAAI,KAAK,aAAa,MAAM,WAAW;AAAA,IACpD,cAAc,KAAK,eAAe,MAAM,MAAM,eAAe;AAAA,IAC7D,eAAe,KAAK,gBAAgB,MAAM,MAAM,gBAAgB;AAAA,IAChE,iBAAiB,IAAI,KAAK,iBAAiB,MAAM,eAAe;AAAA,IAChE,eACE,OAAO,KAAK,aAAa,EAAE,SAAS,IAAI,gBAAgB;AAAA,IAC1D,8BAA8B,IAC5B,KAAK,8BACL,MAAM,4BACR;AAAA,EACF;AAAA;AAGK,IAAM,kBAAkB,CAAC,UAC9B,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB;AAAA,KAC7C,WAAW,eAAe,EAAE,cAAc,KAAK,IAAI,CAAC;AAAA,EACxD,aAAa,WAAW;AAAA,EACxB,cAAc,WAAW;AAAA,EACzB;AACF,EAAE;AAQG,IAAM,sBAAsB,OACjC,YACuC;AAAA,EACvC;AAAA,IACE,WAAW;AAAA,IACX;AAAA,IACA;AAAA,OACG;AAAA,MACD;AAAA,EACJ,MAAM,gBAAgB,gBAAgB,KAAK;AAAA,EAC3C,MAAM,YAAkC,CAAC;AAAA,EACzC,MAAM,SAAwB,CAAC;AAAA,EAC/B,IAAI;AAAA,EACJ,IAAI,QAAQ;AAAA,EAEZ,MAAM,eAAe,OACnB,UACA,WACG;AAAA,IACH,UAAU,KAAK,GAAG,OAAO,SAAS;AAAA,IAClC,MAAM,kBAA4C,OAAO,iBAAiB;AAAA,MACxE,GAAI,OAAO,OAAO,CAAC,EAAE,SAAS,OAAO,MAAM,MAAM,OAAgB,CAAC,IAAI,CAAC;AAAA,MACvE,GAAG,OAAO,UAAU,IAAI,CAAC,UAAU;AAAA,QACjC,IAAI,KAAK;AAAA,QAGT,OAAO,KAAK,SAAS,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,CAAC;AAAA,QACpE,MAAM,KAAK;AAAA,QACX,MAAM;AAAA,MACR,EAAE;AAAA,IACJ;AAAA,IACA,MAAM,eAAe,MAAM,QAAQ,IACjC,OAAO,UAAU,IAAI,OAAO,SAAS;AAAA,MACnC,MAAM,aAAa,MAAM,KAAK;AAAA,MAC9B,MAAM,SAAuB,aACzB,MAAM,QAAQ,QAAQ,WAAW,QAAQ,KAAK,KAAK,CAAC,EAAE,MACpD,CAAC,QACC,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,GAC7D,IACA,wBAAwB,KAAK;AAAA,MACjC,YAAY,KAAK,MAAM,KAAK,OAAO,eAAe,MAAM,CAAC;AAAA,MAEzD,OAAO,gBAAgB,KAAK,IAAI,MAAM;AAAA,KACvC,CACH;AAAA,IAEA,OAAO;AAAA,MACL,GAAI,OAAO,mBAAmB;AAAA,MAC9B,EAAE,SAAS,iBAAiB,MAAM,YAAqB;AAAA,MACvD,EAAE,SAAS,cAAc,MAAM,OAAgB;AAAA,IACjD;AAAA;AAAA,EAGF,MAAM,UAAU,OACd,UACA,cACuC;AAAA,IACvC,SAAS;AAAA,IACT,MAAM,SAAS,MAAM,WAAW;AAAA,SAC3B;AAAA,MACH;AAAA,MACA,YAAY;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AAAA,IACD,QAAQ,WAAW,OAAO,OAAO,KAAK;AAAA,IACtC,OAAO,KAAK,GAAG,OAAO,MAAM;AAAA,IAC5B,IAAI,OAAO,UAAU,WAAW,GAAG;AAAA,MACjC,OAAO;AAAA,QACL;AAAA,QACA,UAAU,OAAO,mBAAmB;AAAA,QACpC,YAAY;AAAA,QACZ,MAAM,OAAO;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,eAAe,MAAM,aAAa,UAAU,MAAM;AAAA,IACxD,IAAI,aAAa,GAAG;AAAA,MAClB,SAAS;AAAA,MACT,MAAM,QAAQ,MAAM,WAAW;AAAA,WAC1B;AAAA,QACH,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAO;AAAA,MACT,CAAC;AAAA,MACD,QAAQ,WAAW,OAAO,MAAM,KAAK;AAAA,MACrC,OAAO,KAAK,GAAG,MAAM,MAAM;AAAA,MAE3B,OAAO;AAAA,QACL;AAAA,QACA,UAAU,MAAM,mBAAmB;AAAA,QACnC,YAAY;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO,QAAQ,cAAc,YAAY,CAAC;AAAA;AAAA,EAG5C,OAAO,QAAQ,QAAQ,UAAU,KAAK,IAAI,GAAG,QAAQ,CAAC;AAAA;AAyCxD,IAAM,iCAAiC;AAgBhC,IAAM,mBAAmB,OAC9B,YACuC;AAAA,EACvC,MAAM,WAAW,QAAQ,YAAY;AAAA,EAErC,MAAM,OAAiC;AAAA,IACrC,aACE,QAAQ,mBACR;AAAA,IACF,cAAc,QAAQ;AAAA,IACtB,MAAM;AAAA,EACR;AAAA,EAEA,MAAM,oBAAoB,KAAK,IAC7B,GACA,QAAQ,qBAAqB,8BAC/B;AAAA,EAGA,MAAM,WAAgC,CAAC,GAAG,QAAQ,QAAQ;AAAA,EAC1D,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI,SAAwC;AAAA,EAC5C,IAAI,WAAW;AAAA,EAEf,SAAS,UAAU,EAAG,WAAW,mBAAmB,WAAW,GAAG;AAAA,IAChE,YAAY;AAAA,IACZ,MAAM,SAAS,MAAM,WAAW;AAAA,MAC9B,eAAe,QAAQ;AAAA,MACvB,mBAAmB,QAAQ;AAAA,MAC3B,WAAW,QAAQ;AAAA,MACnB,YAAY,QAAQ;AAAA,MACpB;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,eAAe,QAAQ;AAAA,MACvB,UAAU,QAAQ;AAAA,MAClB,WAAW,QAAQ;AAAA,MACnB,QAAQ,QAAQ;AAAA,MAChB,cAAc,QAAQ;AAAA,MACtB,aAAa,QAAQ;AAAA,MACrB,YAAY,EAAE,MAAM,SAAS;AAAA,MAC7B,OAAO,CAAC,IAAI;AAAA,IACd,CAAC;AAAA,IACD,QAAQ,WAAW,OAAO,OAAO,KAAK;AAAA,IACtC,IAAI,OAAO;AAAA,MACT,SAAS,OAAO,GAAG,SAAS,QAAQ,GAAG,OAAO,eAAe;AAAA,IAE/D,MAAM,OAAO,OAAO,UAAU,KAC5B,CAAC,aAAa,SAAS,SAAS,QAClC;AAAA,IAEA,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,CAAC,MAAM;AAAA,MACT,SAAS;AAAA,MACT,YAAY,IAAI,MACd,6CAA6C,gBAC/C;AAAA,MACA,UAAU,yBAAyB;AAAA,IACrC,EAAO;AAAA,MACL,IAAI;AAAA,QACF,SAAS,QAAQ,WACb,QAAQ,SAAS,KAAK,KAAK,IAC1B,KAAK;AAAA,QACV,OAAO,OAAO;AAAA,QACd,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,UAAU,SAAS,uCAAuC,4BACxD,KACF,YAAY;AAAA;AAAA;AAAA,IAIhB,IAAI,YAAY;AAAA,MAAW,OAAO,EAAE,QAAqB,MAAM;AAAA,IAC/D,IAAI,WAAW;AAAA,MAAmB;AAAA,IAIlC,IAAI,OAAO,eAAe;AAAA,MACxB,SAAS,KAAK,EAAE,MAAM,aAAa,SAAS,OAAO,cAAc,CAAC;AAAA,IACpE,IAAI,OAAO,UAAU,QAAQ;AAAA,MAC3B,SAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS,OAAO,UAAU,IAAI,CAAC,aAAa;AAAA,UAC1C,SACE,QAAQ,OAAO,MAAM,KACjB,UACA,kBAAkB;AAAA,UACxB,aAAa,QAAQ;AAAA,UACrB,MAAM;AAAA,QACR,EAAE;AAAA,MACJ,CAAC;AAAA,IACH,EAAO;AAAA,eAAS,KAAK,EAAE,SAAS,SAAS,MAAM,OAAO,CAAC;AAAA,EACzD;AAAA,EAEA,MAAM,IAAI,sBAAsB,QAAQ,UAAU,OAAO,SAAS;AAAA;;;AC3epE,IAAM,gCAAgC;AA2DtC,IAAM,cAAc,CAAC,SACnB,GAAG,KAAK,QAAQ,KAAK,UAAU,KAAK,KAAK;AAI3C,IAAM,WAAW,CAAC,QAAkC,YAAoB;AAAA,EACtE,MAAM,OAAO,OAAO,OAAO,SAAS;AAAA,EACpC,IAAI,QAAQ,KAAK,SAAS,QAAQ;AAAA,IAChC,KAAK,WAAW;AAAA,IAEhB;AAAA,EACF;AAAA,EACA,OAAO,KAAK,EAAE,SAAS,MAAM,OAAO,CAAC;AAAA;AAKvC,IAAM,iBAAgB,CACpB,QACA,aACG;AAAA,EACH,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EACtB,OAAO,KAAK;AAAA,IACV,WAAW,SAAS,aAAa;AAAA,IACjC,UAAU,SAAS;AAAA,IACnB,MAAM;AAAA,EACR,CAAC;AAAA,EAED,OAAO;AAAA;AAWT,IAAM,qBAAqB,OACzB,OACA,SACG;AAAA,EACH,MAAM,aAAa,MAAM,KAAK;AAAA,EAC9B,IAAI,CAAC,YAAY;AAAA,IACf,OAAO,EAAE,IAAI,OAAO,QAAQ,wBAAwB,KAAK,QAAQ;AAAA,EACnE;AAAA,EACA,IAAI;AAAA,IACF,MAAM,SAAuB,MAAM,WAAW,QAAQ,KAAK,KAAK;AAAA,IAEhE,OAAO,EAAE,IAAI,MAAM,OAAO;AAAA,IAC1B,OAAO,KAAK;AAAA,IACZ,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,QAAQ,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IACnE;AAAA;AAAA;AAcG,IAAM,oBAAoB,gBAAgB,CAC/C,SACkE;AAAA,EAClE;AAAA,IACE,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,OACG;AAAA,MACD;AAAA,EACJ,MAAM,gBAAgB,gBAAgB,KAAK;AAAA,EAC3C,MAAM,eAAqC,CAAC;AAAA,EAC5C,MAAM,eAAe,IAAI;AAAA,EACzB,MAAM,WAAgC,CAAC,GAAG,QAAQ,QAAQ;AAAA,EAC1D,IAAI;AAAA,EACJ,IAAI,WAAW;AAAA,EACf,MAAM,SAAwB,CAAC;AAAA,EAC/B,IAAI,OAAO;AAAA,EAEX,MAAM,gBAAgB,gBAAgB,CACpC,qBAA2C,cAAc,QACJ;AAAA,IACrD,MAAM,UAAkC;AAAA,MACtC,mBAAmB,KAAK;AAAA,MACxB,WAAW,KAAK;AAAA,MAChB;AAAA,MACA,OAAO,KAAK;AAAA,MACZ,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB,WAAW,KAAK;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,eAAe,KAAK;AAAA,MACpB,cAAc,KAAK;AAAA,MACnB,aAAa,KAAK;AAAA,MAClB,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,MAAM,KAAK;AAAA,IACb;AAAA,IACA,MAAM,SACJ,kBAAkB,kBAAkB,QAAQ,QAAQ;AAAA,IACtD,MAAM,SAAS,oBACb,UACA,SACA,QACA,CAAC,aAAa;AAAA,MACZ,SAAS,OAAO,GAAG,SAAS,QAAQ,GAAG,SAAS,QAAQ;AAAA,KAE5D;AAAA,IAEA,MAAM,SAAmC,CAAC;AAAA,IAC1C,MAAM,UAAgC,CAAC;AAAA,IACvC,IAAI,WAAuC;AAAA,IAC3C,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,YAAY;AAAA,IAEhB,iBAAiB,SAAS,QAAQ;AAAA,MAChC,IAAI,KAAK,QAAQ;AAAA,QAAS;AAAA,MAC1B,IAAI,MAAM,SAAS,YAAY;AAAA,QAC7B,IAAI,MAAM;AAAA,UAAS,MAAM,EAAE,SAAS,MAAM,SAAS,MAAM,WAAW;AAAA,QACpE,WAAW,YAAY,EAAE,WAAW,IAAI,MAAM,GAAG;AAAA,QACjD,SAAS,QAAQ,MAAM;AAAA,QACvB,IAAI,MAAM;AAAA,UAAW,SAAS,YAAY,MAAM;AAAA,MAClD,EAAO,SAAI,MAAM,SAAS,QAAQ;AAAA,QAChC,WAAW,eAAc,QAAQ,QAAQ;AAAA,QACzC,YAAY,MAAM;AAAA,QAClB,SAAS,QAAQ,MAAM,OAAO;AAAA,QAC9B,MAAM,EAAE,SAAS,MAAM,SAAS,MAAM,OAAO;AAAA,MAC/C,EAAO,SAAI,MAAM,SAAS,SAAS;AAAA,QACjC,QAAQ,MAAM,UAAU,UAAU;AAAA,QAClC,IAAI,CAAC,MAAM;AAAA,UAAW,OAAO,KAAK,KAAK;AAAA,QACvC,MAAM,KAAK,OAAO,MAAM,QAAQ;AAAA,MAClC,EAAO,SAAI,MAAM,SAAS,SAAS;AAAA,QACjC,MAAM;AAAA,UACJ,SAAS,MAAM;AAAA,UACf,MAAM,MAAM;AAAA,UACZ,QAAQ,MAAM;AAAA,UACd,YAAY,MAAM;AAAA,UAClB,MAAM;AAAA,QACR;AAAA,MACF,EAAO,SAAI,MAAM,SAAS,oBAAoB;AAAA,QAC5C,MAAM;AAAA,MACR,EAAO,SAAI,MAAM,SAAS,YAAY;AAAA,QACpC,WAAW,eAAc,QAAQ,QAAQ;AAAA,QACzC,QAAQ,KAAK,EAAE,IAAI,MAAM,IAAI,OAAO,MAAM,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,QACnE,OAAO,KAAK;AAAA,UACV,IAAI,MAAM;AAAA,UAGV,OACE,MAAM,SAAS,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ,CAAC;AAAA,UAClE,MAAM,MAAM;AAAA,UACZ,cAAc,MAAM;AAAA,UACpB,MAAM;AAAA,QACR,CAAC;AAAA,MACH,EAAO,SAAI,MAAM,SAAS,kBAAkB;AAAA,QAC1C,WAAW,eAAc,QAAQ,QAAQ;AAAA,QACzC,OAAO,KAAK;AAAA,UACV,MAAM,MAAM;AAAA,UACZ,UAAU,MAAM;AAAA,UAChB,MAAM;AAAA,QACR,CAAC;AAAA,MACH,EAAO,SAAI,MAAM,SAAS,QAAQ;AAAA,QAChC,WAAW,eAAc,QAAQ,QAAQ;AAAA,QACzC,aAAa,MAAM;AAAA,QACnB,YAAY,MAAM;AAAA,QAClB,eAAe,MAAM;AAAA,QACrB,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IACA,WAAW,eAAc,QAAQ,QAAQ;AAAA,IACzC,IAAI,WAAW,SAAS,CAAC;AAAA,MACvB,MAAM,IAAI,aACR,wBACA,8FACF;AAAA,IAEF,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA;AAAA,EAGF,OAAO,OAAO,UAAU;AAAA,IACtB,QAAQ;AAAA,IACR,MAAM,UAAU,OAAO,cAAc;AAAA,IACrC,QAAQ,WAAW,OAAO,QAAQ,KAAK;AAAA,IACvC,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,SACX,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAS,IAAI,CAAC;AAAA,IAC3D;AAAA,IAEA,QAAQ,QAAQ,YAAY;AAAA,IAC5B,aAAa,KAAK,GAAG,OAAO;AAAA,IAK5B,IACE,QAAQ,eAAe,gBACvB,OAAO,YACP,KAAK,QAAQ,YAAY,MACzB;AAAA,MACA,SAAS,KAAK,EAAE,SAAS,QAAQ,MAAM,YAAY,CAAC;AAAA,MACpD;AAAA,IACF;AAAA,IAKA,MAAM,aACJ,QAAQ,SAAS,KACjB,QAAQ,MAAM,CAAC,SAAS,aAAa,IAAI,YAAY,IAAI,CAAC,CAAC;AAAA,IAC7D,MAAM,WACJ,QAAQ,WAAW,KAAK,cAAc,KAAK,QAAQ,YAAY;AAAA,IACjE,IAAI;AAAA,MAAU;AAAA,IAEd,SAAS,KAAK,EAAE,SAAS,QAAQ,MAAM,YAAY,CAAC;AAAA,IACpD,MAAM,eAAyC,CAAC;AAAA,IAChD,IAAI,wBAAwB;AAAA,IAC5B,WAAW,QAAQ,SAAS;AAAA,MAC1B,MAAM;AAAA,QACJ,IAAI,KAAK;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,MAAM,KAAK;AAAA,QACX,MAAM;AAAA,MACR;AAAA,MACA,MAAM,YAAY,KAAK,IAAI;AAAA,MAI3B,QAAQ,IAAI,WAAW,MAAM,mBAAmB,OAAO,IAAI;AAAA,MAC3D,MAAM,SAAS,eAAe,MAAM;AAAA,MACpC,aAAa,IAAI,YAAY,IAAI,CAAC;AAAA,MAClC,MAAM;AAAA,QACJ,IAAI,KAAK;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,IAAI,KAAK,IAAI,IAAI;AAAA,QACjB,MAAM,KAAK;AAAA,QACX;AAAA,QACA;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,aAAa,KAAK,gBAAgB,KAAK,IAAI,MAAM,CAAC;AAAA,MAClD,IAAI,MAAM,gBAAgB,SAAS,KAAK,IAAI,GAAG;AAAA,QAC7C,wBAAwB;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI;AAAA,MAAuB;AAAA,IAC3B,SAAS,KAAK,EAAE,SAAS,cAAc,MAAM,OAAO,CAAC;AAAA,IAKrD,IAAI,QAAQ,KAAK,IAAI,GAAG,QAAQ,GAAG;AAAA,MACjC,QAAQ;AAAA,MACR,MAAM,QAAQ,OAAO,cAAc,MAAM;AAAA,MACzC,QAAQ,WAAW,OAAO,MAAM,KAAK;AAAA,MACrC,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO,MAAM;AAAA,WACT,MAAM,WAAW,EAAE,UAAU,MAAM,SAAS,IAAI,CAAC;AAAA,MACvD;AAAA,MACA,aAAa,KAAK,GAAG,MAAM,OAAO;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,UAAoC;AAAA,IACxC;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,IACP;AAAA,EACF;AAAA,EACA,MAAM,KAAK,SAAS,MAAM,OAAO;AAAA,EAEjC,OAAO;AAAA;;AC9WF,IAAM,wBAAgD;AAAA,EAC3D,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,YAAY;AACd;AAMA,IAAM,qBAAqB,IAAI,IAAI;AAAA,EACjC;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAC1C,CAAC;AAGD,IAAM,4BAA4B;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,eAAe,CAAC,QACpB,eAAe,UACd,IAAI,SAAS,gBAAgB,kBAAkB,KAAK,IAAI,OAAO;AAG3D,IAAM,qBAAqB,CAAC,aACjC,sBAAsB,aAAa;AAAA;AAc9B,MAAM,sBAAsB,MAAM;AAAA,EAC9B;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EAET,WAAW,CAAC,MAAyB;AAAA,IACnC,MACE,KAAK,SACL,KAAK,UAAU,YAAY,YAAY,EAAE,OAAO,KAAK,MAAM,CAC7D;AAAA,IACA,KAAK,OAAO;AAAA,IACZ,KAAK,WAAW,KAAK;AAAA,IACrB,KAAK,SAAS,KAAK,UAAU;AAAA,IAC7B,KAAK,OAAO,KAAK,QAAQ;AAAA,IACzB,KAAK,YAAY,KAAK;AAAA,IACtB,KAAK,WAAW,KAAK;AAAA,IACrB,KAAK,gBAAgB,mBAAmB,KAAK,QAAQ;AAAA;AAAA,SAIhD,YAAY,CACjB,UACA,QACA,MACA,MACe;AAAA,IACf,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,MAAM,SAAS,KAAK,MAAM,IAAI;AAAA,MAC9B,MAAM,UAAU,QAAQ,SAAS;AAAA,MACjC,IAAI,WAAW,OAAO,YAAY,YAAY,CAAC,MAAM,QAAQ,OAAO;AAAA,QAClE,WAAW;AAAA,MACb,MAAM;AAAA,IAGR,OAAO,IAAI,cAAc;AAAA,MACvB;AAAA,MACA,SAAS,GAAG,WAAW,QAAQ,eAAe,WAAW;AAAA,MACzD;AAAA,MACA,WAAW,mBAAmB,IAAI,MAAM;AAAA,MACxC;AAAA,MACA,MAAM,QAAQ;AAAA,IAChB,CAAC;AAAA;AAAA,SASI,IAAI,CAAC,KAAc,UAAiC;AAAA,IACzD,IAAI,eAAe;AAAA,MAAe,OAAO;AAAA,IACzC,IAAI,aAAa,GAAG;AAAA,MAAG,MAAM;AAAA,IAE7B,MAAM,aAAa,eAAe,QAAQ,IAAI,UAAU,OAAO,OAAO,EAAE;AAAA,IACxE,MAAM,QAAQ,WAAW,YAAY;AAAA,IAErC,MAAM,cAAc,MAAM,MAAM,qBAAqB;AAAA,IACrD,MAAM,SAAS,cAAc,OAAO,YAAY,EAAE,IAAI;AAAA,IAEtD,MAAM,YACH,WAAW,QAAQ,mBAAmB,IAAI,MAAM,KAChD,WAAW,QACV,0BAA0B,KAAK,CAAC,YAAY,MAAM,SAAS,OAAO,CAAC;AAAA,IAEvE,OAAO,IAAI,cAAc;AAAA,MACvB,OAAO;AAAA,MACP,SAAS,cAAc,GAAG,WAAW,QAAQ;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAEL;AAEA,IAAM,aAAa,CAAC,UAClB,MAAM,OAAO,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC;;;ACzH/C,IAAM,wBAAuB;AAC7B,IAAM,UAAU,IAAI;AAEpB,IAAM,aAAa,CACjB,YAC+B;AAAA,KAC3B,OAAO,sBAAsB,YAC7B,CAAC,IACD,EAAE,mBAAmB,OAAO,kBAAkB;AAAA,KAC9C,OAAO,qBAAqB,YAC5B,CAAC,IACD,EAAE,kBAAkB,OAAO,iBAAiB;AAAA,KAC5C,OAAO,cAAc,YAAY,CAAC,IAAI,EAAE,WAAW,OAAO,UAAU;AAAA,EACxE,UAAU,OAAO;AAAA,EACjB,OAAO,OAAO;AAAA,KACV,OAAO,sBAAsB,YAC7B,CAAC,IACD,EAAE,mBAAmB,OAAO,kBAAkB;AAAA,KAC9C,OAAO,oBAAoB,YAC3B,CAAC,IACD,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,KAC1C,OAAO,kBAAkB,YACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,KACtC,OAAO,cAAc,YAAY,CAAC,IAAI,EAAE,WAAW,OAAO,UAAU;AAAA,KACpE,OAAO,mBAAmB,YAC1B,CAAC,IACD,EAAE,gBAAgB,OAAO,eAAe;AAAA,KACxC,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,KACrD,OAAO,kBAAkB,YACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,KACtC,OAAO,iBAAiB,YACxB,CAAC,IACD,EAAE,cAAc,OAAO,aAAa;AAAA,KACpC,OAAO,gBAAgB,YACvB,CAAC,IACD,EAAE,aAAa,OAAO,YAAY;AAAA,KAClC,OAAO,eAAe,YAAY,CAAC,IAAI,EAAE,YAAY,OAAO,WAAW;AAAA,KACvE,OAAO,uBAAuB,YAC9B,CAAC,IACD,EAAE,oBAAoB,OAAO,mBAAmB;AAAA,KAChD,OAAO,UAAU,YAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,KACxD,OAAO,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAC3D;AAEO,IAAM,2BAA2B,CACtC,UACqC;AAAA,EACrC,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EACxE,MAAM,QAAQ;AAAA,EACd,IAAI,OAAO,MAAM,UAAU,YAAY,MAAM,MAAM,KAAK,MAAM;AAAA,IAAI,OAAO;AAAA,EACzE,IAAI,CAAC,MAAM,QAAQ,MAAM,QAAQ;AAAA,IAAG,OAAO;AAAA,EAG3C,OAAO,WAAW,KAA+B;AAAA;AAGnD,IAAM,cAAc,CAAC,OAAe,SAClC,QAAQ,OAAO,UAAU;AAAA,QAAgB,KAAK,UAAU,IAAI;AAAA;AAAA,CAAO;AAErE,IAAM,eAAe,CAAC,UAAmB;AAAA,EACvC,MAAM,gBACJ,iBAAiB,gBACb,QACA,cAAc,KAAK,OAAO,QAAQ;AAAA,EACxC,OAAO;AAAA,IACL,SAAS,cAAc;AAAA,IACvB,UAAU,cAAc;AAAA,IACxB,WAAW,cAAc;AAAA,IACzB,QAAQ,cAAc;AAAA,IACtB,MAAM,cAAc;AAAA,EACtB;AAAA;AAGF,IAAM,qBAAqB,CACzB,UACA,aACA,SACA,aAC+B;AAAA,EAC/B,IAAI,SAAS;AAAA,EAEb,MAAM,OAAO,CACX,YACA,UACG;AAAA,IACH,IAAI;AAAA,MAAQ,OAAO;AAAA,IACnB,IAAI;AAAA,MACF,WAAW,QAAQ,KAAK;AAAA,MACxB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA;AAAA;AAAA,EAIX,OAAO,IAAI,eAA2B;AAAA,IACpC,MAAM,CAAC,QAAQ;AAAA,MACb,SAAS;AAAA,MACT,WAAW,MAAM;AAAA;AAAA,SAEb,MAAK,CAAC,YAAY;AAAA,MACtB,IAAI;AAAA,QACF,UAAS;AAAA,UACP,MAAM,UAAU,SAAS,KAAK;AAAA,UAC9B,IAAI;AAAA,UACJ,UAAS;AAAA,YACP,IAAI;AAAA,YACJ,MAAM,YAAY,IAAI,QAAqB,CAAC,YAAY;AAAA,cACtD,QAAQ,WAAW,MAAM,QAAQ,WAAW,GAAG,WAAW;AAAA,aAC3D;AAAA,YACD,MAAM,SACJ,cAAc,IACV,MAAM,QAAQ,KAAK,CAAC,SAAS,SAAS,CAAC,IACvC,MAAM;AAAA,YACZ,IAAI;AAAA,cAAO,aAAa,KAAK;AAAA,YAC7B,IAAI,WAAW,aAAa;AAAA,cAC1B,IAAI,CAAC,KAAK,YAAY,QAAQ,OAAO;AAAA;AAAA,CAAY,CAAC;AAAA,gBAAG;AAAA,cACrD;AAAA,YACF;AAAA,YACA,OAAO;AAAA,YACP;AAAA,UACF;AAAA,UACA,IAAI,UAAU,KAAK;AAAA,YAAM;AAAA,UACzB,IAAI,CAAC,KAAK,YAAY,YAAY,SAAS,KAAK,KAAK,CAAC;AAAA,YAAG;AAAA,QAC3D;AAAA,QACA,OAAO,OAAO;AAAA,QACd,IAAI;AAAA,UAAQ;AAAA,QACZ,MAAM,UAAU,KAAK;AAAA,QACrB,KAAK,YAAY,YAAY,SAAS,aAAa,KAAK,CAAC,CAAC;AAAA,gBAC1D;AAAA,QACA,MAAM,SAAS,SAAS;AAAA,QACxB,IAAI,CAAC,QAAQ;AAAA,UACX,SAAS;AAAA,UACT,IAAI;AAAA,YACF,WAAW,MAAM;AAAA,YACjB,MAAM;AAAA,QAGV;AAAA;AAAA;AAAA,EAGN,CAAC;AAAA;AAGI,IAAM,8BAA8B,OACzC,UACA,OACA,UAAwC,CAAC,MACnB;AAAA,EACtB,MAAM,SAAS,yBAAyB,KAAK;AAAA,EAC7C,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO,SAAS,KACd,EAAE,OAAO,kCAAkC,GAC3C,EAAE,QAAQ,IAAI,CAChB;AAAA,EACF;AAAA,EACA,MAAM,uBAAuB,IAAI;AAAA,EACjC,MAAM,SAAS,QAAQ,SACnB,YAAY,IAAI,CAAC,QAAQ,QAAQ,qBAAqB,MAAM,CAAC,IAC7D,qBAAqB;AAAA,EACzB,MAAM,WAAW,SACd,OAAO,KAAK,QAAQ,OAAO,CAAC,EAC5B,OAAO,eAAe;AAAA,EACzB,OAAO,IAAI,SACT,mBACE,UACA,QAAQ,eAAe,uBACvB,QAAQ,SACR,CAAC,WAAW,qBAAqB,MAAM,MAAM,CAC/C,GACA;AAAA,IACE,SAAS;AAAA,MACP,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,SAClB,OAAO,YAAY,IAAI,QAAQ,QAAQ,OAAO,CAAC;AAAA,IACpD;AAAA,EACF,CACF;AAAA;AAGF,IAAM,oBAAoB,gBAAgB,CACxC,UACyB;AAAA,EACzB,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,cAAc,aAClB,UACA,SAAS,QACT,MAAM,SAAS,KAAK,CACtB;AAAA,EACF;AAAA,EACA,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,cAAc;AAAA,MACtB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,IACb,CAAC;AAAA,EAEH,MAAM,SAAS,SAAS,KAAK,UAAU;AAAA,EACvC,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,SAAS;AAAA,EACb,IAAI;AAAA,IACF,UAAS;AAAA,MACP,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MAC1C,UAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;AAAA,MACjD,MAAM,SAAS,OAAO,MAAM,YAAY;AAAA,MACxC,SAAS,OAAO,IAAI,KAAK;AAAA,MACzB,WAAW,SAAS,QAAQ;AAAA,QAC1B,IAAI,MAAM,WAAW,GAAG;AAAA,UAAG;AAAA,QAC3B,MAAM,QAAQ,mBAAmB,KAAK,KAAK,IAAI;AAAA,QAC/C,MAAM,OAAO,MACV,MAAM,OAAO,EACb,OAAO,CAAC,SAAS,KAAK,WAAW,OAAO,CAAC,EACzC,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,EAAE,UAAU,CAAC,EACvC,KAAK;AAAA,CAAI;AAAA,QACZ,IAAI,CAAC;AAAA,UAAM;AAAA,QACX,MAAM,SAAS,KAAK,MAAM,IAAI;AAAA,QAS9B,IAAI,UAAU,SAAS;AAAA,UACrB,MAAM,IAAI,cAAc;AAAA,YACtB,SACE,aAAa,UAAU,OAAO,OAAO,YAAY,WAC7C,OAAO,UACP;AAAA,YACN,UACE,cAAc,UAAU,OAAO,OAAO,aAAa,WAC/C,OAAO,WACP;AAAA,YACN,WACE,eAAe,UAAU,OAAO,OAAO,cAAc,YACjD,OAAO,YACP;AAAA,YACN,QACE,YAAY,WACX,OAAO,OAAO,WAAW,YAAY,OAAO,WAAW,QACpD,OAAO,SACP;AAAA,YACN,MACE,UAAU,WACT,OAAO,OAAO,SAAS,YAAY,OAAO,SAAS,QAChD,OAAO,OACP;AAAA,UACR,CAAC;AAAA,QACH;AAAA,QACA,IAAI,UAAU;AAAA,UAAS,MAAM;AAAA,MAC/B;AAAA,MACA,IAAI;AAAA,QAAM;AAAA,IACZ;AAAA,YACA;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;AAIhB,IAAM,iBAAiB,CAC5B,YACsB;AAAA,EACtB,QAAQ,gBAAgB,CAAC,QAAQ;AAAA,IAC/B,MAAM,UACJ,OAAO,OAAO,YAAY,aACtB,MAAM,OAAO,QAAQ,IACrB,OAAO;AAAA,IACb,MAAM,WAAW,OAAO,OAAO,SAAS,OAAO,OAAO,KAAK;AAAA,MACzD,MAAM,KAAK,UAAU,WAAW,MAAM,CAAC;AAAA,MACvC,SAAS;AAAA,QACP,gBAAgB;AAAA,WACb,OAAO,YAAY,IAAI,QAAQ,OAAO,CAAC;AAAA,MAC5C;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ,OAAO;AAAA,IACjB,CAAC;AAAA,IACD,OAAO,kBAAkB,QAAQ;AAAA;AAErC;;ACrSO,MAAM,8BAA8B,MAAM;AAAA,EACtC;AAAA,EAET,WAAW,CAAC,MAAc;AAAA,IACxB,MACE,YAAY,wGACd;AAAA,IACA,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA;AAEhB;AAuCO,IAAM,gBAAgB,CAC3B,gBACY;AAAA,EACZ,MAAM,SAAS,IAAI,IACjB,YAAY,IAAI,CAAC,eAAe,CAAC,WAAW,MAAM,UAAU,CAAC,CAC/D;AAAA,EAEA,MAAM,QAAmB,OAAO,YAC9B,YAAY,IAAI,CAAC,eAAe;AAAA,IAC9B,WAAW;AAAA,IACX;AAAA,MACE,aAAa,WAAW;AAAA,MACxB,SAAS,OAAO,UAAU;AAAA,QACxB,IAAI,WAAW,MAAM,KAAK,MAAM,MAAM;AAAA,UACpC,MAAM,IAAI,sBAAsB,WAAW,IAAI;AAAA,QACjD;AAAA,QAEA,OAAO,WAAW;AAAA;AAAA,MAEpB,OAAO,WAAW;AAAA,IACpB;AAAA,EACF,CAAC,CACH;AAAA,EAEA,MAAM,UAAU,CAAC,UAAuD;AAAA,IACtE,MAAM,SAAwB,CAAC;AAAA,IAC/B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,aAAa,OAAO,IAAI,KAAK,IAAI;AAAA,MACvC,IAAI,CAAC;AAAA,QAAY;AAAA,MACjB,MAAM,OAAO,WAAW,MAAM,KAAK,KAAK;AAAA,MACxC,IAAI,SAAS;AAAA,QAAM,OAAO,KAAK,EAAE,MAAM,WAAW,MAAM,KAAK,CAAC;AAAA,IAChE;AAAA,IAEA,OAAO;AAAA;AAAA,EAGT,OAAO,EAAE,SAAS,KAAK,CAAC,SAAiB,OAAO,IAAI,IAAI,GAAG,MAAM;AAAA;;AChF5D,IAAM,cAAc,CAAC,OAAO,QAAQ,OAAO;AA+D3C,IAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAuHO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AA4DO,IAAM,mBAAmB;AACzB,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;AAC1B,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,kBAAkB;AACxB,IAAM,0BAA0B;AAChC,IAAM,qBAAqB;AAC3B,IAAM,yBAAyB;AAC/B,IAAM,yBAAyB;AAC/B,IAAM,+BAA+B;AACrC,IAAM,gCAAgC;AACtC,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB;AACjC,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AACxB,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,yBAAyB;AAC/B,IAAM,wBAAwB;AAC9B,IAAM,kBAAkB;AACxB,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAE3B,IAAM,sBAAsB;AAE5B,IAAM,qBAAqB;AAE3B,IAAM,kBAAkB;AAExB,IAAM,kBAAkB;AACxB,IAAM,mBAAmB;AAEzB,IAAM,WAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU;AAEzC,IAAM,cAAc,CAAC,OAAgB,aACnC,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,IAC/C,MAAM,KAAK,EAAE,MAAM,GAAG,QAAQ,IAC9B;AAEN,IAAM,mBAAmB,CACvB,OACA,UACA,aACG;AAAA,EACH,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EACxD,MAAM,UAAoB,CAAC;AAAA,EAC3B,WAAW,SAAS,MAAM,MAAM,GAAG,QAAQ,GAAG;AAAA,IAC5C,MAAM,OAAO,YAAY,OAAO,QAAQ;AAAA,IACxC,QAAQ,KAAK,QAAQ,EAAE;AAAA,EACzB;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,mBAAmB,CAAC,OAAgB,aAAqB;AAAA,EAC7D,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EACxD,MAAM,UAAoB,CAAC;AAAA,EAC3B,WAAW,SAAS,MAAM,MAAM,GAAG,QAAQ,GAAG;AAAA,IAC5C,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK;AAAA,MAAG,OAAO;AAAA,IACjE,QAAQ,KAAK,KAAK;AAAA,EACpB;AAAA,EAEA,OAAO;AAAA;AAIT,IAAM,UAAU,CAAC,UAAmB;AAAA,EAClC,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,MAAM,UAAU,MAAM,KAAK,EAAE,MAAM,GAAG,iBAAiB;AAAA,EAEvD,OAAO,gBAAgB,KAAK,OAAO,IAAI,UAAU;AAAA;AAKnD,IAAM,cAAc,CAAC,MAA2B,QAAiB;AAAA,EAC/D,MAAM,SAAS,QAAQ,GAAG;AAAA,EAC1B,IAAI;AAAA,IAAQ,KAAK,SAAS;AAAA;AAKrB,IAAM,iBAAiB,CAAC,UAA2C;AAAA,EACxE,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAAA,IAAG;AAAA,EACjD,MAAM,UAAsB,CAAC;AAAA,EAC7B,WAAW,OAAO,MAAM,MAAM,GAAG,cAAc,GAAG;AAAA,IAChD,IAAI,CAAC,SAAS,GAAG;AAAA,MAAG;AAAA,IACpB,MAAM,QAAQ,YAAY,IAAI,OAAO,sBAAsB;AAAA,IAC3D,MAAM,OACJ,OAAO,IAAI,SAAS,YAAY,oBAAoB,KAAK,IAAI,IAAI,IAC7D,IAAI,OACJ;AAAA,IACN,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK;AAAA,MAAG;AAAA,IAC7C,QAAQ,KAAK,EAAE,OAAO,IAAI,OAAO,OAAO,KAAK,CAAC;AAAA,EAChD;AAAA,EAEA,OAAO,QAAQ,SAAS,IAAI,UAAU;AAAA;AAGxC,IAAM,iBAAiB;AAAA,EACrB,aACE;AAAA,EACF,OAAO;AAAA,IACL,YAAY;AAAA,MACV,OAAO;AAAA,QACL,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,MAAM,EAAE,aAAa,2BAA2B,MAAM,SAAS;AAAA,IACjE;AAAA,IACA,UAAU,CAAC,SAAS,QAAQ,OAAO;AAAA,IACnC,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AACR;AAEA,IAAM,iBAAiB;AAAA,EACrB,aACE;AAAA,EACF,MAAM;AACR;AAGA,IAAM,wBAAwB;AAAA,EAC5B,YAAY;AAAA,IACV,OAAO;AAAA,MACL,aACE;AAAA,MACF,MAAM;AAAA,IACR;AAAA,IACA,OAAO,EAAE,aAAa,gBAAgB,MAAM,SAAS;AAAA,IACrD,MAAM,EAAE,aAAa,2BAA2B,MAAM,SAAS;AAAA,EACjE;AAAA,EACA,UAAU,CAAC,SAAS,QAAQ,OAAO;AAAA,EACnC,MAAM;AACR;AAEO,IAAM,iBAAiB,CAAC,UAAqC;AAAA,EAClE,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,OAAO,YAAY,KAAK,CAAC,UAAU,UAAU,MAAM,IAAI;AAAA,EAC7D,MAAM,QAAQ,YAAY,MAAM,OAAO,eAAe;AAAA,EACtD,MAAM,SAAS,iBACb,MAAM,QACN,kBACA,eACF;AAAA,EACA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAAA,IAAQ,OAAO;AAAA,EAEvC,IAAI,CAAC,MAAM,QAAQ,MAAM,MAAM,KAAK,MAAM,OAAO,WAAW;AAAA,IAAG,OAAO;AAAA,EACtE,MAAM,SAAwB,CAAC;AAAA,EAC/B,WAAW,OAAO,MAAM,OAAO,MAAM,GAAG,gBAAgB,GAAG;AAAA,IACzD,IAAI,CAAC,SAAS,GAAG;AAAA,MAAG,OAAO;AAAA,IAC3B,MAAM,OAAO,YAAY,IAAI,MAAM,eAAe;AAAA,IAClD,MAAM,SAAS,iBAAiB,IAAI,QAAQ,gBAAgB;AAAA,IAC5D,IAAI,CAAC,QAAQ,CAAC;AAAA,MAAQ,OAAO;AAAA,IAE7B,IAAI,OAAO,WAAW,OAAO;AAAA,MAAQ,OAAO;AAAA,IAC5C,OAAO,KAAK,EAAE,MAAM,OAAO,CAAC;AAAA,EAC9B;AAAA,EAEA,IAAI,SAAS,SAAS;AAAA,IACpB,OAAO,QAAQ;AAAA,IACf,IAAI,OAAO,WAAW,KAAK,CAAC;AAAA,MAAM,OAAO;AAAA,IACzC,IAAI,KAAK,OAAO,KAAK,CAAC,UAAU,QAAQ,CAAC;AAAA,MAAG,OAAO;AAAA,EACrD;AAAA,EAEA,MAAM,OAAkB,EAAE,QAAQ,QAAQ,OAAO,KAAK;AAAA,EACtD,MAAM,aAAa,YAAY,MAAM,YAAY,cAAc;AAAA,EAC/D,MAAM,aAAa,YAAY,MAAM,YAAY,cAAc;AAAA,EAC/D,IAAI;AAAA,IAAY,KAAK,aAAa;AAAA,EAClC,IAAI;AAAA,IAAY,KAAK,aAAa;AAAA,EAClC,MAAM,UAAU,eAAe,MAAM,OAAO;AAAA,EAC5C,IAAI;AAAA,IAAS,KAAK,UAAU;AAAA,EAC5B,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAGF,IAAM,iBAAiB,CAAC,UAAqC;AAAA,EAClE,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,UAAU,iBACd,MAAM,SACN,mBACA,eACF;AAAA,EACA,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EACrB,IAAI,CAAC,MAAM,QAAQ,MAAM,IAAI,KAAK,MAAM,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAClE,MAAM,OAAmB,CAAC;AAAA,EAC1B,WAAW,OAAO,MAAM,KAAK,MAAM,GAAG,cAAc,GAAG;AAAA,IACrD,MAAM,QAAQ,iBAAiB,KAAK,mBAAmB,cAAc;AAAA,IACrE,IAAI,CAAC;AAAA,MAAO,OAAO;AAAA,IAEnB,OAAO,MAAM,SAAS,QAAQ;AAAA,MAAQ,MAAM,KAAK,EAAE;AAAA,IACnD,KAAK,KAAK,MAAM,MAAM,GAAG,QAAQ,MAAM,CAAC;AAAA,EAC1C;AAAA,EAEA,MAAM,OAAkB,EAAE,SAAS,KAAK;AAAA,EACxC,MAAM,QAAQ,YAAY,MAAM,OAAO,eAAe;AAAA,EACtD,IAAI;AAAA,IAAO,KAAK,QAAQ;AAAA,EACxB,MAAM,UAAU,eAAe,MAAM,OAAO;AAAA,EAC5C,IAAI;AAAA,IAAS,KAAK,UAAU;AAAA,EAC5B,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAGF,IAAM,qBAAqB,CAAC,UAAyC;AAAA,EAC1E,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EACpE,MAAM,QAAoB,CAAC;AAAA,EAC3B,WAAW,OAAO,MAAM,MAAM,MAAM,GAAG,cAAc,GAAG;AAAA,IACtD,IAAI,CAAC,SAAS,GAAG;AAAA,MAAG,OAAO;AAAA,IAC3B,MAAM,QAAQ,YAAY,IAAI,OAAO,eAAe;AAAA,IACpD,MAAM,QAAQ,YAAY,IAAI,OAAO,eAAe;AAAA,IACpD,IAAI,CAAC,SAAS,CAAC;AAAA,MAAO,OAAO;AAAA,IAC7B,MAAM,OAAiB,EAAE,OAAO,MAAM;AAAA,IACtC,MAAM,QAAQ,YAAY,IAAI,OAAO,eAAe;AAAA,IACpD,IAAI;AAAA,MAAO,KAAK,QAAQ;AAAA,IACxB,IACE,IAAI,mBAAmB,QACvB,IAAI,mBAAmB,UACvB,IAAI,mBAAmB,QACvB;AAAA,MACA,KAAK,iBAAiB,IAAI;AAAA,IAC5B;AAAA,IACA,MAAM,KAAK,IAAI;AAAA,EACjB;AAAA,EAEA,MAAM,OAAsB,EAAE,MAAM;AAAA,EACpC,MAAM,UAAU,eAAe,MAAM,OAAO;AAAA,EAC5C,IAAI;AAAA,IAAS,KAAK,UAAU;AAAA,EAC5B,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAGT,IAAM,iBAAiB,CAAC,QAAmC;AAAA,EACzD,IAAI,CAAC,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EAC3B,MAAM,OACJ,OAAO,IAAI,SAAS,YAAY,mBAAmB,KAAK,IAAI,IAAI,IAC5D,IAAI,OACJ;AAAA,EACN,MAAM,QAAQ,YAAY,IAAI,OAAO,eAAe;AAAA,EACpD,MAAM,OAAO,iBAAiB,KAAK,CAAC,UAAU,UAAU,IAAI,IAAI;AAAA,EAChE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAAA,IAAM,OAAO;AAAA,EAErC,MAAM,QAAmB,EAAE,OAAO,MAAM,KAAK;AAAA,EAC7C,MAAM,cAAc,YAAY,IAAI,aAAa,eAAe;AAAA,EAChE,IAAI;AAAA,IAAa,MAAM,cAAc;AAAA,EACrC,IAAI,IAAI,aAAa;AAAA,IAAM,MAAM,WAAW;AAAA,EAE5C,MAAM,QACJ,SAAS,aAAa,OAAO,YAAY,IAAI,OAAO,cAAc;AAAA,EACpE,IAAI;AAAA,IAAO,MAAM,QAAQ;AAAA,EACzB,MAAM,UAAU,iBACd,IAAI,SACJ,yBACA,eACF;AAAA,EACA,IAAI;AAAA,IAAS,MAAM,UAAU;AAAA,EAE7B,IAAI,SAAS,YAAY,CAAC;AAAA,IAAS,OAAO;AAAA,EAE1C,OAAO;AAAA;AAGT,IAAM,kBAAkB,CAAC,UAAuC;AAAA,EAC9D,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EACxD,MAAM,SAAsB,CAAC;AAAA,EAC7B,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,OAAO,MAAM,MAAM,GAAG,eAAe,GAAG;AAAA,IACjD,MAAM,QAAQ,eAAe,GAAG;AAAA,IAGhC,IAAI,CAAC,SAAS,KAAK,IAAI,MAAM,IAAI;AAAA,MAAG,OAAO;AAAA,IAC3C,KAAK,IAAI,MAAM,IAAI;AAAA,IACnB,OAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,OAAO;AAAA;AAGF,IAAM,gBAAgB,CAAC,UAAoC;AAAA,EAChE,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,QAAQ,YAAY,MAAM,OAAO,eAAe;AAAA,EACtD,MAAM,SAAS,gBAAgB,MAAM,MAAM;AAAA,EAC3C,OAAO,UAAU,eAAe,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC;AAAA,EACpD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAAA,IAAQ,OAAO;AAAA,EAEzC,MAAM,OAAiB,EAAE,QAAQ,QAAQ,MAAM;AAAA,EAC/C,MAAM,cAAc,YAAY,MAAM,aAAa,qBAAqB;AAAA,EACxE,IAAI;AAAA,IAAa,KAAK,cAAc;AAAA,EACpC,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAKT,IAAM,iBAAiB,CAAC,OAAgB,aAAqB;AAAA,EAC3D,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,MAAM,OAAO,MAAM,KAAK;AAAA,EAExB,OAAO,KAAK,SAAS,KAAK,KAAK,UAAU,WAAW,OAAO;AAAA;AAG7D,IAAM,yBAAyB,CAAC,OAAgB,aAC9C,UAAU,aACT,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,UAAU;AAEvD,IAAM,oBAAoB,CAAC,QAAsC;AAAA,EAC/D,IAAI,CAAC,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EAC3B,MAAM,KAAK,eAAe,IAAI,IAAI,iBAAiB;AAAA,EACnD,MAAM,QAAQ,eAAe,IAAI,OAAO,sBAAsB;AAAA,EAC9D,IAAI,CAAC,MAAM,CAAC;AAAA,IAAO,OAAO;AAAA,EAC1B,IAAI,CAAC,gBAAgB,KAAK,EAAE;AAAA,IAAG,OAAO;AAAA,EACtC,IACE,CAAC,uBAAuB,IAAI,aAAa,4BAA4B,KACrE,CAAC,uBAAuB,IAAI,OAAO,eAAe;AAAA,IAElD,OAAO;AAAA,EAET,MAAM,SAAuB,EAAE,IAAI,MAAM;AAAA,EACzC,MAAM,cAAc,eAClB,IAAI,aACJ,4BACF;AAAA,EACA,IAAI;AAAA,IAAa,OAAO,cAAc;AAAA,EACtC,MAAM,QAAQ,eAAe,IAAI,OAAO,eAAe;AAAA,EACvD,IAAI;AAAA,IAAO,OAAO,QAAQ;AAAA,EAE1B,OAAO;AAAA;AAGF,IAAM,kBAAkB,CAAC,UAAsC;AAAA,EACpE,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,QAAQ,eAAe,MAAM,OAAO,sBAAsB;AAAA,EAChE,IAAI,CAAC,uBAAuB,MAAM,aAAa,4BAA4B;AAAA,IACzE,OAAO;AAAA,EACT,IACE,MAAM,WAAW,cAChB,OAAO,MAAM,WAAW,YACvB,CAAC,gBAAgB,KAAK,MAAM,OAAO,KAAK,CAAC;AAAA,IAE3C,OAAO;AAAA,EACT,IACE,CAAC,SAAS,MAAM,MAAM,KACtB,CAAC,eAAe,MAAM,OAAO,OAAO,sBAAsB;AAAA,IAE1D,OAAO;AAAA,EACT,OAAO,UAAU,eAAe,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC;AAAA,EACpD,IAAI,CAAC,SAAS,CAAC;AAAA,IAAQ,OAAO;AAAA,EAC9B,IACE,CAAC,MAAM,QAAQ,MAAM,OAAO,KAC5B,MAAM,QAAQ,WAAW,KACzB,MAAM,QAAQ,SAAS;AAAA,IAEvB,OAAO;AAAA,EACT,MAAM,UAA0B,CAAC;AAAA,EACjC,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,OAAO,MAAM,SAAS;AAAA,IAC/B,MAAM,SAAS,kBAAkB,GAAG;AAAA,IAGpC,IAAI,CAAC,UAAU,KAAK,IAAI,OAAO,EAAE;AAAA,MAAG,OAAO;AAAA,IAC3C,KAAK,IAAI,OAAO,EAAE;AAAA,IAClB,QAAQ,KAAK,MAAM;AAAA,EACrB;AAAA,EAEA,MAAM,OAAmB,EAAE,SAAS,QAAQ,MAAM;AAAA,EAClD,MAAM,cAAc,eAClB,MAAM,aACN,4BACF;AAAA,EACA,IAAI;AAAA,IAAa,KAAK,cAAc;AAAA,EACpC,IAAI,MAAM,UAAU;AAAA,IAAM,KAAK,QAAQ;AAAA,EACvC,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAGF,IAAM,mBAAmB,CAAC,UAAuC;AAAA,EACtE,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,QAAQ,YAAY,MAAM,OAAO,eAAe;AAAA,EACtD,MAAM,cAAc,YAClB,MAAM,aACN,6BACF;AAAA,EACA,MAAM,eAAe,YAAY,MAAM,cAAc,sBAAsB;AAAA,EAC3E,OAAO,WAAW,eAAe,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC;AAAA,EACtD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC;AAAA,IAAS,OAAO;AAAA,EAEhE,MAAM,OAAoB,EAAE,SAAS,cAAc,aAAa,MAAM;AAAA,EACtE,MAAM,cAAc,YAAY,MAAM,aAAa,sBAAsB;AAAA,EACzE,IAAI;AAAA,IAAa,KAAK,cAAc;AAAA,EACpC,IAAI,MAAM,WAAW;AAAA,IAAM,KAAK,SAAS;AAAA,EACzC,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAMT,IAAM,gBAAgB,CAAC,KAAc,WAAwC;AAAA,EAC3E,IAAI,CAAC,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EAC3B,MAAM,OAAO,YAAY,IAAI,MAAM,mBAAmB;AAAA,EACtD,IAAI,CAAC,QAAQ,OAAO,IAAI,SAAS,YAAY,IAAI,KAAK,KAAK,EAAE,WAAW,GAAG;AAAA,IACzE,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,IAAI,KACf,MAAM,OAAO,EACb,IAAI,CAAC,SAAS,KAAK,MAAM,GAAG,mBAAmB,CAAC;AAAA,EACnD,MAAM,OAAO,MAAM,MAAM,GAAG,KAAK,IAAI,OAAO,WAAW,CAAC,CAAC;AAAA,EACzD,OAAO,aAAa,KAAK;AAAA,EAEzB,MAAM,OAAiB,EAAE,MAAM,KAAK,KAAK;AAAA,CAAI,GAAG,KAAK;AAAA,EAErD,IAAI,IAAI,cAAc,QAAQ,KAAK,SAAS,MAAM,QAAQ;AAAA,IACxD,KAAK,YAAY;AAAA,EACnB;AAAA,EAEA,OAAO;AAAA;AAGF,IAAM,gBAAgB,CAAC,UAAoC;AAAA,EAChE,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,QAAQ,YAAY,MAAM,OAAO,eAAe;AAAA,EACtD,OAAO,SAAS,eAAe,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC;AAAA,EAClD,IAAI,CAAC,SAAS,CAAC;AAAA,IAAO,OAAO;AAAA,EAC7B,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EACpE,MAAM,SAAqB,EAAE,WAAW,eAAe;AAAA,EACvD,MAAM,QAAoB,CAAC;AAAA,EAC3B,WAAW,OAAO,MAAM,MAAM,MAAM,GAAG,cAAc,GAAG;AAAA,IACtD,MAAM,OAAO,cAAc,KAAK,MAAM;AAAA,IAGtC,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAClB,MAAM,KAAK,IAAI;AAAA,EACjB;AAAA,EAEA,MAAM,OAAiB,EAAE,OAAO,OAAO,MAAM;AAAA,EAC7C,OAAO,UAAU,eAAe,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC;AAAA,EACpD,IAAI;AAAA,IAAQ,KAAK,SAAS;AAAA,EAC1B,MAAM,OAAO,YAAY,MAAM,MAAM,qBAAqB;AAAA,EAC1D,IAAI;AAAA,IAAM,KAAK,OAAO;AAAA,EACtB,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAGT,IAAM,gBAAgB,CAAC,QAAkC;AAAA,EACvD,IAAI,CAAC,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EAC3B,MAAM,KAAK,QAAQ,IAAI,EAAE;AAAA,EACzB,MAAM,QAAQ,YAAY,IAAI,OAAO,eAAe;AAAA,EACpD,MAAM,SAAS,mBAAmB,KAAK,CAAC,UAAU,UAAU,IAAI,MAAM;AAAA,EACtE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAAA,IAAQ,OAAO;AAAA,EAErC,MAAM,OAAiB,EAAE,IAAI,OAAO,OAAO;AAAA,EAC3C,MAAM,SAAS,YAAY,IAAI,QAAQ,cAAc;AAAA,EACrD,IAAI;AAAA,IAAQ,KAAK,SAAS;AAAA,EAE1B,OAAO;AAAA;AAGF,IAAM,gBAAgB,CAAC,UAAoC;AAAA,EAChE,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,QAAQ,YAAY,MAAM,OAAO,eAAe;AAAA,EACtD,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,IAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EACpE,MAAM,QAAoB,CAAC;AAAA,EAC3B,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,OAAO,MAAM,MAAM,MAAM,GAAG,cAAc,GAAG;AAAA,IACtD,MAAM,OAAO,cAAc,GAAG;AAAA,IAG9B,IAAI,CAAC,QAAQ,KAAK,IAAI,KAAK,EAAE;AAAA,MAAG,OAAO;AAAA,IACvC,KAAK,IAAI,KAAK,EAAE;AAAA,IAChB,MAAM,KAAK,IAAI;AAAA,EACjB;AAAA,EAEA,MAAM,OAAiB,EAAE,OAAO,MAAM;AAAA,EACtC,MAAM,OAAO,YAAY,MAAM,MAAM,qBAAqB;AAAA,EAC1D,IAAI;AAAA,IAAM,KAAK,OAAO;AAAA,EACtB,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAGT,IAAM,qBAAqB,CAAC,QAAuC;AAAA,EACjE,IAAI,CAAC,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EAC3B,MAAM,MACJ,OAAO,IAAI,QAAQ,YAAY,gBAAgB,KAAK,IAAI,GAAG,IACvD,IAAI,MACJ;AAAA,EACN,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EAMjB,MAAM,QAAuB,EAAE,KAAK,QAAQ,IAAI,WAAW,MAAM;AAAA,EACjE,MAAM,QAAQ,YAAY,IAAI,OAAO,eAAe;AAAA,EACpD,IAAI;AAAA,IAAO,MAAM,QAAQ;AAAA,EACzB,MAAM,UAAU,YAAY,IAAI,SAAS,kBAAkB;AAAA,EAC3D,IAAI,WAAW,iBAAiB,KAAK,OAAO;AAAA,IAAG,MAAM,UAAU;AAAA,EAC/D,IAAI,OAAO,IAAI,UAAU;AAAA,IAAW,MAAM,QAAQ,IAAI;AAAA,EAEtD,OAAO;AAAA;AAGF,IAAM,sBAAsB,CAAC,UAA0C;AAAA,EAC5E,IAAI,CAAC,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,QAAQ,YAAY,MAAM,OAAO,eAAe;AAAA,EACtD,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,IAAI,CAAC,MAAM,QAAQ,MAAM,IAAI,KAAK,MAAM,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAClE,MAAM,OAAwB,CAAC;AAAA,EAC/B,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,OAAO,MAAM,KAAK,MAAM,GAAG,mBAAmB,GAAG;AAAA,IAC1D,MAAM,QAAQ,mBAAmB,GAAG;AAAA,IAGpC,IAAI,CAAC,SAAS,KAAK,IAAI,MAAM,GAAG;AAAA,MAAG,OAAO;AAAA,IAC1C,KAAK,IAAI,MAAM,GAAG;AAAA,IAClB,KAAK,KAAK,KAAK;AAAA,EACjB;AAAA,EAEA,MAAM,OAAuB,EAAE,MAAM,MAAM;AAAA,EAC3C,YAAY,MAAM,MAAM,MAAM;AAAA,EAE9B,OAAO;AAAA;AAGT,IAAM,gBAAgB;AAAA,EACpB,YAAY;AAAA,IACV,MAAM,EAAE,aAAa,qCAAqC,MAAM,SAAS;AAAA,IACzE,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,OAAO,EAAE,MAAM,SAAS;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,UAAU,CAAC,QAAQ,QAAQ;AAAA,EAC3B,MAAM;AACR;AAGO,IAAM,YAAyC;AAAA,EACpD,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aACE;AAAA,QACF,OAAO,EAAE,MAAM,SAAS;AAAA,QACxB,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,OAAO,EAAE,aAAa,qBAAqB,MAAM,SAAS;AAAA,MAC1D,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,GAAG,MAAM,SAAS;AAAA,MAC/C,YAAY;AAAA,QACV,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,YAAY;AAAA,QACV,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,UAAU,CAAC,QAAQ,SAAS,UAAU,QAAQ;AAAA,IAC9C,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,YAAyC;AAAA,EACpD,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,aAAa;AAAA,QACb,OAAO,EAAE,MAAM,SAAS;AAAA,QACxB,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,aAAa;AAAA,QACb,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,GAAG,MAAM,QAAQ;AAAA,QAClD,MAAM;AAAA,MACR;AAAA,MACA,OAAO,EAAE,aAAa,wBAAwB,MAAM,SAAS;AAAA,IAC/D;AAAA,IACA,UAAU,CAAC,WAAW,MAAM;AAAA,IAC5B,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,gBAAiD;AAAA,EAC5D,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,QACL,aAAa;AAAA,QACb,OAAO;AAAA,UACL,YAAY;AAAA,YACV,OAAO;AAAA,cACL,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gBAAgB,EAAE,MAAM,CAAC,MAAM,QAAQ,MAAM,GAAG,MAAM,SAAS;AAAA,YAC/D,OAAO,EAAE,aAAa,sBAAsB,MAAM,SAAS;AAAA,YAC3D,OAAO;AAAA,cACL,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,UAAU,CAAC,SAAS,OAAO;AAAA,UAC3B,MAAM;AAAA,QACR;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,UAAU,CAAC,OAAO;AAAA,IAClB,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,WAAuC;AAAA,EAClD,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,QACX,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,aACE;AAAA,QACF,OAAO;AAAA,UACL,YAAY;AAAA,YACV,OAAO,EAAE,aAAa,6BAA6B,MAAM,SAAS;AAAA,YAClE,MAAM;AAAA,cACJ,aACE;AAAA,cACF,MAAM;AAAA,YACR;AAAA,YACA,SAAS;AAAA,cACP,aAAa;AAAA,cACb,OAAO,EAAE,MAAM,SAAS;AAAA,cACxB,MAAM;AAAA,YACR;AAAA,YACA,aAAa,EAAE,MAAM,SAAS;AAAA,YAC9B,UAAU,EAAE,MAAM,UAAU;AAAA,YAC5B,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,GAAG,MAAM,SAAS;AAAA,YACpD,OAAO;AAAA,cACL,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,UAAU,CAAC,QAAQ,SAAS,MAAM;AAAA,UAClC,MAAM;AAAA,QACR;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,aACE;AAAA,QACF,YAAY;AAAA,UACV,OAAO;AAAA,YACL,aACE;AAAA,YACF,MAAM;AAAA,UACR;AAAA,UACA,OAAO;AAAA,YACL,aAAa;AAAA,YACb,MAAM;AAAA,UACR;AAAA,UACA,MAAM,EAAE,aAAa,2BAA2B,MAAM,SAAS;AAAA,QACjE;AAAA,QACA,UAAU,CAAC,SAAS,QAAQ,OAAO;AAAA,QACnC,MAAM;AAAA,MACR;AAAA,MACA,OAAO,EAAE,aAAa,oBAAoB,MAAM,SAAS;AAAA,IAC3D;AAAA,IACA,UAAU,CAAC,SAAS,UAAU,QAAQ;AAAA,IACtC,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,aAA2C;AAAA,EACtD,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,QAAQ;AAAA,WACH;AAAA,QACH,WAAW;AAAA,QACX,SAAS,gBAAgB;AAAA,MAC3B;AAAA,MACA,aAAa;AAAA,QACX,aAAa;AAAA,QACb,WAAW;AAAA,QACX,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,aACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,aAAa;AAAA,QACb,OAAO;AAAA,UACL,YAAY;AAAA,YACV,OAAO;AAAA,cACL,aACE;AAAA,cACF,WAAW;AAAA,cACX,MAAM;AAAA,YACR;AAAA,YACA,aAAa;AAAA,cACX,aAAa;AAAA,cACb,WAAW;AAAA,cACX,MAAM;AAAA,YACR;AAAA,YACA,IAAI;AAAA,cACF,aACE;AAAA,cACF,WAAW;AAAA,cACX,SAAS,gBAAgB;AAAA,cACzB,MAAM;AAAA,YACR;AAAA,YACA,OAAO;AAAA,cACL,aAAa;AAAA,cACb,WAAW;AAAA,cACX,WAAW;AAAA,cACX,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,UAAU,CAAC,MAAM,OAAO;AAAA,UACxB,MAAM;AAAA,QACR;AAAA,QACA,UAAU;AAAA,QACV,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,WACH;AAAA,QACH,YAAY;AAAA,aACP,sBAAsB;AAAA,UACzB,OAAO;AAAA,eACF,sBAAsB,WAAW;AAAA,YACpC,WAAW;AAAA,YACX,WAAW;AAAA,UACb;AAAA,QACF;AAAA,QACA,aACE;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,QACL,aAAa;AAAA,QACb,WAAW;AAAA,QACX,WAAW;AAAA,QACX,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,UAAU,CAAC,SAAS,WAAW,QAAQ;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,cAA6C;AAAA,EACxD,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,aAAa;AAAA,QACX,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,WACJ;AAAA,QACH,aACE;AAAA,MACJ;AAAA,MACA,cAAc;AAAA,QACZ,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,aAAa;AAAA,QACX,aACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,OAAO,EAAE,aAAa,kCAAkC,MAAM,SAAS;AAAA,IACzE;AAAA,IACA,UAAU,CAAC,SAAS,eAAe,gBAAgB,SAAS;AAAA,IAC5D,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,WAAuC;AAAA,EAClD,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,OAAO;AAAA,WACF;AAAA,QACH,aACE;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,OAAO;AAAA,QACL,aAAa;AAAA,QACb,OAAO;AAAA,UACL,YAAY;AAAA,YACV,MAAM;AAAA,cACJ,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,MAAM,EAAE,aAAa,2BAA2B,MAAM,SAAS;AAAA,YAC/D,WAAW;AAAA,cACT,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,UAAU,CAAC,QAAQ,MAAM;AAAA,UACzB,MAAM;AAAA,QACR;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,WACH;AAAA,QACH,aAAa;AAAA,MACf;AAAA,MACA,OAAO,EAAE,aAAa,4BAA4B,MAAM,SAAS;AAAA,IACnE;AAAA,IACA,UAAU,CAAC,SAAS,SAAS,OAAO;AAAA,IACpC,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,WAAuC;AAAA,EAClD,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,aAAa;AAAA,QACb,OAAO;AAAA,UACL,YAAY;AAAA,YACV,QAAQ;AAAA,cACN,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,IAAI;AAAA,cACF,aACE;AAAA,cACF,MAAM;AAAA,YACR;AAAA,YACA,OAAO,EAAE,aAAa,uBAAuB,MAAM,SAAS;AAAA,YAC5D,QAAQ,EAAE,MAAM,CAAC,GAAG,kBAAkB,GAAG,MAAM,SAAS;AAAA,UAC1D;AAAA,UACA,UAAU,CAAC,MAAM,SAAS,QAAQ;AAAA,UAClC,MAAM;AAAA,QACR;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,OAAO,EAAE,aAAa,8BAA8B,MAAM,SAAS;AAAA,IACrE;AAAA,IACA,UAAU,CAAC,SAAS,OAAO;AAAA,IAC3B,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,iBAAmD;AAAA,EAC9D,KAAK;AAAA,EACL,aACE;AAAA,EACF,aAAa;AAAA,IACX,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa;AAAA,QACb,OAAO;AAAA,UACL,YAAY;AAAA,YACV,SAAS;AAAA,cACP,aACE;AAAA,cACF,MAAM;AAAA,YACR;AAAA,YACA,OAAO;AAAA,cACL,aACE;AAAA,cACF,MAAM;AAAA,YACR;AAAA,YACA,KAAK;AAAA,cACH,aACE;AAAA,cACF,MAAM;AAAA,YACR;AAAA,YACA,OAAO;AAAA,cACL,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,QAAQ;AAAA,cACN,aACE;AAAA,cACF,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,UAAU,CAAC,KAAK;AAAA,UAChB,MAAM;AAAA,QACR;AAAA,QACA,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,UAAU,CAAC,SAAS,MAAM;AAAA,IAC1B,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AACT;AAGO,IAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;ACxuCO,IAAM,iBAA6B;AAAA,EACxC,MAAM;AAAA,EACN,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,SAAS;AAAA,EACT,aAAa;AAAA,EACb,eAAe;AACjB;AAEO,IAAM,gBAA4B;AAAA,EACvC,MAAM;AAAA,EACN,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,SAAS;AAAA,EACT,aAAa;AAAA,EACb,eAAe;AACjB;AAUA,IAAM,QAAQ;AACd,IAAM,SAAS;AACf,IAAM,SAAS,EAAE,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,KAAK,GAAG;AAC1D,IAAM,iBAAiB;AACvB,IAAM,WAAW;AACjB,IAAM,aAAa;AACnB,IAAM,4BAA4B;AAClC,IAAM,cAAc;AACpB,IAAM,OACJ;AAEF,IAAM,YAAY,CAAC,UACjB,MACG,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ;AAE3B,IAAM,cAAc,CAAC,OAAe,SAAoB;AAAA,EAEtD,MAAM,OAAO,QAAQ,IAAI,MAAM;AAAA,EAC/B,MAAM,MAAM,KAAK,IAAI,KAAK;AAAA,EAC1B,MAAM,UACJ,OAAO,MACH,IAAI,MAAM,KAAW,QAAQ,CAAC,EAAE,QAAQ,QAAQ,EAAE,OAClD,OAAO,MACL,IAAI,MAAM,MAAO,QAAQ,CAAC,EAAE,QAAQ,QAAQ,EAAE,OAC9C,OAAO,OACL,IAAI,eAAe,OAAO,IAC1B,GAAG,OAAO,UAAU,GAAG,IAAI,MAAM,IAAI,QAAQ,CAAC;AAAA,EAExD,OAAO,GAAG,OAAO,KAAK,cAAc,KAAK,UAAU,KAAK,cAAc;AAAA;AAIxE,IAAM,YAAY,CAAC,KAAa,QAAgB;AAAA,EAC9C,MAAM,OAAO,MAAM,OAAO;AAAA,EAC1B,MAAM,QAAQ,OAAO;AAAA,EACrB,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,MAAM,KAAK,MAAM,KAAK,CAAC,CAAC;AAAA,EACxD,MAAM,aAAa,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,OAAO,KAAK;AAAA,EAC3D,MAAM,OACJ,WAAW,KAAK,CAAC,cAAc,aAAa,KAAK,KACjD,WAAW,WAAW,SAAS,MAC/B;AAAA,EACF,MAAM,QAAQ,KAAK,MAAM,MAAM,IAAI,IAAI;AAAA,EACvC,MAAM,QAAkB,CAAC;AAAA,EACzB,SAAS,OAAO,MAAO,QAAQ,MAAM,OAAO,GAAG,QAAQ,MAAM;AAAA,IAC3D,MAAM,KAAK,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,IAAI,IAAI;AAAA,EACnD;AAAA,EAEA,OAAO;AAAA;AAWT,IAAM,YAAY,CAAC,MAAiB,UAAiB;AAAA,EACnD,QAAQ,UAAU;AAAA,EAClB,MAAM,QAAQ;AAAA,IACZ,YAAY,MAAM,0BAA0B,MAAM,iDAAiD,UAAU,KAAK,KAAK;AAAA,EACzH;AAAA,EAGA,IAAI,KAAK,OAAO,SAAS,GAAG;AAAA,IAC1B,IAAI,IAAI,MAAM;AAAA,IACd,MAAM,WAAW,KAAK,OAAO,IAAI,CAAC,QAAQ,UAAU;AAAA,MAClD,MAAM,QAAQ,MAAM,QAAQ,QAAQ,MAAM,QAAQ;AAAA,MAClD,MAAM,QAAQ,UAAU,OAAO,IAAI;AAAA,MACnC,MAAM,OAAO,YAAY,iDAAiD,oBAAoB,IAAI,oBAAoB,MAAM,iCAAiC;AAAA,MAC7J,KAAK,KAAK,OAAO,KAAK,SAAS,IAAI;AAAA,MAEnC,OAAO;AAAA,KACR;AAAA,IACD,MAAM,KAAK,GAAG,QAAQ;AAAA,EACxB;AAAA,EAEA,OAAO,MAAM,KAAK,EAAE;AAAA;AAGtB,IAAM,UAAU,CACd,OACA,MACA,MACA,UAEA,MACG,IAAI,CAAC,SAAS;AAAA,EACb,MAAM,IAAI,KAAK,IAAI;AAAA,EACnB,MAAM,SAAS,SAAS;AAAA,EAExB,OAAO,aAAa,MAAM,iBAAiB,UAAU,MAAM,kBAAkB,cAAc,SAAS,MAAM,MAAM,gBAAgB,MAAM,MAAM,oCAAoC,MAAM,WAAW,SAAS,IAAI,cAAc,MAAM,MAAM,mDAAmD,UAAU,YAAY,MAAM,IAAI,CAAC;AAAA,CAC7T,EACA,KAAK,EAAE;AAEZ,IAAM,aAAa,CACjB,MACA,SACA,UACG;AAAA,EAEH,MAAM,QAAQ,KAAK,KAAK,KAAK,OAAO,SAAS,EAAE;AAAA,EAE/C,OAAO,KAAK,OACT,IAAI,CAAC,OAAO,UAAU;AAAA,IACrB,IAAI,QAAQ,UAAU;AAAA,MAAG,OAAO;AAAA,IAChC,MAAM,QAAQ,MAAM,SAAS,KAAK,GAAG,MAAM,MAAM,GAAG,EAAE,YAAO;AAAA,IAE7D,OAAO,YAAY,QAAQ,KAAK,SAAS,MAAM,aAAa,aAAa,MAAM,MAAM,sDAAsD,UAAU,KAAK;AAAA,GAC3J,EACA,KAAK,EAAE;AAAA;AAKZ,IAAM,UAAU,CACd,GACA,QACA,OACA,UACW;AAAA,EACX,MAAM,KAAK,UAAU;AAAA,EACrB,MAAM,MAAM,KAAK,IAAI,QAAQ,KAAK;AAAA,EAClC,MAAM,SAAS,KAAK,IAAI,QAAQ,KAAK;AAAA,EACrC,MAAM,SAAS,KAAK,IAAI,gBAAgB,QAAQ,GAAG,SAAS,GAAG;AAAA,EAC/D,IAAI,UAAU;AAAA,IAAG,OAAO;AAAA,EACxB,IAAI,IAAI;AAAA,IACN,OAAO,IAAI,KAAK,WAAW,KAAK,MAAM,WAAW,KAAK,OAAO,IAAI,UAAU,QAAQ,IAAI,QAAQ,UAAU,QAAQ,IAAI,SAAS,OAAO,IAAI,SAAS,MAAM,WAAW,IAAI,SAAS;AAAA,EAClL;AAAA,EAEA,OAAO,IAAI,KAAK,QAAQ,KAAK,SAAS,WAAW,KAAK,UAAU,IAAI,UAAU,WAAW,IAAI,QAAQ,UAAU,WAAW,IAAI,SAAS,UAAU,IAAI,SAAS,SAAS,WAAW,IAAI,SAAS;AAAA;AAGjM,IAAM,cAAc,CAAC,SAAoB;AAAA,EACvC,MAAM,MAAM,KAAK,OAAO,QAAQ,CAAC,WAAW,OAAO,MAAM;AAAA,EACzD,MAAM,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG;AAAA,EAC9B,MAAM,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG;AAAA,EAE9B,OAAO,QAAQ,MAAM,EAAE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA;AAG1D,IAAM,eAAe,CAAC,MAAiB,UAAiB;AAAA,EACtD,QAAQ,UAAU;AAAA,EAClB,MAAM,SAAS,YAAY,IAAI;AAAA,EAC/B,MAAM,QAAQ,UAAU,OAAO,KAAK,OAAO,GAAG;AAAA,EAC9C,MAAM,KAAK,KAAK,IAAI,OAAO,KAAK,MAAM,MAAM,OAAO,GAAG;AAAA,EACtD,MAAM,KAAK,KAAK,IAAI,OAAO,KAAK,MAAM,MAAM,SAAS,MAAM,OAAO,GAAG;AAAA,EACrE,MAAM,OAAO,CAAC,UACZ,MAAM,cACJ,QAAQ,OAAO,KAAK,OAAQ,MAAM,aAAa,MAAM;AAAA,EACzD,MAAM,QAAQ,MAAM,YAAY,MAAM,YAAY,KAAK,OAAO;AAAA,EAC9D,MAAM,UAAU,CAAC,UAAkB,MAAM,WAAW,QAAQ,QAAQ;AAAA,EAEpE,MAAM,QAAkB,CAAC,QAAQ,OAAO,MAAM,MAAM,KAAK,CAAC;AAAA,EAE1D,IAAI,KAAK,SAAS,OAAO;AAAA,IACvB,MAAM,QAAQ,KAAK,IAAI,OAAO,MAAM,EAAE;AAAA,IACtC,MAAM,WAAW,KAAK,IACpB,IACC,QAAQ,YAAY,KAAK,OAAO,SAAS,MAAM,KAAK,OAAO,MAC9D;AAAA,IACA,MAAM,QAAQ,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;AAAA,IAChD,KAAK,OAAO,QAAQ,CAAC,QAAQ,gBAAgB;AAAA,MAC3C,MAAM,QAAQ,MAAM,QAAQ,cAAc,MAAM,QAAQ;AAAA,MACxD,OAAO,OAAO,QAAQ,CAAC,OAAO,UAAU;AAAA,QACtC,MAAM,IACJ,QAAQ,KAAK,IAAI,QAAQ,IAAI,eAAe,WAAW;AAAA,QACzD,MAAM,UAAU,GAAG,UAAU,OAAO,IAAI,UAAO,UAAU,KAAK,OAAO,UAAU,EAAE,MAAM,UAAU,YAAY,OAAO,IAAI,CAAC;AAAA,QAEzH,MAAM,KACJ,YAAY,QAAQ,GAAG,KAAK,KAAK,GAAG,OAAO,QAAQ,YAAY,iBAAiB,wBAClF;AAAA,OACD;AAAA,KACF;AAAA,IAED,OAAO,QAAQ,KAAK;AAAA,IACpB,IAAI,KAAK,OAAO,WAAW,KAAK,QAAQ,KAAK,OAAO,UAAU,GAAG;AAAA,MAC/D,KAAK,OAAO,QAAQ,CAAC,OAAO,UAAU;AAAA,QACpC,MAAM,QAAQ,SAAS;AAAA,QACvB,MAAM,KACJ,YAAY,QAAQ,KAAK,SAAS,KAAK,KAAK,KAAK,QAAQ,KAAK,cAAc,MAAM,sDAAsD,UAAU,YAAY,OAAO,IAAI,CAAC,UAC5K;AAAA,OACD;AAAA,IACH;AAAA,EACF,EAAO;AAAA,IACL,KAAK,OAAO,QAAQ,CAAC,QAAQ,gBAAgB;AAAA,MAC3C,MAAM,QAAQ,MAAM,QAAQ,cAAc,MAAM,QAAQ;AAAA,MACxD,MAAM,SAAS,OAAO,OAAO,IAC3B,CAAC,OAAO,UAAU,GAAG,QAAQ,KAAK,KAAK,KAAK,KAAK,GACnD;AAAA,MACA,MAAM,KACJ,qBAAqB,OAAO,KAAK,GAAG,0BAA0B,wBAAwB,8DACxF;AAAA,MACA,OAAO,OAAO,QAAQ,CAAC,OAAO,UAAU;AAAA,QACtC,MAAM,UAAU,GAAG,UAAU,OAAO,IAAI,UAAO,UAAU,KAAK,OAAO,UAAU,EAAE,MAAM,UAAU,YAAY,OAAO,IAAI,CAAC;AAAA,QAEzH,MAAM,KACJ,eAAe,QAAQ,KAAK,UAAU,KAAK,KAAK,kBAAkB,kBAAkB,MAAM,oCAAoC,0BAChI;AAAA,OACD;AAAA,MAED,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,SAAS;AAAA,MAClD,IACE,KAAK,OAAO,UAAU,6BACtB,SAAS,WACT;AAAA,QACA,MAAM,KACJ,YAAY,MAAM,YAAY,SAAS,KAAK,IAAI,IAAI,cAAc,MAAM,iCAAiC,UAAU,OAAO,IAAI,UAChI;AAAA,MACF;AAAA,KACD;AAAA;AAAA,EAEH,MAAM,KAAK,WAAW,MAAM,SAAS,KAAK,CAAC;AAAA,EAE3C,OAAO,MAAM,KAAK,EAAE;AAAA;AAGtB,IAAM,WAAW,CAAC,MAAiB,UAAiB;AAAA,EAClD,QAAQ,UAAU;AAAA,EAClB,OAAO,UAAU,KAAK;AAAA,EACtB,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,MAAM,QAAQ,OAAO,OAAO,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC;AAAA,EACjE,IAAI,SAAS;AAAA,IAAG,OAAO;AAAA,EACvB,MAAM,MAAM,MAAM,WAAW,MAAM,aAAa;AAAA,EAChD,MAAM,MAAM,MAAM,UAAU,MAAM,cAAc,IAAI;AAAA,EACpD,MAAM,SAAS,KAAK,KACjB,MAAM,aAAa,MAAM,WAAW,IAAI,IACxC,MAAM,YAAY,MAAM,YAAY,CACvC;AAAA,EACA,MAAM,OAAO,KAAK,IAAI,IAAI,SAAS,IAAI;AAAA,EACvC,MAAM,MAAM,SAAS,OAAO;AAAA,EAE5B,MAAM,WAAW,WAAW;AAAA,EAE5B,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,QAAQ,CAAC,KAAK,KAAK;AAAA,EACvB,OAAO,OAAO,QAAQ,CAAC,OAAO,UAAU;AAAA,IACtC,MAAM,QAAS,QAAQ,QAAS,KAAK,KAAK;AAAA,IAC1C,MAAM,QAAQ,QAAQ,WAAW;AAAA,IACjC,MAAM,MAAM,QAAQ,QAAQ,WAAW;AAAA,IACvC,SAAS;AAAA,IACT,IAAI,OAAO;AAAA,MAAO;AAAA,IAClB,MAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAAI;AAAA,IAC1C,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAAA,IACpC,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAAA,IACpC,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI,GAAG;AAAA,IAClC,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI,GAAG;AAAA,IAClC,MAAM,QAAQ,MAAM,QAAQ,QAAQ,MAAM,QAAQ;AAAA,IAClD,MAAM,QAAQ,GAAG,KAAK,MAAO,QAAQ,QAAS,GAAG;AAAA,IACjD,MAAM,UAAU,GAAG,UAAU,KAAK,OAAO,UAAU,EAAE,MAAM,UAAU,YAAY,OAAO,IAAI,CAAC,MAAM;AAAA,IACnG,MAAM,KACJ,aAAa,MAAM,OAAO,OAAO,SAAS,WAAW,MAAM,2BAA2B,wBAAwB,gBAAgB,wBAChI;AAAA,GACD;AAAA,EACD,MAAM,KACJ,YAAY,UAAU,KAAK,YAAY,MAAM,sEAAsE,UAAU,YAAY,OAAO,IAAI,CAAC,UACvJ;AAAA,EAEA,IAAI,IAAI,MAAM;AAAA,EACd,KAAK,OAAO,QAAQ,CAAC,OAAO,UAAU;AAAA,IACpC,MAAM,QAAQ,MAAM,QAAQ,QAAQ,MAAM,QAAQ;AAAA,IAClD,MAAM,KACJ,YAAY,iDAAiD,oBAAoB,IAAI,oBAAoB,MAAM,iCAAiC,UAAU,KAAK,UACjK;AAAA,IACA,KAAK,KAAK,MAAM,SAAS,IAAI;AAAA,GAC9B;AAAA,EAED,OAAO,MAAM,KAAK,EAAE;AAAA;AAIf,IAAM,iBAAiB,CAC5B,MACA,UAAiC,CAAC,MAC/B;AAAA,EACH,MAAM,OAAO,QAAQ,SAAS,SAAS,gBAAgB;AAAA,EACvD,MAAM,QAAoB,KAAK,SAAS,QAAQ,MAAM;AAAA,EACtD,MAAM,QAAQ,QAAQ,SAAS;AAAA,EAC/B,MAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,MAAM,QAAe;AAAA,IACnB,YAAY,SAAS,OAAO;AAAA,IAC5B,UAAU,OAAO;AAAA,IACjB,WACE,QACA,OAAO,SAEN,KAAK,SAAS,SAAS,KAAK;AAAA,IAC/B,SAAS,OAAO;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,MAAM,OACJ,KAAK,SAAS,UAAU,SAAS,MAAM,KAAK,IAAI,aAAa,MAAM,KAAK;AAAA,EAE1E,OAAO,wDAAwD,SAAS,kCAAkC,UAAU,KAAK,KAAK,mBAAmB,sBAAsB,kBAAkB,iBAAiB,MAAM,qBAAqB,KAAK,SAAS,UAAU,UAAU,KAAK,MAAM,QAAQ,CAAC,EAAE,GAAG,KAAK,IAAI,UAAU,MAAM,KAAK,IAAI;AAAA;;ACvWpU,IAAM,aAAY;AAClB,IAAM,oBAAmB;AAElB,IAAM,4BAA4B,MAAM;AAAA,EAC7C,MAAM,gBAAgB,IAAI;AAAA,EAE1B,MAAM,cAAc,CAAC,mBAA4B;AAAA,IAC/C,MAAM,KAAK,kBAAkB,WAAW;AAAA,IACxC,IAAI,eAAe,cAAc,IAAI,EAAE;AAAA,IAEvC,IAAI,CAAC,cAAc;AAAA,MACjB,eAAe,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE;AAAA,MACzD,cAAc,IAAI,IAAI,YAAY;AAAA,IACpC;AAAA,IAEA,OAAO;AAAA;AAAA,EAGT,MAAM,gBAAgB,CAAC,gBAAwB,YAAuB;AAAA,IACpE,MAAM,eAAe,YAAY,cAAc;AAAA,IAC/C,aAAa,SAAS,KAAK,OAAO;AAAA,IAClC,aAAa,gBAAgB,KAAK,IAAI;AAAA,IAEtC,IAAI,CAAC,aAAa,SAAS,QAAQ,SAAS,QAAQ;AAAA,MAClD,aAAa,QAAQ,QAAQ,QAAQ,MAAM,GAAG,iBAAgB;AAAA,IAChE;AAAA;AAAA,EAGF,MAAM,OAAO,CACX,eACA,sBACA,SACG;AAAA,IACH,MAAM,SAAS,cAAc,IAAI,oBAAoB;AAAA,IAErD,IAAI,CAAC,QAAQ;AAAA,MACX,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,cAAc,OAAO,SAAS,UAClC,CAAC,QAAQ,IAAI,OAAO,aACtB;AAAA,IAEA,IAAI,gBAAgB,YAAW;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,SAAS,aAAa,OAAO,SAAS,cAAc,SAAS,QAAQ;AAAA,MACvE,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,QAAQ,WAAW;AAAA,IACzB,MAAM,mBAAmB,OAAO,SAC7B,MAAM,GAAG,eAAe,SAAS,YAAY,IAAI,EAAE,EACnD,IAAI,CAAC,SAAS,KAAK,KAAK,gBAAgB,MAAM,EAAE;AAAA,IAEnD,MAAM,kBAAkC;AAAA,MACtC,WAAW,KAAK,IAAI;AAAA,MACpB,IAAI;AAAA,MACJ,UAAU;AAAA,IACZ;AAAA,IACA,cAAc,IAAI,OAAO,eAAe;AAAA,IAExC,OAAO;AAAA;AAAA,EAGT,MAAM,SAAS,CAAC,eAAuB,yBACrC,KAAK,eAAe,sBAAsB,QAAQ;AAAA,EAEpD,MAAM,OAAO,CAAC,WAAmB,yBAC/B,KAAK,WAAW,sBAAsB,SAAS;AAAA,EAEjD,MAAM,eAAoC,CAAC;AAAA,EAE3C,MAAM,aAAa,CAAC,mBAA2B;AAAA,IAC7C,MAAM,eAAe,cAAc,IAAI,cAAc;AAAA,IAErD,IAAI,CAAC,cAAc;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,UAA+B,aAAa,SAAS,IAAI,CAAC,SAAS;AAAA,MACvE,SAAS,IAAI;AAAA,MACb,MAAM,IAAI;AAAA,IACZ,EAAE;AAAA,IAEF,OAAO;AAAA;AAAA,EAGT,MAAM,qBAAqB,CAAC,mBAA2B;AAAA,IACrD,MAAM,eAAe,YAAY,cAAc;AAAA,IAC/C,MAAM,aAAa,IAAI;AAAA,IACvB,aAAa,oBAAoB;AAAA,IAEjC,OAAO;AAAA;AAAA,EAGT,MAAM,QAAQ,CAAC,mBAA2B;AAAA,IACxC,MAAM,eAAe,cAAc,IAAI,cAAc;AAAA,IAErD,IAAI,cAAc,mBAAmB;AAAA,MACnC,aAAa,kBAAkB,MAAM;AAAA,MACrC,aAAa,oBAAoB;AAAA,IACnC;AAAA;AAAA,EAGF,MAAM,MAAM,CAAC,mBAA2B,cAAc,IAAI,cAAc;AAAA,EAExE,MAAM,SAAS,CAAC,mBACd,cAAc,OAAO,cAAc;AAAA,EAErC,MAAM,OAAO,MACX,MAAM,KAAK,cAAc,OAAO,CAAC,EAC9B,IAAI,CAAC,UAAU;AAAA,IACd,WAAW,KAAK;AAAA,IAChB,IAAI,KAAK;AAAA,IACT,eAAe,KAAK;AAAA,IACpB,cAAc,KAAK,SAAS;AAAA,IAC5B,OAAO,KAAK,SAAS;AAAA,EACvB,EAAE,EACD,KACC,CAAC,OAAO,YACL,OAAO,iBAAiB,OAAO,cAC/B,MAAM,iBAAiB,MAAM,UAClC;AAAA,EAEJ,MAAM,cAAc,CAAC,mBAA2B;AAAA,IAC9C,MAAM,eAAe,cAAc,IAAI,cAAc;AAAA,IAErD,IAAI,CAAC,cAAc;AAAA,MACjB,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,OAAO,aAAa;AAAA;AAAA,EAGtB,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;AC3JF;AA2BA,IAAM,iBAAiB,CAAC,UAAqB,SAC3C,SAAS,YAAY,KAAK,WAC1B,SAAS,gBAAgB,KAAK,eAC9B,SAAS,aAAa,KAAK;AAUtB,IAAM,8BAA8B,CACzC,UAAwC,CAAC,MACf;AAAA,EAC1B,MAAM,SAAS,QAAQ,UAAU,iBAAiB;AAAA,EAClD,MAAM,QAAQ,QAAQ,SAAS,kBAAkB;AAAA,EACjD,MAAM,aAAa,QAAQ,cAAc;AAAA,EACzC,MAAM,QAAQ,QAAQ,SAAS;AAAA,EAC/B,MAAM,WAAW,IAAI;AAAA,EAErB,OAAO,eAAe,OAAO;AAAA,IAC3B,KAAK,MAAM,CAAC,GAAG,SAAS,OAAO,CAAC;AAAA,IAChC,KAAK,CAAC,QAAS,IAAkB;AAAA,EACnC,CAAC;AAAA,EAGD,OAAO,iBACL,oBAAuC;AAAA,IACrC,MAAM;AAAA,IACN,KAAK,CAAC,YAAY,QAAQ;AAAA,IAC1B,KAAK,SAAS,IAAI,aAAa;AAAA,MAC7B,MAAM,MAAM,MAAM,GAAG,IAAe,KAAK;AAAA,MAEzC,OAAO,IAAI,OAAO,CAAC,YAAY,QAAQ,mBAAmB,MAAM;AAAA;AAAA,EAEpE,CAAC,CACH;AAAA,EAIA,MAAM,mBAAmB,OAAO,IAAY,iBAAiC;AAAA,IAC3E,MAAM,UAAU,IAAI,IAAI,aAAa,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;AAAA,IAC1E,YAAY,WAAW,YAAY,CAAC,GAAG,QAAQ,GAAG;AAAA,MAChD,IAAI,QAAQ,mBAAmB,MAAM,CAAC,QAAQ,IAAI,SAAS,GAAG;AAAA,QAC5D,SAAS,OAAO,SAAS;AAAA,QACzB,MAAM,OAAO,YAAY,OAAO,EAAE,IAAI,UAAU,KAAK,QAAQ,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,IACA,WAAW,WAAW,aAAa,UAAU;AAAA,MAC3C,MAAM,WAAW,SAAS,IAAI,QAAQ,EAAE;AAAA,MACxC,IAAI,YAAY,CAAC,eAAe,UAAU,OAAO,GAAG;AAAA,QAClD;AAAA,MACF;AAAA,MACA,SAAS,IAAI,QAAQ,IAAI,OAAO;AAAA,MAChC,MAAM,OAAO,YAAY,OAAO;AAAA,QAC9B,IAAI,WAAW,WAAW;AAAA,QAC1B,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AAAA;AAAA,EAGF,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,KAAK,CAAC,OAAO,MAAM,IAAI,EAAE;AAAA,IACzB,aAAa,OAAO,OAAO;AAAA,MACzB,MAAM,eAAe,MAAM,MAAM,YAAY,EAAE;AAAA,MAC/C,MAAM,iBAAiB,IAAI,YAAY;AAAA,MAEvC,OAAO;AAAA;AAAA,IAET,MAAM,MAAM,MAAM,KAAK;AAAA,IACvB,QAAQ,OAAO,OAAO;AAAA,MACpB,YAAY,WAAW,YAAY,CAAC,GAAG,QAAQ,GAAG;AAAA,QAChD,IAAI,QAAQ,mBAAmB,IAAI;AAAA,UACjC,SAAS,OAAO,SAAS;AAAA,UACzB,MAAM,OAAO,YAAY,OAAO,EAAE,IAAI,UAAU,KAAK,QAAQ,CAAC;AAAA,QAChE;AAAA,MACF;AAAA,MACA,MAAM,MAAM,OAAO,EAAE;AAAA;AAAA,IAEvB,KAAK,OAAO,IAAI,iBAAiB;AAAA,MAC/B,MAAM,MAAM,IAAI,IAAI,YAAY;AAAA,MAChC,MAAM,iBAAiB,IAAI,YAAY;AAAA;AAAA,EAE3C;AAAA;;AChHK,IAAM,wBAAwB,CAAC,YAA6B;AAAA,EACjE,QAAQ,QAAQ;AAAA,SACT;AAAA,MACH,OAAO;AAAA,QACL,SAAS,QAAQ;AAAA,QACjB,gBAAgB,QAAQ;AAAA,QACxB,WAAW,QAAQ;AAAA,QACnB,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,SAAS,QAAQ;AAAA,QACjB,gBAAgB,QAAQ;AAAA,QACxB,WAAW,QAAQ;AAAA,QACnB,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,gBAAgB,QAAQ;AAAA,QACxB,OAAO,QAAQ;AAAA,QACf,WAAW,QAAQ;AAAA,QACnB,MAAM,QAAQ;AAAA,QACd,QAAQ,QAAQ;AAAA,QAChB,QAAQ,QAAQ;AAAA,QAChB,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,gBAAgB,QAAQ;AAAA,QACxB,MAAM,QAAQ;AAAA,QACd,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ;AAAA,QACjB,WAAW,QAAQ;AAAA,QACnB,WAAW,QAAQ;AAAA,QACnB,eAAe,QAAQ;AAAA,QACvB,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,SAAS,QAAQ;AAAA,QACjB,gBAAgB,QAAQ;AAAA,QACxB,MAAM,QAAQ;AAAA,QACd,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,QACnB,YAAY,QAAQ;AAAA,QACpB,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,gBAAgB,QAAQ;AAAA,QACxB,YAAY,QAAQ;AAAA,QACpB,WAAW,QAAQ;AAAA,QACnB,OAAO,QAAQ;AAAA,QACf,SAAS,QAAQ;AAAA,QACjB,MAAM;AAAA,QACN,OAAO,QAAQ;AAAA,MACjB;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,gBAAgB,QAAQ;AAAA,QACxB,WAAW,QAAQ;AAAA,QACnB,UAAU,QAAQ;AAAA,QAClB,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,gBAAgB,QAAQ;AAAA,QACxB,WAAW,QAAQ;AAAA,QACnB,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,aAAa,QAAQ;AAAA,QACrB,SAAS,QAAQ;AAAA,QACjB,eAAe,QAAQ;AAAA,QACvB,WAAW,QAAQ;AAAA,QACnB,MAAM,QAAQ;AAAA,QACd,mBAAmB,QAAQ;AAAA,QAC3B,mBAAmB,QAAQ;AAAA,QAC3B,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,gBAAgB,QAAQ;AAAA,QACxB,WAAW,QAAQ;AAAA,QACnB,oBAAoB,QAAQ;AAAA,QAC5B,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,gBAAgB,QAAQ;AAAA,QACxB,WAAW,QAAQ;AAAA,QACnB,qBAAqB,QAAQ;AAAA,QAC7B,oBAAoB,QAAQ;AAAA,QAC5B,aAAa,QAAQ;AAAA,QACrB,SAAS,QAAQ;AAAA,QACjB,OAAO,QAAQ;AAAA,QACf,MAAM;AAAA,MACR;AAAA,SACG;AAAA,MACH,OAAO,EAAE,SAAS,QAAQ,SAAS,MAAM,QAAiB;AAAA;AAAA,MAE1D,OAAO;AAAA;AAAA;;ACjGb,IAAM,WAAU;AAChB,IAAM,oBAAoB;AAC1B,IAAM,YAAY;AAClB,IAAM,wBAAwB;AAC9B,IAAM,0BAA0B;AAChC,IAAM,0BAA0B;AAChC,IAAM,iCAAiC;AAmBvC,IAAM,OAAO,MAAM;AACnB,IAAM,kBAAkB,MAAM;AAE9B,IAAM,kBAAsC;AAAA,EAC1C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,eAAe,MAAM;AACvB;AAEA,IAAM,aAAa,CAAC,SAAiB;AAAA,EACnC,QAAQ,UAAU,MAAM,aAAa,OAAO;AAAA,EAC5C,MAAM,aAAa,aAAa,WAAW,SAAS;AAAA,EACpD,MAAM,aAAa,OAAO,IAAI,SAAS;AAAA,EAEvC,OAAO,GAAG,eAAe,WAAW,aAAa;AAAA;AAGnD,IAAM,qBAAqB,CAAC,UAAwB;AAAA,EAClD,IAAI;AAAA,EAEJ,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,OAAO,MAAM,IAAI,CAAC;AAAA,IACpC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAGT,IACE,QACA,OAAO,SAAS,YAChB,UAAU,QACV,KAAK,SAAS,QACd;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,CAAC,uBAAuB,IAAI,GAAG;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAGF,IAAM,qBAAqB,CAChC,MACA,UAA+B,CAAC,MAC7B;AAAA,EACH,IAAI,OAAO,WAAW,aAAa;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,kBAAkB,QAAQ,cAAc;AAAA,EAC9C,MAAM,eAAe,QAAQ,gBAAgB;AAAA,EAC7C,MAAM,uBACJ,QAAQ,wBAAwB;AAAA,EAElC,MAAM,YAAY,IAAI;AAAA,EAEtB,MAAM,YAA+B;AAAA,IACnC,aAAa;AAAA,IACb,iBAAiB,CAAC;AAAA,IAClB,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,IAAI;AAAA,EACN;AAAA,EAEA,MAAM,uBAAuB,MAAM;AAAA,IACjC,IAAI,UAAU,IAAI,eAAe,UAAS;AAAA,MACxC;AAAA,IACF;AAAA,IAEA,OAAO,UAAU,gBAAgB,SAAS,GAAG;AAAA,MAC3C,MAAM,OAAO,UAAU,gBAAgB,MAAM;AAAA,MAC7C,IAAI,OAAO,SAAS,UAAU;AAAA,QAC5B,UAAU,GAAG,KAAK,IAAI;AAAA,MACxB;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,cAAc,MAAM;AAAA,IACxB,IAAI,UAAU,cAAc;AAAA,MAC1B,cAAc,UAAU,YAAY;AAAA,MACpC,UAAU,eAAe;AAAA,IAC3B;AAAA,IAEA,IAAI,UAAU,kBAAkB;AAAA,MAC9B,aAAa,UAAU,gBAAgB;AAAA,MACvC,UAAU,mBAAmB;AAAA,IAC/B;AAAA;AAAA,EAGF,MAAM,oBAAoB,MAAM;AAAA,IAC9B,UAAU;AAAA,IACV,MAAM,QACJ,UAAU,sBAAsB,IAC5B,0BACA;AAAA,IAEN,UAAU,mBAAmB,WAAW,MAAM;AAAA,MAC5C,IAAI,UAAU,oBAAoB,sBAAsB;AAAA,QACtD;AAAA,MACF;AAAA,MAEA,QAAQ;AAAA,OACP,KAAK;AAAA;AAAA,EAGV,MAAM,UAAU,MAAM;AAAA,IACpB,MAAM,MAAM,WAAW,IAAI;AAAA,IAC3B,MAAM,aAAa,IAAI,UAAU,KAAK,QAAQ,SAAS;AAAA,IAEvD,WAAW,SAAS,MAAM;AAAA,MACxB,UAAU,cAAc;AAAA,MACxB,UAAU,oBAAoB;AAAA,MAC9B,qBAAqB;AAAA,MAErB,UAAU,eAAe,YAAY,MAAM;AAAA,QACzC,IAAI,WAAW,eAAe,YAAW,UAAU,aAAa;AAAA,UAC9D,WAAW,KAAK,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC,CAAC;AAAA,QAClD;AAAA,SACC,YAAY;AAAA;AAAA,IAGjB,WAAW,YAAY,CAAC,UAAwB;AAAA,MAC9C,MAAM,UAAU,mBAAmB,KAAK;AAAA,MAExC,IAAI,CAAC,SAAS;AAAA,QACZ;AAAA,MACF;AAAA,MAEA,UAAU,QAAQ,CAAC,aAAa,SAAS,OAAO,CAAC;AAAA;AAAA,IAGnD,WAAW,UAAU,CAAC,UAAsB;AAAA,MAC1C,UAAU,cAAc;AAAA,MACxB,YAAY;AAAA,MAEZ,MAAM,yBACJ,mBACA,MAAM,SAAS,qBACf,UAAU,oBAAoB;AAAA,MAEhC,IAAI,wBAAwB;AAAA,QAC1B,kBAAkB;AAAA,MACpB;AAAA;AAAA,IAGF,WAAW,UAAU,MAAM;AAAA,IAI3B,UAAU,KAAK;AAAA;AAAA,EAGjB,MAAM,OAAO,CAAC,QAAyB;AAAA,IACrC,MAAM,aAAa,KAAK,UAAU,GAAG;AAAA,IAErC,IAAI,UAAU,IAAI,eAAe,UAAS;AAAA,MACxC,UAAU,GAAG,KAAK,UAAU;AAAA,MAE5B;AAAA,IACF;AAAA,IAEA,UAAU,gBAAgB,KAAK,UAAU;AAAA;AAAA,EAG3C,MAAM,YAAY,CAAC,aAA6C;AAAA,IAC9D,UAAU,IAAI,QAAQ;AAAA,IAEtB,OAAO,MAAM;AAAA,MACX,UAAU,OAAO,QAAQ;AAAA;AAAA;AAAA,EAI7B,MAAM,QAAQ,MAAM;AAAA,IAClB,YAAY;AAAA,IAEZ,IAAI,UAAU,IAAI;AAAA,MAChB,UAAU,GAAG,MAAM,iBAAiB;AAAA,MACpC,UAAU,KAAK;AAAA,IACjB;AAAA,IAEA,UAAU,cAAc;AAAA,IACxB,UAAU,MAAM;AAAA;AAAA,EAGlB,MAAM,gBAAgB,MAAM,UAAU,IAAI,cAAc;AAAA,EAExD,QAAQ;AAAA,EAER,OAAO,EAAE,OAAO,eAAe,MAAM,UAAU;AAAA;;ACrNjD,IAAM,cAA6B;AAAA,EACjC,sBAAsB;AAAA,EACtB,eAAe,IAAI;AAAA,EACnB,OAAO;AAAA,EACP,aAAa;AACf;AAEA,IAAM,8BAA6C;AACnD,IAAM,eAA8B;AAGpC,IAAM,aAAa,OAAO;AAAA,EACxB,sBAAsB;AAAA,EACtB,eAAe,IAAI;AAAA,EACnB,OAAO;AAAA,EACP,aAAa;AACf;AAEA,IAAM,uBAAuB,CAC3B,cACA,cAEA,aAAa,SAAS,KACpB,CAAC,QAAQ,IAAI,OAAO,aAAa,IAAI,SAAS,WAChD;AAEF,IAAM,cAAc,CAAC,OAAsB,mBAA2B;AAAA,EACpE,IAAI,eAAe,MAAM,cAAc,IAAI,cAAc;AAAA,EAEzD,IAAI,CAAC,cAAc;AAAA,IACjB,eAAe;AAAA,MACb,WAAW,KAAK,IAAI;AAAA,MACpB,IAAI;AAAA,MACJ,UAAU,CAAC;AAAA,IACb;AAAA,IACA,MAAM,cAAc,IAAI,gBAAgB,YAAY;AAAA,EACtD;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,aAAa,CACjB,OACA,WACG;AAAA,EACH,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAqB;AAAA,IACzB,aAAa,OAAO;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,UAAU;AAAA,IACV,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACtB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA,EAC1D,MAAM,uBAAuB,OAAO;AAAA,EACpC,MAAM,QAAQ;AAAA,EACd,MAAM,cAAc;AAAA;AAGtB,IAAM,uBAAuB,CAC3B,OACA,gBACA,WACA,aACG;AAAA,EACH,MAAM,eAAe,MAAM,cAAc,IAAI,cAAc;AAAA,EAC3D,IAAI,CAAC;AAAA,IAAc;AAAA,EACnB,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,YACjD,QAAQ,OAAO,aAAa,QAAQ,SAAS,SACzC,KAAK,SAAS,SAAS,IACvB,OACN;AAAA;AAGF,IAAM,mBAAmB,CACvB,OACA,WACG;AAAA,EACH,qBAAqB,OAAO,OAAO,gBAAgB,OAAO,WAAW,IAAI;AAAA;AAG3E,IAAM,oBAAoB,CACxB,OACA,WACG;AAAA,EACH,qBAAqB,OAAO,OAAO,gBAAgB,OAAO,WAAW,KAAK;AAAA,EAC1E,MAAM,cAAc;AAAA;AAGtB,IAAM,cAAc,CAClB,OACA,WACG;AAAA,EACH,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,cAAc,aAAa,SAAS,UACxC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAAa,IAAI,SAAS,WACvD;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACpB,MAAM,cAAc,aAAa,SAAS,cAAc,WAAW;AAAA,IACnE,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,KAAK,QACtD,QAAQ,cACJ,KAAK,KAAK,SAAS,cAAc,OAAO,QAAQ,IAChD,GACN;AAAA,IAEA;AAAA,EACF;AAAA,EAEA,MAAM,UAAqB;AAAA,IACzB,SAAS,OAAO;AAAA,IAChB,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACtB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA;AAG5D,IAAM,iBAAiB,CACrB,OACA,WACG;AAAA,EACH,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,cAAc,aAAa,SAAS,UACxC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAAa,IAAI,SAAS,WACvD;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACpB,MAAM,eAAe,aAAa,SAAS,cAAc,YAAY;AAAA,IACrE,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,KAAK,QACtD,QAAQ,cACJ,KAAK,KAAK,UAAU,eAAe,OAAO,QAAQ,IAClD,GACN;AAAA,IAEA;AAAA,EACF;AAAA,EAEA,MAAM,UAAqB;AAAA,IACzB,SAAS;AAAA,IACT,gBAAgB,OAAO;AAAA,IACvB,IAAI,OAAO;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU,OAAO;AAAA,IACjB,WAAW,KAAK,IAAI;AAAA,EACtB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA;AAG5D,IAAM,iBAAiB,CAAC,SAAoB,aAAyB;AAAA,EACnE,IAAI,CAAC,QAAQ,WAAW;AAAA,IACtB,QAAQ,YAAY,CAAC,QAAQ;AAAA,IAE7B;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,QAAQ,UAAU,UACpC,CAAC,aAAa,SAAS,SAAS,SAAS,IAC3C;AAAA,EAEA,IAAI,eAAe,GAAG;AAAA,IACpB,QAAQ,UAAU,eAAe;AAAA,EACnC,EAAO;AAAA,IACL,QAAQ,YAAY,CAAC,GAAG,QAAQ,WAAW,QAAQ;AAAA;AAAA;AAIvD,IAAM,8BAA8B,CAClC,cACA,WACA,mBACG;AAAA,EACH,MAAM,WAAW,qBAAqB,cAAc,SAAS;AAAA,EAE7D,IAAI,UAAU;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,UAAqB;AAAA,IACzB,SAAS;AAAA,IACT;AAAA,IACA,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,EACtB;AAAA,EACA,aAAa,WAAW,CAAC,GAAG,aAAa,UAAU,OAAO;AAAA,EAE1D,OAAO;AAAA;AAGT,IAAM,qBAAqB,CACzB,OACA,WACG;AAAA,EACH,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACd,cACA,OAAO,WACP,OAAO,cACT;AAAA,EAEA,QAAQ,UAAU,OAAO;AAAA,EACzB,QAAQ,qBACN,OAAO,sBAAsB,QAAQ;AAAA,EACvC,QAAQ,cAAc,OAAO;AAAA,EAC7B,QAAQ,sBAAsB,OAAO;AAAA,EACrC,QAAQ,iBAAiB,OAAO;AAAA,EAChC,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGnD,IAAM,sBAAsB,CAC1B,OACA,WACG;AAAA,EACH,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACd,cACA,OAAO,WACP,OAAO,cACT;AAAA,EAEA,QAAQ,qBAAqB,OAAO;AAAA,EACpC,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGnD,IAAM,mBAAmB,CACvB,OACA,WACG;AAAA,EACH,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACd,cACA,OAAO,WACP,OAAO,cACT;AAAA,EAEA,MAAM,WAAuB;AAAA,IAC3B,IAAI,OAAO;AAAA,IACX,OAAO,OAAO;AAAA,IACd,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO,WAAW,aAAc,OAAO,UAAU,KAAM;AAAA,EACjE;AAAA,EAEA,eAAe,SAAS,QAAQ;AAAA,EAChC,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGnD,IAAM,sBAAsB,CAC1B,cACA,WACA,OACA,YACA,OACA,YACG;AAAA,EACH,aAAa,WAAW,aAAa,SAAS,IAAI,CAAC,QACjD,IAAI,OAAO,aAAa,IAAI,SAAS,cACjC;AAAA,OACK;AAAA,IACH;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,SAAS,WAAW,IAAI;AAAA,IACxB;AAAA,EACF,IACA,GACN;AAAA;AAGF,IAAM,aAAY;AAElB,IAAM,wBAAwB,CAC5B,QACA,YACG;AAAA,EACH,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EAErB,OAAO,OAAO,UAAU,CAAC,QAAQ,IAAI,YAAY,OAAO;AAAA;AAG1D,IAAM,8BAA8B,CAAC,WAA0B;AAAA,EAC7D,MAAM,UAAU,OAAO,SAAS;AAAA,EAEhC,IAAI,WAAW,KAAK,OAAO,UAAU,WAAW;AAAA,IAC9C,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,cAAc,CAAC,SAAoB,cAA2B;AAAA,EAClE,IAAI,CAAC,QAAQ,QAAQ;AAAA,IACnB,QAAQ,SAAS,CAAC,SAAS;AAAA,IAE3B;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,sBAAsB,QAAQ,QAAQ,UAAU,OAAO;AAAA,EAE3E,IAAI,eAAe,GAAG;AAAA,IACpB,QAAQ,OAAO,eAAe;AAAA,IAE9B;AAAA,EACF;AAAA,EAEA,MAAM,iBAAiB,4BAA4B,QAAQ,MAAM;AAAA,EAEjE,IAAI,kBAAkB,GAAG;AAAA,IACvB,QAAQ,OAAO,kBAAkB;AAAA,IAEjC;AAAA,EACF;AAAA,EAEA,QAAQ,SAAS,CAAC,GAAG,QAAQ,QAAQ,SAAS;AAAA;AAGhD,IAAM,cAAc,CAClB,OACA,WACG;AAAA,EACH,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACd,cACA,OAAO,WACP,OAAO,cACT;AAAA,EAEA,YAAY,SAAS;AAAA,IACnB,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,eAAe,OAAO;AAAA,EACxB,CAAC;AAAA,EAED,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGnD,IAAM,cAAc,CAClB,OACA,WACG;AAAA,EACH,MAAM,eAAe,YAAY,OAAO,OAAO,cAAc;AAAA,EAC7D,MAAM,UAAU,4BACd,cACA,OAAO,WACP,OAAO,cACT;AAAA,EACA,QAAQ,QAAQ;AAAA,IACd,GAAI,QAAQ,SAAS,CAAC;AAAA,IACtB;AAAA,MACE,SAAS,OAAO;AAAA,MAChB,MAAM,OAAO;AAAA,MACb,QAAQ,OAAO;AAAA,MACf,YAAY,OAAO;AAAA,IACrB;AAAA,EACF;AAAA,EACA,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGnD,IAAM,iBAAiB,CACrB,OACA,WACG;AAAA,EACH,MAAM,eAAe,MAAM,cAAc,IAAI,OAAO,cAAc;AAAA,EAElE,IAAI,cAAc;AAAA,IAChB,oBACE,cACA,OAAO,WACP,OAAO,OACP,OAAO,YACP,OAAO,OACP,OAAO,OACT;AAAA,EACF;AAAA,EAEA,MAAM,cAAc;AAAA;AAGtB,IAAM,kCAAkC,CAAC,iBAAiC;AAAA,EACxE,MAAM,oBAAoB,aAAa,SAAS,OAC9C,CAAC,QAAQ,IAAI,WACf;AAAA,EAEA,IAAI,kBAAkB,WAAW,GAAG;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,WAAW,OAAO,mBAAmB;AAAA,IACnC,IAAI,cAAc;AAAA,EACpB;AAAA,EAEA,aAAa,WAAW,CAAC,GAAG,aAAa,QAAQ;AAAA;AAGnD,IAAM,yBAAyB,CAAC,UAAyB;AAAA,EACvD,cAAc,iBAAiB,MAAM,eAAe;AAAA,IAClD,gCAAgC,YAAY;AAAA,EAC9C;AAAA;AAGF,IAAM,eAAe,CACnB,OACA,WACG;AAAA,EACH,MAAM,SAAS,MAAM,cAAc,IAAI,OAAO,iBAAiB;AAAA,EAE/D,IAAI,CAAC,QAAQ;AAAA,IACX;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,OAAO,SAAS,UAClC,CAAC,QAAQ,IAAI,OAAO,OAAO,aAC7B;AAAA,EAEA,IAAI,cAAc,GAAG;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,OAAO,SAAS,YAAY,IAAI;AAAA,EACrD,MAAM,mBAAmB,OAAO,SAC7B,MAAM,GAAG,cAAc,YAAY,EACnC,IAAI,CAAC,SAAS,KAAK,KAAK,gBAAgB,OAAO,kBAAkB,EAAE;AAAA,EAEtE,MAAM,kBAAkC;AAAA,IACtC,WAAW,KAAK,IAAI;AAAA,IACpB,IAAI,OAAO;AAAA,IACX,UAAU;AAAA,MACR,GAAG;AAAA,MACH;AAAA,QACE,aAAa,OAAO;AAAA,QACpB,SAAS,OAAO;AAAA,QAChB,gBAAgB,OAAO;AAAA,QACvB,IAAI,OAAO;AAAA,QACX,UAAU;AAAA,QACV,MAAM;AAAA,QACN,WAAW,KAAK,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,IAAI,OAAO,mBAAmB,eAAe;AAAA,EACjE,MAAM,uBAAuB,OAAO;AAAA,EACpC,MAAM,cAAc;AAAA;AAGtB,IAAM,cAAc,CAAC,OAAsB,WAA0B;AAAA,EACnE,QAAQ,OAAO;AAAA,SACR;AAAA,MACH,WAAW,OAAO,MAAM;AAAA,MACxB;AAAA,SACG;AAAA,MACH,YAAY,OAAO,MAAM;AAAA,MACzB;AAAA,SACG;AAAA,MACH,eAAe,OAAO,MAAM;AAAA,MAC5B;AAAA,SACG;AAAA,MACH,iBAAiB,OAAO,MAAM;AAAA,MAC9B;AAAA,SACG;AAAA,MACH,YAAY,OAAO,MAAM;AAAA,MACzB;AAAA,SACG;AAAA,MACH,YAAY,OAAO,MAAM;AAAA,MACzB;AAAA,SACG;AAAA,MACH,eAAe,OAAO,MAAM;AAAA,MAC5B;AAAA,SACG;AAAA,MACH,iBAAiB,OAAO,MAAM;AAAA,MAC9B;AAAA,SACG;AAAA,MACH,kBAAkB,OAAO,MAAM;AAAA,MAC/B;AAAA,SACG;AAAA,MACH,MAAM,QAAQ,OAAO;AAAA,MACrB,MAAM,cAAc;AAAA,MACpB;AAAA,SACG;AAAA,MACH,oBAAoB,OAAO,MAAM;AAAA,MACjC;AAAA,SACG;AAAA,MACH,mBAAmB,OAAO,MAAM;AAAA,MAChC;AAAA,SACG;AAAA,MACH,MAAM,cAAc;AAAA,MACpB,uBAAuB,KAAK;AAAA,MAC5B;AAAA,SACG;AAAA,MACH,aAAa,OAAO,MAAM;AAAA,MAC1B;AAAA,SACG;AAAA,MACH,MAAM,uBAAuB,OAAO;AAAA,MACpC;AAAA;AAAA;AAIC,IAAM,uBAAuB,MAAM;AAAA,EACxC,IAAI,QAAQ,WAAW;AAAA,EACvB,MAAM,cAAc,IAAI;AAAA,EAExB,OAAO;AAAA,IACL,UAAU,CAAC,WAA0B;AAAA,MACnC,YAAY,OAAO,MAAM;AAAA,MAEzB,QAAQ,KAAK,OAAO,eAAe,IAAI,IAAI,MAAM,aAAa,EAAE;AAAA,MAChE,YAAY,QAAQ,CAAC,aAAa,SAAS,CAAC;AAAA;AAAA,IAE9C,mBAAmB,MAAM;AAAA,IACzB,aAAa,MAAM;AAAA,IACnB,WAAW,CAAC,aAAyB;AAAA,MACnC,YAAY,IAAI,QAAQ;AAAA,MAExB,OAAO,MAAM;AAAA,QACX,YAAY,OAAO,QAAQ;AAAA;AAAA;AAAA,EAGjC;AAAA;;;AChhBK,IAAM,iBAAiB,CAAC,MAAc,mBAA4B;AAAA,EACvE,MAAM,aAAa,mBAAmB,IAAI;AAAA,EAC1C,MAAM,QAAQ,qBAAqB;AAAA,EACnC,MAAM,YAAY,IAAI;AAAA,EAEtB,IAAI,eAA8B;AAAA,EAClC,IAAI,qBAAqB;AAAA,EACzB,IAAI,kBAA+B,CAAC;AAAA,EACpC,IAAI,uBAAsC,kBAAkB;AAAA,EAE5D,MAAM,YAAY,MAAM;AAAA,IACtB,MAAM,WAAW,MAAM,YAAY;AAAA,IACnC,MAAM,SAAS,wBAAwB,SAAS;AAAA,IAChD,MAAM,eAAe,SACjB,SAAS,cAAc,IAAI,MAAM,IACjC;AAAA,IACJ,uBAAuB,UAAU,SAAS;AAAA,IAC1C,eAAe,SAAS;AAAA,IACxB,qBAAqB,SAAS;AAAA,IAC9B,kBAAkB,cAAc,YAAY,CAAC;AAAA,IAC7C,UAAU,QAAQ,CAAC,aAAa,SAAS,CAAC;AAAA;AAAA,EAG5C,MAAM,mBAAmB,MAAM,UAAU,SAAS;AAAA,EAElD,MAAM,wBAAwB,WAAW,UACvC,CAAC,YAA6B;AAAA,IAC5B,MAAM,SAAS,sBAAsB,OAAO;AAAA,IAC5C,IAAI,QAAQ;AAAA,MACV,MAAM,SAAS,MAAM;AAAA,IACvB;AAAA,GAEJ;AAAA,EAEA,MAAM,SAAS,CAAC,WAAmB,YAAoB;AAAA,IACrD,IAAI,sBAAsB;AAAA,MACxB,WAAW,KAAK;AAAA,QACd;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,QACA,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA;AAAA,EAGF,MAAM,OAAO,CAAC,WAAmB,YAAoB;AAAA,IACnD,IAAI,sBAAsB;AAAA,MACxB,WAAW,KAAK;AAAA,QACd;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,QACA,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA;AAAA,EAGF,MAAM,SAAS,MAAM;AAAA,IACnB,IAAI,sBAAsB;AAAA,MACxB,MAAM,SAAS,EAAE,MAAM,SAAS,CAAC;AAAA,MACjC,WAAW,KAAK;AAAA,QACd,gBAAgB;AAAA,QAChB,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA;AAAA,EAGF,MAAM,UAAU,MAAM;AAAA,IACpB,iBAAiB;AAAA,IACjB,sBAAsB;AAAA,IACtB,WAAW,MAAM;AAAA,IACjB,UAAU,MAAM;AAAA;AAAA,EAGlB,MAAM,OAAO,CAAC,SAAiB,gBAAiC;AAAA,IAC9D,MAAM,SAAS,wBAAwB,WAAW;AAAA,IAClD,MAAM,QAAQ,WAAW;AAAA,IAEzB,MAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA,IAED,WAAW,KAAK;AAAA,MACd;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,MAAM;AAAA,IACR,CAAC;AAAA;AAAA,EAGH,MAAM,YAAY,CAAC,aAAyB;AAAA,IAC1C,UAAU,IAAI,QAAQ;AAAA,IAEtB,OAAO,MAAM;AAAA,MACX,UAAU,OAAO,QAAQ;AAAA;AAAA;AAAA,EAI7B,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,QACI,KAAK,GAAG;AAAA,MACV,OAAO;AAAA;AAAA,QAEL,WAAW,GAAG;AAAA,MAChB,OAAO;AAAA;AAAA,QAEL,QAAQ,GAAG;AAAA,MACb,OAAO;AAAA;AAAA,EAEX;AAAA;;AClHF,IAAM,SAAwC;AAAA,EAC5C,WAAW;AAAA,IACT,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,sBAAsB;AAAA,IACpB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,gBAAgB;AAAA,IACd,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,2BAA2B;AAAA,IACzB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,gBAAgB;AAAA,IACd,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,2BAA2B;AAAA,IACzB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,UAAU;AAAA,IACR,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,eAAe;AAAA,IACb,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,0BAA0B;AAAA,IACxB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,cAAc;AAAA,IACZ,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,yBAAyB;AAAA,IACvB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,cAAc;AAAA,IACZ,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,yBAAyB;AAAA,IACvB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,gBAAgB;AAAA,IACd,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,gBAAgB;AAAA,IACd,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,sBAAsB;AAAA,IACpB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,sBAAsB;AAAA,IACpB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,sBAAsB;AAAA,IACpB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,eAAe;AAAA,IACb,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,eAAe;AAAA,IACb,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,iBAAiB;AAAA,IACf,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,gBAAgB;AAAA,IACd,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,IAAI;AAAA,IACF,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,iBAAiB;AAAA,IACf,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,sBAAsB;AAAA,IACpB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,qBAAqB;AAAA,IACnB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,uBAAuB;AAAA,IACrB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AAAA,EACA,uBAAuB;AAAA,IACrB,gBAAgB;AAAA,IAChB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACnB;AACF;AACO,IAAM,sBAAsB,CAAC,YAQmB;AAAA,EACrD,cAAc,CAAC,WAAW;AAAA,IACxB,MAAM,QAAQ,OAAO,KAAK,MAAM,EAAE;AAAA,IAClC,OAAO,UAAU,YAAY,YAAY,mBAAmB,KAAK;AAAA;AAAA,EAEnE,WAAW,OAAO,WAAW;AAAA,IAC3B,IAAI,OAAO;AAAA,MAAa,OAAO,OAAO,YAAY,MAAM;AAAA,IACxD,IAAI,IAAI,IAAI,OAAO,OAAO,EAAE,WAAW;AAAA,MACrC,MAAM,IAAI,aACR,wBACA,8DACF;AAAA,IACF,MAAM,SAAS,OAAO,OAAO;AAAA,IAC7B,IAAI,CAAC;AAAA,MACH,MAAM,IAAI,aACR,wBACA,oCAAoC,OAAO,iDAC7C;AAAA,IACF,OAAO,KAAK,OAAO;AAAA;AAAA,EAErB,aAAa,OAAO,WAAW;AAAA,IAC7B,MAAM,UAAU,IAAI,QAAQ,MAAM,OAAO,QAAQ,MAAM,CAAC;AAAA,IACxD,QAAQ,IAAI,iBAAiB,UAAU,MAAM,OAAO,IAAI,GAAG;AAAA,IAC3D,QAAQ,IAAI,gBAAgB,kBAAkB;AAAA,IAC9C,MAAM,OAAO,OAAO,KAAK,MAAM;AAAA,IAC/B,MAAM,UAAmC,CAAC;AAAA,IAC1C,WAAW,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,MACE,IAAI,KAAK,SAAS;AAAA,QAAW,QAAQ,OAAO,KAAK;AAAA,IACnD,MAAM,WAAW,MAAM,OAAO,MAC5B,GAAG,OAAO,qCACV;AAAA,MACE,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,KAAK,UAAU,OAAO;AAAA,MAC5B,QAAQ,OAAO,SACX,YAAY,IAAI,CAAC,OAAO,QAAQ,YAAY,QAAQ,KAAM,CAAC,CAAC,IAC5D,YAAY,QAAQ,KAAM;AAAA,IAChC,CACF;AAAA,IACA,OAAO,iBAAiB,MAAM,aAAa,QAAQ,GAAG,YAAY;AAAA;AAEtE;;;AChNA,IAAM,iBAAmC;AAAA,EACvC,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AACV;AAEA,IAAI,SAA2B,KAAK,eAAe;AAG5C,IAAM,8BAA8B,CACzC,YACS;AAAA,EACT,SAAS,KAAK,WAAW,QAAQ;AAAA;AA8BnC,IAAM,SAAS,IAAI;AAEnB,IAAM,YAAY,CAAC,aAAmC;AAAA,EACpD,MAAM,WAAW,OAAO,IAAI,QAAQ;AAAA,EACpC,IAAI;AAAA,IAAU,OAAO;AAAA,EACrB,MAAM,QAAsB;AAAA,IAC1B,qBAAqB;AAAA,IACrB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf,eAAe;AAAA,IACf,aAAa;AAAA,IACb,OAAO;AAAA,EACT;AAAA,EACA,OAAO,IAAI,UAAU,KAAK;AAAA,EAE1B,OAAO;AAAA;AASF,IAAM,0BAA0B,CACrC,UACA,WACS;AAAA,EACT,MAAM,SAAS,UAAU,QAAQ;AAAA,EACjC,OAAO,WAAW;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,WAAW,KAAK,IAAI;AAAA,IACpB,WACE,OAAO,cAAc,OAAO,YAAY,gBAAgB;AAAA,IAC1D,QAAQ,OAAO,UAAU;AAAA,EAC3B;AAAA;AAGF,IAAM,cAAc,CAAC,aAA2B;AAAA,EAC9C,MAAM,SAAS,UAAU,QAAQ;AAAA,EACjC,OAAO,QAAQ;AAAA,EACf,OAAO,sBAAsB;AAAA,EAC7B,OAAO,cAAc;AAAA,EACrB,OAAO,YAAY;AAAA,EACnB,OAAO,gBAAgB,KAAK,IAAI;AAAA;AAGlC,IAAM,cAAc,CAAC,UAAkB,UAA+B;AAAA,EACpE,MAAM,SAAS,UAAU,QAAQ;AAAA,EACjC,OAAO,uBAAuB;AAAA,EAC9B,OAAO,gBAAgB,KAAK,IAAI;AAAA,EAChC,OAAO,YAAY;AAAA,IACjB,SAAS,MAAM;AAAA,IACf,QAAQ,MAAM;AAAA,IACd,MAAM,MAAM;AAAA,EACd;AAAA,EACA,IAAI,OAAO,uBAAuB,OAAO,kBAAkB;AAAA,IACzD,OAAO,QAAQ;AAAA,IACf,OAAO,cAAc,KAAK,IAAI,IAAI,OAAO;AAAA,EAC3C;AAAA;AA0BF,IAAM,YAAW,CAAC,UAAkB,YAA0C;AAAA,EAC5E,qBAAqB,OAAO;AAAA,EAC5B,UAAU,OAAO;AAAA,EACjB,SAAS,OAAO,UAAU,YAAY,OAAO,UAAU,cAAc;AAAA,EACrE,WAAW,OAAO;AAAA,EAClB,eAAe,OAAO;AAAA,EACtB,eAAe,OAAO;AAAA,EACtB,aAAa,OAAO;AAAA,EACpB;AAAA,EACA,OAAO,OAAO;AAAA,EACd,eAAe,mBAAmB,QAAQ;AAC5C;AAQO,SAAS,iBAAiB,CAC/B,UACmC;AAAA,EACnC,IAAI,aAAa;AAAA,IAAW,OAAO,UAAS,UAAU,UAAU,QAAQ,CAAC;AAAA,EAEzE,OAAO,CAAC,GAAG,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,YAAY,UAAS,MAAM,MAAM,CAAC;AAAA;AAG7E,IAAM,eAAe,CAAC,YAA4B;AAAA,EAChD,MAAM,cAAc,OAAO,cAAc,KAAK;AAAA,EAC9C,MAAM,SAAS,KAAK,IAAI,aAAa,OAAO,UAAU;AAAA,EAEtD,OAAO,KAAK,MAAM,SAAS,IAAK,KAAK,OAAO,IAAI,SAAU,CAAC;AAAA;AAG7D,IAAM,QAAQ,CAAC,IAAY,WACzB,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,EAC/B,IAAI,QAAQ,SAAS;AAAA,IACnB,OAAO,OAAO,UAAU,IAAI,MAAM,SAAS,CAAC;AAAA,IAE5C;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7B,QAAQ,oBAAoB,SAAS,OAAO;AAAA,IAC5C,QAAQ;AAAA,KACP,EAAE;AAAA,EACL,MAAM,UAAU,MAAM;AAAA,IACpB,aAAa,KAAK;AAAA,IAClB,OAAO,QAAQ,UAAU,IAAI,MAAM,SAAS,CAAC;AAAA;AAAA,EAE/C,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,CAC1D;AAEH,IAAM,cAAc,CAAC,aAA2C;AAAA,EAC9D,MAAM,SAAS,UAAU,QAAQ;AAAA,EAIjC,IAAI,OAAO,YAAY,CAAC,OAAO,SAAS,WAAW;AAAA,IACjD,OAAO,IAAI,cAAc;AAAA,MACvB,SAAS,GAAG,gCAAgC,OAAO,SAAS,SAAS,KAAK,OAAO,SAAS,WAAW;AAAA,MACrG;AAAA,MACA,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,MAAM,OAAO,SAAS;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,OAAO,UAAU;AAAA,IAAQ,OAAO;AAAA,EACpC,IAAI,OAAO,gBAAgB,QAAQ,KAAK,IAAI,KAAK,OAAO,aAAa;AAAA,IAEnE,OAAO,QAAQ;AAAA,IAEf,OAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS,OAAO,WAAW,WAAW;AAAA,EAE5C,OAAO,IAAI,cAAc;AAAA,IACvB,SAAS,GAAG,2DAA2D,OAAO,kCAAkC;AAAA,IAChH;AAAA,IACA,WAAW;AAAA,IACX,QAAQ,OAAO,WAAW,UAAU;AAAA,IACpC,MAAM,OAAO,WAAW,QAAQ;AAAA,EAClC,CAAC;AAAA;AAOI,IAAM,iBAAiB,CAC5B,UACA,eAAe,cACM;AAAA,EACrB,MAAM,UAAU,gBAAgB,CAC9B,QACA,WACwB;AAAA,IACxB,IAAI,UAAU;AAAA,IACd,IAAI;AAAA,MACF,iBAAiB,SAAS,SAAS,OAAO,MAAM,GAAG;AAAA,QACjD,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,MACA,YAAY,YAAY;AAAA,MACxB,OAAO,KAAK;AAAA,MAEZ,MAAM,gBAAgB,cAAc,KAAK,KAAK,YAAY;AAAA,MAC1D,MAAM,WACJ,CAAC,WACD,cAAc,aACd,aACG,OAAO,eAAe,YACnB,OAAO,aACP,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,YAAY,OAAO,UAAU,CAAC,MAChE,CAAC,OAAO,QAAQ;AAAA,MAElB,IAAI,UAAU;AAAA,QACZ,MAAM,MAAM,aAAa,SAAS,GAAG,OAAO,MAAM;AAAA,QAClD,OAAO,QAAQ,QAAQ,YAAY,CAAC;AAAA,QAEpC;AAAA,MACF;AAAA,MAKA,IAAI,cAAc;AAAA,QAAW,YAAY,cAAc,aAAa;AAAA,MACpE,MAAM;AAAA;AAAA;AAAA,EAIV,OAAO;AAAA,OACF;AAAA,IACH,QAAQ,CAAC,WAAmC;AAAA,MAG1C,MAAM,UAAU,YAAY,YAAY;AAAA,MACxC,IAAI,SAAS;AAAA,QACX,OAAQ,gBAAgB,GAAG;AAAA,UACzB,MAAM;AAAA,UACL;AAAA,MACL;AAAA,MAEA,OAAO,QAAQ,QAAQ,CAAC;AAAA;AAAA,EAE5B;AAAA;;;AC3SK,IAAM,uBAAuB,CAClC,UACA,iBACqB;AAAA,EACrB,MAAM,YAAY,eAAe,UAAU,YAAY;AAAA,EAEvD,OAAO;AAAA,OACF;AAAA,IACH,QAAQ,CAAC,WAAmC;AAAA,MAC1C,IAAI,CAAC,OAAO,WAAW,CAAC,OAAO,QAAQ;AAAA,QACrC,OAAO,UAAU,OAAO,MAAM;AAAA,MAChC;AAAA,MACA,OAAO,UAAU,UAAU,OAAO,MAAM,GAAG,QAAQ,YAAY;AAAA;AAAA,EAEnE;AAAA;AAGF,gBAAgB,SAAS,CACvB,QACA,QACA,cACwB;AAAA,EACxB,MAAM,YAAY,KAAK,IAAI;AAAA,EAC3B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,iBAAiB,SAAS,QAAQ;AAAA,MAChC,KACG,MAAM,SAAS,UACb,MAAM,SAAS,kBAAkB,MAAM,UAC1C,MAAM,OACN;AAAA,QACA,YAAY,MAAM;AAAA,MACpB;AAAA,MACA,MAAM;AAAA,IACR;AAAA,YACA;AAAA,IACA,IAAI,aAAa,OAAO,SAAS;AAAA,MAC/B,IAAI;AAAA,QACF,OAAO,QAAQ;AAAA,aACV;AAAA,UACH,OAAO,OAAO;AAAA,UACd,UAAU;AAAA,QACZ,CAAC;AAAA,QACD,MAAM;AAAA,IAGV;AAAA,IACA,IAAI,OAAO,QAAQ;AAAA,MACjB,IAAI;AAAA,QACF,OAAO,OAAO;AAAA,UACZ,YAAY,KAAK,IAAI,IAAI;AAAA,UACzB,OAAO,OAAO;AAAA,UACd,UAAU;AAAA,UACV,OAAO;AAAA,QACT,CAAC;AAAA,QACD,MAAM;AAAA,IAGV;AAAA;AAAA;;;AChDJ,IAAM,UAAU,CACd,MACA,SACA,aACA,YACoB,EAAE,MAAM,SAAS,aAAa,OAAO;AAC3D,IAAM,SAAS,QACb,UACA,CAAC,OAAO,UAAU,QAAQ,SAAS,KAAK,GACxC,4FACA,8DACF;AACA,IAAM,WAAW;AAAA,KACZ;AAAA,EACH,SAAS,CAAC,OAAO,UAAU,QAAQ,KAAK;AAC1C;AACA,IAAM,SAAS,KAAK,QAAQ,SAAS,CAAC,OAAO,UAAU,MAAM,EAAW;AACxE,IAAM,QAAQ,QACZ,UACA,CAAC,QAAQ,OAAO,UAAU,MAAM,GAChC,2FACA,yEACF;AACA,IAAM,MAAM,QACV,UACA,CAAC,QAAQ,OAAO,UAAU,QAAQ,SAAS,KAAK,GAChD,OAAO,aACP,2DACF;AACA,IAAM,SAAS,QACb,UACA,CAAC,OAAO,UAAU,MAAM,GACxB,OAAO,aACP,8CACF;AACA,IAAM,WAAW,QACf,UACA,CAAC,QAAQ,OAAO,QAAQ,KAAK,GAC7B,OAAO,aACP,qDACF;AACA,IAAM,UAAU,QACd,UACA,CAAC,QAAQ,MAAM,GACf,6FACA,wDACF;AACA,IAAM,OAAO,QACX,UACA,CAAC,QAAQ,OAAO,UAAU,MAAM,GAChC,MAAM,aACN,uDACF;AAGO,IAAM,kBAA4D;AAAA,EACvE,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAC7B,4BAA4B;AAAA,EAC5B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,+BAA+B;AAAA,EAC/B,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,+BAA+B;AAAA,EAC/B,sBAAsB;AAAA,OACjB;AAAA,IACH,SAAS,CAAC,OAAO,UAAU,QAAQ,SAAS,KAAK;AAAA,IACjD,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,iCAAiC;AAAA,EACjC,2BAA2B,QACzB,UACA,CAAC,QAAQ,OAAO,UAAU,MAAM,GAChC,gEACA,OAAO,MACT;AAAA,EACA,gBAAgB,QACd,UACA,CAAC,OAAO,UAAU,QAAQ,OAAO,GACjC,0DACA,gEACF;AAAA,EACA,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,8BAA8B;AAAA,EAC9B,gCAAgC;AAAA,EAChC,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,oBAAoB,QAClB,UACA,CAAC,OAAO,QAAQ,KAAK,GACrB,0DACA,wDACF;AAAA,EACA,2BAA2B,QACzB,SACA,CAAC,GACD,uFACA,8CACF;AACF;AACO,IAAM,oBAAoB,CAC/B,UACA,UAC+B,gBAAgB,GAAG,YAAY;;;AClIhE,IAAM,eAAkC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAMA,IAAM,0BAAoC,CAAC;AAE3C,IAAM,4BAA4B;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,wBAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,mBAAmB,CAAC,0BAA0B,UAAU;AAE9D,IAAM,wBAAwB,CAAC,OAAO;AAEtC,IAAM,UAAU,CAAC,OAAe,aAC9B,SAAS,KAAK,CAAC,YAAY,QAAQ,KAAK,KAAK,CAAC;AAIzC,IAAM,yBAAyB,CACpC,UAC2B;AAAA,EAC3B,IAAI,QAAQ,OAAO,gBAAgB;AAAA,IAAG,OAAO;AAAA,EAC7C,IAAI,QAAQ,OAAO,uBAAuB;AAAA,IAAG,OAAO;AAAA,EACpD,IAAI,QAAQ,OAAO,yBAAyB;AAAA,IAAG,OAAO;AAAA,EAEtD,OAAO;AAAA;AAIF,IAAM,4BAA4B,CAAC,UACxC,CAAC,QAAQ,OAAO,qBAAqB;AAEhC,IAAM,yBAAyB,CAAC,UACrC,QAAQ,OAAO,gBAAgB;AAIjC,IAAM,gBAAiD;AAAA,EACrD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,SAAS;AACX;AAIA,IAAM,iBAAiB,CAAC,WAAoC;AAAA,EAC1D,IAAI,UAAU;AAAA,IAAM,OAAO;AAAA,EAC3B,IAAI,UAAU;AAAA,IAAM,OAAO;AAAA,EAC3B,IAAI,UAAU;AAAA,IAAO,OAAO;AAAA,EAE5B,OAAO;AAAA;AAIF,IAAM,gBAAgB,CAC3B,cAC2B;AAAA,EAC3B,IAAI,UAAU;AAAA,IAAQ,OAAO,UAAU;AAAA,EACvC,IAAI,OAAO,UAAU,iBAAiB,UAAU;AAAA,IAC9C,OAAO,eAAe,UAAU,YAAY;AAAA,EAC9C;AAAA,EAEA,OAAO;AAAA;AAIF,IAAM,sBAAsB,CACjC,cACkB;AAAA,EAClB,IAAI,OAAO,UAAU,iBAAiB;AAAA,IAAU,OAAO,UAAU;AAAA,EACjE,IAAI,UAAU;AAAA,IAAQ,OAAO,cAAc,UAAU;AAAA,EAErD,OAAO;AAAA;AAGT,IAAM,cAAc,CAClB,QACA,YACoB;AAAA,EACpB,IAAI,QAAQ,SAAS,MAAM;AAAA,IAAG,OAAO;AAAA,EAErC,MAAM,MAAM,aAAa,QAAQ,MAAM;AAAA,EACvC,SAAS,QAAQ,MAAM,EAAG,SAAS,GAAG,SAAS,GAAG;AAAA,IAChD,MAAM,YAAY,aAAa;AAAA,IAC/B,IAAI,aAAa,QAAQ,SAAS,SAAS;AAAA,MAAG,OAAO;AAAA,EACvD;AAAA,EAEA,OAAO,QAAQ,MAAM;AAAA;AAIhB,IAAM,uBAAuB,CAClC,OACA,cACG;AAAA,EACH,MAAM,SAAS,cAAc,SAAS;AAAA,EACtC,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,MAAM,QAAQ,kBAAkB,aAAa,KAAK;AAAA,EAClD,IAAI,OAAO,SAAS;AAAA,IAAU,OAAO,YAAY,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC;AAAA,EAC3E,MAAM,UAA6B,QAAQ,OAAO,oBAAoB,IAClE,CAAC,OAAO,UAAU,QAAQ,KAAK,IAC/B,CAAC,OAAO,UAAU,MAAM;AAAA,EAE5B,OAAO,YAAY,QAAQ,OAAO;AAAA;AAI7B,IAAM,oBAAoB,CAC/B,OACA,cACG;AAAA,EACH,IAAI,CAAC,uBAAuB,KAAK;AAAA,IAAG,OAAO;AAAA,EAC3C,MAAM,SAAS,cAAc,SAAS;AAAA,EACtC,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,MAAM,QAAQ,kBAAkB,UAAU,KAAK;AAAA,EAC/C,IAAI;AAAA,IAAO,OAAO,YAAY,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC;AAAA,EACxD,MAAM,UAA6B,QAAQ,OAAO,qBAAqB,IACnE,CAAC,WAAW,OAAO,UAAU,MAAM,IACnC,CAAC,OAAO,UAAU,MAAM;AAAA,EAE5B,MAAM,YAAY,WAAW,QAAQ,SAAS;AAAA,EAE9C,OAAO,YAAY,WAAW,OAAO;AAAA;AAIhC,IAAM,0BAA0B,CACrC,UACA,OACA,cAC4B;AAAA,EAC5B,IAAI,CAAC;AAAA,IAAW,OAAO,CAAC;AAAA,EACxB,MAAM,QAAQ,kBAAkB,UAAU,KAAK;AAAA,EAC/C,MAAM,SAAS,cAAc,SAAS;AAAA,EACtC,IAAI,CAAC,SAAS,CAAC;AAAA,IAAQ,OAAO,CAAC;AAAA,EAC/B,IAAI,CAAC,MAAM,QAAQ,SAAS,MAAM;AAAA,IAChC,MAAM,IAAI,MACR,gCAAgC,cAAc,YAAY,OAC5D;AAAA,EACF,IAAI,aAAa;AAAA,IACf,OAAO,WAAW,SACd,EAAE,iBAAiB,MAAM,IACzB;AAAA,MACE,iBAAiB;AAAA,MACjB,iBAAiB,oBAAoB,SAAS;AAAA,IAChD;AAAA,EACN,IAAI,aAAa;AAAA,IACf,OAAO,WAAW,SACd,EAAE,UAAU,EAAE,MAAM,WAAW,EAAE,IACjC,EAAE,UAAU,EAAE,MAAM,UAAU,GAAG,kBAAkB,OAAO;AAAA,EAChE,OAAO,EAAE,kBAAkB,OAAO;AAAA;AAE7B,IAAM,uBAAuB,CAClC,OACA,cACwC;AAAA,EACxC,IAAI,CAAC;AAAA,IAAW;AAAA,EAChB,MAAM,UAAU,kBAAkB,UAAU,KAAK;AAAA,EACjD,MAAM,SAAS,cAAc,SAAS;AAAA,EACtC,IAAI,CAAC,WAAW,CAAC;AAAA,IAAQ;AAAA,EACzB,IAAI,CAAC,QAAQ,QAAQ,SAAS,MAAM;AAAA,IAClC,MAAM,IAAI,MAAM,gCAAgC,cAAc,OAAO;AAAA,EACvE,IAAI,QAAQ,SAAS;AAAA,IAAU,OAAO,EAAE,eAAe,OAAO;AAAA,EAC9D,MAAM,UAAoD;AAAA,IACxD,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,EACR;AAAA,EACA,OAAO,EAAE,gBAAgB,UAAU,gBAAgB,QAAQ,QAAQ;AAAA;;;AC1MrE,IAAM,YAAY,CAAC,QACjB,IAAI,WAAW,UAAU,IAAI,EAAE,UAAU,QAAQ,IAAI,CAAC;AAqCxD,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAE3B,IAAM,YAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU;AAEzC,IAAM,gBAAgB,CACpB,UAEA,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAK,UAAS,MAAM,EAAE;AAI/D,IAAM,4BAA4B,CAAC,UAAkC;AAAA,EACnE,IAAI,MAAM,SAAS,QAAQ;AAAA,IACzB,OAAO,EAAE,MAAM,MAAM,SAAS,MAAM,aAAa;AAAA,EACnD;AAAA,EAIA,IAAI,MAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,WACE,MAAM,OAAO,SAAS,QAClB,MAAM,OAAO,MACb,QAAQ,MAAM,OAAO,qBAAqB,MAAM,OAAO;AAAA,MAC7D,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,YAAY;AAAA,IAC7B,OAAO,MAAM,OAAO,SAAS,QACzB,EAAE,UAAU,MAAM,OAAO,KAAK,MAAM,aAAa,IACjD;AAAA,MACE,WAAW,QAAQ,MAAM,OAAO,qBAAqB,MAAM,OAAO;AAAA,MAClE,UAAU,MAAM,QAAQ;AAAA,MACxB,MAAM;AAAA,IACR;AAAA,EACN;AAAA,EAEA,IAAI,MAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AAAA,MACL,aAAa,EAAE,MAAM,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,OAAO;AAAA,MACpE,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,WACE,MAAM,OAAO,SAAS,QAClB,MAAM,OAAO,MACb,QAAQ,MAAM,OAAO,qBAAqB,MAAM,OAAO;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,8BAA8B,CAClC,YACG;AAAA,EACH,IAAI,OAAO,YAAY,UAAU;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAQ,QACX,IAAI,yBAAyB,EAC7B,OAAO,CAAC,WAAW,WAAW,IAAI;AAAA,EAErC,OAAO,MAAM,SAAS,IAAI,QAAQ;AAAA;AAGpC,IAAM,gBAAgB,CAAC,YACrB,QAAQ,KACN,CAAC,UAAU,MAAM,SAAS,cAAc,MAAM,SAAS,aACzD;AAEF,IAAM,mBAAmB,CAAC,UAAkC;AAAA,EAC1D,IAAI,MAAM,SAAS,mBAAmB,MAAM,aAAa,cAAc;AAAA,IACrE,OAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AAAA,EAEA,IAAI,MAAM,SAAS,YAAY;AAAA,IAI7B,IAAI,MAAM;AAAA,MACR,OAAO,OAAO,YACZ,OAAO,QAAQ,MAAM,YAAY,EAAE,OAAO,EAAE,SAAS,QAAQ,IAAI,CACnE;AAAA,IACF,OAAO;AAAA,MACL,WACE,OAAO,MAAM,UAAU,WACnB,MAAM,QACN,KAAK,UAAU,MAAM,KAAK;AAAA,MAChC,SAAS,MAAM;AAAA,MACf,MAAM,MAAM;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,eAAe;AAAA,IAChC,OAAO;AAAA,MACL,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM,QAAQ,SAClB;AAAA,QACE,EAAE,MAAM,MAAM,SAAS,MAAM,aAAa;AAAA,QAC1C,GAAG,MAAM,OAAO,IAAI,CAAC,WACnB,0BAA0B,EAAE,QAAQ,MAAM,QAAQ,CAAC,CACrD;AAAA,MACF,IACA,MAAM;AAAA,MACV,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,oBAAoB,CAAC,YACzB,QAAQ,IAAI,gBAAgB,EAAE,OAAO,CAAC,cAAc,cAAc,IAAI;AAExE,IAAM,iBAAiB,CAAC,QAA2B;AAAA,EACjD,IACE,OAAO,IAAI,YAAY,YACvB,MAAM,QAAQ,IAAI,OAAO,KACzB,cAAc,IAAI,OAAO,GACzB;AAAA,IACA,OAAO,kBAAkB,IAAI,OAAO;AAAA,EACtC;AAAA,EAEA,MAAM,UAAU,4BAA4B,IAAI,OAAO;AAAA,EAEvD,OAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA,MAAM,IAAI,SAAS,WAAW,cAAc,IAAI;AAAA,MAChD,MAAM;AAAA,IACR;AAAA,EACF;AAAA;AAGF,IAAM,aAAa,CAAC,aAAkC;AAAA,EACpD,MAAM,QAAwC,CAAC;AAAA,EAE/C,WAAW,OAAO,UAAU;AAAA,IAC1B,MAAM,KAAK,GAAG,eAAe,GAAG,CAAC;AAAA,EACnC;AAAA,EAEA,OAAO;AAAA;AAKT,IAAM,qBAAqB,CAAC,WAA6B;AAAA,EACvD,IAAI,MAAM,QAAQ,MAAM;AAAA,IAAG,OAAO,OAAO,MAAM,kBAAkB;AAAA,EACjE,IAAI,CAAC,UAAS,MAAM;AAAA,IAAG,OAAO;AAAA,EAC9B,QAAQ,eAAe;AAAA,EACvB,IAAI,UAAS,UAAU,GAAG;AAAA,IACxB,MAAM,WAAW,MAAM,QAAQ,OAAO,QAAQ,IAAI,OAAO,WAAW,CAAC;AAAA,IACrE,IAAI,OAAO,yBAAyB;AAAA,MAAO,OAAO;AAAA,IAClD,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,MAAM,CAAC,QAAQ,SAAS,SAAS,GAAG,CAAC;AAAA,MAChE,OAAO;AAAA,EACX;AAAA,EACA,MAAM,SAAS,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,EAC1C,WAAW,OAAO,CAAC,YAAY,OAAO,OAAO,OAAO,WAAW;AAAA,IAC7D,IAAI,UAAS,GAAG;AAAA,MAAG,OAAO,KAAK,GAAG,OAAO,OAAO,GAAG,CAAC;AAAA,EAEtD,OAAO,OAAO,MAAM,kBAAkB;AAAA;AAMxC,IAAM,oBAAoB,CAAC,UAAoC;AAAA,EAC7D,aAAa,KAAK;AAAA,EAClB,MAAM,KAAK;AAAA,EACX,YAAY,KAAK;AAAA,EACjB,QAAQ,mBAAmB,KAAK,YAAY;AAAA,EAC5C,MAAM;AACR;AAEA,IAAM,aAAa,CACjB,OACA,iBACG;AAAA,EACH,MAAM,SAAS,QAAQ,MAAM,IAAI,iBAAiB,IAAI,CAAC;AAAA,EACvD,MAAM,SAAyC,CAAC,GAAG,MAAM;AAAA,EAEzD,IAAI,cAAc;AAAA,IAChB,OAAO,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,OAAO,SAAS,IAAI,SAAS;AAAA;AAG/B,IAAM,4BAA4B,CACvC,QACA,cACA,kBAAkB,OAAO,UACtB;AAAA,EACH,MAAM,OAAgC;AAAA,IACpC,OAAO,WAAW,OAAO,QAAQ;AAAA,IACjC,OAAO,OAAO;AAAA,IACd,QAAQ;AAAA,EACV;AAAA,EAEA,IAAI,OAAO,cAAc;AAAA,IACvB,KAAK,eAAe,OAAO;AAAA,EAC7B;AAAA,EAEA,MAAM,QAAQ,WAAW,OAAO,OAAO,YAAY;AAAA,EAEnD,IAAI,OAAO;AAAA,IACT,KAAK,QAAQ;AAAA,IACb,IACE,OAAO,eAAe,UACtB,OAAO,eAAe,UACtB,OAAO,eAAe,YACtB;AAAA,MACA,KAAK,cAAc,OAAO;AAAA,IAC5B,EAAO,SAAI,OAAO,cAAc,OAAO,OAAO,eAAe,UAAU;AAAA,MACrE,KAAK,cAAc;AAAA,QACjB,MAAM,OAAO,WAAW;AAAA,QACxB,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,IAAI,OAAO,OAAO,sBAAsB,WAAW;AAAA,MACjD,KAAK,sBAAsB,OAAO;AAAA,IACpC;AAAA,EACF;AAAA,EAGA,MAAM,UAAU,CAAC,uBAAuB,eAAe;AAAA,EACvD,IAAI,WAAW,OAAO,OAAO,gBAAgB;AAAA,IAC3C,KAAK,cAAc,OAAO;AAAA,EAC5B,IAAI,WAAW,OAAO,OAAO,SAAS;AAAA,IAAU,KAAK,QAAQ,OAAO;AAAA,EACpE,IAAI,OAAO,OAAO,cAAc;AAAA,IAC9B,KAAK,oBAAoB,OAAO;AAAA,EAClC,IAAI,OAAO,iBAAiB,OAAO,cAAc,SAAS;AAAA,IACxD,KAAK,OAAO,OAAO;AAAA,EACrB,IAAI,OAAO,OAAO,SAAS;AAAA,IAAU,KAAK,OAAO,OAAO;AAAA,EACxD,IAAI,OAAO,OAAO,qBAAqB;AAAA,IACrC,KAAK,oBAAoB,OAAO;AAAA,EAClC,IAAI,OAAO,OAAO,oBAAoB;AAAA,IACpC,KAAK,mBAAmB,OAAO;AAAA,EAEjC,IAAI,OAAO,gBAAgB;AAAA,IACzB,IACE,OAAO,eAAe,SAAS,UAC/B,OAAO,eAAe,SAAS,eAC/B;AAAA,MACA,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,eAAe,KAAK,EAAE;AAAA,IAC7D,EAAO,SAAI,OAAO,eAAe,SAAS,eAAe;AAAA,MACvD,KAAK,OAAO;AAAA,QACV,QAAQ;AAAA,UACN,MAAM,OAAO,eAAe;AAAA,UAC5B,QAAQ,OAAO,eAAe;AAAA,UAC9B,QAAQ,OAAO,eAAe,UAAU;AAAA,UACxC,MAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAIA,IAAI,OAAO,aAAa,uBAAuB,eAAe,GAAG;AAAA,IAC/D,MAAM,SAAS,kBAAkB,iBAAiB,OAAO,SAAS;AAAA,IAClE,IAAI,QAAQ;AAAA,MACV,KAAK,YAAY;AAAA,QACf;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAKT,IAAM,YAAY,CAAC,SAAiB;AAAA,EAClC,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,IAAI;AAAA,IACtB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,IAAM,iBAAiB,CAAC,iBAAyB;AAAA,EAC/C,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,YAAY;AAAA,IAC9B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,IAAM,eAAe,CAAC,aAAsC;AAAA,EAC1D,IAAI,CAAC,UAAS,SAAS,KAAK,GAAG;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,QAAQ,UAAU;AAAA,EAClB,MAAM,QAAQ,OAAO,MAAM,iBAAiB,WAAW,MAAM,eAAe;AAAA,EAE5E,MAAM,SACJ,UAAS,MAAM,oBAAoB,KACnC,OAAO,MAAM,qBAAqB,kBAAkB,WAChD,MAAM,qBAAqB,gBAC3B;AAAA,EAEN,MAAM,gBAAgB,UAAS,MAAM,qBAAqB,IACtD,MAAM,wBACN;AAAA,EACJ,MAAM,eAAe,UAAS,MAAM,oBAAoB,IACpD,MAAM,uBACN;AAAA,EACJ,MAAM,cAAc,UAAS,MAAM,YAAY,IAC3C,MAAM,eACN;AAAA,EACJ,MAAM,UACJ,gBAAgB,OAAO,aAAa,uBAAuB,WACvD,aAAa,qBACb;AAAA,EACN,MAAM,aAAsB;AAAA,IAC1B,sBAAsB;AAAA,IACtB,uBAAuB,WAAW;AAAA,IAClC,aAAa,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAAA,IAC3D,aAAa,KAAK,IAAI,GAAG,QAAQ,SAAS,OAAO;AAAA,IACjD,cACE,OAAO,MAAM,kBAAkB,WAAW,MAAM,gBAAgB;AAAA,IAClE,iBACE,iBAAiB,OAAO,cAAc,qBAAqB,WACvD,cAAc,mBACd;AAAA,IACN,8BACE,eAAe,OAAO,YAAY,4BAA4B,WAC1D,YAAY,0BACZ;AAAA,EACR;AAAA,EACA,IAAI,UAAS,MAAM,eAAe,GAAG;AAAA,IACnC,WAAW,gBAAgB,OAAO,YAChC,OAAO,QAAQ,MAAM,eAAe,EAAE,OACpC,CAAC,UAAqC,OAAO,MAAM,OAAO,QAC5D,CACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,0BAA0B,CAC9B,aACmC;AAAA,EACnC,MAAM,mBAAmB,UAAS,SAAS,mBAAmB,IAC1D,SAAS,sBACT;AAAA,EACJ,MAAM,eACJ,OAAO,SAAS,OAAO,WAAW,SAAS,KAAK;AAAA,EAClD,MAAM,QAAQ,OAAO,SAAS,UAAU,WAAW,SAAS,QAAQ;AAAA,EACpE,MAAM,WACJ,OAAO,SAAS,aAAa,WAAW,SAAS,WAAW;AAAA,EAC9D,MAAM,cACJ,OAAO,SAAS,iBAAiB,WAC7B,SAAS,eACT;AAAA,EACN,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC;AAAA,IAChE;AAAA,EACF,OAAO,EAAE,cAAc,OAAO,UAAU,kBAAkB,YAAY;AAAA;AAGxE,IAAM,oBAAoB,CAAC,aAAsB;AAAA,EAC/C,IAAI,OAAO,aAAa,UAAU;AAAA,IAChC,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,SAAS,SAAS,MAAM;AAAA,IAAG,OAAO;AAAA,EACtC,IAAI,SAAS,SAAS,MAAM;AAAA,IAAG,OAAO;AAAA,EAEtC,OAAO;AAAA;AAGT,IAAM,mBAAmB,UAAU,CAAC,QAAiC;AAAA,EACnE,IAAI,OAAO,OAAO,UAAU,UAAU;AAAA,IACpC,MAAM,EAAE,SAAS,OAAO,OAAO,MAAM,OAAgB;AAAA,EACvD;AAAA;AAGF,IAAM,sBAAsB,UAAU,CAAC,QAAiC;AAAA,EACtE,MAAM,SACJ,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU;AAAA,EACxD,MAAM,MACJ,OAAO,OAAO,sBAAsB,WAChC,OAAO,oBACP;AAAA,EAEN,IAAI,KAAK;AAAA,IACP,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,MAAM;AAAA,IACR;AAAA,EACF;AAAA;AAGF,IAAM,oCAAoC,CACxC,QACA,iBACG;AAAA,EACH,MAAM,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU;AAAA,EACrE,MAAM,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU;AAAA,EACrE,MAAM,QACJ,OAAO,OAAO,oBAAoB,WAAW,OAAO,kBAAkB;AAAA,EAExE,MAAM,WAAW,aAAa,IAAI,MAAM;AAAA,EAExC,IAAI,UAAU;AAAA,IACZ,SAAS,aAAa;AAAA,EACxB,EAAO;AAAA,IACL,aAAa,IAAI,QAAQ;AAAA,MACvB,WAAW;AAAA,MACX;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA;AAAA;AAIL,IAAM,mCAAmC,UAAU,CACjD,QACA,cACA;AAAA,EACA,MAAM,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU;AAAA,EACrE,MAAM,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU;AAAA,EACrE,MAAM,WAAW,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;AAAA,EAE3E,MAAM,UAAU,aAAa,IAAI,MAAM;AAAA,EACvC,MAAM,OAAO,SAAS,QAAQ;AAAA,EAC9B,MAAM,OAAO,YAAY,SAAS,aAAa;AAAA,EAE/C,aAAa,OAAO,MAAM;AAAA,EAE1B,MAAM;AAAA,IACJ,IAAI,UAAU,SAAS,UAAU;AAAA,IACjC,OAAO,eAAe,IAAI;AAAA,IAC1B;AAAA,IACA,cAAc,SAAS,eACnB,KAAK,QAAQ,cAAc,WAAW,KAAK,IAC3C;AAAA,IACJ,MAAM;AAAA,EACR;AAAA;AAGF,IAAM,yBAAyB,CAC7B,QACA,iBACG;AAAA,EACH,IAAI,CAAC,UAAS,OAAO,IAAI,GAAG;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,QAAQ,SAAS;AAAA,EACjB,MAAM,SAAS,OAAO,KAAK,OAAO,WAAW,KAAK,KAAK;AAAA,EACvD,MAAM,WAAW,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;AAAA,EAE7D,IAAI,aAAa,iBAAiB;AAAA,IAChC;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,OAAO,KAAK,YAAY,WAAW,KAAK,UAAU;AAAA,EACjE,MAAM,OAAO,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;AAAA,EAEzD,aAAa,IAAI,QAAQ;AAAA,IACvB,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,cAAc,KAAK,KAAK;AAAA,EAC1B,CAAC;AAAA;AAGH,IAAM,wBAAwB,UAAU,CAAC,QAAiC;AAAA,EACxE,IAAI,CAAC,UAAS,OAAO,IAAI,KAAK,OAAO,OAAO,KAAK,SAAS;AAAA,IAAU;AAAA,EACpE,IAAI,CAAC,OAAO,KAAK,KAAK,WAAW,aAAa;AAAA,IAAG;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM,KAAK,OAAO,KAAK;AAAA,IACvB,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AAAA;AAGF,IAAM,6BAA6B,CAAC,SAClC,KAAK,SAAS,2BACd,KAAK,WAAW,eAChB,OAAO,KAAK,WAAW,YACvB,KAAK,WAAW;AAElB,IAAM,kBAAkB,CAAC,UAAmC;AAAA,EAC1D,MAAM,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,EACtD,QAAQ,kBAAkB,KAAK,aAAa;AAAA,EAC5C,SAAS,OAAO,KAAK,OAAO,WAAW,KAAK,KAAK;AAAA,EACjD,WAAW;AAAA,EACX,eACE,OAAO,KAAK,mBAAmB,WAAW,KAAK,iBAAiB;AAAA,EAClE,MAAM;AACR;AAEA,IAAM,yBAAyB,UAAU,CACvC,QACA;AAAA,EACA,MAAM,kBAAkB,OAAO,OAAO,0BAA0B;AAAA,EAEhE,WAAW,QAAQ,iBAAiB;AAAA,IAClC,MAAM,gBAAgB,IAAI;AAAA,EAC5B;AAAA;AAGF,IAAM,6BAA6B,UAAU,CAC3C,QACA;AAAA,EACA,WAAW,QAAQ,QAAQ;AAAA,IACzB,IAAI,CAAC,cAAc,KAAK,OAAO;AAAA,MAAG;AAAA,IAClC,WAAW,WAAW,KAAK,SAAS;AAAA,MAClC,IAAI,CAAC,MAAM,QAAQ,QAAQ,WAAW;AAAA,QAAG;AAAA,MACzC,WAAW,cAAc,QAAQ,aAAa;AAAA,QAC5C,IAAI,CAAC,UAAS,UAAU,KAAK,WAAW,SAAS;AAAA,UAC/C;AAAA,QACF,IAAI,OAAO,WAAW,QAAQ;AAAA,UAAU;AAAA,QACxC,MAAM;AAAA,UACJ,SACE,OAAO,WAAW,YAAY,WAC1B,WAAW,UACX;AAAA,UACN,UACE,OAAO,WAAW,cAAc,WAC5B,WAAW,YACX;AAAA,UACN,YACE,OAAO,WAAW,gBAAgB,WAC9B,WAAW,cACX;AAAA,UACN,OACE,OAAO,WAAW,UAAU,WAAW,WAAW,QAAQ;AAAA,UAC5D,MAAM;AAAA,UACN,KAAK,WAAW;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAGF,IAAM,mBAAmB,UAAU,CAAC,QAAiC;AAAA,EACnE,IAAI,CAAC,UAAS,OAAO,QAAQ,GAAG;AAAA,IAC9B,MAAM,EAAE,MAAM,QAAiB,OAAO,UAAU;AAAA,IAEhD;AAAA,EACF;AAAA,EAEA,QAAQ,aAAa;AAAA,EACrB,MAAM,QAAQ,aAAa,QAAQ;AAAA,EACnC,MAAM,WAAW,wBAAwB,QAAQ;AAAA,EAEjD,IAAI;AAAA,IACF,MAAM,EAAE,MAAM,gBAAyB,OAAO,UAAU,OAAO,KAAK;AAAA,EAEtE,IAAI,cAAc,SAAS,MAAM,GAAG;AAAA,IAClC,OAAO,2BAA2B,SAAS,MAAM;AAAA,IACjD,OAAO,uBAAuB,SAAS,MAAM;AAAA,EAC/C;AAAA,EAEA,MAAM,EAAE,UAAU,MAAM,QAAiB,MAAM;AAAA;AAGjD,IAAM,kBAAkB,CACtB,WACA,QACA,iBACG;AAAA,EACH,MAAM,WAAW,UAAS,OAAO,QAAQ,IAAI,OAAO,WAAW;AAAA,EAC/D,MAAM,QAAQ,UAAS,SAAS,KAAK,IAAI,SAAS,QAAQ;AAAA,EAC1D,MAAM,OACJ,OAAO,SAAS,eAAe,WAC3B,SAAS,aACT,SAAS,OAAO,MAAM,SAAS,WAC7B,MAAM,OACN;AAAA,EACR,OAAO,IAAI,cAAc;AAAA,IACvB,SACE,SAAS,OAAO,MAAM,YAAY,WAC9B,MAAM,UACN,6BAA6B;AAAA,IACnC,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WACE,SAAS,yBACT,SAAS,yBACT,SAAS,0BACT,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AAAA;AAGH,IAAM,kBAAkB,UAAU,CAChC,WACA,QACA,cACA,cACA;AAAA,EACA,QAAQ;AAAA,SACD,yCAAyC;AAAA,MAC5C,MAAM,QAAQ,OAAO,OAAO,UAAU,WAAW,OAAO,QAAQ;AAAA,MAChE,IAAI,CAAC;AAAA,QAAO;AAAA,MAEZ,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MAEA;AAAA,IACF;AAAA,SAEK;AAAA,MACH,OAAO,iBAAiB,MAAM;AAAA,MAC9B;AAAA,SAEG;AAAA,MACH,OAAO,oBAAoB,MAAM;AAAA,MACjC;AAAA,SAEG;AAAA,MACH,uBAAuB,QAAQ,YAAY;AAAA,MAC3C,IACE,UAAS,OAAO,IAAI,KACpB,OAAO,KAAK,SAAS,mBACrB,OAAO,OAAO,KAAK,SAAS,UAC5B;AAAA,QACA,MAAM,KACJ,OAAO,OAAO,KAAK,YAAY,WAC3B,OAAO,KAAK,UACZ,OAAO,KAAK;AAAA,QAClB,IAAI,OAAO,OAAO;AAAA,UAChB,MAAM;AAAA,YACJ,MAAM;AAAA,YACN;AAAA,YACA,MAAM,OAAO,KAAK;AAAA,UACpB;AAAA,MACJ;AAAA,MACA;AAAA,SAEG;AAAA,MACH,OAAO,sBAAsB,MAAM;AAAA,MACnC;AAAA,SAEG;AAAA,MACH,kCAAkC,QAAQ,YAAY;AAAA,MACtD;AAAA,SAEG;AAAA,MACH,OAAO,iCAAiC,QAAQ,YAAY;AAAA,MAC5D;AAAA,SAEG;AAAA,MACH,OAAO,iBAAiB,MAAM;AAAA,MAC9B;AAAA,SAEG;AAAA,SACA;AAAA,SACA;AAAA,SACA,SAAS;AAAA,MACZ,IAAI,UAAS,OAAO,QAAQ,GAAG;AAAA,QAC7B,MAAM,QAAQ,aAAa,OAAO,QAAQ;AAAA,QAC1C,IAAI;AAAA,UACF,MAAM;AAAA,YACJ,MAAM;AAAA,YACN;AAAA,YACA,UAAU,wBAAwB,OAAO,QAAQ;AAAA,YACjD,OAAO;AAAA,UACT;AAAA,MACJ;AAAA,MACA,MAAM,gBAAgB,WAAW,QAAQ,YAAY;AAAA,IACvD;AAAA;AAAA;AAIJ,IAAM,iBAAiB,UAAU,CAAC,OAAoB;AAAA,EACpD,IAAI,CAAC,MAAM,gBAAgB,CAAC,MAAM,QAAQ;AAAA,IACxC;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,UAAU,MAAM,MAAM;AAAA,EAErC,IAAI,QAAQ;AAAA,IACV,OAAO,gBACL,MAAM,cACN,QACA,MAAM,cACN,MAAM,YACR;AAAA,EACF;AAAA,EAEA,MAAM,eAAe;AAAA,EACrB,MAAM,SAAS;AAAA;AAGjB,IAAM,eAAe,CAAC,SAAiB,UAAuB;AAAA,EAC5D,IAAI,QAAQ,WAAW,SAAS,GAAG;AAAA,IACjC,MAAM,eAAe,QAAQ,MAAM,mBAAmB;AAAA,EACxD,EAAO,SAAI,QAAQ,WAAW,QAAQ,GAAG;AAAA,IACvC,MAAM,SAAS,QAAQ,MAAM,kBAAkB;AAAA,EACjD;AAAA;AAGF,IAAM,iBAAiB,UAAU,CAAC,MAAc,OAAoB;AAAA,EAClE,MAAM,UAAU,KAAK,KAAK;AAAA,EAE1B,IAAI,SAAS;AAAA,IACX,aAAa,SAAS,KAAK;AAAA,IAE3B;AAAA,EACF;AAAA,EAEA,OAAO,eAAe,KAAK;AAAA;AAG7B,IAAM,kBAAkB,UAAU,CAAC,OAAiB,OAAoB;AAAA,EACtE,WAAW,QAAQ,OAAO;AAAA,IACxB,OAAO,eAAe,MAAM,KAAK;AAAA,EACnC;AAAA;AAGF,IAAM,cAAc,gBAAgB,CAClC,QACA,SACA,OACA,QACA;AAAA,EACA,IAAI,aAAa;AAAA,EAEjB,SACM,SAAS,MAAM,OAAO,KAAK,EAC/B,CAAC,OAAO,QAAQ,CAAC,QAAQ,SAEzB,SAAS,MAAM,OAAO,KAAK,GAC3B;AAAA,IACA,cAAc,QAAQ,OAAO,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,IAC3D,MAAM,QAAQ,WAAW,MAAM;AAAA,CAAI;AAAA,IACnC,aAAa,MAAM,IAAI,KAAK;AAAA,IAE5B,OAAO,gBAAgB,OAAO,KAAK;AAAA,EACrC;AAAA,EAEA,IAAI,WAAW,KAAK,GAAG;AAAA,IACrB,OAAO,gBAAgB,CAAC,YAAY,EAAE,GAAG,KAAK;AAAA,EAChD;AAAA;AAGF,IAAM,iBAAiB,gBAAgB,CACrC,MACA,cACA,QACA;AAAA,EACA,MAAM,SAAS,KAAK,UAAU;AAAA,EAC9B,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,QAAqB;AAAA,IACzB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,cAAc,IAAI;AAAA,IAClB,OAAO;AAAA,IACP;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IACF,OAAO,YAAY,QAAQ,SAAS,OAAO,MAAM;AAAA,IACjD,OAAO,eAAe,KAAK;AAAA,YAC3B;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;AAIvB,IAAM,uBAAuB,gBAAgB,CAC3C,SACA,QACA,MACA,WACA,SACA,cACA,QACA;AAAA,EACA,MAAM,SAAS,GAAG;AAAA,EAClB,MAAM,iBAAiB,IAAI,QAAQ,OAAO;AAAA,EAC1C,eAAe,IAAI,iBAAiB,UAAU,QAAQ;AAAA,EACtD,eAAe,IAAI,gBAAgB,kBAAkB;AAAA,EACrD,MAAM,WAAW,MAAM,UAAU,QAAQ;AAAA,OACpC,UAAU,MAAM;AAAA,IACnB,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,EACF,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,MAAM,cAAc,aAAa,cAAc,SAAS,QAAQ,SAAS;AAAA,EAC3E;AAAA,EAEA,IAAI,CAAC,SAAS,MAAM;AAAA,IAClB,MAAM,IAAI,cAAc;AAAA,MACtB,SAAS,GAAG;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,eAAe,SAAS,MAAM,cAAc,MAAM;AAAA;AAG3D,IAAM,qBAAqB,CACzB,gBACG;AAAA,EACH,IAAI,CAAC,aAAa;AAAA,IAChB,OAAO,IAAI;AAAA,EACb;AAAA,EAEA,IAAI,uBAAuB,KAAK;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,IAAI,IAAI,WAAW;AAAA;AAGrB,IAAM,kBAAkB,CAAC,WAAkC;AAAA,EAChE,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO;AAAA,IAC5B,MAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E,MAAM,UAAU,OAAO,WAAW;AAAA,EAClC,MAAM,YAAY,OAAO,SAAS,WAAW;AAAA,EAC7C,MAAM,cAAc,mBAAmB,OAAO,WAAW;AAAA,EACzD,MAAM,eAAe,OAAO,gBAAgB;AAAA,EAC5C,MAAM,aAAa,YACjB,OAAO,cACH,MAAM,QAAQ,QAAQ,OAAO,YAAY,CAAC,IAC1C,OAAO;AAAA,EACb,MAAM,iBAAiB,OAAO,WAC5B,OAAO,OAAO,YAAY,aACtB,MAAM,OAAO,QAAQ,MAAM,IAC1B,OAAO,WAAW,CAAC;AAAA,EAE1B,OAAO,qBACL;AAAA,IACE,eAAe,oBAAoB;AAAA,MACjC;AAAA,MACA,OAAO;AAAA,MACP,KAAK;AAAA,MACL,SAAS;AAAA,MACT,aAAa,OAAO;AAAA,MACpB,MAAM,CAAC,WAAW;AAAA,QAChB,MAAM,QAAQ,0BACZ,QACA,YAAY,IAAI,OAAO,KAAK,GAC5B,OAAO,uBAAuB,OAAO,KAAK,KAAK,OAAO,KACxD;AAAA,QACA,OAAO,OAAO,uBACV,OAAO,qBAAqB,OAAO,MAAM,IACzC;AAAA;AAAA,IAER,CAAC;AAAA,IACD,QAAQ,CAAC,WAAmC;AAAA,MAC1C,MAAM,eAAe,YAAY,IAAI,OAAO,KAAK;AAAA,MACjD,MAAM,YAAY,0BAChB,QACA,cACA,OAAO,uBAAuB,OAAO,KAAK,KAAK,OAAO,KACxD;AAAA,MACA,MAAM,OAAO,OAAO,uBAChB,OAAO,qBAAqB,WAAW,MAAM,IAC7C;AAAA,MACJ,OAAQ,gBAAgB,GAAG;AAAA,QACzB,OAAO,QAAQ,WAAW,MAAM,QAAQ,IAAI;AAAA,UAC1C,WAAW;AAAA,UACX,eAAe,MAAM;AAAA,QACvB,CAAC;AAAA,QACD,OAAO,qBACL,SACA,QACA,MACA,WACA,SACA,cACA,OAAO,MACT;AAAA,QACC;AAAA;AAAA,EAEP,GACA,YACF;AAAA;;;ACl6BF,IAAM,aAAY,CAAC,QACjB,IAAI,WAAW,UAAU,IAAI,EAAE,UAAU,QAAQ,IAAI,CAAC;AAuDxD,IAAM,oBAAmB;AACzB,IAAM,yBAAyB;AAC/B,IAAM,gBAAgB;AACtB,IAAM,aAAY;AAElB,IAAM,YAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU;AAEzC,IAAM,iBAAgB,CACpB,UAEA,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAK,UAAS,MAAM,EAAE;AAE/D,IAAM,kBAAkB,CACtB,QAEA,OAAO,IAAI,YAAY,YAAY,MAAM,QAAQ,IAAI,OAAO;AAE9D,IAAM,WAAW,CAAC,WAChB,OAAO,SAAS,QACZ,OAAO,MACP,QAAQ,OAAO,qBAAqB,OAAO;AAEjD,IAAM,oBAAoB,CAAC,WAAqC;AAAA,EAC9D,MAAM,gBAAgB,OAAO,OAAO,CAAC,UAAU,MAAM,SAAS,UAAU;AAAA,EACxE,MAAM,mBAAmB,OAAO,OAC9B,CAAC,UAAU,MAAM,SAAS,aAC5B;AAAA,EACA,MAAM,WAA4B,CAAC;AAAA,EAEnC,IAAI,cAAc,SAAS,GAAG;AAAA,IAC5B,SAAS,KAAK;AAAA,MACZ,SAAS;AAAA,MACT,MAAM;AAAA,MACN,YAAY,cAAc,IAAI,CAAC,WAAW;AAAA,QACxC,UAAU;AAAA,UACR,WACE,OAAO,MAAM,UAAU,WACnB,MAAM,QACN,KAAK,UAAU,MAAM,KAAK;AAAA,UAChC,MAAM,MAAM;AAAA,QACd;AAAA,QACA,IAAI,MAAM;AAAA,QACV,MAAM;AAAA,MACR,EAAE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,UAAU,kBAAkB;AAAA,IACrC,SAAS,KAAK;AAAA,MACZ,SAAS,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU;AAAA,MAC/D,MAAM;AAAA,MACN,cAAc,OAAO;AAAA,IACvB,CAAC;AAAA,EACH;AAAA,EAIA,MAAM,SAAS,iBAAiB,QAAQ,CAAC,WAAW,OAAO,UAAU,CAAC,CAAC;AAAA,EACvE,IAAI,OAAO,SAAS;AAAA,IAClB,SAAS,KAAK;AAAA,MACZ,SAAS;AAAA,QACP,EAAE,MAAM,4CAA4C,MAAM,OAAO;AAAA,QACjE,GAAG,OAAO,IAAI,CAAC,YAAY;AAAA,UACzB,WAAW,EAAE,KAAK,SAAS,MAAM,EAAE;AAAA,UACnC,MAAM;AAAA,QACR,EAAE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AAAA,EAEH,OAAO;AAAA;AAGT,IAAM,qBAAqB,CAAC,UAC1B,MAAM,IAAI,CAAC,UAAU;AAAA,EACnB,UAAU;AAAA,IACR,aAAa,KAAK;AAAA,IAClB,MAAM,KAAK;AAAA,IACX,YAAY,KAAK;AAAA,EACnB;AAAA,EACA,MAAM;AACR,EAAE;AAEJ,IAAM,0BAA0B,CAAC,UAAkC;AAAA,EACjE,IAAI,MAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AAAA,MACL,WAAW,EAAE,KAAK,SAAS,MAAM,MAAM,EAAE;AAAA,MACzC,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,YAAY;AAAA,IAC7B,OAAO;AAAA,MACL,MAAM;AAAA,QACJ,WACE,MAAM,OAAO,SAAS,QAClB,MAAM,OAAO,MACb,QAAQ,MAAM,OAAO,qBAAqB,MAAM,OAAO;AAAA,QAC7D,UAAU,MAAM,QAAQ;AAAA,MAC1B;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AAAA,MACL,aAAa,EAAE,MAAM,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,OAAO;AAAA,MACpE,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,QACT,KACE,MAAM,OAAO,SAAS,QAClB,MAAM,OAAO,MACb,QAAQ,MAAM,OAAO,qBAAqB,MAAM,OAAO;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,QAAQ;AAAA,IACzB,OAAO,EAAE,MAAM,MAAM,SAAS,MAAM,OAAO;AAAA,EAC7C;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,mBAAmB,CAAC,QAAoD;AAAA,EAC5E,IAAI,OAAO,IAAI,YAAY,UAAU;AAAA,IACnC,OAAO,IAAI;AAAA,EACb;AAAA,EAEA,MAAM,WAAW,IAAI,QAAQ,KAC3B,CAAC,UACC,MAAM,SAAS,WACf,MAAM,SAAS,cACf,MAAM,SAAS,WACf,MAAM,SAAS,OACnB;AAAA,EAEA,IAAI,CAAC,UAAU;AAAA,IACb,OACE,IAAI,QACD,OAAO,CAAC,UAAU,MAAM,SAAS,MAAM,EACvC,IAAI,CAAC,UAAU,MAAM,OAAO,EAC5B,KAAK,EAAE,KAAK;AAAA,EAEnB;AAAA,EAEA,OAAO,IAAI,QACR,IAAI,uBAAuB,EAC3B,OAAO,CAAC,WAAW,WAAW,IAAI;AAAA;AAGvC,IAAM,mBAAmB,CACvB,QACA,kBAAkB,OAAO,OACzB,eAAe,aACZ;AAAA,EAGH,MAAM,WAA4B,OAAO,SAAS,QAAQ,CAAC,QAAQ;AAAA,IACjE,MAAM,SACJ,gBAAgB,GAAG,KACnB,IAAI,QAAQ,KACV,CAAC,UAAU,MAAM,SAAS,cAAc,MAAM,SAAS,aACzD,IACI,kBAAkB,IAAI,OAAO,IAC7B,CAAC,EAAE,SAAS,iBAAiB,GAAG,GAAG,MAAM,IAAI,KAAK,CAAC;AAAA,IACzD,IAAI,gBAAgB,GAAG,KAAK,IAAI,SAAS,aAAa;AAAA,MACpD,MAAM,YAAY,OAAO,KAAK,CAAC,YAAY,QAAQ,SAAS,WAAW;AAAA,MACvE,IAAI,WAAW;AAAA,QACb,UAAU,UAAU,iBAAiB,GAAG;AAAA,QACxC,MAAM,WAAW,IAAI,QAClB,OAAO,CAAC,UAAU,MAAM,SAAS,UAAU,EAC3C,IAAI,CAAC,UAAU,MAAM,QAAQ,EAC7B,KAAK,EAAE;AAAA,QACV,IACE,YACA,CAAC,YAAY,YAAY,SAAS,EAAE,SAAS,YAAY;AAAA,UAEzD,UAAU,oBAAoB;AAAA,QAChC,IAAI,YAAY,iBAAiB;AAAA,UAC/B,UAAU,UAAU;AAAA,YAClB,EAAE,MAAM,YAAY,UAAU,CAAC,EAAE,MAAM,QAAQ,MAAM,SAAS,CAAC,EAAE;AAAA,YACjE,GAAI,OAAO,UAAU,YAAY,YAAY,UAAU,UACnD,CAAC,EAAE,MAAM,QAAQ,MAAM,UAAU,QAAQ,CAAC,IAC1C,CAAC;AAAA,UACP;AAAA,MACJ;AAAA,IACF;AAAA,IACA,OAAO;AAAA,GACR;AAAA,EAED,IAAI,OAAO,cAAc;AAAA,IACvB,SAAS,QAAQ,EAAE,SAAS,OAAO,cAAc,MAAM,SAAS,CAAC;AAAA,EACnE;AAAA,EAEA,MAAM,OAAgC;AAAA,IACpC;AAAA,IACA,OAAO,OAAO;AAAA,IACd,QAAQ;AAAA,IACR,gBAAgB,EAAE,eAAe,KAAK;AAAA,EACxC;AAAA,EAEA,IAAI,OAAO,SAAS,OAAO,MAAM,SAAS,GAAG;AAAA,IAC3C,KAAK,QAAQ,mBAAmB,OAAO,KAAK;AAAA,IAC5C,IACE,OAAO,eAAe,UACtB,OAAO,eAAe,UACtB,OAAO,eAAe,YACtB;AAAA,MACA,KAAK,cAAc,OAAO;AAAA,IAC5B,EAAO,SAAI,OAAO,cAAc,OAAO,OAAO,eAAe,UAAU;AAAA,MACrE,KAAK,cAAc;AAAA,QACjB,UAAU,EAAE,MAAM,OAAO,WAAW,KAAK;AAAA,QACzC,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,IAAI,OAAO,OAAO,sBAAsB,WAAW;AAAA,MACjD,KAAK,sBAAsB,OAAO;AAAA,IACpC;AAAA,EACF;AAAA,EAKA,IAAI,uBAAuB,eAAe,GAAG;AAAA,IAC3C,IAAI,OAAO,OAAO,cAAc,UAAU;AAAA,MACxC,KAAK,wBAAwB,OAAO;AAAA,IACtC;AAAA,IACA,IAAI,OAAO,WAAW;AAAA,MACpB,MAAM,SAAS,kBAAkB,iBAAiB,OAAO,SAAS;AAAA,MAClE,IAAI;AAAA,QAAQ,KAAK,mBAAmB;AAAA,IACtC;AAAA,EACF,EAAO;AAAA,IACL,IAAI,OAAO,OAAO,gBAAgB,UAAU;AAAA,MAC1C,KAAK,cAAc,OAAO;AAAA,IAC5B;AAAA,IACA,IAAI,OAAO,OAAO,SAAS;AAAA,MAAU,KAAK,QAAQ,OAAO;AAAA,IACzD,IAAI,OAAO,OAAO,cAAc;AAAA,MAC9B,KAAK,aAAa,OAAO;AAAA;AAAA,EAE7B,IAAI,iBAAiB;AAAA,IACnB,OAAO,OACL,MACA,wBAAwB,cAAc,OAAO,OAAO,OAAO,SAAS,CACtE;AAAA,EACF,IAAI,OAAO,iBAAiB,OAAO,cAAc,SAAS;AAAA,IACxD,KAAK,OAAO,OAAO;AAAA,EACrB,IAAI,OAAO,OAAO,SAAS;AAAA,IAAU,KAAK,OAAO,OAAO;AAAA,EACxD,IAAI,OAAO,OAAO,qBAAqB;AAAA,IACrC,KAAK,oBAAoB,OAAO;AAAA,EAClC,IAAI,OAAO,OAAO,oBAAoB;AAAA,IACpC,KAAK,mBAAmB,OAAO;AAAA,EAEjC,IAAI,OAAO,gBAAgB;AAAA,IACzB,IACE,OAAO,eAAe,SAAS,UAC/B,OAAO,eAAe,SAAS,eAC/B;AAAA,MACA,KAAK,kBAAkB,EAAE,MAAM,OAAO,eAAe,KAAK;AAAA,IAC5D,EAAO,SAAI,OAAO,eAAe,SAAS,eAAe;AAAA,MACvD,KAAK,kBAAkB;AAAA,QACrB,aAAa;AAAA,UACX,MAAM,OAAO,eAAe;AAAA,UAC5B,QAAQ,OAAO,eAAe;AAAA,UAC9B,QAAQ,OAAO,eAAe,UAAU;AAAA,QAC1C;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,kBAAiB,CAAC,iBAAyB;AAAA,EAC/C,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,YAAY;AAAA,IAC9B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,IAAM,wBAAwB,UAAU,CACtC,kBACA;AAAA,EACA,cAAc,SAAS,kBAAkB;AAAA,IACvC,MAAM,QAAQ,gBAAe,KAAK,SAAS;AAAA,IAC3C,MAAM;AAAA,MACJ,IAAI,KAAK;AAAA,MACT;AAAA,MACA,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,iBAAiB,MAAM;AAAA;AAGzB,IAAM,gBAAe,CACnB,gBACY;AAAA,EACZ,MAAM,SAAS,YAAY,iBAAiB;AAAA,EAC5C,MAAM,SAAS,YAAY,iBAAiB;AAAA,EAC5C,MAAM,UAAU,YAAY,sBAAsB;AAAA,EAIlD,OAAO;AAAA,IACL,sBAAsB;AAAA,IACtB,uBAAuB,WAAW;AAAA,IAClC,aAAa,YAAY;AAAA,IACzB,aAAa,KAAK,IAAI,GAAG,SAAS,SAAS,OAAO;AAAA,IAClD,cAAc,YAAY,qBAAqB;AAAA,IAC/C,iBAAiB,YAAY,oBAAoB;AAAA,IACjD,8BACE,YAAY,2BAA2B;AAAA,EAC3C;AAAA;AAGF,IAAM,uBAAuB,CAAC,aAAsC;AAAA,EAClE,MAAM,MAAM,OAAO,SAAS,UAAU,WAAW,SAAS,QAAQ;AAAA,EAElE,OAAO,MAAM,IAAI,YAAY;AAAA;AAG/B,IAAM,sBAAsB,CAC1B,UACA,MACA,OACA,qBACG;AAAA,EACH,IAAI,iBAAiB,IAAI,KAAK,GAAG;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,OAAO,SAAS,OAAO,WAAW,SAAS,KAAK;AAAA,EAC/D,MAAM,WAAW,QAAQ,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;AAAA,EAErE,iBAAiB,IAAI,OAAO;AAAA,IAC1B,WAAW;AAAA,IACX,IAAI;AAAA,IACJ,MAAM;AAAA,EACR,CAAC;AAAA;AAGH,IAAM,wBAAwB,CAC5B,UACA,MACA,YACG;AAAA,EACH,IAAI,OAAO,SAAS,OAAO,UAAU;AAAA,IACnC,QAAQ,KAAK,SAAS;AAAA,EACxB;AAAA,EAEA,IAAI,QAAQ,OAAO,KAAK,SAAS,UAAU;AAAA,IACzC,QAAQ,OAAO,KAAK;AAAA,EACtB;AAAA,EAEA,IAAI,QAAQ,OAAO,KAAK,cAAc,UAAU;AAAA,IAC9C,QAAQ,aAAa,KAAK;AAAA,EAC5B;AAAA;AAGF,IAAM,uBAAuB,CAC3B,UACA,qBACG;AAAA,EACH,MAAM,QAAQ,qBAAqB,QAAQ;AAAA,EAC3C,IAAI,UAAU,WAAW;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,UAAS,SAAS,QAAQ,IAAI,SAAS,WAAW;AAAA,EAC/D,oBAAoB,UAAU,MAAM,OAAO,gBAAgB;AAAA,EAE3D,MAAM,UAAU,iBAAiB,IAAI,KAAK;AAAA,EAC1C,IAAI,CAAC,SAAS;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,sBAAsB,UAAU,MAAM,OAAO;AAAA;AAG/C,IAAM,wBAAwB,CAC5B,WACA,qBACG;AAAA,EACH,WAAW,YAAY,WAAW;AAAA,IAChC,qBAAqB,UAAU,gBAAgB;AAAA,EACjD;AAAA;AAGF,IAAM,eAAe,UAAU,CAC7B,OACA,kBACA;AAAA,EACA,IAAI,OAAO,MAAM,sBAAsB;AAAA,IACrC,MAAM,EAAE,MAAM,YAAqB,SAAS,MAAM,kBAAkB;AAAA,EACtE,IAAI,MAAM,QAAQ,MAAM,OAAO,GAAG;AAAA,IAChC,WAAW,QAAQ,MAAM,SAAS;AAAA,MAChC,IAAI,CAAC,UAAS,IAAI;AAAA,QAAG;AAAA,MACrB,IAAI,KAAK,SAAS,UAAU,OAAO,KAAK,SAAS;AAAA,QAC/C,MAAM,EAAE,MAAM,QAAiB,SAAS,KAAK,KAAK;AAAA,MACpD,IAAI,KAAK,SAAS,cAAc,MAAM,QAAQ,KAAK,QAAQ,GAAG;AAAA,QAC5D,WAAW,WAAW,KAAK;AAAA,UACzB,IAAI,UAAS,OAAO,KAAK,OAAO,QAAQ,SAAS;AAAA,YAC/C,MAAM,EAAE,MAAM,YAAqB,SAAS,QAAQ,KAAK;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,OAAO,MAAM,YAAY,UAAU;AAAA,IACrC,MAAM,EAAE,SAAS,MAAM,SAAS,MAAM,OAAgB;AAAA,EACxD;AAAA,EAEA,IAAI,UAAS,MAAM,KAAK,GAAG;AAAA,IACzB,MAAM,QAAQ,MAAM;AAAA,IACpB,IACE,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,eAAe,UAC5B;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,OAAO,MAAM,OAAO,WAAW,MAAM,KAAK;AAAA,QACnD,MAAM,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAAA,QACpD,QAAQ,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;AAAA,QAC1D,YACE,OAAO,MAAM,eAAe,WAAW,MAAM,aAAa;AAAA,QAC5D,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,eAAc,MAAM,UAAU,GAAG;AAAA,IACnC,sBAAsB,MAAM,YAAY,gBAAgB;AAAA,IACxD,WAAW,QAAQ,MAAM,YAAY;AAAA,MACnC,IACE,UAAS,KAAK,QAAQ,KACtB,OAAO,KAAK,SAAS,SAAS,YAC9B,KAAK,SAAS;AAAA,QAEd,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,IAAI,OAAO,KAAK,OAAO,WAAW,KAAK,KAAK,OAAO,KAAK,KAAK;AAAA,UAC7D,MAAM,KAAK,SAAS;AAAA,QACtB;AAAA,IACJ;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,QAAQ,MAAM,WAAW,GAAG;AAAA,IACpC,WAAW,cAAc,MAAM,aAAa;AAAA,MAC1C,IAAI,CAAC,UAAS,UAAU,KAAK,WAAW,SAAS;AAAA,QAAgB;AAAA,MACjE,MAAM,WAAW,UAAS,WAAW,YAAY,IAC7C,WAAW,eACX;AAAA,MACJ,IAAI,OAAO,SAAS,QAAQ;AAAA,QAAU;AAAA,MACtC,MAAM;AAAA,QACJ,SACE,OAAO,SAAS,YAAY,WAAW,SAAS,UAAU;AAAA,QAC5D,UACE,OAAO,SAAS,cAAc,WAC1B,SAAS,YACT;AAAA,QACN,YACE,OAAO,SAAS,gBAAgB,WAC5B,SAAS,cACT;AAAA,QACN,OAAO,OAAO,SAAS,UAAU,WAAW,SAAS,QAAQ;AAAA,QAC7D,MAAM;AAAA,QACN,KAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA;AAGF,IAAM,yBAAyB,CAC7B,WACmC;AAAA,EACnC,MAAM,mBAAmB,UAAS,OAAO,mBAAmB,IACxD,OAAO,sBACP;AAAA,EACJ,MAAM,eAAe,OAAO,OAAO,OAAO,WAAW,OAAO,KAAK;AAAA,EACjE,MAAM,QAAQ,OAAO,OAAO,UAAU,WAAW,OAAO,QAAQ;AAAA,EAChE,MAAM,cACJ,OAAO,OAAO,iBAAiB,WAAW,OAAO,eAAe;AAAA,EAClE,MAAM,WACJ,oBAAoB,UAAS,iBAAiB,SAAS,IACnD,iBAAiB,UAAU,YAC3B;AAAA,EACN,MAAM,mBAAmB,MAAM,QAAQ,QAAQ,IAC3C,SAAS,KAAK,CAAC,UAAU,UAAS,KAAK,KAAK,MAAM,aAAa,IAAI,IACnE;AAAA,EACJ,MAAM,WACJ,UAAS,gBAAgB,KAAK,OAAO,iBAAiB,aAAa,WAC/D,iBAAiB,WACjB;AAAA,EACN,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAAA,IAAa;AAAA,EAElE,OAAO,EAAE,cAAc,OAAO,UAAU,kBAAkB,YAAY;AAAA;AAGxE,IAAM,gBAAgB,UAAU,CAC9B,QACA,kBACA;AAAA,EACA,MAAM,QAAQ,UAAS,OAAO,KAAK,IAAI,OAAO,QAAQ;AAAA,EACtD,IAAI,OAAO;AAAA,IACT,OAAO,aAAa,OAAO,gBAAgB;AAAA,EAC7C;AAAA,EAEA,IAAI,OAAO,kBAAkB,cAAc;AAAA,IACzC,OAAO,sBAAsB,gBAAgB;AAAA,EAC/C;AAAA;AAGF,IAAM,oBAAoB,CAAC,WAAoC;AAAA,EAC7D,IAAI,CAAC,UAAS,OAAO,KAAK,GAAG;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,QAAQ,UAAU;AAAA,EAClB,MAAM,eACJ,OAAO,MAAM,kBAAkB,WAAW,MAAM,gBAAgB;AAAA,EAClE,MAAM,mBACJ,OAAO,MAAM,sBAAsB,WAAW,MAAM,oBAAoB;AAAA,EAC1E,MAAM,eACJ,UAAS,MAAM,qBAAqB,KACpC,OAAO,MAAM,sBAAsB,kBAAkB,WACjD,MAAM,sBAAsB,gBAC5B;AAAA,EACN,MAAM,mBACJ,UAAS,MAAM,qBAAqB,KACpC,OAAO,MAAM,sBAAsB,uBAAuB,WACtD,MAAM,sBAAsB,qBAC5B;AAAA,EACN,MAAM,kBACJ,UAAS,MAAM,yBAAyB,KACxC,OAAO,MAAM,0BAA0B,qBAAqB,WACxD,MAAM,0BAA0B,mBAChC;AAAA,EACN,MAAM,OAAO,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAAA,EAC3D,MAAM,wBACJ,UAAS,MAAM,YAAY,KAC3B,OAAO,MAAM,aAAa,4BAA4B,WAClD,MAAM,aAAa,0BACnB;AAAA,EAEN,MAAM,aAAa,cAAa;AAAA,IAC9B,oBAAoB;AAAA,IACpB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB;AAAA,IACA,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,yBAAyB;AAAA,EAC3B,CAAC;AAAA,EACD,IAAI,UAAS,MAAM,eAAe,GAAG;AAAA,IACnC,WAAW,gBAAgB,OAAO,YAChC,OAAO,QAAQ,MAAM,eAAe,EAAE,OACpC,CAAC,UAAqC,OAAO,MAAM,OAAO,QAC5D,CACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,kBAAiB,UAAU,CAC/B,MACA,kBACA,cACA;AAAA,EACA,MAAM,UAAU,KAAK,KAAK;AAAA,EAC1B,IAAI,CAAC,WAAW,CAAC,QAAQ,WAAW,QAAQ,GAAG;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,QAAQ,MAAM,sBAAsB;AAAA,EACjD,IAAI,SAAS,eAAe;AAAA,IAC1B,OAAO,sBAAsB,gBAAgB;AAAA,IAE7C;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,IAAI;AAAA,IACxB,MAAM;AAAA,IACN;AAAA;AAAA,EAGF,IAAI,UAAS,OAAO,KAAK,GAAG;AAAA,IAC1B,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,WAAW,UAAS,MAAM,QAAQ,IAAI,MAAM,WAAW;AAAA,IAC7D,MAAM,SAAS,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAAA,IAC7D,MAAM,OACJ,YAAY,OAAO,SAAS,eAAe,WACvC,SAAS,aACT,OAAO,MAAM,eAAe,WAC1B,MAAM,aACN;AAAA,IACR,MAAM,IAAI,cAAc;AAAA,MACtB,SACE,OAAO,MAAM,YAAY,WACrB,MAAM,UACN;AAAA,MACN;AAAA,MACA,UAAU;AAAA,MACV,WACE,WAAW,OACX,WAAW,OACX,WAAW,OACX,WAAW,OACV,WAAW,QAAQ,UAAU;AAAA,MAChC;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,cAAc,kBAAkB,MAAM;AAAA,EAC5C,IAAI,aAAa;AAAA,IACf,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,MAAM,QAAQ,OAAO,OAAO,KAAK,OAAO,QAAQ,WAAW;AAAA,MAClE,UAAU,uBAAuB,MAAM;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,uBAAuB,MAAM;AAAA,EAC9C,IAAI,UAAU;AAAA,IACZ,MAAM,EAAE,UAAU,MAAM,oBAA6B;AAAA,EACvD;AAAA,EAEA,QAAQ,YAAY;AAAA,EACpB,IAAI,CAAC,eAAc,OAAO,GAAG;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,OAAO,eAAe;AAAA,EACtB,IAAI,CAAC,aAAa;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,IAAI,UAAS,YAAY,KAAK,GAAG;AAAA,IAC/B,MAAM,QAAQ,YAAY;AAAA,IAC1B,MAAM,WAAW,UAAS,MAAM,QAAQ,IAAI,MAAM,WAAW;AAAA,IAC7D,MAAM,SAAS,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAAA,IAC7D,MAAM,IAAI,cAAc;AAAA,MACtB,SACE,OAAO,MAAM,YAAY,WACrB,MAAM,UACN;AAAA,MACN;AAAA,MACA,UAAU;AAAA,MACV,WAAW,WAAW,OAAQ,WAAW,QAAQ,UAAU;AAAA,MAC3D;AAAA,MACA,MACE,YAAY,OAAO,SAAS,eAAe,WACvC,SAAS,aACT;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,cAAc,aAAa,gBAAgB;AAAA;AAGpD,IAAM,yBAAyB,CAC7B,MACA,kBACA,UACA,aACA,iBACG;AAAA,EACH,MAAM,YAAY,MAAM,KACtB,gBAAe,MAAM,kBAAkB,YAAY,CACrD;AAAA,EACA,MAAM,cAAc,UAAU,OAC5B,CAAC,UAAU,MAAM,SAAS,cAC5B;AAAA,EACA,MAAM,YAAY,YAAY,GAAG,UAAS;AAAA,EAE1C,IAAI,WAAW;AAAA,IACb,SAAS,UAAU,UAAU;AAAA,EAC/B;AAAA,EAEA,MAAM,iBAAiB,UAAU,OAC/B,CAAC,UAAU,MAAM,SAAS,mBAC5B;AAAA,EACA,MAAM,eAAe,eAAe,GAAG,UAAS;AAAA,EAChD,IAAI,gBAAgB,cAAc,cAAc;AAAA,IAC9C,YAAY,UAAU;AAAA,SACjB,YAAY;AAAA,SACZ,aAAa;AAAA,MAChB,kBAAkB;AAAA,WACb,YAAY,SAAS;AAAA,WACrB,aAAa,SAAS;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,UACJ,OAAO,CAAC,UAAU,MAAM,SAAS,mBAAmB,EACpD,IAAI,CAAC,UACJ,MAAM,SAAS,iBACX,KAAK,OAAO,UAAU,YAAY,QAAQ,IAC1C,KACN;AAAA;AAGJ,IAAM,mBAAkB,UAAU,CAChC,OACA,kBACA,UACA,aACA,cACA;AAAA,EACA,WAAW,QAAQ,OAAO;AAAA,IACxB,OAAO,uBACL,MACA,kBACA,UACA,aACA,YACF;AAAA,EACF;AAAA;AAGF,IAAM,qBAAqB,CACzB,OACA,SACA,UACG;AAAA,EACH,MAAM,UAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,EACtD,MAAM,QAAQ,MAAM,OAAO,MAAM;AAAA,CAAI;AAAA,EACrC,MAAM,SAAS,MAAM,IAAI,KAAK;AAAA,EAE9B,OAAO;AAAA;AAGT,IAAM,eAAc,gBAAgB,CAClC,QACA,SACA,OACA,QACA;AAAA,EAEA,SACM,SAAS,MAAM,OAAO,KAAK,EAC/B,CAAC,OAAO,QAAQ,CAAC,QAAQ,SACzB,SAAS,MAAM,OAAO,KAAK,GAC3B;AAAA,IAEA,MAAM,QAAQ,mBAAmB,OAAO,OAAO,SAAS,KAAK;AAAA,IAC7D,OAAO,iBACL,OACA,MAAM,kBACN,MAAM,UACN,MAAM,aACN,MAAM,YACR;AAAA,EACF;AAAA;AAGF,IAAM,kBAAiB,gBAAgB,CACrC,MACA,iBACA,eAAe,UACf,QACA;AAAA,EACA,MAAM,SAAS,KAAK,UAAU;AAAA,EAC9B,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,QAAqB;AAAA,IACzB,QAAQ;AAAA,IACR,aAAa,EAAE,SAAS,gBAAgB;AAAA,IACxC,kBAAkB,IAAI;AAAA,IACtB;AAAA,IACA,UAAU,EAAE,SAAS,UAAU;AAAA,EACjC;AAAA,EAEA,IAAI;AAAA,IACF,OAAO,aAAY,QAAQ,SAAS,OAAO,MAAM;AAAA,IACjD,MAAM;AAAA,MACJ,UAAU,MAAM,YAAY;AAAA,MAC5B,MAAM;AAAA,MACN,OAAO,MAAM,SAAS;AAAA,IACxB;AAAA,YACA;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;AAIvB,IAAM,oBAAoB,gBAAgB,CACxC,SACA,QACA,MACA,WACA,SACA,cACA,QACA;AAAA,EACA,MAAM,SAAS,GAAG;AAAA,EAClB,MAAM,iBAAiB,IAAI,QAAQ,OAAO;AAAA,EAC1C,eAAe,IAAI,iBAAiB,UAAU,QAAQ;AAAA,EACtD,eAAe,IAAI,gBAAgB,kBAAkB;AAAA,EACrD,MAAM,WAAW,MAAM,UAAU,QAAQ;AAAA,OACpC,WAAU,MAAM;AAAA,IACnB,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,EACF,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,MAAM,cAAc,aAAa,cAAc,SAAS,QAAQ,SAAS;AAAA,EAC3E;AAAA,EAEA,IAAI,CAAC,SAAS,MAAM;AAAA,IAClB,MAAM,IAAI,cAAc;AAAA,MACtB,SAAS,GAAG;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,gBACL,SAAS,MACT;AAAA,IACE,cAAc,SAAS,QAAQ,IAAI,iBAAiB,KAAK;AAAA,IACzD,kBAAkB;AAAA,MAChB,UAAU,SAAS,QAAQ,IAAI,wBAAwB,KAAK;AAAA,MAC5D,eACE,SAAS,QAAQ,IAAI,8BAA8B,KAAK;AAAA,MAC1D,aACE,SAAS,QAAQ,IAAI,2BAA2B,KAAK;AAAA,MACvD,UAAU,SAAS,QAAQ,IAAI,wBAAwB,KAAK;AAAA,IAC9D;AAAA,EACF,GACA,cACA,MACF;AAAA;AAGK,IAAM,SAAS,CAAC,WAA2C;AAAA,EAChE,MAAM,UAAU,OAAO,WAAW;AAAA,EAClC,MAAM,YAAY,OAAO,SAAS,WAAW;AAAA,EAC7C,MAAM,eAAe,OAAO,gBAAgB;AAAA,EAC5C,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO,aAAa;AAAA,IACzC,MAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAAA,EACA,MAAM,aAAa,YAAY;AAAA,IAC7B,IAAI,OAAO,aAAa;AAAA,MACtB,OAAO,MAAM,QAAQ,QAAQ,OAAO,YAAY,CAAC;AAAA,IACnD;AAAA,IACA,OAAO,OAAO;AAAA;AAAA,EAEhB,MAAM,iBAAiB,OAAO,WAC5B,OAAO,OAAO,YAAY,aACtB,MAAM,OAAO,QAAQ,MAAM,IAC1B,OAAO,WAAW,CAAC;AAAA,EAE1B,OAAO,qBACL;AAAA,IACE,eAAe,OAAO,uBAClB,YACA,oBAAoB;AAAA,MAClB;AAAA,MACA,OAAO;AAAA,MACP,KAAK;AAAA,MACL,SAAS;AAAA,MACT,aAAa,OAAO;AAAA,MACpB,MAAM,CAAC,WACL,0BACE,QACA,OACA,OAAO,uBAAuB,OAAO,KAAK,KAAK,OAAO,KACxD;AAAA,IACJ,CAAC;AAAA,IACL,QAAQ,CAAC,WAAmC;AAAA,MAC1C,MAAM,aAAa,iBACjB,QACA,OAAO,uBAAuB,OAAO,KAAK,KAAK,OAAO,OACtD,YACF;AAAA,MACA,MAAM,OAAO,OAAO,uBAChB,OAAO,qBAAqB,YAAY,MAAM,IAC9C;AAAA,MACJ,OAAQ,gBAAgB,GAAG;AAAA,QACzB,OAAO,QAAQ,WAAW,MAAM,QAAQ,IAAI;AAAA,UAC1C,WAAW;AAAA,UACX,eAAe,MAAM;AAAA,QACvB,CAAC;AAAA,QACD,OAAO,kBACL,SACA,QACA,MACA,WACA,SACA,cACA,OAAO,MACT;AAAA,QACC;AAAA;AAAA,EAEP,GACA,YACF;AAAA;;;ACx9BK,IAAM,UAAU,CAAC,WACtB,iBAAiB;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,SAAS;AACX,CAAC;AACI,IAAM,YAAW,CAAC,WACvB,iBAAiB;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,SAAS;AACX,CAAC;AACI,IAAM,SAAS,CAAC,WACrB,iBAAiB;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,SAAS;AACX,CAAC;AACI,IAAM,OAAO,CAAC,WACnB,iBAAiB;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,SAAS;AACX,CAAC;AACI,IAAM,YAAY,CAAC,WACxB,iBAAiB;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,SAAS;AACX,CAAC;AACI,IAAM,WAAW,CAAC,WACvB,iBAAiB;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,SAAS;AACX,CAAC;AACI,IAAM,mBAAmB,CAAC,WAK/B,OAAO;AAAA,EACL,QAAQ,OAAO;AAAA,EACf,SAAS,OAAO;AAAA,EAChB,aAAa,OAAO;AACtB,CAAC;AACI,IAAM,MAAM,CAAC,WAClB,iBAAiB;AAAA,EACf,QAAQ,OAAO;AAAA,EACf,SAAS;AACX,CAAC;;AC9BH,IAAM,aAAY,CAAC,QACjB,IAAI,WAAW,UAAU,IAAI,EAAE,UAAU,QAAQ,IAAI,CAAC;AAcxD,IAAM,oBAAmB;AACzB,IAAM,0BAAyB;AAE/B,IAAM,YAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU;AAEzC,IAAM,iBAAgB,CACpB,UAEA,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,KAAK,UAAS,MAAM,EAAE;AAI/D,IAAM,UAAU,CAAC,SAAiB;AAAA,EAChC,IAAI,SAAS,eAAe,SAAS;AAAA,IAAU,OAAO;AAAA,EAEtD,OAAO;AAAA;AAGT,IAAM,kBAAkB,CAAC,UAAkC;AAAA,EACzD,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,OAAO,EAAE,MAAM,MAAM,QAAQ;AAAA,SAC1B;AAAA,MACH,OAAO,MAAM,OAAO,SAAS,QACzB;AAAA,QACE,UAAU;AAAA,UACR,SAAS,MAAM,OAAO;AAAA,UACtB,UAAU,MAAM,OAAO;AAAA,QACzB;AAAA,MACF,IACA;AAAA,QACE,YAAY;AAAA,UACV,MAAM,MAAM,OAAO;AAAA,UACnB,UAAU,MAAM,OAAO;AAAA,QACzB;AAAA,MACF;AAAA,SACD;AAAA,MACH,OAAO,MAAM,OAAO,SAAS,QACzB;AAAA,QACE,UAAU;AAAA,UACR,SAAS,MAAM,OAAO;AAAA,UACtB,UAAU,MAAM,OAAO;AAAA,QACzB;AAAA,MACF,IACA;AAAA,QACE,YAAY;AAAA,UACV,MAAM,MAAM,OAAO;AAAA,UACnB,UAAU,MAAM,OAAO;AAAA,QACzB;AAAA,MACF;AAAA,SACD;AAAA,MACH,OAAO;AAAA,QACL,YAAY;AAAA,UACV,MAAM,MAAM,OAAO;AAAA,UACnB,UAAU,SAAS,MAAM,OAAO;AAAA,QAClC;AAAA,MACF;AAAA,SACG;AAAA,MACH,OAAO,MAAM,OAAO,SAAS,QACzB;AAAA,QACE,UAAU;AAAA,UACR,SAAS,MAAM,OAAO;AAAA,UACtB,UAAU,MAAM,OAAO;AAAA,QACzB;AAAA,MACF,IACA;AAAA,QACE,YAAY;AAAA,UACV,MAAM,MAAM,OAAO;AAAA,UACnB,UAAU,MAAM,OAAO;AAAA,QACzB;AAAA,MACF;AAAA,SACD;AAAA,MACH,OAAO;AAAA,QACL,cAAc;AAAA,UACZ,MACE,OAAO,MAAM,UAAU,WACnB,KAAK,MAAM,MAAM,KAAK,IACtB,MAAM;AAAA,UACZ,MAAM,MAAM;AAAA,QACd;AAAA,MACF;AAAA,SACG;AAAA,MACH,OAAO;AAAA,QACL,kBAAkB;AAAA,UAChB,MAAM,MAAM;AAAA,UACZ,UAAU,EAAE,QAAQ,MAAM,QAAQ;AAAA,QACpC;AAAA,MACF;AAAA;AAAA,MAEA,OAAO;AAAA;AAAA;AAIb,IAAM,wBAAwB,CAAC,YAA+C;AAAA,EAC5E,IAAI,OAAO,YAAY,UAAU;AAAA,IAC/B,OAAO,CAAC,EAAE,MAAM,QAAQ,CAAC;AAAA,EAC3B;AAAA,EAGA,OAAO,QACJ,QAAQ,CAAC,UACR,MAAM,SAAS,iBAAiB,MAAM,QAAQ,SAC1C;AAAA,IACE,gBAAgB,KAAK;AAAA,IACrB,GAAG,MAAM,OAAO,IAAI,CAAC,WACnB,gBAAgB,EAAE,QAAQ,MAAM,QAAQ,CAAC,CAC3C;AAAA,EACF,IACA,CAAC,gBAAgB,KAAK,CAAC,CAC7B,EACC,OAAO,CAAC,WAAW,WAAW,IAAI;AAAA;AAGvC,IAAM,sBAAsB,CAAC,YAC3B,QAAQ,KAAK,CAAC,UAAU,MAAM,SAAS,aAAa;AAEtD,IAAM,uBAAuB,CAAC,QAA2B;AAAA,EACvD,IAAI,OAAO,IAAI,YAAY,YAAY,oBAAoB,IAAI,OAAO,GAAG;AAAA,IACvE,OAAO,EAAE,OAAO,sBAAsB,IAAI,OAAO,GAAG,MAAM,OAAO;AAAA,EACnE;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,sBAAsB,IAAI,OAAO;AAAA,IACxC,MAAM,QAAQ,IAAI,IAAI;AAAA,EACxB;AAAA;AAGF,IAAM,kBAAkB,CAAC,aACvB,SAAS,IAAI,oBAAoB;AAEnC,IAAM,sBAAqB,CAAC,UAC1B,MAAM,IAAI,CAAC,UAAU;AAAA,EACnB,aAAa,KAAK;AAAA,EAClB,MAAM,KAAK;AAAA,EACX,YAAY,KAAK;AACnB,EAAE;AAEJ,IAAM,oBAAmB,CACvB,QACA,iBACG;AAAA,EACH,MAAM,OAAgC;AAAA,IACpC,UAAU,gBAAgB,OAAO,QAAQ;AAAA,EAC3C;AAAA,EAEA,MAAM,mBAA4C,CAAC;AAAA,EACnD,MAAM,iBAAiB,qBAAqB,OAAO,OAAO,OAAO,SAAS;AAAA,EAC1E,IAAI;AAAA,IAAgB,iBAAiB,iBAAiB;AAAA,EACtD,IAAI,cAAc;AAAA,IAChB,iBAAiB,qBAAqB,CAAC,QAAQ,OAAO;AAAA,EACxD;AAAA,EACA,IAAI,OAAO,OAAO,gBAAgB;AAAA,IAChC,iBAAiB,cAAc,OAAO;AAAA,EACxC,IAAI,OAAO,OAAO,SAAS;AAAA,IAAU,iBAAiB,OAAO,OAAO;AAAA,EACpE,IAAI,OAAO,OAAO,cAAc;AAAA,IAC9B,iBAAiB,kBAAkB,OAAO;AAAA,EAC5C,IAAI,OAAO,iBAAiB,OAAO,cAAc,SAAS,GAAG;AAAA,IAC3D,iBAAiB,gBAAgB,OAAO;AAAA,EAC1C;AAAA,EACA,IAAI,OAAO,OAAO,SAAS;AAAA,IAAU,iBAAiB,OAAO,OAAO;AAAA,EACpE,IAAI,OAAO,gBAAgB,SAAS,eAAe;AAAA,IACjD,iBAAiB,mBAAmB;AAAA,EACtC,EAAO,SAAI,OAAO,gBAAgB,SAAS,eAAe;AAAA,IACxD,iBAAiB,mBAAmB;AAAA,IACpC,iBAAiB,iBAAiB,OAAO,eAAe;AAAA,EAC1D;AAAA,EACA,IAAI,OAAO,KAAK,gBAAgB,EAAE,SAAS,GAAG;AAAA,IAC5C,KAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,IAAI,OAAO,cAAc;AAAA,IACvB,KAAK,oBAAoB;AAAA,MACvB,OAAO,CAAC,EAAE,MAAM,OAAO,aAAa,CAAC;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,IAAI,OAAO,SAAS,OAAO,MAAM,SAAS,GAAG;AAAA,IAC3C,KAAK,QAAQ,CAAC,EAAE,sBAAsB,oBAAmB,OAAO,KAAK,EAAE,CAAC;AAAA,IACxE,IAAI,OAAO,YAAY;AAAA,MACrB,MAAM,SAAS,OAAO;AAAA,MACtB,IAAI,WAAW,UAAU,WAAW,QAAQ;AAAA,QAC1C,KAAK,aAAa;AAAA,UAChB,uBAAuB,EAAE,MAAM,WAAW,SAAS,SAAS,OAAO;AAAA,QACrE;AAAA,MACF,EAAO,SAAI,WAAW,YAAY;AAAA,QAChC,KAAK,aAAa;AAAA,UAChB,uBAAuB,EAAE,MAAM,MAAM;AAAA,QACvC;AAAA,MACF,EAAO,SAAI,OAAO,WAAW,UAAU;AAAA,QACrC,KAAK,aAAa;AAAA,UAChB,uBAAuB;AAAA,YACrB,sBAAsB,CAAC,OAAO,IAAI;AAAA,YAClC,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAKT,IAAM,qBAAoB,CAAC,aAAsB;AAAA,EAC/C,IAAI,OAAO,aAAa,UAAU;AAAA,IAChC,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,SAAS,SAAS,MAAM,KAAK,SAAS,SAAS,KAAK;AAAA,IAAG,OAAO;AAAA,EAClE,IAAI,SAAS,SAAS,MAAM;AAAA,IAAG,OAAO;AAAA,EAEtC,OAAO;AAAA;AAGT,IAAM,kBAAkB,UAAU,CAAC,MAA+B;AAAA,EAChE,IAAI,OAAO,KAAK,SAAS,YAAY,KAAK,MAAM;AAAA,IAC9C,MAAM,EAAE,SAAS,KAAK,MAAM,MAAM,OAAgB;AAAA,EACpD;AAAA;AAGF,IAAM,wBAAwB,UAAU,CAAC,YAAqC;AAAA,EAC5E,MAAM,OAAO,OAAO,WAAW,SAAS,WAAW,WAAW,OAAO;AAAA,EACrE,QAAQ,aAAa;AAAA,EAErB,IAAI,CAAC,MAAM;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM;AAAA,IACJ;AAAA,IACA,QAAQ,mBAAkB,QAAQ;AAAA,IAClC,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA;AAGF,IAAM,0BAA0B,UAAU,CACxC,cACA;AAAA,EACA,MAAM,OAAO,OAAO,aAAa,SAAS,WAAW,aAAa,OAAO;AAAA,EACzE,MAAM,OAAO,aAAa,QAAQ,CAAC;AAAA,EAEnC,MAAM;AAAA,IACJ,IAAI,UAAU,QAAQ,KAAK,IAAI;AAAA,IAC/B,OAAO;AAAA,IACP;AAAA,IACA,MAAM;AAAA,EACR;AAAA;AAGF,IAAM,cAAc,UAAU,CAAC,MAA+B;AAAA,EAC5D,IAAI,UAAU,MAAM;AAAA,IAClB,OAAO,gBAAgB,IAAI;AAAA,EAC7B;AAAA,EAEA,IAAI,UAAS,KAAK,UAAU,GAAG;AAAA,IAC7B,OAAO,sBAAsB,KAAK,UAAU;AAAA,EAC9C;AAAA,EAEA,IAAI,UAAS,KAAK,YAAY,GAAG;AAAA,IAC/B,OAAO,wBAAwB,KAAK,YAAY;AAAA,EAClD;AAAA;AAGF,IAAM,gBAAe,CAAC,WAAyD;AAAA,EAC7E,IAAI,CAAC,UAAS,OAAO,aAAa,GAAG;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,QAAQ,kBAAkB;AAAA,EAE1B,OAAO;AAAA,IACL,aACE,OAAO,cAAc,qBAAqB,WACtC,cAAc,mBACd;AAAA,IACN,cACE,OAAO,cAAc,yBAAyB,WAC1C,cAAc,uBACd;AAAA,EACR;AAAA;AAGF,IAAM,gBAAe,UAAU,CAC7B,QACA,OACA;AAAA,EACA,MAAM,QAAQ,cAAa,MAAM;AAAA,EAEjC,IAAI,OAAO;AAAA,IACT,MAAM,QAAQ;AAAA,EAChB;AAAA,EAEA,IAAI,CAAC,eAAc,OAAO,UAAU,GAAG;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,OAAO,aAAa,OAAO;AAAA,EAE3B,IAAI,CAAC,aAAa,CAAC,UAAS,UAAU,OAAO,GAAG;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,QAAQ,YAAY;AAAA,EAEpB,IAAI,CAAC,eAAc,QAAQ,KAAK,GAAG;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,WAAW,QAAQ,QAAQ,OAAO;AAAA,IAChC,OAAO,YAAY,IAAI;AAAA,EACzB;AAAA;AAGF,IAAM,kBAAiB,UAAU,CAAC,MAAc,OAAoB;AAAA,EAClE,MAAM,UAAU,KAAK,KAAK;AAAA,EAE1B,IAAI,CAAC,WAAW,CAAC,QAAQ,WAAW,QAAQ,GAAG;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,QAAQ,MAAM,uBAAsB;AAAA,EAEjD,IAAI;AAAA,EAEJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,IAAI;AAAA,IACxB,MAAM;AAAA,IACN;AAAA;AAAA,EAGF,OAAO,cAAa,QAAQ,KAAK;AAAA;AAGnC,IAAM,mBAAmB,UAAU,CAAC,OAAiB,OAAoB;AAAA,EACvE,WAAW,QAAQ,OAAO;AAAA,IACxB,OAAO,gBAAe,MAAM,KAAK;AAAA,EACnC;AAAA;AAGF,IAAM,eAAc,gBAAgB,CAClC,QACA,SACA,OACA,QACA;AAAA,EACA,IAAI,aAAa;AAAA,EAEjB,SACM,SAAS,MAAM,OAAO,KAAK,EAC/B,CAAC,OAAO,QAAQ,CAAC,QAAQ,SAEzB,SAAS,MAAM,OAAO,KAAK,GAC3B;AAAA,IACA,cAAc,QAAQ,OAAO,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,IAC3D,MAAM,QAAQ,WAAW,MAAM;AAAA,CAAI;AAAA,IACnC,aAAa,MAAM,IAAI,KAAK;AAAA,IAE5B,OAAO,iBAAiB,OAAO,KAAK;AAAA,EACtC;AAAA,EAEA,IAAI,WAAW,KAAK,GAAG;AAAA,IACrB,OAAO,gBAAe,YAAY,KAAK;AAAA,EACzC;AAAA,EAEA,MAAM,EAAE,MAAM,QAAiB,OAAO,MAAM,MAAM;AAAA;AAGpD,IAAM,kBAAiB,gBAAgB,CACrC,MACA,QACA;AAAA,EACA,MAAM,SAAS,KAAK,UAAU;AAAA,EAC9B,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,QAAqB;AAAA,IACzB,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,IACF,OAAO,aAAY,QAAQ,SAAS,OAAO,MAAM;AAAA,YACjD;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;AAIvB,IAAM,oBAAoB,gBAAgB,CACxC,SACA,QACA,OACA,MACA,QACA,YAA0B,OAC1B;AAAA,EACA,MAAM,MAAM,GAAG,yBAAyB,2CAA2C;AAAA,EAEnF,MAAM,WAAW,MAAM,UAAU,KAAK;AAAA,OACjC,WAAU,GAAG;AAAA,IAChB,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,SAAS;AAAA,MACP,gBAAgB;AAAA,IAClB;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACF,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,MAAM,IAAI,MAAM,oBAAoB,SAAS,WAAW,WAAW;AAAA,EACrE;AAAA,EAEA,IAAI,CAAC,SAAS,MAAM;AAAA,IAClB,MAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAAA,EAEA,OAAO,gBAAe,SAAS,MAAM,MAAM;AAAA;AAG7C,IAAM,sBAAqB,CAAC,QAA4C;AAAA,EACtE,IAAI,CAAC,KAAK;AAAA,IACR,OAAO,IAAI;AAAA,EACb;AAAA,EAEA,IAAI,eAAe,KAAK;AAAA,IACtB,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,IAAI,IAAI,GAAG;AAAA;AAGb,IAAM,UAAS,CAAC,WAA2C;AAAA,EAChE,MAAM,UAAU,OAAO,WAAW;AAAA,EAClC,MAAM,cAAc,oBAAmB,OAAO,WAAW;AAAA,EAEzD,MAAM,kBAAkB,OACtB,QACA,QACA,SAEA,aACE,OAAO,OAAO,SAAS,OACrB,GAAG,yBAAyB,mBAAmB,OAAO,MAAM,QAAQ,aAAa,EAAE,CAAC,IAAI,UACxF;AAAA,IACE,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,kBAAkB,OAAO;AAAA,IAC3B;AAAA,IACA,QAAQ,OAAO,SAAS;AAAA,IACxB,MAAM,OAAO,KAAK,UAAU,IAAI,IAAI;AAAA,IACpC,QAAQ,OAAO,SACX,YAAY,IAAI,CAAC,OAAO,QAAQ,YAAY,QAAQ,KAAM,CAAC,CAAC,IAC5D,YAAY,QAAQ,KAAM;AAAA,EAChC,CACF,CACF;AAAA,EACF,OAAO,qBACL;AAAA,IACE,eAAe;AAAA,MACb,WAAW,iBAAiB,OAAO,WAAW;AAAA,QAC5C,MAAM,OAAO,MAAM,gBAAgB,QAAQ,EAAE;AAAA,QAC7C,OAAO;AAAA,UACL,gBAAgB,mBAAmB,KAAK,eAAe;AAAA,UACvD,iBAAiB,mBAAmB,KAAK,gBAAgB;AAAA,QAC3D;AAAA,OACD;AAAA,MACD,aAAa,OAAO,WAAW;AAAA,QAC7B,MAAM,OAAO,kBAAiB,QAAQ,KAAK;AAAA,QAC3C,OAAO,iBAEH,MAAM,gBAAgB,QAAQ,gBAAgB;AAAA,UAC5C,wBAAwB;AAAA,eACnB;AAAA,YACH,OAAO,UAAU,OAAO,MAAM,QAAQ,aAAa,EAAE;AAAA,UACvD;AAAA,QACF,CAAC,GACD,WACJ;AAAA;AAAA,IAEJ;AAAA,IACA,QAAQ,CAAC,WAAmC;AAAA,MAC1C,MAAM,eAAe,YAAY,IAAI,OAAO,KAAK;AAAA,MACjD,MAAM,OAAO,kBAAiB,QAAQ,YAAY;AAAA,MAElD,OAAO,kBACL,SACA,OAAO,QACP,OAAO,OACP,MACA,OAAO,QACP,OAAO,KACT;AAAA;AAAA,EAEJ,GACA,QACF;AAAA;;AC9fF,IAAM,aAAY,CAAC,QACjB,IAAI,WAAW,UAAU,IAAI,EAAE,UAAU,QAAQ,IAAI,CAAC;AAiBxD,IAAM,oBAAmB;AACzB,IAAM,cAAc;AACpB,IAAM,qBAAqB;AAC3B,IAAM,uBAAsB;AAC5B,IAAM,sBAAqB;AAE3B,IAAM,YAAW,CAAC,QAChB,OAAO,QAAQ,YAAY,QAAQ;AAErC,IAAM,mBAAkB,CAAC,UAAkC;AAAA,EACzD,IAAI,MAAM,SAAS,YAAY;AAAA,IAC7B,OAAO;AAAA,MACL,WAAW,MAAM;AAAA,MACjB,UAAU,MAAM;AAAA,MAChB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AAAA,MACL,QAAQ,MAAM;AAAA,MACd,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,YAAY;AAAA,IAC7B,OAAO;AAAA,MACL,QAAQ,MAAM;AAAA,MACd,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,eAAe;AAAA,IAChC,OAAO;AAAA,MACL,SAAS,MAAM,QAAQ,SACnB;AAAA,QACE,EAAE,MAAM,MAAM,SAAS,MAAM,OAAO;AAAA,QACpC,GAAG,MAAM,OAAO,IAAI,CAAC,YAAY,EAAE,QAAQ,MAAM,QAAQ,EAAE;AAAA,MAC7D,IACA,MAAM;AAAA,MACV,aAAa,MAAM;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,YAAY;AAAA,IAC7B,IAAI,MAAM;AAAA,MAAc,OAAO,KAAK,MAAM,aAAa;AAAA,IACvD,OAAO;AAAA,MACL,IAAI,MAAM;AAAA,MACV,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,WAAW,MAAM,SAAS,SAAS;AAAA,IACpD,MAAM,IAAI,MAAM,8BAA8B,MAAM,qBAAqB;AAAA,EAC3E;AAAA,EAEA,IAAI,MAAM,SAAS,iBAAiB;AAAA,IAClC,OAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AAAA,EAEA,OAAO,EAAE,MAAM,MAAM,SAAS,MAAM,OAAO;AAAA;AAG7C,IAAM,aAAa,CAAC,SAA8C;AAAA,EAChE,SACE,OAAO,IAAI,YAAY,WACnB,IAAI,UACJ,IAAI,QAAQ,IAAI,gBAAe;AAAA,EACrC,MAAM,IAAI,SAAS,WAAW,SAAS,IAAI;AAC7C;AAEA,IAAM,qBAAoB,CAAC,UAAoC;AAAA,KACzD,KAAK,eAAe,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,EACnD,aAAa,KAAK;AAAA,EAClB,cAAc,KAAK;AAAA,EACnB,MAAM,KAAK;AACb;AAIA,IAAM,mBAAmB;AAAA,EACvB,MAAM;AAAA,EACN,MAAM;AACR;AACO,IAAM,0BAA0B;AAEvC,IAAM,uBAAuB,CAAC,cAAoC;AAAA,EAChE,OAAO;AAAA,IACL;AAAA,SACM,SAAS,4BAA4B,YACrC,CAAC,IACD;AAAA,QACE,gBAAgB;AAAA,UACd,MAAM;AAAA,UACN,OAAO,SAAS;AAAA,QAClB;AAAA,MACF;AAAA,SACA,SAAS,cAAc,SACvB,EAAE,eAAe,CAAC,GAAG,SAAS,YAAY,EAAE,IAC5C,CAAC;AAAA,SACD,SAAS,iBAAiB,YAC1B,CAAC,IACD,EAAE,MAAM,EAAE,MAAM,aAAa,OAAO,SAAS,aAAa,EAAE;AAAA,MAChE,SAAS,EAAE,MAAM,gBAAgB,OAAO,SAAS,mBAAmB;AAAA,MACpE,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,IAAM,oBAAoB,CACxB,WAC4B;AAAA,EAC5B,MAAM,MAAM,OAAO,iBAAiB;AAAA,EACpC,IAAI,QAAQ;AAAA,IAAW,OAAO,CAAC;AAAA,EAC/B,IAAI,CAAC,UAAS,GAAG,GAAG;AAAA,IAClB,MAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AAAA,EACA,IAAI,IAAI,gBAAgB,aAAa,CAAC,MAAM,QAAQ,IAAI,WAAW,GAAG;AAAA,IACpE,MAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,gBAAgB,CAAC,YAA2C;AAAA,EAChE,WAAW,UAAU,WAAW,CAAC,GAAG;AAAA,IAClC,IAAI,CAAC,UAAU,OAAO,SAAS,KAAK,GAAG;AAAA,MACrC,MAAM,IAAI,MACR,8EACF;AAAA,IACF;AAAA,EACF;AAAA;AAGF,IAAM,gBAAgB,CAAC,SAA8B;AAAA,EACnD,MAAM,aAAa,KAAK,cAAc,CAAC;AAAA,EACvC,IAAI,WAAW,kBAAkB,WAAW,gBAAgB;AAAA,IAC1D,MAAM,IAAI,MACR,yEACF;AAAA,EACF;AAAA,EACA,cAAc,WAAW,cAAc;AAAA,EACvC,cAAc,WAAW,cAAc;AAAA,EACvC,IACE,WAAW,YAAY,cACtB,CAAC,OAAO,UAAU,WAAW,OAAO,KAAK,WAAW,UAAU,IAC/D;AAAA,IACA,MAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAAA,EACA,IACE,WAAW,sBAAsB,aACjC,WAAW,YAAY,uBACvB;AAAA,IACA,MAAM,IAAI,MACR,qEACF;AAAA,EACF;AAAA,EACA,MAAM,WAAW,WAAW;AAAA,EAC5B,IACE,YACA,CAAC,SAAS,QACV,CAAC,SAAS,WACV,CAAC,SAAS,UACV,CAAC,SAAS,UACV;AAAA,IACA,MAAM,IAAI,MACR,iFACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,OACD,WAAW,iBACX,EAAE,iBAAiB,CAAC,GAAG,WAAW,cAAc,EAAE,IAClD,CAAC;AAAA,OACD,WAAW,iBACX,EAAE,iBAAiB,CAAC,GAAG,WAAW,cAAc,EAAE,IAClD,CAAC;AAAA,OACD,WAAW,iBACX,EAAE,iBAAiB,CAAC,GAAG,WAAW,cAAc,EAAE,IAClD,CAAC;AAAA,OACD,WAAW,YAAY,YACvB,CAAC,IACD,EAAE,UAAU,WAAW,QAAQ;AAAA,IACnC,MAAM;AAAA,OACF,WAAW,oBACX,EAAE,oBAAoB,WAAW,kBAAkB,IACnD,CAAC;AAAA,IACL,MAAM,WAAW,WAAW;AAAA,OACxB,WACA;AAAA,MACE,eAAe;AAAA,WACT,SAAS,OAAO,EAAE,MAAM,SAAS,KAAK,IAAI,CAAC;AAAA,WAC3C,SAAS,UAAU,EAAE,SAAS,SAAS,QAAQ,IAAI,CAAC;AAAA,WACpD,SAAS,SAAS,EAAE,QAAQ,SAAS,OAAO,IAAI,CAAC;AAAA,WACjD,SAAS,WAAW,EAAE,UAAU,SAAS,SAAS,IAAI,CAAC;AAAA,QAC3D,MAAM;AAAA,MACR;AAAA,IACF,IACA,CAAC;AAAA,EACP;AAAA;AAOF,IAAM,wBAAwB,CAAC,QAA4C;AAAA,EACzE,MAAM,eAAe,EAAE,MAAM,YAAY;AAAA,EAEzC,IAAI,OAAO,IAAI,YAAY,UAAU;AAAA,IACnC,OAAO;AAAA,MACL,SAAS;AAAA,QACP,EAAE,eAAe,cAAc,MAAM,IAAI,SAAS,MAAM,OAAO;AAAA,MACjE;AAAA,MACA,MAAM,IAAI;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,IAAI,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO;AAAA,EAErC,MAAM,SAAS,CAAC,GAAG,IAAI,OAAO;AAAA,EAC9B,OAAO,OAAO,SAAS,KAAK;AAAA,OACvB,OAAO,OAAO,SAAS;AAAA,IAC1B,eAAe;AAAA,EACjB;AAAA,EAEA,OAAO,EAAE,SAAS,QAAQ,MAAM,IAAI,KAAK;AAAA;AAG3C,IAAM,oBAAmB,CACvB,QACA,eACA,kBACG;AAAA,EAGH,MAAM,UAAU,OAAO,iBAAiB;AAAA,EAIxC,MAAM,cAAc,OAAO,qBAAqB;AAAA,EAChD,MAAM,UAAU,kBAAkB,MAAM;AAAA,EAExC,MAAM,WAA+B,OAAO,SACzC,OAAO,CAAC,QAAQ,IAAI,SAAS,QAAQ,EACrC,IAAI,UAAU;AAAA,EAajB,IAAI,WAAW,SAAS,SAAS,GAAG;AAAA,IAClC,MAAM,YAAY,SAAS,SAAS;AAAA,IACpC,MAAM,OAAO,SAAS;AAAA,IACtB,IAAI,MAAM;AAAA,MACR,SAAS,aAAa,sBAAsB,IAAI;AAAA,IAClD;AAAA,IACA,MAAM,oBAAoB,SAAS,cACjC,CAAC,SAAS,UAAU,QAAQ,YAAY,KAAK,QAAQ,SAAS,MAChE;AAAA,IACA,MAAM,WAAW,SAAS;AAAA,IAC1B,IAAI,UAAU;AAAA,MACZ,SAAS,qBAAqB,sBAAsB,QAAQ;AAAA,IAC9D;AAAA,EACF;AAAA,EAGA,MAAM,MACJ,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;AAAA,EAE5D,MAAM,OAAgC;AAAA,IACpC,YAAY;AAAA,IACZ;AAAA,IACA,OAAO,OAAO;AAAA,IACd,QAAQ;AAAA,EACV;AAAA,EAEA,IAAI,OAAO,cAAc;AAAA,IACvB,KAAK,SAAS,cACV;AAAA,MACE;AAAA,QACE,eAAe,EAAE,MAAM,YAAY;AAAA,QACnC,MAAM,OAAO;AAAA,QACb,MAAM;AAAA,MACR;AAAA,IACF,IACA,OAAO;AAAA,EACb;AAAA,EAEA,MAAM,cACJ,OAAO,OAAO,IAAI,kBAAiB,KAAK,CAAC;AAAA,EAC3C,MAAM,YAAY,YAAY,KAAK,CAAC,SAAS,KAAK,kBAAkB,IAAI;AAAA,EAIxE,MAAM,aAAa,YAAY,cAC7B,CAAC,SAAS,KAAK,kBAAkB,IACnC;AAAA,EACA,IAAI,WAAW,cAAc,GAAG;AAAA,IAC9B,YAAY,cAAc;AAAA,SACrB,YAAY;AAAA,MACf,eAAe,EAAE,MAAM,YAAY;AAAA,IACrC;AAAA,EACF;AAAA,EACA,MAAM,eAAe,QAAQ,eAAe,CAAC,GAAG,IAAI,aAAa;AAAA,EACjE,MAAM,QAAQ;AAAA,IACZ,GAAG;AAAA,IACH,GAAI,YAAY,CAAC,gBAAgB,IAAI,CAAC;AAAA,IACtC,GAAG;AAAA,EACL;AAAA,EACA,IAAI,MAAM,SAAS,GAAG;AAAA,IACpB,KAAK,QAAQ;AAAA,IACb,IAAI,OAAO,eAAe,UAAU,OAAO,eAAe,QAAQ;AAAA,MAChE,KAAK,cAAc,EAAE,MAAM,OAAO,WAAW;AAAA,IAC/C,EAAO,SAAI,OAAO,eAAe,YAAY;AAAA,MAC3C,KAAK,cAAc,EAAE,MAAM,MAAM;AAAA,IACnC,EAAO,SAAI,OAAO,cAAc,OAAO,OAAO,eAAe,UAAU;AAAA,MACrE,KAAK,cAAc,EAAE,MAAM,OAAO,WAAW,MAAM,MAAM,OAAO;AAAA,IAClE;AAAA,EACF;AAAA,EAEA,IAAI,OAAO,iBAAiB,OAAO,cAAc,SAAS,GAAG;AAAA,IAC3D,KAAK,iBAAiB,OAAO;AAAA,EAC/B;AAAA,EAEA,IAAI,OAAO,oBAAoB;AAAA,IAC7B,KAAK,qBAAqB,qBAAqB,OAAO,kBAAkB;AAAA,EAC1E;AAAA,EAEA,MAAM,OACJ,OAAO,aAAa,OAAO,UAAU,WAAW,SAC5C,uBAAuB,OAAO,KAAK,IACnC;AAAA,EACN,IAAI,OAAO,WAAW,WAAW;AAAA,IAAQ,KAAK,WAAW,EAAE,MAAM,WAAW;AAAA,EAC5E,MAAM,iBAAiB,SAAS;AAAA,EAKhC,IAAI,CAAC,kBAAkB,0BAA0B,OAAO,KAAK,GAAG;AAAA,IAC9D,IAAI,OAAO,OAAO,gBAAgB,UAAU;AAAA,MAC1C,KAAK,cAAc,OAAO;AAAA,IAC5B;AAAA,IACA,IAAI,OAAO,OAAO,SAAS;AAAA,MAAU,KAAK,QAAQ,OAAO;AAAA,EAC3D;AAAA,EAEA,IAAI,SAAS,YAAY,SAAS,YAAY;AAAA,IAC5C,KAAK,WAAW,EAAE,MAAM,WAAW;AAAA,IACnC,IAAI,SAAS,YAAY,OAAO,WAAW;AAAA,MACzC,MAAM,SAAS,qBAAqB,OAAO,OAAO,OAAO,SAAS;AAAA,MAClE,IAAI;AAAA,QAAQ,KAAK,gBAAgB,EAAE,OAAO;AAAA,IAC5C;AAAA,EACF,EAAO,SAAI,SAAS,YAAY,OAAO,WAAW;AAAA,IAChD,MAAM,SAAS,oBAAoB,OAAO,SAAS;AAAA,IACnD,IAAI,QAAQ;AAAA,MACV,KAAK,WAAW,EAAE,eAAe,QAAQ,MAAM,UAAU;AAAA,MAEzD,KAAK,aAAa,KAAK,IAAI,KAAK,SAAS,GAAG;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,eAAe,CAAC,SAAiB;AAAA,EACrC,IAAI,KAAK,WAAW,SAAS,GAAG;AAAA,IAC9B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO,KAAK,MAAM,oBAAmB;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,WAAW,QAAQ,GAAG;AAAA,IAC7B,OAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO,KAAK,MAAM,mBAAkB;AAAA,IACtC;AAAA,EACF;AAAA,EAEA;AAAA;AAGF,IAAM,kBAAkB,CACtB,KACA,eACG;AAAA,EACH,IAAI,CAAC,YAAY;AAAA,IACf,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,WAAW,UAAU,SAAS;AAAA,IAChC,OAAO,EAAE,WAAW,IAAI,WAAW,WAAW,WAAW,MAAM;AAAA,EACjE;AAAA,EAEA,OAAO,EAAE,WAAW,WAAW,OAAO,WAAW,IAAI,UAAU;AAAA;AAGjE,IAAM,kBAAkB,CAAC,UACvB,MACG,MAAM;AAAA,CAAI,EACV,OAAO,CAAC,KAAK,SAAS,gBAAgB,KAAK,aAAa,IAAI,CAAC,GAAG;AAAA,EAC/D,WAAW;AAAA,EACX,WAAW;AACb,CAAC;AAEL,IAAM,YAAY,CAAC,SAAiB;AAAA,EAClC,IAAI;AAAA,IACF,MAAM,SAAkB,KAAK,MAAM,IAAI;AAAA,IAEvC,OAAO;AAAA,IACP,MAAM;AAAA,IACN;AAAA;AAAA;AAIJ,IAAM,eAAe,CAAC,SAAiB;AAAA,EACrC,MAAM,SAAS,UAAU,IAAI;AAAA,EAE7B,IAAI,UAAS,MAAM,GAAG;AAAA,IACpB,OAAO;AAAA,EACT;AAAA,EAEA;AAAA;AAGF,IAAM,YAAY,CAAC,KAA8B,QAAgB;AAAA,EAC/D,MAAM,MAAM,IAAI;AAAA,EAEhB,IAAI,UAAS,GAAG,GAAG;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EAEA;AAAA;AAGF,IAAM,YAAY,CAAC,KAA8B,QAAgB;AAAA,EAC/D,MAAM,MAAM,IAAI;AAAA,EAEhB,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,YAAY,CAAC,KAA8B,QAAgB;AAAA,EAC/D,MAAM,MAAM,IAAI;AAAA,EAEhB,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EAEA,OAAO;AAAA;AAKT,IAAM,4BAA4B;AAClC,IAAM,6BAA6B;AAInC,IAAM,iBAAiB,CAAC,MAAc,UAAkB;AAAA,EACtD,SAAS,QAAQ,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AAAA,IAC3D,IAAI,KAAK,WAAW;AAAA,MAAM,SAAS;AAAA,IAC9B,SAAI,KAAK,WAAW;AAAA,MACvB,OAAO,EAAE,KAAK,QAAQ,GAAG,KAAK,KAAK,MAAM,QAAQ,GAAG,KAAK,EAAE;AAAA,EAC/D;AAAA,EAEA;AAAA;AAGF,IAAM,mBAAmB,CAAC,QAAgB;AAAA,EACxC,IAAI;AAAA,IACF,MAAM,QAAiB,KAAK,MAAM,IAAI,MAAM;AAAA,IAE5C,OAAO,OAAO,UAAU,WAAW,QAAQ;AAAA,IAC3C,MAAM;AAAA,IACN;AAAA;AAAA;AAOJ,IAAM,uBAAuB,CAAC,gBAAwB;AAAA,EACpD,MAAM,SAAiC,CAAC;AAAA,EACxC,IAAI,QAAQ;AAAA,EACZ,IAAI;AAAA,EACJ,IAAI,QAAQ;AAAA,EACZ,OAAO,QAAQ,YAAY,QAAQ;AAAA,IACjC,MAAM,YAAY,YAAY;AAAA,IAC9B,IAAI,cAAc,KAAK;AAAA,MACrB,MAAM,OAAO,eAAe,aAAa,KAAK;AAAA,MAC9C,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,IAAI,UAAU,KAAK,QAAQ,WAAW;AAAA,QACpC,MAAM,QAAQ,YAAY,MAAM,KAAK,GAAG,EAAE,UAAU;AAAA,QACpD,IAAI,MAAM,WAAW,GAAG;AAAA,UAAG,MAAM,KAAK;AAAA,MACxC,EAAO,SAAI,UAAU,KAAK,QAAQ,WAAW;AAAA,QAC3C,MAAM,QAAQ,iBAAiB,KAAK,GAAG;AAAA,QACvC,IAAI,UAAU,aAAa,MAAM,UAAU;AAAA,UACzC,OAAO,OAAO;AAAA,QAChB,MAAM;AAAA,MACR;AAAA,MACA,QAAQ,KAAK;AAAA,MACb;AAAA,IACF;AAAA,IACA,IAAI,cAAc,OAAO,cAAc;AAAA,MAAK,SAAS;AAAA,IAChD,SAAI,cAAc,OAAO,cAAc;AAAA,MAAK,SAAS;AAAA,IACrD,SAAI,cAAc,OAAO,UAAU;AAAA,MAAG,MAAM;AAAA,IACjD,SAAS;AAAA,EACX;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,oBAAoB,CAAC,UAAsC;AAAA,EAC/D,MAAM,oBAAoB,MAAM,cAAc;AAAA,EAE9C,OAAO;AAAA,IACL,QAAQ,qBAAqB,MAAM,aAAa;AAAA,IAChD,IAAI,MAAM;AAAA,IACV,MAAM,MAAM;AAAA,IACZ,eAAe,MAAM,cAAc;AAAA,IACnC,MAAM;AAAA,EACR;AAAA;AAGF,IAAM,0BAA0B,CAC9B,QACA,UACG;AAAA,EACH,MAAM,QAAQ,UAAU,QAAQ,eAAe;AAAA,EAE/C,IAAI,SAAS,MAAM,SAAS,YAAY;AAAA,IACtC,MAAM,gBAAgB,UAAU,OAAO,IAAI;AAAA,IAC3C,MAAM,kBAAkB,UAAU,OAAO,MAAM;AAAA,IAC/C,MAAM,gBAAgB;AAAA,IACtB,MAAM,oBAAoB;AAAA,IAC1B,MAAM,kBAAkB;AAAA,IACxB,MAAM,uBAAuB;AAAA,IAE7B,OAAO,kBAAkB,KAAK;AAAA,EAChC,EAAO,SAAI,SAAS,MAAM,SAAS,YAAY;AAAA,IAC7C,MAAM,kBAAkB;AAAA,IACxB,MAAM,oBAAoB;AAAA,IAC1B,MAAM,uBAAuB;AAAA,EAC/B,EAAO;AAAA,IACL,MAAM,kBAAkB;AAAA,IACxB,MAAM,uBACJ,SAAS,MAAM,SAAS,SAAS,KAAK,MAAM,IAAI;AAAA,IAClD,MAAM,yBAAyB;AAAA;AAAA,EAGjC;AAAA;AAGF,IAAM,0BAA0B,CAC9B,QACA,UACG;AAAA,EACH,MAAM,QAAQ,UAAU,QAAQ,OAAO;AAAA,EAEvC,IAAI,CAAC,OAAO;AAAA,IACV;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,kBAAkB;AAAA,IACnC,OAAO;AAAA,MACL,SAAS,UAAU,OAAO,UAAU;AAAA,MACpC,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,cAAc;AAAA,IAC/B,OAAO;AAAA,MACL,SAAS,UAAU,OAAO,MAAM;AAAA,MAChC,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,mBAAmB;AAAA,IACpC,MAAM,WAAW,UAAU,OAAO,UAAU;AAAA,IAC5C,IACE,UAAU,SAAS,gCACnB,UAAU,UAAU,KAAK,GACzB;AAAA,MACA,OAAO;AAAA,QACL,SAAS,UAAU,UAAU,YAAY,KAAK;AAAA,QAC9C,OAAO,UAAU,UAAU,OAAO,KAAK;AAAA,QACvC,MAAM;AAAA,QACN,KAAK,UAAU,UAAU,KAAK;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,SAAS,oBAAoB;AAAA,IACrC,IAAI,MAAM,sBAAsB;AAAA,MAC9B,MAAM,0BAA0B,UAAU,OAAO,cAAc;AAAA,IACjE,EAAO;AAAA,MACL,MAAM,iBAAiB,UAAU,OAAO,cAAc;AAAA,MACtD,IACE,MAAM,cAAc,SAAS,MAAM,qBACnC;AAAA,QAEA,OAAO,kBAAkB,KAAK;AAAA;AAAA,EAEpC;AAAA,EAEA,IAAI,MAAM,SAAS,mBAAmB;AAAA,IACpC,MAAM,qBAAqB,UAAU,OAAO,WAAW;AAAA,EACzD;AAAA,EAEA;AAAA;AAGF,IAAM,yBAAyB,CAAC,UAA6B;AAAA,EAE3D,IAAI,MAAM,mBAAmB,MAAM,mBAAmB;AAAA,IACpD,MAAM,kBAAkB;AAAA,IACxB,MAAM,YAAY,MAAM;AAAA,IACxB,MAAM,oBAAoB;AAAA,IAE1B,OAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,MAAM,sBAAsB;AAAA,IAC9B,MAAM,OAAO,KAAK,MAAM,qBAAqB;AAAA,IAC7C,IAAI,MAAM,wBAAwB;AAAA,MAChC,KAAK,QACH,aAAa,MAAM,sBAAsB,KACzC,MAAM;AAAA,IACV;AAAA,IACA,MAAM,uBAAuB;AAAA,IAC7B,MAAM,yBAAyB;AAAA,IAC/B,OAAO;AAAA,MACL;AAAA,MACA,UAAU,MAAM;AAAA,MAChB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,MAAM,eAAe;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,aAAa,MAAM,aAAa,KAAK,MAAM;AAAA,EAEzD,MAAM,QAAiB;AAAA,IACrB,IAAI,MAAM;AAAA,IACV;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,MAAM;AAAA,EACR;AAAA,EAEA,MAAM,gBAAgB;AAAA,EACtB,MAAM,kBAAkB;AAAA,EACxB,MAAM,gBAAgB;AAAA,EAEtB,OAAO;AAAA;AAGT,IAAM,gBAAe,CACnB,aACA,kBACG;AAAA,EACH,IAAI,CAAC,aAAa;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAAsB;AAAA,IAC1B,sBACE,UAAU,aAAa,yBAAyB,KAChD,eAAe,wBACf;AAAA,IACF,uBACE,UAAU,aAAa,6BAA6B,KACpD,eAAe,yBACf;AAAA,IACF,aACE,UAAU,aAAa,cAAc,KAAK,eAAe,eAAe;AAAA,IAC1E,cACE,UAAU,aAAa,eAAe,KACtC,eAAe,gBACf;AAAA,IACF,aAAa,UAAU,aAAa,MAAM,KAAK,eAAe;AAAA,IAC9D,iBACE,UAAU,aAAa,kBAAkB,KACzC,eAAe;AAAA,IACjB,8BACE,UACE,UAAU,aAAa,cAAc,KAAK,CAAC,GAC3C,yBACF,KAAK,eAAe;AAAA,EACxB;AAAA,EACA,MAAM,gBAAgB,UAAU,aAAa,iBAAiB;AAAA,EAC9D,IAAI,eAAe;AAAA,IACjB,WAAW,gBAAgB,OAAO,YAChC,OAAO,QAAQ,aAAa,EAAE,OAC5B,CAAC,UAAqC,OAAO,MAAM,OAAO,QAC5D,CACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,gBAAgB,CACpB,QACA,UACG;AAAA,EACH,MAAM,mBAAmB,UAAU,QAAQ,qBAAqB;AAAA,EAChE,MAAM,eAAe,UAAU,QAAQ,IAAI,KAAK;AAAA,EAChD,MAAM,QAAQ,UAAU,QAAQ,OAAO,KAAK;AAAA,EAC5C,MAAM,WAAW,UAAU,QAAQ,UAAU,KAAK;AAAA,EAClD,MAAM,cAAc,UAAU,QAAQ,cAAc,KAAK;AAAA,EACzD,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC;AAAA,IAChE;AAAA,EACF,MAAM,WAAW;AAAA,OACZ,MAAM;AAAA,IACT,cAAc,gBAAgB,MAAM,UAAU;AAAA,IAC9C,OAAO,SAAS,MAAM,UAAU;AAAA,IAChC,UAAU,YAAY,MAAM,UAAU;AAAA,IACtC,kBAAkB;AAAA,SACb,MAAM,UAAU;AAAA,SAChB;AAAA,IACL;AAAA,IACA,aAAa,eAAe,MAAM,UAAU;AAAA,EAC9C;AAAA;AAGF,IAAM,qBAAqB,CACzB,QACA,UACG;AAAA,EACH,MAAM,aAAa,UAAU,QAAQ,OAAO;AAAA,EAC5C,MAAM,QAAQ,cAAa,YAAY,MAAM,KAAK;AAAA,EAElD,MAAM,QAAQ,UAAU,QAAQ,OAAO;AAAA,EACvC,MAAM,aAAa,QAAQ,UAAU,OAAO,aAAa,IAAI;AAAA,EAC7D,IAAI;AAAA,IAAY,MAAM,aAAa;AAAA;AAGrC,IAAM,qBAAqB,CACzB,QACA,UACG;AAAA,EACH,MAAM,UAAU,UAAU,QAAQ,SAAS;AAAA,EAE3C,IAAI,CAAC,SAAS;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,UAAU,SAAS,OAAO;AAAA,EAC7C,MAAM,QAAQ,cAAa,YAAY,MAAM,KAAK;AAAA,EAClD,cAAc,SAAS,KAAK;AAAA;AAG9B,IAAM,cAAc,CAClB,QACA,UACG;AAAA,EACH,MAAM,QAAQ,UAAU,QAAQ,OAAO;AAAA,EACvC,MAAM,eAAe,QAAQ,UAAU,OAAO,SAAS,IAAI;AAAA,EAC3D,MAAM,kBAAkB,QAAQ,UAAU,OAAO,MAAM,IAAI;AAAA,EAC3D,MAAM,YAAY,QACd,UAAU,OAAO,YAAY,KAAK,kBAClC;AAAA,EAIJ,MAAM,YACJ,cAAc,yBACd,cAAc,yBACd,cAAc,0BACd,cAAc,YACd,oBAAoB,sBACpB,oBAAoB,sBACpB,oBAAoB;AAAA,EAEtB,MAAM,IAAI,cAAc;AAAA,IACtB,SAAS,gBAAgB;AAAA,IACzB,UAAU;AAAA,IACV,UAAU,MAAM;AAAA,IAChB;AAAA,IACA,MAAM,aAAa;AAAA,EACrB,CAAC;AAAA;AAGH,IAAM,eAAe,CACnB,WACA,QACA,UACG;AAAA,EACH,QAAQ;AAAA,SACD,uBAAuB;AAAA,MAC1B,OAAO,wBAAwB,QAAQ,KAAK;AAAA,IAC9C;AAAA,SAEK,uBAAuB;AAAA,MAC1B,OAAO,wBAAwB,QAAQ,KAAK;AAAA,IAC9C;AAAA,SAEK,sBAAsB;AAAA,MACzB,OAAO,uBAAuB,KAAK;AAAA,IACrC;AAAA,SAEK,iBAAiB;AAAA,MACpB,mBAAmB,QAAQ,KAAK;AAAA,MAChC,cAAc,QAAQ,KAAK;AAAA,MAE3B,OAAO,MAAM,QACT;AAAA,QACE,MAAM;AAAA,QACN,OAAO,MAAM;AAAA,QACb,UAAU,MAAM;AAAA,QAChB,OAAO;AAAA,MACT,IACA;AAAA,IACN;AAAA,SAEK,iBAAiB;AAAA,MACpB,mBAAmB,QAAQ,KAAK;AAAA,MAEhC,OAAO,MAAM,QACT;AAAA,QACE,MAAM;AAAA,QACN,OAAO,MAAM;AAAA,QACb,UAAU,MAAM;AAAA,QAChB,OAAO;AAAA,MACT,IACA;AAAA,IACN;AAAA,SAEK,gBAAgB;AAAA,MACnB,cAAc,QAAQ,KAAK;AAAA,MAC3B,OAAO;AAAA,QACL,YAAY,MAAM;AAAA,QAClB,UAAU,MAAM;AAAA,QAChB,MAAM;AAAA,QACN,OAAO,MAAM;AAAA,MACf;AAAA,IACF;AAAA,SAEK,SAAS;AAAA,MACZ,YAAY,QAAQ,KAAK;AAAA,MAEzB;AAAA,IACF;AAAA,aAES;AAAA,MACP;AAAA,IACF;AAAA;AAAA;AAIJ,IAAM,qBAAqB,CAAC,OAAe,UAA6B;AAAA,EACtE,IAAI,CAAC,MAAM,KAAK,GAAG;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,QAAQ,WAAW,cAAc,gBAAgB,KAAK;AAAA,EAEtD,IAAI,CAAC,WAAW;AAAA,IACd;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,aAAa,SAAS;AAAA,EAErC,IAAI,CAAC,QAAQ;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO,aAAa,WAAW,QAAQ,KAAK;AAAA;AAK9C,gBAAgB,eAAc,CAC5B,MACA,cACA,QACA;AAAA,EACA,MAAM,SAAS,KAAK,UAAU;AAAA,EAC9B,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,QAA2B;AAAA,IAC/B,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,OAAO;AAAA,IACP;AAAA,IACA,wBAAwB;AAAA,EAC1B;AAAA,EACA,IAAI;AAAA,IACF,OAAO,MAAM;AAAA,MACX,QAAQ,eAAe;AAAA,MAEvB,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MAC1C,IAAI;AAAA,QAAM;AAAA,MACV,MAAM,UACJ,MAAM,SAAS,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC,GACrD,MAAM;AAAA;AAAA,CAAM;AAAA,MACd,MAAM,SAAS,OAAO,IAAI,KAAK;AAAA,MAC/B,WAAW,SAAS,QAAQ;AAAA,QAC1B,MAAM,QAAQ,mBAAmB,OAAO,KAAK;AAAA,QAC7C,IAAI,CAAC;AAAA,UAAO;AAAA,QACZ,IAAI,MAAM,SAAS,gBAAgB,MAAM,kBAAkB;AAAA,UACzD,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,IAAI,MAAM;AAAA,YACV,MAAM,MAAM;AAAA,UACd;AAAA,QACF,MAAM;AAAA,QACN,IAAI,MAAM,SAAS;AAAA,UAAQ;AAAA,MAC7B;AAAA,IACF;AAAA,YACA;AAAA,IACA,MAAM,OAAO,OAAO,EAAE,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IAC3C,OAAO,YAAY;AAAA;AAAA;AAIvB,IAAM,iBAAiB,gBAAgB,CACrC,SACA,QACA,QACA,eACA,eACA,cACA;AAAA,EACA,MAAM,YAAY,kBAAiB,QAAQ,eAAe,aAAa;AAAA,EACvE,MAAM,OAAO,OAAO,uBAChB,OAAO,qBAAqB,WAAW,MAAM,IAC7C;AAAA,EAEJ,MAAM,SAAS,GAAG;AAAA,EAClB,MAAM,YAAY,OAAO,SAAS;AAAA,EAClC,MAAM,QAAQ,OAAO,cACjB,MAAM,QAAQ,QAAQ,OAAO,YAAY,CAAC,IAC1C,OAAO;AAAA,EACX,MAAM,kBACJ,OAAO,OAAO,YAAY,aACtB,MAAM,OAAO,QAAQ,MAAM,IAC1B,OAAO,WAAW,CAAC;AAAA,EAC1B,MAAM,iBAAiB,IAAI,QAAQ,eAAe;AAAA,EAClD,eAAe,IAAI,gBAAgB,kBAAkB;AAAA,EACrD,IAAI,KAAK,uBAAuB,WAAW;AAAA,IACzC,MAAM,SAAS,eAAe,IAAI,gBAAgB,KAAK,IACpD,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,OAAO,OAAO;AAAA,IACjB,IAAI,CAAC,MAAM,SAAS,uBAAuB;AAAA,MACzC,eAAe,IACb,kBACA,CAAC,GAAG,OAAO,uBAAuB,EAAE,KAAK,GAAG,CAC9C;AAAA,EACJ;AAAA,EACA,IAAI,OAAO,cAAc,UAAU;AAAA,IACjC,eAAe,IAAI,iBAAiB,UAAU,OAAO;AAAA,EACvD,EAAO;AAAA,IACL,eAAe,IAAI,qBAAqB,WAAW;AAAA,IACnD,eAAe,IAAI,aAAa,KAAK;AAAA;AAAA,EAEvC,MAAM,WAAW,MAAM,UAAU,QAAQ;AAAA,OACpC,WAAU,MAAM;AAAA,IACnB,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ,OAAO;AAAA,EACjB,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IAEtC,MAAM,cAAc,aAAa,cAAc,SAAS,QAAQ,SAAS;AAAA,EAC3E;AAAA,EAEA,IAAI,CAAC,SAAS,MAAM;AAAA,IAClB,MAAM,IAAI,cAAc;AAAA,MACtB,SAAS,GAAG;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,gBAAe,SAAS,MAAM,cAAc,OAAO,MAAM;AAAA;AAG3D,IAAM,YAAY,CAAC,WAA8C;AAAA,EACtE,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO;AAAA,IAC5B,MAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE,MAAM,UAAU,OAAO,WAAW;AAAA,EAClC,MAAM,gBAAgB,OAAO,aAAa;AAAA,EAC1C,MAAM,gBAAgB,OAAO,iBAAiB;AAAA,EAC9C,MAAM,eAAe,OAAO,gBAAgB;AAAA,EAE5C,MAAM,kBAAkB,OACtB,QACA,MACA,SACG;AAAA,IACH,MAAM,QAAQ,OAAO,cACjB,MAAM,OAAO,YAAY,IACzB,OAAO;AAAA,IACX,MAAM,UAAU,IAAI,QAClB,OAAO,OAAO,YAAY,aACtB,MAAM,OAAO,QAAQ,MAAM,IAC3B,OAAO,OACb;AAAA,IACA,QAAQ,IAAI,gBAAgB,kBAAkB;AAAA,IAC9C,IAAI,OAAO,cAAc;AAAA,MACvB,QAAQ,IAAI,iBAAiB,UAAU,OAAO;AAAA,IAC3C;AAAA,MACH,QAAQ,IAAI,qBAAqB,WAAW;AAAA,MAC5C,QAAQ,IAAI,aAAa,KAAK;AAAA;AAAA,IAEhC,OAAO,aACL,OAAO,OAAO,SAAS,OAAO,GAAG,UAAU,QAAQ;AAAA,MACjD,QAAQ,OAAO,SAAS;AAAA,MACxB;AAAA,MACA,MAAM,OAAO,KAAK,UAAU,IAAI,IAAI;AAAA,MACpC,QAAQ,OAAO,SACX,YAAY,IAAI,CAAC,OAAO,QAAQ,YAAY,QAAQ,KAAM,CAAC,CAAC,IAC5D,YAAY,QAAQ,KAAM;AAAA,IAChC,CAAC,CACH;AAAA;AAAA,EAKF,MAAM,kBAAkB,CAAC,WAAmC;AAAA,IAC1D,MAAM,QAAQ,kBAAiB,QAAQ,eAAe,aAAa;AAAA,IACnE,MAAM,OAAO,OAAO,uBAChB,OAAO,qBAAqB,OAAO,MAAM,IACzC;AAAA,IACJ,MAAM,UAAmC,CAAC;AAAA,IAC1C,WAAW,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,MACE,IAAI,KAAK,SAAS;AAAA,QAAW,QAAQ,OAAO,KAAK;AAAA,IACnD,MAAM,QAAQ,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AAAA,IACxD,MAAM,SAAS,MAAM,OACnB,CAAC,SACC,UAAS,IAAI,KACb,OAAO,KAAK,SAAS,YACrB,gHAAgH,KAC9G,KAAK,IACP,CACJ;AAAA,IACA,MAAM,QACJ,OAAO,SAAS,KAAK,KAAK,gBAAgB,YACrC,iBACA;AAAA,IACP,IAAI,OAAO,SAAS,GAAG;AAAA,MAGrB,MAAM,cAAc,MACjB,OAAO,CAAC,SAAS,CAAC,OAAO,SAAS,IAAI,CAAC,EACvC,IAAI,CAAC,SAAS;AAAA,QACb,IAAI,CAAC,UAAS,IAAI,KAAK,KAAK,kBAAkB;AAAA,UAAW,OAAO;AAAA,QAChE,QAAQ,eAAe,cAAc,WAAW;AAAA,QAChD,OAAO;AAAA,OACR;AAAA,MACH,IAAI,YAAY;AAAA,QAAQ,QAAQ,QAAQ;AAAA,MACnC;AAAA,eAAO,QAAQ;AAAA,MACpB,MAAM,SAAS,QAAQ;AAAA,MACvB,IACE,CAAC,YAAY,UACZ,UAAS,MAAM,KACd,OAAO,SAAS,UAChB,OAAO,KAAK,CAAC,SAAS,UAAS,IAAI,KAAK,KAAK,SAAS,OAAO,IAAI;AAAA,QAEnE,OAAO,QAAQ;AAAA,IACnB;AAAA,IACA,OAAO,EAAE,SAAS,MAAM;AAAA;AAAA,EAE1B,MAAM,gBAAgB;AAAA,IACpB,cAAc,CAAC,WAAmC;AAAA,MAChD,MAAM,QAAQ,kBAAiB,QAAQ,eAAe,aAAa;AAAA,MACnE,MAAM,OAAO,OAAO,uBAChB,OAAO,qBAAqB,OAAO,MAAM,IACzC;AAAA,MACJ,OAAO,mBAAmB,KAAK,UAAU;AAAA;AAAA,IAE3C,WAAW,iBACT,OAAO,WAAW;AAAA,MAChB,MAAM,OAAO,MAAM,gBACjB,QACA,cAAc,mBAAmB,OAAO,KAAK,GAC/C;AAAA,MACA,MAAM,UAAU,mBAAmB,KAAK,gBAAgB;AAAA,MACxD,OAAO;AAAA,QACL,gBAAgB;AAAA,QAChB,qBAAqB;AAAA,QACrB,iBAAiB,mBAAmB,KAAK,UAAU;AAAA,MACrD;AAAA,OAEF,OAAO,eAAe,OAAO,OAAO,YAAY,aAAa,IAAI,MACnE;AAAA,IACA,YAAY,CAAC,WACX,gBAAgB,MAAM,EAAE;AAAA,IAC1B,aAAa,OAAO,WAAmC;AAAA,MACrD,QAAQ,YAAY,gBAAgB,MAAM;AAAA,MAC1C,OAAO,iBACJ,MAAM,gBAAgB,QAAQ,6BAA6B,OAAO,GAChE,YACL;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO,qBACL;AAAA,IACE;AAAA,IACA,QAAQ,CAAC,WACP,eACE,SACA,QACA,QACA,eACA,eACA,YACF;AAAA,EACJ,GACA,YACF;AAAA;;AC5oCF,IAAM,oBAAmB;AACzB,IAAM,cAAc;AAEpB,IAAM,aAAsB,EAAE,MAAM,OAAO;AAE3C,IAAM,sBAAqB,CAAC,UAC1B,MAAM,IAAI,CAAC,UAAU;AAAA,EACnB,UAAU;AAAA,IACR,aAAa,KAAK;AAAA,IAClB,MAAM,KAAK;AAAA,IACX,YAAY,KAAK;AAAA,EACnB;AAAA,EACA,MAAM;AACR,EAAE;AAEJ,IAAM,kBAAiB,CAAC,QAAoD;AAAA,EAC1E,IAAI,OAAO,IAAI,YAAY,UAAU;AAAA,IACnC,OAAO,CAAC,EAAE,SAAS,IAAI,SAAS,MAAM,IAAI,KAAK,CAAC;AAAA,EAClD;AAAA,EAEA,MAAM,UAA2B,CAAC;AAAA,EAClC,MAAM,gBAAgB,IAAI,QAAQ,OAChC,CAAC,UAAU,MAAM,SAAS,UAC5B;AAAA,EACA,MAAM,mBAAmB,IAAI,QAAQ,OACnC,CAAC,UAAU,MAAM,SAAS,aAC5B;AAAA,EAEA,IAAI,cAAc,SAAS,GAAG;AAAA,IAC5B,QAAQ,KAAK;AAAA,MACX,SAAS;AAAA,MACT,MAAM;AAAA,MACN,YAAY,cAAc,IAAI,CAAC,WAAW;AAAA,QACxC,UAAU;AAAA,UACR,WACE,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,OAC/C,KAAK,MAAM,MAAM,IACjB,CAAC;AAAA,UACP,MAAM,MAAM;AAAA,QACd;AAAA,MACF,EAAE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EAEA,WAAW,SAAS,kBAAkB;AAAA,IACpC,MAAM,UAAU,MAAM,UAAU,CAAC,GAAG,QAAQ,CAAC,WAC3C,OAAO,SAAS,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,CAC9C;AAAA,IACA,QAAQ,KAAK;AAAA,MACX,SAAS,OAAO,MAAM,YAAY,WAAW,MAAM,UAAU;AAAA,SACzD,OAAO,SAAS,IAAI,EAAE,OAAO,IAAI,CAAC;AAAA,MACtC,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,oBAAmB,CAAC,WAAmC;AAAA,EAC3D,MAAM,WAA4B,OAAO,SAAS,QAAQ,eAAc;AAAA,EAExE,IAAI,OAAO,cAAc;AAAA,IACvB,SAAS,QAAQ,EAAE,SAAS,OAAO,cAAc,MAAM,SAAS,CAAC;AAAA,EACnE;AAAA,EAEA,MAAM,OAAgC;AAAA,IACpC;AAAA,IACA,OAAO,OAAO;AAAA,IACd,QAAQ;AAAA,EACV;AAAA,EAEA,IAAI,OAAO,SAAS,OAAO,MAAM,SAAS,GAAG;AAAA,IAC3C,KAAK,QAAQ,oBAAmB,OAAO,KAAK;AAAA,EAC9C;AAAA,EAEA,MAAM,UAAmC,CAAC;AAAA,EAC1C,IAAI,OAAO,OAAO,gBAAgB;AAAA,IAChC,QAAQ,cAAc,OAAO;AAAA,EAC/B,IAAI,OAAO,OAAO,SAAS;AAAA,IAAU,QAAQ,QAAQ,OAAO;AAAA,EAC5D,IAAI,OAAO,OAAO,cAAc;AAAA,IAC9B,QAAQ,cAAc,OAAO;AAAA,EAC/B,IAAI,OAAO,iBAAiB,OAAO,cAAc,SAAS;AAAA,IACxD,QAAQ,OAAO,OAAO;AAAA,EACxB,IAAI,OAAO,OAAO,SAAS;AAAA,IAAU,QAAQ,OAAO,OAAO;AAAA,EAC3D,IAAI,OAAO,OAAO,qBAAqB;AAAA,IACrC,QAAQ,oBAAoB,OAAO;AAAA,EACrC,IAAI,OAAO,OAAO,oBAAoB;AAAA,IACpC,QAAQ,mBAAmB,OAAO;AAAA,EACpC,IAAI,OAAO,KAAK,OAAO,EAAE,SAAS,GAAG;AAAA,IACnC,KAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,OAAO,gBAAgB,SAAS,eAAe;AAAA,IACjD,KAAK,SAAS;AAAA,EAChB,EAAO,SAAI,OAAO,gBAAgB,SAAS,eAAe;AAAA,IACxD,KAAK,SAAS,OAAO,eAAe;AAAA,EACtC;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,YAAW,CAAC,QAChB,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAE/D,IAAM,eAAe,CAAC,SAAiB;AAAA,EACrC,IAAI;AAAA,IACF,MAAM,SAAkB,KAAK,MAAM,IAAI;AAAA,IACvC,IAAI,UAAS,MAAM,GAAG;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,IAAM,iBAAiB,CAAC,WAAiD;AAAA,EACvE,MAAM,kBACJ,OAAO,OAAO,sBAAsB,WAChC,OAAO,oBACP;AAAA,EACN,MAAM,YACJ,OAAO,OAAO,eAAe,WAAW,OAAO,aAAa;AAAA,EAC9D,MAAM,gBACJ,OAAO,OAAO,mBAAmB,WAC7B,OAAO,iBACP;AAAA,EAEN,MAAM,iBACJ,oBAAoB,aAAa,cAAc;AAAA,EACjD,IAAI,gBAAgB;AAAA,IAClB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,aAAa,mBAAmB;AAAA,QAChC,cAAc,aAAa;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,kBAAkB,WAAW;AAAA,IAC/B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,EAAE,aAAa,aAAa,cAAc,YAAY;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,MAAM,OAAO;AAAA;AAGxB,IAAM,iBAAiB,CAAC,aAA8B;AAAA,EACpD;AAAA,EACA,MAAM;AACR;AAEA,IAAM,mBAAmB,CAAC,YAAqC;AAAA,EAC7D,MAAM,YAAY,QAAQ;AAAA,EAE1B,IAAI,CAAC,MAAM,QAAQ,SAAS,KAAK,UAAU,WAAW,GAAG;AAAA,IACvD,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,OAAO,UACJ,OAAO,SAAQ,EACf,OAAO,CAAC,SAAS,UAAS,KAAK,QAAQ,CAAC,EACxC,IAAI,CAAC,SAAS;AAAA,IACb,MAAM,OAAO,KAAK;AAAA,IAElB,IAAI,CAAC,UAAS,IAAI,GAAG;AAAA,MACnB,OAAO;AAAA,QACL,IAAI,OAAO,WAAW;AAAA,QACtB,OAAO,CAAC;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,IAAI,OAAO,WAAW;AAAA,MACtB,OAAO,KAAK,aAAa,CAAC;AAAA,MAC1B,MAAM,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;AAAA,MAClD,MAAM;AAAA,IACR;AAAA,GACD;AAAA;AAGL,IAAM,gBAAgB,CAAC,WAAoC;AAAA,EACzD,QAAQ,YAAY;AAAA,EAEpB,IAAI,CAAC,UAAS,OAAO,GAAG;AAAA,IACtB,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,aAAa,iBAAiB,OAAO;AAAA,EAE3C,IAAI,WAAW,SAAS,GAAG;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EAEA,QAAQ,YAAY;AAAA,EAEpB,IAAI,OAAO,YAAY,YAAY,CAAC,SAAS;AAAA,IAC3C,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,OAAO,CAAC,eAAe,OAAO,CAAC;AAAA;AAGjC,IAAM,cAAc,CAAC,SAAiB;AAAA,EACpC,MAAM,UAAU,KAAK,KAAK;AAAA,EAE1B,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAM,SAAS,aAAa,OAAO;AAAA,EAEnC,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,IAAI,OAAO,SAAS,MAAM;AAAA,IACxB,OAAO,CAAC,eAAe,MAAM,CAAC;AAAA,EAChC;AAAA,EAEA,OAAO,cAAc,MAAM;AAAA;AAG7B,IAAM,uBAAuB,CAAC,UAC5B,MAAM,QAAiB,WAAW;AAEpC,IAAM,mBAAmB,OACvB,QACA,SACA,QACA,WACG;AAAA,EACH,MAAM,cAAyB,CAAC;AAAA,EAEhC,IAAI,QAAQ,SAAS;AAAA,IACnB,OAAO;AAAA,MACL,WAAW;AAAA,MACX,eAAe;AAAA,MACf,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,MAAM,OAAO,KAAK;AAAA,EACjC,QAAQ,MAAM,UAAU;AAAA,EAExB,IAAI,MAAM;AAAA,IACR,OAAO;AAAA,MACL,WAAW;AAAA,MACX,eAAe;AAAA,MACf,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,MAAM,gBAAgB,SAAS,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC;AAAA,EACrE,MAAM,QAAQ,cAAc,MAAM;AAAA,CAAI;AAAA,EACtC,MAAM,YAAY,MAAM,IAAI,KAAK;AAAA,EACjC,MAAM,YAAY,qBAAqB,KAAK;AAAA,EAC5C,MAAM,WAAW,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EAExD,OAAO,EAAE,WAAW,eAAe,WAAW,SAAS;AAAA;AAGzD,IAAM,oBAAoB,gBAAgB,CACxC,MACA,QACA;AAAA,EACA,MAAM,SAAS,KAAK,UAAU;AAAA,EAE9B,IAAI;AAAA,IACF,OAAO,uBAAuB,QAAQ,MAAM;AAAA,YAC5C;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;AAIvB,IAAM,yBAAyB,gBAAgB,CAC7C,QACA,QACA;AAAA,EACA,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,SAAS;AAAA,EACb,IAAI,OAAO;AAAA,EAEX,OAAO,CAAC,MAAM;AAAA,IAEZ,MAAM,SAAS,MAAM,iBAAiB,QAAQ,SAAS,QAAQ,MAAM;AAAA,IACrE,SAAS,OAAO;AAAA,IAChB,OAAO,OAAO;AAAA,IAEd,OAAO,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM;AAAA;AAGR,IAAM,kBAAiB,gBAAgB,CACrC,SACA,QACA;AAAA,EACA,MAAM,cAAc,kBAAiB,MAAM;AAAA,EAE3C,MAAM,WAAW,MAAM,MAAM,GAAG,oBAAoB;AAAA,IAClD,MAAM,KAAK,UAAU,WAAW;AAAA,IAChC,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,QAAQ;AAAA,IACR,QAAQ,OAAO;AAAA,EACjB,CAAC;AAAA,EAED,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,IACtC,MAAM,IAAI,MAAM,oBAAoB,SAAS,WAAW,WAAW;AAAA,EACrE;AAAA,EAEA,IAAI,CAAC,SAAS,MAAM;AAAA,IAClB,MAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAAA,EAEA,OAAO,kBAAkB,SAAS,MAAM,OAAO,MAAM;AAAA;AAGhD,IAAM,SAAS,CAAC,SAAuB,CAAC,MAAwB;AAAA,EACrE,MAAM,UAAU,OAAO,WAAW;AAAA,EAElC,OAAO,qBACL;AAAA,IACE,QAAQ,CAAC,WACP,gBAAe,SAAS,MAAM;AAAA,EAClC,GACA,QACF;AAAA;;ACtNF,IAAM,0BAA2D;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,yBAAyB,CACpC,SACA,UAC2B;AAAA,EAC3B,MAAM,aAA4D,CAAC;AAAA,EACnE,IAAI,QAAQ;AAAA,EACZ,WAAW,OAAO,yBAAyB;AAAA,IACzC,MAAM,WAAW,MAAM;AAAA,IACvB,IAAI,aAAa;AAAA,MAAW;AAAA,IAC5B,IAAI,CAAC,OAAO,SAAS,QAAQ,KAAK,WAAW;AAAA,MAC3C,MAAM,IAAI,MAAM,cAAc,gCAAgC;AAAA,IAChE,MAAM,WAAW,QAAQ;AAAA,IACzB,IAAI,aAAa;AAAA,MAAW;AAAA,IAC5B,MAAM,QAAQ,OAAO,QAAQ;AAAA,IAC7B,IAAI,CAAC,OAAO,SAAS,KAAK,KAAK,QAAQ;AAAA,MACrC,MAAM,IAAI,MAAM,cAAc,gCAAgC;AAAA,IAChE,WAAW,OAAO,QAAQ;AAAA,IAC1B,SAAS,WAAW;AAAA,EACtB;AAAA,EACA,OAAO,EAAE,YAAY,MAAM;AAAA;AAGtB,IAAM,8BAA8B,CACzC,OACA,UACG,uBAAuB,MAAM,WAAW,CAAC,GAAG,KAAK;AAwZtD,IAAM,oBAAmB;AACzB,IAAM,yBAAyB;AAC/B,IAAM,mBAAmB;AACzB,IAAM,0BAA0B,IAAI,IAA2B;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,sBAAsB,CAAC,UAC3B,MAAM,WAAW,GAAG,IAAI,MAAM,MAAM,CAAC,IAAI;AAEpC,IAAM,6BAA6B,CAAC,OAAe,SAAiB;AAAA,EACzE,MAAM,kBAAkB,oBAAoB,KAAK;AAAA,EACjD,MAAM,iBAAiB,oBAAoB,IAAI;AAAA,EAC/C,OAAO,eAAe,SAAS,IAAI,IAC/B,gBAAgB,WAAW,eAAe,MAAM,GAAG,EAAE,CAAC,IACtD,oBAAoB;AAAA;AAG1B,IAAM,qBAAqB,CACzB,OACA,kBACG;AAAA,EACH,IAAI,CAAC;AAAA,IAAe;AAAA,EACpB,IAAI,cAAc,KAAK,CAAC,SAAS,2BAA2B,OAAO,IAAI,CAAC;AAAA,IACtE;AAAA,EACF,MAAM,IAAI,MAAM,qBAAqB,uBAAuB;AAAA;AAG9D,IAAM,6BAA6B,CACjC,OACA,eACA,MAAM,OACH;AAAA,EACH,IAAI,QAAQ,WAAW,OAAO,UAAU;AAAA,IACtC,mBAAmB,OAAO,aAAa;AAAA,EACzC,KACG,QAAQ,YACP,QAAQ,qBACR,QAAQ,qBACV,MAAM,QAAQ,KAAK,GACnB;AAAA,IACA,WAAW,SAAS;AAAA,MAClB,IAAI,OAAO,UAAU;AAAA,QAAU,mBAAmB,OAAO,aAAa;AAAA,EAC1E;AAAA,EACA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxB,WAAW,QAAQ;AAAA,MAAO,2BAA2B,MAAM,aAAa;AAAA,EAC1E,EAAO,SAAI,SAAS,OAAO,UAAU,UAAU;AAAA,IAC7C,YAAY,UAAU,UAAU,OAAO,QAAQ,KAAK;AAAA,MAClD,2BAA2B,OAAO,eAAe,QAAQ;AAAA,EAC7D;AAAA;AAGF,IAAM,gBAAgB,CAAC,SACrB,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI;AAEpC,IAAM,kBAAkB,CAAC,UACvB,MAAM,MAAM,GAAG,EAAE,IAAI,kBAAkB,EAAE,KAAK,GAAG;AAEnD,IAAM,YAAY,CAChB,KACA,UACG;AAAA,EACH,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,MAAM,SAAS,IAAI,IAAI,GAAG;AAAA,EAC1B,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAK,GAAG;AAAA,IAChD,IAAI,UAAU;AAAA,MAAW,OAAO,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,EACrE;AAAA,EACA,OAAO,OAAO,SAAS;AAAA;AAGzB,IAAM,gBAAgB,gBAAgB,CACpC,UAC4C;AAAA,EAC5C,IAAI,CAAC,SAAS;AAAA,IAAM,MAAM,IAAI,MAAM,qCAAqC;AAAA,EACzE,MAAM,SAAS,SAAS,KAAK,UAAU;AAAA,EACvC,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,SAAS;AAAA,EACb,IAAI;AAAA,IACF,UAAS;AAAA,MAEP,MAAM,SAAS,MAAM,OAAO,KAAK;AAAA,MACjC,UAAU,QAAQ,OAAO,OAAO,OAAO,EAAE,QAAQ,CAAC,OAAO,KAAK,CAAC;AAAA,MAC/D,MAAM,QAAQ,OAAO,MAAM;AAAA,CAAI;AAAA,MAC/B,SAAS,MAAM,IAAI,KAAK;AAAA,MACxB,WAAW,QAAQ,OAAO;AAAA,QACxB,IAAI,CAAC,KAAK,WAAW,QAAQ;AAAA,UAAG;AAAA,QAChC,MAAM,OAAO,KAAK,MAAM,CAAC;AAAA,QACzB,IAAI,SAAS;AAAA,UAAU;AAAA,QACvB,IAAI;AAAA,UACF,MAAM,SAAkB,KAAK,MAAM,IAAI;AAAA,UACvC,IAAI,UAAU,OAAO,WAAW,YAAY,UAAU;AAAA,YACpD,MAAM;AAAA,UACR,MAAM;AAAA,MAGV;AAAA,MACA,IAAI,OAAO;AAAA,QAAM;AAAA,IACnB;AAAA,IACA,IAAI,OAAO,WAAW,QAAQ,GAAG;AAAA,MAC/B,MAAM,SAAkB,KAAK,MAAM,OAAO,MAAM,CAAC,CAAC;AAAA,MAClD,IAAI,UAAU,OAAO,WAAW,YAAY,UAAU;AAAA,QACpD,MAAM;AAAA,IACV;AAAA,YACA;AAAA,IACA,OAAO,YAAY;AAAA;AAAA;AAIvB,IAAM,UAAU,CAAC,UACf,OAAO,UAAU,WAAW,IAAI,YAAY,EAAE,OAAO,KAAK,IAAI;AAEhE,IAAM,cAAc,CAAC,UAAsB;AAAA,EACzC,IAAI,SAAS;AAAA,EACb,WAAW,QAAQ;AAAA,IAAO,UAAU,OAAO,aAAa,IAAI;AAAA,EAC5D,OAAO,KAAK,MAAM,EACf,WAAW,KAAK,GAAG,EACnB,WAAW,KAAK,GAAG,EACnB,QAAQ,QAAQ,EAAE;AAAA;AAGhB,IAAM,yBAAyB,YAAqC;AAAA,EACzE,MAAM,SAAS,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC;AAAA,EACxD,MAAM,eAAe,YAAY,MAAM;AAAA,EACvC,MAAM,SAAS,MAAM,OAAO,OAAO,OACjC,WACA,IAAI,YAAY,EAAE,OAAO,YAAY,CACvC;AAAA,EACA,OAAO;AAAA,IACL,eAAe,YAAY,IAAI,WAAW,MAAM,CAAC;AAAA,IACjD,qBAAqB;AAAA,IACrB;AAAA,EACF;AAAA;AAGK,IAAM,mCAAmC,CAC9C,UAA6C,CAAC,MAC3C;AAAA,EACH,MAAM,MAAM,IAAI,IAAI,SAAS,QAAQ,WAAW,gBAAgB;AAAA,EAChE,IAAI,QAAQ;AAAA,IACV,IAAI,aAAa,IAAI,gBAAgB,QAAQ,WAAW;AAAA,EAC1D,IAAI,QAAQ;AAAA,IACV,IAAI,aAAa,IAAI,kBAAkB,QAAQ,aAAa;AAAA,EAC9D,IAAI,QAAQ;AAAA,IACV,IAAI,aAAa,IAAI,yBAAyB,QAAQ,mBAAmB;AAAA,EAC3E,IAAI,QAAQ;AAAA,IAAU,IAAI,aAAa,IAAI,aAAa,QAAQ,QAAQ;AAAA,EACxE,OAAO,IAAI,SAAS;AAAA;AAIf,IAAM,6BAA6B,OACxC,MACA,UAAiE,CAAC,MAClB;AAAA,EAChD,MAAM,WAAW,OAAO,QAAQ,SAAS,WAAW,OAClD,IAAI,QAAQ,WAAW,mBAAkB,QAAQ,OAAO,EAAE,eAC1D;AAAA,IACE,MAAM,KAAK,UAAU,IAAI;AAAA,IACzB,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,QAAQ;AAAA,EACV,CACF;AAAA,EACA,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,cAAc,aAClB,cACA,SAAS,QACT,MAAM,SAAS,KAAK,CACtB;AAAA,EACF,OAAO,SAAS,KAAK;AAAA;AAGhB,IAAM,2BAA2B,OACtC,KACA,UAAU,qBACP;AAAA,EACH,MAAM,SAAS,IAAI,WACjB,MAAM,OAAO,OAAO,OAAO,WAAW,IAAI,YAAY,EAAE,OAAO,GAAG,CAAC,CACrE;AAAA,EACA,MAAM,OAAO,MAAM,KAAK,QAAQ,CAAC,SAC/B,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CACnC,EAAE,KAAK,EAAE;AAAA,EACT,MAAM,OAAO,QAAQ,QAAQ,OAAO,EAAE;AAAA,EACtC,OAAO;AAAA,IACL;AAAA,IACA,SAAS,GAAG,0BAA0B;AAAA,IACtC,aAAa,GAAG,aAAa;AAAA,EAC/B;AAAA;AAGF,IAAM,aAAa,CAAC,QAAgB;AAAA,EAClC,IAAI,CAAC,gBAAgB,KAAK,GAAG,KAAK,IAAI,SAAS,MAAM;AAAA,IAAG;AAAA,EACxD,MAAM,QAAQ,IAAI,WAAW,IAAI,SAAS,CAAC;AAAA,EAC3C,SAAS,QAAQ,EAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AAAA,IACpD,MAAM,SAAS,OAAO,SAAS,IAAI,MAAM,QAAQ,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE;AAAA,EACxE;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,oBAAoB,CAAC,MAAkB,UAAsB;AAAA,EACjE,IAAI,KAAK,WAAW,MAAM;AAAA,IAAQ,OAAO;AAAA,EACzC,IAAI,WAAW;AAAA,EACf,SAAS,QAAQ,EAAG,QAAQ,KAAK,QAAQ,SAAS;AAAA,IAChD,aAAa,KAAK,UAAU,MAAM,MAAM,UAAU;AAAA,EACpD,OAAO,aAAa;AAAA;AAIf,IAAM,mCAAmC,OAAO,YAMjD;AAAA,EACJ,MAAM,SAAS,IAAI,IACjB,QAAQ,OAAO,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS;AAAA,IACtC,OAAO,QAAQ,QAAQ,KAAK,KAAK,EAAE,MAAM,GAAG;AAAA,IAC5C,OAAO,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,GAC5B,CACH;AAAA,EACA,MAAM,YAAY,OAAO,IAAI,GAAG;AAAA,EAChC,MAAM,WAAW,OAAO,IAAI,IAAI;AAAA,EAChC,IAAI,CAAC,aAAa,CAAC;AAAA,IAAU,OAAO;AAAA,EACpC,MAAM,kBAAkB,OAAO,SAAS;AAAA,EACxC,MAAM,MAAM,QAAQ,cAAc,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI;AAAA,EAC9D,MAAM,YAAY,QAAQ,oBAAoB;AAAA,EAC9C,IACE,CAAC,OAAO,SAAS,eAAe,KAChC,KAAK,IAAI,MAAM,eAAe,IAAI;AAAA,IAElC,OAAO;AAAA,EACT,MAAM,MAAM,MAAM,OAAO,OAAO,UAC9B,OACA,WAAW,KAAK,QAAQ,QAAQ,MAAM,CAAC,EAAE,QACzC,EAAE,MAAM,WAAW,MAAM,OAAO,GAChC,OACA,CAAC,MAAM,CACT;AAAA,EACA,MAAM,SAAS,IAAI,YAAY,EAAE,OAAO,GAAG,YAAY;AAAA,EACvD,MAAM,OAAO,QAAQ,QAAQ,IAAI;AAAA,EACjC,MAAM,UAAU,IAAI,WAAW,OAAO,SAAS,KAAK,MAAM;AAAA,EAC1D,QAAQ,IAAI,MAAM;AAAA,EAClB,QAAQ,IAAI,MAAM,OAAO,MAAM;AAAA,EAC/B,MAAM,WAAW,IAAI,WACnB,MAAM,OAAO,OAAO,KAAK,QAAQ,KAAK,QAAQ,MAAM,CACtD;AAAA,EACA,MAAM,gBAAgB,WAAW,QAAQ;AAAA,EACzC,OAAO,gBAAgB,kBAAkB,UAAU,aAAa,IAAI;AAAA;AAG/D,IAAM,yBAAyB,CAAC,WAAmC;AAAA,EACxE,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO;AAAA,IAC5B,MAAM,IAAI,MACR,gEACF;AAAA,EACF,MAAM,WAAW,OAAO,WAAW,mBAAkB,QAAQ,OAAO,EAAE;AAAA,EACtE,MAAM,gBACJ,OAAO,iBACN,OAAO,UACJ,IAAI,IAAI,WAAW,GAAG,UAAU,EAAE,SAAS,IAC3C,yBACJ,QAAQ,OAAO,EAAE;AAAA,EACnB,MAAM,YAAY,OAAO,SAAS,WAAW;AAAA,EAC7C,MAAM,gBAAgB,OAAO,gBACzB,CAAC,GAAG,OAAO,aAAa,IACxB;AAAA,EACJ,MAAM,qBAAqB,OAAO;AAAA,EAElC,MAAM,eAAe,OACnB,SACA,MACA,UAAwC,CAAC,MACtC;AAAA,IACH,MAAM,QAAQ,OAAO,cACjB,MAAM,QAAQ,QAAQ,OAAO,YAAY,CAAC,IAC1C,OAAO;AAAA,IACX,MAAM,kBACJ,OAAO,OAAO,YAAY,aACtB,MAAM,OAAO,QAAQ,IACpB,OAAO,WAAW,CAAC;AAAA,IAC1B,MAAM,UAAU,IAAI,QAAQ,eAAe;AAAA,IAC3C,IAAI,QAAQ,QAAQ,OAAO,EAAE,QAAQ,CAAC,OAAO,QAC3C,QAAQ,IAAI,KAAK,KAAK,CACxB;AAAA,IACA,QAAQ,IAAI,iBAAiB,UAAU,OAAO;AAAA,IAC9C,IAAI;AAAA,IACJ,IAAI,QAAQ,gBAAgB,YAAY,QAAQ,gBAAgB,MAAM;AAAA,MACpE,OAAO,QAAQ;AAAA,IACjB,EAAO,SAAI,QAAQ,SAAS,WAAW;AAAA,MACrC,QAAQ,IAAI,gBAAgB,kBAAkB;AAAA,MAC9C,OAAO,KAAK,UAAU,QAAQ,IAAI;AAAA,IACpC;AAAA,IACA,QAAQ,UAAU,gBAAgB;AAAA,IAClC,MAAM,WAAW,MAAM,UACrB,UAAU,GAAG,UAAU,cAAc,IAAI,KAAK,QAAQ,KAAK,GAC3D,KAAK,aAAa,MAAM,QAAQ,CAClC;AAAA,IACA,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,MAAM,cAAc,aAClB,cACA,SAAS,QACT,MAAM,SAAS,KAAK,CACtB;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,aAAa,CACjB,MACA,UAAwC,CAAC,MACtC,aAAa,SAAS,MAAM,OAAO;AAAA,EAExC,MAAM,UAAU,OACd,MACA,UAAwC,CAAC,OACzB,MAAM,WAAW,MAAM,OAAO,GAAG,KAAK;AAAA,EAExD,MAAM,eAAe,OACnB,MACA,UAAwC,CAAC,OAExC,MAAM,aAAa,cAAc,MAAM,OAAO,GAAG,KAAK;AAAA,EAEzD,MAAM,WAAW,CAAC,OAChB,aAA8B,YAAY,mBAAmB,EAAE,GAAG;AAAA,EAEpE,MAAM,aAAa,OACjB,UACiC;AAAA,IACjC,MAAM,SAAS,MAAM,QAA6B,WAAW,EAAE,MAAM,CAAC;AAAA,IACtE,IAAI,CAAC;AAAA,MAAe,OAAO;AAAA,IAC3B,OAAO;AAAA,SACF;AAAA,MACH,MAAM,OAAO,KAAK,OAAO,CAAC,UACxB,cAAc,KAAK,CAAC,SAClB,2BAA2B,MAAM,IAAI,IAAI,CAC3C,CACF;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,kBAAkB,CAAC,WAAgC;AAAA,IACvD,IAAI,CAAC;AAAA,MAAe,OAAO;AAAA,IAC3B,OAAO;AAAA,SACF;AAAA,MACH,MAAM,OAAO,KAAK,OAAO,CAAC,UACxB,cAAc,KAAK,CAAC,SAClB,2BAA2B,MAAM,IAAI,IAAI,CAC3C,CACF;AAAA,IACF;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,qBAAqB,CAAC,IAAY,YAChC,QACE,eAAe,mBAAmB,EAAE,iBACpC,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,OAAO,CACrD;AAAA,IACF,gBAAgB,CAAC,SACf,QAA0C,mBAAmB;AAAA,MAC3D,MAAM;AAAA,WACD;AAAA,QACH,cAAc,KAAK,gBAAgB;AAAA,MACrC;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAAA,IACH,MAAM,CAAC,SAAgC;AAAA,MACrC,2BAA2B,MAAM,aAAa;AAAA,MAC9C,OAAO,QAAgC,qBAAqB;AAAA,QAC1D,MAAM,KAAK,MAAM,QAAQ,MAAM;AAAA,QAC/B,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEH,iCAAiC,CAC/B,MACA,SACG;AAAA,MACH,2BAA2B,MAAM,aAAa;AAAA,MAC9C,OAAO,QACL,YAAY,mBAAmB,IAAI,sBACnC,EAAE,MAAM,QAAQ,OAAO,CACzB;AAAA;AAAA,IAEF,0BAA0B,CACxB,MACA,SACG;AAAA,MACH,2BAA2B,MAAM,aAAa;AAAA,MAC9C,OAAO,QACL,YAAY,mBAAmB,IAAI,cACnC,EAAE,MAAM,QAAQ,OAAO,CACzB;AAAA;AAAA,IAEF,2BAA2B,CACzB,MACA,SACG;AAAA,MACH,2BAA2B,MAAM,aAAa;AAAA,MAC9C,OAAO,QACL,YAAY,mBAAmB,IAAI,eACnC,EAAE,MAAM,QAAQ,OAAO,CACzB;AAAA;AAAA,IAEF,iBAAiB,CAAC,SAA2C;AAAA,MAC3D,2BAA2B,MAAM,aAAa;AAAA,MAC9C,OAAO,QAAuC,eAAe;AAAA,QAC3D;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEH,aAAa,CAAC,SAAuC;AAAA,MACnD,mBAAmB,KAAK,OAAO,aAAa;AAAA,MAC5C,OAAO,aAA8B,YAAY;AAAA,QAE/C,MAAM;AAAA,UACJ,UAAU,KAAK;AAAA,UACf,OAAO,KAAK;AAAA,UACZ,UAAU,KAAK;AAAA,aACX,KAAK,oBACL,EAAE,mBAAmB,KAAK,kBAAkB,IAC5C,CAAC;AAAA,QACP;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEH,iBAAiB,CAAC,SAAqC;AAAA,MACrD,mBAAmB,KAAK,OAAO,aAAa;AAAA,MAC5C,OAAO,QAAqC,eAAe;AAAA,QACzD;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEH,eAAe,CAAC,SAAiC;AAAA,MAC/C,mBAAmB,KAAK,OAAO,aAAa;AAAA,MAC5C,OAAO,QAAiC,WAAW;AAAA,QACjD;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEH,YAAY,CAAC,IAAY,cAAc,uBACrC,QACE,UAAU,mBAAmB,EAAE,KAC/B,EAAE,QAAQ,UAAU,OAAO,EAAE,cAAc,YAAY,EAAE,CAC3D;AAAA,IACF,iBAAiB,CAAC,OAChB,QAA2B,eAAe,mBAAmB,EAAE,KAAK;AAAA,MAClE,QAAQ;AAAA,IACV,CAAC;AAAA,IACH,uBAAuB,CACrB,IACA,aAEA,QACE,eAAe,mBAAmB,EAAE,aAAa,YACjD,EAAE,QAAQ,SAAS,CACrB;AAAA,IACF,cAAc,CAAC,IAAY,cAAc,uBACvC,WAAW,UAAU,mBAAmB,EAAE,aAAa;AAAA,MACrD,OAAO,EAAE,cAAc,YAAY;AAAA,IACrC,CAAC;AAAA,IACH,eAAe,CAAC,IAAY,QAAQ,MAClC,WAAW,WAAW,mBAAmB,EAAE,aAAa;AAAA,MACtD,OAAO,EAAE,MAAM;AAAA,IACjB,CAAC;AAAA,IACH,eAAe,CAAC,SAAiC;AAAA,MAC/C,mBAAmB,KAAK,OAAO,aAAa;AAAA,MAC5C,OAAO,QAA4B,WAAW;AAAA,QAC5C;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEH;AAAA,IACA,aAAa,CAAC,UACZ,QAA4C,aAAa;AAAA,MACvD,OAAO;AAAA,WACF;AAAA,QACH,cAAc,OAAO,gBAAgB;AAAA,MACvC;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,MAAM,QAAiC,iBAAiB;AAAA,IAC1E,YAAY,MAAM,QAA0C,UAAU;AAAA,IACtE,eAAe,MAAM,QAA2C,MAAM;AAAA,IACtE,SAAS,CAAC,IAAY,cAAc,uBAClC,QAAwB,UAAU,mBAAmB,EAAE,KAAK;AAAA,MAC1D,OAAO,EAAE,cAAc,YAAY;AAAA,IACrC,CAAC;AAAA,IACH,eAAe,CAAC,OACd,QAA2C,eAAe;AAAA,MACxD,OAAO,EAAE,GAAG;AAAA,IACd,CAAC;AAAA,IACH,sBAAsB,CAAC,OACrB,QAAiC,uBAAuB;AAAA,MACtD,OAAO,EAAE,GAAG;AAAA,IACd,CAAC;AAAA,IACH,mBAAmB,CAAC,UAAkB;AAAA,MACpC,mBAAmB,OAAO,aAAa;AAAA,MACvC,OAAO,QACL,WAAW,gBAAgB,KAAK,aAClC;AAAA;AAAA,IAEF,UAAU,CAAC,UAAkB;AAAA,MAC3B,mBAAmB,OAAO,aAAa;AAAA,MACvC,OAAO,QACL,UAAU,gBAAgB,KAAK,GACjC;AAAA;AAAA,IAEF,wBAAwB,CAAC,UAAkB;AAAA,MACzC,mBAAmB,OAAO,aAAa;AAAA,MACvC,OAAO,QACL,kBAAkB,gBAAgB,KAAK,aACzC;AAAA;AAAA,IAEF,WAAW,CAAC,SACV,QAAkC,YAAY,mBAAmB,IAAI,GAAG;AAAA,IAC1E,kBAAkB,CAAC,MAAc,YAC/B,QACE,YAAY,mBAAmB,IAAI,cAAc,mBAAmB,OAAO,OAAO,CAAC,GACrF;AAAA,IACF,wBAAwB,CAAC,UAAe,SACtC,QAAuC,yBAAyB;AAAA,MAC9D,OAAO,EAAE,gBAAO;AAAA,IAClB,CAAC;AAAA,IACH,UAAU,CAAC,OACT,QAA4B,WAAW,mBAAmB,EAAE,GAAG;AAAA,IACjE,cAAc,CAAC,OACb,QACE,eAAe,mBAAmB,EAAE,GACtC;AAAA,IACF,iBAAiB,YACf,gBAAgB,MAAM,QAA6B,gBAAgB,CAAC;AAAA,IACtE,qBAAqB,YACnB,gBAAgB,MAAM,QAA6B,oBAAoB,CAAC;AAAA,IAC1E,WAAW,CAAC,UAKV,QAA4B,UAAU;AAAA,MACpC,OAAO;AAAA,WACF;AAAA,QACH,cAAc,OAAO,gBAAgB;AAAA,MACvC;AAAA,IACF,CAAC;AAAA,IACH;AAAA,IACA,gBAAgB,YACd,gBAAgB,MAAM,QAA6B,cAAc,CAAC;AAAA,IACpE,kBAAkB,YAAY;AAAA,MAC5B,MAAM,SAAS,MAAM,QACnB,gBACF;AAAA,MACA,IAAI,CAAC;AAAA,QAAe,OAAO;AAAA,MAC3B,OAAO;AAAA,WACF;AAAA,QACH,MAAM,OAAO,KAAK,OAAO,CAAC,aACxB,cAAc,KAAK,CAAC,SAClB,2BAA2B,SAAS,UAAU,IAAI,CACpD,CACF;AAAA,MACF;AAAA;AAAA,IAEF,aAAa,CAAC,qBACZ,QAAqC,iBAAiB;AAAA,MACpD,OAAO,EAAE,mBAAmB,iBAAiB;AAAA,IAC/C,CAAC;AAAA,IACH,aAAa,CAAC,SAAS,GAAG,QAAQ,QAChC,QAA2D,YAAY;AAAA,MACrE,OAAO,EAAE,OAAO,OAAO;AAAA,IACzB,CAAC;AAAA,IACH,oBAAoB,CAAC,MAAc,SAAS,GAAG,QAAQ,QACrD,QACE,YAAY,mBAAmB,IAAI,cACnC,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,CAC7B;AAAA,IACF,eAAe,MACb,QAA6C,YAAY;AAAA,IAC3D,kBAAkB,YAChB,gBAAgB,MAAM,QAA6B,gBAAgB,CAAC;AAAA,IACtE,iBAAiB,YACf,gBAAgB,MAAM,QAA6B,gBAAgB,CAAC;AAAA,IACtE,sBAAsB,CAAC,OACrB,QACE,eAAe,mBAAmB,EAAE,WACtC;AAAA,IACF,gBAAgB,CAAC,SAAS,GAAG,QAAQ,QACnC,QACE,eACA,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,CAC7B;AAAA,IACF,gBAAgB,CAAC,SACf,QAAqC,oBAAoB;AAAA,MACvD;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAAA,IACH,wBAAwB,CAAC,IAAY,YACnC,QACE,eAAe,mBAAmB,EAAE,oBACpC,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,OAAO,CACrD;AAAA,IACF;AAAA,IACA;AAAA,IACA,aAAa,gBAAgB,CAC3B,MACA,UAAiE,CAAC,GAClE;AAAA,MACA,mBAAmB,KAAK,OAAO,aAAa;AAAA,MAC5C,MAAM,WAAW,MAAM,WAAW,WAAW;AAAA,WACxC;AAAA,QACH,MAAM,KAAK,MAAM,QAAQ,KAAK;AAAA,QAC9B,QAAQ;AAAA,MACV,CAAC;AAAA,MACD,OAAO,cAAc,QAAQ;AAAA;AAAA,IAE/B,SAAS,CAAC,SAAqC;AAAA,MAC7C,mBAAmB,KAAK,OAAO,aAAa;AAAA,MAC5C,OAAO,KAAK,SACR,WAAW,cAAc,EAAE,MAAM,QAAQ,OAAO,CAAC,IACjD,QAAiC,cAAc;AAAA,QAC7C;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEP,QAAQ,CAAC,SAAkC;AAAA,MACzC,mBAAmB,KAAK,OAAO,aAAa;AAAA,MAC5C,OAAO,QAAkC,WAAW;AAAA,QAClD;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEH,OAAO,CAAC,SAAkC;AAAA,MACxC,mBAAmB,KAAK,OAAO,aAAa;AAAA,MAC5C,OAAO,WAAW,iBAAiB,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA;AAAA,IAE7D,YAAY,CAAC,SAAoD;AAAA,MAC/D,IAAI,gBAAgB,UAAU;AAAA,QAC5B,MAAM,QAAQ,KAAK,IAAI,OAAO;AAAA,QAC9B,IAAI,OAAO,UAAU;AAAA,UACnB,MAAM,IAAI,MAAM,kDAAkD;AAAA,QACpE,mBAAmB,OAAO,aAAa;AAAA,MACzC,EAAO;AAAA,QACL,mBAAmB,KAAK,OAAO,aAAa;AAAA;AAAA,MAE9C,OAAO,QAAyC,yBAAyB;AAAA,QACvE;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAAA;AAAA,IAEH,YAAY,CACV,MACA,UAAuD,CAAC,MACrD;AAAA,MACH,MAAM,OAAO,IAAI;AAAA,MACjB,IAAI,QAAQ;AAAA,QAAU,KAAK,OAAO,QAAQ,MAAM,QAAQ,QAAQ;AAAA,MAC3D;AAAA,aAAK,OAAO,QAAQ,IAAI;AAAA,MAC7B,OAAO,QAAwB,UAAU;AAAA,QACvC;AAAA,QACA,QAAQ;AAAA,QACR,OAAO,EAAE,cAAc,QAAQ,eAAe,mBAAmB;AAAA,MACnE,CAAC;AAAA;AAAA,IAEH,iBAAiB,CAAC,IAAY,SAAqC;AAAA,MACjE,2BAA2B,MAAM,aAAa;AAAA,MAC9C,OAAO,QACL,eAAe,mBAAmB,EAAE,KACpC,EAAE,MAAM,QAAQ,QAAQ,CAC1B;AAAA;AAAA,IAEF,uBAAuB,CACrB,IACA,UACA,aAEA,QACE,eAAe,mBAAmB,EAAE,aAAa,YACjD,EAAE,MAAM,EAAE,WAAW,SAAS,GAAG,QAAQ,MAAM,CACjD;AAAA,IACF,cAAc,OACZ,IACA,UAII,CAAC,MACF;AAAA,MACH,MAAM,aAAa,QAAQ,cAAc;AAAA,MACzC,MAAM,YAAY,QAAQ;AAAA,MAC1B,IAAI,CAAC,OAAO,SAAS,UAAU,KAAK,aAAa;AAAA,QAC/C,MAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE,IACE,cAAc,cACb,CAAC,OAAO,SAAS,SAAS,KAAK,YAAY;AAAA,QAE5C,MAAM,IAAI,MAAM,iDAAiD;AAAA,MACnE,MAAM,YAAY,KAAK,IAAI;AAAA,MAC3B,UAAS;AAAA,QACP,QAAQ,QAAQ,eAAe;AAAA,QAE/B,MAAM,QAAQ,MAAM,SAAS,EAAE;AAAA,QAC/B,IAAI,wBAAwB,IAAI,MAAM,MAAM;AAAA,UAAG,OAAO;AAAA,QACtD,IACE,cAAc,aACd,KAAK,IAAI,IAAI,YAAY,aAAa;AAAA,UAEtC,MAAM,IAAI,MAAM,2CAA2C,KAAK;AAAA,QAElE,MAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAAA,UAC3C,MAAM,UAAU,MAAM;AAAA,YACpB,aAAa,OAAO;AAAA,YACpB,OAAO,QAAQ,QAAQ,MAAM;AAAA;AAAA,UAE/B,MAAM,UAAU,WAAW,MAAM;AAAA,YAC/B,QAAQ,QAAQ,oBAAoB,SAAS,OAAO;AAAA,YACpD,QAAQ;AAAA,aACP,UAAU;AAAA,UACb,QAAQ,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,SAClE;AAAA,MACH;AAAA;AAAA,EAEJ;AAAA;;;ACh9BF,IAAM,oBAAmB;AACzB,IAAM,qBAAqB;AAE3B,IAAM,uBAAsB,CAAC,UAC3B,MAAM,WAAW,GAAG,IAAI,MAAM,MAAM,CAAC,IAAI;AAE3C,IAAM,6BAA6B,CAAC,UAAkB;AAAA,EACpD,MAAM,aAAa,qBAAoB,KAAK;AAAA,EAC5C,OAAO,WAAW,WAAW,SAAS,IAClC,WAAW,MAAM,UAAU,MAAM,IACjC;AAAA;AAGN,IAAM,mBAAmB,CAAC,OAAe,SAAiB;AAAA,EACxD,MAAM,kBAAkB,qBAAoB,KAAK;AAAA,EACjD,MAAM,iBAAiB,qBAAoB,IAAI;AAAA,EAC/C,IAAI,eAAe,SAAS,IAAI,GAAG;AAAA,IACjC,OAAO,gBAAgB,WAAW,eAAe,MAAM,GAAG,EAAE,CAAC;AAAA,EAC/D;AAAA,EAEA,OAAO,oBAAoB;AAAA;AAG7B,IAAM,sBAAsB,CAAC,UAAkB,SAC7C,aAAa,QAAQ,SAAS,WAAW,GAAG,OAAO;AAErD,IAAM,uBAAuB,CAC3B,OACA,UACG;AAAA,EACH,IAAI,SAAS,MAAM,WAAW,GAAG;AAAA,IAC/B,MAAM,IAAI,MAAM,gBAAgB,yBAAyB;AAAA,EAC3D;AAAA;AAGF,IAAM,sBAAsB,CAAC,WAA6B;AAAA,EACxD,qBAAqB,oBAAoB,OAAO,gBAAgB;AAAA,EAChE,qBAAqB,gBAAgB,OAAO,SAAS,IAAI;AAAA,EACzD,qBAAqB,kBAAkB,OAAO,cAAc;AAAA,EAC5D,IACE,OAAO,iBACP,OAAO,cAAc,SAAS,oBAC9B;AAAA,IACA,MAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAAA,EACA,IAAI,CAAC,OAAO;AAAA,IAAkB;AAAA,EAC9B,MAAM,WAAW;AAAA,IACf,GAAI,OAAO,SAAS,QAAQ,CAAC;AAAA,IAC7B,GAAI,OAAO,SAAS,SAAS,CAAC;AAAA,EAChC;AAAA,EACA,MAAM,SAAS,SAAS,KACtB,CAAC,aACC,CAAC,OAAO,iBAAkB,KAAK,CAAC,SAC9B,oBAAoB,UAAU,IAAI,CACpC,CACJ;AAAA,EACA,IAAI,QAAQ;AAAA,IACV,MAAM,IAAI,MACR,0BAA0B,qCAC5B;AAAA,EACF;AAAA;AAGF,IAAM,6BAA6B,CACjC,SACA,qBACG;AAAA,EACH,oBAAoB;AAAA,IAClB;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACF,CAAC;AAAA;AAGH,IAAM,aAAa,CACjB,SACA,qBACG;AAAA,EACH,MAAM,OAAO,SAAS,QAAQ;AAAA,EAC9B,MAAM,OAAgC,CAAC;AAAA,EACvC,IAAI,OAAO,SAAS,mBAAmB;AAAA,IACrC,KAAK,kBAAkB,QAAQ;AAAA,EACjC,IAAI,SAAS;AAAA,IAAgB,KAAK,kBAAkB,QAAQ;AAAA,EAC5D,IAAI,OAAO,SAAS,2BAA2B;AAAA,IAC7C,KAAK,2BAA2B,QAAQ;AAAA,EAC1C,IAAI,SAAS;AAAA,IAAQ,KAAK,SAAS,CAAC,GAAG,QAAQ,MAAM;AAAA,EACrD,IAAI,SAAS;AAAA,IAAU,KAAK,YAAY,KAAK,QAAQ,SAAS;AAAA,EAC9D,IAAI;AAAA,IAAM,KAAK,OAAO,CAAC,GAAG,IAAI;AAAA,EAC9B,IAAI,SAAS;AAAA,IAAO,KAAK,QAAQ,CAAC,GAAG,QAAQ,KAAK;AAAA,EAClD,IAAI,SAAS,wBAAwB;AAAA,IACnC,KAAK,wBAAwB,QAAQ;AAAA,EACvC,IAAI,SAAS,2BAA2B;AAAA,IACtC,KAAK,2BAA2B,QAAQ;AAAA,EAC1C,IAAI,SAAS;AAAA,IAAe,KAAK,gBAAgB,CAAC,GAAG,QAAQ,aAAa;AAAA,EAC1E,IAAI,OAAO,SAAS,sBAAsB;AAAA,IACxC,KAAK,qBAAqB,QAAQ;AAAA,EACpC,IAAI,SAAS;AAAA,IAAM,KAAK,OAAO,QAAQ;AAAA,EACvC,IAAI,OAAO,SAAS,QAAQ;AAAA,IAAW,KAAK,MAAM,QAAQ;AAAA,EAE1D,OAAO;AAAA;AAGT,IAAM,qBAAoB,CACxB,QACA,aACG;AAAA,EACH,MAAM,WAAW,OAAO,iBAAiB;AAAA,EACzC,IAAI,aAAa,cAAc,OAAO,aAAa,YAAY,CAAC,WAAW;AAAA,IACzE,MAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAAA,EAEA,OAAO;AAAA,OACF;AAAA,OACC;AAAA,EACN;AAAA;AAGF,IAAM,4BAA4B,OAChC,QACA,WACG;AAAA,EACH,MAAM,WACJ,OAAO,OAAO,YAAY,aACtB,MAAM,OAAO,QAAQ,IACpB,OAAO,WAAW,CAAC;AAAA,EAC1B,MAAM,UAAU,IAAI,QAAQ,QAAQ;AAAA,EACpC,IAAI,OAAO;AAAA,IAAQ,QAAQ,IAAI,gBAAgB,OAAO,MAAM;AAAA,EAC5D,IAAI,OAAO;AAAA,IAAS,QAAQ,IAAI,sBAAsB,OAAO,OAAO;AAAA,EACpE,IAAI,OAAO,eAAe,QAAQ;AAAA,IAChC,QAAQ,IAAI,2BAA2B,OAAO,cAAc,KAAK,GAAG,CAAC;AAAA,EACvE;AAAA,EACA,MAAM,UAAU,mBAAkB,QAAQ,OAAO,cAAc;AAAA,EAC/D,IAAI,QAAQ,kBAAkB;AAAA,IAC5B,QAAQ,IAAI,yBAAyB,SAAS;AAAA,EAChD,IAAI,QAAQ;AAAA,IAAW,QAAQ,IAAI,gBAAgB,QAAQ,SAAS;AAAA,EACpE,IAAI,QAAQ,eAAe;AAAA,IACzB,QAAQ,IACN,sBACA,QAAQ,cAAc,UAAU,SAAS,OAC3C;AAAA,IACA,IAAI,QAAQ,cAAc,eAAe;AAAA,MACvC,QAAQ,IACN,0BACA,OAAO,QAAQ,cAAc,UAAU,CACzC;AAAA,IACF,IAAI,QAAQ,cAAc;AAAA,MACxB,QAAQ,IAAI,4BAA4B,MAAM;AAAA,EAClD;AAAA,EAEA,OAAO;AAAA;AAGT,IAAM,uCAAuC,IAAI,IAAI;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,sBAAsB,CAC1B,QACA,mBACG;AAAA,EACH,IAAI,CAAC;AAAA,IAAQ;AAAA,EACb,IAAI,gBAAgB,SAAS,MAAM;AAAA,IAAG;AAAA,EACtC,MAAM,IAAI,MAAM,sBAAsB,wBAAwB;AAAA;AAGhE,IAAM,uBAAuB,CAC3B,OACA,eACA,MAAM,OACH;AAAA,EACH,IAAI,QAAQ,WAAW,OAAO,UAAU;AAAA,IACtC,oBAAmB,OAAO,aAAa;AAAA,EACzC,KACG,QAAQ,YACP,QAAQ,qBACR,QAAQ,qBACV,MAAM,QAAQ,KAAK,GACnB;AAAA,IACA,WAAW,SAAS,OAAO;AAAA,MACzB,IAAI,OAAO,UAAU;AAAA,QAAU,oBAAmB,OAAO,aAAa;AAAA,IACxE;AAAA,EACF;AAAA,EACA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxB,WAAW,QAAQ;AAAA,MAAO,qBAAqB,MAAM,aAAa;AAAA,EACpE,EAAO,SAAI,SAAS,OAAO,UAAU,UAAU;AAAA,IAC7C,YAAY,UAAU,UAAU,OAAO,QAAQ,KAAK;AAAA,MAClD,qBAAqB,OAAO,eAAe,QAAQ;AAAA,EACvD;AAAA;AAGF,IAAM,qBAAqB,CACzB,OACA,OACA,SACA,YACG;AAAA,EACH,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IACE,CAAC,OAAO,UAAU,KAAK,KACvB,QAAQ,WACP,YAAY,aAAa,QAAQ;AAAA,IAElC,MAAM,IAAI,MACR,cAAc,iCAAiC,UAAU,YAAY,YAAY,gBAAgB,OAAO,WAC1G;AAAA;AAGJ,IAAM,sBAAsB,CAC1B,YACG;AAAA,EACH,WAAW,UAAU,WAAW,CAAC,GAAG;AAAA,IAClC,IAAI,OAAO,OAAO;AAAA,MAChB,MAAM,IAAI,MACR,mGACF;AAAA,IACF,IAAI,OAAO,OAAO,UAAU;AAAA,MAC1B,MAAM,SAAS;AAAA,MACf,IACE,OAAO,oBACN,OAAO,gBAAgB,SAAS,KAAK,OAAO,gBAAgB,SAAS;AAAA,QAEtE,MAAM,IAAI,MACR,2DACF;AAAA,MACF,mBAAmB,yBAAyB,OAAO,gBAAgB,GAAG,EAAE;AAAA,IAC1E;AAAA,IACA,IAAI,OAAO,OAAO,OAAO;AAAA,MACvB,MAAM,MAAM;AAAA,MACZ,mBACE,0BACA,IAAI,aACJ,GACA,IAAI,WAAW,eAAe,KAAK,EACrC;AAAA,MACA,IACE,IAAI,iBAAiB,UACrB,IAAI,iBAAiB,WACpB,IAAI,WAAW,eACd,IAAI,WAAW,cACf,IAAI,WAAW;AAAA,QAEjB,MAAM,IAAI,MACR,cAAc,IAAI,sEACpB;AAAA,IACJ;AAAA,EACF;AAAA;AAGF,IAAM,0BAA0B,CAC9B,UACG;AAAA,EACH,WAAW,QAAQ,SAAS,CAAC,GAAG;AAAA,IAC9B,IAAI,KAAK,SAAS,yBAAyB;AAAA,MACzC,MAAM,aAAa,KAAK;AAAA,MACxB,mBACE,0BACA,YAAY,aACZ,GACA,EACF;AAAA,MACA,IACE,YAAY,WAAW,iBACtB,WAAW,eAAe,KAAK;AAAA,QAEhC,MAAM,IAAI,MACR,iEACF;AAAA,MACF,mBACE,6BACA,YAAY,gBACZ,GACA,GACF;AAAA,MACA,mBACE,gCACA,YAAY,mBACZ,CACF;AAAA,IACF;AAAA,IACA,IAAI,KAAK,SAAS,wBAAwB;AAAA,MACxC,mBAAmB,sBAAsB,KAAK,YAAY,UAAU,CAAC;AAAA,MACrE,mBACE,gCACA,KAAK,YAAY,oBACjB,CACF;AAAA,IACF;AAAA,IACA,IAAI,KAAK,SAAS,+BAA+B;AAAA,MAC/C,MAAM,cAAc,KAAK,YAAY;AAAA,MACrC,IACE,gBAAgB,cACf,CAAC,OAAO,SAAS,WAAW,KAAK,cAAc,KAAK,cAAc;AAAA,QAEnE,MAAM,IAAI,MACR,8DACF;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,SAAS,uBAAuB;AAAA,MACvC,mBACE,kCACA,KAAK,WAAW,uBAChB,CACF;AAAA,MACA,mBACE,2BACA,KAAK,WAAW,gBAChB,GACA,EACF;AAAA,MACA,MAAM,cAAc,KAAK,WAAW;AAAA,MACpC,IACE,gBAAgB,cACf,CAAC,OAAO,SAAS,WAAW,KAAK,cAAc,KAAK,cAAc;AAAA,QAEnE,MAAM,IAAI,MAAM,6CAA6C;AAAA,MAC/D,wBAAwB,KAAK,WAAW,KAAK;AAAA,IAC/C;AAAA,IACA,IAAI,KAAK,SAAS,sBAAsB;AAAA,MACtC,mBACE,iCACA,KAAK,YAAY,uBACjB,CACF;AAAA,MACA,MAAM,cAAc,KAAK,YAAY;AAAA,MACrC,IACE,gBAAgB,cACf,CAAC,OAAO,SAAS,WAAW,KAAK,cAAc,KAAK,cAAc;AAAA,QAEnE,MAAM,IAAI,MAAM,4CAA4C;AAAA,IAChE;AAAA,IACA,IAAI,KAAK,SAAS,qBAAqB;AAAA,MACrC,MAAM,iBAAiB,KAAK,YAAY;AAAA,MACxC,IACE,mBACC,eAAe,SAAS,KAAK,eAAe,SAAS;AAAA,QAEtD,MAAM,IAAI,MACR,uEACF;AAAA,MACF,mBACE,4CACA,KAAK,YAAY,uBACjB,CACF;AAAA,MACA,mBACE,qCACA,KAAK,YAAY,gBACjB,GACA,EACF;AAAA,MACA,MAAM,cAAc,KAAK,YAAY;AAAA,MACrC,IACE,gBAAgB,cACf,CAAC,OAAO,SAAS,WAAW,KAAK,cAAc,KAAK,cAAc;AAAA,QAEnE,MAAM,IAAI,MACR,uDACF;AAAA,MACF,wBAAwB,KAAK,YAAY,KAAK;AAAA,IAChD;AAAA,IACA,IAAI,KAAK,SAAS,oBAAoB;AAAA,MACpC,mBACE,6BACA,KAAK,YAAY,qBACjB,GACA,OACF;AAAA,MACA,MAAM,cAAc,KAAK,YAAY;AAAA,MACrC,IACE,aAAa,SAAS,0BACrB,YAAY,aAAa,SAAS,KACjC,YAAY,aAAa,SAAS;AAAA,QAEpC,MAAM,IAAI,MACR,4DACF;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,SAAS;AAAA,MAChB,mBACE,4BACA,KAAK,YAAY,aACjB,GACA,EACF;AAAA,EACJ;AAAA;AAGF,IAAM,uBAAuB,CAC3B,SACA,eACA,gBACA,qBACG;AAAA,EACH,oBAAoB,QAAQ,QAAQ,cAAc;AAAA,EAClD,2BAA2B,QAAQ,SAAS,gBAAgB;AAAA,EAC5D,IAAI,QAAQ,aAAa,QAAQ,UAAU,SAAS;AAAA,IAClD,MAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE,MAAM,MAAM,QAAQ,eAAe;AAAA,EACnC,IAAI,QAAQ,cAAc,CAAC,OAAO,UAAU,GAAG,KAAK,MAAM,KAAK,MAAM;AAAA,IACnE,MAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE,IAAI,QAAQ,eAAe,SAAS,CAAC,QAAQ,cAAc;AAAA,IACzD,MAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E,IAAI,QAAQ,gBAAgB;AAAA,IAC1B,IAAI,QAAQ,eAAe,WAAW;AAAA,MACpC,MAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D,WAAW,SAAS,QAAQ;AAAA,MAC1B,oBAAmB,OAAO,aAAa;AAAA,EAC3C;AAAA,EACA,qBAAqB,QAAQ,aAAa,aAAa;AAAA,EACvD,qBAAqB,QAAQ,eAAe,aAAa;AAAA,EACzD,qBAAqB,QAAQ,SAAS,aAAa;AAAA,EACnD,oBAAoB,QAAQ,OAAO;AAAA,EACnC,wBAAwB,QAAQ,WAAW;AAAA,EAC3C,IAAI,QAAQ,WAAW;AAAA,IACrB,MAAM,SAAS,OAAO,KAAK,QAAQ,SAAS,EAAE,KAAK,CAAC,QAClD,qCAAqC,IAAI,GAAG,CAC9C;AAAA,IACA,IAAI;AAAA,MACF,MAAM,IAAI,MAAM,yCAAyC,SAAS;AAAA,EACtE;AAAA;AAGF,IAAM,sBAAqB,CACzB,OACA,kBACG;AAAA,EACH,IAAI,CAAC;AAAA,IAAe;AAAA,EACpB,IAAI,cAAc,KAAK,CAAC,SAAS,iBAAiB,OAAO,IAAI,CAAC;AAAA,IAAG;AAAA,EACjE,MAAM,IAAI,MAAM,qBAAqB,uBAAuB;AAAA;AAG9D,IAAM,iBAAiB,CAAC,YAA8B;AAAA,EACpD,eAAe,OAAO,gBAAgB,CAAC,GAAG,OAAO,aAAa,IAAI;AAAA,EAClE,gBAAgB,OAAO,iBACnB,CAAC,GAAG,OAAO,cAAc,IACzB;AACN;AAEA,IAAM,6BAA6B,CACjC,QACA,eACA,gBACA,MACA,QACA,OAA8B,aAC3B;AAAA,EACH,MAAM,UAAU,mBAAkB,QAAQ,OAAO,cAAc;AAAA,EAC/D,qBACE,SACA,eACA,gBACA,OAAO,gBACT;AAAA,EACA,MAAM,cAAc,KAAK,SAAS,QAAQ,UAAU;AAAA,EACpD,IAAI,QAAQ,aAAa;AAAA,IACvB,YAAY,QAAQ,QAAQ;AAAA,IAC5B,YAAY,aAAa,CAAC,QAAQ,OAAO;AAAA,EAC3C;AAAA,EACA,IAAI,SAAS,UAAU;AAAA,IACrB,MAAM,qBAA8C,CAAC;AAAA,IACrD,IAAI,OAAO,WAAW,iBAAiB,WAAW;AAAA,MAChD,mBAAmB,aAAa,OAAO,UAAU;AAAA,MACjD,OAAO,YAAY;AAAA,IACrB,EAAO,SAAI,OAAO,WAAW,QAAQ;AAAA,MACnC,mBAAmB,SAAS,OAAO,UAAU;AAAA,MAC7C,OAAO,YAAY;AAAA,IACrB;AAAA,IACA,IAAI,QAAQ,WAAW;AAAA,MACrB,OAAO,OAAO,oBAAoB,QAAQ,SAAS;AAAA,MACnD,IAAI,QAAQ,UAAU,cAAc,WAAW;AAAA,QAC7C,mBAAmB,aAAa,QAAQ,UAAU;AAAA,QAClD,OAAO,mBAAmB;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,IAAI,OAAO,KAAK,kBAAkB,EAAE,SAAS;AAAA,MAC3C,YAAY,YAAY;AAAA,EAC5B;AAAA,EACA,MAAM,wBACJ,OAAO,kBAAkB,QAAQ,OAAO,sBAAsB,OACzD,EAAE,MAAM,YAAY,IACrB;AAAA,EACN,MAAM,eAAe,QAAQ,gBAAgB;AAAA,EAC7C,IAAI;AAAA,IAAc,YAAY,gBAAgB;AAAA,EAC9C,IAAI,QAAQ;AAAA,IACV,YAAY,mBAAmB,QAAQ;AAAA,EACzC,IAAI,QAAQ;AAAA,IACV,YAAY,uBAAuB,QAAQ;AAAA,EAC7C,MAAM,UAAU,WACd,KAAK,OAAO,YAAY,QAAQ,QAAQ,GACxC,OAAO,gBACT;AAAA,EACA,IAAI,OAAO,KAAK,OAAO,EAAE,SAAS;AAAA,IAAG,YAAY,WAAW;AAAA,EAC5D,IAAI,QAAQ;AAAA,IAAgB,YAAY,SAAS,CAAC,GAAG,QAAQ,cAAc;AAAA,EAC3E,IAAI,QAAQ,qBAAqB;AAAA,IAC/B,YAAY,oBAAoB,QAAQ;AAAA,EAC1C,IAAI,QAAQ,iBAAiB;AAAA,IAC3B,YAAY,iBAAiB,QAAQ;AAAA,EACvC,IAAI,QAAQ;AAAA,IAAS,YAAY,UAAU,CAAC,GAAG,QAAQ,OAAO;AAAA,EAC9D,IAAI,QAAQ;AAAA,IAAQ,YAAY,SAAS,QAAQ;AAAA,EACjD,IAAI,QAAQ,aAAa;AAAA,IACvB,YAAY,QAAQ;AAAA,MAClB,GAAI,MAAM,QAAQ,YAAY,KAAK,IAAI,YAAY,QAAQ,CAAC;AAAA,MAC5D,GAAG,QAAQ;AAAA,IACb;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,eAAe;AAAA,IACzB,IAAI,SAAS;AAAA,MACX,MAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E,YAAY,QAAQ;AAAA,MAClB,GAAI,MAAM,QAAQ,YAAY,KAAK,IAAI,YAAY,QAAQ,CAAC;AAAA,MAC5D,GAAG,QAAQ;AAAA,IACb;AAAA,EACF;AAAA,EACA,IAAI,QAAQ;AAAA,IAAa,YAAY,eAAe,QAAQ;AAAA,EAC5D,IAAI,QAAQ;AAAA,IAAW,YAAY,aAAa,QAAQ;AAAA,EACxD,IAAI,QAAQ;AAAA,IACV,YAAY,yBAAyB,QAAQ;AAAA,EAC/C,IAAI,QAAQ;AAAA,IAAO,YAAY,QAAQ,QAAQ;AAAA,EAC/C,IAAI,QAAQ;AAAA,IAAY,YAAY,aAAa,CAAC,GAAG,QAAQ,UAAU;AAAA,EACvE,IAAI,QAAQ;AAAA,IAAM,YAAY,OAAO,QAAQ;AAAA,EAC7C,IAAI,QAAQ;AAAA,IAAW,YAAY,YAAY,QAAQ;AAAA,EAEvD,OAAO;AAAA;AAGT,IAAM,uBAAuB,CAC3B,UACA,eACA,oBACsB;AAAA,EACtB,QAAQ,CAAC,WAAW;AAAA,IAClB,IAAI,OAAO,MAAM,WAAW,UAAU,GAAG;AAAA,MACvC,oBACE,OAAO,MAAM,MAAM,WAAW,MAAM,GACpC,cACF;AAAA,IACF,EAAO;AAAA,MACL,MAAM,kBAAkB,OAAO,MAAM,QAAQ,UAAU;AAAA,MACvD,IAAI,mBAAmB,GAAG;AAAA,QACxB,oBACE,OAAO,MAAM,MAAM,GAAG,eAAe,GACrC,aACF;AAAA,QACA,oBACE,OAAO,MAAM,MAAM,kBAAkB,WAAW,MAAM,GACtD,cACF;AAAA,MACF,EAAO;AAAA,QACL,oBAAmB,OAAO,OAAO,aAAa;AAAA;AAAA;AAAA,IAGlD,OAAO,SAAS,OAAO,MAAM;AAAA;AAEjC;AASO,IAAM,aAAa,CAAC,WAA+C;AAAA,EACxE,oBAAoB,MAAM;AAAA,EAG1B,QAAQ,eAAe,mBAAmB,eAAe,MAAM;AAAA,EAC/D,MAAM,WAAW,OAAO;AAAA,IACtB,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO,WAAW;AAAA,IAC3B,OAAO,OAAO;AAAA,IACd,SAAS,CAAC,WAAW,0BAA0B,QAAQ,MAAM;AAAA,IAC7D,sBAAsB;AAAA,IACtB,cAAc;AAAA,IACd,aAAa,OAAO;AAAA,IACpB,sBAAsB,CAAC,MAAM,WAC3B,2BACE,QACA,eACA,gBACA,MACA,MACF;AAAA,EACJ,CAAC;AAAA,EACD,OAAO,qBAAqB,UAAU,eAAe,cAAc;AAAA;AAI9D,IAAM,sBAAsB,CACjC,WACqB;AAAA,EACrB,oBAAoB,MAAM;AAAA,EAC1B,QAAQ,eAAe,mBAAmB,eAAe,MAAM;AAAA,EAC/D,MAAM,WAAW,gBAAgB;AAAA,IAC/B,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO,WAAW;AAAA,IAC3B,OAAO,OAAO;AAAA,IACd,SAAS,CAAC,WAAW,0BAA0B,QAAQ,MAAM;AAAA,IAC7D,sBAAsB;AAAA,IACtB,cAAc;AAAA,IACd,aAAa,OAAO;AAAA,IACpB,sBAAsB,CAAC,MAAM,WAC3B,2BACE,QACA,eACA,gBACA,MACA,MACF;AAAA,EACJ,CAAC;AAAA,EACD,OAAO,qBAAqB,UAAU,eAAe,cAAc;AAAA;AAI9D,IAAM,qBAAqB,CAChC,WACqB;AAAA,EACrB,oBAAoB,MAAM;AAAA,EAC1B,QAAQ,eAAe,mBAAmB,eAAe,MAAM;AAAA,EAC/D,MAAM,WAAW,UAAU;AAAA,IACzB,QAAQ,OAAO;AAAA,IACf,WAAW;AAAA,IACX,SAAS,OAAO,WAAW;AAAA,IAC3B,OAAO,OAAO;AAAA,IACd,SAAS,CAAC,WAAW,0BAA0B,QAAQ,MAAM;AAAA,IAC7D,cAAc;AAAA,IACd,aAAa,OAAO;AAAA,IACpB,sBAAsB,CAAC,MAAM,WAC3B,2BACE,QACA,eACA,gBACA,MACA,QACA,UACF;AAAA,EACJ,CAAC;AAAA,EACD,OAAO,qBAAqB,UAAU,eAAe,cAAc;AAAA;;AC36BrE,IAAM,wBAAwB,OAAO,aAAwC;AAAA,EAC3E,MAAM,OAAO,MAAM,SAChB,MAAM,EACN,KAAK,EACL,MAAM,MAAM,EAAE;AAAA,EACjB,OAAO,KAAK,KAAK;AAAA;AASZ,IAAM,2CAA2C,CACtD,WAC4B;AAAA,EAC5B,MAAM,YAAY,OAAO,SAAS;AAAA,EAClC,MAAM,MAAM,OAAO,QAAQ,MAAM,KAAK,IAAI;AAAA,EAC1C,MAAM,SAAS,OAAO,gBAAgB;AAAA,EACtC,MAAM,cAAc,OAAO,sBAAsB;AAAA,EACjD,MAAM,QAAQ,MAAM,QAAQ,OAAO,KAAK,IACpC,OAAO,MAAM,KAAK,GAAG,IACrB,OAAO;AAAA,EAEX,IAAI,SAA6B;AAAA,EACjC,IAAI,WAAmC;AAAA,EAEvC,MAAM,eAAe,YAA6B;AAAA,IAChD,MAAM,OAAO,IAAI,gBAAgB,EAAE,YAAY,qBAAqB,CAAC;AAAA,IACrE,IAAI;AAAA,MAAO,KAAK,IAAI,SAAS,KAAK;AAAA,IAClC,IAAI,OAAO;AAAA,MAAU,KAAK,IAAI,YAAY,OAAO,QAAQ;AAAA,IACzD,YAAY,KAAK,UAAU,OAAO,QAAQ,OAAO,eAAe,CAAC,CAAC,GAAG;AAAA,MACnE,KAAK,IAAI,KAAK,KAAK;AAAA,IACrB;AAAA,IACA,MAAM,UAAkC;AAAA,MACtC,QAAQ;AAAA,MACR,gBAAgB;AAAA,IAClB;AAAA,IACA,IAAI,OAAO,cAAc,SAAS;AAAA,MAChC,MAAM,UAAU,KAAK,GAAG,OAAO,YAAY,OAAO,cAAc;AAAA,MAChE,QAAQ,gBAAgB,SAAS;AAAA,IACnC,EAAO;AAAA,MACL,KAAK,IAAI,aAAa,OAAO,QAAQ;AAAA,MACrC,KAAK,IAAI,iBAAiB,OAAO,YAAY;AAAA;AAAA,IAG/C,MAAM,WAAW,MAAM,UAAU,OAAO,UAAU;AAAA,MAChD;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAAA,IACD,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,MAAM,SAAS,MAAM,sBAAsB,QAAQ;AAAA,MACnD,MAAM,IAAI,MACR,kDAAkD,SAAS,SAAS,SAAS,KAAK,WAAW,IAC/F;AAAA,IACF;AAAA,IACA,MAAM,UAAW,MAAM,SAAS,KAAK;AAAA,IACrC,IAAI,CAAC,QAAQ,cAAc;AAAA,MACzB,MAAM,IAAI,MACR,iEACF;AAAA,IACF;AAAA,IACA,MAAM,aAAa,QAAQ,cAAc;AAAA,IACzC,SAAS;AAAA,MACP,aAAa,QAAQ;AAAA,MACrB,aAAa,IAAI,IAAI,aAAa;AAAA,IACpC;AAAA,IACA,OAAO,QAAQ;AAAA;AAAA,EAGjB,OAAO,YAA6B;AAAA,IAClC,IAAI,UAAU,OAAO,cAAc,SAAS,IAAI,GAAG;AAAA,MACjD,OAAO,OAAO;AAAA,IAChB;AAAA,IACA,IAAI;AAAA,MAAU,OAAO;AAAA,IACrB,WAAW,aAAa,EAAE,QAAQ,MAAM;AAAA,MACtC,WAAW;AAAA,KACZ;AAAA,IACD,OAAO;AAAA;AAAA;;ACtGX,IAAM,4BAAoD;AAAA,EACxD,WAAW;AAAA,EACX,QAAQ;AACV;AAIA,IAAM,+BAA+B,IAAI,IAAI;AAAA,EAC3C;AAAA,EACA;AACF,CAAC;AAID,IAAM,4BAA4B,IAAI,IAAI,CAAC,QAAQ,OAAO,CAAC;AAe3D,IAAM,YAAW,CAAC,UAChB,OAAO,UAAU,YAAY,UAAU;AAEzC,IAAM,aAAa,CAAC,QAAiC,QACnD,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO;AAElD,IAAM,sBAAsB,CAC1B,MACA,kBACkB;AAAA,EAClB,IAAI,CAAC,UAAS,IAAI,KAAK,CAAC,MAAM,QAAQ,KAAK,UAAU;AAAA,IAAG,OAAO;AAAA,EAC/D,MAAM,QAAQ,KAAK,WAChB,OAAO,SAAQ,EACf,KAAK,CAAC,cAAc,WAAW,WAAW,MAAM,MAAM,aAAa;AAAA,EAEtE,OAAO,QAAQ,WAAW,OAAO,QAAQ,IAAI;AAAA;AAG/C,IAAM,oBAAoB,CAAC,SAAiC;AAAA,EAC1D,IAAI,CAAC,UAAS,IAAI,KAAK,CAAC,UAAS,KAAK,MAAM;AAAA,IAAG,OAAO;AAAA,EACtD,MAAM,YAAY,WAAW,KAAK,QAAQ,WAAW;AAAA,EAErD,OAAO,cAAc,KAAK,OAAO;AAAA;AAGnC,IAAM,YAAY,OAChB,KACA,WACqB;AAAA,EACrB,MAAM,WAAW,MAAM,MAAM,KAAK,EAAE,OAAO,CAAC;AAAA,EAC5C,IAAI,CAAC,SAAS;AAAA,IAAI,MAAM,IAAI,MAAM,gBAAgB,SAAS,QAAQ;AAAA,EAEnE,OAAO,SAAS,KAAK;AAAA;AAGvB,IAAM,gBAAgB,CAAC,cAAyC;AAAA,EAC9D,WAAW;AAAA,EACX,WAAW,KAAK,IAAI;AAAA,EACpB,eAAe;AAAA,EACf,WAAW;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,EACR,eAAe,mBAAmB,QAAQ;AAC5C;AAQO,IAAM,yBAAyB,OACpC,UACA,WAC+B;AAAA,EAC/B,MAAM,OAAO,sBAAsB;AAAA,EACnC,IAAI,SAAS;AAAA,IAAW,OAAO,cAAc,QAAQ;AAAA,EAErD,IAAI;AAAA,IACF,MAAM,gBAAgB,0BAA0B,aAAa;AAAA,IAC7D,IAAI,kBAAkB,MAAM;AAAA,MAC1B,MAAM,aAAa,MAAM,UACvB,GAAG,+BACH,MACF;AAAA,MACA,MAAM,SAAS,oBAAoB,YAAY,aAAa;AAAA,MAC5D,IAAI,WAAW,MAAM;AAAA,QACnB,MAAM,YAAY,6BAA6B,IAAI,MAAM;AAAA,QAEzD,OAAO;AAAA,UACL;AAAA,UACA,WAAW,KAAK,IAAI;AAAA,UACpB;AAAA,UACA,WAAW;AAAA,UACX;AAAA,UACA,QAAQ,YAAY,KAAK,GAAG,aAAa;AAAA,UACzC,eAAe;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAAA,IAGA,MAAM,UAAU,MAAM,UAAU,GAAG,2BAA2B,MAAM;AAAA,IACpE,MAAM,YAAY,kBAAkB,OAAO;AAAA,IAC3C,IAAI,cAAc;AAAA,MAAM,OAAO,cAAc,QAAQ;AAAA,IACrD,MAAM,YAAY,0BAA0B,IAAI,SAAS;AAAA,IAEzD,OAAO;AAAA,MACL;AAAA,MACA,WAAW,KAAK,IAAI;AAAA,MACpB,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA,QAAQ,YAAY,KAAK,gBAAgB;AAAA,MACzC,eAAe;AAAA,IACjB;AAAA,IACA,MAAM;AAAA,IACN,OAAO,cAAc,QAAQ;AAAA;AAAA;AAmB1B,IAAM,6BAA6B,CACxC,YACG;AAAA,EACH,MAAM,YAAY,SAAS,aAAa,CAAC,aAAa,QAAQ;AAAA,EAC9D,MAAM,aAAa,SAAS,cAAc;AAAA,EAE1C,MAAM,OAAO,YAAY;AAAA,IACvB,MAAM,UAAU,MAAM,QAAQ,IAC5B,UAAU,IAAI,CAAC,aAAa,uBAAuB,QAAQ,CAAC,CAC9D;AAAA,IACA,WAAW,UAAU,SAAS;AAAA,MAC5B,wBAAwB,OAAO,UAAU;AAAA,QACvC,WAAW,OAAO;AAAA,QAClB,WAAW,OAAO;AAAA,QAClB,QAAQ,OAAO;AAAA,MACjB,CAAC;AAAA,MACD,SAAS,WAAW,MAAM;AAAA,IAC5B;AAAA;AAAA,EAGG,KAAK;AAAA,EACV,MAAM,QAAQ,YAAY,MAAM,KAAK,KAAK,GAAG,UAAU;AAAA,EAEvD,OAAO,MAAM,cAAc,KAAK;AAAA;;ACxKlC,IAAM,WAAW,OAAO,SAAiB;AAAA,EACvC,MAAM,SAAS,MAAM,OAAO,OAAO,OACjC,WACA,IAAI,YAAY,EAAE,OAAO,IAAI,CAC/B;AAAA,EACA,OAAO,MAAM,KAAK,IAAI,WAAW,MAAM,GAAG,CAAC,SACzC,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CACnC,EAAE,KAAK,EAAE;AAAA;AAsCX,IAAM,6BAA6B,OACjC,UACA,QACA,SACA,qBAC+D;AAAA,EAC/D,MAAM,gBAAgB,OACpB,WACA,YACG;AAAA,IACH,MAAM,YAAY,MAAM,iBACtB,WACA,SACA,QAAQ,aACV;AAAA,IACA,OAAO;AAAA,SACF;AAAA,MACH,MAAM,UAAU;AAAA,MAChB,sBAAsB,UAAU;AAAA,IAClC;AAAA;AAAA,EAEF,MAAM,WAAW,MAAM,cAAc,UAAU,MAAM;AAAA,EACrD,IAAI,SAAS;AAAA,IAAM,OAAO,EAAE,QAAQ,WAAW,OAAO,mBAAmB,EAAE;AAAA,EAC3E,IAAI,SAAS,eAAe,SAAS,OAAO;AAAA,IAC1C,MAAM,IAAI,aACR,mBACA,wDACF;AAAA,EAEF,MAAM,QAKD,CAAC;AAAA,EACN,IAAI,aAAa;AAAA,EACjB,MAAM,OAAO,OAAO,SACjB,IAAI,CAAC,SAAS,iBAAiB;AAAA,IAC9B,IAAI,OAAO,QAAQ,YAAY;AAAA,MAC7B,MAAM,IAAI,aACR,uBACA,4DACF;AAAA,IACF,MAAM,QAAQ,GAAG,QAAQ,SAAS,QAAQ;AAAA,IAC1C,MAAM,KAAK;AAAA,MACT;AAAA,MACA,MAAM,QAAQ;AAAA,MACd,OAAO;AAAA,MACP,KAAK,aAAa,MAAM;AAAA,IAC1B,CAAC;AAAA,IACD,cAAc,MAAM,SAAS;AAAA,IAC7B,OAAO;AAAA,GACR,EACA,KAAK;AAAA;AAAA,CAAM;AAAA,EACd,MAAM,kBAAkB,KAAK,WAAW,QAAQ,iBAAiB;AAAA,EACjE,MAAM,gBAAgB,MAAM,cAAc,UAAU;AAAA,OAC/C;AAAA,IACH,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,EAC3C,CAAC;AAAA,EACD,IAAI,CAAC,cAAc;AAAA,IACjB,MAAM,IAAI,aACR,mBACA,mEACF;AAAA,EACF,IACE,QAAQ,qBAAqB,aAC7B,CAAC,QAAQ,iBAAiB,KAAK;AAAA,IAE/B,MAAM,IAAI,aACR,wBACA,uCACF;AAAA,EACF,MAAM,mBAAmB,QAAQ,oBAAoB,OAAO;AAAA,EAC5D,MAAM,sBACJ,QAAQ,qBAAqB,YACzB,WACA,MAAM,cAAc,UAAU;AAAA,IAC5B,OAAO;AAAA,IACP,QAAQ,OAAO;AAAA,IACf,WAAW;AAAA,IACX,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,EAC3C,CAAC;AAAA,EACP,MAAM,WAAW,MAAM,SACrB,KAAK,UAAU;AAAA,IACb,0BAA0B;AAAA,IAC1B,kBAAkB,QAAQ;AAAA,IAC1B,OAAO,OAAO;AAAA,IACd,cAAc,OAAO;AAAA,IACrB,OAAO,OAAO;AAAA,IACd,kBAAkB,QAAQ;AAAA,IAC1B,eAAe,QAAQ;AAAA,EACzB,CAAC,CACH;AAAA,EACA,MAAM,OAAO,OAAO,SAAS,GAAG,EAAE;AAAA,EAClC,IAAI,QAAQ;AAAA,EACZ,IAAI,SAAS;AAAA,EACb,IAAI,oBAAoB;AAAA,EACxB,MAAM,QAAQ,QAAQ;AAAA,EACtB,IACE,OAAO,YAAY,KACnB,MAAM,aAAa,YACnB,OAAO,cAAc,MAAM,mBAAmB,KAC9C,MAAM,sBAAsB,KAC5B,MAAM,uBAAuB,KAAK,UAClC,OAAO,cAAc,MAAM,iBAAiB,KAC5C,MAAM,oBAAoB,KAC1B,OAAO,MAAM,UAAU,YACvB,MAAM,MAAM,KAAK,KACjB,MAAM,eACH,MAAM,SAAS,KAAK,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAC1D;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,IACf,oBAAoB,MAAM;AAAA,EAC5B;AAAA,EACA,MAAM,aAAa,KAAK,IACtB,MACA,oBAAoB,OAAO,iBAC3B,KAAK,IACH,GACA,KAAK,OACF,cAAc,uBAAuB,cAAc,eAAe,CACrE,CACF,CACF;AAAA,EACA,MAAM,iBAAiB,CAAC,aAA6C;AAAA,IACnE,OAAO;AAAA,IACP,QAAQ,OAAO;AAAA,IACf,WAAW;AAAA,IACX,cACE;AAAA,IACF,UAAU;AAAA,MACR;AAAA,QACE,MAAM;AAAA,QACN,SAAS,KAAK,UAAU;AAAA,UACtB,MAAM,gBAAgB,gBAAgB;AAAA,UACtC,eAAe;AAAA,UACf,eAAe;AAAA,UACf,oBAAoB,MACjB,OACC,CAAC,SACC,KAAK,QAAQ,SAAS,QAAQ,UAAU,KAAK,MAAM,MACvD,EACC,IAAI,CAAC,UAAU;AAAA,YACd,cAAc,KAAK;AAAA,YACnB,MAAM,KAAK;AAAA,YACX,OAAO,KAAK,IAAI,GAAG,KAAK,QAAQ,MAAM;AAAA,YACtC,KAAK,KAAK,IAAI,QAAQ,QAAQ,KAAK,MAAM,MAAM;AAAA,UACjD,EAAE;AAAA,QACN,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ,aAAa;AAAA,IACnB,qBAAqB;AAAA,IACrB,iBAAiB,KAAK;AAAA,IACtB;AAAA,EACF,CAAC;AAAA,EACD,OAAO,SAAS,KAAK,QAAQ;AAAA,IAC3B,OAAO,QAAQ,eAAe;AAAA,IAC9B,IAAI,MAAM,KAAK;AAAA,IACf,IAAI,eAAe;AAAA,IACnB,IAAI,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG,CAAC;AAAA,IAEpD,OAAO,EAAE,MAAM,cAAc,UAAU,OAAO,GAAG,MAAM;AAAA,MACrD,IAAI,MAAM,UAAU;AAAA,QAClB,MAAM,IAAI,aACR,mBACA,iEACF;AAAA,MACF,eAAe;AAAA,MACf,MAAM,SAAS,KAAK,OAAO,MAAM,UAAU,CAAC;AAAA,MAE5C,MAAM,YAAY,KAAK,WAAW,MAAM,CAAC;AAAA,MACzC,IAAI,aAAa,SAAU,aAAa;AAAA,QAAQ,OAAO;AAAA,MACvD,IAAI,OAAO;AAAA,QACT,MAAM,IAAI,aACR,mBACA,iEACF;AAAA,MACF,UAAU,eAAe,KAAK,MAAM,QAAQ,GAAG,CAAC;AAAA,IAClD;AAAA,IAKA,MAAM,4BAA4B;AAAA,IAClC,SAAS,QAAQ,EAAG,QAAQ,2BAA2B,SAAS,GAAG;AAAA,MACjE,OAAO,QAAQ,eAAe;AAAA,MAC9B,IAAI,eAAe,MAAM,KAAK,OAAO,eAAe,OAAO,CAAC;AAAA,MAC5D,MAAM,YAAY,KAAK,WAAW,eAAe,CAAC;AAAA,MAClD,IAAI,aAAa,SAAU,aAAa;AAAA,QAAQ,gBAAgB;AAAA,MAChE,IAAI,gBAAgB;AAAA,QAAK;AAAA,MACzB,MAAM,YAAY,eAAe,KAAK,MAAM,QAAQ,YAAY,CAAC;AAAA,MACjE,KAAK,MAAM,cAAc,UAAU,SAAS,GAAG,MAAM;AAAA,QACnD,MAAM;AAAA,QACN,UAAU;AAAA,MACZ,EAAO;AAAA,QACL,eAAe;AAAA;AAAA,IAEnB;AAAA,IACA,OAAO,QAAQ,eAAe;AAAA,IAC9B,IAAI,UAAU;AAAA,IACd,IAAI,QAAQ;AAAA,IACZ,iBAAiB,SAAS,SAAS,OAAO,OAAO,GAAG;AAAA,MAClD,IAAI,MAAM,SAAS;AAAA,QAAQ,WAAW,MAAM;AAAA,MAC5C,IAAI,MAAM,SAAS,QAAQ;AAAA,QACzB,IAAI,MAAM;AAAA,UAAO,QAAQ,UAAU,MAAM,KAAK;AAAA,QAC9C,IAAI,MAAM,eAAe,gBAAgB,MAAM,eAAe;AAAA,UAC5D,MAAM,IAAI,aACR,wBACA,gFACF;AAAA,QACF,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK;AAAA,MAC1B,MAAM,IAAI,aACR,wBACA,6EACF;AAAA,IACF,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,qBAAqB;AAAA,IACrB,MAAM,aAA0C;AAAA,MAC9C,SAAS;AAAA,MACT;AAAA,MACA,YAAY,MAAM,SAAS,KAAK,MAAM,GAAG,MAAM,CAAC;AAAA,MAChD,qBAAqB;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,eAAe,UAAU;AAAA,IACvC,QAAQ,aAAa;AAAA,MACnB,qBAAqB;AAAA,MACrB,iBAAiB,KAAK;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,IACD,IAAI;AAAA,MAAkB,OAAO;AAAA,EAC/B;AAAA,EAGA,MAAM,YAAY,CAAC,iBAAkD;AAAA,OAChE;AAAA,IACH,UAAU;AAAA,MACR;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,EAAmH;AAAA,MAC9H;AAAA,MACA,GAAI,eAAe,OACf,CAAC,IAAI,IACL;AAAA,QACE;AAAA,UACE,MAAM;AAAA,UACN,SACE;AAAA,QACJ;AAAA,MACF;AAAA,IACN;AAAA,EACF;AAAA,EACA,IAAI,WAAW,UAAU,IAAI;AAAA,EAC7B,IAAI,mBAAmB,MAAM,cAAc,UAAU,QAAQ;AAAA,EAC7D,IAAI,CAAC,iBAAiB,MAAM;AAAA,IAC1B,WAAW,UAAU,KAAK;AAAA,IAC1B,mBAAmB,MAAM,cAAc,UAAU,QAAQ;AAAA,EAC3D;AAAA,EACA,IAAI,CAAC,iBAAiB;AAAA,IACpB,MAAM,IAAI,aACR,mBACA,yEACF;AAAA,EACF,OAAO,EAAE,QAAQ,UAAU,WAAW,MAAM,kBAAkB;AAAA;AAYzD,IAAM,yBAAyB,OACpC,UACA,QACA,UAAqC,CAAC,MACH;AAAA,EACnC,MAAM,SAAS,MAAM,2BACnB,UACA,QACA,SACA,IACF;AAAA,EACA,OAAO,YAAY,SACf,EAAE,QAAQ,SAAS,UAAU,OAAO,IACpC,EAAE,QAAQ,WAAW,YAAY,OAAO;AAAA;AAKvC,IAAM,qBAAqB,OAChC,UACA,QACA,UAAqC,CAAC,MACL;AAAA,EACjC,MAAM,SAAS,MAAM,2BACnB,UACA,QACA,SACA,KACF;AAAA,EACA,IAAI,EAAE,YAAY;AAAA,IAAS,MAAM,IAAI,MAAM,iCAAiC;AAAA,EAC5E,OAAO;AAAA;;AC1WT,IAAM,eAAe;AACrB,IAAM,kBAAkB;AACxB,IAAM,aAAa;AACnB,IAAM,eAAe;AACrB,IAAM,YAAY,CAAC,SAAiB,KAAK,UAAU,MAAM,EAAE,YAAY;AACvE,IAAM,WAAW,CAAC,MAAc,WAAmB;AAAA,EACjD,MAAM,OAAO,KAAK,WAAW,SAAS,CAAC;AAAA,EACvC,MAAM,OAAO,KAAK,WAAW,MAAM;AAAA,EACnC,OAAO,QAAQ,SAAU,QAAQ,SAAU,QAAQ,SAAU,QAAQ,QACjE,SAAS,IACT;AAAA;AAEN,IAAM,UAAS,CAAC,UACd,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC9D,QACD,CAAC;AAMA,IAAM,qBAAqB,CAAC,aAA2C;AAAA,EAC5E,MAAM,UAAU,SAAS,IAAI,CAAC,SAAS,UAAU;AAAA,IAC/C,IAAI,OAAO,QAAQ,YAAY;AAAA,MAC7B,MAAM,IAAI,aACR,uBACA,iDACF;AAAA,IACF,OAAO;AAAA,MACL,UAAU,WAAW,QAAQ;AAAA,MAC7B,MAAM,QAAQ;AAAA,MACd,MAAM,QAAQ;AAAA,IAChB;AAAA,GACD;AAAA,EACD,MAAM,WAA4B,CAAC;AAAA,EACnC,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,QAAQ;AAAA,IACZ,OAAO,QAAQ,OAAO,KAAK,QAAQ;AAAA,MACjC,MAAM,MAAM,SACV,OAAO,MACP,KAAK,IAAI,OAAO,KAAK,QAAQ,QAAQ,YAAY,CACnD;AAAA,MACA,SAAS,KAAK;AAAA,QACZ,UAAU,OAAO;AAAA,QACjB,MAAM,OAAO;AAAA,QACb;AAAA,QACA;AAAA,QACA,iBAAiB,OAAO,KAAK;AAAA,QAC7B,MAAM,OAAO,KAAK,MAAM,OAAO,GAAG;AAAA,MACpC,CAAC;AAAA,MACD,IAAI,QAAQ,OAAO,KAAK;AAAA,QAAQ;AAAA,MAChC,QAAQ,SAAS,OAAO,MAAM,MAAM,eAAe;AAAA,IACrD;AAAA,EACF;AAAA,EACA,MAAM,UAAU,SAAS,IAAI,CAAC,aAAa;AAAA,IACzC;AAAA,IACA,YAAY,UAAU,QAAQ,IAAI;AAAA,EACpC,EAAE;AAAA,EACF,MAAM,OAAO,CACX,UACA,QAAQ,GACR,SAAS,eACS;AAAA,IAClB,MAAM,SAAS,QAAQ,KAAK,CAAC,SAAS,KAAK,aAAa,QAAQ;AAAA,IAChE,IACE,CAAC,UACD,CAAC,OAAO,cAAc,KAAK,KAC3B,QAAQ,KACR,QAAQ,OAAO,KAAK,UACpB,CAAC,OAAO,cAAc,MAAM,KAC5B,SAAS;AAAA,MAET,MAAM,IAAI,aACR,uBACA,8EACF;AAAA,IACF,MAAM,OAAO,SAAS,OAAO,MAAM,KAAK;AAAA,IACxC,MAAM,MAAM,SACV,OAAO,MACP,KAAK,IAAI,OAAO,KAAK,QAAQ,OAAO,KAAK,IAAI,QAAQ,UAAU,CAAC,CAClE;AAAA,IACA,OAAO;AAAA,MACL;AAAA,MACA,MAAM,OAAO;AAAA,MACb,OAAO;AAAA,MACP;AAAA,MACA,iBAAiB,OAAO,KAAK;AAAA,MAC7B,MAAM,OAAO,KAAK,MAAM,MAAM,GAAG;AAAA,IACnC;AAAA;AAAA,EAEF,MAAM,SAAS,CAAC,OAAe,aAAsB;AAAA,IACnD,MAAM,SAAS,UAAU,MAAM,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;AAAA,IACnD,MAAM,QAAQ,CAAC,GAAG,IAAI,IAAI,OAAO,MAAM,iBAAiB,KAAK,CAAC,CAAC,CAAC;AAAA,IAChE,OAAO,QACJ,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,QAAQ,aAAa,QAAQ,EAChE,IAAI,CAAC,UAAU;AAAA,SACX;AAAA,MACH,QACG,UAAU,KAAK,WAAW,SAAS,MAAM,IAAI,KAAK,KACnD,MAAM,OACJ,CAAC,OAAO,SAAS,SAAS,KAAK,WAAW,SAAS,IAAI,IAAI,IAAI,IAC/D,CACF;AAAA,IACJ,EAAE,EACD,OAAO,CAAC,SAAS,CAAC,UAAU,KAAK,QAAQ,CAAC,EAC1C,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAChC,MAAM,GAAG,YAAY,EACrB,IAAI,CAAC,SAAS,KAAK,OAAO;AAAA;AAAA,EAE/B,MAAM,QAAmB;AAAA,IACvB,oBAAoB;AAAA,MAClB,aACE;AAAA,MACF,aAAa,EAAE,cAAc,MAAM,eAAe,MAAM;AAAA,MACxD,OAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,GAAG,UAAU,EAAE,MAAM,SAAS,EAAE;AAAA,QACtE,UAAU,CAAC,OAAO;AAAA,QAClB,sBAAsB;AAAA,MACxB;AAAA,MACA,SAAS,CAAC,UAAU;AAAA,QAClB,MAAM,QAAQ,QAAO,KAAK;AAAA,QAC1B,IAAI,OAAO,MAAM,UAAU;AAAA,UAAU,OAAO;AAAA,QAC5C,OAAO,KAAK,UAAU;AAAA,UACpB,eAAe;AAAA,UACf,UAAU,OACR,MAAM,OACN,OAAO,MAAM,aAAa,WAAW,MAAM,WAAW,SACxD;AAAA,QACF,CAAC;AAAA;AAAA,IAEL;AAAA,IACA,kBAAkB;AAAA,MAChB,aACE;AAAA,MACF,aAAa,EAAE,cAAc,MAAM,eAAe,MAAM;AAAA,MACxD,OAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY;AAAA,UACV,UAAU,EAAE,MAAM,SAAS;AAAA,UAC3B,OAAO,EAAE,MAAM,WAAW,SAAS,EAAE;AAAA,UACrC,QAAQ,EAAE,MAAM,WAAW,SAAS,GAAG,SAAS,WAAW;AAAA,QAC7D;AAAA,QACA,UAAU,CAAC,YAAY,OAAO;AAAA,QAC9B,sBAAsB;AAAA,MACxB;AAAA,MACA,SAAS,CAAC,UAAU;AAAA,QAClB,MAAM,QAAQ,QAAO,KAAK;AAAA,QAC1B,IACE,OAAO,MAAM,aAAa,YAC1B,OAAO,MAAM,UAAU;AAAA,UAEvB,OAAO;AAAA,QACT,OAAO,KAAK,UAAU;AAAA,UACpB,eAAe;AAAA,UACf,SAAS,KACP,MAAM,UACN,MAAM,OACN,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS,UACpD;AAAA,QACF,CAAC;AAAA;AAAA,IAEL;AAAA,EACF;AAAA,EACA,OAAO,EAAE,QAAQ,MAAM,MAAM;AAAA;;ACzKxB,IAAM,mCACX,CAAC,cACD,SAAS,aAAa;AAAA,EACpB,MAAM,QAAQ,IAAI,IAAI,SAAS;AAAA,EAC/B,MAAM,WAAW,IAAI;AAAA,EACrB,WAAW,WAAW,OAAO,UAAU;AAAA,IACrC,IAAI,OAAO,QAAQ,YAAY;AAAA,MAAU;AAAA,IACzC,WAAW,SAAS,QAAQ,SAAS;AAAA,MACnC,IAAI,MAAM,SAAS,cAAc,MAAM,IAAI,MAAM,IAAI;AAAA,QACnD,SAAS,IAAI,MAAM,EAAE;AAAA,IACzB;AAAA,EACF;AAAA,EACA,MAAM,UAAU,OAAO,SAAS,QAAQ,CAAC,YACvC,OAAO,QAAQ,YAAY,WACvB,CAAC,IACD,QAAQ,QAAQ,OACd,CAAC,UACC,MAAM,SAAS,iBAAiB,SAAS,IAAI,MAAM,WAAW,CAClE,CACN;AAAA,EACA,MAAM,SAAS,QAAQ,GAAG,EAAE;AAAA,EAC5B,OAAO,OAAO,SAAS,IAAI,CAAC,aAAa;AAAA,OACpC;AAAA,IACH,SACE,OAAO,QAAQ,YAAY,WACvB,QAAQ,UACR,QAAQ,QAAQ,IAAI,CAAC,UAAU;AAAA,MAC7B,IACE,MAAM,SAAS,iBACf,CAAC,SAAS,IAAI,MAAM,WAAW,KAC/B,UAAU;AAAA,QAEV,OAAO;AAAA,MACT,MAAM,SACJ;AAAA,MAGF,IAAI,MAAM,QAAQ;AAAA,QAChB,OAAO;AAAA,UACL,SAAS;AAAA,UACT,aAAa,MAAM;AAAA,UACnB,MAAM,MAAM;AAAA,QACd;AAAA,MACF,OAAO,MAAM,QAAQ,SAAS,OAAO,SACjC,KAAK,OAAO,SAAS,OAAO,IAC5B;AAAA,KACL;AAAA,EACT,EAAE;AAAA;;ACjDC,IAAM,yBAAyB,CACpC,WACqB;AAAA,EACrB,MAAM,YAAY,IAAI,IAAI,OAAO,QAAQ,MAAM,CAAC;AAAA,EAChD,MAAM,UAAU,CAAC,WAAmC;AAAA,IAClD,OAAO,QAAQ,eAAe;AAAA,IAC9B,MAAM,WAAW,UAAU,IAAI,OAAO,KAAK;AAAA,IAC3C,IAAI,CAAC;AAAA,MACH,MAAM,IAAI,aACR,wBACA,+BAA+B,OAAO,QACxC;AAAA,IACF,OAAO;AAAA;AAAA,EAET,MAAM,WAAW,CAAC,WAAmC;AAAA,IACnD,MAAM,SAAS,QAAQ,MAAM,EAAE;AAAA,IAC/B,IAAI,CAAC;AAAA,MACH,MAAM,IAAI,aACR,wBACA,oBAAoB,OAAO,0DAC7B;AAAA,IACF,OAAO;AAAA;AAAA,EAET,OAAO;AAAA,IACL,eAAe;AAAA,MACb,cAAc,CAAC,WAAW,SAAS,MAAM,EAAE,eAAe,MAAM;AAAA,MAChE,gBAAgB,CAAC,UACf,CAAC,GAAG,IAAI,IAAI,UAAU,OAAO,CAAC,CAAC,EAAE,KAC/B,CAAC,aACC,SAAS,eAAe,iBAAiB,KAAK,MAAM,IACxD;AAAA,MACF,WAAW,OAAO,WAAW,SAAS,MAAM,EAAE,UAAU,MAAM;AAAA,MAC9D,YAAY,CAAC,WACX,SAAS,MAAM,EAAE,aAAa,MAAM,KAAK;AAAA,MAC3C,aAAa,OAAO,WAAW,SAAS,MAAM,EAAE,YAAY,MAAM;AAAA,IACpE;AAAA,IACA,QAAQ,CAAC,WAAW,QAAQ,MAAM,EAAE,OAAO,MAAM;AAAA,EACnD;AAAA;",
52
- "debugId": "9A889A121344253764756E2164756E21",
53
+ "mappings": "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",
54
+ "debugId": "577984AE55403A4664756E2164756E21",
53
55
  "names": []
54
56
  }