@letta-ai/letta-agent-sdk 0.2.6 → 0.2.7

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.
package/dist/index.js.map CHANGED
@@ -7,18 +7,18 @@
7
7
  "// Interactive tool policy for SDK permission callbacks.\n// Centralizes behavior so transport/session logic doesn't hardcode names inline.\n\nconst INTERACTIVE_APPROVAL_TOOLS = new Set([\n \"AskUserQuestion\",\n \"EnterPlanMode\",\n \"ExitPlanMode\",\n]);\n\nconst RUNTIME_USER_INPUT_TOOLS = new Set([\"AskUserQuestion\", \"ExitPlanMode\"]);\n\nconst HEADLESS_AUTO_ALLOW_TOOLS = new Set([\"EnterPlanMode\"]);\n\nexport function isInteractiveApprovalTool(toolName: string): boolean {\n return INTERACTIVE_APPROVAL_TOOLS.has(toolName);\n}\n\nexport function requiresRuntimeUserInput(toolName: string): boolean {\n return RUNTIME_USER_INPUT_TOOLS.has(toolName);\n}\n\nexport function isHeadlessAutoAllowTool(toolName: string): boolean {\n return HEADLESS_AUTO_ALLOW_TOOLS.has(toolName);\n}\n",
8
8
  "/**\n * Session\n *\n * Represents a conversation session with a Letta agent.\n * Implements the V2 API pattern: send() / receive()\n */\n\nimport { SubprocessTransport } from \"./transport.js\";\nimport type {\n InternalSessionOptions,\n SDKMessage,\n SDKInitMessage,\n SDKResultMessage,\n SDKErrorCode,\n MessageWire,\n WireMessage,\n ControlRequest,\n CanUseToolControlRequest,\n CanUseToolResponse,\n CanUseToolResponseAllow,\n CanUseToolResponseDeny,\n SendMessage,\n AnyAgentTool,\n ExecuteExternalToolRequest,\n ListMessagesOptions,\n ListMessagesResult,\n ListModelsResult,\n BootstrapStateOptions,\n BootstrapStateResult,\n SDKStreamEventPayload,\n RunTurnOptions,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SDKProtocolCommand,\n SDKProtocolMessage,\n SendCommandOptions,\n UpdateModelOptions,\n UpdateModelResult,\n} from \"./types.js\";\nimport {\n isHeadlessAutoAllowTool,\n requiresRuntimeUserInput,\n} from \"./interactiveToolPolicy.js\";\nimport { isUnrestrictedPermissionMode } from \"./remote-client-session-core.js\";\n\n\n// All logging gated behind DEBUG_SDK env var\nfunction sessionLog(tag: string, ...args: unknown[]) {\n if (process.env.DEBUG_SDK) console.error(`[SDK-Session] [${tag}]`, ...args);\n}\n\nconst MAX_BUFFERED_STREAM_MESSAGES = 100;\nconst DEFAULT_MAX_APPROVAL_RECOVERY_ATTEMPTS = 1;\nconst DEFAULT_APPROVAL_RECOVERY_TIMEOUT_MS = 5_000;\n\nconst KNOWN_SDK_ERROR_CODES = new Set<SDKErrorCode>([\n \"approval_conflict\",\n \"approval_conflict_terminal\",\n \"protocol_error\",\n \"error\",\n \"llm_api_error\",\n \"max_steps\",\n \"interrupted\",\n \"stream_closed\",\n]);\n\nfunction isKnownSdkErrorCode(value: string): value is SDKErrorCode {\n return KNOWN_SDK_ERROR_CODES.has(value as SDKErrorCode);\n}\n\nfunction toSdkErrorCode(value: string | undefined): SDKErrorCode | undefined {\n if (!value || value.length === 0) return undefined;\n return isKnownSdkErrorCode(value) ? value : undefined;\n}\n\nfunction isUnknownControlSubtypeError(\n errorMessage: string | undefined,\n subtype: string,\n): boolean {\n if (!errorMessage) return false;\n return errorMessage\n .toLowerCase()\n .includes(`unknown control request subtype: ${subtype}`.toLowerCase());\n}\n\nfunction extractApiErrorDetail(apiError: Record<string, unknown> | undefined): string | undefined {\n const detail = apiError?.detail;\n if (typeof detail !== \"string\") return undefined;\n const trimmed = detail.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction isApprovalConflictSignal(params: {\n detail?: string;\n message?: string;\n stopReason?: string;\n}): boolean {\n if (params.stopReason === \"requires_approval\") return true;\n // Stopgap heuristic until the server emits a first-class structured\n // approval-conflict code in wire payloads.\n const haystack = [params.detail, params.message]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0)\n .join(\"\\n\")\n .toLowerCase();\n if (!haystack) return false;\n return (\n haystack.includes(\"waiting for approval on a tool call\") ||\n haystack.includes(\"cannot send a new message\") ||\n haystack.includes(\"requires_approval\")\n );\n}\n\ntype BufferedStreamMessage = {\n message: SDKMessage;\n generation: number;\n runId?: string;\n};\n\nexport class Session implements AsyncDisposable {\n private transport: SubprocessTransport;\n private _agentId: string | null = null;\n private _sessionId: string | null = null;\n private _conversationId: string | null = null;\n private initialized = false;\n private externalTools: Map<string, AnyAgentTool> = new Map();\n private streamQueue: BufferedStreamMessage[] = [];\n private streamResolvers: Array<(msg: BufferedStreamMessage | null) => void> = [];\n private pumpPromise: Promise<void> | null = null;\n private pumpClosed = false;\n private droppedStreamMessages = 0;\n // Monotonic counter incremented after each send(). Messages enqueued by the\n // pump are tagged with the current generation; stream() filters out messages\n // from earlier generations to prevent N-1 desync (stale events from a\n // previous run leaking into the current run's stream).\n private sendGeneration = 0;\n // Run IDs that completed in the previous streamed turn. Used to drop\n // late-arriving stale events from the old run if they arrive after send().\n private lastCompletedRunIds = new Set<string>();\n // Waiters for SDK-initiated control requests (e.g., listMessages).\n // Keyed by request_id; pump resolves the matching waiter when it sees\n // a control_response with that request_id instead of queuing it as a stream msg.\n private controlResponseWaiters = new Map<\n string,\n (response: { subtype: string; response?: unknown; error?: string }) => void\n >();\n\n constructor(\n private options: InternalSessionOptions = {}\n ) {\n // Note: Validation happens in public API functions (createSession, createAgent, etc.)\n if (options.reasoningEffort !== undefined) {\n throw new Error(\n \"reasoningEffort is not supported by this session. Create a Cloud, Remote, or local agent session before setting reasoning effort.\",\n );\n }\n this.transport = new SubprocessTransport(options);\n\n // Store external tools in a map for quick lookup\n if (options.tools) {\n for (const tool of options.tools) {\n this.externalTools.set(tool.name, tool);\n }\n }\n }\n\n /**\n * Initialize the session (called automatically on first send)\n */\n async initialize(): Promise<SDKInitMessage> {\n if (this.initialized) {\n throw new Error(\"Session already initialized\");\n }\n\n sessionLog(\"init\", \"connecting transport...\");\n await this.transport.connect();\n sessionLog(\"init\", \"transport connected, sending initialize request\");\n\n // Send initialize control request\n await this.transport.write({\n type: \"control_request\",\n request_id: \"init_1\",\n request: { subtype: \"initialize\" },\n });\n\n // Wait for init message\n sessionLog(\"init\", \"waiting for init message from CLI...\");\n for await (const msg of this.transport.messages()) {\n sessionLog(\"init\", `received wire message: type=${msg.type}`);\n\n if (msg.type === \"control_request\") {\n const handled = await this.handleControlRequest(msg as ControlRequest);\n if (!handled) {\n const wireMsgAny = msg as unknown as Record<string, unknown>;\n sessionLog(\"init\", `DROPPED unsupported control_request: subtype=${(wireMsgAny.request as Record<string, unknown>)?.subtype || \"N/A\"}`);\n }\n continue;\n }\n\n if (msg.type === \"system\" && \"subtype\" in msg && msg.subtype === \"init\") {\n const initMsg = msg as WireMessage & {\n agent_id: string;\n session_id: string;\n conversation_id: string;\n model: string;\n tools: string[];\n memfs_enabled?: boolean;\n skill_sources?: Array<\"bundled\" | \"global\" | \"agent\" | \"project\">;\n system_info_reminder_enabled?: boolean;\n reflection_trigger?: \"off\" | \"step-count\" | \"compaction-event\";\n reflection_behavior?: \"reminder\" | \"auto-launch\";\n reflection_step_count?: number;\n };\n this._agentId = initMsg.agent_id;\n this._sessionId = initMsg.session_id;\n this._conversationId = initMsg.conversation_id;\n this.initialized = true;\n this.startBackgroundPump();\n\n // Register external tools with CLI\n if (this.externalTools.size > 0) {\n await this.registerExternalTools();\n }\n\n // Include external tool names in the tools list\n const allTools = [\n ...initMsg.tools,\n ...Array.from(this.externalTools.keys()),\n ];\n\n sessionLog(\"init\", `initialized: agent=${initMsg.agent_id} conversation=${initMsg.conversation_id} model=${initMsg.model} tools=${allTools.length} (${this.externalTools.size} external)`);\n\n return {\n type: \"init\",\n agentId: initMsg.agent_id,\n sessionId: initMsg.session_id,\n conversationId: initMsg.conversation_id,\n model: initMsg.model,\n tools: allTools,\n memfsEnabled: initMsg.memfs_enabled,\n skillSources: initMsg.skill_sources,\n systemInfoReminderEnabled: initMsg.system_info_reminder_enabled,\n dreaming:\n initMsg.reflection_trigger &&\n initMsg.reflection_behavior &&\n typeof initMsg.reflection_step_count === \"number\"\n ? {\n trigger: initMsg.reflection_trigger,\n behavior: initMsg.reflection_behavior,\n stepCount: initMsg.reflection_step_count,\n }\n : undefined,\n };\n }\n }\n\n const stderr = this.transport.getStderr();\n const detail = stderr ? `\\nCLI stderr:\\n${stderr}` : '';\n sessionLog(\"init\", `ERROR: transport closed before init message received${detail}`);\n throw new Error(`Failed to initialize session - no init message received${detail}`);\n }\n\n /**\n * Send a message to the agent\n * \n * @param message - Text string or multimodal content array\n * \n * @example\n * // Simple text\n * await session.send(\"Hello!\");\n * \n * @example\n * // With image\n * await session.send([\n * { type: \"text\", text: \"What's in this image?\" },\n * { type: \"image\", source: { type: \"base64\", mediaType: \"image/png\", data: \"...\" } }\n * ]);\n */\n async send(message: SendMessage): Promise<void> {\n if (!this.initialized) {\n sessionLog(\"send\", \"auto-initializing (not yet initialized)\");\n await this.initialize();\n }\n\n const preview = typeof message === \"string\"\n ? message.slice(0, 100)\n : Array.isArray(message) ? `[multimodal: ${message.length} parts]` : String(message).slice(0, 100);\n sessionLog(\"send\", `sending message: ${preview}${typeof message === \"string\" && message.length > 100 ? \"...\" : \"\"}`);\n\n // Clear stale messages from previous turn to prevent desync\n if (this.streamQueue.length > 0) {\n sessionLog(\"send\", `clearing ${this.streamQueue.length} stale messages from previous turn`);\n this.streamQueue.length = 0;\n }\n\n await this.transport.write({\n type: \"user\",\n message: { role: \"user\", content: message },\n });\n\n // Advance generation AFTER the write so any messages the pump enqueues\n // during the await (from the previous run's lingering events) are tagged\n // with the old generation and will be filtered by stream().\n this.sendGeneration++;\n sessionLog(\"send\", `message written to transport (generation=${this.sendGeneration})`);\n }\n\n /**\n * Run a full turn (send + stream terminal result), with optional bounded\n * SDK-owned approval-conflict recovery.\n */\n async runTurn(\n message: SendMessage,\n options: RunTurnOptions = {},\n ): Promise<SDKResultMessage> {\n const maxApprovalRecoveryAttempts =\n this.resolveMaxApprovalRecoveryAttempts(options);\n const recoveryTimeoutMs = this.resolveApprovalRecoveryTimeoutMs(options);\n\n let recoveryAttempts = 0;\n let result = await this.runSingleTurn(message);\n\n while (\n !result.success &&\n result.approvalConflict === true &&\n recoveryAttempts < maxApprovalRecoveryAttempts\n ) {\n recoveryAttempts += 1;\n const recovery = await this.recoverPendingApprovals({\n timeoutMs: recoveryTimeoutMs,\n });\n\n if (!recovery.recovered) {\n return this.toTerminalApprovalConflictResult(result, {\n recoveryAttempts,\n detail: recovery.detail,\n });\n }\n\n result = await this.runSingleTurn(message);\n }\n\n if (!result.success && result.approvalConflict === true) {\n return this.toTerminalApprovalConflictResult(result, { recoveryAttempts });\n }\n\n if (recoveryAttempts > 0) {\n result.recoveryAttempts = recoveryAttempts;\n }\n\n return result;\n }\n\n /**\n * Ask the CLI to recover pending approvals for the current\n * agent/conversation context.\n */\n async recoverPendingApprovals(\n options: RecoverPendingApprovalsOptions = {},\n ): Promise<RecoverPendingApprovalsResult> {\n if (!this.initialized) {\n await this.initialize();\n }\n\n const timeoutMs =\n options.timeoutMs ??\n this.options.approvalRecoveryTimeoutMs ??\n DEFAULT_APPROVAL_RECOVERY_TIMEOUT_MS;\n\n if (!Number.isInteger(timeoutMs) || timeoutMs <= 0) {\n throw new Error(\n \"Invalid approval recovery timeout. Expected a positive integer.\",\n );\n }\n\n const requestId = `recover-approvals-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;\n\n let resp: { subtype: string; response?: unknown; error?: string };\n try {\n resp = await this.requestControlResponse(\n requestId,\n {\n subtype: \"recover_pending_approvals\",\n ...(this._agentId ? { agent_id: this._agentId } : {}),\n ...(this._conversationId ? { conversation_id: this._conversationId } : {}),\n },\n { timeoutMs },\n );\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n return {\n recovered: false,\n unsupported: false,\n detail,\n };\n }\n\n if (resp.subtype === \"error\") {\n const detail = resp.error ?? \"recover_pending_approvals failed\";\n return {\n recovered: false,\n pendingApproval: true,\n unsupported: isUnknownControlSubtypeError(\n detail,\n \"recover_pending_approvals\",\n ),\n detail,\n };\n }\n\n return {\n recovered: true,\n pendingApproval: false,\n unsupported: false,\n };\n }\n\n private resolveMaxApprovalRecoveryAttempts(options: RunTurnOptions): number {\n const value =\n options.maxApprovalRecoveryAttempts ??\n this.options.maxApprovalRecoveryAttempts ??\n DEFAULT_MAX_APPROVAL_RECOVERY_ATTEMPTS;\n\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\n \"Invalid maxApprovalRecoveryAttempts. Expected a non-negative integer.\",\n );\n }\n\n return value;\n }\n\n private resolveApprovalRecoveryTimeoutMs(options: RunTurnOptions): number {\n const value =\n options.recoveryTimeoutMs ??\n this.options.approvalRecoveryTimeoutMs ??\n DEFAULT_APPROVAL_RECOVERY_TIMEOUT_MS;\n\n if (!Number.isInteger(value) || value <= 0) {\n throw new Error(\n \"Invalid approval recovery timeout. Expected a positive integer.\",\n );\n }\n\n return value;\n }\n\n private toTerminalApprovalConflictResult(\n result: SDKResultMessage,\n options: { recoveryAttempts: number; detail?: string },\n ): SDKResultMessage {\n return {\n ...result,\n success: false,\n error: \"approval_conflict_terminal\",\n errorCode: \"approval_conflict_terminal\",\n approvalConflict: true,\n recoverable: false,\n recoveryAttempts: options.recoveryAttempts,\n errorDetail:\n options.detail ||\n result.errorDetail ||\n \"Approval conflict remained unresolved after bounded SDK recovery.\",\n };\n }\n\n private async runSingleTurn(message: SendMessage): Promise<SDKResultMessage> {\n await this.send(message);\n\n let latestApprovalConflictDetail: string | undefined;\n let latestNonConflictErrorDetail: string | undefined;\n\n for await (const msg of this.stream()) {\n if (msg.type === \"error\") {\n const detail = msg.errorDetail || msg.message;\n if (msg.approvalConflict) {\n latestApprovalConflictDetail = detail;\n } else {\n latestNonConflictErrorDetail = detail;\n }\n continue;\n }\n\n if (msg.type === \"result\") {\n if (!msg.success && !msg.errorDetail) {\n if (msg.approvalConflict && latestApprovalConflictDetail) {\n return {\n ...msg,\n errorDetail: latestApprovalConflictDetail,\n };\n }\n\n if (!msg.approvalConflict && latestNonConflictErrorDetail) {\n return {\n ...msg,\n errorDetail: latestNonConflictErrorDetail,\n };\n }\n }\n\n return msg;\n }\n }\n\n return {\n type: \"result\",\n success: false,\n error: \"stream_closed\",\n errorCode: \"stream_closed\",\n recoverable: false,\n errorDetail: \"Stream ended before terminal result\",\n durationMs: 0,\n conversationId: this._conversationId,\n };\n }\n\n /**\n * Stream messages from the agent\n */\n async *stream(): AsyncGenerator<SDKMessage> {\n const streamStart = Date.now();\n const minGeneration = this.sendGeneration;\n let yieldCount = 0;\n let staleCount = 0;\n let staleRunIdCount = 0;\n let gotResult = false;\n const currentStreamRunIds = new Set<string>();\n const staleRunIds = new Set(this.lastCompletedRunIds);\n const approvalConflictDetailsByRunId = new Map<string, string>();\n let latestApprovalConflictDetail: string | undefined;\n\n this.startBackgroundPump();\n sessionLog(\"stream\", `starting stream (agent=${this._agentId}, conversation=${this._conversationId}, generation=${minGeneration})`);\n\n while (true) {\n const bufferedMsg = await this.nextBufferedMessage();\n if (!bufferedMsg) {\n break;\n }\n\n // Filter stale messages from previous runs. Messages enqueued before\n // the current send() carry an older generation tag.\n if (bufferedMsg.generation < minGeneration) {\n staleCount++;\n sessionLog(\"stream\", `discarding stale message: type=${bufferedMsg.message.type} generation=${bufferedMsg.generation} (current=${minGeneration})`);\n continue;\n }\n\n // Filter late old-run messages that arrive after send() has already\n // advanced generation and stream queue was cleared.\n if (bufferedMsg.runId && staleRunIds.has(bufferedMsg.runId)) {\n staleRunIdCount++;\n sessionLog(\"stream\", `discarding stale message: type=${bufferedMsg.message.type} runId=${bufferedMsg.runId}`);\n continue;\n }\n\n if (bufferedMsg.runId) {\n currentStreamRunIds.add(bufferedMsg.runId);\n }\n\n const sdkMsg = bufferedMsg.message;\n\n if (sdkMsg.type === \"error\" && sdkMsg.approvalConflict) {\n const detail = sdkMsg.errorDetail || sdkMsg.message;\n if (detail) {\n latestApprovalConflictDetail = detail;\n if (sdkMsg.runId) {\n approvalConflictDetailsByRunId.set(sdkMsg.runId, detail);\n }\n }\n }\n\n let normalizedMsg: SDKMessage = sdkMsg;\n\n if (sdkMsg.type === \"result\" && !sdkMsg.success) {\n let detail = sdkMsg.errorDetail;\n if (!detail && Array.isArray(sdkMsg.runIds)) {\n for (const runId of sdkMsg.runIds) {\n const fromRun = approvalConflictDetailsByRunId.get(runId);\n if (fromRun) {\n detail = fromRun;\n break;\n }\n }\n }\n if (!detail) {\n detail = latestApprovalConflictDetail;\n }\n\n const approvalConflict =\n sdkMsg.approvalConflict === true\n || isApprovalConflictSignal({\n detail,\n message: sdkMsg.errorCode || sdkMsg.error,\n stopReason: sdkMsg.stopReason,\n });\n\n if (approvalConflict) {\n const normalizedErrorCode =\n !sdkMsg.errorCode || sdkMsg.errorCode === \"error\"\n ? \"approval_conflict\"\n : sdkMsg.errorCode;\n const normalizedError =\n !sdkMsg.error || sdkMsg.error === \"error\"\n ? normalizedErrorCode\n : sdkMsg.error;\n\n normalizedMsg = {\n ...sdkMsg,\n approvalConflict: true,\n recoverable: sdkMsg.recoverable ?? true,\n ...(detail ? { errorDetail: detail } : {}),\n errorCode: normalizedErrorCode,\n error: normalizedError,\n };\n } else if (!sdkMsg.errorCode && sdkMsg.error) {\n const errorCode = toSdkErrorCode(sdkMsg.error);\n if (errorCode) {\n normalizedMsg = {\n ...sdkMsg,\n errorCode,\n };\n }\n }\n }\n\n yieldCount++;\n sessionLog(\"stream\", `yield #${yieldCount}: type=${normalizedMsg.type}${normalizedMsg.type === \"result\" ? ` success=${(normalizedMsg as SDKResultMessage).success} error=${(normalizedMsg as SDKResultMessage).error || \"none\"}` : \"\"}`);\n yield normalizedMsg;\n\n // Stop on result message\n if (normalizedMsg.type === \"result\") {\n gotResult = true;\n this.updateCompletedRunIds((normalizedMsg as SDKResultMessage).runIds, currentStreamRunIds);\n break;\n }\n }\n\n const elapsed = Date.now() - streamStart;\n sessionLog(\"stream\", `stream ended: duration=${elapsed}ms yielded=${yieldCount} staleFiltered=${staleCount} staleRunIdFiltered=${staleRunIdCount} dropped=${this.droppedStreamMessages} gotResult=${gotResult}`);\n if (!gotResult) {\n sessionLog(\"stream\", \"WARNING: stream ended WITHOUT a result message -- transport may have closed unexpectedly\");\n }\n }\n\n private startBackgroundPump(): void {\n if (this.pumpPromise) {\n return;\n }\n\n this.pumpClosed = false;\n this.pumpPromise = this.runBackgroundPump()\n .catch((err) => {\n sessionLog(\"pump\", `ERROR: ${err instanceof Error ? err.message : String(err)}`);\n })\n .finally(() => {\n this.pumpClosed = true;\n this.resolveAllStreamWaiters(null);\n });\n }\n\n private async runBackgroundPump(): Promise<void> {\n sessionLog(\"pump\", \"background pump started\");\n\n // Tool call chunks are emitted immediately (no buffering).\n // Consumers that need complete arguments should accumulate rawArguments\n // across chunks sharing the same toolCallId on their side.\n //\n // Index-to-ID mapping: The Letta API follows the OpenAI streaming format\n // for parallel tool calls -- only the first chunk per tool call includes\n // tool_call_id, subsequent chunks identify themselves via index only.\n // We maintain a lightweight index->id map so transformMessage() can\n // resolve the ID for every chunk without buffering.\n const indexToToolCallId = new Map<number, string>();\n\n for await (const wireMsg of this.transport.messages()) {\n const wireMsgAny = wireMsg as unknown as Record<string, unknown>;\n\n if (wireMsg.type === \"control_request\") {\n const handled = await this.handleControlRequest(wireMsg as ControlRequest);\n if (!handled) {\n sessionLog(\"pump\", `DROPPED unsupported control_request: subtype=${(wireMsgAny.request as Record<string, unknown>)?.subtype || \"N/A\"}`);\n }\n continue;\n }\n\n // Route control_response to a registered waiter (e.g., from listMessages).\n // Unmatched control_responses are logged and dropped — they never reach the stream.\n if (wireMsg.type === \"control_response\") {\n const respMsg = wireMsg as unknown as {\n response: { subtype: string; request_id?: string; response?: unknown; error?: string };\n };\n const requestId = respMsg.response?.request_id;\n if (requestId && this.controlResponseWaiters.has(requestId)) {\n const resolve = this.controlResponseWaiters.get(requestId)!;\n this.controlResponseWaiters.delete(requestId);\n resolve(respMsg.response);\n } else {\n sessionLog(\"pump\", `DROPPED unmatched control_response: request_id=${requestId ?? \"N/A\"}`);\n }\n continue;\n }\n\n // For tool_call_message chunks, resolve index-based IDs before transform.\n // The first chunk has both tool_call_id and index; subsequent chunks have\n // only index. Patch the wire message so transformMessage() always sees an ID.\n const messageType = wireMsgAny.message_type as string | undefined;\n if (wireMsg.type === \"message\" && (messageType === \"tool_call_message\" || messageType === \"approval_request_message\")) {\n const toolCalls = wireMsgAny.tool_calls as Array<Record<string, unknown>> | undefined;\n const toolCall = wireMsgAny.tool_call as Record<string, unknown> | undefined;\n const tc = toolCalls?.[0] || toolCall;\n if (tc) {\n const fnObj = tc.function as Record<string, unknown> | undefined;\n const tcId = (tc.tool_call_id as string | undefined) ?? (tc.id as string | undefined);\n const tcIndex = tc.index as number | undefined;\n\n if (tcId && tcIndex !== undefined) {\n indexToToolCallId.set(tcIndex, tcId);\n } else if (!tcId && tcIndex !== undefined) {\n const resolvedId = indexToToolCallId.get(tcIndex);\n if (resolvedId) {\n // Patch the resolved ID into the wire message for transformMessage\n if (fnObj) {\n tc.id = resolvedId;\n } else {\n tc.tool_call_id = resolvedId;\n }\n }\n }\n }\n }\n\n const sdkMsg = this.transformMessage(wireMsg);\n if (sdkMsg) {\n this.enqueueStreamMessage(sdkMsg);\n } else {\n sessionLog(\"pump\", `DROPPED wire message: type=${wireMsg.type} message_type=${wireMsgAny.message_type || \"N/A\"} subtype=${wireMsgAny.subtype || \"N/A\"}`);\n }\n }\n\n sessionLog(\"pump\", \"background pump ended\");\n }\n\n private async handleControlRequest(controlReq: ControlRequest): Promise<boolean> {\n // Widen to string to allow SDK-extension subtypes not in the protocol union\n const subtype: string = controlReq.request.subtype;\n sessionLog(\"pump\", `control_request: subtype=${subtype} tool=${(controlReq.request as CanUseToolControlRequest).tool_name || \"N/A\"}`);\n\n if (subtype === \"can_use_tool\") {\n await this.handleCanUseTool(\n controlReq.request_id,\n controlReq.request as CanUseToolControlRequest\n );\n return true;\n }\n\n if (subtype === \"execute_external_tool\") {\n // SDK extension: not in protocol ControlRequestBody union, extract fields via Record\n const rawReq = controlReq.request as Record<string, unknown>;\n await this.handleExecuteExternalTool(\n controlReq.request_id,\n {\n subtype: \"execute_external_tool\",\n tool_call_id: rawReq.tool_call_id as string,\n tool_name: rawReq.tool_name as string,\n input: rawReq.input as Record<string, unknown>,\n }\n );\n return true;\n }\n\n return false;\n }\n\n private enqueueStreamMessage(msg: SDKMessage): void {\n const bufferedMsg: BufferedStreamMessage = {\n message: msg,\n generation: this.sendGeneration,\n runId: this.getMessageRunId(msg),\n };\n\n if (this.streamResolvers.length > 0) {\n const resolve = this.streamResolvers.shift()!;\n resolve(bufferedMsg);\n return;\n }\n\n if (this.streamQueue.length >= MAX_BUFFERED_STREAM_MESSAGES) {\n this.streamQueue.shift();\n this.droppedStreamMessages++;\n sessionLog(\"pump\", `stream queue overflow: dropped oldest message (total_dropped=${this.droppedStreamMessages}, max=${MAX_BUFFERED_STREAM_MESSAGES})`);\n }\n\n this.streamQueue.push(bufferedMsg);\n }\n\n private async nextBufferedMessage(): Promise<BufferedStreamMessage | null> {\n if (this.streamQueue.length > 0) {\n return this.streamQueue.shift()!;\n }\n\n if (this.pumpClosed) {\n return null;\n }\n\n return new Promise((resolve) => {\n this.streamResolvers.push(resolve);\n });\n }\n\n private resolveAllStreamWaiters(msg: BufferedStreamMessage | null): void {\n for (const resolve of this.streamResolvers) {\n resolve(msg);\n }\n this.streamResolvers = [];\n // Also cancel any in-flight control request waiters (e.g., listMessages)\n for (const resolve of this.controlResponseWaiters.values()) {\n resolve({ subtype: \"error\", error: \"session closed\" });\n }\n this.controlResponseWaiters.clear();\n }\n\n private getMessageRunId(msg: SDKMessage): string | undefined {\n switch (msg.type) {\n case \"assistant\":\n case \"tool_call\":\n case \"tool_result\":\n case \"reasoning\":\n case \"error\":\n case \"retry\":\n return msg.runId;\n default:\n return undefined;\n }\n }\n\n private updateCompletedRunIds(\n resultRunIds: string[] | undefined,\n streamedRunIds: Set<string>,\n ): void {\n const nextRunIds = new Set<string>();\n\n if (Array.isArray(resultRunIds)) {\n for (const runId of resultRunIds) {\n if (runId) {\n nextRunIds.add(runId);\n }\n }\n }\n\n for (const runId of streamedRunIds) {\n if (runId) {\n nextRunIds.add(runId);\n }\n }\n\n this.lastCompletedRunIds = nextRunIds;\n }\n\n /**\n * Register external tools with the CLI\n */\n private async registerExternalTools(): Promise<void> {\n const toolDefs = Array.from(this.externalTools.values()).map((tool) => ({\n name: tool.name,\n label: tool.label,\n description: tool.description,\n // Convert TypeBox schema to plain JSON Schema\n parameters: this.schemaToJsonSchema(tool.parameters),\n }));\n\n sessionLog(\"registerTools\", `registering ${toolDefs.length} external tools: ${toolDefs.map(t => t.name).join(\", \")}`);\n\n await this.transport.write({\n type: \"control_request\",\n request_id: `register_tools_${Date.now()}`,\n request: {\n subtype: \"register_external_tools\",\n tools: toolDefs,\n },\n });\n }\n\n /**\n * Convert TypeBox schema to JSON Schema\n */\n private schemaToJsonSchema(schema: unknown): Record<string, unknown> {\n // TypeBox schemas are already JSON Schema compatible\n // Just need to extract the schema object\n if (schema && typeof schema === \"object\") {\n // TypeBox schemas have these JSON Schema properties\n const s = schema as Record<string, unknown>;\n return {\n type: s.type,\n properties: s.properties,\n required: s.required,\n additionalProperties: s.additionalProperties,\n description: s.description,\n };\n }\n return { type: \"object\" };\n }\n\n /**\n * Handle execute_external_tool control request from CLI\n */\n private async handleExecuteExternalTool(\n requestId: string,\n req: ExecuteExternalToolRequest\n ): Promise<void> {\n const tool = this.externalTools.get(req.tool_name);\n \n if (!tool) {\n // Tool not found - send error result\n sessionLog(\"executeExternalTool\", `ERROR: unknown tool ${req.tool_name}`);\n await this.transport.write({\n type: \"control_response\",\n response: {\n subtype: \"external_tool_result\",\n request_id: requestId,\n tool_call_id: req.tool_call_id,\n content: [{ type: \"text\", text: `Unknown external tool: ${req.tool_name}` }],\n is_error: true,\n },\n });\n return;\n }\n\n try {\n sessionLog(\"executeExternalTool\", `executing ${req.tool_name} (call_id=${req.tool_call_id})`);\n // Execute the tool\n const result = await tool.execute(req.tool_call_id, req.input);\n \n // Send success result\n await this.transport.write({\n type: \"control_response\",\n response: {\n subtype: \"external_tool_result\",\n request_id: requestId,\n tool_call_id: req.tool_call_id,\n content: result.content,\n is_error: false,\n },\n });\n sessionLog(\"executeExternalTool\", `${req.tool_name} completed successfully`);\n } catch (err) {\n // Send error result\n const errorMessage = err instanceof Error ? err.message : String(err);\n sessionLog(\"executeExternalTool\", `${req.tool_name} failed: ${errorMessage}`);\n await this.transport.write({\n type: \"control_response\",\n response: {\n subtype: \"external_tool_result\",\n request_id: requestId,\n tool_call_id: req.tool_call_id,\n content: [{ type: \"text\", text: `Tool execution error: ${errorMessage}` }],\n is_error: true,\n },\n });\n }\n }\n\n /**\n * Handle can_use_tool control request from CLI (Claude SDK compatible format)\n */\n private async handleCanUseTool(\n requestId: string,\n req: CanUseToolControlRequest\n ): Promise<void> {\n let response: CanUseToolResponse;\n const toolName = req.tool_name;\n const hasCallback = typeof this.options.canUseTool === \"function\";\n const toolNeedsRuntimeUserInput = requiresRuntimeUserInput(toolName);\n const autoAllowWithoutCallback =\n isHeadlessAutoAllowTool(toolName);\n\n sessionLog(\"canUseTool\", `tool=${toolName} mode=${this.options.permissionMode || \"standard\"} requestId=${requestId}`);\n\n // Tools that require runtime user input cannot be auto-allowed without a callback.\n if (toolNeedsRuntimeUserInput && !hasCallback) {\n response = {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n } else if (\n isUnrestrictedPermissionMode(this.options.permissionMode) &&\n !toolNeedsRuntimeUserInput\n ) {\n // unrestricted auto-allows non-interactive tools.\n sessionLog(\"canUseTool\", `AUTO-ALLOW ${toolName} (unrestricted)`);\n response = {\n behavior: \"allow\",\n updatedInput: null,\n updatedPermissions: [],\n } satisfies CanUseToolResponseAllow;\n } else if (hasCallback) {\n try {\n const result = await this.options.canUseTool!(toolName, req.input);\n if (result.behavior === \"allow\") {\n response = {\n behavior: \"allow\",\n updatedInput: result.updatedInput ?? null,\n updatedPermissions: [], // TODO: not implemented\n } satisfies CanUseToolResponseAllow;\n } else {\n response = {\n behavior: \"deny\",\n message: result.message ?? \"Denied by canUseTool callback\",\n interrupt: false, // TODO: not wired up yet\n } satisfies CanUseToolResponseDeny;\n }\n } catch (err) {\n response = {\n behavior: \"deny\",\n message: err instanceof Error ? err.message : \"Callback error\",\n interrupt: false,\n };\n }\n } else if (autoAllowWithoutCallback) {\n // Default headless behavior matches Claude: EnterPlanMode can proceed\n // without requiring a callback in bidirectional mode.\n sessionLog(\"canUseTool\", `AUTO-ALLOW ${toolName} (default behavior)`);\n response = {\n behavior: \"allow\",\n updatedInput: null,\n updatedPermissions: [],\n } satisfies CanUseToolResponseAllow;\n } else {\n // No callback registered - deny by default\n response = {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n }\n\n // Send control_response (Claude SDK compatible format)\n const responseBehavior = \"behavior\" in response ? response.behavior : \"unknown\";\n sessionLog(\"canUseTool\", `responding: requestId=${requestId} behavior=${responseBehavior}`);\n await this.transport.write({\n type: \"control_response\",\n response: {\n subtype: \"success\",\n request_id: requestId,\n response,\n },\n });\n sessionLog(\"canUseTool\", `response sent for ${toolName}`);\n }\n\n /**\n * Abort the current operation (interrupt without closing the session)\n */\n async abort(): Promise<void> {\n if (!this.initialized || this.pumpClosed) return;\n sessionLog(\"abort\", `aborting session (agent=${this._agentId})`);\n await this.transport.write({\n type: \"control_request\",\n request_id: `interrupt-${Date.now()}`,\n request: { subtype: \"interrupt\" },\n });\n }\n\n private async requestControlResponse(\n requestId: string,\n request: Record<string, unknown>,\n options: { timeoutMs?: number } = {},\n ): Promise<{ subtype: string; response?: unknown; error?: string }> {\n const responsePromise = new Promise<{\n subtype: string;\n response?: unknown;\n error?: string;\n }>((resolve) => {\n this.controlResponseWaiters.set(requestId, resolve);\n });\n\n try {\n await this.transport.write({\n type: \"control_request\",\n request_id: requestId,\n request: request as unknown as ControlRequest[\"request\"],\n });\n } catch (error) {\n this.controlResponseWaiters.delete(requestId);\n throw error;\n }\n\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n try {\n if (typeof options.timeoutMs === \"number\") {\n return await Promise.race([\n responsePromise,\n new Promise<never>((_, reject) => {\n timeoutHandle = setTimeout(() => {\n this.controlResponseWaiters.delete(requestId);\n reject(\n new Error(\n `Timed out waiting for control_response (${requestId})`,\n ),\n );\n }, options.timeoutMs);\n }),\n ]);\n }\n\n return await responsePromise;\n } finally {\n if (timeoutHandle) {\n clearTimeout(timeoutHandle);\n }\n }\n }\n\n /**\n * Fetch a page of conversation messages via the CLI control protocol.\n *\n * The session must be initialized before calling this method.\n * Safe to call concurrently with an active stream() — the pump routes\n * matching control_response messages to this waiter without touching the\n * stream queue.\n */\n async listMessages(options: ListMessagesOptions = {}): Promise<ListMessagesResult> {\n if (!this.initialized) {\n throw new Error(\"Session must be initialized before calling listMessages()\");\n }\n\n const requestId = `list-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;\n\n const resp = await this.requestControlResponse(requestId, {\n subtype: \"list_messages\",\n ...(options.conversationId ? { conversation_id: options.conversationId } : {}),\n ...(options.before ? { before: options.before } : {}),\n ...(options.after ? { after: options.after } : {}),\n ...(options.order ? { order: options.order } : {}),\n ...(options.limit !== undefined ? { limit: options.limit } : {}),\n });\n\n if (!resp) {\n throw new Error(\"Session closed before listMessages response arrived\");\n }\n if (resp.subtype === \"error\") {\n throw new Error(resp.error ?? \"listMessages failed\");\n }\n\n const payload = resp.response as {\n messages?: unknown[];\n next_before?: string | null;\n has_more?: boolean;\n } | undefined;\n\n return {\n messages: payload?.messages ?? [],\n nextBefore: payload?.next_before ?? null,\n hasMore: payload?.has_more ?? false,\n };\n }\n\n async listModels(): Promise<ListModelsResult> {\n throw new Error(\n \"listModels() is not supported by this session. Use a Cloud, Remote, or local agent session.\",\n );\n }\n\n async sendCommand(command: SDKProtocolCommand): Promise<void>;\n async sendCommand<TResponse extends SDKProtocolMessage = SDKProtocolMessage>(\n command: SDKProtocolCommand,\n options: SendCommandOptions,\n ): Promise<TResponse>;\n async sendCommand(\n _command?: SDKProtocolCommand,\n _options?: SendCommandOptions,\n ): Promise<void> {\n throw new Error(\n \"sendCommand() is not supported by this session. Use a Cloud, Remote, or local agent session.\",\n );\n }\n\n async updateModel(_update: string | UpdateModelOptions): Promise<UpdateModelResult> {\n throw new Error(\n \"updateModel() is not supported by this session. Use a Cloud, Remote, or local agent session.\",\n );\n }\n\n /**\n * Fetch all data needed to render the initial conversation view in one round-trip.\n *\n * Returns resolved session metadata + initial history page + pending approval flag\n * + optional timing breakdown. This is faster than separate initialize() + listMessages()\n * calls because the CLI collects and returns everything in a single control response.\n *\n * The session must be initialized before calling this method.\n */\n async bootstrapState(\n options: BootstrapStateOptions = {},\n ): Promise<BootstrapStateResult> {\n if (!this.initialized) {\n throw new Error(\n \"Session must be initialized before calling bootstrapState()\",\n );\n }\n\n const requestId = `bootstrap-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;\n\n const resp = await this.requestControlResponse(requestId, {\n subtype: \"bootstrap_session_state\",\n ...(options.limit !== undefined ? { limit: options.limit } : {}),\n ...(options.order ? { order: options.order } : {}),\n });\n\n if (!resp) {\n throw new Error(\"Session closed before bootstrapState response arrived\");\n }\n if (resp.subtype === \"error\") {\n throw new Error(\n (resp as { error?: string }).error ?? \"bootstrapState failed\",\n );\n }\n\n const payload = resp.response as {\n agent_id?: string;\n conversation_id?: string;\n model?: string;\n tools?: string[];\n memfs_enabled?: boolean;\n messages?: unknown[];\n next_before?: string | null;\n has_more?: boolean;\n has_pending_approval?: boolean;\n timings?: {\n resolve_ms: number;\n list_messages_ms: number;\n total_ms: number;\n };\n } | undefined;\n\n const state: BootstrapStateResult = {\n agentId: payload?.agent_id ?? this._agentId ?? \"\",\n conversationId: payload?.conversation_id ?? this._conversationId ?? \"\",\n model: payload?.model,\n memfsEnabled: payload?.memfs_enabled ?? false,\n messages: payload?.messages ?? [],\n nextBefore: payload?.next_before ?? null,\n hasMore: payload?.has_more ?? false,\n hasPendingApproval: payload?.has_pending_approval ?? false,\n };\n if (payload?.tools !== undefined) state.tools = payload.tools;\n if (payload?.timings !== undefined) state.timings = payload.timings;\n return state;\n }\n\n async updateToolset(_toolsetPreference: string): Promise<void> {\n throw new Error(\"updateToolset() is not supported by this session. Use a Cloud, Remote, or local agent session.\");\n }\n\n /**\n * Close the session\n */\n close(): void {\n sessionLog(\"close\", `closing session (agent=${this._agentId}, conversation=${this._conversationId})`);\n this.transport.close();\n this.pumpClosed = true;\n this.resolveAllStreamWaiters(null);\n }\n\n /**\n * Get the agent ID (available after initialization)\n */\n get agentId(): string | null {\n return this._agentId;\n }\n\n /**\n * Get the session ID (available after initialization)\n */\n get sessionId(): string | null {\n return this._sessionId;\n }\n\n /**\n * Get the conversation ID (available after initialization)\n */\n get conversationId(): string | null {\n return this._conversationId;\n }\n\n /**\n * AsyncDisposable implementation for `await using`\n */\n async [Symbol.asyncDispose](): Promise<void> {\n this.close();\n }\n\n /**\n * Transform wire message to SDK message\n */\n private transformMessage(wireMsg: WireMessage | MessageWire): SDKMessage | null {\n // Init message\n if (wireMsg.type === \"system\" && \"subtype\" in wireMsg && wireMsg.subtype === \"init\") {\n const msg = wireMsg as WireMessage & {\n agent_id: string;\n session_id: string;\n conversation_id: string;\n model: string;\n tools: string[];\n memfs_enabled?: boolean;\n skill_sources?: Array<\"bundled\" | \"global\" | \"agent\" | \"project\">;\n system_info_reminder_enabled?: boolean;\n reflection_trigger?: \"off\" | \"step-count\" | \"compaction-event\";\n reflection_behavior?: \"reminder\" | \"auto-launch\";\n reflection_step_count?: number;\n };\n return {\n type: \"init\",\n agentId: msg.agent_id,\n sessionId: msg.session_id,\n conversationId: msg.conversation_id,\n model: msg.model,\n tools: msg.tools,\n memfsEnabled: msg.memfs_enabled,\n skillSources: msg.skill_sources,\n systemInfoReminderEnabled: msg.system_info_reminder_enabled,\n dreaming:\n msg.reflection_trigger &&\n msg.reflection_behavior &&\n typeof msg.reflection_step_count === \"number\"\n ? {\n trigger: msg.reflection_trigger,\n behavior: msg.reflection_behavior,\n stepCount: msg.reflection_step_count,\n }\n : undefined,\n };\n }\n\n // Handle message types (all have type: \"message\" with message_type field)\n if (wireMsg.type === \"message\" && \"message_type\" in wireMsg) {\n const msg = wireMsg as WireMessage & {\n message_type: string;\n uuid: string;\n run_id?: string;\n // assistant_message fields\n content?: string;\n // tool_call_message fields\n tool_call?: { name: string; arguments: string; tool_call_id: string };\n tool_calls?: Array<{ name: string; arguments: string; tool_call_id: string }>;\n // tool_return_message fields\n tool_call_id?: string;\n tool_return?: string;\n status?: \"success\" | \"error\";\n // reasoning_message fields\n reasoning?: string;\n };\n\n const runId = msg.run_id || undefined;\n\n // Assistant message\n if (msg.message_type === \"assistant_message\" && msg.content) {\n return {\n type: \"assistant\",\n content: msg.content,\n uuid: msg.uuid,\n runId,\n };\n }\n\n // Tool call message (tool_call_message = auto-executed, approval_request_message = needs approval)\n if (msg.message_type === \"tool_call_message\" || msg.message_type === \"approval_request_message\") {\n const toolCallRaw = (msg.tool_calls?.[0] || msg.tool_call) as Record<string, unknown> | undefined;\n if (toolCallRaw) {\n const fnObj = toolCallRaw.function as Record<string, unknown> | undefined;\n const toolCallId =\n (toolCallRaw.tool_call_id as string | undefined) ??\n (toolCallRaw.id as string | undefined);\n if (!toolCallId) {\n const detail = `Missing tool_call_id in ${msg.message_type} (uuid=${msg.uuid || \"unknown\"})`;\n sessionLog(\"transform\", detail);\n return {\n type: \"error\",\n message: detail,\n errorCode: \"protocol_error\",\n stopReason: \"protocol_error\",\n runId,\n apiError: {\n error_type: \"protocol_error\",\n detail,\n message_type: msg.message_type,\n },\n recoverable: false,\n errorDetail: detail,\n };\n }\n\n const toolName =\n (toolCallRaw.name as string | undefined) ??\n (fnObj?.name as string | undefined) ??\n \"?\";\n const toolArgs =\n (toolCallRaw.arguments as string | undefined) ??\n (fnObj?.arguments as string | undefined) ??\n \"\";\n\n let toolInput: Record<string, unknown> = {};\n try {\n toolInput = JSON.parse(toolArgs);\n } catch {\n toolInput = { raw: toolArgs };\n }\n return {\n type: \"tool_call\",\n toolCallId,\n toolName,\n toolInput,\n rawArguments: toolArgs || undefined,\n uuid: msg.uuid,\n runId,\n };\n }\n }\n\n // Tool return message\n if (msg.message_type === \"tool_return_message\" && msg.tool_call_id) {\n return {\n type: \"tool_result\",\n toolCallId: msg.tool_call_id,\n content: msg.tool_return || \"\",\n isError: msg.status === \"error\",\n uuid: msg.uuid,\n runId,\n };\n }\n\n // Reasoning message\n if (msg.message_type === \"reasoning_message\" && msg.reasoning) {\n return {\n type: \"reasoning\",\n content: msg.reasoning,\n uuid: msg.uuid,\n runId,\n };\n }\n }\n\n // Stream event (partial message updates)\n if (wireMsg.type === \"stream_event\") {\n const msg = wireMsg as WireMessage & {\n event: unknown;\n uuid: string;\n };\n const eventPayload = (msg.event ?? {}) as SDKStreamEventPayload;\n return {\n type: \"stream_event\",\n event: eventPayload,\n uuid: msg.uuid,\n };\n }\n\n // Result message\n if (wireMsg.type === \"result\") {\n const msg = wireMsg as WireMessage & {\n subtype: string;\n result?: string;\n duration_ms: number;\n total_cost_usd?: number;\n conversation_id: string;\n stop_reason?: string;\n run_ids?: unknown[];\n };\n const runIds = Array.isArray(msg.run_ids)\n ? msg.run_ids.filter((id): id is string => typeof id === \"string\")\n : undefined;\n const approvalConflict = isApprovalConflictSignal({\n stopReason: msg.stop_reason,\n });\n const legacyError = msg.subtype !== \"success\"\n ? (approvalConflict && msg.subtype === \"error\" ? \"approval_conflict\" : msg.subtype)\n : undefined;\n const errorCode = toSdkErrorCode(legacyError);\n return {\n type: \"result\",\n success: msg.subtype === \"success\",\n result: msg.result,\n error: legacyError,\n errorCode,\n ...(approvalConflict\n ? {\n approvalConflict: true as const,\n recoverable: true as const,\n }\n : {}),\n stopReason: msg.stop_reason,\n durationMs: msg.duration_ms,\n totalCostUsd: msg.total_cost_usd,\n conversationId: msg.conversation_id,\n runIds,\n };\n }\n\n // Error message — carries the actual error detail from the CLI.\n // The subsequent type=result only has the opaque string \"error\";\n // this message has the human-readable description and API error.\n if (wireMsg.type === \"error\") {\n const msg = wireMsg as WireMessage & {\n message: string;\n stop_reason: string;\n run_id?: string;\n api_error?: Record<string, unknown>;\n };\n const errorDetail = extractApiErrorDetail(msg.api_error);\n const approvalConflict = isApprovalConflictSignal({\n detail: errorDetail,\n message: msg.message,\n stopReason: msg.stop_reason,\n });\n const errorCode = approvalConflict\n ? \"approval_conflict\"\n : toSdkErrorCode(msg.stop_reason);\n return {\n type: \"error\" as const,\n message: msg.message,\n ...(errorCode ? { errorCode } : {}),\n ...(approvalConflict\n ? {\n approvalConflict: true as const,\n recoverable: true as const,\n }\n : {}),\n ...(errorDetail ? { errorDetail } : {}),\n stopReason: msg.stop_reason,\n runId: msg.run_id,\n apiError: msg.api_error,\n };\n }\n\n // Retry message — the CLI is retrying after a transient failure.\n if (wireMsg.type === \"retry\") {\n const msg = wireMsg as WireMessage & {\n reason: string;\n attempt: number;\n max_attempts: number;\n delay_ms: number;\n run_id?: string;\n };\n return {\n type: \"retry\" as const,\n reason: msg.reason,\n attempt: msg.attempt,\n maxAttempts: msg.max_attempts,\n delayMs: msg.delay_ms,\n runId: msg.run_id,\n };\n }\n\n // Skip other message types (system_message, user_message, etc.)\n return null;\n }\n}\n",
9
9
  "import type {\n CreateRepositoryFileParams,\n CreateRepositoryParams,\n DeleteRepositoryFileParams,\n DeleteRepositoryFileResult,\n GetRepositoryVersionParams,\n LettaCodeCloudClientOptions,\n ListRepositoriesParams,\n ListRepositoriesResult,\n ListRepositoryFilesParams,\n ListRepositoryFilesResult,\n ListRepositoryVersionsParams,\n Repository,\n RepositoryFile,\n RepositoryFileMutationResult,\n RepositoryVersion,\n UpdateRepositoryFileParams,\n} from \"./types.js\";\n\nconst DEFAULT_CLOUD_API_BASE_URL = \"https://api.letta.com\";\n\ntype FetchLike = typeof fetch;\n\nfunction getDefaultApiKey(): string | undefined {\n const env = (globalThis as { process?: { env?: Record<string, string | undefined> } })\n .process?.env;\n return env?.LETTA_API_KEY ?? env?.LETTA_CLOUD_API_KEY;\n}\n\nfunction bearerTokenFromHeaders(headers: Record<string, string> | undefined): string | undefined {\n const authorization = headers?.Authorization ?? headers?.authorization;\n if (!authorization) return undefined;\n const match = /^Bearer\\s+(.+)$/i.exec(authorization);\n return match?.[1];\n}\n\nfunction getCloudApiKey(options: LettaCodeCloudClientOptions): string | undefined {\n return options.apiKey ?? bearerTokenFromHeaders(options.headers) ?? getDefaultApiKey();\n}\n\nfunction getFetch(fetchOverride?: FetchLike): FetchLike {\n const resolved = fetchOverride ?? globalThis.fetch;\n if (!resolved) throw new Error(\"No fetch implementation available for cloud backend.\");\n return resolved.bind(globalThis) as FetchLike;\n}\n\nfunction normalizeCloudApiBaseUrl(url: string | undefined): string {\n const parsed = new URL(url ?? DEFAULT_CLOUD_API_BASE_URL);\n parsed.pathname = parsed.pathname.replace(/\\/+$/, \"\");\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString().replace(/\\/$/, \"\");\n}\n\nfunction cloudHeaders(options: LettaCodeCloudClientOptions): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n ...(options.headers ?? {}),\n };\n const apiKey = getCloudApiKey(options);\n if (apiKey && !headers.Authorization && !headers.authorization) {\n headers.Authorization = `Bearer ${apiKey}`;\n }\n return headers;\n}\n\nasync function parseJsonResponse(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return text;\n }\n}\n\nfunction responseErrorMessage(body: unknown, fallback: string): string {\n if (body && typeof body === \"object\") {\n const record = body as Record<string, unknown>;\n const message = record.message ?? record.error ?? record.detail;\n const reasonText = record.reason_text;\n const pieces = [message, reasonText]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0);\n if (pieces.length > 0) return pieces.join(\": \");\n }\n return fallback;\n}\n\nfunction assertOkResponse(response: Response, body: unknown, action: string): void {\n if (!response.ok) {\n throw new Error(responseErrorMessage(body, `${action} failed with HTTP ${response.status}`));\n }\n}\n\nfunction optionalString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction requireString(value: unknown, name: string): string {\n if (typeof value !== \"string\") throw new Error(`Cloud repositories response missing ${name}.`);\n return value;\n}\n\nfunction toRepository(body: unknown): Repository {\n if (!body || typeof body !== \"object\") {\n throw new Error(\"Cloud repositories response did not include a repository.\");\n }\n const record = body as Record<string, unknown>;\n return {\n id: requireString(record.id, \"id\"),\n name: requireString(record.name, \"name\"),\n createdAt: requireString(record.created_at, \"created_at\"),\n updatedAt: requireString(record.updated_at, \"updated_at\"),\n };\n}\n\nfunction toFileMutation(body: unknown): RepositoryFileMutationResult {\n if (!body || typeof body !== \"object\") {\n throw new Error(\"Cloud repositories file response did not include file details.\");\n }\n const record = body as Record<string, unknown>;\n return {\n path: requireString(record.path, \"path\"),\n contentSha256: requireString(record.content_sha256, \"content_sha256\"),\n commitSha: requireString(record.commit_sha, \"commit_sha\"),\n };\n}\n\nfunction addOptionalSearchParam(url: URL, key: string, value: string | number | undefined): void {\n if (value !== undefined) url.searchParams.set(key, String(value));\n}\n\nexport class RepositoriesClient {\n constructor(private readonly options: LettaCodeCloudClientOptions) {}\n\n async create(params: CreateRepositoryParams): Promise<Repository> {\n return toRepository(await this.request(\"/v1/repositories\", \"POST\", { name: params.name }, \"Cloud create repository\"));\n }\n\n async list(params: ListRepositoriesParams = {}): Promise<ListRepositoriesResult> {\n const url = this.url(\"/v1/repositories\");\n addOptionalSearchParam(url, \"limit\", params.limit);\n addOptionalSearchParam(url, \"offset\", params.offset);\n const body = await this.requestUrl(url, \"GET\", undefined, \"Cloud list repositories\");\n if (!body || typeof body !== \"object\") {\n throw new Error(\"Cloud list repositories response did not include repositories.\");\n }\n const record = body as Record<string, unknown>;\n const repositories = Array.isArray(record.repositories)\n ? record.repositories.map(toRepository)\n : [];\n return {\n repositories,\n hasNextPage: record.has_next_page === true,\n };\n }\n\n async get(repositoryId: string): Promise<Repository> {\n return toRepository(await this.request(`/v1/repositories/${encodeURIComponent(repositoryId)}`, \"GET\", undefined, \"Cloud get repository\"));\n }\n\n /**\n * Delete a repository. The server soft-deletes it (marks the repository\n * deleted rather than removing its data). Resolves on success; throws if the\n * repository does not exist or is not visible to the caller's organization.\n */\n async delete(repositoryId: string): Promise<void> {\n await this.request(\n `/v1/repositories/${encodeURIComponent(repositoryId)}`,\n \"DELETE\",\n undefined,\n \"Cloud delete repository\",\n );\n }\n\n readonly files = {\n list: async (\n repositoryId: string,\n params: ListRepositoryFilesParams = {},\n ): Promise<ListRepositoryFilesResult> => {\n const url = this.url(`/v1/repositories/${encodeURIComponent(repositoryId)}/files`);\n addOptionalSearchParam(url, \"path_prefix\", params.pathPrefix);\n addOptionalSearchParam(url, \"depth\", params.depth);\n addOptionalSearchParam(url, \"ref\", params.ref);\n const body = await this.requestUrl(url, \"GET\", undefined, \"Cloud list repository files\");\n if (!body || typeof body !== \"object\") {\n throw new Error(\"Cloud list repository files response did not include files.\");\n }\n const record = body as Record<string, unknown>;\n const files = Array.isArray(record.files)\n ? record.files.map((entry) => {\n if (!entry || typeof entry !== \"object\") {\n throw new Error(\"Cloud list repository files response included an invalid file entry.\");\n }\n const file = entry as Record<string, unknown>;\n const type = file.type;\n if (type !== \"file\" && type !== \"directory\") {\n throw new Error(\"Cloud list repository files response included an invalid file type.\");\n }\n return { path: requireString(file.path, \"path\"), type: type as \"file\" | \"directory\" };\n })\n : [];\n return { files, ref: requireString(record.ref, \"ref\") };\n },\n\n create: async (\n repositoryId: string,\n params: CreateRepositoryFileParams,\n ): Promise<RepositoryFileMutationResult> => toFileMutation(await this.request(\n `/v1/repositories/${encodeURIComponent(repositoryId)}/files`,\n \"POST\",\n { path: params.path, content: params.content },\n \"Cloud create repository file\",\n )),\n\n read: async (repositoryId: string, params: { path: string; ref?: string }): Promise<RepositoryFile> => {\n const url = this.url(`/v1/repositories/${encodeURIComponent(repositoryId)}/files/content`);\n url.searchParams.set(\"path\", params.path);\n addOptionalSearchParam(url, \"ref\", params.ref);\n const body = await this.requestUrl(url, \"GET\", undefined, \"Cloud read repository file\");\n if (!body || typeof body !== \"object\") {\n throw new Error(\"Cloud read repository file response did not include file content.\");\n }\n const record = body as Record<string, unknown>;\n return {\n path: requireString(record.path, \"path\"),\n content: requireString(record.content, \"content\"),\n contentSha256: requireString(record.content_sha256, \"content_sha256\"),\n ref: optionalString(record.ref),\n };\n },\n\n update: async (\n repositoryId: string,\n params: UpdateRepositoryFileParams,\n ): Promise<RepositoryFileMutationResult> => toFileMutation(await this.request(\n `/v1/repositories/${encodeURIComponent(repositoryId)}/files/content`,\n \"POST\",\n {\n path: params.path,\n ...(params.content !== undefined ? { content: params.content } : {}),\n ...(params.newPath !== undefined ? { new_path: params.newPath } : {}),\n ...(params.precondition !== undefined\n ? {\n precondition: {\n type: \"content_sha256\",\n content_sha256: params.precondition.contentSha256,\n },\n }\n : {}),\n },\n \"Cloud update repository file\",\n )),\n\n delete: async (\n repositoryId: string,\n params: DeleteRepositoryFileParams,\n ): Promise<DeleteRepositoryFileResult> => {\n const body = await this.request(\n `/v1/repositories/${encodeURIComponent(repositoryId)}/files/content`,\n \"DELETE\",\n { path: params.path },\n \"Cloud delete repository file\",\n );\n if (!body || typeof body !== \"object\") {\n throw new Error(\"Cloud delete repository file response did not include delete details.\");\n }\n const record = body as Record<string, unknown>;\n return { success: record.success === true, commitSha: requireString(record.commit_sha, \"commit_sha\") };\n },\n };\n\n readonly versions = {\n list: async (\n repositoryId: string,\n params: ListRepositoryVersionsParams = {},\n ): Promise<RepositoryVersion[]> => {\n const url = this.url(`/v1/repositories/${encodeURIComponent(repositoryId)}/versions`);\n addOptionalSearchParam(url, \"path\", params.path);\n addOptionalSearchParam(url, \"limit\", params.limit);\n const body = await this.requestUrl(url, \"GET\", undefined, \"Cloud list repository versions\");\n if (Array.isArray(body)) return body as RepositoryVersion[];\n if (body && typeof body === \"object\") {\n const record = body as Record<string, unknown>;\n if (Array.isArray(record.commits)) return record.commits as RepositoryVersion[];\n if (Array.isArray(record.versions)) return record.versions as RepositoryVersion[];\n }\n return [];\n },\n\n get: async (\n repositoryId: string,\n sha: string,\n params: GetRepositoryVersionParams,\n ): Promise<RepositoryFile> => {\n const url = this.url(`/v1/repositories/${encodeURIComponent(repositoryId)}/versions/${encodeURIComponent(sha)}`);\n url.searchParams.set(\"path\", params.path);\n const body = await this.requestUrl(url, \"GET\", undefined, \"Cloud get repository version\");\n if (!body || typeof body !== \"object\") {\n throw new Error(\"Cloud get repository version response did not include file content.\");\n }\n const record = body as Record<string, unknown>;\n return {\n path: requireString(record.path, \"path\"),\n content: requireString(record.content, \"content\"),\n contentSha256: requireString(record.content_sha256, \"content_sha256\"),\n ref: requireString(record.sha, \"sha\"),\n };\n },\n };\n\n private url(path: string): URL {\n return new URL(`${normalizeCloudApiBaseUrl(this.options.apiBaseUrl)}${path}`);\n }\n\n private async request(\n path: string,\n method: string,\n body: unknown,\n action: string,\n ): Promise<unknown> {\n return this.requestUrl(this.url(path), method, body, action);\n }\n\n private async requestUrl(\n url: URL,\n method: string,\n body: unknown,\n action: string,\n ): Promise<unknown> {\n const response = await getFetch(this.options.fetch)(url, {\n method,\n headers: cloudHeaders(this.options),\n ...(body !== undefined ? { body: JSON.stringify(body) } : {}),\n });\n const parsed = await parseJsonResponse(response);\n assertOkResponse(response, parsed, action);\n return parsed;\n }\n}\n",
10
- "// src/app-server-client.ts\nvar DEFAULT_REQUEST_TIMEOUT_MS = 30000;\nvar WEBSOCKET_OPEN_STATE = 1;\nfunction getGlobalWebSocket() {\n return globalThis.WebSocket;\n}\nfunction normalizeBaseUrl(url) {\n const parsed = new URL(url);\n if (parsed.protocol === \"http:\")\n parsed.protocol = \"ws:\";\n if (parsed.protocol === \"https:\")\n parsed.protocol = \"wss:\";\n if (parsed.protocol !== \"ws:\" && parsed.protocol !== \"wss:\") {\n throw new Error(`Unsupported app-server URL protocol: ${parsed.protocol}`);\n }\n if (!parsed.pathname || parsed.pathname === \"/\") {\n parsed.pathname = \"/ws\";\n }\n return parsed;\n}\nfunction resolveAppServerChannelUrl(url, channel) {\n const parsed = normalizeBaseUrl(url);\n parsed.searchParams.set(\"channel\", channel);\n return parsed.toString();\n}\nfunction attachSocketListener(socket, type, listener) {\n if (socket.addEventListener && socket.removeEventListener) {\n socket.addEventListener(type, listener);\n return () => socket.removeEventListener?.(type, listener);\n }\n if (socket.on) {\n socket.on(type, listener);\n return () => socket.off?.(type, listener);\n }\n throw new Error(\"WebSocket implementation does not support event listeners\");\n}\nfunction onceSocketEvent(socket, type, listener) {\n if (socket.once) {\n socket.once(type, listener);\n return () => socket.off?.(type, listener);\n }\n let detach = () => {};\n detach = attachSocketListener(socket, type, (event) => {\n detach();\n listener(event);\n });\n return detach;\n}\nfunction waitForSocketOpen(socket) {\n if (socket.readyState === WEBSOCKET_OPEN_STATE) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n let detachOpen = () => {};\n let detachError = () => {};\n const cleanup = () => {\n detachOpen();\n detachError();\n };\n detachOpen = onceSocketEvent(socket, \"open\", () => {\n cleanup();\n resolve();\n });\n detachError = onceSocketEvent(socket, \"error\", (event) => {\n cleanup();\n reject(new Error(`App-server WebSocket failed to open: ${String(event)}`));\n });\n });\n}\nfunction rawEventData(event) {\n if (event && typeof event === \"object\" && \"data\" in event) {\n return event.data;\n }\n return event;\n}\nfunction messageDataToString(data) {\n const raw = rawEventData(data);\n if (typeof raw === \"string\")\n return raw;\n if (raw instanceof ArrayBuffer) {\n return new TextDecoder().decode(raw);\n }\n if (raw instanceof Uint8Array) {\n return new TextDecoder().decode(raw);\n }\n if (ArrayBuffer.isView(raw)) {\n return new TextDecoder().decode(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));\n }\n return String(raw);\n}\nfunction parseProtocolMessage(event) {\n return JSON.parse(messageDataToString(event));\n}\nfunction appServerSocketOptions(authToken) {\n if (authToken === undefined) {\n return;\n }\n const token = authToken.trim();\n if (!token) {\n throw new Error(\"app-server auth token must not be empty\");\n }\n return { headers: { Authorization: `Bearer ${token}` } };\n}\nfunction sameRuntime(a, b) {\n return a?.agent_id === b.agent_id && a?.conversation_id === b.conversation_id;\n}\nfunction isWaitingLoopStatus(message) {\n return message.loop_status.status === \"WAITING_ON_INPUT\";\n}\nfunction isWaitingOnApprovalLoopStatus(message) {\n return message.loop_status.status === \"WAITING_ON_APPROVAL\";\n}\nfunction streamDeltaRunId(message) {\n const runId = message.delta.run_id;\n return typeof runId === \"string\" ? runId : null;\n}\nfunction streamDeltaMessageType(message) {\n const messageType = message.delta.message_type;\n return typeof messageType === \"string\" ? messageType : null;\n}\nfunction streamDeltaStopReason(message) {\n const stopReason = message.delta.stop_reason;\n return typeof stopReason === \"string\" ? stopReason : null;\n}\nfunction streamDeltaErrorMessage(message) {\n const delta = message.delta;\n const apiMessage = delta.api_error?.message ?? delta.api_error?.detail;\n if (typeof apiMessage === \"string\" && apiMessage.length > 0)\n return apiMessage;\n if (typeof delta.message === \"string\" && delta.message.length > 0)\n return delta.message;\n return \"App-server turn failed\";\n}\n\nclass AppServerClient {\n control;\n stream;\n requestTimeoutMs;\n pending = new Map;\n messageHandlers = new Set;\n sendHandlers = new Set;\n activeTurnRuntimes = new Set;\n nextRequestNumber = 0;\n constructor(options) {\n const WebSocket = options.WebSocket ?? getGlobalWebSocket();\n if (!WebSocket) {\n throw new Error(\"No WebSocket implementation available\");\n }\n this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n const socketOptions = appServerSocketOptions(options.authToken);\n this.control = new WebSocket(resolveAppServerChannelUrl(options.url, \"control\"), socketOptions);\n this.stream = new WebSocket(resolveAppServerChannelUrl(options.url, \"stream\"), socketOptions);\n attachSocketListener(this.control, \"message\", (event) => {\n this.handleMessage(event, \"control\");\n });\n attachSocketListener(this.stream, \"message\", (event) => {\n this.handleMessage(event, \"stream\");\n });\n const rejectPending = () => this.rejectAllPending(\"App-server socket closed\");\n attachSocketListener(this.control, \"close\", rejectPending);\n attachSocketListener(this.stream, \"close\", rejectPending);\n }\n async connect() {\n await Promise.all([\n waitForSocketOpen(this.control),\n waitForSocketOpen(this.stream)\n ]);\n return this;\n }\n close() {\n this.rejectAllPending(\"App-server client closed\");\n this.control.close();\n this.stream.close();\n }\n onMessage(handler) {\n this.messageHandlers.add(handler);\n return () => this.messageHandlers.delete(handler);\n }\n onSend(handler) {\n this.sendHandlers.add(handler);\n return () => this.sendHandlers.delete(handler);\n }\n nextRequestId(prefix = \"req\") {\n this.nextRequestNumber += 1;\n return `${prefix}-${this.nextRequestNumber}`;\n }\n send(command) {\n for (const handler of this.sendHandlers) {\n handler(command);\n }\n this.control.send(JSON.stringify(command));\n }\n request(commandOrType, bodyOrOptions = {}, maybeOptions = {}) {\n const isTypeRequest = typeof commandOrType === \"string\";\n const command = isTypeRequest ? {\n type: commandOrType,\n request_id: bodyOrOptions.request_id ?? this.nextRequestId(commandOrType),\n ...bodyOrOptions\n } : commandOrType;\n const options = isTypeRequest ? maybeOptions : bodyOrOptions;\n const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pending.delete(command.request_id);\n reject(new Error(`Timed out waiting for ${command.request_id}`));\n }, timeoutMs);\n this.pending.set(command.request_id, {\n resolve: (message) => resolve(message),\n reject,\n predicate: options.predicate,\n timeout\n });\n try {\n this.send(command);\n } catch (error) {\n clearTimeout(timeout);\n this.pending.delete(command.request_id);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n runtimeStart(command, options = {}) {\n return this.request({\n type: \"runtime_start\",\n request_id: command.request_id ?? this.nextRequestId(\"runtime-start\"),\n ...command\n }, {\n ...options,\n predicate: (message) => message.type === \"runtime_start_response\"\n });\n }\n sync(command, options = {}) {\n return this.request({\n type: \"sync\",\n request_id: command.request_id ?? this.nextRequestId(\"sync\"),\n ...command\n }, {\n ...options,\n predicate: (message) => message.type === \"sync_response\"\n });\n }\n abort(command, options = {}) {\n return this.request({\n type: \"abort_message\",\n request_id: command.request_id ?? this.nextRequestId(\"abort\"),\n ...command\n }, {\n ...options,\n predicate: (message) => message.type === \"abort_message_response\"\n });\n }\n conversationList(command = {}, options = {}) {\n return this.request({\n type: \"conversation_list\",\n request_id: command.request_id ?? this.nextRequestId(\"conversation-list\"),\n ...command\n }, {\n ...options,\n predicate: (message) => message.type === \"conversation_list_response\"\n });\n }\n onExternalToolCall(handler) {\n return this.onMessage((message, channel) => {\n if (channel !== \"control\" || message.type !== \"external_tool_call_request\") {\n return;\n }\n Promise.resolve(handler(message)).then((result) => {\n this.send({\n type: \"external_tool_call_response\",\n request_id: message.request_id,\n result\n });\n }).catch((error) => {\n this.send({\n type: \"external_tool_call_response\",\n request_id: message.request_id,\n error: error instanceof Error ? error.message : String(error)\n });\n });\n });\n }\n input(command) {\n this.send({ type: \"input\", ...command });\n }\n runTurn(command, options = {}) {\n const runtimeKey = `${command.runtime.agent_id}/${command.runtime.conversation_id}`;\n if (this.activeTurnRuntimes.has(runtimeKey)) {\n return Promise.reject(new Error(`A turn is already in flight for ${runtimeKey}`));\n }\n this.activeTurnRuntimes.add(runtimeKey);\n const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;\n const commandWithIds = this.withClientMessageIds(command);\n const runIds = new Set;\n let observedTurnEvidence = false;\n let observedRequiresApprovalStop = false;\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n cleanup();\n reject(new Error(`Timed out waiting for app-server turn on ${command.runtime.agent_id}/${command.runtime.conversation_id}`));\n }, timeoutMs);\n const cleanup = () => {\n clearTimeout(timeout);\n this.activeTurnRuntimes.delete(runtimeKey);\n offMessage();\n };\n const finish = (completedBy, terminalMessage, stopReason) => {\n cleanup();\n resolve({\n runtime: command.runtime,\n stopReason,\n runIds: [...runIds],\n clientMessageIds: commandWithIds.clientMessageIds,\n completedBy,\n terminalMessage\n });\n };\n const fail = (error) => {\n cleanup();\n reject(error);\n };\n const offMessage = this.onMessage((message) => {\n if (!sameRuntime(message.runtime, command.runtime)) {\n return;\n }\n if (message.type === \"stream_delta\") {\n observedTurnEvidence = true;\n const runId = streamDeltaRunId(message);\n if (runId)\n runIds.add(runId);\n const messageType = streamDeltaMessageType(message);\n if (messageType === \"loop_error\" || messageType === \"error_message\") {\n fail(new Error(streamDeltaErrorMessage(message)));\n return;\n }\n if (messageType === \"stop_reason\") {\n const stopReason = streamDeltaStopReason(message);\n if (stopReason === \"requires_approval\") {\n observedRequiresApprovalStop = true;\n return;\n }\n finish(\"stop_reason\", message, stopReason);\n }\n return;\n }\n if (message.type === \"update_loop_status\") {\n const hadTurnEvidenceBeforeLoopStatus = observedTurnEvidence || observedRequiresApprovalStop;\n if (!hadTurnEvidenceBeforeLoopStatus && (isWaitingOnApprovalLoopStatus(message) || options.allowLoopStatusFallback === true && isWaitingLoopStatus(message))) {\n return;\n }\n for (const runId of message.loop_status.active_run_ids) {\n observedTurnEvidence = true;\n runIds.add(runId);\n }\n if (hadTurnEvidenceBeforeLoopStatus && isWaitingOnApprovalLoopStatus(message)) {\n finish(\"loop_status_waiting_on_approval\", message, \"requires_approval\");\n return;\n }\n if (options.allowLoopStatusFallback === true && hadTurnEvidenceBeforeLoopStatus && isWaitingLoopStatus(message)) {\n finish(\"loop_status_waiting_fallback\", message, null);\n }\n }\n });\n try {\n this.input(commandWithIds.command);\n } catch (error) {\n fail(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n withClientMessageIds(command) {\n if (command.payload.kind !== \"create_message\") {\n return { command, clientMessageIds: [] };\n }\n const clientMessageIds = [];\n const messages = command.payload.messages.map((message) => {\n if (message.role !== \"user\")\n return message;\n const existing = message.client_message_id;\n const clientMessageId = typeof existing === \"string\" && existing.length > 0 ? existing : this.nextRequestId(\"client-message\");\n clientMessageIds.push(clientMessageId);\n return { ...message, client_message_id: clientMessageId };\n });\n return {\n command: {\n ...command,\n payload: { ...command.payload, messages }\n },\n clientMessageIds\n };\n }\n handleMessage(event, channel) {\n const message = parseProtocolMessage(event);\n for (const handler of this.messageHandlers) {\n handler(message, channel);\n }\n const requestId = message && typeof message === \"object\" && \"request_id\" in message ? message.request_id : undefined;\n if (channel !== \"control\" || typeof requestId !== \"string\") {\n return;\n }\n const pending = this.pending.get(requestId);\n if (!pending || pending.predicate && !pending.predicate(message)) {\n return;\n }\n clearTimeout(pending.timeout);\n this.pending.delete(requestId);\n pending.resolve(message);\n }\n rejectAllPending(reason) {\n for (const [requestId, pending] of this.pending) {\n clearTimeout(pending.timeout);\n this.pending.delete(requestId);\n pending.reject(new Error(reason));\n }\n }\n}\nfunction createAppServerClient(options) {\n return new AppServerClient(options);\n}\nexport {\n resolveAppServerChannelUrl,\n createAppServerClient,\n AppServerClient\n};\n\n//# debugId=0593BC0A166B65E464756E2164756E21\n",
10
+ "// src/app-server-client.ts\nvar DEFAULT_REQUEST_TIMEOUT_MS = 30000;\nvar WEBSOCKET_OPEN_STATE = 1;\nfunction getGlobalWebSocket() {\n return globalThis.WebSocket;\n}\nfunction normalizeBaseUrl(url) {\n const parsed = new URL(url);\n if (parsed.protocol === \"http:\")\n parsed.protocol = \"ws:\";\n if (parsed.protocol === \"https:\")\n parsed.protocol = \"wss:\";\n if (parsed.protocol !== \"ws:\" && parsed.protocol !== \"wss:\") {\n throw new Error(`Unsupported app-server URL protocol: ${parsed.protocol}`);\n }\n if (!parsed.pathname || parsed.pathname === \"/\") {\n parsed.pathname = \"/ws\";\n }\n return parsed;\n}\nfunction resolveAppServerChannelUrl(url, channel) {\n const parsed = normalizeBaseUrl(url);\n parsed.searchParams.set(\"channel\", channel);\n return parsed.toString();\n}\nfunction attachSocketListener(socket, type, listener) {\n if (socket.addEventListener && socket.removeEventListener) {\n socket.addEventListener(type, listener);\n return () => socket.removeEventListener?.(type, listener);\n }\n if (socket.on) {\n socket.on(type, listener);\n return () => socket.off?.(type, listener);\n }\n throw new Error(\"WebSocket implementation does not support event listeners\");\n}\nfunction onceSocketEvent(socket, type, listener) {\n if (socket.once) {\n socket.once(type, listener);\n return () => socket.off?.(type, listener);\n }\n let detach = () => {};\n detach = attachSocketListener(socket, type, (event) => {\n detach();\n listener(event);\n });\n return detach;\n}\nfunction waitForSocketOpen(socket) {\n if (socket.readyState === WEBSOCKET_OPEN_STATE) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n let detachOpen = () => {};\n let detachError = () => {};\n const cleanup = () => {\n detachOpen();\n detachError();\n };\n detachOpen = onceSocketEvent(socket, \"open\", () => {\n cleanup();\n resolve();\n });\n detachError = onceSocketEvent(socket, \"error\", (event) => {\n cleanup();\n reject(new Error(`App-server WebSocket failed to open: ${String(event)}`));\n });\n });\n}\nfunction rawEventData(event) {\n if (event && typeof event === \"object\" && \"data\" in event) {\n return event.data;\n }\n return event;\n}\nfunction messageDataToString(data) {\n const raw = rawEventData(data);\n if (typeof raw === \"string\")\n return raw;\n if (raw instanceof ArrayBuffer) {\n return new TextDecoder().decode(raw);\n }\n if (raw instanceof Uint8Array) {\n return new TextDecoder().decode(raw);\n }\n if (ArrayBuffer.isView(raw)) {\n return new TextDecoder().decode(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));\n }\n return String(raw);\n}\nfunction parseProtocolMessage(event) {\n return JSON.parse(messageDataToString(event));\n}\nfunction appServerSocketOptions(authToken) {\n if (authToken === undefined) {\n return;\n }\n const token = authToken.trim();\n if (!token) {\n throw new Error(\"app-server auth token must not be empty\");\n }\n return { headers: { Authorization: `Bearer ${token}` } };\n}\nfunction sameRuntime(a, b) {\n return a?.agent_id === b.agent_id && a?.conversation_id === b.conversation_id;\n}\nfunction isWaitingLoopStatus(message) {\n return message.loop_status.status === \"WAITING_ON_INPUT\";\n}\nfunction isWaitingOnApprovalLoopStatus(message) {\n return message.loop_status.status === \"WAITING_ON_APPROVAL\";\n}\nfunction streamDeltaRunId(message) {\n const runId = message.delta.run_id;\n return typeof runId === \"string\" ? runId : null;\n}\nfunction streamDeltaMessageType(message) {\n const messageType = message.delta.message_type;\n return typeof messageType === \"string\" ? messageType : null;\n}\nfunction streamDeltaStopReason(message) {\n const stopReason = message.delta.stop_reason;\n return typeof stopReason === \"string\" ? stopReason : null;\n}\nfunction streamDeltaErrorMessage(message) {\n const delta = message.delta;\n const apiMessage = delta.api_error?.message ?? delta.api_error?.detail;\n if (typeof apiMessage === \"string\" && apiMessage.length > 0)\n return apiMessage;\n if (typeof delta.message === \"string\" && delta.message.length > 0)\n return delta.message;\n return \"App-server turn failed\";\n}\n\nclass AppServerClient {\n control;\n stream;\n requestTimeoutMs;\n pending = new Map;\n messageHandlers = new Set;\n sendHandlers = new Set;\n disconnectHandlers = new Set;\n activeTurnRuntimes = new Set;\n explicitlyClosed = false;\n disconnectNotified = false;\n nextRequestNumber = 0;\n constructor(options) {\n const WebSocket = options.WebSocket ?? getGlobalWebSocket();\n if (!WebSocket) {\n throw new Error(\"No WebSocket implementation available\");\n }\n this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;\n const socketOptions = appServerSocketOptions(options.authToken);\n this.control = new WebSocket(resolveAppServerChannelUrl(options.url, \"control\"), socketOptions);\n this.stream = new WebSocket(resolveAppServerChannelUrl(options.url, \"stream\"), socketOptions);\n attachSocketListener(this.control, \"message\", (event) => {\n this.handleMessage(event, \"control\");\n });\n attachSocketListener(this.stream, \"message\", (event) => {\n this.handleMessage(event, \"stream\");\n });\n attachSocketListener(this.control, \"close\", (event) => {\n this.handleDisconnect(\"control\", event);\n });\n attachSocketListener(this.stream, \"close\", (event) => {\n this.handleDisconnect(\"stream\", event);\n });\n }\n async connect() {\n await Promise.all([\n waitForSocketOpen(this.control),\n waitForSocketOpen(this.stream)\n ]);\n return this;\n }\n close() {\n if (this.explicitlyClosed)\n return;\n this.explicitlyClosed = true;\n this.rejectAllPending(\"App-server client closed\");\n this.control.close();\n this.stream.close();\n }\n onMessage(handler) {\n this.messageHandlers.add(handler);\n return () => this.messageHandlers.delete(handler);\n }\n onSend(handler) {\n this.sendHandlers.add(handler);\n return () => this.sendHandlers.delete(handler);\n }\n onDisconnect(handler) {\n this.disconnectHandlers.add(handler);\n return () => this.disconnectHandlers.delete(handler);\n }\n nextRequestId(prefix = \"req\") {\n this.nextRequestNumber += 1;\n return `${prefix}-${this.nextRequestNumber}`;\n }\n send(command) {\n for (const handler of this.sendHandlers) {\n handler(command);\n }\n this.control.send(JSON.stringify(command));\n }\n request(commandOrType, bodyOrOptions = {}, maybeOptions = {}) {\n const isTypeRequest = typeof commandOrType === \"string\";\n const command = isTypeRequest ? {\n type: commandOrType,\n request_id: bodyOrOptions.request_id ?? this.nextRequestId(commandOrType),\n ...bodyOrOptions\n } : commandOrType;\n const options = isTypeRequest ? maybeOptions : bodyOrOptions;\n const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.pending.delete(command.request_id);\n reject(new Error(`Timed out waiting for ${command.request_id}`));\n }, timeoutMs);\n this.pending.set(command.request_id, {\n resolve: (message) => resolve(message),\n reject,\n predicate: options.predicate,\n timeout\n });\n try {\n this.send(command);\n } catch (error) {\n clearTimeout(timeout);\n this.pending.delete(command.request_id);\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n runtimeStart(command, options = {}) {\n return this.request({\n type: \"runtime_start\",\n request_id: command.request_id ?? this.nextRequestId(\"runtime-start\"),\n ...command\n }, {\n ...options,\n predicate: (message) => message.type === \"runtime_start_response\"\n });\n }\n sync(command, options = {}) {\n return this.request({\n type: \"sync\",\n request_id: command.request_id ?? this.nextRequestId(\"sync\"),\n ...command\n }, {\n ...options,\n predicate: (message) => message.type === \"sync_response\"\n });\n }\n abort(command, options = {}) {\n return this.request({\n type: \"abort_message\",\n request_id: command.request_id ?? this.nextRequestId(\"abort\"),\n ...command\n }, {\n ...options,\n predicate: (message) => message.type === \"abort_message_response\"\n });\n }\n conversationList(command = {}, options = {}) {\n return this.request({\n type: \"conversation_list\",\n request_id: command.request_id ?? this.nextRequestId(\"conversation-list\"),\n ...command\n }, {\n ...options,\n predicate: (message) => message.type === \"conversation_list_response\"\n });\n }\n onExternalToolCall(handler) {\n return this.onMessage((message, channel) => {\n if (channel !== \"control\" || message.type !== \"external_tool_call_request\") {\n return;\n }\n Promise.resolve(handler(message)).then((result) => {\n this.send({\n type: \"external_tool_call_response\",\n request_id: message.request_id,\n result\n });\n }).catch((error) => {\n this.send({\n type: \"external_tool_call_response\",\n request_id: message.request_id,\n error: error instanceof Error ? error.message : String(error)\n });\n });\n });\n }\n input(command) {\n this.send({ type: \"input\", ...command });\n }\n runTurn(command, options = {}) {\n const runtimeKey = `${command.runtime.agent_id}/${command.runtime.conversation_id}`;\n if (this.activeTurnRuntimes.has(runtimeKey)) {\n return Promise.reject(new Error(`A turn is already in flight for ${runtimeKey}`));\n }\n this.activeTurnRuntimes.add(runtimeKey);\n const timeoutMs = options.timeoutMs ?? this.requestTimeoutMs;\n const commandWithIds = this.withClientMessageIds(command);\n const runIds = new Set;\n let observedTurnEvidence = false;\n let observedRequiresApprovalStop = false;\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n cleanup();\n reject(new Error(`Timed out waiting for app-server turn on ${command.runtime.agent_id}/${command.runtime.conversation_id}`));\n }, timeoutMs);\n const cleanup = () => {\n clearTimeout(timeout);\n this.activeTurnRuntimes.delete(runtimeKey);\n offMessage();\n };\n const finish = (completedBy, terminalMessage, stopReason) => {\n cleanup();\n resolve({\n runtime: command.runtime,\n stopReason,\n runIds: [...runIds],\n clientMessageIds: commandWithIds.clientMessageIds,\n completedBy,\n terminalMessage\n });\n };\n const fail = (error) => {\n cleanup();\n reject(error);\n };\n const offMessage = this.onMessage((message) => {\n if (!sameRuntime(message.runtime, command.runtime)) {\n return;\n }\n if (message.type === \"stream_delta\") {\n observedTurnEvidence = true;\n const runId = streamDeltaRunId(message);\n if (runId)\n runIds.add(runId);\n const messageType = streamDeltaMessageType(message);\n if (messageType === \"loop_error\" || messageType === \"error_message\") {\n fail(new Error(streamDeltaErrorMessage(message)));\n return;\n }\n if (messageType === \"stop_reason\") {\n const stopReason = streamDeltaStopReason(message);\n if (stopReason === \"requires_approval\") {\n observedRequiresApprovalStop = true;\n return;\n }\n finish(\"stop_reason\", message, stopReason);\n }\n return;\n }\n if (message.type === \"update_loop_status\") {\n const hadTurnEvidenceBeforeLoopStatus = observedTurnEvidence || observedRequiresApprovalStop;\n if (!hadTurnEvidenceBeforeLoopStatus && (isWaitingOnApprovalLoopStatus(message) || options.allowLoopStatusFallback === true && isWaitingLoopStatus(message))) {\n return;\n }\n for (const runId of message.loop_status.active_run_ids) {\n observedTurnEvidence = true;\n runIds.add(runId);\n }\n if (hadTurnEvidenceBeforeLoopStatus && isWaitingOnApprovalLoopStatus(message)) {\n finish(\"loop_status_waiting_on_approval\", message, \"requires_approval\");\n return;\n }\n if (options.allowLoopStatusFallback === true && hadTurnEvidenceBeforeLoopStatus && isWaitingLoopStatus(message)) {\n finish(\"loop_status_waiting_fallback\", message, null);\n }\n }\n });\n try {\n this.input(commandWithIds.command);\n } catch (error) {\n fail(error instanceof Error ? error : new Error(String(error)));\n }\n });\n }\n withClientMessageIds(command) {\n if (command.payload.kind !== \"create_message\") {\n return { command, clientMessageIds: [] };\n }\n const clientMessageIds = [];\n const messages = command.payload.messages.map((message) => {\n if (message.role !== \"user\")\n return message;\n const existing = message.client_message_id;\n const clientMessageId = typeof existing === \"string\" && existing.length > 0 ? existing : this.nextRequestId(\"client-message\");\n clientMessageIds.push(clientMessageId);\n return { ...message, client_message_id: clientMessageId };\n });\n return {\n command: {\n ...command,\n payload: { ...command.payload, messages }\n },\n clientMessageIds\n };\n }\n handleMessage(event, channel) {\n const message = parseProtocolMessage(event);\n for (const handler of this.messageHandlers) {\n handler(message, channel);\n }\n const requestId = message && typeof message === \"object\" && \"request_id\" in message ? message.request_id : undefined;\n if (channel !== \"control\" || typeof requestId !== \"string\") {\n return;\n }\n const pending = this.pending.get(requestId);\n if (!pending || pending.predicate && !pending.predicate(message)) {\n return;\n }\n clearTimeout(pending.timeout);\n this.pending.delete(requestId);\n pending.resolve(message);\n }\n rejectAllPending(reason) {\n for (const [requestId, pending] of this.pending) {\n clearTimeout(pending.timeout);\n this.pending.delete(requestId);\n pending.reject(new Error(reason));\n }\n }\n handleDisconnect(channel, event) {\n this.rejectAllPending(\"App-server socket closed\");\n if (this.explicitlyClosed || this.disconnectNotified)\n return;\n this.disconnectNotified = true;\n for (const handler of this.disconnectHandlers) {\n handler({ channel, event });\n }\n }\n}\nfunction createAppServerClient(options) {\n return new AppServerClient(options);\n}\nexport {\n resolveAppServerChannelUrl,\n createAppServerClient,\n AppServerClient\n};\n\n//# debugId=B185C8697A26493664756E2164756E21\n",
11
11
  "import { spawn, type ChildProcess } from \"node:child_process\";\nimport { findLettaCli } from \"./cli-resolver.js\";\n\nexport interface LocalAppServerHandle {\n url: string;\n close(): void;\n}\n\nexport interface StartLocalAppServerOptions {\n listen?: string;\n backend?: string;\n startupTimeoutMs?: number;\n cliPath?: string;\n env?: Record<string, string | undefined>;\n}\n\nconst DEFAULT_LISTEN_URL = \"ws://127.0.0.1:0\";\nconst DEFAULT_STARTUP_TIMEOUT_MS = 30_000;\nconst LISTENING_RE = /^Listening on\\s+(ws:\\/\\/\\S+)\\s*$/m;\n\nfunction appendLine(buffer: string, chunk: unknown): string {\n return buffer + String(chunk);\n}\n\nfunction tryExtractListeningUrl(output: string): string | null {\n const match = output.match(LISTENING_RE);\n return match?.[1] ?? null;\n}\n\nexport function buildLocalAppServerArgs(\n cliPath: string,\n options: Pick<StartLocalAppServerOptions, \"backend\" | \"listen\"> = {},\n): string[] {\n return [\n cliPath,\n ...(options.backend !== undefined ? [\"--backend\", options.backend] : []),\n \"app-server\",\n \"--listen\",\n options.listen ?? DEFAULT_LISTEN_URL,\n ];\n}\n\nfunction terminateProcess(child: ChildProcess): void {\n if (child.exitCode !== null || child.signalCode !== null) return;\n child.kill(\"SIGTERM\");\n setTimeout(() => {\n if (child.exitCode === null && child.signalCode === null) {\n child.kill(\"SIGKILL\");\n }\n }, 1_000).unref?.();\n}\n\n/**\n * Spawn an SDK-owned Letta Code app-server on an ephemeral loopback port.\n */\nexport function startLocalAppServer(\n options: StartLocalAppServerOptions = {},\n): Promise<LocalAppServerHandle> {\n const cliPath = options.cliPath ?? findLettaCli();\n const args = buildLocalAppServerArgs(cliPath, options);\n const startupTimeoutMs = options.startupTimeoutMs ?? DEFAULT_STARTUP_TIMEOUT_MS;\n\n return new Promise((resolve, reject) => {\n const child = spawn(process.execPath, args, {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n env: { ...process.env, ...(options.env ?? {}) },\n });\n\n let settled = false;\n let output = \"\";\n\n const cleanup = () => {\n child.stdout?.off(\"data\", onStdout);\n child.stderr?.off(\"data\", onStderr);\n child.off(\"error\", onError);\n child.off(\"exit\", onExit);\n clearTimeout(timeout);\n };\n\n const fail = (error: Error) => {\n if (settled) return;\n settled = true;\n cleanup();\n terminateProcess(child);\n reject(error);\n };\n\n const succeed = (url: string) => {\n if (settled) return;\n settled = true;\n cleanup();\n resolve({\n url,\n close: () => terminateProcess(child),\n });\n };\n\n const onOutput = (chunk: unknown) => {\n output = appendLine(output, chunk);\n const url = tryExtractListeningUrl(output);\n if (url) succeed(url);\n };\n\n const onStdout = (chunk: unknown) => onOutput(chunk);\n const onStderr = (chunk: unknown) => {\n // Startup failures are printed to stderr by the CLI. Keep stderr in the\n // collected output so timeout/exit errors are actionable.\n output = appendLine(output, chunk);\n };\n const onError = (error: Error) => fail(error);\n const onExit = (code: number | null, signal: NodeJS.Signals | null) => {\n if (settled) return;\n fail(\n new Error(\n `Local Letta Code app-server exited before listening (code=${code ?? \"null\"}, signal=${signal ?? \"null\"}).${\n output ? ` Output:\\n${output.trim()}` : \"\"\n }`,\n ),\n );\n };\n\n const timeout = setTimeout(() => {\n fail(\n new Error(\n `Timed out waiting for local Letta Code app-server to start.${\n output ? ` Output:\\n${output.trim()}` : \"\"\n }`,\n ),\n );\n }, startupTimeoutMs);\n\n child.stdout?.on(\"data\", onStdout);\n child.stderr?.on(\"data\", onStderr);\n child.once(\"error\", onError);\n child.once(\"exit\", onExit);\n });\n}\n",
12
12
  "import { existsSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst require = createRequire(import.meta.url);\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n/**\n * Resolve the Letta Code CLI entrypoint used by SDK-owned transports.\n *\n * Resolution order intentionally matches the historical subprocess transport:\n * explicit LETTA_CLI_PATH first, then the installed @letta-ai/letta-code package,\n * then local development fallbacks.\n */\nexport function findLettaCli(): string {\n const envPath = process.env.LETTA_CLI_PATH;\n if (envPath && existsSync(envPath)) {\n return envPath;\n }\n\n try {\n return require.resolve(\"@letta-ai/letta-code\");\n } catch {\n // Fall through to local development paths.\n }\n\n const localPaths = [\n join(__dirname, \"..\", \"node_modules\", \"@letta-ai\", \"letta-code\", \"letta.js\"),\n join(__dirname, \"../../@letta-ai/letta-code/letta.js\"),\n join(__dirname, \"../../../letta-code-prod/letta.js\"),\n join(__dirname, \"../../../letta-code/letta.js\"),\n join(__dirname, \"..\", \"..\", \"letta-code\", \"letta.js\"),\n ];\n\n for (const path of localPaths) {\n if (existsSync(path)) {\n return path;\n }\n }\n\n throw new Error(\n \"Could not find Letta Code CLI. Set LETTA_CLI_PATH environment variable or install @letta-ai/letta-code.\",\n );\n}\n",
13
- "import {\n createAppServerClient,\n type AppServerClient,\n type AppServerExternalToolCallHandler,\n type AppServerSocketConstructor,\n} from \"@letta-ai/letta-code/app-server-client\";\nimport {\n isHeadlessAutoAllowTool,\n requiresRuntimeUserInput,\n} from \"./interactiveToolPolicy.js\";\nimport { startLocalAppServer, type LocalAppServerHandle } from \"./local-app-server.js\";\nimport {\n RemoteClientSessionCore,\n ensureSuccess,\n isUnrestrictedPermissionMode,\n mapPermissionMode,\n normalizeSendMessage,\n type ProtocolMessage,\n type RemoteClientRuntimeController,\n type RuntimeSendTurnOptions,\n type RuntimeScope,\n type RuntimeSessionInit,\n type RuntimeSessionMode,\n} from \"./remote-client-session-core.js\";\nimport type {\n AnyAgentTool,\n CanUseToolResponse,\n CreateAgentOptions,\n LettaCodeRemoteClientOptions,\n LettaCodeClientSessionOptions,\n ListModelsResult,\n ListMessagesOptions,\n ListMessagesResult,\n MessageContentItem,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SendMessage,\n UpdateModelResult,\n} from \"./types.js\";\n\ntype RuntimeStartResponse = ProtocolMessage & {\n type: \"runtime_start_response\";\n success: boolean;\n runtime: RuntimeScope | null;\n agent: (Record<string, unknown> & {\n id?: string;\n model?: string | null;\n model_settings?: Record<string, unknown> | null;\n }) | null;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype ConversationRetrieveResponse = ProtocolMessage & {\n type: \"conversation_retrieve_response\";\n success: boolean;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype ConversationMessagesListResponse = ProtocolMessage & {\n type: \"conversation_messages_list_response\";\n success: boolean;\n messages: unknown[];\n next_before?: string | null;\n nextBefore?: string | null;\n has_more?: boolean;\n hasMore?: boolean;\n error?: string;\n};\n\ntype ListModelsResponse = ProtocolMessage & {\n type: \"list_models_response\";\n success: boolean;\n entries?: unknown;\n available_handles?: unknown;\n byok_provider_aliases?: unknown;\n error?: string;\n};\n\ntype UpdateModelResponse = ProtocolMessage & {\n type: \"update_model_response\";\n success: boolean;\n applied_to?: unknown;\n model_id?: unknown;\n model_handle?: unknown;\n model_settings?: unknown;\n error?: string;\n};\n\ntype UpdateModelPayload = {\n model_id?: string;\n model_handle?: string;\n};\n\ntype RuntimeStartCommand = Parameters<AppServerClient[\"runtimeStart\"]>[0];\n\nexport function agentToolNames(\n agent: Record<string, unknown> | null | undefined,\n): string[] | undefined {\n const tools = agent?.tools;\n if (!Array.isArray(tools)) return undefined;\n return tools.flatMap((tool) => {\n if (typeof tool === \"string\" && tool.length > 0) return [tool];\n if (!tool || typeof tool !== \"object\") return [];\n const name = (tool as { name?: unknown }).name;\n return typeof name === \"string\" && name.length > 0 ? [name] : [];\n });\n}\n\nexport type AppServerSessionOptions = Partial<LettaCodeRemoteClientOptions> & {\n /** Base websocket URL. Remote sessions require this; local sessions may omit\n * it to spawn an SDK-owned app-server lazily at initialize(). */\n url?: string;\n /** Spawn a local app-server when url is omitted. */\n local?: boolean;\n /** Optional backend for SDK-owned local app-server processes. */\n localBackend?: string;\n /** Optional local app-server listen URL. Defaults to ws://127.0.0.1:0. */\n localListen?: string;\n /** Timeout for local app-server startup. */\n localStartupTimeoutMs?: number;\n /** Extra environment variables for SDK-owned local app-server processes. */\n localEnv?: Record<string, string | undefined>;\n /** Whether create-agent runtime_start should pin the created agent globally. */\n pinGlobalAgent?: boolean;\n /** Whether SDK create-agent payloads should add the origin tag automatically. */\n includeSdkOriginTag?: boolean;\n};\n\nexport type AppServerSessionMode = RuntimeSessionMode;\n\nconst SDK_AGENT_ORIGIN_TAG = \"origin:letta-code\";\n\nfunction isPresetSystemPrompt(value: string): boolean {\n return [\n \"default\",\n \"letta-claude\",\n \"letta-codex\",\n \"letta-gemini\",\n \"claude\",\n \"codex\",\n \"gemini\",\n ].includes(value);\n}\n\nfunction includeSdkAgentOriginTag(tags: string[] | undefined): string[] {\n const normalizedTags: string[] = [];\n let hasOriginTag = false;\n\n for (const tag of tags ?? []) {\n if (tag === SDK_AGENT_ORIGIN_TAG) {\n if (hasOriginTag) continue;\n hasOriginTag = true;\n }\n normalizedTags.push(tag);\n }\n\n if (!hasOriginTag) {\n normalizedTags.push(SDK_AGENT_ORIGIN_TAG);\n }\n\n return normalizedTags;\n}\n\nfunction assertRemoteCreateAgentOptionsSupported(options: CreateAgentOptions): void {\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support allowedTools/disallowedTools.\");\n }\n if (options.canUseTool !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support canUseTool callbacks.\");\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support systemInfoReminder overrides.\");\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support dreaming.behavior overrides.\");\n }\n}\n\nexport function assertRemoteSessionOptionsSupported(\n action: string,\n options: LettaCodeClientSessionOptions,\n): void {\n if (options.systemPrompt !== undefined) {\n throw new Error(`App-server ${action}() does not yet support systemPrompt overrides for existing agents.`);\n }\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(`App-server ${action}() does not yet support allowedTools/disallowedTools.`);\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(`App-server ${action}() does not yet support systemInfoReminder overrides.`);\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(`App-server ${action}() does not yet support dreaming.behavior overrides.`);\n }\n if ((options as { memfsStartup?: unknown }).memfsStartup !== undefined) {\n throw new Error(`App-server ${action}() does not support memfsStartup.`);\n }\n if (options.includePartialMessages !== undefined) {\n throw new Error(`App-server ${action}() streams app-server deltas directly and does not support includePartialMessages.`);\n }\n}\n\nfunction normalizeMemoryBlock(block: Record<string, unknown>): Record<string, unknown> {\n const normalized = { ...block };\n if (normalized.value === undefined && typeof normalized.content === \"string\") {\n normalized.value = normalized.content;\n }\n return normalized;\n}\n\nexport function createAgentBody(\n options: CreateAgentOptions,\n settings: { includeSdkOriginTag?: boolean } = {},\n): Record<string, unknown> {\n assertRemoteCreateAgentOptionsSupported(options);\n\n const includeOriginTag = settings.includeSdkOriginTag ?? true;\n const body: Record<string, unknown> = {};\n if (includeOriginTag || options.tags !== undefined) {\n body.tags = includeOriginTag ? includeSdkAgentOriginTag(options.tags) : options.tags;\n }\n\n if (options.model !== undefined) body.model = options.model;\n if (options.embedding !== undefined) body.embedding = options.embedding;\n if (options.name !== undefined) body.name = options.name;\n if (options.description !== undefined) body.description = options.description;\n if (options.hidden !== undefined) body.hidden = options.hidden;\n if (options.baseTools !== undefined) body.tools = options.baseTools;\n\n if (options.systemPrompt !== undefined) {\n if (typeof options.systemPrompt === \"string\") {\n if (isPresetSystemPrompt(options.systemPrompt)) {\n throw new Error(\"createAgent() does not yet support system prompt presets for this backend.\");\n }\n body.system = options.systemPrompt;\n } else {\n throw new Error(\"createAgent() does not yet support system prompt preset objects for this backend.\");\n }\n }\n\n const memoryBlocks: Array<Record<string, unknown>> = [];\n const blockIds: string[] = [];\n for (const item of options.memory ?? []) {\n if (typeof item === \"string\") {\n throw new Error(\"App-server createAgent() does not yet support memory preset names.\");\n }\n if (\"blockId\" in item) {\n blockIds.push(item.blockId);\n } else {\n memoryBlocks.push(normalizeMemoryBlock(item as unknown as Record<string, unknown>));\n }\n }\n if (options.persona !== undefined) {\n memoryBlocks.push({ label: \"persona\", value: options.persona });\n }\n if (options.human !== undefined) {\n memoryBlocks.push({ label: \"human\", value: options.human });\n }\n if (memoryBlocks.length > 0) body.memory_blocks = memoryBlocks;\n if (blockIds.length > 0) body.block_ids = blockIds;\n\n return body;\n}\n\nexport function externalToolGroups(tools: AnyAgentTool[] | undefined): Array<Record<string, unknown>> | undefined {\n if (!tools || tools.length === 0) return undefined;\n return [\n {\n tools: tools.map((tool) => ({\n name: tool.name,\n label: tool.label,\n description: tool.description,\n parameters: tool.parameters as Record<string, unknown>,\n })),\n },\n ];\n}\n\nexport function createExternalToolCallHandler(\n externalTools: Map<string, AnyAgentTool>,\n): AppServerExternalToolCallHandler {\n return async (request) => {\n const tool = externalTools.get(request.tool_name);\n if (!tool) {\n throw new Error(`Unknown external tool: ${request.tool_name}`);\n }\n const result = await tool.execute(request.tool_call_id, request.input);\n return {\n content: result.content.map((part) => ({\n type: part.type,\n ...(part.text !== undefined ? { text: part.text } : {}),\n ...(part.data !== undefined ? { data: part.data } : {}),\n ...(part.mimeType !== undefined ? { mimeType: part.mimeType } : {}),\n })),\n };\n };\n}\n\ntype AppServerApprovalOptions = LettaCodeClientSessionOptions | CreateAgentOptions;\n\ntype AppServerApprovalResponseDecision =\n | {\n behavior: \"allow\";\n message?: string;\n updated_input?: Record<string, unknown> | null;\n selected_permission_suggestion_ids?: string[];\n }\n | {\n behavior: \"deny\";\n message: string;\n };\n\nexport async function resolveAppServerToolApproval(\n options: AppServerApprovalOptions,\n toolName: string,\n toolInput: Record<string, unknown>,\n): Promise<CanUseToolResponse> {\n const hasCallback = typeof options.canUseTool === \"function\";\n const toolNeedsRuntimeUserInput = requiresRuntimeUserInput(toolName);\n\n if (toolNeedsRuntimeUserInput && !hasCallback) {\n return {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n }\n\n if (isUnrestrictedPermissionMode(options.permissionMode) && !toolNeedsRuntimeUserInput) {\n return { behavior: \"allow\", updatedInput: null, updatedPermissions: [] };\n }\n\n if (hasCallback) {\n try {\n const result = await options.canUseTool!(toolName, toolInput);\n if (result.behavior === \"allow\") {\n return {\n behavior: \"allow\",\n message: result.message,\n updatedInput: result.updatedInput ?? null,\n updatedPermissions: result.updatedPermissions ?? [],\n };\n }\n return {\n behavior: \"deny\",\n message: result.message ?? \"Denied by canUseTool callback\",\n interrupt: result.interrupt ?? false,\n };\n } catch (error) {\n return {\n behavior: \"deny\",\n message: error instanceof Error ? error.message : \"Callback error\",\n interrupt: false,\n };\n }\n }\n\n if (isHeadlessAutoAllowTool(toolName)) {\n return { behavior: \"allow\", updatedInput: null, updatedPermissions: [] };\n }\n\n return {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n}\n\nfunction permissionSuggestionId(value: unknown): string | null {\n if (typeof value === \"string\") return value;\n if (!value || typeof value !== \"object\") return null;\n const record = value as Record<string, unknown>;\n if (typeof record.id === \"string\") return record.id;\n if (typeof record.suggestion_id === \"string\") return record.suggestion_id;\n if (typeof record.permission_suggestion_id === \"string\") return record.permission_suggestion_id;\n return null;\n}\n\nexport function toAppServerApprovalDecision(\n decision: CanUseToolResponse,\n): AppServerApprovalResponseDecision {\n if (decision.behavior === \"deny\") {\n return {\n behavior: \"deny\",\n message: decision.message,\n };\n }\n\n const selectedPermissionSuggestionIds = (decision.updatedPermissions ?? [])\n .map(permissionSuggestionId)\n .filter((id): id is string => id !== null);\n\n return {\n behavior: \"allow\",\n ...(decision.message !== undefined ? { message: decision.message } : {}),\n updated_input: decision.updatedInput ?? null,\n selected_permission_suggestion_ids: selectedPermissionSuggestionIds,\n };\n}\n\nfunction stringRecord(value: unknown): Record<string, string> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n const record: Record<string, string> = {};\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n if (typeof entry === \"string\") record[key] = entry;\n }\n return record;\n}\n\nfunction objectRecord(value: unknown): Record<string, unknown> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n return { ...(value as Record<string, unknown>) };\n}\n\nfunction normalizeListModelsResponse(response: ListModelsResponse): ListModelsResult {\n if (!response.success) {\n throw new Error(response.error ?? \"listModels failed\");\n }\n\n const entries = Array.isArray(response.entries)\n ? response.entries.flatMap((entry) => {\n if (!entry || typeof entry !== \"object\") return [];\n const record = entry as Record<string, unknown>;\n if (\n typeof record.id !== \"string\" ||\n typeof record.handle !== \"string\" ||\n typeof record.label !== \"string\" ||\n typeof record.description !== \"string\"\n ) {\n return [];\n }\n const updateArgs = objectRecord(record.updateArgs);\n return [\n {\n id: record.id,\n handle: record.handle,\n label: record.label,\n description: record.description,\n ...(typeof record.isDefault === \"boolean\" ? { isDefault: record.isDefault } : {}),\n ...(typeof record.isFeatured === \"boolean\" ? { isFeatured: record.isFeatured } : {}),\n ...(typeof record.free === \"boolean\" ? { free: record.free } : {}),\n ...(updateArgs ? { updateArgs } : {}),\n },\n ];\n })\n : [];\n\n const result: ListModelsResult = { entries };\n if (response.available_handles === null) {\n result.availableHandles = null;\n } else if (Array.isArray(response.available_handles)) {\n result.availableHandles = response.available_handles.filter(\n (handle): handle is string => typeof handle === \"string\",\n );\n }\n const aliases = stringRecord(response.byok_provider_aliases);\n if (aliases) result.byokProviderAliases = aliases;\n return result;\n}\n\nfunction normalizeUpdateModelResponse(response: UpdateModelResponse): UpdateModelResult {\n if (!response.success) {\n throw new Error(response.error ?? \"Failed to update model\");\n }\n const result: UpdateModelResult = {};\n if (response.applied_to === \"agent\" || response.applied_to === \"conversation\") {\n result.appliedTo = response.applied_to;\n }\n if (typeof response.model_id === \"string\") result.modelId = response.model_id;\n if (typeof response.model_handle === \"string\") result.modelHandle = response.model_handle;\n if (response.model_settings === null) {\n result.modelSettings = null;\n } else if (response.model_settings && typeof response.model_settings === \"object\") {\n result.modelSettings = { ...(response.model_settings as Record<string, unknown>) };\n }\n return result;\n}\n\nfunction runtimeScopeFromMessage(message: ProtocolMessage): RuntimeScope | null {\n if (message.runtime) return message.runtime;\n const agentId = typeof message.agent_id === \"string\" ? message.agent_id : null;\n const conversationId = typeof message.conversation_id === \"string\" ? message.conversation_id : null;\n if (agentId && conversationId) {\n return { agent_id: agentId, conversation_id: conversationId };\n }\n return null;\n}\n\nexport function registerAppServerControlRequestHandler(config: {\n client: AppServerClient;\n getRuntime: () => RuntimeScope | null;\n getOptions: () => AppServerApprovalOptions;\n}): () => void {\n return config.client.onMessage((rawMessage, channel) => {\n const message = rawMessage as unknown as ProtocolMessage;\n if (channel !== \"control\" || message.type !== \"control_request\") return;\n void respondToAppServerControlRequest(config, message).catch(() => {\n // Permission callback failures are converted into deny responses by resolveAppServerToolApproval().\n });\n });\n}\n\nasync function respondToAppServerControlRequest(\n config: {\n client: AppServerClient;\n getRuntime: () => RuntimeScope | null;\n getOptions: () => AppServerApprovalOptions;\n },\n message: ProtocolMessage,\n): Promise<void> {\n const runtime = runtimeScopeFromMessage(message) ?? config.getRuntime();\n if (!runtime) return;\n\n const requestId = typeof message.request_id === \"string\" ? message.request_id : undefined;\n const request = message.request;\n if (!requestId || !request || typeof request !== \"object\") return;\n const requestRecord = request as Record<string, unknown>;\n if (requestRecord.subtype !== \"can_use_tool\") return;\n\n const toolName = typeof requestRecord.tool_name === \"string\" ? requestRecord.tool_name : \"unknown\";\n const toolInput =\n requestRecord.input && typeof requestRecord.input === \"object\" && !Array.isArray(requestRecord.input)\n ? (requestRecord.input as Record<string, unknown>)\n : {};\n const decision = await resolveAppServerToolApproval(config.getOptions(), toolName, toolInput);\n config.client.input({\n runtime,\n payload: {\n kind: \"approval_response\",\n request_id: requestId,\n decision: toAppServerApprovalDecision(decision),\n },\n } as Parameters<AppServerClient[\"input\"]>[0]);\n}\n\nexport class AppServerRuntimeController implements RemoteClientRuntimeController {\n constructor(\n private readonly client: AppServerClient,\n private readonly options: AppServerSessionOptions,\n ) {}\n\n onMessage(handler: (message: ProtocolMessage, channel?: string) => void): () => void {\n return this.client.onMessage((message, channel) => {\n handler(message as unknown as ProtocolMessage, channel);\n });\n }\n\n send(command: Record<string, unknown>): void {\n this.client.send(command as unknown as Parameters<AppServerClient[\"send\"]>[0]);\n }\n\n sendTurnMessage(\n runtime: RuntimeScope,\n message: SendMessage,\n options: RuntimeSendTurnOptions,\n ): void {\n const payload: Record<string, unknown> = {\n kind: \"create_message\",\n messages: [\n {\n role: \"user\",\n content: normalizeSendMessage(message),\n client_message_id: options.clientMessageId,\n },\n ],\n };\n this.client.input({\n runtime,\n payload,\n } as Parameters<AppServerClient[\"input\"]>[0]);\n }\n\n async abort(runtime: RuntimeScope): Promise<void> {\n await this.client.abort({ runtime } as Parameters<AppServerClient[\"abort\"]>[0]);\n }\n\n request(\n type: string,\n body: Record<string, unknown>,\n options: { timeoutMs?: number; predicate?: (message: ProtocolMessage) => boolean } = {},\n ): Promise<ProtocolMessage> {\n const request = this.client.request.bind(this.client) as unknown as (\n commandType: string,\n commandBody: Record<string, unknown>,\n requestOptions?: {\n timeoutMs?: number;\n predicate?: (message: ProtocolMessage) => boolean;\n },\n ) => Promise<ProtocolMessage>;\n return request(type, body, options);\n }\n\n async listModels(): Promise<ListModelsResult> {\n const response = (await this.request(\n \"list_models\",\n {},\n { predicate: (message) => message.type === \"list_models_response\" },\n )) as ListModelsResponse;\n return normalizeListModelsResponse(response);\n }\n\n async updateModel(\n runtime: RuntimeScope,\n payload: UpdateModelPayload,\n ): Promise<UpdateModelResult> {\n const response = (await this.request(\n \"update_model\",\n {\n runtime,\n payload,\n },\n { predicate: (message) => message.type === \"update_model_response\" },\n )) as UpdateModelResponse;\n return normalizeUpdateModelResponse(response);\n }\n\n async recoverPendingApprovals(\n runtime: RuntimeScope,\n options: RecoverPendingApprovalsOptions = {},\n ): Promise<RecoverPendingApprovalsResult> {\n const response = await this.client.sync(\n {\n runtime,\n recover_approvals: true,\n force_device_status: true,\n },\n options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {},\n );\n\n if (!response.success) {\n return {\n recovered: false,\n unsupported: false,\n detail: response.error ?? \"Failed to recover pending approvals\",\n };\n }\n\n return { recovered: true, unsupported: false };\n }\n\n async listMessages(\n conversationId: string,\n options: ListMessagesOptions = {},\n ): Promise<ListMessagesResult> {\n const query: Record<string, unknown> = {};\n if (options.before !== undefined) query.before = options.before;\n if (options.after !== undefined) query.after = options.after;\n if (options.order !== undefined) query.order = options.order;\n if (options.limit !== undefined) query.limit = options.limit;\n\n const response = (await this.request(\n \"conversation_messages_list\",\n {\n conversation_id: conversationId,\n ...(Object.keys(query).length > 0 ? { query } : {}),\n },\n { predicate: (message) => message.type === \"conversation_messages_list_response\" },\n )) as ConversationMessagesListResponse;\n\n if (!response.success) {\n throw new Error(response.error ?? \"listMessages failed\");\n }\n\n const result: ListMessagesResult = {\n messages: response.messages ?? [],\n };\n const nextBefore =\n typeof response.nextBefore === \"string\" || response.nextBefore === null\n ? response.nextBefore\n : typeof response.next_before === \"string\" || response.next_before === null\n ? response.next_before\n : undefined;\n if (nextBefore !== undefined) result.nextBefore = nextBefore;\n const hasMore =\n typeof response.hasMore === \"boolean\"\n ? response.hasMore\n : typeof response.has_more === \"boolean\"\n ? response.has_more\n : undefined;\n if (hasMore !== undefined) result.hasMore = hasMore;\n return result;\n }\n\n close(): void {\n this.client.close();\n }\n}\n\nexport class AppServerSession extends RemoteClientSessionCore {\n private ownedAppServer: LocalAppServerHandle | null = null;\n private externalTools = new Map<string, AnyAgentTool>();\n private removeExternalToolHandler: (() => void) | null = null;\n private removeControlRequestHandler: (() => void) | null = null;\n\n constructor(\n private readonly remoteOptions: AppServerSessionOptions,\n mode: AppServerSessionMode,\n ) {\n super(mode, {\n label: \"app-server\",\n requestTimeoutMs: remoteOptions.requestTimeoutMs,\n });\n const tools = mode.options.tools;\n for (const tool of tools ?? []) {\n this.externalTools.set(tool.name, tool);\n }\n }\n\n protected override shouldEnableMemfs(options: LettaCodeClientSessionOptions | CreateAgentOptions): boolean {\n if (this.mode.kind !== \"create-agent\") return false;\n return (options as CreateAgentOptions).memfs !== false;\n }\n\n protected override async initializeRuntimeController(): Promise<RuntimeSessionInit> {\n const url = await this.resolveAppServerUrl();\n const client = createAppServerClient({\n url,\n ...(this.remoteOptions.authToken !== undefined\n ? { authToken: this.remoteOptions.authToken }\n : {}),\n ...(this.remoteOptions.WebSocket\n ? { WebSocket: this.remoteOptions.WebSocket as AppServerSocketConstructor }\n : {}),\n ...(this.remoteOptions.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: this.remoteOptions.requestTimeoutMs }\n : {}),\n });\n\n this.removeControlRequestHandler = registerAppServerControlRequestHandler({\n client,\n getRuntime: () => this.runtime,\n getOptions: () => this.currentOptions(),\n });\n\n if (this.externalTools.size > 0) {\n this.removeExternalToolHandler = client.onExternalToolCall(\n createExternalToolCallHandler(this.externalTools),\n );\n }\n\n try {\n await client.connect();\n const response = await this.startRuntime(client);\n if (!response.success || !response.runtime) {\n throw new Error(response.error ?? \"Failed to start app-server runtime\");\n }\n\n const tools = agentToolNames(response.agent);\n const skillSources = this.currentOptions().skillSources;\n return {\n controller: new AppServerRuntimeController(client, this.remoteOptions),\n runtime: response.runtime,\n model: typeof response.agent?.model === \"string\" ? response.agent.model : \"\",\n modelSettings: response.agent?.model_settings ?? null,\n ...(tools !== undefined ? { tools } : {}),\n ...(skillSources !== undefined ? { skillSources: [...skillSources] } : {}),\n };\n } catch (error) {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n client.close();\n throw error;\n }\n }\n\n protected override onCoreClose(): void {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n this.ownedAppServer?.close();\n this.ownedAppServer = null;\n }\n\n private async resolveAppServerUrl(): Promise<string> {\n if (this.remoteOptions.url) {\n return this.remoteOptions.url;\n }\n if (this.remoteOptions.local !== true) {\n throw new Error(\"App-server session requires a url unless local app-server spawning is enabled.\");\n }\n // Session-level env layers over client-level env: each SDK-owned session\n // spawns its own app-server process, so this is a per-session scope.\n const sessionEnv = (\n this.mode.options as { env?: Record<string, string> }\n ).env;\n this.ownedAppServer = await startLocalAppServer({\n listen: this.remoteOptions.localListen,\n backend: this.remoteOptions.localBackend,\n startupTimeoutMs: this.remoteOptions.localStartupTimeoutMs,\n env: { ...this.remoteOptions.localEnv, ...sessionEnv },\n });\n return this.ownedAppServer.url;\n }\n\n private async startRuntime(client: AppServerClient): Promise<RuntimeStartResponse> {\n const command = await this.buildRuntimeStartCommand(client);\n const response = (await client.runtimeStart(command)) as unknown as RuntimeStartResponse;\n return response;\n }\n\n private async buildRuntimeStartCommand(client: AppServerClient): Promise<RuntimeStartCommand> {\n const options = this.mode.options;\n const command: Record<string, unknown> = {\n client_info: {\n name: \"@letta-ai/letta-agent-sdk\",\n title: \"Letta Agent SDK\",\n },\n recover_approvals: false,\n force_device_status: true,\n };\n\n const mode = mapPermissionMode(options.permissionMode);\n if (mode) command.mode = mode;\n if (options.cwd !== undefined) command.cwd = options.cwd;\n // Keep the distinction between omitted (use harness defaults) and []\n // (disable bundled/global/agent/project skills). The app-server runtime is\n // session-scoped, so this must be sent on creation and every resume.\n if (options.skillSources !== undefined) {\n command.skill_sources = [...new Set(options.skillSources)];\n }\n const groups = externalToolGroups(options.tools);\n if (groups) command.external_tools = groups;\n\n if (this.mode.kind === \"create-agent\") {\n command.create_agent = {\n body: createAgentBody(this.mode.options, {\n includeSdkOriginTag: this.remoteOptions.includeSdkOriginTag,\n }),\n // Hidden (worker-style) agents default to unpinned.\n pin_global:\n this.remoteOptions.pinGlobalAgent ??\n (this.mode.options as CreateAgentOptions).hidden !== true,\n // Signal memfs-less (worker-style) creation to the harness so it\n // skips the memfs tag/settings/clone entirely; older harnesses\n // ignore the field, and the client-side enable_memfs skip still\n // applies either way.\n ...((this.mode.options as CreateAgentOptions).memfs === false\n ? { memfs: false }\n : {}),\n };\n return command as RuntimeStartCommand;\n }\n\n if (this.mode.agentId) {\n command.agent_id = this.mode.agentId;\n if (this.mode.newConversation) {\n command.create_conversation = { body: {} };\n } else if (this.mode.defaultConversation) {\n command.conversation_id = \"default\";\n }\n return command as RuntimeStartCommand;\n }\n\n if (this.mode.conversationId) {\n const agentId = await this.resolveConversationAgentId(client, this.mode.conversationId);\n command.agent_id = agentId;\n command.conversation_id = this.mode.conversationId;\n return command as RuntimeStartCommand;\n }\n\n throw new Error(\n \"App-server createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n\n private async resolveConversationAgentId(\n client: AppServerClient,\n conversationId: string,\n ): Promise<string> {\n const request = client.request.bind(client) as unknown as (\n commandType: string,\n commandBody: Record<string, unknown>,\n options?: { predicate?: (message: ProtocolMessage) => boolean },\n ) => Promise<ProtocolMessage>;\n const response = (await request(\n \"conversation_retrieve\",\n { conversation_id: conversationId },\n { predicate: (message) => message.type === \"conversation_retrieve_response\" },\n )) as ConversationRetrieveResponse;\n if (!response.success || !response.conversation?.agent_id) {\n throw new Error(response.error ?? `Failed to retrieve conversation ${conversationId}`);\n }\n return response.conversation.agent_id;\n }\n\n}\n",
13
+ "import {\n createAppServerClient,\n type AppServerClient,\n type AppServerExternalToolCallHandler,\n type AppServerSocketConstructor,\n} from \"@letta-ai/letta-code/app-server-client\";\nimport {\n isHeadlessAutoAllowTool,\n requiresRuntimeUserInput,\n} from \"./interactiveToolPolicy.js\";\nimport { startLocalAppServer, type LocalAppServerHandle } from \"./local-app-server.js\";\nimport {\n RemoteClientSessionCore,\n ensureSuccess,\n isUnrestrictedPermissionMode,\n mapPermissionMode,\n normalizeSendMessage,\n type ProtocolMessage,\n type RemoteClientRuntimeController,\n type RuntimeSendTurnOptions,\n type RuntimeScope,\n type RuntimeSessionInit,\n type RuntimeSessionMode,\n} from \"./remote-client-session-core.js\";\nimport type {\n AnyAgentTool,\n CanUseToolResponse,\n CreateAgentOptions,\n LettaCodeRemoteClientOptions,\n LettaCodeClientSessionOptions,\n ListModelsResult,\n ListMessagesOptions,\n ListMessagesResult,\n MessageContentItem,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SendMessage,\n UpdateModelResult,\n} from \"./types.js\";\n\ntype RuntimeStartResponse = ProtocolMessage & {\n type: \"runtime_start_response\";\n success: boolean;\n runtime: RuntimeScope | null;\n agent: (Record<string, unknown> & {\n id?: string;\n model?: string | null;\n model_settings?: Record<string, unknown> | null;\n }) | null;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype ConversationRetrieveResponse = ProtocolMessage & {\n type: \"conversation_retrieve_response\";\n success: boolean;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype ConversationMessagesListResponse = ProtocolMessage & {\n type: \"conversation_messages_list_response\";\n success: boolean;\n messages: unknown[];\n next_before?: string | null;\n nextBefore?: string | null;\n has_more?: boolean;\n hasMore?: boolean;\n error?: string;\n};\n\ntype ListModelsResponse = ProtocolMessage & {\n type: \"list_models_response\";\n success: boolean;\n entries?: unknown;\n available_handles?: unknown;\n byok_provider_aliases?: unknown;\n error?: string;\n};\n\ntype UpdateModelResponse = ProtocolMessage & {\n type: \"update_model_response\";\n success: boolean;\n applied_to?: unknown;\n model_id?: unknown;\n model_handle?: unknown;\n model_settings?: unknown;\n error?: string;\n};\n\ntype UpdateModelPayload = {\n model_id?: string;\n model_handle?: string;\n};\n\ntype RuntimeStartCommand = Parameters<AppServerClient[\"runtimeStart\"]>[0];\n\nexport function agentToolNames(\n agent: Record<string, unknown> | null | undefined,\n): string[] | undefined {\n const tools = agent?.tools;\n if (!Array.isArray(tools)) return undefined;\n return tools.flatMap((tool) => {\n if (typeof tool === \"string\" && tool.length > 0) return [tool];\n if (!tool || typeof tool !== \"object\") return [];\n const name = (tool as { name?: unknown }).name;\n return typeof name === \"string\" && name.length > 0 ? [name] : [];\n });\n}\n\nexport type AppServerSessionOptions = Partial<LettaCodeRemoteClientOptions> & {\n /** Base websocket URL. Remote sessions require this; local sessions may omit\n * it to spawn an SDK-owned app-server lazily at initialize(). */\n url?: string;\n /** Spawn a local app-server when url is omitted. */\n local?: boolean;\n /** Optional backend for SDK-owned local app-server processes. */\n localBackend?: string;\n /** Optional local app-server listen URL. Defaults to ws://127.0.0.1:0. */\n localListen?: string;\n /** Timeout for local app-server startup. */\n localStartupTimeoutMs?: number;\n /** Extra environment variables for SDK-owned local app-server processes. */\n localEnv?: Record<string, string | undefined>;\n /** Whether create-agent runtime_start should pin the created agent globally. */\n pinGlobalAgent?: boolean;\n /** Whether SDK create-agent payloads should add the origin tag automatically. */\n includeSdkOriginTag?: boolean;\n};\n\nexport type AppServerSessionMode = RuntimeSessionMode;\n\nconst SDK_AGENT_ORIGIN_TAG = \"origin:letta-code\";\n\nfunction isPresetSystemPrompt(value: string): boolean {\n return [\n \"default\",\n \"letta-claude\",\n \"letta-codex\",\n \"letta-gemini\",\n \"claude\",\n \"codex\",\n \"gemini\",\n ].includes(value);\n}\n\nfunction includeSdkAgentOriginTag(tags: string[] | undefined): string[] {\n const normalizedTags: string[] = [];\n let hasOriginTag = false;\n\n for (const tag of tags ?? []) {\n if (tag === SDK_AGENT_ORIGIN_TAG) {\n if (hasOriginTag) continue;\n hasOriginTag = true;\n }\n normalizedTags.push(tag);\n }\n\n if (!hasOriginTag) {\n normalizedTags.push(SDK_AGENT_ORIGIN_TAG);\n }\n\n return normalizedTags;\n}\n\nfunction assertRemoteCreateAgentOptionsSupported(options: CreateAgentOptions): void {\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support allowedTools/disallowedTools.\");\n }\n if (options.canUseTool !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support canUseTool callbacks.\");\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support systemInfoReminder overrides.\");\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(\"App-server createAgent() does not yet support dreaming.behavior overrides.\");\n }\n}\n\nexport function assertRemoteSessionOptionsSupported(\n action: string,\n options: LettaCodeClientSessionOptions,\n): void {\n if (options.systemPrompt !== undefined) {\n throw new Error(`App-server ${action}() does not yet support systemPrompt overrides for existing agents.`);\n }\n if (options.disallowedTools !== undefined) {\n throw new Error(`App-server ${action}() does not yet support disallowedTools.`);\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(`App-server ${action}() does not yet support systemInfoReminder overrides.`);\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(`App-server ${action}() does not yet support dreaming.behavior overrides.`);\n }\n if ((options as { memfsStartup?: unknown }).memfsStartup !== undefined) {\n throw new Error(`App-server ${action}() does not support memfsStartup.`);\n }\n if (options.includePartialMessages !== undefined) {\n throw new Error(`App-server ${action}() streams app-server deltas directly and does not support includePartialMessages.`);\n }\n}\n\nfunction normalizeMemoryBlock(block: Record<string, unknown>): Record<string, unknown> {\n const normalized = { ...block };\n if (normalized.value === undefined && typeof normalized.content === \"string\") {\n normalized.value = normalized.content;\n }\n return normalized;\n}\n\nexport function createAgentBody(\n options: CreateAgentOptions,\n settings: { includeSdkOriginTag?: boolean } = {},\n): Record<string, unknown> {\n assertRemoteCreateAgentOptionsSupported(options);\n\n const includeOriginTag = settings.includeSdkOriginTag ?? true;\n const body: Record<string, unknown> = {};\n if (includeOriginTag || options.tags !== undefined) {\n body.tags = includeOriginTag ? includeSdkAgentOriginTag(options.tags) : options.tags;\n }\n\n if (options.model !== undefined) body.model = options.model;\n if (options.embedding !== undefined) body.embedding = options.embedding;\n if (options.name !== undefined) body.name = options.name;\n if (options.description !== undefined) body.description = options.description;\n if (options.hidden !== undefined) body.hidden = options.hidden;\n if (options.baseTools !== undefined) {\n body.tools = options.baseTools;\n // `tools: []` alone does not suppress the Letta agent type's defaults.\n // Keep the SDK's documented `baseTools: []` contract by disabling both\n // default tool attachment and its corresponding default tool rules.\n body.include_base_tools = false;\n body.include_base_tool_rules = false;\n }\n\n if (options.systemPrompt === undefined) {\n body.system = \"\";\n } else {\n if (typeof options.systemPrompt === \"string\") {\n if (isPresetSystemPrompt(options.systemPrompt)) {\n throw new Error(\"createAgent() does not yet support system prompt presets for this backend.\");\n }\n body.system = options.systemPrompt;\n } else {\n throw new Error(\"createAgent() does not yet support system prompt preset objects for this backend.\");\n }\n }\n\n const memoryBlocks: Array<Record<string, unknown>> = [];\n const blockIds: string[] = [];\n for (const item of options.memory ?? []) {\n if (typeof item === \"string\") {\n throw new Error(\"App-server createAgent() does not yet support memory preset names.\");\n }\n if (\"blockId\" in item) {\n blockIds.push(item.blockId);\n } else {\n memoryBlocks.push(normalizeMemoryBlock(item as unknown as Record<string, unknown>));\n }\n }\n if (options.persona !== undefined) {\n memoryBlocks.push({ label: \"persona\", value: options.persona });\n }\n if (options.human !== undefined) {\n memoryBlocks.push({ label: \"human\", value: options.human });\n }\n if (memoryBlocks.length > 0) body.memory_blocks = memoryBlocks;\n if (blockIds.length > 0) body.block_ids = blockIds;\n\n return body;\n}\n\nexport function externalToolGroups(tools: AnyAgentTool[] | undefined): Array<Record<string, unknown>> | undefined {\n if (!tools || tools.length === 0) return undefined;\n return [\n {\n tools: tools.map((tool) => ({\n name: tool.name,\n label: tool.label,\n description: tool.description,\n parameters: tool.parameters as Record<string, unknown>,\n })),\n },\n ];\n}\n\nexport function createExternalToolCallHandler(\n externalTools: Map<string, AnyAgentTool>,\n): AppServerExternalToolCallHandler {\n return async (request) => {\n const tool = externalTools.get(request.tool_name);\n if (!tool) {\n throw new Error(`Unknown external tool: ${request.tool_name}`);\n }\n const result = await tool.execute(request.tool_call_id, request.input);\n return {\n content: result.content.map((part) => ({\n type: part.type,\n ...(part.text !== undefined ? { text: part.text } : {}),\n ...(part.data !== undefined ? { data: part.data } : {}),\n ...(part.mimeType !== undefined ? { mimeType: part.mimeType } : {}),\n })),\n };\n };\n}\n\ntype AppServerApprovalOptions = LettaCodeClientSessionOptions | CreateAgentOptions;\n\ntype AppServerApprovalResponseDecision =\n | {\n behavior: \"allow\";\n message?: string;\n updated_input?: Record<string, unknown> | null;\n selected_permission_suggestion_ids?: string[];\n }\n | {\n behavior: \"deny\";\n message: string;\n };\n\nexport async function resolveAppServerToolApproval(\n options: AppServerApprovalOptions,\n toolName: string,\n toolInput: Record<string, unknown>,\n): Promise<CanUseToolResponse> {\n const hasCallback = typeof options.canUseTool === \"function\";\n const toolNeedsRuntimeUserInput = requiresRuntimeUserInput(toolName);\n\n if (toolNeedsRuntimeUserInput && !hasCallback) {\n return {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n }\n\n if (isUnrestrictedPermissionMode(options.permissionMode) && !toolNeedsRuntimeUserInput) {\n return { behavior: \"allow\", updatedInput: null, updatedPermissions: [] };\n }\n\n if (hasCallback) {\n try {\n const result = await options.canUseTool!(toolName, toolInput);\n if (result.behavior === \"allow\") {\n return {\n behavior: \"allow\",\n message: result.message,\n updatedInput: result.updatedInput ?? null,\n updatedPermissions: result.updatedPermissions ?? [],\n };\n }\n return {\n behavior: \"deny\",\n message: result.message ?? \"Denied by canUseTool callback\",\n interrupt: result.interrupt ?? false,\n };\n } catch (error) {\n return {\n behavior: \"deny\",\n message: error instanceof Error ? error.message : \"Callback error\",\n interrupt: false,\n };\n }\n }\n\n if (isHeadlessAutoAllowTool(toolName)) {\n return { behavior: \"allow\", updatedInput: null, updatedPermissions: [] };\n }\n\n return {\n behavior: \"deny\",\n message: \"No canUseTool callback registered\",\n interrupt: false,\n };\n}\n\nfunction permissionSuggestionId(value: unknown): string | null {\n if (typeof value === \"string\") return value;\n if (!value || typeof value !== \"object\") return null;\n const record = value as Record<string, unknown>;\n if (typeof record.id === \"string\") return record.id;\n if (typeof record.suggestion_id === \"string\") return record.suggestion_id;\n if (typeof record.permission_suggestion_id === \"string\") return record.permission_suggestion_id;\n return null;\n}\n\nexport function toAppServerApprovalDecision(\n decision: CanUseToolResponse,\n): AppServerApprovalResponseDecision {\n if (decision.behavior === \"deny\") {\n return {\n behavior: \"deny\",\n message: decision.message,\n };\n }\n\n const selectedPermissionSuggestionIds = (decision.updatedPermissions ?? [])\n .map(permissionSuggestionId)\n .filter((id): id is string => id !== null);\n\n return {\n behavior: \"allow\",\n ...(decision.message !== undefined ? { message: decision.message } : {}),\n updated_input: decision.updatedInput ?? null,\n selected_permission_suggestion_ids: selectedPermissionSuggestionIds,\n };\n}\n\nfunction stringRecord(value: unknown): Record<string, string> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n const record: Record<string, string> = {};\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n if (typeof entry === \"string\") record[key] = entry;\n }\n return record;\n}\n\nfunction objectRecord(value: unknown): Record<string, unknown> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n return { ...(value as Record<string, unknown>) };\n}\n\nfunction normalizeListModelsResponse(response: ListModelsResponse): ListModelsResult {\n if (!response.success) {\n throw new Error(response.error ?? \"listModels failed\");\n }\n\n const entries = Array.isArray(response.entries)\n ? response.entries.flatMap((entry) => {\n if (!entry || typeof entry !== \"object\") return [];\n const record = entry as Record<string, unknown>;\n if (\n typeof record.id !== \"string\" ||\n typeof record.handle !== \"string\" ||\n typeof record.label !== \"string\" ||\n typeof record.description !== \"string\"\n ) {\n return [];\n }\n const updateArgs = objectRecord(record.updateArgs);\n return [\n {\n id: record.id,\n handle: record.handle,\n label: record.label,\n description: record.description,\n ...(typeof record.isDefault === \"boolean\" ? { isDefault: record.isDefault } : {}),\n ...(typeof record.isFeatured === \"boolean\" ? { isFeatured: record.isFeatured } : {}),\n ...(typeof record.free === \"boolean\" ? { free: record.free } : {}),\n ...(updateArgs ? { updateArgs } : {}),\n },\n ];\n })\n : [];\n\n const result: ListModelsResult = { entries };\n if (response.available_handles === null) {\n result.availableHandles = null;\n } else if (Array.isArray(response.available_handles)) {\n result.availableHandles = response.available_handles.filter(\n (handle): handle is string => typeof handle === \"string\",\n );\n }\n const aliases = stringRecord(response.byok_provider_aliases);\n if (aliases) result.byokProviderAliases = aliases;\n return result;\n}\n\nfunction normalizeUpdateModelResponse(response: UpdateModelResponse): UpdateModelResult {\n if (!response.success) {\n throw new Error(response.error ?? \"Failed to update model\");\n }\n const result: UpdateModelResult = {};\n if (response.applied_to === \"agent\" || response.applied_to === \"conversation\") {\n result.appliedTo = response.applied_to;\n }\n if (typeof response.model_id === \"string\") result.modelId = response.model_id;\n if (typeof response.model_handle === \"string\") result.modelHandle = response.model_handle;\n if (response.model_settings === null) {\n result.modelSettings = null;\n } else if (response.model_settings && typeof response.model_settings === \"object\") {\n result.modelSettings = { ...(response.model_settings as Record<string, unknown>) };\n }\n return result;\n}\n\nfunction runtimeScopeFromMessage(message: ProtocolMessage): RuntimeScope | null {\n if (message.runtime) return message.runtime;\n const agentId = typeof message.agent_id === \"string\" ? message.agent_id : null;\n const conversationId = typeof message.conversation_id === \"string\" ? message.conversation_id : null;\n if (agentId && conversationId) {\n return { agent_id: agentId, conversation_id: conversationId };\n }\n return null;\n}\n\nexport function registerAppServerControlRequestHandler(config: {\n client: AppServerClient;\n getRuntime: () => RuntimeScope | null;\n getOptions: () => AppServerApprovalOptions;\n}): () => void {\n return config.client.onMessage((rawMessage, channel) => {\n const message = rawMessage as unknown as ProtocolMessage;\n if (channel !== \"control\" || message.type !== \"control_request\") return;\n void respondToAppServerControlRequest(config, message).catch(() => {\n // Permission callback failures are converted into deny responses by resolveAppServerToolApproval().\n });\n });\n}\n\nasync function respondToAppServerControlRequest(\n config: {\n client: AppServerClient;\n getRuntime: () => RuntimeScope | null;\n getOptions: () => AppServerApprovalOptions;\n },\n message: ProtocolMessage,\n): Promise<void> {\n const runtime = runtimeScopeFromMessage(message) ?? config.getRuntime();\n if (!runtime) return;\n\n const requestId = typeof message.request_id === \"string\" ? message.request_id : undefined;\n const request = message.request;\n if (!requestId || !request || typeof request !== \"object\") return;\n const requestRecord = request as Record<string, unknown>;\n if (requestRecord.subtype !== \"can_use_tool\") return;\n\n const toolName = typeof requestRecord.tool_name === \"string\" ? requestRecord.tool_name : \"unknown\";\n const toolInput =\n requestRecord.input && typeof requestRecord.input === \"object\" && !Array.isArray(requestRecord.input)\n ? (requestRecord.input as Record<string, unknown>)\n : {};\n const decision = await resolveAppServerToolApproval(config.getOptions(), toolName, toolInput);\n config.client.input({\n runtime,\n payload: {\n kind: \"approval_response\",\n request_id: requestId,\n decision: toAppServerApprovalDecision(decision),\n },\n } as Parameters<AppServerClient[\"input\"]>[0]);\n}\n\nexport class AppServerRuntimeController implements RemoteClientRuntimeController {\n constructor(\n private readonly client: AppServerClient,\n private readonly options: AppServerSessionOptions,\n private readonly clientToolAllowlist?: readonly string[],\n ) {}\n\n onMessage(handler: (message: ProtocolMessage, channel?: string) => void): () => void {\n return this.client.onMessage((message, channel) => {\n handler(message as unknown as ProtocolMessage, channel);\n });\n }\n\n send(command: Record<string, unknown>): void {\n this.client.send(command as unknown as Parameters<AppServerClient[\"send\"]>[0]);\n }\n\n sendTurnMessage(\n runtime: RuntimeScope,\n message: SendMessage,\n options: RuntimeSendTurnOptions,\n ): void {\n const payload: Record<string, unknown> = {\n kind: \"create_message\",\n messages: [\n {\n role: \"user\",\n content: normalizeSendMessage(message),\n client_message_id: options.clientMessageId,\n },\n ],\n };\n if (this.clientToolAllowlist !== undefined) {\n payload.client_tool_allowlist = [...new Set(this.clientToolAllowlist)];\n }\n this.client.input({\n runtime,\n payload,\n } as Parameters<AppServerClient[\"input\"]>[0]);\n }\n\n async abort(runtime: RuntimeScope): Promise<void> {\n await this.client.abort({ runtime } as Parameters<AppServerClient[\"abort\"]>[0]);\n }\n\n request(\n type: string,\n body: Record<string, unknown>,\n options: { timeoutMs?: number; predicate?: (message: ProtocolMessage) => boolean } = {},\n ): Promise<ProtocolMessage> {\n const request = this.client.request.bind(this.client) as unknown as (\n commandType: string,\n commandBody: Record<string, unknown>,\n requestOptions?: {\n timeoutMs?: number;\n predicate?: (message: ProtocolMessage) => boolean;\n },\n ) => Promise<ProtocolMessage>;\n return request(type, body, options);\n }\n\n async listModels(): Promise<ListModelsResult> {\n const response = (await this.request(\n \"list_models\",\n {},\n { predicate: (message) => message.type === \"list_models_response\" },\n )) as ListModelsResponse;\n return normalizeListModelsResponse(response);\n }\n\n async updateModel(\n runtime: RuntimeScope,\n payload: UpdateModelPayload,\n ): Promise<UpdateModelResult> {\n const response = (await this.request(\n \"update_model\",\n {\n runtime,\n payload,\n },\n { predicate: (message) => message.type === \"update_model_response\" },\n )) as UpdateModelResponse;\n return normalizeUpdateModelResponse(response);\n }\n\n async recoverPendingApprovals(\n runtime: RuntimeScope,\n options: RecoverPendingApprovalsOptions = {},\n ): Promise<RecoverPendingApprovalsResult> {\n const response = await this.client.sync(\n {\n runtime,\n recover_approvals: true,\n force_device_status: true,\n },\n options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {},\n );\n\n if (!response.success) {\n return {\n recovered: false,\n unsupported: false,\n detail: response.error ?? \"Failed to recover pending approvals\",\n };\n }\n\n return { recovered: true, unsupported: false };\n }\n\n async listMessages(\n conversationId: string,\n options: ListMessagesOptions = {},\n ): Promise<ListMessagesResult> {\n const query: Record<string, unknown> = {};\n if (options.before !== undefined) query.before = options.before;\n if (options.after !== undefined) query.after = options.after;\n if (options.order !== undefined) query.order = options.order;\n if (options.limit !== undefined) query.limit = options.limit;\n\n const response = (await this.request(\n \"conversation_messages_list\",\n {\n conversation_id: conversationId,\n ...(Object.keys(query).length > 0 ? { query } : {}),\n },\n { predicate: (message) => message.type === \"conversation_messages_list_response\" },\n )) as ConversationMessagesListResponse;\n\n if (!response.success) {\n throw new Error(response.error ?? \"listMessages failed\");\n }\n\n const result: ListMessagesResult = {\n messages: response.messages ?? [],\n };\n const nextBefore =\n typeof response.nextBefore === \"string\" || response.nextBefore === null\n ? response.nextBefore\n : typeof response.next_before === \"string\" || response.next_before === null\n ? response.next_before\n : undefined;\n if (nextBefore !== undefined) result.nextBefore = nextBefore;\n const hasMore =\n typeof response.hasMore === \"boolean\"\n ? response.hasMore\n : typeof response.has_more === \"boolean\"\n ? response.has_more\n : undefined;\n if (hasMore !== undefined) result.hasMore = hasMore;\n return result;\n }\n\n close(): void {\n this.client.close();\n }\n}\n\nexport class AppServerSession extends RemoteClientSessionCore {\n private ownedAppServer: LocalAppServerHandle | null = null;\n private externalTools = new Map<string, AnyAgentTool>();\n private removeExternalToolHandler: (() => void) | null = null;\n private removeControlRequestHandler: (() => void) | null = null;\n\n constructor(\n private readonly remoteOptions: AppServerSessionOptions,\n mode: AppServerSessionMode,\n ) {\n super(mode, {\n label: \"app-server\",\n requestTimeoutMs: remoteOptions.requestTimeoutMs,\n });\n const tools = mode.options.tools;\n for (const tool of tools ?? []) {\n this.externalTools.set(tool.name, tool);\n }\n }\n\n protected override shouldEnableMemfs(options: LettaCodeClientSessionOptions | CreateAgentOptions): boolean {\n if (this.mode.kind !== \"create-agent\") return false;\n return (options as CreateAgentOptions).memfs !== false;\n }\n\n protected override async initializeRuntimeController(): Promise<RuntimeSessionInit> {\n const url = await this.resolveAppServerUrl();\n const client = createAppServerClient({\n url,\n ...(this.remoteOptions.authToken !== undefined\n ? { authToken: this.remoteOptions.authToken }\n : {}),\n ...(this.remoteOptions.WebSocket\n ? { WebSocket: this.remoteOptions.WebSocket as AppServerSocketConstructor }\n : {}),\n ...(this.remoteOptions.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: this.remoteOptions.requestTimeoutMs }\n : {}),\n });\n\n this.removeControlRequestHandler = registerAppServerControlRequestHandler({\n client,\n getRuntime: () => this.runtime,\n getOptions: () => this.currentOptions(),\n });\n\n if (this.externalTools.size > 0) {\n this.removeExternalToolHandler = client.onExternalToolCall(\n createExternalToolCallHandler(this.externalTools),\n );\n }\n\n try {\n await client.connect();\n const response = await this.startRuntime(client);\n if (!response.success || !response.runtime) {\n throw new Error(response.error ?? \"Failed to start app-server runtime\");\n }\n\n const tools = agentToolNames(response.agent);\n const skillSources = this.currentOptions().skillSources;\n return {\n controller: new AppServerRuntimeController(\n client,\n this.remoteOptions,\n this.currentOptions().allowedTools,\n ),\n runtime: response.runtime,\n model: typeof response.agent?.model === \"string\" ? response.agent.model : \"\",\n modelSettings: response.agent?.model_settings ?? null,\n ...(tools !== undefined ? { tools } : {}),\n ...(skillSources !== undefined ? { skillSources: [...skillSources] } : {}),\n };\n } catch (error) {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n client.close();\n throw error;\n }\n }\n\n protected override onCoreClose(): void {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n this.ownedAppServer?.close();\n this.ownedAppServer = null;\n }\n\n private async resolveAppServerUrl(): Promise<string> {\n if (this.remoteOptions.url) {\n return this.remoteOptions.url;\n }\n if (this.remoteOptions.local !== true) {\n throw new Error(\"App-server session requires a url unless local app-server spawning is enabled.\");\n }\n // Session-level env layers over client-level env: each SDK-owned session\n // spawns its own app-server process, so this is a per-session scope.\n const sessionEnv = (\n this.mode.options as { env?: Record<string, string> }\n ).env;\n this.ownedAppServer = await startLocalAppServer({\n listen: this.remoteOptions.localListen,\n backend: this.remoteOptions.localBackend,\n startupTimeoutMs: this.remoteOptions.localStartupTimeoutMs,\n env: { ...this.remoteOptions.localEnv, ...sessionEnv },\n });\n return this.ownedAppServer.url;\n }\n\n private async startRuntime(client: AppServerClient): Promise<RuntimeStartResponse> {\n const command = await this.buildRuntimeStartCommand(client);\n const response = (await client.runtimeStart(command)) as unknown as RuntimeStartResponse;\n return response;\n }\n\n private async buildRuntimeStartCommand(client: AppServerClient): Promise<RuntimeStartCommand> {\n const options = this.mode.options;\n const command: Record<string, unknown> = {\n client_info: {\n name: \"@letta-ai/letta-agent-sdk\",\n title: \"Letta Agent SDK\",\n },\n recover_approvals: false,\n force_device_status: true,\n };\n\n const mode = mapPermissionMode(options.permissionMode);\n if (mode) command.mode = mode;\n if (options.cwd !== undefined) command.cwd = options.cwd;\n // Keep the distinction between omitted (use harness defaults) and []\n // (disable bundled/global/agent/project skills). The app-server runtime is\n // session-scoped, so this must be sent on creation and every resume.\n if (options.skillSources !== undefined) {\n command.skill_sources = [...new Set(options.skillSources)];\n }\n const groups = externalToolGroups(options.tools);\n if (groups) command.external_tools = groups;\n\n if (this.mode.kind === \"create-agent\") {\n command.create_agent = {\n body: createAgentBody(this.mode.options, {\n includeSdkOriginTag: this.remoteOptions.includeSdkOriginTag,\n }),\n // Hidden (worker-style) agents default to unpinned.\n pin_global:\n this.remoteOptions.pinGlobalAgent ??\n (this.mode.options as CreateAgentOptions).hidden !== true,\n // Signal memfs-less (worker-style) creation to the harness so it\n // skips the memfs tag/settings/clone entirely; older harnesses\n // ignore the field, and the client-side enable_memfs skip still\n // applies either way.\n ...((this.mode.options as CreateAgentOptions).memfs === false\n ? { memfs: false }\n : {}),\n };\n return command as RuntimeStartCommand;\n }\n\n if (this.mode.agentId) {\n command.agent_id = this.mode.agentId;\n if (this.mode.newConversation) {\n command.create_conversation = { body: {} };\n } else if (this.mode.defaultConversation) {\n command.conversation_id = \"default\";\n }\n return command as RuntimeStartCommand;\n }\n\n if (this.mode.conversationId) {\n const agentId = await this.resolveConversationAgentId(client, this.mode.conversationId);\n command.agent_id = agentId;\n command.conversation_id = this.mode.conversationId;\n return command as RuntimeStartCommand;\n }\n\n throw new Error(\n \"App-server createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n\n private async resolveConversationAgentId(\n client: AppServerClient,\n conversationId: string,\n ): Promise<string> {\n const request = client.request.bind(client) as unknown as (\n commandType: string,\n commandBody: Record<string, unknown>,\n options?: { predicate?: (message: ProtocolMessage) => boolean },\n ) => Promise<ProtocolMessage>;\n const response = (await request(\n \"conversation_retrieve\",\n { conversation_id: conversationId },\n { predicate: (message) => message.type === \"conversation_retrieve_response\" },\n )) as ConversationRetrieveResponse;\n if (!response.success || !response.conversation?.agent_id) {\n throw new Error(response.error ?? `Failed to retrieve conversation ${conversationId}`);\n }\n return response.conversation.agent_id;\n }\n\n}\n",
14
14
  "export type RemoteEnvironmentTarget =\n | { connectionId: string }\n | { environmentId: string }\n | { deviceId: string }\n | { connectionName: string };\n\nexport interface RemoteEnvironmentClientOptions {\n /** Letta API base URL. Defaults to https://api.letta.com. */\n baseUrl?: string;\n /** Bearer token / API key. Defaults to process.env.LETTA_API_KEY when present. */\n apiKey?: string;\n /** Additional headers, e.g. x-project-id. */\n headers?: Record<string, string>;\n /** Custom fetch implementation for tests or non-standard runtimes. */\n fetch?: typeof fetch;\n}\n\nexport interface RemoteEnvironmentConnection {\n id: string;\n connectionId: string | null;\n deviceId: string;\n connectionName: string;\n organizationId: string;\n userId?: string;\n apiKeyOwner?: string;\n podId: string | null;\n connectedAt: number | null;\n lastHeartbeat: number | null;\n lastSeenAt: number;\n firstSeenAt: number;\n currentMode?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface RemoteEnvironmentListResult {\n connections: RemoteEnvironmentConnection[];\n hasNextPage: boolean;\n}\n\nexport interface ResolvedRemoteEnvironment {\n connectionId: string;\n environment?: RemoteEnvironmentConnection;\n target: RemoteEnvironmentTarget;\n}\n\ntype RemoteFetch = typeof fetch;\n\nfunction getDefaultApiKey(): string | undefined {\n if (typeof process === \"undefined\") {\n return undefined;\n }\n return process.env.LETTA_API_KEY;\n}\n\nfunction createHeaders(options: RemoteEnvironmentClientOptions): Record<string, string> {\n const apiKey = options.apiKey ?? getDefaultApiKey();\n return {\n ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),\n ...(options.headers ?? {}),\n };\n}\n\nfunction getFetch(options: RemoteEnvironmentClientOptions): RemoteFetch {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (!fetchImpl) {\n throw new Error(\"Remote environments require a fetch implementation\");\n }\n return fetchImpl.bind(globalThis) as RemoteFetch;\n}\n\nfunction normalizeBaseUrl(baseUrl?: string): string {\n return (baseUrl ?? \"https://api.letta.com\").replace(/\\/$/, \"\");\n}\n\nfunction ensureOnline(\n environment: RemoteEnvironmentConnection,\n target: RemoteEnvironmentTarget,\n): ResolvedRemoteEnvironment {\n if (!environment.connectionId) {\n const label =\n \"deviceId\" in target\n ? target.deviceId\n : \"environmentId\" in target\n ? target.environmentId\n : \"connectionName\" in target\n ? target.connectionName\n : environment.deviceId;\n throw new Error(`Remote environment is offline: ${label}`);\n }\n\n return {\n connectionId: environment.connectionId,\n environment,\n target,\n };\n}\n\nasync function parseJsonResponse<T>(response: Response): Promise<T> {\n const text = await response.text();\n const body = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n const message =\n body && typeof body === \"object\" && \"message\" in body\n ? String((body as { message: unknown }).message)\n : response.statusText;\n throw new Error(`Letta API request failed (${response.status}): ${message}`);\n }\n\n return body as T;\n}\n\n/**\n * Small Cloud API helper for resolving explicit Letta Code environments.\n */\nexport class RemoteEnvironmentClient {\n private readonly baseUrl: string;\n private readonly fetchImpl: RemoteFetch;\n\n constructor(private readonly options: RemoteEnvironmentClientOptions = {}) {\n this.baseUrl = normalizeBaseUrl(options.baseUrl);\n this.fetchImpl = getFetch(options);\n }\n\n async listEnvironments(): Promise<RemoteEnvironmentListResult> {\n const url = new URL(`${this.baseUrl}/v1/environments`);\n const response = await this.fetchImpl(url, {\n headers: createHeaders(this.options),\n });\n return parseJsonResponse<RemoteEnvironmentListResult>(response);\n }\n\n async getEnvironmentByDeviceId(deviceId: string): Promise<RemoteEnvironmentConnection> {\n const response = await this.fetchImpl(\n `${this.baseUrl}/v1/environments/${encodeURIComponent(deviceId)}`,\n { headers: createHeaders(this.options) },\n );\n return parseJsonResponse<RemoteEnvironmentConnection>(response);\n }\n\n async resolveEnvironment(target: RemoteEnvironmentTarget): Promise<ResolvedRemoteEnvironment> {\n if (\"connectionId\" in target) {\n return { connectionId: target.connectionId, target };\n }\n\n if (\"deviceId\" in target) {\n return ensureOnline(await this.getEnvironmentByDeviceId(target.deviceId), target);\n }\n\n const { connections } = await this.listEnvironments();\n if (\"environmentId\" in target) {\n const match = connections.find((env) => env.id === target.environmentId);\n if (!match) {\n throw new Error(`Remote environment not found: ${target.environmentId}`);\n }\n return ensureOnline(match, target);\n }\n\n const matches = connections.filter(\n (env) => env.connectionName === target.connectionName,\n );\n if (matches.length === 0) {\n throw new Error(`Remote environment not found: ${target.connectionName}`);\n }\n if (matches.length > 1) {\n throw new Error(\n `Remote environment name is ambiguous: ${target.connectionName}`,\n );\n }\n const match = matches[0];\n if (!match) {\n throw new Error(`Remote environment not found: ${target.connectionName}`);\n }\n return ensureOnline(match, target);\n }\n\n}\n",
15
15
  "import {\n createAppServerClient,\n type AppServerClient,\n type AppServerSocketConstructor,\n type AppServerSocketLike,\n type AppServerSocketOptions,\n} from \"@letta-ai/letta-code/app-server-client\";\nimport {\n AppServerRuntimeController,\n AppServerSession,\n agentToolNames,\n createExternalToolCallHandler,\n externalToolGroups,\n registerAppServerControlRequestHandler,\n type AppServerSessionOptions,\n} from \"./app-server-session.js\";\nimport {\n RemoteEnvironmentClient,\n type RemoteEnvironmentTarget,\n} from \"./remote.js\";\nimport {\n RemoteClientSessionCore,\n mapPermissionMode,\n type ProtocolMessage,\n type RuntimeScope,\n type RuntimeSessionInit,\n type RuntimeSessionMode,\n} from \"./remote-client-session-core.js\";\nimport type {\n AnyAgentTool,\n CreateAgentOptions,\n LettaCodeClientSessionOptions,\n LettaCodeCloudClientOptions,\n LettaCodeCloudSandboxOptions,\n LettaCodeEnvironment,\n LettaCodeSocketConstructor,\n LettaCodeSocketLike,\n RepositoryResource,\n} from \"./types.js\";\n\nconst DEFAULT_CLOUD_API_BASE_URL = \"https://api.letta.com\";\nconst DEFAULT_TURN_TIMEOUT_MS = 120_000;\nconst DEFAULT_PING_INTERVAL_MS = 30_000;\nconst DEFAULT_SANDBOX_TTL_MINUTES = 5;\nconst MIN_SANDBOX_TTL_MINUTES = 1;\nconst MAX_SANDBOX_TTL_MINUTES = 60;\nconst DEFAULT_SANDBOX_READY_TIMEOUT_MS = 120_000;\nconst DEFAULT_SANDBOX_READY_POLL_INTERVAL_MS = 1_000;\nconst DEFAULT_REPOSITORY_ATTACH_TIMEOUT_MS = 10_000;\nconst DEFAULT_REPOSITORY_ATTACH_POLL_INTERVAL_MS = 250;\nconst SDK_AGENT_ORIGIN = \"@letta-ai/letta-agent-sdk\";\n\ntype FetchLike = typeof fetch;\n\ntype CloudStatusMessage = ProtocolMessage & {\n type: string;\n seq?: unknown;\n event_seq?: unknown;\n idempotency_key?: unknown;\n runId?: unknown;\n run_id?: unknown;\n stopReason?: unknown;\n stop_reason?: unknown;\n conversation_id?: unknown;\n conversationId?: unknown;\n agent_id?: unknown;\n agentId?: unknown;\n request?: unknown;\n loop_status?: unknown;\n delta?: unknown;\n};\n\ntype CloudRuntimeStartResponse = ProtocolMessage & {\n type: \"runtime_start_response\";\n success: boolean;\n runtime: RuntimeScope | null;\n agent: (Record<string, unknown> & {\n id?: string;\n model?: string | null;\n model_settings?: Record<string, unknown> | null;\n }) | null;\n conversation: (Record<string, unknown> & { id?: string; agent_id?: string }) | null;\n error?: string;\n};\n\ntype CloudConversation = Record<string, unknown> & {\n id?: string;\n agent_id?: string;\n};\n\ntype CloudAgentSandbox = Record<string, unknown> & {\n sandboxId?: string;\n deviceId?: string;\n connectionName?: string;\n conversationId?: string;\n resumed?: boolean;\n};\n\ntype CloudAgentSandboxRefresh = Record<string, unknown> & {\n success?: boolean;\n sandboxId?: string;\n ttlMinutes?: number;\n};\n\ntype ManagedCloudSandbox = {\n agentId: string;\n /** Non-null when the server confirmed conversation scoping by echoing the\n * conversationId (legacy servers strip unknown body keys and answer\n * without it, so the sandbox falls back to the agent-scoped lifecycle). */\n conversationId: string | null;\n sandboxId: string;\n deviceId: string;\n connectionName: string;\n ttlMinutes: number;\n readyTimeoutMs: number;\n readyPollIntervalMs: number;\n refreshIntervalMs: number;\n terminateOnClose: boolean;\n};\n\ntype ResolvedCloudConnection = {\n connectionId: string;\n};\n\nclass CloudManagedSandboxOwnershipError extends Error {}\n\n/**\n * The Cloud API reaped a conversation-scoped managed sandbox before the SDK\n * could refresh it. The failed refresh happens before the next turn is sent,\n * so callers can safely create a new SDK session for {@link conversationId}\n * and retry that turn.\n */\nexport class CloudManagedSandboxExpiredError extends Error {\n readonly code = \"managed_sandbox_expired\" as const;\n\n constructor(\n readonly sandboxId: string,\n readonly conversationId: string,\n ) {\n super(\n `Cloud managed sandbox ${sandboxId} expired. Resume conversation ${conversationId} with a new SDK session and retry the turn.`,\n );\n this.name = \"CloudManagedSandboxExpiredError\";\n }\n}\n\ntype CloudSessionMode = Extract<RuntimeSessionMode, { kind: \"session\" }>;\n\ntype CloudAgentRepository = {\n id: string;\n name?: string;\n is_primary?: boolean;\n};\n\nfunction getDefaultApiKey(): string | undefined {\n const env = (globalThis as { process?: { env?: Record<string, string | undefined> } })\n .process?.env;\n return env?.LETTA_API_KEY ?? env?.LETTA_CLOUD_API_KEY;\n}\n\nfunction bearerTokenFromHeaders(headers: Record<string, string> | undefined): string | undefined {\n const authorization = headers?.Authorization ?? headers?.authorization;\n if (!authorization) return undefined;\n const match = /^Bearer\\s+(.+)$/i.exec(authorization);\n return match?.[1];\n}\n\nfunction getCloudApiKey(options: LettaCodeCloudClientOptions): string | undefined {\n return options.apiKey ?? bearerTokenFromHeaders(options.headers) ?? getDefaultApiKey();\n}\n\nfunction getFetch(fetchOverride?: FetchLike): FetchLike {\n const resolved = fetchOverride ?? globalThis.fetch;\n if (!resolved) {\n throw new Error(\"No fetch implementation available for cloud backend.\");\n }\n return resolved.bind(globalThis) as FetchLike;\n}\n\nfunction getWebSocketConstructor(\n websocketOverride?: LettaCodeSocketConstructor,\n): LettaCodeSocketConstructor {\n const resolved =\n websocketOverride ??\n (globalThis as { WebSocket?: LettaCodeSocketConstructor }).WebSocket;\n if (!resolved) {\n throw new Error(\"No WebSocket implementation available for cloud backend.\");\n }\n return resolved;\n}\n\nfunction normalizeCloudApiBaseUrl(url: string | undefined): string {\n const parsed = new URL(url ?? DEFAULT_CLOUD_API_BASE_URL);\n parsed.pathname = parsed.pathname.replace(/\\/+$/, \"\");\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString().replace(/\\/$/, \"\");\n}\n\nfunction cloudHeaders(options: LettaCodeCloudClientOptions): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n ...(options.headers ?? {}),\n };\n const apiKey = getCloudApiKey(options);\n if (apiKey && !headers.Authorization && !headers.authorization) {\n headers.Authorization = `Bearer ${apiKey}`;\n }\n return headers;\n}\n\nfunction cloudWebSocketHeaders(options: LettaCodeCloudClientOptions): Record<string, string> | undefined {\n const headers = { ...(options.headers ?? {}) };\n delete headers.authorization;\n delete headers.Authorization;\n const apiKey = getCloudApiKey(options);\n if (apiKey) headers.Authorization = `Bearer ${apiKey}`;\n return Object.keys(headers).length > 0 ? headers : undefined;\n}\n\nasync function parseJsonResponse(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return text;\n }\n}\n\nfunction responseErrorMessage(body: unknown, fallback: string): string {\n if (body && typeof body === \"object\") {\n const record = body as Record<string, unknown>;\n const message = record.message ?? record.error ?? record.detail;\n const reasonText = record.reason_text;\n const pieces = [message, reasonText]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0);\n if (pieces.length > 0) return pieces.join(\": \");\n }\n return fallback;\n}\n\nfunction assertOkResponse(response: Response, body: unknown, action: string): void {\n if (!response.ok) {\n throw new Error(\n responseErrorMessage(body, `${action} failed with HTTP ${response.status}`),\n );\n }\n}\n\nfunction validatePositiveInteger(value: number | undefined, name: string): void {\n if (value !== undefined && (!Number.isInteger(value) || value <= 0)) {\n throw new Error(`Invalid ${name}. Expected a positive integer.`);\n }\n}\n\nfunction validateIntegerRange(\n value: number | undefined,\n name: string,\n min: number,\n max: number,\n): void {\n if (value === undefined) return;\n if (!Number.isInteger(value) || value < min || value > max) {\n throw new Error(`Invalid ${name}. Expected an integer between ${min} and ${max}.`);\n }\n}\n\nfunction validateCloudSandboxOptions(\n options: LettaCodeCloudSandboxOptions | undefined,\n name: string,\n): void {\n if (options === undefined) return;\n if (options === null || typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(`Invalid ${name}. Expected an object.`);\n }\n validateIntegerRange(\n options.ttlMinutes,\n `${name}.ttlMinutes`,\n MIN_SANDBOX_TTL_MINUTES,\n MAX_SANDBOX_TTL_MINUTES,\n );\n validatePositiveInteger(options.readyTimeoutMs, `${name}.readyTimeoutMs`);\n validatePositiveInteger(options.readyPollIntervalMs, `${name}.readyPollIntervalMs`);\n validatePositiveInteger(options.refreshIntervalMs, `${name}.refreshIntervalMs`);\n if (\n options.terminateOnClose !== undefined &&\n typeof options.terminateOnClose !== \"boolean\"\n ) {\n throw new Error(`Invalid ${name}.terminateOnClose. Expected a boolean.`);\n }\n}\n\nexport function validateCloudClientOptions(options: LettaCodeCloudClientOptions): void {\n validatePositiveInteger(options.requestTimeoutMs, \"requestTimeoutMs\");\n validatePositiveInteger(options.appServer?.requestTimeoutMs, \"appServer.requestTimeoutMs\");\n validatePositiveInteger(options.appServer?.startupTimeoutMs, \"appServer.startupTimeoutMs\");\n validateCloudSandboxOptions(options.sandbox, \"sandbox\");\n if (options.environment !== undefined && options.sandbox !== undefined) {\n throw new Error(\"Constellation sessions cannot specify both environment and sandbox options.\");\n }\n if (\n options.webSocketAuth !== undefined &&\n options.webSocketAuth !== \"header\" &&\n options.webSocketAuth !== \"query\"\n ) {\n throw new Error(\"Invalid webSocketAuth. Valid values: header, query.\");\n }\n}\n\nfunction environmentToRemoteTarget(\n environment: LettaCodeEnvironment,\n): RemoteEnvironmentTarget {\n if (typeof environment === \"string\") {\n return { connectionName: environment };\n }\n if (\"name\" in environment) {\n return { connectionName: environment.name };\n }\n if (\"id\" in environment) {\n return { environmentId: environment.id };\n }\n if (\"connectionId\" in environment) {\n return { connectionId: environment.connectionId };\n }\n if (\"deviceId\" in environment) {\n return { deviceId: environment.deviceId };\n }\n throw new Error(\"Unknown cloud environment selector.\");\n}\n\nfunction buildCloudStatusWebSocketUrl(params: {\n apiBaseUrl?: string;\n connectionId: string;\n agentId: string;\n conversationId: string;\n apiKey?: string;\n authMode: \"header\" | \"query\";\n}): string {\n const base = new URL(normalizeCloudApiBaseUrl(params.apiBaseUrl));\n if (base.protocol === \"http:\") {\n base.protocol = \"ws:\";\n } else if (base.protocol === \"https:\") {\n base.protocol = \"wss:\";\n } else if (base.protocol !== \"ws:\" && base.protocol !== \"wss:\") {\n throw new Error(`Unsupported cloud apiBaseUrl protocol: ${base.protocol}`);\n }\n base.pathname = `/v1/environments/${encodeURIComponent(params.connectionId)}/status/ws`;\n base.searchParams.set(\"agentId\", params.agentId);\n base.searchParams.set(\"conversationId\", params.conversationId);\n base.searchParams.set(\"channel\", \"stream\");\n if (params.authMode === \"query\" && params.apiKey) {\n base.searchParams.set(\"token\", params.apiKey);\n }\n return base.toString();\n}\n\nfunction addSocketListener(\n socket: LettaCodeSocketLike,\n type: string,\n listener: (event: unknown) => void,\n): () => void {\n if (socket.addEventListener) {\n socket.addEventListener(type, listener);\n return () => socket.removeEventListener?.(type, listener);\n }\n if (socket.on) {\n socket.on(type, listener);\n return () => socket.off?.(type, listener);\n }\n throw new Error(\"WebSocket implementation does not support event listeners.\");\n}\n\nfunction messageEventData(event: unknown): string | null {\n if (typeof event === \"string\") return event;\n if (event && typeof event === \"object\") {\n const data = (event as { data?: unknown }).data;\n if (typeof data === \"string\") return data;\n if (data instanceof ArrayBuffer) {\n return new TextDecoder().decode(data);\n }\n if (data instanceof Uint8Array) {\n return new TextDecoder().decode(data);\n }\n }\n return null;\n}\n\ntype CloudStatusSocketControl = AppServerSocketLike & {\n sendCloudCommand(command: Record<string, unknown>): void;\n};\n\ntype CloudStatusSocketState = {\n runtime: RuntimeScope;\n seenIdempotencyKeys: Set<string>;\n seenIdempotencyOrder: string[];\n lastEventSeq: number | null;\n controlSocket: CloudStatusSocketControl | null;\n};\n\nfunction createCloudStatusWebSocketConstructor(params: {\n cloudOptions: LettaCodeCloudClientOptions;\n runtime: RuntimeScope;\n}): AppServerSocketConstructor {\n const WebSocketCtor = getWebSocketConstructor(params.cloudOptions.WebSocket);\n const authMode = params.cloudOptions.webSocketAuth ?? \"header\";\n const cloudHeaders = authMode === \"header\" ? cloudWebSocketHeaders(params.cloudOptions) : undefined;\n const pingIntervalMs = params.cloudOptions.pingIntervalMs ?? DEFAULT_PING_INTERVAL_MS;\n const state: CloudStatusSocketState = {\n runtime: params.runtime,\n seenIdempotencyKeys: new Set<string>(),\n seenIdempotencyOrder: [],\n lastEventSeq: null,\n controlSocket: null,\n };\n\n class CloudStatusSocketAdapter implements AppServerSocketLike {\n private readonly socket: LettaCodeSocketLike;\n private readonly channel: string | null;\n private readonly listenerRemovers = new Map<string, Map<(event: unknown) => void, () => void>>();\n private pingTimer: ReturnType<typeof setInterval> | null = null;\n private removeCloseListener: (() => void) | null = null;\n\n constructor(url: string, options?: AppServerSocketOptions) {\n this.channel = new URL(url).searchParams.get(\"channel\");\n const mergedHeaders = authMode === \"header\"\n ? {\n ...(options?.headers ?? {}),\n ...(cloudHeaders ?? {}),\n }\n : undefined;\n const socketOptions = mergedHeaders && Object.keys(mergedHeaders).length > 0\n ? { headers: mergedHeaders }\n : undefined;\n this.socket = new WebSocketCtor(url, socketOptions);\n if (this.channel === \"control\") {\n state.controlSocket = this;\n }\n this.removeCloseListener = addSocketListener(this.socket, \"close\", () => {\n this.stopPing();\n if (state.controlSocket === this) state.controlSocket = null;\n });\n this.startPing(pingIntervalMs);\n }\n\n get readyState(): number {\n return this.socket.readyState;\n }\n\n send(data: string): void {\n this.socket.send(data);\n }\n\n close(): void {\n this.stopPing();\n this.removeCloseListener?.();\n this.removeCloseListener = null;\n if (state.controlSocket === this) state.controlSocket = null;\n this.socket.close();\n }\n\n addEventListener(type: string, listener: (event: unknown) => void): void {\n const wrapped = type === \"message\"\n ? (event: unknown) => {\n if (this.handleIncomingMessage(event)) {\n listener(event);\n }\n }\n : listener;\n const remove = addSocketListener(this.socket, type, wrapped);\n let typeRemovers = this.listenerRemovers.get(type);\n if (!typeRemovers) {\n typeRemovers = new Map();\n this.listenerRemovers.set(type, typeRemovers);\n }\n typeRemovers.set(listener, remove);\n }\n\n removeEventListener(type: string, listener: (event: unknown) => void): void {\n const typeRemovers = this.listenerRemovers.get(type);\n const remove = typeRemovers?.get(listener);\n if (!remove) return;\n remove();\n typeRemovers?.delete(listener);\n if (typeRemovers?.size === 0) {\n this.listenerRemovers.delete(type);\n }\n }\n\n private handleIncomingMessage(event: unknown): boolean {\n const data = messageEventData(event);\n if (!data) return true;\n\n let message: CloudStatusMessage;\n try {\n message = JSON.parse(data) as CloudStatusMessage;\n } catch {\n return true;\n }\n\n this.ackIfSequenced(message);\n\n // The status gateway can mirror device stream frames to the control\n // subscriber. Drop them at the Cloud transport boundary instead of making\n // shared app-server session code understand Cloud fanout quirks. Do this\n // before idempotency/event tracking so the canonical stream-channel frame\n // is still delivered and sequenced.\n if (this.channel === \"control\" && message.type === \"stream_delta\") {\n return false;\n }\n\n if (this.isDuplicate(message)) return false;\n this.trackEventSeq(message);\n return true;\n }\n\n private ackIfSequenced(message: CloudStatusMessage): void {\n if (typeof message.seq !== \"number\") return;\n this.sendCloudCommand({ type: \"ack\", seq: message.seq });\n }\n\n private isDuplicate(message: CloudStatusMessage): boolean {\n const idempotencyKey =\n typeof message.idempotency_key === \"string\" ? message.idempotency_key : undefined;\n if (!idempotencyKey) return false;\n if (state.seenIdempotencyKeys.has(idempotencyKey)) return true;\n state.seenIdempotencyKeys.add(idempotencyKey);\n state.seenIdempotencyOrder.push(idempotencyKey);\n while (state.seenIdempotencyOrder.length > 1_000) {\n const oldest = state.seenIdempotencyOrder.shift();\n if (oldest) state.seenIdempotencyKeys.delete(oldest);\n }\n return false;\n }\n\n private trackEventSeq(message: CloudStatusMessage): void {\n if (typeof message.event_seq !== \"number\") return;\n if (state.lastEventSeq !== null && message.event_seq > state.lastEventSeq + 1) {\n this.sendSync(true);\n }\n if (state.lastEventSeq === null || message.event_seq > state.lastEventSeq) {\n state.lastEventSeq = message.event_seq;\n }\n }\n\n private sendSync(recoverApprovals: boolean): void {\n const target = state.controlSocket?.readyState === 1 ? state.controlSocket : this;\n target.sendCloudCommand({\n type: \"sync\",\n runtime: state.runtime,\n recover_approvals: recoverApprovals,\n force_device_status: true,\n });\n }\n\n sendCloudCommand(command: Record<string, unknown>): void {\n if (this.readyState !== 1) return;\n try {\n this.socket.send(JSON.stringify(command));\n } catch {\n // Best-effort Cloud status reliability command.\n }\n }\n\n private startPing(intervalMs: number): void {\n if (this.pingTimer) return;\n this.pingTimer = setInterval(() => {\n this.sendCloudCommand({ type: \"ping\" });\n }, intervalMs);\n (this.pingTimer as { unref?: () => void }).unref?.();\n }\n\n private stopPing(): void {\n if (!this.pingTimer) return;\n clearInterval(this.pingTimer);\n this.pingTimer = null;\n }\n }\n\n return CloudStatusSocketAdapter as AppServerSocketConstructor;\n}\n\nfunction isCloudConversation(value: unknown): value is CloudConversation & { id: string } {\n return Boolean(value && typeof value === \"object\" && typeof (value as CloudConversation).id === \"string\");\n}\n\nfunction isCloudAgentSandbox(\n value: unknown,\n): value is CloudAgentSandbox & { sandboxId: string; deviceId: string; connectionName: string } {\n return Boolean(\n value &&\n typeof value === \"object\" &&\n typeof (value as CloudAgentSandbox).sandboxId === \"string\" &&\n typeof (value as CloudAgentSandbox).deviceId === \"string\" &&\n typeof (value as CloudAgentSandbox).connectionName === \"string\",\n );\n}\n\nfunction isCloudAgentSandboxRefresh(\n value: unknown,\n): value is CloudAgentSandboxRefresh & { success: boolean; sandboxId: string; ttlMinutes: number } {\n return Boolean(\n value &&\n typeof value === \"object\" &&\n typeof (value as CloudAgentSandboxRefresh).success === \"boolean\" &&\n typeof (value as CloudAgentSandboxRefresh).sandboxId === \"string\" &&\n typeof (value as CloudAgentSandboxRefresh).ttlMinutes === \"number\",\n );\n}\n\nfunction isRetryableManagedSandboxResolveError(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes(\"Remote environment is offline\") ||\n message.toLowerCase().includes(\"not found\") ||\n message.includes(\"(404)\")\n );\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction externalToolsByName(tools: AnyAgentTool[] | undefined): Map<string, AnyAgentTool> {\n const result = new Map<string, AnyAgentTool>();\n for (const tool of tools ?? []) {\n result.set(tool.name, tool);\n }\n return result;\n}\n\nfunction cloudHarnessAppServerOptions(\n clientOptions: LettaCodeCloudClientOptions,\n): AppServerSessionOptions {\n const appServer = clientOptions.appServer;\n const apiKey = getCloudApiKey(clientOptions);\n const localEnv: Record<string, string | undefined> = {\n ...(apiKey ? { LETTA_API_KEY: apiKey } : {}),\n ...(clientOptions.apiBaseUrl\n ? { LETTA_BASE_URL: normalizeCloudApiBaseUrl(clientOptions.apiBaseUrl) }\n : {}),\n };\n return {\n local: appServer?.url === undefined,\n localBackend: \"api\",\n ...(appServer?.url !== undefined ? { url: appServer.url } : {}),\n ...(appServer?.WebSocket !== undefined ? { WebSocket: appServer.WebSocket } : {}),\n ...(clientOptions.requestTimeoutMs !== undefined || appServer?.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: appServer?.requestTimeoutMs ?? clientOptions.requestTimeoutMs }\n : {}),\n ...(appServer?.listen !== undefined ? { localListen: appServer.listen } : {}),\n ...(appServer?.startupTimeoutMs !== undefined\n ? { localStartupTimeoutMs: appServer.startupTimeoutMs }\n : {}),\n ...(Object.keys(localEnv).length > 0 ? { localEnv } : {}),\n };\n}\n\nexport async function createCloudAgent(\n clientOptions: LettaCodeCloudClientOptions,\n agentOptions: CreateAgentOptions,\n): Promise<string> {\n const session = new AppServerSession(cloudHarnessAppServerOptions(clientOptions), {\n kind: \"create-agent\",\n options: agentOptions,\n });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n}\n\nexport function assertCloudSessionOptionsSupported(\n action: string,\n options: LettaCodeClientSessionOptions,\n): void {\n validateCloudSandboxOptions(options.sandbox, \"sandbox\");\n if (options.environment !== undefined && options.sandbox !== undefined) {\n throw new Error(`Constellation ${action}() cannot specify both environment and sandbox options.`);\n }\n if (options.systemPrompt !== undefined) {\n throw new Error(`Constellation ${action}() cannot rewrite an existing agent's systemPrompt from the SDK adapter yet.`);\n }\n if (options.allowedTools !== undefined || options.disallowedTools !== undefined) {\n throw new Error(`Constellation ${action}() has not wired allowedTools/disallowedTools to the remote device protocol yet.`);\n }\n if (options.systemInfoReminder !== undefined) {\n throw new Error(`Constellation ${action}() has not wired systemInfoReminder to the remote device protocol yet.`);\n }\n if (options.dreaming?.behavior !== undefined) {\n throw new Error(`Constellation ${action}() does not yet support dreaming.behavior overrides.`);\n }\n if ((options as { memfsStartup?: unknown }).memfsStartup !== undefined) {\n throw new Error(`Constellation ${action}() does not support memfsStartup.`);\n }\n if (options.includePartialMessages !== undefined) {\n throw new Error(`Constellation ${action}() streams Remote Client deltas directly; includePartialMessages is not a separate toggle.`);\n }\n}\n\nexport class CloudEnvironmentSession extends RemoteClientSessionCore {\n private connectionId: string | null = null;\n private removeExternalToolHandler: (() => void) | null = null;\n private removeControlRequestHandler: (() => void) | null = null;\n private externalTools = new Map<string, AnyAgentTool>();\n private managedSandbox: ManagedCloudSandbox | null = null;\n private sandboxRefreshTimer: ReturnType<typeof setInterval> | null = null;\n private sandboxRefreshInFlight: Promise<void> | null = null;\n private sandboxLifecycleClosing = false;\n private attachedRepositoryIds = new Set<string>();\n private readonly cloudMode: CloudSessionMode;\n\n constructor(\n private readonly cloudOptions: LettaCodeCloudClientOptions,\n mode: CloudSessionMode,\n ) {\n super(mode, {\n label: \"cloud\",\n requestTimeoutMs: cloudOptions.requestTimeoutMs ?? DEFAULT_TURN_TIMEOUT_MS,\n });\n this.cloudMode = mode;\n const tools = mode.options.tools;\n this.externalTools = externalToolsByName(tools);\n }\n\n protected override async initializeRuntimeController(): Promise<RuntimeSessionInit> {\n const resolved = await this.resolveRuntime();\n const connection = await this.resolveConnectionForRuntime(resolved.runtime);\n this.connectionId = connection.connectionId;\n\n const apiKey = getCloudApiKey(this.cloudOptions);\n const url = buildCloudStatusWebSocketUrl({\n apiBaseUrl: this.cloudOptions.apiBaseUrl,\n connectionId: connection.connectionId,\n agentId: resolved.runtime.agent_id,\n conversationId: resolved.runtime.conversation_id,\n apiKey,\n authMode: this.cloudOptions.webSocketAuth ?? \"header\",\n });\n const client = createAppServerClient({\n url,\n WebSocket: createCloudStatusWebSocketConstructor({\n cloudOptions: this.cloudOptions,\n runtime: resolved.runtime,\n }),\n requestTimeoutMs: this.cloudOptions.requestTimeoutMs ?? DEFAULT_TURN_TIMEOUT_MS,\n });\n this.removeControlRequestHandler = registerAppServerControlRequestHandler({\n client,\n getRuntime: () => this.runtime,\n getOptions: () => this.currentOptions(),\n });\n if (this.externalTools.size > 0) {\n this.removeExternalToolHandler = client.onExternalToolCall(\n createExternalToolCallHandler(this.externalTools),\n );\n }\n\n try {\n await client.connect();\n const response = await this.startCloudRuntime(client, resolved.runtime);\n if (!response.success || !response.runtime) {\n throw new Error(response.error ?? \"Failed to start Cloud status runtime\");\n }\n\n const tools = agentToolNames(response.agent);\n const skillSources = this.currentOptions().skillSources;\n return {\n controller: new AppServerRuntimeController(client, {\n requestTimeoutMs: this.cloudOptions.requestTimeoutMs ?? DEFAULT_TURN_TIMEOUT_MS,\n }),\n runtime: response.runtime,\n model: typeof response.agent?.model === \"string\" ? response.agent.model : \"\",\n modelSettings: response.agent?.model_settings ?? null,\n ...(tools !== undefined ? { tools } : {}),\n ...(skillSources !== undefined ? { skillSources: [...skillSources] } : {}),\n };\n } catch (error) {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n client.close();\n await this.cleanupManagedSandbox();\n await this.cleanupSessionRepositories(resolved.runtime.agent_id);\n throw error;\n }\n }\n\n private async startCloudRuntime(\n client: AppServerClient,\n runtime: RuntimeScope,\n ): Promise<CloudRuntimeStartResponse> {\n const options = this.currentOptions();\n const command: Record<string, unknown> = {\n client_info: {\n name: SDK_AGENT_ORIGIN,\n title: \"Letta Agent SDK\",\n },\n agent_id: runtime.agent_id,\n conversation_id: runtime.conversation_id,\n recover_approvals: false,\n force_device_status: true,\n };\n\n const mode = mapPermissionMode(options.permissionMode);\n if (mode) command.mode = mode;\n if (options.cwd !== undefined) command.cwd = options.cwd;\n if (options.skillSources !== undefined) {\n command.skill_sources = [...new Set(options.skillSources)];\n }\n const groups = externalToolGroups(options.tools);\n if (groups) command.external_tools = groups;\n\n return (await client.runtimeStart(\n command as Parameters<AppServerClient[\"runtimeStart\"]>[0],\n )) as unknown as CloudRuntimeStartResponse;\n }\n\n protected override async afterRuntimeInitialized(): Promise<void> {\n if (!this.controller || !this.runtime) return;\n this.controller.send({\n type: \"sync\",\n runtime: this.runtime,\n recover_approvals: true,\n force_device_status: true,\n });\n }\n\n protected override async beforeTurn(): Promise<void> {\n const sandbox = this.managedSandbox;\n if (!sandbox) return;\n await this.refreshManagedSandbox(sandbox);\n }\n\n protected override onCoreClose(): void {\n this.removeExternalToolHandler?.();\n this.removeExternalToolHandler = null;\n this.removeControlRequestHandler?.();\n this.removeControlRequestHandler = null;\n void this.cleanupManagedSandbox();\n if (this.runtime?.agent_id) void this.cleanupSessionRepositories(this.runtime.agent_id);\n }\n\n private async resolveRuntime(): Promise<{ runtime: RuntimeScope }> {\n let agentId = this.cloudMode.agentId;\n let conversationId = this.cloudMode.conversationId;\n\n if (!agentId && conversationId) {\n const conversation = await this.retrieveConversation(conversationId);\n if (!conversation.agent_id) {\n throw new Error(`Cloud conversation ${conversationId} did not include an agent id.`);\n }\n agentId = conversation.agent_id;\n }\n\n if (!agentId) {\n throw new Error(\n \"Constellation createSession()/resumeSession() requires an agent id or conversation id.\",\n );\n }\n\n await this.attachSessionRepositories(agentId);\n\n if (this.cloudMode.newConversation) {\n const conversation = await this.createConversation(agentId);\n conversationId = conversation.id;\n } else if (this.cloudMode.defaultConversation) {\n conversationId = \"default\";\n }\n\n if (!conversationId) {\n throw new Error(\n \"Constellation createSession()/resumeSession() requires an agent id or conversation id.\",\n );\n }\n\n return { runtime: { agent_id: agentId, conversation_id: conversationId } };\n }\n\n private async attachSessionRepositories(agentId: string): Promise<void> {\n const resources = this.repositoryResources();\n if (resources.length === 0) return;\n\n const existing = await this.listAgentRepositories(agentId);\n const existingIds = new Set(existing.map((repository) => repository.id));\n\n try {\n for (const resource of resources) {\n if (existingIds.has(resource.repositoryId) || this.attachedRepositoryIds.has(resource.repositoryId)) {\n continue;\n }\n await this.linkAgentRepository(agentId, resource.repositoryId);\n await this.waitForAgentRepository(agentId, resource.repositoryId);\n this.attachedRepositoryIds.add(resource.repositoryId);\n }\n } catch (error) {\n await this.cleanupSessionRepositories(agentId);\n throw error;\n }\n }\n\n private async cleanupSessionRepositories(agentId: string): Promise<void> {\n const repositoryIds = [...this.attachedRepositoryIds];\n this.attachedRepositoryIds.clear();\n await Promise.all(repositoryIds.map(async (repositoryId) => {\n try {\n await this.unlinkAgentRepository(agentId, repositoryId);\n } catch {\n // Best-effort cleanup: only repositories this SDK session attached are removed.\n }\n }));\n }\n\n private repositoryResources(): RepositoryResource[] {\n const resources = this.cloudMode.options.resources ?? [];\n const seen = new Set<string>();\n const result: RepositoryResource[] = [];\n for (const resource of resources) {\n if (resource.type !== \"repository\") {\n throw new Error(`Unsupported Cloud session resource type: ${String(resource.type)}`);\n }\n if (typeof resource.repositoryId !== \"string\" || resource.repositoryId.length === 0) {\n throw new Error(\"Cloud session repository resources require repositoryId.\");\n }\n if (seen.has(resource.repositoryId)) continue;\n seen.add(resource.repositoryId);\n result.push(resource);\n }\n return result;\n }\n\n private async listAgentRepositories(agentId: string): Promise<CloudAgentRepository[]> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(agentId)}/repositories`,\n { headers: cloudHeaders(this.cloudOptions) },\n );\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud list agent repositories\");\n if (!body || typeof body !== \"object\") return [];\n const repositories = (body as Record<string, unknown>).repositories;\n return Array.isArray(repositories)\n ? repositories.filter((repository): repository is CloudAgentRepository => (\n repository !== null &&\n typeof repository === \"object\" &&\n typeof (repository as Record<string, unknown>).id === \"string\"\n ))\n : [];\n }\n\n private async waitForAgentRepository(agentId: string, repositoryId: string): Promise<void> {\n const deadline = Date.now() + DEFAULT_REPOSITORY_ATTACH_TIMEOUT_MS;\n while (true) {\n const repositories = await this.listAgentRepositories(agentId);\n if (repositories.some((repository) => repository.id === repositoryId)) return;\n if (Date.now() >= deadline) {\n throw new Error(`Cloud attach agent repository did not become visible for ${agentId}: ${repositoryId}`);\n }\n await sleep(DEFAULT_REPOSITORY_ATTACH_POLL_INTERVAL_MS);\n }\n }\n\n private async linkAgentRepository(agentId: string, repositoryId: string): Promise<void> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(agentId)}/repositories`,\n {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify({ repository_id: repositoryId }),\n },\n );\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud attach agent repository\");\n }\n\n private async unlinkAgentRepository(agentId: string, repositoryId: string): Promise<void> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(agentId)}/repositories/${encodeURIComponent(repositoryId)}`,\n { method: \"DELETE\", headers: cloudHeaders(this.cloudOptions) },\n );\n const body = await parseJsonResponse(response);\n if (response.status === 404) return;\n assertOkResponse(response, body, \"Cloud detach agent repository\");\n }\n\n private async createConversation(agentId: string): Promise<{ id: string; agent_id?: string }> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const url = new URL(`${baseUrl}/v1/conversations/`);\n url.searchParams.set(\"agent_id\", agentId);\n const response = await fetchImpl(url, {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify({}),\n });\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud createSession()\");\n if (!isCloudConversation(body)) {\n throw new Error(\"Cloud createSession() response did not include a conversation id.\");\n }\n return { id: body.id, agent_id: body.agent_id };\n }\n\n private async retrieveConversation(conversationId: string): Promise<{ id: string; agent_id?: string }> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/conversations/${encodeURIComponent(conversationId)}`,\n { headers: cloudHeaders(this.cloudOptions) },\n );\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud resumeSession()\");\n if (!isCloudConversation(body)) {\n throw new Error(`Cloud resumeSession() could not retrieve conversation ${conversationId}.`);\n }\n return { id: body.id, agent_id: body.agent_id };\n }\n\n private async resolveConnectionForRuntime(\n runtime: RuntimeScope,\n ): Promise<ResolvedCloudConnection> {\n const environment = this.effectiveEnvironment();\n const sandboxOptions = this.effectiveSandboxOptions();\n if (environment !== undefined) {\n if (sandboxOptions !== undefined) {\n throw new Error(\"Constellation sessions cannot specify both environment and sandbox options.\");\n }\n return this.resolveExplicitConnection(environment);\n }\n return this.createManagedSandboxConnection(runtime);\n }\n\n private async resolveExplicitConnection(\n environment: LettaCodeEnvironment,\n ): Promise<{ connectionId: string }> {\n const target = environmentToRemoteTarget(environment);\n const resolved = await this.remoteEnvironmentClient().resolveEnvironment(target);\n return { connectionId: resolved.connectionId };\n }\n\n private async createManagedSandboxConnection(\n runtime: RuntimeScope,\n ): Promise<ResolvedCloudConnection> {\n // Scope the managed sandbox to the conversation when one exists: the\n // server treats create-with-conversationId as create-or-resume, so\n // sessions of the same conversation share one sandbox and sessions of\n // different conversations stop contending for a single per-agent one.\n const conversationId =\n runtime.conversation_id && runtime.conversation_id !== \"default\"\n ? runtime.conversation_id\n : undefined;\n const sandbox = await this.createManagedSandbox(\n runtime.agent_id,\n conversationId,\n );\n this.managedSandbox = sandbox;\n\n if (this.sandboxLifecycleClosing) {\n await this.cleanupManagedSandbox();\n throw new Error(\"Cloud managed sandbox session closed during initialization.\");\n }\n\n try {\n await this.refreshManagedSandbox(sandbox);\n const connection = await this.waitForManagedSandboxConnection(sandbox);\n this.startManagedSandboxRefresh(sandbox);\n return { connectionId: connection.connectionId };\n } catch (error) {\n await this.cleanupManagedSandbox();\n throw error;\n }\n }\n\n private async createManagedSandbox(\n agentId: string,\n conversationId?: string,\n ): Promise<ManagedCloudSandbox> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(agentId)}/sandboxes`,\n {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify(conversationId ? { conversationId } : {}),\n },\n );\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud create managed sandbox\");\n if (!isCloudAgentSandbox(body)) {\n throw new Error(\"Cloud create managed sandbox response did not include sandbox connection details.\");\n }\n\n const responseConversationId =\n typeof body.conversationId === \"string\" ? body.conversationId : null;\n if (\n responseConversationId !== null &&\n responseConversationId !== conversationId\n ) {\n throw new Error(\n `Cloud managed sandbox response conversation mismatch: expected ${conversationId ?? \"none\"}, got ${responseConversationId}.`,\n );\n }\n\n const sandboxOptions = this.resolvedSandboxOptions();\n const ttlMinutes = sandboxOptions.ttlMinutes ?? DEFAULT_SANDBOX_TTL_MINUTES;\n const readyTimeoutMs = sandboxOptions.readyTimeoutMs\n ?? DEFAULT_SANDBOX_READY_TIMEOUT_MS;\n const readyPollIntervalMs = sandboxOptions.readyPollIntervalMs\n ?? DEFAULT_SANDBOX_READY_POLL_INTERVAL_MS;\n const defaultRefreshIntervalMs = Math.max(\n 1_000,\n Math.floor(ttlMinutes * 60_000 * 0.8),\n );\n\n return {\n agentId,\n conversationId: responseConversationId,\n sandboxId: body.sandboxId,\n deviceId: body.deviceId,\n connectionName: body.connectionName,\n ttlMinutes,\n readyTimeoutMs,\n readyPollIntervalMs,\n refreshIntervalMs: sandboxOptions.refreshIntervalMs ?? defaultRefreshIntervalMs,\n // Default to TTL cleanup: terminating on close kills a sandbox that\n // other sessions of the same conversation (or a reconnecting client)\n // may still be using; the server-side TTL bounds leaked sandboxes.\n terminateOnClose: sandboxOptions.terminateOnClose ?? false,\n };\n }\n\n private async refreshManagedSandbox(sandbox: ManagedCloudSandbox): Promise<void> {\n if (this.sandboxRefreshInFlight) {\n await this.sandboxRefreshInFlight;\n return;\n }\n\n this.sandboxRefreshInFlight = this.refreshManagedSandboxOnce(sandbox);\n try {\n await this.sandboxRefreshInFlight;\n } finally {\n this.sandboxRefreshInFlight = null;\n }\n }\n\n private async refreshManagedSandboxOnce(sandbox: ManagedCloudSandbox): Promise<void> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n\n if (sandbox.conversationId) {\n // Conversation-scoped sandboxes refresh by id — no \"latest active\"\n // indirection, so ownership changes are structurally impossible.\n const response = await fetchImpl(\n `${baseUrl}/v1/sandboxes/${encodeURIComponent(sandbox.sandboxId)}/refresh`,\n {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify({ ttlMinutes: sandbox.ttlMinutes }),\n },\n );\n if (response.status === 404) {\n await parseJsonResponse(response);\n // The current control and stream WebSockets are bound to this\n // sandbox's ephemeral connection id. Recreating only the sandbox would\n // leave both sockets targeting the dead connection, so surface a\n // pre-turn error and let the caller resume the same conversation with\n // a new SDK session.\n throw new CloudManagedSandboxExpiredError(\n sandbox.sandboxId,\n sandbox.conversationId,\n );\n }\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud refresh managed sandbox\");\n if (!isCloudAgentSandboxRefresh(body) || !body.success) {\n throw new Error(\"Cloud refresh managed sandbox response did not confirm refresh.\");\n }\n return;\n }\n\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(sandbox.agentId)}/sandboxes/refresh`,\n {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify({ ttlMinutes: sandbox.ttlMinutes }),\n },\n );\n const body = await parseJsonResponse(response);\n assertOkResponse(response, body, \"Cloud refresh managed sandbox\");\n if (!isCloudAgentSandboxRefresh(body) || !body.success) {\n throw new Error(\"Cloud refresh managed sandbox response did not confirm refresh.\");\n }\n if (body.sandboxId !== sandbox.sandboxId) {\n throw new CloudManagedSandboxOwnershipError(\n `Cloud managed sandbox ownership changed for agent ${sandbox.agentId}: expected ${sandbox.sandboxId}, got ${body.sandboxId}.`,\n );\n }\n }\n\n private async terminateManagedSandbox(sandbox: ManagedCloudSandbox): Promise<void> {\n const fetchImpl = getFetch(this.cloudOptions.fetch);\n const baseUrl = normalizeCloudApiBaseUrl(this.cloudOptions.apiBaseUrl);\n\n if (sandbox.conversationId) {\n // Terminate exactly this sandbox — the agent-scoped DELETE targets the\n // agent's \"latest active\" sandbox, which may not be ours.\n const response = await fetchImpl(\n `${baseUrl}/v1/sandboxes/${encodeURIComponent(sandbox.sandboxId)}/terminate`,\n {\n method: \"POST\",\n headers: cloudHeaders(this.cloudOptions),\n body: JSON.stringify({}),\n },\n );\n const body = await parseJsonResponse(response);\n if (response.status === 404) return;\n assertOkResponse(response, body, \"Cloud terminate managed sandbox\");\n return;\n }\n\n // Agent-scoped: refresh first so the ownership check confirms the\n // \"latest active\" sandbox the DELETE will target is still ours.\n await this.refreshManagedSandbox(sandbox);\n\n const response = await fetchImpl(\n `${baseUrl}/v1/agents/${encodeURIComponent(sandbox.agentId)}/sandboxes`,\n {\n method: \"DELETE\",\n headers: cloudHeaders(this.cloudOptions),\n },\n );\n const body = await parseJsonResponse(response);\n if (response.status === 404) return;\n assertOkResponse(response, body, \"Cloud terminate managed sandbox\");\n }\n\n private async waitForManagedSandboxConnection(\n sandbox: ManagedCloudSandbox,\n ): Promise<{ connectionId: string }> {\n const deadline = Date.now() + sandbox.readyTimeoutMs;\n let lastError: unknown;\n\n while (true) {\n try {\n const resolved = await this.remoteEnvironmentClient().resolveEnvironment({\n deviceId: sandbox.deviceId,\n });\n return { connectionId: resolved.connectionId };\n } catch (error) {\n lastError = error;\n if (!isRetryableManagedSandboxResolveError(error) || Date.now() >= deadline) {\n break;\n }\n const remainingMs = Math.max(0, deadline - Date.now());\n await sleep(Math.min(sandbox.readyPollIntervalMs, remainingMs));\n }\n }\n\n const detail = lastError instanceof Error ? lastError.message : String(lastError);\n throw new Error(\n `Cloud managed sandbox ${sandbox.sandboxId} did not come online within ${sandbox.readyTimeoutMs}ms: ${detail}`,\n );\n }\n\n private startManagedSandboxRefresh(sandbox: ManagedCloudSandbox): void {\n this.stopManagedSandboxRefresh();\n this.sandboxRefreshTimer = setInterval(() => {\n void this.refreshManagedSandbox(sandbox).catch((error) => {\n if (\n error instanceof CloudManagedSandboxOwnershipError ||\n error instanceof CloudManagedSandboxExpiredError\n ) {\n this.stopManagedSandboxRefresh();\n }\n });\n }, sandbox.refreshIntervalMs);\n (this.sandboxRefreshTimer as { unref?: () => void }).unref?.();\n }\n\n private stopManagedSandboxRefresh(): void {\n if (!this.sandboxRefreshTimer) return;\n clearInterval(this.sandboxRefreshTimer);\n this.sandboxRefreshTimer = null;\n }\n\n private async cleanupManagedSandbox(): Promise<void> {\n this.sandboxLifecycleClosing = true;\n this.stopManagedSandboxRefresh();\n const sandbox = this.managedSandbox;\n this.managedSandbox = null;\n\n // Do not race termination against a refresh already in flight. In\n // particular, this ensures cleanup observes the final refresh outcome\n // before issuing the by-id terminate request.\n try {\n await this.sandboxRefreshInFlight;\n } catch {\n // Expiration/refresh failures do not prevent best-effort cleanup.\n }\n\n if (!sandbox || !sandbox.terminateOnClose) return;\n try {\n await this.terminateManagedSandbox(sandbox);\n } catch {\n // Best-effort cleanup: Cloud TTL still bounds leaked managed sandboxes.\n }\n }\n\n private remoteEnvironmentClient(): RemoteEnvironmentClient {\n return new RemoteEnvironmentClient({\n baseUrl: this.cloudOptions.apiBaseUrl,\n apiKey: getCloudApiKey(this.cloudOptions),\n headers: this.cloudOptions.headers,\n fetch: this.cloudOptions.fetch,\n });\n }\n\n private effectiveEnvironment(): LettaCodeEnvironment | undefined {\n const modeEnvironment = this.mode.kind === \"session\"\n ? this.mode.options.environment\n : undefined;\n return modeEnvironment ?? this.cloudOptions.environment;\n }\n\n private effectiveSandboxOptions(): LettaCodeCloudSandboxOptions | undefined {\n const modeSandbox = this.mode.kind === \"session\"\n ? this.mode.options.sandbox\n : undefined;\n return modeSandbox ?? this.cloudOptions.sandbox;\n }\n\n private resolvedSandboxOptions(): LettaCodeCloudSandboxOptions {\n return this.effectiveSandboxOptions() ?? {};\n }\n}\n",
16
16
  "/**\n * SDK Validation\n *\n * Validates user-provided options before spawning the CLI.\n */\n\nimport type { \n CreateSessionOptions,\n CreateAgentOptions,\n MemoryItem, \n CreateBlock,\n SystemPromptPreset,\n SkillSource,\n DreamingOptions,\n} from \"./types.js\";\n\nconst VALID_SKILL_SOURCES: SkillSource[] = [\n \"bundled\",\n \"global\",\n \"agent\",\n \"project\",\n];\n\nconst VALID_REASONING_EFFORTS = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n] as const;\n\n/**\n * Extract block labels from memory items.\n */\nfunction getBlockLabels(memory: MemoryItem[]): string[] {\n return memory\n .map((item) => {\n if (typeof item === \"string\") return item; // preset name\n if (\"label\" in item) return (item as CreateBlock).label; // CreateBlock\n return null; // blockId - no label to check\n })\n .filter((label): label is string => label !== null);\n}\n\nfunction validateApprovalRecoveryOptions(options: CreateSessionOptions): void {\n if (\n options.maxApprovalRecoveryAttempts !== undefined &&\n (!Number.isInteger(options.maxApprovalRecoveryAttempts) ||\n options.maxApprovalRecoveryAttempts < 0)\n ) {\n throw new Error(\n \"Invalid maxApprovalRecoveryAttempts. Expected a non-negative integer.\"\n );\n }\n\n if (\n options.approvalRecoveryTimeoutMs !== undefined &&\n (!Number.isInteger(options.approvalRecoveryTimeoutMs) ||\n options.approvalRecoveryTimeoutMs <= 0)\n ) {\n throw new Error(\n \"Invalid approvalRecoveryTimeoutMs. Expected a positive integer.\"\n );\n }\n}\n\nfunction validateRemovedSessionOptions(options: CreateSessionOptions): void {\n if ((options as { memfsStartup?: unknown }).memfsStartup !== undefined) {\n throw new Error(\n \"memfsStartup is not supported by the SDK.\",\n );\n }\n}\n\n/**\n * Validate systemPrompt preset value.\n */\nfunction validateSystemPromptPreset(preset: string): void {\n const validPresets = [\n \"default\",\n \"letta-claude\",\n \"letta-codex\",\n \"letta-gemini\",\n \"claude\",\n \"codex\",\n \"gemini\",\n ];\n if (!validPresets.includes(preset)) {\n throw new Error(\n `Invalid system prompt preset '${preset}'. ` +\n `Valid presets: ${validPresets.join(\", \")}`\n );\n }\n}\n\nfunction validateSkillSources(sources: SkillSource[] | undefined): void {\n if (sources === undefined) {\n return;\n }\n\n for (const source of sources) {\n if (!VALID_SKILL_SOURCES.includes(source)) {\n throw new Error(\n `Invalid skill source '${source}'. Valid values: ${VALID_SKILL_SOURCES.join(\", \")}`\n );\n }\n }\n}\n\nfunction validateDreamingOptions(dreaming: DreamingOptions | undefined): void {\n if (dreaming === undefined) {\n return;\n }\n\n if (\n dreaming.trigger !== undefined &&\n ![\"off\", \"step-count\", \"compaction-event\"].includes(dreaming.trigger)\n ) {\n throw new Error(\n `Invalid dreaming.trigger '${String(dreaming.trigger)}'. Valid values: off, step-count, compaction-event`\n );\n }\n\n if (\n dreaming.behavior !== undefined &&\n ![\"reminder\", \"auto-launch\"].includes(dreaming.behavior)\n ) {\n throw new Error(\n `Invalid dreaming.behavior '${String(dreaming.behavior)}'. Valid values: reminder, auto-launch`\n );\n }\n\n if (\n dreaming.stepCount !== undefined &&\n (!Number.isInteger(dreaming.stepCount) || dreaming.stepCount <= 0)\n ) {\n throw new Error(\n \"Invalid dreaming.stepCount. Expected a positive integer.\"\n );\n }\n}\n\nfunction validateReasoningEffort(value: unknown): void {\n if (value === undefined) return;\n if (\n typeof value !== \"string\" ||\n !VALID_REASONING_EFFORTS.includes(value as (typeof VALID_REASONING_EFFORTS)[number])\n ) {\n throw new Error(\n `Invalid reasoningEffort '${String(value)}'. Valid values: ${VALID_REASONING_EFFORTS.join(\", \")}`\n );\n }\n}\n\n/**\n * Validate CreateSessionOptions (used by createSession and resumeSession).\n */\nexport function validateCreateSessionOptions(options: CreateSessionOptions): void {\n // Validate systemPrompt preset if provided\n if (options.systemPrompt !== undefined) {\n validateSystemPromptPreset(options.systemPrompt);\n }\n\n validateSkillSources(options.skillSources);\n validateReasoningEffort(options.reasoningEffort);\n validateDreamingOptions(options.dreaming);\n validateApprovalRecoveryOptions(options);\n validateRemovedSessionOptions(options);\n}\n\n/**\n * Validate CreateAgentOptions (used by createAgent).\n */\nexport function validateCreateAgentOptions(options: CreateAgentOptions): void {\n // Validate memory/persona consistency\n if (options.memory !== undefined) {\n const blockLabels = getBlockLabels(options.memory);\n\n if (options.persona !== undefined && !blockLabels.includes(\"persona\")) {\n throw new Error(\n \"Cannot set 'persona' value - block not included in 'memory'. \" +\n \"Either add 'persona' to memory array or remove the persona option.\"\n );\n }\n\n if (options.human !== undefined && !blockLabels.includes(\"human\")) {\n throw new Error(\n \"Cannot set 'human' value - block not included in 'memory'. \" +\n \"Either add 'human' to memory array or remove the human option.\"\n );\n }\n }\n\n // Validate systemPrompt preset if provided as preset object\n if (\n options.systemPrompt !== undefined &&\n typeof options.systemPrompt === \"object\"\n ) {\n validateSystemPromptPreset(options.systemPrompt.preset);\n } else if (\n options.systemPrompt !== undefined &&\n typeof options.systemPrompt === \"string\"\n ) {\n // Check if it's a preset name (if so, validate it)\n const validPresets = [\n \"default\",\n \"letta-claude\",\n \"letta-codex\",\n \"letta-gemini\",\n \"claude\",\n \"codex\",\n \"gemini\",\n ] as const;\n if (validPresets.includes(options.systemPrompt as SystemPromptPreset)) {\n validateSystemPromptPreset(options.systemPrompt);\n }\n // If not a preset, it's a custom string - no validation needed\n }\n\n validateSkillSources(options.skillSources);\n validateDreamingOptions(options.dreaming);\n}\n",
17
17
  "import { Session } from \"./session.js\";\nimport { RepositoriesClient } from \"./repositories.js\";\nimport {\n AppServerSession,\n assertRemoteSessionOptionsSupported,\n} from \"./app-server-session.js\";\nimport {\n CloudEnvironmentSession,\n assertCloudSessionOptionsSupported,\n createCloudAgent,\n validateCloudClientOptions,\n} from \"./cloud-session.js\";\nimport type {\n CreateAgentOptions,\n CreateSessionOptions,\n LettaCodeBackend,\n LettaCodeClientOptions,\n LettaCodeClientSessionOptions,\n LettaCodeEnvironment,\n LettaCodeRemoteClientOptions,\n LettaCodeLocalClientOptions,\n LettaCodeCloudClientOptions,\n LettaCodeSession,\n SDKResultMessage,\n SendMessage,\n} from \"./types.js\";\nimport {\n validateCreateAgentOptions,\n validateCreateSessionOptions,\n} from \"./validation.js\";\n\nconst VALID_BACKENDS = new Set<LettaCodeBackend>([\n \"local\",\n \"remote\",\n \"cloud\",\n]);\n\nfunction isLettaCodeBackend(value: string): value is LettaCodeBackend {\n return VALID_BACKENDS.has(value as LettaCodeBackend);\n}\n\nfunction getOptionsEnvironment(\n options: LettaCodeClientOptions,\n): LettaCodeEnvironment | undefined {\n if (\"environment\" in options) {\n return options.environment;\n }\n return undefined;\n}\n\nfunction stripCloudExecutionOptions(\n options: LettaCodeClientSessionOptions,\n): CreateSessionOptions {\n const sessionOptions = { ...options };\n delete sessionOptions.environment;\n delete sessionOptions.sandbox;\n return sessionOptions;\n}\n\nfunction hasRepositoryResources(options: LettaCodeClientSessionOptions): boolean {\n return options.resources !== undefined && options.resources.length > 0;\n}\n\nfunction hasCreateAgentEnvironment(options: CreateAgentOptions): boolean {\n return \"environment\" in (options as Record<string, unknown>);\n}\n\nfunction hasExplicitCreateAgentModel(options: CreateAgentOptions): boolean {\n return typeof options.model === \"string\" && options.model.trim().length > 0;\n}\n\nfunction looksLikeConversationId(id: string): boolean {\n return id.startsWith(\"conv-\") || id.startsWith(\"local-conv-\");\n}\n\ntype TurnSession = LettaCodeSession & {\n runTurn(message: SendMessage): Promise<SDKResultMessage>;\n};\n\n/**\n * Top-level Letta Agent SDK client.\n *\n * `backend` selects how the SDK reaches or runs the Letta Code harness.\n * `local` spawns an SDK-owned Letta Code app-server and speaks the websocket\n * protocol by default, with an explicit stdio fallback for legacy flows.\n * `remote` connects to a user-managed Letta Code app-server websocket endpoint.\n * `cloud` uses agents hosted on Constellation, with an explicit remote\n * environment or SDK-managed sandbox.\n */\nexport class LettaAgentClient {\n readonly backend: LettaCodeBackend;\n readonly environment: LettaCodeEnvironment | undefined;\n private readonly options: LettaCodeClientOptions;\n private repositoriesClient: RepositoriesClient | null = null;\n\n constructor(options: LettaCodeClientOptions = {}) {\n const backend = options.backend ?? \"local\";\n if (!isLettaCodeBackend(backend)) {\n throw new Error(\n `Invalid Letta Code backend '${String(backend)}'. Valid values: local, remote, cloud.`,\n );\n }\n\n this.backend = backend;\n this.environment = getOptionsEnvironment(options);\n this.options = options;\n\n if (this.backend === \"local\" && this.environment !== undefined) {\n throw new Error(\n 'LettaAgentClient environment is only valid with backend: \"cloud\".',\n );\n }\n if (this.backend === \"remote\" && this.environment !== undefined) {\n throw new Error(\n 'LettaAgentClient environment is only valid with backend: \"cloud\"; remote url selects the app-server runtime.',\n );\n }\n if (this.backend !== \"cloud\" && (options as { sandbox?: unknown }).sandbox !== undefined) {\n throw new Error('LettaAgentClient sandbox options are only valid with backend: \"cloud\".');\n }\n\n if (this.backend === \"local\") {\n const localOptions = options as LettaCodeLocalClientOptions;\n if (\n localOptions.transport !== undefined &&\n localOptions.transport !== \"app-server\" &&\n localOptions.transport !== \"stdio\"\n ) {\n throw new Error(\"Invalid local transport. Valid values: app-server, stdio.\");\n }\n const requestTimeoutMs = localOptions.appServer?.requestTimeoutMs;\n if (\n requestTimeoutMs !== undefined &&\n (!Number.isInteger(requestTimeoutMs) || requestTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid appServer.requestTimeoutMs. Expected a positive integer.\");\n }\n const startupTimeoutMs = localOptions.appServer?.startupTimeoutMs;\n if (\n startupTimeoutMs !== undefined &&\n (!Number.isInteger(startupTimeoutMs) || startupTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid appServer.startupTimeoutMs. Expected a positive integer.\");\n }\n }\n\n if (this.backend === \"remote\") {\n if (!(\"url\" in options) || typeof options.url !== \"string\" || options.url.length === 0) {\n throw new Error(\"LettaAgentClient remote backend requires a non-empty url.\");\n }\n if (\n options.requestTimeoutMs !== undefined &&\n (!Number.isInteger(options.requestTimeoutMs) || options.requestTimeoutMs <= 0)\n ) {\n throw new Error(\"Invalid requestTimeoutMs. Expected a positive integer.\");\n }\n }\n\n if (this.backend === \"cloud\") {\n validateCloudClientOptions(options as LettaCodeCloudClientOptions);\n }\n }\n\n /**\n * Create a new Letta Code agent with a default conversation.\n *\n * Environment/device selection is intentionally not part of the agent payload;\n * it belongs to the client/session execution context.\n */\n get repositories(): RepositoriesClient {\n return this.getRepositoriesClient();\n }\n\n async createAgent(options: CreateAgentOptions = {}): Promise<string> {\n if (hasCreateAgentEnvironment(options)) {\n throw new Error(\n \"createAgent() does not accept environment. Set a client default or pass environment to resumeSession()/createSession().\",\n );\n }\n\n validateCreateAgentOptions(options);\n\n if (this.backend === \"remote\") {\n const session = new AppServerSession(this.remoteOptions(), {\n kind: \"create-agent\",\n options,\n });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n if (this.backend === \"cloud\") {\n if (!hasExplicitCreateAgentModel(options)) {\n throw new Error(\n 'Constellation createAgent() requires an explicit model. Pass model in createAgent({ model: \"provider/model\" }).',\n );\n }\n return createCloudAgent(this.cloudOptions(), options);\n }\n this.assertLocalBackend(\"createAgent\");\n if (!this.useLegacyLocalStdio()) {\n const session = new AppServerSession(this.localAppServerOptions(), {\n kind: \"create-agent\",\n options,\n });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n const session = new Session({ ...options, createOnly: true });\n const initMsg = await session.initialize();\n session.close();\n return initMsg.agentId;\n }\n\n /**\n * Create a new conversation/session.\n *\n * Without an agent id, this uses the default/LRU agent, matching the legacy\n * top-level createSession() helper.\n */\n createSession(\n agentIdOrOptions?: string | LettaCodeClientSessionOptions,\n options: LettaCodeClientSessionOptions = {},\n ): LettaCodeSession {\n const agentId =\n typeof agentIdOrOptions === \"string\" ? agentIdOrOptions : undefined;\n const resolvedOptions =\n typeof agentIdOrOptions === \"string\" ? options : (agentIdOrOptions ?? {});\n\n this.assertSessionBackend(\"createSession\", resolvedOptions);\n const sessionOptions = stripCloudExecutionOptions(resolvedOptions);\n validateCreateSessionOptions(sessionOptions);\n\n if (this.backend === \"remote\") {\n if (!agentId) {\n throw new Error(\n \"App-server createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (this.backend === \"cloud\") {\n if (!agentId) {\n throw new Error(\n \"Constellation createSession() requires an agent id. Call createAgent() first or pass an agent id.\",\n );\n }\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (!this.useLegacyLocalStdio() && agentId) {\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n agentId,\n newConversation: true,\n options: resolvedOptions,\n });\n }\n if (agentId) {\n return new Session({ ...sessionOptions, agentId, newConversation: true });\n }\n return new Session({ ...sessionOptions, newConversation: true });\n }\n\n /**\n * Resume an existing agent default conversation or a specific conversation.\n *\n * `options.environment` overrides the client's default execution target for\n * Constellation sessions. Remote app-server URLs already select the runtime.\n */\n resumeSession(\n id: string,\n options: LettaCodeClientSessionOptions = {},\n ): LettaCodeSession {\n this.assertSessionBackend(\"resumeSession\", options);\n const sessionOptions = stripCloudExecutionOptions(options);\n validateCreateSessionOptions(sessionOptions);\n\n if (this.backend === \"remote\") {\n if (looksLikeConversationId(id)) {\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new AppServerSession(this.remoteOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (this.backend === \"cloud\") {\n if (looksLikeConversationId(id)) {\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new CloudEnvironmentSession(this.cloudOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (!this.useLegacyLocalStdio()) {\n if (looksLikeConversationId(id)) {\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n conversationId: id,\n options,\n });\n }\n return new AppServerSession(this.localAppServerOptions(), {\n kind: \"session\",\n agentId: id,\n defaultConversation: true,\n options,\n });\n }\n if (looksLikeConversationId(id)) {\n return new Session({ ...sessionOptions, conversationId: id });\n }\n return new Session({\n ...sessionOptions,\n agentId: id,\n defaultConversation: true,\n });\n }\n\n /** One-shot prompt convenience helper using a new conversation. */\n async prompt(\n message: SendMessage,\n agentId?: string,\n options: LettaCodeClientSessionOptions = {},\n ): Promise<SDKResultMessage> {\n const session = agentId\n ? this.createSession(agentId, options)\n : this.createSession(options);\n\n try {\n return await (session as TurnSession).runTurn(message);\n } finally {\n session.close();\n }\n }\n\n private assertLocalBackend(action: string): void {\n if (this.backend === \"local\") {\n return;\n }\n\n throw new Error(\n `LettaAgentClient backend '${this.backend}' is not implemented yet. ${action} currently supports backend 'local' only.`,\n );\n }\n\n private assertSessionBackend(\n action: string,\n options: LettaCodeClientSessionOptions,\n ): void {\n const effectiveEnvironment = options.environment ?? this.environment;\n if (this.backend === \"local\") {\n if (effectiveEnvironment !== undefined) {\n throw new Error(\n `${action}() environment overrides are only valid with backend: \"cloud\".`,\n );\n }\n if (options.sandbox !== undefined) {\n throw new Error(`${action}() sandbox options are only valid with backend: \"cloud\".`);\n }\n if (hasRepositoryResources(options)) {\n throw new Error(`${action}() repository resources are only valid with backend: \"cloud\".`);\n }\n if (!this.useLegacyLocalStdio()) {\n assertRemoteSessionOptionsSupported(action, options);\n }\n return;\n }\n\n if (this.backend === \"remote\") {\n if (options.environment !== undefined) {\n throw new Error(\n `${action}() environment overrides are only valid with backend: \"cloud\"; remote url selects the app-server runtime.`,\n );\n }\n if (options.sandbox !== undefined) {\n throw new Error(`${action}() sandbox options are only valid with backend: \"cloud\"; remote url selects the app-server runtime.`);\n }\n if (hasRepositoryResources(options)) {\n throw new Error(`${action}() repository resources are only valid with backend: \"cloud\".`);\n }\n assertRemoteSessionOptionsSupported(action, options);\n return;\n }\n if (this.backend === \"cloud\") {\n const cloudOptions = this.cloudOptions();\n if (cloudOptions.environment !== undefined && options.sandbox !== undefined) {\n throw new Error(`Constellation ${action}() cannot specify sandbox options when the client has a default environment.`);\n }\n if (cloudOptions.sandbox !== undefined && options.environment !== undefined) {\n throw new Error(`Constellation ${action}() cannot specify an environment when the client has default sandbox options.`);\n }\n assertCloudSessionOptionsSupported(action, options);\n return;\n }\n throw new Error(\n `LettaAgentClient backend '${this.backend}' is not implemented yet. ${action} currently supports backend 'local' only.`,\n );\n }\n\n private useLegacyLocalStdio(): boolean {\n return (this.options as LettaCodeLocalClientOptions).transport === \"stdio\";\n }\n\n private localAppServerOptions() {\n const localOptions = this.options as LettaCodeLocalClientOptions;\n const appServer = localOptions.appServer;\n return {\n local: appServer?.url === undefined,\n localBackend: appServer?.harnessBackend ?? \"local\",\n ...(appServer?.url !== undefined ? { url: appServer.url } : {}),\n ...(appServer?.WebSocket !== undefined ? { WebSocket: appServer.WebSocket } : {}),\n ...(appServer?.requestTimeoutMs !== undefined\n ? { requestTimeoutMs: appServer.requestTimeoutMs }\n : {}),\n ...(appServer?.listen !== undefined ? { localListen: appServer.listen } : {}),\n ...(appServer?.startupTimeoutMs !== undefined\n ? { localStartupTimeoutMs: appServer.startupTimeoutMs }\n : {}),\n };\n }\n\n private remoteOptions(): LettaCodeRemoteClientOptions {\n if (this.backend !== \"remote\") {\n throw new Error(\"Remote options requested for non-remote backend.\");\n }\n return this.options as LettaCodeRemoteClientOptions;\n }\n\n private getRepositoriesClient(): RepositoriesClient {\n if (this.backend !== \"cloud\") {\n throw new Error('client.repositories is only available with backend: \"cloud\".');\n }\n this.repositoriesClient ??= new RepositoriesClient(this.cloudOptions());\n return this.repositoriesClient;\n }\n\n private cloudOptions(): LettaCodeCloudClientOptions {\n if (this.backend !== \"cloud\") {\n throw new Error('Constellation options requested for non-\"cloud\" backend.');\n }\n return this.options as LettaCodeCloudClientOptions;\n }\n}\n",
18
18
  "import type { SDKStreamEventPayload } from \"./types.js\";\n\nexport type StreamTextKind = \"assistant\" | \"reasoning\";\n\nexport interface StreamTextDelta {\n kind: StreamTextKind;\n text: string;\n}\n\nfunction extractTextFromContent(content: unknown): string | null {\n if (typeof content === \"string\") {\n return content;\n }\n\n if (Array.isArray(content)) {\n const pieces: string[] = [];\n for (const part of content) {\n if (typeof part === \"string\") {\n pieces.push(part);\n continue;\n }\n if (!part || typeof part !== \"object\") {\n continue;\n }\n const rec = part as Record<string, unknown>;\n if (typeof rec.text === \"string\") {\n pieces.push(rec.text);\n }\n }\n const joined = pieces.join(\"\");\n return joined.length > 0 ? joined : null;\n }\n\n if (content && typeof content === \"object\") {\n const rec = content as Record<string, unknown>;\n if (typeof rec.text === \"string\") {\n return rec.text;\n }\n }\n\n return null;\n}\n\n/**\n * Extract appendable assistant/reasoning text from a stream_event payload.\n *\n * Supports both shapes currently emitted by headless mode:\n * 1) content_block style: { type, delta: { text|reasoning } }\n * 2) message chunk style: { message_type: \"assistant_message\"|\"reasoning_message\", ... }\n */\nexport function extractStreamTextDelta(event: SDKStreamEventPayload): StreamTextDelta | null {\n if (!event || typeof event !== \"object\") {\n return null;\n }\n\n const rec = event as Record<string, unknown>;\n\n const maybeDelta = rec.delta;\n if (maybeDelta && typeof maybeDelta === \"object\") {\n const delta = maybeDelta as Record<string, unknown>;\n\n if (typeof delta.reasoning === \"string\" && delta.reasoning.length > 0) {\n return { kind: \"reasoning\", text: delta.reasoning };\n }\n\n if (typeof delta.text === \"string\" && delta.text.length > 0) {\n return { kind: \"assistant\", text: delta.text };\n }\n }\n\n const messageType = rec.message_type;\n if (messageType === \"reasoning_message\") {\n const reasoningText =\n typeof rec.reasoning === \"string\" ? rec.reasoning : extractTextFromContent(rec.content);\n if (reasoningText && reasoningText.length > 0) {\n return { kind: \"reasoning\", text: reasoningText };\n }\n }\n\n if (messageType === \"assistant_message\") {\n const assistantText = extractTextFromContent(rec.content);\n if (assistantText && assistantText.length > 0) {\n return { kind: \"assistant\", text: assistantText };\n }\n }\n\n return null;\n}\n",
19
19
  "/**\n * Tool Helpers\n * \n * Helper functions for creating tool results and parsing parameters.\n * Matches the API from pi-coding-agent.\n */\n\nimport type { AgentToolResult } from \"./types.js\";\n\n/**\n * Create a JSON tool result\n */\nexport function jsonResult(payload: unknown): AgentToolResult<unknown> {\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify(payload, null, 2),\n },\n ],\n details: payload,\n };\n}\n\n/**\n * Options for reading string parameters\n */\nexport interface StringParamOptions {\n required?: boolean;\n trim?: boolean;\n label?: string;\n allowEmpty?: boolean;\n}\n\n/**\n * Read a string parameter from tool args\n */\nexport function readStringParam(\n params: Record<string, unknown>,\n key: string,\n options?: StringParamOptions & { required: true },\n): string;\nexport function readStringParam(\n params: Record<string, unknown>,\n key: string,\n options?: StringParamOptions,\n): string | undefined;\nexport function readStringParam(\n params: Record<string, unknown>,\n key: string,\n options: StringParamOptions = {},\n): string | undefined {\n const { required = false, trim = true, label = key, allowEmpty = false } = options;\n const raw = params[key];\n if (typeof raw !== \"string\") {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n const value = trim ? raw.trim() : raw;\n if (!value && !allowEmpty) {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n return value;\n}\n\n/**\n * Read a number parameter from tool args\n */\nexport function readNumberParam(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean; label?: string; integer?: boolean } = {},\n): number | undefined {\n const { required = false, label = key, integer = false } = options;\n const raw = params[key];\n let value: number | undefined;\n if (typeof raw === \"number\" && Number.isFinite(raw)) {\n value = raw;\n } else if (typeof raw === \"string\") {\n const trimmed = raw.trim();\n if (trimmed) {\n const parsed = Number.parseFloat(trimmed);\n if (Number.isFinite(parsed)) value = parsed;\n }\n }\n if (value === undefined) {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n return integer ? Math.trunc(value) : value;\n}\n\n/**\n * Read a boolean parameter from tool args\n */\nexport function readBooleanParam(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean; label?: string } = {},\n): boolean | undefined {\n const { required = false, label = key } = options;\n const raw = params[key];\n if (typeof raw === \"boolean\") {\n return raw;\n }\n if (typeof raw === \"string\") {\n const lower = raw.toLowerCase().trim();\n if (lower === \"true\" || lower === \"1\" || lower === \"yes\") return true;\n if (lower === \"false\" || lower === \"0\" || lower === \"no\") return false;\n }\n if (required) throw new Error(`${label} required`);\n return undefined;\n}\n\n/**\n * Read a string array parameter from tool args\n */\nexport function readStringArrayParam(\n params: Record<string, unknown>,\n key: string,\n options: StringParamOptions = {},\n): string[] | undefined {\n const { required = false, label = key } = options;\n const raw = params[key];\n if (Array.isArray(raw)) {\n const values = raw\n .filter((entry): entry is string => typeof entry === \"string\")\n .map((entry) => entry.trim())\n .filter(Boolean);\n if (values.length === 0) {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n return values;\n }\n if (typeof raw === \"string\") {\n const value = raw.trim();\n if (!value) {\n if (required) throw new Error(`${label} required`);\n return undefined;\n }\n return [value];\n }\n if (required) throw new Error(`${label} required`);\n return undefined;\n}\n",
20
- "/**\n * Letta Agent SDK\n *\n * Programmatic control of Letta Code CLI with persistent agent memory.\n *\n * @example\n * ```typescript\n * import { LettaAgentClient, createAgent, createSession, resumeSession, prompt } from '@letta-ai/letta-agent-sdk';\n *\n * const client = new LettaAgentClient({ backend: 'local' });\n * const agentId = await client.createAgent();\n * const clientSession = client.resumeSession(agentId);\n *\n * // Start session with default agent + new conversation (like `letta`)\n * const session = createSession();\n *\n * // Create a new agent explicitly\n * const agentId = await createAgent();\n *\n * // Resume default conversation on an agent\n * const session = resumeSession(agentId);\n *\n * // Resume specific conversation\n * const session = resumeSession('conv-xxx');\n *\n * // Create new conversation on specific agent\n * const session = createSession(agentId);\n *\n * // One-shot prompt (uses default agent)\n * const result = await prompt('Hello');\n * const result = await prompt('Hello', agentId); // specific agent\n * ```\n */\n\nimport { Session } from \"./session.js\";\nimport { LettaAgentClient } from \"./client.js\";\nimport type {\n CreateSessionOptions,\n CreateAgentOptions,\n LettaCodeSession,\n SDKInitMessage,\n SDKResultMessage,\n SendMessage,\n} from \"./types.js\";\nimport { validateCreateSessionOptions, validateCreateAgentOptions } from \"./validation.js\";\n\n// Re-export types\nexport type {\n CreateSessionOptions,\n CreateAgentOptions,\n LettaCodeBackend,\n LettaCodeEnvironment,\n LettaCodeLocalClientOptions,\n LettaCodeLocalAppServerOptions,\n LettaCodeRemoteClientOptions,\n LettaCodeCloudClientOptions,\n LettaCodeClientOptions,\n LettaCodeClientSessionOptions,\n LettaCodeSession,\n LettaCodeSocketLike,\n LettaCodeSocketConstructor,\n SDKMessage,\n SDKInitMessage,\n SDKAssistantMessage,\n SDKToolCallMessage,\n SDKToolResultMessage,\n SDKReasoningMessage,\n SDKResultMessage,\n SDKErrorCode,\n SDKStreamEventMessage,\n SDKStreamEventPayload,\n SDKStreamEventDeltaPayload,\n SDKStreamEventMessagePayload,\n SDKUnknownStreamEventPayload,\n SDKErrorMessage,\n SDKRetryMessage,\n SDKQueueItem,\n SDKQueueUpdateMessage,\n SDKLoopStatusMessage,\n SDKProtocolMessage,\n SDKProtocolCommand,\n SendCommandOptions,\n RunTurnOptions,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SkillSource,\n DreamingOptions,\n DreamingTrigger,\n DreamingBehavior,\n EffectiveDreamingSettings,\n PermissionMode,\n ReasoningEffort,\n CanUseToolCallback,\n CanUseToolResponse,\n CanUseToolResponseAllow,\n CanUseToolResponseDeny,\n // Multimodal content types\n TextContent,\n ImageContent,\n MessageContentItem,\n SendMessage,\n // List messages API\n ListMessagesOptions,\n ListMessagesResult,\n ListModelsResult,\n LettaCodeModelEntry,\n UpdateModelOptions,\n UpdateModelResult,\n Repository,\n CreateRepositoryParams,\n ListRepositoriesParams,\n ListRepositoriesResult,\n RepositoryResource,\n RepositoryFileEntry,\n ListRepositoryFilesParams,\n ListRepositoryFilesResult,\n CreateRepositoryFileParams,\n RepositoryFile,\n UpdateRepositoryFileParams,\n RepositoryFileMutationResult,\n DeleteRepositoryFileParams,\n DeleteRepositoryFileResult,\n RepositoryVersion,\n ListRepositoryVersionsParams,\n GetRepositoryVersionParams,\n // Bootstrap API\n BootstrapStateOptions,\n BootstrapStateResult,\n // Tool types\n AgentTool,\n AgentToolResult,\n AgentToolResultContent,\n AgentToolUpdateCallback,\n AnyAgentTool,\n} from \"./types.js\";\n\nexport { Session } from \"./session.js\";\nexport { RepositoriesClient } from \"./repositories.js\";\nexport { LettaAgentClient } from \"./client.js\";\nexport { CloudManagedSandboxExpiredError } from \"./cloud-session.js\";\n\nexport { extractStreamTextDelta } from \"./stream-events.js\";\n\n// Tool helpers\nexport {\n jsonResult,\n readStringParam,\n readNumberParam,\n readBooleanParam,\n readStringArrayParam,\n} from \"./tool-helpers.js\";\n\n/**\n * Create a new agent with a default conversation.\n * Returns the agentId which can be used with resumeSession or createSession.\n *\n * @example\n * ```typescript\n * // Create agent with default settings.\n * const agentId = await createAgent();\n *\n * // Create agent with custom memory\n * const agentId = await createAgent({\n * memory: ['persona', 'project'],\n * persona: 'You are a helpful coding assistant',\n * model: 'claude-sonnet-4',\n * tags: ['project:docs']\n * });\n *\n * // Then resume the default conversation:\n * const session = resumeSession(agentId);\n * ```\n */\nexport async function createAgent(options: CreateAgentOptions = {}): Promise<string> {\n validateCreateAgentOptions(options);\n return new LettaAgentClient().createAgent(options);\n}\n\n/**\n * Create a new conversation (session).\n *\n * - Without agentId: uses default/LRU agent with new conversation (like `letta`)\n * - With agentId: creates new conversation on specified agent\n *\n * @example\n * ```typescript\n * // New conversation on default agent (like `letta`)\n * await using session = createSession();\n *\n * // New conversation on specific agent\n * await using session = createSession(agentId);\n * ```\n */\nexport function createSession(\n agentId?: string,\n options: CreateSessionOptions = {},\n): LettaCodeSession {\n validateCreateSessionOptions(options);\n if (agentId) {\n return new LettaAgentClient().createSession(agentId, options);\n }\n // The app-server runtime_start protocol requires an explicit agent id. Keep\n // the historical default/LRU-agent helper on the legacy stdio transport.\n return new LettaAgentClient({ backend: \"local\", transport: \"stdio\" }).createSession(options);\n}\n\n/**\n * Resume an existing session.\n *\n * - Pass an agent ID (agent-xxx) to resume the default conversation\n * - Pass a conversation ID (conv-xxx) to resume a specific conversation\n *\n * The default conversation always exists after createAgent, so you can:\n * `createAgent()` → `resumeSession(agentId)` without needing createSession first.\n *\n * @example\n * ```typescript\n * // Resume default conversation\n * await using session = resumeSession(agentId);\n *\n * // Resume specific conversation\n * await using session = resumeSession('conv-xxx');\n * ```\n */\nexport function resumeSession(\n id: string,\n options: CreateSessionOptions = {},\n): LettaCodeSession {\n validateCreateSessionOptions(options);\n return new LettaAgentClient().resumeSession(id, options);\n}\n\n/**\n * One-shot prompt convenience function.\n *\n * - Without agentId: uses default agent (like `letta -p`), new conversation\n * - With agentId: uses specific agent, new conversation\n * - Uses a short-lived session and returns the final turn result.\n *\n * @example\n * ```typescript\n * const result = await prompt('What is 2+2?'); // default agent\n * const result = await prompt('What is the capital of France?', agentId); // specific agent\n * ```\n */\ntype TurnSession = LettaCodeSession & {\n runTurn(message: SendMessage): Promise<SDKResultMessage>;\n};\n\ntype InitializableSession = LettaCodeSession & {\n initialize(): Promise<SDKInitMessage>;\n};\n\nexport async function prompt(\n message: string,\n agentId?: string\n): Promise<SDKResultMessage> {\n // Use default agent behavior (like letta -p) when no agentId specified\n const session = agentId\n ? createSession(agentId)\n : createSession();\n\n try {\n return await (session as TurnSession).runTurn(message);\n } finally {\n session.close();\n }\n}\n\n// ═══════════════════════════════════════════════════════════════\n// SESSIONLESS APIs\n// ═══════════════════════════════════════════════════════════════\n\nimport type { ListMessagesOptions, ListMessagesResult } from \"./types.js\";\n\n/**\n * Fetch conversation messages without requiring a pre-existing session.\n *\n * Creates a transient CLI subprocess, fetches the requested message page, and\n * closes the subprocess. Useful for prefetching conversation histories before\n * opening a full session (e.g. desktop sidebar warm-up).\n *\n * Routing follows the same agent/conversation semantics as session history:\n * - Pass a conv-xxx conversationId to read a specific conversation.\n * - Omit conversationId to read the agent's default conversation.\n *\n * @param agentId - Agent ID to fetch messages for.\n * @param options - Pagination / filtering options (same as ListMessagesOptions).\n *\n * @example\n * ```typescript\n * // Prefetch default conversation\n * const { messages } = await listMessagesDirect(agentId);\n *\n * // Prefetch a specific conversation\n * const { messages, hasMore, nextBefore } = await listMessagesDirect(agentId, {\n * conversationId: 'conv-abc',\n * limit: 20,\n * order: 'desc',\n * });\n * ```\n */\nexport async function listMessagesDirect(\n agentId: string,\n options: ListMessagesOptions = {},\n): Promise<ListMessagesResult> {\n // resumeSession uses --default which maps to the agent's default conversation.\n // The session is transient: we only need it long enough to list messages.\n const session = new LettaAgentClient().resumeSession(agentId, {\n permissionMode: \"unrestricted\",\n });\n await (session as InitializableSession).initialize();\n try {\n return await session.listMessages(options);\n } finally {\n session.close();\n }\n}\n\n// ═══════════════════════════════════════════════════════════════\n// IMAGE HELPERS\n// ═══════════════════════════════════════════════════════════════\n\nimport { readFileSync } from \"node:fs\";\nimport type { ImageContent } from \"./types.js\";\n\n/**\n * Create image content from a file path.\n * \n * @example\n * ```typescript\n * await session.send([\n * { type: \"text\", text: \"What's in this image?\" },\n * imageFromFile(\"./screenshot.png\")\n * ]);\n * ```\n */\nexport function imageFromFile(filePath: string): ImageContent {\n const data = readFileSync(filePath).toString(\"base64\");\n const ext = filePath.toLowerCase();\n const media_type: ImageContent[\"source\"][\"media_type\"] = \n ext.endsWith(\".png\") ? \"image/png\"\n : ext.endsWith(\".gif\") ? \"image/gif\"\n : ext.endsWith(\".webp\") ? \"image/webp\"\n : \"image/jpeg\";\n \n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n/**\n * Create image content from base64 data.\n * \n * @example\n * ```typescript\n * const base64 = fs.readFileSync(\"image.png\").toString(\"base64\");\n * await session.send([\n * { type: \"text\", text: \"Describe this\" },\n * imageFromBase64(base64, \"image/png\")\n * ]);\n * ```\n */\nexport function imageFromBase64(\n data: string,\n media_type: ImageContent[\"source\"][\"media_type\"] = \"image/png\"\n): ImageContent {\n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n/**\n * Create image content from a URL.\n * Fetches the image and converts to base64.\n * \n * @example\n * ```typescript\n * const img = await imageFromURL(\"https://example.com/image.png\");\n * await session.send([\n * { type: \"text\", text: \"What's this?\" },\n * img\n * ]);\n * ```\n */\nexport async function imageFromURL(url: string): Promise<ImageContent> {\n const response = await fetch(url);\n const buffer = await response.arrayBuffer();\n const data = Buffer.from(buffer).toString(\"base64\");\n \n // Detect media type from content-type header or URL\n const contentType = response.headers.get(\"content-type\");\n let media_type: ImageContent[\"source\"][\"media_type\"] = \"image/png\";\n \n if (contentType?.includes(\"jpeg\") || contentType?.includes(\"jpg\") || url.match(/\\.jpe?g$/i)) {\n media_type = \"image/jpeg\";\n } else if (contentType?.includes(\"gif\") || url.endsWith(\".gif\")) {\n media_type = \"image/gif\";\n } else if (contentType?.includes(\"webp\") || url.endsWith(\".webp\")) {\n media_type = \"image/webp\";\n }\n \n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n// ═══════════════════════════════════════════════════════════════\n// DREAMING — batch memory formation over recorded sessions\n// ═══════════════════════════════════════════════════════════════\n\nexport {\n dream,\n collectTranscripts,\n initDreamAgent,\n loadDreamAgent,\n packDreamBatches,\n getTrajectorySource,\n listTrajectorySourceTypes,\n AGGREGATOR_PERSONA,\n REFLECTION_SYSTEM_PROMPT,\n} from \"./dream/index.js\";\nexport type {\n DreamOptions,\n DreamResult,\n CollectTranscriptsOptions,\n Transcript,\n TranscriptSourceSpec,\n DreamBatch,\n DreamAggregationOutcome,\n DreamAgentConfig,\n DreamAgentGuardOptions,\n InitDreamAgentOptions,\n LoadedDreamAgent,\n BatchReflectionResult,\n DiscoveredSession,\n NormalizedRecord,\n NormalizedSession,\n TrajectorySource,\n MemfsOperation,\n MemfsOperationRule,\n MemfsStructure,\n MemfsWritePolicy,\n} from \"./dream/index.js\";\n",
21
- "// Dreaming: form durable agent memory from an explicit list of normalized\n// transcripts.\n//\n// collectTranscripts() -> initDreamAgent() -> dream()\n//\n// dream() deliberately does not discover or normalize source stores. The\n// caller supplies immutable transcript snapshots, which makes selection easy\n// to inspect and makes a run reproducible after its source files change.\n\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { LettaAgentClient } from \"../client.js\";\nimport {\n DEFAULT_BATCH_TOKEN_BUDGET,\n DEFAULT_MAX_SESSIONS_PER_BATCH,\n type DreamBatch,\n packDreamBatches,\n} from \"./batching.js\";\nimport {\n type DreamAggregationOutcome,\n runDreamAggregation,\n} from \"./aggregate.js\";\nimport {\n type BatchReflectionResult,\n runBatchReflections,\n} from \"./reflect.js\";\nimport {\n loadDreamAgent,\n prepareDreamAgentMemfs,\n saveDreamAgentConfig,\n} from \"./agent.js\";\nimport { loadDreamCursors, saveDreamCursors } from \"./cursors.js\";\nimport { AGGREGATOR_PERSONA } from \"./prompts.js\";\nimport { redactSensitiveText } from \"./redact.js\";\nimport { sessionKey } from \"./select.js\";\nimport type {\n DiscoveredSession,\n NormalizedSession,\n} from \"./types.js\";\nimport {\n estimateTokens,\n} from \"./types.js\";\nimport { validateRecords } from \"./normalize-core.js\";\nimport { ensureDreamWorkers } from \"./workers.js\";\n\nexport type { DreamBatch } from \"./batching.js\";\nexport type { DreamAggregationOutcome } from \"./aggregate.js\";\nexport type { BatchReflectionResult } from \"./reflect.js\";\nexport { packDreamBatches } from \"./batching.js\";\nexport {\n AGGREGATOR_PERSONA,\n REFLECTION_SYSTEM_PROMPT,\n} from \"./prompts.js\";\nexport { getTrajectorySource, listTrajectorySourceTypes } from \"./registry.js\";\nexport {\n type DreamAgentConfig,\n type DreamAgentGuardOptions,\n type InitDreamAgentOptions,\n type LoadedDreamAgent,\n initDreamAgent,\n loadDreamAgent,\n} from \"./agent.js\";\nexport {\n type MemfsOperation,\n type MemfsOperationRule,\n type MemfsStructure,\n type MemfsWritePolicy,\n} from \"./memfs.js\";\nexport {\n collectTranscripts,\n type CollectTranscriptsOptions,\n type Transcript,\n type TranscriptSourceSpec,\n} from \"./transcripts.js\";\nexport type {\n DiscoveredSession,\n NormalizedRecord,\n NormalizedSession,\n TrajectorySource,\n} from \"./types.js\";\n\nexport interface DreamOptions {\n client: LettaAgentClient;\n /** Initialized dream-agent id returned by initDreamAgent(). */\n agentId: string;\n /** Immutable normalized transcript snapshots to reflect on. */\n transcripts: readonly NormalizedSession[];\n /**\n * Additional caller instruction for the run, provided to every reflection\n * batch AND to the aggregation pass. The aggregator is the stage that\n * lands the final commit on the memory filesystem, so instructions about\n * maintaining specific files (e.g. a projected AGENTS.md) reach it too —\n * an instruction that steered only the batches would be unreliable.\n */\n instruction?: string;\n /** Override the harness agents directory (tests). */\n agentsDir?: string;\n /** Per-batch token budget (default 60k, measured on normalized content). */\n batchTokenBudget?: number;\n /** Maximum transcripts in one batch (default 10). */\n maxTranscriptsPerBatch?: number;\n /** Concurrent reflection sessions; default: every batch at once. */\n concurrency?: number;\n /** Preview cursor filtering and batch packing without running agents. */\n planOnly?: boolean;\n /**\n * Abort the run: in-flight reflector/aggregator sessions are closed, no\n * new batches start, the run's artifacts (clones, runRoot) are removed,\n * cursors are NOT advanced, and dream() rejects with the abort reason.\n * Shutting down a spawned app-server remains the caller's job via\n * client.close().\n */\n signal?: AbortSignal;\n log?: (line: string) => void;\n}\n\n/** Long-lived streams tracked incrementally between dreams. */\nconst CURSOR_TRACKED_HARNESSES = new Set([\"openhands\"]);\n\nexport type DreamResult =\n | { kind: \"nothing_to_dream\" }\n | {\n kind: \"plan\";\n transcripts: DiscoveredSession[];\n batches: DreamBatch[];\n }\n | {\n kind: \"completed\";\n runRoot: string;\n success: boolean;\n transcripts: DiscoveredSession[];\n batches: BatchReflectionResult[];\n aggregation: DreamAggregationOutcome;\n reflectorAgentId: string;\n aggregatorAgentId: string;\n };\n\nfunction dreamRunId(): string {\n const stamp = new Date()\n .toISOString()\n .replace(/[-:]/g, \"\")\n .replace(/\\..+/, \"\")\n .replace(\"T\", \"-\");\n return `dream-${stamp}`;\n}\n\nfunction orderedTranscripts(\n transcripts: readonly NormalizedSession[],\n): NormalizedSession[] {\n return [...transcripts].sort((a, b) =>\n a.session.startTime.localeCompare(b.session.startTime) ||\n a.session.endTime.localeCompare(b.session.endTime) ||\n a.session.harness.localeCompare(b.session.harness) ||\n a.session.sessionId.localeCompare(b.session.sessionId)\n );\n}\n\nfunction validateTranscripts(\n transcripts: readonly NormalizedSession[],\n): void {\n const seen = new Set<string>();\n for (const transcript of transcripts) {\n const key = sessionKey(transcript.session);\n if (seen.has(key)) {\n throw new Error(`dream(): duplicate transcript ${key}`);\n }\n seen.add(key);\n const problem = validateRecords(transcript.records);\n if (problem) {\n throw new Error(`dream(): invalid transcript ${key}: ${problem}`);\n }\n }\n}\n\nexport async function dream(options: DreamOptions): Promise<DreamResult> {\n const log = options.log ?? (() => {});\n options.signal?.throwIfAborted();\n validateTranscripts(options.transcripts);\n\n const agent = await loadDreamAgent(options.agentId, {\n ...(options.agentsDir ? { agentsDir: options.agentsDir } : {}),\n });\n const memoryDir = agent.memoryDir;\n const cursorDir = agent.stateDir;\n\n if (options.transcripts.length === 0) {\n return { kind: \"nothing_to_dream\" };\n }\n await prepareDreamAgentMemfs(agent);\n\n const cursors = await loadDreamCursors(cursorDir);\n const lastReflectedTsByKey = new Map<string, string>();\n const normalizedJsonByKey = new Map<string, string>();\n const measuredTranscripts: DiscoveredSession[] = [];\n\n for (const transcript of orderedTranscripts(options.transcripts)) {\n const session = transcript.session;\n const key = sessionKey(session);\n let records = [...transcript.records];\n\n if (CURSOR_TRACKED_HARNESSES.has(session.harness)) {\n const cursor = cursors[key];\n if (cursor) {\n const body = records.filter(\n (record) =>\n record.role !== \"meta\" &&\n (record.timestamp ?? \"\") > cursor.reflectedThrough,\n );\n if (body.length === 0) {\n log(\n `[cursor] ${key}: nothing new past ${cursor.reflectedThrough}; skipping`,\n );\n continue;\n }\n records = [\n ...records.filter((record) => record.role === \"meta\"),\n ...body,\n ];\n }\n const lastTs = [...records]\n .reverse()\n .find((record) => record.role !== \"meta\" && record.timestamp)\n ?.timestamp;\n if (lastTs) lastReflectedTsByKey.set(key, lastTs);\n }\n\n // Run artifacts and reflection prompts should never retain credentials\n // that a recorded shell/env command happened to print.\n const json = redactSensitiveText(JSON.stringify(records, null, 1));\n normalizedJsonByKey.set(key, json);\n measuredTranscripts.push({\n ...session,\n estTokens: estimateTokens(json),\n });\n }\n\n if (measuredTranscripts.length === 0) {\n return { kind: \"nothing_to_dream\" };\n }\n\n const batches = packDreamBatches(\n measuredTranscripts,\n options.batchTokenBudget ?? DEFAULT_BATCH_TOKEN_BUDGET,\n options.maxTranscriptsPerBatch ?? DEFAULT_MAX_SESSIONS_PER_BATCH,\n );\n if (options.planOnly) {\n return {\n kind: \"plan\",\n transcripts: measuredTranscripts,\n batches,\n };\n }\n\n options.signal?.throwIfAborted();\n await mkdir(agent.runsDir, { recursive: true });\n const runRoot = join(agent.runsDir, dreamRunId());\n await mkdir(runRoot, { recursive: true });\n\n // On abort: remove this run's artifacts (batch clones live under runRoot)\n // and reject. Cursors are never advanced (the success gate below already\n // requires a non-aborted, fully successful run).\n const throwIfAbortedWithCleanup = async () => {\n if (!options.signal?.aborted) return;\n log(\"[abort] dream aborted; removing run artifacts\");\n await rm(runRoot, { recursive: true, force: true }).catch(() => {});\n options.signal.throwIfAborted();\n };\n\n const workers = await ensureDreamWorkers(options.client, {\n reflectorAgentId: agent.config.reflectorAgentId,\n aggregatorAgentId: agent.agentId,\n model: agent.config.model,\n log,\n });\n if (agent.config.reflectorAgentId !== workers.reflectorAgentId) {\n agent.config.reflectorAgentId = workers.reflectorAgentId;\n await saveDreamAgentConfig(agent);\n }\n\n log(\n `Selected ${measuredTranscripts.length} transcript(s) in ${batches.length} batch(es)`,\n );\n const batchResults = await runBatchReflections({\n client: options.client,\n reflectorAgentId: workers.reflectorAgentId,\n parentAgentId: agent.agentId,\n memoryDir,\n runRoot,\n batches,\n normalizedJsonByKey,\n memfsPolicy: agent.config.memfs.policy,\n concurrency: options.concurrency ?? batches.length,\n ...(options.instruction ? { instruction: options.instruction } : {}),\n ...(options.signal ? { signal: options.signal } : {}),\n log,\n });\n await throwIfAbortedWithCleanup();\n\n const aggregation = await runDreamAggregation({\n client: options.client,\n aggregatorAgentId: agent.agentId,\n memoryDir,\n runRoot,\n reflections: batchResults,\n memfsPolicy: agent.config.memfs.policy,\n personaPreamble: AGGREGATOR_PERSONA,\n ...(options.instruction ? { instruction: options.instruction } : {}),\n ...(options.signal ? { signal: options.signal } : {}),\n log,\n });\n await throwIfAbortedWithCleanup();\n\n const everyBatchSucceeded = batchResults.every((batch) => batch.success);\n const success = everyBatchSucceeded && aggregation.success;\n\n if (success && lastReflectedTsByKey.size > 0) {\n const reflectedKeys = new Set(\n batchResults\n .filter((batch) => batch.success)\n .flatMap((batch) => batch.sessionIds),\n );\n let advanced = 0;\n for (const [key, reflectedThrough] of lastReflectedTsByKey) {\n if (!reflectedKeys.has(key)) continue;\n cursors[key] = { reflectedThrough };\n advanced += 1;\n }\n if (advanced > 0) {\n await saveDreamCursors(cursorDir, cursors);\n log(`[cursor] advanced ${advanced} cursor(s)`);\n }\n }\n\n return {\n kind: \"completed\",\n runRoot,\n success,\n transcripts: measuredTranscripts,\n batches: batchResults,\n aggregation,\n reflectorAgentId: workers.reflectorAgentId,\n aggregatorAgentId: agent.agentId,\n };\n}\n",
20
+ "/**\n * Letta Agent SDK\n *\n * Programmatic control of Letta Code CLI with persistent agent memory.\n *\n * @example\n * ```typescript\n * import { LettaAgentClient, createAgent, createSession, resumeSession, prompt } from '@letta-ai/letta-agent-sdk';\n *\n * const client = new LettaAgentClient({ backend: 'local' });\n * const agentId = await client.createAgent();\n * const clientSession = client.resumeSession(agentId);\n *\n * // Start session with default agent + new conversation (like `letta`)\n * const session = createSession();\n *\n * // Create a new agent explicitly\n * const agentId = await createAgent();\n *\n * // Resume default conversation on an agent\n * const session = resumeSession(agentId);\n *\n * // Resume specific conversation\n * const session = resumeSession('conv-xxx');\n *\n * // Create new conversation on specific agent\n * const session = createSession(agentId);\n *\n * // One-shot prompt (uses default agent)\n * const result = await prompt('Hello');\n * const result = await prompt('Hello', agentId); // specific agent\n * ```\n */\n\nimport { Session } from \"./session.js\";\nimport { LettaAgentClient } from \"./client.js\";\nimport type {\n CreateSessionOptions,\n CreateAgentOptions,\n LettaCodeSession,\n SDKInitMessage,\n SDKResultMessage,\n SendMessage,\n} from \"./types.js\";\nimport { validateCreateSessionOptions, validateCreateAgentOptions } from \"./validation.js\";\n\n// Re-export types\nexport type {\n CreateSessionOptions,\n CreateAgentOptions,\n LettaCodeBackend,\n LettaCodeEnvironment,\n LettaCodeLocalClientOptions,\n LettaCodeLocalAppServerOptions,\n LettaCodeRemoteClientOptions,\n LettaCodeCloudClientOptions,\n LettaCodeClientOptions,\n LettaCodeClientSessionOptions,\n LettaCodeSession,\n LettaCodeSocketLike,\n LettaCodeSocketConstructor,\n SDKMessage,\n SDKInitMessage,\n SDKAssistantMessage,\n SDKToolCallMessage,\n SDKToolResultMessage,\n SDKReasoningMessage,\n SDKResultMessage,\n SDKErrorCode,\n SDKStreamEventMessage,\n SDKStreamEventPayload,\n SDKStreamEventDeltaPayload,\n SDKStreamEventMessagePayload,\n SDKUnknownStreamEventPayload,\n SDKErrorMessage,\n SDKRetryMessage,\n SDKQueueItem,\n SDKQueueUpdateMessage,\n SDKLoopStatusMessage,\n SDKProtocolMessage,\n SDKProtocolCommand,\n SendCommandOptions,\n RunTurnOptions,\n RecoverPendingApprovalsOptions,\n RecoverPendingApprovalsResult,\n SkillSource,\n DreamingOptions,\n DreamingTrigger,\n DreamingBehavior,\n EffectiveDreamingSettings,\n PermissionMode,\n ReasoningEffort,\n CanUseToolCallback,\n CanUseToolResponse,\n CanUseToolResponseAllow,\n CanUseToolResponseDeny,\n // Multimodal content types\n TextContent,\n ImageContent,\n MessageContentItem,\n SendMessage,\n // List messages API\n ListMessagesOptions,\n ListMessagesResult,\n ListModelsResult,\n LettaCodeModelEntry,\n UpdateModelOptions,\n UpdateModelResult,\n Repository,\n CreateRepositoryParams,\n ListRepositoriesParams,\n ListRepositoriesResult,\n RepositoryResource,\n RepositoryFileEntry,\n ListRepositoryFilesParams,\n ListRepositoryFilesResult,\n CreateRepositoryFileParams,\n RepositoryFile,\n UpdateRepositoryFileParams,\n RepositoryFileMutationResult,\n DeleteRepositoryFileParams,\n DeleteRepositoryFileResult,\n RepositoryVersion,\n ListRepositoryVersionsParams,\n GetRepositoryVersionParams,\n // Bootstrap API\n BootstrapStateOptions,\n BootstrapStateResult,\n // Tool types\n AgentTool,\n AgentToolResult,\n AgentToolResultContent,\n AgentToolUpdateCallback,\n AnyAgentTool,\n} from \"./types.js\";\n\nexport { Session } from \"./session.js\";\nexport { RepositoriesClient } from \"./repositories.js\";\nexport { LettaAgentClient } from \"./client.js\";\nexport { CloudManagedSandboxExpiredError } from \"./cloud-session.js\";\n\nexport { extractStreamTextDelta } from \"./stream-events.js\";\n\n// Tool helpers\nexport {\n jsonResult,\n readStringParam,\n readNumberParam,\n readBooleanParam,\n readStringArrayParam,\n} from \"./tool-helpers.js\";\n\n/**\n * Create a new agent with a default conversation.\n * Returns the agentId which can be used with resumeSession or createSession.\n *\n * @example\n * ```typescript\n * // Create agent with default settings.\n * const agentId = await createAgent();\n *\n * // Create agent with custom memory\n * const agentId = await createAgent({\n * memory: ['persona', 'project'],\n * persona: 'You are a helpful coding assistant',\n * model: 'claude-sonnet-4',\n * tags: ['project:docs']\n * });\n *\n * // Then resume the default conversation:\n * const session = resumeSession(agentId);\n * ```\n */\nexport async function createAgent(options: CreateAgentOptions = {}): Promise<string> {\n validateCreateAgentOptions(options);\n return new LettaAgentClient().createAgent(options);\n}\n\n/**\n * Create a new conversation (session).\n *\n * - Without agentId: uses default/LRU agent with new conversation (like `letta`)\n * - With agentId: creates new conversation on specified agent\n *\n * @example\n * ```typescript\n * // New conversation on default agent (like `letta`)\n * await using session = createSession();\n *\n * // New conversation on specific agent\n * await using session = createSession(agentId);\n * ```\n */\nexport function createSession(\n agentId?: string,\n options: CreateSessionOptions = {},\n): LettaCodeSession {\n validateCreateSessionOptions(options);\n if (agentId) {\n return new LettaAgentClient().createSession(agentId, options);\n }\n // The app-server runtime_start protocol requires an explicit agent id. Keep\n // the historical default/LRU-agent helper on the legacy stdio transport.\n return new LettaAgentClient({ backend: \"local\", transport: \"stdio\" }).createSession(options);\n}\n\n/**\n * Resume an existing session.\n *\n * - Pass an agent ID (agent-xxx) to resume the default conversation\n * - Pass a conversation ID (conv-xxx) to resume a specific conversation\n *\n * The default conversation always exists after createAgent, so you can:\n * `createAgent()` → `resumeSession(agentId)` without needing createSession first.\n *\n * @example\n * ```typescript\n * // Resume default conversation\n * await using session = resumeSession(agentId);\n *\n * // Resume specific conversation\n * await using session = resumeSession('conv-xxx');\n * ```\n */\nexport function resumeSession(\n id: string,\n options: CreateSessionOptions = {},\n): LettaCodeSession {\n validateCreateSessionOptions(options);\n return new LettaAgentClient().resumeSession(id, options);\n}\n\n/**\n * One-shot prompt convenience function.\n *\n * - Without agentId: uses default agent (like `letta -p`), new conversation\n * - With agentId: uses specific agent, new conversation\n * - Uses a short-lived session and returns the final turn result.\n *\n * @example\n * ```typescript\n * const result = await prompt('What is 2+2?'); // default agent\n * const result = await prompt('What is the capital of France?', agentId); // specific agent\n * ```\n */\ntype TurnSession = LettaCodeSession & {\n runTurn(message: SendMessage): Promise<SDKResultMessage>;\n};\n\ntype InitializableSession = LettaCodeSession & {\n initialize(): Promise<SDKInitMessage>;\n};\n\nexport async function prompt(\n message: string,\n agentId?: string\n): Promise<SDKResultMessage> {\n // Use default agent behavior (like letta -p) when no agentId specified\n const session = agentId\n ? createSession(agentId)\n : createSession();\n\n try {\n return await (session as TurnSession).runTurn(message);\n } finally {\n session.close();\n }\n}\n\n// ═══════════════════════════════════════════════════════════════\n// SESSIONLESS APIs\n// ═══════════════════════════════════════════════════════════════\n\nimport type { ListMessagesOptions, ListMessagesResult } from \"./types.js\";\n\n/**\n * Fetch conversation messages without requiring a pre-existing session.\n *\n * Creates a transient CLI subprocess, fetches the requested message page, and\n * closes the subprocess. Useful for prefetching conversation histories before\n * opening a full session (e.g. desktop sidebar warm-up).\n *\n * Routing follows the same agent/conversation semantics as session history:\n * - Pass a conv-xxx conversationId to read a specific conversation.\n * - Omit conversationId to read the agent's default conversation.\n *\n * @param agentId - Agent ID to fetch messages for.\n * @param options - Pagination / filtering options (same as ListMessagesOptions).\n *\n * @example\n * ```typescript\n * // Prefetch default conversation\n * const { messages } = await listMessagesDirect(agentId);\n *\n * // Prefetch a specific conversation\n * const { messages, hasMore, nextBefore } = await listMessagesDirect(agentId, {\n * conversationId: 'conv-abc',\n * limit: 20,\n * order: 'desc',\n * });\n * ```\n */\nexport async function listMessagesDirect(\n agentId: string,\n options: ListMessagesOptions = {},\n): Promise<ListMessagesResult> {\n // resumeSession uses --default which maps to the agent's default conversation.\n // The session is transient: we only need it long enough to list messages.\n const session = new LettaAgentClient().resumeSession(agentId, {\n permissionMode: \"unrestricted\",\n });\n await (session as InitializableSession).initialize();\n try {\n return await session.listMessages(options);\n } finally {\n session.close();\n }\n}\n\n// ═══════════════════════════════════════════════════════════════\n// IMAGE HELPERS\n// ═══════════════════════════════════════════════════════════════\n\nimport { readFileSync } from \"node:fs\";\nimport type { ImageContent } from \"./types.js\";\n\n/**\n * Create image content from a file path.\n * \n * @example\n * ```typescript\n * await session.send([\n * { type: \"text\", text: \"What's in this image?\" },\n * imageFromFile(\"./screenshot.png\")\n * ]);\n * ```\n */\nexport function imageFromFile(filePath: string): ImageContent {\n const data = readFileSync(filePath).toString(\"base64\");\n const ext = filePath.toLowerCase();\n const media_type: ImageContent[\"source\"][\"media_type\"] = \n ext.endsWith(\".png\") ? \"image/png\"\n : ext.endsWith(\".gif\") ? \"image/gif\"\n : ext.endsWith(\".webp\") ? \"image/webp\"\n : \"image/jpeg\";\n \n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n/**\n * Create image content from base64 data.\n * \n * @example\n * ```typescript\n * const base64 = fs.readFileSync(\"image.png\").toString(\"base64\");\n * await session.send([\n * { type: \"text\", text: \"Describe this\" },\n * imageFromBase64(base64, \"image/png\")\n * ]);\n * ```\n */\nexport function imageFromBase64(\n data: string,\n media_type: ImageContent[\"source\"][\"media_type\"] = \"image/png\"\n): ImageContent {\n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n/**\n * Create image content from a URL.\n * Fetches the image and converts to base64.\n * \n * @example\n * ```typescript\n * const img = await imageFromURL(\"https://example.com/image.png\");\n * await session.send([\n * { type: \"text\", text: \"What's this?\" },\n * img\n * ]);\n * ```\n */\nexport async function imageFromURL(url: string): Promise<ImageContent> {\n const response = await fetch(url);\n const buffer = await response.arrayBuffer();\n const data = Buffer.from(buffer).toString(\"base64\");\n \n // Detect media type from content-type header or URL\n const contentType = response.headers.get(\"content-type\");\n let media_type: ImageContent[\"source\"][\"media_type\"] = \"image/png\";\n \n if (contentType?.includes(\"jpeg\") || contentType?.includes(\"jpg\") || url.match(/\\.jpe?g$/i)) {\n media_type = \"image/jpeg\";\n } else if (contentType?.includes(\"gif\") || url.endsWith(\".gif\")) {\n media_type = \"image/gif\";\n } else if (contentType?.includes(\"webp\") || url.endsWith(\".webp\")) {\n media_type = \"image/webp\";\n }\n \n return {\n type: \"image\",\n source: { type: \"base64\", media_type, data }\n };\n}\n\n// ═══════════════════════════════════════════════════════════════\n// DREAMING — batch memory formation over recorded sessions\n// ═══════════════════════════════════════════════════════════════\n\nexport {\n dream,\n collectTranscripts,\n initDreamAgent,\n createMemfsWritePolicy,\n installMemfsGuard,\n loadDreamAgent,\n packDreamBatches,\n recreateMemfsDirectories,\n getTrajectorySource,\n listTrajectorySourceTypes,\n AGGREGATOR_PERSONA,\n REFLECTION_SYSTEM_PROMPT,\n} from \"./dream/index.js\";\nexport type {\n DreamOptions,\n DreamResult,\n CollectTranscriptsOptions,\n Transcript,\n TranscriptSourceSpec,\n DreamBatch,\n DreamAggregationOutcome,\n DreamAgentConfig,\n DreamAgentGuardOptions,\n InitDreamAgentOptions,\n LoadedDreamAgent,\n BatchReflectionResult,\n DiscoveredSession,\n NormalizedRecord,\n NormalizedSession,\n TrajectorySource,\n MemfsOperation,\n MemfsOperationRule,\n MemfsGuardInstallation,\n MemfsStructure,\n MemfsWritePolicy,\n} from \"./dream/index.js\";\n",
21
+ "// Dreaming: form durable agent memory from an explicit list of normalized\n// transcripts.\n//\n// collectTranscripts() -> initDreamAgent() -> dream()\n//\n// dream() deliberately does not discover or normalize source stores. The\n// caller supplies immutable transcript snapshots, which makes selection easy\n// to inspect and makes a run reproducible after its source files change.\n\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { LettaAgentClient } from \"../client.js\";\nimport {\n DEFAULT_BATCH_TOKEN_BUDGET,\n DEFAULT_MAX_SESSIONS_PER_BATCH,\n type DreamBatch,\n packDreamBatches,\n} from \"./batching.js\";\nimport {\n type DreamAggregationOutcome,\n runDreamAggregation,\n} from \"./aggregate.js\";\nimport {\n type BatchReflectionResult,\n runBatchReflections,\n} from \"./reflect.js\";\nimport {\n loadDreamAgent,\n prepareDreamAgentMemfs,\n saveDreamAgentConfig,\n} from \"./agent.js\";\nimport { loadDreamCursors, saveDreamCursors } from \"./cursors.js\";\nimport { AGGREGATOR_PERSONA } from \"./prompts.js\";\nimport { redactSensitiveText } from \"./redact.js\";\nimport { sessionKey } from \"./select.js\";\nimport type {\n DiscoveredSession,\n NormalizedSession,\n} from \"./types.js\";\nimport {\n estimateTokens,\n} from \"./types.js\";\nimport { validateRecords } from \"./normalize-core.js\";\nimport { ensureDreamWorkers } from \"./workers.js\";\n\nexport type { DreamBatch } from \"./batching.js\";\nexport type { DreamAggregationOutcome } from \"./aggregate.js\";\nexport type { BatchReflectionResult } from \"./reflect.js\";\nexport { packDreamBatches } from \"./batching.js\";\nexport {\n AGGREGATOR_PERSONA,\n REFLECTION_SYSTEM_PROMPT,\n} from \"./prompts.js\";\nexport { getTrajectorySource, listTrajectorySourceTypes } from \"./registry.js\";\nexport {\n type DreamAgentConfig,\n type DreamAgentGuardOptions,\n type InitDreamAgentOptions,\n type LoadedDreamAgent,\n initDreamAgent,\n loadDreamAgent,\n} from \"./agent.js\";\nexport {\n createMemfsWritePolicy,\n installMemfsGuard,\n recreateMemfsDirectories,\n type MemfsGuardInstallation,\n type MemfsOperation,\n type MemfsOperationRule,\n type MemfsStructure,\n type MemfsWritePolicy,\n} from \"./memfs.js\";\nexport {\n collectTranscripts,\n type CollectTranscriptsOptions,\n type Transcript,\n type TranscriptSourceSpec,\n} from \"./transcripts.js\";\nexport type {\n DiscoveredSession,\n NormalizedRecord,\n NormalizedSession,\n TrajectorySource,\n} from \"./types.js\";\n\nexport interface DreamOptions {\n client: LettaAgentClient;\n /** Initialized dream-agent id returned by initDreamAgent(). */\n agentId: string;\n /** Immutable normalized transcript snapshots to reflect on. */\n transcripts: readonly NormalizedSession[];\n /**\n * Additional caller instruction for the run, provided to every reflection\n * batch AND to the aggregation pass. The aggregator is the stage that\n * lands the final commit on the memory filesystem, so instructions about\n * maintaining specific files (e.g. a projected AGENTS.md) reach it too —\n * an instruction that steered only the batches would be unreliable.\n */\n instruction?: string;\n /** Override the harness agents directory (tests). */\n agentsDir?: string;\n /** Per-batch token budget (default 60k, measured on normalized content). */\n batchTokenBudget?: number;\n /** Maximum transcripts in one batch (default 10). */\n maxTranscriptsPerBatch?: number;\n /** Concurrent reflection sessions; default: every batch at once. */\n concurrency?: number;\n /** Preview cursor filtering and batch packing without running agents. */\n planOnly?: boolean;\n /**\n * Abort the run: in-flight reflector/aggregator sessions are closed, no\n * new batches start, the run's artifacts (clones, runRoot) are removed,\n * cursors are NOT advanced, and dream() rejects with the abort reason.\n * Shutting down a spawned app-server remains the caller's job via\n * client.close().\n */\n signal?: AbortSignal;\n log?: (line: string) => void;\n}\n\n/** Long-lived streams tracked incrementally between dreams. */\nconst CURSOR_TRACKED_HARNESSES = new Set([\"openhands\"]);\n\nexport type DreamResult =\n | { kind: \"nothing_to_dream\" }\n | {\n kind: \"plan\";\n transcripts: DiscoveredSession[];\n batches: DreamBatch[];\n }\n | {\n kind: \"completed\";\n runRoot: string;\n success: boolean;\n transcripts: DiscoveredSession[];\n batches: BatchReflectionResult[];\n aggregation: DreamAggregationOutcome;\n reflectorAgentId: string;\n aggregatorAgentId: string;\n };\n\nfunction dreamRunId(): string {\n const stamp = new Date()\n .toISOString()\n .replace(/[-:]/g, \"\")\n .replace(/\\..+/, \"\")\n .replace(\"T\", \"-\");\n return `dream-${stamp}`;\n}\n\nfunction orderedTranscripts(\n transcripts: readonly NormalizedSession[],\n): NormalizedSession[] {\n return [...transcripts].sort((a, b) =>\n a.session.startTime.localeCompare(b.session.startTime) ||\n a.session.endTime.localeCompare(b.session.endTime) ||\n a.session.harness.localeCompare(b.session.harness) ||\n a.session.sessionId.localeCompare(b.session.sessionId)\n );\n}\n\nfunction validateTranscripts(\n transcripts: readonly NormalizedSession[],\n): void {\n const seen = new Set<string>();\n for (const transcript of transcripts) {\n const key = sessionKey(transcript.session);\n if (seen.has(key)) {\n throw new Error(`dream(): duplicate transcript ${key}`);\n }\n seen.add(key);\n const problem = validateRecords(transcript.records);\n if (problem) {\n throw new Error(`dream(): invalid transcript ${key}: ${problem}`);\n }\n }\n}\n\nexport async function dream(options: DreamOptions): Promise<DreamResult> {\n const log = options.log ?? (() => {});\n options.signal?.throwIfAborted();\n validateTranscripts(options.transcripts);\n\n const agent = await loadDreamAgent(options.agentId, {\n ...(options.agentsDir ? { agentsDir: options.agentsDir } : {}),\n });\n const memoryDir = agent.memoryDir;\n const cursorDir = agent.stateDir;\n\n if (options.transcripts.length === 0) {\n return { kind: \"nothing_to_dream\" };\n }\n await prepareDreamAgentMemfs(agent);\n\n const cursors = await loadDreamCursors(cursorDir);\n const lastReflectedTsByKey = new Map<string, string>();\n const normalizedJsonByKey = new Map<string, string>();\n const measuredTranscripts: DiscoveredSession[] = [];\n\n for (const transcript of orderedTranscripts(options.transcripts)) {\n const session = transcript.session;\n const key = sessionKey(session);\n let records = [...transcript.records];\n\n if (CURSOR_TRACKED_HARNESSES.has(session.harness)) {\n const cursor = cursors[key];\n if (cursor) {\n const body = records.filter(\n (record) =>\n record.role !== \"meta\" &&\n (record.timestamp ?? \"\") > cursor.reflectedThrough,\n );\n if (body.length === 0) {\n log(\n `[cursor] ${key}: nothing new past ${cursor.reflectedThrough}; skipping`,\n );\n continue;\n }\n records = [\n ...records.filter((record) => record.role === \"meta\"),\n ...body,\n ];\n }\n const lastTs = [...records]\n .reverse()\n .find((record) => record.role !== \"meta\" && record.timestamp)\n ?.timestamp;\n if (lastTs) lastReflectedTsByKey.set(key, lastTs);\n }\n\n // Run artifacts and reflection prompts should never retain credentials\n // that a recorded shell/env command happened to print.\n const json = redactSensitiveText(JSON.stringify(records, null, 1));\n normalizedJsonByKey.set(key, json);\n measuredTranscripts.push({\n ...session,\n estTokens: estimateTokens(json),\n });\n }\n\n if (measuredTranscripts.length === 0) {\n return { kind: \"nothing_to_dream\" };\n }\n\n const batches = packDreamBatches(\n measuredTranscripts,\n options.batchTokenBudget ?? DEFAULT_BATCH_TOKEN_BUDGET,\n options.maxTranscriptsPerBatch ?? DEFAULT_MAX_SESSIONS_PER_BATCH,\n );\n if (options.planOnly) {\n return {\n kind: \"plan\",\n transcripts: measuredTranscripts,\n batches,\n };\n }\n\n options.signal?.throwIfAborted();\n await mkdir(agent.runsDir, { recursive: true });\n const runRoot = join(agent.runsDir, dreamRunId());\n await mkdir(runRoot, { recursive: true });\n\n // On abort: remove this run's artifacts (batch clones live under runRoot)\n // and reject. Cursors are never advanced (the success gate below already\n // requires a non-aborted, fully successful run).\n const throwIfAbortedWithCleanup = async () => {\n if (!options.signal?.aborted) return;\n log(\"[abort] dream aborted; removing run artifacts\");\n await rm(runRoot, { recursive: true, force: true }).catch(() => {});\n options.signal.throwIfAborted();\n };\n\n const workers = await ensureDreamWorkers(options.client, {\n reflectorAgentId: agent.config.reflectorAgentId,\n aggregatorAgentId: agent.agentId,\n model: agent.config.model,\n log,\n });\n if (agent.config.reflectorAgentId !== workers.reflectorAgentId) {\n agent.config.reflectorAgentId = workers.reflectorAgentId;\n await saveDreamAgentConfig(agent);\n }\n\n log(\n `Selected ${measuredTranscripts.length} transcript(s) in ${batches.length} batch(es)`,\n );\n const batchResults = await runBatchReflections({\n client: options.client,\n reflectorAgentId: workers.reflectorAgentId,\n parentAgentId: agent.agentId,\n memoryDir,\n runRoot,\n batches,\n normalizedJsonByKey,\n memfsPolicy: agent.config.memfs.policy,\n concurrency: options.concurrency ?? batches.length,\n ...(options.instruction ? { instruction: options.instruction } : {}),\n ...(options.signal ? { signal: options.signal } : {}),\n log,\n });\n await throwIfAbortedWithCleanup();\n\n const aggregation = await runDreamAggregation({\n client: options.client,\n aggregatorAgentId: agent.agentId,\n memoryDir,\n runRoot,\n reflections: batchResults,\n memfsPolicy: agent.config.memfs.policy,\n personaPreamble: AGGREGATOR_PERSONA,\n ...(options.instruction ? { instruction: options.instruction } : {}),\n ...(options.signal ? { signal: options.signal } : {}),\n log,\n });\n await throwIfAbortedWithCleanup();\n\n const everyBatchSucceeded = batchResults.every((batch) => batch.success);\n const success = everyBatchSucceeded && aggregation.success;\n\n if (success && lastReflectedTsByKey.size > 0) {\n const reflectedKeys = new Set(\n batchResults\n .filter((batch) => batch.success)\n .flatMap((batch) => batch.sessionIds),\n );\n let advanced = 0;\n for (const [key, reflectedThrough] of lastReflectedTsByKey) {\n if (!reflectedKeys.has(key)) continue;\n cursors[key] = { reflectedThrough };\n advanced += 1;\n }\n if (advanced > 0) {\n await saveDreamCursors(cursorDir, cursors);\n log(`[cursor] advanced ${advanced} cursor(s)`);\n }\n }\n\n return {\n kind: \"completed\",\n runRoot,\n success,\n transcripts: measuredTranscripts,\n batches: batchResults,\n aggregation,\n reflectorAgentId: workers.reflectorAgentId,\n aggregatorAgentId: agent.agentId,\n };\n}\n",
22
22
  "// Pack discovered sessions into sequential, size-bounded batches.\n//\n// Sessions are ordered by their first-record timestamp, then greedily packed:\n// a batch closes when adding the next session would exceed the token budget or\n// the session cap. Batches are therefore contiguous time segments, and a\n// single oversized session still gets its own batch.\n\nimport type { DiscoveredSession } from \"./types.js\";\n\nexport const DEFAULT_BATCH_TOKEN_BUDGET = 60_000;\nexport const DEFAULT_MAX_SESSIONS_PER_BATCH = 10;\n\nexport interface DreamBatch {\n index: number;\n sessions: DiscoveredSession[];\n estTokens: number;\n startTime: string;\n endTime: string;\n}\n\nexport function packDreamBatches(\n sessions: DiscoveredSession[],\n tokenBudget: number,\n maxSessions: number,\n): DreamBatch[] {\n const ordered = [...sessions].sort((a, b) =>\n a.startTime.localeCompare(b.startTime),\n );\n\n const batches: DreamBatch[] = [];\n let current: DiscoveredSession[] = [];\n let currentTokens = 0;\n\n const flush = () => {\n const first = current[0];\n const last = current[current.length - 1];\n if (!first || !last) return;\n batches.push({\n index: batches.length,\n sessions: current,\n estTokens: currentTokens,\n startTime: first.startTime,\n endTime: last.endTime,\n });\n current = [];\n currentTokens = 0;\n };\n\n for (const session of ordered) {\n const wouldOverflow =\n current.length > 0 &&\n (currentTokens + session.estTokens > tokenBudget ||\n current.length >= maxSessions);\n if (wouldOverflow) flush();\n current.push(session);\n currentTokens += session.estTokens;\n }\n flush();\n return batches;\n}\n",
23
23
  "// Aggregation stage: synthesize every batch's memory changes (diffs against\n// the shared base revision) into the target memory filesystem, in ONE pass.\n// The aggregator always runs (even for one batch) and is the only stage that\n// edits the target. Batches that failed or produced nothing are skipped. When\n// the input count is large, the aggregator itself decides whether to delegate\n// aspects to its own subagents — the pipeline imposes no fan-out structure.\n\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport type { LettaAgentClient } from \"../client.js\";\nimport { gitOutput, snapshotMemoryTree } from \"./clone.js\";\nimport {\n installMemfsGuard,\n recreateMemfsDirectories,\n validateMemfsChanges,\n type MemfsWritePolicy,\n} from \"./memfs.js\";\nimport {\n AGGREGATOR_CONTINUE_PROMPT,\n buildAggregatorUserPrompt,\n} from \"./prompts.js\";\nimport type { BatchReflectionResult } from \"./reflect.js\";\nimport { runAgentToCompletion } from \"./runner.js\";\nimport { normalizeSdkMessages } from \"./sdk-messages.js\";\n\nexport interface DreamAggregationOutcome {\n success: boolean;\n /** The aggregator's final report (or the skip reason). */\n report: string;\n error?: string;\n conversationId?: string;\n /** Commits the aggregator landed on the target, relative to the base. */\n commitCount: number;\n}\n\nexport async function runDreamAggregation(params: {\n client: LettaAgentClient;\n aggregatorAgentId: string;\n /** The target memory filesystem the synthesis lands on. */\n memoryDir: string;\n runRoot: string;\n reflections: BatchReflectionResult[];\n /** Write policy enforced on the canonical MemFS and checked afterward. */\n memfsPolicy: MemfsWritePolicy;\n /**\n * Persona text prepended to the prompt when the aggregating agent doesn't\n * carry a dedicated aggregator persona block (a dream agent synthesizing\n * its own memory).\n */\n personaPreamble?: string;\n /**\n * Additional caller instruction. The aggregator is the only stage that\n * edits the target memory, so instructions about maintaining specific\n * files (e.g. a projected AGENTS.md) must reach it here.\n */\n instruction?: string;\n /** Abort: close the aggregator session and stop nudging. */\n signal?: AbortSignal;\n log?: (line: string) => void;\n}): Promise<DreamAggregationOutcome> {\n const log = params.log ?? (() => {});\n\n // Batches that failed or produced nothing contribute nothing to merge.\n const withContent = params.reflections.filter(\n (r) => r.success && (r.commitCount > 0 || r.dirty),\n );\n if (withContent.length === 0) {\n const outcome: DreamAggregationOutcome = {\n success: true,\n report:\n \"Reflections found no durable learnings to persist; memory left unchanged.\",\n commitCount: 0,\n };\n const aggregateDir = join(params.runRoot, \"aggregate\");\n await mkdir(aggregateDir, { recursive: true });\n await writeFile(\n join(aggregateDir, \"report.json\"),\n JSON.stringify(\n {\n agentId: params.aggregatorAgentId,\n success: true,\n durationMs: 0,\n inputs: [],\n report: outcome.report,\n },\n null,\n 2,\n ),\n \"utf-8\",\n );\n const outputDir = join(aggregateDir, \"output\");\n await snapshotMemoryTree(params.memoryDir, outputDir);\n await recreateMemfsDirectories(\n outputDir,\n params.memfsPolicy.declaredDirectories ?? [],\n );\n return outcome;\n }\n\n const aggregateDir = join(params.runRoot, \"aggregate\");\n await mkdir(aggregateDir, { recursive: true });\n const guard = await installMemfsGuard(params.memoryDir, params.memfsPolicy);\n const baseRevision = await gitOutput(params.memoryDir, [\"rev-parse\", \"HEAD\"]);\n\n const builtPrompt = buildAggregatorUserPrompt({\n batchesDir: join(params.runRoot, \"batches\"),\n batchCount: params.reflections.length,\n memoryDir: params.memoryDir,\n ...(params.instruction ? { instruction: params.instruction } : {}),\n });\n const userPrompt = params.personaPreamble\n ? `${params.personaPreamble.trim()}\\n\\n${builtPrompt}`\n : builtPrompt;\n\n log(\n `[aggregate] integrating ${withContent.length} reflection output(s) into memory`,\n );\n const landedCommits = async () =>\n Number(\n (\n await gitOutput(params.memoryDir, [\n \"rev-list\",\n \"--count\",\n `${baseRevision}..HEAD`,\n ]).catch(() => \"0\")\n ).trim() || \"0\",\n );\n // Scope the session's memory to the target memfs so the harness's memory\n // guard applies to the tree the aggregator is synthesizing onto. The\n // EXPLICIT marker distinguishes this deliberate scope from stale leakage.\n const memoryEnv = {\n MEMORY_DIR: params.memoryDir,\n LETTA_MEMORY_DIR: params.memoryDir,\n LETTA_MEMORY_DIR_EXPLICIT: \"1\",\n };\n let run = await runAgentToCompletion(params.client, {\n agentId: params.aggregatorAgentId,\n userPrompt,\n // cwd one level above the target so the harness's own state doesn't land\n // inside (and get committed to) the memory filesystem.\n cwd: dirname(params.memoryDir),\n label: \"aggregate\",\n env: memoryEnv,\n ...(params.signal ? { signal: params.signal } : {}),\n onProgress: log,\n });\n // The model can end its turn narrating its plan instead of executing it.\n // While nothing has landed on the target, nudge the same conversation to\n // keep going — its plan and diff survey are already in context.\n const passes: { prompt: string; run: typeof run }[] = [\n { prompt: userPrompt, run },\n ];\n for (\n let nudge = 0;\n nudge < 2 &&\n !params.signal?.aborted &&\n run.success &&\n run.conversationId !== null &&\n (await landedCommits()) === 0;\n nudge++\n ) {\n log(\n \"[aggregate] turn ended with no commits on target — nudging to continue\",\n );\n run = await runAgentToCompletion(params.client, {\n agentId: params.aggregatorAgentId,\n userPrompt: AGGREGATOR_CONTINUE_PROMPT,\n cwd: dirname(params.memoryDir),\n label: \"aggregate\",\n resumeConversationId: run.conversationId,\n env: memoryEnv,\n ...(params.signal ? { signal: params.signal } : {}),\n onProgress: log,\n });\n passes.push({ prompt: AGGREGATOR_CONTINUE_PROMPT, run });\n }\n\n const records = passes.flatMap(\n (pass) => normalizeSdkMessages(pass.prompt, pass.run.messages) ?? [],\n );\n if (records.length > 0) {\n await writeFile(\n join(aggregateDir, \"trajectory.json\"),\n JSON.stringify(records, null, 1),\n \"utf-8\",\n );\n }\n const successfulPass = [...passes]\n .reverse()\n .find((pass) => pass.run.success)?.run;\n const executionSucceeded = successfulPass !== undefined;\n\n // The aggregator may finish after applying the synthesis but before its\n // requested git commit. Preserve those edits only after the same MemFS\n // policy check used for a normal landed commit. A failed continuation does\n // not invalidate work completed by an earlier successful pass.\n let recoveryError: string | undefined;\n if ((await landedCommits()) === 0 && executionSucceeded) {\n const status = await gitOutput(params.memoryDir, [\n \"status\",\n \"--porcelain\",\n \"--untracked-files=all\",\n ]).catch(() => \"\");\n if (status !== \"\") {\n const recoveryPolicyCheck = await validateMemfsChanges(\n params.memoryDir,\n baseRevision,\n params.memfsPolicy,\n { baselineDirectories: guard.baselineDirectories },\n );\n if (!recoveryPolicyCheck.valid) {\n recoveryError =\n `MemFS write policy rejected ${recoveryPolicyCheck.violations.length} ` +\n `uncommitted aggregation change(s): ${recoveryPolicyCheck.violations\n .map((violation) => `${violation.path} (${violation.reason})`)\n .join(\"; \")}`;\n } else {\n try {\n await gitOutput(params.memoryDir, [\"add\", \"-A\"]);\n await gitOutput(params.memoryDir, [\n \"-c\",\n \"user.name=Dream Aggregator\",\n \"-c\",\n \"user.email=dream-aggregator@letta.com\",\n \"commit\",\n \"-m\",\n `feat(aggregation): recover ${withContent.length} reflection outputs`,\n ]);\n log(\n \"[aggregate] recovered and committed uncommitted synthesis edits\",\n );\n } catch (error) {\n recoveryError =\n error instanceof Error ? error.message : String(error);\n }\n }\n }\n }\n const gitLog = await gitOutput(params.memoryDir, [\n \"log\",\n \"--format=%h %s\",\n \"--reverse\",\n `${baseRevision}..HEAD`,\n ]).catch(() => \"\");\n const gitPatch = await gitOutput(params.memoryDir, [\n \"log\",\n \"-p\",\n \"--reverse\",\n \"--format=commit %h%n%s%n\",\n `${baseRevision}..HEAD`,\n ]).catch(() => \"\");\n await writeFile(join(aggregateDir, \"git-log.txt\"), `${gitLog}\\n`, \"utf-8\");\n await writeFile(join(aggregateDir, \"memfs.patch\"), `${gitPatch}\\n`, \"utf-8\");\n\n const commitCount = gitLog ? gitLog.split(\"\\n\").length : 0;\n const landed = commitCount > 0;\n const policyCheck = await validateMemfsChanges(\n params.memoryDir,\n baseRevision,\n params.memfsPolicy,\n { baselineDirectories: guard.baselineDirectories },\n );\n const policyError = policyCheck.valid\n ? undefined\n : `MemFS write policy rejected ${policyCheck.violations.length} change(s): ${policyCheck.violations\n .map((violation) => `${violation.path} (${violation.reason})`)\n .join(\"; \")}`;\n const outcome: DreamAggregationOutcome = {\n success:\n executionSucceeded && landed && policyCheck.valid && !recoveryError,\n report: run.report || successfulPass?.report || \"\",\n error:\n recoveryError ??\n (!executionSucceeded ? run.error : undefined) ??\n policyError ??\n (landed\n ? undefined\n : \"Aggregation ended without committing the reflection outputs\"),\n conversationId: run.conversationId ?? undefined,\n commitCount,\n };\n await writeFile(\n join(aggregateDir, \"report.json\"),\n JSON.stringify(\n {\n agentId: params.aggregatorAgentId,\n conversationId: outcome.conversationId,\n success: outcome.success,\n error: outcome.error,\n durationMs: passes.reduce(\n (total, pass) => total + pass.run.durationMs,\n 0,\n ),\n inputs: withContent.map((r) => `batch-${r.batchIndex}`),\n report: outcome.report,\n },\n null,\n 2,\n ),\n \"utf-8\",\n );\n if (outcome.success) {\n const outputDir = join(aggregateDir, \"output\");\n await snapshotMemoryTree(params.memoryDir, outputDir);\n await recreateMemfsDirectories(\n outputDir,\n params.memfsPolicy.declaredDirectories ?? [],\n );\n }\n log(\n `[aggregate] ${outcome.success ? \"done\" : `FAILED: ${outcome.error ?? \"unknown error\"}`} ` +\n `(${commitCount} commit(s) on target)`,\n );\n return outcome;\n}\n",
24
24
  "// Give a batch reflection agent an isolated copy of the target memory\n// filesystem to edit: a local `git clone` at its current revision. The agent\n// reconciles its batch's learnings against existing memory in place; the\n// aggregator later reads each batch's diff against the shared base revision\n// and synthesizes one edit onto the target. Clones are fully independent\n// repos, so any number of batches can run concurrently.\n\nimport { execFile } from \"node:child_process\";\nimport { rm } from \"node:fs/promises\";\nimport { promisify } from \"node:util\";\n\nconst execFileAsync = promisify(execFile);\n\nexport async function gitOutput(cwd: string, args: string[]): Promise<string> {\n const { stdout } = await execFileAsync(\"git\", args, { cwd });\n return stdout.trim();\n}\n\n/**\n * Clone the memory filesystem into outputDir and return the base revision the\n * clone starts from (the revision batch diffs are taken against).\n */\nexport async function cloneMemoryTree(\n memoryDir: string,\n outputDir: string,\n): Promise<string> {\n await execFileAsync(\"git\", [\"clone\", \"--quiet\", memoryDir, outputDir]);\n // Commits are authored per the reflection prompt; the committer identity\n // just needs to exist inside the clone.\n await gitOutput(outputDir, [\"config\", \"user.name\", \"Dream Reflection\"]);\n await gitOutput(outputDir, [\"config\", \"user.email\", \"dream@letta.com\"]);\n return gitOutput(outputDir, [\"rev-parse\", \"HEAD\"]);\n}\n\n/** Commits past the base revision, and whether the tree has uncommitted edits. */\nexport async function inspectMemoryTree(\n memoryDir: string,\n baseRevision: string,\n): Promise<{ commitCount: number; dirty: boolean }> {\n try {\n const total = Number.parseInt(\n await gitOutput(memoryDir, [\"rev-list\", \"--count\", `${baseRevision}..HEAD`]),\n 10,\n );\n const dirty =\n (await gitOutput(memoryDir, [\"status\", \"--porcelain\"])) !== \"\";\n return {\n commitCount: Number.isFinite(total) ? Math.max(0, total) : 0,\n dirty,\n };\n } catch {\n return { commitCount: 0, dirty: false };\n }\n}\n\n/** Record an immutable checkout of the final memory tree with a run. */\nexport async function snapshotMemoryTree(\n memoryDir: string,\n outputDir: string,\n): Promise<void> {\n await rm(outputDir, { recursive: true, force: true });\n await execFileAsync(\n \"git\",\n [\"clone\", \"--quiet\", \"--no-hardlinks\", memoryDir, outputDir],\n );\n}\n",
@@ -43,7 +43,7 @@
43
43
  "// Registry of the built-in trajectory sources, keyed by the scheme used in\n// `--from <type>[:<locator>]`.\n\nimport { createClaudeCodeSource } from \"./sources/claude-code.js\";\nimport { createCodexSource } from \"./sources/codex.js\";\nimport { createLettaSource } from \"./sources/letta.js\";\nimport { createOpenHandsSource } from \"./sources/openhands.js\";\nimport { createTranscriptFileSource } from \"./sources/transcript-file.js\";\nimport type { TrajectorySource } from \"./types.js\";\n\nconst FACTORIES: Record<string, () => TrajectorySource> = {\n claude: () => createClaudeCodeSource(),\n codex: () => createCodexSource(),\n letta: () => createLettaSource(),\n openhands: () => createOpenHandsSource(),\n transcript: () => createTranscriptFileSource(),\n};\n\nexport function getTrajectorySource(type: string): TrajectorySource {\n const factory = FACTORIES[type];\n if (!factory) {\n throw new Error(\n `Unknown trajectory source type \"${type}\". Supported types: ${Object.keys(\n FACTORIES,\n ).join(\", \")}`,\n );\n }\n return factory();\n}\n\nexport function listTrajectorySourceTypes(): string[] {\n return Object.keys(FACTORIES);\n}\n",
44
44
  "// Public transcript collection: discover sessions from one or more harness\n// stores, select a bounded recent set from each source spec, and return\n// normalized in-memory snapshots ready for dream().\n\nimport { getTrajectorySource } from \"./registry.js\";\nimport { sessionKey } from \"./select.js\";\nimport type {\n DiscoveredSession,\n NormalizedRecord,\n NormalizedSession,\n} from \"./types.js\";\nimport { estimateTokens } from \"./types.js\";\nimport { validateRecords } from \"./normalize-core.js\";\n\nexport interface TranscriptSourceSpec {\n type: string;\n /** A source-specific file, directory, session id, or conversation locator. */\n locator?: string;\n /** Keep the latest N eligible sessions from this source spec. */\n limit?: number;\n}\n\nexport interface CollectTranscriptsOptions {\n sources: TranscriptSourceSpec[];\n /**\n * Include sessions containing activity strictly after this instant. The\n * cutoff is applied to endTime; the full transcript is retained for context.\n */\n after?: Date | string;\n}\n\n/** A fully normalized transcript plus its source-session metadata. */\nexport type Transcript = NormalizedSession;\n\nfunction timestampMs(value: string, label: string): number {\n const result = Date.parse(value);\n if (Number.isNaN(result)) {\n throw new Error(`Invalid ${label} timestamp: ${JSON.stringify(value)}`);\n }\n return result;\n}\n\nfunction cutoffMs(after: Date | string | undefined): number {\n if (after === undefined) return Number.NEGATIVE_INFINITY;\n const result = after instanceof Date ? after.getTime() : Date.parse(after);\n if (Number.isNaN(result)) {\n throw new Error(`Invalid transcript cutoff: ${JSON.stringify(after)}`);\n }\n return result;\n}\n\nfunction validateLimit(spec: TranscriptSourceSpec): void {\n if (\n spec.limit !== undefined &&\n (!Number.isInteger(spec.limit) || spec.limit <= 0)\n ) {\n throw new Error(\n `Transcript source ${JSON.stringify(spec.type)} limit must be a positive integer`,\n );\n }\n}\n\nfunction compareSessionsByRecency(\n a: DiscoveredSession,\n b: DiscoveredSession,\n): number {\n return (\n timestampMs(a.endTime, \"session endTime\") -\n timestampMs(b.endTime, \"session endTime\") ||\n timestampMs(a.startTime, \"session startTime\") -\n timestampMs(b.startTime, \"session startTime\") ||\n a.harness.localeCompare(b.harness) ||\n a.sessionId.localeCompare(b.sessionId) ||\n a.path.localeCompare(b.path)\n );\n}\n\nfunction compareTranscriptsChronologically(\n a: Transcript,\n b: Transcript,\n): number {\n return (\n timestampMs(a.session.startTime, \"session startTime\") -\n timestampMs(b.session.startTime, \"session startTime\") ||\n timestampMs(a.session.endTime, \"session endTime\") -\n timestampMs(b.session.endTime, \"session endTime\") ||\n a.session.harness.localeCompare(b.session.harness) ||\n a.session.sessionId.localeCompare(b.session.sessionId) ||\n a.session.path.localeCompare(b.session.path)\n );\n}\n\nfunction cloneRecords(records: NormalizedRecord[]): NormalizedRecord[] {\n return records.map((record) => ({\n ...record,\n ...(record.tool_calls\n ? { tool_calls: record.tool_calls.map((call) => ({ ...call })) }\n : {}),\n }));\n}\n\nfunction normalizedSnapshot(normalized: NormalizedSession): Transcript {\n const records = cloneRecords(normalized.records);\n const problem = validateRecords(records);\n if (problem) {\n throw new Error(\n `Invalid normalized transcript ${sessionKey(normalized.session)}: ${problem}`,\n );\n }\n\n const body = records.filter((record) => record.role !== \"meta\");\n const startTime = body[0]?.timestamp;\n const endTime = body[body.length - 1]?.timestamp;\n if (!startTime || !endTime) {\n throw new Error(\n `Invalid normalized transcript ${sessionKey(normalized.session)}: missing time bounds`,\n );\n }\n const meta = records[0]?.role === \"meta\" ? records[0] : undefined;\n const json = JSON.stringify(records);\n\n return {\n session: {\n ...normalized.session,\n startTime,\n endTime,\n estTokens: estimateTokens(json),\n recordCount: body.length,\n ...(meta?.cwd ? { cwd: meta.cwd } : {}),\n },\n records,\n };\n}\n\nfunction dedupeDiscovered(\n sessions: DiscoveredSession[],\n): DiscoveredSession[] {\n const byKey = new Map<string, DiscoveredSession>();\n for (const session of [...sessions].sort(compareSessionsByRecency)) {\n // Later entries win, which deterministically keeps the newest snapshot\n // when a source reports the same logical session more than once.\n byKey.set(sessionKey(session), session);\n }\n return [...byKey.values()];\n}\n\n/**\n * Collect normalized transcript snapshots from local trajectory sources.\n *\n * Source specs are independent: the cutoff and each spec's limit are applied\n * before results are combined. Overlapping specs are deduplicated by stable\n * harness/session identity, and the returned list is globally chronological.\n */\nexport async function collectTranscripts(\n options: CollectTranscriptsOptions,\n): Promise<Transcript[]> {\n const afterMs = cutoffMs(options.after);\n const collected = new Map<string, Transcript>();\n\n for (const spec of options.sources) {\n validateLimit(spec);\n const source = getTrajectorySource(spec.type);\n // Deliberately call the source directly. In particular, a Claude/Codex\n // locator names exactly what discover() resolves; it never expands into\n // an implicit range of later sessions.\n const discovered = await source.discover(spec.locator);\n const eligible = dedupeDiscovered(discovered)\n .filter(\n (session) =>\n timestampMs(session.endTime, \"session endTime\") > afterMs,\n )\n .sort(compareSessionsByRecency);\n const selected =\n spec.limit === undefined ? eligible : eligible.slice(-spec.limit);\n\n for (const session of selected) {\n const normalized = normalizedSnapshot(await source.normalize(session));\n const key = sessionKey(normalized.session);\n if (!collected.has(key)) collected.set(key, normalized);\n }\n }\n\n return [...collected.values()].sort(compareTranscriptsChronologically);\n}\n"
45
45
  ],
46
- "mappings": "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",
47
- "debugId": "7C4FEA520626EC0864756E2164756E21",
46
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAMA;AACA;;;AC6IA,IAAM,uBAAuB,IAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,oBAAoB,IAAI,IAAqB;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,wBAAwB,IAAI,IAAkB;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAIM,SAAS,uBAAuB,CACrC,MAI6D;AAAA,EAC7D,IAAI,SAAS,aAAa,SAAS,WAAW;AAAA,IAC5C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,SAAS,uBAAuB,SAAS,cAAc;AAAA,IACzD,OAAO;AAAA,EACT;AAAA,EACA,IACE,SAAS,cACT,SAAS,iBACT,SAAS,gBACT;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA;AAAA;AAGK,SAAS,iBAAiB,CAC/B,MAIoB;AAAA,EACpB,OAAO,wBAAwB,IAAI;AAAA;AAG9B,SAAS,4BAA4B,CAC1C,MAIS;AAAA,EACT,OAAO,wBAAwB,IAAI,MAAM;AAAA;AAGpC,SAAS,aAAa,CAAC,SAAkC,UAAwB;AAAA,EACtF,IAAI,QAAQ,YAAY,OAAO;AAAA,IAC7B,MAAM,IAAI,MAAM,OAAO,QAAQ,UAAU,WAAW,QAAQ,QAAQ,QAAQ;AAAA,EAC9E;AAAA;AAGF,SAAS,cAAc,CAAC,OAA4D;AAAA,EAClF,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,IAAG;AAAA,EAClC,OAAO,sBAAsB,IAAI,KAAqB,IACjD,QACD;AAAA;AAGN,SAAS,iBAAiB,CAAC,OAA0C;AAAA,EACnE,OAAO,OAAO,UAAU,YAAY,kBAAkB,IAAI,KAAwB;AAAA;AAGpF,SAAS,cAAc,CAAC,OAAgB,MAAkC;AAAA,EACxE,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW,GAAG;AAAA,IACnD,MAAM,IAAI,MAAM,WAAW,oCAAoC;AAAA,EACjE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,yBAAyB,CAAC,QAAiE;AAAA,EAClG,IAAI,OAAO,WAAW,UAAU;AAAA,IAC9B,IAAI,OAAO,WAAW,GAAG;AAAA,MACvB,MAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AAAA,IACA,OAAO,EAAE,OAAO,OAAO;AAAA,EACzB;AAAA,EACA,IAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAAA,IAClE,MAAM,IAAI,MAAM,yEAAyE;AAAA,EAC3F;AAAA,EAEA,MAAM,QAAQ,eAAe,OAAO,OAAO,OAAO;AAAA,EAClD,MAAM,UAAU,eAAe,OAAO,SAAS,SAAS;AAAA,EACxD,MAAM,cAAc,eAAe,OAAO,aAAa,aAAa;AAAA,EACpE,MAAM,kBAAkB,OAAO;AAAA,EAC/B,IAAI,oBAAoB,aAAa,CAAC,kBAAkB,eAAe,GAAG;AAAA,IACxE,MAAM,IAAI,MACR,4BAA4B,OAAO,eAAe,qBAAqB,CAAC,GAAG,iBAAiB,EAAE,KAAK,IAAI,GACzG;AAAA,EACF;AAAA,EACA,IAAI,UAAU,cAAc,YAAY,aAAa,gBAAgB,YAAY;AAAA,IAC/E,MAAM,IAAI,MAAM,0FAA0F;AAAA,EAC5G;AAAA,EACA,IACE,UAAU,aACV,YAAY,aACZ,gBAAgB,aAChB,oBAAoB,WACpB;AAAA,IACA,MAAM,IAAI,MAAM,uFAAuF;AAAA,EACzG;AAAA,EACA,OAAO;AAAA,OACD,UAAU,YAAY,EAAE,MAAM,IAAI,CAAC;AAAA,OACnC,YAAY,YAAY,EAAE,QAAQ,IAAI,CAAC;AAAA,OACvC,gBAAgB,YAAY,EAAE,YAAY,IAAI,CAAC;AAAA,OAC/C,oBAAoB,YAAY,EAAE,gBAAgB,IAAI,CAAC;AAAA,EAC7D;AAAA;AAGF,SAAS,4BAA4B,CAAC,OAAuD;AAAA,EAC3F,MAAM,UAA8B,CAAC;AAAA,EACrC,IAAI,MAAM,YAAY;AAAA,IAAW,QAAQ,WAAW,MAAM;AAAA,EAC1D,IAAI,MAAM,gBAAgB;AAAA,IAAW,QAAQ,eAAe,MAAM;AAAA,EAClE,IAAI,MAAM,UAAU,WAAW;AAAA,IAC7B,IAAI,MAAM,MAAM,SAAS,GAAG;AAAA,MAAG,QAAQ,eAAe,MAAM;AAAA,IACvD;AAAA,cAAQ,WAAW,MAAM;AAAA,EAChC;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,iBAAiB,CACxB,QACA,qBACoB;AAAA,EACpB,IAAI,CAAC;AAAA,IAAQ;AAAA,EACb,MAAM,aAAa,OAAO,QAAQ,GAAG;AAAA,EACrC,IAAI,eAAe;AAAA,IAAI,OAAO;AAAA,EAC9B,MAAM,WAAW,OAAO,MAAM,GAAG,UAAU;AAAA,EAC3C,MAAM,QAAQ,OAAO,MAAM,aAAa,CAAC;AAAA,EACzC,MAAM,eAAe,sBAAsB;AAAA,EAC3C,OAAO,eAAe,GAAG,gBAAgB,UAAU;AAAA;AAGrD,SAAS,gBAAgB,CAAC,OAAuE;AAAA,EAC/F,MAAM,gBAAgB,OAAO;AAAA,EAC7B,OAAO,OAAO,kBAAkB,WAAW,gBAAgB;AAAA;AAG7D,SAAS,kBAAkB,CAAC,OAAgD;AAAA,EAC1E,MAAM,SAAS,MAAM,YAAY;AAAA,EACjC,OAAO,OAAO,WAAW,WAAW,SAAS;AAAA;AAG/C,SAAS,qBAAqB,CAC5B,YACA,eACuB;AAAA,EACvB,IAAI,kBAAkB;AAAA,IAAW,OAAO;AAAA,EACxC,MAAM,UAAU,WAAW,OACzB,CAAC,UAAU,iBAAiB,MAAM,UAAU,MAAM,aACpD;AAAA,EACA,OAAO,QAAQ,SAAS,IAAI,UAAU;AAAA;AAGxC,SAAS,wBAAwB,CAAC,QAItB;AAAA,EACV,IAAI,OAAO,eAAe;AAAA,IAAqB,OAAO;AAAA,EACtD,MAAM,WAAW,CAAC,OAAO,QAAQ,OAAO,OAAO,EAC5C,OAAO,CAAC,UAA2B,OAAO,UAAU,YAAY,MAAM,SAAS,CAAC,EAChF,KAAK;AAAA,CAAI,EACT,YAAY;AAAA,EACf,OACE,SAAS,SAAS,qCAAqC,KACvD,SAAS,SAAS,2BAA2B,KAC7C,SAAS,SAAS,mBAAmB;AAAA;AAIzC,SAAS,uBAAuB,CAC9B,UAC2B;AAAA,EAC3B,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EACtB,OAAO;AAAA,IACL,SAAS,SAAS,WAAW;AAAA,IAC7B,YAAY,SAAS,aAAa;AAAA,EACpC;AAAA;AAGF,SAAS,sBAAsB,CAAC,SAAiC;AAAA,EAC/D,IAAI,OAAO,YAAY;AAAA,IAAU,OAAO;AAAA,EACxC,IAAI,MAAM,QAAQ,OAAO,GAAG;AAAA,IAC1B,MAAM,SAAmB,CAAC;AAAA,IAC1B,WAAW,QAAQ,SAAS;AAAA,MAC1B,IAAI,OAAO,SAAS,UAAU;AAAA,QAC5B,OAAO,KAAK,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,OAAO,SAAS,UAAU;AAAA,QACpC,MAAM,SAAS;AAAA,QACf,IAAI,OAAO,OAAO,SAAS,UAAU;AAAA,UACnC,OAAO,KAAK,OAAO,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,SAAS,OAAO,KAAK,EAAE;AAAA,IAC7B,OAAO,OAAO,SAAS,IAAI,SAAS;AAAA,EACtC;AAAA,EACA,IAAI,WAAW,OAAO,YAAY,UAAU;AAAA,IAC1C,MAAM,SAAS;AAAA,IACf,IAAI,OAAO,OAAO,SAAS;AAAA,MAAU,OAAO,OAAO;AAAA,EACrD;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,sBAAsB,CAAC,MAAiE;AAAA,EAC/F,IAAI,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI,GAAG;AAAA,IAC5D,OAAO,EAAE,OAAO,KAAgC;AAAA,EAClD;AAAA,EACA,MAAM,MAAM,OAAO,SAAS,WAAW,OAAO;AAAA,EAC9C,IAAI,CAAC;AAAA,IAAK,OAAO,EAAE,OAAO,CAAC,EAAE;AAAA,EAC7B,IAAI;AAAA,IACF,MAAM,SAAS,KAAK,MAAM,GAAG;AAAA,IAC7B,IAAI,UAAU,OAAO,WAAW,YAAY,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,MAClE,OAAO,EAAE,OAAO,QAAmC,IAAI;AAAA,IACzD;AAAA,IACA,MAAM;AAAA,EAGR,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI;AAAA;AAG/B,SAAS,aAAa,CAAC,OAAqE;AAAA,EAC1F,MAAM,YAAY,MAAM;AAAA,EACxB,IAAI,MAAM,QAAQ,SAAS,GAAG;AAAA,IAC5B,MAAM,QAAQ,UAAU;AAAA,IACxB,OAAO,SAAS,OAAO,UAAU,WAAY,QAAoC;AAAA,EACnF;AAAA,EACA,IAAI,aAAa,OAAO,cAAc,UAAU;AAAA,IAC9C,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,MAAM;AAAA,EACvB,OAAO,YAAY,OAAO,aAAa,WAAY,WAAuC;AAAA;AAG5F,SAAS,eAAe,CAAC,OAAqE;AAAA,EAC5F,MAAM,cAAc,MAAM;AAAA,EAC1B,IAAI,MAAM,QAAQ,WAAW,GAAG;AAAA,IAC9B,MAAM,QAAQ,YAAY;AAAA,IAC1B,OAAO,SAAS,OAAO,UAAU,WAAY,QAAoC;AAAA,EACnF;AAAA,EACA;AAAA;AAGF,SAAS,WAAW,CAAC,SAA0B,SAAgC;AAAA,EAC7E,MAAM,aAAa,QAAQ;AAAA,EAC3B,IAAI,YAAY;AAAA,IACd,OACE,WAAW,aAAa,QAAQ,YAChC,WAAW,oBAAoB,QAAQ;AAAA,EAE3C;AAAA,EACA,MAAM,iBACJ,OAAO,QAAQ,aAAa,WACxB,QAAQ,WACR,OAAO,QAAQ,YAAY,WACzB,QAAQ,UACR;AAAA,EACR,MAAM,wBACJ,OAAO,QAAQ,oBAAoB,WAC/B,QAAQ,kBACR,OAAO,QAAQ,mBAAmB,WAChC,QAAQ,iBACR;AAAA,EAER,IAAI,kBAAkB,mBAAmB,QAAQ;AAAA,IAAU,OAAO;AAAA,EAClE,IAAI,yBAAyB,0BAA0B,QAAQ;AAAA,IAAiB,OAAO;AAAA,EACvF,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,SAA0D;AAAA,EACnF,IAAI,QAAQ,SAAS;AAAA,IAAgB,OAAO;AAAA,EAC5C,MAAM,QAAQ,QAAQ;AAAA,EACtB,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC5D,QACD;AAAA;AAGN,SAAS,sBAAsB,CAAC,OAAoD;AAAA,EAClF,OAAO,OAAO,MAAM,iBAAiB,WAAW,MAAM,eAAe;AAAA;AAGvE,SAAS,gBAAgB,CAAC,OAAoD;AAAA,EAC5E,OAAO,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;AAAA;AAG3D,SAAS,qBAAqB,CAAC,OAA2D;AAAA,EACxF,OAAO,OAAO,MAAM,gBAAgB,WAAW,MAAM,cAAc;AAAA;AAGrE,SAAS,gBAAgB,CAAC,SAA0D;AAAA,EAClF,IAAI,QAAQ,SAAS;AAAA,IAAsB,OAAO;AAAA,EAClD,MAAM,aAAa,QAAQ;AAAA,EAC3B,OAAO,cAAc,OAAO,eAAe,YAAY,CAAC,MAAM,QAAQ,UAAU,IAC3E,aACD;AAAA;AAGN,SAAS,eAAe,CAAC,SAA8C;AAAA,EACrE,MAAM,aAAa,iBAAiB,OAAO;AAAA,EAC3C,OAAO,OAAO,YAAY,WAAW,WAAW,WAAW,SAAS;AAAA;AAGtE,SAAS,gBAAgB,CAAC,SAAoC;AAAA,EAC5D,MAAM,eAAe,iBAAiB,OAAO,GAAG;AAAA,EAChD,OAAO,MAAM,QAAQ,YAAY,IAC7B,aAAa,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,IACzE,CAAC;AAAA;AAGP,SAAS,UAAU,CAAC,SAA0C;AAAA,EAC5D,MAAM,QAAQ,QAAQ;AAAA,EACtB,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,CAAC;AAAA,EACnC,OAAO,MAAM,QAAQ,CAAC,SAAS;AAAA,IAC7B,IAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,MAAM,QAAQ,IAAI;AAAA,MAAG,OAAO,CAAC;AAAA,IACtE,MAAM,SAAS;AAAA,IACf,IAAI,OAAO,OAAO,OAAO;AAAA,MAAU,OAAO,CAAC;AAAA,IAC3C,OAAO;AAAA,MACL;AAAA,QACE,IAAI,OAAO;AAAA,QACX,iBACE,OAAO,OAAO,sBAAsB,WAAW,OAAO,oBAAoB;AAAA,QAC5E,MAAM,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO;AAAA,QACtD,QAAQ,OAAO,OAAO,WAAW,WAAW,OAAO,SAAS;AAAA,QAC5D,SAAS,OAAO;AAAA,QAChB,YAAY,OAAO,OAAO,gBAAgB,WAAW,OAAO,cAAc;AAAA,MAC5E;AAAA,IACF;AAAA,GACD;AAAA;AAGI,SAAS,oBAAoB,CAAC,SAAqD;AAAA,EACxF,OAAO;AAAA;AAAA;AAGF,MAAe,wBAAoD;AAAA,EAyBnD;AAAA,EAxBX,aAAmD;AAAA,EACnD,UAA+B;AAAA,EAC/B,cAAc;AAAA,EACd,SAAS;AAAA,EACT,sBAAsB;AAAA,EACtB,WAA0B;AAAA,EAC1B,aAA4B;AAAA,EAC5B,kBAAiC;AAAA,EACjC,SAAS;AAAA,EACT,iBAAiD;AAAA,EAE1C;AAAA,EACA;AAAA,EACT,cAA4B,CAAC;AAAA,EAC7B,kBAA2D,CAAC;AAAA,EAC5D,uBAA4C;AAAA,EAC5C,aAAiC;AAAA,EACjC,eAA8B,CAAC;AAAA,EAC/B,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB;AAAA,EAEE,WAAW,CACA,MACnB,QACA;AAAA,IAFmB;AAAA,IAGnB,KAAK,QAAQ,OAAO;AAAA,IACpB,KAAK,mBAAmB,OAAO;AAAA;AAAA,OAG3B,WAAU,GAA4B;AAAA,IAC1C,IAAI,KAAK,aAAa;AAAA,MACpB,MAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAAA,IACA,IAAI,KAAK,QAAQ;AAAA,MACf,MAAM,IAAI,MAAM,mBAAmB;AAAA,IACrC;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,OAAO,MAAM,KAAK,4BAA4B;AAAA,MACpD,KAAK,aAAa,KAAK;AAAA,MACvB,KAAK,UAAU,KAAK;AAAA,MACpB,KAAK,WAAW,KAAK,QAAQ;AAAA,MAC7B,KAAK,kBAAkB,KAAK,QAAQ;AAAA,MACpC,KAAK,aAAa,GAAG,KAAK,QAAQ,YAAY,KAAK,QAAQ;AAAA,MAC3D,KAAK,iBAAiB,KAAK,iBAAiB;AAAA,MAC5C,KAAK,SACH,OAAO,KAAK,UAAU,WAClB,KAAK,QACL,OAAO,KAAK,gBAAgB,UAAU,WACpC,KAAK,eAAe,QACpB;AAAA,MACR,KAAK,YAAY,KAAK;AAAA,MACtB,KAAK,uBAAuB,KAAK,WAAW,UAAU,KAAK,qBAAqB;AAAA,MAChF,KAAK,cAAc;AAAA,MAEnB,MAAM,KAAK,wBAAwB;AAAA,MACnC,MAAM,KAAK,2BAA2B;AAAA,MAEtC,MAAM,cAA8B;AAAA,QAClC,MAAM;AAAA,QACN,SAAS,KAAK,QAAQ;AAAA,QACtB,WAAW,KAAK;AAAA,QAChB,gBAAgB,KAAK,QAAQ;AAAA,QAC7B,OAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,KAAK,cAAc;AAAA,QAAW,YAAY,QAAQ,KAAK;AAAA,MAC3D,IAAI,KAAK,iBAAiB,WAAW;AAAA,QACnC,YAAY,eAAe,KAAK;AAAA,MAClC;AAAA,MACA,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,KAAK,MAAM;AAAA,MACX,MAAM;AAAA;AAAA;AAAA,OAIJ,KAAI,CAAC,SAAqC;AAAA,IAC9C,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,SAAS;AAAA,MACrC,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IAEA,MAAM,KAAK,WAAW;AAAA,IAEtB,MAAM,OAAO,KAAK,cAAc,KAAK,OAAO;AAAA,IAC5C,IAAI;AAAA,MACF,KAAK,WAAW,gBAAgB,KAAK,SAAS,SAAS;AAAA,QACrD,iBAAiB,KAAK;AAAA,MACxB,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,kBAAkB,IAAI;AAAA,MAC3B,MAAM;AAAA;AAAA;AAAA,OAIJ,QAAO,CACX,SACA,WAA2B,CAAC,GACD;AAAA,IAC3B,IAAI,KAAK,cAAc,KAAK,aAAa,SAAS,GAAG;AAAA,MACnD,MAAM,IAAI,MACR,wCAAwC,KAAK,4EAC/C;AAAA,IACF;AAAA,IACA,MAAM,KAAK,KAAK,OAAO;AAAA,IACvB,iBAAiB,OAAO,KAAK,OAAO,GAAG;AAAA,MACrC,IAAI,IAAI,SAAS,UAAU;AAAA,QACzB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,MACX,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY,KAAK,IAAI,IAAI,KAAK;AAAA,MAC9B,gBAAgB,KAAK;AAAA,IACvB;AAAA;AAAA,SAGK,MAAM,GAA+B;AAAA,IAC1C,OAAO,MAAM;AAAA,MACX,MAAM,MAAM,MAAM,KAAK,YAAY;AAAA,MACnC,IAAI,CAAC;AAAA,QAAK;AAAA,MACV,MAAM;AAAA,MACN,IAAI,IAAI,SAAS;AAAA,QAAU;AAAA,IAC7B;AAAA;AAAA,OAGI,MAAK,GAAkB;AAAA,IAC3B,IAAI,CAAC,KAAK;AAAA,MAAa;AAAA,IACvB,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK;AAAA,MAAS;AAAA,IACvC,IAAI,KAAK;AAAA,MAAY,KAAK,WAAW,iBAAiB;AAAA,IACtD,MAAM,KAAK,WAAW,MAAM,KAAK,OAAO;AAAA;AAAA,OAQpC,YAAsE,CAC1E,SACA,SAC2B;AAAA,IAC3B,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,KAAK,YAAY;AAAA,MACpB,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IACA,IAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AAAA,MACrE,MAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAAA,IACA,IAAI,OAAO,QAAQ,SAAS,YAAY,QAAQ,KAAK,WAAW,GAAG;AAAA,MACjE,MAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AAAA,IAEA,IAAI,CAAC,WAAY,CAAC,QAAQ,gBAAgB,CAAC,QAAQ,aAAa,QAAQ,cAAc,WAAY;AAAA,MAChG,KAAK,WAAW,KAAK,OAAO;AAAA,MAC5B;AAAA,IACF;AAAA,IAEA,QAAQ,SAAS,SAAS;AAAA,IAC1B,MAAM,WAAW,MAAM,KAAK,WAAW,QAAQ,MAAM,MAAM;AAAA,SACrD,QAAQ,cAAc,YAAY,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC;AAAA,MAC1E,WAAW,QAAQ,YACf,CAAC,YAAY,QAAQ,YAAY,OAA6B,MAAM,OACpE,QAAQ,eACN,CAAC,YAAY,QAAQ,SAAS,QAAQ,eACtC;AAAA,IACR,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,OAGH,WAAU,GAA8B;AAAA,IAC5C,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,KAAK,YAAY;AAAA,MACpB,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IACA,OAAO,KAAK,WAAW,WAAW;AAAA;AAAA,OAG9B,YAAW,CAAC,QAAiE;AAAA,IACjF,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,SAAS;AAAA,MACrC,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IAEA,MAAM,aAAa,0BAA0B,MAAM;AAAA,IACnD,MAAM,UAAU,MAAM,KAAK,0BAA0B,UAAU;AAAA,IAC/D,MAAM,SAAS,MAAM,KAAK,WAAW,YAAY,KAAK,SAAS,OAAO;AAAA,IAEtE,IAAI,OAAO,gBAAgB,WAAW;AAAA,MACpC,KAAK,SAAS,OAAO;AAAA,IACvB,EAAO,SAAI,QAAQ,iBAAiB,WAAW;AAAA,MAC7C,KAAK,SAAS,QAAQ;AAAA,IACxB,EAAO,SAAI,OAAO,OAAO,eAAe,UAAU,UAAU;AAAA,MAC1D,KAAK,SAAS,OAAO,cAAc;AAAA,IACrC;AAAA,IACA,IAAI,mBAAmB,QAAQ;AAAA,MAC7B,KAAK,iBAAiB,OAAO,iBAAiB;AAAA,IAChD;AAAA,IACA,OAAO;AAAA;AAAA,OAGH,wBAAuB,CAC3B,UAA0C,CAAC,GACH;AAAA,IACxC,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,SAAS;AAAA,MACrC,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IACA,OAAO,KAAK,WAAW,wBAAwB,KAAK,SAAS,OAAO;AAAA;AAAA,OAGhE,aAAY,CAAC,UAA+B,CAAC,GAAgC;AAAA,IACjF,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,KAAK,YAAY;AAAA,MACpB,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IACA,MAAM,iBAAiB,QAAQ,kBAAkB,KAAK;AAAA,IACtD,IAAI,CAAC,gBAAgB;AAAA,MACnB,MAAM,IAAI,MAAM,iDAAiD;AAAA,IACnE;AAAA,IACA,OAAO,KAAK,WAAW,aAAa,gBAAgB,OAAO;AAAA;AAAA,OAGvD,eAAc,CAClB,UAAiC,CAAC,GACH;AAAA,IAC/B,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,MAAM,OAAO,MAAM,KAAK,aAAa;AAAA,MACnC,OAAO,QAAQ;AAAA,MACf,OAAO,QAAQ;AAAA,IACjB,CAAC;AAAA,IAED,MAAM,QAA8B;AAAA,MAClC,SAAS,KAAK,YAAY;AAAA,MAC1B,gBAAgB,KAAK,mBAAmB;AAAA,MACxC,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,IACjB;AAAA,IACA,IAAI,KAAK,cAAc,WAAW;AAAA,MAChC,MAAM,QAAQ,KAAK;AAAA,IACrB;AAAA,IACA,IAAI,KAAK,eAAe,WAAW;AAAA,MACjC,MAAM,aAAa,KAAK;AAAA,IAC1B;AAAA,IACA,IAAI,KAAK,YAAY,WAAW;AAAA,MAC9B,MAAM,UAAU,KAAK;AAAA,IACvB;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,KAAK,GAAS;AAAA,IACZ,IAAI,KAAK;AAAA,MAAQ;AAAA,IACjB,KAAK,SAAS;AAAA,IACd,KAAK,uBAAuB;AAAA,IAC5B,KAAK,uBAAuB;AAAA,IAC5B,IAAI,KAAK,YAAY;AAAA,MAAS,aAAa,KAAK,WAAW,OAAO;AAAA,IAClE,WAAW,QAAQ,KAAK,cAAc;AAAA,MACpC,IAAI,KAAK;AAAA,QAAS,aAAa,KAAK,OAAO;AAAA,IAC7C;AAAA,IACA,KAAK,aAAa;AAAA,IAClB,KAAK,aAAa,SAAS;AAAA,IAC3B,KAAK,YAAY,MAAM;AAAA,IACvB,KAAK,aAAa;AAAA,IAClB,KAAK,YAAY;AAAA,IACjB,KAAK,WAAW,IAAI;AAAA;AAAA,MAGlB,OAAO,GAAkB;AAAA,IAC3B,OAAO,KAAK;AAAA;AAAA,MAGV,SAAS,GAAkB;AAAA,IAC7B,OAAO,KAAK;AAAA;AAAA,MAGV,cAAc,GAAkB;AAAA,IAClC,OAAO,KAAK;AAAA;AAAA,QAGP,OAAO,aAAa,GAAkB;AAAA,IAC3C,KAAK,MAAM;AAAA;AAAA,OAGP,kBAAiB,CACrB,SAMe;AAAA,IACf,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,SAAS;AAAA,MACrC,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IACA,MAAM,UAAmC,CAAC;AAAA,IAC1C,IAAI,QAAQ,QAAQ;AAAA,MAAW,QAAQ,MAAM,QAAQ;AAAA,IACrD,IAAI,QAAQ,mBAAmB,WAAW;AAAA,MACxC,MAAM,OAAO,kBAAkB,QAAQ,cAAc;AAAA,MACrD,IAAI,SAAS;AAAA,QAAW,QAAQ,OAAO;AAAA,IACzC;AAAA,IACA,IAAI,QAAQ,YAAY;AAAA,MAAW,QAAQ,WAAW,QAAQ;AAAA,IAC9D,IAAI,QAAQ,mBAAmB;AAAA,MAAW,QAAQ,kBAAkB,QAAQ;AAAA,IAE5E,KAAK,WAAW,KAAK;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,KAAK;AAAA,MACd;AAAA,IACF,CAAC;AAAA;AAAA,OAGG,cAAa,CAAC,mBAA0C;AAAA,IAC5D,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IACA,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK,SAAS;AAAA,MACrC,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IACA,MAAM,WAAW,MAAM,KAAK,WAAW,QACrC,kBACA;AAAA,MACE,SAAS,KAAK;AAAA,MACd,oBAAoB;AAAA,IACtB,GACA,EAAE,WAAW,CAAC,YAAY,QAAQ,SAAS,0BAA0B,CACvE;AAAA,IACA,cAAc,UAAU,0BAA0B;AAAA;AAAA,OAKpC,wBAAuB,GAAkB;AAAA,OAIzC,WAAU,GAAkB;AAAA,EAIlC,WAAW,GAAS;AAAA,EAIpB,cAAc,GAAuD;AAAA,IAC7E,OAAO,KAAK,KAAK;AAAA;AAAA,EAGT,iBAAiB,CAAC,SAAsE;AAAA,IAEhG,OAAO;AAAA;AAAA,EAGC,eAAe,GAA4B;AAAA,IACnD,IAAI,CAAC,KAAK;AAAA,MAAS,OAAO,CAAC;AAAA,IAC3B,OAAO,EAAE,UAAU,KAAK,QAAQ,SAAS;AAAA;AAAA,EAGjC,QAAQ,CAAC,OAAqB;AAAA,IACtC,KAAK,SAAS;AAAA;AAAA,EAGR,aAAa,CAAC,SAAoC;AAAA,IACxD,MAAM,OAAoB;AAAA,MACxB,IAAI,EAAE,KAAK;AAAA,MACX;AAAA,MACA,iBAAiB,eAAe,KAAK,IAAI,KAAK,EAAE,KAAK;AAAA,MACrD,UAAU,KAAK,IAAI;AAAA,MACnB,WAAW;AAAA,MACX,eAAe;AAAA,MACf,QAAQ,IAAI;AAAA,MACZ,sBAAsB;AAAA,MACtB,8BAA8B;AAAA,MAC9B,gBAAgB;AAAA,MAChB,SAAS;AAAA,IACX;AAAA,IAEA,IAAI,KAAK,YAAY;AAAA,MACnB,KAAK,aAAa,KAAK,IAAI;AAAA,IAC7B,EAAO;AAAA,MACL,KAAK,aAAa,IAAI;AAAA;AAAA,IAExB,OAAO;AAAA;AAAA,EAGD,YAAY,CAAC,MAAyB;AAAA,IAC5C,KAAK,aAAa;AAAA,IAClB,KAAK,YAAY,KAAK,IAAI;AAAA,IAC1B,KAAK,sBAAsB,KAAK;AAAA,IAChC,IAAI,KAAK,qBAAqB,WAAW;AAAA,MACvC,KAAK,UAAU,WAAW,MAAM;AAAA,QAC9B,KAAK,SAAS,MAAM,yBAAyB,KAAK,YAAY;AAAA,SAC7D,KAAK,gBAAgB;AAAA,MACvB,KAAK,QAAmC,QAAQ;AAAA,IACnD;AAAA;AAAA,EAGM,4BAA4B,GAAuB;AAAA,IACzD,IAAI,KAAK;AAAA,MAAY,OAAO,KAAK;AAAA,IACjC,MAAM,OAAO,KAAK,aAAa,MAAM;AAAA,IACrC,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAClB,KAAK,aAAa,IAAI;AAAA,IACtB,OAAO;AAAA;AAAA,EAGD,iBAAiB,CAAC,MAAyB;AAAA,IACjD,IAAI,KAAK;AAAA,MAAS,aAAa,KAAK,OAAO;AAAA,IAC3C,IAAI,KAAK,eAAe,MAAM;AAAA,MAC5B,KAAK,aAAa;AAAA,MAClB;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,KAAK,aAAa,QAAQ,IAAI;AAAA,IAC5C,IAAI,UAAU;AAAA,MAAI,KAAK,aAAa,OAAO,OAAO,CAAC;AAAA;AAAA,EAG7C,QAAQ,CAAC,MAAmB,QAAsB;AAAA,IACxD,IAAI,KAAK,eAAe;AAAA,MAAM;AAAA,IAC9B,KAAK,QAAQ;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa;AAAA,IACf,CAAC;AAAA,IACD,KAAK,mBAAmB;AAAA,MACtB,SAAS,KAAK;AAAA,MACd,YAAY;AAAA,MACZ,QAAQ,CAAC,GAAG,KAAK,MAAM;AAAA,MACvB,SAAS;AAAA,MACT;AAAA,MACA,WAAW;AAAA,IACb,CAAC;AAAA;AAAA,EAGK,kBAAkB,CAAC,MAA+B;AAAA,IACxD,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,CAAC;AAAA,MAAQ;AAAA,IACb,IAAI,OAAO,SAAS;AAAA,MAClB,aAAa,OAAO,OAAO;AAAA,MAC3B,OAAO,UAAU;AAAA,IACnB;AAAA,IACA,KAAK,QAAQ,KAAK,eAAe,MAAM,MAAM,CAAC;AAAA,IAC9C,KAAK,aAAa;AAAA;AAAA,OAGN,0BAAyB,CACrC,OAC6B;AAAA,IAC7B,IAAI,MAAM,oBAAoB,WAAW;AAAA,MACvC,OAAO,6BAA6B,KAAK;AAAA,IAC3C;AAAA,IACA,IAAI,CAAC,KAAK,YAAY;AAAA,MACpB,MAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAAA,IAEA,MAAM,UAAU,MAAM,KAAK,WAAW,WAAW;AAAA,IACjD,MAAM,OAAO,IAAI,IAAI,QAAQ,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;AAAA,IACtE,MAAM,UAAU,QAAQ;AAAA,IAExB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IAEJ,IAAI,MAAM,YAAY,WAAW;AAAA,MAC/B,YAAY,KAAK,IAAI,MAAM,OAAO;AAAA,MAClC,iBAAiB,MAAM;AAAA,MACvB,eAAe,WAAW,UAAU,kBAAkB,MAAM,aAAa,OAAO;AAAA,IAClF,EAAO,SAAI,MAAM,gBAAgB,WAAW;AAAA,MAC1C,iBAAiB,MAAM;AAAA,MACvB,eAAe,kBAAkB,MAAM,aAAa,OAAO;AAAA,IAC7D,EAAO,SAAI,MAAM,UAAU,WAAW;AAAA,MACpC,YAAY,KAAK,IAAI,MAAM,KAAK;AAAA,MAChC,IAAI,WAAW;AAAA,QACb,eAAe,UAAU;AAAA,MAC3B,EAAO;AAAA,QACL,iBAAiB,MAAM;AAAA,QACvB,eAAe,kBAAkB,MAAM,OAAO,OAAO;AAAA;AAAA,IAEzD,EAAO;AAAA,MACL,iBAAiB,KAAK,UAAU;AAAA,MAChC,eAAe,kBAAkB,KAAK,UAAU,WAAW,OAAO;AAAA;AAAA,IAGpE,IAAI,CAAC,cAAc;AAAA,MACjB,MAAM,IAAI,MAAM,iFAAiF;AAAA,IACnG;AAAA,IAEA,MAAM,aAAa,QAAQ,QAAQ,OACjC,CAAC,UAAU,MAAM,WAAW,gBAAgB,MAAM,WAAW,cAC/D;AAAA,IACA,IAAI,WAAW,WAAW,GAAG;AAAA,MAC3B,MAAM,IAAI,MACR,kFAAkF,eACpF;AAAA,IACF;AAAA,IAEA,MAAM,gBACJ,iBAAiB,WAAW,UAAU,KAAK,iBAAiB,KAAK,cAAc;AAAA,IACjF,MAAM,mBAAmB,sBAAsB,YAAY,aAAa;AAAA,IACxE,MAAM,gBACJ,iBAAiB,KAAK,CAAC,UAAU,mBAAmB,KAAK,MAAM,MAAM,eAAe,KACpF,WAAW,KAAK,CAAC,UAAU,mBAAmB,KAAK,MAAM,MAAM,eAAe;AAAA,IAEhF,IAAI,CAAC,eAAe;AAAA,MAClB,MAAM,IAAI,MACR,MAAM,MAAM,kDAAkD,eAChE;AAAA,IACF;AAAA,IAEA,MAAM,UAA8B,EAAE,UAAU,cAAc,GAAG;AAAA,IACjE,IAAI,mBAAmB,WAAW;AAAA,MAChC,QAAQ,eAAe;AAAA,IACzB;AAAA,IACA,OAAO;AAAA;AAAA,OAGO,2BAA0B,GAAkB;AAAA,IAC1D,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK;AAAA,MAAS;AAAA,IAEvC,MAAM,UAAU,KAAK,eAAe;AAAA,IAEpC,IAAI,KAAK,kBAAkB,OAAO,GAAG;AAAA,MACnC,MAAM,WAAW,MAAM,KAAK,WAAW,QACrC,gBACA,KAAK,gBAAgB,GACrB;AAAA,QACE,WAAW,CAAC,YAAY,QAAQ,SAAS;AAAA,QAIzC,WAAW;AAAA,MACb,CACF;AAAA,MACA,cAAc,UAAU,wBAAwB;AAAA,IAClD;AAAA,IAEA,MAAM,mBAAmB,wBAAwB,QAAQ,QAAQ;AAAA,IACjE,IAAI,kBAAkB;AAAA,MACpB,MAAM,WAAW,MAAM,KAAK,WAAW,QACrC,2BACA;AAAA,QACE,SAAS,KAAK;AAAA,QACd,UAAU;AAAA,QACV,OAAO;AAAA,MACT,GACA,EAAE,WAAW,CAAC,YAAY,QAAQ,SAAS,mCAAmC,CAChF;AAAA,MACA,cAAc,UAAU,oCAAoC;AAAA,IAC9D;AAAA,IAEA,IAAI,KAAK,KAAK,SAAS;AAAA,MAAW;AAAA,IAElC,IACE,KAAK,KAAK,QAAQ,UAAU,aAC5B,KAAK,KAAK,QAAQ,oBAAoB,WACtC;AAAA,MACA,MAAM,KAAK,YAAY;AAAA,WACjB,KAAK,KAAK,QAAQ,UAAU,YAAY,EAAE,OAAO,KAAK,KAAK,QAAQ,MAAM,IAAI,CAAC;AAAA,WAC9E,KAAK,KAAK,QAAQ,oBAAoB,YACtC,EAAE,iBAAiB,KAAK,KAAK,QAAQ,gBAAgB,IACrD,CAAC;AAAA,MACP,CAAC;AAAA,IACH;AAAA;AAAA,EAOM,wBAAwB,CAAC,YAAmC;AAAA,IAClE,IAAI,CAAC,KAAK,WAAW,CAAC,YAAY,SAAS,KAAK,OAAO;AAAA,MAAG;AAAA,IAE1D,IAAI,QAAQ,SAAS,gBAAgB;AAAA,MACnC,MAAM,cAAoC;AAAA,QACxC,MAAM;AAAA,QACN,OAAO,WAAW,OAAO;AAAA,MAC3B;AAAA,MACA,KAAK,QAAQ,WAAU;AAAA,MACvB;AAAA,IACF;AAAA,IAEA,IAAI,QAAQ,SAAS,sBAAsB;AAAA,MACzC,KAAK,wBAAwB,OAAO;AAAA,MACpC;AAAA,IACF;AAAA,IAEA,MAAM,QAAQ,kBAAkB,OAAO;AAAA,IACvC,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,MAAM,SAAS,KAAK,6BAA6B;AAAA,IACjD,IAAI,QAAQ;AAAA,MACV,OAAO,uBAAuB;AAAA,MAC9B,MAAM,QAAQ,iBAAiB,KAAK;AAAA,MACpC,IAAI;AAAA,QAAO,OAAO,OAAO,IAAI,KAAK;AAAA,IACpC;AAAA,IAEA,MAAM,aAAa,KAAK,qBAAqB,KAAK;AAAA,IAClD,IAAI,YAAY;AAAA,MACd,KAAK,QAAQ,UAAU;AAAA,IACzB;AAAA,IAEA,KAAK,wBAAwB,OAAO,UAAU;AAAA;AAAA,EAGxC,uBAAuB,CAAC,SAAgC;AAAA,IAC9D,MAAM,SAAS,gBAAgB,OAAO;AAAA,IACtC,IAAI,CAAC;AAAA,MAAQ;AAAA,IACb,MAAM,eAAe,iBAAiB,OAAO;AAAA,IAC7C,MAAM,aAAmC;AAAA,MACvC,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,UAAU;AAAA,IAEvB,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,CAAC;AAAA,MAAQ;AAAA,IACb,WAAW,SAAS;AAAA,MAAc,OAAO,OAAO,IAAI,KAAK;AAAA,IAEzD,MAAM,kBAAkB,OAAO,wBAAwB,OAAO;AAAA,IAC9D,IAAI,CAAC;AAAA,MAAiB;AAAA,IACtB,IAAI,WAAW,uBAAuB;AAAA,MACpC,KAAK,mBAAmB;AAAA,QACtB,SAAS,OAAO;AAAA,QAChB,YAAY;AAAA,QACZ,QAAQ,CAAC,GAAG,OAAO,MAAM;AAAA,MAC3B,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,IAAI,WAAW,sBAAsB,OAAO,gBAAgB;AAAA,MAC1D,KAAK,mBAAmB;AAAA,QACtB,SAAS,OAAO;AAAA,QAChB,YAAY;AAAA,QACZ,QAAQ,CAAC,GAAG,OAAO,MAAM;AAAA,QACzB,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,WAAW;AAAA,MACb,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,IAAI,WAAW,sBAAsB,OAAO,sBAAsB;AAAA,MAChE,KAAK,mBAAmB;AAAA,QACtB,SAAS,OAAO;AAAA,QAChB,YAAY;AAAA,QACZ,QAAQ,CAAC,GAAG,OAAO,MAAM;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA;AAAA,EAGM,uBAAuB,CAC7B,OACA,YACM;AAAA,IACN,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,CAAC;AAAA,MAAQ;AAAA,IACb,MAAM,cAAc,uBAAuB,KAAK;AAAA,IAChD,IAAI,gBAAgB,eAAe;AAAA,MACjC,MAAM,aAAa,sBAAsB,KAAK,KAAK;AAAA,MACnD,IAAI,eAAe,qBAAqB;AAAA,QACtC,OAAO,+BAA+B;AAAA,QACtC;AAAA,MACF;AAAA,MACA,KAAK,mBAAmB;AAAA,QACtB,SAAS,OAAO;AAAA,QAChB;AAAA,QACA,QAAQ,CAAC,GAAG,OAAO,MAAM;AAAA,MAC3B,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IAEA,IAAI,YAAY,SAAS,SAAS;AAAA,MAChC,KAAK,mBAAmB;AAAA,QACtB,SAAS,OAAO;AAAA,QAChB,YAAY,WAAW;AAAA,QACvB,QAAQ,CAAC,GAAG,OAAO,MAAM;AAAA,QACzB,SAAS;AAAA,QACT,QAAQ,WAAW,eAAe,WAAW;AAAA,QAC7C,WAAW,WAAW;AAAA,MACxB,CAAC;AAAA,IACH;AAAA;AAAA,EAGM,oBAAoB,CAAC,OAAmD;AAAA,IAC9E,MAAM,cAAc,OAAO,MAAM,iBAAiB,WAAW,MAAM,eAAe;AAAA,IAClF,MAAM,QAAQ,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;AAAA,IAChE,MAAM,OAAO,OAAO,MAAM,OAAO,WAAW,MAAM,KAAK,GAAG,KAAK,SAAS,EAAE,KAAK;AAAA,IAE/E,IAAI,gBAAgB,qBAAqB;AAAA,MACvC,MAAM,UAAU,uBAAuB,MAAM,OAAO;AAAA,MACpD,IAAI,CAAC;AAAA,QAAS,OAAO;AAAA,MACrB,IAAI,KAAK;AAAA,QAAY,KAAK,WAAW,iBAAiB;AAAA,MACtD,OAAO,EAAE,MAAM,aAAa,SAAS,MAAM,MAAM;AAAA,IACnD;AAAA,IAEA,IAAI,gBAAgB,qBAAqB;AAAA,MACvC,MAAM,UAAU,OAAO,MAAM,cAAc,WACvC,MAAM,YACN,uBAAuB,MAAM,OAAO;AAAA,MACxC,IAAI,CAAC;AAAA,QAAS,OAAO;AAAA,MACrB,OAAO,EAAE,MAAM,aAAa,SAAS,MAAM,MAAM;AAAA,IACnD;AAAA,IAEA,IAAI,gBAAgB,uBAAuB,gBAAgB,4BAA4B;AAAA,MACrF,MAAM,WAAW,cAAc,KAAK;AAAA,MACpC,IAAI,CAAC;AAAA,QAAU,OAAO;AAAA,MACtB,MAAM,KAAK,SAAS,YAAY,OAAO,SAAS,aAAa,WACxD,SAAS,WACV;AAAA,MACJ,MAAM,cACH,OAAO,SAAS,iBAAiB,WAAW,SAAS,eAAe,eACpE,OAAO,SAAS,OAAO,WAAW,SAAS,KAAK;AAAA,MACnD,IAAI,CAAC,YAAY;AAAA,QACf,MAAM,SAAS,2BAA2B,qBAAqB;AAAA,QAC/D,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX,YAAY;AAAA,UACZ;AAAA,UACA,aAAa;AAAA,UACb,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,MAAM,YACH,OAAO,SAAS,SAAS,WAAW,SAAS,OAAO,eACpD,OAAO,IAAI,SAAS,WAAW,GAAG,OAAO,cAC1C;AAAA,MACF,QAAQ,OAAO,QAAQ,uBAAuB,SAAS,aAAa,IAAI,SAAS;AAAA,MACjF,OAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX,cAAc;AAAA,QACd;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IAEA,IAAI,gBAAgB,uBAAuB;AAAA,MACzC,MAAM,aAAa,gBAAgB,KAAK,KAAK;AAAA,MAC7C,MAAM,cACH,OAAO,MAAM,iBAAiB,WAAW,MAAM,eAAe,eAC9D,OAAO,WAAW,iBAAiB,WAAW,WAAW,eAAe;AAAA,MAC3E,IAAI,CAAC;AAAA,QAAY,OAAO;AAAA,MACxB,MAAM,UACJ,uBAAuB,MAAM,eAAe,WAAW,eAAe,WAAW,OAAO,KAAK;AAAA,MAC/F,MAAM,SAAS,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS,WAAW;AAAA,MAC5E,OAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,SAAS,WAAW;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IAEA,IAAI,gBAAgB,mBAAmB,gBAAgB,cAAc;AAAA,MACnE,MAAM,UACH,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS,eAClD,OAAO,MAAM,YAAY,WAAW,MAAM,UAAU,cACrD,GAAG,KAAK;AAAA,MACV,MAAM,cACH,OAAO,MAAM,gBAAgB,WAAW,MAAM,cAAc,eAC5D,OAAO,MAAM,eAAe,WAAW,MAAM,aAAa,cAC3D;AAAA,MACF,MAAM,mBAAmB,yBAAyB;AAAA,QAChD;AAAA,QACA,SAAS,OAAO,MAAM,YAAY,WAAW,MAAM,UAAU;AAAA,QAC7D;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW,mBAAmB,sBAAsB,eAAe,UAAU;AAAA,QAC7E,kBAAkB,oBAAoB;AAAA,QACtC,aAAa,mBAAmB,OAAO;AAAA,QACvC,aAAa;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IAEA,IAAI,gBAAgB,SAAS;AAAA,MAC3B,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;AAAA,QAC1D,SAAS,OAAO,MAAM,YAAY,WAAW,MAAM,UAAU;AAAA,QAC7D,aAAa,OAAO,MAAM,iBAAiB,WAAW,MAAM,eAAe;AAAA,QAC3E,SAAS,OAAO,MAAM,aAAa,WAAW,MAAM,WAAW;AAAA,QAC/D;AAAA,MACF;AAAA,IACF;AAAA,IAEA,IAAI,gBAAgB,iBAAiB,gBAAgB,QAAQ;AAAA,MAC3D,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP;AAAA,IACF;AAAA;AAAA,EAGM,cAAc,CAAC,MAAyB,SAAyC;AAAA,IACvF,MAAM,aAAa,KAAK,eAAe,KAAK,YAAY,QAAQ,UAAU;AAAA,IAC1E,MAAM,mBAAmB,yBAAyB;AAAA,MAChD,QAAQ,KAAK;AAAA,MACb;AAAA,IACF,CAAC;AAAA,IACD,MAAM,UAAU,KAAK,YAAY,YAC7B,KAAK,WAAW,CAAC,oBAAoB,CAAC,qBAAqB,IAAI,cAAc,EAAE,IAC/E,CAAC,oBAAoB,CAAC,qBAAqB,IAAI,cAAc,EAAE;AAAA,IACnE,MAAM,YAAY,mBACd,sBACC,KAAK,aAAa,eAAe,UAAU;AAAA,IAEhD,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,MACA,QAAQ,UAAW,SAAS,iBAAiB,YAAa;AAAA,MAC1D,OAAO,UAAU,YAAa,aAAa,cAAc;AAAA,MACzD,WAAW,UAAU,YAAa,aAAa;AAAA,MAC/C,kBAAkB,oBAAoB;AAAA,MACtC,aAAa,mBAAmB,OAAO,UAAU,YAAY;AAAA,MAC7D,aAAa,UAAU,YAAY,KAAK;AAAA,MACxC;AAAA,MACA,YAAY,KAAK,IAAI,KAAK,SAAS,aAAa,KAAK;AAAA,MACrD,gBAAgB,KAAK,QAAQ;AAAA,MAC7B,QAAQ,KAAK,OAAO,SAAS,IAAI,KAAK,SAAS;AAAA,IACjD;AAAA;AAAA,EAGM,OAAO,CAAC,SAA2B;AAAA,IACzC,MAAM,WAAW,KAAK,gBAAgB,MAAM;AAAA,IAC5C,IAAI,UAAU;AAAA,MACZ,SAAS,OAAO;AAAA,MAChB;AAAA,IACF;AAAA,IACA,KAAK,YAAY,KAAK,OAAO;AAAA;AAAA,EAGvB,WAAW,GAA+B;AAAA,IAChD,MAAM,OAAO,KAAK,YAAY,MAAM;AAAA,IACpC,IAAI;AAAA,MAAM,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACrC,IAAI,KAAK;AAAA,MAAQ,OAAO,QAAQ,QAAQ,IAAI;AAAA,IAC5C,OAAO,IAAI,QAAQ,CAAC,YAAY;AAAA,MAC9B,KAAK,gBAAgB,KAAK,OAAO;AAAA,KAClC;AAAA;AAAA,EAGK,UAAU,CAAC,OAAgC;AAAA,IACjD,WAAW,WAAW,KAAK,gBAAgB,OAAO,CAAC,GAAG;AAAA,MACpD,QAAQ,KAAK;AAAA,IACf;AAAA;AAEJ;;;ADl2CA,SAAS,MAAM,CAAC,QAAgB,MAAiB;AAAA,EAC/C,IAAI,QAAQ,IAAI;AAAA,IAAW,QAAQ,MAAM,oBAAoB,QAAQ,GAAG,IAAI;AAAA;AAG9E,IAAM,uBAAuB;AAE7B,SAAS,2BAA2B,CAAC,SAA0C;AAAA,EAC7E,OAAO,QAAQ,eAAe;AAAA;AAGhC,SAAS,wBAAwB,CAAC,MAAsC;AAAA,EACtE,MAAM,iBAA2B,CAAC;AAAA,EAClC,IAAI,eAAe;AAAA,EAEnB,WAAW,OAAO,QAAQ,CAAC,GAAG;AAAA,IAC5B,IAAI,QAAQ,sBAAsB;AAAA,MAChC,IAAI;AAAA,QAAc;AAAA,MAClB,eAAe;AAAA,IACjB;AAAA,IACA,eAAe,KAAK,GAAG;AAAA,EACzB;AAAA,EAEA,IAAI,CAAC,cAAc;AAAA,IACjB,eAAe,KAAK,oBAAoB;AAAA,EAC1C;AAAA,EAEA,OAAO;AAAA;AASF,SAAS,YAAY,CAAC,SAA2C;AAAA,EACtE,MAAM,OAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,wBAAwB,4BAA4B,OAAO;AAAA,EAGjE,IAAI,QAAQ,gBAAgB;AAAA,IAC1B,KAAK,KAAK,kBAAkB,QAAQ,cAAc;AAAA,EACpD,EAAO,SAAI,QAAQ,SAAS;AAAA,IAC1B,KAAK,KAAK,WAAW,QAAQ,OAAO;AAAA,IACpC,IAAI,QAAQ,iBAAiB;AAAA,MAC3B,KAAK,KAAK,OAAO;AAAA,IACnB,EAAO,SAAI,QAAQ,qBAAqB;AAAA,MACtC,KAAK,KAAK,kBAAkB,SAAS;AAAA,IACvC;AAAA,EACF,EAAO,SAAI,QAAQ,YAAY;AAAA,IAC7B,KAAK,KAAK,aAAa;AAAA,EACzB,EAAO,SAAI,QAAQ,iBAAiB;AAAA,IAClC,KAAK,KAAK,OAAO;AAAA,EACnB;AAAA,EAGA,IAAI,QAAQ,OAAO;AAAA,IACjB,KAAK,KAAK,MAAM,QAAQ,KAAK;AAAA,EAC/B;AAAA,EAGA,IAAI,QAAQ,wBAAwB;AAAA,IAClC,KAAK,KAAK,4BAA4B;AAAA,EACxC;AAAA,EAGA,IAAI,QAAQ,WAAW;AAAA,IACrB,KAAK,KAAK,eAAe,QAAQ,SAAS;AAAA,EAC5C;AAAA,EAGA,IAAI,QAAQ,iBAAiB,WAAW;AAAA,IACtC,IAAI,OAAO,QAAQ,iBAAiB,UAAU;AAAA,MAC5C,MAAM,eAAe;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,IAAI,aAAa,SAAS,QAAQ,YAAY,GAAG;AAAA,QAC/C,KAAK,KAAK,YAAY,QAAQ,YAAY;AAAA,MAC5C,EAAO;AAAA,QACL,KAAK,KAAK,mBAAmB,QAAQ,YAAY;AAAA;AAAA,IAErD,EAAO;AAAA,MACL,KAAK,KAAK,YAAY,QAAQ,aAAa,MAAM;AAAA,MACjD,IAAI,QAAQ,aAAa,QAAQ;AAAA,QAC/B,KAAK,KAAK,mBAAmB,QAAQ,aAAa,MAAM;AAAA,MAC1D;AAAA;AAAA,EAEJ;AAAA,EAGA,IAAI,QAAQ,WAAW,aAAa,CAAC,QAAQ,SAAS;AAAA,IACpD,IAAI,QAAQ,OAAO,WAAW,GAAG;AAAA,MAC/B,KAAK,KAAK,iBAAiB,EAAE;AAAA,IAC/B,EAAO;AAAA,MACL,MAAM,cAAwB,CAAC;AAAA,MAC/B,MAAM,mBAGF,CAAC;AAAA,MAEL,WAAW,QAAQ,QAAQ,QAAQ;AAAA,QACjC,IAAI,OAAO,SAAS,UAAU;AAAA,UAC5B,YAAY,KAAK,IAAI;AAAA,QACvB,EAAO,SAAI,aAAa,MAAM;AAAA,UAC5B,iBAAiB,KAAK,IAA2B;AAAA,QACnD,EAAO;AAAA,UACL,iBAAiB,KAAK,IAAwC;AAAA;AAAA,MAElE;AAAA,MAEA,IAAI,iBAAiB,SAAS,GAAG;AAAA,QAC/B,KAAK,KAAK,mBAAmB,KAAK,UAAU,gBAAgB,CAAC;AAAA,QAC7D,IAAI,YAAY,SAAS,GAAG;AAAA,UAC1B,QAAQ,KACN,mDACA,8DAA8D,YAAY,KAAK,IAAI,GACrF;AAAA,QACF;AAAA,MACF,EAAO,SAAI,YAAY,SAAS,GAAG;AAAA,QACjC,KAAK,KAAK,iBAAiB,YAAY,KAAK,GAAG,CAAC;AAAA,MAClD;AAAA;AAAA,EAEJ;AAAA,EAGA,IAAI,CAAC,QAAQ,SAAS;AAAA,IACpB,IAAI,QAAQ,YAAY,WAAW;AAAA,MACjC,KAAK,KAAK,iBAAiB,WAAW,QAAQ,SAAS;AAAA,IACzD;AAAA,IACA,IAAI,QAAQ,UAAU,WAAW;AAAA,MAC/B,KAAK,KAAK,iBAAiB,SAAS,QAAQ,OAAO;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,wBAAwB,QAAQ,cAAc;AAAA,EAC3D,IAAI,SAAS,WAAW;AAAA,IACtB,KAAK,KAAK,qBAAqB,IAAI;AAAA,EACrC;AAAA,EAGA,IAAI,QAAQ,cAAc;AAAA,IACxB,KAAK,KAAK,kBAAkB,QAAQ,aAAa,KAAK,GAAG,CAAC;AAAA,EAC5D;AAAA,EACA,IAAI,QAAQ,iBAAiB;AAAA,IAC3B,KAAK,KAAK,qBAAqB,QAAQ,gBAAgB,KAAK,GAAG,CAAC;AAAA,EAClE;AAAA,EAGA,MAAM,OAAO,wBACT,yBAAyB,QAAQ,IAAI,IACrC,QAAQ;AAAA,EACZ,IAAI,QAAQ,KAAK,SAAS,GAAG;AAAA,IAC3B,KAAK,KAAK,UAAU,KAAK,KAAK,GAAG,CAAC;AAAA,EACpC;AAAA,EAGA,IAAI,uBAAuB;AAAA,IACzB,KAAK,KAAK,SAAS;AAAA,EACrB;AAAA,EAGA,IAAI,QAAQ,iBAAiB,WAAW;AAAA,IACtC,MAAM,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,YAAY,CAAC;AAAA,IACjD,IAAI,QAAQ,WAAW,GAAG;AAAA,MACxB,KAAK,KAAK,aAAa;AAAA,IACzB,EAAO;AAAA,MACL,KAAK,KAAK,mBAAmB,QAAQ,KAAK,GAAG,CAAC;AAAA;AAAA,EAElD;AAAA,EAGA,IAAI,QAAQ,uBAAuB,OAAO;AAAA,IACxC,KAAK,KAAK,2BAA2B;AAAA,EACvC;AAAA,EAGA,IAAI,QAAQ,UAAU,YAAY,WAAW;AAAA,IAC3C,KAAK,KAAK,wBAAwB,QAAQ,SAAS,OAAO;AAAA,EAC5D;AAAA,EACA,IAAI,QAAQ,UAAU,aAAa,WAAW;AAAA,IAC5C,KAAK,KAAK,yBAAyB,QAAQ,SAAS,QAAQ;AAAA,EAC9D;AAAA,EACA,IAAI,QAAQ,UAAU,cAAc,WAAW;AAAA,IAC7C,KAAK,KAAK,2BAA2B,OAAO,QAAQ,SAAS,SAAS,CAAC;AAAA,EACzE;AAAA,EAEA,OAAO;AAAA;AAAA;AAGF,MAAM,oBAAoB;AAAA,EAYrB;AAAA,EAXF,UAA+B;AAAA,EAC/B,SAA2B;AAAA,EAC3B,eAA8B,CAAC;AAAA,EAC/B,mBAA6D,CAAC;AAAA,EAC9D,SAAS;AAAA,EACT;AAAA,EACA,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,cAAwB,CAAC;AAAA,EAEjC,WAAW,CACD,UAAkC,CAAC,GAC3C;AAAA,IADQ;AAAA;AAAA,OAMJ,QAAO,GAAkB;AAAA,IAC7B,MAAM,OAAO,KAAK,UAAU;AAAA,IAG5B,MAAM,UAAU,MAAM,KAAK,QAAQ;AAAA,IACnC,OAAO,WAAW,QAAQ,SAAS;AAAA,IACnC,OAAO,WAAW,SAAS,KAAK,KAAK,GAAG,GAAG;AAAA,IAC3C,OAAO,WAAW,QAAQ,KAAK,QAAQ,OAAO,QAAQ,IAAI,GAAG;AAAA,IAC7D,OAAO,WAAW,mBAAmB,KAAK,QAAQ,kBAAkB,WAAW;AAAA,IAE/E,KAAK,UAAU,MAAM,QAAQ,CAAC,SAAS,GAAG,IAAI,GAAG;AAAA,MAC/C,KAAK,KAAK,QAAQ,OAAO,QAAQ,IAAI;AAAA,MACrC,OAAO,CAAC,QAAQ,QAAQ,MAAM;AAAA,MAC9B,KAAK,KAAK,QAAQ,IAAI;AAAA,IACxB,CAAC;AAAA,IAED,MAAM,MAAM,KAAK,QAAQ;AAAA,IACzB,OAAO,WAAW,4BAA4B,KAAK;AAAA,IAEnD,IAAI,CAAC,KAAK,QAAQ,UAAU,CAAC,KAAK,QAAQ,OAAO;AAAA,MAC/C,MAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAAA,IAGA,KAAK,SAAS,gBAAgB;AAAA,MAC5B,OAAO,KAAK,QAAQ;AAAA,MACpB,WAAW;AAAA,IACb,CAAC;AAAA,IAED,KAAK,OAAO,GAAG,QAAQ,CAAC,SAAS;AAAA,MAC/B,IAAI,CAAC,KAAK,KAAK;AAAA,QAAG;AAAA,MAClB,IAAI;AAAA,QACF,MAAM,MAAM,KAAK,MAAM,IAAI;AAAA,QAC3B,KAAK,cAAc,GAAG;AAAA,QACtB,MAAM;AAAA,QAEN,OAAO,UAAU,cAAc,KAAK,MAAM,GAAG,GAAG,GAAG;AAAA;AAAA,KAEtD;AAAA,IAID,IAAI,KAAK,QAAQ,QAAQ;AAAA,MACvB,KAAK,QAAQ,OAAO,GAAG,QAAQ,CAAC,SAAiB;AAAA,QAC/C,MAAM,MAAM,KAAK,SAAS,EAAE,KAAK;AAAA,QACjC,IAAI,KAAK;AAAA,UACP,QAAQ,MAAM,iCAAiC,GAAG;AAAA,UAClD,KAAK,YAAY,KAAK,GAAG;AAAA,QAC3B;AAAA,OACD;AAAA,IACH;AAAA,IAUA,KAAK,QAAQ,GAAG,SAAS,CAAC,MAAM,WAAW;AAAA,MACzC,IAAI,SAAS,KAAK,SAAS,MAAM;AAAA,QAC/B,QAAQ,MAAM,kDAAkD,MAAM;AAAA,MACxE;AAAA,MACA,OAAO,SAAS,2BAA2B,YAAY,eAAe,uBAAuB,KAAK,mCAAmC,KAAK,gBAAgB,KAAK,IAAI,IAAI,KAAK,gBAAgB,sBAAsB,KAAK,iBAAiB,mBAAmB,KAAK,aAAa,QAAQ;AAAA,MACrR,KAAK,SAAS;AAAA,MAEd,WAAW,WAAW,KAAK,kBAAkB;AAAA,QAC3C,QAAQ,IAAI;AAAA,MACd;AAAA,MACA,KAAK,mBAAmB,CAAC;AAAA,KAC1B;AAAA,IAED,KAAK,QAAQ,GAAG,SAAS,CAAC,QAAQ;AAAA,MAChC,QAAQ,MAAM,wCAAwC,GAAG;AAAA,MACzD,KAAK,SAAS;AAAA,KACf;AAAA;AAAA,OAMG,MAAK,CAAC,MAA6B;AAAA,IACvC,IAAI,CAAC,KAAK,SAAS,SAAS,KAAK,QAAQ;AAAA,MACvC,MAAM,MAAM,IAAI,MAAM,mCAAmC,KAAK,eAAe,KAAK,SAAS,cAAc,CAAC,CAAC,KAAK,SAAS,QAAQ;AAAA,MACjI,OAAO,SAAS,IAAI,OAAO;AAAA,MAC3B,MAAM;AAAA,IACR;AAAA,IACA,MAAM,UAAU;AAAA,IAChB,OAAO,SAAS,QAAQ,QAAQ,gBAAiB,QAAQ,SAAqC,WAAY,QAAQ,UAAsC,WAAW,OAAO;AAAA,IAC1K,KAAK,QAAQ,MAAM,MAAM,KAAK,UAAU,IAAI,IAAI;AAAA,CAAI;AAAA;AAAA,OAMhD,KAAI,GAAgC;AAAA,IAExC,IAAI,KAAK,aAAa,SAAS,GAAG;AAAA,MAChC,OAAO,KAAK,aAAa,MAAM;AAAA,IACjC;AAAA,IAGA,IAAI,KAAK,QAAQ;AAAA,MACf,OAAO,QAAQ,+CAA+C,KAAK,kBAAkB;AAAA,MACrF,OAAO;AAAA,IACT;AAAA,IAGA,OAAO,QAAQ,uCAAuC,KAAK,iBAAiB,SAAS,YAAY,KAAK,aAAa,SAAS;AAAA,IAC5H,OAAO,IAAI,QAAQ,CAAC,YAAY;AAAA,MAC9B,KAAK,iBAAiB,KAAK,OAAO;AAAA,KACnC;AAAA;AAAA,SAMI,QAAQ,GAAgC;AAAA,IAC7C,OAAO,MAAM;AAAA,MACX,MAAM,MAAM,MAAM,KAAK,KAAK;AAAA,MAC5B,IAAI,QAAQ,MAAM;AAAA,QAChB,OAAO,YAAY,2BAA2B,KAAK,wBAAwB,KAAK,mBAAmB;AAAA,QACnG;AAAA,MACF;AAAA,MACA,MAAM;AAAA,IACR;AAAA;AAAA,EAMF,KAAK,GAAS;AAAA,IACZ,OAAO,SAAS,uCAAuC,KAAK,sCAAsC,KAAK,iBAAiB,eAAe,KAAK,SAAS,MAAM;AAAA,IAC3J,IAAI,KAAK,SAAS;AAAA,MAChB,KAAK,QAAQ,OAAO,IAAI;AAAA,MACxB,KAAK,QAAQ,KAAK;AAAA,MAClB,KAAK,UAAU;AAAA,IACjB;AAAA,IACA,KAAK,SAAS;AAAA,IAGd,WAAW,WAAW,KAAK,kBAAkB;AAAA,MAC3C,QAAQ,IAAI;AAAA,IACd;AAAA,IACA,KAAK,mBAAmB,CAAC;AAAA;AAAA,MAGvB,QAAQ,GAAY;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,EAId,SAAS,GAAW;AAAA,IAClB,OAAO,KAAK,YAAY,KAAK;AAAA,CAAI;AAAA;AAAA,EAG3B,aAAa,CAAC,KAAwB;AAAA,IAC5C,KAAK;AAAA,IACL,KAAK,gBAAgB,KAAK,IAAI;AAAA,IAG9B,MAAM,cAAc;AAAA,IACpB,MAAM,UAAU,YAAY,gBAAgB,YAAY,WAAW;AAAA,IACnE,OAAO,QAAQ,IAAI,KAAK,yBAAyB,IAAI,QAAQ,UAAU,YAAY,YAAY,gBAAgB,KAAK,iBAAiB,gBAAgB,KAAK,aAAa,QAAQ;AAAA,IAG/K,IAAI,IAAI,SAAS,UAAU;AAAA,MACzB,MAAM,SAAS;AAAA,MACf,OAAO,QAAQ,mBAAmB,OAAO,uBAAuB,OAAO,eAAe,kBAAkB,OAAO,2BAA2B,OAAO,QAAQ,UAAU,GAAG;AAAA,IACxK;AAAA,IAGA,IAAI,IAAI,SAAS,YAAY,aAAa,OAAO,IAAI,YAAY,QAAQ;AAAA,MACvE,KAAK,UAAW,IAAwC;AAAA,MACxD,OAAO,QAAQ,kBAAkB,KAAK,SAAS;AAAA,IACjD;AAAA,IAGA,IAAI,IAAI,SAAS,mBAAmB;AAAA,MAClC,MAAM,MAAM;AAAA,MACZ,OAAO,QAAQ,uBAAuB,IAAI,sBAAsB,IAAI,SAAS,gBAAgB,IAAI,SAAS,aAAa,OAAO;AAAA,IAChI;AAAA,IAGA,IAAI,KAAK,iBAAiB,SAAS,GAAG;AAAA,MACpC,MAAM,UAAU,KAAK,iBAAiB,MAAM;AAAA,MAC5C,QAAQ,GAAG;AAAA,IACb,EAAO;AAAA,MAEL,KAAK,aAAa,KAAK,GAAG;AAAA;AAAA;AAAA,EAItB,SAAS,GAAa;AAAA,IAC5B,OAAO,aAAa,KAAK,OAAO;AAAA;AAAA,OAKpB,QAAO,GAAoB;AAAA,IAEvC,QAAQ,eAAe,MAAa;AAAA,IACpC,QAAQ,SAAS,SAAS,MAAa;AAAA,IACvC,QAAQ,kBAAkB,MAAa;AAAA,IAGvC,IAAI,QAAQ,IAAI,kBAAkB,WAAW,QAAQ,IAAI,cAAc,GAAG;AAAA,MACxE,OAAO,QAAQ,IAAI;AAAA,IACrB;AAAA,IAKA,IAAI;AAAA,MACF,QAAQ,kCAAkB,MAAa;AAAA,MACvC,MAAM,WAAU,eAAc,YAAY,GAAG;AAAA,MAC7C,MAAM,WAAW,SAAQ,QAAQ,sBAAsB;AAAA,MACvD,IAAI,WAAW,QAAQ,GAAG;AAAA,QACxB,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,IAKR,MAAM,cAAa,cAAc,YAAY,GAAG;AAAA,IAChD,MAAM,aAAY,QAAQ,WAAU;AAAA,IACpC,MAAM,aAAa;AAAA,MACjB,KAAK,YAAW,qCAAqC;AAAA,MACrD,KAAK,YAAW,mCAAmC;AAAA,MACnD,KAAK,YAAW,8BAA8B;AAAA,IAChD;AAAA,IAEA,WAAW,KAAK,YAAY;AAAA,MAC1B,IAAI,WAAW,CAAC,GAAG;AAAA,QACjB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,MAAM,IAAI,MACR,+EACF;AAAA;AAEJ;;;AEvdA,IAAM,6BAA6B,IAAI,IAAI;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,2BAA2B,IAAI,IAAI,CAAC,mBAAmB,cAAc,CAAC;AAE5E,IAAM,4BAA4B,IAAI,IAAI,CAAC,eAAe,CAAC;AAMpD,SAAS,wBAAwB,CAAC,UAA2B;AAAA,EAClE,OAAO,yBAAyB,IAAI,QAAQ;AAAA;AAGvC,SAAS,uBAAuB,CAAC,UAA2B;AAAA,EACjE,OAAO,0BAA0B,IAAI,QAAQ;AAAA;;;ACyB/C,SAAS,UAAU,CAAC,QAAgB,MAAiB;AAAA,EACnD,IAAI,QAAQ,IAAI;AAAA,IAAW,QAAQ,MAAM,kBAAkB,QAAQ,GAAG,IAAI;AAAA;AAG5E,IAAM,+BAA+B;AACrC,IAAM,yCAAyC;AAC/C,IAAM,uCAAuC;AAE7C,IAAM,yBAAwB,IAAI,IAAkB;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAsC;AAAA,EACjE,OAAO,uBAAsB,IAAI,KAAqB;AAAA;AAGxD,SAAS,eAAc,CAAC,OAAqD;AAAA,EAC3E,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,IAAG;AAAA,EAClC,OAAO,oBAAoB,KAAK,IAAI,QAAQ;AAAA;AAG9C,SAAS,4BAA4B,CACnC,cACA,SACS;AAAA,EACT,IAAI,CAAC;AAAA,IAAc,OAAO;AAAA,EAC1B,OAAO,aACJ,YAAY,EACZ,SAAS,oCAAoC,UAAU,YAAY,CAAC;AAAA;AAGzE,SAAS,qBAAqB,CAAC,UAAmE;AAAA,EAChG,MAAM,SAAS,UAAU;AAAA,EACzB,IAAI,OAAO,WAAW;AAAA,IAAU;AAAA,EAChC,MAAM,UAAU,OAAO,KAAK;AAAA,EAC5B,OAAO,QAAQ,SAAS,IAAI,UAAU;AAAA;AAGxC,SAAS,yBAAwB,CAAC,QAItB;AAAA,EACV,IAAI,OAAO,eAAe;AAAA,IAAqB,OAAO;AAAA,EAGtD,MAAM,WAAW,CAAC,OAAO,QAAQ,OAAO,OAAO,EAC5C,OAAO,CAAC,UAA2B,OAAO,UAAU,YAAY,MAAM,SAAS,CAAC,EAChF,KAAK;AAAA,CAAI,EACT,YAAY;AAAA,EACf,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EACtB,OACE,SAAS,SAAS,qCAAqC,KACvD,SAAS,SAAS,2BAA2B,KAC7C,SAAS,SAAS,mBAAmB;AAAA;AAAA;AAUlC,MAAM,QAAmC;AAAA,EA6BpC;AAAA,EA5BF;AAAA,EACA,WAA0B;AAAA,EAC1B,aAA4B;AAAA,EAC5B,kBAAiC;AAAA,EACjC,cAAc;AAAA,EACd,gBAA2C,IAAI;AAAA,EAC/C,cAAuC,CAAC;AAAA,EACxC,kBAAsE,CAAC;AAAA,EACvE,cAAoC;AAAA,EACpC,aAAa;AAAA,EACb,wBAAwB;AAAA,EAKxB,iBAAiB;AAAA,EAGjB,sBAAsB,IAAI;AAAA,EAI1B,yBAAyB,IAAI;AAAA,EAKrC,WAAW,CACD,UAAkC,CAAC,GAC3C;AAAA,IADQ;AAAA,IAGR,IAAI,QAAQ,oBAAoB,WAAW;AAAA,MACzC,MAAM,IAAI,MACR,mIACF;AAAA,IACF;AAAA,IACA,KAAK,YAAY,IAAI,oBAAoB,OAAO;AAAA,IAGhD,IAAI,QAAQ,OAAO;AAAA,MACjB,WAAW,QAAQ,QAAQ,OAAO;AAAA,QAChC,KAAK,cAAc,IAAI,KAAK,MAAM,IAAI;AAAA,MACxC;AAAA,IACF;AAAA;AAAA,OAMI,WAAU,GAA4B;AAAA,IAC1C,IAAI,KAAK,aAAa;AAAA,MACpB,MAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAAA,IAEA,WAAW,QAAQ,yBAAyB;AAAA,IAC5C,MAAM,KAAK,UAAU,QAAQ;AAAA,IAC7B,WAAW,QAAQ,iDAAiD;AAAA,IAGpE,MAAM,KAAK,UAAU,MAAM;AAAA,MACzB,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,SAAS,EAAE,SAAS,aAAa;AAAA,IACnC,CAAC;AAAA,IAGD,WAAW,QAAQ,sCAAsC;AAAA,IACzD,iBAAiB,OAAO,KAAK,UAAU,SAAS,GAAG;AAAA,MACjD,WAAW,QAAQ,+BAA+B,IAAI,MAAM;AAAA,MAE5D,IAAI,IAAI,SAAS,mBAAmB;AAAA,QAClC,MAAM,UAAU,MAAM,KAAK,qBAAqB,GAAqB;AAAA,QACrE,IAAI,CAAC,SAAS;AAAA,UACZ,MAAM,aAAa;AAAA,UACnB,WAAW,QAAQ,gDAAiD,WAAW,SAAqC,WAAW,OAAO;AAAA,QACxI;AAAA,QACA;AAAA,MACF;AAAA,MAEA,IAAI,IAAI,SAAS,YAAY,aAAa,OAAO,IAAI,YAAY,QAAQ;AAAA,QACvE,MAAM,UAAU;AAAA,QAahB,KAAK,WAAW,QAAQ;AAAA,QACxB,KAAK,aAAa,QAAQ;AAAA,QAC1B,KAAK,kBAAkB,QAAQ;AAAA,QAC/B,KAAK,cAAc;AAAA,QACnB,KAAK,oBAAoB;AAAA,QAGzB,IAAI,KAAK,cAAc,OAAO,GAAG;AAAA,UAC/B,MAAM,KAAK,sBAAsB;AAAA,QACnC;AAAA,QAGA,MAAM,WAAW;AAAA,UACf,GAAG,QAAQ;AAAA,UACX,GAAG,MAAM,KAAK,KAAK,cAAc,KAAK,CAAC;AAAA,QACzC;AAAA,QAEA,WAAW,QAAQ,sBAAsB,QAAQ,yBAAyB,QAAQ,yBAAyB,QAAQ,eAAe,SAAS,WAAW,KAAK,cAAc,gBAAgB;AAAA,QAEzL,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,QAAQ;AAAA,UACjB,WAAW,QAAQ;AAAA,UACnB,gBAAgB,QAAQ;AAAA,UACxB,OAAO,QAAQ;AAAA,UACf,OAAO;AAAA,UACP,cAAc,QAAQ;AAAA,UACtB,cAAc,QAAQ;AAAA,UACtB,2BAA2B,QAAQ;AAAA,UACnC,UACE,QAAQ,sBACR,QAAQ,uBACR,OAAO,QAAQ,0BAA0B,WACrC;AAAA,YACE,SAAS,QAAQ;AAAA,YACjB,UAAU,QAAQ;AAAA,YAClB,WAAW,QAAQ;AAAA,UACrB,IACA;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,KAAK,UAAU,UAAU;AAAA,IACxC,MAAM,SAAS,SAAS;AAAA;AAAA,EAAkB,WAAW;AAAA,IACrD,WAAW,QAAQ,uDAAuD,QAAQ;AAAA,IAClF,MAAM,IAAI,MAAM,0DAA0D,QAAQ;AAAA;AAAA,OAmB9E,KAAI,CAAC,SAAqC;AAAA,IAC9C,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,WAAW,QAAQ,yCAAyC;AAAA,MAC5D,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IAEA,MAAM,UAAU,OAAO,YAAY,WAC/B,QAAQ,MAAM,GAAG,GAAG,IACpB,MAAM,QAAQ,OAAO,IAAI,gBAAgB,QAAQ,kBAAkB,OAAO,OAAO,EAAE,MAAM,GAAG,GAAG;AAAA,IACnG,WAAW,QAAQ,oBAAoB,UAAU,OAAO,YAAY,YAAY,QAAQ,SAAS,MAAM,QAAQ,IAAI;AAAA,IAGnH,IAAI,KAAK,YAAY,SAAS,GAAG;AAAA,MAC/B,WAAW,QAAQ,YAAY,KAAK,YAAY,0CAA0C;AAAA,MAC1F,KAAK,YAAY,SAAS;AAAA,IAC5B;AAAA,IAEA,MAAM,KAAK,UAAU,MAAM;AAAA,MACzB,MAAM;AAAA,MACN,SAAS,EAAE,MAAM,QAAQ,SAAS,QAAQ;AAAA,IAC5C,CAAC;AAAA,IAKD,KAAK;AAAA,IACL,WAAW,QAAQ,4CAA4C,KAAK,iBAAiB;AAAA;AAAA,OAOjF,QAAO,CACX,SACA,UAA0B,CAAC,GACA;AAAA,IAC3B,MAAM,8BACJ,KAAK,mCAAmC,OAAO;AAAA,IACjD,MAAM,oBAAoB,KAAK,iCAAiC,OAAO;AAAA,IAEvE,IAAI,mBAAmB;AAAA,IACvB,IAAI,SAAS,MAAM,KAAK,cAAc,OAAO;AAAA,IAE7C,OACE,CAAC,OAAO,WACR,OAAO,qBAAqB,QAC5B,mBAAmB,6BACnB;AAAA,MACA,oBAAoB;AAAA,MACpB,MAAM,WAAW,MAAM,KAAK,wBAAwB;AAAA,QAClD,WAAW;AAAA,MACb,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,WAAW;AAAA,QACvB,OAAO,KAAK,iCAAiC,QAAQ;AAAA,UACnD;AAAA,UACA,QAAQ,SAAS;AAAA,QACnB,CAAC;AAAA,MACH;AAAA,MAEA,SAAS,MAAM,KAAK,cAAc,OAAO;AAAA,IAC3C;AAAA,IAEA,IAAI,CAAC,OAAO,WAAW,OAAO,qBAAqB,MAAM;AAAA,MACvD,OAAO,KAAK,iCAAiC,QAAQ,EAAE,iBAAiB,CAAC;AAAA,IAC3E;AAAA,IAEA,IAAI,mBAAmB,GAAG;AAAA,MACxB,OAAO,mBAAmB;AAAA,IAC5B;AAAA,IAEA,OAAO;AAAA;AAAA,OAOH,wBAAuB,CAC3B,UAA0C,CAAC,GACH;AAAA,IACxC,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,KAAK,WAAW;AAAA,IACxB;AAAA,IAEA,MAAM,YACJ,QAAQ,aACR,KAAK,QAAQ,6BACb;AAAA,IAEF,IAAI,CAAC,OAAO,UAAU,SAAS,KAAK,aAAa,GAAG;AAAA,MAClD,MAAM,IAAI,MACR,iEACF;AAAA,IACF;AAAA,IAEA,MAAM,YAAY,qBAAqB,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC;AAAA,IAE1F,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,OAAO,MAAM,KAAK,uBAChB,WACA;AAAA,QACE,SAAS;AAAA,WACL,KAAK,WAAW,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC;AAAA,WAC/C,KAAK,kBAAkB,EAAE,iBAAiB,KAAK,gBAAgB,IAAI,CAAC;AAAA,MAC1E,GACA,EAAE,UAAU,CACd;AAAA,MACA,OAAO,OAAO;AAAA,MACd,MAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MACpE,OAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,QACb;AAAA,MACF;AAAA;AAAA,IAGF,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,MAAM,SAAS,KAAK,SAAS;AAAA,MAC7B,OAAO;AAAA,QACL,WAAW;AAAA,QACX,iBAAiB;AAAA,QACjB,aAAa,6BACX,QACA,2BACF;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,aAAa;AAAA,IACf;AAAA;AAAA,EAGM,kCAAkC,CAAC,SAAiC;AAAA,IAC1E,MAAM,QACJ,QAAQ,+BACR,KAAK,QAAQ,+BACb;AAAA,IAEF,IAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,GAAG;AAAA,MACzC,MAAM,IAAI,MACR,uEACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAGD,gCAAgC,CAAC,SAAiC;AAAA,IACxE,MAAM,QACJ,QAAQ,qBACR,KAAK,QAAQ,6BACb;AAAA,IAEF,IAAI,CAAC,OAAO,UAAU,KAAK,KAAK,SAAS,GAAG;AAAA,MAC1C,MAAM,IAAI,MACR,iEACF;AAAA,IACF;AAAA,IAEA,OAAO;AAAA;AAAA,EAGD,gCAAgC,CACtC,QACA,SACkB;AAAA,IAClB,OAAO;AAAA,SACF;AAAA,MACH,SAAS;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,kBAAkB,QAAQ;AAAA,MAC1B,aACE,QAAQ,UACR,OAAO,eACP;AAAA,IACJ;AAAA;AAAA,OAGY,cAAa,CAAC,SAAiD;AAAA,IAC3E,MAAM,KAAK,KAAK,OAAO;AAAA,IAEvB,IAAI;AAAA,IACJ,IAAI;AAAA,IAEJ,iBAAiB,OAAO,KAAK,OAAO,GAAG;AAAA,MACrC,IAAI,IAAI,SAAS,SAAS;AAAA,QACxB,MAAM,SAAS,IAAI,eAAe,IAAI;AAAA,QACtC,IAAI,IAAI,kBAAkB;AAAA,UACxB,+BAA+B;AAAA,QACjC,EAAO;AAAA,UACL,+BAA+B;AAAA;AAAA,QAEjC;AAAA,MACF;AAAA,MAEA,IAAI,IAAI,SAAS,UAAU;AAAA,QACzB,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,aAAa;AAAA,UACpC,IAAI,IAAI,oBAAoB,8BAA8B;AAAA,YACxD,OAAO;AAAA,iBACF;AAAA,cACH,aAAa;AAAA,YACf;AAAA,UACF;AAAA,UAEA,IAAI,CAAC,IAAI,oBAAoB,8BAA8B;AAAA,YACzD,OAAO;AAAA,iBACF;AAAA,cACH,aAAa;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,QAEA,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,MACP,WAAW;AAAA,MACX,aAAa;AAAA,MACb,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,gBAAgB,KAAK;AAAA,IACvB;AAAA;AAAA,SAMK,MAAM,GAA+B;AAAA,IAC1C,MAAM,cAAc,KAAK,IAAI;AAAA,IAC7B,MAAM,gBAAgB,KAAK;AAAA,IAC3B,IAAI,aAAa;AAAA,IACjB,IAAI,aAAa;AAAA,IACjB,IAAI,kBAAkB;AAAA,IACtB,IAAI,YAAY;AAAA,IAChB,MAAM,sBAAsB,IAAI;AAAA,IAChC,MAAM,cAAc,IAAI,IAAI,KAAK,mBAAmB;AAAA,IACpD,MAAM,iCAAiC,IAAI;AAAA,IAC3C,IAAI;AAAA,IAEJ,KAAK,oBAAoB;AAAA,IACzB,WAAW,UAAU,0BAA0B,KAAK,0BAA0B,KAAK,+BAA+B,gBAAgB;AAAA,IAElI,OAAO,MAAM;AAAA,MACX,MAAM,cAAc,MAAM,KAAK,oBAAoB;AAAA,MACnD,IAAI,CAAC,aAAa;AAAA,QAChB;AAAA,MACF;AAAA,MAIA,IAAI,YAAY,aAAa,eAAe;AAAA,QAC1C;AAAA,QACA,WAAW,UAAU,kCAAkC,YAAY,QAAQ,mBAAmB,YAAY,uBAAuB,gBAAgB;AAAA,QACjJ;AAAA,MACF;AAAA,MAIA,IAAI,YAAY,SAAS,YAAY,IAAI,YAAY,KAAK,GAAG;AAAA,QAC3D;AAAA,QACA,WAAW,UAAU,kCAAkC,YAAY,QAAQ,cAAc,YAAY,OAAO;AAAA,QAC5G;AAAA,MACF;AAAA,MAEA,IAAI,YAAY,OAAO;AAAA,QACrB,oBAAoB,IAAI,YAAY,KAAK;AAAA,MAC3C;AAAA,MAEA,MAAM,SAAS,YAAY;AAAA,MAE3B,IAAI,OAAO,SAAS,WAAW,OAAO,kBAAkB;AAAA,QACtD,MAAM,SAAS,OAAO,eAAe,OAAO;AAAA,QAC5C,IAAI,QAAQ;AAAA,UACV,+BAA+B;AAAA,UAC/B,IAAI,OAAO,OAAO;AAAA,YAChB,+BAA+B,IAAI,OAAO,OAAO,MAAM;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,gBAA4B;AAAA,MAEhC,IAAI,OAAO,SAAS,YAAY,CAAC,OAAO,SAAS;AAAA,QAC/C,IAAI,SAAS,OAAO;AAAA,QACpB,IAAI,CAAC,UAAU,MAAM,QAAQ,OAAO,MAAM,GAAG;AAAA,UAC3C,WAAW,SAAS,OAAO,QAAQ;AAAA,YACjC,MAAM,UAAU,+BAA+B,IAAI,KAAK;AAAA,YACxD,IAAI,SAAS;AAAA,cACX,SAAS;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,IAAI,CAAC,QAAQ;AAAA,UACX,SAAS;AAAA,QACX;AAAA,QAEA,MAAM,mBACJ,OAAO,qBAAqB,QACzB,0BAAyB;AAAA,UAC1B;AAAA,UACA,SAAS,OAAO,aAAa,OAAO;AAAA,UACpC,YAAY,OAAO;AAAA,QACrB,CAAC;AAAA,QAEH,IAAI,kBAAkB;AAAA,UACpB,MAAM,sBACJ,CAAC,OAAO,aAAa,OAAO,cAAc,UACtC,sBACA,OAAO;AAAA,UACb,MAAM,kBACJ,CAAC,OAAO,SAAS,OAAO,UAAU,UAC9B,sBACA,OAAO;AAAA,UAEb,gBAAgB;AAAA,eACX;AAAA,YACH,kBAAkB;AAAA,YAClB,aAAa,OAAO,eAAe;AAAA,eAC/B,SAAS,EAAE,aAAa,OAAO,IAAI,CAAC;AAAA,YACxC,WAAW;AAAA,YACX,OAAO;AAAA,UACT;AAAA,QACF,EAAO,SAAI,CAAC,OAAO,aAAa,OAAO,OAAO;AAAA,UAC5C,MAAM,YAAY,gBAAe,OAAO,KAAK;AAAA,UAC7C,IAAI,WAAW;AAAA,YACb,gBAAgB;AAAA,iBACX;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA;AAAA,MACA,WAAW,UAAU,UAAU,oBAAoB,cAAc,OAAO,cAAc,SAAS,WAAW,YAAa,cAAmC,iBAAkB,cAAmC,SAAS,WAAW,IAAI;AAAA,MACvO,MAAM;AAAA,MAGN,IAAI,cAAc,SAAS,UAAU;AAAA,QACnC,YAAY;AAAA,QACZ,KAAK,sBAAuB,cAAmC,QAAQ,mBAAmB;AAAA,QAC1F;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,UAAU,KAAK,IAAI,IAAI;AAAA,IAC7B,WAAW,UAAU,0BAA0B,qBAAqB,4BAA4B,iCAAiC,2BAA2B,KAAK,mCAAmC,WAAW;AAAA,IAC/M,IAAI,CAAC,WAAW;AAAA,MACd,WAAW,UAAU,0FAA0F;AAAA,IACjH;AAAA;AAAA,EAGM,mBAAmB,GAAS;AAAA,IAClC,IAAI,KAAK,aAAa;AAAA,MACpB;AAAA,IACF;AAAA,IAEA,KAAK,aAAa;AAAA,IAClB,KAAK,cAAc,KAAK,kBAAkB,EACvC,MAAM,CAAC,QAAQ;AAAA,MACd,WAAW,QAAQ,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,GAAG;AAAA,KAChF,EACA,QAAQ,MAAM;AAAA,MACb,KAAK,aAAa;AAAA,MAClB,KAAK,wBAAwB,IAAI;AAAA,KAClC;AAAA;AAAA,OAGS,kBAAiB,GAAkB;AAAA,IAC/C,WAAW,QAAQ,yBAAyB;AAAA,IAW5C,MAAM,oBAAoB,IAAI;AAAA,IAE9B,iBAAiB,WAAW,KAAK,UAAU,SAAS,GAAG;AAAA,MACrD,MAAM,aAAa;AAAA,MAEnB,IAAI,QAAQ,SAAS,mBAAmB;AAAA,QACtC,MAAM,UAAU,MAAM,KAAK,qBAAqB,OAAyB;AAAA,QACzE,IAAI,CAAC,SAAS;AAAA,UACZ,WAAW,QAAQ,gDAAiD,WAAW,SAAqC,WAAW,OAAO;AAAA,QACxI;AAAA,QACA;AAAA,MACF;AAAA,MAIA,IAAI,QAAQ,SAAS,oBAAoB;AAAA,QACvC,MAAM,UAAU;AAAA,QAGhB,MAAM,YAAY,QAAQ,UAAU;AAAA,QACpC,IAAI,aAAa,KAAK,uBAAuB,IAAI,SAAS,GAAG;AAAA,UAC3D,MAAM,UAAU,KAAK,uBAAuB,IAAI,SAAS;AAAA,UACzD,KAAK,uBAAuB,OAAO,SAAS;AAAA,UAC5C,QAAQ,QAAQ,QAAQ;AAAA,QAC1B,EAAO;AAAA,UACL,WAAW,QAAQ,kDAAkD,aAAa,OAAO;AAAA;AAAA,QAE3F;AAAA,MACF;AAAA,MAKA,MAAM,cAAc,WAAW;AAAA,MAC/B,IAAI,QAAQ,SAAS,cAAc,gBAAgB,uBAAuB,gBAAgB,6BAA6B;AAAA,QACrH,MAAM,YAAY,WAAW;AAAA,QAC7B,MAAM,WAAW,WAAW;AAAA,QAC5B,MAAM,KAAK,YAAY,MAAM;AAAA,QAC7B,IAAI,IAAI;AAAA,UACN,MAAM,QAAQ,GAAG;AAAA,UACjB,MAAM,OAAQ,GAAG,gBAAwC,GAAG;AAAA,UAC5D,MAAM,UAAU,GAAG;AAAA,UAEnB,IAAI,QAAQ,YAAY,WAAW;AAAA,YACjC,kBAAkB,IAAI,SAAS,IAAI;AAAA,UACrC,EAAO,SAAI,CAAC,QAAQ,YAAY,WAAW;AAAA,YACzC,MAAM,aAAa,kBAAkB,IAAI,OAAO;AAAA,YAChD,IAAI,YAAY;AAAA,cAEd,IAAI,OAAO;AAAA,gBACT,GAAG,KAAK;AAAA,cACV,EAAO;AAAA,gBACL,GAAG,eAAe;AAAA;AAAA,YAEtB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,KAAK,iBAAiB,OAAO;AAAA,MAC5C,IAAI,QAAQ;AAAA,QACV,KAAK,qBAAqB,MAAM;AAAA,MAClC,EAAO;AAAA,QACL,WAAW,QAAQ,8BAA8B,QAAQ,qBAAqB,WAAW,gBAAgB,iBAAiB,WAAW,WAAW,OAAO;AAAA;AAAA,IAE3J;AAAA,IAEA,WAAW,QAAQ,uBAAuB;AAAA;AAAA,OAG9B,qBAAoB,CAAC,YAA8C;AAAA,IAE/E,MAAM,UAAkB,WAAW,QAAQ;AAAA,IAC3C,WAAW,QAAQ,4BAA4B,gBAAiB,WAAW,QAAqC,aAAa,OAAO;AAAA,IAEpI,IAAI,YAAY,gBAAgB;AAAA,MAC9B,MAAM,KAAK,iBACT,WAAW,YACX,WAAW,OACb;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,YAAY,yBAAyB;AAAA,MAEvC,MAAM,SAAS,WAAW;AAAA,MAC1B,MAAM,KAAK,0BACT,WAAW,YACX;AAAA,QACE,SAAS;AAAA,QACT,cAAc,OAAO;AAAA,QACrB,WAAW,OAAO;AAAA,QAClB,OAAO,OAAO;AAAA,MAChB,CACF;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA;AAAA,EAGD,oBAAoB,CAAC,KAAuB;AAAA,IAClD,MAAM,cAAqC;AAAA,MACzC,SAAS;AAAA,MACT,YAAY,KAAK;AAAA,MACjB,OAAO,KAAK,gBAAgB,GAAG;AAAA,IACjC;AAAA,IAEA,IAAI,KAAK,gBAAgB,SAAS,GAAG;AAAA,MACnC,MAAM,UAAU,KAAK,gBAAgB,MAAM;AAAA,MAC3C,QAAQ,WAAW;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,YAAY,UAAU,8BAA8B;AAAA,MAC3D,KAAK,YAAY,MAAM;AAAA,MACvB,KAAK;AAAA,MACL,WAAW,QAAQ,gEAAgE,KAAK,8BAA8B,+BAA+B;AAAA,IACvJ;AAAA,IAEA,KAAK,YAAY,KAAK,WAAW;AAAA;AAAA,OAGrB,oBAAmB,GAA0C;AAAA,IACzE,IAAI,KAAK,YAAY,SAAS,GAAG;AAAA,MAC/B,OAAO,KAAK,YAAY,MAAM;AAAA,IAChC;AAAA,IAEA,IAAI,KAAK,YAAY;AAAA,MACnB,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,IAAI,QAAQ,CAAC,YAAY;AAAA,MAC9B,KAAK,gBAAgB,KAAK,OAAO;AAAA,KAClC;AAAA;AAAA,EAGK,uBAAuB,CAAC,KAAyC;AAAA,IACvE,WAAW,WAAW,KAAK,iBAAiB;AAAA,MAC1C,QAAQ,GAAG;AAAA,IACb;AAAA,IACA,KAAK,kBAAkB,CAAC;AAAA,IAExB,WAAW,WAAW,KAAK,uBAAuB,OAAO,GAAG;AAAA,MAC1D,QAAQ,EAAE,SAAS,SAAS,OAAO,iBAAiB,CAAC;AAAA,IACvD;AAAA,IACA,KAAK,uBAAuB,MAAM;AAAA;AAAA,EAG5B,eAAe,CAAC,KAAqC;AAAA,IAC3D,QAAQ,IAAI;AAAA,WACL;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,QACH,OAAO,IAAI;AAAA;AAAA,QAEX;AAAA;AAAA;AAAA,EAIE,qBAAqB,CAC3B,cACA,gBACM;AAAA,IACN,MAAM,aAAa,IAAI;AAAA,IAEvB,IAAI,MAAM,QAAQ,YAAY,GAAG;AAAA,MAC/B,WAAW,SAAS,cAAc;AAAA,QAChC,IAAI,OAAO;AAAA,UACT,WAAW,IAAI,KAAK;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,WAAW,SAAS,gBAAgB;AAAA,MAClC,IAAI,OAAO;AAAA,QACT,WAAW,IAAI,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,IAEA,KAAK,sBAAsB;AAAA;AAAA,OAMf,sBAAqB,GAAkB;AAAA,IACnD,MAAM,WAAW,MAAM,KAAK,KAAK,cAAc,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU;AAAA,MACtE,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,MAElB,YAAY,KAAK,mBAAmB,KAAK,UAAU;AAAA,IACrD,EAAE;AAAA,IAEF,WAAW,iBAAiB,eAAe,SAAS,0BAA0B,SAAS,IAAI,OAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG;AAAA,IAEpH,MAAM,KAAK,UAAU,MAAM;AAAA,MACzB,MAAM;AAAA,MACN,YAAY,kBAAkB,KAAK,IAAI;AAAA,MACvC,SAAS;AAAA,QACP,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA;AAAA,EAMK,kBAAkB,CAAC,QAA0C;AAAA,IAGnE,IAAI,UAAU,OAAO,WAAW,UAAU;AAAA,MAExC,MAAM,IAAI;AAAA,MACV,OAAO;AAAA,QACL,MAAM,EAAE;AAAA,QACR,YAAY,EAAE;AAAA,QACd,UAAU,EAAE;AAAA,QACZ,sBAAsB,EAAE;AAAA,QACxB,aAAa,EAAE;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,MAAM,SAAS;AAAA;AAAA,OAMZ,0BAAyB,CACrC,WACA,KACe;AAAA,IACf,MAAM,OAAO,KAAK,cAAc,IAAI,IAAI,SAAS;AAAA,IAEjD,IAAI,CAAC,MAAM;AAAA,MAET,WAAW,uBAAuB,uBAAuB,IAAI,WAAW;AAAA,MACxE,MAAM,KAAK,UAAU,MAAM;AAAA,QACzB,MAAM;AAAA,QACN,UAAU;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,cAAc,IAAI;AAAA,UAClB,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,0BAA0B,IAAI,YAAY,CAAC;AAAA,UAC3E,UAAU;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,WAAW,uBAAuB,aAAa,IAAI,sBAAsB,IAAI,eAAe;AAAA,MAE5F,MAAM,SAAS,MAAM,KAAK,QAAQ,IAAI,cAAc,IAAI,KAAK;AAAA,MAG7D,MAAM,KAAK,UAAU,MAAM;AAAA,QACzB,MAAM;AAAA,QACN,UAAU;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,cAAc,IAAI;AAAA,UAClB,SAAS,OAAO;AAAA,UAChB,UAAU;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,MACD,WAAW,uBAAuB,GAAG,IAAI,kCAAkC;AAAA,MAC3E,OAAO,KAAK;AAAA,MAEZ,MAAM,eAAe,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACpE,WAAW,uBAAuB,GAAG,IAAI,qBAAqB,cAAc;AAAA,MAC5E,MAAM,KAAK,UAAU,MAAM;AAAA,QACzB,MAAM;AAAA,QACN,UAAU;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,cAAc,IAAI;AAAA,UAClB,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,yBAAyB,eAAe,CAAC;AAAA,UACzE,UAAU;AAAA,QACZ;AAAA,MACF,CAAC;AAAA;AAAA;AAAA,OAOS,iBAAgB,CAC5B,WACA,KACe;AAAA,IACf,IAAI;AAAA,IACJ,MAAM,WAAW,IAAI;AAAA,IACrB,MAAM,cAAc,OAAO,KAAK,QAAQ,eAAe;AAAA,IACvD,MAAM,4BAA4B,yBAAyB,QAAQ;AAAA,IACnE,MAAM,2BACJ,wBAAwB,QAAQ;AAAA,IAElC,WAAW,cAAc,QAAQ,iBAAiB,KAAK,QAAQ,kBAAkB,wBAAwB,WAAW;AAAA,IAGpH,IAAI,6BAA6B,CAAC,aAAa;AAAA,MAC7C,WAAW;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,IACF,EAAO,SACL,6BAA6B,KAAK,QAAQ,cAAc,KACxD,CAAC,2BACD;AAAA,MAEA,WAAW,cAAc,cAAc,yBAAyB;AAAA,MAChE,WAAW;AAAA,QACT,UAAU;AAAA,QACV,cAAc;AAAA,QACd,oBAAoB,CAAC;AAAA,MACvB;AAAA,IACF,EAAO,SAAI,aAAa;AAAA,MACtB,IAAI;AAAA,QACF,MAAM,SAAS,MAAM,KAAK,QAAQ,WAAY,UAAU,IAAI,KAAK;AAAA,QACjE,IAAI,OAAO,aAAa,SAAS;AAAA,UAC/B,WAAW;AAAA,YACT,UAAU;AAAA,YACV,cAAc,OAAO,gBAAgB;AAAA,YACrC,oBAAoB,CAAC;AAAA,UACvB;AAAA,QACF,EAAO;AAAA,UACL,WAAW;AAAA,YACT,UAAU;AAAA,YACV,SAAS,OAAO,WAAW;AAAA,YAC3B,WAAW;AAAA,UACb;AAAA;AAAA,QAEF,OAAO,KAAK;AAAA,QACZ,WAAW;AAAA,UACT,UAAU;AAAA,UACV,SAAS,eAAe,QAAQ,IAAI,UAAU;AAAA,UAC9C,WAAW;AAAA,QACb;AAAA;AAAA,IAEJ,EAAO,SAAI,0BAA0B;AAAA,MAGnC,WAAW,cAAc,cAAc,6BAA6B;AAAA,MACpE,WAAW;AAAA,QACT,UAAU;AAAA,QACV,cAAc;AAAA,QACd,oBAAoB,CAAC;AAAA,MACvB;AAAA,IACF,EAAO;AAAA,MAEL,WAAW;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA;AAAA,IAIF,MAAM,mBAAmB,cAAc,WAAW,SAAS,WAAW;AAAA,IACtE,WAAW,cAAc,yBAAyB,sBAAsB,kBAAkB;AAAA,IAC1F,MAAM,KAAK,UAAU,MAAM;AAAA,MACzB,MAAM;AAAA,MACN,UAAU;AAAA,QACR,SAAS;AAAA,QACT,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IACD,WAAW,cAAc,qBAAqB,UAAU;AAAA;AAAA,OAMpD,MAAK,GAAkB;AAAA,IAC3B,IAAI,CAAC,KAAK,eAAe,KAAK;AAAA,MAAY;AAAA,IAC1C,WAAW,SAAS,2BAA2B,KAAK,WAAW;AAAA,IAC/D,MAAM,KAAK,UAAU,MAAM;AAAA,MACzB,MAAM;AAAA,MACN,YAAY,aAAa,KAAK,IAAI;AAAA,MAClC,SAAS,EAAE,SAAS,YAAY;AAAA,IAClC,CAAC;AAAA;AAAA,OAGW,uBAAsB,CAClC,WACA,SACA,UAAkC,CAAC,GAC+B;AAAA,IAClE,MAAM,kBAAkB,IAAI,QAIzB,CAAC,YAAY;AAAA,MACd,KAAK,uBAAuB,IAAI,WAAW,OAAO;AAAA,KACnD;AAAA,IAED,IAAI;AAAA,MACF,MAAM,KAAK,UAAU,MAAM;AAAA,QACzB,MAAM;AAAA,QACN,YAAY;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,MACD,OAAO,OAAO;AAAA,MACd,KAAK,uBAAuB,OAAO,SAAS;AAAA,MAC5C,MAAM;AAAA;AAAA,IAGR,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,IAAI,OAAO,QAAQ,cAAc,UAAU;AAAA,QACzC,OAAO,MAAM,QAAQ,KAAK;AAAA,UACxB;AAAA,UACA,IAAI,QAAe,CAAC,GAAG,WAAW;AAAA,YAChC,gBAAgB,WAAW,MAAM;AAAA,cAC/B,KAAK,uBAAuB,OAAO,SAAS;AAAA,cAC5C,OACE,IAAI,MACF,2CAA2C,YAC7C,CACF;AAAA,eACC,QAAQ,SAAS;AAAA,WACrB;AAAA,QACH,CAAC;AAAA,MACH;AAAA,MAEA,OAAO,MAAM;AAAA,cACb;AAAA,MACA,IAAI,eAAe;AAAA,QACjB,aAAa,aAAa;AAAA,MAC5B;AAAA;AAAA;AAAA,OAYE,aAAY,CAAC,UAA+B,CAAC,GAAgC;AAAA,IACjF,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,IAAI,MAAM,2DAA2D;AAAA,IAC7E;AAAA,IAEA,MAAM,YAAY,QAAQ,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC;AAAA,IAE7E,MAAM,OAAO,MAAM,KAAK,uBAAuB,WAAW;AAAA,MACxD,SAAS;AAAA,SACL,QAAQ,iBAAiB,EAAE,iBAAiB,QAAQ,eAAe,IAAI,CAAC;AAAA,SACxE,QAAQ,SAAS,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;AAAA,SAC/C,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,SAC5C,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,SAC5C,QAAQ,UAAU,YAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,IAChE,CAAC;AAAA,IAED,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,qDAAqD;AAAA,IACvE;AAAA,IACA,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,MAAM,IAAI,MAAM,KAAK,SAAS,qBAAqB;AAAA,IACrD;AAAA,IAEA,MAAM,UAAU,KAAK;AAAA,IAMrB,OAAO;AAAA,MACL,UAAU,SAAS,YAAY,CAAC;AAAA,MAChC,YAAY,SAAS,eAAe;AAAA,MACpC,SAAS,SAAS,YAAY;AAAA,IAChC;AAAA;AAAA,OAGI,WAAU,GAA8B;AAAA,IAC5C,MAAM,IAAI,MACR,6FACF;AAAA;AAAA,OAQI,YAAW,CACf,UACA,UACe;AAAA,IACf,MAAM,IAAI,MACR,8FACF;AAAA;AAAA,OAGI,YAAW,CAAC,SAAkE;AAAA,IAClF,MAAM,IAAI,MACR,8FACF;AAAA;AAAA,OAYI,eAAc,CAClB,UAAiC,CAAC,GACH;AAAA,IAC/B,IAAI,CAAC,KAAK,aAAa;AAAA,MACrB,MAAM,IAAI,MACR,6DACF;AAAA,IACF;AAAA,IAEA,MAAM,YAAY,aAAa,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC;AAAA,IAElF,MAAM,OAAO,MAAM,KAAK,uBAAuB,WAAW;AAAA,MACxD,SAAS;AAAA,SACL,QAAQ,UAAU,YAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,SAC1D,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,IAClD,CAAC;AAAA,IAED,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AAAA,IACA,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,MAAM,IAAI,MACP,KAA4B,SAAS,uBACxC;AAAA,IACF;AAAA,IAEA,MAAM,UAAU,KAAK;AAAA,IAiBrB,MAAM,QAA8B;AAAA,MAClC,SAAS,SAAS,YAAY,KAAK,YAAY;AAAA,MAC/C,gBAAgB,SAAS,mBAAmB,KAAK,mBAAmB;AAAA,MACpE,OAAO,SAAS;AAAA,MAChB,cAAc,SAAS,iBAAiB;AAAA,MACxC,UAAU,SAAS,YAAY,CAAC;AAAA,MAChC,YAAY,SAAS,eAAe;AAAA,MACpC,SAAS,SAAS,YAAY;AAAA,MAC9B,oBAAoB,SAAS,wBAAwB;AAAA,IACvD;AAAA,IACA,IAAI,SAAS,UAAU;AAAA,MAAW,MAAM,QAAQ,QAAQ;AAAA,IACxD,IAAI,SAAS,YAAY;AAAA,MAAW,MAAM,UAAU,QAAQ;AAAA,IAC5D,OAAO;AAAA;AAAA,OAGH,cAAa,CAAC,oBAA2C;AAAA,IAC7D,MAAM,IAAI,MAAM,gGAAgG;AAAA;AAAA,EAMlH,KAAK,GAAS;AAAA,IACZ,WAAW,SAAS,0BAA0B,KAAK,0BAA0B,KAAK,kBAAkB;AAAA,IACpG,KAAK,UAAU,MAAM;AAAA,IACrB,KAAK,aAAa;AAAA,IAClB,KAAK,wBAAwB,IAAI;AAAA;AAAA,MAM/B,OAAO,GAAkB;AAAA,IAC3B,OAAO,KAAK;AAAA;AAAA,MAMV,SAAS,GAAkB;AAAA,IAC7B,OAAO,KAAK;AAAA;AAAA,MAMV,cAAc,GAAkB;AAAA,IAClC,OAAO,KAAK;AAAA;AAAA,QAMP,OAAO,aAAa,GAAkB;AAAA,IAC3C,KAAK,MAAM;AAAA;AAAA,EAML,gBAAgB,CAAC,SAAuD;AAAA,IAE9E,IAAI,QAAQ,SAAS,YAAY,aAAa,WAAW,QAAQ,YAAY,QAAQ;AAAA,MACnF,MAAM,MAAM;AAAA,MAaZ,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,IAAI;AAAA,QACb,WAAW,IAAI;AAAA,QACf,gBAAgB,IAAI;AAAA,QACpB,OAAO,IAAI;AAAA,QACX,OAAO,IAAI;AAAA,QACX,cAAc,IAAI;AAAA,QAClB,cAAc,IAAI;AAAA,QAClB,2BAA2B,IAAI;AAAA,QAC/B,UACE,IAAI,sBACJ,IAAI,uBACJ,OAAO,IAAI,0BAA0B,WACjC;AAAA,UACE,SAAS,IAAI;AAAA,UACb,UAAU,IAAI;AAAA,UACd,WAAW,IAAI;AAAA,QACjB,IACA;AAAA,MACR;AAAA,IACF;AAAA,IAGA,IAAI,QAAQ,SAAS,aAAa,kBAAkB,SAAS;AAAA,MAC3D,MAAM,MAAM;AAAA,MAiBZ,MAAM,QAAQ,IAAI,UAAU;AAAA,MAG5B,IAAI,IAAI,iBAAiB,uBAAuB,IAAI,SAAS;AAAA,QAC3D,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,IAAI;AAAA,UACb,MAAM,IAAI;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MAGA,IAAI,IAAI,iBAAiB,uBAAuB,IAAI,iBAAiB,4BAA4B;AAAA,QAC/F,MAAM,cAAe,IAAI,aAAa,MAAM,IAAI;AAAA,QAChD,IAAI,aAAa;AAAA,UACf,MAAM,QAAQ,YAAY;AAAA,UAC1B,MAAM,aACH,YAAY,gBACZ,YAAY;AAAA,UACf,IAAI,CAAC,YAAY;AAAA,YACf,MAAM,SAAS,2BAA2B,IAAI,sBAAsB,IAAI,QAAQ;AAAA,YAChF,WAAW,aAAa,MAAM;AAAA,YAC9B,OAAO;AAAA,cACL,MAAM;AAAA,cACN,SAAS;AAAA,cACT,WAAW;AAAA,cACX,YAAY;AAAA,cACZ;AAAA,cACA,UAAU;AAAA,gBACR,YAAY;AAAA,gBACZ;AAAA,gBACA,cAAc,IAAI;AAAA,cACpB;AAAA,cACA,aAAa;AAAA,cACb,aAAa;AAAA,YACf;AAAA,UACF;AAAA,UAEA,MAAM,WACH,YAAY,QACZ,OAAO,QACR;AAAA,UACF,MAAM,WACH,YAAY,aACZ,OAAO,aACR;AAAA,UAEF,IAAI,YAAqC,CAAC;AAAA,UAC1C,IAAI;AAAA,YACF,YAAY,KAAK,MAAM,QAAQ;AAAA,YAC/B,MAAM;AAAA,YACN,YAAY,EAAE,KAAK,SAAS;AAAA;AAAA,UAE9B,OAAO;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA,cAAc,YAAY;AAAA,YAC1B,MAAM,IAAI;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAGA,IAAI,IAAI,iBAAiB,yBAAyB,IAAI,cAAc;AAAA,QAClE,OAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY,IAAI;AAAA,UAChB,SAAS,IAAI,eAAe;AAAA,UAC5B,SAAS,IAAI,WAAW;AAAA,UACxB,MAAM,IAAI;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,MAGA,IAAI,IAAI,iBAAiB,uBAAuB,IAAI,WAAW;AAAA,QAC7D,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,IAAI;AAAA,UACb,MAAM,IAAI;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAGA,IAAI,QAAQ,SAAS,gBAAgB;AAAA,MACnC,MAAM,MAAM;AAAA,MAIZ,MAAM,eAAgB,IAAI,SAAS,CAAC;AAAA,MACpC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM,IAAI;AAAA,MACZ;AAAA,IACF;AAAA,IAGA,IAAI,QAAQ,SAAS,UAAU;AAAA,MAC7B,MAAM,MAAM;AAAA,MASZ,MAAM,SAAS,MAAM,QAAQ,IAAI,OAAO,IACpC,IAAI,QAAQ,OAAO,CAAC,OAAqB,OAAO,OAAO,QAAQ,IAC/D;AAAA,MACJ,MAAM,mBAAmB,0BAAyB;AAAA,QAChD,YAAY,IAAI;AAAA,MAClB,CAAC;AAAA,MACD,MAAM,cAAc,IAAI,YAAY,YAC/B,oBAAoB,IAAI,YAAY,UAAU,sBAAsB,IAAI,UACzE;AAAA,MACJ,MAAM,YAAY,gBAAe,WAAW;AAAA,MAC5C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,IAAI,YAAY;AAAA,QACzB,QAAQ,IAAI;AAAA,QACZ,OAAO;AAAA,QACP;AAAA,WACI,mBACA;AAAA,UACE,kBAAkB;AAAA,UAClB,aAAa;AAAA,QACf,IACA,CAAC;AAAA,QACL,YAAY,IAAI;AAAA,QAChB,YAAY,IAAI;AAAA,QAChB,cAAc,IAAI;AAAA,QAClB,gBAAgB,IAAI;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,IAKA,IAAI,QAAQ,SAAS,SAAS;AAAA,MAC5B,MAAM,MAAM;AAAA,MAMZ,MAAM,cAAc,sBAAsB,IAAI,SAAS;AAAA,MACvD,MAAM,mBAAmB,0BAAyB;AAAA,QAChD,QAAQ;AAAA,QACR,SAAS,IAAI;AAAA,QACb,YAAY,IAAI;AAAA,MAClB,CAAC;AAAA,MACD,MAAM,YAAY,mBACd,sBACA,gBAAe,IAAI,WAAW;AAAA,MAClC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,IAAI;AAAA,WACT,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,WAC7B,mBACA;AAAA,UACE,kBAAkB;AAAA,UAClB,aAAa;AAAA,QACf,IACA,CAAC;AAAA,WACD,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,QACrC,YAAY,IAAI;AAAA,QAChB,OAAO,IAAI;AAAA,QACX,UAAU,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,IAGA,IAAI,QAAQ,SAAS,SAAS;AAAA,MAC5B,MAAM,MAAM;AAAA,MAOZ,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ,IAAI;AAAA,QACZ,SAAS,IAAI;AAAA,QACb,aAAa,IAAI;AAAA,QACjB,SAAS,IAAI;AAAA,QACb,OAAO,IAAI;AAAA,MACb;AAAA,IACF;AAAA,IAGA,OAAO;AAAA;AAEX;;;AChgDA,IAAM,6BAA6B;AAInC,SAAS,gBAAgB,GAAuB;AAAA,EAC9C,MAAM,MAAO,WACV,SAAS;AAAA,EACZ,OAAO,KAAK,iBAAiB,KAAK;AAAA;AAGpC,SAAS,sBAAsB,CAAC,SAAiE;AAAA,EAC/F,MAAM,gBAAgB,SAAS,iBAAiB,SAAS;AAAA,EACzD,IAAI,CAAC;AAAA,IAAe;AAAA,EACpB,MAAM,QAAQ,mBAAmB,KAAK,aAAa;AAAA,EACnD,OAAO,QAAQ;AAAA;AAGjB,SAAS,cAAc,CAAC,SAA0D;AAAA,EAChF,OAAO,QAAQ,UAAU,uBAAuB,QAAQ,OAAO,KAAK,iBAAiB;AAAA;AAGvF,SAAS,QAAQ,CAAC,eAAsC;AAAA,EACtD,MAAM,WAAW,iBAAiB,WAAW;AAAA,EAC7C,IAAI,CAAC;AAAA,IAAU,MAAM,IAAI,MAAM,sDAAsD;AAAA,EACrF,OAAO,SAAS,KAAK,UAAU;AAAA;AAGjC,SAAS,wBAAwB,CAAC,KAAiC;AAAA,EACjE,MAAM,SAAS,IAAI,IAAI,OAAO,0BAA0B;AAAA,EACxD,OAAO,WAAW,OAAO,SAAS,QAAQ,QAAQ,EAAE;AAAA,EACpD,OAAO,SAAS;AAAA,EAChB,OAAO,OAAO;AAAA,EACd,OAAO,OAAO,SAAS,EAAE,QAAQ,OAAO,EAAE;AAAA;AAG5C,SAAS,YAAY,CAAC,SAA8D;AAAA,EAClF,MAAM,UAAkC;AAAA,IACtC,gBAAgB;AAAA,OACZ,QAAQ,WAAW,CAAC;AAAA,EAC1B;AAAA,EACA,MAAM,SAAS,eAAe,OAAO;AAAA,EACrC,IAAI,UAAU,CAAC,QAAQ,iBAAiB,CAAC,QAAQ,eAAe;AAAA,IAC9D,QAAQ,gBAAgB,UAAU;AAAA,EACpC;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,iBAAiB,CAAC,UAAsC;AAAA,EACrE,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,EACjC,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAClB,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,IAAI;AAAA,IACtB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,SAAS,oBAAoB,CAAC,MAAe,UAA0B;AAAA,EACrE,IAAI,QAAQ,OAAO,SAAS,UAAU;AAAA,IACpC,MAAM,SAAS;AAAA,IACf,MAAM,UAAU,OAAO,WAAW,OAAO,SAAS,OAAO;AAAA,IACzD,MAAM,aAAa,OAAO;AAAA,IAC1B,MAAM,SAAS,CAAC,SAAS,UAAU,EAChC,OAAO,CAAC,UAA2B,OAAO,UAAU,YAAY,MAAM,SAAS,CAAC;AAAA,IACnF,IAAI,OAAO,SAAS;AAAA,MAAG,OAAO,OAAO,KAAK,IAAI;AAAA,EAChD;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,gBAAgB,CAAC,UAAoB,MAAe,QAAsB;AAAA,EACjF,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,IAAI,MAAM,qBAAqB,MAAM,GAAG,2BAA2B,SAAS,QAAQ,CAAC;AAAA,EAC7F;AAAA;AAGF,SAAS,cAAc,CAAC,OAAoC;AAAA,EAC1D,OAAO,OAAO,UAAU,WAAW,QAAQ;AAAA;AAG7C,SAAS,aAAa,CAAC,OAAgB,MAAsB;AAAA,EAC3D,IAAI,OAAO,UAAU;AAAA,IAAU,MAAM,IAAI,MAAM,uCAAuC,OAAO;AAAA,EAC7F,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,MAA2B;AAAA,EAC/C,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrC,MAAM,IAAI,MAAM,2DAA2D;AAAA,EAC7E;AAAA,EACA,MAAM,SAAS;AAAA,EACf,OAAO;AAAA,IACL,IAAI,cAAc,OAAO,IAAI,IAAI;AAAA,IACjC,MAAM,cAAc,OAAO,MAAM,MAAM;AAAA,IACvC,WAAW,cAAc,OAAO,YAAY,YAAY;AAAA,IACxD,WAAW,cAAc,OAAO,YAAY,YAAY;AAAA,EAC1D;AAAA;AAGF,SAAS,cAAc,CAAC,MAA6C;AAAA,EACnE,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrC,MAAM,IAAI,MAAM,gEAAgE;AAAA,EAClF;AAAA,EACA,MAAM,SAAS;AAAA,EACf,OAAO;AAAA,IACL,MAAM,cAAc,OAAO,MAAM,MAAM;AAAA,IACvC,eAAe,cAAc,OAAO,gBAAgB,gBAAgB;AAAA,IACpE,WAAW,cAAc,OAAO,YAAY,YAAY;AAAA,EAC1D;AAAA;AAGF,SAAS,sBAAsB,CAAC,KAAU,KAAa,OAA0C;AAAA,EAC/F,IAAI,UAAU;AAAA,IAAW,IAAI,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA;AAAA;AAG3D,MAAM,mBAAmB;AAAA,EACD;AAAA,EAA7B,WAAW,CAAkB,SAAsC;AAAA,IAAtC;AAAA;AAAA,OAEvB,OAAM,CAAC,QAAqD;AAAA,IAChE,OAAO,aAAa,MAAM,KAAK,QAAQ,oBAAoB,QAAQ,EAAE,MAAM,OAAO,KAAK,GAAG,yBAAyB,CAAC;AAAA;AAAA,OAGhH,KAAI,CAAC,SAAiC,CAAC,GAAoC;AAAA,IAC/E,MAAM,MAAM,KAAK,IAAI,kBAAkB;AAAA,IACvC,uBAAuB,KAAK,SAAS,OAAO,KAAK;AAAA,IACjD,uBAAuB,KAAK,UAAU,OAAO,MAAM;AAAA,IACnD,MAAM,OAAO,MAAM,KAAK,WAAW,KAAK,OAAO,WAAW,yBAAyB;AAAA,IACnF,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,MACrC,MAAM,IAAI,MAAM,gEAAgE;AAAA,IAClF;AAAA,IACA,MAAM,SAAS;AAAA,IACf,MAAM,eAAe,MAAM,QAAQ,OAAO,YAAY,IAClD,OAAO,aAAa,IAAI,YAAY,IACpC,CAAC;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA,aAAa,OAAO,kBAAkB;AAAA,IACxC;AAAA;AAAA,OAGI,IAAG,CAAC,cAA2C;AAAA,IACnD,OAAO,aAAa,MAAM,KAAK,QAAQ,oBAAoB,mBAAmB,YAAY,KAAK,OAAO,WAAW,sBAAsB,CAAC;AAAA;AAAA,OAQpI,OAAM,CAAC,cAAqC;AAAA,IAChD,MAAM,KAAK,QACT,oBAAoB,mBAAmB,YAAY,KACnD,UACA,WACA,yBACF;AAAA;AAAA,EAGO,QAAQ;AAAA,IACf,MAAM,OACJ,cACA,SAAoC,CAAC,MACE;AAAA,MACvC,MAAM,MAAM,KAAK,IAAI,oBAAoB,mBAAmB,YAAY,SAAS;AAAA,MACjF,uBAAuB,KAAK,eAAe,OAAO,UAAU;AAAA,MAC5D,uBAAuB,KAAK,SAAS,OAAO,KAAK;AAAA,MACjD,uBAAuB,KAAK,OAAO,OAAO,GAAG;AAAA,MAC7C,MAAM,OAAO,MAAM,KAAK,WAAW,KAAK,OAAO,WAAW,6BAA6B;AAAA,MACvF,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,QACrC,MAAM,IAAI,MAAM,6DAA6D;AAAA,MAC/E;AAAA,MACA,MAAM,SAAS;AAAA,MACf,MAAM,QAAQ,MAAM,QAAQ,OAAO,KAAK,IACpC,OAAO,MAAM,IAAI,CAAC,UAAU;AAAA,QAC5B,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,UACvC,MAAM,IAAI,MAAM,sEAAsE;AAAA,QACxF;AAAA,QACA,MAAM,OAAO;AAAA,QACb,MAAM,OAAO,KAAK;AAAA,QAClB,IAAI,SAAS,UAAU,SAAS,aAAa;AAAA,UAC3C,MAAM,IAAI,MAAM,qEAAqE;AAAA,QACvF;AAAA,QACA,OAAO,EAAE,MAAM,cAAc,KAAK,MAAM,MAAM,GAAG,KAAmC;AAAA,OACrF,IACC,CAAC;AAAA,MACL,OAAO,EAAE,OAAO,KAAK,cAAc,OAAO,KAAK,KAAK,EAAE;AAAA;AAAA,IAGxD,QAAQ,OACN,cACA,WAC0C,eAAe,MAAM,KAAK,QACpE,oBAAoB,mBAAmB,YAAY,WACnD,QACA,EAAE,MAAM,OAAO,MAAM,SAAS,OAAO,QAAQ,GAC7C,8BACF,CAAC;AAAA,IAED,MAAM,OAAO,cAAsB,WAAoE;AAAA,MACrG,MAAM,MAAM,KAAK,IAAI,oBAAoB,mBAAmB,YAAY,iBAAiB;AAAA,MACzF,IAAI,aAAa,IAAI,QAAQ,OAAO,IAAI;AAAA,MACxC,uBAAuB,KAAK,OAAO,OAAO,GAAG;AAAA,MAC7C,MAAM,OAAO,MAAM,KAAK,WAAW,KAAK,OAAO,WAAW,4BAA4B;AAAA,MACtF,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,QACrC,MAAM,IAAI,MAAM,mEAAmE;AAAA,MACrF;AAAA,MACA,MAAM,SAAS;AAAA,MACf,OAAO;AAAA,QACL,MAAM,cAAc,OAAO,MAAM,MAAM;AAAA,QACvC,SAAS,cAAc,OAAO,SAAS,SAAS;AAAA,QAChD,eAAe,cAAc,OAAO,gBAAgB,gBAAgB;AAAA,QACpE,KAAK,eAAe,OAAO,GAAG;AAAA,MAChC;AAAA;AAAA,IAGF,QAAQ,OACN,cACA,WAC0C,eAAe,MAAM,KAAK,QACpE,oBAAoB,mBAAmB,YAAY,mBACnD,QACA;AAAA,MACE,MAAM,OAAO;AAAA,SACT,OAAO,YAAY,YAAY,EAAE,SAAS,OAAO,QAAQ,IAAI,CAAC;AAAA,SAC9D,OAAO,YAAY,YAAY,EAAE,UAAU,OAAO,QAAQ,IAAI,CAAC;AAAA,SAC/D,OAAO,iBAAiB,YACxB;AAAA,QACA,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,gBAAgB,OAAO,aAAa;AAAA,QACtC;AAAA,MACF,IACE,CAAC;AAAA,IACP,GACA,8BACF,CAAC;AAAA,IAED,QAAQ,OACN,cACA,WACwC;AAAA,MACxC,MAAM,OAAO,MAAM,KAAK,QACtB,oBAAoB,mBAAmB,YAAY,mBACnD,UACA,EAAE,MAAM,OAAO,KAAK,GACpB,8BACF;AAAA,MACA,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,QACrC,MAAM,IAAI,MAAM,uEAAuE;AAAA,MACzF;AAAA,MACA,MAAM,SAAS;AAAA,MACf,OAAO,EAAE,SAAS,OAAO,YAAY,MAAM,WAAW,cAAc,OAAO,YAAY,YAAY,EAAE;AAAA;AAAA,EAEzG;AAAA,EAES,WAAW;AAAA,IAClB,MAAM,OACJ,cACA,SAAuC,CAAC,MACP;AAAA,MACjC,MAAM,MAAM,KAAK,IAAI,oBAAoB,mBAAmB,YAAY,YAAY;AAAA,MACpF,uBAAuB,KAAK,QAAQ,OAAO,IAAI;AAAA,MAC/C,uBAAuB,KAAK,SAAS,OAAO,KAAK;AAAA,MACjD,MAAM,OAAO,MAAM,KAAK,WAAW,KAAK,OAAO,WAAW,gCAAgC;AAAA,MAC1F,IAAI,MAAM,QAAQ,IAAI;AAAA,QAAG,OAAO;AAAA,MAChC,IAAI,QAAQ,OAAO,SAAS,UAAU;AAAA,QACpC,MAAM,SAAS;AAAA,QACf,IAAI,MAAM,QAAQ,OAAO,OAAO;AAAA,UAAG,OAAO,OAAO;AAAA,QACjD,IAAI,MAAM,QAAQ,OAAO,QAAQ;AAAA,UAAG,OAAO,OAAO;AAAA,MACpD;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,IAGV,KAAK,OACH,cACA,KACA,WAC4B;AAAA,MAC5B,MAAM,MAAM,KAAK,IAAI,oBAAoB,mBAAmB,YAAY,cAAc,mBAAmB,GAAG,GAAG;AAAA,MAC/G,IAAI,aAAa,IAAI,QAAQ,OAAO,IAAI;AAAA,MACxC,MAAM,OAAO,MAAM,KAAK,WAAW,KAAK,OAAO,WAAW,8BAA8B;AAAA,MACxF,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,QACrC,MAAM,IAAI,MAAM,qEAAqE;AAAA,MACvF;AAAA,MACA,MAAM,SAAS;AAAA,MACf,OAAO;AAAA,QACL,MAAM,cAAc,OAAO,MAAM,MAAM;AAAA,QACvC,SAAS,cAAc,OAAO,SAAS,SAAS;AAAA,QAChD,eAAe,cAAc,OAAO,gBAAgB,gBAAgB;AAAA,QACpE,KAAK,cAAc,OAAO,KAAK,KAAK;AAAA,MACtC;AAAA;AAAA,EAEJ;AAAA,EAEQ,GAAG,CAAC,MAAmB;AAAA,IAC7B,OAAO,IAAI,IAAI,GAAG,yBAAyB,KAAK,QAAQ,UAAU,IAAI,MAAM;AAAA;AAAA,OAGhE,QAAO,CACnB,MACA,QACA,MACA,QACkB;AAAA,IAClB,OAAO,KAAK,WAAW,KAAK,IAAI,IAAI,GAAG,QAAQ,MAAM,MAAM;AAAA;AAAA,OAG/C,WAAU,CACtB,KACA,QACA,MACA,QACkB;AAAA,IAClB,MAAM,WAAW,MAAM,SAAS,KAAK,QAAQ,KAAK,EAAE,KAAK;AAAA,MACvD;AAAA,MACA,SAAS,aAAa,KAAK,OAAO;AAAA,SAC9B,SAAS,YAAY,EAAE,MAAM,KAAK,UAAU,IAAI,EAAE,IAAI,CAAC;AAAA,IAC7D,CAAC;AAAA,IACD,MAAM,SAAS,MAAM,kBAAkB,QAAQ;AAAA,IAC/C,iBAAiB,UAAU,QAAQ,MAAM;AAAA,IACzC,OAAO;AAAA;AAEX;;;AClVA,IAAI,6BAA6B;AACjC,IAAI,uBAAuB;AAC3B,SAAS,kBAAkB,GAAG;AAAA,EAC5B,OAAO,WAAW;AAAA;AAEpB,SAAS,gBAAgB,CAAC,KAAK;AAAA,EAC7B,MAAM,SAAS,IAAI,IAAI,GAAG;AAAA,EAC1B,IAAI,OAAO,aAAa;AAAA,IACtB,OAAO,WAAW;AAAA,EACpB,IAAI,OAAO,aAAa;AAAA,IACtB,OAAO,WAAW;AAAA,EACpB,IAAI,OAAO,aAAa,SAAS,OAAO,aAAa,QAAQ;AAAA,IAC3D,MAAM,IAAI,MAAM,wCAAwC,OAAO,UAAU;AAAA,EAC3E;AAAA,EACA,IAAI,CAAC,OAAO,YAAY,OAAO,aAAa,KAAK;AAAA,IAC/C,OAAO,WAAW;AAAA,EACpB;AAAA,EACA,OAAO;AAAA;AAET,SAAS,0BAA0B,CAAC,KAAK,SAAS;AAAA,EAChD,MAAM,SAAS,iBAAiB,GAAG;AAAA,EACnC,OAAO,aAAa,IAAI,WAAW,OAAO;AAAA,EAC1C,OAAO,OAAO,SAAS;AAAA;AAEzB,SAAS,oBAAoB,CAAC,QAAQ,MAAM,UAAU;AAAA,EACpD,IAAI,OAAO,oBAAoB,OAAO,qBAAqB;AAAA,IACzD,OAAO,iBAAiB,MAAM,QAAQ;AAAA,IACtC,OAAO,MAAM,OAAO,sBAAsB,MAAM,QAAQ;AAAA,EAC1D;AAAA,EACA,IAAI,OAAO,IAAI;AAAA,IACb,OAAO,GAAG,MAAM,QAAQ;AAAA,IACxB,OAAO,MAAM,OAAO,MAAM,MAAM,QAAQ;AAAA,EAC1C;AAAA,EACA,MAAM,IAAI,MAAM,2DAA2D;AAAA;AAE7E,SAAS,eAAe,CAAC,QAAQ,MAAM,UAAU;AAAA,EAC/C,IAAI,OAAO,MAAM;AAAA,IACf,OAAO,KAAK,MAAM,QAAQ;AAAA,IAC1B,OAAO,MAAM,OAAO,MAAM,MAAM,QAAQ;AAAA,EAC1C;AAAA,EACA,IAAI,SAAS,MAAM;AAAA,EACnB,SAAS,qBAAqB,QAAQ,MAAM,CAAC,UAAU;AAAA,IACrD,OAAO;AAAA,IACP,SAAS,KAAK;AAAA,GACf;AAAA,EACD,OAAO;AAAA;AAET,SAAS,iBAAiB,CAAC,QAAQ;AAAA,EACjC,IAAI,OAAO,eAAe,sBAAsB;AAAA,IAC9C,OAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EACA,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IACtC,IAAI,aAAa,MAAM;AAAA,IACvB,IAAI,cAAc,MAAM;AAAA,IACxB,MAAM,UAAU,MAAM;AAAA,MACpB,WAAW;AAAA,MACX,YAAY;AAAA;AAAA,IAEd,aAAa,gBAAgB,QAAQ,QAAQ,MAAM;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,KACT;AAAA,IACD,cAAc,gBAAgB,QAAQ,SAAS,CAAC,UAAU;AAAA,MACxD,QAAQ;AAAA,MACR,OAAO,IAAI,MAAM,wCAAwC,OAAO,KAAK,GAAG,CAAC;AAAA,KAC1E;AAAA,GACF;AAAA;AAEH,SAAS,YAAY,CAAC,OAAO;AAAA,EAC3B,IAAI,SAAS,OAAO,UAAU,YAAY,UAAU,OAAO;AAAA,IACzD,OAAO,MAAM;AAAA,EACf;AAAA,EACA,OAAO;AAAA;AAET,SAAS,mBAAmB,CAAC,MAAM;AAAA,EACjC,MAAM,MAAM,aAAa,IAAI;AAAA,EAC7B,IAAI,OAAO,QAAQ;AAAA,IACjB,OAAO;AAAA,EACT,IAAI,eAAe,aAAa;AAAA,IAC9B,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACrC;AAAA,EACA,IAAI,eAAe,YAAY;AAAA,IAC7B,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACrC;AAAA,EACA,IAAI,YAAY,OAAO,GAAG,GAAG;AAAA,IAC3B,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU,CAAC;AAAA,EAC5F;AAAA,EACA,OAAO,OAAO,GAAG;AAAA;AAEnB,SAAS,oBAAoB,CAAC,OAAO;AAAA,EACnC,OAAO,KAAK,MAAM,oBAAoB,KAAK,CAAC;AAAA;AAE9C,SAAS,sBAAsB,CAAC,WAAW;AAAA,EACzC,IAAI,cAAc,WAAW;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,UAAU,KAAK;AAAA,EAC7B,IAAI,CAAC,OAAO;AAAA,IACV,MAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3D;AAAA,EACA,OAAO,EAAE,SAAS,EAAE,eAAe,UAAU,QAAQ,EAAE;AAAA;AAEzD,SAAS,YAAW,CAAC,GAAG,GAAG;AAAA,EACzB,OAAO,GAAG,aAAa,EAAE,YAAY,GAAG,oBAAoB,EAAE;AAAA;AAEhE,SAAS,mBAAmB,CAAC,SAAS;AAAA,EACpC,OAAO,QAAQ,YAAY,WAAW;AAAA;AAExC,SAAS,6BAA6B,CAAC,SAAS;AAAA,EAC9C,OAAO,QAAQ,YAAY,WAAW;AAAA;AAExC,SAAS,iBAAgB,CAAC,SAAS;AAAA,EACjC,MAAM,QAAQ,QAAQ,MAAM;AAAA,EAC5B,OAAO,OAAO,UAAU,WAAW,QAAQ;AAAA;AAE7C,SAAS,uBAAsB,CAAC,SAAS;AAAA,EACvC,MAAM,cAAc,QAAQ,MAAM;AAAA,EAClC,OAAO,OAAO,gBAAgB,WAAW,cAAc;AAAA;AAEzD,SAAS,sBAAqB,CAAC,SAAS;AAAA,EACtC,MAAM,aAAa,QAAQ,MAAM;AAAA,EACjC,OAAO,OAAO,eAAe,WAAW,aAAa;AAAA;AAEvD,SAAS,uBAAuB,CAAC,SAAS;AAAA,EACxC,MAAM,QAAQ,QAAQ;AAAA,EACtB,MAAM,aAAa,MAAM,WAAW,WAAW,MAAM,WAAW;AAAA,EAChE,IAAI,OAAO,eAAe,YAAY,WAAW,SAAS;AAAA,IACxD,OAAO;AAAA,EACT,IAAI,OAAO,MAAM,YAAY,YAAY,MAAM,QAAQ,SAAS;AAAA,IAC9D,OAAO,MAAM;AAAA,EACf,OAAO;AAAA;AAAA;AAGT,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,IAAI;AAAA,EACd,kBAAkB,IAAI;AAAA,EACtB,eAAe,IAAI;AAAA,EACnB,qBAAqB,IAAI;AAAA,EACzB,qBAAqB,IAAI;AAAA,EACzB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,WAAW,CAAC,SAAS;AAAA,IACnB,MAAM,YAAY,QAAQ,aAAa,mBAAmB;AAAA,IAC1D,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,MAAM,uCAAuC;AAAA,IACzD;AAAA,IACA,KAAK,mBAAmB,QAAQ,oBAAoB;AAAA,IACpD,MAAM,gBAAgB,uBAAuB,QAAQ,SAAS;AAAA,IAC9D,KAAK,UAAU,IAAI,UAAU,2BAA2B,QAAQ,KAAK,SAAS,GAAG,aAAa;AAAA,IAC9F,KAAK,SAAS,IAAI,UAAU,2BAA2B,QAAQ,KAAK,QAAQ,GAAG,aAAa;AAAA,IAC5F,qBAAqB,KAAK,SAAS,WAAW,CAAC,UAAU;AAAA,MACvD,KAAK,cAAc,OAAO,SAAS;AAAA,KACpC;AAAA,IACD,qBAAqB,KAAK,QAAQ,WAAW,CAAC,UAAU;AAAA,MACtD,KAAK,cAAc,OAAO,QAAQ;AAAA,KACnC;AAAA,IACD,qBAAqB,KAAK,SAAS,SAAS,CAAC,UAAU;AAAA,MACrD,KAAK,iBAAiB,WAAW,KAAK;AAAA,KACvC;AAAA,IACD,qBAAqB,KAAK,QAAQ,SAAS,CAAC,UAAU;AAAA,MACpD,KAAK,iBAAiB,UAAU,KAAK;AAAA,KACtC;AAAA;AAAA,OAEG,QAAO,GAAG;AAAA,IACd,MAAM,QAAQ,IAAI;AAAA,MAChB,kBAAkB,KAAK,OAAO;AAAA,MAC9B,kBAAkB,KAAK,MAAM;AAAA,IAC/B,CAAC;AAAA,IACD,OAAO;AAAA;AAAA,EAET,KAAK,GAAG;AAAA,IACN,IAAI,KAAK;AAAA,MACP;AAAA,IACF,KAAK,mBAAmB;AAAA,IACxB,KAAK,iBAAiB,0BAA0B;AAAA,IAChD,KAAK,QAAQ,MAAM;AAAA,IACnB,KAAK,OAAO,MAAM;AAAA;AAAA,EAEpB,SAAS,CAAC,SAAS;AAAA,IACjB,KAAK,gBAAgB,IAAI,OAAO;AAAA,IAChC,OAAO,MAAM,KAAK,gBAAgB,OAAO,OAAO;AAAA;AAAA,EAElD,MAAM,CAAC,SAAS;AAAA,IACd,KAAK,aAAa,IAAI,OAAO;AAAA,IAC7B,OAAO,MAAM,KAAK,aAAa,OAAO,OAAO;AAAA;AAAA,EAE/C,YAAY,CAAC,SAAS;AAAA,IACpB,KAAK,mBAAmB,IAAI,OAAO;AAAA,IACnC,OAAO,MAAM,KAAK,mBAAmB,OAAO,OAAO;AAAA;AAAA,EAErD,aAAa,CAAC,SAAS,OAAO;AAAA,IAC5B,KAAK,qBAAqB;AAAA,IAC1B,OAAO,GAAG,UAAU,KAAK;AAAA;AAAA,EAE3B,IAAI,CAAC,SAAS;AAAA,IACZ,WAAW,WAAW,KAAK,cAAc;AAAA,MACvC,QAAQ,OAAO;AAAA,IACjB;AAAA,IACA,KAAK,QAAQ,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA;AAAA,EAE3C,OAAO,CAAC,eAAe,gBAAgB,CAAC,GAAG,eAAe,CAAC,GAAG;AAAA,IAC5D,MAAM,gBAAgB,OAAO,kBAAkB;AAAA,IAC/C,MAAM,UAAU,gBAAgB;AAAA,MAC9B,MAAM;AAAA,MACN,YAAY,cAAc,cAAc,KAAK,cAAc,aAAa;AAAA,SACrE;AAAA,IACL,IAAI;AAAA,IACJ,MAAM,UAAU,gBAAgB,eAAe;AAAA,IAC/C,MAAM,YAAY,QAAQ,aAAa,KAAK;AAAA,IAC5C,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACtC,MAAM,UAAU,WAAW,MAAM;AAAA,QAC/B,KAAK,QAAQ,OAAO,QAAQ,UAAU;AAAA,QACtC,OAAO,IAAI,MAAM,yBAAyB,QAAQ,YAAY,CAAC;AAAA,SAC9D,SAAS;AAAA,MACZ,KAAK,QAAQ,IAAI,QAAQ,YAAY;AAAA,QACnC,SAAS,CAAC,YAAY,QAAQ,OAAO;AAAA,QACrC;AAAA,QACA,WAAW,QAAQ;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,MACD,IAAI;AAAA,QACF,KAAK,KAAK,OAAO;AAAA,QACjB,OAAO,OAAO;AAAA,QACd,aAAa,OAAO;AAAA,QACpB,KAAK,QAAQ,OAAO,QAAQ,UAAU;AAAA,QACtC,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA;AAAA,KAEnE;AAAA;AAAA,EAEH,YAAY,CAAC,SAAS,UAAU,CAAC,GAAG;AAAA,IAClC,OAAO,KAAK,QAAQ;AAAA,MAClB,MAAM;AAAA,MACN,YAAY,QAAQ,cAAc,KAAK,cAAc,eAAe;AAAA,SACjE;AAAA,IACL,GAAG;AAAA,SACE;AAAA,MACH,WAAW,CAAC,YAAY,QAAQ,SAAS;AAAA,IAC3C,CAAC;AAAA;AAAA,EAEH,IAAI,CAAC,SAAS,UAAU,CAAC,GAAG;AAAA,IAC1B,OAAO,KAAK,QAAQ;AAAA,MAClB,MAAM;AAAA,MACN,YAAY,QAAQ,cAAc,KAAK,cAAc,MAAM;AAAA,SACxD;AAAA,IACL,GAAG;AAAA,SACE;AAAA,MACH,WAAW,CAAC,YAAY,QAAQ,SAAS;AAAA,IAC3C,CAAC;AAAA;AAAA,EAEH,KAAK,CAAC,SAAS,UAAU,CAAC,GAAG;AAAA,IAC3B,OAAO,KAAK,QAAQ;AAAA,MAClB,MAAM;AAAA,MACN,YAAY,QAAQ,cAAc,KAAK,cAAc,OAAO;AAAA,SACzD;AAAA,IACL,GAAG;AAAA,SACE;AAAA,MACH,WAAW,CAAC,YAAY,QAAQ,SAAS;AAAA,IAC3C,CAAC;AAAA;AAAA,EAEH,gBAAgB,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,GAAG;AAAA,IAC3C,OAAO,KAAK,QAAQ;AAAA,MAClB,MAAM;AAAA,MACN,YAAY,QAAQ,cAAc,KAAK,cAAc,mBAAmB;AAAA,SACrE;AAAA,IACL,GAAG;AAAA,SACE;AAAA,MACH,WAAW,CAAC,YAAY,QAAQ,SAAS;AAAA,IAC3C,CAAC;AAAA;AAAA,EAEH,kBAAkB,CAAC,SAAS;AAAA,IAC1B,OAAO,KAAK,UAAU,CAAC,SAAS,YAAY;AAAA,MAC1C,IAAI,YAAY,aAAa,QAAQ,SAAS,8BAA8B;AAAA,QAC1E;AAAA,MACF;AAAA,MACA,QAAQ,QAAQ,QAAQ,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW;AAAA,QACjD,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,YAAY,QAAQ;AAAA,UACpB;AAAA,QACF,CAAC;AAAA,OACF,EAAE,MAAM,CAAC,UAAU;AAAA,QAClB,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,YAAY,QAAQ;AAAA,UACpB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QAC9D,CAAC;AAAA,OACF;AAAA,KACF;AAAA;AAAA,EAEH,KAAK,CAAC,SAAS;AAAA,IACb,KAAK,KAAK,EAAE,MAAM,YAAY,QAAQ,CAAC;AAAA;AAAA,EAEzC,OAAO,CAAC,SAAS,UAAU,CAAC,GAAG;AAAA,IAC7B,MAAM,aAAa,GAAG,QAAQ,QAAQ,YAAY,QAAQ,QAAQ;AAAA,IAClE,IAAI,KAAK,mBAAmB,IAAI,UAAU,GAAG;AAAA,MAC3C,OAAO,QAAQ,OAAO,IAAI,MAAM,mCAAmC,YAAY,CAAC;AAAA,IAClF;AAAA,IACA,KAAK,mBAAmB,IAAI,UAAU;AAAA,IACtC,MAAM,YAAY,QAAQ,aAAa,KAAK;AAAA,IAC5C,MAAM,iBAAiB,KAAK,qBAAqB,OAAO;AAAA,IACxD,MAAM,SAAS,IAAI;AAAA,IACnB,IAAI,uBAAuB;AAAA,IAC3B,IAAI,+BAA+B;AAAA,IACnC,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACtC,MAAM,UAAU,WAAW,MAAM;AAAA,QAC/B,QAAQ;AAAA,QACR,OAAO,IAAI,MAAM,4CAA4C,QAAQ,QAAQ,YAAY,QAAQ,QAAQ,iBAAiB,CAAC;AAAA,SAC1H,SAAS;AAAA,MACZ,MAAM,UAAU,MAAM;AAAA,QACpB,aAAa,OAAO;AAAA,QACpB,KAAK,mBAAmB,OAAO,UAAU;AAAA,QACzC,WAAW;AAAA;AAAA,MAEb,MAAM,SAAS,CAAC,aAAa,iBAAiB,eAAe;AAAA,QAC3D,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN,SAAS,QAAQ;AAAA,UACjB;AAAA,UACA,QAAQ,CAAC,GAAG,MAAM;AAAA,UAClB,kBAAkB,eAAe;AAAA,UACjC;AAAA,UACA;AAAA,QACF,CAAC;AAAA;AAAA,MAEH,MAAM,OAAO,CAAC,UAAU;AAAA,QACtB,QAAQ;AAAA,QACR,OAAO,KAAK;AAAA;AAAA,MAEd,MAAM,aAAa,KAAK,UAAU,CAAC,YAAY;AAAA,QAC7C,IAAI,CAAC,aAAY,QAAQ,SAAS,QAAQ,OAAO,GAAG;AAAA,UAClD;AAAA,QACF;AAAA,QACA,IAAI,QAAQ,SAAS,gBAAgB;AAAA,UACnC,uBAAuB;AAAA,UACvB,MAAM,QAAQ,kBAAiB,OAAO;AAAA,UACtC,IAAI;AAAA,YACF,OAAO,IAAI,KAAK;AAAA,UAClB,MAAM,cAAc,wBAAuB,OAAO;AAAA,UAClD,IAAI,gBAAgB,gBAAgB,gBAAgB,iBAAiB;AAAA,YACnE,KAAK,IAAI,MAAM,wBAAwB,OAAO,CAAC,CAAC;AAAA,YAChD;AAAA,UACF;AAAA,UACA,IAAI,gBAAgB,eAAe;AAAA,YACjC,MAAM,aAAa,uBAAsB,OAAO;AAAA,YAChD,IAAI,eAAe,qBAAqB;AAAA,cACtC,+BAA+B;AAAA,cAC/B;AAAA,YACF;AAAA,YACA,OAAO,eAAe,SAAS,UAAU;AAAA,UAC3C;AAAA,UACA;AAAA,QACF;AAAA,QACA,IAAI,QAAQ,SAAS,sBAAsB;AAAA,UACzC,MAAM,kCAAkC,wBAAwB;AAAA,UAChE,IAAI,CAAC,oCAAoC,8BAA8B,OAAO,KAAK,QAAQ,4BAA4B,QAAQ,oBAAoB,OAAO,IAAI;AAAA,YAC5J;AAAA,UACF;AAAA,UACA,WAAW,SAAS,QAAQ,YAAY,gBAAgB;AAAA,YACtD,uBAAuB;AAAA,YACvB,OAAO,IAAI,KAAK;AAAA,UAClB;AAAA,UACA,IAAI,mCAAmC,8BAA8B,OAAO,GAAG;AAAA,YAC7E,OAAO,mCAAmC,SAAS,mBAAmB;AAAA,YACtE;AAAA,UACF;AAAA,UACA,IAAI,QAAQ,4BAA4B,QAAQ,mCAAmC,oBAAoB,OAAO,GAAG;AAAA,YAC/G,OAAO,gCAAgC,SAAS,IAAI;AAAA,UACtD;AAAA,QACF;AAAA,OACD;AAAA,MACD,IAAI;AAAA,QACF,KAAK,MAAM,eAAe,OAAO;AAAA,QACjC,OAAO,OAAO;AAAA,QACd,KAAK,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA;AAAA,KAEjE;AAAA;AAAA,EAEH,oBAAoB,CAAC,SAAS;AAAA,IAC5B,IAAI,QAAQ,QAAQ,SAAS,kBAAkB;AAAA,MAC7C,OAAO,EAAE,SAAS,kBAAkB,CAAC,EAAE;AAAA,IACzC;AAAA,IACA,MAAM,mBAAmB,CAAC;AAAA,IAC1B,MAAM,WAAW,QAAQ,QAAQ,SAAS,IAAI,CAAC,YAAY;AAAA,MACzD,IAAI,QAAQ,SAAS;AAAA,QACnB,OAAO;AAAA,MACT,MAAM,WAAW,QAAQ;AAAA,MACzB,MAAM,kBAAkB,OAAO,aAAa,YAAY,SAAS,SAAS,IAAI,WAAW,KAAK,cAAc,gBAAgB;AAAA,MAC5H,iBAAiB,KAAK,eAAe;AAAA,MACrC,OAAO,KAAK,SAAS,mBAAmB,gBAAgB;AAAA,KACzD;AAAA,IACD,OAAO;AAAA,MACL,SAAS;AAAA,WACJ;AAAA,QACH,SAAS,KAAK,QAAQ,SAAS,SAAS;AAAA,MAC1C;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAEF,aAAa,CAAC,OAAO,SAAS;AAAA,IAC5B,MAAM,UAAU,qBAAqB,KAAK;AAAA,IAC1C,WAAW,WAAW,KAAK,iBAAiB;AAAA,MAC1C,QAAQ,SAAS,OAAO;AAAA,IAC1B;AAAA,IACA,MAAM,YAAY,WAAW,OAAO,YAAY,YAAY,gBAAgB,UAAU,QAAQ,aAAa;AAAA,IAC3G,IAAI,YAAY,aAAa,OAAO,cAAc,UAAU;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,MAAM,UAAU,KAAK,QAAQ,IAAI,SAAS;AAAA,IAC1C,IAAI,CAAC,WAAW,QAAQ,aAAa,CAAC,QAAQ,UAAU,OAAO,GAAG;AAAA,MAChE;AAAA,IACF;AAAA,IACA,aAAa,QAAQ,OAAO;AAAA,IAC5B,KAAK,QAAQ,OAAO,SAAS;AAAA,IAC7B,QAAQ,QAAQ,OAAO;AAAA;AAAA,EAEzB,gBAAgB,CAAC,QAAQ;AAAA,IACvB,YAAY,WAAW,YAAY,KAAK,SAAS;AAAA,MAC/C,aAAa,QAAQ,OAAO;AAAA,MAC5B,KAAK,QAAQ,OAAO,SAAS;AAAA,MAC7B,QAAQ,OAAO,IAAI,MAAM,MAAM,CAAC;AAAA,IAClC;AAAA;AAAA,EAEF,gBAAgB,CAAC,SAAS,OAAO;AAAA,IAC/B,KAAK,iBAAiB,0BAA0B;AAAA,IAChD,IAAI,KAAK,oBAAoB,KAAK;AAAA,MAChC;AAAA,IACF,KAAK,qBAAqB;AAAA,IAC1B,WAAW,WAAW,KAAK,oBAAoB;AAAA,MAC7C,QAAQ,EAAE,SAAS,MAAM,CAAC;AAAA,IAC5B;AAAA;AAEJ;AACA,SAAS,qBAAqB,CAAC,SAAS;AAAA,EACtC,OAAO,IAAI,gBAAgB,OAAO;AAAA;;;ACtbpC,kBAAS;;;ACAT;AACA,0BAAS;AACT;AACA;AAEA,IAAM,WAAU,eAAc,YAAY,GAAG;AAC7C,IAAM,cAAa,cAAc,YAAY,GAAG;AAChD,IAAM,aAAY,QAAQ,WAAU;AAS7B,SAAS,YAAY,GAAW;AAAA,EACrC,MAAM,UAAU,QAAQ,IAAI;AAAA,EAC5B,IAAI,WAAW,WAAW,OAAO,GAAG;AAAA,IAClC,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,IACF,OAAO,SAAQ,QAAQ,sBAAsB;AAAA,IAC7C,MAAM;AAAA,EAIR,MAAM,aAAa;AAAA,IACjB,KAAK,YAAW,MAAM,gBAAgB,aAAa,cAAc,UAAU;AAAA,IAC3E,KAAK,YAAW,qCAAqC;AAAA,IACrD,KAAK,YAAW,mCAAmC;AAAA,IACnD,KAAK,YAAW,8BAA8B;AAAA,IAC9C,KAAK,YAAW,MAAM,MAAM,cAAc,UAAU;AAAA,EACtD;AAAA,EAEA,WAAW,QAAQ,YAAY;AAAA,IAC7B,IAAI,WAAW,IAAI,GAAG;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,MACR,yGACF;AAAA;;;AD5BF,IAAM,qBAAqB;AAC3B,IAAM,6BAA6B;AACnC,IAAM,eAAe;AAErB,SAAS,UAAU,CAAC,QAAgB,OAAwB;AAAA,EAC1D,OAAO,SAAS,OAAO,KAAK;AAAA;AAG9B,SAAS,sBAAsB,CAAC,QAA+B;AAAA,EAC7D,MAAM,QAAQ,OAAO,MAAM,YAAY;AAAA,EACvC,OAAO,QAAQ,MAAM;AAAA;AAGhB,SAAS,uBAAuB,CACrC,SACA,UAAkE,CAAC,GACzD;AAAA,EACV,OAAO;AAAA,IACL;AAAA,IACA,GAAI,QAAQ,YAAY,YAAY,CAAC,aAAa,QAAQ,OAAO,IAAI,CAAC;AAAA,IACtE;AAAA,IACA;AAAA,IACA,QAAQ,UAAU;AAAA,EACpB;AAAA;AAGF,SAAS,gBAAgB,CAAC,OAA2B;AAAA,EACnD,IAAI,MAAM,aAAa,QAAQ,MAAM,eAAe;AAAA,IAAM;AAAA,EAC1D,MAAM,KAAK,SAAS;AAAA,EACpB,WAAW,MAAM;AAAA,IACf,IAAI,MAAM,aAAa,QAAQ,MAAM,eAAe,MAAM;AAAA,MACxD,MAAM,KAAK,SAAS;AAAA,IACtB;AAAA,KACC,IAAK,EAAE,QAAQ;AAAA;AAMb,SAAS,mBAAmB,CACjC,UAAsC,CAAC,GACR;AAAA,EAC/B,MAAM,UAAU,QAAQ,WAAW,aAAa;AAAA,EAChD,MAAM,OAAO,wBAAwB,SAAS,OAAO;AAAA,EACrD,MAAM,mBAAmB,QAAQ,oBAAoB;AAAA,EAErD,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IACtC,MAAM,QAAQ,OAAM,QAAQ,UAAU,MAAM;AAAA,MAC1C,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,MAChC,KAAK,KAAK,QAAQ,QAAS,QAAQ,OAAO,CAAC,EAAG;AAAA,IAChD,CAAC;AAAA,IAED,IAAI,UAAU;AAAA,IACd,IAAI,SAAS;AAAA,IAEb,MAAM,UAAU,MAAM;AAAA,MACpB,MAAM,QAAQ,IAAI,QAAQ,QAAQ;AAAA,MAClC,MAAM,QAAQ,IAAI,QAAQ,QAAQ;AAAA,MAClC,MAAM,IAAI,SAAS,OAAO;AAAA,MAC1B,MAAM,IAAI,QAAQ,MAAM;AAAA,MACxB,aAAa,OAAO;AAAA;AAAA,IAGtB,MAAM,OAAO,CAAC,UAAiB;AAAA,MAC7B,IAAI;AAAA,QAAS;AAAA,MACb,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,iBAAiB,KAAK;AAAA,MACtB,OAAO,KAAK;AAAA;AAAA,IAGd,MAAM,UAAU,CAAC,QAAgB;AAAA,MAC/B,IAAI;AAAA,QAAS;AAAA,MACb,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,QACA,OAAO,MAAM,iBAAiB,KAAK;AAAA,MACrC,CAAC;AAAA;AAAA,IAGH,MAAM,WAAW,CAAC,UAAmB;AAAA,MACnC,SAAS,WAAW,QAAQ,KAAK;AAAA,MACjC,MAAM,MAAM,uBAAuB,MAAM;AAAA,MACzC,IAAI;AAAA,QAAK,QAAQ,GAAG;AAAA;AAAA,IAGtB,MAAM,WAAW,CAAC,UAAmB,SAAS,KAAK;AAAA,IACnD,MAAM,WAAW,CAAC,UAAmB;AAAA,MAGnC,SAAS,WAAW,QAAQ,KAAK;AAAA;AAAA,IAEnC,MAAM,UAAU,CAAC,UAAiB,KAAK,KAAK;AAAA,IAC5C,MAAM,SAAS,CAAC,MAAqB,WAAkC;AAAA,MACrE,IAAI;AAAA,QAAS;AAAA,MACb,KACE,IAAI,MACF,6DAA6D,QAAQ,kBAAkB,UAAU,WAC/F,SAAS;AAAA,EAAa,OAAO,KAAK,MAAM,IAE5C,CACF;AAAA;AAAA,IAGF,MAAM,UAAU,WAAW,MAAM;AAAA,MAC/B,KACE,IAAI,MACF,8DACE,SAAS;AAAA,EAAa,OAAO,KAAK,MAAM,IAE5C,CACF;AAAA,OACC,gBAAgB;AAAA,IAEnB,MAAM,QAAQ,GAAG,QAAQ,QAAQ;AAAA,IACjC,MAAM,QAAQ,GAAG,QAAQ,QAAQ;AAAA,IACjC,MAAM,KAAK,SAAS,OAAO;AAAA,IAC3B,MAAM,KAAK,QAAQ,MAAM;AAAA,GAC1B;AAAA;;;AEtCI,SAAS,cAAc,CAC5B,OACsB;AAAA,EACtB,MAAM,QAAQ,OAAO;AAAA,EACrB,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,IAAG;AAAA,EAC3B,OAAO,MAAM,QAAQ,CAAC,SAAS;AAAA,IAC7B,IAAI,OAAO,SAAS,YAAY,KAAK,SAAS;AAAA,MAAG,OAAO,CAAC,IAAI;AAAA,IAC7D,IAAI,CAAC,QAAQ,OAAO,SAAS;AAAA,MAAU,OAAO,CAAC;AAAA,IAC/C,MAAM,OAAQ,KAA4B;AAAA,IAC1C,OAAO,OAAO,SAAS,YAAY,KAAK,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC;AAAA,GAChE;AAAA;AAyBH,IAAM,wBAAuB;AAE7B,SAAS,oBAAoB,CAAC,OAAwB;AAAA,EACpD,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,KAAK;AAAA;AAGlB,SAAS,yBAAwB,CAAC,MAAsC;AAAA,EACtE,MAAM,iBAA2B,CAAC;AAAA,EAClC,IAAI,eAAe;AAAA,EAEnB,WAAW,OAAO,QAAQ,CAAC,GAAG;AAAA,IAC5B,IAAI,QAAQ,uBAAsB;AAAA,MAChC,IAAI;AAAA,QAAc;AAAA,MAClB,eAAe;AAAA,IACjB;AAAA,IACA,eAAe,KAAK,GAAG;AAAA,EACzB;AAAA,EAEA,IAAI,CAAC,cAAc;AAAA,IACjB,eAAe,KAAK,qBAAoB;AAAA,EAC1C;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,uCAAuC,CAAC,SAAmC;AAAA,EAClF,IAAI,QAAQ,iBAAiB,aAAa,QAAQ,oBAAoB,WAAW;AAAA,IAC/E,MAAM,IAAI,MAAM,6EAA6E;AAAA,EAC/F;AAAA,EACA,IAAI,QAAQ,eAAe,WAAW;AAAA,IACpC,MAAM,IAAI,MAAM,qEAAqE;AAAA,EACvF;AAAA,EACA,IAAI,QAAQ,uBAAuB,WAAW;AAAA,IAC5C,MAAM,IAAI,MAAM,6EAA6E;AAAA,EAC/F;AAAA,EACA,IAAI,QAAQ,UAAU,aAAa,WAAW;AAAA,IAC5C,MAAM,IAAI,MAAM,4EAA4E;AAAA,EAC9F;AAAA;AAGK,SAAS,mCAAmC,CACjD,QACA,SACM;AAAA,EACN,IAAI,QAAQ,iBAAiB,WAAW;AAAA,IACtC,MAAM,IAAI,MAAM,cAAc,2EAA2E;AAAA,EAC3G;AAAA,EACA,IAAI,QAAQ,oBAAoB,WAAW;AAAA,IACzC,MAAM,IAAI,MAAM,cAAc,gDAAgD;AAAA,EAChF;AAAA,EACA,IAAI,QAAQ,uBAAuB,WAAW;AAAA,IAC5C,MAAM,IAAI,MAAM,cAAc,6DAA6D;AAAA,EAC7F;AAAA,EACA,IAAI,QAAQ,UAAU,aAAa,WAAW;AAAA,IAC5C,MAAM,IAAI,MAAM,cAAc,4DAA4D;AAAA,EAC5F;AAAA,EACA,IAAK,QAAuC,iBAAiB,WAAW;AAAA,IACtE,MAAM,IAAI,MAAM,cAAc,yCAAyC;AAAA,EACzE;AAAA,EACA,IAAI,QAAQ,2BAA2B,WAAW;AAAA,IAChD,MAAM,IAAI,MAAM,cAAc,0FAA0F;AAAA,EAC1H;AAAA;AAGF,SAAS,oBAAoB,CAAC,OAAyD;AAAA,EACrF,MAAM,aAAa,KAAK,MAAM;AAAA,EAC9B,IAAI,WAAW,UAAU,aAAa,OAAO,WAAW,YAAY,UAAU;AAAA,IAC5E,WAAW,QAAQ,WAAW;AAAA,EAChC;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,eAAe,CAC7B,SACA,WAA8C,CAAC,GACtB;AAAA,EACzB,wCAAwC,OAAO;AAAA,EAE/C,MAAM,mBAAmB,SAAS,uBAAuB;AAAA,EACzD,MAAM,OAAgC,CAAC;AAAA,EACvC,IAAI,oBAAoB,QAAQ,SAAS,WAAW;AAAA,IAClD,KAAK,OAAO,mBAAmB,0BAAyB,QAAQ,IAAI,IAAI,QAAQ;AAAA,EAClF;AAAA,EAEA,IAAI,QAAQ,UAAU;AAAA,IAAW,KAAK,QAAQ,QAAQ;AAAA,EACtD,IAAI,QAAQ,cAAc;AAAA,IAAW,KAAK,YAAY,QAAQ;AAAA,EAC9D,IAAI,QAAQ,SAAS;AAAA,IAAW,KAAK,OAAO,QAAQ;AAAA,EACpD,IAAI,QAAQ,gBAAgB;AAAA,IAAW,KAAK,cAAc,QAAQ;AAAA,EAClE,IAAI,QAAQ,WAAW;AAAA,IAAW,KAAK,SAAS,QAAQ;AAAA,EACxD,IAAI,QAAQ,cAAc,WAAW;AAAA,IACnC,KAAK,QAAQ,QAAQ;AAAA,IAIrB,KAAK,qBAAqB;AAAA,IAC1B,KAAK,0BAA0B;AAAA,EACjC;AAAA,EAEA,IAAI,QAAQ,iBAAiB,WAAW;AAAA,IACtC,KAAK,SAAS;AAAA,EAChB,EAAO;AAAA,IACL,IAAI,OAAO,QAAQ,iBAAiB,UAAU;AAAA,MAC5C,IAAI,qBAAqB,QAAQ,YAAY,GAAG;AAAA,QAC9C,MAAM,IAAI,MAAM,4EAA4E;AAAA,MAC9F;AAAA,MACA,KAAK,SAAS,QAAQ;AAAA,IACxB,EAAO;AAAA,MACL,MAAM,IAAI,MAAM,mFAAmF;AAAA;AAAA;AAAA,EAIvG,MAAM,eAA+C,CAAC;AAAA,EACtD,MAAM,WAAqB,CAAC;AAAA,EAC5B,WAAW,QAAQ,QAAQ,UAAU,CAAC,GAAG;AAAA,IACvC,IAAI,OAAO,SAAS,UAAU;AAAA,MAC5B,MAAM,IAAI,MAAM,oEAAoE;AAAA,IACtF;AAAA,IACA,IAAI,aAAa,MAAM;AAAA,MACrB,SAAS,KAAK,KAAK,OAAO;AAAA,IAC5B,EAAO;AAAA,MACL,aAAa,KAAK,qBAAqB,IAA0C,CAAC;AAAA;AAAA,EAEtF;AAAA,EACA,IAAI,QAAQ,YAAY,WAAW;AAAA,IACjC,aAAa,KAAK,EAAE,OAAO,WAAW,OAAO,QAAQ,QAAQ,CAAC;AAAA,EAChE;AAAA,EACA,IAAI,QAAQ,UAAU,WAAW;AAAA,IAC/B,aAAa,KAAK,EAAE,OAAO,SAAS,OAAO,QAAQ,MAAM,CAAC;AAAA,EAC5D;AAAA,EACA,IAAI,aAAa,SAAS;AAAA,IAAG,KAAK,gBAAgB;AAAA,EAClD,IAAI,SAAS,SAAS;AAAA,IAAG,KAAK,YAAY;AAAA,EAE1C,OAAO;AAAA;AAGF,SAAS,kBAAkB,CAAC,OAA+E;AAAA,EAChH,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,IAAG;AAAA,EAClC,OAAO;AAAA,IACL;AAAA,MACE,OAAO,MAAM,IAAI,CAAC,UAAU;AAAA,QAC1B,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,QACZ,aAAa,KAAK;AAAA,QAClB,YAAY,KAAK;AAAA,MACnB,EAAE;AAAA,IACJ;AAAA,EACF;AAAA;AAGK,SAAS,6BAA6B,CAC3C,eACkC;AAAA,EAClC,OAAO,OAAO,YAAY;AAAA,IACxB,MAAM,OAAO,cAAc,IAAI,QAAQ,SAAS;AAAA,IAChD,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,0BAA0B,QAAQ,WAAW;AAAA,IAC/D;AAAA,IACA,MAAM,SAAS,MAAM,KAAK,QAAQ,QAAQ,cAAc,QAAQ,KAAK;AAAA,IACrE,OAAO;AAAA,MACL,SAAS,OAAO,QAAQ,IAAI,CAAC,UAAU;AAAA,QACrC,MAAM,KAAK;AAAA,WACP,KAAK,SAAS,YAAY,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,WACjD,KAAK,SAAS,YAAY,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,WACjD,KAAK,aAAa,YAAY,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC;AAAA,MACnE,EAAE;AAAA,IACJ;AAAA;AAAA;AAkBJ,eAAsB,4BAA4B,CAChD,SACA,UACA,WAC6B;AAAA,EAC7B,MAAM,cAAc,OAAO,QAAQ,eAAe;AAAA,EAClD,MAAM,4BAA4B,yBAAyB,QAAQ;AAAA,EAEnE,IAAI,6BAA6B,CAAC,aAAa;AAAA,IAC7C,OAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EAEA,IAAI,6BAA6B,QAAQ,cAAc,KAAK,CAAC,2BAA2B;AAAA,IACtF,OAAO,EAAE,UAAU,SAAS,cAAc,MAAM,oBAAoB,CAAC,EAAE;AAAA,EACzE;AAAA,EAEA,IAAI,aAAa;AAAA,IACf,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,QAAQ,WAAY,UAAU,SAAS;AAAA,MAC5D,IAAI,OAAO,aAAa,SAAS;AAAA,QAC/B,OAAO;AAAA,UACL,UAAU;AAAA,UACV,SAAS,OAAO;AAAA,UAChB,cAAc,OAAO,gBAAgB;AAAA,UACrC,oBAAoB,OAAO,sBAAsB,CAAC;AAAA,QACpD;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS,OAAO,WAAW;AAAA,QAC3B,WAAW,OAAO,aAAa;AAAA,MACjC;AAAA,MACA,OAAO,OAAO;AAAA,MACd,OAAO;AAAA,QACL,UAAU;AAAA,QACV,SAAS,iBAAiB,QAAQ,MAAM,UAAU;AAAA,QAClD,WAAW;AAAA,MACb;AAAA;AAAA,EAEJ;AAAA,EAEA,IAAI,wBAAwB,QAAQ,GAAG;AAAA,IACrC,OAAO,EAAE,UAAU,SAAS,cAAc,MAAM,oBAAoB,CAAC,EAAE;AAAA,EACzE;AAAA,EAEA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AAAA;AAGF,SAAS,sBAAsB,CAAC,OAA+B;AAAA,EAC7D,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAChD,MAAM,SAAS;AAAA,EACf,IAAI,OAAO,OAAO,OAAO;AAAA,IAAU,OAAO,OAAO;AAAA,EACjD,IAAI,OAAO,OAAO,kBAAkB;AAAA,IAAU,OAAO,OAAO;AAAA,EAC5D,IAAI,OAAO,OAAO,6BAA6B;AAAA,IAAU,OAAO,OAAO;AAAA,EACvE,OAAO;AAAA;AAGF,SAAS,2BAA2B,CACzC,UACmC;AAAA,EACnC,IAAI,SAAS,aAAa,QAAQ;AAAA,IAChC,OAAO;AAAA,MACL,UAAU;AAAA,MACV,SAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,MAAM,mCAAmC,SAAS,sBAAsB,CAAC,GACtE,IAAI,sBAAsB,EAC1B,OAAO,CAAC,OAAqB,OAAO,IAAI;AAAA,EAE3C,OAAO;AAAA,IACL,UAAU;AAAA,OACN,SAAS,YAAY,YAAY,EAAE,SAAS,SAAS,QAAQ,IAAI,CAAC;AAAA,IACtE,eAAe,SAAS,gBAAgB;AAAA,IACxC,oCAAoC;AAAA,EACtC;AAAA;AAGF,SAAS,YAAY,CAAC,OAAoD;AAAA,EACxE,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAAA,IAAG;AAAA,EACjE,MAAM,SAAiC,CAAC;AAAA,EACxC,YAAY,KAAK,UAAU,OAAO,QAAQ,KAAgC,GAAG;AAAA,IAC3E,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO,OAAO;AAAA,EAC/C;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,OAAqD;AAAA,EACzE,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAAA,IAAG;AAAA,EACjE,OAAO,KAAM,MAAkC;AAAA;AAGjD,SAAS,2BAA2B,CAAC,UAAgD;AAAA,EACnF,IAAI,CAAC,SAAS,SAAS;AAAA,IACrB,MAAM,IAAI,MAAM,SAAS,SAAS,mBAAmB;AAAA,EACvD;AAAA,EAEA,MAAM,UAAU,MAAM,QAAQ,SAAS,OAAO,IAC1C,SAAS,QAAQ,QAAQ,CAAC,UAAU;AAAA,IAClC,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,MAAU,OAAO,CAAC;AAAA,IACjD,MAAM,SAAS;AAAA,IACf,IACE,OAAO,OAAO,OAAO,YACrB,OAAO,OAAO,WAAW,YACzB,OAAO,OAAO,UAAU,YACxB,OAAO,OAAO,gBAAgB,UAC9B;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AAAA,IACA,MAAM,aAAa,aAAa,OAAO,UAAU;AAAA,IACjD,OAAO;AAAA,MACL;AAAA,QACE,IAAI,OAAO;AAAA,QACX,QAAQ,OAAO;AAAA,QACf,OAAO,OAAO;AAAA,QACd,aAAa,OAAO;AAAA,WAChB,OAAO,OAAO,cAAc,YAAY,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,WAC3E,OAAO,OAAO,eAAe,YAAY,EAAE,YAAY,OAAO,WAAW,IAAI,CAAC;AAAA,WAC9E,OAAO,OAAO,SAAS,YAAY,EAAE,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,WAC5D,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,MACrC;AAAA,IACF;AAAA,GACD,IACD,CAAC;AAAA,EAEL,MAAM,SAA2B,EAAE,QAAQ;AAAA,EAC3C,IAAI,SAAS,sBAAsB,MAAM;AAAA,IACvC,OAAO,mBAAmB;AAAA,EAC5B,EAAO,SAAI,MAAM,QAAQ,SAAS,iBAAiB,GAAG;AAAA,IACpD,OAAO,mBAAmB,SAAS,kBAAkB,OACnD,CAAC,WAA6B,OAAO,WAAW,QAClD;AAAA,EACF;AAAA,EACA,MAAM,UAAU,aAAa,SAAS,qBAAqB;AAAA,EAC3D,IAAI;AAAA,IAAS,OAAO,sBAAsB;AAAA,EAC1C,OAAO;AAAA;AAGT,SAAS,4BAA4B,CAAC,UAAkD;AAAA,EACtF,IAAI,CAAC,SAAS,SAAS;AAAA,IACrB,MAAM,IAAI,MAAM,SAAS,SAAS,wBAAwB;AAAA,EAC5D;AAAA,EACA,MAAM,SAA4B,CAAC;AAAA,EACnC,IAAI,SAAS,eAAe,WAAW,SAAS,eAAe,gBAAgB;AAAA,IAC7E,OAAO,YAAY,SAAS;AAAA,EAC9B;AAAA,EACA,IAAI,OAAO,SAAS,aAAa;AAAA,IAAU,OAAO,UAAU,SAAS;AAAA,EACrE,IAAI,OAAO,SAAS,iBAAiB;AAAA,IAAU,OAAO,cAAc,SAAS;AAAA,EAC7E,IAAI,SAAS,mBAAmB,MAAM;AAAA,IACpC,OAAO,gBAAgB;AAAA,EACzB,EAAO,SAAI,SAAS,kBAAkB,OAAO,SAAS,mBAAmB,UAAU;AAAA,IACjF,OAAO,gBAAgB,KAAM,SAAS,eAA2C;AAAA,EACnF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,uBAAuB,CAAC,SAA+C;AAAA,EAC9E,IAAI,QAAQ;AAAA,IAAS,OAAO,QAAQ;AAAA,EACpC,MAAM,UAAU,OAAO,QAAQ,aAAa,WAAW,QAAQ,WAAW;AAAA,EAC1E,MAAM,iBAAiB,OAAO,QAAQ,oBAAoB,WAAW,QAAQ,kBAAkB;AAAA,EAC/F,IAAI,WAAW,gBAAgB;AAAA,IAC7B,OAAO,EAAE,UAAU,SAAS,iBAAiB,eAAe;AAAA,EAC9D;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,sCAAsC,CAAC,QAIxC;AAAA,EACb,OAAO,OAAO,OAAO,UAAU,CAAC,YAAY,YAAY;AAAA,IACtD,MAAM,UAAU;AAAA,IAChB,IAAI,YAAY,aAAa,QAAQ,SAAS;AAAA,MAAmB;AAAA,IAC5D,iCAAiC,QAAQ,OAAO,EAAE,MAAM,MAAM,EAElE;AAAA,GACF;AAAA;AAGH,eAAe,gCAAgC,CAC7C,QAKA,SACe;AAAA,EACf,MAAM,UAAU,wBAAwB,OAAO,KAAK,OAAO,WAAW;AAAA,EACtE,IAAI,CAAC;AAAA,IAAS;AAAA,EAEd,MAAM,YAAY,OAAO,QAAQ,eAAe,WAAW,QAAQ,aAAa;AAAA,EAChF,MAAM,UAAU,QAAQ;AAAA,EACxB,IAAI,CAAC,aAAa,CAAC,WAAW,OAAO,YAAY;AAAA,IAAU;AAAA,EAC3D,MAAM,gBAAgB;AAAA,EACtB,IAAI,cAAc,YAAY;AAAA,IAAgB;AAAA,EAE9C,MAAM,WAAW,OAAO,cAAc,cAAc,WAAW,cAAc,YAAY;AAAA,EACzF,MAAM,YACJ,cAAc,SAAS,OAAO,cAAc,UAAU,YAAY,CAAC,MAAM,QAAQ,cAAc,KAAK,IAC/F,cAAc,QACf,CAAC;AAAA,EACP,MAAM,WAAW,MAAM,6BAA6B,OAAO,WAAW,GAAG,UAAU,SAAS;AAAA,EAC5F,OAAO,OAAO,MAAM;AAAA,IAClB;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,UAAU,4BAA4B,QAAQ;AAAA,IAChD;AAAA,EACF,CAA4C;AAAA;AAAA;AAGvC,MAAM,2BAAoE;AAAA,EAE5D;AAAA,EACA;AAAA,EACA;AAAA,EAHnB,WAAW,CACQ,QACA,SACA,qBACjB;AAAA,IAHiB;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGnB,SAAS,CAAC,SAA2E;AAAA,IACnF,OAAO,KAAK,OAAO,UAAU,CAAC,SAAS,YAAY;AAAA,MACjD,QAAQ,SAAuC,OAAO;AAAA,KACvD;AAAA;AAAA,EAGH,IAAI,CAAC,SAAwC;AAAA,IAC3C,KAAK,OAAO,KAAK,OAA4D;AAAA;AAAA,EAG/E,eAAe,CACb,SACA,SACA,SACM;AAAA,IACN,MAAM,UAAmC;AAAA,MACvC,MAAM;AAAA,MACN,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,SAAS,qBAAqB,OAAO;AAAA,UACrC,mBAAmB,QAAQ;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,KAAK,wBAAwB,WAAW;AAAA,MAC1C,QAAQ,wBAAwB,CAAC,GAAG,IAAI,IAAI,KAAK,mBAAmB,CAAC;AAAA,IACvE;AAAA,IACA,KAAK,OAAO,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,IACF,CAA4C;AAAA;AAAA,OAGxC,MAAK,CAAC,SAAsC;AAAA,IAChD,MAAM,KAAK,OAAO,MAAM,EAAE,QAAQ,CAA4C;AAAA;AAAA,EAGhF,OAAO,CACL,MACA,MACA,UAAqF,CAAC,GAC5D;AAAA,IAC1B,MAAM,UAAU,KAAK,OAAO,QAAQ,KAAK,KAAK,MAAM;AAAA,IAQpD,OAAO,QAAQ,MAAM,MAAM,OAAO;AAAA;AAAA,OAG9B,WAAU,GAA8B;AAAA,IAC5C,MAAM,WAAY,MAAM,KAAK,QAC3B,eACA,CAAC,GACD,EAAE,WAAW,CAAC,YAAY,QAAQ,SAAS,uBAAuB,CACpE;AAAA,IACA,OAAO,4BAA4B,QAAQ;AAAA;AAAA,OAGvC,YAAW,CACf,SACA,SAC4B;AAAA,IAC5B,MAAM,WAAY,MAAM,KAAK,QAC3B,gBACA;AAAA,MACE;AAAA,MACA;AAAA,IACF,GACA,EAAE,WAAW,CAAC,YAAY,QAAQ,SAAS,wBAAwB,CACrE;AAAA,IACA,OAAO,6BAA6B,QAAQ;AAAA;AAAA,OAGxC,wBAAuB,CAC3B,SACA,UAA0C,CAAC,GACH;AAAA,IACxC,MAAM,WAAW,MAAM,KAAK,OAAO,KACjC;AAAA,MACE;AAAA,MACA,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACvB,GACA,QAAQ,cAAc,YAAY,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC,CACxE;AAAA,IAEA,IAAI,CAAC,SAAS,SAAS;AAAA,MACrB,OAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,QACb,QAAQ,SAAS,SAAS;AAAA,MAC5B;AAAA,IACF;AAAA,IAEA,OAAO,EAAE,WAAW,MAAM,aAAa,MAAM;AAAA;AAAA,OAGzC,aAAY,CAChB,gBACA,UAA+B,CAAC,GACH;AAAA,IAC7B,MAAM,QAAiC,CAAC;AAAA,IACxC,IAAI,QAAQ,WAAW;AAAA,MAAW,MAAM,SAAS,QAAQ;AAAA,IACzD,IAAI,QAAQ,UAAU;AAAA,MAAW,MAAM,QAAQ,QAAQ;AAAA,IACvD,IAAI,QAAQ,UAAU;AAAA,MAAW,MAAM,QAAQ,QAAQ;AAAA,IACvD,IAAI,QAAQ,UAAU;AAAA,MAAW,MAAM,QAAQ,QAAQ;AAAA,IAEvD,MAAM,WAAY,MAAM,KAAK,QAC3B,8BACA;AAAA,MACE,iBAAiB;AAAA,SACb,OAAO,KAAK,KAAK,EAAE,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC;AAAA,IACnD,GACA,EAAE,WAAW,CAAC,YAAY,QAAQ,SAAS,sCAAsC,CACnF;AAAA,IAEA,IAAI,CAAC,SAAS,SAAS;AAAA,MACrB,MAAM,IAAI,MAAM,SAAS,SAAS,qBAAqB;AAAA,IACzD;AAAA,IAEA,MAAM,SAA6B;AAAA,MACjC,UAAU,SAAS,YAAY,CAAC;AAAA,IAClC;AAAA,IACA,MAAM,aACJ,OAAO,SAAS,eAAe,YAAY,SAAS,eAAe,OAC/D,SAAS,aACT,OAAO,SAAS,gBAAgB,YAAY,SAAS,gBAAgB,OACnE,SAAS,cACT;AAAA,IACR,IAAI,eAAe;AAAA,MAAW,OAAO,aAAa;AAAA,IAClD,MAAM,UACJ,OAAO,SAAS,YAAY,YACxB,SAAS,UACT,OAAO,SAAS,aAAa,YAC3B,SAAS,WACT;AAAA,IACR,IAAI,YAAY;AAAA,MAAW,OAAO,UAAU;AAAA,IAC5C,OAAO;AAAA;AAAA,EAGT,KAAK,GAAS;AAAA,IACZ,KAAK,OAAO,MAAM;AAAA;AAEtB;AAAA;AAEO,MAAM,yBAAyB,wBAAwB;AAAA,EAOzC;AAAA,EANX,iBAA8C;AAAA,EAC9C,gBAAgB,IAAI;AAAA,EACpB,4BAAiD;AAAA,EACjD,8BAAmD;AAAA,EAE3D,WAAW,CACQ,eACjB,MACA;AAAA,IACA,MAAM,MAAM;AAAA,MACV,OAAO;AAAA,MACP,kBAAkB,cAAc;AAAA,IAClC,CAAC;AAAA,IANgB;AAAA,IAOjB,MAAM,QAAQ,KAAK,QAAQ;AAAA,IAC3B,WAAW,QAAQ,SAAS,CAAC,GAAG;AAAA,MAC9B,KAAK,cAAc,IAAI,KAAK,MAAM,IAAI;AAAA,IACxC;AAAA;AAAA,EAGiB,iBAAiB,CAAC,SAAsE;AAAA,IACzG,IAAI,KAAK,KAAK,SAAS;AAAA,MAAgB,OAAO;AAAA,IAC9C,OAAQ,QAA+B,UAAU;AAAA;AAAA,OAG1B,4BAA2B,GAAgC;AAAA,IAClF,MAAM,MAAM,MAAM,KAAK,oBAAoB;AAAA,IAC3C,MAAM,SAAS,sBAAsB;AAAA,MACnC;AAAA,SACI,KAAK,cAAc,cAAc,YACjC,EAAE,WAAW,KAAK,cAAc,UAAU,IAC1C,CAAC;AAAA,SACD,KAAK,cAAc,YACnB,EAAE,WAAW,KAAK,cAAc,UAAwC,IACxE,CAAC;AAAA,SACD,KAAK,cAAc,qBAAqB,YACxC,EAAE,kBAAkB,KAAK,cAAc,iBAAiB,IACxD,CAAC;AAAA,IACP,CAAC;AAAA,IAED,KAAK,8BAA8B,uCAAuC;AAAA,MACxE;AAAA,MACA,YAAY,MAAM,KAAK;AAAA,MACvB,YAAY,MAAM,KAAK,eAAe;AAAA,IACxC,CAAC;AAAA,IAED,IAAI,KAAK,cAAc,OAAO,GAAG;AAAA,MAC/B,KAAK,4BAA4B,OAAO,mBACtC,8BAA8B,KAAK,aAAa,CAClD;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,OAAO,QAAQ;AAAA,MACrB,MAAM,WAAW,MAAM,KAAK,aAAa,MAAM;AAAA,MAC/C,IAAI,CAAC,SAAS,WAAW,CAAC,SAAS,SAAS;AAAA,QAC1C,MAAM,IAAI,MAAM,SAAS,SAAS,oCAAoC;AAAA,MACxE;AAAA,MAEA,MAAM,QAAQ,eAAe,SAAS,KAAK;AAAA,MAC3C,MAAM,eAAe,KAAK,eAAe,EAAE;AAAA,MAC3C,OAAO;AAAA,QACL,YAAY,IAAI,2BACd,QACA,KAAK,eACL,KAAK,eAAe,EAAE,YACxB;AAAA,QACA,SAAS,SAAS;AAAA,QAClB,OAAO,OAAO,SAAS,OAAO,UAAU,WAAW,SAAS,MAAM,QAAQ;AAAA,QAC1E,eAAe,SAAS,OAAO,kBAAkB;AAAA,WAC7C,UAAU,YAAY,EAAE,MAAM,IAAI,CAAC;AAAA,WACnC,iBAAiB,YAAY,EAAE,cAAc,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC;AAAA,MAC1E;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,4BAA4B;AAAA,MACjC,KAAK,4BAA4B;AAAA,MACjC,KAAK,8BAA8B;AAAA,MACnC,KAAK,8BAA8B;AAAA,MACnC,OAAO,MAAM;AAAA,MACb,MAAM;AAAA;AAAA;AAAA,EAIS,WAAW,GAAS;AAAA,IACrC,KAAK,4BAA4B;AAAA,IACjC,KAAK,4BAA4B;AAAA,IACjC,KAAK,8BAA8B;AAAA,IACnC,KAAK,8BAA8B;AAAA,IACnC,KAAK,gBAAgB,MAAM;AAAA,IAC3B,KAAK,iBAAiB;AAAA;AAAA,OAGV,oBAAmB,GAAoB;AAAA,IACnD,IAAI,KAAK,cAAc,KAAK;AAAA,MAC1B,OAAO,KAAK,cAAc;AAAA,IAC5B;AAAA,IACA,IAAI,KAAK,cAAc,UAAU,MAAM;AAAA,MACrC,MAAM,IAAI,MAAM,gFAAgF;AAAA,IAClG;AAAA,IAGA,MAAM,aACJ,KAAK,KAAK,QACV;AAAA,IACF,KAAK,iBAAiB,MAAM,oBAAoB;AAAA,MAC9C,QAAQ,KAAK,cAAc;AAAA,MAC3B,SAAS,KAAK,cAAc;AAAA,MAC5B,kBAAkB,KAAK,cAAc;AAAA,MACrC,KAAK,KAAK,KAAK,cAAc,aAAa,WAAW;AAAA,IACvD,CAAC;AAAA,IACD,OAAO,KAAK,eAAe;AAAA;AAAA,OAGf,aAAY,CAAC,QAAwD;AAAA,IACjF,MAAM,UAAU,MAAM,KAAK,yBAAyB,MAAM;AAAA,IAC1D,MAAM,WAAY,MAAM,OAAO,aAAa,OAAO;AAAA,IACnD,OAAO;AAAA;AAAA,OAGK,yBAAwB,CAAC,QAAuD;AAAA,IAC5F,MAAM,UAAU,KAAK,KAAK;AAAA,IAC1B,MAAM,UAAmC;AAAA,MACvC,aAAa;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACvB;AAAA,IAEA,MAAM,OAAO,kBAAkB,QAAQ,cAAc;AAAA,IACrD,IAAI;AAAA,MAAM,QAAQ,OAAO;AAAA,IACzB,IAAI,QAAQ,QAAQ;AAAA,MAAW,QAAQ,MAAM,QAAQ;AAAA,IAIrD,IAAI,QAAQ,iBAAiB,WAAW;AAAA,MACtC,QAAQ,gBAAgB,CAAC,GAAG,IAAI,IAAI,QAAQ,YAAY,CAAC;AAAA,IAC3D;AAAA,IACA,MAAM,SAAS,mBAAmB,QAAQ,KAAK;AAAA,IAC/C,IAAI;AAAA,MAAQ,QAAQ,iBAAiB;AAAA,IAErC,IAAI,KAAK,KAAK,SAAS,gBAAgB;AAAA,MACrC,QAAQ,eAAe;AAAA,QACrB,MAAM,gBAAgB,KAAK,KAAK,SAAS;AAAA,UACvC,qBAAqB,KAAK,cAAc;AAAA,QAC1C,CAAC;AAAA,QAED,YACE,KAAK,cAAc,kBAClB,KAAK,KAAK,QAA+B,WAAW;AAAA,WAKlD,KAAK,KAAK,QAA+B,UAAU,QACpD,EAAE,OAAO,MAAM,IACf,CAAC;AAAA,MACP;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,KAAK,KAAK,SAAS;AAAA,MACrB,QAAQ,WAAW,KAAK,KAAK;AAAA,MAC7B,IAAI,KAAK,KAAK,iBAAiB;AAAA,QAC7B,QAAQ,sBAAsB,EAAE,MAAM,CAAC,EAAE;AAAA,MAC3C,EAAO,SAAI,KAAK,KAAK,qBAAqB;AAAA,QACxC,QAAQ,kBAAkB;AAAA,MAC5B;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,KAAK,KAAK,gBAAgB;AAAA,MAC5B,MAAM,UAAU,MAAM,KAAK,2BAA2B,QAAQ,KAAK,KAAK,cAAc;AAAA,MACtF,QAAQ,WAAW;AAAA,MACnB,QAAQ,kBAAkB,KAAK,KAAK;AAAA,MACpC,OAAO;AAAA,IACT;AAAA,IAEA,MAAM,IAAI,MACR,gGACF;AAAA;AAAA,OAGY,2BAA0B,CACtC,QACA,gBACiB;AAAA,IACjB,MAAM,UAAU,OAAO,QAAQ,KAAK,MAAM;AAAA,IAK1C,MAAM,WAAY,MAAM,QACtB,yBACA,EAAE,iBAAiB,eAAe,GAClC,EAAE,WAAW,CAAC,YAAY,QAAQ,SAAS,iCAAiC,CAC9E;AAAA,IACA,IAAI,CAAC,SAAS,WAAW,CAAC,SAAS,cAAc,UAAU;AAAA,MACzD,MAAM,IAAI,MAAM,SAAS,SAAS,mCAAmC,gBAAgB;AAAA,IACvF;AAAA,IACA,OAAO,SAAS,aAAa;AAAA;AAGjC;;;AC51BA,SAAS,iBAAgB,GAAuB;AAAA,EAC9C,IAAI,OAAO,YAAY,aAAa;AAAA,IAClC;AAAA,EACF;AAAA,EACA,OAAO,QAAQ,IAAI;AAAA;AAGrB,SAAS,aAAa,CAAC,SAAiE;AAAA,EACtF,MAAM,SAAS,QAAQ,UAAU,kBAAiB;AAAA,EAClD,OAAO;AAAA,OACD,SAAS,EAAE,eAAe,UAAU,SAAS,IAAI,CAAC;AAAA,OAClD,QAAQ,WAAW,CAAC;AAAA,EAC1B;AAAA;AAGF,SAAS,SAAQ,CAAC,SAAsD;AAAA,EACtE,MAAM,YAAY,QAAQ,SAAS,WAAW;AAAA,EAC9C,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AAAA,EACA,OAAO,UAAU,KAAK,UAAU;AAAA;AAGlC,SAAS,iBAAgB,CAAC,SAA0B;AAAA,EAClD,QAAQ,WAAW,yBAAyB,QAAQ,OAAO,EAAE;AAAA;AAG/D,SAAS,YAAY,CACnB,aACA,QAC2B;AAAA,EAC3B,IAAI,CAAC,YAAY,cAAc;AAAA,IAC7B,MAAM,QACJ,cAAc,SACV,OAAO,YACP,mBAAmB,UACjB,OAAO,iBACP,oBAAoB,UAClB,OAAO,iBACP,YAAY;AAAA,IACtB,MAAM,IAAI,MAAM,kCAAkC,OAAO;AAAA,EAC3D;AAAA,EAEA,OAAO;AAAA,IACL,cAAc,YAAY;AAAA,IAC1B;AAAA,IACA;AAAA,EACF;AAAA;AAGF,eAAe,kBAAoB,CAAC,UAAgC;AAAA,EAClE,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,EACjC,MAAM,OAAO,OAAO,KAAK,MAAM,IAAI,IAAI;AAAA,EAEvC,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,UACJ,QAAQ,OAAO,SAAS,YAAY,aAAa,OAC7C,OAAQ,KAA8B,OAAO,IAC7C,SAAS;AAAA,IACf,MAAM,IAAI,MAAM,6BAA6B,SAAS,YAAY,SAAS;AAAA,EAC7E;AAAA,EAEA,OAAO;AAAA;AAAA;AAMF,MAAM,wBAAwB;AAAA,EAIN;AAAA,EAHZ;AAAA,EACA;AAAA,EAEjB,WAAW,CAAkB,UAA0C,CAAC,GAAG;AAAA,IAA9C;AAAA,IAC3B,KAAK,UAAU,kBAAiB,QAAQ,OAAO;AAAA,IAC/C,KAAK,YAAY,UAAS,OAAO;AAAA;AAAA,OAG7B,iBAAgB,GAAyC;AAAA,IAC7D,MAAM,MAAM,IAAI,IAAI,GAAG,KAAK,yBAAyB;AAAA,IACrD,MAAM,WAAW,MAAM,KAAK,UAAU,KAAK;AAAA,MACzC,SAAS,cAAc,KAAK,OAAO;AAAA,IACrC,CAAC;AAAA,IACD,OAAO,mBAA+C,QAAQ;AAAA;AAAA,OAG1D,yBAAwB,CAAC,UAAwD;AAAA,IACrF,MAAM,WAAW,MAAM,KAAK,UAC1B,GAAG,KAAK,2BAA2B,mBAAmB,QAAQ,KAC9D,EAAE,SAAS,cAAc,KAAK,OAAO,EAAE,CACzC;AAAA,IACA,OAAO,mBAA+C,QAAQ;AAAA;AAAA,OAG1D,mBAAkB,CAAC,QAAqE;AAAA,IAC5F,IAAI,kBAAkB,QAAQ;AAAA,MAC5B,OAAO,EAAE,cAAc,OAAO,cAAc,OAAO;AAAA,IACrD;AAAA,IAEA,IAAI,cAAc,QAAQ;AAAA,MACxB,OAAO,aAAa,MAAM,KAAK,yBAAyB,OAAO,QAAQ,GAAG,MAAM;AAAA,IAClF;AAAA,IAEA,QAAQ,gBAAgB,MAAM,KAAK,iBAAiB;AAAA,IACpD,IAAI,mBAAmB,QAAQ;AAAA,MAC7B,MAAM,SAAQ,YAAY,KAAK,CAAC,QAAQ,IAAI,OAAO,OAAO,aAAa;AAAA,MACvE,IAAI,CAAC,QAAO;AAAA,QACV,MAAM,IAAI,MAAM,iCAAiC,OAAO,eAAe;AAAA,MACzE;AAAA,MACA,OAAO,aAAa,QAAO,MAAM;AAAA,IACnC;AAAA,IAEA,MAAM,UAAU,YAAY,OAC1B,CAAC,QAAQ,IAAI,mBAAmB,OAAO,cACzC;AAAA,IACA,IAAI,QAAQ,WAAW,GAAG;AAAA,MACxB,MAAM,IAAI,MAAM,iCAAiC,OAAO,gBAAgB;AAAA,IAC1E;AAAA,IACA,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,MAAM,IAAI,MACR,yCAAyC,OAAO,gBAClD;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,CAAC,OAAO;AAAA,MACV,MAAM,IAAI,MAAM,iCAAiC,OAAO,gBAAgB;AAAA,IAC1E;AAAA,IACA,OAAO,aAAa,OAAO,MAAM;AAAA;AAGrC;;;ACxIA,IAAM,8BAA6B;AACnC,IAAM,0BAA0B;AAChC,IAAM,2BAA2B;AACjC,IAAM,8BAA8B;AACpC,IAAM,0BAA0B;AAChC,IAAM,0BAA0B;AAChC,IAAM,mCAAmC;AACzC,IAAM,yCAAyC;AAC/C,IAAM,uCAAuC;AAC7C,IAAM,6CAA6C;AACnD,IAAM,mBAAmB;AAAA;AA0EzB,MAAM,0CAA0C,MAAM;AAAC;AAAA;AAQhD,MAAM,wCAAwC,MAAM;AAAA,EAI9C;AAAA,EACA;AAAA,EAJF,OAAO;AAAA,EAEhB,WAAW,CACA,WACA,gBACT;AAAA,IACA,MACE,yBAAyB,0CAA0C,2DACrE;AAAA,IALS;AAAA,IACA;AAAA,IAKT,KAAK,OAAO;AAAA;AAEhB;AAUA,SAAS,iBAAgB,GAAuB;AAAA,EAC9C,MAAM,MAAO,WACV,SAAS;AAAA,EACZ,OAAO,KAAK,iBAAiB,KAAK;AAAA;AAGpC,SAAS,uBAAsB,CAAC,SAAiE;AAAA,EAC/F,MAAM,gBAAgB,SAAS,iBAAiB,SAAS;AAAA,EACzD,IAAI,CAAC;AAAA,IAAe;AAAA,EACpB,MAAM,QAAQ,mBAAmB,KAAK,aAAa;AAAA,EACnD,OAAO,QAAQ;AAAA;AAGjB,SAAS,eAAc,CAAC,SAA0D;AAAA,EAChF,OAAO,QAAQ,UAAU,wBAAuB,QAAQ,OAAO,KAAK,kBAAiB;AAAA;AAGvF,SAAS,SAAQ,CAAC,eAAsC;AAAA,EACtD,MAAM,WAAW,iBAAiB,WAAW;AAAA,EAC7C,IAAI,CAAC,UAAU;AAAA,IACb,MAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AAAA,EACA,OAAO,SAAS,KAAK,UAAU;AAAA;AAGjC,SAAS,uBAAuB,CAC9B,mBAC4B;AAAA,EAC5B,MAAM,WACJ,qBACC,WAA0D;AAAA,EAC7D,IAAI,CAAC,UAAU;AAAA,IACb,MAAM,IAAI,MAAM,0DAA0D;AAAA,EAC5E;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,yBAAwB,CAAC,KAAiC;AAAA,EACjE,MAAM,SAAS,IAAI,IAAI,OAAO,2BAA0B;AAAA,EACxD,OAAO,WAAW,OAAO,SAAS,QAAQ,QAAQ,EAAE;AAAA,EACpD,OAAO,SAAS;AAAA,EAChB,OAAO,OAAO;AAAA,EACd,OAAO,OAAO,SAAS,EAAE,QAAQ,OAAO,EAAE;AAAA;AAG5C,SAAS,aAAY,CAAC,SAA8D;AAAA,EAClF,MAAM,UAAkC;AAAA,IACtC,gBAAgB;AAAA,OACZ,QAAQ,WAAW,CAAC;AAAA,EAC1B;AAAA,EACA,MAAM,SAAS,gBAAe,OAAO;AAAA,EACrC,IAAI,UAAU,CAAC,QAAQ,iBAAiB,CAAC,QAAQ,eAAe;AAAA,IAC9D,QAAQ,gBAAgB,UAAU;AAAA,EACpC;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,qBAAqB,CAAC,SAA0E;AAAA,EACvG,MAAM,UAAU,KAAM,QAAQ,WAAW,CAAC,EAAG;AAAA,EAC7C,OAAO,QAAQ;AAAA,EACf,OAAO,QAAQ;AAAA,EACf,MAAM,SAAS,gBAAe,OAAO;AAAA,EACrC,IAAI;AAAA,IAAQ,QAAQ,gBAAgB,UAAU;AAAA,EAC9C,OAAO,OAAO,KAAK,OAAO,EAAE,SAAS,IAAI,UAAU;AAAA;AAGrD,eAAe,kBAAiB,CAAC,UAAsC;AAAA,EACrE,MAAM,OAAO,MAAM,SAAS,KAAK;AAAA,EACjC,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAClB,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,IAAI;AAAA,IACtB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,SAAS,qBAAoB,CAAC,MAAe,UAA0B;AAAA,EACrE,IAAI,QAAQ,OAAO,SAAS,UAAU;AAAA,IACpC,MAAM,SAAS;AAAA,IACf,MAAM,UAAU,OAAO,WAAW,OAAO,SAAS,OAAO;AAAA,IACzD,MAAM,aAAa,OAAO;AAAA,IAC1B,MAAM,SAAS,CAAC,SAAS,UAAU,EAChC,OAAO,CAAC,UAA2B,OAAO,UAAU,YAAY,MAAM,SAAS,CAAC;AAAA,IACnF,IAAI,OAAO,SAAS;AAAA,MAAG,OAAO,OAAO,KAAK,IAAI;AAAA,EAChD;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,iBAAgB,CAAC,UAAoB,MAAe,QAAsB;AAAA,EACjF,IAAI,CAAC,SAAS,IAAI;AAAA,IAChB,MAAM,IAAI,MACR,sBAAqB,MAAM,GAAG,2BAA2B,SAAS,QAAQ,CAC5E;AAAA,EACF;AAAA;AAGF,SAAS,uBAAuB,CAAC,OAA2B,MAAoB;AAAA,EAC9E,IAAI,UAAU,cAAc,CAAC,OAAO,UAAU,KAAK,KAAK,SAAS,IAAI;AAAA,IACnE,MAAM,IAAI,MAAM,WAAW,oCAAoC;AAAA,EACjE;AAAA;AAGF,SAAS,oBAAoB,CAC3B,OACA,MACA,KACA,KACM;AAAA,EACN,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,OAAO,QAAQ,KAAK;AAAA,IAC1D,MAAM,IAAI,MAAM,WAAW,qCAAqC,WAAW,MAAM;AAAA,EACnF;AAAA;AAGF,SAAS,2BAA2B,CAClC,SACA,MACM;AAAA,EACN,IAAI,YAAY;AAAA,IAAW;AAAA,EAC3B,IAAI,YAAY,QAAQ,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AAAA,IAC7E,MAAM,IAAI,MAAM,WAAW,2BAA2B;AAAA,EACxD;AAAA,EACA,qBACE,QAAQ,YACR,GAAG,mBACH,yBACA,uBACF;AAAA,EACA,wBAAwB,QAAQ,gBAAgB,GAAG,qBAAqB;AAAA,EACxE,wBAAwB,QAAQ,qBAAqB,GAAG,0BAA0B;AAAA,EAClF,wBAAwB,QAAQ,mBAAmB,GAAG,wBAAwB;AAAA,EAC9E,IACE,QAAQ,qBAAqB,aAC7B,OAAO,QAAQ,qBAAqB,WACpC;AAAA,IACA,MAAM,IAAI,MAAM,WAAW,4CAA4C;AAAA,EACzE;AAAA;AAGK,SAAS,0BAA0B,CAAC,SAA4C;AAAA,EACrF,wBAAwB,QAAQ,kBAAkB,kBAAkB;AAAA,EACpE,wBAAwB,QAAQ,WAAW,kBAAkB,4BAA4B;AAAA,EACzF,wBAAwB,QAAQ,WAAW,kBAAkB,4BAA4B;AAAA,EACzF,4BAA4B,QAAQ,SAAS,SAAS;AAAA,EACtD,IAAI,QAAQ,gBAAgB,aAAa,QAAQ,YAAY,WAAW;AAAA,IACtE,MAAM,IAAI,MAAM,6EAA6E;AAAA,EAC/F;AAAA,EACA,IACE,QAAQ,kBAAkB,aAC1B,QAAQ,kBAAkB,YAC1B,QAAQ,kBAAkB,SAC1B;AAAA,IACA,MAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAAA;AAGF,SAAS,yBAAyB,CAChC,aACyB;AAAA,EACzB,IAAI,OAAO,gBAAgB,UAAU;AAAA,IACnC,OAAO,EAAE,gBAAgB,YAAY;AAAA,EACvC;AAAA,EACA,IAAI,UAAU,aAAa;AAAA,IACzB,OAAO,EAAE,gBAAgB,YAAY,KAAK;AAAA,EAC5C;AAAA,EACA,IAAI,QAAQ,aAAa;AAAA,IACvB,OAAO,EAAE,eAAe,YAAY,GAAG;AAAA,EACzC;AAAA,EACA,IAAI,kBAAkB,aAAa;AAAA,IACjC,OAAO,EAAE,cAAc,YAAY,aAAa;AAAA,EAClD;AAAA,EACA,IAAI,cAAc,aAAa;AAAA,IAC7B,OAAO,EAAE,UAAU,YAAY,SAAS;AAAA,EAC1C;AAAA,EACA,MAAM,IAAI,MAAM,qCAAqC;AAAA;AAGvD,SAAS,4BAA4B,CAAC,QAO3B;AAAA,EACT,MAAM,OAAO,IAAI,IAAI,0BAAyB,OAAO,UAAU,CAAC;AAAA,EAChE,IAAI,KAAK,aAAa,SAAS;AAAA,IAC7B,KAAK,WAAW;AAAA,EAClB,EAAO,SAAI,KAAK,aAAa,UAAU;AAAA,IACrC,KAAK,WAAW;AAAA,EAClB,EAAO,SAAI,KAAK,aAAa,SAAS,KAAK,aAAa,QAAQ;AAAA,IAC9D,MAAM,IAAI,MAAM,0CAA0C,KAAK,UAAU;AAAA,EAC3E;AAAA,EACA,KAAK,WAAW,oBAAoB,mBAAmB,OAAO,YAAY;AAAA,EAC1E,KAAK,aAAa,IAAI,WAAW,OAAO,OAAO;AAAA,EAC/C,KAAK,aAAa,IAAI,kBAAkB,OAAO,cAAc;AAAA,EAC7D,KAAK,aAAa,IAAI,WAAW,QAAQ;AAAA,EACzC,IAAI,OAAO,aAAa,WAAW,OAAO,QAAQ;AAAA,IAChD,KAAK,aAAa,IAAI,SAAS,OAAO,MAAM;AAAA,EAC9C;AAAA,EACA,OAAO,KAAK,SAAS;AAAA;AAGvB,SAAS,iBAAiB,CACxB,QACA,MACA,UACY;AAAA,EACZ,IAAI,OAAO,kBAAkB;AAAA,IAC3B,OAAO,iBAAiB,MAAM,QAAQ;AAAA,IACtC,OAAO,MAAM,OAAO,sBAAsB,MAAM,QAAQ;AAAA,EAC1D;AAAA,EACA,IAAI,OAAO,IAAI;AAAA,IACb,OAAO,GAAG,MAAM,QAAQ;AAAA,IACxB,OAAO,MAAM,OAAO,MAAM,MAAM,QAAQ;AAAA,EAC1C;AAAA,EACA,MAAM,IAAI,MAAM,4DAA4D;AAAA;AAG9E,SAAS,gBAAgB,CAAC,OAA+B;AAAA,EACvD,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,IAAI,SAAS,OAAO,UAAU,UAAU;AAAA,IACtC,MAAM,OAAQ,MAA6B;AAAA,IAC3C,IAAI,OAAO,SAAS;AAAA,MAAU,OAAO;AAAA,IACrC,IAAI,gBAAgB,aAAa;AAAA,MAC/B,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AAAA,IACtC;AAAA,IACA,IAAI,gBAAgB,YAAY;AAAA,MAC9B,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AAAA,IACtC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAeT,SAAS,qCAAqC,CAAC,QAGhB;AAAA,EAC7B,MAAM,gBAAgB,wBAAwB,OAAO,aAAa,SAAS;AAAA,EAC3E,MAAM,WAAW,OAAO,aAAa,iBAAiB;AAAA,EACtD,MAAM,gBAAe,aAAa,WAAW,sBAAsB,OAAO,YAAY,IAAI;AAAA,EAC1F,MAAM,iBAAiB,OAAO,aAAa,kBAAkB;AAAA,EAC7D,MAAM,QAAgC;AAAA,IACpC,SAAS,OAAO;AAAA,IAChB,qBAAqB,IAAI;AAAA,IACzB,sBAAsB,CAAC;AAAA,IACvB,cAAc;AAAA,IACd,eAAe;AAAA,EACjB;AAAA;AAAA,EAEA,MAAM,yBAAwD;AAAA,IAC3C;AAAA,IACA;AAAA,IACA,mBAAmB,IAAI;AAAA,IAChC,YAAmD;AAAA,IACnD,sBAA2C;AAAA,IAEnD,WAAW,CAAC,KAAa,SAAkC;AAAA,MACzD,KAAK,UAAU,IAAI,IAAI,GAAG,EAAE,aAAa,IAAI,SAAS;AAAA,MACtD,MAAM,gBAAgB,aAAa,WAC/B;AAAA,WACM,SAAS,WAAW,CAAC;AAAA,WACrB,iBAAgB,CAAC;AAAA,MACvB,IACA;AAAA,MACJ,MAAM,gBAAgB,iBAAiB,OAAO,KAAK,aAAa,EAAE,SAAS,IACvE,EAAE,SAAS,cAAc,IACzB;AAAA,MACJ,KAAK,SAAS,IAAI,cAAc,KAAK,aAAa;AAAA,MAClD,IAAI,KAAK,YAAY,WAAW;AAAA,QAC9B,MAAM,gBAAgB;AAAA,MACxB;AAAA,MACA,KAAK,sBAAsB,kBAAkB,KAAK,QAAQ,SAAS,MAAM;AAAA,QACvE,KAAK,SAAS;AAAA,QACd,IAAI,MAAM,kBAAkB;AAAA,UAAM,MAAM,gBAAgB;AAAA,OACzD;AAAA,MACD,KAAK,UAAU,cAAc;AAAA;AAAA,QAG3B,UAAU,GAAW;AAAA,MACvB,OAAO,KAAK,OAAO;AAAA;AAAA,IAGrB,IAAI,CAAC,MAAoB;AAAA,MACvB,KAAK,OAAO,KAAK,IAAI;AAAA;AAAA,IAGvB,KAAK,GAAS;AAAA,MACZ,KAAK,SAAS;AAAA,MACd,KAAK,sBAAsB;AAAA,MAC3B,KAAK,sBAAsB;AAAA,MAC3B,IAAI,MAAM,kBAAkB;AAAA,QAAM,MAAM,gBAAgB;AAAA,MACxD,KAAK,OAAO,MAAM;AAAA;AAAA,IAGpB,gBAAgB,CAAC,MAAc,UAA0C;AAAA,MACvE,MAAM,UAAU,SAAS,YACrB,CAAC,UAAmB;AAAA,QAClB,IAAI,KAAK,sBAAsB,KAAK,GAAG;AAAA,UACrC,SAAS,KAAK;AAAA,QAChB;AAAA,UAEF;AAAA,MACJ,MAAM,SAAS,kBAAkB,KAAK,QAAQ,MAAM,OAAO;AAAA,MAC3D,IAAI,eAAe,KAAK,iBAAiB,IAAI,IAAI;AAAA,MACjD,IAAI,CAAC,cAAc;AAAA,QACjB,eAAe,IAAI;AAAA,QACnB,KAAK,iBAAiB,IAAI,MAAM,YAAY;AAAA,MAC9C;AAAA,MACA,aAAa,IAAI,UAAU,MAAM;AAAA;AAAA,IAGnC,mBAAmB,CAAC,MAAc,UAA0C;AAAA,MAC1E,MAAM,eAAe,KAAK,iBAAiB,IAAI,IAAI;AAAA,MACnD,MAAM,SAAS,cAAc,IAAI,QAAQ;AAAA,MACzC,IAAI,CAAC;AAAA,QAAQ;AAAA,MACb,OAAO;AAAA,MACP,cAAc,OAAO,QAAQ;AAAA,MAC7B,IAAI,cAAc,SAAS,GAAG;AAAA,QAC5B,KAAK,iBAAiB,OAAO,IAAI;AAAA,MACnC;AAAA;AAAA,IAGM,qBAAqB,CAAC,OAAyB;AAAA,MACrD,MAAM,OAAO,iBAAiB,KAAK;AAAA,MACnC,IAAI,CAAC;AAAA,QAAM,OAAO;AAAA,MAElB,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,UAAU,KAAK,MAAM,IAAI;AAAA,QACzB,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,MAGT,KAAK,eAAe,OAAO;AAAA,MAO3B,IAAI,KAAK,YAAY,aAAa,QAAQ,SAAS,gBAAgB;AAAA,QACjE,OAAO;AAAA,MACT;AAAA,MAEA,IAAI,KAAK,YAAY,OAAO;AAAA,QAAG,OAAO;AAAA,MACtC,KAAK,cAAc,OAAO;AAAA,MAC1B,OAAO;AAAA;AAAA,IAGD,cAAc,CAAC,SAAmC;AAAA,MACxD,IAAI,OAAO,QAAQ,QAAQ;AAAA,QAAU;AAAA,MACrC,KAAK,iBAAiB,EAAE,MAAM,OAAO,KAAK,QAAQ,IAAI,CAAC;AAAA;AAAA,IAGjD,WAAW,CAAC,SAAsC;AAAA,MACxD,MAAM,iBACJ,OAAO,QAAQ,oBAAoB,WAAW,QAAQ,kBAAkB;AAAA,MAC1E,IAAI,CAAC;AAAA,QAAgB,OAAO;AAAA,MAC5B,IAAI,MAAM,oBAAoB,IAAI,cAAc;AAAA,QAAG,OAAO;AAAA,MAC1D,MAAM,oBAAoB,IAAI,cAAc;AAAA,MAC5C,MAAM,qBAAqB,KAAK,cAAc;AAAA,MAC9C,OAAO,MAAM,qBAAqB,SAAS,MAAO;AAAA,QAChD,MAAM,SAAS,MAAM,qBAAqB,MAAM;AAAA,QAChD,IAAI;AAAA,UAAQ,MAAM,oBAAoB,OAAO,MAAM;AAAA,MACrD;AAAA,MACA,OAAO;AAAA;AAAA,IAGD,aAAa,CAAC,SAAmC;AAAA,MACvD,IAAI,OAAO,QAAQ,cAAc;AAAA,QAAU;AAAA,MAC3C,IAAI,MAAM,iBAAiB,QAAQ,QAAQ,YAAY,MAAM,eAAe,GAAG;AAAA,QAC7E,KAAK,SAAS,IAAI;AAAA,MACpB;AAAA,MACA,IAAI,MAAM,iBAAiB,QAAQ,QAAQ,YAAY,MAAM,cAAc;AAAA,QACzE,MAAM,eAAe,QAAQ;AAAA,MAC/B;AAAA;AAAA,IAGM,QAAQ,CAAC,kBAAiC;AAAA,MAChD,MAAM,SAAS,MAAM,eAAe,eAAe,IAAI,MAAM,gBAAgB;AAAA,MAC7E,OAAO,iBAAiB;AAAA,QACtB,MAAM;AAAA,QACN,SAAS,MAAM;AAAA,QACf,mBAAmB;AAAA,QACnB,qBAAqB;AAAA,MACvB,CAAC;AAAA;AAAA,IAGH,gBAAgB,CAAC,SAAwC;AAAA,MACvD,IAAI,KAAK,eAAe;AAAA,QAAG;AAAA,MAC3B,IAAI;AAAA,QACF,KAAK,OAAO,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,QACxC,MAAM;AAAA;AAAA,IAKF,SAAS,CAAC,YAA0B;AAAA,MAC1C,IAAI,KAAK;AAAA,QAAW;AAAA,MACpB,KAAK,YAAY,YAAY,MAAM;AAAA,QACjC,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAAA,SACrC,UAAU;AAAA,MACZ,KAAK,UAAqC,QAAQ;AAAA;AAAA,IAG7C,QAAQ,GAAS;AAAA,MACvB,IAAI,CAAC,KAAK;AAAA,QAAW;AAAA,MACrB,cAAc,KAAK,SAAS;AAAA,MAC5B,KAAK,YAAY;AAAA;AAAA,EAErB;AAAA,EAEA,OAAO;AAAA;AAGT,SAAS,mBAAmB,CAAC,OAA6D;AAAA,EACxF,OAAO,QAAQ,SAAS,OAAO,UAAU,YAAY,OAAQ,MAA4B,OAAO,QAAQ;AAAA;AAG1G,SAAS,mBAAmB,CAC1B,OAC8F;AAAA,EAC9F,OAAO,QACL,SACE,OAAO,UAAU,YACjB,OAAQ,MAA4B,cAAc,YAClD,OAAQ,MAA4B,aAAa,YACjD,OAAQ,MAA4B,mBAAmB,QAC3D;AAAA;AAGF,SAAS,0BAA0B,CACjC,OACiG;AAAA,EACjG,OAAO,QACL,SACE,OAAO,UAAU,YACjB,OAAQ,MAAmC,YAAY,aACvD,OAAQ,MAAmC,cAAc,YACzD,OAAQ,MAAmC,eAAe,QAC9D;AAAA;AAGF,SAAS,qCAAqC,CAAC,OAAyB;AAAA,EACtE,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EACrE,OACE,QAAQ,SAAS,+BAA+B,KAChD,QAAQ,YAAY,EAAE,SAAS,WAAW,KAC1C,QAAQ,SAAS,OAAO;AAAA;AAI5B,SAAS,KAAK,CAAC,IAA2B;AAAA,EACxC,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA;AAGzD,SAAS,mBAAmB,CAAC,OAA8D;AAAA,EACzF,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,QAAQ,SAAS,CAAC,GAAG;AAAA,IAC9B,OAAO,IAAI,KAAK,MAAM,IAAI;AAAA,EAC5B;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,4BAA4B,CACnC,eACyB;AAAA,EACzB,MAAM,YAAY,cAAc;AAAA,EAChC,MAAM,SAAS,gBAAe,aAAa;AAAA,EAC3C,MAAM,WAA+C;AAAA,OAC/C,SAAS,EAAE,eAAe,OAAO,IAAI,CAAC;AAAA,OACtC,cAAc,aACd,EAAE,gBAAgB,0BAAyB,cAAc,UAAU,EAAE,IACrE,CAAC;AAAA,EACP;AAAA,EACA,OAAO;AAAA,IACL,OAAO,WAAW,QAAQ;AAAA,IAC1B,cAAc;AAAA,OACV,WAAW,QAAQ,YAAY,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC;AAAA,OACzD,WAAW,cAAc,YAAY,EAAE,WAAW,UAAU,UAAU,IAAI,CAAC;AAAA,OAC3E,cAAc,qBAAqB,aAAa,WAAW,qBAAqB,YAChF,EAAE,kBAAkB,WAAW,oBAAoB,cAAc,iBAAiB,IAClF,CAAC;AAAA,OACD,WAAW,WAAW,YAAY,EAAE,aAAa,UAAU,OAAO,IAAI,CAAC;AAAA,OACvE,WAAW,qBAAqB,YAChC,EAAE,uBAAuB,UAAU,iBAAiB,IACpD,CAAC;AAAA,OACD,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,EAAE,SAAS,IAAI,CAAC;AAAA,EACzD;AAAA;AAGF,eAAsB,gBAAgB,CACpC,eACA,cACiB;AAAA,EACjB,MAAM,UAAU,IAAI,iBAAiB,6BAA6B,aAAa,GAAG;AAAA,IAChF,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AAAA,EACD,MAAM,UAAU,MAAM,QAAQ,WAAW;AAAA,EACzC,QAAQ,MAAM;AAAA,EACd,OAAO,QAAQ;AAAA;AAGV,SAAS,kCAAkC,CAChD,QACA,SACM;AAAA,EACN,4BAA4B,QAAQ,SAAS,SAAS;AAAA,EACtD,IAAI,QAAQ,gBAAgB,aAAa,QAAQ,YAAY,WAAW;AAAA,IACtE,MAAM,IAAI,MAAM,iBAAiB,+DAA+D;AAAA,EAClG;AAAA,EACA,IAAI,QAAQ,iBAAiB,WAAW;AAAA,IACtC,MAAM,IAAI,MAAM,iBAAiB,oFAAoF;AAAA,EACvH;AAAA,EACA,IAAI,QAAQ,iBAAiB,aAAa,QAAQ,oBAAoB,WAAW;AAAA,IAC/E,MAAM,IAAI,MAAM,iBAAiB,wFAAwF;AAAA,EAC3H;AAAA,EACA,IAAI,QAAQ,uBAAuB,WAAW;AAAA,IAC5C,MAAM,IAAI,MAAM,iBAAiB,8EAA8E;AAAA,EACjH;AAAA,EACA,IAAI,QAAQ,UAAU,aAAa,WAAW;AAAA,IAC5C,MAAM,IAAI,MAAM,iBAAiB,4DAA4D;AAAA,EAC/F;AAAA,EACA,IAAK,QAAuC,iBAAiB,WAAW;AAAA,IACtE,MAAM,IAAI,MAAM,iBAAiB,yCAAyC;AAAA,EAC5E;AAAA,EACA,IAAI,QAAQ,2BAA2B,WAAW;AAAA,IAChD,MAAM,IAAI,MAAM,iBAAiB,kGAAkG;AAAA,EACrI;AAAA;AAAA;AAGK,MAAM,gCAAgC,wBAAwB;AAAA,EAahD;AAAA,EAZX,eAA8B;AAAA,EAC9B,4BAAiD;AAAA,EACjD,8BAAmD;AAAA,EACnD,gBAAgB,IAAI;AAAA,EACpB,iBAA6C;AAAA,EAC7C,sBAA6D;AAAA,EAC7D,yBAA+C;AAAA,EAC/C,0BAA0B;AAAA,EAC1B,wBAAwB,IAAI;AAAA,EACnB;AAAA,EAEjB,WAAW,CACQ,cACjB,MACA;AAAA,IACA,MAAM,MAAM;AAAA,MACV,OAAO;AAAA,MACP,kBAAkB,aAAa,oBAAoB;AAAA,IACrD,CAAC;AAAA,IANgB;AAAA,IAOjB,KAAK,YAAY;AAAA,IACjB,MAAM,QAAQ,KAAK,QAAQ;AAAA,IAC3B,KAAK,gBAAgB,oBAAoB,KAAK;AAAA;AAAA,OAGvB,4BAA2B,GAAgC;AAAA,IAClF,MAAM,WAAW,MAAM,KAAK,eAAe;AAAA,IAC3C,MAAM,aAAa,MAAM,KAAK,4BAA4B,SAAS,OAAO;AAAA,IAC1E,KAAK,eAAe,WAAW;AAAA,IAE/B,MAAM,SAAS,gBAAe,KAAK,YAAY;AAAA,IAC/C,MAAM,MAAM,6BAA6B;AAAA,MACvC,YAAY,KAAK,aAAa;AAAA,MAC9B,cAAc,WAAW;AAAA,MACzB,SAAS,SAAS,QAAQ;AAAA,MAC1B,gBAAgB,SAAS,QAAQ;AAAA,MACjC;AAAA,MACA,UAAU,KAAK,aAAa,iBAAiB;AAAA,IAC/C,CAAC;AAAA,IACD,MAAM,SAAS,sBAAsB;AAAA,MACnC;AAAA,MACA,WAAW,sCAAsC;AAAA,QAC/C,cAAc,KAAK;AAAA,QACnB,SAAS,SAAS;AAAA,MACpB,CAAC;AAAA,MACD,kBAAkB,KAAK,aAAa,oBAAoB;AAAA,IAC1D,CAAC;AAAA,IACD,KAAK,8BAA8B,uCAAuC;AAAA,MACxE;AAAA,MACA,YAAY,MAAM,KAAK;AAAA,MACvB,YAAY,MAAM,KAAK,eAAe;AAAA,IACxC,CAAC;AAAA,IACD,IAAI,KAAK,cAAc,OAAO,GAAG;AAAA,MAC/B,KAAK,4BAA4B,OAAO,mBACtC,8BAA8B,KAAK,aAAa,CAClD;AAAA,IACF;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,OAAO,QAAQ;AAAA,MACrB,MAAM,WAAW,MAAM,KAAK,kBAAkB,QAAQ,SAAS,OAAO;AAAA,MACtE,IAAI,CAAC,SAAS,WAAW,CAAC,SAAS,SAAS;AAAA,QAC1C,MAAM,IAAI,MAAM,SAAS,SAAS,sCAAsC;AAAA,MAC1E;AAAA,MAEA,MAAM,QAAQ,eAAe,SAAS,KAAK;AAAA,MAC3C,MAAM,eAAe,KAAK,eAAe,EAAE;AAAA,MAC3C,OAAO;AAAA,QACL,YAAY,IAAI,2BAA2B,QAAQ;AAAA,UACjD,kBAAkB,KAAK,aAAa,oBAAoB;AAAA,QAC1D,CAAC;AAAA,QACD,SAAS,SAAS;AAAA,QAClB,OAAO,OAAO,SAAS,OAAO,UAAU,WAAW,SAAS,MAAM,QAAQ;AAAA,QAC1E,eAAe,SAAS,OAAO,kBAAkB;AAAA,WAC7C,UAAU,YAAY,EAAE,MAAM,IAAI,CAAC;AAAA,WACnC,iBAAiB,YAAY,EAAE,cAAc,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC;AAAA,MAC1E;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,4BAA4B;AAAA,MACjC,KAAK,4BAA4B;AAAA,MACjC,KAAK,8BAA8B;AAAA,MACnC,KAAK,8BAA8B;AAAA,MACnC,OAAO,MAAM;AAAA,MACb,MAAM,KAAK,sBAAsB;AAAA,MACjC,MAAM,KAAK,2BAA2B,SAAS,QAAQ,QAAQ;AAAA,MAC/D,MAAM;AAAA;AAAA;AAAA,OAII,kBAAiB,CAC7B,QACA,SACoC;AAAA,IACpC,MAAM,UAAU,KAAK,eAAe;AAAA,IACpC,MAAM,UAAmC;AAAA,MACvC,aAAa;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA,UAAU,QAAQ;AAAA,MAClB,iBAAiB,QAAQ;AAAA,MACzB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACvB;AAAA,IAEA,MAAM,OAAO,kBAAkB,QAAQ,cAAc;AAAA,IACrD,IAAI;AAAA,MAAM,QAAQ,OAAO;AAAA,IACzB,IAAI,QAAQ,QAAQ;AAAA,MAAW,QAAQ,MAAM,QAAQ;AAAA,IACrD,IAAI,QAAQ,iBAAiB,WAAW;AAAA,MACtC,QAAQ,gBAAgB,CAAC,GAAG,IAAI,IAAI,QAAQ,YAAY,CAAC;AAAA,IAC3D;AAAA,IACA,MAAM,SAAS,mBAAmB,QAAQ,KAAK;AAAA,IAC/C,IAAI;AAAA,MAAQ,QAAQ,iBAAiB;AAAA,IAErC,OAAQ,MAAM,OAAO,aACnB,OACF;AAAA;AAAA,OAGuB,wBAAuB,GAAkB;AAAA,IAChE,IAAI,CAAC,KAAK,cAAc,CAAC,KAAK;AAAA,MAAS;AAAA,IACvC,KAAK,WAAW,KAAK;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,KAAK;AAAA,MACd,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACvB,CAAC;AAAA;AAAA,OAGsB,WAAU,GAAkB;AAAA,IACnD,MAAM,UAAU,KAAK;AAAA,IACrB,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,MAAM,KAAK,sBAAsB,OAAO;AAAA;AAAA,EAGvB,WAAW,GAAS;AAAA,IACrC,KAAK,4BAA4B;AAAA,IACjC,KAAK,4BAA4B;AAAA,IACjC,KAAK,8BAA8B;AAAA,IACnC,KAAK,8BAA8B;AAAA,IAC9B,KAAK,sBAAsB;AAAA,IAChC,IAAI,KAAK,SAAS;AAAA,MAAe,KAAK,2BAA2B,KAAK,QAAQ,QAAQ;AAAA;AAAA,OAG1E,eAAc,GAAuC;AAAA,IACjE,IAAI,UAAU,KAAK,UAAU;AAAA,IAC7B,IAAI,iBAAiB,KAAK,UAAU;AAAA,IAEpC,IAAI,CAAC,WAAW,gBAAgB;AAAA,MAC9B,MAAM,eAAe,MAAM,KAAK,qBAAqB,cAAc;AAAA,MACnE,IAAI,CAAC,aAAa,UAAU;AAAA,QAC1B,MAAM,IAAI,MAAM,sBAAsB,6CAA6C;AAAA,MACrF;AAAA,MACA,UAAU,aAAa;AAAA,IACzB;AAAA,IAEA,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,MACR,wFACF;AAAA,IACF;AAAA,IAEA,MAAM,KAAK,0BAA0B,OAAO;AAAA,IAE5C,IAAI,KAAK,UAAU,iBAAiB;AAAA,MAClC,MAAM,eAAe,MAAM,KAAK,mBAAmB,OAAO;AAAA,MAC1D,iBAAiB,aAAa;AAAA,IAChC,EAAO,SAAI,KAAK,UAAU,qBAAqB;AAAA,MAC7C,iBAAiB;AAAA,IACnB;AAAA,IAEA,IAAI,CAAC,gBAAgB;AAAA,MACnB,MAAM,IAAI,MACR,wFACF;AAAA,IACF;AAAA,IAEA,OAAO,EAAE,SAAS,EAAE,UAAU,SAAS,iBAAiB,eAAe,EAAE;AAAA;AAAA,OAG7D,0BAAyB,CAAC,SAAgC;AAAA,IACtE,MAAM,YAAY,KAAK,oBAAoB;AAAA,IAC3C,IAAI,UAAU,WAAW;AAAA,MAAG;AAAA,IAE5B,MAAM,WAAW,MAAM,KAAK,sBAAsB,OAAO;AAAA,IACzD,MAAM,cAAc,IAAI,IAAI,SAAS,IAAI,CAAC,eAAe,WAAW,EAAE,CAAC;AAAA,IAEvE,IAAI;AAAA,MACF,WAAW,YAAY,WAAW;AAAA,QAChC,IAAI,YAAY,IAAI,SAAS,YAAY,KAAK,KAAK,sBAAsB,IAAI,SAAS,YAAY,GAAG;AAAA,UACnG;AAAA,QACF;AAAA,QACA,MAAM,KAAK,oBAAoB,SAAS,SAAS,YAAY;AAAA,QAC7D,MAAM,KAAK,uBAAuB,SAAS,SAAS,YAAY;AAAA,QAChE,KAAK,sBAAsB,IAAI,SAAS,YAAY;AAAA,MACtD;AAAA,MACA,OAAO,OAAO;AAAA,MACd,MAAM,KAAK,2BAA2B,OAAO;AAAA,MAC7C,MAAM;AAAA;AAAA;AAAA,OAII,2BAA0B,CAAC,SAAgC;AAAA,IACvE,MAAM,gBAAgB,CAAC,GAAG,KAAK,qBAAqB;AAAA,IACpD,KAAK,sBAAsB,MAAM;AAAA,IACjC,MAAM,QAAQ,IAAI,cAAc,IAAI,OAAO,iBAAiB;AAAA,MAC1D,IAAI;AAAA,QACF,MAAM,KAAK,sBAAsB,SAAS,YAAY;AAAA,QACtD,MAAM;AAAA,KAGT,CAAC;AAAA;AAAA,EAGI,mBAAmB,GAAyB;AAAA,IAClD,MAAM,YAAY,KAAK,UAAU,QAAQ,aAAa,CAAC;AAAA,IACvD,MAAM,OAAO,IAAI;AAAA,IACjB,MAAM,SAA+B,CAAC;AAAA,IACtC,WAAW,YAAY,WAAW;AAAA,MAChC,IAAI,SAAS,SAAS,cAAc;AAAA,QAClC,MAAM,IAAI,MAAM,4CAA4C,OAAO,SAAS,IAAI,GAAG;AAAA,MACrF;AAAA,MACA,IAAI,OAAO,SAAS,iBAAiB,YAAY,SAAS,aAAa,WAAW,GAAG;AAAA,QACnF,MAAM,IAAI,MAAM,0DAA0D;AAAA,MAC5E;AAAA,MACA,IAAI,KAAK,IAAI,SAAS,YAAY;AAAA,QAAG;AAAA,MACrC,KAAK,IAAI,SAAS,YAAY;AAAA,MAC9B,OAAO,KAAK,QAAQ;AAAA,IACtB;AAAA,IACA,OAAO;AAAA;AAAA,OAGK,sBAAqB,CAAC,SAAkD;AAAA,IACpF,MAAM,YAAY,UAAS,KAAK,aAAa,KAAK;AAAA,IAClD,MAAM,UAAU,0BAAyB,KAAK,aAAa,UAAU;AAAA,IACrE,MAAM,WAAW,MAAM,UACrB,GAAG,qBAAqB,mBAAmB,OAAO,kBAClD,EAAE,SAAS,cAAa,KAAK,YAAY,EAAE,CAC7C;AAAA,IACA,MAAM,OAAO,MAAM,mBAAkB,QAAQ;AAAA,IAC7C,kBAAiB,UAAU,MAAM,+BAA+B;AAAA,IAChE,IAAI,CAAC,QAAQ,OAAO,SAAS;AAAA,MAAU,OAAO,CAAC;AAAA,IAC/C,MAAM,eAAgB,KAAiC;AAAA,IACvD,OAAO,MAAM,QAAQ,YAAY,IAC7B,aAAa,OAAO,CAAC,eACrB,eAAe,QACf,OAAO,eAAe,YACtB,OAAQ,WAAuC,OAAO,QACvD,IACC,CAAC;AAAA;AAAA,OAGO,uBAAsB,CAAC,SAAiB,cAAqC;AAAA,IACzF,MAAM,WAAW,KAAK,IAAI,IAAI;AAAA,IAC9B,OAAO,MAAM;AAAA,MACX,MAAM,eAAe,MAAM,KAAK,sBAAsB,OAAO;AAAA,MAC7D,IAAI,aAAa,KAAK,CAAC,eAAe,WAAW,OAAO,YAAY;AAAA,QAAG;AAAA,MACvE,IAAI,KAAK,IAAI,KAAK,UAAU;AAAA,QAC1B,MAAM,IAAI,MAAM,4DAA4D,YAAY,cAAc;AAAA,MACxG;AAAA,MACA,MAAM,MAAM,0CAA0C;AAAA,IACxD;AAAA;AAAA,OAGY,oBAAmB,CAAC,SAAiB,cAAqC;AAAA,IACtF,MAAM,YAAY,UAAS,KAAK,aAAa,KAAK;AAAA,IAClD,MAAM,UAAU,0BAAyB,KAAK,aAAa,UAAU;AAAA,IACrE,MAAM,WAAW,MAAM,UACrB,GAAG,qBAAqB,mBAAmB,OAAO,kBAClD;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,cAAa,KAAK,YAAY;AAAA,MACvC,MAAM,KAAK,UAAU,EAAE,eAAe,aAAa,CAAC;AAAA,IACtD,CACF;AAAA,IACA,MAAM,OAAO,MAAM,mBAAkB,QAAQ;AAAA,IAC7C,kBAAiB,UAAU,MAAM,+BAA+B;AAAA;AAAA,OAGpD,sBAAqB,CAAC,SAAiB,cAAqC;AAAA,IACxF,MAAM,YAAY,UAAS,KAAK,aAAa,KAAK;AAAA,IAClD,MAAM,UAAU,0BAAyB,KAAK,aAAa,UAAU;AAAA,IACrE,MAAM,WAAW,MAAM,UACrB,GAAG,qBAAqB,mBAAmB,OAAO,kBAAkB,mBAAmB,YAAY,KACnG,EAAE,QAAQ,UAAU,SAAS,cAAa,KAAK,YAAY,EAAE,CAC/D;AAAA,IACA,MAAM,OAAO,MAAM,mBAAkB,QAAQ;AAAA,IAC7C,IAAI,SAAS,WAAW;AAAA,MAAK;AAAA,IAC7B,kBAAiB,UAAU,MAAM,+BAA+B;AAAA;AAAA,OAGpD,mBAAkB,CAAC,SAA6D;AAAA,IAC5F,MAAM,YAAY,UAAS,KAAK,aAAa,KAAK;AAAA,IAClD,MAAM,UAAU,0BAAyB,KAAK,aAAa,UAAU;AAAA,IACrE,MAAM,MAAM,IAAI,IAAI,GAAG,2BAA2B;AAAA,IAClD,IAAI,aAAa,IAAI,YAAY,OAAO;AAAA,IACxC,MAAM,WAAW,MAAM,UAAU,KAAK;AAAA,MACpC,QAAQ;AAAA,MACR,SAAS,cAAa,KAAK,YAAY;AAAA,MACvC,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,MAAM,OAAO,MAAM,mBAAkB,QAAQ;AAAA,IAC7C,kBAAiB,UAAU,MAAM,uBAAuB;AAAA,IACxD,IAAI,CAAC,oBAAoB,IAAI,GAAG;AAAA,MAC9B,MAAM,IAAI,MAAM,mEAAmE;AAAA,IACrF;AAAA,IACA,OAAO,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,SAAS;AAAA;AAAA,OAGlC,qBAAoB,CAAC,gBAAoE;AAAA,IACrG,MAAM,YAAY,UAAS,KAAK,aAAa,KAAK;AAAA,IAClD,MAAM,UAAU,0BAAyB,KAAK,aAAa,UAAU;AAAA,IACrE,MAAM,WAAW,MAAM,UACrB,GAAG,4BAA4B,mBAAmB,cAAc,KAChE,EAAE,SAAS,cAAa,KAAK,YAAY,EAAE,CAC7C;AAAA,IACA,MAAM,OAAO,MAAM,mBAAkB,QAAQ;AAAA,IAC7C,kBAAiB,UAAU,MAAM,uBAAuB;AAAA,IACxD,IAAI,CAAC,oBAAoB,IAAI,GAAG;AAAA,MAC9B,MAAM,IAAI,MAAM,yDAAyD,iBAAiB;AAAA,IAC5F;AAAA,IACA,OAAO,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,SAAS;AAAA;AAAA,OAGlC,4BAA2B,CACvC,SACkC;AAAA,IAClC,MAAM,cAAc,KAAK,qBAAqB;AAAA,IAC9C,MAAM,iBAAiB,KAAK,wBAAwB;AAAA,IACpD,IAAI,gBAAgB,WAAW;AAAA,MAC7B,IAAI,mBAAmB,WAAW;AAAA,QAChC,MAAM,IAAI,MAAM,6EAA6E;AAAA,MAC/F;AAAA,MACA,OAAO,KAAK,0BAA0B,WAAW;AAAA,IACnD;AAAA,IACA,OAAO,KAAK,+BAA+B,OAAO;AAAA;AAAA,OAGtC,0BAAyB,CACrC,aACmC;AAAA,IACnC,MAAM,SAAS,0BAA0B,WAAW;AAAA,IACpD,MAAM,WAAW,MAAM,KAAK,wBAAwB,EAAE,mBAAmB,MAAM;AAAA,IAC/E,OAAO,EAAE,cAAc,SAAS,aAAa;AAAA;AAAA,OAGjC,+BAA8B,CAC1C,SACkC;AAAA,IAKlC,MAAM,iBACJ,QAAQ,mBAAmB,QAAQ,oBAAoB,YACnD,QAAQ,kBACR;AAAA,IACN,MAAM,UAAU,MAAM,KAAK,qBACzB,QAAQ,UACR,cACF;AAAA,IACA,KAAK,iBAAiB;AAAA,IAEtB,IAAI,KAAK,yBAAyB;AAAA,MAChC,MAAM,KAAK,sBAAsB;AAAA,MACjC,MAAM,IAAI,MAAM,6DAA6D;AAAA,IAC/E;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,KAAK,sBAAsB,OAAO;AAAA,MACxC,MAAM,aAAa,MAAM,KAAK,gCAAgC,OAAO;AAAA,MACrE,KAAK,2BAA2B,OAAO;AAAA,MACvC,OAAO,EAAE,cAAc,WAAW,aAAa;AAAA,MAC/C,OAAO,OAAO;AAAA,MACd,MAAM,KAAK,sBAAsB;AAAA,MACjC,MAAM;AAAA;AAAA;AAAA,OAII,qBAAoB,CAChC,SACA,gBAC8B;AAAA,IAC9B,MAAM,YAAY,UAAS,KAAK,aAAa,KAAK;AAAA,IAClD,MAAM,UAAU,0BAAyB,KAAK,aAAa,UAAU;AAAA,IACrE,MAAM,WAAW,MAAM,UACrB,GAAG,qBAAqB,mBAAmB,OAAO,eAClD;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,cAAa,KAAK,YAAY;AAAA,MACvC,MAAM,KAAK,UAAU,iBAAiB,EAAE,eAAe,IAAI,CAAC,CAAC;AAAA,IAC/D,CACF;AAAA,IACA,MAAM,OAAO,MAAM,mBAAkB,QAAQ;AAAA,IAC7C,kBAAiB,UAAU,MAAM,8BAA8B;AAAA,IAC/D,IAAI,CAAC,oBAAoB,IAAI,GAAG;AAAA,MAC9B,MAAM,IAAI,MAAM,mFAAmF;AAAA,IACrG;AAAA,IAEA,MAAM,yBACJ,OAAO,KAAK,mBAAmB,WAAW,KAAK,iBAAiB;AAAA,IAClE,IACE,2BAA2B,QAC3B,2BAA2B,gBAC3B;AAAA,MACA,MAAM,IAAI,MACR,kEAAkE,kBAAkB,eAAe,yBACrG;AAAA,IACF;AAAA,IAEA,MAAM,iBAAiB,KAAK,uBAAuB;AAAA,IACnD,MAAM,aAAa,eAAe,cAAc;AAAA,IAChD,MAAM,iBAAiB,eAAe,kBACjC;AAAA,IACL,MAAM,sBAAsB,eAAe,uBACtC;AAAA,IACL,MAAM,2BAA2B,KAAK,IACpC,MACA,KAAK,MAAM,aAAa,QAAS,GAAG,CACtC;AAAA,IAEA,OAAO;AAAA,MACL;AAAA,MACA,gBAAgB;AAAA,MAChB,WAAW,KAAK;AAAA,MAChB,UAAU,KAAK;AAAA,MACf,gBAAgB,KAAK;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,eAAe,qBAAqB;AAAA,MAIvD,kBAAkB,eAAe,oBAAoB;AAAA,IACvD;AAAA;AAAA,OAGY,sBAAqB,CAAC,SAA6C;AAAA,IAC/E,IAAI,KAAK,wBAAwB;AAAA,MAC/B,MAAM,KAAK;AAAA,MACX;AAAA,IACF;AAAA,IAEA,KAAK,yBAAyB,KAAK,0BAA0B,OAAO;AAAA,IACpE,IAAI;AAAA,MACF,MAAM,KAAK;AAAA,cACX;AAAA,MACA,KAAK,yBAAyB;AAAA;AAAA;AAAA,OAIpB,0BAAyB,CAAC,SAA6C;AAAA,IACnF,MAAM,YAAY,UAAS,KAAK,aAAa,KAAK;AAAA,IAClD,MAAM,UAAU,0BAAyB,KAAK,aAAa,UAAU;AAAA,IAErE,IAAI,QAAQ,gBAAgB;AAAA,MAG1B,MAAM,YAAW,MAAM,UACrB,GAAG,wBAAwB,mBAAmB,QAAQ,SAAS,aAC/D;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,cAAa,KAAK,YAAY;AAAA,QACvC,MAAM,KAAK,UAAU,EAAE,YAAY,QAAQ,WAAW,CAAC;AAAA,MACzD,CACF;AAAA,MACA,IAAI,UAAS,WAAW,KAAK;AAAA,QAC3B,MAAM,mBAAkB,SAAQ;AAAA,QAMhC,MAAM,IAAI,gCACR,QAAQ,WACR,QAAQ,cACV;AAAA,MACF;AAAA,MACA,MAAM,QAAO,MAAM,mBAAkB,SAAQ;AAAA,MAC7C,kBAAiB,WAAU,OAAM,+BAA+B;AAAA,MAChE,IAAI,CAAC,2BAA2B,KAAI,KAAK,CAAC,MAAK,SAAS;AAAA,QACtD,MAAM,IAAI,MAAM,iEAAiE;AAAA,MACnF;AAAA,MACA;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,MAAM,UACrB,GAAG,qBAAqB,mBAAmB,QAAQ,OAAO,uBAC1D;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,cAAa,KAAK,YAAY;AAAA,MACvC,MAAM,KAAK,UAAU,EAAE,YAAY,QAAQ,WAAW,CAAC;AAAA,IACzD,CACF;AAAA,IACA,MAAM,OAAO,MAAM,mBAAkB,QAAQ;AAAA,IAC7C,kBAAiB,UAAU,MAAM,+BAA+B;AAAA,IAChE,IAAI,CAAC,2BAA2B,IAAI,KAAK,CAAC,KAAK,SAAS;AAAA,MACtD,MAAM,IAAI,MAAM,iEAAiE;AAAA,IACnF;AAAA,IACA,IAAI,KAAK,cAAc,QAAQ,WAAW;AAAA,MACxC,MAAM,IAAI,kCACR,qDAAqD,QAAQ,qBAAqB,QAAQ,kBAAkB,KAAK,YACnH;AAAA,IACF;AAAA;AAAA,OAGY,wBAAuB,CAAC,SAA6C;AAAA,IACjF,MAAM,YAAY,UAAS,KAAK,aAAa,KAAK;AAAA,IAClD,MAAM,UAAU,0BAAyB,KAAK,aAAa,UAAU;AAAA,IAErE,IAAI,QAAQ,gBAAgB;AAAA,MAG1B,MAAM,YAAW,MAAM,UACrB,GAAG,wBAAwB,mBAAmB,QAAQ,SAAS,eAC/D;AAAA,QACE,QAAQ;AAAA,QACR,SAAS,cAAa,KAAK,YAAY;AAAA,QACvC,MAAM,KAAK,UAAU,CAAC,CAAC;AAAA,MACzB,CACF;AAAA,MACA,MAAM,QAAO,MAAM,mBAAkB,SAAQ;AAAA,MAC7C,IAAI,UAAS,WAAW;AAAA,QAAK;AAAA,MAC7B,kBAAiB,WAAU,OAAM,iCAAiC;AAAA,MAClE;AAAA,IACF;AAAA,IAIA,MAAM,KAAK,sBAAsB,OAAO;AAAA,IAExC,MAAM,WAAW,MAAM,UACrB,GAAG,qBAAqB,mBAAmB,QAAQ,OAAO,eAC1D;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,cAAa,KAAK,YAAY;AAAA,IACzC,CACF;AAAA,IACA,MAAM,OAAO,MAAM,mBAAkB,QAAQ;AAAA,IAC7C,IAAI,SAAS,WAAW;AAAA,MAAK;AAAA,IAC7B,kBAAiB,UAAU,MAAM,iCAAiC;AAAA;AAAA,OAGtD,gCAA+B,CAC3C,SACmC;AAAA,IACnC,MAAM,WAAW,KAAK,IAAI,IAAI,QAAQ;AAAA,IACtC,IAAI;AAAA,IAEJ,OAAO,MAAM;AAAA,MACX,IAAI;AAAA,QACF,MAAM,WAAW,MAAM,KAAK,wBAAwB,EAAE,mBAAmB;AAAA,UACvE,UAAU,QAAQ;AAAA,QACpB,CAAC;AAAA,QACD,OAAO,EAAE,cAAc,SAAS,aAAa;AAAA,QAC7C,OAAO,OAAO;AAAA,QACd,YAAY;AAAA,QACZ,IAAI,CAAC,sCAAsC,KAAK,KAAK,KAAK,IAAI,KAAK,UAAU;AAAA,UAC3E;AAAA,QACF;AAAA,QACA,MAAM,cAAc,KAAK,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;AAAA,QACrD,MAAM,MAAM,KAAK,IAAI,QAAQ,qBAAqB,WAAW,CAAC;AAAA;AAAA,IAElE;AAAA,IAEA,MAAM,SAAS,qBAAqB,QAAQ,UAAU,UAAU,OAAO,SAAS;AAAA,IAChF,MAAM,IAAI,MACR,yBAAyB,QAAQ,wCAAwC,QAAQ,qBAAqB,QACxG;AAAA;AAAA,EAGM,0BAA0B,CAAC,SAAoC;AAAA,IACrE,KAAK,0BAA0B;AAAA,IAC/B,KAAK,sBAAsB,YAAY,MAAM;AAAA,MACtC,KAAK,sBAAsB,OAAO,EAAE,MAAM,CAAC,UAAU;AAAA,QACxD,IACE,iBAAiB,qCACjB,iBAAiB,iCACjB;AAAA,UACA,KAAK,0BAA0B;AAAA,QACjC;AAAA,OACD;AAAA,OACA,QAAQ,iBAAiB;AAAA,IAC3B,KAAK,oBAA+C,QAAQ;AAAA;AAAA,EAGvD,yBAAyB,GAAS;AAAA,IACxC,IAAI,CAAC,KAAK;AAAA,MAAqB;AAAA,IAC/B,cAAc,KAAK,mBAAmB;AAAA,IACtC,KAAK,sBAAsB;AAAA;AAAA,OAGf,sBAAqB,GAAkB;AAAA,IACnD,KAAK,0BAA0B;AAAA,IAC/B,KAAK,0BAA0B;AAAA,IAC/B,MAAM,UAAU,KAAK;AAAA,IACrB,KAAK,iBAAiB;AAAA,IAKtB,IAAI;AAAA,MACF,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,IAIR,IAAI,CAAC,WAAW,CAAC,QAAQ;AAAA,MAAkB;AAAA,IAC3C,IAAI;AAAA,MACF,MAAM,KAAK,wBAAwB,OAAO;AAAA,MAC1C,MAAM;AAAA;AAAA,EAKF,uBAAuB,GAA4B;AAAA,IACzD,OAAO,IAAI,wBAAwB;AAAA,MACjC,SAAS,KAAK,aAAa;AAAA,MAC3B,QAAQ,gBAAe,KAAK,YAAY;AAAA,MACxC,SAAS,KAAK,aAAa;AAAA,MAC3B,OAAO,KAAK,aAAa;AAAA,IAC3B,CAAC;AAAA;AAAA,EAGK,oBAAoB,GAAqC;AAAA,IAC/D,MAAM,kBAAkB,KAAK,KAAK,SAAS,YACvC,KAAK,KAAK,QAAQ,cAClB;AAAA,IACJ,OAAO,mBAAmB,KAAK,aAAa;AAAA;AAAA,EAGtC,uBAAuB,GAA6C;AAAA,IAC1E,MAAM,cAAc,KAAK,KAAK,SAAS,YACnC,KAAK,KAAK,QAAQ,UAClB;AAAA,IACJ,OAAO,eAAe,KAAK,aAAa;AAAA;AAAA,EAGlC,sBAAsB,GAAiC;AAAA,IAC7D,OAAO,KAAK,wBAAwB,KAAK,CAAC;AAAA;AAE9C;;;AC7yCA,IAAM,sBAAqC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKA,SAAS,cAAc,CAAC,QAAgC;AAAA,EACtD,OAAO,OACJ,IAAI,CAAC,SAAS;AAAA,IACb,IAAI,OAAO,SAAS;AAAA,MAAU,OAAO;AAAA,IACrC,IAAI,WAAW;AAAA,MAAM,OAAQ,KAAqB;AAAA,IAClD,OAAO;AAAA,GACR,EACA,OAAO,CAAC,UAA2B,UAAU,IAAI;AAAA;AAGtD,SAAS,+BAA+B,CAAC,SAAqC;AAAA,EAC5E,IACE,QAAQ,gCAAgC,cACvC,CAAC,OAAO,UAAU,QAAQ,2BAA2B,KACpD,QAAQ,8BAA8B,IACxC;AAAA,IACA,MAAM,IAAI,MACR,uEACF;AAAA,EACF;AAAA,EAEA,IACE,QAAQ,8BAA8B,cACrC,CAAC,OAAO,UAAU,QAAQ,yBAAyB,KAClD,QAAQ,6BAA6B,IACvC;AAAA,IACA,MAAM,IAAI,MACR,iEACF;AAAA,EACF;AAAA;AAGF,SAAS,6BAA6B,CAAC,SAAqC;AAAA,EAC1E,IAAK,QAAuC,iBAAiB,WAAW;AAAA,IACtE,MAAM,IAAI,MACR,2CACF;AAAA,EACF;AAAA;AAMF,SAAS,0BAA0B,CAAC,QAAsB;AAAA,EACxD,MAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,CAAC,aAAa,SAAS,MAAM,GAAG;AAAA,IAClC,MAAM,IAAI,MACR,iCAAiC,cAC/B,kBAAkB,aAAa,KAAK,IAAI,GAC5C;AAAA,EACF;AAAA;AAGF,SAAS,oBAAoB,CAAC,SAA0C;AAAA,EACtE,IAAI,YAAY,WAAW;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,CAAC,oBAAoB,SAAS,MAAM,GAAG;AAAA,MACzC,MAAM,IAAI,MACR,yBAAyB,0BAA0B,oBAAoB,KAAK,IAAI,GAClF;AAAA,IACF;AAAA,EACF;AAAA;AAGF,SAAS,uBAAuB,CAAC,UAA6C;AAAA,EAC5E,IAAI,aAAa,WAAW;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,IACE,SAAS,YAAY,aACrB,CAAC,CAAC,OAAO,cAAc,kBAAkB,EAAE,SAAS,SAAS,OAAO,GACpE;AAAA,IACA,MAAM,IAAI,MACR,6BAA6B,OAAO,SAAS,OAAO,qDACtD;AAAA,EACF;AAAA,EAEA,IACE,SAAS,aAAa,aACtB,CAAC,CAAC,YAAY,aAAa,EAAE,SAAS,SAAS,QAAQ,GACvD;AAAA,IACA,MAAM,IAAI,MACR,8BAA8B,OAAO,SAAS,QAAQ,yCACxD;AAAA,EACF;AAAA,EAEA,IACE,SAAS,cAAc,cACtB,CAAC,OAAO,UAAU,SAAS,SAAS,KAAK,SAAS,aAAa,IAChE;AAAA,IACA,MAAM,IAAI,MACR,0DACF;AAAA,EACF;AAAA;AAGF,SAAS,uBAAuB,CAAC,OAAsB;AAAA,EACrD,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IACE,OAAO,UAAU,YACjB,CAAC,wBAAwB,SAAS,KAAiD,GACnF;AAAA,IACA,MAAM,IAAI,MACR,4BAA4B,OAAO,KAAK,qBAAqB,wBAAwB,KAAK,IAAI,GAChG;AAAA,EACF;AAAA;AAMK,SAAS,4BAA4B,CAAC,SAAqC;AAAA,EAEhF,IAAI,QAAQ,iBAAiB,WAAW;AAAA,IACtC,2BAA2B,QAAQ,YAAY;AAAA,EACjD;AAAA,EAEA,qBAAqB,QAAQ,YAAY;AAAA,EACzC,wBAAwB,QAAQ,eAAe;AAAA,EAC/C,wBAAwB,QAAQ,QAAQ;AAAA,EACxC,gCAAgC,OAAO;AAAA,EACvC,8BAA8B,OAAO;AAAA;AAMhC,SAAS,0BAA0B,CAAC,SAAmC;AAAA,EAE5E,IAAI,QAAQ,WAAW,WAAW;AAAA,IAChC,MAAM,cAAc,eAAe,QAAQ,MAAM;AAAA,IAEjD,IAAI,QAAQ,YAAY,aAAa,CAAC,YAAY,SAAS,SAAS,GAAG;AAAA,MACrE,MAAM,IAAI,MACR,kEACE,oEACJ;AAAA,IACF;AAAA,IAEA,IAAI,QAAQ,UAAU,aAAa,CAAC,YAAY,SAAS,OAAO,GAAG;AAAA,MACjE,MAAM,IAAI,MACR,gEACE,gEACJ;AAAA,IACF;AAAA,EACF;AAAA,EAGA,IACE,QAAQ,iBAAiB,aACzB,OAAO,QAAQ,iBAAiB,UAChC;AAAA,IACA,2BAA2B,QAAQ,aAAa,MAAM;AAAA,EACxD,EAAO,SACL,QAAQ,iBAAiB,aACzB,OAAO,QAAQ,iBAAiB,UAChC;AAAA,IAEA,MAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,aAAa,SAAS,QAAQ,YAAkC,GAAG;AAAA,MACrE,2BAA2B,QAAQ,YAAY;AAAA,IACjD;AAAA,EAEF;AAAA,EAEA,qBAAqB,QAAQ,YAAY;AAAA,EACzC,wBAAwB,QAAQ,QAAQ;AAAA;;;AC9L1C,IAAM,iBAAiB,IAAI,IAAsB;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,OAA0C;AAAA,EACpE,OAAO,eAAe,IAAI,KAAyB;AAAA;AAGrD,SAAS,qBAAqB,CAC5B,SACkC;AAAA,EAClC,IAAI,iBAAiB,SAAS;AAAA,IAC5B,OAAO,QAAQ;AAAA,EACjB;AAAA,EACA;AAAA;AAGF,SAAS,0BAA0B,CACjC,SACsB;AAAA,EACtB,MAAM,iBAAiB,KAAK,QAAQ;AAAA,EACpC,OAAO,eAAe;AAAA,EACtB,OAAO,eAAe;AAAA,EACtB,OAAO;AAAA;AAGT,SAAS,sBAAsB,CAAC,SAAiD;AAAA,EAC/E,OAAO,QAAQ,cAAc,aAAa,QAAQ,UAAU,SAAS;AAAA;AAGvE,SAAS,yBAAyB,CAAC,SAAsC;AAAA,EACvE,OAAO,iBAAkB;AAAA;AAG3B,SAAS,2BAA2B,CAAC,SAAsC;AAAA,EACzE,OAAO,OAAO,QAAQ,UAAU,YAAY,QAAQ,MAAM,KAAK,EAAE,SAAS;AAAA;AAG5E,SAAS,uBAAuB,CAAC,IAAqB;AAAA,EACpD,OAAO,GAAG,WAAW,OAAO,KAAK,GAAG,WAAW,aAAa;AAAA;AAAA;AAiBvD,MAAM,iBAAiB;AAAA,EACnB;AAAA,EACA;AAAA,EACQ;AAAA,EACT,qBAAgD;AAAA,EAExD,WAAW,CAAC,UAAkC,CAAC,GAAG;AAAA,IAChD,MAAM,UAAU,QAAQ,WAAW;AAAA,IACnC,IAAI,CAAC,mBAAmB,OAAO,GAAG;AAAA,MAChC,MAAM,IAAI,MACR,+BAA+B,OAAO,OAAO,yCAC/C;AAAA,IACF;AAAA,IAEA,KAAK,UAAU;AAAA,IACf,KAAK,cAAc,sBAAsB,OAAO;AAAA,IAChD,KAAK,UAAU;AAAA,IAEf,IAAI,KAAK,YAAY,WAAW,KAAK,gBAAgB,WAAW;AAAA,MAC9D,MAAM,IAAI,MACR,mEACF;AAAA,IACF;AAAA,IACA,IAAI,KAAK,YAAY,YAAY,KAAK,gBAAgB,WAAW;AAAA,MAC/D,MAAM,IAAI,MACR,8GACF;AAAA,IACF;AAAA,IACA,IAAI,KAAK,YAAY,WAAY,QAAkC,YAAY,WAAW;AAAA,MACxF,MAAM,IAAI,MAAM,wEAAwE;AAAA,IAC1F;AAAA,IAEA,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,MAAM,eAAe;AAAA,MACrB,IACE,aAAa,cAAc,aAC3B,aAAa,cAAc,gBAC3B,aAAa,cAAc,SAC3B;AAAA,QACA,MAAM,IAAI,MAAM,2DAA2D;AAAA,MAC7E;AAAA,MACA,MAAM,mBAAmB,aAAa,WAAW;AAAA,MACjD,IACE,qBAAqB,cACpB,CAAC,OAAO,UAAU,gBAAgB,KAAK,oBAAoB,IAC5D;AAAA,QACA,MAAM,IAAI,MAAM,kEAAkE;AAAA,MACpF;AAAA,MACA,MAAM,mBAAmB,aAAa,WAAW;AAAA,MACjD,IACE,qBAAqB,cACpB,CAAC,OAAO,UAAU,gBAAgB,KAAK,oBAAoB,IAC5D;AAAA,QACA,MAAM,IAAI,MAAM,kEAAkE;AAAA,MACpF;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,YAAY,UAAU;AAAA,MAC7B,IAAI,EAAE,SAAS,YAAY,OAAO,QAAQ,QAAQ,YAAY,QAAQ,IAAI,WAAW,GAAG;AAAA,QACtF,MAAM,IAAI,MAAM,2DAA2D;AAAA,MAC7E;AAAA,MACA,IACE,QAAQ,qBAAqB,cAC5B,CAAC,OAAO,UAAU,QAAQ,gBAAgB,KAAK,QAAQ,oBAAoB,IAC5E;AAAA,QACA,MAAM,IAAI,MAAM,wDAAwD;AAAA,MAC1E;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,2BAA2B,OAAsC;AAAA,IACnE;AAAA;AAAA,MASE,YAAY,GAAuB;AAAA,IACrC,OAAO,KAAK,sBAAsB;AAAA;AAAA,OAG9B,YAAW,CAAC,UAA8B,CAAC,GAAoB;AAAA,IACnE,IAAI,0BAA0B,OAAO,GAAG;AAAA,MACtC,MAAM,IAAI,MACR,yHACF;AAAA,IACF;AAAA,IAEA,2BAA2B,OAAO;AAAA,IAElC,IAAI,KAAK,YAAY,UAAU;AAAA,MAC7B,MAAM,WAAU,IAAI,iBAAiB,KAAK,cAAc,GAAG;AAAA,QACzD,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,MACD,MAAM,WAAU,MAAM,SAAQ,WAAW;AAAA,MACzC,SAAQ,MAAM;AAAA,MACd,OAAO,SAAQ;AAAA,IACjB;AAAA,IACA,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,IAAI,CAAC,4BAA4B,OAAO,GAAG;AAAA,QACzC,MAAM,IAAI,MACR,iHACF;AAAA,MACF;AAAA,MACA,OAAO,iBAAiB,KAAK,aAAa,GAAG,OAAO;AAAA,IACtD;AAAA,IACA,KAAK,mBAAmB,aAAa;AAAA,IACrC,IAAI,CAAC,KAAK,oBAAoB,GAAG;AAAA,MAC/B,MAAM,WAAU,IAAI,iBAAiB,KAAK,sBAAsB,GAAG;AAAA,QACjE,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,MACD,MAAM,WAAU,MAAM,SAAQ,WAAW;AAAA,MACzC,SAAQ,MAAM;AAAA,MACd,OAAO,SAAQ;AAAA,IACjB;AAAA,IACA,MAAM,UAAU,IAAI,QAAQ,KAAK,SAAS,YAAY,KAAK,CAAC;AAAA,IAC5D,MAAM,UAAU,MAAM,QAAQ,WAAW;AAAA,IACzC,QAAQ,MAAM;AAAA,IACd,OAAO,QAAQ;AAAA;AAAA,EASjB,aAAa,CACX,kBACA,UAAyC,CAAC,GACxB;AAAA,IAClB,MAAM,UACJ,OAAO,qBAAqB,WAAW,mBAAmB;AAAA,IAC5D,MAAM,kBACJ,OAAO,qBAAqB,WAAW,UAAW,oBAAoB,CAAC;AAAA,IAEzE,KAAK,qBAAqB,iBAAiB,eAAe;AAAA,IAC1D,MAAM,iBAAiB,2BAA2B,eAAe;AAAA,IACjE,6BAA6B,cAAc;AAAA,IAE3C,IAAI,KAAK,YAAY,UAAU;AAAA,MAC7B,IAAI,CAAC,SAAS;AAAA,QACZ,MAAM,IAAI,MACR,gGACF;AAAA,MACF;AAAA,MACA,OAAO,IAAI,iBAAiB,KAAK,cAAc,GAAG;AAAA,QAChD,MAAM;AAAA,QACN;AAAA,QACA,iBAAiB;AAAA,QACjB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,IAAI,CAAC,SAAS;AAAA,QACZ,MAAM,IAAI,MACR,mGACF;AAAA,MACF;AAAA,MACA,OAAO,IAAI,wBAAwB,KAAK,aAAa,GAAG;AAAA,QACtD,MAAM;AAAA,QACN;AAAA,QACA,iBAAiB;AAAA,QACjB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,IAAI,CAAC,KAAK,oBAAoB,KAAK,SAAS;AAAA,MAC1C,OAAO,IAAI,iBAAiB,KAAK,sBAAsB,GAAG;AAAA,QACxD,MAAM;AAAA,QACN;AAAA,QACA,iBAAiB;AAAA,QACjB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,IAAI,SAAS;AAAA,MACX,OAAO,IAAI,QAAQ,KAAK,gBAAgB,SAAS,iBAAiB,KAAK,CAAC;AAAA,IAC1E;AAAA,IACA,OAAO,IAAI,QAAQ,KAAK,gBAAgB,iBAAiB,KAAK,CAAC;AAAA;AAAA,EASjE,aAAa,CACX,IACA,UAAyC,CAAC,GACxB;AAAA,IAClB,KAAK,qBAAqB,iBAAiB,OAAO;AAAA,IAClD,MAAM,iBAAiB,2BAA2B,OAAO;AAAA,IACzD,6BAA6B,cAAc;AAAA,IAE3C,IAAI,KAAK,YAAY,UAAU;AAAA,MAC7B,IAAI,wBAAwB,EAAE,GAAG;AAAA,QAC/B,OAAO,IAAI,iBAAiB,KAAK,cAAc,GAAG;AAAA,UAChD,MAAM;AAAA,UACN,gBAAgB;AAAA,UAChB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,IAAI,iBAAiB,KAAK,cAAc,GAAG;AAAA,QAChD,MAAM;AAAA,QACN,SAAS;AAAA,QACT,qBAAqB;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,IAAI,wBAAwB,EAAE,GAAG;AAAA,QAC/B,OAAO,IAAI,wBAAwB,KAAK,aAAa,GAAG;AAAA,UACtD,MAAM;AAAA,UACN,gBAAgB;AAAA,UAChB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,IAAI,wBAAwB,KAAK,aAAa,GAAG;AAAA,QACtD,MAAM;AAAA,QACN,SAAS;AAAA,QACT,qBAAqB;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,IAAI,CAAC,KAAK,oBAAoB,GAAG;AAAA,MAC/B,IAAI,wBAAwB,EAAE,GAAG;AAAA,QAC/B,OAAO,IAAI,iBAAiB,KAAK,sBAAsB,GAAG;AAAA,UACxD,MAAM;AAAA,UACN,gBAAgB;AAAA,UAChB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,OAAO,IAAI,iBAAiB,KAAK,sBAAsB,GAAG;AAAA,QACxD,MAAM;AAAA,QACN,SAAS;AAAA,QACT,qBAAqB;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,IAAI,wBAAwB,EAAE,GAAG;AAAA,MAC/B,OAAO,IAAI,QAAQ,KAAK,gBAAgB,gBAAgB,GAAG,CAAC;AAAA,IAC9D;AAAA,IACA,OAAO,IAAI,QAAQ;AAAA,SACd;AAAA,MACH,SAAS;AAAA,MACT,qBAAqB;AAAA,IACvB,CAAC;AAAA;AAAA,OAIG,OAAM,CACV,SACA,SACA,UAAyC,CAAC,GACf;AAAA,IAC3B,MAAM,UAAU,UACZ,KAAK,cAAc,SAAS,OAAO,IACnC,KAAK,cAAc,OAAO;AAAA,IAE9B,IAAI;AAAA,MACF,OAAO,MAAO,QAAwB,QAAQ,OAAO;AAAA,cACrD;AAAA,MACA,QAAQ,MAAM;AAAA;AAAA;AAAA,EAIV,kBAAkB,CAAC,QAAsB;AAAA,IAC/C,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B;AAAA,IACF;AAAA,IAEA,MAAM,IAAI,MACR,6BAA6B,KAAK,oCAAoC,iDACxE;AAAA;AAAA,EAGM,oBAAoB,CAC1B,QACA,SACM;AAAA,IACN,MAAM,uBAAuB,QAAQ,eAAe,KAAK;AAAA,IACzD,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,IAAI,yBAAyB,WAAW;AAAA,QACtC,MAAM,IAAI,MACR,GAAG,sEACL;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,YAAY,WAAW;AAAA,QACjC,MAAM,IAAI,MAAM,GAAG,gEAAgE;AAAA,MACrF;AAAA,MACA,IAAI,uBAAuB,OAAO,GAAG;AAAA,QACnC,MAAM,IAAI,MAAM,GAAG,qEAAqE;AAAA,MAC1F;AAAA,MACA,IAAI,CAAC,KAAK,oBAAoB,GAAG;AAAA,QAC/B,oCAAoC,QAAQ,OAAO;AAAA,MACrD;AAAA,MACA;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,YAAY,UAAU;AAAA,MAC7B,IAAI,QAAQ,gBAAgB,WAAW;AAAA,QACrC,MAAM,IAAI,MACR,GAAG,iHACL;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,YAAY,WAAW;AAAA,QACjC,MAAM,IAAI,MAAM,GAAG,2GAA2G;AAAA,MAChI;AAAA,MACA,IAAI,uBAAuB,OAAO,GAAG;AAAA,QACnC,MAAM,IAAI,MAAM,GAAG,qEAAqE;AAAA,MAC1F;AAAA,MACA,oCAAoC,QAAQ,OAAO;AAAA,MACnD;AAAA,IACF;AAAA,IACA,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,MAAM,eAAe,KAAK,aAAa;AAAA,MACvC,IAAI,aAAa,gBAAgB,aAAa,QAAQ,YAAY,WAAW;AAAA,QAC3E,MAAM,IAAI,MAAM,iBAAiB,oFAAoF;AAAA,MACvH;AAAA,MACA,IAAI,aAAa,YAAY,aAAa,QAAQ,gBAAgB,WAAW;AAAA,QAC3E,MAAM,IAAI,MAAM,iBAAiB,qFAAqF;AAAA,MACxH;AAAA,MACA,mCAAmC,QAAQ,OAAO;AAAA,MAClD;AAAA,IACF;AAAA,IACA,MAAM,IAAI,MACR,6BAA6B,KAAK,oCAAoC,iDACxE;AAAA;AAAA,EAGM,mBAAmB,GAAY;AAAA,IACrC,OAAQ,KAAK,QAAwC,cAAc;AAAA;AAAA,EAG7D,qBAAqB,GAAG;AAAA,IAC9B,MAAM,eAAe,KAAK;AAAA,IAC1B,MAAM,YAAY,aAAa;AAAA,IAC/B,OAAO;AAAA,MACL,OAAO,WAAW,QAAQ;AAAA,MAC1B,cAAc,WAAW,kBAAkB;AAAA,SACvC,WAAW,QAAQ,YAAY,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC;AAAA,SACzD,WAAW,cAAc,YAAY,EAAE,WAAW,UAAU,UAAU,IAAI,CAAC;AAAA,SAC3E,WAAW,qBAAqB,YAChC,EAAE,kBAAkB,UAAU,iBAAiB,IAC/C,CAAC;AAAA,SACD,WAAW,WAAW,YAAY,EAAE,aAAa,UAAU,OAAO,IAAI,CAAC;AAAA,SACvE,WAAW,qBAAqB,YAChC,EAAE,uBAAuB,UAAU,iBAAiB,IACpD,CAAC;AAAA,IACP;AAAA;AAAA,EAGM,aAAa,GAAiC;AAAA,IACpD,IAAI,KAAK,YAAY,UAAU;AAAA,MAC7B,MAAM,IAAI,MAAM,kDAAkD;AAAA,IACpE;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAGN,qBAAqB,GAAuB;AAAA,IAClD,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,MAAM,IAAI,MAAM,8DAA8D;AAAA,IAChF;AAAA,IACA,KAAK,uBAAuB,IAAI,mBAAmB,KAAK,aAAa,CAAC;AAAA,IACtE,OAAO,KAAK;AAAA;AAAA,EAGN,YAAY,GAAgC;AAAA,IAClD,IAAI,KAAK,YAAY,SAAS;AAAA,MAC5B,MAAM,IAAI,MAAM,0DAA0D;AAAA,IAC5E;AAAA,IACA,OAAO,KAAK;AAAA;AAEhB;;AC1cA,SAAS,uBAAsB,CAAC,SAAiC;AAAA,EAC/D,IAAI,OAAO,YAAY,UAAU;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,MAAM,QAAQ,OAAO,GAAG;AAAA,IAC1B,MAAM,SAAmB,CAAC;AAAA,IAC1B,WAAW,QAAQ,SAAS;AAAA,MAC1B,IAAI,OAAO,SAAS,UAAU;AAAA,QAC5B,OAAO,KAAK,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,MACA,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,QACrC;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,IAAI,OAAO,IAAI,SAAS,UAAU;AAAA,QAChC,OAAO,KAAK,IAAI,IAAI;AAAA,MACtB;AAAA,IACF;AAAA,IACA,MAAM,SAAS,OAAO,KAAK,EAAE;AAAA,IAC7B,OAAO,OAAO,SAAS,IAAI,SAAS;AAAA,EACtC;AAAA,EAEA,IAAI,WAAW,OAAO,YAAY,UAAU;AAAA,IAC1C,MAAM,MAAM;AAAA,IACZ,IAAI,OAAO,IAAI,SAAS,UAAU;AAAA,MAChC,OAAO,IAAI;AAAA,IACb;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAUF,SAAS,sBAAsB,CAAC,OAAsD;AAAA,EAC3F,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,MAAM;AAAA,EAEZ,MAAM,aAAa,IAAI;AAAA,EACvB,IAAI,cAAc,OAAO,eAAe,UAAU;AAAA,IAChD,MAAM,QAAQ;AAAA,IAEd,IAAI,OAAO,MAAM,cAAc,YAAY,MAAM,UAAU,SAAS,GAAG;AAAA,MACrE,OAAO,EAAE,MAAM,aAAa,MAAM,MAAM,UAAU;AAAA,IACpD;AAAA,IAEA,IAAI,OAAO,MAAM,SAAS,YAAY,MAAM,KAAK,SAAS,GAAG;AAAA,MAC3D,OAAO,EAAE,MAAM,aAAa,MAAM,MAAM,KAAK;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,IAAI;AAAA,EACxB,IAAI,gBAAgB,qBAAqB;AAAA,IACvC,MAAM,gBACJ,OAAO,IAAI,cAAc,WAAW,IAAI,YAAY,wBAAuB,IAAI,OAAO;AAAA,IACxF,IAAI,iBAAiB,cAAc,SAAS,GAAG;AAAA,MAC7C,OAAO,EAAE,MAAM,aAAa,MAAM,cAAc;AAAA,IAClD;AAAA,EACF;AAAA,EAEA,IAAI,gBAAgB,qBAAqB;AAAA,IACvC,MAAM,gBAAgB,wBAAuB,IAAI,OAAO;AAAA,IACxD,IAAI,iBAAiB,cAAc,SAAS,GAAG;AAAA,MAC7C,OAAO,EAAE,MAAM,aAAa,MAAM,cAAc;AAAA,IAClD;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;AC1EF,SAAS,UAAU,CAAC,SAA4C;AAAA,EACrE,OAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM,KAAK,UAAU,SAAS,MAAM,CAAC;AAAA,MACvC;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AAAA;AA0BK,SAAS,eAAe,CAC7B,QACA,KACA,UAA8B,CAAC,GACX;AAAA,EACpB,QAAQ,WAAW,OAAO,OAAO,MAAM,QAAQ,KAAK,aAAa,UAAU;AAAA,EAC3E,MAAM,MAAM,OAAO;AAAA,EACnB,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3B,IAAI;AAAA,MAAU,MAAM,IAAI,MAAM,GAAG,gBAAgB;AAAA,IACjD;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,OAAO,IAAI,KAAK,IAAI;AAAA,EAClC,IAAI,CAAC,SAAS,CAAC,YAAY;AAAA,IACzB,IAAI;AAAA,MAAU,MAAM,IAAI,MAAM,GAAG,gBAAgB;AAAA,IACjD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,eAAe,CAC7B,QACA,KACA,UAAqE,CAAC,GAClD;AAAA,EACpB,QAAQ,WAAW,OAAO,QAAQ,KAAK,UAAU,UAAU;AAAA,EAC3D,MAAM,MAAM,OAAO;AAAA,EACnB,IAAI;AAAA,EACJ,IAAI,OAAO,QAAQ,YAAY,OAAO,SAAS,GAAG,GAAG;AAAA,IACnD,QAAQ;AAAA,EACV,EAAO,SAAI,OAAO,QAAQ,UAAU;AAAA,IAClC,MAAM,UAAU,IAAI,KAAK;AAAA,IACzB,IAAI,SAAS;AAAA,MACX,MAAM,SAAS,OAAO,WAAW,OAAO;AAAA,MACxC,IAAI,OAAO,SAAS,MAAM;AAAA,QAAG,QAAQ;AAAA,IACvC;AAAA,EACF;AAAA,EACA,IAAI,UAAU,WAAW;AAAA,IACvB,IAAI;AAAA,MAAU,MAAM,IAAI,MAAM,GAAG,gBAAgB;AAAA,IACjD;AAAA,EACF;AAAA,EACA,OAAO,UAAU,KAAK,MAAM,KAAK,IAAI;AAAA;AAMhC,SAAS,gBAAgB,CAC9B,QACA,KACA,UAAkD,CAAC,GAC9B;AAAA,EACrB,QAAQ,WAAW,OAAO,QAAQ,QAAQ;AAAA,EAC1C,MAAM,MAAM,OAAO;AAAA,EACnB,IAAI,OAAO,QAAQ,WAAW;AAAA,IAC5B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3B,MAAM,QAAQ,IAAI,YAAY,EAAE,KAAK;AAAA,IACrC,IAAI,UAAU,UAAU,UAAU,OAAO,UAAU;AAAA,MAAO,OAAO;AAAA,IACjE,IAAI,UAAU,WAAW,UAAU,OAAO,UAAU;AAAA,MAAM,OAAO;AAAA,EACnE;AAAA,EACA,IAAI;AAAA,IAAU,MAAM,IAAI,MAAM,GAAG,gBAAgB;AAAA,EACjD;AAAA;AAMK,SAAS,oBAAoB,CAClC,QACA,KACA,UAA8B,CAAC,GACT;AAAA,EACtB,QAAQ,WAAW,OAAO,QAAQ,QAAQ;AAAA,EAC1C,MAAM,MAAM,OAAO;AAAA,EACnB,IAAI,MAAM,QAAQ,GAAG,GAAG;AAAA,IACtB,MAAM,SAAS,IACZ,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,EAC5D,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,EAC3B,OAAO,OAAO;AAAA,IACjB,IAAI,OAAO,WAAW,GAAG;AAAA,MACvB,IAAI;AAAA,QAAU,MAAM,IAAI,MAAM,GAAG,gBAAgB;AAAA,MACjD;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3B,MAAM,QAAQ,IAAI,KAAK;AAAA,IACvB,IAAI,CAAC,OAAO;AAAA,MACV,IAAI;AAAA,QAAU,MAAM,IAAI,MAAM,GAAG,gBAAgB;AAAA,MACjD;AAAA,IACF;AAAA,IACA,OAAO,CAAC,KAAK;AAAA,EACf;AAAA,EACA,IAAI;AAAA,IAAU,MAAM,IAAI,MAAM,GAAG,gBAAgB;AAAA,EACjD;AAAA;;;ACkLF,yBAAS;;;AC1TT,kBAAS,cAAO;AAChB,iBAAS;;;ACDF,IAAM,6BAA6B;AACnC,IAAM,iCAAiC;AAUvC,SAAS,gBAAgB,CAC9B,UACA,aACA,aACc;AAAA,EACd,MAAM,UAAU,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,MACrC,EAAE,UAAU,cAAc,EAAE,SAAS,CACvC;AAAA,EAEA,MAAM,UAAwB,CAAC;AAAA,EAC/B,IAAI,UAA+B,CAAC;AAAA,EACpC,IAAI,gBAAgB;AAAA,EAEpB,MAAM,QAAQ,MAAM;AAAA,IAClB,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,OAAO,QAAQ,QAAQ,SAAS;AAAA,IACtC,IAAI,CAAC,SAAS,CAAC;AAAA,MAAM;AAAA,IACrB,QAAQ,KAAK;AAAA,MACX,OAAO,QAAQ;AAAA,MACf,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW,MAAM;AAAA,MACjB,SAAS,KAAK;AAAA,IAChB,CAAC;AAAA,IACD,UAAU,CAAC;AAAA,IACX,gBAAgB;AAAA;AAAA,EAGlB,WAAW,WAAW,SAAS;AAAA,IAC7B,MAAM,gBACJ,QAAQ,SAAS,MAChB,gBAAgB,QAAQ,YAAY,eACnC,QAAQ,UAAU;AAAA,IACtB,IAAI;AAAA,MAAe,MAAM;AAAA,IACzB,QAAQ,KAAK,OAAO;AAAA,IACpB,iBAAiB,QAAQ;AAAA,EAC3B;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AAAA;;;ACnDT,kBAAS,qBAAO;AAChB,oBAAS,kBAAS;;;ACDlB;AACA;AACA;AAEA,IAAM,gBAAgB,UAAU,QAAQ;AAExC,eAAsB,SAAS,CAAC,KAAa,MAAiC;AAAA,EAC5E,QAAQ,WAAW,MAAM,cAAc,OAAO,MAAM,EAAE,IAAI,CAAC;AAAA,EAC3D,OAAO,OAAO,KAAK;AAAA;AAOrB,eAAsB,eAAe,CACnC,WACA,WACiB;AAAA,EACjB,MAAM,cAAc,OAAO,CAAC,SAAS,WAAW,WAAW,SAAS,CAAC;AAAA,EAGrE,MAAM,UAAU,WAAW,CAAC,UAAU,aAAa,kBAAkB,CAAC;AAAA,EACtE,MAAM,UAAU,WAAW,CAAC,UAAU,cAAc,iBAAiB,CAAC;AAAA,EACtE,OAAO,UAAU,WAAW,CAAC,aAAa,MAAM,CAAC;AAAA;AAInD,eAAsB,iBAAiB,CACrC,WACA,cACkD;AAAA,EAClD,IAAI;AAAA,IACF,MAAM,QAAQ,OAAO,SACnB,MAAM,UAAU,WAAW,CAAC,YAAY,WAAW,GAAG,oBAAoB,CAAC,GAC3E,EACF;AAAA,IACA,MAAM,QACH,MAAM,UAAU,WAAW,CAAC,UAAU,aAAa,CAAC,MAAO;AAAA,IAC9D,OAAO;AAAA,MACL,aAAa,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI;AAAA,MAC3D;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,OAAO,EAAE,aAAa,GAAG,OAAO,MAAM;AAAA;AAAA;AAK1C,eAAsB,kBAAkB,CACtC,WACA,WACe;AAAA,EACf,MAAM,GAAG,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,EACpD,MAAM,cACJ,OACA,CAAC,SAAS,WAAW,kBAAkB,WAAW,SAAS,CAC7D;AAAA;;;AChEF,qBAAS;AACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,oBAAS,8BAAqB;AAC9B,sBAAS;AAET,IAAM,iBAAgB,WAAU,SAAQ;AACxC,IAAM,iBAAiB,KAAK,OAAO;AACnC,IAAM,sBAAsB,IAAI,IAAI,CAAC,QAAQ,QAAQ,CAAC;AAoEtD,SAAS,qBAAqB,CAAC,OAAe,MAAoC;AAAA,EAChF,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW,GAAG;AAAA,IACnD,MAAM,IAAI,MAAM,SAAS,sCAAsC;AAAA,EACjE;AAAA,EACA,IAAI,MAAM,SAAS,MAAI,KAAK,kBAAkB,KAAK,KAAK,GAAG;AAAA,IACzD,MAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU,KAAK,uCAAuC;AAAA,EACnG;AAAA,EACA,IAAI,MAAM,SAAS,IAAI,GAAG;AAAA,IACxB,MAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU,KAAK,6BAA6B;AAAA,EACzF;AAAA,EACA,IAAI,WAAW,KAAK,KAAK,MAAM,WAAW,GAAG,GAAG;AAAA,IAC9C,MAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU,KAAK,2BAA2B;AAAA,EACvF;AAAA,EAEA,MAAM,uBAAuB,SAAS,cAAc,MAAM,QAAQ,QAAQ,EAAE,IAAI;AAAA,EAChF,MAAM,QAAQ,qBAAqB,MAAM,GAAG;AAAA,EAC5C,IACE,qBAAqB,WAAW,KAChC,MAAM,KAAK,CAAC,SAAS,SAAS,MAAM,SAAS,OAAO,SAAS,IAAI,GACjE;AAAA,IACA,MAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU,KAAK,iDAAiD;AAAA,EAC7G;AAAA,EACA,MAAM,WAAW,MAAM,KAAK,CAAC,SAAS,oBAAoB,IAAI,IAAI,CAAC;AAAA,EACnE,IAAI,UAAU;AAAA,IACZ,MAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU,KAAK,MAAM,sBAAsB;AAAA,EACxF;AAAA,EAEA,MAAM,aAAa,MAAM,UAAU,oBAAoB;AAAA,EACvD,IAAI,eAAe,sBAAsB;AAAA,IACvC,MAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU,KAAK,oCAAoC;AAAA,EAChG;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,OAAoC;AAAA,EACxD,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA;AAG9D,SAAS,WAAW,CAAC,MAAwB;AAAA,EAC3C,MAAM,SAAmB,CAAC;AAAA,EAC1B,IAAI,UAAU,MAAM,QAAQ,IAAI;AAAA,EAChC,OAAO,YAAY,KAAK;AAAA,IACtB,OAAO,KAAK,OAAO;AAAA,IACnB,UAAU,MAAM,QAAQ,OAAO;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,sBAAsB,CACpC,WACyB;AAAA,EACzB,IAAI,CAAC,aAAa,OAAO,cAAc,UAAU;AAAA,IAC/C,MAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AAAA,EAEA,MAAM,QAAQ,OAAO,QAAQ,UAAU,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,aAAa;AAAA,IAC9E,IAAI,OAAO,YAAY,UAAU;AAAA,MAC/B,MAAM,IAAI,MAAM,cAAc,KAAK,UAAU,OAAO,yBAAyB;AAAA,IAC/E;AAAA,IACA,OAAO,EAAE,MAAM,sBAAsB,SAAS,MAAM,GAAG,QAAQ;AAAA,GAChE;AAAA,EACD,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAAA,EACjD,MAAM,cAAc,cACjB,UAAU,eAAe,CAAC,GAAG,IAAI,CAAC,SACjC,sBAAsB,MAAM,WAAW,CACzC,CACF;AAAA,EAEA,MAAM,YAAY,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;AAAA,EACxD,WAAW,aAAa,aAAa;AAAA,IACnC,IAAI,UAAU,IAAI,SAAS,GAAG;AAAA,MAC5B,MAAM,IAAI,MAAM,cAAc,iDAAiD;AAAA,IACjF;AAAA,EACF;AAAA,EACA,WAAW,QAAQ,OAAO;AAAA,IACxB,WAAW,UAAU,YAAY,KAAK,IAAI,GAAG;AAAA,MAC3C,IAAI,UAAU,IAAI,MAAM,GAAG;AAAA,QACzB,MAAM,IAAI,MAAM,cAAc,oCAAoC,KAAK,MAAM;AAAA,MAC/E;AAAA,IACF;AAAA,EACF;AAAA,EACA,WAAW,aAAa,aAAa;AAAA,IACnC,WAAW,UAAU,YAAY,SAAS,GAAG;AAAA,MAC3C,IAAI,UAAU,IAAI,MAAM,GAAG;AAAA,QACzB,MAAM,IAAI,MAAM,cAAc,mCAAmC,WAAW;AAAA,MAC9E;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,OAAO,YAAY;AAAA;AAGvB,SAAS,sBAAsB,CACpC,WACA,UAGI,CAAC,GACa;AAAA,EAClB,MAAM,YAAY,MAAM,QAAS,UAAsC,KAAK,IACvE,YACD,uBAAuB,SAA2B;AAAA,EACtD,OAAO,yBAAyB;AAAA,IAC9B,eAAe,UAAU,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,IACtD,qBAAqB,UAAU;AAAA,IAC/B,wBAAwB,QAAQ;AAAA,IAChC,mBAAmB,QAAQ;AAAA,EAC7B,CAAC;AAAA;AAGI,SAAS,wBAAwB,CACtC,QACkB;AAAA,EAClB,MAAM,aAAa,gBAAgB,MAAM;AAAA,EACzC,OAAO;AAAA,IACL,eAAe,WAAW;AAAA,IAC1B,wBAAwB,WAAW;AAAA,IACnC,mBAAmB,WAAW;AAAA,IAC9B,qBAAqB,WAAW;AAAA,EAClC;AAAA;AAGF,SAAS,eAAe,CAAC,QAA4C;AAAA,EACnE,IAAI,CAAC,UAAU,OAAO,WAAW,UAAU;AAAA,IACzC,MAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAAA,EACA,MAAM,gBAAgB,cACnB,OAAO,iBAAiB,CAAC,GAAG,IAAI,CAAC,SAAS,sBAAsB,MAAM,MAAM,CAAC,CAChF;AAAA,EACA,MAAM,yBAAyB,cAC5B,OAAO,0BAA0B,CAAC,GAAG,IAAI,CAAC,SACzC,sBAAsB,MAAM,WAAW,CACzC,CACF;AAAA,EACA,MAAM,sBAAsB,cACzB,OAAO,uBAAuB,CAAC,GAAG,IAAI,CAAC,SACtC,sBAAsB,MAAM,WAAW,CACzC,CACF;AAAA,EACA,MAAM,qBAAqB,OAAO,qBAAqB,CAAC,GAAG,IAAI,CAAC,SAAS;AAAA,IACvE,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,MACrC,MAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AAAA,IACA,MAAM,aAAa,CAAC,GAAG,IAAI,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC;AAAA,IACrD,IACE,WAAW,WAAW,KACtB,WAAW,KACT,CAAC,cACC,cAAc,YAAY,cAAc,YAAY,cAAc,QACtE,GACA;AAAA,MACA,MAAM,IAAI,MAAM,gCAAgC,KAAK,UAAU,KAAK,IAAI,GAAG;AAAA,IAC7E;AAAA,IACA,OAAO;AAAA,MACL,MAAM,sBAAsB,KAAK,MAAM,KAAK,YAAY,cAAc,MAAM;AAAA,MAC5E,WAAW,KAAK,aAAa;AAAA,MAC7B;AAAA,IACF;AAAA,GACD;AAAA,EACD,kBAAkB,KAChB,CAAC,GAAG,MACF,EAAE,KAAK,SAAS,EAAE,KAAK,UACvB,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,KACxC,EAAE,KAAK,cAAc,EAAE,IAAI,CAC/B;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAGF,eAAe,wBAAwB,CAAC,MAAc,cAAqC;AAAA,EACzF,IAAI,UAAU;AAAA,EACd,WAAW,aAAa,aAAa,MAAM,GAAG,GAAG;AAAA,IAC/C,UAAU,MAAK,SAAS,SAAS;AAAA,IACjC,MAAM,OAAO,MAAM,MAAM,OAAO,EAAE,MAAM,MAAM,IAAI;AAAA,IAClD,IAAI,MAAM,eAAe,GAAG;AAAA,MAC1B,MAAM,IAAI,MAAM,uDAAuD,cAAc;AAAA,IACvF;AAAA,EACF;AAAA;AAGF,eAAsB,wBAAwB,CAC5C,WACA,aAC4B;AAAA,EAC5B,MAAM,aAAa,aACjB,YAAY,IAAI,CAAC,SAAS,sBAAsB,MAAM,WAAW,CAAC,CACpE,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AAAA,EAChF,WAAW,aAAa,YAAY;AAAA,IAClC,MAAM,yBAAyB,WAAW,SAAS;AAAA,IACnD,MAAM,cAAc,MAAK,WAAW,GAAG,UAAU,MAAM,GAAG,CAAC;AAAA,IAC3D,MAAM,OAAO,MAAM,MAAM,WAAW,EAAE,MAAM,MAAM,IAAI;AAAA,IACtD,IAAI,QAAQ,CAAC,KAAK,YAAY,GAAG;AAAA,MAC/B,MAAM,IAAI,MAAM,sCAAsC,wCAAwC;AAAA,IAChG;AAAA,IACA,MAAM,MAAM,aAAa,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C;AAAA,EACA,OAAO;AAAA;AAGT,eAAsB,yBAAyB,CAC7C,WACA,WACkC;AAAA,EAClC,MAAM,YAAY,uBAAuB,SAAS;AAAA,EAClD,MAAM,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C,MAAM,yBAAyB,WAAW,UAAU,WAAW;AAAA,EAC/D,WAAW,QAAQ,UAAU,OAAO;AAAA,IAClC,MAAM,yBAAyB,WAAW,KAAK,IAAI;AAAA,IACnD,MAAM,cAAc,MAAK,WAAW,GAAG,KAAK,KAAK,MAAM,GAAG,CAAC;AAAA,IAC3D,MAAM,OAAO,MAAM,MAAM,WAAW,EAAE,MAAM,MAAM,IAAI;AAAA,IACtD,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,MAAM,IAAI,MAAM,iCAAiC,KAAK,wCAAwC;AAAA,IAChG;AAAA,IACA,MAAM,MAAM,SAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IACrD,MAAM,UAAU,aAAa,KAAK,SAAS,OAAO;AAAA,EACpD;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,MAAM,CAAC,KAAa,MAA0C;AAAA,EAC3E,QAAQ,WAAW,MAAM,eAAc,OAAO,CAAC,GAAG,IAAI,GAAG;AAAA,IACvD;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,EACb,CAAC;AAAA,EACD,OAAO;AAAA;AAGT,eAAe,YAAY,CAAC,WAAoC;AAAA,EAC9D,MAAM,OAAO,MAAM,OAAO,WAAW,CAAC,aAAa,kBAAkB,CAAC,GAAG,KAAK;AAAA,EAC9E,OAAO,WAAW,GAAG,IAAI,MAAM,QAAQ,WAAW,GAAG;AAAA;AAGvD,SAAS,UAAU,CAAC,OAAuB;AAAA,EACzC,OAAO,IAAI,MAAM,QAAQ,MAAM,OAAO;AAAA;AAGxC,SAAS,aAAa,CAAC,YAA+C;AAAA,EACpE,OAAO,WAAW,IAAI,UAAU,EAAE,KAAK,GAAG;AAAA;AAG5C,SAAS,gBAAgB,CAAC,QAAkC;AAAA,EAC1D,MAAM,QAAQ,OAAO,kBAClB,IAAI,CAAC,SAAS;AAAA,IACb,MAAM,UAAU,cAAc,KAAK,UAAU;AAAA,IAC7C,IAAI,KAAK,WAAW;AAAA,MAClB,OAAO;AAAA,MAA0B,WAAW,GAAG,KAAK,OAAO;AAAA,6BAAmC;AAAA;AAAA;AAAA,IAChG;AAAA,IACA,OAAO,oBAAoB,WAAW,KAAK,IAAI;AAAA,2BAAuC;AAAA;AAAA,GACvF,EACA,KAAK;AAAA,CAAI;AAAA,EACZ,MAAM,WAAW,OAAO,cAAc,SAClC;AAAA,MAA0B,OAAO,cAAc,IAAI,UAAU,EAAE,KAAK,GAAG;AAAA;AAAA;AAAA,UACvE;AAAA,EACJ,MAAM,WAAW,OAAO,uBACrB,IACC,CAAC,WACC,qBAAqB,WAAW,GAAG,SAAS,sBAChD,EACC,KAAK;AAAA,CAAI;AAAA,EACZ,OAAO,CAAC,OAAO,UAAU,QAAQ,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,CAAI;AAAA;AAG9D,SAAS,mBAAmB,CAC1B,QACA,qBACQ;AAAA,EACR,MAAM,YAAY;AAAA,IAChB,GAAG,OAAO,cAAc,QAAQ,WAAW;AAAA,IAC3C,GAAG,OAAO;AAAA,IACV,GAAG,OAAO,oBAAoB,QAAQ,WAAW;AAAA,IACjD,GAAG,OAAO;AAAA,IACV,GAAG,OAAO,uBAAuB,QAAQ,WAAW;AAAA,IACpD,GAAG;AAAA,EACL;AAAA,EACA,MAAM,QAAQ,aAAa,SAAS;AAAA,EACpC,MAAM,YAAY,MAAM,SACpB,OAAO,MAAM,IAAI,UAAU,EAAE,KAAK,GAAG,mBACrC;AAAA,EACJ,MAAM,cAAc,OAAO,uBACxB,IAAI,CAAC,WAAW,OAAO,WAAW,GAAG,SAAS,iBAAiB,EAC/D,KAAK;AAAA,CAAI;AAAA,EACZ,OAAO,CAAC,WAAW,WAAW,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,CAAI;AAAA;AAG3D,SAAS,kBAAkB,CACzB,QACA,qBACA,qBACQ;AAAA,EACR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBP,iBAAiB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyDvB,oBAAoB,QAAQ,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAmB7B,WAAW,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQlD,SAAS,mBAAmB,CAAC,sBAAsC;AAAA,EACjE,OAAO;AAAA,qBACY,WAAW,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQpD,eAAe,uBAAuB,CAAC,WAAsC;AAAA,EAC3E,MAAM,SAAmB,CAAC;AAAA,EAC1B,eAAe,KAAK,CAAC,UAAkB,UAAiC;AAAA,IACtE,WAAW,SAAS,MAAM,QAAQ,UAAU,EAAE,eAAe,KAAK,CAAC,GAAG;AAAA,MACpE,IAAI,aAAa,MAAM,MAAM,SAAS;AAAA,QAAQ;AAAA,MAC9C,IAAI,CAAC,MAAM,YAAY;AAAA,QAAG;AAAA,MAC1B,MAAM,gBAAgB,WAAW,GAAG,YAAY,MAAM,SAAS,MAAM;AAAA,MACrE,OAAO,KAAK,aAAa;AAAA,MACzB,MAAM,MAAM,MAAK,UAAU,MAAM,IAAI,GAAG,aAAa;AAAA,IACvD;AAAA;AAAA,EAEF,MAAM,MAAM,WAAW,EAAE;AAAA,EACzB,OAAO,aAAa,MAAM;AAAA;AAG5B,eAAsB,iBAAiB,CACrC,WACA,QACiC;AAAA,EACjC,MAAM,aAAa,gBAAgB,MAAM;AAAA,EACzC,MAAM,YAAY,MAAM,aAAa,SAAS;AAAA,EAC9C,MAAM,iBAAiB,MAAK,WAAW,OAAO;AAAA,EAC9C,MAAM,WAAW,MAAK,WAAW,aAAa;AAAA,EAC9C,MAAM,gBAAgB,MAAK,UAAU,YAAY;AAAA,EACjD,MAAM,iBAAiB,MAAK,UAAU,aAAa;AAAA,EACnD,MAAM,sBAAsB,MAAM,wBAAwB,SAAS;AAAA,EAEnE,MAAM,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,EACzC,MAAM,UACJ,eACA,mBACE,YACA,qBACA,MAAK,gBAAgB,YAAY,CACnC,GACA,OACF;AAAA,EACA,MAAM,UACJ,gBACA,oBAAoB,MAAK,gBAAgB,aAAa,CAAC,GACvD,OACF;AAAA,EACA,MAAM,MAAM,eAAe,GAAK;AAAA,EAChC,MAAM,MAAM,gBAAgB,GAAK;AAAA,EACjC,MAAM,OAAO,WAAW,CAAC,UAAU,WAAW,kBAAkB,QAAQ,CAAC;AAAA,EACzE,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAGF,eAAe,cAAc,CAC3B,iBACA,gBACA,MACe;AAAA,EACf,MAAM,SAAS,MAAK,MAAM,aAAa,eAAe,GAAG,SAAS,IAAI;AAAA,EACtE,MAAM,cAAc,MAAK,MAAM,aAAa,cAAc,GAAG,SAAS,IAAI;AAAA,EAC1E,MAAM,aAAa,MAAM,KAAK,MAAM,EAAE,MAAM,MAAM,IAAI;AAAA,EACtD,IAAI,CAAC,YAAY,OAAO;AAAA,IAAG;AAAA,EAC3B,MAAM,MAAM,SAAQ,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACrD,MAAM,SAAS,QAAQ,WAAW;AAAA,EAClC,MAAM,MAAM,aAAa,GAAK;AAAA;AAIhC,eAAsB,wBAAwB,CAC5C,iBACA,gBACA,QACiC;AAAA,EACjC,MAAM,aAAa,gBAAgB,MAAM;AAAA,EACzC,MAAM,yBAAyB,gBAAgB,WAAW,mBAAmB;AAAA,EAC7E,MAAM,eAAe,iBAAiB,gBAAgB,YAAY;AAAA,EAClE,MAAM,eAAe,iBAAiB,gBAAgB,aAAa;AAAA,EACnE,OAAO,kBAAkB,gBAAgB,UAAU;AAAA;AAGrD,SAAS,oBAAoB,CAC3B,MACA,WACA,QACS;AAAA,EACT,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,iBAAiB,sBAAsB,MAAM,MAAM;AAAA,IACnD,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,WAAW,QAAQ,OAAO,mBAAmB;AAAA,IAC3C,MAAM,UAAU,KAAK,YACjB,eAAe,WAAW,GAAG,KAAK,OAAO,IACzC,mBAAmB,KAAK;AAAA,IAC5B,IAAI;AAAA,MAAS,OAAO,KAAK,WAAW,SAAS,SAAS;AAAA,EACxD;AAAA,EACA,IACE,OAAO,uBAAuB,KAAK,CAAC,WAClC,eAAe,WAAW,GAAG,SAAS,CACxC,GACA;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,cAAc,SAAS,cAAc,GAAG;AAAA,IACjD,OAAO,cAAc;AAAA,EACvB;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,KAAiD;AAAA,EACxE,MAAM,SAAS,IAAI,MAAM,MAAI;AAAA,EAC7B,IAAI,OAAO,GAAG,EAAE,MAAM;AAAA,IAAI,OAAO,IAAI;AAAA,EACrC,MAAM,SAA6C,CAAC;AAAA,EACpD,SAAS,QAAQ,EAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AAAA,IACrD,MAAM,SAAS,OAAO;AAAA,IACtB,MAAM,OAAO,OAAO,QAAQ;AAAA,IAC5B,IAAI,WAAW,aAAa,SAAS;AAAA,MAAW,OAAO,KAAK,EAAE,QAAQ,KAAK,CAAC;AAAA,EAC9E;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,mBAAmB,CAAC,QAAuC;AAAA,EAClE,IAAI,WAAW;AAAA,IAAK,OAAO;AAAA,EAC3B,IAAI,WAAW;AAAA,IAAK,OAAO;AAAA,EAC3B,IAAI,WAAW;AAAA,IAAK,OAAO;AAAA,EAC3B,OAAO;AAAA;AAGT,eAAe,aAAa,CAC1B,WACA,UACA,MACwB;AAAA,EACxB,MAAM,MAAM,MAAM,OAAO,WAAW,CAAC,WAAW,MAAM,UAAU,MAAM,IAAI,CAAC;AAAA,EAC3E,OAAO,IAAI,MAAM,SAAS,IAAI,MAAM;AAAA;AAGtC,eAAe,iBAAiB,CAC9B,WACA,SACA,QACA,QACA,YACA,UAAkD,CAAC,GACpC;AAAA,EACf,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,YAAY,oBAAoB,MAAM,MAAM;AAAA,IAClD,IAAI,CAAC,aAAa,CAAC,qBAAqB,MAAM,MAAM,WAAW,MAAM,GAAG;AAAA,MACtE,WAAW,KAAK;AAAA,QACd,MAAM,MAAM;AAAA,WACR,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,QACjC;AAAA,WACI,QAAQ,SAAS,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;AAAA,QACnD,QAAQ,YACJ,GAAG,gDACH,0BAA0B,MAAM;AAAA,MACtC,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,IAAI,cAAc;AAAA,MAAU;AAAA,IAE5B,IAAI,UAAU;AAAA,IACd,IAAI,QAAQ,UAAU;AAAA,MACpB,MAAM,OAAO,MAAM,cAAc,WAAW,QAAQ,UAAU,MAAM,IAAI;AAAA,MACxE,UAAU,SAAS,YAAY,SAAS;AAAA,IAC1C,EAAO;AAAA,MACL,MAAM,OAAO,MAAM,MAAM,MAAK,WAAW,GAAG,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC,EAAE,MAClE,MAAM,IACR;AAAA,MACA,UAAU,MAAM,OAAO,MAAM,QAAQ,CAAC,KAAK,eAAe;AAAA;AAAA,IAE5D,IAAI,CAAC,SAAS;AAAA,MACZ,WAAW,KAAK;AAAA,QACd,MAAM,MAAM;AAAA,QACZ;AAAA,QACA;AAAA,WACI,QAAQ,SAAS,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;AAAA,QACnD,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAGF,SAAS,mBAAmB,CAC1B,QACA,qBACa;AAAA,EACb,OAAO,IAAI,IAAI;AAAA,IACb,GAAG;AAAA,IACH,GAAG,OAAO,cAAc,QAAQ,WAAW;AAAA,IAC3C,GAAG,OAAO;AAAA,IACV,GAAG,OAAO,oBAAoB,QAAQ,WAAW;AAAA,IACjD,GAAG,OAAO;AAAA,IACV,GAAG,OAAO,uBAAuB,QAAQ,WAAW;AAAA,EACtD,CAAC;AAAA;AAOH,eAAsB,oBAAoB,CACxC,WACA,cACA,QACA,UAAuD,CAAC,GACxB;AAAA,EAChC,MAAM,aAAa,gBAAgB,MAAM;AAAA,EACzC,MAAM,aAAqC,CAAC;AAAA,EAC5C,MAAM,WAAW,MAAM,OAAO,WAAW,CAAC,YAAY,aAAa,GAAG,oBAAoB,CAAC,GACxF,KAAK,EACL,MAAM;AAAA,CAAI,EACV,OAAO,OAAO;AAAA,EAEjB,WAAW,UAAU,SAAS;AAAA,IAC5B,MAAM,UAAU,MAAM,OAAO,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,KAAK;AAAA,IAC5E,MAAM,UAAU,gBACd,MAAM,OAAO,WAAW;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,CACH;AAAA,IACA,MAAM,kBAAkB,WAAW,SAAS,YAAY,UAAU,YAAY;AAAA,MAC5E,UAAU;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,iBAAiB,gBACrB,MAAM,OAAO,WAAW;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,CACH;AAAA,EACA,MAAM,kBACJ,WACA,gBACA,YACA,gBACA,UACF;AAAA,EAEA,MAAM,aAAa,MAAM,OAAO,WAAW;AAAA,IACzC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC,GACE,MAAM,MAAI,EACV,OAAO,OAAO,EACd,IAAI,CAAC,UAAU,EAAE,QAAQ,KAAK,KAAK,EAAE;AAAA,EACxC,MAAM,kBACJ,WACA,WACA,YACA,aACA,UACF;AAAA,EAEA,MAAM,sBAAsB,QAAQ,uBAAuB,CAAC,QAAQ;AAAA,EACpE,MAAM,qBAAqB,oBAAoB,YAAY,mBAAmB;AAAA,EAC9E,WAAW,aAAa,MAAM,wBAAwB,SAAS,GAAG;AAAA,IAChE,IACE,mBAAmB,IAAI,SAAS,KAChC,WAAW,uBAAuB,KAAK,CAAC,WACtC,UAAU,WAAW,GAAG,SAAS,CACnC,GACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAW,KAAK;AAAA,MACd,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,EAAE,OAAO,WAAW,WAAW,GAAG,WAAW;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzvB/C,IAAM,0BAAkC,gCAAwB,KAAK;AACrE,IAAM,2BAAmC,OAAO,2BAAoB;AAAA,EACzE,uBAAuB;AACzB,CAAC;AACM,IAAM,qBAA6B,OAAO,4BAAqB;AAAA,EACpE,uBAAuB;AACzB,CAAC;AACM,IAAM,6BAAqC,4BAAqB,KAAK;AAE5E,SAAS,MAAM,CACb,UACA,MACQ;AAAA,EACR,OAAO,SACJ,QAAQ,kBAAkB,CAAC,OAAO,QAAgB;AAAA,IACjD,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,IAAI,MAAM,qCAAqC,OAAO;AAAA,IAC9D;AAAA,IACA,OAAO,OAAO,KAAK;AAAA,GACpB,EACA,KAAK;AAAA;AAGV,SAAS,kBAAkB,CAAC,aAAyC;AAAA,EACnE,OAAO,aAAa,KAAK,IACrB;AAAA;AAAA;AAAA,EAA4D,YAAY,KAAK,MAC7E;AAAA;AAGC,SAAS,yBAAyB,CAAC,OAO/B;AAAA,EACT,OAAO,OAAO,yBAAkB;AAAA,IAC9B,YAAY,MAAM;AAAA,IAClB,cAAc,MAAM,iBAAiB;AAAA,IACrC,WAAW,MAAM,UAAU;AAAA,IAC3B,SAAS,MAAM,UAAU;AAAA,IACzB,UAAU,MAAM;AAAA,IAChB,aAAa,MAAM,iBAAiB,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,CAAI;AAAA,IACxE,WAAW,MAAM;AAAA,IACjB,oBAAoB,mBAAmB,MAAM,WAAW;AAAA,EAC1D,CAAC;AAAA;AAGI,SAAS,6BAA6B,CAAC,OAEnC;AAAA,EACT,OAAO,OAAO,6BAAsB,EAAE,WAAW,MAAM,UAAU,CAAC;AAAA;AAG7D,SAAS,yBAAyB,CAAC,OAM/B;AAAA,EACT,OAAO,OAAO,yBAAkB;AAAA,IAC9B,OAAO,MAAM;AAAA,IACb,YAAY,MAAM;AAAA,IAClB,WAAW,MAAM;AAAA,IACjB,oBAAoB,mBAAmB,MAAM,WAAW;AAAA,EAC1D,CAAC;AAAA;;;AC9CH,eAAsB,oBAAoB,CACxC,QACA,SACyB;AAAA,EACzB,MAAM,UAAU,KAAK,IAAI;AAAA,EACzB,MAAM,MAAM,QAAQ,eAAe,MAAM;AAAA,EAEzC,IAAI,QAAQ,QAAQ,SAAS;AAAA,IAC3B,OAAO;AAAA,MACL,SAAS,QAAQ;AAAA,MACjB,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EAEA,MAAM,iBAAiB;AAAA,IACrB,gBAAgB;AAAA,IAChB,KAAK,QAAQ;AAAA,IACb,UAAU,EAAE,SAAS,MAAe;AAAA,OAChC,QAAQ,MAAM,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC;AAAA,OACtC,QAAQ,iBAAiB,YACzB,EAAE,cAAc,QAAQ,aAAa,IACrC,CAAC;AAAA,EACP;AAAA,EACA,MAAM,UAAU,QAAQ,uBACpB,OAAO,cAAc,QAAQ,sBAAsB,cAAc,IACjE,OAAO,cAAc,QAAQ,SAAS,cAAc;AAAA,EAExD,MAAM,WAAyB,CAAC;AAAA,EAChC,IAAI,UAAU;AAAA,EACd,IAAI;AAAA,EACJ,IAAI,SAAS;AAAA,EACb,IAAI,gBAAgB;AAAA,EAIpB,MAAM,UAAU,MAAM;AAAA,IACpB,IAAI,IAAI,QAAQ,iCAAiC;AAAA,IACjD,QAAQ,MAAM;AAAA;AAAA,EAEhB,QAAQ,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,EAEjE,IAAI;AAAA,IACF,MAAM,QAAQ,KAAK,QAAQ,UAAU;AAAA,IACrC,iBAAiB,OAAO,QAAQ,OAAO,GAAG;AAAA,MACxC,SAAS,KAAK,GAAiB;AAAA,MAC/B,IAAI,IAAI,SAAS,aAAa;AAAA,QAC5B,gBAAgB,IAAI;AAAA,MACtB,EAAO,SAAI,IAAI,SAAS,aAAa;AAAA,QACnC,IAAI,IAAI,QAAQ,gBAAgB,IAAI,UAAU;AAAA,MAChD,EAAO,SAAI,IAAI,SAAS,SAAS;AAAA,QAC/B,QAAQ,IAAI;AAAA,MACd,EAAO,SAAI,IAAI,SAAS,UAAU;AAAA,QAChC,UAAU,IAAI;AAAA,QACd,SAAS,IAAI,UAAU;AAAA,QACvB,IAAI,CAAC,IAAI;AAAA,UAAS,QAAQ,SAAS,IAAI,eAAe,IAAI;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,KAAK;AAAA,IACZ,QAAQ,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,YACvD;AAAA,IACA,QAAQ,QAAQ,oBAAoB,SAAS,OAAO;AAAA,IACpD,QAAQ,MAAM;AAAA;AAAA,EAEhB,IAAI,QAAQ,QAAQ,SAAS;AAAA,IAC3B,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,EACnB;AAAA,EAEA,OAAO;AAAA,IACL,SAAS,QAAQ;AAAA,IACjB,gBAAgB,QAAQ;AAAA,IACxB;AAAA,IACA;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,YAAY,KAAK,IAAI,IAAI;AAAA,IACzB;AAAA,EACF;AAAA;;;AC3GK,IAAM,uBAAuB;AAC7B,IAAM,wBAAwB;AACrC,IAAM,kBAAkB;AAIxB,IAAM,0BAA0B;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,gBAAgB,KAAK,IAAI,MAAM,GAAG,CAAC;AACzC,IAAM,qBAAqB;AAE3B,IAAM,QACJ;AAEF,SAAS,gBAAgB,CAAC,GAAmB;AAAA,EAC3C,OAAO;AAAA,gBAAkB;AAAA;AAGpB,SAAS,YAAY,CAAC,MAAc,OAAuB;AAAA,EAChE,IAAI,KAAK,UAAU;AAAA,IAAO,OAAO;AAAA,EACjC,OAAO,KAAK,MAAM,GAAG,KAAK,IAAI,iBAAiB,KAAK,SAAS,KAAK;AAAA;AAGpE,SAAS,GAAG,CAAC,MAAoB;AAAA,EAC/B,OAAO,KAAK,YAAY;AAAA;AAOnB,SAAS,cAAc,CAAC,OAA6B;AAAA,EAC1D,IAAI,iBAAiB;AAAA,IAAM,OAAO;AAAA,EAClC,IAAI,OAAO,UAAU,YAAY,QAAQ,cAAM;AAAA,IAC7C,OAAO,IAAI,KAAK,KAAK;AAAA,EACvB;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,OAAO;AAAA,IACtC,MAAM,WAAW,wBAAwB,KAAK,KAAK,IAAI,QAAQ,GAAG;AAAA,IAClE,MAAM,OAAO,IAAI,KAAK,QAAQ;AAAA,IAC9B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,OAAO;AAAA,EAC/C;AAAA,EACA,OAAO;AAAA;AAOF,SAAS,cAAc,CAC5B,GACA,SACA,WACA,iBACU;AAAA,EACV,IAAI,MAAM;AAAA,IAAG,OAAO,CAAC;AAAA,EACrB,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,MAAM,UAAU,aAAa,IAAI,KAAK,aAAa,GAAG,QAAQ;AAAA,IAC9D,IAAI,OAAO;AAAA,IACX,IAAI,mBAAmB,IAAI;AAAA,MAAG,OAAO,mBAAmB,IAAI;AAAA,IAC5D,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MACnC,IAAI,IAAI,KAAK,SAAS,OAAO,OAAO,CAAC,CAAC,CACxC;AAAA,EACF;AAAA,EAEA,MAAM,MAAgB,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE;AAAA,EAC1C,MAAM,OAAO,CAAC,GAAG,QAAQ,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,EACrD,MAAM,QAAQ,KAAK,MAAM;AAAA,EACzB,MAAM,OAAO,KAAK,KAAK,SAAS,MAAM;AAAA,EACtC,MAAM,WAAW,CAAC,MAAsB,QAAQ,IAAI,CAAC,GAAG,QAAQ,KAAK;AAAA,EAErE,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,IAAI,KAAK,IAAI,IAAI,KAAK,SAAS,KAAK,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,EAC7D;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,IAAI,KAAK,QAAQ,KAAK;AAAA,IACxC,MAAM,IAAI,KAAK,MAAM;AAAA,IACrB,MAAM,IAAI,KAAK,IAAI,MAAM;AAAA,IACzB,IAAI,KAAK,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;AAAA,IAClC,MAAM,SAAS,SAAS,CAAC,IAAI,SAAS,CAAC;AAAA,IACvC,MAAM,MAAM,IAAI;AAAA,IAChB,SAAS,IAAI,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,MAC9B,IAAI,KAAK,IAAI,IAAI,KAAK,SAAS,CAAC,IAAK,UAAU,IAAI,KAAM,GAAG,CAAC;AAAA,IAC/D;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC;AAAA,EACxC,SAAS,IAAI,OAAO,EAAG,IAAI,GAAG,KAAK;AAAA,IACjC,IAAI,KAAK,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,IAAI,QAAQ,IAAI,CAAC;AAAA,EAC3D;AAAA,EACA,OAAO;AAAA;AAUF,SAAS,UAAU,CAAC,UAGzB;AAAA,EACA,MAAM,MAAM,YAAY;AAAA,EACxB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,GAAG;AAAA,IACvB,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,IAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAAA,IAC1E,OAAO;AAAA,MACL,MAAM,KAAK,UAAU,EAAE,MAAM,aAAa,KAAK,oBAAoB,EAAE,CAAC;AAAA,MACtE,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,IAAI,IAAI,UAAU;AAAA,IAAsB,OAAO,EAAE,MAAM,KAAK,QAAQ,MAAM;AAAA,EAE1E,MAAM,SAAuD,CAAC;AAAA,EAC9D,MAAM,UAAU,CAAC,SAAwB;AAAA,IACvC,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,MACvB,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,QACpC,MAAM,MAAM,KAAK;AAAA,QACjB,IAAI,OAAO,QAAQ;AAAA,UAAU,OAAO,KAAK,EAAE,MAAM,KAAK,EAAE,CAAC;AAAA,QACpD,SAAI,OAAO,OAAO,QAAQ;AAAA,UAAU,QAAQ,GAAG;AAAA,MACtD;AAAA,IACF,EAAO,SAAI,QAAQ,OAAO,SAAS,UAAU;AAAA,MAC3C,MAAM,MAAM;AAAA,MACZ,YAAY,KAAK,QAAQ,OAAO,QAAQ,GAAG,GAAG;AAAA,QAC5C,IAAI,OAAO,QAAQ;AAAA,UAAU,OAAO,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,QACtD,SAAI,OAAO,OAAO,QAAQ;AAAA,UAAU,QAAQ,GAAG;AAAA,MACtD;AAAA,IACF;AAAA;AAAA,EAEF,QAAQ,MAAM;AAAA,EAEd,MAAM,YAAY,CAAC,SAIhB,KAAK,KAA0C,KAAK;AAAA,EAEvD,IAAI,SAAS,KAAK,UAAU,MAAM;AAAA,EAClC,OAAO,OAAO,SAAS,wBAAwB,OAAO,SAAS,GAAG;AAAA,IAChE,IAAI,OAAO,OAAO;AAAA,IAClB,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,WAAW,QAAQ,QAAQ;AAAA,MACzB,IAAI,UAAU,IAAI,EAAE,SAAS,UAAU,IAAI,EAAE;AAAA,QAAQ,OAAO;AAAA,IAC9D;AAAA,IACA,MAAM,MAAM,UAAU,IAAI;AAAA,IAC1B,IAAI,IAAI,UAAU;AAAA,MAAiB;AAAA,IACnC,MAAM,OAAO,KAAK,IAAI,iBAAiB,KAAK,MAAM,IAAI,SAAS,CAAC,CAAC;AAAA,IAChE,KAAK,KAA0C,KAAK,OACnD,IAAI,MAAM,GAAG,IAAI,IAAI,iBAAiB,IAAI,SAAS,IAAI;AAAA,IACzD,SAAS,KAAK,UAAU,MAAM;AAAA,EAChC;AAAA,EACA,OAAO,EAAE,MAAM,QAAQ,QAAQ,KAAK;AAAA;AAO/B,SAAS,UAAU,CAAC,SAA0B;AAAA,EACnD,IAAI,OAAO,YAAY;AAAA,IAAU,OAAO;AAAA,EACxC,IAAI,CAAC,MAAM,QAAQ,OAAO;AAAA,IAAG,OAAO;AAAA,EACpC,MAAM,MAAgB,CAAC;AAAA,EACvB,WAAW,SAAS,SAAS;AAAA,IAC3B,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAAA,MAAG;AAAA,IACjE,MAAM,IAAI;AAAA,IACV,IACE,EAAE,SAAS,UACX,EAAE,SAAS,gBACX,EAAE,SAAS,iBACV,EAAE,QAAQ,QAAQ,UAAU,GAC7B;AAAA,MACA,IAAI,KAAK,EAAE,QAAQ,EAAE;AAAA,IACvB,EAAO,SAAI,EAAE,SAAS,SAAS;AAAA,MAC7B,IAAI,KAAK,SAAS;AAAA,IACpB;AAAA,EACF;AAAA,EACA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK;AAAA,CAAI;AAAA;AAuChC,SAAS,oBAAoB,CAClC,MACA,SACqB;AAAA,EACrB,MAAM,OAA2B,CAAC;AAAA,EAClC,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,YAAY,IAAI;AAAA,EACtB,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,SAAS,IAAI;AAAA,EACnB,IAAI,IAAI;AAAA,EAER,WAAW,OAAO,MAAM;AAAA,IACtB,KAAK;AAAA,IACL,IAAI,IAAI;AAAA,MAAO,OAAO,IAAI,IAAI,QAAQ,OAAO,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AAAA,IACrE,MAAM,UAAU,IAAI,WAAW;AAAA,IAC/B,IAAI;AAAA,IAEJ,IACE,IAAI,SAAS,WACZ,IAAI,aAAa,iBAAiB,IAAI,aAAa,oBACpD;AAAA,MACA,MAAM,OAAO,QAAQ,UAAU;AAAA,MAC/B,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,IAAI,wBAAwB,KAAK,CAAC,WAAW,KAAK,WAAW,MAAM,CAAC,GAAG;AAAA,QACrE;AAAA,MACF;AAAA,MACA,SAAS,EAAE,MAAM,QAAQ,QAAQ;AAAA,IACnC,EAAO,SACL,IAAI,SAAS,eACb,IAAI,aAAa,sBACjB;AAAA,MACA,IAAI,CAAC,QAAQ,KAAK;AAAA,QAAG;AAAA,MACrB,SAAS,EAAE,MAAM,aAAa,QAAQ;AAAA,IACxC,EAAO,SAAI,IAAI,SAAS,aAAa;AAAA,MACnC,IAAI,CAAC,QAAQ,KAAK;AAAA,QAAG;AAAA,MACrB,SAAS,EAAE,MAAM,aAAa,QAAQ;AAAA,IACxC,EAAO,SAAI,IAAI,SAAS,YAAY;AAAA,MAClC,MAAM,WAAW,IAAI,cAAc,QAAQ;AAAA,MAC3C,IAAI,UAAU;AAAA,MACd,IAAI,QAAQ,IAAI,OAAO,GAAG;AAAA,QACxB,IAAI,IAAI;AAAA,QACR,OAAO,QAAQ,IAAI,GAAG,aAAa,GAAG;AAAA,UAAG,KAAK;AAAA,QAC9C,UAAU,GAAG,aAAa;AAAA,MAC5B;AAAA,MACA,QAAQ,IAAI,OAAO;AAAA,MACnB,MAAM,UAAU,UAAU,IAAI,QAAQ,KAAK,CAAC;AAAA,MAC5C,QAAQ,KAAK,EAAE,SAAS,UAAU,MAAM,CAAC;AAAA,MACzC,UAAU,IAAI,UAAU,OAAO;AAAA,MAC/B,QAAQ,SAAS,WAAW,IAAI,iBAAiB,IAAI;AAAA,MACrD,SAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,YAAY;AAAA,UACV,EAAE,IAAI,SAAS,MAAM,IAAI,YAAY,gBAAgB,KAAK;AAAA,QAC5D;AAAA,MACF;AAAA,IACF,EAAO,SAAI,IAAI,SAAS,eAAe;AAAA,MACrC,MAAM,UAAU,UAAU,IAAI,IAAI,cAAc,EAAE;AAAA,MAClD,MAAM,QAAQ,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ;AAAA,MAC9C,IAAI,CAAC;AAAA,QAAO;AAAA,MACZ,MAAM,WAAW;AAAA,MACjB,SAAS;AAAA,QACP,MAAM;AAAA,QACN,cAAc,MAAM;AAAA,QACpB,SAAS,aAAa,SAAS,qBAAqB;AAAA,MACtD;AAAA,IACF,EAAO;AAAA,MACL;AAAA;AAAA,IAGF,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,cAAc,QAAQ,CAAC,OAAO,MAAM,GAAG,QAAQ,CAAC,GAAG;AAAA,MACrD,QAAQ,IAAI,KAAK,QAAQ,EAAE;AAAA,IAC7B;AAAA,IACA,KAAK,KAAK,MAAM;AAAA,EAClB;AAAA,EAEA,MAAM,eAAe,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAAA,EACpD,WAAW,YAAY,CAAC,QAAQ,WAAW,GAAY;AAAA,IACrD,IAAI,CAAC,aAAa,IAAI,QAAQ,GAAG;AAAA,MAC/B,OAAO,EAAE,QAAQ,cAAc,mBAAmB;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,MAAM,OAAyB,EAAE,MAAM,QAAQ,QAAQ,QAAQ,OAAO;AAAA,EACtE,IAAI,QAAQ;AAAA,IAAK,KAAK,MAAM,QAAQ;AAAA,EACpC,IAAI,QAAQ;AAAA,IAAW,KAAK,aAAa,QAAQ;AAAA,EACjD,IAAI,QAAQ,QAAQ;AAAA,EACpB,IAAI,CAAC,SAAS,OAAO,OAAO,GAAG;AAAA,IAE7B,MAAM,SAAS,CAAC,GAAG,OAAO,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AAAA,IAC/D,QAAQ,OAAO,KAAK;AAAA,EACtB;AAAA,EACA,IAAI;AAAA,IAAO,KAAK,QAAQ;AAAA,EAExB,MAAM,SAAS,eACb,KAAK,QACL,SACA,QAAQ,aAAa,MACrB,QAAQ,mBAAmB,IAC7B;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,IACpC,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI;AAAA,MAAQ,OAAO,YAAY,OAAO;AAAA,EACxC;AAAA,EACA,MAAM,UAAU,CAAC,MAAM,GAAG,IAAI;AAAA,EAE9B,MAAM,UAAU,gBAAgB,OAAO;AAAA,EACvC,IAAI;AAAA,IAAS,OAAO,EAAE,QAAQ,WAAW,UAAU;AAAA,EACnD,OAAO,EAAE,QAAQ,MAAM,QAAQ;AAAA;AAO1B,SAAS,eAAe,CAAC,SAA4C;AAAA,EAC1E,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO;AAAA,EACjC,MAAM,UAAU,IAAI;AAAA,EACpB,SAAS,IAAI,EAAG,IAAI,QAAQ,QAAQ,KAAK;AAAA,IACvC,MAAM,MAAM,QAAQ;AAAA,IACpB,IAAI,CAAC;AAAA,MAAK,OAAO,UAAU;AAAA,IAC3B,MAAM,OAAO,IAAI;AAAA,IACjB,IAAI,SAAS,QAAQ;AAAA,MACnB,IAAI,MAAM;AAAA,QAAG,OAAO,UAAU;AAAA,MAC9B,IAAI,CAAC,IAAI;AAAA,QAAQ,OAAO;AAAA,MACxB;AAAA,IACF;AAAA,IACA,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,OAAO,OAAO,YAAY,CAAC,MAAM,KAAK,EAAE,GAAG;AAAA,MAC7C,OAAO,UAAU,oBAAoB,KAAK,UAAU,EAAE;AAAA,IACxD;AAAA,IACA,IAAI,SAAS,UAAU,SAAS,aAAa;AAAA,MAC3C,IAAI,OAAO,IAAI,YAAY,UAAU;AAAA,QACnC,OAAO,UAAU,MAAM;AAAA,MACzB;AAAA,IACF,EAAO,SAAI,SAAS,aAAa;AAAA,MAC/B,MAAM,QAAQ,IAAI;AAAA,MAClB,IAAI,UAAU,WAAW;AAAA,QACvB,IAAI,IAAI,YAAY,QAAQ,IAAI,YAAY,WAAW;AAAA,UACrD,OAAO,UAAU;AAAA,QACnB;AAAA,QACA,IAAI,MAAM,WAAW;AAAA,UAAG,OAAO,UAAU;AAAA,QACzC,WAAW,QAAQ,OAAO;AAAA,UACxB,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM;AAAA,YAC1B,OAAO,UAAU;AAAA,UACnB;AAAA,UACA,IAAI,OAAO,KAAK,SAAS,UAAU;AAAA,YACjC,OAAO,UAAU;AAAA,UACnB;AAAA,UACA,IAAI;AAAA,YACF,KAAK,MAAM,KAAK,IAAI;AAAA,YACpB,MAAM;AAAA,YACN,OAAO,UAAU;AAAA;AAAA,UAEnB,QAAQ,IAAI,KAAK,EAAE;AAAA,QACrB;AAAA,MACF,EAAO,SAAI,EAAE,OAAO,IAAI,YAAY,YAAY,IAAI,UAAU;AAAA,QAC5D,OAAO,UAAU;AAAA,MACnB;AAAA,IACF,EAAO,SAAI,SAAS,QAAQ;AAAA,MAC1B,IAAI,CAAC,IAAI,gBAAgB,CAAC,QAAQ,IAAI,IAAI,YAAY,GAAG;AAAA,QACvD,OAAO,UAAU;AAAA,MACnB;AAAA,MACA,IAAI,OAAO,IAAI,YAAY,UAAU;AAAA,QACnC,OAAO,UAAU;AAAA,MACnB;AAAA,IACF,EAAO;AAAA,MACL,OAAO,UAAU,mBAAmB,KAAK,UAAU,IAAI;AAAA;AAAA,EAE3D;AAAA,EACA,OAAO;AAAA;;;ACjaF,SAAS,mBAAmB,CAAC,MAAsB;AAAA,EACxD,OAAO,KACJ,QACC,yCACA,4BACF,EACC,QAAQ,6BAA6B,0BAA0B;AAAA;;;ACgBpE,SAAS,oBAAoB,CAAC,UAAsC;AAAA,EAClE,MAAM,YAA0B,CAAC;AAAA,EACjC,MAAM,gBAAgB,IAAI;AAAA,EAC1B,WAAW,OAAO,UAAU;AAAA,IAC1B,MAAM,OAAO,UAAU,UAAU,SAAS;AAAA,IAC1C,IACE,SAAS,cACR,IAAI,SAAS,eAAe,IAAI,SAAS,gBAC1C,KAAK,SAAS,IAAI,QAClB,KAAK,SAAS,IAAI,MAClB;AAAA,MACA,KAAK,WAAW,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,IACA,IAAI,IAAI,SAAS,aAAa;AAAA,MAC5B,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,IAAI,QAAQ,IAAI;AAAA,MAClD,MAAM,gBAAgB,cAAc,IAAI,GAAG;AAAA,MAC3C,MAAM,QACJ,IAAI,gBAAgB,KAAK,UAAU,IAAI,aAAa,CAAC,CAAC;AAAA,MACxD,IAAI,kBAAkB,WAAW;AAAA,QAC/B,MAAM,WAAW,UAAU;AAAA,QAC3B,IAAI,UAAU,SAAS,aAAa;AAAA,UAClC,MAAM,MAAM,GAAG,SAAS,gBAAgB,KAAK;AAAA,UAC7C,IAAI,YAAqC,EAAE,IAAI;AAAA,UAC/C,IAAI;AAAA,YACF,MAAM,SAAkB,KAAK,MAAM,GAAG;AAAA,YACtC,IAAI,UAAU,OAAO,WAAW,YAAY,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,cAClE,YAAY;AAAA,YACd;AAAA,YACA,MAAM;AAAA,UAGR,SAAS,eAAe;AAAA,UACxB,SAAS,YAAY;AAAA,UACrB,IAAI,SAAS,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,YACrD,SAAS,WAAW,IAAI;AAAA,UAC1B;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,cAAc,IAAI,KAAK,UAAU,MAAM;AAAA,MACvC,UAAU,KAAK,KAAK,KAAK,cAAc,MAAM,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,IAAI,IAAI,SAAS,eAAe;AAAA,MAC9B,WAAW,OAAO,cAAc,KAAK,GAAG;AAAA,QACtC,IAAI,IAAI,SAAS,IAAI,IAAI,YAAY;AAAA,UAAG,cAAc,OAAO,GAAG;AAAA,MAClE;AAAA,IACF;AAAA,IACA,UAAU,KACR,IAAI,SAAS,eAAe,IAAI,SAAS,cACrC,KAAK,IAAI,IACT,GACN;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,oBAAoB,CAClC,YACA,UAC2B;AAAA,EAC3B,MAAM,OAAoB;AAAA,IACxB;AAAA,MACE,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS,oBAAoB,UAAU;AAAA,MACvC,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,WAAW,OAAO,qBAAqB,QAAQ,GAAG;AAAA,IAChD,QAAQ,IAAI;AAAA,WACL;AAAA,QACH,IAAI,IAAI,SAAS;AAAA,UACf,KAAK,KAAK;AAAA,YACR,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,oBAAoB,IAAI,OAAO;AAAA,YACxC,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA;AAAA,WACG;AAAA,QACH,IAAI,IAAI,SAAS;AAAA,UACf,KAAK,KAAK;AAAA,YACR,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,oBAAoB,IAAI,OAAO;AAAA,YACxC,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA;AAAA,WACG;AAAA,QACH,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,UACV,WAAW;AAAA,UACX,UAAU,IAAI;AAAA,UACd,YAAY,IAAI;AAAA,UAChB,eAAe,oBACb,IAAI,gBAAgB,KAAK,UAAU,IAAI,aAAa,CAAC,CAAC,CACxD;AAAA,QACF,CAAC;AAAA,QACD;AAAA,WACG,eAAe;AAAA,QAClB,MAAM,UACJ,IAAI,WAAW,CAAC,UAAU,KAAK,IAAI,OAAO,IACtC,UAAU,oBAAoB,IAAI,OAAO,MACzC,oBAAoB,IAAI,OAAO;AAAA,QACrC,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,UACV;AAAA,UACA,WAAW;AAAA,UACX,YAAY,IAAI;AAAA,QAClB,CAAC;AAAA,QACD;AAAA,MACF;AAAA;AAAA,QAEE;AAAA;AAAA,EAEN;AAAA,EACA,IAAI,KAAK,UAAU;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,SAAS,qBAAqB,MAAM,EAAE,QAAQ,kBAAkB,CAAC;AAAA,EACvE,OAAO,OAAO,WAAW,OAAQ,OAAO,WAAW,OAAQ;AAAA;;;APhH7D,eAAsB,mBAAmB,CAAC,QAwBL;AAAA,EACnC,MAAM,MAAM,OAAO,QAAQ,MAAM;AAAA,EAGjC,MAAM,cAAc,OAAO,YAAY,OACrC,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,KAAK,EAAE,MAC9C;AAAA,EACA,IAAI,YAAY,WAAW,GAAG;AAAA,IAC5B,MAAM,WAAmC;AAAA,MACvC,SAAS;AAAA,MACT,QACE;AAAA,MACF,aAAa;AAAA,IACf;AAAA,IACA,MAAM,gBAAe,MAAK,OAAO,SAAS,WAAW;AAAA,IACrD,MAAM,OAAM,eAAc,EAAE,WAAW,KAAK,CAAC;AAAA,IAC7C,MAAM,WACJ,MAAK,eAAc,aAAa,GAChC,KAAK,UACH;AAAA,MACE,SAAS,OAAO;AAAA,MAChB,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,QAAQ,CAAC;AAAA,MACT,QAAQ,SAAQ;AAAA,IAClB,GACA,MACA,CACF,GACA,OACF;AAAA,IACA,MAAM,YAAY,MAAK,eAAc,QAAQ;AAAA,IAC7C,MAAM,mBAAmB,OAAO,WAAW,SAAS;AAAA,IACpD,MAAM,yBACJ,WACA,OAAO,YAAY,uBAAuB,CAAC,CAC7C;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,eAAe,MAAK,OAAO,SAAS,WAAW;AAAA,EACrD,MAAM,OAAM,cAAc,EAAE,WAAW,KAAK,CAAC;AAAA,EAC7C,MAAM,QAAQ,MAAM,kBAAkB,OAAO,WAAW,OAAO,WAAW;AAAA,EAC1E,MAAM,eAAe,MAAM,UAAU,OAAO,WAAW,CAAC,aAAa,MAAM,CAAC;AAAA,EAE5E,MAAM,cAAc,0BAA0B;AAAA,IAC5C,YAAY,MAAK,OAAO,SAAS,SAAS;AAAA,IAC1C,YAAY,OAAO,YAAY;AAAA,IAC/B,WAAW,OAAO;AAAA,OACd,OAAO,cAAc,EAAE,aAAa,OAAO,YAAY,IAAI,CAAC;AAAA,EAClE,CAAC;AAAA,EACD,MAAM,aAAa,OAAO,kBACtB,GAAG,OAAO,gBAAgB,KAAK;AAAA;AAAA,EAAQ,gBACvC;AAAA,EAEJ,IACE,2BAA2B,YAAY,yCACzC;AAAA,EACA,MAAM,gBAAgB,YACpB,QAEI,MAAM,UAAU,OAAO,WAAW;AAAA,IAChC;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,CAAC,EAAE,MAAM,MAAM,GAAG,GAClB,KAAK,KAAK,GACd;AAAA,EAIF,MAAM,YAAY;AAAA,IAChB,YAAY,OAAO;AAAA,IACnB,kBAAkB,OAAO;AAAA,IACzB,2BAA2B;AAAA,EAC7B;AAAA,EACA,IAAI,MAAM,MAAM,qBAAqB,OAAO,QAAQ;AAAA,IAClD,SAAS,OAAO;AAAA,IAChB;AAAA,IAGA,KAAK,SAAQ,OAAO,SAAS;AAAA,IAC7B,OAAO;AAAA,IACP,KAAK;AAAA,OACD,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,IACjD,YAAY;AAAA,EACd,CAAC;AAAA,EAID,MAAM,SAAgD;AAAA,IACpD,EAAE,QAAQ,YAAY,IAAI;AAAA,EAC5B;AAAA,EACA,SACM,QAAQ,EACZ,QAAQ,KACR,CAAC,OAAO,QAAQ,WAChB,IAAI,WACJ,IAAI,mBAAmB,QACtB,MAAM,cAAc,MAAO,GAC5B,SACA;AAAA,IACA,IACE,wEACF;AAAA,IACA,MAAM,MAAM,qBAAqB,OAAO,QAAQ;AAAA,MAC9C,SAAS,OAAO;AAAA,MAChB,YAAY;AAAA,MACZ,KAAK,SAAQ,OAAO,SAAS;AAAA,MAC7B,OAAO;AAAA,MACP,sBAAsB,IAAI;AAAA,MAC1B,KAAK;AAAA,SACD,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,MACjD,YAAY;AAAA,IACd,CAAC;AAAA,IACD,OAAO,KAAK,EAAE,QAAQ,4BAA4B,IAAI,CAAC;AAAA,EACzD;AAAA,EAEA,MAAM,UAAU,OAAO,QACrB,CAAC,SAAS,qBAAqB,KAAK,QAAQ,KAAK,IAAI,QAAQ,KAAK,CAAC,CACrE;AAAA,EACA,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,MAAM,WACJ,MAAK,cAAc,iBAAiB,GACpC,KAAK,UAAU,SAAS,MAAM,CAAC,GAC/B,OACF;AAAA,EACF;AAAA,EACA,MAAM,iBAAiB,CAAC,GAAG,MAAM,EAC9B,QAAQ,EACR,KAAK,CAAC,SAAS,KAAK,IAAI,OAAO,GAAG;AAAA,EACrC,MAAM,qBAAqB,mBAAmB;AAAA,EAM9C,IAAI;AAAA,EACJ,IAAK,MAAM,cAAc,MAAO,KAAK,oBAAoB;AAAA,IACvD,MAAM,SAAS,MAAM,UAAU,OAAO,WAAW;AAAA,MAC/C;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EAAE,MAAM,MAAM,EAAE;AAAA,IACjB,IAAI,WAAW,IAAI;AAAA,MACjB,MAAM,sBAAsB,MAAM,qBAChC,OAAO,WACP,cACA,OAAO,aACP,EAAE,qBAAqB,MAAM,oBAAoB,CACnD;AAAA,MACA,IAAI,CAAC,oBAAoB,OAAO;AAAA,QAC9B,gBACE,+BAA+B,oBAAoB,WAAW,YAC9D,sCAAsC,oBAAoB,WACvD,IAAI,CAAC,cAAc,GAAG,UAAU,SAAS,UAAU,SAAS,EAC5D,KAAK,IAAI;AAAA,MAChB,EAAO;AAAA,QACL,IAAI;AAAA,UACF,MAAM,UAAU,OAAO,WAAW,CAAC,OAAO,IAAI,CAAC;AAAA,UAC/C,MAAM,UAAU,OAAO,WAAW;AAAA,YAChC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,8BAA8B,YAAY;AAAA,UAC5C,CAAC;AAAA,UACD,IACE,iEACF;AAAA,UACA,OAAO,OAAO;AAAA,UACd,gBACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA;AAAA;AAAA,IAG7D;AAAA,EACF;AAAA,EACA,MAAM,SAAS,MAAM,UAAU,OAAO,WAAW;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,CAAC,EAAE,MAAM,MAAM,EAAE;AAAA,EACjB,MAAM,WAAW,MAAM,UAAU,OAAO,WAAW;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,CAAC,EAAE,MAAM,MAAM,EAAE;AAAA,EACjB,MAAM,WAAU,MAAK,cAAc,aAAa,GAAG,GAAG;AAAA,GAAY,OAAO;AAAA,EACzE,MAAM,WAAU,MAAK,cAAc,aAAa,GAAG,GAAG;AAAA,GAAc,OAAO;AAAA,EAE3E,MAAM,cAAc,SAAS,OAAO,MAAM;AAAA,CAAI,EAAE,SAAS;AAAA,EACzD,MAAM,SAAS,cAAc;AAAA,EAC7B,MAAM,cAAc,MAAM,qBACxB,OAAO,WACP,cACA,OAAO,aACP,EAAE,qBAAqB,MAAM,oBAAoB,CACnD;AAAA,EACA,MAAM,cAAc,YAAY,QAC5B,YACA,+BAA+B,YAAY,WAAW,qBAAqB,YAAY,WACpF,IAAI,CAAC,cAAc,GAAG,UAAU,SAAS,UAAU,SAAS,EAC5D,KAAK,IAAI;AAAA,EAChB,MAAM,UAAmC;AAAA,IACvC,SACE,sBAAsB,UAAU,YAAY,SAAS,CAAC;AAAA,IACxD,QAAQ,IAAI,UAAU,gBAAgB,UAAU;AAAA,IAChD,OACE,kBACC,CAAC,qBAAqB,IAAI,QAAQ,cACnC,gBACC,SACG,YACA;AAAA,IACN,gBAAgB,IAAI,kBAAkB;AAAA,IACtC;AAAA,EACF;AAAA,EACA,MAAM,WACJ,MAAK,cAAc,aAAa,GAChC,KAAK,UACH;AAAA,IACE,SAAS,OAAO;AAAA,IAChB,gBAAgB,QAAQ;AAAA,IACxB,SAAS,QAAQ;AAAA,IACjB,OAAO,QAAQ;AAAA,IACf,YAAY,OAAO,OACjB,CAAC,OAAO,SAAS,QAAQ,KAAK,IAAI,YAClC,CACF;AAAA,IACA,QAAQ,YAAY,IAAI,CAAC,MAAM,SAAS,EAAE,YAAY;AAAA,IACtD,QAAQ,QAAQ;AAAA,EAClB,GACA,MACA,CACF,GACA,OACF;AAAA,EACA,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,YAAY,MAAK,cAAc,QAAQ;AAAA,IAC7C,MAAM,mBAAmB,OAAO,WAAW,SAAS;AAAA,IACpD,MAAM,yBACJ,WACA,OAAO,YAAY,uBAAuB,CAAC,CAC7C;AAAA,EACF;AAAA,EACA,IACE,eAAe,QAAQ,UAAU,SAAS,WAAW,QAAQ,SAAS,uBACpE,IAAI,kCACR;AAAA,EACA,OAAO;AAAA;;;AQ5ST,kBAAS,qBAAO;AAChB,iBAAS;;;ACRF,SAAS,UAAU,CAAC,SAAoC;AAAA,EAC7D,OAAO,GAAG,QAAQ,WAAW,QAAQ;AAAA;AAIhC,SAAS,eAAe,CAAC,SAAoC;AAAA,EAClE,MAAM,OAAO,CAAC,UAAkB,MAAM,QAAQ,oBAAoB,GAAG;AAAA,EACrE,OAAO,GAAG,KAAK,QAAQ,OAAO,KAAK,KAAK,QAAQ,SAAS;AAAA;;;AD4D3D,eAAe,WAAW,CACxB,QACA,OACgC;AAAA,EAChC,MAAM,MAAM,OAAO,QAAQ,MAAM;AAAA,EACjC,MAAM,WAAW,MAAK,OAAO,SAAS,WAAW,OAAO,MAAM,KAAK,CAAC;AAAA,EACpE,MAAM,WAAW,MAAK,UAAU,OAAO;AAAA,EACvC,MAAM,YAAY,MAAK,UAAU,QAAQ;AAAA,EACzC,MAAM,aAAa,MAAK,UAAU,aAAa;AAAA,EAC/C,MAAM,OAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,EACzC,MAAM,eAAe,MAAM,gBAAgB,OAAO,WAAW,SAAS;AAAA,EACtE,MAAM,QAAQ,MAAM,yBAClB,OAAO,WACP,WACA,OAAO,WACT;AAAA,EAKA,MAAM,mBAA6B,CAAC;AAAA,EACpC,WAAW,WAAW,MAAM,UAAU;AAAA,IACpC,MAAM,MAAM,GAAG,QAAQ,WAAW,QAAQ;AAAA,IAC1C,MAAM,OAAO,OAAO,oBAAoB,IAAI,GAAG;AAAA,IAC/C,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,+CAA+C,KAAK;AAAA,IACtE;AAAA,IACA,MAAM,WAAW,gBAAgB,OAAO;AAAA,IACxC,MAAM,WAAU,MAAK,UAAU,QAAQ,GAAG,MAAM,OAAO;AAAA,IACvD,iBAAiB,KAAK,QAAQ;AAAA,EAChC;AAAA,EAEA,MAAM,aAAa,0BAA0B;AAAA,IAC3C,YAAY,MAAM;AAAA,IAClB;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,WAAW,EAAE,OAAO,MAAM,WAAW,KAAK,MAAM,QAAQ;AAAA,OACpD,OAAO,cAAc,EAAE,aAAa,OAAO,YAAY,IAAI,CAAC;AAAA,EAClE,CAAC;AAAA,EAED,MAAM,QAAQ,iBAAiB,MAAM;AAAA,EACrC,IACE,IAAI,UAAU,MAAM,SAAS,uBAAuB,MAAM,uBACxD,GAAG,MAAM,eAAc,MAAM,SACjC;AAAA,EAMA,MAAM,uBACJ;AAAA,EAIF,MAAM,YAAY;AAAA,IAChB,YAAY;AAAA,IACZ,kBAAkB;AAAA,IAClB,2BAA2B;AAAA,IAG3B,uBAAuB,OAAO;AAAA,EAChC;AAAA,EACA,IAAI,MAAM,MAAM,qBAAqB,OAAO,QAAQ;AAAA,IAClD,SAAS,OAAO;AAAA,IAChB;AAAA,IACA,KAAK;AAAA,IACL;AAAA,IACA,KAAK;AAAA,IACL,cAAc,CAAC;AAAA,OACX,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,IACjD,YAAY;AAAA,EACd,CAAC;AAAA,EACD,SACM,QAAQ,EACZ,CAAC,OAAO,QAAQ,WAChB,CAAC,IAAI,WACL,IAAI,UAAU,aACd,qBAAqB,KAAK,IAAI,KAAK,KACnC,QAAQ,GACR,SACA;AAAA,IACA,MAAM,UAAU,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,IAAI;AAAA,IACrD,IAAI,IAAI,yDAAyD,WAAW;AAAA,IAC5E,MAAM,IAAI,QAAQ,CAAC,aAAY,WAAW,UAAS,OAAO,CAAC;AAAA,IAC3D,MAAM,MAAM,qBAAqB,OAAO,QAAQ;AAAA,MAC9C,SAAS,OAAO;AAAA,MAChB;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL,cAAc,CAAC;AAAA,SACX,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,MACjD,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAKA,MAAM,SAAgD;AAAA,IACpD,EAAE,QAAQ,YAAY,IAAI;AAAA,EAC5B;AAAA,EACA,MAAM,sBAAsB,MAC1B,kGAAkG,KAChG,IAAI,MACN;AAAA,EACF,SACM,QAAQ,EACZ,QAAQ,KACR,CAAC,OAAO,QAAQ,WAChB,IAAI,WACJ,IAAI,mBAAmB,MACvB,SACA;AAAA,IACA,MAAM,QAAQ,MAAM,kBAAkB,WAAW,YAAY;AAAA,IAC7D,IAAI,MAAM,cAAc,KAAK,MAAM;AAAA,MAAO;AAAA,IAI1C,IAAI,oBAAoB;AAAA,MAAG;AAAA,IAC3B,MAAM,iBAAiB,8BAA8B;AAAA,MACnD,WAAW;AAAA,IACb,CAAC;AAAA,IACD,IAAI,IAAI,gEAA+D;AAAA,IACvE,MAAM,MAAM,qBAAqB,OAAO,QAAQ;AAAA,MAC9C,SAAS,OAAO;AAAA,MAChB,YAAY;AAAA,MACZ,KAAK;AAAA,MACL;AAAA,MACA,sBAAsB,IAAI;AAAA,MAC1B,KAAK;AAAA,MACL,cAAc,CAAC;AAAA,SACX,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,MACjD,YAAY;AAAA,IACd,CAAC;AAAA,IACD,OAAO,KAAK,EAAE,QAAQ,gBAAgB,IAAI,CAAC;AAAA,EAC7C;AAAA,EAEA,MAAM,UAAU,OAAO,QACrB,CAAC,SAAS,qBAAqB,KAAK,QAAQ,KAAK,IAAI,QAAQ,KAAK,CAAC,CACrE;AAAA,EACA,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,MAAM,WACJ,MAAK,UAAU,iBAAiB,GAChC,KAAK,UAAU,SAAS,MAAM,CAAC,GAC/B,OACF;AAAA,EACF;AAAA,EACA,MAAM,aAAa,UAAU,MAAM,kBACjC,WACA,YACF;AAAA,EACA,IAAI,OAAO;AAAA,IAKT,IAAI;AAAA,MACF,MAAM,UAAU,WAAW,CAAC,OAAO,IAAI,CAAC;AAAA,MACxC,MAAM,UAAU,WAAW;AAAA,QACzB;AAAA,QACA;AAAA,QACA,qBAAqB,MAAM;AAAA,MAC7B,CAAC;AAAA,MACD,eAAe;AAAA,MACf,MAAM;AAAA,EAIV;AAAA,EAGA,IAAI;AAAA,IACF,MAAM,QAAQ,MAAM,UAAU,WAAW,CAAC,QAAQ,cAAc,MAAM,CAAC;AAAA,IACvE,MAAM,WAAU,MAAK,UAAU,YAAY,GAAG,GAAG;AAAA,GAAW,OAAO;AAAA,IACnE,MAAM;AAAA,EAIR,MAAM,cAAc,MAAM,qBACxB,WACA,cACA,OAAO,aACP,EAAE,qBAAqB,MAAM,oBAAoB,CACnD;AAAA,EACA,MAAM,cAAc,YAAY,QAC5B,YACA,+BAA+B,YAAY,WAAW,qBAAqB,YAAY,WACpF,IAAI,CAAC,cAAc,GAAG,UAAU,SAAS,UAAU,SAAS,EAC5D,KAAK,IAAI;AAAA,EAEhB,MAAM,SAAgC;AAAA,IACpC,YAAY,MAAM;AAAA,IAClB,SAAS,IAAI;AAAA,IACb,gBAAgB,IAAI,kBAAkB;AAAA,IACtC,YAAY,MAAM,SAAS,IAAI,CAAC,MAAM,GAAG,EAAE,WAAW,EAAE,WAAW;AAAA,IACnE,WAAW,EAAE,OAAO,MAAM,WAAW,KAAK,MAAM,QAAQ;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,IAAI,WAAW,YAAY;AAAA,IACpC,OAAO,IAAI,SAAS;AAAA,IACpB;AAAA,IACA;AAAA,IACA,YAAY,IAAI;AAAA,EAClB;AAAA,EACA,MAAM,WACJ,YACA,KAAK,UAAU,KAAK,QAAQ,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,GACzD,OACF;AAAA,EACA,IACE,IAAI,UAAU,OAAO,UAAU,SAAS,WAAW,OAAO,SAAS,uBACjE,IAAI,wBAAwB,QAAQ,6BAA6B,KACrE;AAAA,EACA,OAAO;AAAA;AAIT,eAAsB,mBAAmB,CACvC,QACkC;AAAA,EAClC,MAAM,UAAmC,CAAC;AAAA,EAC1C,IAAI,OAAO;AAAA,EACX,MAAM,cAAc,KAAK,IACvB,GACA,KAAK,IAAI,OAAO,aAAa,OAAO,QAAQ,MAAM,CACpD;AAAA,EACA,MAAM,UAAU,MAAM,KAAK,EAAE,QAAQ,YAAY,GAAG,OAAO,GAAG,gBAAgB;AAAA,IAG5E,MAAM,IAAI,QAAQ,CAAC,aAAY,WAAW,UAAS,cAAc,IAAI,CAAC;AAAA,IACtE,OAAO,CAAC,OAAO,QAAQ,WAAW,OAAO,OAAO,QAAQ,QAAQ;AAAA,MAC9D,MAAM,QAAQ,OAAO,QAAQ;AAAA,MAC7B,IAAI,CAAC;AAAA,QAAO;AAAA,MACZ,QAAQ,KAAK,MAAM,YAAY,QAAQ,KAAK,CAAC;AAAA,IAC/C;AAAA,GACD;AAAA,EACD,MAAM,QAAQ,IAAI,OAAO;AAAA,EACzB,QAAQ,KAAK,CAAC,GAAG,MAAM,EAAE,aAAa,EAAE,UAAU;AAAA,EAClD,OAAO;AAAA;;;AE/ST,kBAAS,oBAAO,mBAAU,oBAAM;AAChC;AACA,iBAAS;AA4DT,SAAS,eAAe,CAAC,SAAiB,WAA4B;AAAA,EACpE,OAAO,MAAK,aAAa,MAAK,QAAQ,GAAG,UAAU,QAAQ,GAAG,OAAO;AAAA;AAGvE,SAAS,UAAU,CACjB,SACA,WACkC;AAAA,EAClC,MAAM,OAAO,gBAAgB,SAAS,SAAS;AAAA,EAC/C,MAAM,WAAW,MAAK,MAAM,OAAO;AAAA,EACnC,OAAO;AAAA,IACL;AAAA,IACA,WAAW,MAAK,MAAM,QAAQ;AAAA,IAC9B;AAAA,IACA,SAAS,MAAK,UAAU,MAAM;AAAA,IAC9B,YAAY,MAAK,UAAU,YAAY;AAAA,EACzC;AAAA;AAGF,eAAsB,oBAAoB,CACxC,OACe;AAAA,EACf,MAAM,WACJ,MAAM,YACN,GAAG,KAAK,UAAU,MAAM,QAAQ,MAAM,CAAC;AAAA,GACvC,OACF;AAAA;AAGF,eAAsB,cAAc,CAClC,SACA,UAAkC,CAAC,GACR;AAAA,EAC3B,MAAM,QAAQ,WAAW,SAAS,QAAQ,SAAS;AAAA,EACnD,MAAM,MAAM,MAAM,UAAS,MAAM,YAAY,OAAO,EAAE,MAAM,MAAM,IAAI;AAAA,EACtE,IAAI,QAAQ,MAAM;AAAA,IAChB,MAAM,IAAI,MACR,GAAG,sDAAsD,MAAM,wCACjE;AAAA,EACF;AAAA,EACA,MAAM,SAAS,KAAK,MAAM,GAAG;AAAA,EAC7B,IAAI,OAAO,mBAAmB,QAAQ,CAAC,OAAO,OAAO,QAAQ;AAAA,IAC3D,MAAM,IAAI,MACR,GAAG,qFACL;AAAA,EACF;AAAA,EACA,MAAM,SAA2B;AAAA,OAC5B;AAAA,IACH,gBAAgB;AAAA,IAChB,WAAW,OAAO,aAAa,IAAI,KAAK,CAAC,EAAE,YAAY;AAAA,IACvD,OAAO;AAAA,MACL,aAAa,OAAO,MAAM,eAAe,CAAC;AAAA,MAC1C,QAAQ,yBAAyB,OAAO,MAAM,MAAM;AAAA,IACtD;AAAA,EACF;AAAA,EACA,OAAO,KAAK,OAAO,OAAO;AAAA;AAI5B,eAAsB,sBAAsB,CAC1C,OACiC;AAAA,EACjC,MAAM,yBACJ,MAAM,WACN,MAAM,OAAO,MAAM,WACrB;AAAA,EACA,MAAM,2BAA2B,KAAK;AAAA,EACtC,OAAO,kBAAkB,MAAM,WAAW,MAAM,OAAO,MAAM,MAAM;AAAA;AAGrE,eAAe,0BAA0B,CACvC,OACe;AAAA,EACf,MAAM,iBAA2B,CAAC;AAAA,EAClC,WAAW,QAAQ,MAAM,OAAO,MAAM,OAAO,eAAe;AAAA,IAC1D,MAAM,UAAU,MAAM,UAAU,MAAM,WAAW;AAAA,MAC/C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EAAE,MAAM,MAAM,IAAI;AAAA,IACnB,IAAI,YAAY;AAAA,MAAM,eAAe,KAAK,IAAI;AAAA,EAChD;AAAA,EACA,IAAI,eAAe,SAAS,GAAG;AAAA,IAC7B,MAAM,IAAI,MACR,mEAAmE,eAAe,KAAK,IAAI,QACzF,wFACJ;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,MAAM,UAAU,MAAM,WAAW;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,IAAI,WAAW,IAAI;AAAA,IACjB,MAAM,IAAI,MACR;AAAA,EAAuD,QACzD;AAAA,EACF;AAAA;AAOF,eAAsB,cAAc,CAClC,QACA,UAAiC,CAAC,GACP;AAAA,EAC3B,MAAM,UACJ,QAAQ,WACP,MAAM,OAAO,YAAY;AAAA,OACpB,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,IAChD,MAAM,CAAC,kBAAkB;AAAA,EAC3B,CAAC;AAAA,EAEH,MAAM,QAAQ,WAAW,SAAS,QAAQ,SAAS;AAAA,EACnD,MAAM,WAAW,MAAM,UAAS,MAAM,YAAY,OAAO,EAAE,MAAM,MAAM,IAAI;AAAA,EAC3E,IAAI,aAAa,MAAM;AAAA,IACrB,MAAM,IAAI,MAAM,GAAG,+CAA+C;AAAA,EACpE;AAAA,EACA,MAAM,aAAa,MAAM,MAAK,MAAM,SAAS,EAAE,MAAM,MAAM,IAAI;AAAA,EAC/D,IAAI,CAAC,YAAY,YAAY,GAAG;AAAA,IAC9B,MAAM,IAAI,MACR,oCAAoC,MAAM,mDAC5C;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,QAAQ,SAAS,CAAC;AAAA,EACpC,MAAM,YAAY,MAAM,0BAA0B,MAAM,WAAW,SAAS;AAAA,EAC5E,IAAI,UAAU,MAAM,SAAS,GAAG;AAAA,IAC9B,MAAM,UAAU,MAAM,WAAW;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,GAAG,UAAU,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,IAC5C,CAAC;AAAA,IACD,MAAM,SAAS,MAAM,UAAU,MAAM,WAAW;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,IAAI,WAAW,IAAI;AAAA,MACjB,MAAM,UAAU,MAAM,WAAW;AAAA,QAC/B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,uBAAuB,WAAW,QAAQ,KAAK;AAAA,EAC9D,MAAM,OAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C,MAAM,QAA0B;AAAA,OAC3B;AAAA,IACH,QAAQ;AAAA,MACN,gBAAgB;AAAA,SACZ,QAAQ,OAAO,EAAE,MAAM,QAAQ,KAAK,IAAI,CAAC;AAAA,MAC7C,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,SAC9B,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,MAChD,OAAO;AAAA,QACL,aAAa,UAAU;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,qBAAqB,KAAK;AAAA,EAChC,MAAM,uBAAuB,KAAK;AAAA,EAClC,OAAO;AAAA;;;AC1OT,kBAAS,oBAAO,wBAAU;AAC1B,oBAAS,kBAAS;AAElB,IAAM,mBAAmB;AAKzB,eAAsB,gBAAgB,CACpC,UACuB;AAAA,EACvB,IAAI;AAAA,IACF,MAAM,MAAM,MAAM,UAAS,MAAK,UAAU,gBAAgB,GAAG,OAAO;AAAA,IACpE,MAAM,SAAkB,KAAK,MAAM,GAAG;AAAA,IACtC,OAAO,UAAU,OAAO,WAAW,WAC9B,SACD,CAAC;AAAA,IACL,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA;AAIZ,eAAsB,gBAAgB,CACpC,UACA,SACe;AAAA,EACf,MAAM,UAAU,MAAK,UAAU,gBAAgB;AAAA,EAC/C,MAAM,OAAM,SAAQ,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACjD,MAAM,WAAU,SAAS,GAAG,KAAK,UAAU,SAAS,MAAM,CAAC;AAAA,GAAO,OAAO;AAAA;;;ACgB3E,IAAM,kBAAkB;AAEjB,SAAS,cAAc,CAAC,MAAsB;AAAA,EACnD,OAAO,KAAK,KAAK,KAAK,SAAS,eAAe;AAAA;AAGhD,IAAM,mBAAmB,IAAI,IAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,uBAAuB,CACrC,OAC6B;AAAA,EAC7B,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EAClC,OAAO,MAAM,MAAM,CAAC,SAAS;AAAA,IAC3B,IAAI,SAAS,QAAQ,OAAO,SAAS,YAAY,MAAM,QAAQ,IAAI,GAAG;AAAA,MACpE,OAAO;AAAA,IACT;AAAA,IACA,MAAM,MAAM;AAAA,IACZ,IAAI,OAAO,IAAI,SAAS,YAAY,CAAC,iBAAiB,IAAI,IAAI,IAAI,GAAG;AAAA,MACnE,OAAO;AAAA,IACT;AAAA,IACA,IACE,IAAI,YAAY,aAChB,IAAI,YAAY,QAChB,OAAO,IAAI,YAAY,UACvB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,IAAI,cAAc,aAAa,OAAO,IAAI,cAAc,UAAU;AAAA,MACpE,OAAO;AAAA,IACT;AAAA,IACA,IAAI,IAAI,eAAe,WAAW;AAAA,MAChC,IAAI,CAAC,MAAM,QAAQ,IAAI,UAAU;AAAA,QAAG,OAAO;AAAA,MAC3C,WAAW,QAAQ,IAAI,YAAY;AAAA,QACjC,IAAI,SAAS,QAAQ,OAAO,SAAS;AAAA,UAAU,OAAO;AAAA,QACtD,MAAM,IAAI;AAAA,QACV,IACE,OAAO,EAAE,OAAO,YAChB,OAAO,EAAE,SAAS,YAClB,OAAO,EAAE,SAAS,UAClB;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,GACR;AAAA;;;ACvFH,eAAsB,kBAAkB,CACtC,QACA,SAMuB;AAAA,EACvB,MAAM,MAAM,QAAQ,QAAQ,MAAM;AAAA,EAOlC,IAAI,mBAAmB,QAAQ;AAAA,EAC/B,IAAI,CAAC,kBAAkB;AAAA,IACrB,mBAAmB,MAAM,OAAO,YAAY;AAAA,MAC1C,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,SACV,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,MAChD,MAAM,CAAC,mBAAmB,sBAAsB;AAAA,MAChD,QAAQ;AAAA,MACR,WAAW,CAAC;AAAA,MAGZ,cAAc,CAAC;AAAA,MACf,OAAO;AAAA,IACT,CAAC;AAAA,IACD,IAAI,uBAAuB,kBAAkB;AAAA,EAC/C;AAAA,EAEA,IAAI,oBAAoB,QAAQ;AAAA,EAChC,IAAI,CAAC,mBAAmB;AAAA,IACtB,oBAAoB,MAAM,OAAO,YAAY;AAAA,MAC3C,MAAM;AAAA,MACN,aAAa;AAAA,MACb,QAAQ;AAAA,QACN;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,aACE;AAAA,QACJ;AAAA,MACF;AAAA,SACI,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,MAChD,MAAM,CAAC,oBAAoB,uBAAuB;AAAA,MAClD,QAAQ;AAAA,MACR,WAAW,CAAC;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AAAA,IACD,IAAI,wBAAwB,mBAAmB;AAAA,EACjD;AAAA,EAEA,OAAO,EAAE,kBAAkB,kBAAkB;AAAA;;ACpE/C;AACA,oBAAS;AACT,2BAAmB;;;ACPnB;AACA,iBAAS;AAKF,SAAS,UAAU,CAAC,MAA4B;AAAA,EACrD,IAAI;AAAA,IACF,OAAO,SAAS,IAAI;AAAA,IACpB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAKJ,SAAS,kBAAkB,CAChC,KACA,OACU;AAAA,EACV,MAAM,MAAgB,CAAC;AAAA,EACvB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,YAAY,GAAG;AAAA,IACzB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,WAAW,SAAS,QAAQ,KAAK,GAAG;AAAA,IAClC,MAAM,OAAO,MAAK,KAAK,KAAK;AAAA,IAC5B,MAAM,OAAO,WAAW,IAAI;AAAA,IAC5B,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,IAAI,KAAK,YAAY,GAAG;AAAA,MACtB,IAAI,KAAK,GAAG,mBAAmB,MAAM,KAAK,CAAC;AAAA,IAC7C,EAAO,SAAI,KAAK,OAAO,KAAK,MAAM,KAAK,GAAG;AAAA,MACxC,IAAI,KAAK,IAAI;AAAA,IACf;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAQF,SAAS,sBAAsB,CACpC,SACA,WACA,MACA,SACA,QAC0B;AAAA,EAC1B,IAAI,OAAO,WAAW,QAAQ,CAAC,OAAO;AAAA,IAAS,OAAO;AAAA,EACtD,MAAM,UAAU,OAAO;AAAA,EACvB,MAAM,OAAO,QAAQ,IAAI,SAAS,SAAS,QAAQ,KAAK;AAAA,EACxD,MAAM,OAAO,QAAQ,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EACpD,MAAM,YAAY,KAAK,IAAI;AAAA,EAC3B,MAAM,UAAU,KAAK,KAAK,SAAS,IAAI;AAAA,EACvC,IAAI,CAAC,aAAa,CAAC;AAAA,IAAS,OAAO;AAAA,EACnC,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,eAAe,KAAK,UAAU,OAAO,CAAC;AAAA,IACjD,aAAa,KAAK;AAAA,IAClB;AAAA,OACI,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,EACvC;AAAA;AAQK,SAAS,eAAgD,CAC9D,SACA,YACK;AAAA,EACL,MAAM,QAAQ,WAAW,OAAO,CAAC,MAAM,EAAE,cAAc,OAAO;AAAA,EAC9D,IAAI,MAAM,SAAS;AAAA,IAAG,OAAO;AAAA,EAC7B,OAAO,WAAW,OAAO,CAAC,MAAM,EAAE,UAAU,WAAW,OAAO,CAAC;AAAA;;;ADpDjE,IAAM,qBAAqB,IAAI,IAAI;AAAA,EACjC;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,CAAC;AAQM,SAAS,oBAAoB,CAAC,MAA6B;AAAA,EAChE,MAAM,OAAoB,CAAC;AAAA,EAC3B,MAAM,SAA+C,CAAC;AAAA,EACtD,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,IAAI,CAAC,KAAK,KAAK;AAAA,MAAG;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,MAAM,KAAK,MAAM,IAAI;AAAA,MACrB,MAAM;AAAA,MACN;AAAA;AAAA,IAEF,IAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,MAAM,QAAQ,GAAG;AAAA,MAAG;AAAA,IAC3D,MAAM,SAAS;AAAA,IACf,MAAM,QAAQ,OAAO;AAAA,IACrB,IACG,OAAO,UAAU,YAAY,mBAAmB,IAAI,KAAK,KAC1D,OAAO,aACP;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,OAAO,OAAO,QAAQ,YAAY,OAAO,OAAO,CAAC,OAAO,KAAK;AAAA,MAC/D,OAAO,MAAM,OAAO;AAAA,IACtB;AAAA,IACA,IACE,OAAO,OAAO,cAAc,YAC5B,OAAO,aACP,CAAC,OAAO,WACR;AAAA,MACA,OAAO,YAAY,OAAO;AAAA,IAC5B;AAAA,IACA,MAAM,MAAM,OAAO;AAAA,IACnB,IACG,UAAU,UAAU,UAAU,eAC/B,CAAC,OACD,OAAO,QAAQ,YACf,MAAM,QAAQ,GAAG,GACjB;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,UAAU;AAAA,IAChB,MAAM,KAAK,eAAe,OAAO,SAAS;AAAA,IAC1C,MAAM,QAAQ,OAAO,QAAQ,UAAU,WAAW,QAAQ,QAAQ;AAAA,IAClE,MAAM,UAAU,QAAQ;AAAA,IACxB,MAAM,WAAW,OAAO,SAAS,oBAAoB;AAAA,IAErD,IAAI,UAAU,QAAQ;AAAA,MACpB,IAAI,OAAO,YAAY,UAAU;AAAA,QAC/B,KAAK,KAAK,EAAE,MAAM,QAAQ,UAAU,SAAS,WAAW,GAAG,CAAC;AAAA,QAC5D;AAAA,MACF;AAAA,MACA,MAAM,YAAsB,CAAC;AAAA,MAC7B,WAAW,SAAS,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,GAAG;AAAA,QACzD,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,UAAU;AAAA,QACzC,MAAM,IAAI;AAAA,QACV,IAAI,EAAE,SAAS,eAAe;AAAA,UAC5B,KAAK,KAAK;AAAA,YACR,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,WAAW,EAAE,OAAO;AAAA,YAC7B,WAAW;AAAA,YACX,YACE,OAAO,EAAE,gBAAgB,WAAW,EAAE,cAAc;AAAA,UACxD,CAAC;AAAA,QACH,EAAO,SAAI,EAAE,SAAS,QAAQ;AAAA,UAC5B,UAAU,KAAK,OAAO,EAAE,SAAS,WAAW,EAAE,OAAO,EAAE;AAAA,QACzD,EAAO,SAAI,EAAE,SAAS,SAAS;AAAA,UAC7B,UAAU,KAAK,SAAS;AAAA,QAC1B;AAAA,MACF;AAAA,MACA,IAAI,UAAU,SAAS,GAAG;AAAA,QACxB,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN;AAAA,UACA,SAAS,UAAU,KAAK;AAAA,CAAI;AAAA,UAC5B,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAAA,IACF,EAAO;AAAA,MAEL,WAAW,SAAS,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,GAAG;AAAA,QACzD,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,UAAU;AAAA,QACzC,MAAM,IAAI;AAAA,QACV,IAAI,EAAE,SAAS,YAAY;AAAA,UACzB,KAAK,KAAK;AAAA,YACR,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,OAAO,EAAE,aAAa,WAAW,EAAE,WAAW;AAAA,YACvD,WAAW;AAAA,YACX;AAAA,UACF,CAAC;AAAA,QACH,EAAO,SAAI,EAAE,SAAS,QAAQ;AAAA,UAC5B,KAAK,KAAK;AAAA,YACR,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,OAAO,EAAE,SAAS,WAAW,EAAE,OAAO;AAAA,YAC/C,WAAW;AAAA,YACX;AAAA,UACF,CAAC;AAAA,QACH,EAAO,SAAI,EAAE,SAAS,YAAY;AAAA,UAChC,KAAK,KAAK;AAAA,YACR,MAAM;AAAA,YACN,UAAU;AAAA,YACV,WAAW;AAAA,YACX;AAAA,YACA,UAAU,OAAO,EAAE,SAAS,WAAW,EAAE,OAAO;AAAA,YAChD,YAAY,OAAO,EAAE,OAAO,WAAW,EAAE,KAAK;AAAA,YAC9C,eAAe,KAAK,UAAU,EAAE,SAAS,CAAC,CAAC;AAAA,UAC7C,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,IAAI,OAAO,YAAY,YAAY,QAAQ,KAAK,GAAG;AAAA,QACjD,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,UACV;AAAA,UACA,WAAW;AAAA,UACX;AAAA,QACF,CAAC;AAAA,MACH;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO,EAAE,MAAM,OAAO;AAAA;AAGxB,SAAS,iBAAiB,CAAC,MAAsB;AAAA,EAC/C,OAAO,SAAS,IAAI,EAAE,QAAQ,YAAY,EAAE;AAAA;AAQ9C,SAAS,gBAAgB,CAAC,MAAwC;AAAA,EAChE,MAAM,OAAO,WAAW,IAAI;AAAA,EAC5B,IAAI,CAAC,MAAM,OAAO;AAAA,IAAG,OAAO;AAAA,EAC5B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,OAAO,aAAa,MAAM,MAAM;AAAA,IAChC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,QAAQ,MAAM,WAAW,qBAAqB,IAAI;AAAA,EAClD,MAAM,UAA0B;AAAA,IAC9B,QAAQ;AAAA,OACL;AAAA,IACH,WAAW,IAAI,KAAK,KAAK,OAAO;AAAA,EAClC;AAAA,EACA,MAAM,SAAS,qBAAqB,MAAM,OAAO;AAAA,EACjD,MAAM,UAAU,uBACd,UACA,kBAAkB,IAAI,GACtB,MACA,KAAK,SACL,MACF;AAAA,EACA,IAAI,CAAC,WAAW,CAAC,OAAO;AAAA,IAAS,OAAO;AAAA,EACxC,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ;AAAA;AAOrC,SAAS,sBAAsB,CAAC,UAAqC;AAAA,EAC1E,MAAM,OAAO,YAAY,MAAK,SAAQ,GAAG,WAAW,UAAU;AAAA,EAC9D,MAAM,gBAAgB,CAAC,SAAiB,KAAK,SAAS,QAAQ;AAAA,EAE9D,OAAO;AAAA,IACL,MAAM;AAAA,SAEA,SAAQ,CAAC,SAAgD;AAAA,MAC7D,IAAI;AAAA,MACJ,IAAI,CAAC,SAAS;AAAA,QACZ,QAAQ,mBAAmB,MAAM,aAAa;AAAA,MAChD,EAAO;AAAA,QACL,MAAM,OAAO,WAAW,OAAO;AAAA,QAC/B,IAAI,MAAM,OAAO,GAAG;AAAA,UAClB,QAAQ,CAAC,OAAO;AAAA,QAClB,EAAO,SAAI,MAAM,YAAY,GAAG;AAAA,UAE9B,QAAQ,mBAAmB,SAAS,aAAa;AAAA,QACnD,EAAO;AAAA,UACL,MAAM,MAAM,mBAAmB,MAAM,aAAa,EAAE,IAAI,CAAC,UAAU;AAAA,YACjE,WAAW,kBAAkB,IAAI;AAAA,YACjC;AAAA,UACF,EAAE;AAAA,UACF,MAAM,UAAU,gBAAgB,SAAS,GAAG;AAAA,UAC5C,IAAI,QAAQ,WAAW,GAAG;AAAA,YACxB,MAAM,IAAI,MACR,mCAAmC,eAAe,MACpD;AAAA,UACF;AAAA,UACA,QAAQ,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA;AAAA;AAAA,MAGrC,MAAM,WAAgC,CAAC;AAAA,MACvC,WAAW,QAAQ,OAAO;AAAA,QACxB,MAAM,SAAS,iBAAiB,IAAI;AAAA,QACpC,IAAI;AAAA,UAAQ,SAAS,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,MACA,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO;AAAA,MAC7C,OAAO;AAAA;AAAA,SAGH,UAAS,CAAC,SAAwD;AAAA,MACtE,MAAM,SAAS,iBAAiB,QAAQ,IAAI;AAAA,MAC5C,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,IAAI,MACR,2CAA2C,QAAQ,gBAAgB,QAAQ,MAC7E;AAAA,MACF;AAAA,MACA,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ;AAAA;AAAA,EAE9C;AAAA;;;AEpQF,yBAAS;AACT,oBAAS;AACT,qBAAS,mBAAU;AAmCZ,SAAS,iBAAiB,CAAC,MAAgC;AAAA,EAChE,MAAM,OAAoB,CAAC;AAAA,EAC3B,MAAM,SAAqC,CAAC;AAAA,EAC5C,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,IAAI,CAAC,KAAK,KAAK;AAAA,MAAG;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,MAAM,KAAK,MAAM,IAAI;AAAA,MACrB,MAAM;AAAA,MACN;AAAA;AAAA,IAEF,IAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,MAAM,QAAQ,GAAG;AAAA,MAAG;AAAA,IAC3D,MAAM,SAAS;AAAA,IACf,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,UACJ,OAAO,WAAW,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU,CAAC;AAAA,IAE3E,MAAM,KAAK,eAAe,OAAO,SAAS;AAAA,IAC1C,MAAM,QAAQ,QAAQ;AAAA,IAEtB,IAAI,UAAU,gBAAgB;AAAA,MAC5B,IAAI,OAAO,QAAQ,QAAQ,YAAY,QAAQ,OAAO,CAAC,OAAO,KAAK;AAAA,QACjE,OAAO,MAAM,QAAQ;AAAA,MACvB;AAAA,MACA,MAAM,UAAU,eAAe,QAAQ,SAAS,KAAK;AAAA,MACrD,IAAI,WAAW,CAAC,OAAO;AAAA,QAAW,OAAO,YAAY;AAAA,MACrD,MAAM,MAAM,QAAQ;AAAA,MACpB,IAAI,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG,GAAG;AAAA,QACzD,MAAM,SAAU,IAAgC;AAAA,QAChD,IAAI,OAAO,WAAW,YAAY,UAAU,CAAC,OAAO,WAAW;AAAA,UAC7D,OAAO,YAAY;AAAA,QACrB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,UAAU,gBAAgB;AAAA,MAC5B,IAAI,OAAO,QAAQ,QAAQ,YAAY,QAAQ,OAAO,CAAC,OAAO,KAAK;AAAA,QACjE,OAAO,MAAM,QAAQ;AAAA,MACvB;AAAA,MACA,IAAI,OAAO,QAAQ,UAAU,YAAY,QAAQ,SAAS,CAAC,OAAO,OAAO;AAAA,QACvE,OAAO,QAAQ,QAAQ;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,UAAU,aAAa;AAAA,MACzB,MAAM,YAAY,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO;AAAA,MACpE,IAAI,UAAU,qBAAqB,UAAU,KAAK,GAAG;AAAA,QACnD,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,UACV,SAAS;AAAA,UACT,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,UAAU;AAAA,MAAiB;AAAA,IAE/B,IAAI,UAAU,WAAW;AAAA,MACvB,MAAM,OAAO,QAAQ;AAAA,MACrB,MAAM,OAAO,WAAW,QAAQ,OAAO;AAAA,MACvC,IAAI,SAAS,QAAQ;AAAA,QACnB,MAAM,OAAO,KAAK,UAAU;AAAA,QAC5B,IAAI,wBAAwB,KAAK,CAAC,WAAW,KAAK,WAAW,MAAM,CAAC,GAAG;AAAA,UACrE;AAAA,QACF;AAAA,QACA,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,UACV,SAAS;AAAA,UACT,WAAW;AAAA,QACb,CAAC;AAAA,MACH,EAAO,SAAI,SAAS,aAAa;AAAA,QAC/B,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,UACV,SAAS;AAAA,UACT,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAAA,IAEF,EAAO,SAAI,UAAU,iBAAiB;AAAA,MACpC,KAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,UAAU;AAAA,QACV,WAAW;AAAA,QACX,UAAU,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO;AAAA,QAC5D,YACE,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU;AAAA,QAC1D,eACG,OAAO,QAAQ,cAAc,YAAY,QAAQ,aAAc;AAAA,MACpE,CAAC;AAAA,IACH,EAAO,SAAI,UAAU,oBAAoB;AAAA,MACvC,KAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,UAAU;AAAA,QACV,WAAW;AAAA,QACX,UAAU,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO;AAAA,QAC5D,YACE,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU;AAAA,QAC1D,eAAe,KAAK,UAAU,EAAE,OAAO,QAAQ,SAAS,GAAG,CAAC;AAAA,MAC9D,CAAC;AAAA,IACH,EAAO,SAAI,UAAU,mBAAmB;AAAA,MACtC,MAAM,OAAgC,CAAC;AAAA,MACvC,YAAY,KAAK,UAAU,OAAO,QAAQ,OAAO,GAAG;AAAA,QAClD,IAAI,QAAQ,UAAU,QAAQ,aAAa,QAAQ,UAAU;AAAA,UAC3D,KAAK,OAAO;AAAA,QACd;AAAA,MACF;AAAA,MACA,KAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,UAAU;AAAA,QACV,WAAW;AAAA,QACX,UAAU;AAAA,QACV,YACE,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU;AAAA,QAC1D,eAAe,KAAK,UAAU,IAAI;AAAA,MACpC,CAAC;AAAA,IACH,EAAO,SACL,UAAU,0BACV,UAAU,2BACV;AAAA,MACA,IAAI,SAAkB,QAAQ;AAAA,MAC9B,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,QAEzB,SAAS,WAAW,MAAM,KAAK,KAAK,UAAU,MAAM;AAAA,MACtD,EAAO,SAAI,UAAU,OAAO,WAAW,UAAU;AAAA,QAC/C,MAAM,UAAW,OAAmC;AAAA,QACpD,SAAS,WAAW,KAAK,UAAU,MAAM;AAAA,MAC3C;AAAA,MACA,IAAI,OAAO,WAAW,UAAU;AAAA,QAC9B,SAAS,UAAU,OAAO,KAAK,OAAO,MAAM;AAAA,MAC9C;AAAA,MACA,KAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAU,UAAqB;AAAA,QAC/B,WAAW;AAAA,QACX,YACE,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU;AAAA,MAC5D,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO,EAAE,MAAM,OAAO;AAAA;AAGxB,SAAS,kBAAiB,CAAC,MAAsB;AAAA,EAE/C,OAAO,UAAS,IAAI,EACjB,QAAQ,YAAY,EAAE,EACtB,QAAQ,aAAa,EAAE;AAAA;AAQ5B,SAAS,iBAAgB,CAAC,MAAwC;AAAA,EAChE,MAAM,OAAO,WAAW,IAAI;AAAA,EAC5B,IAAI,CAAC,MAAM,OAAO;AAAA,IAAG,OAAO;AAAA,EAC5B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,OAAO,cAAa,MAAM,MAAM;AAAA,IAChC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,QAAQ,MAAM,WAAW,kBAAkB,IAAI;AAAA,EAC/C,MAAM,UAA0B;AAAA,IAC9B,QAAQ;AAAA,IACR,KAAK,OAAO;AAAA,IACZ,WAAW,OAAO;AAAA,IAClB,OAAO,OAAO;AAAA,IACd,WAAW,OAAO,aAAa,IAAI,KAAK,KAAK,OAAO;AAAA,EACtD;AAAA,EACA,MAAM,SAAS,qBAAqB,MAAM,OAAO;AAAA,EACjD,MAAM,UAAU,uBACd,SACA,mBAAkB,IAAI,GACtB,MACA,KAAK,SACL,MACF;AAAA,EACA,IAAI,CAAC,WAAW,CAAC,OAAO;AAAA,IAAS,OAAO;AAAA,EACxC,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ;AAAA;AAOrC,SAAS,iBAAiB,CAAC,UAAqC;AAAA,EACrE,MAAM,OAAO,YAAY,MAAK,SAAQ,GAAG,UAAU,UAAU;AAAA,EAC7D,MAAM,YAAY,CAAC,SACjB,KAAK,WAAW,UAAU,KAAK,KAAK,SAAS,QAAQ;AAAA,EAEvD,OAAO;AAAA,IACL,MAAM;AAAA,SAEA,SAAQ,CAAC,SAAgD;AAAA,MAC7D,IAAI;AAAA,MACJ,IAAI,CAAC,SAAS;AAAA,QACZ,QAAQ,mBAAmB,MAAM,SAAS;AAAA,MAC5C,EAAO;AAAA,QACL,MAAM,OAAO,WAAW,OAAO;AAAA,QAC/B,IAAI,MAAM,OAAO,GAAG;AAAA,UAClB,QAAQ,CAAC,OAAO;AAAA,QAClB,EAAO,SAAI,MAAM,YAAY,GAAG;AAAA,UAE9B,QAAQ,mBAAmB,SAAS,SAAS;AAAA,QAC/C,EAAO;AAAA,UACL,MAAM,MAAM,mBAAmB,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU;AAAA,YAC7D,WAAW,mBAAkB,IAAI;AAAA,YACjC;AAAA,UACF,EAAE;AAAA,UACF,MAAM,UAAU,gBAAgB,SAAS,GAAG;AAAA,UAC5C,IAAI,QAAQ,WAAW,GAAG;AAAA,YACxB,MAAM,IAAI,MAAM,6BAA6B,eAAe,MAAM;AAAA,UACpE;AAAA,UACA,QAAQ,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA;AAAA;AAAA,MAGrC,MAAM,WAAgC,CAAC;AAAA,MACvC,WAAW,QAAQ,OAAO;AAAA,QACxB,MAAM,SAAS,kBAAiB,IAAI;AAAA,QACpC,IAAI;AAAA,UAAQ,SAAS,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,MACA,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO;AAAA,MAC7C,OAAO;AAAA;AAAA,SAGH,UAAS,CAAC,SAAwD;AAAA,MACtE,MAAM,SAAS,kBAAiB,QAAQ,IAAI;AAAA,MAC5C,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,IAAI,MACR,qCAAqC,QAAQ,gBAAgB,QAAQ,MACvE;AAAA,MACF;AAAA,MACA,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ;AAAA;AAAA,EAE9C;AAAA;;;AChRF,yBAAS;AACT,oBAAS;AACT,iBAAS;AAgBT,SAAS,iBAAiB,GAAW;AAAA,EACnC,MAAM,UAAU,QAAQ,IAAI;AAAA,EAC5B,IAAI;AAAA,IAAS,OAAO;AAAA,EACpB,OAAO,OAAK,SAAQ,GAAG,UAAU,aAAa;AAAA;AAahD,SAAS,SAAS,CAAC,KAAmC;AAAA,EACpD,MAAM,OAA6B,CAAC;AAAA,EACpC,WAAW,QAAQ,IAAI,MAAM;AAAA,CAAI,GAAG;AAAA,IAClC,MAAM,UAAU,KAAK,KAAK;AAAA,IAC1B,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,IAAI;AAAA,MACF,MAAM,SAAS,KAAK,MAAM,OAAO;AAAA,MACjC,IAAI,UAAU,OAAO,WAAW,YAAY,OAAO,MAAM;AAAA,QACvD,KAAK,KAAK,MAAM;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,EAGV;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,gBAAgB,CAAC,MAAyC;AAAA,EACjE,MAAM,MAAmB,CAAC;AAAA,EAC1B,IAAI,IAAI;AAAA,EACR,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,YAAY,eAAe,IAAI,WAAW;AAAA,IAChD,QAAQ,IAAI;AAAA,WACL;AAAA,QACH,IAAI,IAAI,MAAM;AAAA,UACZ,IAAI,KAAK;AAAA,YACP,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,IAAI;AAAA,YACb;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,WACG;AAAA,QACH,IAAI,IAAI,MAAM;AAAA,UACZ,IAAI,KAAK;AAAA,YACP,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,IAAI;AAAA,YACb;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,WACG;AAAA,QACH,IAAI,IAAI,MAAM;AAAA,UACZ,IAAI,KAAK;AAAA,YACP,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,IAAI;AAAA,YACb;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA;AAAA,WACG,aAAa;AAAA,QAChB,KAAK;AAAA,QACL,MAAM,SAAS,SAAS;AAAA,QACxB,IAAI,KAAK;AAAA,UACP,MAAM;AAAA,UACN,UAAU;AAAA,UACV;AAAA,UACA,UAAU,IAAI;AAAA,UACd,YAAY;AAAA,UACZ,eAAe,IAAI,YAAY;AAAA,QACjC,CAAC;AAAA,QACD,IAAI,IAAI,eAAe,WAAW;AAAA,UAChC,MAAM,UACJ,IAAI,aAAa,SAAS,CAAC,UAAU,KAAK,IAAI,UAAU,IACpD,UAAU,IAAI,eACd,IAAI;AAAA,UACV,IAAI,KAAK;AAAA,YACP,MAAM;AAAA,YACN,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA,YAAY;AAAA,UACd,CAAC;AAAA,QACH;AAAA,QACA;AAAA,MACF;AAAA;AAAA,QAGE;AAAA;AAAA,EAEN;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,kBAAkB,CAAC,MAAsC;AAAA,EAChE,OAAO,KACJ,IAAI,CAAC,QAAQ,IAAI,WAAW,EAC5B,OAAO,CAAC,MAAmB,OAAO,MAAM,YAAY,EAAE,SAAS,CAAC;AAAA;AAG9D,SAAS,iBAAiB,CAAC,gBAA2C;AAAA,EAC3E,MAAM,OAAO,MAAM,kBAAkB,kBAAkB;AAAA,EAEvD,MAAM,cAAc,CAAC,YAAyC;AAAA,IAC5D,MAAM,MAAM,QAAQ,QAAQ,GAAG;AAAA,IAC/B,IAAI,OAAO,KAAK,QAAQ,QAAQ,SAAS,GAAG;AAAA,MAC1C,MAAM,IAAI,MACR,0BAA0B,iDAC5B;AAAA,IACF;AAAA,IACA,MAAM,UAAU,QAAQ,MAAM,GAAG,GAAG;AAAA,IACpC,MAAM,iBAAiB,QAAQ,MAAM,MAAM,CAAC;AAAA,IAC5C,MAAM,iBAAiB,OACrB,KAAK,GACL,SACA,gBACA,kBACF;AAAA,IACA,MAAM,OAAO,WAAW,cAAc;AAAA,IACtC,IAAI,CAAC,MAAM,OAAO,GAAG;AAAA,MACnB,MAAM,IAAI,MACR,4CAA4C,sBAAsB,YAAY,iBAChF;AAAA,IACF;AAAA,IACA,MAAM,MAAM,cAAa,gBAAgB,OAAO;AAAA,IAChD,MAAM,OAAO,UAAU,GAAG;AAAA,IAC1B,MAAM,aAAa,mBAAmB,IAAI;AAAA,IAC1C,IAAI,KAAK,WAAW,KAAK,WAAW,WAAW,GAAG;AAAA,MAChD,OAAO,CAAC;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,MAAM;AAAA,QACN,WAAW,WAAW,MAAM;AAAA,QAC5B,SAAS,WAAW,WAAW,SAAS,MAAM;AAAA,QAC9C,WAAW,eAAe,GAAG;AAAA,QAC7B,aAAa,KAAK;AAAA,QAClB,SAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,MAAM;AAAA,SACA,SAAQ,CAAC,SAAgD;AAAA,MAC7D,IAAI,CAAC,SAAS;AAAA,QACZ,MAAM,IAAI,MACR,kEACE,qDACA,oCACJ;AAAA,MACF;AAAA,MACA,OAAO,YAAY,OAAO;AAAA;AAAA,SAEtB,UAAS,CAAC,SAAwD;AAAA,MACtE,MAAM,MAAM,cAAa,QAAQ,MAAM,OAAO;AAAA,MAC9C,MAAM,OAAO,iBAAiB,UAAU,GAAG,CAAC;AAAA,MAC5C,MAAM,SAAS,qBAAqB,MAAM,EAAE,QAAQ,QAAQ,CAAC;AAAA,MAC7D,IAAI,OAAO,WAAW,QAAQ,CAAC,OAAO,SAAS;AAAA,QAC7C,MAAM,IAAI,MACR,0CAA0C,QAAQ,cAAc,OAAO,QACzE;AAAA,MACF;AAAA,MACA,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ;AAAA;AAAA,EAE9C;AAAA;;;AChMF,wBAAS,8BAAa;AACtB,qBAAS,sBAAU,kBAAS;AAkD5B,SAAS,eAAe,CAAC,SAAqD;AAAA,EAC5E,IAAI,CAAC,MAAM,QAAQ,OAAO;AAAA,IAAG,OAAO;AAAA,EACpC,OAAO,QACJ,OAAO,CAAC,SAAS,MAAM,SAAS,UAAU,OAAO,KAAK,SAAS,QAAQ,EACvE,IAAI,CAAC,SAAS,KAAK,IAAI,EACvB,KAAK,EAAE;AAAA;AAOZ,SAAS,cAAc,CAAC,OAAoC;AAAA,EAC1D,OAAO,eAAe,MAAM,SAAS;AAAA;AAGvC,SAAS,qBAAqB,CAAC,OAAsC;AAAA,EACnE,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,OAAO,gBAAgB,MAAM,aAAa,OAAO;AAAA,SAC9C;AAAA,MACH,OAAO,MAAM,SAAS;AAAA,SACnB;AAAA,MACH,OAAO,MAAM,oBAAoB;AAAA;AAAA,MAEjC,OAAO;AAAA;AAAA;AAIb,SAAS,cAAc,CAAC,OAA2C;AAAA,EACjE,MAAM,MAAM,MAAM,WAAW;AAAA,EAC7B,IAAI,OAAO,QAAQ,YAAY,IAAI,SAAS;AAAA,IAAG,OAAO;AAAA,EACtD,IAAI,MAAM,UAAU,OAAO,MAAM,WAAW,UAAU;AAAA,IACpD,QAAQ,MAAM,UAAU,SAAS,MAAM;AAAA,IACvC,OAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EACA;AAAA;AAQK,SAAS,qBAAqB,CAAC,QAAuC;AAAA,EAC3E,MAAM,OAAoB,CAAC;AAAA,EAG3B,MAAM,mBAAmB,IAAI;AAAA,EAE7B,WAAW,SAAS,QAAQ;AAAA,IAC1B,IAAI,CAAC,MAAM;AAAA,MAAI;AAAA,IACf,MAAM,KAAK,eAAe,KAAK;AAAA,IAE/B,IAAI,MAAM,SAAS,gBAAgB;AAAA,MACjC,IAAI,MAAM,WAAW,UAAU,MAAM,WAAW;AAAA,QAAS;AAAA,MACzD,MAAM,OAAO,gBAAgB,MAAM,aAAa,OAAO;AAAA,MACvD,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,KAAK,KACH,MAAM,WAAW,SACb;AAAA,QACE,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,MACb,IACA;AAAA,QACE,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,MACb,CACN;AAAA,MACA;AAAA,IACF;AAAA,IAEA,IAAI,MAAM,SAAS,eAAe;AAAA,MAGhC,MAAM,UAAU,gBAAgB,MAAM,OAAO;AAAA,MAC7C,IAAI,SAAS;AAAA,QACX,KAAK,KAAK;AAAA,UACR,MAAM;AAAA,UACN,UAAU;AAAA,UACV,SAAS;AAAA,UACT,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAAA,MACA,MAAM,SAAS,MAAM,gBAAgB,MAAM,MAAM;AAAA,MACjD,iBAAiB,IAAI,MAAM,IAAI,MAAM;AAAA,MACrC,KAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,UAAU;AAAA,QACV,WAAW;AAAA,QACX,UAAU,MAAM;AAAA,QAChB,YAAY;AAAA,QACZ,eAAe,eAAe,KAAK,KAAK;AAAA,MAC1C,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IAEA,MAAM,aAAa,sBAAsB,KAAK;AAAA,IAC9C,IAAI,eAAe,MAAM;AAAA,MACvB,MAAM,SACJ,MAAM,iBACL,MAAM,YAAY,iBAAiB,IAAI,MAAM,SAAS,IAAI;AAAA,MAC7D,KAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,QACX,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,KAAa,MAAgC;AAAA,EACpE,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,GAAG;AAAA,IACvB,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,IAAI,MAAM,QAAQ,MAAM;AAAA,IAAG,OAAO;AAAA,EAClC,IACE,UACA,OAAO,WAAW,YAClB,MAAM,QAAS,OAAiC,KAAK,GACrD;AAAA,IACA,OAAQ,OAAuC;AAAA,EACjD;AAAA,EACA,MAAM,IAAI,MACR,mBAAmB,2DACrB;AAAA;AAIF,SAAS,aAAa,CAAC,UAA0B;AAAA,EAC/C,MAAM,SAAS,SAAS,MAAM,eAAe,IAAI;AAAA,EACjD,OAAO,SAAS,OAAO,SAAS,QAAQ,EAAE,IAAI;AAAA;AAGhD,IAAM,gBAAgB;AAItB,SAAS,gBAAgB,CAAC,KAA4B;AAAA,EACpD,MAAM,SAAS,OAAK,KAAK,QAAQ;AAAA,EACjC,WAAW,aAAa,CAAC,QAAQ,GAAG,GAAG;AAAA,IACrC,MAAM,OAAO,WAAW,SAAS;AAAA,IACjC,IAAI,CAAC,MAAM,YAAY;AAAA,MAAG;AAAA,IAC1B,IAAI;AAAA,MACF,IAAI,aAAY,SAAS,EAAE,KAAK,CAAC,SAAS,cAAc,KAAK,IAAI,CAAC,GAAG;AAAA,QACnE,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,EAGV;AAAA,EACA,OAAO;AAAA;AAST,SAAS,YAAY,CAAC,WAAiC;AAAA,EACrD,MAAM,YAAY,aAAY,SAAS,EACpC,OAAO,CAAC,SAAS,cAAc,KAAK,IAAI,CAAC,EACzC,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,IAAI,cAAc,CAAC,CAAC;AAAA,EACrD,MAAM,SAA2B,CAAC;AAAA,EAClC,IAAI,UAAU,WAAW,SAAS,GAAG,WAAW;AAAA,EAChD,WAAW,QAAQ,WAAW;AAAA,IAC5B,MAAM,OAAO,OAAK,WAAW,IAAI;AAAA,IACjC,MAAM,OAAO,WAAW,IAAI;AAAA,IAC5B,IAAI,QAAQ,KAAK,UAAU;AAAA,MAAS,UAAU,KAAK;AAAA,IACnD,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,QAAQ,KAAK,MAAM,cAAa,MAAM,MAAM,CAAC;AAAA,MAC7C,MAAM;AAAA,MACN;AAAA;AAAA,IAEF,IAAI,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC/D,OAAO,KAAK,KAAuB;AAAA,IACrC;AAAA,EACF;AAAA,EACA,OAAO,EAAE,QAAQ,QAAQ;AAAA;AAI3B,SAAS,UAAU,CAAC,MAAmC;AAAA,EACrD,MAAM,OAAO,WAAW,IAAI;AAAA,EAC5B,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAClB,IAAI,KAAK,YAAY,GAAG;AAAA,IACtB,MAAM,YAAY,iBAAiB,IAAI;AAAA,IACvC,IAAI,CAAC;AAAA,MAAW,OAAO;AAAA,IACvB,OAAO,aAAa,SAAS;AAAA,EAC/B;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,cAAa,MAAM,MAAM;AAAA,IAC/B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,OAAO,EAAE,QAAQ,gBAAgB,KAAK,IAAI,GAAG,SAAS,KAAK,QAAQ;AAAA;AAGrE,SAAS,gBAAgB,CAAC,MAAc,OAAwB;AAAA,EAC9D,MAAM,OAAO,UAAS,IAAI;AAAA,EAC1B,IAAI,CAAC;AAAA,IAAO,OAAO,KAAK,QAAQ,WAAW,EAAE;AAAA,EAE7C,OAAO,SAAS,WAAW,UAAS,SAAQ,IAAI,CAAC,IAAI;AAAA;AAQvD,SAAS,gBAAgB,CAAC,MAAoC;AAAA,EAC5D,MAAM,OAAO,WAAW,IAAI;AAAA,EAC5B,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,WAAW,IAAI;AAAA,IACxB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,UAAU,OAAO,OAAO,WAAW;AAAA,IAAG,OAAO;AAAA,EAClD,MAAM,OAAO,sBAAsB,OAAO,MAAM;AAAA,EAChD,MAAM,UAA0B;AAAA,IAC9B,QAAQ;AAAA,IACR,WAAW,IAAI,KAAK,OAAO,OAAO;AAAA,EACpC;AAAA,EACA,MAAM,SAAS,qBAAqB,MAAM,OAAO;AAAA,EACjD,MAAM,UAAU,uBACd,aACA,iBAAiB,MAAM,KAAK,YAAY,CAAC,GACzC,MACA,OAAO,SACP,MACF;AAAA,EACA,IAAI,CAAC,WAAW,CAAC,OAAO;AAAA,IAAS,OAAO;AAAA,EACxC,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ;AAAA;AAOrC,SAAS,qBAAqB,GAAqB;AAAA,EACxD,OAAO;AAAA,IACL,MAAM;AAAA,SAEA,SAAQ,CAAC,SAAgD;AAAA,MAC7D,IAAI,CAAC,SAAS;AAAA,QACZ,MAAM,IAAI,MACR,qEACE,oEACA,iDACJ;AAAA,MACF;AAAA,MACA,MAAM,OAAO,WAAW,OAAO;AAAA,MAC/B,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,IAAI,MAAM,mCAAmC,SAAS;AAAA,MAC9D;AAAA,MAGA,IAAI,KAAK,OAAO,KAAK,iBAAiB,OAAO,GAAG;AAAA,QAC9C,MAAM,SAAS,iBAAiB,OAAO;AAAA,QACvC,OAAO,SAAS,CAAC,OAAO,OAAO,IAAI,CAAC;AAAA,MACtC;AAAA,MAGA,MAAM,WAAgC,CAAC;AAAA,MACvC,IAAI,WAAqB,CAAC;AAAA,MAC1B,IAAI;AAAA,QACF,WAAW,aAAY,OAAO,EAAE,KAAK;AAAA,QACrC,MAAM;AAAA,QACN,WAAW,CAAC;AAAA;AAAA,MAEd,WAAW,SAAS,UAAU;AAAA,QAC5B,MAAM,YAAY,OAAK,SAAS,KAAK;AAAA,QACrC,IAAI,CAAC,WAAW,SAAS,GAAG,YAAY;AAAA,UAAG;AAAA,QAC3C,IAAI,CAAC,iBAAiB,SAAS;AAAA,UAAG;AAAA,QAClC,MAAM,SAAS,iBAAiB,SAAS;AAAA,QACzC,IAAI;AAAA,UAAQ,SAAS,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,MACA,IAAI,SAAS,WAAW,GAAG;AAAA,QACzB,MAAM,IAAI,MACR,uDAAuD,SACzD;AAAA,MACF;AAAA,MACA,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO;AAAA,MAC7C,OAAO;AAAA;AAAA,SAGH,UAAS,CAAC,SAAwD;AAAA,MACtE,MAAM,SAAS,iBAAiB,QAAQ,IAAI;AAAA,MAC5C,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,IAAI,MACR,yCAAyC,QAAQ,gBAAgB,QAAQ,MAC3E;AAAA,MACF;AAAA,MACA,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ;AAAA;AAAA,EAE9C;AAAA;;;ACpXF,yBAAS;AACT,qBAAS;AAuBT,SAAS,kBAAkB,CAAC,MAAuC;AAAA,EACjE,MAAM,OAAO,WAAW,IAAI;AAAA,EAC5B,IAAI,CAAC,MAAM,OAAO;AAAA,IAAG,OAAO;AAAA,EAC5B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,cAAa,MAAM,MAAM;AAAA,IAC/B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,GAAG;AAAA,IACvB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,wBAAwB,MAAM,KAAK,OAAO,WAAW;AAAA,IAAG,OAAO;AAAA,EACpE,MAAM,UAAU;AAAA,EAChB,MAAM,OAAO,QAAQ,IAAI,SAAS,SAAS,QAAQ,KAAK;AAAA,EACxD,MAAM,OAAO,QAAQ,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EACpD,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAC9B,MAAM,aAAa,KAChB,IAAI,CAAC,MAAM,EAAE,SAAS,EACtB,OAAO,CAAC,MAAmB,OAAO,MAAM,QAAQ;AAAA,EACnD,MAAM,YAAY,WAAW;AAAA,EAC7B,MAAM,UAAU,WAAW,WAAW,SAAS;AAAA,EAC/C,IAAI,CAAC,aAAa,CAAC;AAAA,IAAS,OAAO;AAAA,EACnC,OAAO;AAAA,IACL,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW,UAAS,IAAI,EAAE,QAAQ,WAAW,EAAE;AAAA,MAC/C;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,eAAe,GAAG;AAAA,MAC7B,aAAa,KAAK;AAAA,MAClB,SAAS,KAAK;AAAA,SACV,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,IACvC;AAAA,IACA;AAAA,EACF;AAAA;AAQK,SAAS,0BAA0B,GAAqB;AAAA,EAC7D,OAAO;AAAA,IACL,MAAM;AAAA,SAEA,SAAQ,CAAC,SAAgD;AAAA,MAC7D,IAAI,CAAC,SAAS;AAAA,QACZ,MAAM,IAAI,MACR,sEACE,0DACA,+BACJ;AAAA,MACF;AAAA,MACA,MAAM,OAAO,WAAW,OAAO;AAAA,MAC/B,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,IAAI,MAAM,4BAA4B,SAAS;AAAA,MACvD;AAAA,MACA,MAAM,QAAQ,KAAK,YAAY,IAC3B,mBAAmB,SAAS,CAAC,SAAS,KAAK,SAAS,OAAO,CAAC,IAC5D,CAAC,OAAO;AAAA,MACZ,MAAM,WAAgC,CAAC;AAAA,MACvC,WAAW,QAAQ,OAAO;AAAA,QACxB,MAAM,SAAS,mBAAmB,IAAI;AAAA,QACtC,IAAI;AAAA,UAAQ,SAAS,KAAK,OAAO,OAAO;AAAA,MAC1C;AAAA,MACA,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,UAAU,cAAc,EAAE,SAAS,CAAC;AAAA,MAC9D,OAAO;AAAA;AAAA,SAGH,UAAS,CAAC,SAAwD;AAAA,MACtE,MAAM,SAAS,mBAAmB,QAAQ,IAAI;AAAA,MAC9C,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,IAAI,MAAM,mCAAmC,QAAQ,MAAM;AAAA,MACnE;AAAA,MACA,OAAO,EAAE,SAAS,SAAS,OAAO,QAAQ;AAAA;AAAA,EAE9C;AAAA;;;ACrGF,IAAM,YAAoD;AAAA,EACxD,QAAQ,MAAM,uBAAuB;AAAA,EACrC,OAAO,MAAM,kBAAkB;AAAA,EAC/B,OAAO,MAAM,kBAAkB;AAAA,EAC/B,WAAW,MAAM,sBAAsB;AAAA,EACvC,YAAY,MAAM,2BAA2B;AAC/C;AAEO,SAAS,mBAAmB,CAAC,MAAgC;AAAA,EAClE,MAAM,UAAU,UAAU;AAAA,EAC1B,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,MACR,mCAAmC,2BAA2B,OAAO,KACnE,SACF,EAAE,KAAK,IAAI,GACb;AAAA,EACF;AAAA,EACA,OAAO,QAAQ;AAAA;AAGV,SAAS,yBAAyB,GAAa;AAAA,EACpD,OAAO,OAAO,KAAK,SAAS;AAAA;;ACG9B,SAAS,WAAW,CAAC,OAAe,OAAuB;AAAA,EACzD,MAAM,SAAS,KAAK,MAAM,KAAK;AAAA,EAC/B,IAAI,OAAO,MAAM,MAAM,GAAG;AAAA,IACxB,MAAM,IAAI,MAAM,WAAW,oBAAoB,KAAK,UAAU,KAAK,GAAG;AAAA,EACxE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,QAAQ,CAAC,OAA0C;AAAA,EAC1D,IAAI,UAAU;AAAA,IAAW,OAAO,OAAO;AAAA,EACvC,MAAM,SAAS,iBAAiB,OAAO,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAK;AAAA,EACzE,IAAI,OAAO,MAAM,MAAM,GAAG;AAAA,IACxB,MAAM,IAAI,MAAM,8BAA8B,KAAK,UAAU,KAAK,GAAG;AAAA,EACvE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,aAAa,CAAC,MAAkC;AAAA,EACvD,IACE,KAAK,UAAU,cACd,CAAC,OAAO,UAAU,KAAK,KAAK,KAAK,KAAK,SAAS,IAChD;AAAA,IACA,MAAM,IAAI,MACR,qBAAqB,KAAK,UAAU,KAAK,IAAI,oCAC/C;AAAA,EACF;AAAA;AAGF,SAAS,wBAAwB,CAC/B,GACA,GACQ;AAAA,EACR,OACE,YAAY,EAAE,SAAS,iBAAiB,IACtC,YAAY,EAAE,SAAS,iBAAiB,KAC1C,YAAY,EAAE,WAAW,mBAAmB,IAC1C,YAAY,EAAE,WAAW,mBAAmB,KAC9C,EAAE,QAAQ,cAAc,EAAE,OAAO,KACjC,EAAE,UAAU,cAAc,EAAE,SAAS,KACrC,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA;AAI/B,SAAS,iCAAiC,CACxC,GACA,GACQ;AAAA,EACR,OACE,YAAY,EAAE,QAAQ,WAAW,mBAAmB,IAClD,YAAY,EAAE,QAAQ,WAAW,mBAAmB,KACtD,YAAY,EAAE,QAAQ,SAAS,iBAAiB,IAC9C,YAAY,EAAE,QAAQ,SAAS,iBAAiB,KAClD,EAAE,QAAQ,QAAQ,cAAc,EAAE,QAAQ,OAAO,KACjD,EAAE,QAAQ,UAAU,cAAc,EAAE,QAAQ,SAAS,KACrD,EAAE,QAAQ,KAAK,cAAc,EAAE,QAAQ,IAAI;AAAA;AAI/C,SAAS,YAAY,CAAC,SAAiD;AAAA,EACrE,OAAO,QAAQ,IAAI,CAAC,YAAY;AAAA,OAC3B;AAAA,OACC,OAAO,aACP,EAAE,YAAY,OAAO,WAAW,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,EAAE,IAC7D,CAAC;AAAA,EACP,EAAE;AAAA;AAGJ,SAAS,kBAAkB,CAAC,YAA2C;AAAA,EACrE,MAAM,UAAU,aAAa,WAAW,OAAO;AAAA,EAC/C,MAAM,UAAU,gBAAgB,OAAO;AAAA,EACvC,IAAI,SAAS;AAAA,IACX,MAAM,IAAI,MACR,iCAAiC,WAAW,WAAW,OAAO,MAAM,SACtE;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,QAAQ,OAAO,CAAC,WAAW,OAAO,SAAS,MAAM;AAAA,EAC9D,MAAM,YAAY,KAAK,IAAI;AAAA,EAC3B,MAAM,UAAU,KAAK,KAAK,SAAS,IAAI;AAAA,EACvC,IAAI,CAAC,aAAa,CAAC,SAAS;AAAA,IAC1B,MAAM,IAAI,MACR,iCAAiC,WAAW,WAAW,OAAO,wBAChE;AAAA,EACF;AAAA,EACA,MAAM,OAAO,QAAQ,IAAI,SAAS,SAAS,QAAQ,KAAK;AAAA,EACxD,MAAM,OAAO,KAAK,UAAU,OAAO;AAAA,EAEnC,OAAO;AAAA,IACL,SAAS;AAAA,SACJ,WAAW;AAAA,MACd;AAAA,MACA;AAAA,MACA,WAAW,eAAe,IAAI;AAAA,MAC9B,aAAa,KAAK;AAAA,SACd,MAAM,MAAM,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,IACvC;AAAA,IACA;AAAA,EACF;AAAA;AAGF,SAAS,gBAAgB,CACvB,UACqB;AAAA,EACrB,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,WAAW,CAAC,GAAG,QAAQ,EAAE,KAAK,wBAAwB,GAAG;AAAA,IAGlE,MAAM,IAAI,WAAW,OAAO,GAAG,OAAO;AAAA,EACxC;AAAA,EACA,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC;AAAA;AAU3B,eAAsB,kBAAkB,CACtC,SACuB;AAAA,EACvB,MAAM,UAAU,SAAS,QAAQ,KAAK;AAAA,EACtC,MAAM,YAAY,IAAI;AAAA,EAEtB,WAAW,QAAQ,QAAQ,SAAS;AAAA,IAClC,cAAc,IAAI;AAAA,IAClB,MAAM,SAAS,oBAAoB,KAAK,IAAI;AAAA,IAI5C,MAAM,aAAa,MAAM,OAAO,SAAS,KAAK,OAAO;AAAA,IACrD,MAAM,WAAW,iBAAiB,UAAU,EACzC,OACC,CAAC,YACC,YAAY,QAAQ,SAAS,iBAAiB,IAAI,OACtD,EACC,KAAK,wBAAwB;AAAA,IAChC,MAAM,WACJ,KAAK,UAAU,YAAY,WAAW,SAAS,MAAM,CAAC,KAAK,KAAK;AAAA,IAElE,WAAW,WAAW,UAAU;AAAA,MAC9B,MAAM,aAAa,mBAAmB,MAAM,OAAO,UAAU,OAAO,CAAC;AAAA,MACrE,MAAM,MAAM,WAAW,WAAW,OAAO;AAAA,MACzC,IAAI,CAAC,UAAU,IAAI,GAAG;AAAA,QAAG,UAAU,IAAI,KAAK,UAAU;AAAA,IACxD;AAAA,EACF;AAAA,EAEA,OAAO,CAAC,GAAG,UAAU,OAAO,CAAC,EAAE,KAAK,iCAAiC;AAAA;;;AvB7DvE,IAAM,2BAA2B,IAAI,IAAI,CAAC,WAAW,CAAC;AAoBtD,SAAS,UAAU,GAAW;AAAA,EAC5B,MAAM,QAAQ,IAAI,KAAK,EACpB,YAAY,EACZ,QAAQ,SAAS,EAAE,EACnB,QAAQ,QAAQ,EAAE,EAClB,QAAQ,KAAK,GAAG;AAAA,EACnB,OAAO,SAAS;AAAA;AAGlB,SAAS,kBAAkB,CACzB,aACqB;AAAA,EACrB,OAAO,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,MAC/B,EAAE,QAAQ,UAAU,cAAc,EAAE,QAAQ,SAAS,KACrD,EAAE,QAAQ,QAAQ,cAAc,EAAE,QAAQ,OAAO,KACjD,EAAE,QAAQ,QAAQ,cAAc,EAAE,QAAQ,OAAO,KACjD,EAAE,QAAQ,UAAU,cAAc,EAAE,QAAQ,SAAS,CACvD;AAAA;AAGF,SAAS,mBAAmB,CAC1B,aACM;AAAA,EACN,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,cAAc,aAAa;AAAA,IACpC,MAAM,MAAM,WAAW,WAAW,OAAO;AAAA,IACzC,IAAI,KAAK,IAAI,GAAG,GAAG;AAAA,MACjB,MAAM,IAAI,MAAM,iCAAiC,KAAK;AAAA,IACxD;AAAA,IACA,KAAK,IAAI,GAAG;AAAA,IACZ,MAAM,UAAU,gBAAgB,WAAW,OAAO;AAAA,IAClD,IAAI,SAAS;AAAA,MACX,MAAM,IAAI,MAAM,+BAA+B,QAAQ,SAAS;AAAA,IAClE;AAAA,EACF;AAAA;AAGF,eAAsB,KAAK,CAAC,SAA6C;AAAA,EACvE,MAAM,MAAM,QAAQ,QAAQ,MAAM;AAAA,EAClC,QAAQ,QAAQ,eAAe;AAAA,EAC/B,oBAAoB,QAAQ,WAAW;AAAA,EAEvC,MAAM,QAAQ,MAAM,eAAe,QAAQ,SAAS;AAAA,OAC9C,QAAQ,YAAY,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC;AAAA,EAC9D,CAAC;AAAA,EACD,MAAM,YAAY,MAAM;AAAA,EACxB,MAAM,YAAY,MAAM;AAAA,EAExB,IAAI,QAAQ,YAAY,WAAW,GAAG;AAAA,IACpC,OAAO,EAAE,MAAM,mBAAmB;AAAA,EACpC;AAAA,EACA,MAAM,uBAAuB,KAAK;AAAA,EAElC,MAAM,UAAU,MAAM,iBAAiB,SAAS;AAAA,EAChD,MAAM,uBAAuB,IAAI;AAAA,EACjC,MAAM,sBAAsB,IAAI;AAAA,EAChC,MAAM,sBAA2C,CAAC;AAAA,EAElD,WAAW,cAAc,mBAAmB,QAAQ,WAAW,GAAG;AAAA,IAChE,MAAM,UAAU,WAAW;AAAA,IAC3B,MAAM,MAAM,WAAW,OAAO;AAAA,IAC9B,IAAI,UAAU,CAAC,GAAG,WAAW,OAAO;AAAA,IAEpC,IAAI,yBAAyB,IAAI,QAAQ,OAAO,GAAG;AAAA,MACjD,MAAM,SAAS,QAAQ;AAAA,MACvB,IAAI,QAAQ;AAAA,QACV,MAAM,OAAO,QAAQ,OACnB,CAAC,WACC,OAAO,SAAS,WACf,OAAO,aAAa,MAAM,OAAO,gBACtC;AAAA,QACA,IAAI,KAAK,WAAW,GAAG;AAAA,UACrB,IACE,YAAY,yBAAyB,OAAO,4BAC9C;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR,GAAG,QAAQ,OAAO,CAAC,WAAW,OAAO,SAAS,MAAM;AAAA,UACpD,GAAG;AAAA,QACL;AAAA,MACF;AAAA,MACA,MAAM,SAAS,CAAC,GAAG,OAAO,EACvB,QAAQ,EACR,KAAK,CAAC,WAAW,OAAO,SAAS,UAAU,OAAO,SAAS,GAC1D;AAAA,MACJ,IAAI;AAAA,QAAQ,qBAAqB,IAAI,KAAK,MAAM;AAAA,IAClD;AAAA,IAIA,MAAM,OAAO,oBAAoB,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA,IACjE,oBAAoB,IAAI,KAAK,IAAI;AAAA,IACjC,oBAAoB,KAAK;AAAA,SACpB;AAAA,MACH,WAAW,eAAe,IAAI;AAAA,IAChC,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,oBAAoB,WAAW,GAAG;AAAA,IACpC,OAAO,EAAE,MAAM,mBAAmB;AAAA,EACpC;AAAA,EAEA,MAAM,UAAU,iBACd,qBACA,QAAQ,oBAAoB,4BAC5B,QAAQ,0BAA0B,8BACpC;AAAA,EACA,IAAI,QAAQ,UAAU;AAAA,IACpB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EAEA,QAAQ,QAAQ,eAAe;AAAA,EAC/B,MAAM,OAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C,MAAM,UAAU,OAAK,MAAM,SAAS,WAAW,CAAC;AAAA,EAChD,MAAM,OAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EAKxC,MAAM,4BAA4B,YAAY;AAAA,IAC5C,IAAI,CAAC,QAAQ,QAAQ;AAAA,MAAS;AAAA,IAC9B,IAAI,+CAA+C;AAAA,IACnD,MAAM,IAAG,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE;AAAA,IAClE,QAAQ,OAAO,eAAe;AAAA;AAAA,EAGhC,MAAM,UAAU,MAAM,mBAAmB,QAAQ,QAAQ;AAAA,IACvD,kBAAkB,MAAM,OAAO;AAAA,IAC/B,mBAAmB,MAAM;AAAA,IACzB,OAAO,MAAM,OAAO;AAAA,IACpB;AAAA,EACF,CAAC;AAAA,EACD,IAAI,MAAM,OAAO,qBAAqB,QAAQ,kBAAkB;AAAA,IAC9D,MAAM,OAAO,mBAAmB,QAAQ;AAAA,IACxC,MAAM,qBAAqB,KAAK;AAAA,EAClC;AAAA,EAEA,IACE,YAAY,oBAAoB,2BAA2B,QAAQ,kBACrE;AAAA,EACA,MAAM,eAAe,MAAM,oBAAoB;AAAA,IAC7C,QAAQ,QAAQ;AAAA,IAChB,kBAAkB,QAAQ;AAAA,IAC1B,eAAe,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,MAAM,OAAO,MAAM;AAAA,IAChC,aAAa,QAAQ,eAAe,QAAQ;AAAA,OACxC,QAAQ,cAAc,EAAE,aAAa,QAAQ,YAAY,IAAI,CAAC;AAAA,OAC9D,QAAQ,SAAS,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;AAAA,IACnD;AAAA,EACF,CAAC;AAAA,EACD,MAAM,0BAA0B;AAAA,EAEhC,MAAM,cAAc,MAAM,oBAAoB;AAAA,IAC5C,QAAQ,QAAQ;AAAA,IAChB,mBAAmB,MAAM;AAAA,IACzB;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,aAAa,MAAM,OAAO,MAAM;AAAA,IAChC,iBAAiB;AAAA,OACb,QAAQ,cAAc,EAAE,aAAa,QAAQ,YAAY,IAAI,CAAC;AAAA,OAC9D,QAAQ,SAAS,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;AAAA,IACnD;AAAA,EACF,CAAC;AAAA,EACD,MAAM,0BAA0B;AAAA,EAEhC,MAAM,sBAAsB,aAAa,MAAM,CAAC,UAAU,MAAM,OAAO;AAAA,EACvE,MAAM,UAAU,uBAAuB,YAAY;AAAA,EAEnD,IAAI,WAAW,qBAAqB,OAAO,GAAG;AAAA,IAC5C,MAAM,gBAAgB,IAAI,IACxB,aACG,OAAO,CAAC,UAAU,MAAM,OAAO,EAC/B,QAAQ,CAAC,UAAU,MAAM,UAAU,CACxC;AAAA,IACA,IAAI,WAAW;AAAA,IACf,YAAY,KAAK,qBAAqB,sBAAsB;AAAA,MAC1D,IAAI,CAAC,cAAc,IAAI,GAAG;AAAA,QAAG;AAAA,MAC7B,QAAQ,OAAO,EAAE,iBAAiB;AAAA,MAClC,YAAY;AAAA,IACd;AAAA,IACA,IAAI,WAAW,GAAG;AAAA,MAChB,MAAM,iBAAiB,WAAW,OAAO;AAAA,MACzC,IAAI,qBAAqB,oBAAoB;AAAA,IAC/C;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,SAAS;AAAA,IACT;AAAA,IACA,kBAAkB,QAAQ;AAAA,IAC1B,mBAAmB,MAAM;AAAA,EAC3B;AAAA;;;AD7KF,eAAsB,WAAW,CAAC,UAA8B,CAAC,GAAoB;AAAA,EACnF,2BAA2B,OAAO;AAAA,EAClC,OAAO,IAAI,iBAAiB,EAAE,YAAY,OAAO;AAAA;AAkB5C,SAAS,aAAa,CAC3B,SACA,UAAgC,CAAC,GACf;AAAA,EAClB,6BAA6B,OAAO;AAAA,EACpC,IAAI,SAAS;AAAA,IACX,OAAO,IAAI,iBAAiB,EAAE,cAAc,SAAS,OAAO;AAAA,EAC9D;AAAA,EAGA,OAAO,IAAI,iBAAiB,EAAE,SAAS,SAAS,WAAW,QAAQ,CAAC,EAAE,cAAc,OAAO;AAAA;AAqBtF,SAAS,aAAa,CAC3B,IACA,UAAgC,CAAC,GACf;AAAA,EAClB,6BAA6B,OAAO;AAAA,EACpC,OAAO,IAAI,iBAAiB,EAAE,cAAc,IAAI,OAAO;AAAA;AAwBzD,eAAsB,MAAM,CAC1B,SACA,SAC2B;AAAA,EAE3B,MAAM,UAAU,UACZ,cAAc,OAAO,IACrB,cAAc;AAAA,EAElB,IAAI;AAAA,IACF,OAAO,MAAO,QAAwB,QAAQ,OAAO;AAAA,YACrD;AAAA,IACA,QAAQ,MAAM;AAAA;AAAA;AAqClB,eAAsB,kBAAkB,CACtC,SACA,UAA+B,CAAC,GACH;AAAA,EAG7B,MAAM,UAAU,IAAI,iBAAiB,EAAE,cAAc,SAAS;AAAA,IAC5D,gBAAgB;AAAA,EAClB,CAAC;AAAA,EACD,MAAO,QAAiC,WAAW;AAAA,EACnD,IAAI;AAAA,IACF,OAAO,MAAM,QAAQ,aAAa,OAAO;AAAA,YACzC;AAAA,IACA,QAAQ,MAAM;AAAA;AAAA;AAsBX,SAAS,aAAa,CAAC,UAAgC;AAAA,EAC5D,MAAM,OAAO,cAAa,QAAQ,EAAE,SAAS,QAAQ;AAAA,EACrD,MAAM,MAAM,SAAS,YAAY;AAAA,EACjC,MAAM,aACJ,IAAI,SAAS,MAAM,IAAI,cACrB,IAAI,SAAS,MAAM,IAAI,cACvB,IAAI,SAAS,OAAO,IAAI,eACxB;AAAA,EAEJ,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,MAAM,UAAU,YAAY,KAAK;AAAA,EAC7C;AAAA;AAeK,SAAS,eAAe,CAC7B,MACA,aAAmD,aACrC;AAAA,EACd,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,MAAM,UAAU,YAAY,KAAK;AAAA,EAC7C;AAAA;AAgBF,eAAsB,YAAY,CAAC,KAAoC;AAAA,EACrE,MAAM,WAAW,MAAM,MAAM,GAAG;AAAA,EAChC,MAAM,SAAS,MAAM,SAAS,YAAY;AAAA,EAC1C,MAAM,OAAO,OAAO,KAAK,MAAM,EAAE,SAAS,QAAQ;AAAA,EAGlD,MAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AAAA,EACvD,IAAI,aAAmD;AAAA,EAEvD,IAAI,aAAa,SAAS,MAAM,KAAK,aAAa,SAAS,KAAK,KAAK,IAAI,MAAM,WAAW,GAAG;AAAA,IAC3F,aAAa;AAAA,EACf,EAAO,SAAI,aAAa,SAAS,KAAK,KAAK,IAAI,SAAS,MAAM,GAAG;AAAA,IAC/D,aAAa;AAAA,EACf,EAAO,SAAI,aAAa,SAAS,MAAM,KAAK,IAAI,SAAS,OAAO,GAAG;AAAA,IACjE,aAAa;AAAA,EACf;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,MAAM,UAAU,YAAY,KAAK;AAAA,EAC7C;AAAA;",
47
+ "debugId": "C709C7C965B8180B64756E2164756E21",
48
48
  "names": []
49
49
  }