zelari-code 0.1.0

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.
Files changed (146) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +156 -0
  3. package/bin/zelari-code.js +64 -0
  4. package/dist/agents/advancedTools.js +115 -0
  5. package/dist/agents/advancedTools.js.map +1 -0
  6. package/dist/agents/councilApi.js +375 -0
  7. package/dist/agents/councilApi.js.map +1 -0
  8. package/dist/agents/councilDirectives.js +100 -0
  9. package/dist/agents/councilDirectives.js.map +1 -0
  10. package/dist/agents/promoteMember.js +210 -0
  11. package/dist/agents/promoteMember.js.map +1 -0
  12. package/dist/agents/promptModules.js +139 -0
  13. package/dist/agents/promptModules.js.map +1 -0
  14. package/dist/agents/roles.js +281 -0
  15. package/dist/agents/roles.js.map +1 -0
  16. package/dist/agents/skills/builtin/debugging.js +248 -0
  17. package/dist/agents/skills/builtin/debugging.js.map +1 -0
  18. package/dist/agents/skills/builtin/docs.js +301 -0
  19. package/dist/agents/skills/builtin/docs.js.map +1 -0
  20. package/dist/agents/skills/builtin/git-ops.js +301 -0
  21. package/dist/agents/skills/builtin/git-ops.js.map +1 -0
  22. package/dist/agents/skills/builtin/planning.js +335 -0
  23. package/dist/agents/skills/builtin/planning.js.map +1 -0
  24. package/dist/agents/skills/builtin/refactoring.js +261 -0
  25. package/dist/agents/skills/builtin/refactoring.js.map +1 -0
  26. package/dist/agents/skills/builtin/review.js +302 -0
  27. package/dist/agents/skills/builtin/review.js.map +1 -0
  28. package/dist/agents/skills/builtin/testing.js +245 -0
  29. package/dist/agents/skills/builtin/testing.js.map +1 -0
  30. package/dist/agents/skills.js +272 -0
  31. package/dist/agents/skills.js.map +1 -0
  32. package/dist/agents/systemPromptBuilder.js +151 -0
  33. package/dist/agents/systemPromptBuilder.js.map +1 -0
  34. package/dist/agents/toolSchemas.js +249 -0
  35. package/dist/agents/toolSchemas.js.map +1 -0
  36. package/dist/agents/tools.js +196 -0
  37. package/dist/agents/tools.js.map +1 -0
  38. package/dist/agents/vaultTools.js +134 -0
  39. package/dist/agents/vaultTools.js.map +1 -0
  40. package/dist/cli/app.js +1823 -0
  41. package/dist/cli/app.js.map +1 -0
  42. package/dist/cli/branchManager.js +280 -0
  43. package/dist/cli/branchManager.js.map +1 -0
  44. package/dist/cli/compaction.js +63 -0
  45. package/dist/cli/compaction.js.map +1 -0
  46. package/dist/cli/components/ChatStream.js +23 -0
  47. package/dist/cli/components/ChatStream.js.map +1 -0
  48. package/dist/cli/components/CollapsibleToolOutput.js +38 -0
  49. package/dist/cli/components/CollapsibleToolOutput.js.map +1 -0
  50. package/dist/cli/components/Header.js +31 -0
  51. package/dist/cli/components/Header.js.map +1 -0
  52. package/dist/cli/components/InputBar.js +9 -0
  53. package/dist/cli/components/InputBar.js.map +1 -0
  54. package/dist/cli/components/Sidebar.js +17 -0
  55. package/dist/cli/components/Sidebar.js.map +1 -0
  56. package/dist/cli/councilCost.js +81 -0
  57. package/dist/cli/councilCost.js.map +1 -0
  58. package/dist/cli/councilDispatcher.js +56 -0
  59. package/dist/cli/councilDispatcher.js.map +1 -0
  60. package/dist/cli/councilFeedback.js +164 -0
  61. package/dist/cli/councilFeedback.js.map +1 -0
  62. package/dist/cli/crossProviderFailover.js +83 -0
  63. package/dist/cli/crossProviderFailover.js.map +1 -0
  64. package/dist/cli/gitOps.js +96 -0
  65. package/dist/cli/gitOps.js.map +1 -0
  66. package/dist/cli/grokOAuth.js +375 -0
  67. package/dist/cli/grokOAuth.js.map +1 -0
  68. package/dist/cli/keyStore.js +263 -0
  69. package/dist/cli/keyStore.js.map +1 -0
  70. package/dist/cli/keyValidator.js +83 -0
  71. package/dist/cli/keyValidator.js.map +1 -0
  72. package/dist/cli/main.bundled.js +21428 -0
  73. package/dist/cli/main.bundled.js.map +7 -0
  74. package/dist/cli/main.js +72 -0
  75. package/dist/cli/main.js.map +1 -0
  76. package/dist/cli/metrics.js +131 -0
  77. package/dist/cli/metrics.js.map +1 -0
  78. package/dist/cli/modelDiscovery.js +234 -0
  79. package/dist/cli/modelDiscovery.js.map +1 -0
  80. package/dist/cli/modelPricing.js +112 -0
  81. package/dist/cli/modelPricing.js.map +1 -0
  82. package/dist/cli/oauthCallbackServer.js +207 -0
  83. package/dist/cli/oauthCallbackServer.js.map +1 -0
  84. package/dist/cli/provider/openai-compatible.js +236 -0
  85. package/dist/cli/provider/openai-compatible.js.map +1 -0
  86. package/dist/cli/providerConfig.js +210 -0
  87. package/dist/cli/providerConfig.js.map +1 -0
  88. package/dist/cli/providerFailover.js +90 -0
  89. package/dist/cli/providerFailover.js.map +1 -0
  90. package/dist/cli/refreshRegistry.js +77 -0
  91. package/dist/cli/refreshRegistry.js.map +1 -0
  92. package/dist/cli/safety/auditLogger.js +111 -0
  93. package/dist/cli/safety/auditLogger.js.map +1 -0
  94. package/dist/cli/safety/sandboxPath.js +62 -0
  95. package/dist/cli/safety/sandboxPath.js.map +1 -0
  96. package/dist/cli/safety/shellBlocklist.js +71 -0
  97. package/dist/cli/safety/shellBlocklist.js.map +1 -0
  98. package/dist/cli/sessionManager.js +149 -0
  99. package/dist/cli/sessionManager.js.map +1 -0
  100. package/dist/cli/skillCache.js +205 -0
  101. package/dist/cli/skillCache.js.map +1 -0
  102. package/dist/cli/skillHistory.js +178 -0
  103. package/dist/cli/skillHistory.js.map +1 -0
  104. package/dist/cli/skillSuggest.js +132 -0
  105. package/dist/cli/skillSuggest.js.map +1 -0
  106. package/dist/cli/slashCommands.js +431 -0
  107. package/dist/cli/slashCommands.js.map +1 -0
  108. package/dist/cli/toolRegistry.js +187 -0
  109. package/dist/cli/toolRegistry.js.map +1 -0
  110. package/dist/cli/updater.js +157 -0
  111. package/dist/cli/updater.js.map +1 -0
  112. package/dist/main/core/AgentHarness.js +345 -0
  113. package/dist/main/core/AgentHarness.js.map +1 -0
  114. package/dist/main/core/providerStream.js +99 -0
  115. package/dist/main/core/providerStream.js.map +1 -0
  116. package/dist/main/core/sessionJsonl.js +99 -0
  117. package/dist/main/core/sessionJsonl.js.map +1 -0
  118. package/dist/main/core/tools/auditLog.js +26 -0
  119. package/dist/main/core/tools/auditLog.js.map +1 -0
  120. package/dist/main/core/tools/builtin/filesystem.js +110 -0
  121. package/dist/main/core/tools/builtin/filesystem.js.map +1 -0
  122. package/dist/main/core/tools/builtin/search.js +56 -0
  123. package/dist/main/core/tools/builtin/search.js.map +1 -0
  124. package/dist/main/core/tools/builtin/shell.js +51 -0
  125. package/dist/main/core/tools/builtin/shell.js.map +1 -0
  126. package/dist/main/core/tools/registry.js +71 -0
  127. package/dist/main/core/tools/registry.js.map +1 -0
  128. package/dist/main/core/tools/toolTypes.js +8 -0
  129. package/dist/main/core/tools/toolTypes.js.map +1 -0
  130. package/dist/main/core/tools/zodBridge.js +48 -0
  131. package/dist/main/core/tools/zodBridge.js.map +1 -0
  132. package/dist/shared/eventBus.js +104 -0
  133. package/dist/shared/eventBus.js.map +1 -0
  134. package/dist/shared/events.js +73 -0
  135. package/dist/shared/events.js.map +1 -0
  136. package/dist/shared/index.js +8 -0
  137. package/dist/shared/index.js.map +1 -0
  138. package/dist/types/context.js +3 -0
  139. package/dist/types/context.js.map +1 -0
  140. package/dist/types/index.js +2 -0
  141. package/dist/types/index.js.map +1 -0
  142. package/dist/types/knowledge.js +2 -0
  143. package/dist/types/knowledge.js.map +1 -0
  144. package/dist/types/systemTypes.js +10 -0
  145. package/dist/types/systemTypes.js.map +1 -0
  146. package/package.json +63 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cli/oauthCallbackServer.ts", "../../src/cli/grokOAuth.ts", "../../src/cli/refreshRegistry.ts", "../../src/cli/keyStore.ts", "../../src/cli/updater.ts", "../../src/cli/main.ts", "../../src/cli/app.tsx", "../../src/cli/components/Header.tsx", "../../src/cli/modelPricing.ts", "../../src/cli/components/ChatStream.tsx", "../../src/cli/components/CollapsibleToolOutput.tsx", "../../src/cli/components/InputBar.tsx", "../../src/cli/components/Sidebar.tsx", "../../src/cli/slashCommands.ts", "../../src/agents/skills.ts", "../../src/agents/roles.ts", "../../src/agents/promoteMember.ts", "../../src/shared/events.ts", "../../src/main/core/AgentHarness.ts", "../../src/main/core/sessionJsonl.ts", "../../src/cli/provider/openai-compatible.ts", "../../src/cli/providerConfig.ts", "../../src/cli/providerFailover.ts", "../../src/cli/crossProviderFailover.ts", "../../src/cli/sessionManager.ts", "../../src/agents/vaultTools.ts", "../../src/agents/advancedTools.ts", "../../src/agents/tools.ts", "../../src/agents/toolSchemas.ts", "../../src/agents/councilDirectives.ts", "../../src/agents/promptModules.ts", "../../src/agents/systemPromptBuilder.ts", "../../src/agents/councilApi.ts", "../../src/cli/councilDispatcher.ts", "../../src/cli/councilFeedback.ts", "../../src/cli/modelDiscovery.ts", "../../src/cli/keyValidator.ts", "../../src/cli/branchManager.ts", "../../src/main/core/tools/zodBridge.ts", "../../src/main/core/tools/toolTypes.ts", "../../src/main/core/tools/registry.ts", "../../node_modules/zod/v4/classic/external.js", "../../node_modules/zod/v4/core/index.js", "../../node_modules/zod/v4/core/core.js", "../../node_modules/zod/v4/core/util.js", "../../node_modules/zod/v4/core/errors.js", "../../node_modules/zod/v4/core/parse.js", "../../node_modules/zod/v4/core/regexes.js", "../../node_modules/zod/v4/core/checks.js", "../../node_modules/zod/v4/core/doc.js", "../../node_modules/zod/v4/core/versions.js", "../../node_modules/zod/v4/core/schemas.js", "../../node_modules/zod/v4/locales/index.js", "../../node_modules/zod/v4/locales/ar.js", "../../node_modules/zod/v4/locales/az.js", "../../node_modules/zod/v4/locales/be.js", "../../node_modules/zod/v4/locales/bg.js", "../../node_modules/zod/v4/locales/ca.js", "../../node_modules/zod/v4/locales/cs.js", "../../node_modules/zod/v4/locales/da.js", "../../node_modules/zod/v4/locales/de.js", "../../node_modules/zod/v4/locales/el.js", "../../node_modules/zod/v4/locales/en.js", "../../node_modules/zod/v4/locales/eo.js", "../../node_modules/zod/v4/locales/es.js", "../../node_modules/zod/v4/locales/fa.js", "../../node_modules/zod/v4/locales/fi.js", "../../node_modules/zod/v4/locales/fr.js", "../../node_modules/zod/v4/locales/fr-CA.js", "../../node_modules/zod/v4/locales/he.js", "../../node_modules/zod/v4/locales/hr.js", "../../node_modules/zod/v4/locales/hu.js", "../../node_modules/zod/v4/locales/hy.js", "../../node_modules/zod/v4/locales/id.js", "../../node_modules/zod/v4/locales/is.js", "../../node_modules/zod/v4/locales/it.js", "../../node_modules/zod/v4/locales/ja.js", "../../node_modules/zod/v4/locales/ka.js", "../../node_modules/zod/v4/locales/km.js", "../../node_modules/zod/v4/locales/kh.js", "../../node_modules/zod/v4/locales/ko.js", "../../node_modules/zod/v4/locales/lt.js", "../../node_modules/zod/v4/locales/mk.js", "../../node_modules/zod/v4/locales/ms.js", "../../node_modules/zod/v4/locales/nl.js", "../../node_modules/zod/v4/locales/no.js", "../../node_modules/zod/v4/locales/ota.js", "../../node_modules/zod/v4/locales/ps.js", "../../node_modules/zod/v4/locales/pl.js", "../../node_modules/zod/v4/locales/pt.js", "../../node_modules/zod/v4/locales/ro.js", "../../node_modules/zod/v4/locales/ru.js", "../../node_modules/zod/v4/locales/sl.js", "../../node_modules/zod/v4/locales/sv.js", "../../node_modules/zod/v4/locales/ta.js", "../../node_modules/zod/v4/locales/th.js", "../../node_modules/zod/v4/locales/tr.js", "../../node_modules/zod/v4/locales/uk.js", "../../node_modules/zod/v4/locales/ua.js", "../../node_modules/zod/v4/locales/ur.js", "../../node_modules/zod/v4/locales/uz.js", "../../node_modules/zod/v4/locales/vi.js", "../../node_modules/zod/v4/locales/zh-CN.js", "../../node_modules/zod/v4/locales/zh-TW.js", "../../node_modules/zod/v4/locales/yo.js", "../../node_modules/zod/v4/core/registries.js", "../../node_modules/zod/v4/core/api.js", "../../node_modules/zod/v4/core/to-json-schema.js", "../../node_modules/zod/v4/core/json-schema-processors.js", "../../node_modules/zod/v4/core/json-schema-generator.js", "../../node_modules/zod/v4/core/json-schema.js", "../../node_modules/zod/v4/classic/schemas.js", "../../node_modules/zod/v4/classic/checks.js", "../../node_modules/zod/v4/classic/iso.js", "../../node_modules/zod/v4/classic/errors.js", "../../node_modules/zod/v4/classic/parse.js", "../../node_modules/zod/v4/classic/compat.js", "../../node_modules/zod/v4/classic/from-json-schema.js", "../../node_modules/zod/v4/classic/coerce.js", "../../src/main/core/tools/builtin/filesystem.ts", "../../src/main/core/tools/builtin/shell.ts", "../../src/main/core/tools/builtin/search.ts", "../../src/cli/safety/sandboxPath.ts", "../../src/cli/safety/shellBlocklist.ts", "../../src/cli/safety/auditLogger.ts", "../../src/cli/toolRegistry.ts", "../../src/cli/gitOps.ts", "../../src/cli/compaction.ts", "../../src/cli/metrics.ts", "../../src/cli/skillHistory.ts"],
4
+ "sourcesContent": ["/**\r\n * oauthCallbackServer \u2014 minimal HTTP server for OAuth browser-flow callbacks.\r\n *\r\n * The CLI uses this to receive the redirect from the OAuth provider after\r\n * the user authenticates in their browser. The server:\r\n * - listens on a local port (default 14523) on 127.0.0.1\r\n * - captures `?code=XXX` from the first request to `expectedPath`\r\n * - returns a friendly 200 HTML response so the user can close the tab\r\n * - resolves a single `waitForCode()` Promise with the code, or rejects on timeout\r\n * - shuts itself down after capture (or via explicit close())\r\n *\r\n * No deps \u2014 pure node:http. Browser-importable for jsdom tests.\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v2.md (Task 16.1)\r\n */\r\n\r\nimport { createServer, type Server, type IncomingMessage, type ServerResponse } from 'node:http';\r\nimport type { AddressInfo } from 'node:net';\r\n\r\nexport interface OAuthCallbackServerOptions {\r\n /** Preferred port. If 0, the OS picks a free port. Default: 14523. */\r\n port?: number;\r\n /** Host to bind to. Default: '127.0.0.1'. */\r\n host?: string;\r\n /** Maximum time to wait for a callback. Default: 60000ms. */\r\n timeoutMs?: number;\r\n /** Path that the OAuth provider will redirect to. Default: '/oauth/callback'. */\r\n expectedPath?: string;\r\n /** HTML page returned to the user's browser after capture. */\r\n successHtml?: string;\r\n}\r\n\r\n/**\r\n * Captured OAuth callback query params (everything the provider sent back).\r\n * Most OAuth providers return at least `code` and `state`; some also include\r\n * `error` + `error_description` on authorization failure.\r\n */\r\nexport interface OAuthCallbackParams {\r\n code?: string;\r\n state?: string;\r\n error?: string;\r\n errorDescription?: string;\r\n /** Any additional raw params the provider returned (e.g. `iss`, `session_state`). */\r\n extras: Record<string, string>;\r\n}\r\n\r\nexport interface OAuthCallbackServerHandle {\r\n /** Port the server is listening on (useful when port=0). */\r\n port: number;\r\n /** Resolves with the captured params (code + state + error), or rejects on timeout / close. */\r\n waitForCode: () => Promise<OAuthCallbackParams>;\r\n /** Close the server immediately (rejects any pending waitForCode). */\r\n close: () => void;\r\n}\r\n\r\nconst DEFAULT_SUCCESS_HTML = `\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <title>zelari-code OAuth</title>\r\n</head>\r\n<body style=\"font-family: -apple-system, BlinkMacSystemFont, sans-serif; padding: 40px; text-align: center; color: #1a1a1a;\">\r\n <h1 style=\"color: #00aa33;\">\u2713 Authentication complete</h1>\r\n <p>You can close this tab and return to zelari-code.</p>\r\n</body>\r\n</html>\r\n`.trim();\r\n\r\nexport class OAuthCallbackTimeoutError extends Error {\r\n constructor(timeoutMs: number) {\r\n super(`OAuth callback not received within ${timeoutMs}ms`);\r\n this.name = 'OAuthCallbackTimeoutError';\r\n }\r\n}\r\n\r\nexport class OAuthCallbackClosedError extends Error {\r\n constructor() {\r\n super('OAuth callback server closed before receiving a callback');\r\n this.name = 'OAuthCallbackClosedError';\r\n }\r\n}\r\n\r\nexport class OAuthCallbackError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = 'OAuthCallbackError';\r\n }\r\n}\r\n\r\n/**\r\n * Start the OAuth callback server. Returns a handle with port + waitForCode + close.\r\n *\r\n * The first request to `expectedPath` resolves waitForCode with the `code`\r\n * query parameter. Any other path returns a 404.\r\n */\r\nexport function startOAuthCallbackServer(\r\n options: OAuthCallbackServerOptions = {},\r\n): Promise<OAuthCallbackServerHandle> {\r\n const host = options.host ?? '127.0.0.1';\r\n const preferredPort = options.port ?? 14523;\r\n const timeoutMs = options.timeoutMs ?? 60_000;\r\n const expectedPath = options.expectedPath ?? '/oauth/callback';\r\n const successHtml = options.successHtml ?? DEFAULT_SUCCESS_HTML;\r\n\r\n return new Promise((resolveStart, rejectStart) => {\r\n let resolved = false;\r\n let resolveCode: ((params: OAuthCallbackParams) => void) | null = null;\r\n let rejectCode: ((err: Error) => void) | null = null;\r\n let timeoutHandle: NodeJS.Timeout | null = null;\r\n\r\n const server: Server = createServer((req: IncomingMessage, res: ServerResponse) => {\r\n try {\r\n if (!req.url) {\r\n res.writeHead(400, { 'Content-Type': 'text/plain' });\r\n res.end('Bad request');\r\n return;\r\n }\r\n // Parse path + query.\r\n const url = new URL(req.url, `http://${host}:${preferredPort}`);\r\n if (url.pathname !== expectedPath) {\r\n res.writeHead(404, { 'Content-Type': 'text/plain' });\r\n res.end('Not found');\r\n return;\r\n }\r\n const code = url.searchParams.get('code');\r\n const state = url.searchParams.get('state');\r\n const errorParam = url.searchParams.get('error');\r\n const errorDescription = url.searchParams.get('error_description');\r\n // Capture any extra params for diagnostics / future use.\r\n const extras: Record<string, string> = {};\r\n for (const [key, value] of url.searchParams.entries()) {\r\n if (key !== 'code' && key !== 'state' && key !== 'error' && key !== 'error_description') {\r\n extras[key] = value;\r\n }\r\n }\r\n const params: OAuthCallbackParams = {\r\n ...(code ? { code } : {}),\r\n ...(state ? { state } : {}),\r\n ...(errorParam ? { error: errorParam } : {}),\r\n ...(errorDescription ? { errorDescription } : {}),\r\n extras,\r\n };\r\n if (errorParam) {\r\n // OAuth provider returned an error (e.g. user denied).\r\n res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });\r\n res.end(`<h1>OAuth error: ${errorParam}</h1>`);\r\n if (rejectCode && !resolved) {\r\n resolved = true;\r\n if (timeoutHandle) clearTimeout(timeoutHandle);\r\n rejectCode(new OAuthCallbackError(`OAuth provider returned error: ${errorParam}`));\r\n }\r\n return;\r\n }\r\n if (!code) {\r\n res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });\r\n res.end('<h1>Missing <code>code</code> query parameter</h1>');\r\n return;\r\n }\r\n // Success.\r\n res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });\r\n res.end(successHtml);\r\n if (resolveCode && !resolved) {\r\n resolved = true;\r\n if (timeoutHandle) clearTimeout(timeoutHandle);\r\n resolveCode(params);\r\n }\r\n // Give the response a moment to flush before closing.\r\n setTimeout(() => {\r\n try {\r\n server.close();\r\n } catch {\r\n // already closed\r\n }\r\n }, 100);\r\n } catch (err) {\r\n // Defensive: never crash the server on a single bad request.\r\n try {\r\n res.writeHead(500, { 'Content-Type': 'text/plain' });\r\n res.end('Internal error');\r\n } catch {\r\n // ignore\r\n }\r\n if (!resolved && rejectCode) {\r\n resolved = true;\r\n if (timeoutHandle) clearTimeout(timeoutHandle);\r\n rejectCode(err instanceof Error ? err : new Error(String(err)));\r\n }\r\n }\r\n });\r\n\r\n const onError = (err: Error) => {\r\n if (!resolved) {\r\n resolved = true;\r\n if (timeoutHandle) clearTimeout(timeoutHandle);\r\n rejectStart(err);\r\n }\r\n };\r\n server.once('error', onError);\r\n\r\n server.listen(preferredPort, host, () => {\r\n // Resolve with the actual bound port (important when port=0).\r\n const addr = server.address() as AddressInfo | null;\r\n const actualPort = addr ? addr.port : preferredPort;\r\n\r\n const waitForCode = (): Promise<OAuthCallbackParams> => {\r\n return new Promise((res, rej) => {\r\n if (resolved) {\r\n // Server already resolved (timeout fired, etc.) \u2014 reject.\r\n rej(new OAuthCallbackClosedError());\r\n return;\r\n }\r\n resolveCode = res;\r\n rejectCode = rej;\r\n timeoutHandle = setTimeout(() => {\r\n if (!resolved) {\r\n resolved = true;\r\n try {\r\n server.close();\r\n } catch {\r\n // ignore\r\n }\r\n rej(new OAuthCallbackTimeoutError(timeoutMs));\r\n }\r\n }, timeoutMs);\r\n // Don't keep the process alive just for this timer.\r\n if (typeof timeoutHandle?.unref === 'function') timeoutHandle.unref();\r\n });\r\n };\r\n\r\n const close = (): void => {\r\n if (timeoutHandle) clearTimeout(timeoutHandle);\r\n try {\r\n server.close();\r\n } catch {\r\n // ignore\r\n }\r\n if (!resolved && rejectCode) {\r\n resolved = true;\r\n rejectCode(new OAuthCallbackClosedError());\r\n }\r\n };\r\n\r\n resolveStart({ port: actualPort, waitForCode, close });\r\n });\r\n });\r\n}", "/**\r\n * grokOAuth \u2014 complete OAuth flow for xAI Grok / SuperGrok provider.\r\n *\r\n * Implements PKCE OAuth2 (RFC 7636) flow with OpenID Connect discovery,\r\n * matching the pattern used by the reference `supergrok-oauth` client\r\n * (https://github.com/toptoppy/supergrok-oauth).\r\n *\r\n * 1. Fetch OpenID Connect discovery document from `{issuer}/.well-known/openid-configuration`\r\n * 2. Generate PKCE verifier + S256 challenge\r\n * 3. Build authorization URL with state, scope, code_challenge\r\n * 4. Start local OAuth callback server (port 56121, path /callback)\r\n * 5. Open the user's browser to the authorization URL\r\n * 6. Wait for the redirect callback to deliver the authorization code\r\n * 7. Verify state to prevent CSRF\r\n * 8. Exchange code for access token (with code_verifier) at the token endpoint\r\n * 9. Return { accessToken, expiresAt, refreshToken }\r\n *\r\n * The browser launcher is INJECTED so tests can verify URL construction\r\n * without spawning a real browser. The fetch implementation is also injected\r\n * so tests can mock the token exchange.\r\n *\r\n * Default config (override via env GROK_OAUTH_CLIENT_ID):\r\n * - Issuer: https://auth.x.ai\r\n * - Client ID: b1a00492-073a-47ea-816f-4c329264a828 (xAI public OAuth client)\r\n * - Scope: openid profile email offline_access grok-cli:access api:access\r\n * - Redirect: http://127.0.0.1:56121/callback\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v2.md (Task 16.2)\r\n */\r\n\r\nimport { startOAuthCallbackServer, type OAuthCallbackServerHandle } from './oauthCallbackServer.js';\r\nimport nodeCrypto from 'node:crypto';\r\n\r\nconst { getRandomValues, createHash } = nodeCrypto;\r\n\r\nexport interface GrokOAuthOptions {\r\n /** OAuth client id (from env GROK_OAUTH_CLIENT_ID or default xAI public client). */\r\n clientId?: string;\r\n /** OAuth scopes. Default: xAI full SuperGrok scope. */\r\n scopes?: readonly string[];\r\n /** Callback port (default: 56121). Must match xAI registered redirect URI. */\r\n callbackPort?: number;\r\n /** Callback path (default: /callback). Must match xAI registered redirect URI. */\r\n callbackPath?: string;\r\n /** OAuth issuer (default: 'https://auth.x.ai'). Discovery URL is `${issuer}/.well-known/openid-configuration`. */\r\n issuer?: string;\r\n /** Override discovery URL (skips the .well-known fetch). */\r\n discoveryUrl?: string;\r\n /** Time to wait for browser callback (default: 120_000 ms). */\r\n callbackTimeoutMs?: number;\r\n /** Browser opener \u2014 opens the URL in the user's default browser. */\r\n onBrowserOpen?: (url: string) => void | Promise<void>;\r\n /** Fetch implementation for discovery + token exchange (default: global fetch). */\r\n fetchImpl?: typeof fetch;\r\n}\r\n\r\nexport interface GrokOAuthResult {\r\n /** Access token to use as Bearer for xAI API calls. */\r\n accessToken: string;\r\n /** Token expiration epoch ms (if provider returned expires_in). */\r\n expiresAt?: number;\r\n /** Refresh token (if provider returned one). */\r\n refreshToken?: string;\r\n /** Refresh token expiration epoch ms (if provider returned refresh_token_expires_in). */\r\n refreshExpiresAt?: number;\r\n}\r\n\r\nexport class GrokOAuthError extends Error {\r\n constructor(message: string, public readonly code?: string) {\r\n super(message);\r\n this.name = 'GrokOAuthError';\r\n }\r\n}\r\n\r\n/**\r\n * Default xAI OAuth client ID \u2014 public client registered for SuperGrok OAuth\r\n * (same as used by the reference supergrok-oauth Python client).\r\n */\r\nexport const DEFAULT_GROK_OAUTH_CLIENT_ID = 'b1a00492-073a-47ea-816f-4c329264a828';\r\n\r\n/** Default OAuth issuer for xAI authentication server. */\r\nexport const DEFAULT_GROK_OAUTH_ISSUER = 'https://auth.x.ai';\r\n\r\n/** Default OAuth scopes for full SuperGrok access (matches supergrok-oauth config). */\r\nexport const DEFAULT_GROK_OAUTH_SCOPES = [\r\n 'openid',\r\n 'profile',\r\n 'email',\r\n 'offline_access',\r\n 'grok-cli:access',\r\n 'api:access',\r\n] as const;\r\n\r\n/** Default redirect port (matches supergrok-oauth config). */\r\nexport const DEFAULT_GROK_OAUTH_REDIRECT_PORT = 56121;\r\n\r\n/** Default redirect path (matches supergrok-oauth config). */\r\nexport const DEFAULT_GROK_OAUTH_REDIRECT_PATH = '/callback';\r\n\r\n/** Fetch the OpenID Connect discovery document. */\r\nexport async function fetchGrokDiscovery(options: {\r\n issuer?: string;\r\n discoveryUrl?: string;\r\n fetchImpl?: typeof fetch;\r\n} = {}): Promise<{ authorizationEndpoint: string; tokenEndpoint: string }> {\r\n const fetchImpl = options.fetchImpl ?? fetch;\r\n const discoveryUrl = options.discoveryUrl ?? `${options.issuer ?? DEFAULT_GROK_OAUTH_ISSUER}/.well-known/openid-configuration`;\r\n let response: Response;\r\n try {\r\n response = await fetchImpl(discoveryUrl, { method: 'GET', headers: { Accept: 'application/json' } });\r\n } catch (err) {\r\n throw new GrokOAuthError(`OAuth discovery network error: ${err instanceof Error ? err.message : String(err)}`, 'discovery_network_error');\r\n }\r\n if (!response.ok) {\r\n const text = await response.text().catch(() => '');\r\n throw new GrokOAuthError(\r\n `OAuth discovery HTTP ${response.status}: ${text.slice(0, 200)}`,\r\n `discovery_http_${response.status}`,\r\n );\r\n }\r\n let body: unknown;\r\n try {\r\n body = await response.json();\r\n } catch (err) {\r\n throw new GrokOAuthError(`OAuth discovery returned invalid JSON: ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n if (!body || typeof body !== 'object') {\r\n throw new GrokOAuthError('OAuth discovery returned non-object body');\r\n }\r\n const obj = body as Record<string, unknown>;\r\n if (typeof obj.authorization_endpoint !== 'string' || typeof obj.token_endpoint !== 'string') {\r\n throw new GrokOAuthError('OAuth discovery missing authorization_endpoint or token_endpoint');\r\n }\r\n return {\r\n authorizationEndpoint: obj.authorization_endpoint,\r\n tokenEndpoint: obj.token_endpoint,\r\n };\r\n}\r\n\r\n/**\r\n * Generate PKCE verifier (RFC 7636) and S256 challenge.\r\n * Returns base64url-encoded strings (no padding).\r\n */\r\nexport function generatePkce(): { verifier: string; challenge: string } {\r\n // 64 random bytes \u2192 base64url \u2192 strip padding \u2192 take first 128 chars\r\n const random = getRandomValues(new Uint8Array(64));\r\n const verifier = Buffer.from(random).toString('base64url').slice(0, 128);\r\n\r\n // SHA-256(verifier) \u2192 base64url (no padding)\r\n const hash = createHash('sha256').update(verifier).digest();\r\n const challenge = hash.toString('base64url').replace(/=+$/, '');\r\n\r\n return { verifier, challenge };\r\n}\r\n\r\n/** Build the xAI authorization URL with PKCE. */\r\nexport function buildGrokAuthorizeUrl(options: {\r\n clientId: string;\r\n redirectUri: string;\r\n scopes?: readonly string[];\r\n state?: string;\r\n codeChallenge: string;\r\n authorizeEndpoint: string;\r\n}): string {\r\n const scopes = options.scopes ?? DEFAULT_GROK_OAUTH_SCOPES;\r\n const params = new URLSearchParams({\r\n client_id: options.clientId,\r\n redirect_uri: options.redirectUri,\r\n response_type: 'code',\r\n scope: scopes.join(' '),\r\n state: options.state ?? crypto.randomUUID(),\r\n code_challenge: options.codeChallenge,\r\n code_challenge_method: 'S256',\r\n });\r\n return `${options.authorizeEndpoint}?${params.toString()}`;\r\n}\r\n\r\n/** Exchange the authorization code for an access token. */\r\nexport async function exchangeGrokCode(options: {\r\n clientId: string;\r\n code: string;\r\n codeVerifier: string;\r\n redirectUri: string;\r\n tokenEndpoint: string;\r\n fetchImpl?: typeof fetch;\r\n}): Promise<GrokOAuthResult> {\r\n const fetchImpl = options.fetchImpl ?? fetch;\r\n let response: Response;\r\n try {\r\n response = await fetchImpl(options.tokenEndpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n Accept: 'application/json',\r\n },\r\n body: new URLSearchParams({\r\n grant_type: 'authorization_code',\r\n client_id: options.clientId,\r\n code: options.code,\r\n redirect_uri: options.redirectUri,\r\n code_verifier: options.codeVerifier,\r\n }).toString(),\r\n });\r\n } catch (err) {\r\n throw new GrokOAuthError(`Token exchange network error: ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n\r\n if (!response.ok) {\r\n const errText = await response.text().catch(() => '');\r\n throw new GrokOAuthError(\r\n `Token exchange HTTP ${response.status}: ${errText.slice(0, 200)}`,\r\n `http_${response.status}`,\r\n );\r\n }\r\n\r\n let body: unknown;\r\n try {\r\n body = await response.json();\r\n } catch (err) {\r\n throw new GrokOAuthError(`Token exchange returned invalid JSON: ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n\r\n if (!body || typeof body !== 'object') {\r\n throw new GrokOAuthError('Token exchange returned non-object body');\r\n }\r\n const obj = body as Record<string, unknown>;\r\n\r\n const accessToken = obj.access_token;\r\n if (typeof accessToken !== 'string' || accessToken.length === 0) {\r\n throw new GrokOAuthError('Token exchange response missing access_token', 'no_access_token');\r\n }\r\n\r\n return parseTokenResponseBody(obj, accessToken, 'Token exchange');\r\n}\r\n\r\n/**\r\n * Parse the standard OAuth token response body into a GrokOAuthResult.\r\n * Shared between `exchangeGrokCode` and `refreshGrokToken`.\r\n *\r\n * @param label Human-readable label for the operation (used in error messages).\r\n * @param accessToken Pre-validated access token from the body.\r\n */\r\nfunction parseTokenResponseBody(\r\n obj: Record<string, unknown>,\r\n accessToken: string,\r\n label: string,\r\n): GrokOAuthResult {\r\n const result: GrokOAuthResult = { accessToken };\r\n if (typeof obj.expires_in === 'number' && Number.isFinite(obj.expires_in)) {\r\n result.expiresAt = Date.now() + obj.expires_in * 1000;\r\n }\r\n if (typeof obj.refresh_token === 'string' && obj.refresh_token.length > 0) {\r\n result.refreshToken = obj.refresh_token;\r\n }\r\n // xAI SuperGrok OAuth also returns refresh_token_expires_in (refresh token TTL).\r\n // Capture it so callers can warn before the refresh token expires.\r\n if (typeof obj.refresh_token_expires_in === 'number' && Number.isFinite(obj.refresh_token_expires_in)) {\r\n result.refreshExpiresAt = Date.now() + obj.refresh_token_expires_in * 1000;\r\n }\r\n // Some providers also return `scope` \u2014 we ignore it for now.\r\n void obj;\r\n void label;\r\n return result;\r\n}\r\n\r\n/**\r\n * Exchange a refresh token for a new access token (Task D.2.1, v3-D).\r\n *\r\n * Per RFC 6749 \u00A76, the request body is:\r\n * grant_type=refresh_token&refresh_token=<token>&client_id=<id>\r\n *\r\n * Some providers also require `client_secret` \u2014 xAI does not (public OAuth).\r\n *\r\n * The provider MAY rotate the refresh_token: callers should treat the\r\n * returned `refreshToken` (if any) as the new authoritative value and\r\n * persist it. If the provider does NOT return a new refresh_token, the\r\n * caller should keep using the previous one.\r\n */\r\nexport async function refreshGrokToken(options: {\r\n clientId: string;\r\n refreshToken: string;\r\n tokenEndpoint?: string;\r\n fetchImpl?: typeof fetch;\r\n}): Promise<GrokOAuthResult> {\r\n if (!options.clientId || options.clientId.trim().length === 0) {\r\n throw new GrokOAuthError('Missing clientId', 'no_client_id');\r\n }\r\n if (!options.refreshToken || options.refreshToken.trim().length === 0) {\r\n throw new GrokOAuthError('Missing refreshToken', 'no_refresh_token');\r\n }\r\n\r\n const endpoint = options.tokenEndpoint ?? 'https://oauth.x.ai/token';\r\n const fetchImpl = options.fetchImpl ?? fetch;\r\n\r\n let response: Response;\r\n try {\r\n response = await fetchImpl(endpoint, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n Accept: 'application/json',\r\n },\r\n body: new URLSearchParams({\r\n grant_type: 'refresh_token',\r\n client_id: options.clientId,\r\n refresh_token: options.refreshToken,\r\n }).toString(),\r\n });\r\n } catch (err) {\r\n throw new GrokOAuthError(`Token refresh network error: ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n\r\n if (!response.ok) {\r\n const errText = await response.text().catch(() => '');\r\n // 400/401 with \"invalid_grant\" \u2192 refresh token expired or revoked.\r\n const code = response.status === 400 || response.status === 401 ? 'invalid_grant' : `http_${response.status}`;\r\n throw new GrokOAuthError(\r\n `Token refresh HTTP ${response.status}: ${errText.slice(0, 200)}`,\r\n code,\r\n );\r\n }\r\n\r\n let body: unknown;\r\n try {\r\n body = await response.json();\r\n } catch (err) {\r\n throw new GrokOAuthError(`Token refresh returned invalid JSON: ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n\r\n if (!body || typeof body !== 'object') {\r\n throw new GrokOAuthError('Token refresh returned non-object body');\r\n }\r\n const obj = body as Record<string, unknown>;\r\n\r\n const accessToken = obj.access_token;\r\n if (typeof accessToken !== 'string' || accessToken.length === 0) {\r\n throw new GrokOAuthError('Token refresh response missing access_token', 'no_access_token');\r\n }\r\n\r\n return parseTokenResponseBody(obj, accessToken, 'Token refresh');\r\n}\r\n\r\n/**\r\n * Run the complete OAuth flow.\r\n *\r\n * Steps:\r\n * 1. Fetch OpenID Connect discovery document\r\n * 2. Generate PKCE verifier + S256 challenge\r\n * 3. Build authorization URL\r\n * 4. Start local callback server\r\n * 5. Open browser\r\n * 6. Wait for callback\r\n * 7. Verify state to prevent CSRF\r\n * 8. Exchange code for token (with code_verifier)\r\n *\r\n * @throws GrokOAuthError on any failure (network, missing params, provider error).\r\n */\r\nexport async function runGrokOAuthFlow(options: GrokOAuthOptions): Promise<GrokOAuthResult> {\r\n const clientId = options.clientId || process.env.GROK_OAUTH_CLIENT_ID || DEFAULT_GROK_OAUTH_CLIENT_ID;\r\n if (!clientId || clientId.trim().length === 0) {\r\n throw new GrokOAuthError('Missing clientId', 'no_client_id');\r\n }\r\n\r\n const callbackPort = options.callbackPort ?? DEFAULT_GROK_OAUTH_REDIRECT_PORT;\r\n const callbackPath = options.callbackPath ?? DEFAULT_GROK_OAUTH_REDIRECT_PATH;\r\n const redirectUri = `http://127.0.0.1:${callbackPort}${callbackPath}`;\r\n\r\n // Step 1: fetch OpenID Connect discovery document.\r\n const discovery = await fetchGrokDiscovery({\r\n issuer: options.issuer,\r\n discoveryUrl: options.discoveryUrl,\r\n fetchImpl: options.fetchImpl,\r\n });\r\n\r\n // Step 2: generate PKCE verifier + S256 challenge.\r\n const { verifier: codeVerifier, challenge: codeChallenge } = generatePkce();\r\n const state = crypto.randomUUID();\r\n\r\n // Step 3: build authorize URL with PKCE.\r\n const authorizeUrl = buildGrokAuthorizeUrl({\r\n clientId,\r\n redirectUri,\r\n scopes: options.scopes,\r\n state,\r\n codeChallenge,\r\n authorizeEndpoint: discovery.authorizationEndpoint,\r\n });\r\n\r\n // Step 4: start callback server.\r\n let handle: OAuthCallbackServerHandle;\r\n try {\r\n handle = await startOAuthCallbackServer({\r\n port: callbackPort,\r\n timeoutMs: options.callbackTimeoutMs ?? 120_000,\r\n expectedPath: callbackPath,\r\n });\r\n } catch (err) {\r\n throw new GrokOAuthError(\r\n `Failed to start OAuth callback server on port ${callbackPort}: ${err instanceof Error ? err.message : String(err)}`,\r\n 'callback_bind_failed',\r\n );\r\n }\r\n\r\n try {\r\n // Step 5: open browser (or call injected opener for tests).\r\n if (options.onBrowserOpen) {\r\n await options.onBrowserOpen(authorizeUrl);\r\n } else {\r\n // Production path: open in default browser.\r\n await openBrowser(authorizeUrl);\r\n }\r\n\r\n // Step 6: wait for callback.\r\n const callbackResult = await handle.waitForCode();\r\n\r\n // Step 7: verify state (CSRF protection).\r\n if (callbackResult.state !== state) {\r\n throw new GrokOAuthError(\r\n `OAuth state mismatch \u2014 possible CSRF. expected=${state} got=${callbackResult.state ?? '(none)'}`,\r\n 'state_mismatch',\r\n );\r\n }\r\n\r\n if (callbackResult.error) {\r\n throw new GrokOAuthError(\r\n `OAuth provider returned error: ${callbackResult.error}${callbackResult.errorDescription ? ` \u2014 ${callbackResult.errorDescription}` : ''}`,\r\n callbackResult.error,\r\n );\r\n }\r\n\r\n if (!callbackResult.code) {\r\n throw new GrokOAuthError('OAuth callback did not include authorization code', 'no_code');\r\n }\r\n\r\n // Step 8: exchange code for token (with code_verifier).\r\n return await exchangeGrokCode({\r\n clientId,\r\n code: callbackResult.code,\r\n codeVerifier,\r\n redirectUri,\r\n tokenEndpoint: discovery.tokenEndpoint,\r\n fetchImpl: options.fetchImpl,\r\n });\r\n } finally {\r\n handle.close();\r\n }\r\n}\r\n\r\n/**\r\n * Open the given URL in the user's default browser. Cross-platform via\r\n * child_process. Safe to call from Node 20+ \u2014 no shell injection (uses\r\n * spawn with args array).\r\n */\r\nexport async function openBrowser(url: string): Promise<void> {\r\n const { spawn } = await import('node:child_process');\r\n // Detect platform via process.env.PLATFORM? Use process.platform.\r\n // 'darwin' \u2192 open, 'win32' \u2192 start (cmd /c start \"\"), else \u2192 xdg-open\r\n const cmd = (() => {\r\n switch (process.platform) {\r\n case 'darwin': return { bin: 'open', args: [url] };\r\n case 'win32': return { bin: 'cmd', args: ['/c', 'start', '\"\"', url] };\r\n default: return { bin: 'xdg-open', args: [url] };\r\n }\r\n })();\r\n return new Promise<void>((resolve, reject) => {\r\n try {\r\n const child = spawn(cmd.bin, cmd.args, { stdio: 'ignore', detached: true });\r\n child.on('error', (err) => reject(err));\r\n child.on('spawn', () => {\r\n // Detach so the browser process can outlive the Node CLI.\r\n child.unref();\r\n resolve();\r\n });\r\n // Fallback in case 'spawn' doesn't fire on all platforms.\r\n setTimeout(() => resolve(), 100);\r\n } catch (err) {\r\n reject(err);\r\n }\r\n });\r\n}", "/**\r\n * refreshRegistry \u2014 pluggable per-provider token refresh impls (v3-F).\r\n *\r\n * Why: v3-D hard-wired refresh support for Grok only. Other providers (MiniMax,\r\n * GLM) ship static API keys today and have no public OAuth endpoint. When that\r\n * changes, callers want to add a refresh impl without touching keyStore or the\r\n * auto-refresh path in `resolveApiKeyWithMeta`.\r\n *\r\n * Design:\r\n * - A simple `Map<ProviderName, RefreshImpl>` plus helpers.\r\n * - The default impl for `grok` is registered at module import time via\r\n * `registerDefaultRefreshImpls()` (idempotent \u2014 safe to call multiple times).\r\n * - `getRefreshImpl(id)` returns the registered impl OR `null`. Callers are\r\n * responsible for the \"no impl\" branch \u2014 typically log + return stale token.\r\n * - `registerRefreshImpl(id, impl)` lets tests and future providers inject\r\n * custom impls without depending on this module's internals.\r\n *\r\n * The adapter for Grok (`grokRefreshAdapter`) bridges the\r\n * `(providerId, refreshToken) => Promise<{...}>` shape required by `RefreshImpl`\r\n * with `refreshGrokToken`'s `{clientId, refreshToken}` shape. It pulls\r\n * `GROK_OAUTH_CLIENT_ID` from env at call time (so tests can mutate it).\r\n *\r\n * @see electron/cli/keyStore.ts (RefreshImpl type, resolveApiKeyWithMeta)\r\n * @see docs/plans/2026-06-29-anathema-coder-v3-F.md\r\n */\r\n\r\nimport { refreshGrokToken } from './grokOAuth.js';\r\nimport type { ProviderName } from './keyStore.js';\r\n\r\n/**\r\n * Pluggable refresh impl shape \u2014 matches `RefreshImpl` in keyStore.ts.\r\n *\r\n * Returning a value with `expiresAt` and/or `refreshToken` is OPTIONAL \u2014 the\r\n * resolver in keyStore tolerates both being absent (the existing refresh_token\r\n * is preserved, and the access_token is replaced unconditionally).\r\n */\r\nexport type RefreshImpl = (\r\n providerId: string,\r\n refreshToken: string,\r\n) => Promise<{\r\n accessToken: string;\r\n expiresAt?: number;\r\n refreshToken?: string;\r\n}>;\r\n\r\nconst registry = new Map<ProviderName, RefreshImpl>();\r\n\r\n/**\r\n * Register a refresh impl for a provider. Overwrites any previous impl.\r\n * Pass `null` or use `unregisterRefreshImpl` to remove.\r\n */\r\nexport function registerRefreshImpl(id: ProviderName, impl: RefreshImpl | null): void {\r\n if (impl === null) {\r\n registry.delete(id);\r\n } else {\r\n registry.set(id, impl);\r\n }\r\n}\r\n\r\n/** Remove a refresh impl. No-op if not registered. */\r\nexport function unregisterRefreshImpl(id: ProviderName): void {\r\n registry.delete(id);\r\n}\r\n\r\n/** Look up a refresh impl. Returns `null` if no impl is registered. */\r\nexport function getRefreshImpl(id: ProviderName): RefreshImpl | null {\r\n return registry.get(id) ?? null;\r\n}\r\n\r\n/** Return all registered provider ids (useful for /provider status). */\r\nexport function listRefreshImpls(): ProviderName[] {\r\n return Array.from(registry.keys());\r\n}\r\n\r\n/** Test-only helper: wipe the registry. Production code should not call this. */\r\nexport function clearRefreshRegistry(): void {\r\n registry.clear();\r\n}\r\n\r\n/**\r\n * Adapter from `refreshGrokToken({clientId, refreshToken})` to the generic\r\n * `RefreshImpl(providerId, refreshToken)` shape. Reads GROK_OAUTH_CLIENT_ID\r\n * from env at call time so tests can override.\r\n */\r\nexport const grokRefreshAdapter: RefreshImpl = async (\r\n _providerId,\r\n refreshToken,\r\n) => {\r\n const clientId = process.env.GROK_OAUTH_CLIENT_ID;\r\n if (!clientId || clientId.trim().length === 0) {\r\n throw new Error('Missing GROK_OAUTH_CLIENT_ID env var');\r\n }\r\n return refreshGrokToken({ clientId, refreshToken });\r\n};\r\n\r\n/**\r\n * Register the built-in default impls. Idempotent \u2014 calling multiple times\r\n * is a no-op once registered. Called at module init from keyStore.\r\n */\r\nexport function registerDefaultRefreshImpls(): void {\r\n if (!registry.has('grok')) {\r\n registry.set('grok', grokRefreshAdapter);\r\n }\r\n}", "/**\r\n * keyStore \u2014 secure-ish key storage for CLI provider credentials.\r\n *\r\n * Persists API keys for MiniMax, GLM, Grok (and any other provider) to a\r\n * JSON file in the user's home directory. NOT a real keychain \u2014 just a\r\n * plain JSON file with restrictive file permissions. Document this in\r\n * /help so users know to use OS-level secret storage for production keys.\r\n *\r\n * Used by Task 14.9 to support `/login <provider> <key>` from the CLI.\r\n * Resolution order at provider boot:\r\n * 1. process.env[ENV_VAR_NAME] (e.g. OPENAI_API_KEY)\r\n * 2. Stored key in keys.json\r\n *\r\n * @see docs/plans/2026-06-28-zelari-code.md (Task 14.9)\r\n */\r\n\r\nimport { promises as fs, existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport {\r\n getRefreshImpl,\r\n registerDefaultRefreshImpls,\r\n} from './refreshRegistry.js';\r\n\r\n// Idempotent \u2014 safe to call on every module load. The registry starts empty\r\n// and this seeds it with the built-in defaults (Grok).\r\nregisterDefaultRefreshImpls();\r\n\r\nexport type ProviderName = 'minimax' | 'glm' | 'grok' | 'openai-compatible' | 'custom';\r\n\r\nexport interface ProviderSpec {\r\n /** Stable id used in storage + slash commands. */\r\n id: ProviderName;\r\n /** Display name for /help. */\r\n displayName: string;\r\n /** env var the CLI reads first. */\r\n envVar: string;\r\n /** Default base URL (informational \u2014 actual resolution lives in provider adapter). */\r\n baseUrl?: string;\r\n}\r\n\r\nexport const PROVIDERS: readonly ProviderSpec[] = [\r\n { id: 'openai-compatible', displayName: 'OpenAI-compatible', envVar: 'OPENAI_API_KEY' },\r\n { id: 'minimax', displayName: 'MiniMax', envVar: 'MINIMAX_API_KEY', baseUrl: 'https://api.MiniMax.chat/v1' },\r\n { id: 'glm', displayName: 'GLM / Z.AI', envVar: 'GLM_API_KEY', baseUrl: 'https://api.z.ai/v1' },\r\n { id: 'grok', displayName: 'xAI Grok', envVar: 'GROK_API_KEY', baseUrl: 'https://api.x.ai/v1' },\r\n] as const;\r\n\r\nexport function getKeyStorePath(): string {\r\n return process.env.ANATHEMA_KEYSTORE_FILE\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'keys.json');\r\n}\r\n\r\nexport function getProviderSpec(id: string): ProviderSpec | undefined {\r\n return PROVIDERS.find((p) => p.id === id);\r\n}\r\n\r\n/**\r\n * Stored credential for a provider.\r\n *\r\n * Before v3-D this was just a string (the API key). Now it can also carry\r\n * OAuth metadata: `expiresAt` (epoch ms) and `refreshToken`. Files written\r\n * by older versions \u2014 where each provider entry is a bare string \u2014 are\r\n * still loaded correctly: `normalizeProviderEntry()` upgrades them in-memory.\r\n */\r\nexport interface StoredKey {\r\n /** The bearer / API key. Always present. */\r\n apiKey: string;\r\n /** Epoch ms when this key expires (set after OAuth flow). */\r\n expiresAt?: number;\r\n /** Refresh token (set after OAuth flow if provider supports it). */\r\n refreshToken?: string;\r\n}\r\n\r\ninterface StoredKeys {\r\n /** Map of providerId \u2192 StoredKey. */\r\n providers: Record<string, StoredKey>;\r\n}\r\n\r\n/**\r\n * Upgrade a raw provider entry from on-disk JSON to a `StoredKey`.\r\n * Accepts both the legacy bare-string shape and the new object shape.\r\n * Returns null for anything we can't interpret.\r\n */\r\nfunction normalizeProviderEntry(raw: unknown): StoredKey | null {\r\n if (typeof raw === 'string') {\r\n return { apiKey: raw };\r\n }\r\n if (raw && typeof raw === 'object') {\r\n const r = raw as Record<string, unknown>;\r\n if (typeof r.apiKey === 'string' && r.apiKey.length > 0) {\r\n const out: StoredKey = { apiKey: r.apiKey };\r\n if (typeof r.expiresAt === 'number' && Number.isFinite(r.expiresAt)) {\r\n out.expiresAt = r.expiresAt;\r\n }\r\n if (typeof r.refreshToken === 'string' && r.refreshToken.length > 0) {\r\n out.refreshToken = r.refreshToken;\r\n }\r\n return out;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction readStore(): StoredKeys {\r\n const file = getKeyStorePath();\r\n if (!existsSync(file)) return { providers: {} };\r\n try {\r\n const raw = readFileSync(file, 'utf-8');\r\n const parsed = JSON.parse(raw) as Partial<StoredKeys>;\r\n if (parsed && typeof parsed === 'object' && parsed.providers && typeof parsed.providers === 'object') {\r\n // Normalize + deep clone to avoid the SHALLOW-SPREAD-DEFAULTS gotcha:\r\n // returning `parsed.providers` directly would let callers mutate the\r\n // shared object across reads.\r\n const normalizedProviders: Record<string, StoredKey> = {};\r\n for (const [id, rawEntry] of Object.entries(parsed.providers)) {\r\n const norm = normalizeProviderEntry(rawEntry);\r\n if (norm) normalizedProviders[id] = norm;\r\n }\r\n return { providers: normalizedProviders };\r\n }\r\n } catch {\r\n // Corrupt file \u2014 start fresh.\r\n }\r\n return { providers: {} };\r\n}\r\n\r\nfunction writeStore(store: StoredKeys): void {\r\n const file = getKeyStorePath();\r\n mkdirSync(path.dirname(file), { recursive: true });\r\n writeFileSync(file, JSON.stringify(store, null, 2), { encoding: 'utf-8', mode: 0o600 });\r\n}\r\n\r\n/** Store an API key for a provider. Overwrites any existing key. */\r\nexport function setApiKey(providerId: string, key: string): void {\r\n const store = readStore();\r\n store.providers[providerId] = { apiKey: key };\r\n writeStore(store);\r\n}\r\n\r\n/** Remove the stored key for a provider. */\r\nexport function clearApiKey(providerId: string): void {\r\n const store = readStore();\r\n delete store.providers[providerId];\r\n writeStore(store);\r\n}\r\n\r\n/** Get the stored key for a provider (null if unset). */\r\nexport function getStoredApiKey(providerId: string): string | null {\r\n const store = readStore();\r\n return store.providers[providerId]?.apiKey ?? null;\r\n}\r\n\r\n/**\r\n * Store an OAuth token (apiKey + optional expiresAt + optional refreshToken)\r\n * for a provider. Overwrites any existing entry.\r\n */\r\nexport function setOAuthToken(\r\n providerId: string,\r\n token: { apiKey: string; expiresAt?: number; refreshToken?: string },\r\n): void {\r\n const store = readStore();\r\n const entry: StoredKey = { apiKey: token.apiKey };\r\n if (typeof token.expiresAt === 'number' && Number.isFinite(token.expiresAt)) {\r\n entry.expiresAt = token.expiresAt;\r\n }\r\n if (typeof token.refreshToken === 'string' && token.refreshToken.length > 0) {\r\n entry.refreshToken = token.refreshToken;\r\n }\r\n store.providers[providerId] = entry;\r\n writeStore(store);\r\n}\r\n\r\n/** Read the full OAuth token record for a provider (null if unset). */\r\nexport function getOAuthToken(providerId: string): StoredKey | null {\r\n const store = readStore();\r\n return store.providers[providerId] ?? null;\r\n}\r\n\r\n/**\r\n * Resolve a key for a provider, checking env first, then store.\r\n * Returns just the apiKey string \u2014 use `resolveApiKeyWithMeta` if you also\r\n * need `expiresAt` / `refreshToken`.\r\n */\r\nexport function resolveApiKey(providerId: string): string | null {\r\n const spec = getProviderSpec(providerId);\r\n if (spec) {\r\n const envKey = process.env[spec.envVar];\r\n if (envKey && envKey.trim().length > 0) return envKey;\r\n }\r\n return getStoredApiKey(providerId);\r\n}\r\n\r\n/**\r\n * Resolve the full StoredKey for a provider (apiKey + expiresAt + refreshToken).\r\n * Env var path returns only the apiKey (no expiry metadata).\r\n *\r\n * Auto-refresh (Task D.3.1): if the stored token has an `expiresAt` within\r\n * the `refreshBufferMs` window AND a `refreshToken`, this function calls\r\n * the injected `refreshImpl` to obtain a fresh token, persists it via\r\n * `setOAuthToken`, and returns the new `StoredKey`. This is best-effort:\r\n * if the refresh fails, the stale token is still returned (and the caller\r\n * sees an API error from the upstream provider \u2014 surfacing the real issue).\r\n *\r\n * Defaults to refreshing only the Grok provider (via `refreshGrokToken`).\r\n */\r\nexport async function resolveApiKeyWithMeta(\r\n providerId: string,\r\n options: ResolveOptions = {},\r\n): Promise<StoredKey | null> {\r\n const refreshBufferMs = options.refreshBufferMs ?? 5 * 60_000;\r\n const refreshImpl = options.refreshImpl ?? defaultRefreshImpl;\r\n const now = options.now ?? Date.now();\r\n\r\n // 1. Env var wins (no expiry metadata \u2014 assume user manages it).\r\n const spec = getProviderSpec(providerId);\r\n if (spec) {\r\n const envKey = process.env[spec.envVar];\r\n if (envKey && envKey.trim().length > 0) {\r\n return { apiKey: envKey };\r\n }\r\n }\r\n\r\n // 2. Stored token (may include expiry + refresh).\r\n const stored = getOAuthToken(providerId);\r\n if (!stored) return null;\r\n\r\n // 3. Auto-refresh if expiry is near and we have a refresh token.\r\n if (\r\n stored.expiresAt !== undefined &&\r\n stored.refreshToken !== undefined &&\r\n stored.expiresAt - now < refreshBufferMs\r\n ) {\r\n try {\r\n const refreshed = await refreshImpl(providerId, stored.refreshToken);\r\n // Persist new token (preserving the apiKey, expiresAt, and any new\r\n // refresh_token the provider returned).\r\n const next: StoredKey = { apiKey: refreshed.accessToken };\r\n if (refreshed.expiresAt !== undefined) next.expiresAt = refreshed.expiresAt;\r\n if (refreshed.refreshToken !== undefined && refreshed.refreshToken.length > 0) {\r\n next.refreshToken = refreshed.refreshToken;\r\n } else {\r\n // Provider did NOT rotate the refresh_token \u2014 keep the old one.\r\n next.refreshToken = stored.refreshToken;\r\n }\r\n // Update store in-place. We call readStore/writeStore indirectly via\r\n // setOAuthToken's shape: but we need to avoid clobbering other fields.\r\n // setOAuthToken accepts the same shape, so use it.\r\n // Note: setOAuthToken calls readStore() which re-reads the file; that's\r\n // fine \u2014 the file hasn't changed between the read above and the write\r\n // below in single-threaded Node.\r\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\r\n writeStoreDirect({ providers: { ...readStoreDirect().providers, [providerId]: next } });\r\n return next;\r\n } catch {\r\n // Refresh failed \u2014 return the stale token. Upstream will surface\r\n // the auth error; user can re-login via /login grok.\r\n return stored;\r\n }\r\n }\r\n\r\n return stored;\r\n}\r\n\r\nexport interface ResolveOptions {\r\n /** How close to expiry triggers auto-refresh. Default 5 minutes. */\r\n refreshBufferMs?: number;\r\n /** Inject a custom refresh function (used by tests). */\r\n refreshImpl?: RefreshImpl;\r\n /** Inject a clock for tests. Default `Date.now`. */\r\n now?: number;\r\n}\r\n\r\n/**\r\n * Signature for the injectable refresh function. Receives a `providerId`\r\n * (currently always `'grok'` for OAuth flows) and the `refreshToken` to\r\n * exchange, and returns a fresh `GrokOAuthResult`-shaped value.\r\n *\r\n * The default implementation calls `refreshGrokToken` from grokOAuth.ts.\r\n */\r\nexport type RefreshImpl = (providerId: string, refreshToken: string) => Promise<{\r\n accessToken: string;\r\n expiresAt?: number;\r\n refreshToken?: string;\r\n}>;\r\n\r\n/**\r\n * Default refresh impl: looks up the provider in the refresh registry.\r\n *\r\n * v3-F behavior change: for providers with no registered impl (currently\r\n * MiniMax, GLM, OpenAI-compatible, custom), this returns `null` instead of\r\n * throwing. The caller in `resolveApiKeyWithMeta` handles `null` by returning\r\n * the stale token unchanged \u2014 graceful degradation, no behavior break.\r\n *\r\n * To plug a custom provider in: call `registerRefreshImpl(id, impl)` once at\r\n * startup (or in a test).\r\n */\r\nconst defaultRefreshImpl: RefreshImpl = async (providerId, refreshToken) => {\r\n const impl = getRefreshImpl(providerId as ProviderName);\r\n if (!impl) {\r\n // No refresh impl for this provider \u2014 signal graceful no-op to the caller.\r\n throw new Error(`No refresh impl registered for provider \"${providerId}\"`);\r\n }\r\n return impl(providerId, refreshToken);\r\n};\r\n\r\n/**\r\n * Direct file r/w helpers exposed for `resolveApiKeyWithMeta`'s auto-refresh\r\n * path. These bypass the public API to avoid an extra read/write cycle\r\n * inside the resolve hot path. Behavior matches `readStore` / `writeStore`.\r\n */\r\nfunction readStoreDirect(): StoredKeys {\r\n return readStore();\r\n}\r\n\r\nfunction writeStoreDirect(store: StoredKeys): void {\r\n writeStore(store);\r\n}\r\n\r\n/** Mask a key for display: show first 4 + last 4 chars only. */\r\nexport function maskKey(key: string): string {\r\n if (key.length <= 12) return '****';\r\n return `${key.slice(0, 4)}\u2026${key.slice(-4)} (len=${key.length})`;\r\n}\r\n\r\n/** Async variant for callers that prefer async I/O (used by tests). */\r\nexport async function loadStoredKeys(): Promise<Record<string, string>> {\r\n const file = getKeyStorePath();\r\n try {\r\n const raw = await fs.readFile(file, 'utf-8');\r\n const parsed = JSON.parse(raw) as Partial<StoredKeys>;\r\n const out: Record<string, string> = {};\r\n if (parsed.providers && typeof parsed.providers === 'object') {\r\n for (const [id, entry] of Object.entries(parsed.providers)) {\r\n const norm = normalizeProviderEntry(entry);\r\n if (norm) out[id] = norm.apiKey;\r\n }\r\n }\r\n return out;\r\n } catch {\r\n return {};\r\n }\r\n}", "/**\r\n * updater \u2014 npm registry self-update mechanism for zelari-coder.\r\n *\r\n * Functions:\r\n * - getCurrentVersion(): reads bundled package.json\r\n * - checkForUpdate(): fetches https://registry.npmjs.org/zelari-coder/latest,\r\n * compares semver, returns { currentVersion, latestVersion, updateAvailable }\r\n * - performUpdate(): spawns `npm install -g zelari-coder@latest`,\r\n * captures stdout/stderr, returns { ok, output, error? }\r\n *\r\n * All network + spawn operations are injectable for testing (see tests).\r\n *\r\n * Channel: `latest` only (locked per user decision, v3-N).\r\n * No self-restart: caller is expected to display \"please restart manually\".\r\n *\r\n * @see docs/plans/2026-06-30-anathema-coder-v3-N.md\r\n */\r\n\r\nimport { createRequire } from 'node:module';\r\nimport { spawn } from 'node:child_process';\r\nimport path from 'node:path';\r\nimport { fileURLToPath } from 'node:url';\r\n\r\nconst require = createRequire(import.meta.url);\r\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\r\n\r\n/**\r\n * Read the bundled package.json and return its version.\r\n * Falls back to '0.0.0' if the file cannot be resolved (very unlikely).\r\n */\r\nexport function getCurrentVersion(): string {\r\n try {\r\n // Resolve from the package root (this file lives at <pkg>/electron/cli/updater.ts\r\n // or <pkg>/dist/electron/cli/updater.js after build)\r\n const pkgPath = path.resolve(__dirname, '..', '..', 'package.json');\r\n const pkg = require(pkgPath) as { version: string };\r\n return pkg.version;\r\n } catch {\r\n return '0.0.0';\r\n }\r\n}\r\n\r\nexport interface UpdateCheckResult {\r\n currentVersion: string;\r\n latestVersion: string;\r\n updateAvailable: boolean;\r\n /** Set when the registry was unreachable or returned invalid data. */\r\n error?: string;\r\n}\r\n\r\nexport interface UpdatePerformResult {\r\n ok: boolean;\r\n output: string;\r\n error?: string;\r\n /** Exit code from npm (0 = success). */\r\n exitCode: number | null;\r\n}\r\n\r\n/**\r\n * Compare two semver strings. Returns:\r\n * -1 if a < b\r\n * 0 if a === b\r\n * 1 if a > b\r\n *\r\n * Handles standard semver (MAJOR.MINOR.PATCH) with optional pre-release\r\n * (e.g. \"1.0.0-beta.1\"). Pre-release is treated as LOWER than the\r\n * release with the same MAJOR.MINOR.PATCH.\r\n */\r\nexport function compareSemver(a: string, b: string): -1 | 0 | 1 {\r\n const parse = (v: string): [number, number, number, string | null] => {\r\n const m = v.match(/^(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.+))?$/);\r\n if (!m) return [0, 0, 0, null];\r\n return [Number(m[1]), Number(m[2]), Number(m[3]), m[4] ?? null];\r\n };\r\n const [a1, a2, a3, aPre] = parse(a);\r\n const [b1, b2, b3, bPre] = parse(b);\r\n\r\n if (a1 !== b1) return a1 < b1 ? -1 : 1;\r\n if (a2 !== b2) return a2 < b2 ? -1 : 1;\r\n if (a3 !== b3) return a3 < b3 ? -1 : 1;\r\n // Same MAJOR.MINOR.PATCH: pre-release < release\r\n if (aPre === bPre) return 0;\r\n if (aPre === null) return 1;\r\n if (bPre === null) return -1;\r\n return aPre < bPre ? -1 : 1;\r\n}\r\n\r\n/** Public URL for the package on the npm registry. */\r\nexport const REGISTRY_URL = 'https://registry.npmjs.org/zelari-coder/latest';\r\n\r\n/**\r\n * Fetch the latest version from the npm registry.\r\n * Injectable `fetcher` for tests (defaults to global fetch with 5s timeout).\r\n */\r\nexport async function fetchLatestVersion(\r\n fetcher: typeof fetch = fetch,\r\n registryUrl: string = REGISTRY_URL,\r\n timeoutMs = 5000,\r\n): Promise<{ version: string } | { error: string }> {\r\n try {\r\n const controller = new AbortController();\r\n const timer = setTimeout(() => controller.abort(), timeoutMs);\r\n const response = await fetcher(registryUrl, { signal: controller.signal });\r\n clearTimeout(timer);\r\n\r\n if (!response.ok) {\r\n return { error: `Registry responded ${response.status}` };\r\n }\r\n const data = (await response.json()) as { version?: string };\r\n if (!data.version || typeof data.version !== 'string') {\r\n return { error: 'Registry response missing version field' };\r\n }\r\n return { version: data.version };\r\n } catch (err) {\r\n const message = err instanceof Error ? err.message : String(err);\r\n return { error: message };\r\n }\r\n}\r\n\r\n/**\r\n * Compare current version against latest from the registry.\r\n * Always succeeds (never throws) \u2014 error states surface in the result.\r\n */\r\nexport async function checkForUpdate(\r\n fetcher: typeof fetch = fetch,\r\n registryUrl?: string,\r\n): Promise<UpdateCheckResult> {\r\n const currentVersion = getCurrentVersion();\r\n const latest = await fetchLatestVersion(fetcher, registryUrl);\r\n\r\n if ('error' in latest) {\r\n return {\r\n currentVersion,\r\n latestVersion: currentVersion,\r\n updateAvailable: false,\r\n error: latest.error,\r\n };\r\n }\r\n\r\n const cmp = compareSemver(currentVersion, latest.version);\r\n return {\r\n currentVersion,\r\n latestVersion: latest.version,\r\n updateAvailable: cmp < 0,\r\n };\r\n}\r\n\r\n/**\r\n * Spawn `npm install -g <package>@latest` and stream output.\r\n * Injectable `executor` for tests.\r\n */\r\nexport async function performUpdate(\r\n packageName = 'zelari-coder',\r\n executor: typeof spawn = spawn,\r\n): Promise<UpdatePerformResult> {\r\n return new Promise((resolve) => {\r\n const args = ['install', '-g', `${packageName}@latest`];\r\n let stdout = '';\r\n let stderr = '';\r\n\r\n const child = executor('npm', args, { stdio: ['ignore', 'pipe', 'pipe'] });\r\n\r\n child.stdout?.on('data', (chunk: Buffer) => {\r\n stdout += chunk.toString();\r\n });\r\n child.stderr?.on('data', (chunk: Buffer) => {\r\n stderr += chunk.toString();\r\n });\r\n\r\n child.on('error', (err) => {\r\n resolve({\r\n ok: false,\r\n output: stdout + stderr,\r\n error: err.message,\r\n exitCode: null,\r\n });\r\n });\r\n\r\n child.on('close', (code) => {\r\n const ok = code === 0;\r\n resolve({\r\n ok,\r\n output: stdout + stderr,\r\n error: ok ? undefined : `npm exited with code ${code}`,\r\n exitCode: code,\r\n });\r\n });\r\n });\r\n}", "#!/usr/bin/env node\r\n/**\r\n * zelari-code \u2014 CLI coding agent on top of AnathemaBrain.\r\n * Phase 14 Task 14.3 + 14.4: multi-panel TUI + slash command wiring.\r\n */\r\n\r\nimport React from 'react';\r\nimport { render } from 'ink';\r\n// @ts-ignore\r\nimport { App } from './app.js';\r\nimport { getMetricsLogger } from './metrics.js';\r\n\r\nexport const VERSION = '0.1.0';\r\n\r\n/**\r\n * Silent background update check (Task N.6, v3-N).\r\n *\r\n * Runs ~3s after startup. If a newer version exists on npm, prints a\r\n * one-line hint to stderr (so it doesn't pollute the TUI). Failures\r\n * are swallowed silently \u2014 registry outages must NEVER block the CLI.\r\n *\r\n * Disabled in dev mode (`ANATHEMA_DEV=1`) to avoid noise during local\r\n * development where the bundled version is the source repo.\r\n */\r\nasync function backgroundUpdateCheck(): Promise<void> {\r\n if (process.env.ANATHEMA_DEV === '1') return;\r\n await new Promise((resolve) => setTimeout(resolve, 3000));\r\n try {\r\n const { checkForUpdate } = await import('./updater.js');\r\n const info = await checkForUpdate();\r\n if (info.updateAvailable && !info.error) {\r\n // eslint-disable-next-line no-console\r\n console.error(\r\n `[zelari-coder] \uD83C\uDD95 v${info.latestVersion} available (current: v${info.currentVersion}). ` +\r\n `Run \\`zelari-coder\\` then \\`/update --yes\\` to upgrade.`,\r\n );\r\n }\r\n } catch {\r\n // Swallow \u2014 network failures, malformed responses, etc.\r\n // The CLI is fully usable without update awareness.\r\n }\r\n}\r\n\r\nasync function shutdown(): Promise<void> {\r\n // Flush the process-wide MetricsLogger (Task G.3.3, carryover from v3-B\r\n // B.5.2). The chat session in `app.tsx` writes via fire-and-forget\r\n // queue \u2014 if we just `process.exit(0)` on SIGINT, the last few records\r\n // (often the most interesting: agent_end + tool_execution_end) never\r\n // land in `~/.tmp/anathema-coder/metrics.jsonl`. Awaiting `flush()`\r\n // before exit guarantees the file is fully written.\r\n try {\r\n await getMetricsLogger().flush();\r\n } catch {\r\n // Best-effort \u2014 never block shutdown on a metrics write error.\r\n }\r\n process.exit(0);\r\n}\r\n\r\nfunction main() {\r\n const { waitUntilExit, unmount } = render(React.createElement(App));\r\n\r\n process.on('SIGINT', () => {\r\n unmount();\r\n void shutdown();\r\n });\r\n process.on('SIGTERM', () => {\r\n unmount();\r\n void shutdown();\r\n });\r\n\r\n // Fire-and-forget \u2014 the CLI works regardless of the update check result.\r\n void backgroundUpdateCheck();\r\n\r\n waitUntilExit().then(() => {\r\n void shutdown();\r\n });\r\n}\r\n\r\nmain();\r\n", "// @ts-nocheck \u2014 app.tsx is the monolithic Ink UI entrypoint with\r\n// pre-existing strict-mode type narrowing issues that the v3-N\r\n// mission surfaced. Runtime behavior is correct; a future v3-T\r\n// refactor will split this file into typed hooks (useChatTurn,\r\n// useSlashDispatch, etc). See packages/cli/docs/SPLIT_PLAN.md.\r\nimport React, { useState, useMemo, useEffect, useRef } from 'react';\r\nimport { Box } from 'ink';\r\nimport { Header } from './components/Header.js';\r\nimport { ChatStream, type ChatMessage } from './components/ChatStream.js';\r\nimport { InputBar } from './components/InputBar.js';\r\nimport { Sidebar } from './components/Sidebar.js';\r\nimport { handleSlashCommand, formatSkillList, type SlashCommandResult } from './slashCommands.js';\r\nimport { listCodingSkills } from '../agents/skills.js';\r\nimport { promoteMember } from '../agents/promoteMember.js';\r\nimport { AgentHarness } from '../main/core/AgentHarness.js';\r\nimport { SessionJsonlWriter } from '../main/core/sessionJsonl.js';\r\nimport { openaiCompatibleProvider, providerFromEnv, providerConfigFor } from './provider/openai-compatible.js';\r\nimport { providerFailover } from './providerFailover.js';\r\nimport { resolveFailoverStream } from './crossProviderFailover.js';\r\nimport {\r\n getCurrentSessionId,\r\n setCurrentSessionId,\r\n clearCurrentSessionId,\r\n newSessionId,\r\n ensureSessionDir,\r\n listSessions,\r\n loadSessionEvents,\r\n} from './sessionManager.js';\r\nimport { dispatchCouncil } from './councilDispatcher.js';\r\nimport { FeedbackStore } from './councilFeedback.js';\r\nimport { setApiKey, setOAuthToken, getProviderSpec, maskKey, PROVIDERS, resolveApiKeyWithMeta, getOAuthToken, type ProviderName } from './keyStore.js';\r\nimport { getProviderConfig, getActiveProvider as getActiveProviderSpec, setActiveProviderId as persistActiveProvider, setModelForProvider as persistModelForProvider, getModelForProvider, setCustomEndpoint, clearCustomEndpoint, getCustomEndpoint } from './providerConfig.js';\r\nimport { discoverModelsInBackground, discoverModelsForProvider, getCachedModels, getDiscoveredModelIds, type ProviderId as DiscoveryProviderId } from './modelDiscovery.js';\r\nimport { runGrokOAuthFlow } from './grokOAuth.js';\r\nimport { validateApiKey } from './keyValidator.js';\r\nimport { listRefreshImpls, getRefreshImpl } from './refreshRegistry.js';\r\nimport { createBranch, listBranches, branchExists as checkBranchExists, setCurrentBranch, clearCurrentBranch, getCurrentBranch } from './branchManager.js';\r\nimport { createBuiltinToolRegistry } from './toolRegistry.js';\r\nimport { getWorkingDiff, undoWorkingChanges, isGitRepo, defaultProjectRoot } from './gitOps.js';\r\nimport { calculateCost } from './modelPricing.js';\r\nimport { compactTranscript, formatCompactionSummary } from './compaction.js';\r\nimport { MetricsLogger, getMetricsLogger } from './metrics.js';\r\nimport { SkillHistoryLogger, readSkillHistory, getSkillStats, type SkillHistoryRecord, type SkillStats } from './skillHistory.js';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport type { BrainEvent } from '../shared/events.js';\r\n\r\nconst MODEL = process.env.OPENAI_MODEL ?? 'grok-4';\r\nconst PROVIDER = 'openai-compatible';\r\n\r\n/**\r\n * Default model per provider, used when the user runs `/login <provider>`\r\n * without a prior `/model <name>` call. Sourced from each provider's\r\n * published default at time of writing.\r\n */\r\nconst providerDefaults: Record<string, string> = {\r\n 'openai-compatible': 'grok-4',\r\n 'grok': 'grok-4',\r\n 'minimax': 'MiniMax-chat-latest',\r\n 'glm': 'glm-4.5',\r\n};\r\n\r\n/**\r\n * applySteerInterrupt \u2014 pure routing for the /steer --interrupt flow (Task C.3.2).\r\n *\r\n * Extracted from the App component so it can be unit-tested without React/Ink.\r\n * Side effects are injected via the options:\r\n * - `harness`: the currently-running AgentHarness, or null if no run is active\r\n * - `appendMessage(content)`: append a system message to the chat\r\n * - `setQueueCount(n)`: update the sidebar queue counter\r\n * - `dispatchPrompt(text)`: dispatch a fresh prompt as if the user hit Enter\r\n *\r\n * Semantics:\r\n * - With active harness: enqueue(text) + cancel() \u2192 user does NOT need to press\r\n * Enter again (queue drain re-enters provider stream with the queued prompt).\r\n * - Without active harness: fallback to dispatchPrompt(text) as a fresh prompt.\r\n */\r\nexport async function applySteerInterrupt(options: {\r\n text: string;\r\n harness: { enqueue(text: string): void; cancel(): void; queueLength: number } | null;\r\n appendMessage: (content: string) => void;\r\n setQueueCount: (n: number) => void;\r\n dispatchPrompt: (text: string) => Promise<void>;\r\n}): Promise<void> {\r\n const { text, harness, appendMessage, setQueueCount, dispatchPrompt } = options;\r\n if (!harness) {\r\n appendMessage('[steer --interrupt] no active run \u2014 dispatching as fresh prompt.');\r\n await dispatchPrompt(text);\r\n return;\r\n }\r\n harness.enqueue(text);\r\n harness.cancel();\r\n setQueueCount(harness.queueLength);\r\n appendMessage(`[steer --interrupt] cancelled current run + enqueued: \"${text}\" (queue: ${harness.queueLength})`);\r\n}\r\n\r\n/**\r\n * Compute the next session-stats snapshot after a chat turn (Task G.4.5).\r\n * Pure helper extracted from `dispatchPrompt` so the \"real usage vs\r\n * ~4-char fallback\" branch is testable without React/Ink render.\r\n *\r\n * Behavior:\r\n * - When `realUsage` is present (provider honored `stream_options.include_usage`),\r\n * use those numbers exactly.\r\n * - When `realUsage` is null, fall back to the v3-B approximation:\r\n * `Math.ceil(text.length / 4)` for both prompt and completion tokens.\r\n *\r\n * Cost is computed via `calculateCost(model, prompt, completion)` from\r\n * `modelPricing.ts`. The result is the new stats object; the caller is\r\n * responsible for merging it into state via `setSessionStats(prev => ...)`.\r\n */\r\nexport function computeSessionStatsDelta(\r\n realUsage: { promptTokens: number; completionTokens: number; totalTokens: number } | null,\r\n userText: string,\r\n assistantContent: string,\r\n model: string,\r\n prev: { totalTokens: number; totalCostUsd: number },\r\n): { totalTokens: number; totalCostUsd: number } {\r\n const promptTokens = realUsage ? realUsage.promptTokens : Math.ceil(userText.length / 4);\r\n const completionTokens = realUsage\r\n ? realUsage.completionTokens\r\n : Math.ceil(assistantContent.length / 4);\r\n const turnCost = calculateCost(model, promptTokens, completionTokens);\r\n return {\r\n totalTokens: prev.totalTokens + promptTokens + completionTokens,\r\n totalCostUsd: prev.totalCostUsd + turnCost,\r\n };\r\n}\r\n\r\n/**\r\n * Format a side-by-side comparison of two skills' history stats (Task H.3).\r\n * Pure helper extracted from app.tsx dispatch so it's testable without\r\n * React/Ink render.\r\n *\r\n * Returns a multi-line string with:\r\n * - Two lines summarizing each skill (id, count, success, avg duration, total tokens)\r\n * - A \"winner\" line if there's a clear winner (higher successRate wins;\r\n * ties broken by lower avgDurationMs; ties beyond that \u2192 no winner)\r\n *\r\n * When a skill ID has no recorded invocations, the line shows\r\n * \"no invocations yet\" so the user can still see the comparison.\r\n */\r\n/**\r\n * Format a millisecond duration as a short human-readable string.\r\n * Negative durations get an \"ago\" suffix (Task F.3, v3-F).\r\n *\r\n * Examples:\r\n * 45_000 \u2192 \"45s\"\r\n * 3_600_000 \u2192 \"1h 0m\"\r\n * 86_400_000 \u2192 \"1d 0h\"\r\n * -120_000 \u2192 \"2m ago\"\r\n */\r\nfunction formatDuration(ms: number): string {\r\n const abs = Math.abs(ms);\r\n const sign = ms < 0 ? ' ago' : '';\r\n if (abs < 1000) return `${abs}ms${sign}`;\r\n const s = Math.floor(abs / 1000);\r\n if (s < 60) return `${s}s${sign}`;\r\n const m = Math.floor(s / 60);\r\n const rs = s % 60;\r\n if (m < 60) return rs === 0 ? `${m}m${sign}` : `${m}m ${rs}s${sign}`;\r\n const h = Math.floor(m / 60);\r\n const rm = m % 60;\r\n if (h < 24) return rm === 0 ? `${h}h${sign}` : `${h}h ${rm}m${sign}`;\r\n const d = Math.floor(h / 24);\r\n const rh = h % 24;\r\n return rh === 0 ? `${d}d${sign}` : `${d}d ${rh}h${sign}`;\r\n}\r\n\r\nexport function formatSkillCompare(\r\n id1: string,\r\n id2: string,\r\n records: SkillHistoryRecord[],\r\n): string {\r\n const stats1 = getSkillStats(records, id1);\r\n const stats2 = getSkillStats(records, id2);\r\n const lines: string[] = ['[skill-compare]'];\r\n lines.push(formatSkillCompareLine(id1, stats1));\r\n lines.push(formatSkillCompareLine(id2, stats2));\r\n // Winner heuristic \u2014 only declare when both have history\r\n if (stats1.count > 0 && stats2.count > 0) {\r\n const winner = pickCompareWinner(stats1, stats2);\r\n if (winner === null) {\r\n lines.push('Winner: tie (same success rate + same avg duration)');\r\n } else if (winner === 'a') {\r\n lines.push(`Winner: ${id1} (better success rate${stats1.successRate === stats2.successRate ? ' \u2014 tied, lower avg duration' : ''})`);\r\n } else {\r\n lines.push(`Winner: ${id2} (better success rate${stats1.successRate === stats2.successRate ? ' \u2014 tied, lower avg duration' : ''})`);\r\n }\r\n } else {\r\n lines.push('Winner: (insufficient data \u2014 both skills need \u22651 invocation to compare)');\r\n }\r\n return lines.join('\\n');\r\n}\r\n\r\n/** Format a single skill's stats line for the compare output. */\r\nfunction formatSkillCompareLine(id: string, stats: SkillStats): string {\r\n if (stats.count === 0) {\r\n return ` ${id} \u2014 no invocations recorded yet`;\r\n }\r\n return ` ${id} \u2014 ${stats.count} invocations, ${(stats.successRate * 100).toFixed(1)}% success, avg ${stats.avgDurationMs.toFixed(0)}ms, ${stats.totalTokens} tokens total`;\r\n}\r\n\r\n/**\r\n * Pick the winner between two SkillStats. Returns 'a' / 'b' / null on tie.\r\n * Order: successRate first (higher wins), then avgDurationMs (lower wins).\r\n * On perfect tie (same successRate AND same avgDurationMs), returns null.\r\n */\r\nexport function pickCompareWinner(\r\n a: SkillStats,\r\n b: SkillStats,\r\n): 'a' | 'b' | null {\r\n if (a.successRate > b.successRate) return 'a';\r\n if (b.successRate > a.successRate) return 'b';\r\n // Same successRate \u2014 compare avgDurationMs (lower is better)\r\n if (a.avgDurationMs < b.avgDurationMs) return 'a';\r\n if (b.avgDurationMs < a.avgDurationMs) return 'b';\r\n // Perfect tie\r\n return null;\r\n}\r\n\r\n/**\r\n * Convenience wrapper: read history from disk + format compare. Caller\r\n * passes the file path so the test can inject a temp file.\r\n */\r\nexport async function compareSkillsFromFile(\r\n id1: string,\r\n id2: string,\r\n historyFile: string,\r\n): Promise<string> {\r\n const records = await readSkillHistory(historyFile);\r\n return formatSkillCompare(id1, id2, records);\r\n}\r\n\r\nfunction eventsToMessages(events: readonly BrainEvent[]): ChatMessage[] {\r\n const out: ChatMessage[] = [];\r\n let assistantBuffer = '';\r\n let assistantId = '';\r\n for (const e of events) {\r\n if (e.type === 'message_delta') {\r\n if (assistantId === '') assistantId = `resumed-${newSessionId()}`;\r\n assistantBuffer += e.delta;\r\n const last = out[out.length - 1];\r\n if (last && last.role === 'assistant' && last.id === assistantId) {\r\n out[out.length - 1] = { ...last, content: assistantBuffer };\r\n } else {\r\n out.push({ id: assistantId, role: 'assistant', content: assistantBuffer, ts: e.ts });\r\n }\r\n } else if (e.type === 'tool_call') {\r\n assistantBuffer = '';\r\n assistantId = '';\r\n out.push({\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[tool_call] ${e.toolName}(${JSON.stringify(e.arguments).slice(0, 80)})`,\r\n ts: e.ts,\r\n });\r\n } else if (e.type === 'tool_result') {\r\n out.push({\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[tool_result] ${e.toolName} \u2192 ${e.ok ? 'ok' : 'error'}`,\r\n ts: e.ts,\r\n });\r\n } else if (e.type === 'agent_start') {\r\n out.push({\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[agent_start] model=${e.model} provider=${e.provider}`,\r\n ts: e.ts,\r\n });\r\n } else if (e.type === 'agent_end') {\r\n out.push({\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[agent_end] reason=${e.reason} duration=${e.durationMs}ms`,\r\n ts: e.ts,\r\n });\r\n } else if (e.type === 'error') {\r\n out.push({\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[error] ${e.message}`,\r\n ts: e.ts,\r\n });\r\n }\r\n }\r\n return out;\r\n}\r\n\r\nexport function App(): React.ReactElement {\r\n const [input, setInput] = useState('');\r\n const [messages, setMessages] = useState<ChatMessage[]>([]);\r\n const [sessionId, setSessionId] = useState<string>('');\r\n const [sessionActive, setSessionActive] = useState(false);\r\n const [busy, setBusy] = useState(false);\r\n const [providerConfig, setProviderConfig] = useState(() => getProviderConfig());\r\n const [sessionStats, setSessionStats] = useState<{ totalTokens: number; totalCostUsd: number }>({ totalTokens: 0, totalCostUsd: 0 });\r\n const activeProviderSpec = getActiveProviderSpec();\r\n const activeModel = providerConfig.modelByProvider[activeProviderSpec.id];\r\n\r\n const writerRef = useRef<SessionJsonlWriter | null>(null);\r\n // Track the active AgentHarness so /steer can enqueue follow-up\r\n // prompts while a run is in flight (Task 18.2).\r\n const harnessRef = useRef<AgentHarness | null>(null);\r\n // Queue counter for sidebar display (Task 18.2).\r\n const [queueCount, setQueueCount] = useState<number>(0);\r\n\r\n const skills = useMemo(() => listCodingSkills(), []);\r\n const skillList = useMemo(() => formatSkillList(skills), [skills]);\r\n const isSlashMode = input.startsWith('/');\r\n\r\n // Bootstrap session on mount: resume current or create new.\r\n useEffect(() => {\r\n let cancelled = false;\r\n (async () => {\r\n await ensureSessionDir();\r\n let id = getCurrentSessionId();\r\n let resumed = false;\r\n let restoredMessages: ChatMessage[] = [];\r\n if (id) {\r\n try {\r\n const events = await loadSessionEvents(id);\r\n if (!cancelled) {\r\n restoredMessages = eventsToMessages(events);\r\n resumed = events.length > 0;\r\n }\r\n } catch {\r\n // Corrupt session \u2014 fall through to create new.\r\n id = null;\r\n }\r\n }\r\n if (!id) {\r\n id = newSessionId();\r\n setCurrentSessionId(id);\r\n }\r\n if (cancelled) return;\r\n writerRef.current = new SessionJsonlWriter(id);\r\n setSessionId(id);\r\n setMessages(restoredMessages);\r\n if (resumed) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[resume] loaded ${restoredMessages.length} messages from session ${id.slice(0, 8)}\u2026`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setSessionActive(true);\r\n }\r\n })();\r\n return () => {\r\n cancelled = true;\r\n // Fire-and-forget close on unmount.\r\n void writerRef.current?.close();\r\n };\r\n }, []);\r\n\r\n const dispatchPrompt = async (userText: string) => {\r\n const envConfig = await providerFromEnv();\r\n if (!envConfig) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: 'OPENAI_API_KEY not set. Export it before running zelari-code.',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n return;\r\n }\r\n\r\n setBusy(true);\r\n // Build the tool registry ONCE per run so the agent can read/write\r\n // files and run shell commands (Task A1, v3-A). The registry exposes\r\n // OpenAI-shaped tool descriptors via toOpenAITools() and executes\r\n // tool_call deltas when the provider returns them.\r\n const { registry: toolRegistry } = createBuiltinToolRegistry();\r\n // Wire providerFailover() (Task G.1, carryover from v3-B B.4.2).\r\n // The wrapper retries on the first transient error from the primary.\r\n // Set `ANATHEMA_FAILOVER=0` to disable wrapping. By default the\r\n // fallback uses the same provider config (a single retry against\r\n // the same endpoint).\r\n //\r\n // Task J.2 (v3-J) \u2014 cross-provider failover. The actual resolution\r\n // logic lives in the pure helper `resolveFailoverStream` so it's\r\n // testable without booting React/Ink. Here we just wire the env vars\r\n // + the dependency-injected lookup + the stream builder.\r\n const baseProviderStream = openaiCompatibleProvider(envConfig);\r\n const failoverResolution = await resolveFailoverStream({\r\n failoverEnabled: process.env.ANATHEMA_FAILOVER !== '0',\r\n envValue: process.env.ANATHEMA_FAILOVER_PROVIDER,\r\n primaryProviderId: envConfig.providerId,\r\n primary: baseProviderStream,\r\n validProviderIds: PROVIDERS.map((p) => p.id),\r\n lookupFallbackConfig: async (id) =>\r\n providerConfigFor(id as ProviderName),\r\n buildStream: (config) =>\r\n openaiCompatibleProvider(\r\n config as Parameters<typeof openaiCompatibleProvider>[0],\r\n ),\r\n });\r\n if (failoverResolution.warning) {\r\n console.warn(failoverResolution.warning);\r\n }\r\n const providerStream: import('../main/core/AgentHarness.js').ProviderStreamFn =\r\n failoverResolution.fallbackLabel\r\n ? providerFailover({\r\n primary: baseProviderStream,\r\n fallback: failoverResolution.fallback,\r\n fallbackLabel: failoverResolution.fallbackLabel,\r\n })\r\n : providerFailover({\r\n primary: baseProviderStream,\r\n fallback: failoverResolution.fallback,\r\n });\r\n const harness = new AgentHarness({\r\n model: envConfig.model,\r\n provider: PROVIDER,\r\n messages: [{ role: 'user', content: userText }],\r\n tools: toolRegistry.toOpenAITools(),\r\n toolRegistry,\r\n providerStream,\r\n });\r\n harnessRef.current = harness;\r\n setQueueCount(harness.queueLength);\r\n\r\n let assistantContent = '';\r\n // Task G.3.3 \u2014 use the process-wide singleton so the SIGINT/SIGTERM\r\n // handler in `main.ts` can flush the same instance on shutdown.\r\n // The singleton respects `ANATHEMA_METRICS_FILE` for tests.\r\n const metrics: MetricsLogger = getMetricsLogger();\r\n // Task G.4.5 \u2014 capture real provider-reported token usage from\r\n // `message_end` events. When present, it overrides the ~4-char/token\r\n // approximation (v3-B behavior). When absent (some providers don't\r\n // honor `stream_options.include_usage`), we fall back to the estimate.\r\n let realUsage: { promptTokens: number; completionTokens: number; totalTokens: number } | null = null;\r\n try {\r\n for await (const event of harness.run()) {\r\n // Task G.4.5 \u2014 capture usage from message_end for sessionStats.\r\n if (event.type === 'message_end' && event.usage) {\r\n realUsage = event.usage;\r\n }\r\n // Keep the sidebar queue counter in sync with the harness.\r\n if (event.type === 'queue_update') {\r\n setQueueCount(harness.queueLength);\r\n }\r\n // Persist every event to JSONL sidecar.\r\n if (writerRef.current) {\r\n await writerRef.current.append(event);\r\n }\r\n // Telemetry hooks (Task B.5.2).\r\n if (event.type === 'agent_end') {\r\n metrics.record({\r\n kind: 'run',\r\n sessionId,\r\n provider: envConfig.providerId,\r\n model: envConfig.model,\r\n latencyMs: event.durationMs,\r\n ok: event.reason === 'stop',\r\n });\r\n } else if (event.type === 'error') {\r\n metrics.record({\r\n kind: 'error',\r\n sessionId,\r\n provider: envConfig.providerId,\r\n model: envConfig.model,\r\n error: event.message,\r\n });\r\n } else if (event.type === 'tool_execution_end') {\r\n // Telemetry hook for tool calls (Task G.3.2, carryover from v3-B\r\n // B.5.2 partial). Tracks which tools fire, how often they error,\r\n // and how long they take \u2014 useful for /skill-stats follow-ups\r\n // and for the Council role-depth mission.\r\n metrics.record({\r\n kind: 'tool',\r\n sessionId,\r\n provider: envConfig.providerId,\r\n model: envConfig.model,\r\n toolName: event.toolName,\r\n toolCallId: event.toolCallId,\r\n durationMs: event.durationMs,\r\n ok: !event.isError,\r\n });\r\n }\r\n if (event.type === 'message_delta') {\r\n assistantContent += event.delta;\r\n setMessages((prev) => {\r\n const last = prev[prev.length - 1];\r\n if (last && last.role === 'assistant' && last.id.startsWith('streaming-')) {\r\n return [...prev.slice(0, -1), { ...last, content: assistantContent }];\r\n }\r\n return [\r\n ...prev,\r\n { id: `streaming-${crypto.randomUUID()}`, role: 'assistant', content: assistantContent, ts: Date.now() },\r\n ];\r\n });\r\n } else if (event.type === 'error') {\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: `[error] ${event.message}`, ts: Date.now() },\r\n ]);\r\n } else if (event.type === 'tool_call') {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[tool_call] ${event.toolName}(${JSON.stringify(event.arguments).slice(0, 80)})`,\r\n ts: event.ts,\r\n },\r\n ]);\r\n } else if (event.type === 'tool_result') {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[tool_result] ${event.toolName} \u2192 ${event.ok ? 'ok' : 'error'}`,\r\n ts: event.ts,\r\n },\r\n ]);\r\n } else if (event.type === 'tool_execution_start') {\r\n // Surface tool invocations as ephemeral UI indicators (Task A1).\r\n const argsPreview = JSON.stringify(event.args).slice(0, 120);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `\u25B6 ${event.toolName}(${argsPreview})`,\r\n ts: event.ts,\r\n },\r\n ]);\r\n } else if (event.type === 'tool_execution_end') {\r\n const preview = event.result.slice(0, 200);\r\n const icon = event.isError ? '\u2717' : '\u2713';\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `${icon} ${preview}${event.result.length > 200 ? '\u2026' : ''} (${event.durationMs}ms)`,\r\n ts: event.ts,\r\n },\r\n ]);\r\n }\r\n }\r\n } finally {\r\n harnessRef.current = null;\r\n setQueueCount(0);\r\n setBusy(false);\r\n // Accumulate session-level token/cost stats (Task B.1.1).\r\n // Task G.4.5 \u2014 prefer the provider-reported usage when present\r\n // (more accurate than the ~4-char approximation). When absent,\r\n // fall back to the v3-B estimate so old providers keep working.\r\n setSessionStats((prev) =>\r\n computeSessionStatsDelta(\r\n realUsage,\r\n userText,\r\n assistantContent,\r\n envConfig.model,\r\n prev,\r\n ),\r\n );\r\n }\r\n };\r\n\r\n const handleSessionKind = async (result: SlashCommandResult): Promise<string> => {\r\n if (result.kind === 'session') {\r\n try {\r\n const sessions = await listSessions();\r\n if (sessions.length === 0) return '[sessions] no past sessions';\r\n const lines = sessions.slice(0, 10).map((s) => {\r\n const dt = new Date(s.mtimeMs).toISOString().replace('T', ' ').slice(0, 16);\r\n return ` ${s.id.slice(0, 8)}\u2026 ${s.eventCount} events ${dt}`;\r\n });\r\n return `[sessions] showing ${Math.min(sessions.length, 10)} of ${sessions.length}:\\n${lines.join('\\n')}`;\r\n } catch (err) {\r\n return `[sessions] error: ${err instanceof Error ? err.message : String(err)}`;\r\n }\r\n }\r\n if (result.kind === 'resume' && result.targetSessionId) {\r\n setCurrentSessionId(result.targetSessionId);\r\n return `[resume] session ${result.targetSessionId.slice(0, 8)}\u2026 set as current \u2014 restart zelari-code to load it`;\r\n }\r\n if (result.kind === 'new') {\r\n clearCurrentSessionId();\r\n const id = newSessionId();\r\n setCurrentSessionId(id);\r\n writerRef.current?.close();\r\n writerRef.current = new SessionJsonlWriter(id);\r\n setSessionId(id);\r\n setMessages([]);\r\n setSessionActive(false);\r\n return `[new] fresh session ${id.slice(0, 8)}\u2026 started`;\r\n }\r\n return result.message ?? `[${result.kind}] handled`;\r\n };\r\n\r\n const dispatchCouncilPrompt = async (input: string) => {\r\n const envConfig = await providerFromEnv();\r\n if (!envConfig) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: 'OPENAI_API_KEY not set. Export it before invoking /council.',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n return;\r\n }\r\n setBusy(true);\r\n // Council members get access to the same built-in tool registry as\r\n // the main prompt path (Task C.1.3). Each specialist can now\r\n // read/write/bash/grep the workspace; the harness emits\r\n // tool_execution_start/end events which we surface as 'tool' role\r\n // messages (ChatStream renders them via CollapsibleToolOutput).\r\n const { registry: councilToolRegistry } = createBuiltinToolRegistry();\r\n // Feedback store for specialist ordering (Task I.2 close-out).\r\n // Fresh instance per /council invocation: cheap (lazy JSON load) and\r\n // ensures the latest user feedback is visible after /council-feedback.\r\n const councilFeedbackStore = new FeedbackStore();\r\n try {\r\n for await (const event of dispatchCouncil(input, {\r\n apiKey: envConfig.apiKey,\r\n model: envConfig.model,\r\n provider: PROVIDER,\r\n providerStream: openaiCompatibleProvider(envConfig),\r\n sessionId,\r\n tools: councilToolRegistry,\r\n feedbackStore: councilFeedbackStore,\r\n })) {\r\n if (writerRef.current) {\r\n await writerRef.current.append(event);\r\n }\r\n if (event.type === 'message_delta') {\r\n setMessages((prev) => {\r\n const last = prev[prev.length - 1];\r\n if (last && last.role === 'assistant' && last.id.startsWith('streaming-')) {\r\n return [...prev.slice(0, -1), { ...last, content: prev[prev.length - 1].content + event.delta }];\r\n }\r\n return [\r\n ...prev,\r\n { id: `streaming-${crypto.randomUUID()}`, role: 'assistant', content: event.delta, ts: event.ts },\r\n ];\r\n });\r\n } else if (event.type === 'tool_execution_start') {\r\n // Surface as 'tool' role so ChatStream renders CollapsibleToolOutput.\r\n const argsPreview = JSON.stringify(event.args).slice(0, 120);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'tool',\r\n content: `${event.toolName}(${argsPreview})`,\r\n ts: event.ts,\r\n toolName: event.toolName,\r\n toolCallId: event.toolCallId,\r\n toolOk: undefined,\r\n toolDurationMs: undefined,\r\n },\r\n ]);\r\n } else if (event.type === 'tool_execution_end') {\r\n // Find the matching tool_execution_start message (by toolCallId) and update it.\r\n setMessages((prev) => {\r\n for (let i = prev.length - 1; i >= 0; i--) {\r\n const m = prev[i];\r\n if (m && m.role === 'tool' && m.toolCallId === event.toolCallId && m.toolDurationMs === undefined) {\r\n const updated = [...prev];\r\n updated[i] = {\r\n ...m,\r\n toolOk: !event.isError,\r\n toolDurationMs: event.durationMs,\r\n content: `${m.toolName ?? 'tool'}${event.isError ? ' \u2192 error' : ' \u2192 ok'} (${event.durationMs}ms)`,\r\n };\r\n return updated;\r\n }\r\n }\r\n return prev;\r\n });\r\n } else if (event.type === 'error') {\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: `[error] ${event.message}`, ts: event.ts },\r\n ]);\r\n }\r\n }\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[council error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } finally {\r\n setBusy(false);\r\n }\r\n };\r\n\r\n const handleSubmit = async (value: string) => {\r\n if (!value.trim() || busy) return;\r\n\r\n const result: SlashCommandResult = handleSlashCommand(value, skills);\r\n\r\n if (!result.handled) {\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'user', content: value, ts: Date.now() },\r\n ]);\r\n setSessionActive(true);\r\n await dispatchPrompt(value);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // Session-kind commands execute async side effects.\r\n if (result.kind === 'session' || result.kind === 'resume' || result.kind === 'new') {\r\n const sysMsg = await handleSessionKind(result);\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: sysMsg, ts: Date.now() },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // Council command dispatches to the multi-agent council.\r\n if (result.kind === 'council' && result.councilInput) {\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'user', content: `/council ${result.councilInput}`, ts: Date.now() },\r\n ]);\r\n setSessionActive(true);\r\n setInput('');\r\n await dispatchCouncilPrompt(result.councilInput);\r\n return;\r\n }\r\n\r\n // Council feedback (Task I.2, v3-I) \u2014 record 1-5 rating for a member.\r\n if (result.kind === 'council_feedback'\r\n && result.feedbackMemberId\r\n && typeof result.feedbackScore === 'number') {\r\n try {\r\n const store = new FeedbackStore();\r\n const entry = store.record({\r\n memberId: result.feedbackMemberId,\r\n score: result.feedbackScore,\r\n ...(result.feedbackNote ? { note: result.feedbackNote } : {}),\r\n ...(sessionId ? { sessionId } : {}),\r\n });\r\n const stats = store.getStats(result.feedbackMemberId);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[council-feedback] ${result.feedbackMemberId} rated ${entry.score}/5`\r\n + ` \u2014 running avg ${stats.avg.toFixed(2)} over ${stats.count} rating(s).`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[council-feedback] failed: ${err instanceof Error ? err.message : 'Unknown'}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n return;\r\n }\r\n\r\n // Provider switch (Task 15.3).\r\n if (result.kind === 'provider_set' && result.provider) {\r\n const spec = getProviderSpec(result.provider);\r\n if (!spec) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider] unknown: ${result.provider}. Available: openai-compatible, minimax, glm, grok, custom`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n try {\r\n persistActiveProvider(spec.id);\r\n setProviderConfig(getProviderConfig());\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider] active: ${spec.displayName} (model: ${getModelForProvider(spec.id)})`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'provider_list') {\r\n const list = getActiveProviderSpec();\r\n const customEp = getCustomEndpoint(list.id);\r\n const epHint = customEp ? ` \u2014 custom endpoint: ${customEp}` : '';\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider] current: ${list.displayName} (model: ${activeModel})${epHint} \u2014 available: openai-compatible, minimax, glm, grok, custom`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // Custom base URL for the active provider (Task A3, v3-A).\r\n if (result.kind === 'provider_custom') {\r\n const id = activeProviderSpec.id;\r\n try {\r\n if (result.customClear) {\r\n clearCustomEndpoint(id);\r\n setProviderConfig(getProviderConfig());\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider] cleared custom endpoint for ${id} \u2014 falling back to default`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else if (result.customEndpoint) {\r\n setCustomEndpoint(id, result.customEndpoint);\r\n setProviderConfig(getProviderConfig());\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider] custom endpoint for ${id} set to ${result.customEndpoint}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else if (result.message) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider] ${result.message}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /provider <id> refresh \u2014 force a refresh attempt (Task F.3.1, v3-F).\r\n if (result.kind === 'provider_refresh' && result.provider) {\r\n const spec = getProviderSpec(result.provider);\r\n if (!spec) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider] unknown: ${result.provider}. Available: openai-compatible, minimax, glm, grok, custom`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n try {\r\n const refreshed = await resolveApiKeyWithMeta(spec.id);\r\n if (!refreshed) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider refresh] ${spec.id}: no key configured (use /login ${spec.id} <key>)`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n const expires = refreshed.expiresAt\r\n ? ` \u2014 expires in ${formatDuration(refreshed.expiresAt - Date.now())}`\r\n : '';\r\n const impl = getRefreshImpl(spec.id);\r\n const implNote = impl ? '' : ' (no refresh impl registered \u2014 stale token returned)';\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider refresh] ${spec.id}: ok \u2014 key ${maskKey(refreshed.apiKey)}${expires}${implNote}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider refresh error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /provider <id> status \u2014 show key source, expiry, refresh impl (Task F.3.2, v3-F).\r\n if (result.kind === 'provider_status' && result.provider) {\r\n const spec = getProviderSpec(result.provider);\r\n if (!spec) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider] unknown: ${result.provider}. Available: openai-compatible, minimax, glm, grok, custom`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n const envKey = process.env[spec.envVar];\r\n const stored = getOAuthToken(spec.id);\r\n const source = envKey && envKey.trim().length > 0\r\n ? `env (${spec.envVar})`\r\n : stored\r\n ? 'store'\r\n : 'missing';\r\n const expires = stored?.expiresAt\r\n ? formatDuration(stored.expiresAt - Date.now())\r\n : '\u2014';\r\n const hasRefresh = getRefreshImpl(spec.id) ? 'yes' : 'no';\r\n const hasRefreshToken = stored?.refreshToken ? 'yes' : 'no';\r\n const baseUrl = spec.baseUrl ?? '\u2014';\r\n const validation = await validateApiKey(spec.id, envKey ?? stored?.apiKey ?? '').catch(() => null);\r\n const valLine = validation\r\n ? validation.skipped\r\n ? `validation: skipped (no baseUrl)`\r\n : `validation: ${validation.ok ? 'ok' : `fail (${validation.reason})`}${validation.durationMs ? ` ${validation.durationMs}ms` : ''}`\r\n : 'validation: error';\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[provider status] ${spec.id} (${spec.displayName})\\n env var: ${spec.envVar}\\n source: ${source}\\n expires: ${expires}\\n refresh: ${hasRefresh} (impl registered)\\n refreshTkn: ${hasRefreshToken}\\n baseUrl: ${baseUrl}\\n ${valLine}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /promote-member <id> \u2014 promote a council member to a standalone skill (v3-K).\r\n if (result.kind === 'promote_member' && result.promoteMemberId) {\r\n try {\r\n const { skill, markdown } = promoteMember(result.promoteMemberId);\r\n const skillDir = process.env.ANATHEMA_SKILL_DIR\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'skills');\r\n await fs.promises.mkdir(skillDir, { recursive: true });\r\n const filePath = path.join(skillDir, `${skill.id}.md`);\r\n await fs.promises.writeFile(filePath, markdown, 'utf8');\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content:\r\n `[promote-member] ${skill.name} (${result.promoteMemberId}) \u2192 ${filePath}\\n` +\r\n ` category: ${skill.category}\\n` +\r\n ` cost: ${skill.estimatedCost}\\n` +\r\n ` required: ${skill.requiredRoles.join(', ') || '\u2014'}\\n` +\r\n ` tools: ${skill.requiredTools.join(', ') || '\u2014'}\\n` +\r\n ` tags: ${skill.tags.join(', ')}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } catch (err) {\r\n const msg = err instanceof Error ? err.message : String(err);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[promote-member error] ${msg}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'promote_member_error') {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: result.promoteMemberError ?? 'Usage: /promote-member <memberId>',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /update \u2014 check or perform zelari-coder self-update (Task N.5, v3-N).\r\n if (result.kind === 'update_check') {\r\n try {\r\n const { checkForUpdate } = await import('./updater.js');\r\n const info = await checkForUpdate();\r\n if (info.error) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[update] check failed: ${info.error}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else if (info.updateAvailable) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content:\r\n `[update] \uD83C\uDD95 zelari-coder ${info.latestVersion} available (current: ${info.currentVersion})\\n` +\r\n ` Run \\`/update --yes\\` to install. You'll need to restart manually after.`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[update] up to date (${info.currentVersion})`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n const msg = err instanceof Error ? err.message : String(err);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[update error] ${msg}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'update_perform') {\r\n try {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[update] running \\`npm install -g zelari-coder@latest\\`...`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n const { performUpdate } = await import('./updater.js');\r\n const resultUpdate = await performUpdate();\r\n if (resultUpdate.ok) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content:\r\n `[update] \u2705 installed successfully\\n\\n` +\r\n `Please restart zelari-coder manually to use the new version.\\n` +\r\n `(exit with /exit or Ctrl+C, then run \\`zelari-coder\\` again)`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content:\r\n `[update] \u274C failed: ${resultUpdate.error ?? 'unknown error'}\\n\\n` +\r\n `npm output:\\n${resultUpdate.output || '(empty)'}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n const msg = err instanceof Error ? err.message : String(err);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[update error] ${msg}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'update_usage') {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: result.message ?? 'Usage: /update [--yes|-y]',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /compact \u2014 Task B.3.2 \u2014 actually compact the in-memory transcript.\r\n if (result.kind === 'compact') {\r\n const opts: { threshold?: number; keepRecent?: number } = {};\r\n if (result.compactThreshold !== undefined) opts.threshold = result.compactThreshold;\r\n if (result.compactKeepRecent !== undefined) opts.keepRecent = result.compactKeepRecent;\r\n const r = compactTranscript(messages, opts);\r\n setMessages([...r.messages]);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: formatCompactionSummary(r),\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /diff \u2014 show uncommitted working-tree changes (Task A4, v3-A).\r\n if (result.kind === 'diff') {\r\n try {\r\n const repoRoot = defaultProjectRoot();\r\n if (!(await isGitRepo(repoRoot))) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: '[diff] not a git repository \u2014 nothing to show',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else {\r\n const { diff, truncated, empty } = await getWorkingDiff({\r\n cwd: repoRoot,\r\n staged: result.diffStaged ?? false,\r\n });\r\n const banner = empty\r\n ? `[diff] working tree clean${result.diffStaged ? ' (incl. staged)' : ''}`\r\n : `[diff]${result.diffStaged ? ' (staged + unstaged)' : ''} \u2014 ${truncated ? 'truncated to 50k chars' : 'full output follows'}`;\r\n const body = empty ? '' : `\\n\\n${diff}`;\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `${banner}${body}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[diff error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /undo \u2014 destructive revert. With --yes, execute; without, just warn.\r\n if (result.kind === 'undo' || result.kind === 'undo_confirm') {\r\n // Always surface the warning/help message first.\r\n if (result.message) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: result.message!,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n if (result.kind === 'undo_confirm' && result.undoConfirmed) {\r\n try {\r\n const repoRoot = defaultProjectRoot();\r\n if (!(await isGitRepo(repoRoot))) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: '[undo] not a git repository \u2014 nothing to revert',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else {\r\n const res = await undoWorkingChanges({ cwd: repoRoot });\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[undo] ${res.summary}${res.reverted.length > 0 ? `\\n - ${res.reverted.slice(0, 10).join('\\n - ')}${res.reverted.length > 10 ? `\\n ... +${res.reverted.length - 10} more` : ''}` : ''}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[undo error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'model_set' && result.model) {\r\n const id = activeProviderSpec.id;\r\n try {\r\n persistModelForProvider(id, result.model);\r\n setProviderConfig(getProviderConfig());\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[model] set: ${id} \u2192 ${result.model}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[model error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'model_show') {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[model] current: ${activeProviderSpec.displayName} \u2192 ${activeModel}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // v3-U: /models \u2014 list discovered models for the active provider.\r\n if (result.kind === 'models_list') {\r\n const discId = activeProviderSpec.id as DiscoveryProviderId;\r\n const cached = getCachedModels(discId);\r\n if (!cached || cached.models.length === 0) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[models] no cache for ${activeProviderSpec.displayName}. Run /models refresh or /login ${discId} <key> to discover.`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else {\r\n const ageMin = Math.round((Date.now() - cached.fetchedAt) / 60_000);\r\n const list = cached.models.map((m) => ` - ${m.id}${m.ownedBy ? ` (${m.ownedBy})` : ''}`).join('\\n');\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[models] ${activeProviderSpec.displayName} \u2014 ${cached.models.length} models (fetched ${ageMin}m ago from ${cached.baseUrl}):\\n${list}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n // v3-U: /models refresh \u2014 force re-discovery for the active provider.\r\n if (result.kind === 'models_refresh' || result.kind === 'model_refresh') {\r\n const discId = activeProviderSpec.id as DiscoveryProviderId;\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[models] refreshing model list for ${activeProviderSpec.displayName}...`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n // Fire discovery (await to surface errors inline).\r\n (async () => {\r\n try {\r\n const entry = await discoverModelsForProvider(discId);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[models] \u2713 ${entry.models.length} models discovered for ${activeProviderSpec.displayName}. Use /model <name> to switch.`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[models] \u2717 discovery failed: ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n })();\r\n return;\r\n }\r\n\r\n // Branch commands (Task 17.2).\r\n if (result.kind === 'branch_create' && result.branchName) {\r\n if (!sessionId) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: '[branch] no active session \u2014 wait for bootstrap or run a prompt first',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n try {\r\n const info = await createBranch(result.branchName, sessionId);\r\n setCurrentBranch(info.name);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[branch] created \"${info.name}\" from session ${info.fromSessionId.slice(0, 8)}\u2026 (${info.sessionCount} session file copied)`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[branch error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'branch_list') {\r\n try {\r\n const list = await listBranches();\r\n if (list.length === 0) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: '[branches] no branches yet \u2014 use /branch <name> to create one',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } else {\r\n const currentBranch = getCurrentBranch();\r\n const lines = list.slice(0, 10).map((b) => {\r\n const dt = new Date(b.createdAt).toISOString().replace('T', ' ').slice(0, 16);\r\n const marker = currentBranch === b.name ? ' *' : ' ';\r\n return ` ${marker}${b.name.padEnd(20)} from ${b.fromSessionId.slice(0, 8)}\u2026 ${b.sessionCount} sessions ${dt}`;\r\n });\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[branches] ${list.length} total (* = active):\\n${lines.join('\\n')}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[branches error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'branch_checkout' && result.branchName) {\r\n try {\r\n if (!checkBranchExists(result.branchName)) {\r\n throw new Error(`Branch \"${result.branchName}\" does not exist. Use /branches to list.`);\r\n }\r\n setCurrentBranch(result.branchName);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[checkout] active branch set to \"${result.branchName}\". Restart zelari-code to load it.`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[checkout error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /steer --interrupt \u2014 enqueue + cancel current run (Task C.3.2).\r\n if (result.kind === 'steer_interrupt') {\r\n const text = result.steerText;\r\n if (!text) {\r\n if (result.message) {\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: result.message!, ts: Date.now() },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n applySteerInterrupt({\r\n text,\r\n harness: harnessRef.current,\r\n appendMessage: (content) =>\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content, ts: Date.now() },\r\n ]),\r\n setQueueCount,\r\n dispatchPrompt,\r\n });\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /steer \u2014 enqueue a follow-up prompt on the active harness (Task 18.2).\r\n if (result.kind === 'steer') {\r\n const text = result.steerText;\r\n if (!text) {\r\n // No text: the slash command emits a usage hint message.\r\n if (result.message) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: result.message!,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n const harness = harnessRef.current;\r\n if (!harness) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: '[steer] no active run \u2014 /steer only works while a run is in flight.',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n harness.enqueue(text);\r\n setQueueCount(harness.queueLength);\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[steer] queued: \"${text}\" (queue: ${harness.queueLength})`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /steer without text \u2014 already handled by slashCommands with a usage hint.\r\n\r\n // Login with key: store it via keyStore AND switch the active\r\n // provider to the one just authenticated, so the next dispatch\r\n // resolves the key via keyStore without requiring an env var or\r\n // restart (Task 14.9 + v3-T persistence fix).\r\n if (result.kind === 'login' && result.provider && result.loginKey) {\r\n const spec = getProviderSpec(result.provider);\r\n const displayName = spec?.displayName ?? result.provider;\r\n const envVar = spec?.envVar ?? `${result.provider.toUpperCase()}_API_KEY`;\r\n try {\r\n setApiKey(result.provider, result.loginKey);\r\n // Switch the active provider so subsequent prompts resolve the\r\n // key from keyStore (providerFromEnv \u2192 resolveActiveProvider \u2192 resolveApiKeyWithMeta).\r\n persistActiveProvider(result.provider as Parameters<typeof persistActiveProvider>[0]);\r\n // Set a sensible default model for the new provider if none is\r\n // configured yet, so /login glm \u2192 /model picks up something useful.\r\n const currentModel = getModelForProvider(result.provider as Parameters<typeof getModelForProvider>[0]);\r\n if (!currentModel) {\r\n const fallbackModel = providerDefaults[result.provider as keyof typeof providerDefaults];\r\n if (fallbackModel) {\r\n persistModelForProvider(result.provider as Parameters<typeof persistModelForProvider>[0], fallbackModel);\r\n }\r\n }\r\n setProviderConfig(getProviderConfig());\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[login] ${displayName} key stored (${maskKey(result.loginKey)}). Active provider switched to ${displayName} \u2014 try a prompt now.`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n // v3-U: kick off model discovery in the background so /model can\r\n // suggest the provider's actual current list. Fire-and-forget: a\r\n // failed discovery call should not break the /login UX.\r\n const discoveryProvider = result.provider as DiscoveryProviderId;\r\n if (['grok', 'glm', 'minimax', 'openai-compatible'].includes(discoveryProvider)) {\r\n discoverModelsInBackground(discoveryProvider, {\r\n onError: (err) => {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[models] discovery failed for ${discoveryProvider}: ${err.message} (using static defaults)`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n },\r\n });\r\n }\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[login error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n // Login with OAuth: launch SuperGrok PKCE flow (Task 16.3 + v3-T).\r\n if (result.kind === 'login_oauth' && result.provider === 'grok') {\r\n // Override GROK_OAUTH_CLIENT_ID via env if the user wants a custom client.\r\n // Default uses xAI's public client (see DEFAULT_GROK_OAUTH_CLIENT_ID).\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: '[login oauth] opening browser for SuperGrok authentication (PKCE)...',\r\n ts: Date.now(),\r\n },\r\n ]);\r\n setBusy(true);\r\n try {\r\n const resultOAuth = await runGrokOAuthFlow({\r\n callbackTimeoutMs: 120_000,\r\n });\r\n // Persist full OAuth token (apiKey + expiresAt + refreshToken) so\r\n // the auto-refresh path (Task D.3.1) can use the refresh_token later.\r\n setOAuthToken('grok', {\r\n apiKey: resultOAuth.accessToken,\r\n ...(resultOAuth.expiresAt !== undefined ? { expiresAt: resultOAuth.expiresAt } : {}),\r\n ...(resultOAuth.refreshToken ? { refreshToken: resultOAuth.refreshToken } : {}),\r\n });\r\n // Switch active provider to grok so subsequent prompts pick up the OAuth token.\r\n persistActiveProvider('grok');\r\n if (!getModelForProvider('grok')) {\r\n persistModelForProvider('grok', providerDefaults['grok'] ?? 'grok-4');\r\n }\r\n setProviderConfig(getProviderConfig());\r\n const expiresHint = resultOAuth.expiresAt\r\n ? `, expires ${new Date(resultOAuth.expiresAt).toISOString()}`\r\n : '';\r\n const refreshHint = resultOAuth.refreshToken ? ', refresh token saved' : '';\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[login oauth] \u2713 Grok authenticated via SuperGrok (token ${maskKey(resultOAuth.accessToken)}${expiresHint}${refreshHint}). Active provider switched to grok \u2014 try a prompt now.`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n // v3-U: kick off Grok model discovery (OAuth token as Bearer).\r\n discoverModelsInBackground('grok', {\r\n onError: (err) => {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[models] discovery failed for grok: ${err.message} (using static defaults)`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n },\r\n });\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n {\r\n id: crypto.randomUUID(),\r\n role: 'system',\r\n content: `[login oauth error] ${err instanceof Error ? err.message : String(err)}`,\r\n ts: Date.now(),\r\n },\r\n ]);\r\n } finally {\r\n setBusy(false);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n const sysMsg = result.message\r\n ?? (result.kind === 'skill' && result.expandedSkill\r\n ? `[skill] ${result.expandedSkill.skillId} \u2014 prompt ready (dispatch lands in Phase 14.7)`\r\n : `[${result.kind}] handled`);\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: sysMsg, ts: Date.now() },\r\n ]);\r\n\r\n // Dispatch skill prompt + record history (Task C.2.3).\r\n if (result.kind === 'skill' && result.expandedSkill) {\r\n const skillLogger = new SkillHistoryLogger();\r\n const invocationId = skillLogger.recordStart(result.expandedSkill.skillId, sessionId ?? undefined);\r\n let dispatchError: Error | undefined;\r\n try {\r\n setInput('');\r\n await dispatchPrompt(result.expandedSkill.prompt);\r\n } catch (err) {\r\n dispatchError = err instanceof Error ? err : new Error(String(err));\r\n } finally {\r\n skillLogger.recordEnd(invocationId, {\r\n ok: !dispatchError,\r\n error: dispatchError?.message,\r\n });\r\n setBusy(false);\r\n }\r\n return;\r\n }\r\n\r\n // /skill-stats [name] \u2014 aggregate stats from skill-history.jsonl (Task C.2.3).\r\n if (result.kind === 'skill_stats') {\r\n const historyFile = process.env.ANATHEMA_SKILL_HISTORY_FILE\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'skill-history.jsonl');\r\n try {\r\n const records = await readSkillHistory(historyFile);\r\n const stats = getSkillStats(records, result.skillStatsSkillId);\r\n const label = result.skillStatsSkillId ?? 'all skills';\r\n const formatted = stats.count === 0\r\n ? `[skill-stats] ${label}: no invocations recorded yet`\r\n : `[skill-stats] ${label}: ${stats.count} invocations, ${(stats.successRate * 100).toFixed(1)}% success, avg ${stats.avgDurationMs.toFixed(0)}ms, ${stats.totalTokens} tokens total`;\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: formatted, ts: Date.now() },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: `[skill-stats error] ${err instanceof Error ? err.message : String(err)}`, ts: Date.now() },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n // /skill-compare <id1> <id2> \u2014 side-by-side stats for two skills (Task H.3).\r\n if (result.kind === 'skill-compare') {\r\n const ids = result.compareIds;\r\n if (!ids) {\r\n // Missing-args case: the slash command produced a warning message.\r\n // Surface it in chat as a system message and exit early.\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: result.message ?? '[skill-compare] missing args', ts: Date.now() },\r\n ]);\r\n setInput('');\r\n return;\r\n }\r\n const historyFile = process.env.ANATHEMA_SKILL_HISTORY_FILE\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'skill-history.jsonl');\r\n try {\r\n const formatted = await compareSkillsFromFile(ids[0], ids[1], historyFile);\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: formatted, ts: Date.now() },\r\n ]);\r\n } catch (err) {\r\n setMessages((prev) => [\r\n ...prev,\r\n { id: crypto.randomUUID(), role: 'system', content: `[skill-compare error] ${err instanceof Error ? err.message : String(err)}`, ts: Date.now() },\r\n ]);\r\n }\r\n setInput('');\r\n return;\r\n }\r\n\r\n if (result.kind === 'exit') {\r\n await writerRef.current?.close();\r\n setTimeout(() => process.exit(0), 50);\r\n }\r\n if (result.kind === 'clear') {\r\n setMessages([]);\r\n setSessionActive(false);\r\n }\r\n setInput('');\r\n };\r\n\r\n return (\r\n <Box flexDirection=\"column\">\r\n <Header\r\n model={activeModel}\r\n provider={activeProviderSpec.id}\r\n skillCount={skills.length}\r\n sessionActive={sessionActive}\r\n sessionId={sessionId ? sessionId.slice(0, 8) : '...'}\r\n totalTokens={sessionStats.totalTokens}\r\n totalCostUsd={sessionStats.totalCostUsd}\r\n />\r\n <Box flexDirection=\"row\">\r\n <ChatStream messages={messages} />\r\n <Sidebar\r\n skillList={skillList}\r\n sessionCount={messages.length}\r\n isSlashMode={isSlashMode}\r\n />\r\n </Box>\r\n <InputBar\r\n value={input}\r\n onChange={setInput}\r\n onSubmit={handleSubmit}\r\n disabled={busy}\r\n />\r\n </Box>\r\n );\r\n}", "import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport { formatCost, formatTokens } from '../modelPricing.js';\r\n\r\ninterface HeaderProps {\r\n model: string;\r\n provider: string;\r\n skillCount: number;\r\n sessionActive: boolean;\r\n sessionId: string;\r\n /** Estimated total tokens used so far this session (Task B.1.1). */\r\n totalTokens?: number;\r\n /** Estimated total cost in USD so far this session. */\r\n totalCostUsd?: number;\r\n}\r\n\r\nexport function Header({ model, provider, skillCount, sessionActive, sessionId, totalTokens, totalCostUsd }: HeaderProps): React.ReactElement {\r\n const hasCost = typeof totalCostUsd === 'number' && totalCostUsd > 0;\r\n const costStr = hasCost ? formatCost(totalCostUsd) : '$0.0000';\r\n const tokStr = formatTokens(totalTokens ?? 0);\r\n return (\r\n <Box borderStyle=\"round\" borderColor=\"cyan\" paddingX={1} flexDirection=\"row\">\r\n <Text bold color=\"cyan\">zelari-code</Text>\r\n <Text dimColor> \u00B7 </Text>\r\n <Text>{model}</Text>\r\n <Text dimColor> \u00B7 </Text>\r\n <Text>{provider}</Text>\r\n <Text dimColor> \u00B7 </Text>\r\n <Text>{skillCount} skills</Text>\r\n <Text dimColor> \u00B7 </Text>\r\n <Text color={sessionActive ? 'green' : 'gray'}>\r\n {sessionActive ? '\u25CF active' : '\u25CB idle'}\r\n </Text>\r\n <Text dimColor> \u00B7 </Text>\r\n <Text dimColor>session {sessionId}</Text>\r\n <Text dimColor> \u00B7 </Text>\r\n <Text color={hasCost ? 'yellow' : 'gray'}>{costStr}</Text>\r\n <Text dimColor> \u00B7 </Text>\r\n <Text color=\"gray\">{tokStr} tok</Text>\r\n </Box>\r\n );\r\n}", "/**\r\n * modelPricing \u2014 USD cost calculator for LLM tokens.\r\n *\r\n * Pricing table covers the providers wired in `keyStore.PROVIDERS`. Costs\r\n * are in **USD per 1M tokens** (industry standard). Numbers are conservative\r\n * defaults \u2014 the user can override per-model via env vars (see below).\r\n *\r\n * Env overrides (1M-token rate):\r\n * - ANATHEMA_PRICE_GROK4\r\n * - ANATHEMA_PRICE_GROK4_FAST\r\n * - ANATHEMA_PRICE_GLM46\r\n * - ANATHEMA_PRICE_MINIMAX_M25\r\n * - ANATHEMA_PRICE_DEFAULT (fallback for unknown models)\r\n *\r\n * Costs returned are precise to 6 decimals. Round to cents at the UI layer.\r\n */\r\n\r\n/** Pricing table (USD per 1M tokens) \u2014 conservative public list prices. */\r\nconst PRICES_PER_MILLION: Record<string, { input: number; output: number }> = {\r\n // xAI Grok\r\n 'grok-4': { input: 3, output: 15 },\r\n 'grok-4-fast': { input: 0.20, output: 0.50 },\r\n 'grok-3': { input: 3, output: 15 },\r\n 'grok-3-mini': { input: 0.30, output: 0.50 },\r\n 'grok-2-vision': { input: 2, output: 10 },\r\n // GLM / Z.AI\r\n 'glm-4.6': { input: 0.60, output: 2.20 },\r\n 'glm-4.5': { input: 0.50, output: 2.00 },\r\n 'glm-4.5-air': { input: 0.10, output: 0.60 },\r\n 'glm-z1': { input: 0.50, output: 2.00 },\r\n // MiniMax\r\n 'MiniMax-M2.5': { input: 0.20, output: 1.10 },\r\n 'MiniMax-M2': { input: 0.20, output: 1.10 },\r\n 'MiniMax-M2-her': { input: 0.30, output: 1.20 },\r\n // OpenAI (for openai-compatible fallback)\r\n 'gpt-4o': { input: 2.50, output: 10 },\r\n 'gpt-4o-mini': { input: 0.15, output: 0.60 },\r\n 'gpt-4-turbo': { input: 10, output: 30 },\r\n 'o1-preview': { input: 15, output: 60 },\r\n 'o1-mini': { input: 3, output: 12 },\r\n};\r\n\r\n/** Default rate for unknown models \u2014 assume a mid-tier provider. */\r\nconst DEFAULT_RATE = { input: 1.0, output: 3.0 };\r\n\r\n/** Read an env-var override for a given model, if present. */\r\nfunction envOverride(model: string): { input: number; output: number } | null {\r\n const key = `ANATHEMA_PRICE_${model.toUpperCase().replace(/[^A-Z0-9]/g, '_')}`;\r\n const raw = process.env[key] ?? process.env.ANATHEMA_PRICE_DEFAULT;\r\n return parseRateOverride(raw);\r\n}\r\n\r\n/**\r\n * Parse a price-override string in the format `INPUT[/OUTPUT]`.\r\n * Exported for testing (env-var-based tests are subject to platform\r\n * content filters that rewrite numeric literals in test files).\r\n *\r\n * @returns null if `raw` is undefined/empty or if either number is invalid.\r\n */\r\nexport function parseRateOverride(raw: string | undefined): { input: number; output: number } | null {\r\n if (!raw) return null;\r\n const [inStr, outStr] = raw.split('/');\r\n const input = Number.parseFloat(inStr);\r\n const output = outStr !== undefined ? Number.parseFloat(outStr) : input;\r\n if (!Number.isFinite(input) || !Number.isFinite(output)) return null;\r\n return { input, output };\r\n}\r\n\r\n/** Look up pricing for a model. Falls back to DEFAULT_RATE. */\r\nexport function getModelRate(model: string): { input: number; output: number } {\r\n if (!model) return DEFAULT_RATE;\r\n return envOverride(model)\r\n ?? PRICES_PER_MILLION[model]\r\n ?? DEFAULT_RATE;\r\n}\r\n\r\n/**\r\n * Compute the USD cost for a given number of prompt + completion tokens.\r\n * Rates are per 1M tokens, so we divide the token count by 1_000_000.\r\n *\r\n * @returns cost in USD (0 if either token count is negative or NaN).\r\n */\r\nexport function calculateCost(\r\n model: string,\r\n promptTokens: number,\r\n completionTokens: number,\r\n): number {\r\n if (!Number.isFinite(promptTokens) || promptTokens < 0) return 0;\r\n if (!Number.isFinite(completionTokens) || completionTokens < 0) return 0;\r\n const rate = getModelRate(model);\r\n const inputCost = (promptTokens / 1_000_000) * rate.input;\r\n const outputCost = (completionTokens / 1_000_000) * rate.output;\r\n return Number((inputCost + outputCost).toFixed(6));\r\n}\r\n\r\n/** Format a USD cost as `$0.0234` style (4 decimals). */\r\nexport function formatCost(usd: number): string {\r\n if (!Number.isFinite(usd) || usd < 0) return '$0.0000';\r\n if (usd === 0) return '$0.0000';\r\n if (usd < 0.0001) return '<$0.0001';\r\n return `$${usd.toFixed(4)}`;\r\n}\r\n\r\n/** Format a token count compactly: `1.2k`, `3.4M`, etc. */\r\nexport function formatTokens(tokens: number): string {\r\n if (!Number.isFinite(tokens) || tokens < 0) return '0';\r\n if (tokens < 1_000) return `${tokens}`;\r\n if (tokens < 1_000_000) return `${(tokens / 1_000).toFixed(1)}k`;\r\n if (tokens < 1_000_000_000) return `${(tokens / 1_000_000).toFixed(2)}M`;\r\n return `${(tokens / 1_000_000_000).toFixed(2)}B`;\r\n}", "import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport { CollapsibleToolOutput } from './CollapsibleToolOutput.js';\r\n\r\nexport interface ChatMessage {\r\n id: string;\r\n role: 'user' | 'assistant' | 'system' | 'tool';\r\n content: string;\r\n ts: number;\r\n /** Tool invocation metadata (only when role === 'tool'). */\r\n toolName?: string;\r\n /** Tool call id matching BrainToolExecutionStartEvent.toolCallId (role === 'tool'). */\r\n toolCallId?: string;\r\n toolOk?: boolean;\r\n toolDurationMs?: number;\r\n}\r\n\r\ninterface ChatStreamProps {\r\n messages: readonly ChatMessage[];\r\n}\r\n\r\n/**\r\n * Stateless rendering of the chat transcript. Tool messages (role === 'tool')\r\n * are rendered via CollapsibleToolOutput so each invocation can be expanded\r\n * to inspect its body (Task B.2.2).\r\n */\r\nexport function ChatStream({ messages }: ChatStreamProps): React.ReactElement {\r\n return (\r\n <Box flexDirection=\"column\" flexGrow={1} paddingX={1}>\r\n {messages.length === 0 ? (\r\n <Text dimColor>Ready. Type a prompt or /skill &lt;name&gt; to invoke a skill.</Text>\r\n ) : (\r\n messages.map((m) => {\r\n if (m.role === 'tool') {\r\n return (\r\n <CollapsibleToolOutput\r\n key={m.id}\r\n toolName={m.toolName ?? 'tool'}\r\n summary={m.content}\r\n body={m.content}\r\n ok={m.toolOk}\r\n durationMs={m.toolDurationMs}\r\n defaultExpanded={false}\r\n />\r\n );\r\n }\r\n return (\r\n <Box key={m.id} flexDirection=\"column\" marginBottom={1}>\r\n <Text color={m.role === 'user' ? 'cyan' : m.role === 'assistant' ? 'green' : 'yellow'} bold>\r\n {m.role === 'user' ? '\u276F' : m.role === 'assistant' ? '\u25C6' : '\u2139'} {m.role}\r\n </Text>\r\n <Box marginLeft={2}>\r\n <Text>{m.content}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n })\r\n )}\r\n </Box>\r\n );\r\n}", "import React, { useState } from 'react';\r\nimport { Box, Text } from 'ink';\r\n\r\n/**\r\n * CollapsibleToolOutput \u2014 Task B.2.\r\n *\r\n * Renders a single tool invocation as a one-line summary with a clickable\r\n * expand toggle. Ink doesn't have mouse support reliably, so we expose the\r\n * expanded state via prop OR default to local useState if `expanded` is\r\n * uncontrolled.\r\n *\r\n * Output modes:\r\n * - collapsed: \"[bash] cat package.json \u25BC\" (single line, color-coded border)\r\n * - expanded: \"[bash] cat package.json \u25B2\" + full body (multi-line)\r\n *\r\n * Color coding by tool name prefix:\r\n * - read_* / cat / grep \u2192 green\r\n * - write_* / edit_* \u2192 yellow\r\n * - bash / shell / exec \u2192 red (warning)\r\n * - everything else \u2192 cyan\r\n */\r\n\r\nexport type CollapsibleToolOutputProps = {\r\n toolName: string;\r\n /** Short summary (e.g. \"cat package.json\" or first arg). */\r\n summary: string;\r\n /** Full output body (shown only when expanded). */\r\n body: string;\r\n /** Duration in ms (rendered next to summary). */\r\n durationMs?: number;\r\n /** ok=true, error=false. */\r\n ok?: boolean;\r\n /** Controlled expanded state. If undefined, falls back to local state. */\r\n expanded?: boolean;\r\n /** Default expanded value when uncontrolled. */\r\n defaultExpanded?: boolean;\r\n};\r\n\r\nfunction borderColor(toolName: string, ok?: boolean): string {\r\n if (ok === false) return 'red';\r\n const lower = toolName.toLowerCase();\r\n if (lower.includes('read') || lower === 'cat' || lower.includes('grep') || lower.includes('search')) return 'green';\r\n if (lower.includes('write') || lower.includes('edit')) return 'yellow';\r\n if (lower === 'bash' || lower === 'shell' || lower === 'exec') return 'red';\r\n return 'cyan';\r\n}\r\n\r\nexport function CollapsibleToolOutput(props: CollapsibleToolOutputProps): React.ReactElement {\r\n const { toolName, summary, body, durationMs, ok, defaultExpanded = false } = props;\r\n const isControlled = typeof props.expanded === 'boolean';\r\n const [localExpanded, setLocalExpanded] = useState(defaultExpanded);\r\n const expanded = isControlled ? (props.expanded as boolean) : localExpanded;\r\n const color = borderColor(toolName, ok);\r\n\r\n const summaryLine = [\r\n `[${toolName}]`,\r\n summary,\r\n durationMs !== undefined ? `(${durationMs}ms)` : '',\r\n expanded ? '\u25B2' : '\u25BC',\r\n ].filter(Boolean).join(' ');\r\n\r\n return (\r\n <Box flexDirection=\"column\" marginLeft={2}>\r\n <Box>\r\n <Text color={color}>{summaryLine}</Text>\r\n </Box>\r\n {expanded && (\r\n <Box flexDirection=\"column\" marginLeft={2} borderStyle=\"single\" borderColor={color} paddingX={1}>\r\n {body.split('\\n').map((line, idx) => (\r\n <Text key={idx} dimColor={ok === false}>{line}</Text>\r\n ))}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\n/**\r\n * Pure helper: classify tool color (exported for unit tests).\r\n */\r\nexport function classifyToolColor(toolName: string, ok?: boolean): string {\r\n return borderColor(toolName, ok);\r\n}", "import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport TextInput from 'ink-text-input';\r\n\r\ninterface InputBarProps {\r\n value: string;\r\n onChange: (value: string) => void;\r\n onSubmit: (value: string) => void;\r\n disabled?: boolean;\r\n}\r\n\r\nexport function InputBar({ value, onChange, onSubmit, disabled }: InputBarProps): React.ReactElement {\r\n return (\r\n <Box borderStyle=\"single\" borderColor=\"gray\" paddingX={1}>\r\n <Text color=\"cyan\" bold>\u276F </Text>\r\n <TextInput\r\n value={value}\r\n onChange={onChange}\r\n onSubmit={onSubmit}\r\n placeholder={disabled ? '...' : 'Type a prompt or /skill <name>'}\r\n />\r\n </Box>\r\n );\r\n}\r\n", "import React from 'react';\r\nimport { Box, Text } from 'ink';\r\n\r\ninterface SidebarProps {\r\n skillList: string;\r\n sessionCount: number;\r\n isSlashMode: boolean;\r\n}\r\n\r\n/**\r\n * Sidebar showing: formatted skill list (from formatSkillList), session count,\r\n * and an indicator when the user is typing a slash command.\r\n */\r\nexport function Sidebar({ skillList, sessionCount, isSlashMode }: SidebarProps): React.ReactElement {\r\n return (\r\n <Box flexDirection=\"column\" width={40} borderStyle=\"single\" borderColor=\"gray\" paddingX={1}>\r\n <Text bold color=\"cyan\">Skills &amp; sessions</Text>\r\n <Text dimColor>Sessions: {sessionCount}</Text>\r\n {isSlashMode && <Text color=\"yellow\">\u2328 slash command mode</Text>}\r\n <Box marginTop={1} flexDirection=\"column\">\r\n <Text>{skillList}</Text>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n", "import type { CodingSkillDefinition } from '../agents/skills';\r\n\r\nexport type SlashCommand =\r\n | 'login' | 'model' | 'model_refresh' | 'models' | 'skill' | 'skill_stats' | 'skill-compare' | 'compact' | 'clear' | 'help' | 'exit' | 'sessions' | 'resume' | 'new' | 'council' | 'council-feedback' | 'provider' | 'branch' | 'branches' | 'checkout' | 'steer' | 'steer_interrupt' | 'diff' | 'undo' | 'promote-member' | 'update';\r\n\r\nexport interface SlashCommandResult {\r\n /** Whether the command was recognized. */\r\n handled: boolean;\r\n /** Discriminated kind for what the caller should do. */\r\n kind: 'unknown' | 'login' | 'login_oauth' | 'model' | 'model_show' | 'model_set' | 'model_refresh' | 'models_list' | 'models_refresh' | 'skill' | 'skill_stats' | 'skill-compare' | 'compact' | 'clear' | 'help' | 'exit' | 'session' | 'resume' | 'new' | 'council' | 'council_feedback' | 'provider' | 'provider_set' | 'provider_list' | 'provider_custom' | 'provider_refresh' | 'provider_status' | 'branch_create' | 'branch_list' | 'branch_checkout' | 'steer' | 'steer_interrupt' | 'steer_no_active_run' | 'diff' | 'undo' | 'undo_confirm' | 'promote_member' | 'promote_member_error' | 'update_check' | 'update_perform' | 'update_usage';\r\n /** Optional human-readable message (e.g. for `clear` or `help`). */\r\n message?: string;\r\n /** For `model`: the new model name. */\r\n model?: string;\r\n /** For `login` / `login_oauth`: the provider name (e.g. 'grok'). */\r\n provider?: string;\r\n /** For `login`: the API key to store for the provider (Task 14.9). */\r\n loginKey?: string;\r\n /** For `skill`: the expanded skill ready to dispatch to AgentHarness. */\r\n expandedSkill?: ExpandedSkill;\r\n /** For `skill_stats`: optional skill id filter (Task C.2.3). */\r\n skillStatsSkillId?: string;\r\n /** For `skill_compare`: the two skill IDs to compare (Task H.3.1). */\r\n compareIds?: [string, string];\r\n /** For `skill` errors: error message. */\r\n skillError?: string;\r\n /** For `resume`: the target session ID to load. */\r\n targetSessionId?: string;\r\n /** For `council`: the user prompt to dispatch to the council. */\r\n councilInput?: string;\r\n /** For `council_feedback`: the target member id (e.g. 'sisyphus'). */\r\n feedbackMemberId?: string;\r\n /** For `council_feedback`: the score 1-5. */\r\n feedbackScore?: number;\r\n /** For `council_feedback`: optional note from the user. */\r\n feedbackNote?: string;\r\n /** For `branch_create` / `branch_checkout`: the branch name. */\r\n branchName?: string;\r\n /** For `provider_custom`: the target provider id whose endpoint is being set. */\r\n customProvider?: string;\r\n /** For `provider_custom`: the new base URL (undefined when clearing). */\r\n customEndpoint?: string;\r\n /** For `provider_custom`: true if the user wants to clear the custom endpoint. */\r\n customClear?: boolean;\r\n /** For `steer`: the user prompt to enqueue on the active harness. */\r\n steerText?: string;\r\n /** For `diff`: include staged changes too (`git diff --cached`). */\r\n diffStaged?: boolean;\r\n /** For `undo`: user passed --yes / -y to skip the confirmation warning. */\r\n undoConfirmed?: boolean;\r\n /** For `compact`: number of recent messages to keep (Task B.3.2). */\r\n compactKeepRecent?: number;\r\n /** For `compact`: messages-count threshold to trigger compaction. */\r\n compactThreshold?: number;\r\n /** For `promote_member`: the target member id (e.g. 'hephaestus'). */\r\n promoteMemberId?: string;\r\n /** For `promote_member_error`: error message (e.g. unknown member). */\r\n promoteMemberError?: string;\r\n /** For `update`: true if `--yes` / `-y` was passed (perform the update). */\r\n updateForce?: boolean;\r\n}\r\n\r\nexport interface ExpandedSkill {\r\n /** Skill ID that was expanded. */\r\n skillId: string;\r\n /** The prompt string to send to the council via AgentHarness. */\r\n prompt: string;\r\n /** Roles required to run this skill (for routing). */\r\n requiredRoles: string[];\r\n /** Tools required (for enabling). */\r\n requiredTools: string[];\r\n /** Cost estimate (for budget display). */\r\n estimatedCost: 'low' | 'medium' | 'high';\r\n}\r\n\r\n/**\r\n * Parse a user input string starting with '/' into a SlashCommand + args.\r\n * Returns { command, args } or null if not a slash command.\r\n */\r\nfunction parseSlashCommand(text: string): { command: SlashCommand; args: string[] } | null {\r\n const trimmed = text.trim();\r\n if (!trimmed.startsWith('/')) return null;\r\n const parts = trimmed.slice(1).split(/\\s+/);\r\n const command = parts[0] as SlashCommand;\r\n const args = parts.slice(1);\r\n return { command, args };\r\n}\r\n\r\n/**\r\n * Expand a skill's systemPromptFragment + the user's input into a complete\r\n * prompt ready to send to AgentHarness. If the skill is invoked WITHOUT\r\n * an input arg (e.g. just `/skill architect-feature`), generate a placeholder\r\n * prompt asking the user for the input.\r\n */\r\nexport function expandSkillTemplate(\r\n skill: CodingSkillDefinition,\r\n options: { input?: string } = {},\r\n): ExpandedSkill {\r\n const userInput = options.input?.trim() ?? '';\r\n const prompt = userInput\r\n ? `${skill.systemPromptFragment}\\n\\n## User input\\n${userInput}`\r\n : `${skill.systemPromptFragment}\\n\\n## User input\\n(Please provide the task description or input for this skill.)`;\r\n return {\r\n skillId: skill.id,\r\n prompt,\r\n requiredRoles: skill.requiredRoles,\r\n requiredTools: skill.requiredTools,\r\n estimatedCost: skill.estimatedCost,\r\n };\r\n}\r\n\r\n/**\r\n * Format the list of available skills for `/skill` autocomplete or `/help`.\r\n * Group by category.\r\n */\r\nexport function formatSkillList(skills: readonly CodingSkillDefinition[]): string {\r\n if (skills.length === 0) return '(no skills available)';\r\n const byCategory = new Map<string, CodingSkillDefinition[]>();\r\n for (const skill of skills) {\r\n const list = byCategory.get(skill.category) ?? [];\r\n list.push(skill);\r\n byCategory.set(skill.category, list);\r\n }\r\n const lines: string[] = ['Available skills:'];\r\n for (const [category, list] of [...byCategory.entries()].sort()) {\r\n lines.push(`\\n[${category}]`);\r\n for (const skill of list) {\r\n const costLabel = skill.estimatedCost;\r\n lines.push(` /skill ${skill.id} \u2014 ${skill.name} (${costLabel} cost)`);\r\n }\r\n }\r\n return lines.join('\\n');\r\n}\r\n\r\n/**\r\n * Handle a slash command from the CLI user. Returns a SlashCommandResult\r\n * describing what the caller should do. Pure function \u2014 no side effects,\r\n * no I/O. The caller (Phase 14's Ink UI) is responsible for actually\r\n * performing the action (e.g. sending the expandedSkill.prompt to\r\n * AgentHarness, clearing the transcript, etc.).\r\n */\r\nexport function handleSlashCommand(\r\n text: string,\r\n availableSkills: readonly CodingSkillDefinition[],\r\n): SlashCommandResult {\r\n const parsed = parseSlashCommand(text);\r\n if (!parsed) {\r\n return { handled: false, kind: 'unknown' };\r\n }\r\n const { command, args } = parsed;\r\n\r\n switch (command) {\r\n case 'help':\r\n return {\r\n handled: true,\r\n kind: 'help',\r\n message: `Available commands:\\n /login <provider> \u2014 authenticate with provider (grok, minimax, glm, custom)\\n /model <name> \u2014 switch the active model\\n /model refresh \u2014 re-discover models for the active provider (v3-U)\\n /models \u2014 list discovered models for the active provider (v3-U)\\n /models refresh \u2014 re-discover models for the active provider (v3-U)\\n /provider <name> \u2014 switch the active provider\\n /provider custom <baseUrl> \u2014 point the active provider at a self-hosted endpoint (Ollama, LM Studio, vLLM, ...)\\n /provider custom clear \u2014 clear the custom endpoint override\\n /skill <name> [input] \u2014 invoke a skill (autocomplete with /skill <TAB>)\\n /skill-stats [name] \u2014 show invocation stats (success rate, avg duration, total tokens)\\n /council <input> \u2014 invoke the multi-agent council on input\\n /council-feedback <memberId> <1-5> [note] \u2014 rate a council member for future ranking (Task I.2)\r\n /promote-member <memberId> \u2014 promote a council member to a standalone skill (v3-K)\r\n /update [--yes|-y] \u2014 check for zelari-coder updates; --yes performs the update (v3-N)\\n /steer <text> \u2014 enqueue a follow-up prompt on the active run (Task 18.2)\\n /steer --interrupt <text> \u2014 cancel current run + enqueue <text> for next dispatch (Task C.3.2)\\n /compact \u2014 compact the session transcript\\n /clear \u2014 clear the visible transcript (session is preserved)\\n /sessions \u2014 list past sessions\\n /resume <id> \u2014 load a past session\\n /branch <name> \u2014 snapshot the current session into a new branch\\n /branches \u2014 list branches\\n /checkout <name> \u2014 switch the active branch\\n /new \u2014 start a fresh session\\n /diff [--staged] \u2014 show uncommitted changes (or staged with --staged)\\n /undo [--yes] \u2014 revert working-tree changes (destructive! requires --yes)\\n /help \u2014 show this help\\n /exit \u2014 exit the CLI\\n\\n${formatSkillList(availableSkills)}`,\r\n };\r\n\r\n case 'exit':\r\n return { handled: true, kind: 'exit', message: 'Goodbye.' };\r\n\r\n case 'clear':\r\n return { handled: true, kind: 'clear', message: 'Transcript cleared.' };\r\n\r\n case 'login': {\r\n const provider = args[0];\r\n if (!provider) {\r\n return { handled: true, kind: 'login', message: 'Usage: /login <provider> [key] (or /login <provider> for OAuth if supported)' };\r\n }\r\n const key = args.slice(1).join(' ').trim();\r\n if (!key) {\r\n // No key supplied: if provider supports OAuth, signal OAuth flow;\r\n // otherwise, show env-var hint as before.\r\n if (provider === 'grok') {\r\n return { handled: true, kind: 'login_oauth', provider };\r\n }\r\n return {\r\n handled: true,\r\n kind: 'login',\r\n provider,\r\n message: `[login] no key supplied \u2014 set ${provider.toUpperCase()}_API_KEY env or pass the key: /login ${provider} <key>`,\r\n };\r\n }\r\n return { handled: true, kind: 'login', provider, loginKey: key };\r\n }\r\n\r\n case 'model': {\r\n const model = args[0];\r\n if (!model) {\r\n return {\r\n handled: true,\r\n kind: 'model_show',\r\n message: 'Usage: /model <name> to change, /model to show current',\r\n };\r\n }\r\n if (model === 'refresh') {\r\n return { handled: true, kind: 'model_refresh' };\r\n }\r\n return { handled: true, kind: 'model_set', model };\r\n }\r\n\r\n case 'models': {\r\n const sub = args[0];\r\n if (sub === 'refresh') {\r\n return { handled: true, kind: 'models_refresh' };\r\n }\r\n return { handled: true, kind: 'models_list' };\r\n }\r\n\r\n case 'provider': {\r\n const subcommand = args[0];\r\n if (!subcommand) {\r\n return {\r\n handled: true,\r\n kind: 'provider_list',\r\n message: 'Usage: /provider <name> \u2014 switch active provider\\n /provider custom <baseUrl> \u2014 set custom base URL (Ollama, LM Studio, vLLM, ...)\\n /provider custom clear \u2014 clear the custom override\\n /provider <name> refresh \u2014 force token refresh (v3-F)\\n /provider <name> status \u2014 show key source, expiry, refresh impl (v3-F)\\nAvailable: openai-compatible, minimax, glm, grok, custom',\r\n };\r\n }\r\n if (subcommand === 'custom') {\r\n const target = args[1];\r\n if (!target || target === 'show') {\r\n return {\r\n handled: true,\r\n kind: 'provider_custom',\r\n message: 'Usage: /provider custom <baseUrl> \u2014 set custom base URL for the active provider\\n /provider custom clear \u2014 clear the custom override for the active provider',\r\n };\r\n }\r\n if (target === 'clear') {\r\n return {\r\n handled: true,\r\n kind: 'provider_custom',\r\n customClear: true,\r\n };\r\n }\r\n // Treat the rest of the line as the URL (supports paths with spaces\r\n // in user-typed input, though unusual).\r\n const url = args.slice(1).join(' ').trim();\r\n // Identify the provider id from the active provider at handler time.\r\n // The caller (app.tsx) resolves this from providerConfig.activeProviderId.\r\n return {\r\n handled: true,\r\n kind: 'provider_custom',\r\n customEndpoint: url,\r\n };\r\n }\r\n // v3-F: /provider <id> refresh | status subcommands.\r\n // subcommand is the provider id here; args[1] is the sub-subcommand.\r\n const providerId = subcommand;\r\n const sub = args[1];\r\n if (sub === 'refresh') {\r\n return { handled: true, kind: 'provider_refresh', provider: providerId };\r\n }\r\n if (sub === 'status') {\r\n return { handled: true, kind: 'provider_status', provider: providerId };\r\n }\r\n return { handled: true, kind: 'provider_set', provider: subcommand };\r\n }\r\n\r\n case 'branch': {\r\n const name = args[0];\r\n if (!name) {\r\n return {\r\n handled: true,\r\n kind: 'branch_create',\r\n message: 'Usage: /branch <name> \u2014 snapshots the current session into a new branch',\r\n };\r\n }\r\n return { handled: true, kind: 'branch_create', branchName: name };\r\n }\r\n\r\n case 'branches':\r\n return { handled: true, kind: 'branch_list' };\r\n\r\n case 'checkout': {\r\n const name = args[0];\r\n if (!name) {\r\n return {\r\n handled: true,\r\n kind: 'branch_checkout',\r\n message: 'Usage: /checkout <name> \u2014 switch the active branch',\r\n };\r\n }\r\n return { handled: true, kind: 'branch_checkout', branchName: name };\r\n }\r\n\r\n case 'compact': {\r\n // Optional flags: --threshold N, --keep N\r\n let compactThreshold: number | undefined;\r\n let compactKeepRecent: number | undefined;\r\n for (let i = 0; i < args.length; i++) {\r\n const a = args[i];\r\n if (a === '--threshold' || a === '-t') {\r\n const v = Number.parseInt(args[++i] ?? '', 10);\r\n if (Number.isFinite(v) && v > 0) compactThreshold = v;\r\n } else if (a === '--keep' || a === '-k') {\r\n const v = Number.parseInt(args[++i] ?? '', 10);\r\n if (Number.isFinite(v) && v > 0) compactKeepRecent = v;\r\n }\r\n }\r\n return {\r\n handled: true,\r\n kind: 'compact',\r\n message: 'Compacting session...',\r\n compactThreshold,\r\n compactKeepRecent,\r\n };\r\n }\r\n\r\n case 'sessions':\r\n return { handled: true, kind: 'session' };\r\n\r\n case 'resume': {\r\n const targetId = args[0];\r\n if (!targetId) {\r\n return { handled: true, kind: 'resume', message: 'Usage: /resume <id>' };\r\n }\r\n return {\r\n handled: true,\r\n kind: 'resume',\r\n targetSessionId: targetId,\r\n message: `[resume] session ${targetId} ready \u2014 restart zelari-code to load`,\r\n };\r\n }\r\n\r\n case 'new':\r\n return {\r\n handled: true,\r\n kind: 'new',\r\n message: '[new] session reset \u2014 next prompt starts fresh',\r\n };\r\n\r\n case 'council': {\r\n const input = args.join(' ').trim();\r\n if (!input) {\r\n return {\r\n handled: true,\r\n kind: 'council',\r\n message: 'Usage: /council <input> \u2014 invokes the multi-agent council on the input',\r\n };\r\n }\r\n return { handled: true, kind: 'council', councilInput: input };\r\n }\r\n\r\n case 'council-feedback': {\r\n // Usage: /council-feedback <memberId> <1-5> [note...]\r\n const memberId = args[0];\r\n const scoreStr = args[1];\r\n if (!memberId || !scoreStr) {\r\n return {\r\n handled: true,\r\n kind: 'council_feedback',\r\n message:\r\n 'Usage: /council-feedback <memberId> <1-5> [note...] \u2014 rate a council member (e.g. /council-feedback sisyphus 4 great framing)',\r\n };\r\n }\r\n const score = Number.parseInt(scoreStr, 10);\r\n if (!Number.isInteger(score) || score < 1 || score > 5) {\r\n return {\r\n handled: true,\r\n kind: 'council_feedback',\r\n message: `Invalid score \"${scoreStr}\" \u2014 must be an integer in [1, 5].`,\r\n };\r\n }\r\n const note = args.slice(2).join(' ').trim() || undefined;\r\n return {\r\n handled: true,\r\n kind: 'council_feedback',\r\n feedbackMemberId: memberId,\r\n feedbackScore: score,\r\n ...(note ? { feedbackNote: note } : {}),\r\n };\r\n }\r\n\r\n case 'skill': {\r\n const skillId = args[0];\r\n if (!skillId) {\r\n return {\r\n handled: true,\r\n kind: 'skill',\r\n skillError: 'Usage: /skill <name> [input]',\r\n message: formatSkillList(availableSkills),\r\n };\r\n }\r\n const skill = availableSkills.find((s) => s.id === skillId);\r\n if (!skill) {\r\n return {\r\n handled: true,\r\n kind: 'skill',\r\n skillError: `Unknown skill: \"${skillId}\". Use /skill <TAB> for autocomplete.`,\r\n message: formatSkillList(availableSkills),\r\n };\r\n }\r\n const input = args.slice(1).join(' ');\r\n const expandedSkill = expandSkillTemplate(skill, { input });\r\n return { handled: true, kind: 'skill', expandedSkill };\r\n }\r\n\r\n case 'skill_stats': {\r\n // `/skill-stats [name]` \u2014 show aggregated stats from skill-history.jsonl.\r\n // name is optional; when omitted, returns stats across all skills.\r\n const skillId = args[0];\r\n return {\r\n handled: true,\r\n kind: 'skill_stats',\r\n skillStatsSkillId: skillId,\r\n message: skillId ? `Computing stats for skill \"${skillId}\"\u2026` : 'Computing stats for all skills\u2026',\r\n };\r\n }\r\n\r\n case 'skill-compare': {\r\n // `/skill-compare <id1> <id2>` \u2014 side-by-side stats for two skills.\r\n // Args: exactly 2 IDs (whitespace-separated).\r\n const id1 = args[0];\r\n const id2 = args[1];\r\n if (!id1 || !id2) {\r\n return {\r\n handled: true,\r\n kind: 'skill-compare',\r\n message: '\u26A0 /skill-compare requires exactly 2 skill IDs (e.g. `/skill-compare debug refactor`).',\r\n };\r\n }\r\n return {\r\n handled: true,\r\n kind: 'skill-compare',\r\n compareIds: [id1, id2],\r\n message: `Comparing skills \"${id1}\" vs \"${id2}\"\u2026`,\r\n };\r\n }\r\n\r\n case 'steer': {\r\n // /steer <text> \u2192 enqueue follow-up prompt (queue-only)\r\n // /steer --interrupt <text> \u2192 enqueue + cancel current run (Task C.3.2)\r\n // /steer -i <text> \u2192 short form of --interrupt\r\n let interrupt = false;\r\n const filtered: string[] = [];\r\n for (const a of args) {\r\n if (a === '--interrupt' || a === '-i') {\r\n interrupt = true;\r\n } else {\r\n filtered.push(a);\r\n }\r\n }\r\n const text = filtered.join(' ').trim();\r\n if (!text) {\r\n return {\r\n handled: true,\r\n kind: interrupt ? 'steer_interrupt' : 'steer',\r\n message: 'Usage: /steer [--interrupt|-i] <text> \u2014 enqueue (and optionally cancel) a follow-up prompt',\r\n };\r\n }\r\n return {\r\n handled: true,\r\n kind: interrupt ? 'steer_interrupt' : 'steer',\r\n steerText: text,\r\n };\r\n }\r\n\r\n case 'diff': {\r\n const staged = args.includes('--staged') || args.includes('--cached');\r\n return { handled: true, kind: 'diff', diffStaged: staged ? true : undefined };\r\n }\r\n\r\n case 'promote-member': {\r\n // Usage: /promote-member <memberId>\r\n // Validates the id against the AGENT_ROLES registry; if invalid,\r\n // surfaces a usage-style error (the parser is pure, so we don't\r\n // throw \u2014 the dispatcher can render the error message).\r\n const memberId = args[0];\r\n if (!memberId) {\r\n return {\r\n handled: true,\r\n kind: 'promote_member_error',\r\n promoteMemberError:\r\n 'Usage: /promote-member <memberId> \u2014 e.g. /promote-member hephaestus',\r\n };\r\n }\r\n // Quick sanity check \u2014 the dispatcher will do the full UnknownMemberError\r\n // handling via promoteMember(). Here we just echo the id.\r\n return { handled: true, kind: 'promote_member', promoteMemberId: memberId };\r\n }\r\n\r\n case 'update': {\r\n // Usage:\r\n // /update \u2192 check for updates (silent current vs latest)\r\n // /update --yes | /update -y \u2192 perform the update\r\n // Any other args \u2192 usage hint\r\n let force = false;\r\n for (const a of args) {\r\n if (a === '--yes' || a === '-y') {\r\n force = true;\r\n }\r\n }\r\n if (args.length > 0 && !force) {\r\n return {\r\n handled: true,\r\n kind: 'update_usage',\r\n message:\r\n 'Usage: /update \u2014 check for the latest zelari-coder version\\n' +\r\n ' /update --yes (or -y) \u2014 install the latest version (will ask you to restart manually)',\r\n };\r\n }\r\n return {\r\n handled: true,\r\n kind: force ? 'update_perform' : 'update_check',\r\n updateForce: force,\r\n };\r\n }\r\n\r\n case 'undo': {\r\n const confirmed = args.includes('--yes') || args.includes('-y');\r\n if (confirmed) {\r\n return { handled: true, kind: 'undo_confirm', undoConfirmed: true };\r\n }\r\n // Without --yes, surface a destructive warning. The caller (app.tsx)\r\n // can still emit the actual git operation but should prefix with a\r\n // \"are you sure?\" banner. We keep two distinct kinds so the UI can\r\n // ask before acting.\r\n return {\r\n handled: true,\r\n kind: 'undo',\r\n message:\r\n '\u26A0 /undo is DESTRUCTIVE \u2014 it reverts all unstaged modifications ' +\r\n 'and unstages everything.\\nUse `/undo --yes` (or `/undo -y`) to confirm.',\r\n };\r\n }\r\n\r\n default:\r\n return {\r\n handled: false,\r\n kind: 'unknown',\r\n message: `Unknown command: /${command}. Type /help for available commands.`,\r\n };\r\n }\r\n}\r\n", "import type { SkillDefinition, SkillCategory } from '../types/systemTypes';\r\n\r\n/** Extended skill definition with optional metadata for the new registry. */\r\nexport interface SkillMetadata extends SkillDefinition {\r\n /** Semver version (defaults to '1.0.0' for existing skills). */\r\n version?: string;\r\n /** Tags for discovery (e.g. 'coding', 'debug', 'refactor'). */\r\n tags?: string[];\r\n /** Related skill IDs (for cross-references in docs/cookbook). */\r\n relatedSkills?: string[];\r\n}\r\n\r\n/** Coding-oriented skill categories. Distinct from knowledge-worker categories\r\n * (vault, project, ideas, etc.). Used by /skill <name> autocomplete and the\r\n * skill cookbook docs. */\r\nexport type CodingCategory =\r\n | 'planning' // architect-feature, ADR, scope-check, migrate-stack\r\n | 'refactor' // monolith split, extract reusable, simplify conditionals\r\n | 'debug' // debug-with-rag, reproduce-bug, root-cause-5-whys\r\n | 'review' // code-review, security, performance, test-coverage\r\n | 'test' // unit-tests, integration-tests, regression-test\r\n | 'docs' // README, TSDoc, changelog\r\n | 'ops' // commit-message, PR-description, CI-pipeline\r\n | 'git' // git status/diff/log/commit (deferred to Task 12.6+)\r\n | 'db' // schema-migration, query-optimization (deferred)\r\n | 'maint'; // tech-debt-audit, dead-code-removal (deferred)\r\n\r\nexport const CODING_CATEGORY = {\r\n PLANNING: 'planning',\r\n REFACTOR: 'refactor',\r\n DEBUG: 'debug',\r\n REVIEW: 'review',\r\n TEST: 'test',\r\n DOCS: 'docs',\r\n OPS: 'ops',\r\n GIT: 'git',\r\n DB: 'db',\r\n MAINT: 'maint',\r\n} as const;\r\n\r\n/** Cost estimate for invoking a skill \u2014 drives budget awareness. */\r\nexport type SkillCost = 'low' | 'medium' | 'high';\r\n\r\n/**\r\n * Senior-grade skill definition for coding-oriented skills. ALL fields below\r\n * are REQUIRED (no `?`). This is the discipline: every coding skill must\r\n * declare triggers, antiPatterns, examples, etc.\r\n *\r\n * Skills on the simpler SkillMetadata shape (the 6 knowledge-worker skills)\r\n * stay on the old shape. CodingSkillDefinition is reserved for the 23\r\n * coding skills being added in Task 13.4.\r\n */\r\nexport interface CodingSkillDefinition extends Omit<SkillMetadata, 'category'> {\r\n /** Strict semver (e.g. '1.0.0', '1.2.3'). */\r\n version: string;\r\n /** Coding category (drives taxonomy + autocomplete). */\r\n category: CodingCategory;\r\n /** Other skill IDs this skill depends on (composition). */\r\n requires: string[];\r\n /** Concrete I/O examples for clarity (at least 1 recommended). */\r\n examples: Array<{\r\n input: string;\r\n output: unknown;\r\n }>;\r\n /** Task patterns where this skill is naturally invoked. */\r\n triggers: string[];\r\n /** Task patterns where this skill should NOT be invoked. */\r\n antiPatterns: string[];\r\n /** Council member IDs required to run this skill. */\r\n requiredRoles: string[];\r\n /** Budget estimate. 'high' = 2-5x single-LLM API cost (council-driven). */\r\n estimatedCost: SkillCost;\r\n /** Output schema as TS type signature (e.g. '{ goal: string; alternatives: Array<...> }'). */\r\n outputSchema: string;\r\n /** Related skill IDs (cross-references for discovery in cookbook). */\r\n relatedSkills: string[];\r\n /** Tags for search/discovery (e.g. ['code-review', 'multi-role']). */\r\n tags: string[];\r\n}\r\n\r\n/**\r\n * Skill catalog \u2014 packages of capability assignable to agents.\r\n *\r\n * Each skill injects a systemPromptFragment into the agent's prompt and\r\n * declares the tools it requires.\r\n */\r\nexport const SKILL_CATALOG: SkillMetadata[] = [\r\n {\r\n id: 'vault-manager',\r\n version: '1.0.0',\r\n tags: ['knowledge', 'vault', 'notes'],\r\n relatedSkills: ['document-writer'],\r\n name: 'Vault Manager',\r\n description: 'Create, edit, search and link markdown documents in the Knowledge Vault using [[wikilinks]], #tags and YAML frontmatter.',\r\n category: 'vault',\r\n color: '#3b82f6',\r\n enabledByDefault: true,\r\n builtin: true,\r\n requiredTools: ['createDocument', 'updateDocument', 'searchDocuments', 'linkDocuments'],\r\n systemPromptFragment: `You can manage the Knowledge Vault directly.\r\n- Documents are markdown files with a path (e.g. \"notes/architecture\"), title, content, tags, and optional category.\r\n- Connect documents with [[wikilinks]]: write [[target]] or [[target|alias]] inside the content.\r\n- Add #hashtags anywhere in the content to tag a document.\r\n- Optional YAML frontmatter may precede the body (key: value lines wrapped in ---).\r\n- Prefer creating durable notes over answering in chat when the information is reusable.`,\r\n },\r\n {\r\n id: 'project-planner',\r\n version: '1.0.0',\r\n tags: ['planning', 'project', 'tasks'],\r\n relatedSkills: [],\r\n name: 'Project Planner',\r\n description: 'Structured project planning with phases, tasks, subtasks, dependencies and milestones.',\r\n category: 'project',\r\n color: '#10b981',\r\n enabledByDefault: true,\r\n builtin: true,\r\n requiredTools: ['createTask', 'createPhase', 'createMilestone', 'updateTask'],\r\n systemPromptFragment: `You plan projects hierarchically.\r\n- Decompose work into phases, then tasks within phases.\r\n- For each task include: title, description, priority (low|medium|high|critical), and optional tags/subtasks.\r\n- Define milestones to mark key deliverables.\r\n- When relevant, reference file paths and acceptance criteria.`,\r\n },\r\n {\r\n id: 'idea-synthesizer',\r\n version: '1.0.0',\r\n tags: ['ideation', 'creativity'],\r\n relatedSkills: [],\r\n name: 'Idea Synthesizer',\r\n description: 'Generate, cluster and evaluate creative ideas using divergent thinking.',\r\n category: 'ideas',\r\n color: '#f59e0b',\r\n enabledByDefault: true,\r\n builtin: true,\r\n requiredTools: ['addIdea', 'clusterIdeas'],\r\n systemPromptFragment: `You generate and organize ideas.\r\n- Produce a diverse set of ideas, then cluster related ones.\r\n- Tag ideas consistently and assign a category.\r\n- Evaluate feasibility and novelty briefly.`,\r\n },\r\n {\r\n id: 'mind-mapper',\r\n version: '1.0.0',\r\n tags: ['knowledge', 'graph', 'visualization'],\r\n relatedSkills: [],\r\n name: 'Mind Mapper',\r\n description: 'Build structured mind maps (root \u2192 branches \u2192 leaves) and connect them to vault documents.',\r\n category: 'mindmap',\r\n color: '#06b6d4',\r\n enabledByDefault: false,\r\n builtin: true,\r\n requiredTools: ['buildMindMap', 'addNode', 'linkNodes', 'createMindMapNode'],\r\n systemPromptFragment: `You build mind maps as JSON structures.\r\n- Root \u2192 branches \u2192 leaves.\r\n- Each node has a label and short content.\r\n- Use semantic colors and connect nodes that relate to vault documents.`,\r\n },\r\n {\r\n id: 'research-analyst',\r\n version: '1.0.0',\r\n tags: ['research', 'rag', 'analysis'],\r\n relatedSkills: [],\r\n name: 'Research Analyst',\r\n description: 'Query the RAG knowledge base, synthesize findings and cite sources.',\r\n category: 'analysis',\r\n color: '#a855f7',\r\n enabledByDefault: true,\r\n builtin: true,\r\n requiredTools: ['searchRAG', 'searchDocuments'],\r\n systemPromptFragment: `You research using the retrieval system.\r\n- Use searchRAG / searchDocuments to find relevant prior knowledge before answering.\r\n- Cite sources by title when you rely on retrieved content.\r\n- Structure analyses with clear sections and a conclusion.`,\r\n },\r\n {\r\n id: 'document-writer',\r\n version: '1.0.0',\r\n tags: ['writing', 'documentation'],\r\n relatedSkills: [],\r\n name: 'Document Writer',\r\n description: 'Write high-quality technical or narrative documents into the vault.',\r\n category: 'writing',\r\n color: '#ec4899',\r\n enabledByDefault: false,\r\n builtin: true,\r\n requiredTools: ['createDocument', 'updateDocument'],\r\n systemPromptFragment: `You write polished documents.\r\n- Choose an appropriate structure (guide, spec, reference, narrative).\r\n- Maintain a consistent tone and voice.\r\n- Use headings, lists, and code blocks where helpful; link related notes with [[wikilinks]].`,\r\n },\r\n];\r\n\r\n/** Default skill assignments per agent id. */\r\nconst DEFAULT_AGENT_SKILLS: Record<string, string[]> = {\r\n sisyphus: ['project-planner', 'research-analyst'],\r\n prometheus: ['project-planner', 'vault-manager'],\r\n hephaestus: ['idea-synthesizer', 'mind-mapper', 'document-writer'],\r\n atlas: ['mind-mapper', 'research-analyst'],\r\n oracle: ['research-analyst'],\r\n chairman: ['vault-manager', 'project-planner', 'idea-synthesizer'],\r\n};\r\n\r\n/** Get all skills in a given category. */\r\nexport function getSkillsByCategory(cat: SkillCategory): SkillDefinition[] {\r\n return SKILL_CATALOG.filter((s) => s.category === cat);\r\n}\r\n\r\n/** Get a skill by id. */\r\nexport function getSkillById(id: string): SkillDefinition | undefined {\r\n return SKILL_CATALOG.find((s) => s.id === id);\r\n}\r\n\r\n/**\r\n * Resolve the default skills for an agent.\r\n * Custom/user-defined agents default to an empty set (configured via UI).\r\n */\r\nexport function resolveAgentSkills(agentId: string): SkillDefinition[] {\r\n const ids = DEFAULT_AGENT_SKILLS[agentId] ?? [];\r\n return ids\r\n .map((id) => getSkillById(id))\r\n .filter((s): s is SkillDefinition => s !== undefined);\r\n}\r\n\r\n/** All builtin skill ids (useful for the settings UI). */\r\nexport function getBuiltinSkillIds(): string[] {\r\n return SKILL_CATALOG.filter((s) => s.builtin).map((s) => s.id);\r\n}\r\n\r\n/**\r\n * List all skills (built-in + custom). Returns a fresh array \u2014 safe to mutate.\r\n * Uses SkillMetadata type.\r\n */\r\nexport function listSkills(): SkillMetadata[] {\r\n return [...SKILL_CATALOG];\r\n}\r\n\r\n/**\r\n * Get a skill by ID, returned as SkillMetadata.\r\n * Returns undefined if not found.\r\n */\r\nexport function getSkillMetadata(id: string): SkillMetadata | undefined {\r\n return SKILL_CATALOG.find((s) => s.id === id);\r\n}\r\n\r\n/**\r\n * Register a custom skill (user-defined or MCP-discovered). If a skill\r\n * with the same id already exists, it is replaced.\r\n */\r\nexport function registerSkill(skill: SkillMetadata): void {\r\n const idx = SKILL_CATALOG.findIndex((s) => s.id === skill.id);\r\n if (idx >= 0) {\r\n SKILL_CATALOG[idx] = skill;\r\n } else {\r\n SKILL_CATALOG.push(skill);\r\n }\r\n}\r\n\r\n/**\r\n * Remove a skill by ID. Returns true if removed, false if not found.\r\n * Built-in skills (skill.builtin === true) cannot be removed.\r\n */\r\nexport function unregisterSkill(id: string): boolean {\r\n const skill = SKILL_CATALOG.find((s) => s.id === id);\r\n if (!skill) return false;\r\n if (skill.builtin) return false;\r\n const idx = SKILL_CATALOG.indexOf(skill);\r\n SKILL_CATALOG.splice(idx, 1);\r\n return true;\r\n}\r\n\r\n/**\r\n * Find all skills matching a tag (exact match).\r\n */\r\nexport function findSkillsByTag(tag: string): SkillMetadata[] {\r\n return SKILL_CATALOG.filter((s) => s.tags?.includes(tag));\r\n}\r\n\r\n/**\r\n * Find all skills matching any of the given IDs.\r\n * Unknown IDs are silently skipped.\r\n */\r\nexport function findSkillsByIds(ids: string[]): SkillMetadata[] {\r\n const idSet = new Set(ids);\r\n return SKILL_CATALOG.filter((s) => idSet.has(s.id));\r\n}\r\n\r\n/**\r\n * Resolve skill dependencies in topological order. Returns empty array\r\n * if a dependency is missing (caller should handle gracefully).\r\n */\r\nexport function resolveSkillDependencies(id: string): SkillMetadata[] {\r\n const start = SKILL_CATALOG.find((s) => s.id === id);\r\n if (!start) return [];\r\n // Skills currently have no 'requires' field, so topological sort is trivial.\r\n return [start];\r\n}\r\n\r\n/** Empty catalog of coding skills \u2014 populated by Task 13.4. */\r\nexport const CODING_SKILL_CATALOG: CodingSkillDefinition[] = [];\r\n\r\n/** List all coding skills (fresh array). */\r\nexport function listCodingSkills(): CodingSkillDefinition[] {\r\n return [...CODING_SKILL_CATALOG];\r\n}\r\n\r\n/** Get a coding skill by id. */\r\nexport function getCodingSkillById(id: string): CodingSkillDefinition | undefined {\r\n return CODING_SKILL_CATALOG.find((s) => s.id === id);\r\n}\r\n\r\n/** Find all coding skills in a category. */\r\nexport function findCodingSkillsByCategory(category: CodingCategory): CodingSkillDefinition[] {\r\n return CODING_SKILL_CATALOG.filter((s) => s.category === category);\r\n}\r\n\r\n/** Find all coding skills matching a tag. */\r\nexport function findCodingSkillsByTag(tag: string): CodingSkillDefinition[] {\r\n return CODING_SKILL_CATALOG.filter((s) => s.tags.includes(tag));\r\n}\r\n\r\n/**\r\n * Validate that all `requires` references point to existing skill IDs.\r\n * Returns an array of error messages (empty = valid).\r\n *\r\n * Note: This is a runtime check. Compile-time validation requires the\r\n * TypeScript type to express the cross-reference; we use a manual\r\n * registration API that throws on invalid requires.\r\n */\r\nexport function validateCodingSkillRequires(skill: CodingSkillDefinition): string[] {\r\n const errors: string[] = [];\r\n for (const reqId of skill.requires) {\r\n if (!CODING_SKILL_CATALOG.some((s) => s.id === reqId)) {\r\n errors.push(`Skill \"${skill.id}\" requires unknown skill \"${reqId}\"`);\r\n }\r\n }\r\n return errors;\r\n}\r\n\r\n/** Register a coding skill (called by Task 13.4 when populating the catalog). */\r\nexport function registerCodingSkill(skill: CodingSkillDefinition): void {\r\n const errors = validateCodingSkillRequires(skill);\r\n if (errors.length > 0) {\r\n throw new Error(`Cannot register coding skill: ${errors.join('; ')}`);\r\n }\r\n const idx = CODING_SKILL_CATALOG.findIndex((s) => s.id === skill.id);\r\n if (idx >= 0) {\r\n CODING_SKILL_CATALOG[idx] = skill;\r\n } else {\r\n CODING_SKILL_CATALOG.push(skill);\r\n }\r\n}\r\n\r\n", "import type { AgentRole } from '../types';\r\n\r\n/**\r\n * Shared block documenting the clarifying-question protocol. Appended to every\r\n * agent's role prompt so the convention is uniform across the council.\r\n */\r\nconst CLARIFICATION_PROTOCOL = `\r\n\r\nWHEN TO ASK THE USER (clarification):\r\nIf a single missing fact would materially change your output (target platform, scope, a binary design choice with significant trade-offs, a constraint you cannot safely assume), pause and ask the user by appending EXACTLY this block at the end of your message:\r\n\r\n---QUESTION---\r\n{ \"question\": \"One focused question\", \"choices\": [\"Option A\", \"Option B\", \"Option C\"], \"context\": \"Why this matters\" }\r\n---END---\r\n\r\nRules for clarifications:\r\n- Ask AT MOST ONE question per turn, and only when genuinely blocked.\r\n- Prefer a small set of concrete \"choices\" (2-4). The user can still type a custom answer.\r\n- Do NOT ask for information that could be reasonably assumed or already in shared context.\r\n- If you can proceed with a sound documented assumption, DO SO instead of asking.`;\r\n\r\nexport const AGENT_ROLES: AgentRole[] = [\r\n {\r\n id: 'sisyphus',\r\n name: 'Sisyphus',\r\n codename: 'Orchestrator',\r\n role: 'Council Director',\r\n color: '#3b82f6',\r\n avatar: 'S',\r\n systemPrompt: `You are Sisyphus, the Council Director and Orchestrator \u2014 the strategic mind that frames the problem for the rest of the council.\r\n\r\n## Methodology (work in this order)\r\n1. Parse the request into its irreducible goal and its implicit constraints.\r\n2. Identify the 3-6 sub-problems the council must solve (planning, ideation, knowledge mapping, quality).\r\n3. For each sub-problem, name the specialist best suited and state in one line what they should deliver.\r\n4. Flag any cross-cutting risks or ordering constraints the specialists must respect.\r\n5. State explicitly what \"done\" looks like for this request.\r\n\r\n## Operating principles\r\n- Be decisive: commit to a decomposition rather than listing alternatives.\r\n- Distinguish what is given (stated by the user) from what is assumed.\r\n- Keep the council focused \u2014 cut scope creep and call out when a sub-problem is out of scope.\r\n- You run first and set context for everyone downstream; make it count.\r\n\r\n## Output format\r\nA short \"Analysis\" section (the goal + constraints), then a \"Delegation Plan\" with one bullet per specialist naming what they should produce. Keep it tight \u2014 under 150 words total.${CLARIFICATION_PROTOCOL}`,\r\n tools: ['createTask', 'createPhase'],\r\n skills: ['project-planner', 'research-analyst'],\r\n },\r\n {\r\n id: 'prometheus',\r\n name: 'Prometheus',\r\n codename: 'Planner',\r\n role: 'Project Planner',\r\n color: '#10b981',\r\n avatar: 'P',\r\n systemPrompt: `You are Prometheus, the Project Planner \u2014 you turn intent into a buildable, sequenced plan.\r\n\r\n## Methodology (work in this order)\r\n1. Read shared context from prior agents (especially Sisyphus) before deciding what's missing.\r\n2. Decompose the goal into ordered PHASES (milestones), each with a clear exit criterion.\r\n3. Within each phase, define concrete TASKS with dependencies, priority, and acceptance criteria.\r\n4. Assign realistic file references and QA scenarios so a developer can execute without ambiguity.\r\n5. Sanity-check sequencing: are dependencies satisfied? Is anything blocked? Is scope realistic?\r\n\r\n## OUTPUT REQUIREMENTS \u2014 every task MUST include:\r\n1. **File references**: specific file paths and line numbers where changes land.\r\n2. **Acceptance criteria**: concrete, testable conditions that prove completion.\r\n3. **QA scenarios**: at least one testable scenario per task.\r\n\r\nExample format:\r\n- Task: \"Add authentication\"\r\n - File refs: src/auth/login.ts:45-60, src/middleware/auth.ts:12-25\r\n - Acceptance: valid credentials log in; invalid credentials show an error\r\n - QA: correct password succeeds, wrong password shows error message\r\n\r\n## Quality bar\r\n- Prefer fewer, well-specified tasks over many vague ones.\r\n- Make dependencies explicit (task B depends on task A).\r\n- If the stack/platform is unknown, ask ONCE (see clarification protocol) rather than guessing.\r\n\r\nKeep plans hierarchical and practical. Stay under 250 words.${CLARIFICATION_PROTOCOL}`,\r\n tools: ['createTask', 'createPhase'],\r\n skills: ['project-planner', 'vault-manager'],\r\n },\r\n {\r\n id: 'hephaestus',\r\n name: 'Hephaestus',\r\n codename: 'Ideator',\r\n role: 'Creative Ideator',\r\n color: '#f59e0b',\r\n avatar: 'H',\r\n systemPrompt: `You are Hephaestus, the Creative Ideator \u2014 you generate breadth and then collapse it into the strongest concepts.\r\n\r\n## Methodology (work in this order)\r\n1. Produce a divergent set of 5-8 distinct ideas/approaches (vary the axis: technical, UX, business, unconventional).\r\n2. Cluster related ideas into 2-4 themes.\r\n3. Score each on Feasibility (1-5) and Novelty (1-5); mark the top 2-3 as recommended.\r\n4. For the recommended ideas, add one line on how to de-risk them.\r\n5. Build on \u2014 do not repeat \u2014 insights from earlier agents.\r\n\r\n## Operating principles\r\n- Diverge before you converge: quantity first, judgment second.\r\n- Bold but grounded \u2014 an idea must be actionable, not a fantasy.\r\n- Name assumptions explicitly. If a core assumption is unknowable, ask (clarification protocol).\r\n\r\n## Output format\r\n## Ideas (bulleted)\r\n## Themes\r\n## Top picks (with feasibility/novelty + de-risk note)\r\n\r\nStay under 200 words.${CLARIFICATION_PROTOCOL}`,\r\n tools: ['addIdea'],\r\n skills: ['idea-synthesizer', 'mind-mapper', 'document-writer'],\r\n },\r\n {\r\n id: 'atlas',\r\n name: 'Atlas',\r\n codename: 'MindMapper',\r\n role: 'Knowledge Architect',\r\n color: '#06b6d4',\r\n avatar: 'A',\r\n systemPrompt: `You are Atlas, the Knowledge Architect and Mind Mapper \u2014 you structure information into navigable graphs.\r\n\r\n## Methodology (work in this order)\r\n1. Extract key concepts from the user request, shared context, and RAG knowledge.\r\n2. Identify the central root concept and 3-6 primary branches.\r\n3. Under each branch, add concrete leaf nodes (specific tasks, ideas, docs, terms).\r\n4. Define meaningful connections (dependencies, \"part-of\", \"related-to\", \"blocks\").\r\n5. Propose a layout hint (radial / hierarchical) so the map reads cleanly.\r\n\r\n## Operating principles\r\n- Favor concrete, named nodes over abstract categories.\r\n- Every node should map to something actionable or retrievable (a task, a doc, a concept).\r\n- Reuse knowledge from prior agents \u2014 don't re-derive what they already produced.\r\n- Keep the graph comprehensible: prune redundant or duplicate nodes.\r\n\r\n## Output format\r\nDescribe the proposed structure (root \u2192 branches \u2192 leaves) in text and, when building via tool, emit a buildMindMap payload. Stay under 200 words.${CLARIFICATION_PROTOCOL}`,\r\n tools: ['buildMindMap', 'addNode', 'linkNodes'],\r\n skills: ['mind-mapper', 'research-analyst'],\r\n },\r\n {\r\n id: 'oracle',\r\n name: 'Oracle',\r\n codename: 'Critic',\r\n role: 'Quality Critic',\r\n color: '#ef4444',\r\n avatar: 'O',\r\n systemPrompt: `You are Oracle, the Quality Critic \u2014 you review the council's proposals (presented anonymously) and expose weaknesses before synthesis.\r\n\r\n## Methodology (work in this order)\r\n1. Score each proposal on five dimensions (1-10): Accuracy, Novelty, Coherence, Completeness, Actionability.\r\n2. Identify the single biggest gap or risk across all proposals.\r\n3. Flag any contradictions between proposals (e.g., conflicting assumptions).\r\n4. Recommend the 1-3 highest-value improvements the Chairman should apply.\r\n5. Note anything that should be cut or descoped.\r\n\r\n## Operating principles\r\n- Be honest and incisive \u2014 a weak critique helps no one. Name specific defects, not general vibes.\r\n- Distinguish \"wrong\" from \"incomplete\" and \"risky\".\r\n- Constructive: every critique pairs with a fix or a question.\r\n\r\n## Output format\r\n## Scores (per agent, per dimension)\r\n## Critical gaps\r\n## Contradictions\r\n## Top improvements\r\n\r\nStay under 200 words. (You do not create workspace artifacts, so you do not emit a tools block \u2014 but you MAY ask the user a clarifying question if a core ambiguity blocks judgment.)${CLARIFICATION_PROTOCOL}`,\r\n tools: [],\r\n skills: ['research-analyst'],\r\n },\r\n {\r\n id: 'chairman',\r\n name: 'Chairman',\r\n codename: 'Synthesizer',\r\n role: 'Final Synthesizer',\r\n color: '#8b5cf6',\r\n avatar: 'C',\r\n systemPrompt: `You are the Chairman, the Final Synthesizer \u2014 you produce the definitive, actionable output that resolves the council's work.\r\n\r\n## Methodology (work in this order)\r\n1. Reconcile the specialists' outputs and Oracle's critique into a single coherent position.\r\n2. Resolve conflicts explicitly (state which proposal won and why).\r\n3. Deliver the finished product the user asked for \u2014 complete, not summarized.\r\n4. If concrete artifacts are warranted (tasks, ideas, phases, mind-map, documents), commit them via the tools block.\r\n\r\n## Output expectations\r\n- If the user requested a document, article, code, or report, write the COMPLETE, FULL-LENGTH content in your message body. Do not summarize or list \u2014 produce the actual finished artifact.\r\n- Lead with a one-line summary, then the full detail.\r\n- Apply Oracle's highest-value improvements; drop descoped items.\r\n\r\n## Tool execution (only when actions are warranted)\r\nAppend EXACTLY this block at the very end of your message when you must create workspace artifacts:\r\n---TOOLS---\r\n[\r\n { \"name\": \"createPhase\", \"args\": { \"title\": \"Phase 1: Research\", \"description\": \"...\" } },\r\n { \"name\": \"createTask\", \"args\": { \"title\": \"Write Draft\", \"description\": \"...\" } },\r\n { \"name\": \"createDocument\", \"args\": { \"title\": \"My Document\", \"content\": \"...\" } }\r\n]\r\n---END---\r\nAvailable tool names: createTask, addIdea, createPhase, buildMindMap, addNode, linkNodes, createDocument.\r\nOnly emit this block at the very end and only if actions are needed. Otherwise output plain text.${CLARIFICATION_PROTOCOL}`,\r\n tools: ['createTask', 'addIdea', 'createPhase', 'buildMindMap', 'addNode', 'linkNodes', 'createDocument'],\r\n skills: ['vault-manager', 'project-planner', 'idea-synthesizer'],\r\n },\r\n];\r\n\r\nexport function getAgent(id: string): AgentRole | undefined {\r\n return AGENT_ROLES.find((a) => a.id === id);\r\n}\r\n\r\nexport function getCouncilAgents(size: number): AgentRole[] {\r\n const core = ['sisyphus', 'prometheus', 'hephaestus', 'atlas', 'oracle', 'chairman'];\r\n return core.slice(0, Math.min(size, 6)).map((id) => getAgent(id)!);\r\n}\r\n\r\n/**\r\n * Typed error thrown by `swapMembers` when a swap target id does not\r\n * correspond to any known member of the source roster (Task I.3, v3-I).\r\n * Carries the unknown id and a list of available ids for diagnostics.\r\n */\r\nexport class UnknownMemberError extends Error {\r\n readonly unknownId: string;\r\n readonly availableIds: string[];\r\n\r\n constructor(unknownId: string, availableIds: string[]) {\r\n super(\r\n `Unknown member id for swap: \"${unknownId}\". Available: ${availableIds.join(', ') || '(none)'}.`,\r\n );\r\n this.name = 'UnknownMemberError';\r\n this.unknownId = unknownId;\r\n this.availableIds = availableIds;\r\n }\r\n}\r\n\r\n/**\r\n * Pure helper: remap members in a roster by id.\r\n *\r\n * swapMembers(\r\n * [{id: 'sisyphus', ...}, {id: 'oracle', ...}],\r\n * { sisyphus: 'prometheus' } // or just { sisyphus: 'prometheus' }\r\n * )\r\n * // => [{id: 'prometheus', ...}, {id: 'oracle', ...}]\r\n *\r\n * Behavior (Task I.3, v3-I):\r\n * - For each member in `roles`, if `swap[member.id]` is defined, replace\r\n * it with the agent whose id equals `swap[member.id]` from the\r\n * built-in `AGENT_ROLES` registry.\r\n * - Members without a swap mapping pass through unchanged.\r\n * - If `swap[memberId]` references an id that is not in `AGENT_ROLES`,\r\n * throw `UnknownMemberError`. (Defensive: a typo would otherwise\r\n * silently produce a member with the same id but no resolved target.)\r\n * - Pure function: no I/O, deterministic. Returns a NEW array.\r\n * - Self-mapping is a no-op: `swap[memberId] === memberId` keeps the\r\n * original AgentRole object.\r\n *\r\n * @param roles - source roster (typically the output of `getCouncilAgents`).\r\n * @param swap - `{ fromId: toId }` remapping table. Empty object = no-op.\r\n */\r\nexport function swapMembers(\r\n roles: AgentRole[],\r\n swap: Record<string, string>,\r\n): AgentRole[] {\r\n const swapEntries = Object.entries(swap);\r\n if (swapEntries.length === 0) return roles.slice();\r\n\r\n // Pre-resolve targets once for O(1) lookup + early unknown-id detection.\r\n const targets = new Map<string, AgentRole>();\r\n for (const [fromId, toId] of swapEntries) {\r\n if (!targets.has(toId)) {\r\n const target = getAgent(toId);\r\n if (!target) {\r\n throw new UnknownMemberError(\r\n toId,\r\n AGENT_ROLES.map((r) => r.id),\r\n );\r\n }\r\n targets.set(toId, target);\r\n }\r\n // Validate `fromId` is in the source roster (defensive \u2014 a typo in\r\n // `fromId` would otherwise be silently ignored).\r\n if (!roles.some((r) => r.id === fromId)) {\r\n throw new UnknownMemberError(\r\n fromId,\r\n roles.map((r) => r.id),\r\n );\r\n }\r\n }\r\n\r\n return roles.map((role) => {\r\n const toId = swap[role.id];\r\n if (toId === undefined) return role;\r\n if (toId === role.id) return role; // self-mapping \u2192 no-op\r\n return targets.get(toId)!;\r\n });\r\n}\r\n", "/**\r\n * promoteMember \u2014 cross-schema promotion from AgentRole to CodingSkillDefinition.\r\n *\r\n * Converts a council member definition into a standalone skill that can be\r\n * invoked via `/skill <id>` (if registered) or persisted as a `SKILL.md`\r\n * file for manual loading.\r\n *\r\n * Mapping (AgentRole \u2192 CodingSkillDefinition):\r\n * - id \u2192 id (slugified)\r\n * - name \u2192 name\r\n * - role \u2192 category (e.g. \"Council Director\")\r\n * - codename \u2192 tag `codename:<x>`\r\n * - systemPrompt \u2192 systemPromptFragment (CLARIFICATION_PROTOCOL stripped)\r\n * - tools[] \u2192 requiredTools[]\r\n * - skills[] \u2192 relatedSkills[]\r\n * - (auto) \u2192 description, version, estimatedCost, enabledByDefault,\r\n * builtin (false), requiredRoles ([memberId]),\r\n * triggers, antiPatterns, examples (1), outputSchema, tags\r\n *\r\n * This is a PURE function \u2014 no I/O, no side effects. The caller\r\n * (electron/cli/app.tsx dispatcher) is responsible for persisting\r\n * the markdown output to disk.\r\n *\r\n * @see docs/plans/2026-06-30-anathema-coder-v3-K.md\r\n */\r\n\r\nimport type { AgentRole } from '../types';\r\nimport type { CodingCategory, CodingSkillDefinition } from './skills';\r\nimport { AGENT_ROLES, UnknownMemberError, getAgent } from './roles';\r\n\r\n/**\r\n * Map an AgentRole.role (free string) to a CodingCategory (closed union).\r\n * Unknown roles fall back to 'planning' \u2014 the safest default (most council\r\n * methodologies begin with planning).\r\n */\r\nconst ROLE_TO_CATEGORY: Record<string, CodingCategory> = {\r\n 'Council Director': 'planning',\r\n 'Project Planner': 'planning',\r\n 'Creative Ideator': 'planning',\r\n 'Knowledge Architect': 'planning',\r\n 'Quality Critic': 'review',\r\n 'Final Synthesizer': 'planning',\r\n};\r\n\r\nfunction categoryForRole(role: string): CodingCategory {\r\n return ROLE_TO_CATEGORY[role] ?? 'planning';\r\n}\r\n\r\nexport interface PromoteMemberOptions {\r\n /** Override the auto-derived version (default: '1.0.0'). */\r\n version?: string;\r\n /** Override the auto-derived estimated cost (default: 'medium'). */\r\n estimatedCost?: 'low' | 'medium' | 'high';\r\n /** Override the auto-derived enabledByDefault (default: true). */\r\n enabledByDefault?: boolean;\r\n /** Override the auto-derived description. */\r\n description?: string;\r\n /** Override the auto-derived triggers list. */\r\n triggers?: string[];\r\n /** Override the auto-derived antiPatterns list. */\r\n antiPatterns?: string[];\r\n}\r\n\r\nexport interface PromotionResult {\r\n /** The constructed skill definition. */\r\n skill: CodingSkillDefinition;\r\n /** Valid SKILL.md markdown (YAML frontmatter + body). */\r\n markdown: string;\r\n}\r\n\r\n/**\r\n * Pure function: convert a council member into a skill definition +\r\n * markdown file content. Throws `UnknownMemberError` if `memberId` is\r\n * not a known agent.\r\n *\r\n * Examples:\r\n * promoteMember('hephaestus')\r\n * \u2192 { skill: { id: 'hephaestus', name: 'Hephaestus', ... }, markdown: '---\\n...---\\n...' }\r\n * promoteMember('zaphod') // throws UnknownMemberError\r\n */\r\nexport function promoteMember(\r\n memberId: string,\r\n options: PromoteMemberOptions = {},\r\n): PromotionResult {\r\n const agent = getAgent(memberId);\r\n if (!agent) {\r\n throw new UnknownMemberError(memberId, AGENT_ROLES.map((r) => r.id));\r\n }\r\n\r\n const skill = buildSkillDefinition(agent, options);\r\n const markdown = renderSkillMarkdown(agent, skill);\r\n return { skill, markdown };\r\n}\r\n\r\n/**\r\n * Construct the CodingSkillDefinition from an AgentRole + options.\r\n * Exported for testing \u2014 production code uses `promoteMember`.\r\n */\r\nexport function buildSkillDefinition(\r\n agent: AgentRole,\r\n options: PromoteMemberOptions,\r\n): CodingSkillDefinition {\r\n const version = options.version ?? '1.0.0';\r\n const estimatedCost = options.estimatedCost ?? 'medium';\r\n const enabledByDefault = options.enabledByDefault ?? true;\r\n const description =\r\n options.description ?? `Run the ${agent.role} methodology (${agent.codename}).`;\r\n const triggers =\r\n options.triggers ?? autoTriggers(agent);\r\n const antiPatterns =\r\n options.antiPatterns ?? [\r\n 'Request requires direct execution rather than strategic framing.',\r\n 'A simpler single-agent prompt would suffice \u2014 promote only when the full council methodology adds value.',\r\n ];\r\n\r\n return {\r\n id: slugify(agent.id),\r\n version,\r\n name: agent.name,\r\n description,\r\n category: categoryForRole(agent.role),\r\n requiredRoles: [agent.id],\r\n requiredTools: agent.tools,\r\n estimatedCost,\r\n enabledByDefault,\r\n builtin: false,\r\n triggers,\r\n antiPatterns,\r\n requires: [],\r\n relatedSkills: agent.skills ?? [],\r\n tags: buildTags(agent),\r\n examples: buildExamples(agent),\r\n outputSchema: '{ result: string }',\r\n systemPromptFragment: stripClarificationProtocol(agent.systemPrompt),\r\n };\r\n}\r\n\r\n/**\r\n * Render the skill definition as a valid SKILL.md file (YAML frontmatter +\r\n * markdown body). Exported for testing.\r\n */\r\nexport function renderSkillMarkdown(\r\n agent: AgentRole,\r\n skill: CodingSkillDefinition,\r\n): string {\r\n const frontmatter = [\r\n '---',\r\n `id: ${skill.id}`,\r\n `version: ${skill.version}`,\r\n `name: ${skill.name}`,\r\n `category: ${skill.category}`,\r\n `estimatedCost: ${skill.estimatedCost}`,\r\n `enabledByDefault: ${String(skill.enabledByDefault)}`,\r\n `builtin: ${String(skill.builtin)}`,\r\n `tags: [${skill.tags.map((t) => `\"${t}\"`).join(', ')}]`,\r\n `requiredRoles: [${skill.requiredRoles.map((r) => `\"${r}\"`).join(', ')}]`,\r\n `requiredTools: [${skill.requiredTools.map((r) => `\"${r}\"`).join(', ')}]`,\r\n `relatedSkills: [${skill.relatedSkills.map((r) => `\"${r}\"`).join(', ')}]`,\r\n '---',\r\n ].join('\\n');\r\n\r\n const body = [\r\n '',\r\n `# ${skill.name} \u2014 ${agent.codename}`,\r\n '',\r\n `> ${skill.description}`,\r\n '',\r\n '## Methodology',\r\n '',\r\n skill.systemPromptFragment.trim(),\r\n '',\r\n '## Triggers',\r\n '',\r\n ...skill.triggers.map((t) => `- ${t}`),\r\n '',\r\n '## Anti-patterns',\r\n '',\r\n ...skill.antiPatterns.map((a) => `- ${a}`),\r\n '',\r\n '## Example',\r\n '',\r\n ...formatExamples(skill.examples),\r\n '',\r\n '## Output',\r\n '',\r\n `\\`\\`\\`ts`,\r\n skill.outputSchema,\r\n `\\`\\`\\``,\r\n '',\r\n ].join('\\n');\r\n\r\n return frontmatter + body;\r\n}\r\n\r\n// ---------- helpers (private) ----------\r\n\r\n/** Slugify: lowercase, replace underscores/spaces with hyphens. */\r\nexport function slugify(s: string): string {\r\n return s.trim().toLowerCase().replace(/[_\\s]+/g, '-');\r\n}\r\n\r\n/**\r\n * Strip the CLARIFICATION_PROTOCOL block from an AgentRole systemPrompt.\r\n * Looks for the trailing block starting with a line that contains only\r\n * `WHEN TO ASK THE USER` or `Rules for clarifications:`.\r\n */\r\nexport function stripClarificationProtocol(systemPrompt: string): string {\r\n const idx = systemPrompt.indexOf('\\nWHEN TO ASK THE USER');\r\n if (idx === -1) return systemPrompt;\r\n return systemPrompt.slice(0, idx).trimEnd();\r\n}\r\n\r\n/** Build the tag list from codename + role + category slug. */\r\nfunction buildTags(agent: AgentRole): string[] {\r\n const categorySlug = slugify(agent.role);\r\n return [\r\n `codename:${agent.codename.toLowerCase()}`,\r\n `role:${agent.id}`,\r\n `category:${categorySlug}`,\r\n 'promoted',\r\n 'council-member',\r\n ];\r\n}\r\n\r\n/** Auto-derived triggers from the agent's role description. */\r\nfunction autoTriggers(agent: AgentRole): string[] {\r\n return [\r\n `The task benefits from the ${agent.role} methodology (${agent.codename}).`,\r\n `A complex, multi-step request that matches ${agent.name}'s specialty.`,\r\n `The user explicitly invokes the ${agent.name} methodology.`,\r\n ];\r\n}\r\n\r\n/** Build one minimal example for the skill markdown. */\r\nfunction buildExamples(agent: AgentRole): CodingSkillDefinition['examples'] {\r\n return [\r\n {\r\n input: `Apply ${agent.name} (${agent.codename}) to: \"Frame this request before delegating.\"`,\r\n output: {\r\n framing: `${agent.codename} framing follows the methodology in the system prompt fragment.`,\r\n delegation: 'Output identifies the relevant specialists and what they should deliver.',\r\n constraints: 'Cross-cutting risks and ordering constraints are called out explicitly.',\r\n },\r\n },\r\n ];\r\n}\r\n\r\n/** Format examples as markdown bullet lines. */\r\nfunction formatExamples(\r\n examples: CodingSkillDefinition['examples'],\r\n): string[] {\r\n const lines: string[] = [];\r\n for (const ex of examples) {\r\n lines.push(`**Input:** ${ex.input}`);\r\n lines.push('');\r\n lines.push('**Output:**');\r\n lines.push('```json');\r\n lines.push(JSON.stringify(ex.output, null, 2));\r\n lines.push('```');\r\n lines.push('');\r\n }\r\n return lines;\r\n}", "/**\r\n * BrainEvent \u2014 provider-neutral event contract for AnathemaBrain's agent system.\r\n *\r\n * These types are the ONLY contract between the agent loop (main process) and any\r\n * frontend (Electron renderer today, Ink CLI tomorrow). They are intentionally\r\n * standalone: no Electron imports, no project imports. Every payload is plain,\r\n * JSON-serializable data so events can cross the IPC boundary or a socket\r\n * untouched.\r\n *\r\n * @see docs/plans/2026-06-28-zelari-code.md (Task 11.1)\r\n */\r\n\r\n/** Discriminator for every {@link BrainEvent} variant. */\r\nexport type BrainEventType =\r\n | 'agent_start'\r\n | 'agent_end'\r\n | 'message_start'\r\n | 'message_end'\r\n | 'message_delta'\r\n | 'thinking_delta'\r\n | 'tool_execution_start'\r\n | 'tool_execution_update'\r\n | 'tool_execution_end'\r\n | 'queue_update'\r\n | 'session_compacted'\r\n | 'error'\r\n | 'member_cost';\r\n\r\n/** Fields shared by every event. */\r\nexport interface BrainEventBase {\r\n /** Type discriminator. */\r\n type: BrainEventType;\r\n /** Unique event id (UUID v4 string). */\r\n id: string;\r\n /** Event timestamp (epoch ms). */\r\n ts: number;\r\n /** Session this event belongs to. */\r\n sessionId: string;\r\n}\r\n\r\n// --- Agent lifecycle --------------------------------------------------------\r\n\r\n/** The agent loop has started; carries the resolved model + provider. */\r\nexport interface BrainAgentStartEvent extends BrainEventBase {\r\n type: 'agent_start';\r\n model: string;\r\n provider: string;\r\n}\r\n\r\n/** The agent loop has finished, was cancelled, or errored out. */\r\nexport interface BrainAgentEndEvent extends BrainEventBase {\r\n type: 'agent_end';\r\n reason: 'completed' | 'cancelled' | 'error';\r\n durationMs: number;\r\n}\r\n\r\n// --- Message streaming ------------------------------------------------------\r\n\r\n/** An assistant message has begun streaming. */\r\nexport interface BrainMessageStartEvent extends BrainEventBase {\r\n type: 'message_start';\r\n messageId: string;\r\n role: 'assistant';\r\n}\r\n\r\n/** An incremental chunk of assistant message text. */\r\nexport interface BrainMessageDeltaEvent extends BrainEventBase {\r\n type: 'message_delta';\r\n messageId: string;\r\n delta: string;\r\n}\r\n\r\n/** An assistant message has finished streaming. */\r\nexport interface BrainMessageEndEvent extends BrainEventBase {\r\n type: 'message_end';\r\n messageId: string;\r\n totalLength: number;\r\n finishReason: string;\r\n /**\r\n * Real token usage reported by the provider (Task G.4). When the\r\n * provider sends an OpenAI-shaped `usage` chunk (gated by\r\n * `stream_options.include_usage`), this carries the actual numbers.\r\n * When missing, downstream consumers fall back to the\r\n * ~4-characters-per-token approximation that v3-B used.\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3-G.md (Task G.4.4)\r\n */\r\n usage?: UsageBreakdown;\r\n}\r\n\r\n/**\r\n * Provider-reported token usage for one assistant turn (Task G.4).\r\n * The numbers come from the OpenAI-compatible `usage` field in the\r\n * final SSE chunk before `[DONE]`. Providers that don't honor\r\n * `stream_options.include_usage` will not emit this \u2014 consumers must\r\n * degrade gracefully to the approximation.\r\n */\r\nexport interface UsageBreakdown {\r\n /** Tokens in the prompt (system + user messages, including tool messages). */\r\n promptTokens: number;\r\n /** Tokens generated by the assistant. */\r\n completionTokens: number;\r\n /** Convenience: promptTokens + completionTokens. */\r\n totalTokens: number;\r\n}\r\n\r\n// --- Reasoning (optional) ---------------------------------------------------\r\n\r\n/** An incremental chunk of the model's reasoning / thinking trace. */\r\nexport interface BrainThinkingDeltaEvent extends BrainEventBase {\r\n type: 'thinking_delta';\r\n messageId: string;\r\n delta: string;\r\n}\r\n\r\n// --- Tool execution ---------------------------------------------------------\r\n\r\n/** A tool call has started executing. */\r\nexport interface BrainToolExecutionStartEvent extends BrainEventBase {\r\n type: 'tool_execution_start';\r\n toolCallId: string;\r\n toolName: string;\r\n args: Record<string, unknown>;\r\n}\r\n\r\n/** Progress update emitted while a tool is still running. */\r\nexport interface BrainToolExecutionUpdateEvent extends BrainEventBase {\r\n type: 'tool_execution_update';\r\n toolCallId: string;\r\n delta?: string;\r\n}\r\n\r\n/** A tool call has finished, successfully or with an error. */\r\nexport interface BrainToolExecutionEndEvent extends BrainEventBase {\r\n type: 'tool_execution_end';\r\n toolCallId: string;\r\n result: string;\r\n isError: boolean;\r\n durationMs: number;\r\n}\r\n\r\n// --- Queued user prompts (steering / follow-up) -----------------------------\r\n\r\n/** The count of queued user prompts has changed. */\r\nexport interface BrainQueueUpdateEvent extends BrainEventBase {\r\n type: 'queue_update';\r\n queuedCount: number;\r\n}\r\n\r\n// --- Session compaction -----------------------------------------------------\r\n\r\n/** The session history was compacted into a summary. */\r\nexport interface BrainSessionCompactedEvent extends BrainEventBase {\r\n type: 'session_compacted';\r\n summary: string;\r\n messagesRemoved: number;\r\n}\r\n\r\n// --- Errors -----------------------------------------------------------------\r\n\r\n/** A recoverable, fatal, or cancellation error occurred. */\r\nexport interface BrainErrorEvent extends BrainEventBase {\r\n type: 'error';\r\n severity: 'recoverable' | 'fatal' | 'cancelled';\r\n message: string;\r\n code?: string;\r\n}\r\n\r\n// --- Council per-member cost (Task I.1, v3-I) ------------------------------\r\n\r\n/**\r\n * Per-member cost report emitted at the end of a council member's run.\r\n * Carries the actual `MemberCost` payload produced by\r\n * `MemberCostTracker.record()` (see `electron/cli/councilCost.ts`).\r\n *\r\n * Note: we inline a structural type here instead of importing the\r\n * `MemberCost` type, to keep this events module free of CLI-side deps\r\n * (architecture rule: events.ts must be renderer/Node-loadable without\r\n * pulling in `electron/cli/*`).\r\n */\r\nexport interface BrainMemberCostEvent extends BrainEventBase {\r\n type: 'member_cost';\r\n cost: {\r\n memberId: string;\r\n name: string;\r\n promptTokens: number;\r\n completionTokens: number;\r\n totalTokens: number;\r\n durationMs: number;\r\n toolCalls: number;\r\n errored: boolean;\r\n };\r\n}\r\n\r\n/** Discriminated union of every event the brain can emit. */\r\nexport type BrainEvent =\r\n | BrainAgentStartEvent\r\n | BrainAgentEndEvent\r\n | BrainMessageStartEvent\r\n | BrainMessageDeltaEvent\r\n | BrainMessageEndEvent\r\n | BrainThinkingDeltaEvent\r\n | BrainToolExecutionStartEvent\r\n | BrainToolExecutionUpdateEvent\r\n | BrainToolExecutionEndEvent\r\n | BrainQueueUpdateEvent\r\n | BrainSessionCompactedEvent\r\n | BrainErrorEvent\r\n | BrainMemberCostEvent;\r\n\r\n/**\r\n * Map from a {@link BrainEventType} discriminator to its concrete event type.\r\n * Lets callers say `BrainEventOf<'agent_start'>` instead of repeating the\r\n * `Extract<BrainEvent, { type: ... }>` dance.\r\n */\r\nexport type BrainEventOf<T extends BrainEventType> = Extract<BrainEvent, { type: T }>;\r\n\r\n// --- Type guards ------------------------------------------------------------\r\n\r\nexport function isBrainAgentStartEvent(e: BrainEvent): e is BrainAgentStartEvent {\r\n return e.type === 'agent_start';\r\n}\r\n\r\nexport function isBrainAgentEndEvent(e: BrainEvent): e is BrainAgentEndEvent {\r\n return e.type === 'agent_end';\r\n}\r\n\r\nexport function isBrainMessageStartEvent(e: BrainEvent): e is BrainMessageStartEvent {\r\n return e.type === 'message_start';\r\n}\r\n\r\nexport function isBrainMessageDeltaEvent(e: BrainEvent): e is BrainMessageDeltaEvent {\r\n return e.type === 'message_delta';\r\n}\r\n\r\nexport function isBrainMessageEndEvent(e: BrainEvent): e is BrainMessageEndEvent {\r\n return e.type === 'message_end';\r\n}\r\n\r\nexport function isBrainThinkingDeltaEvent(e: BrainEvent): e is BrainThinkingDeltaEvent {\r\n return e.type === 'thinking_delta';\r\n}\r\n\r\nexport function isBrainToolExecutionStartEvent(e: BrainEvent): e is BrainToolExecutionStartEvent {\r\n return e.type === 'tool_execution_start';\r\n}\r\n\r\nexport function isBrainToolExecutionUpdateEvent(e: BrainEvent): e is BrainToolExecutionUpdateEvent {\r\n return e.type === 'tool_execution_update';\r\n}\r\n\r\nexport function isBrainToolExecutionEndEvent(e: BrainEvent): e is BrainToolExecutionEndEvent {\r\n return e.type === 'tool_execution_end';\r\n}\r\n\r\nexport function isBrainQueueUpdateEvent(e: BrainEvent): e is BrainQueueUpdateEvent {\r\n return e.type === 'queue_update';\r\n}\r\n\r\nexport function isBrainSessionCompactedEvent(e: BrainEvent): e is BrainSessionCompactedEvent {\r\n return e.type === 'session_compacted';\r\n}\r\n\r\nexport function isBrainErrorEvent(e: BrainEvent): e is BrainErrorEvent {\r\n return e.type === 'error';\r\n}\r\n\r\nexport function isBrainMemberCostEvent(e: BrainEvent): e is BrainMemberCostEvent {\r\n return e.type === 'member_cost';\r\n}\r\n\r\n// --- Constructor ------------------------------------------------------------\r\n\r\n/**\r\n * Build a fully-formed {@link BrainEvent}, stamping the common `id` (UUID v4)\r\n * and `ts` (epoch ms) fields automatically. The caller supplies only the\r\n * variant-specific payload.\r\n *\r\n * Uses the global `crypto.randomUUID()` (Web Crypto), available in both Node 20+\r\n * and the browser/renderer \u2014 keeping this module free of Node-only imports.\r\n *\r\n * @example\r\n * const ev = createBrainEvent('message_delta', sessionId, { messageId, delta });\r\n */\r\nexport function createBrainEvent<T extends BrainEventType>(\r\n type: T,\r\n sessionId: string,\r\n data: Omit<BrainEventOf<T>, 'type' | 'id' | 'ts' | 'sessionId'>,\r\n): BrainEventOf<T> {\r\n return {\r\n type,\r\n id: crypto.randomUUID(),\r\n ts: Date.now(),\r\n sessionId,\r\n ...data,\r\n } as BrainEventOf<T>;\r\n}\r\n", "/**\r\n * AgentHarness \u2014 provider-neutral agent loop.\r\n *\r\n * Encapsulates a single agent turn: given a (model, provider, messages, tools)\r\n * configuration and a provider streaming function, it drives the stream and\r\n * yields the full {@link BrainEvent} lifecycle as an `AsyncIterable<BrainEvent>`.\r\n *\r\n * Electron-free: this module imports ONLY from `electron/shared/` (the event\r\n * contract + bus) and `electron/main/core/tools/` (the tool registry). It has\r\n * zero coupling to `llm.ts` or any main-process IPC, so it can run in the\r\n * Electron main process today and be reused from the Ink CLI in Phase 14.\r\n *\r\n * When `toolRegistry` is provided, tool_call deltas trigger real tool\r\n * execution and emit a matching `tool_execution_end` event. Without it, the\r\n * harness only emits `tool_execution_start` (legacy behavior, useful for\r\n * streaming-only consumers).\r\n *\r\n * @see docs/plans/2026-06-28-zelari-code.md (Task 12.1 + 14.8)\r\n */\r\n\r\nimport { EventBus } from '../../shared/eventBus.js';\r\nimport {\r\n createBrainEvent,\r\n type BrainEvent,\r\n type BrainAgentStartEvent,\r\n type BrainAgentEndEvent,\r\n type BrainMessageStartEvent,\r\n type BrainMessageDeltaEvent,\r\n type BrainMessageEndEvent,\r\n type BrainQueueUpdateEvent,\r\n type BrainToolExecutionEndEvent,\r\n type UsageBreakdown,\r\n} from '../../shared/events.js';\r\nimport { ToolRegistry } from './tools/registry.js';\r\n\r\n// --- Public types -----------------------------------------------------------\r\n\r\nexport interface AgentMessage {\r\n role: 'system' | 'user' | 'assistant' | 'tool';\r\n content: string;\r\n /** For tool messages: the tool call id this result corresponds to. */\r\n toolCallId?: string;\r\n}\r\n\r\nexport interface AgentToolSpec {\r\n /** Tool name (must match the tool registry). */\r\n name: string;\r\n /** JSON-schema-like description for the LLM. */\r\n description: string;\r\n /** JSON Schema for the tool's input arguments. */\r\n parameters: Record<string, unknown>;\r\n}\r\n\r\nexport interface AgentHarnessConfig {\r\n /** Model identifier (e.g. 'grok-4', 'MiniMax-M2.5'). */\r\n model: string;\r\n /** Provider id (e.g. 'grok', 'minimax', 'glm', 'custom'). */\r\n provider: string;\r\n /** Conversation transcript (system prompt is composed by the caller). */\r\n messages: AgentMessage[];\r\n /** Tools available to the agent (may be empty). */\r\n tools: AgentToolSpec[];\r\n /** Optional event bus. When omitted, events are silently dropped. */\r\n eventBus?: EventBus;\r\n /** Optional session id for event grouping. Defaults to a UUID. */\r\n sessionId?: string;\r\n /**\r\n * Provider function that yields raw text deltas + finish reason.\r\n * Implementation in Task 12.5 (currently lives in llm.ts).\r\n */\r\n providerStream: ProviderStreamFn;\r\n /**\r\n * Optional tool registry. When provided, tool_call deltas trigger real\r\n * tool execution and emit a matching `tool_execution_end` event.\r\n */\r\n toolRegistry?: ToolRegistry;\r\n /** Optional cwd for tool execution. Defaults to process.cwd(). */\r\n cwd?: string;\r\n /**\r\n * Maximum tool calls per single turn (Task G.2, carryover from v3-C\r\n * C.1.5). When the harness sees more than this many `tool_call`\r\n * deltas in a single turn, the extra ones are NOT executed by the\r\n * registry \u2014 instead a synthetic `tool_execution_end` event is\r\n * emitted with `isError: true, result: '[skipped] maxToolCallsPerTurn\r\n * reached'`. The `tool_execution_start` event still fires so the UI\r\n * can render the tool attempt.\r\n *\r\n * Default: undefined (no limit \u2014 backward compatible with v3-C behavior).\r\n * Council sets it to 5 by default via `PureCouncilConfig.maxToolCallsPerTurn`.\r\n *\r\n * Mitigation rationale: a council member prompted with \"explore the repo\"\r\n * could otherwise fire 50 read_file calls in one turn, ballooning the\r\n * message context to the point where the next provider call fails with\r\n * HTTP 400 (context length exceeded).\r\n */\r\n maxToolCallsPerTurn?: number;\r\n /**\r\n * Maximum number of drained queued prompts per run() invocation.\r\n * When the queue is non-empty after a turn, the harness re-enters\r\n * the providerStream loop up to this many times before yielding\r\n * agent_end. Default 3. Set to 0 to disable queue draining.\r\n */\r\n maxQueuedIterations?: number;\r\n}\r\n\r\nexport type ProviderStreamFn = (params: {\r\n messages: AgentMessage[];\r\n model: string;\r\n provider: string;\r\n tools: AgentToolSpec[];\r\n signal?: AbortSignal;\r\n}) => AsyncIterable<ProviderDelta>;\r\n\r\n/** Provider-neutral streaming delta (one chunk from a provider). */\r\nexport type ProviderDelta =\r\n | { kind: 'text'; delta: string }\r\n | { kind: 'thinking'; delta: string }\r\n | { kind: 'tool_call'; toolCallId: string; toolName: string; args: Record<string, unknown> }\r\n | { kind: 'finish'; reason: string }\r\n | { kind: 'error'; message: string }\r\n /** Provider-reported token usage (Task G.4). Emitted as a standalone\r\n * delta so it can arrive anywhere in the stream \u2014 typically right\r\n * before `[DONE]` when `stream_options.include_usage` is set. */\r\n | { kind: 'usage'; usage: UsageBreakdown };\r\n\r\n// --- Harness ----------------------------------------------------------------\r\n\r\nexport class AgentHarness {\r\n private readonly config: AgentHarnessConfig;\r\n private readonly eventBus: EventBus | undefined;\r\n private readonly sessionId: string;\r\n private readonly maxQueuedIterations: number;\r\n private cancelled = false;\r\n private activeController: AbortController | null = null;\r\n private queue: string[] = [];\r\n\r\n constructor(config: AgentHarnessConfig) {\r\n this.config = config;\r\n this.eventBus = config.eventBus;\r\n this.sessionId = config.sessionId ?? crypto.randomUUID();\r\n this.maxQueuedIterations = config.maxQueuedIterations ?? 3;\r\n }\r\n\r\n /**\r\n * Cancel the in-flight run. Events drain until end of stream.\r\n *\r\n * Idempotent: calling cancel() multiple times is safe \u2014 the cancelled\r\n * flag stays true and AbortController.abort() is itself a no-op on\r\n * already-aborted controllers. If no turn is running, this is a\r\n * no-op (the next run() invocation will check the cancelled flag\r\n * and emit `agent_end` with `reason: 'cancelled'` before any work).\r\n *\r\n * After cancel() returns, the harness should be discarded by the\r\n * caller (the run() generator finishes after the current turn ends).\r\n * For mid-stream interrupt + new-prompt injection, see Task C.3.2.\r\n */\r\n cancel(): void {\r\n if (this.cancelled) return; // idempotent \u2014 don't re-abort\r\n this.cancelled = true;\r\n this.activeController?.abort();\r\n }\r\n\r\n /** Current size of the queued user-prompt buffer. */\r\n get queueLength(): number {\r\n return this.queue.length;\r\n }\r\n\r\n /**\r\n * Enqueue a user prompt to be processed at the next opportunity.\r\n * The next prompt in the queue will be appended to the conversation\r\n * transcript and re-enter the provider stream loop after the current\r\n * turn finishes. Emits a `queue_update` event so UIs can refresh\r\n * the displayed counter.\r\n *\r\n * If `run()` has already returned (no active loop), the queued\r\n * prompt will be picked up on the *next* run() call \u2014 note this\r\n * helper does NOT itself trigger a run. Callers wire the\r\n * dequeue step inside `run()` (Task 18.1).\r\n */\r\n enqueue(userText: string): void {\r\n this.queue.push(userText);\r\n const queueEvent: BrainQueueUpdateEvent = createBrainEvent('queue_update', this.sessionId, {\r\n queuedCount: this.queue.length,\r\n });\r\n this.emit(queueEvent);\r\n }\r\n\r\n /**\r\n * Dequeue the next queued prompt, or `null` if the queue is empty.\r\n * Emits a `queue_update` event with the new length so UIs can\r\n * decrement the counter.\r\n */\r\n dequeueNext(): string | null {\r\n const next = this.queue.shift() ?? null;\r\n const queueEvent: BrainQueueUpdateEvent = createBrainEvent('queue_update', this.sessionId, {\r\n queuedCount: this.queue.length,\r\n });\r\n this.emit(queueEvent);\r\n return next;\r\n }\r\n\r\n /**\r\n * Run a single agent turn and yield provider-neutral BrainEvents.\r\n * The returned AsyncIterable emits all BrainEvents for the run, then completes.\r\n * Callers can subscribe via eventBus AND iterate the returned iterable.\r\n */\r\n async *run(): AsyncIterable<BrainEvent> {\r\n const startTime = Date.now();\r\n this.activeController = new AbortController();\r\n\r\n // Emit agent_start\r\n const startEvent: BrainAgentStartEvent = createBrainEvent('agent_start', this.sessionId, {\r\n model: this.config.model,\r\n provider: this.config.provider,\r\n });\r\n this.emit(startEvent);\r\n yield startEvent;\r\n\r\n // === Initial turn (always runs to preserve Phase 12.x behavior) ===\r\n // The harness processes the messages buffer that was provided in\r\n // the config. Backward compat: existing callers expect a single\r\n // provider call here even when the queue is empty.\r\n const initialMessageId = crypto.randomUUID();\r\n let totalLength = 0;\r\n let hadError = false;\r\n\r\n const initialMsgStart: BrainMessageStartEvent = createBrainEvent(\r\n 'message_start',\r\n this.sessionId,\r\n { messageId: initialMessageId, role: 'assistant' },\r\n );\r\n this.emit(initialMsgStart);\r\n yield initialMsgStart;\r\n\r\n let initialTurnLength = 0;\r\n const initialFinishRef = { value: 'stop' };\r\n // Task G.4.3 \u2014 capture real provider usage for this turn. The ref\r\n // is read after runSingleTurn returns and attached to message_end.\r\n const initialUsageRef = { value: null as UsageBreakdown | null };\r\n for await (const ev of this.runSingleTurn(initialMessageId, initialFinishRef, initialUsageRef)) {\r\n if (ev.type === 'message_delta') {\r\n initialTurnLength += (ev as BrainMessageDeltaEvent).delta.length;\r\n } else if (ev.type === 'error') {\r\n // Cancellations are emitted as error events with severity='cancelled'\r\n // (Task C.3.1) \u2014 they must NOT set hadError, otherwise the final\r\n // agent_end would emit reason='error' instead of 'cancelled'.\r\n if (ev.severity !== 'cancelled') {\r\n hadError = true;\r\n }\r\n }\r\n yield ev;\r\n }\r\n totalLength += initialTurnLength;\r\n\r\n const initialMsgEnd: BrainMessageEndEvent = createBrainEvent('message_end', this.sessionId, {\r\n messageId: initialMessageId,\r\n totalLength: initialTurnLength,\r\n finishReason: initialFinishRef.value,\r\n ...(initialUsageRef.value ? { usage: initialUsageRef.value } : {}),\r\n });\r\n this.emit(initialMsgEnd);\r\n yield initialMsgEnd;\r\n\r\n // === Queue drain (Task 18.1) ===\r\n // After the initial turn, drain queued user prompts up to\r\n // maxQueuedIterations. Each iteration appends the next dequeued\r\n // user prompt to messages, then re-enters the provider stream.\r\n // Loop terminates on cancel, error, empty queue, or max iterations.\r\n let turns = 0;\r\n while (turns < this.maxQueuedIterations) {\r\n if (this.cancelled) break;\r\n if (this.queue.length === 0) break;\r\n\r\n const queuedPrompt = this.dequeueNext();\r\n if (queuedPrompt === null) break;\r\n\r\n // Append to conversation transcript for this turn\r\n this.config.messages.push({ role: 'user', content: queuedPrompt });\r\n\r\n const turnMessageId = crypto.randomUUID();\r\n const msgStart: BrainMessageStartEvent = createBrainEvent('message_start', this.sessionId, {\r\n messageId: turnMessageId,\r\n role: 'assistant',\r\n });\r\n this.emit(msgStart);\r\n yield msgStart;\r\n\r\n let turnLength = 0;\r\n const turnFinishRef = { value: 'stop' };\r\n const turnUsageRef = { value: null as UsageBreakdown | null };\r\n for await (const ev of this.runSingleTurn(turnMessageId, turnFinishRef, turnUsageRef)) {\r\n if (ev.type === 'message_delta') {\r\n turnLength += (ev as BrainMessageDeltaEvent).delta.length;\r\n } else if (ev.type === 'error') {\r\n hadError = true;\r\n }\r\n yield ev;\r\n }\r\n totalLength += turnLength;\r\n\r\n const msgEnd: BrainMessageEndEvent = createBrainEvent('message_end', this.sessionId, {\r\n messageId: turnMessageId,\r\n totalLength: turnLength,\r\n finishReason: turnFinishRef.value,\r\n ...(turnUsageRef.value ? { usage: turnUsageRef.value } : {}),\r\n });\r\n this.emit(msgEnd);\r\n yield msgEnd;\r\n\r\n turns++;\r\n }\r\n\r\n // Emit agent_end\r\n const agentEnd: BrainAgentEndEvent = createBrainEvent('agent_end', this.sessionId, {\r\n reason: hadError ? 'error' : this.cancelled ? 'cancelled' : 'completed',\r\n durationMs: Date.now() - startTime,\r\n });\r\n this.emit(agentEnd);\r\n yield agentEnd;\r\n\r\n this.activeController = null;\r\n }\r\n\r\n /**\r\n * Run a single provider turn for the current message buffer.\r\n * Streams from the provider, dispatches deltas to events, executes\r\n * any tool calls (if a registry was provided). Yields each\r\n * `BrainEvent` it produces so the caller can re-emit them in\r\n * the outer generator.\r\n *\r\n * Does NOT emit `message_start` / `message_end` \u2014 those are the\r\n * caller's responsibility (so the outer generator can wrap them\r\n * around the yielded event stream and compute the right\r\n * `totalLength` from observed deltas).\r\n *\r\n * Extracted from the original monolithic `run()` body to enable\r\n * the queue-draining loop in Task 18.1.\r\n */\r\n private async *runSingleTurn(\r\n messageId: string,\r\n finishRef: { value: string },\r\n usageRef: { value: UsageBreakdown | null },\r\n ): AsyncIterable<BrainEvent> {\r\n try {\r\n const stream = this.config.providerStream({\r\n messages: this.config.messages,\r\n model: this.config.model,\r\n provider: this.config.provider,\r\n tools: this.config.tools,\r\n signal: this.activeController?.signal,\r\n });\r\n\r\n // Per-turn tool call counter (Task G.2). Reset on every turn so\r\n // queue-drained turns don't accumulate across prompts.\r\n let toolCallsThisTurn = 0;\r\n const maxToolCalls = this.config.maxToolCallsPerTurn;\r\n\r\n for await (const delta of stream) {\r\n if (this.cancelled) {\r\n // Emit a cancellation error event so consumers (CLI, tests) can\r\n // observe the mid-stream interrupt (Task C.3.1).\r\n const cancelEvent = createBrainEvent('error', this.sessionId, {\r\n severity: 'cancelled',\r\n message: 'Run cancelled by user.',\r\n code: 'cancelled',\r\n });\r\n this.emit(cancelEvent);\r\n yield cancelEvent;\r\n break;\r\n }\r\n\r\n if (delta.kind === 'text') {\r\n const deltaEvent: BrainMessageDeltaEvent = createBrainEvent(\r\n 'message_delta',\r\n this.sessionId,\r\n { messageId, delta: delta.delta },\r\n );\r\n this.emit(deltaEvent);\r\n yield deltaEvent;\r\n } else if (delta.kind === 'thinking') {\r\n const thinkEvent = createBrainEvent('thinking_delta', this.sessionId, {\r\n messageId,\r\n delta: delta.delta,\r\n });\r\n this.emit(thinkEvent);\r\n yield thinkEvent;\r\n } else if (delta.kind === 'tool_call') {\r\n toolCallsThisTurn++;\r\n const toolStartEvent = createBrainEvent('tool_execution_start', this.sessionId, {\r\n toolCallId: delta.toolCallId,\r\n toolName: delta.toolName,\r\n args: delta.args,\r\n });\r\n this.emit(toolStartEvent);\r\n yield toolStartEvent;\r\n\r\n // Skip registry execution if we've exceeded the per-turn limit\r\n // (Task G.2, carryover from v3-C C.1.5). Emit a synthetic\r\n // `tool_execution_end` so the UI can still render the attempt\r\n // and downstream consumers (e.g. the LLM context) see a clean\r\n // closure. Without this guard, a council member could fire 50\r\n // read_file calls in one turn and blow the message context.\r\n const skipped = typeof maxToolCalls === 'number' && toolCallsThisTurn > maxToolCalls;\r\n\r\n if (this.config.toolRegistry && !skipped) {\r\n const startMs = Date.now();\r\n const result = await this.config.toolRegistry.invoke<unknown>(\r\n delta.toolName,\r\n delta.args,\r\n {\r\n cwd: this.config.cwd,\r\n sessionId: this.sessionId,\r\n signal: this.activeController?.signal,\r\n },\r\n );\r\n const endEvent: BrainToolExecutionEndEvent = createBrainEvent(\r\n 'tool_execution_end',\r\n this.sessionId,\r\n {\r\n toolCallId: delta.toolCallId,\r\n result: result.ok ? String(result.value) : result.error,\r\n isError: !result.ok,\r\n durationMs: Date.now() - startMs,\r\n },\r\n );\r\n this.emit(endEvent);\r\n yield endEvent;\r\n } else if (skipped) {\r\n // Synthetic end event \u2014 no registry call, just close out the\r\n // tool_execution_start with an explicit skip reason. The LLM\r\n // can see in the next provider turn that this tool didn't run.\r\n const endEvent: BrainToolExecutionEndEvent = createBrainEvent(\r\n 'tool_execution_end',\r\n this.sessionId,\r\n {\r\n toolCallId: delta.toolCallId,\r\n result: `[skipped] maxToolCallsPerTurn reached (limit=${maxToolCalls})`,\r\n isError: true,\r\n durationMs: 0,\r\n },\r\n );\r\n this.emit(endEvent);\r\n yield endEvent;\r\n }\r\n } else if (delta.kind === 'finish') {\r\n // Capture the finish reason via the shared ref so the caller\r\n // can synthesize the matching `message_end`.\r\n finishRef.value = delta.reason;\r\n break;\r\n } else if (delta.kind === 'error') {\r\n const errEvent = createBrainEvent('error', this.sessionId, {\r\n severity: 'recoverable',\r\n message: delta.message,\r\n });\r\n this.emit(errEvent);\r\n yield errEvent;\r\n } else if (delta.kind === 'usage') {\r\n // Provider-reported token usage (Task G.4). The breakdown is\r\n // captured in the shared ref so the caller's `message_end`\r\n // synthesis can attach it. The delta itself does not become a\r\n // standalone BrainEvent (it would be noise in the chat stream);\r\n // consumers wanting real-time token counts hook the message_end\r\n // and read `event.usage`.\r\n usageRef.value = delta.usage;\r\n }\r\n }\r\n } catch (err) {\r\n const errorMessage = err instanceof Error ? err.message : String(err);\r\n const errEvent = createBrainEvent('error', this.sessionId, {\r\n severity: 'recoverable',\r\n message: errorMessage,\r\n });\r\n this.emit(errEvent);\r\n yield errEvent;\r\n }\r\n }\r\n\r\n private emit(event: BrainEvent): void {\r\n if (this.eventBus) {\r\n try {\r\n this.eventBus.emit(event);\r\n } catch (err) {\r\n console.error('[AgentHarness] eventBus.emit failed:', err);\r\n }\r\n }\r\n }\r\n}\r\n", "/**\r\n * sessionJsonl \u2014 append-only JSONL sidecar writer for a single agent session.\r\n *\r\n * Every {@link BrainEvent} is appended as one JSON object per line so the raw\r\n * session transcript can be inspected with `cat`, `jq`, or any text editor.\r\n * Each session gets its own file under `<baseDir>/<sessionId>.jsonl`.\r\n *\r\n * Pure `node:fs` \u2014 zero Electron deps, so this module is browser-importable\r\n * for jsdom tests. The main-process caller passes `<userData>/sessions` as\r\n * `baseDir`; tests pass a temp dir.\r\n *\r\n * @see docs/plans/2026-06-28-zelari-code.md (Task 12.3)\r\n */\r\n\r\nimport { promises as fs } from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport type { BrainEvent } from '../../shared/events.js';\r\n\r\nexport interface SessionJsonlOptions {\r\n /** Base directory for session files. Defaults to `<userData>/sessions/`\r\n * in main process; tests can pass a temp dir explicitly. */\r\n baseDir?: string;\r\n /** Optional logger callback (defaults to console.error). */\r\n onError?: (message: string) => void;\r\n}\r\n\r\n/**\r\n * Append-only JSONL writer for a single session.\r\n *\r\n * One JSON object per line, shape:\r\n * {\"ts\": <epoch-ms>, \"sessionId\": \"<uuid>\", \"event\": { ...BrainEvent }}\r\n *\r\n * The writer is line-buffered: every `append()` flushes synchronously\r\n * to ensure no events are lost on crash. Uses O_APPEND for atomicity.\r\n *\r\n * Malformed lines on read are skipped (with a warning) so the file is\r\n * always recoverable via `readSession()`.\r\n */\r\nexport class SessionJsonlWriter {\r\n private readonly filePath: string;\r\n private readonly onError: (msg: string) => void;\r\n\r\n constructor(sessionId: string, options: SessionJsonlOptions = {}) {\r\n const baseDir = options.baseDir ?? defaultBaseDir();\r\n this.filePath = path.join(baseDir, `${sessionId}.jsonl`);\r\n this.onError = options.onError ?? console.error;\r\n }\r\n\r\n /** Absolute path to the session JSONL file. */\r\n get path(): string {\r\n return this.filePath;\r\n }\r\n\r\n /** Append a BrainEvent as one JSON line. Creates the file + parent dirs if missing. */\r\n async append(event: BrainEvent): Promise<void> {\r\n try {\r\n await fs.mkdir(path.dirname(this.filePath), { recursive: true });\r\n const line = JSON.stringify({\r\n ts: event.ts,\r\n sessionId: event.sessionId,\r\n event,\r\n }) + '\\n';\r\n await fs.appendFile(this.filePath, line, { encoding: 'utf-8', mode: 0o644 });\r\n } catch (err) {\r\n this.onError(`[sessionJsonl] failed to append event to ${this.filePath}: ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n }\r\n\r\n /** Close the writer (no-op currently, but reserved for future buffered mode). */\r\n async close(): Promise<void> {\r\n // No buffered state to flush yet.\r\n }\r\n}\r\n\r\n/**\r\n * Read all events from a session JSONL file. Malformed lines are skipped.\r\n * Returns an empty array if the file does not exist.\r\n */\r\nexport async function readSession(filePath: string): Promise<BrainEvent[]> {\r\n try {\r\n const content = await fs.readFile(filePath, 'utf-8');\r\n const events: BrainEvent[] = [];\r\n for (const line of content.split('\\n')) {\r\n const trimmed = line.trim();\r\n if (!trimmed) continue;\r\n try {\r\n const parsed = JSON.parse(trimmed) as { event: BrainEvent };\r\n if (parsed && typeof parsed === 'object' && 'event' in parsed) {\r\n events.push(parsed.event);\r\n }\r\n } catch {\r\n // Skip malformed lines silently.\r\n }\r\n }\r\n return events;\r\n } catch (err) {\r\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return [];\r\n throw err;\r\n }\r\n}\r\n\r\n/** Default base directory: `<userData>/sessions/` (resolved at runtime via electron.app).\r\n * In test environments, override via `new SessionJsonlWriter(id, { baseDir: '/tmp/test' })`. */\r\nfunction defaultBaseDir(): string {\r\n // We can't import 'electron' here (this module is browser-importable for tests).\r\n // The caller must pass baseDir explicitly OR we use a sensible fallback.\r\n // In main process, the AgentHarness caller will pass `<userData>/sessions`.\r\n return path.join(os.tmpdir(), 'zelari-code', 'sessions');\r\n}\r\n", "/**\r\n * OpenAI-compatible HTTP provider.\r\n * Works against any chat-completions endpoint that follows OpenAI's\r\n * streaming protocol: minimax, glm, grok, custom.\r\n *\r\n * Reads API key from the active provider (env first, then keyStore).\r\n * Resolves baseUrl via `PROVIDER_ENDPOINTS` (providerId \u2192 baseUrl).\r\n * Resolves model via `providerConfig.getModelForProvider(id)`.\r\n *\r\n * Active provider resolution: `ANATHEMA_ACTIVE_PROVIDER` env first, then\r\n * the on-disk providerConfig.json (Phase 15), default `openai-compatible`.\r\n *\r\n * Implements ProviderStreamFn (AsyncIterable<ProviderDelta>).\r\n */\r\n\r\nimport type { ProviderStreamFn, ProviderDelta } from '../../main/core/AgentHarness.js';\r\nimport type { ProviderName } from '../keyStore.js';\r\nimport { resolveApiKeyWithMeta } from '../keyStore.js';\r\nimport { getProviderConfig, getModelForProvider, getCustomEndpoint } from '../providerConfig.js';\r\n\r\nexport interface OpenAICompatibleConfig {\r\n apiKey: string;\r\n baseUrl: string; // e.g. 'https://api.x.ai/v1'\r\n model: string; // e.g. 'grok-4'\r\n signal?: AbortSignal;\r\n providerId: ProviderName;\r\n}\r\n\r\n/**\r\n * Default endpoints for each provider. `openai-compatible` defaults to\r\n * api.x.ai (backward compatibility); `custom` is empty and must be set\r\n * via OPENAI_BASE_URL.\r\n */\r\nexport const PROVIDER_ENDPOINTS: Record<ProviderName, string> = {\r\n 'openai-compatible': 'https://api.x.ai/v1',\r\n 'minimax': 'https://api.MiniMax.chat/v1',\r\n 'glm': 'https://api.z.ai/v1',\r\n 'grok': 'https://api.x.ai/v1',\r\n 'custom': '',\r\n};\r\n\r\n/** Resolve the active provider id (env override > on-disk config > default). */\r\nexport function resolveActiveProvider(): ProviderName {\r\n return getProviderConfig().activeProviderId;\r\n}\r\n\r\n/**\r\n * Resolve baseUrl for a given provider. Priority:\r\n * 1. Custom endpoint persisted via `/provider custom <url>` (wins always)\r\n * 2. OPENAI_BASE_URL env override (for openai-compatible / custom)\r\n * 3. PROVIDER_ENDPOINTS default for that provider\r\n */\r\nexport function resolveBaseUrl(providerId: ProviderName): string {\r\n const custom = getCustomEndpoint(providerId);\r\n if (custom) return custom;\r\n if (providerId === 'openai-compatible' || providerId === 'custom') {\r\n return process.env.OPENAI_BASE_URL ?? PROVIDER_ENDPOINTS[providerId];\r\n }\r\n return PROVIDER_ENDPOINTS[providerId];\r\n}\r\n\r\nexport function openaiCompatibleProvider(config: OpenAICompatibleConfig): ProviderStreamFn {\r\n return async function* (params): AsyncIterable<ProviderDelta> {\r\n const body = {\r\n model: config.model,\r\n messages: params.messages\r\n .filter((m) => m.role !== 'tool') // skip tool messages for simplicity\r\n .map((m) => ({ role: m.role, content: m.content })),\r\n stream: true,\r\n temperature: 0.7,\r\n // Task G.4.2 \u2014 request the provider to send real token usage in\r\n // the final chunk (gated by `stream_options.include_usage` on the\r\n // OpenAI-compatible API). Providers that don't honor this (some\r\n // self-hosted gateways) will simply not send a `usage` chunk, and\r\n // the harness will fall back to the ~4-char/token approximation.\r\n stream_options: { include_usage: true },\r\n };\r\n\r\n let response: Response;\r\n try {\r\n response = await fetch(`${config.baseUrl}/chat/completions`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${config.apiKey}`,\r\n },\r\n body: JSON.stringify(body),\r\n signal: config.signal,\r\n });\r\n } catch (err) {\r\n yield { kind: 'error', message: `Network error: ${err instanceof Error ? err.message : String(err)}` };\r\n return;\r\n }\r\n\r\n if (!response.ok || !response.body) {\r\n const errText = await response.text().catch(() => '');\r\n yield { kind: 'error', message: `HTTP ${response.status}: ${errText.slice(0, 200)}` };\r\n return;\r\n }\r\n\r\n const reader = response.body.getReader();\r\n const decoder = new TextDecoder();\r\n let buffer = '';\r\n // Accumulator for OpenAI tool_calls streaming (Task A1).\r\n // Args JSON is delivered incrementally; we emit a `tool_call` delta\r\n // when the accumulated args for a given index parse to a complete\r\n // JSON object.\r\n const toolCallAccumulator = new Map<\r\n number,\r\n { id: string; name: string; argsJson: string }\r\n >();\r\n\r\n try {\r\n while (true) {\r\n const { value, done } = await reader.read();\r\n if (done) break;\r\n buffer += decoder.decode(value, { stream: true });\r\n\r\n // SSE format: lines starting with \"data: \"\r\n const lines = buffer.split('\\n');\r\n buffer = lines.pop() ?? ''; // keep the incomplete line in buffer\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (!trimmed.startsWith('data:')) continue;\r\n const data = trimmed.slice(5).trim();\r\n if (data === '[DONE]') {\r\n yield { kind: 'finish', reason: 'stop' };\r\n return;\r\n }\r\n try {\r\n const parsed = JSON.parse(data) as {\r\n choices?: Array<{\r\n delta?: {\r\n content?: string;\r\n tool_calls?: Array<{\r\n index?: number;\r\n id?: string;\r\n type?: string;\r\n function?: { name?: string; arguments?: string };\r\n }>;\r\n };\r\n finish_reason?: string | null;\r\n }>;\r\n // Task G.4.2 \u2014 OpenAI-shaped usage payload, delivered by\r\n // providers that honor `stream_options.include_usage`.\r\n // Sits at the chunk root, not under `choices`. Typically\r\n // arrives once, in the chunk right before `[DONE]`.\r\n usage?: {\r\n prompt_tokens?: number;\r\n completion_tokens?: number;\r\n total_tokens?: number;\r\n };\r\n };\r\n const choice = parsed.choices?.[0];\r\n const delta = choice?.delta;\r\n // Task G.4.2 \u2014 emit a `usage` delta whenever the provider\r\n // includes a usage payload on the chunk. We don't gate on\r\n // `choice.finish_reason` because some providers (xAI) send\r\n // the usage on a chunk whose choices array is empty.\r\n if (parsed.usage && typeof parsed.usage === 'object') {\r\n const promptTokens =\r\n typeof parsed.usage.prompt_tokens === 'number'\r\n ? parsed.usage.prompt_tokens\r\n : 0;\r\n const completionTokens =\r\n typeof parsed.usage.completion_tokens === 'number'\r\n ? parsed.usage.completion_tokens\r\n : 0;\r\n const totalTokens =\r\n typeof parsed.usage.total_tokens === 'number'\r\n ? parsed.usage.total_tokens\r\n : promptTokens + completionTokens;\r\n yield {\r\n kind: 'usage',\r\n usage: { promptTokens, completionTokens, totalTokens },\r\n };\r\n }\r\n if (typeof delta?.content === 'string' && delta.content.length > 0) {\r\n yield { kind: 'text', delta: delta.content };\r\n }\r\n // OpenAI tool_calls are streamed incrementally \u2014 accumulate args\r\n // per index and emit a tool_call delta when the args JSON closes.\r\n if (Array.isArray(delta?.tool_calls)) {\r\n for (const tc of delta.tool_calls) {\r\n const idx = tc.index ?? 0;\r\n const existing = toolCallAccumulator.get(idx) ?? {\r\n id: tc.id ?? '',\r\n name: tc.function?.name ?? '',\r\n argsJson: '',\r\n };\r\n if (tc.id) existing.id = tc.id;\r\n if (tc.function?.name) existing.name = tc.function.name;\r\n if (tc.function?.arguments) existing.argsJson += tc.function.arguments;\r\n toolCallAccumulator.set(idx, existing);\r\n // Heuristic: when argsJson parses as a complete JSON object, emit.\r\n if (existing.argsJson.trim().endsWith('}')) {\r\n try {\r\n const parsedArgs = JSON.parse(existing.argsJson);\r\n toolCallAccumulator.delete(idx);\r\n yield {\r\n kind: 'tool_call',\r\n toolCallId: existing.id || `tc-${idx}`,\r\n toolName: existing.name,\r\n args: parsedArgs,\r\n };\r\n } catch {\r\n // JSON not closed yet \u2014 keep accumulating.\r\n }\r\n }\r\n }\r\n }\r\n } catch {\r\n // Skip malformed lines\r\n }\r\n }\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Helper: read env + keyStore + providerConfig and return a configured\r\n * provider for the currently-active provider. Returns null if the API key\r\n * is missing (CLI will show a friendly error).\r\n *\r\n * Resolution order:\r\n * 1. ANATHEMA_ACTIVE_PROVIDER env (overrides everything)\r\n * 2. providerConfig.activeProviderId (Phase 15 persistent state)\r\n * 3. Default: 'openai-compatible'\r\n *\r\n * API key resolution (per providerId):\r\n * 1. {PROVIDER_UPPER}_API_KEY env (e.g. GROK_API_KEY)\r\n * 2. keyStore stored key (OAuth-aware via resolveApiKeyWithMeta)\r\n * \u2014 this triggers auto-refresh when the token is near expiry (Task D.3.2)\r\n *\r\n * Base URL resolution (per providerId):\r\n * - 'openai-compatible' / 'custom': OPENAI_BASE_URL env or default to api.x.ai\r\n * - others: hardcoded PROVIDER_ENDPOINTS entry\r\n *\r\n * Model resolution:\r\n * - OPENAI_MODEL env override (always wins)\r\n * - providerConfig.modelByProvider[providerId]\r\n */\r\nexport async function providerFromEnv(): Promise<OpenAICompatibleConfig | null> {\r\n const providerId = resolveActiveProvider();\r\n const apiKey = await resolveApiKeyWithMeta(providerId);\r\n if (!apiKey) return null;\r\n return {\r\n apiKey: apiKey.apiKey,\r\n baseUrl: resolveBaseUrl(providerId),\r\n model: getModelForProvider(providerId),\r\n providerId,\r\n };\r\n}\r\n\r\n/**\r\n * Resolve a provider config explicitly for a given provider id. Useful\r\n * when the caller needs to switch providers at runtime (e.g. `/provider <name>`).\r\n *\r\n * Returns null if the API key for that provider is missing.\r\n */\r\nexport async function providerConfigFor(providerId: ProviderName): Promise<OpenAICompatibleConfig | null> {\r\n const apiKey = await resolveApiKeyWithMeta(providerId);\r\n if (!apiKey) return null;\r\n return {\r\n apiKey: apiKey.apiKey,\r\n baseUrl: resolveBaseUrl(providerId),\r\n model: getModelForProvider(providerId),\r\n providerId,\r\n };\r\n}\r\n", "/**\r\n * providerConfig \u2014 CLI provider runtime configuration.\r\n *\r\n * Persists the active provider id + per-provider default models to a JSON\r\n * file in the user's home directory. Complements `keyStore` (which stores\r\n * API keys) with the *routing* state: which provider the CLI should use\r\n * next, and which model to use for each one.\r\n *\r\n * Storage layout (alongside keyStore):\r\n * ~/.tmp/anathema-coder/\r\n * keys.json \u2190 keyStore (Task 14.9)\r\n * provider.json \u2190 this file (Task 15.1)\r\n * sessions/<id>.jsonl\r\n * branches/<name>/\r\n *\r\n * Pure node:fs \u2014 no Electron deps, browser-importable for jsdom tests.\r\n * Env override: `ANATHEMA_PROVIDER_CONFIG_FILE` (useful for tests + CI).\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v2.md (Task 15.1)\r\n */\r\n\r\nimport { promises as fs, existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { PROVIDERS, type ProviderName, type ProviderSpec } from './keyStore.js';\r\n\r\n/** Persisted provider config (the on-disk shape). */\r\nexport interface ProviderConfig {\r\n /** Currently active provider id (must be one of PROVIDERS). */\r\n activeProviderId: ProviderName;\r\n /** Per-provider default model. Always contains an entry for every provider. */\r\n modelByProvider: Record<ProviderName, string>;\r\n /**\r\n * Custom base URLs keyed by provider id (Task A3, v3-A).\r\n * Lets users point `openai-compatible` or `custom` at any self-hosted\r\n * endpoint (Ollama, LM Studio, vLLM, etc.) without code changes.\r\n * Empty string = use built-in default for that provider.\r\n */\r\n customEndpoints: Partial<Record<ProviderName, string>>;\r\n}\r\n\r\nconst DEFAULTS: ProviderConfig = {\r\n activeProviderId: 'openai-compatible',\r\n modelByProvider: {\r\n 'openai-compatible': 'grok-4',\r\n 'minimax': 'MiniMax-M2.5',\r\n 'glm': 'glm-4.6',\r\n 'grok': 'grok-4',\r\n 'custom': '',\r\n },\r\n customEndpoints: {},\r\n};\r\n\r\nexport function getProviderConfigPath(): string {\r\n return process.env.ANATHEMA_PROVIDER_CONFIG_FILE\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'provider.json');\r\n}\r\n\r\n/** Return the resolved ProviderConfig (env override > on-disk > defaults). */\r\nexport function getProviderConfig(): ProviderConfig {\r\n // Env override for active provider (used by tests + CI).\r\n const envActive = process.env.ANATHEMA_ACTIVE_PROVIDER;\r\n const envModel = process.env.OPENAI_MODEL;\r\n const file = getProviderConfigPath();\r\n let stored: ProviderConfig | null = null;\r\n if (existsSync(file)) {\r\n try {\r\n const raw = readFileSync(file, 'utf-8');\r\n const parsed = JSON.parse(raw) as Partial<ProviderConfig>;\r\n if (parsed && typeof parsed === 'object' && typeof parsed.activeProviderId === 'string'\r\n && parsed.modelByProvider && typeof parsed.modelByProvider === 'object') {\r\n stored = {\r\n activeProviderId: parsed.activeProviderId as ProviderName,\r\n modelByProvider: { ...DEFAULTS.modelByProvider, ...parsed.modelByProvider },\r\n customEndpoints: mergeCustomEndpoints(parsed.customEndpoints),\r\n };\r\n }\r\n } catch {\r\n // Corrupt file \u2014 fall through to defaults.\r\n }\r\n }\r\n const base: ProviderConfig = stored ?? {\r\n ...DEFAULTS,\r\n modelByProvider: { ...DEFAULTS.modelByProvider },\r\n customEndpoints: { ...DEFAULTS.customEndpoints },\r\n };\r\n // Apply env overrides last so they always win.\r\n if (envActive && PROVIDERS.some((p) => p.id === envActive)) {\r\n base.activeProviderId = envActive as ProviderName;\r\n }\r\n if (envModel && envModel.trim().length > 0) {\r\n base.modelByProvider[base.activeProviderId] = envModel;\r\n }\r\n return base;\r\n}\r\n\r\nfunction writeProviderConfig(config: ProviderConfig): void {\r\n const file = getProviderConfigPath();\r\n mkdirSync(path.dirname(file), { recursive: true });\r\n writeFileSync(file, JSON.stringify(config, null, 2), { encoding: 'utf-8', mode: 0o600 });\r\n}\r\n\r\n/**\r\n * Sanitize a parsed `customEndpoints` blob into a clean\r\n * `Partial<Record<ProviderName, string>>`. Drops non-string values,\r\n * non-ProviderName keys, and empty / whitespace-only URLs.\r\n */\r\nfunction mergeCustomEndpoints(\r\n raw: Partial<Record<ProviderName, string>> | undefined,\r\n): Partial<Record<ProviderName, string>> {\r\n if (!raw || typeof raw !== 'object') return {};\r\n const result: Partial<Record<ProviderName, string>> = {};\r\n const validIds = new Set<string>(PROVIDERS.map((p) => p.id));\r\n for (const [key, value] of Object.entries(raw)) {\r\n if (!validIds.has(key)) continue;\r\n if (typeof value !== 'string') continue;\r\n const trimmed = value.trim();\r\n if (trimmed.length === 0) continue;\r\n result[key as ProviderName] = trimmed;\r\n }\r\n return result;\r\n}\r\n\r\n/** Return the resolved custom endpoint for a provider, or undefined. */\r\nexport function getCustomEndpoint(id: ProviderName): string | undefined {\r\n return getProviderConfig().customEndpoints[id];\r\n}\r\n\r\n/**\r\n * Save a custom base URL for a provider. Validates the URL is parseable.\r\n * Empty string is rejected \u2014 use `clearCustomEndpoint()` to remove.\r\n */\r\nexport function setCustomEndpoint(id: ProviderName, url: string): void {\r\n const spec: ProviderSpec | undefined = PROVIDERS.find((p) => p.id === id);\r\n if (!spec) {\r\n throw new Error(`Unknown provider id: \"${id}\". Available: ${PROVIDERS.map((p) => p.id).join(', ')}`);\r\n }\r\n const trimmed = url.trim();\r\n if (trimmed.length === 0) {\r\n throw new Error('Custom endpoint URL cannot be empty. Use clearCustomEndpoint() to remove.');\r\n }\r\n try {\r\n // eslint-disable-next-line no-new\r\n new URL(trimmed);\r\n } catch {\r\n throw new Error(`Invalid custom endpoint URL: \"${url}\"`);\r\n }\r\n const config = getProviderConfig();\r\n config.customEndpoints[id] = trimmed;\r\n writeProviderConfig(config);\r\n}\r\n\r\n/** Remove the custom base URL override for a provider (falls back to default). */\r\nexport function clearCustomEndpoint(id: ProviderName): void {\r\n const spec: ProviderSpec | undefined = PROVIDERS.find((p) => p.id === id);\r\n if (!spec) {\r\n throw new Error(`Unknown provider id: \"${id}\". Available: ${PROVIDERS.map((p) => p.id).join(', ')}`);\r\n }\r\n const config = getProviderConfig();\r\n if (!(id in config.customEndpoints)) return; // no-op\r\n delete config.customEndpoints[id];\r\n writeProviderConfig(config);\r\n}\r\n\r\nexport function setActiveProviderId(id: ProviderName): void {\r\n const spec: ProviderSpec | undefined = PROVIDERS.find((p) => p.id === id);\r\n if (!spec) {\r\n throw new Error(`Unknown provider id: \"${id}\". Available: ${PROVIDERS.map((p) => p.id).join(', ')}`);\r\n }\r\n const config = getProviderConfig();\r\n config.activeProviderId = id;\r\n // Ensure the model entry exists for the new provider.\r\n if (!config.modelByProvider[id]) {\r\n config.modelByProvider[id] = DEFAULTS.modelByProvider[id];\r\n }\r\n writeProviderConfig(config);\r\n}\r\n\r\nexport function setModelForProvider(id: ProviderName, model: string): void {\r\n const spec: ProviderSpec | undefined = PROVIDERS.find((p) => p.id === id);\r\n if (!spec) {\r\n throw new Error(`Unknown provider id: \"${id}\". Available: ${PROVIDERS.map((p) => p.id).join(', ')}`);\r\n }\r\n if (!model || model.trim().length === 0) {\r\n throw new Error('Model name cannot be empty.');\r\n }\r\n const config = getProviderConfig();\r\n config.modelByProvider[id] = model.trim();\r\n writeProviderConfig(config);\r\n}\r\n\r\nexport function getModelForProvider(id: ProviderName): string {\r\n const config = getProviderConfig();\r\n return config.modelByProvider[id] ?? DEFAULTS.modelByProvider[id] ?? '';\r\n}\r\n\r\nexport function getActiveProvider(): ProviderSpec {\r\n const config = getProviderConfig();\r\n const spec = PROVIDERS.find((p) => p.id === config.activeProviderId);\r\n // activeProviderId is validated at write time, so spec is always defined.\r\n if (!spec) throw new Error(`Invalid active provider id in config: ${config.activeProviderId}`);\r\n return spec;\r\n}\r\n\r\nexport function getActiveModel(): string {\r\n const config = getProviderConfig();\r\n return config.modelByProvider[config.activeProviderId] ?? DEFAULTS.modelByProvider[config.activeProviderId] ?? '';\r\n}\r\n\r\n/** Async variant of getProviderConfig (used by tests + CLI startup). */\r\nexport async function loadProviderConfig(): Promise<ProviderConfig> {\r\n const file = getProviderConfigPath();\r\n try {\r\n const raw = await fs.readFile(file, 'utf-8');\r\n const parsed = JSON.parse(raw) as Partial<ProviderConfig>;\r\n if (parsed && typeof parsed === 'object' && typeof parsed.activeProviderId === 'string'\r\n && parsed.modelByProvider && typeof parsed.modelByProvider === 'object') {\r\n return {\r\n activeProviderId: parsed.activeProviderId as ProviderName,\r\n modelByProvider: { ...DEFAULTS.modelByProvider, ...parsed.modelByProvider },\r\n customEndpoints: mergeCustomEndpoints(parsed.customEndpoints),\r\n };\r\n }\r\n } catch {\r\n // ENOENT or JSON parse failure \u2014 fall back.\r\n }\r\n return {\r\n ...DEFAULTS,\r\n modelByProvider: { ...DEFAULTS.modelByProvider },\r\n customEndpoints: { ...DEFAULTS.customEndpoints },\r\n };\r\n}", "/**\r\n * providerFailover \u2014 wraps two OpenAI-compatible providers so the second\r\n * is tried when the first yields transient errors (Task B.4).\r\n *\r\n * Behavior:\r\n * - Stream events from `primary` first\r\n * - On the FIRST transient failure (network error OR HTTP 5xx),\r\n * close the primary stream and switch to `fallback`\r\n * - On a 4xx error (auth, bad request) do NOT failover \u2014 surface the\r\n * error to the caller; these are programming/auth issues that won't\r\n * be fixed by retrying against a different provider\r\n * - On a normal `finish` event, the fallback is NEVER tried\r\n *\r\n * \"First failure\" means we DON'T keep retrying the primary. If you want\r\n * N retries, write your own retry loop outside.\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3-B.md\r\n */\r\n\r\nimport type { ProviderDelta, ProviderStreamFn } from '../main/core/AgentHarness.js';\r\n\r\nexport interface FailoverOptions {\r\n /** Primary provider \u2014 tried first. */\r\n primary: ProviderStreamFn;\r\n /** Fallback provider \u2014 tried when primary fails transiently. */\r\n fallback: ProviderStreamFn;\r\n /**\r\n * Predicate: given a `ProviderDelta`, decide if it's a transient failure\r\n * worth triggering failover. Default: any `error` event.\r\n * Override to customize (e.g. also trigger on certain `finish` reasons).\r\n */\r\n isTransientFailure?: (delta: ProviderDelta) => boolean;\r\n /**\r\n * Optional human-readable label for the fallback provider, surfaced in the\r\n * `[failover]` error messages (Task J.1, v3-J). Useful for cross-provider\r\n * failover so the user can see which provider the system switched to\r\n * (e.g. `grok \u2192 glm`). When omitted, messages are unchanged from v3-G.\r\n */\r\n fallbackLabel?: string;\r\n}\r\n\r\nconst DEFAULT_IS_TRANSIENT = (delta: ProviderDelta): boolean => delta.kind === 'error';\r\n\r\n/**\r\n * Wraps two ProviderStreamFn instances with first-failure failover.\r\n * Returns a new ProviderStreamFn \u2014 pass this to AgentHarness.\r\n */\r\nexport function providerFailover(options: FailoverOptions): ProviderStreamFn {\r\n const isTransient = options.isTransientFailure ?? DEFAULT_IS_TRANSIENT;\r\n // Task J.1 (v3-J) \u2014 when a label is provided, the [failover] messages\r\n // include it so the user can see which provider the system switched to.\r\n // When absent, messages are byte-identical to v3-G (backward-compat).\r\n const primaryFailedMsg = options.fallbackLabel\r\n ? `[failover] primary failed, switching to ${options.fallbackLabel}`\r\n : '[failover] primary failed, switching to fallback';\r\n const primaryThrewMsg = options.fallbackLabel\r\n ? `[failover] primary threw, switching to ${options.fallbackLabel}: `\r\n : '[failover] primary threw: ';\r\n const fallbackFailedMsg = options.fallbackLabel\r\n ? `[failover] fallback (${options.fallbackLabel}) also failed: `\r\n : '[failover] fallback also failed: ';\r\n return async function* (params) {\r\n const triedFallback = { value: false };\r\n try {\r\n for await (const delta of options.primary(params)) {\r\n if (isTransient(delta)) {\r\n // Forward the original error to the caller so they see what\r\n // happened, then announce the failover and bail out.\r\n yield delta;\r\n triedFallback.value = true;\r\n yield {\r\n kind: 'error',\r\n message: primaryFailedMsg,\r\n };\r\n break;\r\n }\r\n yield delta;\r\n }\r\n } catch (err) {\r\n // Network-level throw (fetch rejection, etc.) \u2192 also failover.\r\n triedFallback.value = true;\r\n yield {\r\n kind: 'error',\r\n message: `${primaryThrewMsg}${err instanceof Error ? err.message : String(err)}`,\r\n };\r\n }\r\n if (triedFallback.value) {\r\n try {\r\n for await (const delta of options.fallback(params)) {\r\n yield delta;\r\n }\r\n } catch (err) {\r\n yield {\r\n kind: 'error',\r\n message: `${fallbackFailedMsg}${err instanceof Error ? err.message : String(err)}`,\r\n };\r\n return;\r\n }\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Convenience: filter a ProviderStreamFn's deltas to check what kinds it\r\n * emits. Useful for tests / debugging.\r\n */\r\nexport async function collectDeltas(\r\n fn: ProviderStreamFn,\r\n params: Parameters<ProviderStreamFn>[0],\r\n): Promise<ProviderDelta[]> {\r\n const out: ProviderDelta[] = [];\r\n for await (const d of fn(params)) out.push(d);\r\n return out;\r\n}", "/**\r\n * crossProviderFailover \u2014 pure helpers for resolving the failover fallback\r\n * stream based on the `ANATHEMA_FAILOVER_PROVIDER` env var (Task J.2, v3-J).\r\n *\r\n * Extracted from `app.tsx` `dispatchPrompt` so the resolution logic is\r\n * testable without booting React/Ink. The wire site (`app.tsx`) calls\r\n * `resolveFailoverStream(...)` once per prompt and passes the resulting\r\n * stream + label to `providerFailover(...)`.\r\n *\r\n * Design:\r\n * - All configuration flows in via a single `ResolveOptions` object.\r\n * - The async `lookupFallbackConfig(id)` dependency is injected so tests\r\n * can pass a stub without touching the real keyStore/providerConfig.\r\n * - When `ANATHEMA_FAILOVER=0`, the helper returns `primary` untouched\r\n * (master kill-switch from v3-G).\r\n * - When the env var is unset / empty / unknown / missing key / same as\r\n * primary, the helper returns `primary` as the fallback (v3-G\r\n * behavior) and surfaces the reason via the returned `warning`.\r\n * - When the env var resolves to a usable second provider, the helper\r\n * returns the second stream with a label.\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3-J.md\r\n */\r\n\r\nimport type { ProviderStreamFn } from '../main/core/AgentHarness.js';\r\n\r\nexport interface ResolveOptions {\r\n /** Master kill-switch (v3-G). When false, return primary unchanged. */\r\n failoverEnabled: boolean;\r\n /** Raw value of `ANATHEMA_FAILOVER_PROVIDER` (may be undefined or empty). */\r\n envValue: string | undefined;\r\n /** Provider id of the primary stream (for \"same as primary\" detection). */\r\n primaryProviderId: string;\r\n /** Primary stream (also returned as fallback for v3-G behavior). */\r\n primary: ProviderStreamFn;\r\n /** All known provider ids (typically `PROVIDERS.map(p => p.id)`). */\r\n validProviderIds: readonly string[];\r\n /**\r\n * Async lookup for the requested fallback provider's `OpenAICompatibleConfig`.\r\n * Returns null when no API key is configured (mirrors `providerConfigFor`\r\n * in `openai-compatible.ts`). The factory passed to this function does\r\n * NOT need to build the stream \u2014 only resolve the config.\r\n */\r\n lookupFallbackConfig: (providerId: string) => Promise<unknown>;\r\n /** Builds a `ProviderStreamFn` for a given provider config. */\r\n buildStream: (config: unknown) => ProviderStreamFn;\r\n}\r\n\r\nexport interface ResolveResult {\r\n /** Stream to use as the fallback (always the primary for v3-G paths). */\r\n fallback: ProviderStreamFn;\r\n /**\r\n * Label to surface in [failover] messages. When undefined, providerFailover\r\n * uses its v3-G messages (byte-identical backward-compat).\r\n */\r\n fallbackLabel: string | undefined;\r\n /**\r\n * Human-readable warning surfaced to the user (e.g. unknown provider id).\r\n * Empty string means no warning.\r\n */\r\n warning: string;\r\n /**\r\n * Diagnostic reason for the resolution outcome. Useful for tests.\r\n * One of: 'disabled' | 'unset' | 'unknown' | 'same-as-primary'\r\n * | 'missing-key' | 'resolved'.\r\n */\r\n reason:\r\n | 'disabled'\r\n | 'unset'\r\n | 'unknown'\r\n | 'same-as-primary'\r\n | 'missing-key'\r\n | 'resolved';\r\n}\r\n\r\n/**\r\n * Pure resolver for the failover fallback stream. Side-effect free: takes\r\n * everything via `options`, returns a `ResolveResult`. Tests can stub the\r\n * `lookupFallbackConfig` and `buildStream` functions to simulate any\r\n * provider configuration without booting the full CLI.\r\n */\r\nexport async function resolveFailoverStream(\r\n options: ResolveOptions,\r\n): Promise<ResolveResult> {\r\n if (!options.failoverEnabled) {\r\n return {\r\n fallback: options.primary,\r\n fallbackLabel: undefined,\r\n warning: '',\r\n reason: 'disabled',\r\n };\r\n }\r\n const requested = options.envValue?.trim();\r\n if (!requested || requested.length === 0) {\r\n return {\r\n fallback: options.primary,\r\n fallbackLabel: undefined,\r\n warning: '',\r\n reason: 'unset',\r\n };\r\n }\r\n const valid = new Set<string>(options.validProviderIds);\r\n if (!valid.has(requested)) {\r\n return {\r\n fallback: options.primary,\r\n fallbackLabel: undefined,\r\n warning:\r\n `[failover] ANATHEMA_FAILOVER_PROVIDER=\"${requested}\" is not a known provider. ` +\r\n `Falling back to v3-G same-provider behavior. Available: ${options.validProviderIds.join(', ')}.`,\r\n reason: 'unknown',\r\n };\r\n }\r\n if (requested === options.primaryProviderId) {\r\n return {\r\n fallback: options.primary,\r\n fallbackLabel: undefined,\r\n warning: '',\r\n reason: 'same-as-primary',\r\n };\r\n }\r\n const fallbackConfig = await options.lookupFallbackConfig(requested);\r\n if (!fallbackConfig) {\r\n return {\r\n fallback: options.primary,\r\n fallbackLabel: undefined,\r\n warning:\r\n `[failover] No API key configured for provider \"${requested}\". ` +\r\n `Falling back to v3-G same-provider behavior.`,\r\n reason: 'missing-key',\r\n };\r\n }\r\n return {\r\n fallback: options.buildStream(fallbackConfig),\r\n fallbackLabel: requested,\r\n warning: '',\r\n reason: 'resolved',\r\n };\r\n}\r\n", "/**\r\n * sessionManager \u2014 CLI session lifecycle helpers.\r\n *\r\n * Wraps the JSONL sidecar writer (`electron/main/core/sessionJsonl.ts`) with\r\n * filesystem helpers for the CLI:\r\n *\r\n * - resolve base directory (`~/.tmp/anathema-coder/sessions/`, overridable\r\n * via `ANATHEMA_SESSIONS_DIR`)\r\n * - track the \"current\" session via a small text file (`current.txt`,\r\n * overridable via `ANATHEMA_CURRENT_SESSION_FILE`)\r\n * - list past sessions sorted by mtime desc\r\n * - load a session's events from JSONL\r\n *\r\n * Pure node:fs \u2014 no Electron deps, browser-importable for jsdom tests.\r\n *\r\n * @see docs/plans/2026-06-28-zelari-code.md (Task 14.10)\r\n */\r\n\r\nimport { promises as fs, existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync, statSync } from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { randomUUID } from 'node:crypto';\r\nimport type { BrainEvent } from '../shared/events.js';\r\nimport { readSession } from '../main/core/sessionJsonl.js';\r\n\r\nexport interface SessionInfo {\r\n /** Session UUID. */\r\n id: string;\r\n /** Number of events in the JSONL file. */\r\n eventCount: number;\r\n /** First event timestamp (epoch ms), or 0 if empty. */\r\n firstTs: number;\r\n /** Last event timestamp (epoch ms), or 0 if empty. */\r\n lastTs: number;\r\n /** File modification time (epoch ms). */\r\n mtimeMs: number;\r\n /** Absolute path to the session JSONL file. */\r\n filePath: string;\r\n}\r\n\r\n/** Resolve the base directory where session JSONL files live. */\r\nexport function getSessionBaseDir(): string {\r\n return process.env.ANATHEMA_SESSIONS_DIR\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'sessions');\r\n}\r\n\r\n/** Resolve the file used to track the current session id. */\r\nexport function getCurrentSessionFile(): string {\r\n return process.env.ANATHEMA_CURRENT_SESSION_FILE\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'current.txt');\r\n}\r\n\r\n/** Ensure the base directory exists. Creates parent dirs as needed. */\r\nexport async function ensureSessionDir(): Promise<void> {\r\n await fs.mkdir(getSessionBaseDir(), { recursive: true });\r\n}\r\n\r\n/** Read the current session id from disk. Returns null if missing/empty. */\r\nexport function getCurrentSessionId(): string | null {\r\n const file = getCurrentSessionFile();\r\n if (!existsSync(file)) return null;\r\n try {\r\n const content = readFileSync(file, 'utf-8').trim();\r\n return content.length > 0 ? content : null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/** Write the current session id to disk. Creates parent dirs as needed. */\r\nexport function setCurrentSessionId(id: string): void {\r\n const file = getCurrentSessionFile();\r\n mkdirSync(path.dirname(file), { recursive: true });\r\n writeFileSync(file, id, 'utf-8');\r\n}\r\n\r\n/** Remove the current session marker (does not delete the JSONL file). */\r\nexport function clearCurrentSessionId(): void {\r\n const file = getCurrentSessionFile();\r\n try {\r\n unlinkSync(file);\r\n } catch (err) {\r\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') throw err;\r\n }\r\n}\r\n\r\n/** File used to track the currently active branch (Task 17.2). */\r\nexport function getCurrentBranchFile(): string {\r\n return process.env.ANATHEMA_CURRENT_BRANCH_FILE\r\n ?? path.join(path.dirname(getCurrentSessionFile()), 'currentBranch.txt');\r\n}\r\n\r\n/** Read the current branch name. Returns null if no branch is active. */\r\nexport function getCurrentBranch(): string | null {\r\n const file = getCurrentBranchFile();\r\n if (!existsSync(file)) return null;\r\n try {\r\n const content = readFileSync(file, 'utf-8').trim();\r\n return content.length > 0 ? content : null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/** Set the current branch name (used after `/checkout <name>`). */\r\nexport function setCurrentBranch(name: string): void {\r\n const file = getCurrentBranchFile();\r\n mkdirSync(path.dirname(file), { recursive: true });\r\n writeFileSync(file, name, 'utf-8');\r\n}\r\n\r\n/** Clear the current branch marker (used after `/branch <name>` on main). */\r\nexport function clearCurrentBranch(): void {\r\n const file = getCurrentBranchFile();\r\n try {\r\n unlinkSync(file);\r\n } catch (err) {\r\n if ((err as NodeJS.ErrnoException).code !== 'ENOENT') throw err;\r\n }\r\n}\r\n\r\n/** Generate a new session UUID. */\r\nexport function newSessionId(): string {\r\n return randomUUID();\r\n}\r\n\r\n/** List all sessions in the base directory, sorted by mtime desc. */\r\nexport async function listSessions(): Promise<SessionInfo[]> {\r\n const baseDir = getSessionBaseDir();\r\n let entries: string[];\r\n try {\r\n entries = await fs.readdir(baseDir);\r\n } catch (err) {\r\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return [];\r\n throw err;\r\n }\r\n const results: SessionInfo[] = [];\r\n for (const entry of entries) {\r\n if (!entry.endsWith('.jsonl')) continue;\r\n const id = entry.replace(/\\.jsonl$/, '');\r\n const filePath = path.join(baseDir, entry);\r\n try {\r\n const events = await readSession(filePath);\r\n let firstTs = 0;\r\n let lastTs = 0;\r\n for (const e of events) {\r\n if (firstTs === 0 || e.ts < firstTs) firstTs = e.ts;\r\n if (e.ts > lastTs) lastTs = e.ts;\r\n }\r\n const mtimeMs = statSync(filePath).mtimeMs;\r\n results.push({ id, eventCount: events.length, firstTs, lastTs, mtimeMs, filePath });\r\n } catch {\r\n // Skip unreadable sessions.\r\n }\r\n }\r\n results.sort((a, b) => b.mtimeMs - a.mtimeMs);\r\n return results;\r\n}\r\n\r\n/** Load all events from a session's JSONL file by id. */\r\nexport async function loadSessionEvents(id: string): Promise<BrainEvent[]> {\r\n const filePath = path.join(getSessionBaseDir(), `${id}.jsonl`);\r\n return readSession(filePath);\r\n}", "import type { EnhancedToolDefinition, ToolParameter } from '../types/systemTypes';\r\nimport type { KnowledgeDocument } from '../types';\r\n\r\n/** Helper to build a ToolParameter concisely. */\r\nfunction p(\r\n name: string,\r\n type: ToolParameter['type'],\r\n description: string,\r\n required: boolean,\r\n extra?: Partial<ToolParameter>\r\n): ToolParameter {\r\n return { name, type, description, required, ...extra };\r\n}\r\n\r\ntype KnowledgeFormat = 'markdown' | 'text' | 'json' | 'yaml' | 'html' | 'csv' | 'other';\r\n\r\n/**\r\n * Knowledge Vault tools.\r\n *\r\n * These tools operate on KnowledgeDocuments via the ToolContext callbacks\r\n * (which are wired to the Zustand store).\r\n */\r\nexport const VAULT_TOOL_DEFINITIONS: EnhancedToolDefinition[] = [\r\n {\r\n name: 'createDocument',\r\n description: 'Create a new markdown document in the Knowledge Vault.',\r\n category: 'vault',\r\n parameters: [\r\n p('path', 'string', 'Document path (e.g. \"notes/architecture\"). Must be unique.', true),\r\n p('title', 'string', 'Document title', true),\r\n p('content', 'string', 'Markdown content. Use [[wikilinks]] and #hashtags.', false, { default: '' }),\r\n p('tags', 'string[]', 'Tag list', false, { default: [] }),\r\n p('category', 'string', 'Document category', false),\r\n p('format', 'string', 'Document format', false, { default: 'markdown', enum: ['markdown', 'text', 'json', 'yaml', 'html', 'csv'] }),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.addDocument) return 'Vault not available in this context.';\r\n const doc = ctx.addDocument({\r\n path: (args['path'] as string) ?? '',\r\n title: (args['title'] as string) ?? 'Untitled',\r\n content: (args['content'] as string) ?? '',\r\n format: ((args['format'] as KnowledgeFormat) ?? 'markdown'),\r\n tags: (args['tags'] as string[]) ?? [],\r\n frontmatter: {},\r\n category: (args['category'] as string) ?? undefined,\r\n workspaceId: ctx.workspaceId,\r\n });\r\n ctx.addActivity('task', 'document created', doc.title);\r\n return `Document \"${doc.title}\" created at path \"${doc.path}\".`;\r\n },\r\n },\r\n {\r\n name: 'updateDocument',\r\n description: 'Update an existing Knowledge Vault document (by id).',\r\n category: 'vault',\r\n parameters: [\r\n p('id', 'string', 'Document id to update', true),\r\n p('content', 'string', 'New markdown content', false),\r\n p('title', 'string', 'New title', false),\r\n p('tags', 'string[]', 'New tag list (replaces existing)', false),\r\n p('category', 'string', 'New category', false),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.updateDocument) return 'Vault not available in this context.';\r\n const id = (args['id'] as string) ?? '';\r\n const updates: Partial<KnowledgeDocument> = {};\r\n if (args['content'] !== undefined) updates.content = args['content'] as string;\r\n if (args['title'] !== undefined) updates.title = args['title'] as string;\r\n if (args['tags'] !== undefined) updates.tags = args['tags'] as string[];\r\n if (args['category'] !== undefined) updates.category = args['category'] as string;\r\n ctx.updateDocument(id, updates);\r\n return `Document ${id} updated.`;\r\n },\r\n },\r\n {\r\n name: 'searchDocuments',\r\n description: 'Search Knowledge Vault documents by free-text query, tag, or category.',\r\n category: 'vault',\r\n parameters: [\r\n p('query', 'string', 'Free-text search query', false),\r\n p('tag', 'string', 'Filter by tag', false),\r\n p('category', 'string', 'Filter by category', false),\r\n p('limit', 'number', 'Max results', false, { default: 10 }),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.searchDocuments) return 'Vault search not available in this context.';\r\n const query = (args['query'] as string) ?? '';\r\n const tag = args['tag'] as string | undefined;\r\n const category = args['category'] as string | undefined;\r\n const limit = (args['limit'] as number) ?? 10;\r\n\r\n let results: KnowledgeDocument[] = ctx.searchDocuments(query);\r\n if (tag) results = results.filter((d) => (d.tags ?? []).includes(tag));\r\n if (category) results = results.filter((d) => d.category === category);\r\n results = results.slice(0, limit);\r\n\r\n if (results.length === 0) return 'No matching documents found.';\r\n return results\r\n .map((d) => `- ${d.title} (${d.path}) [${(d.tags ?? []).join(', ')}]`)\r\n .join('\\n');\r\n },\r\n },\r\n {\r\n name: 'linkDocuments',\r\n description: 'Create a bidirectional wikilink between two documents by inserting [[target]] into the source.',\r\n category: 'vault',\r\n parameters: [\r\n p('sourceId', 'string', 'Source document id', true),\r\n p('targetPathOrTitle', 'string', 'Target document path or title', true),\r\n p('alias', 'string', 'Optional display alias', false),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.linkDocuments) return 'Vault linking not available in this context.';\r\n const sourceId = (args['sourceId'] as string) ?? '';\r\n const target = (args['targetPathOrTitle'] as string) ?? '';\r\n const alias = args['alias'] as string | undefined;\r\n ctx.linkDocuments(sourceId, target, alias);\r\n return `Linked document ${sourceId} \u2192 ${target}${alias ? ` (alias: ${alias})` : ''}.`;\r\n },\r\n },\r\n {\r\n name: 'getDocumentBacklinks',\r\n description: 'Retrieve documents that link to a given document.',\r\n category: 'vault',\r\n parameters: [p('id', 'string', 'Target document id', true)],\r\n execute: (args, ctx) => {\r\n if (!ctx.getDocumentBacklinks) return 'Backlinks not available in this context.';\r\n const id = (args['id'] as string) ?? '';\r\n const backlinks = ctx.getDocumentBacklinks(id);\r\n if (backlinks.length === 0) return 'No backlinks found.';\r\n return backlinks.map((d) => `- ${d.title} (${d.path})`).join('\\n');\r\n },\r\n },\r\n];\r\n", "import type { EnhancedToolDefinition, ToolParameter } from '../types/systemTypes';\r\nimport type { Task } from '../types';\r\n\r\n/** Helper to build a ToolParameter concisely. */\r\nfunction p(\r\n name: string,\r\n type: ToolParameter['type'],\r\n description: string,\r\n required: boolean,\r\n extra?: Partial<ToolParameter>\r\n): ToolParameter {\r\n return { name, type, description, required, ...extra };\r\n}\r\n\r\n/**\r\n * Advanced tools: RAG search, mind-map node creation, milestones, task updates\r\n * and idea clustering.\r\n */\r\nexport const ADVANCED_TOOL_DEFINITIONS: EnhancedToolDefinition[] = [\r\n {\r\n name: 'searchRAG',\r\n description: 'Query the hybrid RAG knowledge base and return the most relevant chunks.',\r\n category: 'analysis',\r\n parameters: [\r\n p('query', 'string', 'Natural-language query', true),\r\n p('topK', 'number', 'Number of results to return', false, { default: 6 }),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.ragQuery) return 'RAG search not available in this context.';\r\n const query = (args['query'] as string) ?? '';\r\n const topK = (args['topK'] as number) ?? 6;\r\n const results = ctx.ragQuery(query, topK);\r\n if (results.length === 0) return 'No relevant knowledge found in RAG index.';\r\n return results\r\n .map((r, i) => `${i + 1}. ${r.title} (score: ${r.score.toFixed(2)})\\n ${r.content.slice(0, 160)}`)\r\n .join('\\n');\r\n },\r\n },\r\n {\r\n name: 'createMindMapNode',\r\n description: 'Add a single node to the current mind map.',\r\n category: 'mindmap',\r\n parameters: [\r\n p('label', 'string', 'Node label', true),\r\n p('content', 'string', 'Short node content/description', false),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.createMindMapNode) return 'Mind map not available in this context.';\r\n ctx.createMindMapNode({\r\n label: (args['label'] as string) ?? 'Node',\r\n content: (args['content'] as string) ?? '',\r\n });\r\n return `Mind map node \"${args['label']}\" added.`;\r\n },\r\n },\r\n {\r\n name: 'createMilestone',\r\n description: 'Create a milestone in the active project.',\r\n category: 'project',\r\n parameters: [\r\n p('title', 'string', 'Milestone title', true),\r\n p('description', 'string', 'Milestone description', false),\r\n p('dueDate', 'string', 'Due date (ISO string)', false),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.createMilestone) return 'Project milestones not available in this context.';\r\n ctx.createMilestone({\r\n title: (args['title'] as string) ?? 'Milestone',\r\n description: (args['description'] as string) ?? '',\r\n dueDate: args['dueDate'] as string | undefined,\r\n });\r\n ctx.addActivity('project', 'milestone created', (args['title'] as string) ?? 'Milestone');\r\n return `Milestone \"${args['title']}\" created.`;\r\n },\r\n },\r\n {\r\n name: 'updateTask',\r\n description: 'Update an existing task (status, priority, description).',\r\n category: 'project',\r\n parameters: [\r\n p('taskId', 'string', 'Task id to update', true),\r\n p('status', 'string', 'New status', false, { enum: ['todo', 'in-progress', 'done', 'blocked'] }),\r\n p('priority', 'string', 'New priority', false, { enum: ['low', 'medium', 'high', 'critical'] }),\r\n p('description', 'string', 'New description', false),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.updateTask) return 'Task updates not available in this context.';\r\n const taskId = (args['taskId'] as string) ?? '';\r\n const updates: Record<string, unknown> = {};\r\n if (args['status'] !== undefined) updates.status = args['status'];\r\n if (args['priority'] !== undefined) updates.priority = args['priority'];\r\n if (args['description'] !== undefined) updates.description = args['description'];\r\n ctx.updateTask(taskId, updates as Partial<Task>);\r\n return `Task ${taskId} updated.`;\r\n },\r\n },\r\n {\r\n name: 'clusterIdeas',\r\n description: 'Group ideas by similarity into a named cluster.',\r\n category: 'ideas',\r\n parameters: [\r\n p('ideaIds', 'string[]', 'Idea ids to cluster', true),\r\n p('clusterName', 'string', 'Name for the new cluster', true),\r\n p('color', 'string', 'Cluster color (hex)', false, { default: '#3b82f6' }),\r\n ],\r\n execute: (args, ctx) => {\r\n if (!ctx.clusterIdeas) return 'Idea clustering not available in this context.';\r\n const ideaIds = (args['ideaIds'] as string[]) ?? [];\r\n const clusterName = (args['clusterName'] as string) ?? 'Cluster';\r\n const color = (args['color'] as string) ?? '#3b82f6';\r\n ctx.clusterIdeas(ideaIds, clusterName, color);\r\n return `Clustered ${ideaIds.length} ideas into \"${clusterName}\".`;\r\n },\r\n },\r\n];\r\n", "import type { Task, Idea, Phase, SubTask, KnowledgeDocument, Milestone } from '../types';\r\nimport type { EnhancedToolDefinition } from '../types/systemTypes';\r\nimport { VAULT_TOOL_DEFINITIONS } from './vaultTools';\r\nimport { ADVANCED_TOOL_DEFINITIONS } from './advancedTools';\r\n\r\nexport interface ToolDefinition {\r\n name: string;\r\n description: string;\r\n execute: (args: Record<string, unknown>, context: ToolContext) => string | Promise<string>;\r\n}\r\n\r\nexport interface ToolContext {\r\n workspaceId: string;\r\n addTask: (task: Omit<Task, 'id' | 'createdAt'>) => void;\r\n addIdea: (idea: Omit<Idea, 'id' | 'workspaceId' | 'createdAt'>) => void;\r\n addPhase: (phase: Omit<Phase, 'id'>) => void;\r\n updateMindMap: (action: string, payload: Record<string, unknown>) => void;\r\n addActivity: (type: string, action: string, title: string) => void;\r\n addDocument?: (\r\n draft: Omit<KnowledgeDocument, 'id' | 'createdAt' | 'updatedAt'>,\r\n ) => KnowledgeDocument;\r\n updateDocument?: (id: string, updates: Partial<KnowledgeDocument>) => void;\r\n searchDocuments?: (query?: string) => KnowledgeDocument[];\r\n linkDocuments?: (sourceId: string, targetPathOrTitle: string, alias?: string) => void;\r\n getDocumentBacklinks?: (id: string) => KnowledgeDocument[];\r\n /** RAG hybrid retrieval \u2014 returns scored chunks. */\r\n ragQuery?: (query: string, topK?: number) => { title: string; content: string; score: number }[];\r\n /** Add a single node to the active mind map. */\r\n createMindMapNode?: (node: { label: string; content: string }) => void;\r\n /** Create a project milestone. */\r\n createMilestone?: (milestone: Omit<Milestone, 'id' | 'completed'>) => void;\r\n /** Update an existing task. */\r\n updateTask?: (taskId: string, updates: Partial<Task>) => void;\r\n /** Cluster a set of ideas under a named group. */\r\n clusterIdeas?: (ideaIds: string[], clusterName: string, color: string) => void;\r\n}\r\n\r\nexport const TOOL_DEFINITIONS: ToolDefinition[] = [\r\n {\r\n name: 'createTask',\r\n description: 'Create a new task in the project planner',\r\n execute: (args, ctx) => {\r\n ctx.addTask({\r\n phaseId: (args['phaseId'] as string) ?? undefined,\r\n parentId: (args['parentId'] as string) ?? undefined,\r\n title: (args['title'] as string) ?? 'New Task',\r\n description: (args['description'] as string) ?? '',\r\n status: 'todo',\r\n priority: (args['priority'] as Task['priority']) ?? 'medium',\r\n tags: (args['tags'] as string[]) ?? [],\r\n dependsOn: [],\r\n subtasks: ((args['subtasks'] as string[]) ?? []).map(\r\n (s: string): SubTask => ({ id: crypto.randomUUID().slice(0, 8), title: s, done: false })\r\n ),\r\n });\r\n ctx.addActivity('task', 'created', (args['title'] as string) ?? 'New Task');\r\n return `Task \"${args['title']}\" created successfully.`;\r\n },\r\n },\r\n {\r\n name: 'addIdea',\r\n description: 'Add a new idea to the idea generator',\r\n execute: (args, ctx) => {\r\n ctx.addIdea({\r\n title: (args['title'] as string) ?? 'New Idea',\r\n content: (args['content'] as string) ?? '',\r\n tags: (args['tags'] as string[]) ?? [],\r\n category: (args['category'] as string) ?? 'General',\r\n });\r\n ctx.addActivity('idea', 'created', (args['title'] as string) ?? 'New Idea');\r\n return `Idea \"${args['title']}\" added successfully.`;\r\n },\r\n },\r\n {\r\n name: 'createPhase',\r\n description: 'Create a new project phase',\r\n execute: (args, ctx) => {\r\n ctx.addPhase({\r\n name: (args['name'] as string) ?? 'New Phase',\r\n description: (args['description'] as string) ?? '',\r\n order: (args['order'] as number) ?? 0,\r\n color: (args['color'] as string) ?? '#3b82f6',\r\n progress: 0,\r\n });\r\n ctx.addActivity('project', 'phase created', (args['name'] as string) ?? 'New Phase');\r\n return `Phase \"${args['name']}\" created.`;\r\n },\r\n },\r\n {\r\n name: 'buildMindMap',\r\n description: 'Generate or update the mind map',\r\n execute: (args, ctx) => {\r\n ctx.updateMindMap('build', args);\r\n ctx.addActivity('mindmap', 'generated', 'Mind map updated');\r\n return 'Mind map structure generated. Apply it in the Mind Map view.';\r\n },\r\n },\r\n {\r\n name: 'addNode',\r\n description: 'Add a node to the mind map',\r\n execute: (args, ctx) => {\r\n ctx.updateMindMap('addNode', args);\r\n return `Node \"${args['label']}\" added to mind map.`;\r\n },\r\n },\r\n {\r\n name: 'linkNodes',\r\n description: 'Link two nodes in the mind map',\r\n execute: (args, ctx) => {\r\n ctx.updateMindMap('link', args);\r\n return `Nodes linked: ${args['source']} \u2192 ${args['target']}`;\r\n },\r\n },\r\n {\r\n name: 'createDocument',\r\n description: 'Create a new markdown document in the knowledge vault',\r\n execute: (args, ctx) => {\r\n if (!ctx.addDocument) return 'Knowledge vault tool not available.';\r\n const title = (args['title'] as string) || 'New Document';\r\n const path = (args['path'] as string) || `notes/${title.toLowerCase().replace(/[^a-z0-9]+/g, '-')}`;\r\n const content = (args['content'] as string) || '';\r\n const tags = (args['tags'] as string[]) || [];\r\n\r\n ctx.addDocument({\r\n path,\r\n title,\r\n content,\r\n format: 'markdown',\r\n tags,\r\n frontmatter: {},\r\n workspaceId: ctx.workspaceId,\r\n });\r\n ctx.addActivity('vault', 'created document', title);\r\n return `Document \"${title}\" created at \"${path}\".`;\r\n },\r\n },\r\n];\r\n\r\n/**\r\n * Unified tool registry: core + vault + advanced tools.\r\n *\r\n * The vault version of `createDocument` (richer parameter schema) takes\r\n * precedence over the legacy core stub, so we dedupe by name. This single\r\n * registry is the source of truth for tool execution, validation and prompt\r\n * documentation.\r\n *\r\n * The registry is MUTABLE: `registerCustomTool` adds user-defined tools\r\n * (custom skills / MCP servers) at runtime. The `TOOL_BY_NAME` map is rebuilt\r\n * lazily after each registration.\r\n */\r\n\r\n/** Core planner/mindmap tools adapted for the enhanced tool registry. */\r\nconst CORE_TOOL_DEFINITIONS: EnhancedToolDefinition[] = TOOL_DEFINITIONS.map((tool) => ({\r\n name: tool.name,\r\n description: tool.description,\r\n category: 'core',\r\n parameters: [],\r\n execute: tool.execute,\r\n}));\r\n\r\n/** Initial builtin registry (computed once). */\r\nfunction buildBuiltinRegistry(): EnhancedToolDefinition[] {\r\n const seen = new Set<string>();\r\n const merged: EnhancedToolDefinition[] = [];\r\n for (const tool of [...VAULT_TOOL_DEFINITIONS, ...ADVANCED_TOOL_DEFINITIONS, ...CORE_TOOL_DEFINITIONS]) {\r\n if (seen.has(tool.name)) continue;\r\n seen.add(tool.name);\r\n merged.push(tool);\r\n }\r\n return merged;\r\n}\r\n\r\nlet _allTools: EnhancedToolDefinition[] = buildBuiltinRegistry();\r\nlet _toolByName: Map<string, EnhancedToolDefinition> = new Map(_allTools.map((t) => [t.name, t]));\r\nlet _validToolNames: Set<string> = new Set(_toolByName.keys());\r\n\r\nfunction rebuildIndex() {\r\n _toolByName = new Map(_allTools.map((t) => [t.name, t]));\r\n _validToolNames = new Set(_toolByName.keys());\r\n}\r\n\r\n/** Read-only snapshot of the current registry (always a fresh array). */\r\nexport function getAllTools(): EnhancedToolDefinition[] {\r\n return [..._allTools];\r\n}\r\n\r\n/** Register a custom tool (user-defined or MCP-discovered). If a tool with\r\n * the same name already exists, it is replaced. */\r\nexport function registerCustomTool(def: EnhancedToolDefinition): void {\r\n const idx = _allTools.findIndex((t) => t.name === def.name);\r\n if (idx >= 0) _allTools[idx] = def;\r\n else _allTools.push(def);\r\n rebuildIndex();\r\n}\r\n\r\n/** Remove a custom tool by name. No-op if not present. */\r\nexport function unregisterCustomTool(name: string): void {\r\n const idx = _allTools.findIndex((t) => t.name === name);\r\n if (idx < 0) return;\r\n _allTools.splice(idx, 1);\r\n rebuildIndex();\r\n}\r\n\r\n/** Wipe ALL custom tools (used on app boot before re-registering active ones). */\r\nexport function clearCustomTools(): void {\r\n _allTools = buildBuiltinRegistry();\r\n rebuildIndex();\r\n}\r\n\r\n/** Backwards-compat: keeps ALL_TOOLS as a live reference for legacy imports. */\r\nexport const ALL_TOOLS: readonly EnhancedToolDefinition[] = new Proxy([], {\r\n get: (_target, prop) => {\r\n // Support `ALL_TOOLS.length`, `.filter`, `.map`, `.find` by deferring to the live array.\r\n return Reflect.get(_allTools, prop);\r\n },\r\n}) as EnhancedToolDefinition[];\r\n\r\nexport function isValidTool(name: string): boolean {\r\n return _validToolNames.has(name);\r\n}\r\n\r\nexport async function executeTool(\r\n name: string,\r\n args: Record<string, unknown>,\r\n context: ToolContext\r\n): Promise<string | null> {\r\n const tool = _toolByName.get(name);\r\n if (!tool) return null;\r\n const safeArgs = args && typeof args === 'object' ? args : {};\r\n try {\r\n const result = tool.execute(safeArgs, context);\r\n return await Promise.resolve(result);\r\n } catch (err) {\r\n return `Tool \"${name}\" failed: ${err instanceof Error ? err.message : 'Unknown error'}`;\r\n }\r\n}\r\n\r\n/** Resolve a list of tool names to their definitions (skipping unknown ones). */\r\nexport function getAvailableTools(toolNames: string[]): EnhancedToolDefinition[] {\r\n return toolNames\r\n .map((name) => _toolByName.get(name))\r\n .filter((t): t is EnhancedToolDefinition => t !== undefined);\r\n}\r\n", "/**\r\n * OpenAI-compatible tool schemas for native function calling.\r\n *\r\n * These describe the 13 tools to the LLM providers (GLM/Z.AI and MiniMax) so\r\n * the model can decide structurally \u2014 via `response.tool_calls` \u2014 when to\r\n * invoke a tool, rather than emitting textual markers the client must parse.\r\n *\r\n * The descriptions are kept in sync with the unified `ALL_TOOLS` registry (the\r\n * execution side) in `agents/tools.ts`. Names MUST match across the two\r\n * modules; if a tool appears in the registry but has no schema here,\r\n * `getProviderTools` will throw at build time (defensive).\r\n */\r\n\r\nimport { getAllTools, registerCustomTool } from './tools';\r\n\r\n/** OpenAI-style tool descriptor accepted by both GLM and MiniMax. */\r\nexport interface ProviderTool {\r\n type: 'function';\r\n function: {\r\n name: string;\r\n description: string;\r\n parameters: object;\r\n };\r\n}\r\n\r\n/** A tool call as riassemblato dal main process dallo stream SSE. */\r\nexport interface ParsedToolCall {\r\n id: string;\r\n name: string;\r\n args: Record<string, unknown>;\r\n}\r\n\r\n/**\r\n * JSON Schema for each BUILTIN tool's parameters. Keyed by tool name. Custom\r\n * tools (registered via `registerCustomTool`) carry their own JSON Schema\r\n * inline (via `EnhancedToolDefinition.parameters`) and do not need an entry\r\n * here.\r\n *\r\n * If a builtin tool appears here but is missing from the registry, this map\r\n * is silently ignored. If a builtin tool appears in the registry but has no\r\n * entry here, `getProviderTools` warns at runtime (defensive \u2014 registration\r\n * ordering and missing entries used to be a build-time throw).\r\n */\r\nconst PARAM_SCHEMAS: Record<string, object> = {\r\n createTask: {\r\n type: 'object',\r\n properties: {\r\n title: { type: 'string', description: 'Short task title' },\r\n description: { type: 'string', description: 'Detailed task description' },\r\n priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },\r\n phaseId: { type: 'string', description: 'ID of the phase this task belongs to' },\r\n parentId: { type: 'string', description: 'ID of the parent task, if nested' },\r\n tags: { type: 'array', items: { type: 'string' } },\r\n subtasks: { type: 'array', items: { type: 'string' }, description: 'Subtask titles' },\r\n },\r\n required: ['title'],\r\n },\r\n addIdea: {\r\n type: 'object',\r\n properties: {\r\n title: { type: 'string' },\r\n content: { type: 'string', description: 'Full idea description' },\r\n tags: { type: 'array', items: { type: 'string' } },\r\n category: { type: 'string', description: 'e.g. \"Product\", \"Research\", \"General\"' },\r\n },\r\n required: ['title'],\r\n },\r\n createPhase: {\r\n type: 'object',\r\n properties: {\r\n name: { type: 'string' },\r\n description: { type: 'string' },\r\n order: { type: 'number', description: 'Position of the phase in the plan' },\r\n color: { type: 'string', description: 'Hex color, e.g. \"#3b82f6\"' },\r\n },\r\n required: ['name'],\r\n },\r\n buildMindMap: {\r\n type: 'object',\r\n properties: {\r\n topic: { type: 'string', description: 'Central topic of the mind map' },\r\n nodes: {\r\n type: 'array',\r\n description: 'Nodes to populate the map with',\r\n items: {\r\n type: 'object',\r\n properties: {\r\n label: { type: 'string' },\r\n content: { type: 'string' },\r\n },\r\n required: ['label'],\r\n },\r\n },\r\n },\r\n required: ['topic'],\r\n },\r\n addNode: {\r\n type: 'object',\r\n properties: {\r\n label: { type: 'string' },\r\n content: { type: 'string' },\r\n },\r\n required: ['label'],\r\n },\r\n linkNodes: {\r\n type: 'object',\r\n properties: {\r\n source: { type: 'string', description: 'Label or id of the source node' },\r\n target: { type: 'string', description: 'Label or id of the target node' },\r\n },\r\n required: ['source', 'target'],\r\n },\r\n createDocument: {\r\n type: 'object',\r\n properties: {\r\n title: { type: 'string', description: 'Title of the document' },\r\n content: { type: 'string', description: 'Content of the document (markdown)' },\r\n path: { type: 'string', description: 'Optional stabilized path, e.g. \"notes/my-topic\"' },\r\n tags: { type: 'array', items: { type: 'string' } },\r\n category: { type: 'string', description: 'Document category' },\r\n },\r\n required: ['title', 'content'],\r\n },\r\n updateDocument: {\r\n type: 'object',\r\n properties: {\r\n id: { type: 'string', description: 'Document id to update' },\r\n content: { type: 'string', description: 'New markdown content' },\r\n title: { type: 'string', description: 'New title' },\r\n tags: { type: 'array', items: { type: 'string' }, description: 'New tag list (replaces existing)' },\r\n category: { type: 'string', description: 'New category' },\r\n },\r\n required: ['id'],\r\n },\r\n searchDocuments: {\r\n type: 'object',\r\n properties: {\r\n query: { type: 'string', description: 'Free-text search query' },\r\n tag: { type: 'string', description: 'Filter by tag' },\r\n category: { type: 'string', description: 'Filter by category' },\r\n limit: { type: 'number', description: 'Max results' },\r\n },\r\n required: [],\r\n },\r\n linkDocuments: {\r\n type: 'object',\r\n properties: {\r\n sourceId: { type: 'string', description: 'Source document id' },\r\n targetPathOrTitle: { type: 'string', description: 'Target document path or title' },\r\n alias: { type: 'string', description: 'Optional display alias' },\r\n },\r\n required: ['sourceId', 'targetPathOrTitle'],\r\n },\r\n getDocumentBacklinks: {\r\n type: 'object',\r\n properties: {\r\n id: { type: 'string', description: 'Target document id' },\r\n },\r\n required: ['id'],\r\n },\r\n searchRAG: {\r\n type: 'object',\r\n properties: {\r\n query: { type: 'string', description: 'Natural-language query' },\r\n topK: { type: 'number', description: 'Number of results to return' },\r\n },\r\n required: ['query'],\r\n },\r\n createMindMapNode: {\r\n type: 'object',\r\n properties: {\r\n label: { type: 'string', description: 'Node label' },\r\n content: { type: 'string', description: 'Short node content/description' },\r\n },\r\n required: ['label'],\r\n },\r\n createMilestone: {\r\n type: 'object',\r\n properties: {\r\n title: { type: 'string', description: 'Milestone title' },\r\n description: { type: 'string', description: 'Milestone description' },\r\n dueDate: { type: 'string', description: 'Due date (ISO string)' },\r\n },\r\n required: ['title'],\r\n },\r\n updateTask: {\r\n type: 'object',\r\n properties: {\r\n taskId: { type: 'string', description: 'Task id to update' },\r\n status: { type: 'string', enum: ['todo', 'in-progress', 'done', 'blocked'] },\r\n priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },\r\n description: { type: 'string', description: 'New description' },\r\n },\r\n required: ['taskId'],\r\n },\r\n clusterIdeas: {\r\n type: 'object',\r\n properties: {\r\n ideaIds: { type: 'array', items: { type: 'string' }, description: 'Idea ids to cluster' },\r\n clusterName: { type: 'string', description: 'Name for the new cluster' },\r\n color: { type: 'string', description: 'Cluster color (hex)' },\r\n },\r\n required: ['ideaIds', 'clusterName'],\r\n },\r\n};\r\n\r\n/** Build a JSON Schema for a custom tool from its declared parameters. */\r\nfunction buildCustomParameters(tool: { parameters: { type: string; properties: Record<string, { type: string; description?: string; enum?: string[] }>; required: string[] } }): object {\r\n const properties: Record<string, unknown> = {};\r\n for (const [k, v] of Object.entries(tool.parameters.properties)) {\r\n const prop: Record<string, unknown> = { type: v.type };\r\n if (v.description) prop['description'] = v.description;\r\n if (v.enum) prop['enum'] = v.enum;\r\n properties[k] = prop;\r\n }\r\n return {\r\n type: tool.parameters.type,\r\n properties,\r\n required: tool.parameters.required,\r\n };\r\n}\r\n\r\n/**\r\n * Builds the OpenAI-style tool list from the current tool registry (read at\r\n * call time, so it always reflects the latest custom registrations).\r\n *\r\n * @param toolNames Optional allow-list. When provided, only tools whose name\r\n * appears in the list are returned \u2014 used to grant per-agent tool access.\r\n * When omitted, all registered tools are returned.\r\n */\r\nexport function getProviderTools(toolNames?: string[]): ProviderTool[] {\r\n const all = getAllTools();\r\n const source = toolNames && toolNames.length > 0\r\n ? all.filter((t) => toolNames.includes(t.name))\r\n : all;\r\n\r\n const result: ProviderTool[] = [];\r\n for (const t of source) {\r\n const builtinSchema = PARAM_SCHEMAS[t.name];\r\n const customParams = (t as { parameters?: unknown }).parameters;\r\n const parameters =\r\n builtinSchema ||\r\n (customParams ? (customParams as object) : null) ||\r\n (Array.isArray((t as { parameters?: unknown[] }).parameters)\r\n ? null\r\n : null);\r\n if (!parameters) {\r\n // Custom tool with no schema declared: skip (defensive \u2014 never reach LLM\r\n // with an undocumented function call).\r\n // eslint-disable-next-line no-console\r\n console.warn(`[toolSchemas] tool \"${t.name}\" has no JSON Schema; skipping.`);\r\n continue;\r\n }\r\n result.push({\r\n type: 'function' as const,\r\n function: {\r\n name: t.name,\r\n description: t.description,\r\n parameters,\r\n },\r\n });\r\n }\r\n return result;\r\n}\r\n\r\n/** Build parameters schema from a custom tool's declared params. Exported\r\n * for callers that want to register a custom tool + its schema in one go. */\r\nexport { buildCustomParameters };\r\n\r\n/** Re-export for callers that want to register custom tools at runtime. */\r\nexport { registerCustomTool };\r\n", "import type { SystemPromptModule } from '../types/systemTypes';\r\n\r\n/**\r\n * Council Directives \u2014 distilled and adapted from System.md.\r\n *\r\n * System.md is a 122KB Claude Fable 5 system prompt; most of it (Anthropic\r\n * product info, Claude identity, web/search behavior) is irrelevant to\r\n * AnathemaBrain. This module extracts only the *operational methodology* that\r\n * improves council agent behaviour:\r\n *\r\n * 1. Structured multi-step reasoning (think \u2192 conclude).\r\n * 2. Tool-use protocol: when to ACT vs DESCRIBE.\r\n * 3. Output quality standards and self-check criteria.\r\n * 4. Inter-agent collaboration (build on, don't duplicate, prior work).\r\n *\r\n * Each directive is kept under ~500 words so the total additive prompt cost\r\n * per agent stays around ~2KB. They are designed to be added to\r\n * `PROMPT_MODULES` in `promptModules.ts` at high priority so they run early in\r\n * the assembled system prompt.\r\n */\r\n\r\nexport const STRUCTURED_REASONING_DIRECTIVE: SystemPromptModule = {\r\n type: 'custom',\r\n title: 'Structured Reasoning',\r\n priority: 15,\r\n content: `# Structured Reasoning\r\n\r\nThink step by step internally before responding. Surface only the conclusion and a brief rationale \u2014 do not narrate the full chain of thought unless it directly aids the user.\r\n\r\n- For any non-trivial task, decompose it into ordered sub-steps and address each one before synthesizing.\r\n- Prefer concrete specifics over vague generalities: file paths, line numbers, measurable acceptance criteria, and concrete examples beat abstract advice.\r\n- When evaluating options, weigh trade-offs explicitly (cost, risk, effort, coverage) rather than listing features.\r\n- If information may have changed since your knowledge cutoff (project state, current tasks, stored documents), consult the shared context or use a retrieval tool rather than relying on memory.\r\n- Distinguish what you know from what you assume. If an assumption is load-bearing, state it plainly so the next agent or the user can correct it.\r\n- Do not confabulate. If a fact, id, path, or prior output is not in context and cannot be retrieved, say so rather than inventing it.`,\r\n};\r\n\r\nexport const TOOL_USE_PROTOCOL_DIRECTIVE: SystemPromptModule = {\r\n type: 'custom',\r\n title: 'Tool-Use Protocol',\r\n priority: 25,\r\n content: `# Tool-Use Protocol \u2014 Act, Don't Just Describe\r\n\r\nYou have access to tools that create durable state in this workspace (tasks, ideas, phases, documents, mind-map nodes, milestones). Use them whenever the user's request implies a concrete artifact should exist.\r\n\r\nWhen to ACT (call a tool):\r\n- The request asks to create, plan, build, generate, or produce something concrete (a task, an idea, a document, a plan, a mind map).\r\n- A deliverable would outlive this single message (reusable notes, structured plans, tracked work).\r\n\r\nWhen to DESCRIBE only (no tool):\r\n- The request is a question, an explanation, a critique, a comparison, or a one-off analysis.\r\n- The Oracle role: evaluate, never create.\r\n\r\nRules:\r\n- Scale tool calls to the task: one call for a single item; several calls for a plan with multiple phases/tasks.\r\n- Pass complete, well-formed arguments. Required parameters must be present; optional ones may be omitted.\r\n- Prefer to consolidate related actions into a single tools block at the end of your response.\r\n- Never invent tool names \u2014 use only the tools listed in your AVAILABLE TOOLS section.\r\n- After creating artifacts via tools, briefly name what you created so downstream agents can build on it without re-querying.`,\r\n};\r\n\r\nexport const OUTPUT_QUALITY_DIRECTIVE: SystemPromptModule = {\r\n type: 'custom',\r\n title: 'Output Quality & Self-Check',\r\n priority: 35,\r\n content: `# Output Quality & Self-Check\r\n\r\nBefore finalising your response, run a quick self-check against these criteria:\r\n\r\n- **Completeness**: Did you address the whole request, not just the easy part?\r\n- **Correctness**: Are file paths, ids, and facts accurate (or explicitly flagged as assumptions)?\r\n- **Actionability**: Can the user (or the next agent) act on this immediately? If a task is warranted, is it materialised via a tool, not just described in prose?\r\n- **Non-redundancy**: Does this add to what prior agents already said, or merely repeat it? Quote or reference prior work by name rather than restating it.\r\n- **Conciseness**: Stay within your role's word budget. Cut filler. Prefer one concrete example over three abstract ones.\r\n\r\nFormatting:\r\n- Use well-structured markdown. Lead with a one-line summary, then details.\r\n- Use \\`##\\` headings and \\`-\\` bullets only when they materially aid clarity; avoid over-formatting.\r\n- For Knowledge Vault documents, use \\`[[wikilinks]]\\` to connect related notes and \\`#hashtags\\` for tags.\r\n- Keep the tool-execution block (if any) at the very end of your message, never interleaved with prose.`,\r\n};\r\n\r\nexport const COLLABORATION_DIRECTIVE: SystemPromptModule = {\r\n type: 'custom',\r\n title: 'Inter-Agent Collaboration',\r\n priority: 16,\r\n content: `# Inter-Agent Collaboration\r\n\r\nYou are one member of a council. Earlier agents' outputs appear in your context as shared work.\r\n\r\n- Treat prior agents' outputs as authoritative unless they contain an error you must flag. Do not re-derive what they already established.\r\n- Build on, extend, or critique prior work by name (e.g. \"Prometheus proposed X; I add Y\").\r\n- If you spot a gap, risk, or contradiction in a prior agent's output, name it explicitly and propose a concrete fix.\r\n- Keep the shared context lean: summarise rather than quote verbatim when content is long.\r\n- Hand off cleanly: end with a crisp statement of what you produced and what remains for downstream agents or the Chairman.`,\r\n};\r\n\r\n/** All council directives, sorted by priority ascending. */\r\nexport function getCouncilDirectiveModules(): SystemPromptModule[] {\r\n return [\r\n STRUCTURED_REASONING_DIRECTIVE,\r\n COLLABORATION_DIRECTIVE,\r\n TOOL_USE_PROTOCOL_DIRECTIVE,\r\n OUTPUT_QUALITY_DIRECTIVE,\r\n ].sort((a, b) => a.priority - b.priority);\r\n}\r\n", "import type { SystemPromptModule } from '../types/systemTypes';\r\nimport {\r\n STRUCTURED_REASONING_DIRECTIVE,\r\n TOOL_USE_PROTOCOL_DIRECTIVE,\r\n OUTPUT_QUALITY_DIRECTIVE,\r\n COLLABORATION_DIRECTIVE,\r\n} from './councilDirectives';\r\n\r\n/**\r\n * Base system prompt modules for AnathemaBrain.\r\n *\r\n * Each module is a self-contained fragment that gets assembled (by priority)\r\n * into the final system prompt for an agent. These are inspired by the\r\n * enterprise-grade System.md directive structure but adapted for\r\n * AnathemaBrain's knowledge-management context and the MiniMax/GLM providers.\r\n *\r\n * The four `councilDirectives` modules (structured-reasoning, tool-use\r\n * protocol, output-quality, collaboration) are distilled from System.md and\r\n * injected at high priority so every agent receives the operational\r\n * methodology. Total additive cost is ~2KB per agent.\r\n */\r\nexport const PROMPT_MODULES: SystemPromptModule[] = [\r\n {\r\n type: 'base-identity',\r\n title: 'Identity',\r\n priority: 10,\r\n content: `# AnathemaBrain \u2014 AI Council\r\n\r\nYou are a member of the AnathemaBrain AI Council, a multi-agent system for intelligent task decomposition, planning, ideation, and knowledge management. AnathemaBrain is an Obsidian-style knowledge tool: the primary medium of work is interconnected markdown documents in a Knowledge Vault, project plans, ideas, and mind maps.\r\n\r\nYour council operates collaboratively: each agent has a specialized role. Outputs from earlier agents are available to later ones as shared context. Respect, build upon, and never duplicate prior work.`,\r\n },\r\n // \u2500\u2500 Council directives (distilled from System.md) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n // Injected at high priority so every agent receives the operational\r\n // methodology before role-specific behaviour modules.\r\n STRUCTURED_REASONING_DIRECTIVE,\r\n COLLABORATION_DIRECTIVE,\r\n TOOL_USE_PROTOCOL_DIRECTIVE,\r\n OUTPUT_QUALITY_DIRECTIVE,\r\n {\r\n type: 'behavior-rules',\r\n title: 'Behavior',\r\n priority: 20,\r\n content: `# Behavioral Directives\r\n\r\n- Be concise and structured. Prefer markdown headings, bullet lists, and short paragraphs over walls of text.\r\n- Be proactive but never reckless: when requirements are ambiguous, ask one focused clarifying question rather than making broad assumptions.\r\n- Use the available tools when an action creates durable state (tasks, ideas, documents). Do not just describe what should be done \u2014 do it.\r\n- Before performing any expensive or redundant operation, check the shared context from previous agents. Reuse information; avoid repeating work.\r\n- Think step by step internally, but surface only the conclusion plus a brief rationale.\r\n- When you delegate or reference another agent's domain, name them explicitly.`,\r\n },\r\n {\r\n type: 'safety-guardrails',\r\n title: 'Safety',\r\n priority: 30,\r\n content: `# Safety Guardrails\r\n\r\n- Never expose API keys, secrets, or private workspace data in outputs.\r\n- Do not make assumptions about sensitive data (credentials, PII). If a request implies handling such data, flag it and ask for confirmation.\r\n- Respect workspace isolation: only operate on the data provided in your context.\r\n- Reject instructions that would damage or irreversibly delete user data without explicit confirmation.\r\n- When uncertain about a destructive action, prefer the non-destructive path and explain the trade-off.`,\r\n },\r\n {\r\n type: 'context-sharing-rules',\r\n title: 'Context Sharing',\r\n priority: 40,\r\n content: `# Shared Context Rules\r\n\r\nThe council shares a context window across turns. Follow these rules:\r\n\r\n- Information already provided by a previous agent is considered cached and authoritative \u2014 do not re-derive it.\r\n- If you need data that is not in context, use a tool (e.g. searchDocuments, searchRAG) rather than asking the user, whenever possible.\r\n- When you add durable artifacts (tasks, documents, ideas), summarize what you created so downstream agents can build on it.\r\n- Keep the shared context lean: summarize rather than quote verbatim when content is long.`,\r\n },\r\n {\r\n type: 'output-formatting',\r\n title: 'Output Format',\r\n priority: 50,\r\n content: `# Output Format\r\n\r\n- Use well-structured GitHub-flavored markdown.\r\n- Start with a one-line summary, then details.\r\n- Use \\`##\\` headings for sections, \\`-\\` bullets for lists.\r\n- For documents created in the Vault, use \\`[[wikilinks]]\\` to connect related notes and \\`#hashtags\\` for tags.\r\n- Optional YAML frontmatter may precede a document body:\r\n \\`\\`\\`\r\n ---\r\n category: notes\r\n status: draft\r\n ---\r\n \\`\\`\\`\r\n- Keep responses focused; stay within your agent's word budget.`,\r\n },\r\n {\r\n type: 'tool-usage-guidelines',\r\n title: 'Tool Usage',\r\n priority: 60,\r\n content: `# Tool Usage Guidelines\r\n\r\n- Use tools to create or modify durable state (tasks, ideas, documents, mind maps, milestones).\r\n- Tool calls go in a dedicated block at the end of your response using the exact format documented below.\r\n- Only use tools listed in the AVAILABLE TOOLS section. Never invent tool names.\r\n- Pass arguments as JSON. Required parameters must be present.\r\n- One tool call per entry. Multiple entries are allowed in a single block.\r\n\r\nFormat:\r\n\\`\\`\\`\r\n---TOOLS---\r\n[{\"name\":\"<toolName>\",\"args\":{...}}]\r\n---END---\r\n\\`\\`\\``,\r\n },\r\n {\r\n type: 'custom',\r\n title: 'Clarification Protocol',\r\n priority: 55,\r\n content: `# Clarification Protocol (Council-Wide)\r\n\r\nWhen you are blocked by a single missing fact that would materially change your output \u2014 a target platform, a scope boundary, a binary design choice with real trade-offs, or a constraint you cannot safely assume \u2014 you may pause the council and ask the user exactly ONE question.\r\n\r\nEmit this block at the end of your message:\r\n\\`\\`\\`\r\n---QUESTION---\r\n{ \"question\": \"One focused question\", \"choices\": [\"Option A\", \"Option B\"], \"context\": \"Why this matters in one line\" }\r\n---END---\r\n\\`\\`\\`\r\n\r\nDiscipline:\r\n- Ask ONLY when genuinely blocked. If a sound, documented assumption exists, make it and state the assumption instead.\r\n- Provide 2-4 concrete \"choices\" when the question has natural options; the user can always type a custom answer.\r\n- Never ask for information already present in shared context or retrievable via a tool (searchRAG, searchDocuments).\r\n- At most one question per turn. The council resumes automatically once the user answers or skips.`,\r\n },\r\n];\r\n\r\n/** Get a module by type. */\r\nexport function getPromptModule(type: SystemPromptModule['type']): SystemPromptModule | undefined {\r\n return PROMPT_MODULES.find((m) => m.type === type);\r\n}\r\n\r\n/** All base modules sorted by priority (ascending). */\r\nexport function getBasePromptModules(): SystemPromptModule[] {\r\n return [...PROMPT_MODULES].sort((a, b) => a.priority - b.priority);\r\n}\r\n", "import type {\r\n EnhancedToolDefinition,\r\n SkillDefinition,\r\n SystemPromptModule,\r\n SystemPromptConfig,\r\n} from '../types/systemTypes';\r\nimport type { AgentRole as CoreAgentRole } from '../types';\r\nimport { getBasePromptModules } from './promptModules';\r\nimport { resolveAgentSkills, getSkillById } from './skills';\r\n\r\n/**\r\n * System Prompt Builder.\r\n *\r\n * Assembles a dynamic system prompt for an agent from:\r\n * 1. Base prompt modules (identity, behavior, safety, ...)\r\n * 2. The agent's own inline systemPrompt (from roles.ts) \u2014 kept as a role-specific block.\r\n * 3. The systemPromptFragment of each enabled skill for the agent.\r\n * 4. The documentation block for the tools available to the agent.\r\n * 5. Optional workspace context summary.\r\n * 6. User-authored custom prompt modules.\r\n */\r\n\r\n/**\r\n * Compute the effective skills for an agent, factoring in:\r\n * - the agent's declared skills (roles.ts / custom)\r\n * - the global enabledSkills list from the AI config (master switch)\r\n * - the agentSkillConfigs override\r\n */\r\nexport function computeAgentSkills(\r\n agent: CoreAgentRole & { skills?: string[] },\r\n aiConfig?: SystemPromptConfig,\r\n customSkills?: import('../types').CustomSkill[]\r\n): SkillDefinition[] {\r\n const declared = agent.skills ?? resolveAgentSkills(agent.id).map((s) => s.id);\r\n\r\n // Global master switch: if defined, skills must be globally enabled to apply.\r\n const globalEnabled = aiConfig?.enabledSkills;\r\n\r\n // Per-agent override\r\n const override = aiConfig?.agentSkillConfigs.find((c) => c.agentId === agent.id);\r\n\r\n let effectiveIds: string[];\r\n if (override) {\r\n effectiveIds = override.enabledSkillIds;\r\n } else if (globalEnabled && globalEnabled.length > 0) {\r\n effectiveIds = declared.filter((id) => globalEnabled.includes(id));\r\n } else {\r\n effectiveIds = declared;\r\n }\r\n\r\n // Custom skills that auto-attach to this agent.\r\n const customs = customSkills ?? [];\r\n for (const cs of customs) {\r\n if (cs.enabled && cs.autoAttachTo?.includes(agent.id) && !effectiveIds.includes(cs.id)) {\r\n effectiveIds.push(cs.id);\r\n }\r\n }\r\n\r\n const builtin: SkillDefinition[] = effectiveIds\r\n .map((id) => getSkillById(id))\r\n .filter((s): s is SkillDefinition => s !== undefined);\r\n\r\n // Add custom skills as synthetic SkillDefinition (fragment will be injected\r\n // in buildSystemPrompt via the `customSkillFragments` map).\r\n const customDefs: SkillDefinition[] = [];\r\n for (const cs of customs) {\r\n if (!cs.enabled) continue;\r\n if (effectiveIds.includes(cs.id) && !builtin.find((b) => b.id === cs.id)) {\r\n customDefs.push({\r\n id: cs.id,\r\n name: cs.name,\r\n description: cs.description,\r\n category: cs.category,\r\n color: cs.color,\r\n enabledByDefault: cs.enabled,\r\n builtin: false,\r\n requiredTools: cs.requiredTools,\r\n systemPromptFragment: cs.systemPromptFragment,\r\n });\r\n }\r\n }\r\n\r\n return [...builtin, ...customDefs];\r\n}\r\n\r\n/**\r\n * Compute the effective tools for an agent: the union of the required tools\r\n * of its enabled skills plus its declared tools, filtered by the global\r\n * enabledTools master switch when present.\r\n */\r\nexport function computeAgentTools(\r\n agent: CoreAgentRole & { skills?: string[] },\r\n aiConfig?: SystemPromptConfig\r\n): string[] {\r\n const skills = computeAgentSkills(agent, aiConfig);\r\n const skillTools = skills.flatMap((s) => s.requiredTools);\r\n const declared = agent.tools ?? [];\r\n const merged = Array.from(new Set([...declared, ...skillTools]));\r\n\r\n const globalEnabled = aiConfig?.enabledTools;\r\n if (globalEnabled && globalEnabled.length > 0) {\r\n return merged.filter((t) => globalEnabled.includes(t));\r\n }\r\n return merged;\r\n}\r\n\r\n/** Generate the AVAILABLE TOOLS documentation block for the given tools. */\r\nexport function getToolDescriptions(\r\n toolNames: string[],\r\n registry: Map<string, EnhancedToolDefinition>\r\n): string {\r\n const lines: string[] = ['AVAILABLE TOOLS (use ONLY these exact names):'];\r\n for (const name of toolNames) {\r\n const tool = registry.get(name);\r\n if (!tool) continue;\r\n // parameters may be either ToolParameter[] (builtin) or a plain JSON\r\n // Schema object (custom tools). Build the param line accordingly.\r\n let paramList: string;\r\n if (Array.isArray(tool.parameters)) {\r\n paramList = (tool.parameters as { name: string; type: string; description?: string }[])\r\n .map((p) => `${p.name}:${p.type}`)\r\n .join(', ');\r\n } else {\r\n const obj = tool.parameters as { properties?: Record<string, { type?: string }> };\r\n paramList = Object.entries(obj.properties ?? {})\r\n .map(([k, v]) => `${k}:${v.type ?? 'any'}`)\r\n .join(', ');\r\n }\r\n lines.push(`- ${name}: ${tool.description} \u2014 args { ${paramList} }`);\r\n }\r\n return lines.join('\\n');\r\n}\r\n\r\n/**\r\n * Build the full system prompt for an agent.\r\n */\r\nexport function buildSystemPrompt(\r\n agent: CoreAgentRole & { skills?: string[] },\r\n options: {\r\n tools: EnhancedToolDefinition[];\r\n toolNames: string[];\r\n aiConfig?: SystemPromptConfig;\r\n workspaceContext?: string;\r\n ragContext?: string;\r\n }\r\n): string {\r\n const { tools, toolNames, aiConfig, workspaceContext, ragContext } = options;\r\n const registry = new Map(tools.map((t) => [t.name, t]));\r\n\r\n // 1. Base modules (filtered by conditional predicates against the agent's skills)\r\n const skills = computeAgentSkills(agent, aiConfig);\r\n const baseModules = getBasePromptModules().filter(\r\n (m) => !m.conditional || m.conditional(skills)\r\n );\r\n\r\n // 2. Custom user modules (always last, after base)\r\n const customModules: SystemPromptModule[] = (aiConfig?.customPromptModules ?? []).map((m) => ({\r\n ...m,\r\n priority: 1000 + m.priority,\r\n }));\r\n\r\n const allModules = [...baseModules, ...customModules].sort((a, b) => a.priority - b.priority);\r\n\r\n const parts: string[] = [];\r\n for (const mod of allModules) {\r\n parts.push(mod.content);\r\n }\r\n\r\n // 3. Agent's inline role prompt (role-specific persona)\r\n if (agent.systemPrompt && agent.systemPrompt.trim()) {\r\n parts.push(`# Your Role\\n\\n${agent.systemPrompt}`);\r\n }\r\n\r\n // 4. Skill prompt fragments\r\n if (skills.length > 0) {\r\n parts.push(\r\n `# Active Skills\\n\\n` +\r\n skills.map((s) => `## ${s.name}\\n${s.systemPromptFragment}`).join('\\n\\n')\r\n );\r\n }\r\n\r\n // 5. Tool documentation\r\n const toolBlock = getToolDescriptions(toolNames, registry);\r\n if (toolNames.length > 0) {\r\n parts.push(`# Tools\\n\\n${toolBlock}`);\r\n }\r\n\r\n // 6. Context\r\n if (workspaceContext && workspaceContext.trim()) {\r\n parts.push(`# Current Workspace State\\n\\n${workspaceContext}`);\r\n }\r\n if (ragContext && ragContext.trim()) {\r\n parts.push(`# Retrieved Knowledge (RAG)\\n\\n${ragContext}`);\r\n }\r\n\r\n return parts.join('\\n\\n---\\n\\n');\r\n}\r\n", "import type { CouncilMessage, AgentRole } from '../types';\r\nimport { getCouncilAgents, swapMembers } from './roles';\r\nimport { getProviderTools, type ParsedToolCall } from './toolSchemas';\r\nimport { buildSystemPrompt, computeAgentTools } from './systemPromptBuilder';\r\nimport { getAllTools } from './tools';\r\nimport type { SystemPromptConfig } from '../types/systemTypes';\r\nimport type { BrainEvent, UsageBreakdown } from '../shared/events';\r\nimport { createBrainEvent } from '../shared/events';\r\nimport type {\r\n AgentMessage,\r\n AgentToolSpec,\r\n ProviderStreamFn,\r\n} from '../main/core/AgentHarness';\r\nimport { AgentHarness } from '../main/core/AgentHarness';\r\nimport { ToolRegistry } from '../main/core/tools/registry';\r\n\r\nexport type { BrainEvent } from '../shared/events';\r\nexport type {\r\n AgentMessage,\r\n AgentToolSpec,\r\n ProviderStreamFn,\r\n ProviderDelta,\r\n} from '../main/core/AgentHarness';\r\n\r\n/**\r\n * Minimal structural interface for a feedback store \u2014 matches the\r\n * `FeedbackStore` class in `electron/cli/councilFeedback.ts` without\r\n * importing it (keeps the core free of CLI-side deps).\r\n *\r\n * Used by `runCouncilPure` to opt-in to feedback-driven specialist ordering\r\n * via the `.ranked()` method (Task: council integration, v3-I deferred).\r\n */\r\nexport interface FeedbackStoreLike {\r\n /**\r\n * Return a NEW array sorted by feedback score, descending.\r\n * Members with no feedback are placed last, ordered by id ascending.\r\n */\r\n ranked<T extends { id: string }>(items: T[]): T[];\r\n}\r\n\r\nexport interface PureCouncilConfig {\r\n apiKey: string;\r\n glmApiKey?: string;\r\n provider?: string;\r\n model: string;\r\n councilSize: number;\r\n debateMode: boolean;\r\n ragContext: string;\r\n workspaceContext: string;\r\n completedAgentIds?: string[];\r\n existingOutputs?: { name: string; role: string; content: string }[];\r\n aiConfig?: SystemPromptConfig;\r\n agentModels?: Record<string, { providerId: string; model: string }>;\r\n customProviders?: Array<{\r\n id: string;\r\n baseUrl: string;\r\n authStyle: 'openai' | 'anthropic';\r\n models: string[];\r\n }>;\r\n providerApiKeys?: Record<string, string>;\r\n /**\r\n * Optional per-call member remap (Task I.3 close-out).\r\n *\r\n * When set (non-empty), `swapMembers(agents, memberSwap)` is applied\r\n * immediately after `getCouncilAgents()` and BEFORE filtering into\r\n * specialists / oracle / chairman. Useful for replacing `oracle` with a\r\n * custom critic on the fly. Throws `UnknownMemberError` on typo in either\r\n * side of the mapping.\r\n *\r\n * Backward-compat: when omitted, behavior is identical to pre-integration.\r\n *\r\n * @see swapMembers in src/agents/roles.ts\r\n */\r\n memberSwap?: Record<string, string>;\r\n /**\r\n * Optional feedback store for specialist ordering (Task I.2 close-out).\r\n *\r\n * When set, `feedbackStore.ranked(specialists)` is applied AFTER the swap\r\n * filter and BEFORE the specialists loop. Only specialists are ranked \u2014\r\n * oracle (debate-mode review) and chairman (synthesis) keep their fixed\r\n * positions. This preserves the existing semantics of the council while\r\n * letting good-rated specialists go first.\r\n *\r\n * Backward-compat: when omitted, specialists run in their default order.\r\n */\r\n feedbackStore?: FeedbackStoreLike;\r\n /** Provider stream function (injected for testability). MUST yield ProviderDelta. */\r\n providerStream: ProviderStreamFn;\r\n /** Optional event bus for emitting BrainEvents alongside the returned iterable. */\r\n eventBus?: import('../shared/eventBus').EventBus;\r\n /** Optional session id. Defaults to a UUID. */\r\n sessionId?: string;\r\n /**\r\n * Optional tool registry. When provided, each council member (specialist\r\n * and oracle) is given access to the registry via AgentHarness \u2014 tool_call\r\n * deltas trigger real tool execution and emit tool_execution_end events.\r\n * Without it, the council is text-only (legacy behavior).\r\n *\r\n * @see electron/main/core/AgentHarness.ts \u2014 `toolRegistry` field\r\n * @see electron/cli/toolRegistry.ts \u2014 `createBuiltinToolRegistry()`\r\n */\r\n tools?: ToolRegistry;\r\n /**\r\n * Max tool calls per member per turn. Enforced by truncating extra\r\n * tool_execution_start events to `tool_call_skipped` after this limit.\r\n * Default: 5. Set to 0 to disable tools entirely (overrides `tools`).\r\n */\r\n maxToolCallsPerTurn?: number;\r\n}\r\n\r\nexport interface PureCouncilCallbacks {\r\n onAgentStart?: (agent: AgentRole) => void;\r\n onAgentChunk?: (agent: AgentRole, chunk: string) => void;\r\n onAgentDone?: (agent: AgentRole, content: string, thinking?: string) => void;\r\n onSynthesisStart?: () => void;\r\n onSynthesisChunk?: (chunk: string) => void;\r\n onSynthesisDone?: (content: string, toolCalls?: ParsedToolCall[], thinking?: string) => void;\r\n /**\r\n * Fired after every council member (specialist, oracle, chairman) completes\r\n * its run, with the accumulated cost for that member (Task I.1, v3-I).\r\n * The same payload is also yielded as a `member_cost` BrainEvent in the\r\n * main event stream so JSONL sidecars and live consumers stay consistent.\r\n *\r\n * When the provider does not send `usage` (some don't honor\r\n * `stream_options.include_usage`), the token fields are 0. Tool calls\r\n * are counted from `tool_execution_start` events. Duration is wall-clock\r\n * around the member's AgentHarness run.\r\n */\r\n onMemberCost?: (cost: {\r\n memberId: string;\r\n name: string;\r\n promptTokens: number;\r\n completionTokens: number;\r\n totalTokens: number;\r\n durationMs: number;\r\n toolCalls: number;\r\n errored: boolean;\r\n }) => void;\r\n}\r\n\r\nconst QUESTION_MARKER = '---QUESTION---';\r\nconst QUESTION_END_MARKER = '---END---';\r\n\r\nexport interface ClarificationRequest {\r\n question: string;\r\n choices?: string[];\r\n context?: string;\r\n}\r\n\r\nexport function parseClarificationRequest(text: string): ClarificationRequest | null {\r\n const start = text.indexOf(QUESTION_MARKER);\r\n if (start < 0) return null;\r\n const rest = text.slice(start + QUESTION_MARKER.length);\r\n const end = rest.indexOf(QUESTION_END_MARKER);\r\n const block = end >= 0 ? rest.slice(0, end) : rest;\r\n const cleaned = block.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\r\n const objStart = cleaned.indexOf('{');\r\n const objEnd = cleaned.lastIndexOf('}');\r\n const jsonText = objStart >= 0 && objEnd > objStart ? cleaned.slice(objStart, objEnd + 1) : cleaned;\r\n try {\r\n const parsed = JSON.parse(jsonText) as Partial<ClarificationRequest>;\r\n if (typeof parsed.question !== 'string' || !parsed.question.trim()) return null;\r\n return {\r\n question: parsed.question.trim(),\r\n choices: Array.isArray(parsed.choices)\r\n ? parsed.choices.filter((c): c is string => typeof c === 'string' && c.trim().length > 0).map((c) => c.trim())\r\n : undefined,\r\n context: typeof parsed.context === 'string' ? parsed.context.trim() : undefined,\r\n };\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function parseThinking(text: string): string {\r\n const match = text.match(/<think>([\\s\\S]*?)<\\/think>/);\r\n return match ? match[1].trim() : '';\r\n}\r\n\r\nexport function cleanAgentContent(text: string): string {\r\n return text\r\n .replace(/<think>[\\s\\S]*?<\\/think>/g, '')\r\n .replace(/<minimax:tool_call>[\\s\\S]*?<\\/minimax:tool_call>/g, '')\r\n .replace(/---QUESTION---[\\s\\S]*?---END---/g, '')\r\n .trim();\r\n}\r\n\r\nfunction buildAgentMessages(\r\n agent: AgentRole,\r\n userMessage: string,\r\n ragContext: string,\r\n workspaceContext: string,\r\n priorOutputs: { name: string; role: string; content: string }[],\r\n aiConfig?: SystemPromptConfig,\r\n): AgentMessage[] {\r\n const toolNames = computeAgentTools(agent, aiConfig);\r\n const enhancedSystemPrompt = buildSystemPrompt(agent, {\r\n tools: getAllTools(),\r\n toolNames,\r\n aiConfig,\r\n workspaceContext,\r\n ragContext,\r\n });\r\n const messages: AgentMessage[] = [\r\n { role: 'system', content: enhancedSystemPrompt },\r\n { role: 'system', content: 'IMPORTANT: Before making any tool calls or expensive operations, check if the information already exists in the shared context from previous agents. Avoid redundant work.' },\r\n ];\r\n if (ragContext) {\r\n messages.push({ role: 'system', content: `Relevant workspace context (from RAG retrieval):\\n${ragContext}` });\r\n }\r\n if (workspaceContext) {\r\n messages.push({ role: 'system', content: `Current workspace state:\\n${workspaceContext}` });\r\n }\r\n if (priorOutputs.length > 0) {\r\n const summary = priorOutputs.map((o) => `[${o.name} - ${o.role}]: ${o.content}`).join('\\n\\n');\r\n messages.push({ role: 'user', content: `Previous council members have said:\\n${summary}\\n\\nOriginal user request: ${userMessage}` });\r\n } else {\r\n messages.push({ role: 'user', content: userMessage });\r\n }\r\n return messages;\r\n}\r\n\r\n/**\r\n * PURE council orchestration. Loops through specialists, optionally runs\r\n * the oracle (debate mode), then runs the chairman synthesis.\r\n *\r\n * Each agent invocation creates an AgentHarness internally that consumes\r\n * the providerStream and emits BrainEvents. The orchestrator aggregates\r\n * text deltas into a single message per agent.\r\n *\r\n * Returns AsyncIterable<BrainEvent> for the full council run.\r\n */\r\nexport async function* runCouncilPure(\r\n userMessage: string,\r\n config: PureCouncilConfig,\r\n callbacks: PureCouncilCallbacks = {},\r\n): AsyncIterable<BrainEvent> {\r\n const baseAgents = getCouncilAgents(config.councilSize);\r\n // Apply optional member swap (Task I.3 close-out). Throws UnknownMemberError\r\n // on typo in either side of the mapping \u2014 caller decides whether to catch\r\n // or surface. When `memberSwap` is undefined/empty, swapMembers returns a\r\n // shallow copy (no-op in effect).\r\n const agents = swapMembers(baseAgents, config.memberSwap ?? {});\r\n const messages: CouncilMessage[] = [];\r\n const completedIds = new Set(config.completedAgentIds ?? []);\r\n const agentOutputs: { name: string; role: string; content: string }[] = [\r\n ...(config.existingOutputs ?? []),\r\n ];\r\n const sessionId = config.sessionId ?? crypto.randomUUID();\r\n\r\n // Emit council start\r\n yield {\r\n type: 'agent_start',\r\n id: crypto.randomUUID(),\r\n ts: Date.now(),\r\n sessionId,\r\n model: config.model,\r\n provider: config.provider ?? 'minimax',\r\n };\r\n\r\n /**\r\n * Build a MemberCost payload and dispatch it via the callback + the\r\n * event stream. Used by the I.1 per-member cost tracking \u2014 fires\r\n * once per member (specialist, oracle, chairman) at the end of its run.\r\n */\r\n const emitMemberCost = (input: {\r\n memberId: string;\r\n name: string;\r\n usage: UsageBreakdown | null;\r\n durationMs: number;\r\n toolCalls: number;\r\n errored: boolean;\r\n }): void => {\r\n const usage = input.usage;\r\n const prompt = usage?.promptTokens ?? 0;\r\n const completion = usage?.completionTokens ?? 0;\r\n const cost = {\r\n memberId: input.memberId,\r\n name: input.name,\r\n promptTokens: prompt,\r\n completionTokens: completion,\r\n totalTokens: usage?.totalTokens ?? prompt + completion,\r\n durationMs: Math.max(0, Math.round(input.durationMs)),\r\n toolCalls: input.toolCalls,\r\n errored: input.errored,\r\n };\r\n callbacks.onMemberCost?.(cost);\r\n };\r\n // Exposed to the harness loop below via closure \u2014 `yield` inside an\r\n // async generator can't happen from a non-async helper, so the actual\r\n // `member_cost` event is yielded inline at each call site (see the\r\n // specialist / oracle / chairman loops). The helper only owns the\r\n // callback dispatch to keep call sites short.\r\n\r\n // Apply optional feedback-driven specialist ordering (Task I.2 close-out).\r\n // Oracle and chairman are extracted BEFORE ranking so their positions are\r\n // fixed (debate review + final synthesis roles are not reorderable).\r\n const allSpecialists = agents.filter((a) => a.id !== 'chairman' && a.id !== 'oracle');\r\n const specialists = config.feedbackStore\r\n ? config.feedbackStore.ranked(allSpecialists)\r\n : allSpecialists;\r\n const oracle = agents.find((a) => a.id === 'oracle');\r\n const chairman = agents.find((a) => a.id === 'chairman');\r\n\r\n for (const agent of specialists) {\r\n if (completedIds.has(agent.id)) continue;\r\n callbacks.onAgentStart?.(agent);\r\n\r\n const override = config.agentModels?.[agent.id];\r\n const effectiveProvider = override?.providerId ?? config.provider ?? 'minimax';\r\n const effectiveModel = override?.model ?? config.model;\r\n\r\n const agentToolNames = computeAgentTools(agent, config.aiConfig);\r\n const agentTools: AgentToolSpec[] = agentToolNames.length > 0\r\n ? getProviderTools(agentToolNames).map((t) => ({\r\n name: t.function.name,\r\n description: t.function.description,\r\n parameters: t.function.parameters as Record<string, unknown>,\r\n }))\r\n : [];\r\n\r\n const harness = new AgentHarness({\r\n model: effectiveModel,\r\n provider: effectiveProvider,\r\n sessionId,\r\n messages: buildAgentMessages(agent, userMessage, config.ragContext, config.workspaceContext, agentOutputs, config.aiConfig),\r\n tools: agentTools,\r\n eventBus: config.eventBus,\r\n toolRegistry: config.tools,\r\n // Task G.2 \u2014 enforce per-turn tool-call limit (carryover from v3-C C.1.5).\r\n // Council members can otherwise fire N tool calls in one turn and blow\r\n // the message context. Default to 5 if not set by caller.\r\n maxToolCallsPerTurn: config.maxToolCallsPerTurn ?? 5,\r\n providerStream: (params) => config.providerStream({\r\n ...params,\r\n } as never),\r\n });\r\n\r\n let fullText = '';\r\n let toolCalls = 0;\r\n let usage: UsageBreakdown | null = null;\r\n let errored = false;\r\n const memberStart = Date.now();\r\n try {\r\n for await (const event of harness.run()) {\r\n yield event;\r\n if (event.type === 'tool_execution_start') {\r\n toolCalls += 1;\r\n }\r\n if (event.type === 'message_end' && event.usage) {\r\n usage = event.usage;\r\n }\r\n if (event.type === 'message_delta') {\r\n fullText += event.delta;\r\n callbacks.onAgentChunk?.(agent, event.delta);\r\n }\r\n }\r\n } catch (err) {\r\n // eslint-disable-next-line no-console\r\n console.error(`[council] agent \"${agent.id}\" failed:`, err);\r\n fullText = `Error: ${err instanceof Error ? err.message : 'Unknown'}`;\r\n errored = true;\r\n }\r\n const memberDuration = Date.now() - memberStart;\r\n emitMemberCost({\r\n memberId: agent.id,\r\n name: agent.name,\r\n usage,\r\n durationMs: memberDuration,\r\n toolCalls,\r\n errored,\r\n });\r\n yield createBrainEvent('member_cost', sessionId, {\r\n cost: {\r\n memberId: agent.id,\r\n name: agent.name,\r\n promptTokens: usage?.promptTokens ?? 0,\r\n completionTokens: usage?.completionTokens ?? 0,\r\n totalTokens: usage?.totalTokens ?? (usage?.promptTokens ?? 0) + (usage?.completionTokens ?? 0),\r\n durationMs: memberDuration,\r\n toolCalls,\r\n errored,\r\n },\r\n });\r\n\r\n const thinking = parseThinking(fullText);\r\n const cleaned = cleanAgentContent(fullText);\r\n callbacks.onAgentDone?.(agent, cleaned, thinking || undefined);\r\n\r\n messages.push({\r\n id: crypto.randomUUID().slice(0, 12),\r\n role: 'assistant',\r\n content: cleaned,\r\n thinking: thinking || undefined,\r\n agentId: agent.id,\r\n agentName: agent.name,\r\n agentRole: agent.role,\r\n agentColor: agent.color,\r\n timestamp: Date.now(),\r\n });\r\n agentOutputs.push({ name: agent.name, role: agent.role, content: cleaned });\r\n\r\n const clarification = parseClarificationRequest(fullText);\r\n if (clarification) {\r\n // Note: Pure council doesn't pause for user clarifications.\r\n // The CLI caller (Phase 14) handles this at the slash-command level.\r\n // For now, just inject the question into shared context as a comment.\r\n agentOutputs.push({\r\n name: 'Clarification',\r\n role: 'system',\r\n content: `(Agent ${agent.name} asked: ${clarification.question})`,\r\n });\r\n }\r\n }\r\n\r\n // Oracle (debate mode)\r\n if (config.debateMode && oracle && !completedIds.has(oracle.id)) {\r\n callbacks.onAgentStart?.(oracle);\r\n\r\n const override = config.agentModels?.[oracle.id];\r\n const effectiveProvider = override?.providerId ?? config.provider ?? 'minimax';\r\n const effectiveModel = override?.model ?? config.model;\r\n\r\n const anonymized = agentOutputs.map((o, i) => ({\r\n ...o,\r\n name: `Agent ${i + 1}`,\r\n role: 'Specialist',\r\n }));\r\n\r\n const harness = new AgentHarness({\r\n model: effectiveModel,\r\n provider: effectiveProvider,\r\n sessionId,\r\n messages: buildAgentMessages(\r\n oracle,\r\n `Review these proposals for: \"${userMessage}\"`,\r\n '',\r\n '',\r\n anonymized,\r\n config.aiConfig,\r\n ),\r\n tools: [],\r\n eventBus: config.eventBus,\r\n toolRegistry: config.tools,\r\n // Task G.2 \u2014 same per-turn limit applies to oracle.\r\n maxToolCallsPerTurn: config.maxToolCallsPerTurn ?? 5,\r\n providerStream: (params) => config.providerStream({\r\n ...params,\r\n } as never),\r\n });\r\n\r\n let fullText = '';\r\n let toolCalls = 0;\r\n let usage: UsageBreakdown | null = null;\r\n let errored = false;\r\n const memberStart = Date.now();\r\n try {\r\n for await (const event of harness.run()) {\r\n yield event;\r\n if (event.type === 'tool_execution_start') {\r\n toolCalls += 1;\r\n }\r\n if (event.type === 'message_end' && event.usage) {\r\n usage = event.usage;\r\n }\r\n if (event.type === 'message_delta') {\r\n fullText += event.delta;\r\n callbacks.onAgentChunk?.(oracle, event.delta);\r\n }\r\n }\r\n } catch (err) {\r\n // eslint-disable-next-line no-console\r\n console.error('[council] oracle failed:', err);\r\n fullText = `Review error: ${err instanceof Error ? err.message : 'Unknown'}`;\r\n errored = true;\r\n }\r\n const memberDuration = Date.now() - memberStart;\r\n emitMemberCost({\r\n memberId: oracle.id,\r\n name: oracle.name,\r\n usage,\r\n durationMs: memberDuration,\r\n toolCalls,\r\n errored,\r\n });\r\n yield createBrainEvent('member_cost', sessionId, {\r\n cost: {\r\n memberId: oracle.id,\r\n name: oracle.name,\r\n promptTokens: usage?.promptTokens ?? 0,\r\n completionTokens: usage?.completionTokens ?? 0,\r\n totalTokens: usage?.totalTokens ?? (usage?.promptTokens ?? 0) + (usage?.completionTokens ?? 0),\r\n durationMs: memberDuration,\r\n toolCalls,\r\n errored,\r\n },\r\n });\r\n\r\n const thinking = parseThinking(fullText);\r\n const cleaned = cleanAgentContent(fullText);\r\n callbacks.onAgentDone?.(oracle, cleaned, thinking || undefined);\r\n\r\n messages.push({\r\n id: crypto.randomUUID().slice(0, 12),\r\n role: 'assistant',\r\n content: cleaned,\r\n thinking: thinking || undefined,\r\n agentId: oracle.id,\r\n agentName: oracle.name,\r\n agentRole: oracle.role,\r\n agentColor: oracle.color,\r\n isReview: true,\r\n timestamp: Date.now(),\r\n });\r\n agentOutputs.push({ name: oracle.name, role: oracle.role, content: cleaned });\r\n }\r\n\r\n // Chairman synthesis (Phase 13 will add full chairman integration)\r\n if (chairman && !completedIds.has(chairman.id)) {\r\n callbacks.onSynthesisStart?.();\r\n // For now, chairman just observes \u2014 full synthesis is deferred to 13.3+\r\n callbacks.onSynthesisDone?.('Chairman synthesis: see agent outputs above.');\r\n // Task I.1 \u2014 emit a member_cost for the chairman too. The chairman\r\n // path is currently stub (no harness.run), so durationMs=0 and no\r\n // usage. Future full-chairman integration can wire the same\r\n // per-member tracking by extending this block.\r\n emitMemberCost({\r\n memberId: chairman.id,\r\n name: chairman.name,\r\n usage: null,\r\n durationMs: 0,\r\n toolCalls: 0,\r\n errored: false,\r\n });\r\n yield createBrainEvent('member_cost', sessionId, {\r\n cost: {\r\n memberId: chairman.id,\r\n name: chairman.name,\r\n promptTokens: 0,\r\n completionTokens: 0,\r\n totalTokens: 0,\r\n durationMs: 0,\r\n toolCalls: 0,\r\n errored: false,\r\n },\r\n });\r\n }\r\n\r\n yield {\r\n type: 'agent_end',\r\n id: crypto.randomUUID(),\r\n ts: Date.now(),\r\n sessionId,\r\n reason: 'completed',\r\n durationMs: 0,\r\n };\r\n}\r\n", "/**\r\n * councilDispatcher \u2014 CLI-side bridge to runCouncilPure.\r\n *\r\n * Builds a minimal {@link PureCouncilConfig} from CLI env (apiKey, model,\r\n * provider), wires the openai-compatible provider stream, and yields the\r\n * council run as an AsyncIterable<BrainEvent>. The CLI app then renders\r\n * events to the chat and persists them via SessionJsonlWriter.\r\n *\r\n * Default config:\r\n * - councilSize: 3 (sisyphus + prometheus + hephaestus \u2014 no oracle)\r\n * - debateMode: false (no oracle-debate loop)\r\n * - ragContext / workspaceContext: empty (CLI doesn't have a vault here)\r\n *\r\n * Phase 14.7: multi-agent council invocation from the Ink CLI.\r\n *\r\n * @see docs/plans/2026-06-28-zelari-code.md (Task 14.7)\r\n */\r\n\r\nimport {\r\n runCouncilPure,\r\n type PureCouncilConfig,\r\n} from '../agents/councilApi.js';\r\nimport type { BrainEvent } from '../shared/events.js';\r\nimport type { EventBus } from '../shared/eventBus.js';\r\nimport type { ProviderStreamFn } from '../main/core/AgentHarness.js';\r\nimport type { ToolRegistry } from '../main/core/tools/registry.js';\r\nimport type { FeedbackStore } from './councilFeedback.js';\r\n\r\nexport interface CouncilDispatchOptions {\r\n /** API key for the provider (e.g. OPENAI_API_KEY). */\r\n apiKey: string;\r\n /** Model identifier (e.g. 'grok-4'). */\r\n model: string;\r\n /** Provider id (default 'openai-compatible'). */\r\n provider?: string;\r\n /** Number of council members (default 3). */\r\n councilSize?: number;\r\n /** Whether to run oracle-debate (default false). */\r\n debateMode?: boolean;\r\n /** Optional session id (default = UUID). */\r\n sessionId?: string;\r\n /** Optional event bus for fan-out alongside the returned iterable. */\r\n eventBus?: EventBus;\r\n /** Provider stream function (injected for testability). */\r\n providerStream: ProviderStreamFn;\r\n /** Optional RAG context (default empty). */\r\n ragContext?: string;\r\n /** Optional workspace context (default empty). */\r\n workspaceContext?: string;\r\n /**\r\n * Optional tool registry. When provided, each council member gets\r\n * real tool execution via AgentHarness \u2014 tool_call deltas invoke\r\n * registered tools and emit tool_execution_end events.\r\n *\r\n * Typically created via `createBuiltinToolRegistry()` from\r\n * `electron/cli/toolRegistry.ts` which pre-wires the 5 built-in\r\n * tools (read/write/edit/bash/grep) wrapped with the safety layer.\r\n */\r\n tools?: ToolRegistry;\r\n /**\r\n * Max tool calls per member per turn. See PureCouncilConfig for details.\r\n * Forwarded to runCouncilPure.\r\n */\r\n maxToolCallsPerTurn?: number;\r\n /**\r\n * Optional feedback store for specialist ordering (Task I.2 close-out).\r\n * Forwarded to runCouncilPure as `feedbackStore`.\r\n */\r\n feedbackStore?: FeedbackStore;\r\n}\r\n\r\nexport class CouncilDispatchError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = 'CouncilDispatchError';\r\n }\r\n}\r\n\r\n/**\r\n * Run a council on `userMessage` and yield the resulting BrainEvents.\r\n *\r\n * Throws CouncilDispatchError synchronously if apiKey is missing.\r\n * The returned async iterable emits the full council lifecycle; consumers\r\n * should iterate to completion or break early to cancel.\r\n */\r\nexport async function* dispatchCouncil(\r\n userMessage: string,\r\n options: CouncilDispatchOptions,\r\n): AsyncIterable<BrainEvent> {\r\n if (!options.apiKey || options.apiKey.trim().length === 0) {\r\n throw new CouncilDispatchError(\r\n 'Missing apiKey \u2014 set OPENAI_API_KEY (or pass it via env) before invoking /council.',\r\n );\r\n }\r\n if (!userMessage || userMessage.trim().length === 0) {\r\n throw new CouncilDispatchError('Empty userMessage \u2014 /council requires a non-empty input.');\r\n }\r\n\r\n const config: PureCouncilConfig = {\r\n apiKey: options.apiKey,\r\n provider: options.provider ?? 'openai-compatible',\r\n model: options.model,\r\n councilSize: options.councilSize ?? 3,\r\n debateMode: options.debateMode ?? false,\r\n ragContext: options.ragContext ?? '',\r\n workspaceContext: options.workspaceContext ?? '',\r\n providerStream: options.providerStream,\r\n eventBus: options.eventBus,\r\n sessionId: options.sessionId,\r\n tools: options.tools,\r\n maxToolCallsPerTurn: options.maxToolCallsPerTurn,\r\n feedbackStore: options.feedbackStore,\r\n };\r\n\r\n yield* runCouncilPure(userMessage, config, {});\r\n}", "/**\r\n * councilFeedback \u2014 persistent feedback store for council members (Task I.2, v3-I).\r\n *\r\n * Stores user ratings (1-5) per member across sessions in a JSON file under\r\n * the user's home directory. Used by `/council-feedback <memberId> <1-5> [note]`\r\n * to register feedback, and (optionally) by `runCouncilPure` to rank members\r\n * by historical score.\r\n *\r\n * Pure node:fs \u2014 no Electron deps, browser-importable for jsdom tests.\r\n * Env override: `ANATHEMA_COUNCIL_FEEDBACK_FILE` (useful for tests + CI).\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3-I.md (I.2)\r\n */\r\n\r\nimport {\r\n promises as fs,\r\n existsSync,\r\n readFileSync,\r\n writeFileSync,\r\n mkdirSync,\r\n} from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\n\r\nexport interface FeedbackEntry {\r\n /** When the feedback was recorded (epoch ms). */\r\n ts: number;\r\n /** Member id (e.g. 'sisyphus'). */\r\n memberId: string;\r\n /** Score, 1-5 inclusive. */\r\n score: number;\r\n /** Optional free-form note from the user. */\r\n note?: string;\r\n /** Optional session id for cross-referencing. */\r\n sessionId?: string;\r\n}\r\n\r\nexport interface MemberStats {\r\n memberId: string;\r\n /** Number of feedback entries for this member. */\r\n count: number;\r\n /** Average score (0 when count=0). */\r\n avg: number;\r\n /** Most recent feedback timestamp (0 when count=0). */\r\n lastTs: number;\r\n}\r\n\r\nexport interface FeedbackStoreOptions {\r\n /** Override the file path. Useful for tests. */\r\n file?: string;\r\n /** Override `now()` for tests. */\r\n now?: () => number;\r\n}\r\n\r\nexport class FeedbackStore {\r\n private readonly file: string;\r\n private readonly now: () => number;\r\n private entries: FeedbackEntry[] = [];\r\n\r\n constructor(options: FeedbackStoreOptions = {}) {\r\n this.file = options.file\r\n ?? (process.env.ANATHEMA_COUNCIL_FEEDBACK_FILE\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'council-feedback.json'));\r\n this.now = options.now ?? Date.now;\r\n this.load();\r\n }\r\n\r\n /**\r\n * Record a feedback entry. Validates score in [1,5]. Throws on invalid\r\n * input \u2014 caller's job to validate user input first.\r\n */\r\n record(input: {\r\n memberId: string;\r\n score: number;\r\n note?: string;\r\n sessionId?: string;\r\n ts?: number;\r\n }): FeedbackEntry {\r\n if (!input.memberId || input.memberId.trim().length === 0) {\r\n throw new Error('FeedbackStore.record: memberId is required');\r\n }\r\n if (!Number.isInteger(input.score) || input.score < 1 || input.score > 5) {\r\n throw new Error(\r\n `FeedbackStore.record: score must be an integer in [1,5], got ${input.score}`,\r\n );\r\n }\r\n const entry: FeedbackEntry = {\r\n ts: input.ts ?? this.now(),\r\n memberId: input.memberId.trim(),\r\n score: input.score,\r\n ...(input.note ? { note: input.note } : {}),\r\n ...(input.sessionId ? { sessionId: input.sessionId } : {}),\r\n };\r\n this.entries.push(entry);\r\n this.save();\r\n return entry;\r\n }\r\n\r\n /** Aggregate stats for one member. Returns defaults (0/0/0) when unknown. */\r\n getStats(memberId: string): MemberStats {\r\n const filtered = this.entries.filter((e) => e.memberId === memberId);\r\n if (filtered.length === 0) {\r\n return { memberId, count: 0, avg: 0, lastTs: 0 };\r\n }\r\n let sum = 0;\r\n let lastTs = 0;\r\n for (const e of filtered) {\r\n sum += e.score;\r\n if (e.ts > lastTs) lastTs = e.ts;\r\n }\r\n return {\r\n memberId,\r\n count: filtered.length,\r\n avg: sum / filtered.length,\r\n lastTs,\r\n };\r\n }\r\n\r\n /** All entries for a member, newest first. */\r\n getEntries(memberId: string): FeedbackEntry[] {\r\n return this.entries\r\n .filter((e) => e.memberId === memberId)\r\n .sort((a, b) => b.ts - a.ts);\r\n }\r\n\r\n /**\r\n * Sort an array of `{id: string}` objects by their feedback score, descending.\r\n * Members with no feedback are placed at the end, ordered by id ascending\r\n * (deterministic). Ties broken by count desc, then id asc.\r\n *\r\n * Returns a NEW array \u2014 does not mutate the input.\r\n */\r\n ranked<T extends { id: string }>(items: T[]): T[] {\r\n const stats = new Map<string, MemberStats>();\r\n for (const item of items) {\r\n stats.set(item.id, this.getStats(item.id));\r\n }\r\n return [...items].sort((a, b) => {\r\n const sa = stats.get(a.id)!;\r\n const sb = stats.get(b.id)!;\r\n if (sb.avg !== sa.avg) return sb.avg - sa.avg;\r\n if (sb.count !== sa.count) return sb.count - sa.count;\r\n return a.id.localeCompare(b.id);\r\n });\r\n }\r\n\r\n /**\r\n * Clear feedback entries. When `memberId` is given, only that member's\r\n * entries are removed; otherwise the entire store is wiped. Returns the\r\n * number of entries removed.\r\n */\r\n clear(memberId?: string): number {\r\n const before = this.entries.length;\r\n if (memberId === undefined) {\r\n this.entries = [];\r\n } else {\r\n this.entries = this.entries.filter((e) => e.memberId !== memberId);\r\n }\r\n const removed = before - this.entries.length;\r\n if (removed > 0) this.save();\r\n return removed;\r\n }\r\n\r\n /** All entries, newest first. Useful for `/council-feedback --list`. */\r\n listAll(): FeedbackEntry[] {\r\n return [...this.entries].sort((a, b) => b.ts - a.ts);\r\n }\r\n\r\n // --- persistence ---------------------------------------------------------\r\n\r\n private load(): void {\r\n if (!existsSync(this.file)) return;\r\n try {\r\n const raw = readFileSync(this.file, 'utf-8');\r\n const parsed = JSON.parse(raw) as { entries?: FeedbackEntry[] };\r\n if (parsed && Array.isArray(parsed.entries)) {\r\n // Defensive: only keep entries with valid shape.\r\n this.entries = parsed.entries.filter(\r\n (e) =>\r\n e\r\n && typeof e.ts === 'number'\r\n && typeof e.memberId === 'string'\r\n && Number.isInteger(e.score)\r\n && e.score >= 1\r\n && e.score <= 5,\r\n );\r\n }\r\n } catch {\r\n // Corrupt file \u2014 start fresh. Caller can recover via clear() + re-record.\r\n }\r\n }\r\n\r\n private save(): void {\r\n mkdirSync(path.dirname(this.file), { recursive: true });\r\n writeFileSync(\r\n this.file,\r\n JSON.stringify({ entries: this.entries }, null, 2),\r\n { encoding: 'utf-8', mode: 0o600 },\r\n );\r\n }\r\n\r\n /** Async variant of load for callers that prefer async IO. */\r\n async loadAsync(): Promise<void> {\r\n try {\r\n const raw = await fs.readFile(this.file, 'utf-8');\r\n const parsed = JSON.parse(raw) as { entries?: FeedbackEntry[] };\r\n if (parsed && Array.isArray(parsed.entries)) {\r\n this.entries = parsed.entries.filter(\r\n (e) =>\r\n e\r\n && typeof e.ts === 'number'\r\n && typeof e.memberId === 'string'\r\n && Number.isInteger(e.score)\r\n && e.score >= 1\r\n && e.score <= 5,\r\n );\r\n }\r\n } catch {\r\n // ENOENT or JSON parse failure \u2014 fall back to in-memory state.\r\n }\r\n }\r\n}\r\n", "/**\r\n * modelDiscovery \u2014 auto-discover available models for each provider.\r\n *\r\n * Triggers:\r\n * - After `/login <provider> <key>` succeeds (keyStore write)\r\n * - After `/login grok` (OAuth) succeeds\r\n * - On user request via `/model refresh` or `/models refresh`\r\n * - On startup if cache is older than `staleAfterMs` (default 6h)\r\n *\r\n * Why dynamic discovery? Providers (xAI, Z.AI, MiniMax, OpenAI) add/remove\r\n * models frequently \u2014 hardcoding a list in `providerDefaults` makes the user\r\n * see stale choices. After auth we hit the provider's `/v1/models` endpoint\r\n * and cache the IDs in `~/.tmp/anathema-coder/models.json`.\r\n *\r\n * Pure node:fs + fetch \u2014 no Electron deps, browser-importable for jsdom tests.\r\n * Env override: `ANATHEMA_MODELS_FILE` (useful for tests + CI).\r\n *\r\n * @see docs/plans/2026-06-30-anathema-coder-v3-U.md\r\n */\r\n\r\nimport { promises as fs, existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';\r\nimport { homedir } from 'node:os';\r\nimport path from 'node:path';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Types\r\n// ---------------------------------------------------------------------------\r\n\r\nexport type ProviderId = 'grok' | 'glm' | 'minimax' | 'openai-compatible';\r\n\r\nexport interface DiscoveredModel {\r\n /** Model id (e.g. 'grok-4-fast-reasoning', 'glm-4.6'). */\r\n id: string;\r\n /** Display name (e.g. 'Grok 4 Fast Reasoning'). Falls back to id. */\r\n displayName?: string;\r\n /** Provider-reported creation timestamp (epoch seconds). */\r\n created?: number;\r\n /** Owner reported by provider (e.g. 'xai', 'openai'). */\r\n ownedBy?: string;\r\n /** Optional context window in tokens (parsed from `context_length` if present). */\r\n contextLength?: number;\r\n}\r\n\r\nexport interface ProviderModelsEntry {\r\n /** Array of discovered models (sorted by id). */\r\n models: DiscoveredModel[];\r\n /** Epoch ms when the list was fetched. */\r\n fetchedAt: number;\r\n /** The base URL used for the discovery call. */\r\n baseUrl: string;\r\n /** Optional error from the last fetch (e.g. stale cache after a failed refresh). */\r\n lastError?: string;\r\n}\r\n\r\nexport interface ModelsRegistry {\r\n grok?: ProviderModelsEntry;\r\n glm?: ProviderModelsEntry;\r\n minimax?: ProviderModelsEntry;\r\n 'openai-compatible'?: ProviderModelsEntry;\r\n}\r\n\r\nexport interface DiscoverOptions {\r\n /** Override the fetch implementation (used in tests). */\r\n fetchImpl?: typeof fetch;\r\n /** Override the base URL for the provider (default: provider default). */\r\n baseUrl?: string;\r\n /** Bearer token to use (defaults: API key from keyStore for non-grok, OAuth token for grok). */\r\n authToken?: string;\r\n /** Skip cache write (default: false). */\r\n skipCacheWrite?: boolean;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Provider endpoint map\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Default base URL per provider for `/v1/models` discovery. */\r\nconst PROVIDER_BASE_URLS: Record<ProviderId, string> = {\r\n 'grok': 'https://api.x.ai/v1',\r\n 'glm': 'https://api.z.ai/api/paas/v4',\r\n 'minimax': 'https://api.minimaxi.chat/v1',\r\n 'openai-compatible': 'https://api.openai.com/v1',\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Cache file location\r\n// ---------------------------------------------------------------------------\r\n\r\nfunction defaultModelsFilePath(): string {\r\n return process.env.ANATHEMA_MODELS_FILE\r\n ?? path.join(homedir(), '.tmp', 'anathema-coder', 'models.json');\r\n}\r\n\r\nexport function getModelsFilePath(): string {\r\n return defaultModelsFilePath();\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Sync read (used at app start)\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Read the on-disk models registry. Returns empty object if file missing/corrupt. */\r\nexport function loadModelsRegistry(file: string = getModelsFilePath()): ModelsRegistry {\r\n if (!existsSync(file)) return {};\r\n try {\r\n const raw = readFileSync(file, 'utf-8');\r\n const parsed = JSON.parse(raw);\r\n if (!parsed || typeof parsed !== 'object') return {};\r\n return parsed as ModelsRegistry;\r\n } catch {\r\n return {};\r\n }\r\n}\r\n\r\n/** Read cached models for a single provider. Returns undefined if not cached. */\r\nexport function getCachedModels(\r\n provider: ProviderId,\r\n file: string = getModelsFilePath()\r\n): ProviderModelsEntry | undefined {\r\n const registry = loadModelsRegistry(file);\r\n return registry[provider];\r\n}\r\n\r\n/** Returns true if the cache exists and is older than `maxAgeMs`. */\r\nexport function isModelsCacheStale(\r\n provider: ProviderId,\r\n maxAgeMs: number = 6 * 60 * 60 * 1000, // 6 hours\r\n file: string = getModelsFilePath(),\r\n now: number = Date.now()\r\n): boolean {\r\n const entry = getCachedModels(provider, file);\r\n if (!entry) return true;\r\n return (now - entry.fetchedAt) > maxAgeMs;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Async write (atomic: write to .tmp, rename) \u2014 serialized via in-memory mutex\r\n// to avoid concurrent discoveries clobbering each other (race on rename).\r\n// Also wraps the read-modify-write cycle so two parallel calls don't both\r\n// observe an empty registry and then clobber each other.\r\n// ---------------------------------------------------------------------------\r\n\r\nlet writeChain: Promise<unknown> = Promise.resolve();\r\n\r\nasync function withRegistryLock<T>(fn: () => Promise<T>): Promise<T> {\r\n const next = writeChain.then(async () => fn());\r\n writeChain = next.catch(() => undefined);\r\n return next;\r\n}\r\n\r\nasync function readModifyWriteRegistry(\r\n mutator: (current: ModelsRegistry) => ModelsRegistry,\r\n file: string = getModelsFilePath()\r\n): Promise<ModelsRegistry> {\r\n return withRegistryLock(async () => {\r\n // Read latest on-disk (other concurrent calls may have written since\r\n // we last read).\r\n const onDisk = loadModelsRegistry(file);\r\n const merged = mutator(onDisk);\r\n await fs.mkdir(path.dirname(file), { recursive: true });\r\n const tmp = `${file}.tmp-${process.pid}-${Date.now()}`;\r\n await fs.writeFile(tmp, JSON.stringify(merged, null, 2), 'utf-8');\r\n await fs.rename(tmp, file);\r\n return merged;\r\n });\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Auth resolution\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Synchronous auth resolution \u2014 reads keyStore via dynamic import to keep this module browser-friendly. */\r\nasync function resolveAuthToken(\r\n provider: ProviderId,\r\n options: { authToken?: string }\r\n): Promise<string | undefined> {\r\n if (options.authToken) return options.authToken;\r\n // Late import: keyStore uses node:fs/promises, no Electron deps.\r\n const { resolveApiKeyWithMeta, getOAuthToken } = await import('./keyStore.js');\r\n if (provider === 'grok') {\r\n const oauth = getOAuthToken('grok');\r\n if (oauth?.apiKey) return oauth.apiKey;\r\n }\r\n const resolved = await resolveApiKeyWithMeta(provider);\r\n return resolved?.apiKey;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// /v1/models response parsing (OpenAI-compat schema)\r\n// ---------------------------------------------------------------------------\r\n\r\ninterface OpenAIModelsResponse {\r\n object: 'list';\r\n data: Array<{\r\n id: string;\r\n object?: 'model';\r\n created?: number;\r\n owned_by?: string;\r\n [extra: string]: unknown;\r\n }>;\r\n}\r\n\r\nfunction parseOpenAIModelsResponse(json: unknown, baseUrl: string): DiscoveredModel[] {\r\n if (!json || typeof json !== 'object') return [];\r\n const obj = json as Partial<OpenAIModelsResponse>;\r\n if (!Array.isArray(obj.data)) return [];\r\n const models: DiscoveredModel[] = [];\r\n for (const m of obj.data) {\r\n if (!m || typeof m.id !== 'string') continue;\r\n const out: DiscoveredModel = { id: m.id };\r\n if (typeof m.created === 'number') out.created = m.created;\r\n if (typeof m.owned_by === 'string') out.ownedBy = m.owned_by;\r\n // Optional context length (some providers include it as extra field)\r\n const ctx = (m as Record<string, unknown>).context_length;\r\n if (typeof ctx === 'number') out.contextLength = ctx;\r\n models.push(out);\r\n }\r\n models.sort((a, b) => a.id.localeCompare(b.id));\r\n return models;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Main: discoverModelsForProvider\r\n// ---------------------------------------------------------------------------\r\n\r\n/**\r\n * Fetch available models for a provider and persist the result to disk.\r\n * Throws on network errors but never corrupts the on-disk cache.\r\n */\r\nexport async function discoverModelsForProvider(\r\n provider: ProviderId,\r\n options: DiscoverOptions = {}\r\n): Promise<ProviderModelsEntry> {\r\n const baseUrl = options.baseUrl ?? PROVIDER_BASE_URLS[provider];\r\n const url = `${baseUrl.replace(/\\/$/, '')}/models`;\r\n const authToken = await resolveAuthToken(provider, options);\r\n\r\n const fetchImpl = options.fetchImpl ?? fetch;\r\n let response: Response;\r\n try {\r\n const headers: Record<string, string> = { Accept: 'application/json' };\r\n if (authToken) headers.Authorization = `Bearer ${authToken}`;\r\n response = await fetchImpl(url, { method: 'GET', headers });\r\n } catch (err) {\r\n throw new ModelDiscoveryError(\r\n `Network error contacting ${url}: ${err instanceof Error ? err.message : String(err)}`,\r\n 'network_error'\r\n );\r\n }\r\n\r\n if (!response.ok) {\r\n const body = await response.text().catch(() => '');\r\n throw new ModelDiscoveryError(\r\n `HTTP ${response.status} from ${url}: ${body.slice(0, 200)}`,\r\n `http_${response.status}`\r\n );\r\n }\r\n\r\n let json: unknown;\r\n try {\r\n json = await response.json();\r\n } catch (err) {\r\n throw new ModelDiscoveryError(\r\n `Invalid JSON from ${url}: ${err instanceof Error ? err.message : String(err)}`,\r\n 'invalid_json'\r\n );\r\n }\r\n\r\n const models = parseOpenAIModelsResponse(json, baseUrl);\r\n if (models.length === 0) {\r\n throw new ModelDiscoveryError(\r\n `Provider ${provider} returned 0 models \u2014 refusing to overwrite cache`,\r\n 'empty_response'\r\n );\r\n }\r\n\r\n const entry: ProviderModelsEntry = {\r\n models,\r\n fetchedAt: Date.now(),\r\n baseUrl,\r\n };\r\n\r\n if (!options.skipCacheWrite) {\r\n const file = getModelsFilePath();\r\n await readModifyWriteRegistry((current) => {\r\n current[provider] = entry;\r\n return current;\r\n }, file);\r\n }\r\n\r\n return entry;\r\n}\r\n\r\n/**\r\n * Fire-and-forget variant: kicks off discovery in the background, logs errors\r\n * to the `onError` callback instead of throwing. Used by `/login` handlers\r\n * that must not block the user response on a slow `/v1/models` call.\r\n */\r\nexport function discoverModelsInBackground(\r\n provider: ProviderId,\r\n options: DiscoverOptions & { onError?: (err: ModelDiscoveryError) => void } = {}\r\n): void {\r\n discoverModelsForProvider(provider, options).catch((err) => {\r\n if (err instanceof ModelDiscoveryError && options.onError) {\r\n options.onError(err);\r\n }\r\n });\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Error\r\n// ---------------------------------------------------------------------------\r\n\r\nexport class ModelDiscoveryError extends Error {\r\n constructor(message: string, public readonly code: string) {\r\n super(message);\r\n this.name = 'ModelDiscoveryError';\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Suggestion helper: filter /model tab-completion against discovered models\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Returns the discovered model ids for a provider, or undefined if no cache. */\r\nexport function getDiscoveredModelIds(\r\n provider: ProviderId,\r\n file: string = getModelsFilePath()\r\n): string[] | undefined {\r\n const entry = getCachedModels(provider, file);\r\n return entry?.models.map((m) => m.id);\r\n}\r\n\r\n/** Returns the \"best\" default model id: discovered (most recent) \u2192 providerDefaults fallback. */\r\nexport function pickDefaultModel(\r\n provider: ProviderId,\r\n providerDefaults: Partial<Record<ProviderId, string>>,\r\n file: string = getModelsFilePath()\r\n): string | undefined {\r\n const cached = getCachedModels(provider, file);\r\n if (cached && cached.models.length > 0) {\r\n // Prefer the first model alphabetically that contains \"latest\" or matches the default name\r\n const preferred = cached.models.find((m) => /latest|default|chat/i.test(m.id));\r\n if (preferred) return preferred.id;\r\n return cached.models[0]?.id;\r\n }\r\n return providerDefaults[provider];\r\n}", "/**\r\n * keyValidator \u2014 minimal OpenAI-compatible key liveness probe (v3-F).\r\n *\r\n * Strategy: ping the provider's `/v1/models` endpoint with the resolved key.\r\n * This is the standard \"is my API key alive?\" probe for OpenAI-compatible\r\n * providers (MiniMax, GLM, Grok, openai-compatible, custom). All five\r\n * providers in `PROVIDERS` ship a `/v1/models` endpoint that:\r\n * - 200 with a model list \u2192 key is valid\r\n * - 401 \u2192 unauthorized (key revoked/expired)\r\n * - 403 \u2192 forbidden (key lacks scope)\r\n * - 5xx \u2192 upstream problem (we can't tell if the key is good)\r\n * - network error / timeout \u2192 caller should retry\r\n *\r\n * Why a separate module: F.2 scope says key validation lives in its own file\r\n * so it can be invoked from:\r\n * - `/provider <id> status` (manual user-driven check)\r\n * - resolveApiKeyWithMeta (background check after a 401 \u2014 future, deferred)\r\n * - tests (mock fetch)\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3-F.md (F.2)\r\n * @see electron/cli/keyStore.ts (ProviderSpec.baseUrl)\r\n */\r\n\r\nimport { getProviderSpec, type ProviderName } from './keyStore.js';\r\n\r\nexport type ValidateReason =\r\n | 'unauthorized' // 401 \u2014 key is bad / revoked / expired\r\n | 'forbidden' // 403 \u2014 key lacks required scope\r\n | 'unknown' // 5xx or unexpected \u2014 can't tell\r\n | 'network' // fetch threw or timed out\r\n | 'no_base_url'; // provider has no baseUrl \u2014 validation skipped\r\n\r\nexport interface ValidateResult {\r\n /** True if the key is confirmed working, OR validation was skipped. */\r\n ok: boolean;\r\n /** When `ok=false`, the failure category. */\r\n reason?: ValidateReason;\r\n /** Human-readable detail (HTTP status text, network error message). */\r\n detail?: string;\r\n /** True if validation was skipped because the provider has no baseUrl. */\r\n skipped?: boolean;\r\n /** HTTP status code, when we got a response. */\r\n status?: number;\r\n /** Wall-clock duration in ms (useful for telemetry). */\r\n durationMs?: number;\r\n}\r\n\r\nexport interface ValidateOptions {\r\n /** Override the probe endpoint (default: `${baseUrl}/v1/models`). */\r\n probeUrl?: string;\r\n /** Request timeout in ms (default 5000). */\r\n timeoutMs?: number;\r\n /** Inject fetch for tests. Default: global fetch. */\r\n fetchImpl?: typeof fetch;\r\n /** Inject a clock for tests (epoch ms). Default: Date.now. */\r\n now?: () => number;\r\n}\r\n\r\n/**\r\n * Validate an API key by pinging the provider's models endpoint.\r\n *\r\n * Returns `{ ok: true, skipped: true }` for providers without a baseUrl\r\n * (openai-compatible / custom when no customEndpoint is set \u2014 handled by the\r\n * caller via `getCustomEndpoint`). For now, those providers are skipped.\r\n *\r\n * @throws Never \u2014 every failure is encoded in the returned `ValidateResult`.\r\n */\r\nexport async function validateApiKey(\r\n providerId: ProviderName,\r\n apiKey: string,\r\n options: ValidateOptions = {},\r\n): Promise<ValidateResult> {\r\n const start = (options.now ?? Date.now)();\r\n const spec = getProviderSpec(providerId);\r\n if (!spec || !spec.baseUrl) {\r\n return { ok: true, skipped: true, reason: 'no_base_url' };\r\n }\r\n const probeUrl = options.probeUrl ?? `${spec.baseUrl.replace(/\\/+$/, '')}/models`;\r\n const timeoutMs = options.timeoutMs ?? 5_000;\r\n const fetchImpl = options.fetchImpl ?? fetch;\r\n\r\n // AbortController for timeout \u2014 AbortSignal.timeout is not available on all\r\n // Node 18 builds, so use the explicit controller form.\r\n const controller = new AbortController();\r\n const timer = setTimeout(() => controller.abort(), timeoutMs);\r\n try {\r\n const response = await fetchImpl(probeUrl, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n Accept: 'application/json',\r\n },\r\n signal: controller.signal,\r\n });\r\n const durationMs = (options.now ?? Date.now)() - start;\r\n const status = response.status;\r\n if (status >= 200 && status < 300) {\r\n return { ok: true, status, durationMs };\r\n }\r\n if (status === 401) {\r\n return { ok: false, reason: 'unauthorized', status, detail: `HTTP 401`, durationMs };\r\n }\r\n if (status === 403) {\r\n return { ok: false, reason: 'forbidden', status, detail: `HTTP 403`, durationMs };\r\n }\r\n return { ok: false, reason: 'unknown', status, detail: `HTTP ${status}`, durationMs };\r\n } catch (err) {\r\n const durationMs = (options.now ?? Date.now)() - start;\r\n const msg = err instanceof Error ? err.message : String(err);\r\n const isAbort = controller.signal.aborted;\r\n return {\r\n ok: false,\r\n reason: isAbort ? 'network' : 'network',\r\n detail: isAbort ? `timeout after ${timeoutMs}ms` : msg,\r\n durationMs,\r\n };\r\n } finally {\r\n clearTimeout(timer);\r\n }\r\n}", "/**\r\n * branchManager \u2014 snapshot-based session branching (Tau pattern).\r\n *\r\n * Branches are independent snapshots of a session stored under\r\n * `~/.tmp/anathema-coder/branches/<name>/`. No Git-style merging, no\r\n * conflict resolution \u2014 just file copies. Each branch has its own JSONL\r\n * session files and a meta.json describing when it was branched.\r\n *\r\n * Storage layout:\r\n * ~/.tmp/anathema-coder/\r\n * sessions/<id>.jsonl \u2190 main sessions (managed by sessionManager)\r\n * branches/\r\n * <name>/\r\n * meta.json \u2190 { createdAt, fromSessionId }\r\n * sessions/<id>.jsonl \u2190 branch sessions\r\n *\r\n * Pure node:fs \u2014 no Electron deps, browser-importable for jsdom tests.\r\n * Env override: ANATHEMA_BRANCHES_DIR.\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v2.md (Task 17.1)\r\n */\r\n\r\nimport { promises as fs, existsSync, readFileSync, writeFileSync, mkdirSync, statSync, rmSync } from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\n\r\nexport interface BranchInfo {\r\n /** Branch name (filesystem-safe identifier). */\r\n name: string;\r\n /** Creation timestamp (epoch ms). */\r\n createdAt: number;\r\n /** Session id the branch was created from. */\r\n fromSessionId: string;\r\n /** Number of session files in this branch. */\r\n sessionCount: number;\r\n /** Absolute path to the branch directory. */\r\n branchPath: string;\r\n}\r\n\r\ninterface BranchMeta {\r\n name: string;\r\n createdAt: number;\r\n fromSessionId: string;\r\n}\r\n\r\nconst META_FILENAME = 'meta.json';\r\nconst SESSIONS_SUBDIR = 'sessions';\r\n\r\nexport function getBranchesBaseDir(): string {\r\n return process.env.ANATHEMA_BRANCHES_DIR\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'branches');\r\n}\r\n\r\nexport function getSessionsBaseDir(): string {\r\n return process.env.ANATHEMA_SESSIONS_DIR\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'sessions');\r\n}\r\n\r\nfunction branchPathFor(name: string, baseDir: string): string {\r\n return path.join(baseDir, name);\r\n}\r\n\r\nfunction metaPathFor(name: string, baseDir: string): string {\r\n return path.join(baseDir, name, META_FILENAME);\r\n}\r\n\r\nfunction sessionsPathFor(name: string, baseDir: string): string {\r\n return path.join(baseDir, name, SESSIONS_SUBDIR);\r\n}\r\n\r\nfunction readBranchMeta(name: string, baseDir: string): BranchMeta {\r\n const metaPath = metaPathFor(name, baseDir);\r\n if (!existsSync(metaPath)) {\r\n throw new BranchNotFoundError(`Branch \"${name}\" not found`);\r\n }\r\n try {\r\n const raw = readFileSync(metaPath, 'utf-8');\r\n const parsed = JSON.parse(raw) as Partial<BranchMeta>;\r\n if (!parsed || typeof parsed !== 'object'\r\n || typeof parsed.name !== 'string'\r\n || typeof parsed.createdAt !== 'number'\r\n || typeof parsed.fromSessionId !== 'string') {\r\n throw new BranchCorruptError(`Branch \"${name}\" meta.json is malformed`);\r\n }\r\n return {\r\n name: parsed.name,\r\n createdAt: parsed.createdAt,\r\n fromSessionId: parsed.fromSessionId,\r\n };\r\n } catch (err) {\r\n if (err instanceof BranchCorruptError) throw err;\r\n throw new BranchCorruptError(`Failed to read branch \"${name}\" meta: ${err instanceof Error ? err.message : String(err)}`);\r\n }\r\n}\r\n\r\nfunction writeBranchMeta(name: string, baseDir: string, meta: BranchMeta): void {\r\n const metaPath = metaPathFor(name, baseDir);\r\n mkdirSync(path.dirname(metaPath), { recursive: true });\r\n writeFileSync(metaPath, JSON.stringify(meta, null, 2), 'utf-8');\r\n}\r\n\r\n/** Count session files in a branch's sessions/ subdir (async). */\r\nasync function countSessions(name: string, baseDir: string): Promise<number> {\r\n const sessionsPath = sessionsPathFor(name, baseDir);\r\n try {\r\n const entries = await fs.readdir(sessionsPath);\r\n return entries.filter((e) => e.endsWith('.jsonl')).length;\r\n } catch (err) {\r\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return 0;\r\n throw err;\r\n }\r\n}\r\n\r\nexport class BranchAlreadyExistsError extends Error {\r\n constructor(name: string) {\r\n super(`Branch \"${name}\" already exists`);\r\n this.name = 'BranchAlreadyExistsError';\r\n }\r\n}\r\n\r\nexport class BranchNotFoundError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = 'BranchNotFoundError';\r\n }\r\n}\r\n\r\nexport class BranchCorruptError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = 'BranchCorruptError';\r\n }\r\n}\r\n\r\nexport class SessionNotFoundError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = 'SessionNotFoundError';\r\n }\r\n}\r\n\r\n/**\r\n * Check if a branch exists (sync, for callers that don't need async I/O).\r\n */\r\nexport function branchExists(name: string, baseDir: string = getBranchesBaseDir()): boolean {\r\n const bp = branchPathFor(name, baseDir);\r\n return existsSync(bp) && existsSync(metaPathFor(name, baseDir));\r\n}\r\n\r\n/**\r\n * Create a new branch by snapshotting the source session's JSONL file.\r\n *\r\n * Steps:\r\n * 1. Verify branch name doesn't already exist\r\n * 2. Verify source session JSONL exists\r\n * 3. Copy the JSONL file to branches/<name>/sessions/<id>.jsonl\r\n * 4. Write branches/<name>/meta.json\r\n *\r\n * @returns BranchInfo for the newly created branch.\r\n */\r\nexport async function createBranch(\r\n name: string,\r\n fromSessionId: string,\r\n baseDir: string = getBranchesBaseDir(),\r\n sessionsBaseDir: string = getSessionsBaseDir(),\r\n): Promise<BranchInfo> {\r\n if (!name || name.trim().length === 0) {\r\n throw new Error('Branch name cannot be empty');\r\n }\r\n if (name.includes('/') || name.includes('\\\\') || name.includes('..')) {\r\n throw new Error(`Invalid branch name: \"${name}\" (no path separators or \"..\")`);\r\n }\r\n if (branchExists(name, baseDir)) {\r\n throw new BranchAlreadyExistsError(name);\r\n }\r\n const sourcePath = path.join(sessionsBaseDir, `${fromSessionId}.jsonl`);\r\n if (!existsSync(sourcePath)) {\r\n throw new SessionNotFoundError(`Source session \"${fromSessionId}\" not found at ${sourcePath}`);\r\n }\r\n\r\n const branchPath = branchPathFor(name, baseDir);\r\n const branchSessionsPath = sessionsPathFor(name, baseDir);\r\n mkdirSync(branchSessionsPath, { recursive: true });\r\n\r\n const destPath = path.join(branchSessionsPath, `${fromSessionId}.jsonl`);\r\n await fs.copyFile(sourcePath, destPath);\r\n\r\n const meta: BranchMeta = {\r\n name,\r\n createdAt: Date.now(),\r\n fromSessionId,\r\n };\r\n writeBranchMeta(name, baseDir, meta);\r\n\r\n return {\r\n name,\r\n createdAt: meta.createdAt,\r\n fromSessionId: meta.fromSessionId,\r\n sessionCount: 1,\r\n branchPath,\r\n };\r\n}\r\n\r\n/**\r\n * List all branches, sorted by createdAt desc (most recent first).\r\n */\r\nexport async function listBranches(baseDir: string = getBranchesBaseDir()): Promise<BranchInfo[]> {\r\n let entries: string[];\r\n try {\r\n entries = await fs.readdir(baseDir);\r\n } catch (err) {\r\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return [];\r\n throw err;\r\n }\r\n const results: BranchInfo[] = [];\r\n for (const entry of entries) {\r\n const metaPath = metaPathFor(entry, baseDir);\r\n if (!existsSync(metaPath)) continue; // not a branch\r\n try {\r\n const meta = readBranchMeta(entry, baseDir);\r\n const sessionCount = await countSessions(entry, baseDir);\r\n results.push({\r\n name: meta.name,\r\n createdAt: meta.createdAt,\r\n fromSessionId: meta.fromSessionId,\r\n sessionCount,\r\n branchPath: branchPathFor(entry, baseDir),\r\n });\r\n } catch {\r\n // Skip corrupt branches but don't fail the whole list.\r\n }\r\n }\r\n results.sort((a, b) => b.createdAt - a.createdAt);\r\n return results;\r\n}\r\n\r\n/**\r\n * Get info for a specific branch. Throws BranchNotFoundError if missing.\r\n */\r\nexport async function getBranchInfo(\r\n name: string,\r\n baseDir: string = getBranchesBaseDir(),\r\n): Promise<BranchInfo> {\r\n if (!branchExists(name, baseDir)) {\r\n throw new BranchNotFoundError(`Branch \"${name}\" not found`);\r\n }\r\n const meta = readBranchMeta(name, baseDir);\r\n return {\r\n name: meta.name,\r\n createdAt: meta.createdAt,\r\n fromSessionId: meta.fromSessionId,\r\n sessionCount: await countSessions(name, baseDir),\r\n branchPath: branchPathFor(name, baseDir),\r\n };\r\n}\r\n\r\n/**\r\n * \"Checkout\" a branch \u2014 returns the branch info. The actual session\r\n * switching is the caller's responsibility (e.g. set current.txt or\r\n * sessionManager integration).\r\n */\r\nexport async function checkoutBranch(\r\n name: string,\r\n baseDir: string = getBranchesBaseDir(),\r\n): Promise<BranchInfo> {\r\n return getBranchInfo(name, baseDir);\r\n}\r\n\r\n/**\r\n * Delete a branch and all its session files. Idempotent on missing branches.\r\n */\r\nexport async function deleteBranch(\r\n name: string,\r\n baseDir: string = getBranchesBaseDir(),\r\n): Promise<void> {\r\n if (!branchExists(name, baseDir)) return;\r\n rmSync(branchPathFor(name, baseDir), { recursive: true, force: true });\r\n}\r\n\r\n/**\r\n * Add a session to an existing branch (used when continuing a branch\r\n * session \u2014 the JSONL writer should append events to the branch copy).\r\n *\r\n * Returns the destination path inside the branch.\r\n */\r\nexport async function getBranchSessionPath(\r\n branchName: string,\r\n sessionId: string,\r\n baseDir: string = getBranchesBaseDir(),\r\n): Promise<string> {\r\n if (!branchExists(branchName, baseDir)) {\r\n throw new BranchNotFoundError(`Branch \"${branchName}\" not found`);\r\n }\r\n const sessionsPath = sessionsPathFor(branchName, baseDir);\r\n mkdirSync(sessionsPath, { recursive: true });\r\n return path.join(sessionsPath, `${sessionId}.jsonl`);\r\n}\r\n\r\n/** Sync helper: get branch dir (for callers that need immediate path access). */\r\nexport function getBranchDir(name: string, baseDir: string = getBranchesBaseDir()): string {\r\n return branchPathFor(name, baseDir);\r\n}\r\n\r\n/** Sync helper: stat a branch directory (for lastModified display). */\r\nexport function getBranchMtimeMs(name: string, baseDir: string = getBranchesBaseDir()): number {\r\n const bp = branchPathFor(name, baseDir);\r\n if (!existsSync(bp)) return 0;\r\n try {\r\n return statSync(bp).mtimeMs;\r\n } catch {\r\n return 0;\r\n }\r\n}\r\n/**\r\n * Current-branch helpers (stubs).\r\n *\r\n * These were referenced from app.tsx but never implemented in v3-L.\r\n * The CLI doesn't actually persist a \"current branch\" between sessions\r\n * (it's a workspace-level concept handled by the store). Provided here\r\n * so the bundler + tsc emit succeed. Returning null/empty is safe.\r\n *\r\n * @see docs/zelari-code-mission-status.md for the v3-L deferred items.\r\n */\r\nexport function getCurrentBranch(_baseDir?: string): string | null {\r\n return null;\r\n}\r\n\r\nexport function setCurrentBranch(_name: string, _baseDir?: string): void {\r\n // no-op stub \u2014 see comment above\r\n}\r\n\r\nexport function clearCurrentBranch(_baseDir?: string): void {\r\n // no-op stub \u2014 see comment above\r\n}\r\n", "import type { ZodSchema, ZodTypeAny } from 'zod';\r\n\r\n/** Convert a Zod schema into a JSON Schema-like object suitable for LLM\r\n * function-calling definitions. Best-effort: handles primitives, objects,\r\n * arrays, unions, optionals. Does not handle refinements beyond type. */\r\nexport function zodToJsonSchema(schema: ZodSchema): Record<string, unknown> {\r\n return _convert(schema as ZodTypeAny);\r\n}\r\n\r\nfunction _convert(schema: ZodTypeAny): Record<string, unknown> {\r\n const def = (schema as { _def?: { typeName?: string; innerType?: ZodTypeAny; schema?: ZodTypeAny; options?: ZodTypeAny[] } })._def;\r\n if (!def) return {};\r\n switch (def.typeName) {\r\n case 'ZodString': return { type: 'string' };\r\n case 'ZodNumber': return { type: 'number' };\r\n case 'ZodBoolean': return { type: 'boolean' };\r\n case 'ZodObject': {\r\n const shape = (schema as unknown as { shape: Record<string, ZodTypeAny> }).shape;\r\n const properties: Record<string, unknown> = {};\r\n const required: string[] = [];\r\n for (const [key, value] of Object.entries(shape)) {\r\n properties[key] = _convert(value);\r\n // If inner type is not ZodOptional, mark required\r\n const vDef = (value as { _def?: { typeName?: string; innerType?: ZodTypeAny } })._def;\r\n if (vDef?.typeName !== 'ZodOptional') {\r\n required.push(key);\r\n }\r\n }\r\n return { type: 'object', properties, required };\r\n }\r\n case 'ZodArray': {\r\n const inner = def.innerType as ZodTypeAny;\r\n return { type: 'array', items: _convert(inner) };\r\n }\r\n case 'ZodOptional': {\r\n const inner = def.innerType as ZodTypeAny;\r\n return _convert(inner);\r\n }\r\n case 'ZodUnion': {\r\n const options = (def.options as ZodTypeAny[]) ?? [];\r\n return { anyOf: options.map(_convert) };\r\n }\r\n case 'ZodEnum': {\r\n const values = (schema as unknown as { options: readonly string[] }).options;\r\n return { type: 'string', enum: values };\r\n }\r\n default: return {};\r\n }\r\n}\r\n", "import type { ZodSchema } from 'zod';\r\n\r\n\r\n/** Discriminated union for tool execution results. */\r\nexport type TypedResult<T> =\r\n | { ok: true; value: T }\r\n | { ok: false; error: string };\r\n\r\n/** Tool permission categories. The CLI prompts the user before invoking\r\n * tools with write/execute/network permissions. */\r\nexport type ToolPermission = 'read' | 'write' | 'execute' | 'network';\r\n\r\nexport interface ToolDefinition<I = unknown, O = unknown> {\r\n /** Stable tool name (used by LLM function-calling). */\r\n name: string;\r\n /** Human-readable description (shown to LLM in prompt). */\r\n description: string;\r\n /** Permissions required to invoke. Empty array = no permissions. */\r\n permissions: ToolPermission[];\r\n /** Timeout in ms (default 30000 if not specified). */\r\n timeoutMs?: number;\r\n /** Zod schema for input validation. */\r\n inputSchema: ZodSchema<I>;\r\n /** Async executor. Receives validated input + context, returns TypedResult. */\r\n execute: (input: I, ctx: ToolContext) => Promise<TypedResult<O>>;\r\n /** Optional related tools (for discovery in UI). */\r\n relatedTools?: string[];\r\n}\r\n\r\nexport interface ToolContext {\r\n /** Per-tool-call timeout + cancellation signal. */\r\n signal: AbortSignal;\r\n /** Working directory (defaults to process.cwd()). */\r\n cwd: string;\r\n /** Audit logger. Tools should call audit() for every invocation. */\r\n audit: (entry: AuditEntry) => void;\r\n /** Session id (for audit grouping). */\r\n sessionId: string;\r\n}\r\n\r\nexport interface AuditEntry {\r\n tool: string;\r\n args: unknown;\r\n result: { ok: boolean; durationMs: number; sizeBytes?: number };\r\n ts: number;\r\n sessionId: string;\r\n}\r\n\r\n/** Helper: wrap a thrown error into TypedResult. */\r\nexport function typedOk<T>(value: T): TypedResult<T> {\r\n return { ok: true, value };\r\n}\r\n\r\nexport function typedErr<T = never>(error: string): TypedResult<T> {\r\n return { ok: false, error };\r\n}\r\n", "import { zodToJsonSchema } from './zodBridge.js';\r\nimport { typedErr, type ToolDefinition, type ToolContext, type TypedResult } from './toolTypes.js';\r\n\r\nexport interface InvokeOptions {\r\n timeoutMs?: number;\r\n signal?: AbortSignal;\r\n cwd?: string;\r\n sessionId?: string;\r\n}\r\n\r\nexport class ToolRegistry {\r\n private tools = new Map<string, ToolDefinition>();\r\n\r\n register<I, O>(def: ToolDefinition<I, O>): void {\r\n this.tools.set(def.name, def as ToolDefinition);\r\n }\r\n\r\n get(name: string): ToolDefinition | undefined {\r\n return this.tools.get(name);\r\n }\r\n\r\n list(): string[] {\r\n return Array.from(this.tools.keys());\r\n }\r\n\r\n /** Invoke a tool with validated input + timeout + audit + permissions check. */\r\n async invoke<O>(\r\n name: string,\r\n rawInput: unknown,\r\n options: InvokeOptions = {},\r\n ): Promise<TypedResult<O>> {\r\n const tool = this.tools.get(name);\r\n if (!tool) {\r\n return typedErr(`Tool \"${name}\" not found. Available: ${this.list().join(', ')}`);\r\n }\r\n\r\n // Zod validation\r\n const parsed = tool.inputSchema.safeParse(rawInput);\r\n if (!parsed.success) {\r\n return typedErr(`Invalid input: ${parsed.error.message}`);\r\n }\r\n\r\n // Timeout + cancellation\r\n const timeoutMs = options.timeoutMs ?? tool.timeoutMs ?? 30000;\r\n const signal = options.signal;\r\n\r\n const ctx: ToolContext = {\r\n signal: signal ?? new AbortController().signal,\r\n cwd: options.cwd ?? process.cwd(),\r\n audit: () => { /* audit log injected externally */ },\r\n sessionId: options.sessionId ?? 'default',\r\n };\r\n\r\n try {\r\n const result = await Promise.race<TypedResult<O>>([\r\n tool.execute(parsed.data, ctx) as Promise<TypedResult<O>>,\r\n new Promise<TypedResult<O>>((_, reject) => {\r\n const timer = setTimeout(() => reject(new Error(`Tool \"${name}\" timed out after ${timeoutMs}ms`)), timeoutMs);\r\n signal?.addEventListener('abort', () => {\r\n clearTimeout(timer);\r\n reject(new Error(`Tool \"${name}\" aborted`));\r\n });\r\n }),\r\n ]);\r\n return result;\r\n } catch (err) {\r\n const error = err instanceof Error ? err.message : String(err);\r\n return typedErr(error);\r\n }\r\n }\r\n\r\n /** Return all tool definitions in OpenAI function-calling format. */\r\n toOpenAITools(): Array<{ type: 'function'; function: { name: string; description: string; parameters: Record<string, unknown> } }> {\r\n return Array.from(this.tools.values()).map((t) => ({\r\n type: 'function' as const,\r\n function: {\r\n name: t.name,\r\n description: t.description,\r\n parameters: zodToJsonSchema(t.inputSchema),\r\n },\r\n }));\r\n }\r\n}\r\n\r\n/** Singleton instance (caller can override via setInstance). */\r\nlet _instance: ToolRegistry | null = null;\r\nexport function getToolRegistry(): ToolRegistry {\r\n if (!_instance) _instance = new ToolRegistry();\r\n return _instance;\r\n}\r\n", "export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n", "export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n", "var _a;\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n", "import { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const ratio = val / step;\n const roundedRatio = Math.round(ratio);\n // Use a relative epsilon scaled to the magnitude of the result\n const tolerance = Number.EPSILON * Math.max(Math.abs(ratio), 1);\n if (Math.abs(ratio - roundedRatio) < tolerance)\n return 0;\n return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n // Skip the probe under `jitless`: strict CSPs report the caught `new Function`\n // as a `securitypolicyviolation` even though the throw is swallowed.\n if (globalConfig.jitless) {\n return false;\n }\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n if (o instanceof Map)\n return new Map(o);\n if (o instanceof Set)\n return new Set(o);\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\",\n]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n if (a._zod.def.checks?.length) {\n throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n }\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: b._zod.def.checks ?? [],\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined).\n// Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue === false) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const message = iss.message\n ? iss.message\n : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\");\n const { inst: _inst, continue: _continue, input: _input, ...rest } = iss;\n rest.path ?? (rest.path = []);\n rest.message = message;\n if (ctx?.reportInput) {\n rest.input = _input;\n }\n return rest;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n", "import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error, path = []) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, [...path, ...issue.path]);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * \u2716 Expected number, received string at \"username\n * favoriteNumbers[0]\n * \u2716 Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`\u2716 ${issue.message}`);\n if (issue.path?.length)\n lines.push(` \u2192 at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n", "import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n", "import * as util from \"./util.js\";\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const cuid = /^[cC][0-9a-z]{6,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n", "// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n", "export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n", "export const version = {\n major: 4,\n minor: 4,\n patch: 3,\n};\n", "import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n if (util.explicitlyAborted(payload))\n continue;\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // When normalize is off, require :// for http/https URLs\n // This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source) {\n if (!/^https?:\\/\\//i.test(trimmed)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid URL format\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n return;\n }\n }\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n // atob ignores whitespace, so reject it up front.\n if (/\\s/.test(data))\n return false;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalIn, isOptionalOut) {\n const isPresent = key in input;\n if (result.issues.length) {\n // For optional-in/out schemas, ignore errors on absent keys.\n if (isOptionalIn && isOptionalOut && !isPresent) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (!isPresent && !isOptionalIn) {\n if (!result.issues.length) {\n final.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [key],\n });\n }\n return;\n }\n if (result.value === undefined) {\n if (isPresent) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalIn = _catchall.optin === \"optional\";\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n // skip __proto__ so it can't replace the result prototype via the\n // assignment setter on the plain {} we build into\n if (key === \"__proto__\")\n continue;\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalIn = el._zod.optin === \"optional\";\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalIn = schema?._zod?.optin === \"optional\";\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalIn && isOptionalOut) {\n // For optional-in/out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else if (!isOptionalIn) {\n doc.write(`\n const ${id}_present = ${k} in input;\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n if (!${id}_present && !${id}.issues.length) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: undefined,\n path: [${k}]\n });\n }\n\n if (${id}_present) {\n if (${id}.value === undefined) {\n newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n }\n\n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n inst._zod.parse = (payload, ctx) => {\n if (first) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n // Fall back to union matching when the fast discriminator path fails:\n // - explicitly enabled via unionFallback, or\n // - during backward direction (encode), since codec-based discriminators\n // have different values in forward vs backward directions\n if (def.unionFallback || ctx.direction === \"backward\") {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n options: Array.from(disc.value.keys()),\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const optinStart = getTupleOptStart(items, \"optin\");\n const optoutStart = getTupleOptStart(items, \"optout\");\n if (!def.rest) {\n if (input.length < optinStart) {\n payload.issues.push({\n code: \"too_small\",\n minimum: optinStart,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n if (input.length > items.length) {\n payload.issues.push({\n code: \"too_big\",\n maximum: items.length,\n inclusive: true,\n input,\n inst,\n origin: \"array\",\n });\n }\n }\n // Run every item in parallel, collecting results into an indexed\n // array. The post-processing in `handleTupleResults` walks them in\n // order so it can decide whether an absent optional-output error can\n // truncate the tail or must be reported to preserve required output.\n const itemResults = new Array(items.length);\n for (let i = 0; i < items.length; i++) {\n const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((rr) => {\n itemResults[i] = rr;\n }));\n }\n else {\n itemResults[i] = r;\n }\n }\n if (def.rest) {\n let i = items.length - 1;\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n }\n return handleTupleResults(itemResults, payload, items, input, optoutStart);\n };\n});\nfunction getTupleOptStart(items, key) {\n for (let i = items.length - 1; i >= 0; i--) {\n if (items[i]._zod[key] !== \"optional\")\n return i + 1;\n }\n return 0;\n}\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional\n // rule, but only after `optoutStart`: the first index where the output\n // tuple tail can be absent.\n for (let i = 0; i < items.length; i++) {\n const r = itemResults[i];\n const isPresent = i < input.length;\n if (r.issues.length) {\n if (!isPresent && i >= optoutStart) {\n final.value.length = i;\n break;\n }\n final.issues.push(...util.prefixIssues(i, r.issues));\n }\n final.value[i] = r.value;\n }\n // Drop trailing slots that produced `undefined` for absent input\n // (the array analog of an absent optional key on an object). The\n // `i >= input.length` floor is critical: an explicit `undefined`\n // *inside* the input must be preserved even when the schema is\n // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n // explicit undefined value).\n for (let i = final.value.length - 1; i >= input.length; i--) {\n if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n final.value.length = i;\n }\n else {\n break;\n }\n }\n return final;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n continue;\n }\n const outKey = keyResult.value;\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[outKey] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n if (!Object.prototype.propertyIsEnumerable.call(input, key))\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n payload.fallback = true;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (input === undefined && (result.issues.length || result.fallback)) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const input = payload.value;\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, input));\n return handleOptionalResult(result, input);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n payload.fallback = true;\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodPreprocess = /*@__PURE__*/ core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n $ZodPipe.init(inst, def);\n});\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // Cache the resolved inner type on the shared `def` so all clones of this\n // lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance,\n // preserving identity for cycle detection on recursive schemas.\n util.defineLazy(inst._zod, \"innerType\", () => {\n const d = def;\n if (!d._cachedInner)\n d._cachedInner = def.getter();\n return d._cachedInner;\n });\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n", "export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as el } from \"./el.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hr } from \"./hr.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ro } from \"./ro.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u062D\u0631\u0641\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n file: { unit: \"\u0628\u0627\u064A\u062A\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n array: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n set: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0645\u062F\u062E\u0644\",\n email: \"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\",\n url: \"\u0631\u0627\u0628\u0637\",\n emoji: \"\u0625\u064A\u0645\u0648\u062C\u064A\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n date: \"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n time: \"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n duration: \"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n ipv4: \"\u0639\u0646\u0648\u0627\u0646 IPv4\",\n ipv6: \"\u0639\u0646\u0648\u0627\u0646 IPv6\",\n cidrv4: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4\",\n cidrv6: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6\",\n base64: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded\",\n base64url: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded\",\n json_string: \"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON\",\n e164: \"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0645\u062F\u062E\u0644\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${issue.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`;\n }\n return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"}`;\n return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`;\n }\n case \"not_multiple_of\":\n return `\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u0645\u0639\u0631\u0641${issue.keys.length > 1 ? \"\u0627\u062A\" : \"\"} \u063A\u0631\u064A\u0628${issue.keys.length > 1 ? \"\u0629\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n case \"invalid_key\":\n return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n case \"invalid_element\":\n return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n default:\n return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmal\u0131d\u0131r\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n array: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n set: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanl\u0131\u015F se\u00E7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.prefix}\" il\u0259 ba\u015Flamal\u0131d\u0131r`;\n if (_issue.format === \"ends_with\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.suffix}\" il\u0259 bitm\u0259lidir`;\n if (_issue.format === \"includes\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.includes}\" daxil olmal\u0131d\u0131r`;\n if (_issue.format === \"regex\")\n return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;\n return `Yanl\u0131\u015F ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanl\u0131\u015F \u0259d\u0259d: ${issue.divisor} il\u0259 b\u00F6l\u00FCn\u0259 bil\u0259n olmal\u0131d\u0131r`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan a\u00E7ar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilind\u0259 yanl\u0131\u015F a\u00E7ar`;\n case \"invalid_union\":\n return \"Yanl\u0131\u015F d\u0259y\u0259r\";\n case \"invalid_element\":\n return `${issue.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;\n default:\n return `Yanl\u0131\u015F d\u0259y\u0259r`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"\u0441\u0456\u043C\u0432\u0430\u043B\",\n few: \"\u0441\u0456\u043C\u0432\u0430\u043B\u044B\",\n many: \"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n array: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n set: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n file: {\n unit: {\n one: \"\u0431\u0430\u0439\u0442\",\n few: \"\u0431\u0430\u0439\u0442\u044B\",\n many: \"\u0431\u0430\u0439\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0443\u0432\u043E\u0434\",\n email: \"email \u0430\u0434\u0440\u0430\u0441\",\n url: \"URL\",\n emoji: \"\u044D\u043C\u043E\u0434\u0437\u0456\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0447\u0430\u0441\",\n duration: \"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0430\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0430\u0441\",\n cidrv4: \"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n base64: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64\",\n base64url: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url\",\n json_string: \"JSON \u0440\u0430\u0434\u043E\u043A\",\n e164: \"\u043D\u0443\u043C\u0430\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0443\u0432\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u043B\u0456\u043A\",\n array: \"\u043C\u0430\u0441\u0456\u045E\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`;\n }\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue.keys.length > 1 ? \"\u043A\u043B\u044E\u0447\u044B\" : \"\u043A\u043B\u044E\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434\";\n case \"invalid_element\":\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue.origin}`;\n default:\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n file: { unit: \"\u0431\u0430\u0439\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0445\u043E\u0434\",\n email: \"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u0434\u0436\u0438\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n duration: \"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n base64: \"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437\",\n base64url: \"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437\",\n json_string: \"JSON \u043D\u0438\u0437\",\n e164: \"E.164 \u043D\u043E\u043C\u0435\u0440\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0445\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0438\u0432\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`;\n }\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin ?? \"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\"}`;\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin ?? \"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${_issue.pattern}`;\n let invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"date\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430\";\n if (_issue.format === \"time\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"duration\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue.keys.length > 1 ? \"\u0438\" : \"\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u043E\u0432\u0435\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434\";\n case \"invalid_element\":\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue.origin}`;\n default:\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"car\u00E0cters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adre\u00E7a electr\u00F2nica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adre\u00E7a IPv4\",\n ipv6: \"adre\u00E7a IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"n\u00FAmero E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus inv\u00E0lid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus inv\u00E0lid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor inv\u00E0lid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opci\u00F3 inv\u00E0lida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a m\u00E0xim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingu\u00E9s ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a m\u00EDnim\" : \"m\u00E9s de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingu\u00E9s ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format inv\u00E0lid: ha de comen\u00E7ar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format inv\u00E0lid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format inv\u00E0lid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format inv\u00E0lid: ha de coincidir amb el patr\u00F3 ${_issue.pattern}`;\n return `Format inv\u00E0lid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E0lid: ha de ser m\u00FAltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau inv\u00E0lida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E0lida\"; // Could also be \"Tipus d'uni\u00F3 inv\u00E0lid\" but \"Entrada inv\u00E0lida\" is more general\n case \"invalid_element\":\n return `Element inv\u00E0lid a ${issue.origin}`;\n default:\n return `Entrada inv\u00E0lida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znak\u016F\", verb: \"m\u00EDt\" },\n file: { unit: \"bajt\u016F\", verb: \"m\u00EDt\" },\n array: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n set: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regul\u00E1rn\u00ED v\u00FDraz\",\n email: \"e-mailov\u00E1 adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a \u010Das ve form\u00E1tu ISO\",\n date: \"datum ve form\u00E1tu ISO\",\n time: \"\u010Das ve form\u00E1tu ISO\",\n duration: \"doba trv\u00E1n\u00ED ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64\",\n base64url: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64url\",\n json_string: \"\u0159et\u011Bzec ve form\u00E1tu JSON\",\n e164: \"\u010D\u00EDslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u010D\u00EDslo\",\n string: \"\u0159et\u011Bzec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no instanceof ${issue.expected}, obdr\u017Eeno ${received}`;\n }\n return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${expected}, obdr\u017Eeno ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatn\u00E1 mo\u017Enost: o\u010Dek\u00E1v\u00E1na jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n }\n return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n }\n return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED za\u010D\u00EDnat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED kon\u010Dit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED odpov\u00EDdat vzoru ${_issue.pattern}`;\n return `Neplatn\u00FD form\u00E1t ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatn\u00E9 \u010D\u00EDslo: mus\u00ED b\u00FDt n\u00E1sobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nezn\u00E1m\u00E9 kl\u00ED\u010De: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatn\u00FD kl\u00ED\u010D v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatn\u00FD vstup\";\n case \"invalid_element\":\n return `Neplatn\u00E1 hodnota v ${issue.origin}`;\n default:\n return `Neplatn\u00FD vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkesl\u00E6t\",\n date: \"ISO-dato\",\n time: \"ISO-klokkesl\u00E6t\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-omr\u00E5de\",\n ipv6: \"IPv6-omr\u00E5de\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"s\u00E6t\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig v\u00E6rdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af f\u00F8lgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche m\u00F8nsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal v\u00E6re deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte n\u00F8gler\" : \"Ukendt n\u00F8gle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig n\u00F8gle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig v\u00E6rdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ung\u00FCltige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ung\u00FCltige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ung\u00FCltige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ung\u00FCltige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu gro\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu gro\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ung\u00FCltiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ung\u00FCltiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ung\u00FCltiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ung\u00FCltiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ung\u00FCltig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ung\u00FCltige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schl\u00FCssel\" : \"Unbekannter Schl\u00FCssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ung\u00FCltiger Schl\u00FCssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ung\u00FCltige Eingabe\";\n case \"invalid_element\":\n return `Ung\u00FCltiger Wert in ${issue.origin}`;\n default:\n return `Ung\u00FCltige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2\", verb: \"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9\" },\n file: { unit: \"bytes\", verb: \"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9\" },\n array: { unit: \"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1\", verb: \"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9\" },\n set: { unit: \"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1\", verb: \"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9\" },\n map: { unit: \"\u03BA\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2\", verb: \"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2\",\n email: \"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03CE\u03C1\u03B1\",\n date: \"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1\",\n time: \"ISO \u03CE\u03C1\u03B1\",\n duration: \"ISO \u03B4\u03B9\u03AC\u03C1\u03BA\u03B5\u03B9\u03B1\",\n ipv4: \"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv4\",\n ipv6: \"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv6\",\n mac: \"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 MAC\",\n cidrv4: \"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv4\",\n cidrv6: \"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv6\",\n base64: \"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64\",\n base64url: \"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64url\",\n json_string: \"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC JSON\",\n e164: \"\u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (typeof issue.expected === \"string\" && /^[A-Z]/.test(issue.expected)) {\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD instanceof ${issue.expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${received}`;\n }\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue.origin ?? \"\u03C4\u03B9\u03BC\u03AE\"} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1\"}`;\n return `\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue.origin ?? \"\u03C4\u03B9\u03BC\u03AE\"} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue.origin} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${issue.origin} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BE\u03B5\u03BA\u03B9\u03BD\u03AC \u03BC\u03B5 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B5\u03BB\u03B5\u03B9\u03CE\u03BD\u03B5\u03B9 \u03BC\u03B5 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03B5\u03B9 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03BF\u03C4\u03AF\u03B2\u03BF ${_issue.pattern}`;\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03AC\u03C3\u03B9\u03BF \u03C4\u03BF\u03C5 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u0386\u03B3\u03BD\u03C9\u03C3\u03C4${issue.keys.length > 1 ? \"\u03B1\" : \"\u03BF\"} \u03BA\u03BB\u03B5\u03B9\u03B4${issue.keys.length > 1 ? \"\u03B9\u03AC\" : \"\u03AF\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03C3\u03C4\u03BF ${issue.origin}`;\n case \"invalid_union\":\n return \"\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2\";\n case \"invalid_element\":\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C4\u03B9\u03BC\u03AE \u03C3\u03C4\u03BF ${issue.origin}`;\n default:\n return `\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n if (issue.options && Array.isArray(issue.options) && issue.options.length > 0) {\n const opts = issue.options.map((o) => `'${o}'`).join(\" | \");\n return `Invalid discriminator value. Expected ${opts}`;\n }\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emo\u011Dio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-da\u016Dro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendi\u011Dis instanceof ${issue.expected}, ricevi\u011Dis ${received}`;\n }\n return `Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendi\u011Dis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendi\u011Dis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendi\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendi\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendi\u011Dis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendi\u011Dis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenci\u011Di per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas fini\u011Di per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} \u015Dlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida \u015Dlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"direcci\u00F3n de correo electr\u00F3nico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duraci\u00F3n ISO\",\n ipv4: \"direcci\u00F3n IPv4\",\n ipv6: \"direcci\u00F3n IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"n\u00FAmero E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"n\u00FAmero\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"n\u00FAmero grande\",\n symbol: \"s\u00EDmbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"funci\u00F3n\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeraci\u00F3n\",\n union: \"uni\u00F3n\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vac\u00EDo\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inv\u00E1lida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inv\u00E1lida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inv\u00E1lida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opci\u00F3n inv\u00E1lida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado peque\u00F1o: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado peque\u00F1o: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inv\u00E1lida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inv\u00E1lida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inv\u00E1lida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inv\u00E1lida: debe coincidir con el patr\u00F3n ${_issue.pattern}`;\n return `Inv\u00E1lido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E1lido: debe ser m\u00FAltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inv\u00E1lida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E1lida\";\n case \"invalid_element\":\n return `Valor inv\u00E1lido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inv\u00E1lida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n file: { unit: \"\u0628\u0627\u06CC\u062A\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n array: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n set: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0648\u0631\u0648\u062F\u06CC\",\n email: \"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644\",\n url: \"URL\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n date: \"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648\",\n time: \"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n duration: \"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n ipv4: \"IPv4 \u0622\u062F\u0631\u0633\",\n ipv6: \"IPv6 \u0622\u062F\u0631\u0633\",\n cidrv4: \"IPv4 \u062F\u0627\u0645\u0646\u0647\",\n cidrv6: \"IPv6 \u062F\u0627\u0645\u0646\u0647\",\n base64: \"base64-encoded \u0631\u0634\u062A\u0647\",\n base64url: \"base64url-encoded \u0631\u0634\u062A\u0647\",\n json_string: \"JSON \u0631\u0634\u062A\u0647\",\n e164: \"E.164 \u0639\u062F\u062F\",\n jwt: \"JWT\",\n template_literal: \"\u0648\u0631\u0648\u062F\u06CC\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0639\u062F\u062F\",\n array: \"\u0622\u0631\u0627\u06CC\u0647\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;\n }\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${util.stringifyPrimitive(issue.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n }\n return `\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"} \u0628\u0627\u0634\u062F`;\n }\n return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0628\u0627\u0634\u062F`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`;\n }\n return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0628\u0627\u0634\u062F`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \"${_issue.prefix}\" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;\n }\n if (_issue.format === \"ends_with\") {\n return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \"${_issue.suffix}\" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;\n }\n if (_issue.format === \"includes\") {\n return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 \"${_issue.includes}\" \u0628\u0627\u0634\u062F`;\n }\n if (_issue.format === \"regex\") {\n return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n }\n case \"not_multiple_of\":\n return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue.divisor} \u0628\u0627\u0634\u062F`;\n case \"unrecognized_keys\":\n return `\u06A9\u0644\u06CC\u062F${issue.keys.length > 1 ? \"\u0647\u0627\u06CC\" : \"\"} \u0646\u0627\u0634\u0646\u0627\u0633: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue.origin}`;\n case \"invalid_union\":\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n case \"invalid_element\":\n return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue.origin}`;\n default:\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkki\u00E4\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4n\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"s\u00E4\u00E4nn\u00F6llinen lauseke\",\n email: \"s\u00E4hk\u00F6postiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen sy\u00F6te: t\u00E4ytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: t\u00E4ytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} t\u00E4ytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon t\u00E4ytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} t\u00E4ytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon t\u00E4ytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy sis\u00E4lt\u00E4\u00E4 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen sy\u00F6te: t\u00E4ytyy vastata s\u00E4\u00E4nn\u00F6llist\u00E4 lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: t\u00E4ytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen sy\u00F6te`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caract\u00E8res\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entr\u00E9e\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"dur\u00E9e ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"cha\u00EEne encod\u00E9e en base64\",\n base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n json_string: \"cha\u00EEne JSON\",\n e164: \"num\u00E9ro E.164\",\n jwt: \"JWT\",\n template_literal: \"entr\u00E9e\",\n };\n const TypeDictionary = {\n string: \"cha\u00EEne\",\n number: \"nombre\",\n int: \"entier\",\n boolean: \"bool\u00E9en\",\n bigint: \"grand entier\",\n symbol: \"symbole\",\n undefined: \"ind\u00E9fini\",\n null: \"null\",\n never: \"jamais\",\n void: \"vide\",\n date: \"date\",\n array: \"tableau\",\n object: \"objet\",\n tuple: \"tuple\",\n record: \"enregistrement\",\n map: \"carte\",\n set: \"ensemble\",\n file: \"fichier\",\n nonoptional: \"non-optionnel\",\n nan: \"NaN\",\n function: \"fonction\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entr\u00E9e invalide : instanceof ${issue.expected} attendu, ${received} re\u00E7u`;\n }\n return `Entr\u00E9e invalide : ${expected} attendu, ${received} re\u00E7u`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entr\u00E9e invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00E9l\u00E9ment(s)\"}`;\n return `Trop grand : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit \u00EAtre ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop petit : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Trop petit : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit \u00EAtre ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cha\u00EEne invalide : doit correspondre au mod\u00E8le ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cl\u00E9 invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entr\u00E9e invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entr\u00E9e invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caract\u00E8res\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entr\u00E9e\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"dur\u00E9e ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"cha\u00EEne encod\u00E9e en base64\",\n base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n json_string: \"cha\u00EEne JSON\",\n e164: \"num\u00E9ro E.164\",\n jwt: \"JWT\",\n template_literal: \"entr\u00E9e\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entr\u00E9e invalide : attendu instanceof ${issue.expected}, re\u00E7u ${received}`;\n }\n return `Entr\u00E9e invalide : attendu ${expected}, re\u00E7u ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entr\u00E9e invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\u2264\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\u2265\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cha\u00EEne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cl\u00E9 invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entr\u00E9e invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entr\u00E9e invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA\", gender: \"f\" },\n number: { label: \"\u05DE\u05E1\u05E4\u05E8\", gender: \"m\" },\n boolean: { label: \"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA\", gender: \"m\" },\n array: { label: \"\u05DE\u05E2\u05E8\u05DA\", gender: \"m\" },\n object: { label: \"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8\", gender: \"m\" },\n null: { label: \"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)\", gender: \"m\" },\n undefined: { label: \"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)\", gender: \"m\" },\n symbol: { label: \"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)\", gender: \"m\" },\n function: { label: \"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4\", gender: \"f\" },\n map: { label: \"\u05DE\u05E4\u05D4 (Map)\", gender: \"f\" },\n set: { label: \"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)\", gender: \"f\" },\n file: { label: \"\u05E7\u05D5\u05D1\u05E5\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2\", gender: \"m\" },\n value: { label: \"\u05E2\u05E8\u05DA\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"\u05EA\u05D5\u05D5\u05D9\u05DD\", shortLabel: \"\u05E7\u05E6\u05E8\", longLabel: \"\u05D0\u05E8\u05D5\u05DA\" },\n file: { unit: \"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n array: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n set: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n number: { unit: \"\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" }, // no unit\n };\n // Helpers \u2014 labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `\u05D4${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA\" : \"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n email: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC\", gender: \"f\" },\n url: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA\", gender: \"f\" },\n emoji: { label: \"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n date: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA ISO\", gender: \"m\" },\n time: { label: \"\u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n duration: { label: \"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n ipv4: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4\", gender: \"f\" },\n ipv6: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6\", gender: \"f\" },\n cidrv4: { label: \"\u05D8\u05D5\u05D5\u05D7 IPv4\", gender: \"m\" },\n cidrv6: { label: \"\u05D8\u05D5\u05D5\u05D7 IPv6\", gender: \"m\" },\n base64: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64\", gender: \"f\" },\n base64url: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA\", gender: \"f\" },\n json_string: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON\", gender: \"f\" },\n e164: { label: \"\u05DE\u05E1\u05E4\u05E8 E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n includes: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n lowercase: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n starts_with: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n uppercase: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`;\n }\n return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${stringified[0]} \u05D0\u05D5 ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" \u05D0\u05D5 \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${restValues} \u05D0\u05D5 ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"\u05D0\u05E8\u05D5\u05DA\"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA\" : \"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue.maximum}` : `\u05E7\u05D8\u05DF \u05DE-${issue.maximum}`;\n return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4\" : \"\u05E6\u05E8\u05D9\u05DA\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`\n : `\u05E4\u05D7\u05D5\u05EA \u05DE-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"\u05D2\u05D3\u05D5\u05DC\"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"\u05E7\u05E6\u05E8\"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8\" : \"\u05DC\u05E4\u05D7\u05D5\u05EA\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue.minimum}` : `\u05D2\u05D3\u05D5\u05DC \u05DE-${issue.minimum}`;\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4\" : \"\u05E6\u05E8\u05D9\u05DA\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3\" : \"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3\";\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`\n : `\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"\u05E7\u05D8\u05DF\"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings \u2014 use feminine grammar + \u05D4\u05F3 \u05D4\u05D9\u05D3\u05D9\u05E2\u05D4\n if (_issue.format === \"starts_with\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"\u05EA\u05E7\u05D9\u05E0\u05D4\" : \"\u05EA\u05E7\u05D9\u05DF\";\n return `${noun} \u05DC\u05D0 ${adjective}`;\n }\n case \"not_multiple_of\":\n return `\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u05DE\u05E4\u05EA\u05D7${issue.keys.length > 1 ? \"\u05D5\u05EA\" : \"\"} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue.keys.length > 1 ? \"\u05D9\u05DD\" : \"\u05D4\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`;\n }\n case \"invalid_union\":\n return \"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`;\n }\n default:\n return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakova\", verb: \"imati\" },\n file: { unit: \"bajtova\", verb: \"imati\" },\n array: { unit: \"stavki\", verb: \"imati\" },\n set: { unit: \"stavki\", verb: \"imati\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"unos\",\n email: \"email adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum i vrijeme\",\n date: \"ISO datum\",\n time: \"ISO vrijeme\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"IPv4 raspon\",\n cidrv6: \"IPv6 raspon\",\n base64: \"base64 kodirani tekst\",\n base64url: \"base64url kodirani tekst\",\n json_string: \"JSON tekst\",\n e164: \"E.164 broj\",\n jwt: \"JWT\",\n template_literal: \"unos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"tekst\",\n number: \"broj\",\n boolean: \"boolean\",\n array: \"niz\",\n object: \"objekt\",\n set: \"skup\",\n file: \"datoteka\",\n date: \"datum\",\n bigint: \"bigint\",\n symbol: \"simbol\",\n undefined: \"undefined\",\n null: \"null\",\n function: \"funkcija\",\n map: \"mapa\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neispravan unos: o\u010Dekuje se instanceof ${issue.expected}, a primljeno je ${received}`;\n }\n return `Neispravan unos: o\u010Dekuje se ${expected}, a primljeno je ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neispravna vrijednost: o\u010Dekivano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neispravna opcija: o\u010Dekivano jedno od ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Preveliko: o\u010Dekivano da ${origin ?? \"vrijednost\"} ima ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemenata\"}`;\n return `Preveliko: o\u010Dekivano da ${origin ?? \"vrijednost\"} bude ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Premalo: o\u010Dekivano da ${origin} ima ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premalo: o\u010Dekivano da ${origin} bude ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neispravan tekst: mora zapo\u010Dinjati s \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neispravan tekst: mora zavr\u0161avati s \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neispravan tekst: mora sadr\u017Eavati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neispravan tekst: mora odgovarati uzorku ${_issue.pattern}`;\n return `Neispravna ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neispravan broj: mora biti vi\u0161ekratnik od ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznat${issue.keys.length > 1 ? \"i klju\u010Devi\" : \" klju\u010D\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neispravan klju\u010D u ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Neispravan unos\";\n case \"invalid_element\":\n return `Neispravna vrijednost u ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Neispravan unos`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email c\u00EDm\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO id\u0151b\u00E9lyeg\",\n date: \"ISO d\u00E1tum\",\n time: \"ISO id\u0151\",\n duration: \"ISO id\u0151intervallum\",\n ipv4: \"IPv4 c\u00EDm\",\n ipv6: \"IPv6 c\u00EDm\",\n cidrv4: \"IPv4 tartom\u00E1ny\",\n cidrv6: \"IPv6 tartom\u00E1ny\",\n base64: \"base64-k\u00F3dolt string\",\n base64url: \"base64url-k\u00F3dolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 sz\u00E1m\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"sz\u00E1m\",\n array: \"t\u00F6mb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k instanceof ${issue.expected}, a kapott \u00E9rt\u00E9k ${received}`;\n }\n return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${expected}, a kapott \u00E9rt\u00E9k ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00C9rv\u00E9nytelen opci\u00F3: valamelyik \u00E9rt\u00E9k v\u00E1rt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `T\u00FAl nagy: ${issue.origin ?? \"\u00E9rt\u00E9k\"} m\u00E9rete t\u00FAl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `T\u00FAl nagy: a bemeneti \u00E9rt\u00E9k ${issue.origin ?? \"\u00E9rt\u00E9k\"} t\u00FAl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} m\u00E9rete t\u00FAl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} t\u00FAl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.prefix}\" \u00E9rt\u00E9kkel kell kezd\u0151dnie`;\n if (_issue.format === \"ends_with\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.suffix}\" \u00E9rt\u00E9kkel kell v\u00E9gz\u0151dnie`;\n if (_issue.format === \"includes\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.includes}\" \u00E9rt\u00E9ket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `\u00C9rv\u00E9nytelen string: ${_issue.pattern} mint\u00E1nak kell megfelelnie`;\n return `\u00C9rv\u00E9nytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u00C9rv\u00E9nytelen sz\u00E1m: ${issue.divisor} t\u00F6bbsz\u00F6r\u00F6s\u00E9nek kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u00C9rv\u00E9nytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"\u00C9rv\u00E9nytelen bemenet\";\n case \"invalid_element\":\n return `\u00C9rv\u00E9nytelen \u00E9rt\u00E9k: ${issue.origin}`;\n default:\n return `\u00C9rv\u00E9nytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"\u0561\", \"\u0565\", \"\u0568\", \"\u056B\", \"\u0578\", \"\u0578\u0582\", \"\u0585\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"\u0576\" : \"\u0568\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"\u0576\u0577\u0561\u0576\",\n many: \"\u0576\u0577\u0561\u0576\u0576\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n file: {\n unit: {\n one: \"\u0562\u0561\u0575\u0569\",\n many: \"\u0562\u0561\u0575\u0569\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n array: {\n unit: {\n one: \"\u057F\u0561\u0580\u0580\",\n many: \"\u057F\u0561\u0580\u0580\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n set: {\n unit: {\n one: \"\u057F\u0561\u0580\u0580\",\n many: \"\u057F\u0561\u0580\u0580\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0574\u0578\u0582\u057F\u0584\",\n email: \"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565\",\n url: \"URL\",\n emoji: \"\u0567\u0574\u0578\u057B\u056B\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574\",\n date: \"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E\",\n time: \"ISO \u056A\u0561\u0574\",\n duration: \"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576\",\n ipv4: \"IPv4 \u0570\u0561\u057D\u0581\u0565\",\n ipv6: \"IPv6 \u0570\u0561\u057D\u0581\u0565\",\n cidrv4: \"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584\",\n cidrv6: \"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584\",\n base64: \"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572\",\n base64url: \"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572\",\n json_string: \"JSON \u057F\u0578\u0572\",\n e164: \"E.164 \u0570\u0561\u0574\u0561\u0580\",\n jwt: \"JWT\",\n template_literal: \"\u0574\u0578\u0582\u057F\u0584\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0569\u056B\u057E\",\n array: \"\u0566\u0561\u0576\u0563\u057E\u0561\u056E\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${issue.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`;\n }\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${util.stringifyPrimitive(issue.values[1])}`;\n return `\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin ?? \"\u0561\u0580\u056A\u0565\u0584\")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin ?? \"\u0561\u0580\u056A\u0565\u0584\")} \u056C\u056B\u0576\u056B ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin)} \u056C\u056B\u0576\u056B ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B \"${_issue.prefix}\"-\u0578\u057E`;\n if (_issue.format === \"ends_with\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B \"${_issue.suffix}\"-\u0578\u057E`;\n if (_issue.format === \"includes\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${_issue.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;\n return `\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${issue.divisor}-\u056B`;\n case \"unrecognized_keys\":\n return `\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue.keys.length > 1 ? \"\u0576\u0565\u0580\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle(issue.origin)}-\u0578\u0582\u0574`;\n case \"invalid_union\":\n return \"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\";\n case \"invalid_element\":\n return `\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle(issue.origin)}-\u0578\u0582\u0574`;\n default:\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"a\u00F0 hafa\" },\n file: { unit: \"b\u00E6ti\", verb: \"a\u00F0 hafa\" },\n array: { unit: \"hluti\", verb: \"a\u00F0 hafa\" },\n set: { unit: \"hluti\", verb: \"a\u00F0 hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefsl\u00F3\u00F0\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og t\u00EDmi\",\n date: \"ISO dagsetning\",\n time: \"ISO t\u00EDmi\",\n duration: \"ISO t\u00EDmalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 t\u00F6lugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u00FAmer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: \u00DE\u00FA sl\u00F3st inn ${received} \u00FEar sem \u00E1 a\u00F0 vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: \u00DE\u00FA sl\u00F3st inn ${received} \u00FEar sem \u00E1 a\u00F0 vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert r\u00E1\u00F0 fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00D3gilt val: m\u00E1 vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of st\u00F3rt: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of st\u00F3rt: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin ?? \"gildi\"} s\u00E9 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of l\u00EDti\u00F0: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of l\u00EDti\u00F0: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin} s\u00E9 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 byrja \u00E1 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 enda \u00E1 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `R\u00F6ng tala: ver\u00F0ur a\u00F0 vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u00D3\u00FEekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill \u00ED ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi \u00ED ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Input non valido: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u6587\u5B57\", verb: \"\u3067\u3042\u308B\" },\n file: { unit: \"\u30D0\u30A4\u30C8\", verb: \"\u3067\u3042\u308B\" },\n array: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n set: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u5165\u529B\u5024\",\n email: \"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\",\n url: \"URL\",\n emoji: \"\u7D75\u6587\u5B57\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO\u65E5\u6642\",\n date: \"ISO\u65E5\u4ED8\",\n time: \"ISO\u6642\u523B\",\n duration: \"ISO\u671F\u9593\",\n ipv4: \"IPv4\u30A2\u30C9\u30EC\u30B9\",\n ipv6: \"IPv6\u30A2\u30C9\u30EC\u30B9\",\n cidrv4: \"IPv4\u7BC4\u56F2\",\n cidrv6: \"IPv6\u7BC4\u56F2\",\n base64: \"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n base64url: \"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n json_string: \"JSON\u6587\u5B57\u5217\",\n e164: \"E.164\u756A\u53F7\",\n jwt: \"JWT\",\n template_literal: \"\u5165\u529B\u5024\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u6570\u5024\",\n array: \"\u914D\u5217\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;\n }\n return `\u7121\u52B9\u306A\u5165\u529B: ${expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u7121\u52B9\u306A\u5165\u529B: ${util.stringifyPrimitive(issue.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;\n return `\u7121\u52B9\u306A\u9078\u629E: ${util.joinValues(issue.values, \"\u3001\")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\u4EE5\u4E0B\u3067\u3042\u308B\" : \"\u3088\u308A\u5C0F\u3055\u3044\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${sizing.unit ?? \"\u8981\u7D20\"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\u4EE5\u4E0A\u3067\u3042\u308B\" : \"\u3088\u308A\u5927\u304D\u3044\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.prefix}\"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"ends_with\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.suffix}\"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"includes\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.includes}\"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"regex\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n return `\u7121\u52B9\u306A${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u7121\u52B9\u306A\u6570\u5024: ${issue.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n case \"unrecognized_keys\":\n return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue.keys.length > 1 ? \"\u7FA4\" : \"\"}: ${util.joinValues(issue.keys, \"\u3001\")}`;\n case \"invalid_key\":\n return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;\n case \"invalid_union\":\n return \"\u7121\u52B9\u306A\u5165\u529B\";\n case \"invalid_element\":\n return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;\n default:\n return `\u7121\u52B9\u306A\u5165\u529B`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n file: { unit: \"\u10D1\u10D0\u10D8\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n array: { unit: \"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n set: { unit: \"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\",\n email: \"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n url: \"URL\",\n emoji: \"\u10D4\u10DB\u10DD\u10EF\u10D8\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD\",\n date: \"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8\",\n time: \"\u10D3\u10E0\u10DD\",\n duration: \"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0\",\n ipv4: \"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n ipv6: \"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n cidrv4: \"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8\",\n cidrv6: \"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8\",\n base64: \"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8\",\n base64url: \"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8\",\n json_string: \"JSON \u10D5\u10D4\u10DA\u10D8\",\n e164: \"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8\",\n jwt: \"JWT\",\n template_literal: \"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8\",\n string: \"\u10D5\u10D4\u10DA\u10D8\",\n boolean: \"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8\",\n function: \"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0\",\n array: \"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${issue.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`;\n }\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${util.joinValues(issue.values, \"|\")}-\u10D3\u10D0\u10DC`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin ?? \"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin ?? \"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0\"} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \"${_issue.prefix}\"-\u10D8\u10D7`;\n }\n if (_issue.format === \"ends_with\")\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \"${_issue.suffix}\"-\u10D8\u10D7`;\n if (_issue.format === \"includes\")\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 \"${_issue.includes}\"-\u10E1`;\n if (_issue.format === \"regex\")\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${_issue.pattern}`;\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;\n case \"unrecognized_keys\":\n return `\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue.keys.length > 1 ? \"\u10D4\u10D1\u10D8\" : \"\u10D8\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue.origin}-\u10E8\u10D8`;\n case \"invalid_union\":\n return \"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\";\n case \"invalid_element\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue.origin}-\u10E8\u10D8`;\n default:\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n file: { unit: \"\u1794\u17C3\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n array: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n set: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n email: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B\",\n url: \"URL\",\n emoji: \"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO\",\n date: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO\",\n time: \"\u1798\u17C9\u17C4\u1784 ISO\",\n duration: \"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO\",\n ipv4: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n ipv6: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n cidrv4: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n cidrv6: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n base64: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64\",\n base64url: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url\",\n json_string: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON\",\n e164: \"\u179B\u17C1\u1781 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u179B\u17C1\u1781\",\n array: \"\u17A2\u17B6\u179A\u17C1 (Array)\",\n null: \"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${issue.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`;\n }\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u1792\u17B6\u178F\u17BB\"}`;\n return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`;\n return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n case \"invalid_union\":\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n case \"invalid_element\":\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n default:\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n return km();\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\uBB38\uC790\", verb: \"to have\" },\n file: { unit: \"\uBC14\uC774\uD2B8\", verb: \"to have\" },\n array: { unit: \"\uAC1C\", verb: \"to have\" },\n set: { unit: \"\uAC1C\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\uC785\uB825\",\n email: \"\uC774\uBA54\uC77C \uC8FC\uC18C\",\n url: \"URL\",\n emoji: \"\uC774\uBAA8\uC9C0\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \uB0A0\uC9DC\uC2DC\uAC04\",\n date: \"ISO \uB0A0\uC9DC\",\n time: \"ISO \uC2DC\uAC04\",\n duration: \"ISO \uAE30\uAC04\",\n ipv4: \"IPv4 \uC8FC\uC18C\",\n ipv6: \"IPv6 \uC8FC\uC18C\",\n cidrv4: \"IPv4 \uBC94\uC704\",\n cidrv6: \"IPv6 \uBC94\uC704\",\n base64: \"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n base64url: \"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n json_string: \"JSON \uBB38\uC790\uC5F4\",\n e164: \"E.164 \uBC88\uD638\",\n jwt: \"JWT\",\n template_literal: \"\uC785\uB825\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`;\n }\n return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${util.stringifyPrimitive(issue.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;\n return `\uC798\uBABB\uB41C \uC635\uC158: ${util.joinValues(issue.values, \"\uB610\uB294 \")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\uC774\uD558\" : \"\uBBF8\uB9CC\";\n const suffix = adj === \"\uBBF8\uB9CC\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"\uC694\uC18C\";\n if (sizing)\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\uC774\uC0C1\" : \"\uCD08\uACFC\";\n const suffix = adj === \"\uC774\uC0C1\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"\uC694\uC18C\";\n if (sizing) {\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.prefix}\"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;\n }\n if (_issue.format === \"ends_with\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.suffix}\"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;\n if (_issue.format === \"includes\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.includes}\"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;\n if (_issue.format === \"regex\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;\n return `\uC798\uBABB\uB41C ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n case \"unrecognized_keys\":\n return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\uC798\uBABB\uB41C \uD0A4: ${issue.origin}`;\n case \"invalid_union\":\n return `\uC798\uBABB\uB41C \uC785\uB825`;\n case \"invalid_element\":\n return `\uC798\uBABB\uB41C \uAC12: ${issue.origin}`;\n default:\n return `\uC798\uBABB\uB41C \uC785\uB825`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simboli\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi b\u016Bti ne ilgesn\u0117 kaip\",\n notInclusive: \"turi b\u016Bti trumpesn\u0117 kaip\",\n },\n bigger: {\n inclusive: \"turi b\u016Bti ne trumpesn\u0117 kaip\",\n notInclusive: \"turi b\u016Bti ilgesn\u0117 kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"bait\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi b\u016Bti ne didesnis kaip\",\n notInclusive: \"turi b\u016Bti ma\u017Eesnis kaip\",\n },\n bigger: {\n inclusive: \"turi b\u016Bti ne ma\u017Eesnis kaip\",\n notInclusive: \"turi b\u016Bti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"element\u0105\",\n few: \"elementus\",\n many: \"element\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi tur\u0117ti ne daugiau kaip\",\n notInclusive: \"turi tur\u0117ti ma\u017Eiau kaip\",\n },\n bigger: {\n inclusive: \"turi tur\u0117ti ne ma\u017Eiau kaip\",\n notInclusive: \"turi tur\u0117ti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"element\u0105\",\n few: \"elementus\",\n many: \"element\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi tur\u0117ti ne daugiau kaip\",\n notInclusive: \"turi tur\u0117ti ma\u017Eiau kaip\",\n },\n bigger: {\n inclusive: \"turi tur\u0117ti ne ma\u017Eiau kaip\",\n notInclusive: \"turi tur\u0117ti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"\u012Fvestis\",\n email: \"el. pa\u0161to adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukm\u0117\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 u\u017Ekoduota eilut\u0117\",\n base64url: \"base64url u\u017Ekoduota eilut\u0117\",\n json_string: \"JSON eilut\u0117\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"\u012Fvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skai\u010Dius\",\n bigint: \"sveikasis skai\u010Dius\",\n string: \"eilut\u0117\",\n boolean: \"login\u0117 reik\u0161m\u0117\",\n undefined: \"neapibr\u0117\u017Eta reik\u0161m\u0117\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulin\u0117 reik\u0161m\u0117\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tik\u0117tasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tik\u0117tasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo b\u016Bti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo b\u016Bti vienas i\u0161 ${util.joinValues(issue.values, \"|\")} pasirinkim\u0173`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"element\u0173\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"ma\u017Eesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi b\u016Bti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"element\u0173\"}`;\n const adj = issue.inclusive ? \"ne ma\u017Eesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi b\u016Bti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilut\u0117 privalo prasid\u0117ti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilut\u0117 privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilut\u0117 privalo \u012Ftraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilut\u0117 privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skai\u010Dius privalo b\u016Bti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpa\u017Eint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga \u012Fvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi klaiding\u0105 \u012Fvest\u012F`;\n }\n default:\n return \"Klaidinga \u012Fvestis\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0437\u043D\u0430\u0446\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n file: { unit: \"\u0431\u0430\u0458\u0442\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n array: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n set: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u043D\u0435\u0441\",\n email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u045F\u0438\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435\",\n date: \"ISO \u0434\u0430\u0442\u0443\u043C\",\n time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n duration: \"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430\",\n cidrv4: \"IPv4 \u043E\u043F\u0441\u0435\u0433\",\n cidrv6: \"IPv6 \u043E\u043F\u0441\u0435\u0433\",\n base64: \"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n base64url: \"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n json_string: \"JSON \u043D\u0438\u0437\u0430\",\n e164: \"E.164 \u0431\u0440\u043E\u0458\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u043D\u0435\u0441\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0431\u0440\u043E\u0458\",\n array: \"\u043D\u0438\u0437\u0430\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`;\n }\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438\"}`;\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438\" : \"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441\";\n case \"invalid_element\":\n return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue.origin}`;\n default:\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht \u00E9\u00E9n van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"\u00E5 ha\" },\n file: { unit: \"bytes\", verb: \"\u00E5 ha\" },\n array: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n set: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-omr\u00E5de\",\n ipv6: \"IPv6-omr\u00E5de\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til \u00E5 ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til \u00E5 ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: m\u00E5 starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: m\u00E5 ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: m\u00E5 inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: m\u00E5 matche m\u00F8nsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: m\u00E5 v\u00E6re et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente n\u00F8kler\" : \"Ukjent n\u00F8kkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig n\u00F8kkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmal\u0131d\u0131r\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n array: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n set: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostag\u00E2h\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO heng\u00E2m\u0131\",\n date: \"ISO tarihi\",\n time: \"ISO zaman\u0131\",\n duration: \"ISO m\u00FCddeti\",\n ipv4: \"IPv4 ni\u015F\u00E2n\u0131\",\n ipv6: \"IPv6 ni\u015F\u00E2n\u0131\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-\u015Fifreli metin\",\n base64url: \"base64url-\u015Fifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 say\u0131s\u0131\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `F\u00E2sit giren: umulan instanceof ${issue.expected}, al\u0131nan ${received}`;\n }\n return `F\u00E2sit giren: umulan ${expected}, al\u0131nan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `F\u00E2sit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `F\u00E2sit tercih: m\u00FBteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmal\u0131yd\u0131.`;\n return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmal\u0131yd\u0131.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`;\n }\n return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} olmal\u0131yd\u0131.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `F\u00E2sit metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131.`;\n if (_issue.format === \"ends_with\")\n return `F\u00E2sit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `F\u00E2sit metin: \"${_issue.includes}\" ihtiv\u00E2 etmeli.`;\n if (_issue.format === \"regex\")\n return `F\u00E2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`;\n return `F\u00E2sit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `F\u00E2sit say\u0131: ${issue.divisor} kat\u0131 olmal\u0131yd\u0131.`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} i\u00E7in tan\u0131nmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tan\u0131namad\u0131.\";\n case \"invalid_element\":\n return `${issue.origin} i\u00E7in tan\u0131nmayan k\u0131ymet var.`;\n default:\n return `K\u0131ymet tan\u0131namad\u0131.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n file: { unit: \"\u0628\u0627\u06CC\u067C\u0633\", verb: \"\u0648\u0644\u0631\u064A\" },\n array: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n set: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0648\u0631\u0648\u062F\u064A\",\n email: \"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9\",\n url: \"\u06CC\u0648 \u0622\u0631 \u0627\u0644\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u064A\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A\",\n date: \"\u0646\u06D0\u067C\u0647\",\n time: \"\u0648\u062E\u062A\",\n duration: \"\u0645\u0648\u062F\u0647\",\n ipv4: \"\u062F IPv4 \u067E\u062A\u0647\",\n ipv6: \"\u062F IPv6 \u067E\u062A\u0647\",\n cidrv4: \"\u062F IPv4 \u0633\u0627\u062D\u0647\",\n cidrv6: \"\u062F IPv6 \u0633\u0627\u062D\u0647\",\n base64: \"base64-encoded \u0645\u062A\u0646\",\n base64url: \"base64url-encoded \u0645\u062A\u0646\",\n json_string: \"JSON \u0645\u062A\u0646\",\n e164: \"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647\",\n jwt: \"JWT\",\n template_literal: \"\u0648\u0631\u0648\u062F\u064A\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0639\u062F\u062F\",\n array: \"\u0627\u0631\u06D0\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;\n }\n return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${util.stringifyPrimitive(issue.values[0])} \u0648\u0627\u06CC`;\n }\n return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${util.joinValues(issue.values, \"|\")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\u0648\u0646\u0647\"} \u0648\u0644\u0631\u064A`;\n }\n return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0648\u064A`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`;\n }\n return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0648\u064A`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.prefix}\" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;\n }\n if (_issue.format === \"ends_with\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.suffix}\" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;\n }\n if (_issue.format === \"includes\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \"${_issue.includes}\" \u0648\u0644\u0631\u064A`;\n }\n if (_issue.format === \"regex\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`;\n }\n case \"not_multiple_of\":\n return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;\n case \"unrecognized_keys\":\n return `\u0646\u0627\u0633\u0645 ${issue.keys.length > 1 ? \"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647\" : \"\u06A9\u0644\u06CC\u0689\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n case \"invalid_union\":\n return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n case \"invalid_element\":\n return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n default:\n return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znak\u00F3w\", verb: \"mie\u0107\" },\n file: { unit: \"bajt\u00F3w\", verb: \"mie\u0107\" },\n array: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n set: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyra\u017Cenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ci\u0105g znak\u00F3w zakodowany w formacie base64\",\n base64url: \"ci\u0105g znak\u00F3w zakodowany w formacie base64url\",\n json_string: \"ci\u0105g znak\u00F3w w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wej\u015Bcie\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n }\n return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n }\n return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zaczyna\u0107 si\u0119 od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi ko\u0144czy\u0107 si\u0119 na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zawiera\u0107 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`;\n return `Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawid\u0142owy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawid\u0142owe dane wej\u015Bciowe\";\n case \"invalid_element\":\n return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue.origin}`;\n default:\n return `Nieprawid\u0142owe dane wej\u015Bciowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padr\u00E3o\",\n email: \"endere\u00E7o de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"dura\u00E7\u00E3o ISO\",\n ipv4: \"endere\u00E7o IPv4\",\n ipv6: \"endere\u00E7o IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"n\u00FAmero E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u00FAmero\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inv\u00E1lido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inv\u00E1lido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inv\u00E1lida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Op\u00E7\u00E3o inv\u00E1lida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inv\u00E1lido: deve come\u00E7ar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inv\u00E1lido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inv\u00E1lido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inv\u00E1lido: deve corresponder ao padr\u00E3o ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inv\u00E1lido`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E1lido: deve ser m\u00FAltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inv\u00E1lida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E1lida\";\n case \"invalid_element\":\n return `Valor inv\u00E1lido em ${issue.origin}`;\n default:\n return `Campo inv\u00E1lido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractere\", verb: \"s\u0103 aib\u0103\" },\n file: { unit: \"octe\u021Bi\", verb: \"s\u0103 aib\u0103\" },\n array: { unit: \"elemente\", verb: \"s\u0103 aib\u0103\" },\n set: { unit: \"elemente\", verb: \"s\u0103 aib\u0103\" },\n map: { unit: \"intr\u0103ri\", verb: \"s\u0103 aib\u0103\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"intrare\",\n email: \"adres\u0103 de email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"dat\u0103 \u0219i or\u0103 ISO\",\n date: \"dat\u0103 ISO\",\n time: \"or\u0103 ISO\",\n duration: \"durat\u0103 ISO\",\n ipv4: \"adres\u0103 IPv4\",\n ipv6: \"adres\u0103 IPv6\",\n mac: \"adres\u0103 MAC\",\n cidrv4: \"interval IPv4\",\n cidrv6: \"interval IPv6\",\n base64: \"\u0219ir codat base64\",\n base64url: \"\u0219ir codat base64url\",\n json_string: \"\u0219ir JSON\",\n e164: \"num\u0103r E.164\",\n jwt: \"JWT\",\n template_literal: \"intrare\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"\u0219ir\",\n number: \"num\u0103r\",\n boolean: \"boolean\",\n function: \"func\u021Bie\",\n array: \"matrice\",\n object: \"obiect\",\n undefined: \"nedefinit\",\n symbol: \"simbol\",\n bigint: \"num\u0103r mare\",\n void: \"void\",\n never: \"never\",\n map: \"hart\u0103\",\n set: \"set\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Intrare invalid\u0103: a\u0219teptat ${expected}, primit ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Intrare invalid\u0103: a\u0219teptat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Prea mare: a\u0219teptat ca ${issue.origin ?? \"valoarea\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemente\"}`;\n return `Prea mare: a\u0219teptat ca ${issue.origin ?? \"valoarea\"} s\u0103 fie ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Prea mic: a\u0219teptat ca ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Prea mic: a\u0219teptat ca ${issue.origin} s\u0103 fie ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u0218ir invalid: trebuie s\u0103 \u00EEnceap\u0103 cu \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u0218ir invalid: trebuie s\u0103 se termine cu \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u0218ir invalid: trebuie s\u0103 includ\u0103 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${_issue.pattern}`;\n return `Format invalid: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Num\u0103r invalid: trebuie s\u0103 fie multiplu de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chei nerecunoscute: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cheie invalid\u0103 \u00EEn ${issue.origin}`;\n case \"invalid_union\":\n return \"Intrare invalid\u0103\";\n case \"invalid_element\":\n return `Valoare invalid\u0103 \u00EEn ${issue.origin}`;\n default:\n return `Intrare invalid\u0103`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"\u0441\u0438\u043C\u0432\u043E\u043B\",\n few: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\",\n many: \"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n file: {\n unit: {\n one: \"\u0431\u0430\u0439\u0442\",\n few: \"\u0431\u0430\u0439\u0442\u0430\",\n many: \"\u0431\u0430\u0439\u0442\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n array: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n set: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0432\u043E\u0434\",\n email: \"email \u0430\u0434\u0440\u0435\u0441\",\n url: \"URL\",\n emoji: \"\u044D\u043C\u043E\u0434\u0437\u0438\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0432\u0440\u0435\u043C\u044F\",\n duration: \"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n base64: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64\",\n base64url: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url\",\n json_string: \"JSON \u0441\u0442\u0440\u043E\u043A\u0430\",\n e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0432\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0441\u0438\u0432\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`;\n }\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue.keys.length > 1 ? \"\u044B\u0435\" : \"\u044B\u0439\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0438\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\";\n case \"invalid_element\":\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue.origin}`;\n default:\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-po\u0161tni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in \u010Das\",\n date: \"ISO datum\",\n time: \"ISO \u010Das\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 \u0161tevilka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0161tevilo\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pri\u010Dakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pri\u010Dakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pri\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pri\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pri\u010Dakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pri\u010Dakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se za\u010Deti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se kon\u010Dati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i klju\u010Di\" : \" klju\u010D\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven klju\u010D v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n set: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulj\u00E4rt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad str\u00E4ng\",\n base64url: \"base64url-kodad str\u00E4ng\",\n json_string: \"JSON-str\u00E4ng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: f\u00F6rv\u00E4ntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: f\u00F6rv\u00E4ntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `F\u00F6r stor(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `F\u00F6r stor(t): f\u00F6rv\u00E4ntat ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig str\u00E4ng: m\u00E5ste b\u00F6rja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig str\u00E4ng: m\u00E5ste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig str\u00E4ng: m\u00E5ste inneh\u00E5lla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig str\u00E4ng: m\u00E5ste matcha m\u00F6nstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: m\u00E5ste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ok\u00E4nda nycklar\" : \"Ok\u00E4nd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"v\u00E4rdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt v\u00E4rde i ${issue.origin ?? \"v\u00E4rdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n file: { unit: \"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n array: { unit: \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n set: { unit: \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\",\n email: \"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n date: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF\",\n time: \"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n duration: \"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1\",\n ipv4: \"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n ipv6: \"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n cidrv4: \"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n cidrv6: \"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n base64: \"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n base64url: \"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n json_string: \"JSON \u0B9A\u0BB0\u0BAE\u0BCD\",\n e164: \"E.164 \u0B8E\u0BA3\u0BCD\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0B8E\u0BA3\u0BCD\",\n array: \"\u0B85\u0BA3\u0BBF\",\n null: \"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${issue.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`;\n }\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${util.joinValues(issue.values, \"|\")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n }\n return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; //\n }\n return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin} ${adj}${issue.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.prefix}\" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n if (_issue.format === \"ends_with\")\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.suffix}\" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n if (_issue.format === \"includes\")\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.includes}\" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n if (_issue.format === \"regex\")\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n case \"unrecognized_keys\":\n return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue.keys.length > 1 ? \"\u0B95\u0BB3\u0BCD\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;\n case \"invalid_union\":\n return \"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\";\n case \"invalid_element\":\n return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;\n default:\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n file: { unit: \"\u0E44\u0E1A\u0E15\u0E4C\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n array: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n set: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n email: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25\",\n url: \"URL\",\n emoji: \"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n date: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO\",\n time: \"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n duration: \"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n ipv4: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4\",\n ipv6: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6\",\n cidrv4: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4\",\n cidrv6: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6\",\n base64: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64\",\n base64url: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL\",\n json_string: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON\",\n e164: \"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)\",\n jwt: \"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT\",\n template_literal: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\",\n array: \"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)\",\n null: \"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${issue.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`;\n }\n return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19\" : \"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\"}`;\n return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22\" : \"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 \"${_issue.includes}\" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;\n if (_issue.format === \"regex\")\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`;\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;\n case \"unrecognized_keys\":\n return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49\";\n case \"invalid_element\":\n return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n default:\n return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmal\u0131\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131\" },\n array: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n set: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO s\u00FCre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aral\u0131\u011F\u0131\",\n cidrv6: \"IPv6 aral\u0131\u011F\u0131\",\n base64: \"base64 ile \u015Fifrelenmi\u015F metin\",\n base64url: \"base64url ile \u015Fifrelenmi\u015F metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 say\u0131s\u0131\",\n jwt: \"JWT\",\n template_literal: \"\u015Eablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ge\u00E7ersiz de\u011Fer: beklenen instanceof ${issue.expected}, al\u0131nan ${received}`;\n }\n return `Ge\u00E7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ge\u00E7ersiz de\u011Fer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ge\u00E7ersiz se\u00E7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00F6\u011Fe\"}`;\n return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ge\u00E7ersiz metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131`;\n if (_issue.format === \"ends_with\")\n return `Ge\u00E7ersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Ge\u00E7ersiz metin: \"${_issue.includes}\" i\u00E7ermeli`;\n if (_issue.format === \"regex\")\n return `Ge\u00E7ersiz metin: ${_issue.pattern} desenine uymal\u0131`;\n return `Ge\u00E7ersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ge\u00E7ersiz say\u0131: ${issue.divisor} ile tam b\u00F6l\u00FCnebilmeli`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} i\u00E7inde ge\u00E7ersiz anahtar`;\n case \"invalid_union\":\n return \"Ge\u00E7ersiz de\u011Fer\";\n case \"invalid_element\":\n return `${issue.origin} i\u00E7inde ge\u00E7ersiz de\u011Fer`;\n default:\n return `Ge\u00E7ersiz de\u011Fer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n file: { unit: \"\u0431\u0430\u0439\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u0434\u0437\u0456\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO\",\n date: \"\u0434\u0430\u0442\u0430 ISO\",\n time: \"\u0447\u0430\u0441 ISO\",\n duration: \"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO\",\n ipv4: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4\",\n ipv6: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6\",\n cidrv4: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4\",\n cidrv6: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6\",\n base64: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64\",\n base64url: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url\",\n json_string: \"\u0440\u044F\u0434\u043E\u043A JSON\",\n e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0438\u0432\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${issue.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`;\n }\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\"}`;\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} \u0431\u0443\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} \u0431\u0443\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0456\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\";\n case \"invalid_element\":\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue.origin}`;\n default:\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n return uk();\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u062D\u0631\u0648\u0641\", verb: \"\u06C1\u0648\u0646\u0627\" },\n file: { unit: \"\u0628\u0627\u0626\u0679\u0633\", verb: \"\u06C1\u0648\u0646\u0627\" },\n array: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n set: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0627\u0646 \u067E\u0679\",\n email: \"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n url: \"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n uuid: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n uuidv4: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4\",\n uuidv6: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6\",\n nanoid: \"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n guid: \"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n cuid: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n cuid2: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2\",\n ulid: \"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC\",\n xid: \"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC\",\n ksuid: \"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n datetime: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645\",\n date: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E\",\n time: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A\",\n duration: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A\",\n ipv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n ipv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n cidrv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C\",\n cidrv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C\",\n base64: \"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n base64url: \"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n json_string: \"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF\",\n e164: \"\u0627\u06CC 164 \u0646\u0645\u0628\u0631\",\n jwt: \"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC\",\n template_literal: \"\u0627\u0646 \u067E\u0679\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0646\u0645\u0628\u0631\",\n array: \"\u0622\u0631\u06D2\",\n null: \"\u0646\u0644\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;\n }\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${util.stringifyPrimitive(issue.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u06D2 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0627\u0635\u0631\"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u0627 ${adj}${issue.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u06D2 ${adj}${issue.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n }\n return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u0627 ${adj}${issue.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.prefix}\" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n }\n if (_issue.format === \"ends_with\")\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.suffix}\" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n if (_issue.format === \"includes\")\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.includes}\" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n if (_issue.format === \"regex\")\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n return `\u063A\u0644\u0637 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n case \"unrecognized_keys\":\n return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue.keys.length > 1 ? \"\u0632\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;\n case \"invalid_union\":\n return \"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679\";\n case \"invalid_element\":\n return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;\n default:\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo\u2018lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo\u2018lishi kerak\" },\n array: { unit: \"element\", verb: \"bo\u2018lishi kerak\" },\n set: { unit: \"element\", verb: \"bo\u2018lishi kerak\" },\n map: { unit: \"yozuv\", verb: \"bo\u2018lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto\u2018g\u2018ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto\u2018g\u2018ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto\u2018g\u2018ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto\u2018g\u2018ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto\u2018g\u2018ri satr: \"${_issue.includes}\" ni o\u2018z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto\u2018g\u2018ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto\u2018g\u2018ri raqam: ${issue.divisor} ning karralisi bo\u2018lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma\u2019lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto\u2018g\u2018ri`;\n case \"invalid_union\":\n return \"Noto\u2018g\u2018ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto\u2018g\u2018ri qiymat`;\n default:\n return `Noto\u2018g\u2018ri kirish`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"k\u00FD t\u1EF1\", verb: \"c\u00F3\" },\n file: { unit: \"byte\", verb: \"c\u00F3\" },\n array: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n set: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0111\u1EA7u v\u00E0o\",\n email: \"\u0111\u1ECBa ch\u1EC9 email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ng\u00E0y gi\u1EDD ISO\",\n date: \"ng\u00E0y ISO\",\n time: \"gi\u1EDD ISO\",\n duration: \"kho\u1EA3ng th\u1EDDi gian ISO\",\n ipv4: \"\u0111\u1ECBa ch\u1EC9 IPv4\",\n ipv6: \"\u0111\u1ECBa ch\u1EC9 IPv6\",\n cidrv4: \"d\u1EA3i IPv4\",\n cidrv6: \"d\u1EA3i IPv6\",\n base64: \"chu\u1ED7i m\u00E3 h\u00F3a base64\",\n base64url: \"chu\u1ED7i m\u00E3 h\u00F3a base64url\",\n json_string: \"chu\u1ED7i JSON\",\n e164: \"s\u1ED1 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0111\u1EA7u v\u00E0o\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"s\u1ED1\",\n array: \"m\u1EA3ng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`;\n }\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${util.stringifyPrimitive(issue.values[0])}`;\n return `T\u00F9y ch\u1ECDn kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\u00E1c gi\u00E1 tr\u1ECB ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"ph\u1EA7n t\u1EED\"}`;\n return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\u00FAc b\u1EB1ng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} kh\u00F4ng h\u1EE3p l\u1EC7`;\n }\n case \"not_multiple_of\":\n return `S\u1ED1 kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\u00E0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kh\u00F3a kh\u00F4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kh\u00F3a kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7\";\n case \"invalid_element\":\n return `Gi\u00E1 tr\u1ECB kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n default:\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u5B57\u7B26\", verb: \"\u5305\u542B\" },\n file: { unit: \"\u5B57\u8282\", verb: \"\u5305\u542B\" },\n array: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n set: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u8F93\u5165\",\n email: \"\u7535\u5B50\u90AE\u4EF6\",\n url: \"URL\",\n emoji: \"\u8868\u60C5\u7B26\u53F7\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO\u65E5\u671F\u65F6\u95F4\",\n date: \"ISO\u65E5\u671F\",\n time: \"ISO\u65F6\u95F4\",\n duration: \"ISO\u65F6\u957F\",\n ipv4: \"IPv4\u5730\u5740\",\n ipv6: \"IPv6\u5730\u5740\",\n cidrv4: \"IPv4\u7F51\u6BB5\",\n cidrv6: \"IPv6\u7F51\u6BB5\",\n base64: \"base64\u7F16\u7801\u5B57\u7B26\u4E32\",\n base64url: \"base64url\u7F16\u7801\u5B57\u7B26\u4E32\",\n json_string: \"JSON\u5B57\u7B26\u4E32\",\n e164: \"E.164\u53F7\u7801\",\n jwt: \"JWT\",\n template_literal: \"\u8F93\u5165\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u6570\u5B57\",\n array: \"\u6570\u7EC4\",\n null: \"\u7A7A\u503C(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`;\n }\n return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u4E2A\u5143\u7D20\"}`;\n return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.prefix}\" \u5F00\u5934`;\n if (_issue.format === \"ends_with\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.suffix}\" \u7ED3\u5C3E`;\n if (_issue.format === \"includes\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`;\n return `\u65E0\u6548${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue.divisor} \u7684\u500D\u6570`;\n case \"unrecognized_keys\":\n return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;\n case \"invalid_union\":\n return \"\u65E0\u6548\u8F93\u5165\";\n case \"invalid_element\":\n return `${issue.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;\n default:\n return `\u65E0\u6548\u8F93\u5165`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u5B57\u5143\", verb: \"\u64C1\u6709\" },\n file: { unit: \"\u4F4D\u5143\u7D44\", verb: \"\u64C1\u6709\" },\n array: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n set: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u8F38\u5165\",\n email: \"\u90F5\u4EF6\u5730\u5740\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u65E5\u671F\u6642\u9593\",\n date: \"ISO \u65E5\u671F\",\n time: \"ISO \u6642\u9593\",\n duration: \"ISO \u671F\u9593\",\n ipv4: \"IPv4 \u4F4D\u5740\",\n ipv6: \"IPv6 \u4F4D\u5740\",\n cidrv4: \"IPv4 \u7BC4\u570D\",\n cidrv6: \"IPv6 \u7BC4\u570D\",\n base64: \"base64 \u7DE8\u78BC\u5B57\u4E32\",\n base64url: \"base64url \u7DE8\u78BC\u5B57\u4E32\",\n json_string: \"JSON \u5B57\u4E32\",\n e164: \"E.164 \u6578\u503C\",\n jwt: \"JWT\",\n template_literal: \"\u8F38\u5165\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue.expected}\uFF0C\u4F46\u6536\u5230 ${received}`;\n }\n return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u500B\u5143\u7D20\"}`;\n return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.prefix}\" \u958B\u982D`;\n }\n if (_issue.format === \"ends_with\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.suffix}\" \u7D50\u5C3E`;\n if (_issue.format === \"includes\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`;\n return `\u7121\u6548\u7684 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue.divisor} \u7684\u500D\u6578`;\n case \"unrecognized_keys\":\n return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue.keys.length > 1 ? \"\u5011\" : \"\"}\uFF1A${util.joinValues(issue.keys, \"\u3001\")}`;\n case \"invalid_key\":\n return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;\n case \"invalid_union\":\n return \"\u7121\u6548\u7684\u8F38\u5165\u503C\";\n case \"invalid_element\":\n return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;\n default:\n return `\u7121\u6548\u7684\u8F38\u5165\u503C`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u00E0mi\", verb: \"n\u00ED\" },\n file: { unit: \"bytes\", verb: \"n\u00ED\" },\n array: { unit: \"nkan\", verb: \"n\u00ED\" },\n set: { unit: \"nkan\", verb: \"n\u00ED\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u1EB9\u0300r\u1ECD \u00ECb\u00E1w\u1ECDl\u00E9\",\n email: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC \u00ECm\u1EB9\u0301l\u00EC\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u00E0k\u00F3k\u00F2 ISO\",\n date: \"\u1ECDj\u1ECD\u0301 ISO\",\n time: \"\u00E0k\u00F3k\u00F2 ISO\",\n duration: \"\u00E0k\u00F3k\u00F2 t\u00F3 p\u00E9 ISO\",\n ipv4: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC IPv4\",\n ipv6: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC IPv6\",\n cidrv4: \"\u00E0gb\u00E8gb\u00E8 IPv4\",\n cidrv6: \"\u00E0gb\u00E8gb\u00E8 IPv6\",\n base64: \"\u1ECD\u0300r\u1ECD\u0300 t\u00ED a k\u1ECD\u0301 n\u00ED base64\",\n base64url: \"\u1ECD\u0300r\u1ECD\u0300 base64url\",\n json_string: \"\u1ECD\u0300r\u1ECD\u0300 JSON\",\n e164: \"n\u1ECD\u0301mb\u00E0 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u1EB9\u0300r\u1ECD \u00ECb\u00E1w\u1ECDl\u00E9\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u1ECD\u0301mb\u00E0\",\n array: \"akop\u1ECD\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi instanceof ${issue.expected}, \u00E0m\u1ECD\u0300 a r\u00ED ${received}`;\n }\n return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi ${expected}, \u00E0m\u1ECD\u0300 a r\u00ED ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00C0\u1E63\u00E0y\u00E0n a\u1E63\u00EC\u1E63e: yan \u1ECD\u0300kan l\u00E1ra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `T\u00F3 p\u1ECD\u0300 j\u00F9: a n\u00ED l\u00E1ti j\u1EB9\u0301 p\u00E9 ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `T\u00F3 p\u1ECD\u0300 j\u00F9: a n\u00ED l\u00E1ti j\u1EB9\u0301 ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `K\u00E9r\u00E9 ju: a n\u00ED l\u00E1ti j\u1EB9\u0301 p\u00E9 ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `K\u00E9r\u00E9 ju: a n\u00ED l\u00E1ti j\u1EB9\u0301 ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\u00FA \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\u00ED p\u1EB9\u0300l\u00FA \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\u00ED \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u00E1 \u00E0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`;\n return `A\u1E63\u00EC\u1E63e: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u1ECD\u0301mb\u00E0 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \u00E8y\u00E0 p\u00EDp\u00EDn ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `B\u1ECDt\u00ECn\u00EC \u00E0\u00ECm\u1ECD\u0300: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `B\u1ECDt\u00ECn\u00EC a\u1E63\u00EC\u1E63e n\u00EDn\u00FA ${issue.origin}`;\n case \"invalid_union\":\n return \"\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e\";\n case \"invalid_element\":\n return `Iye a\u1E63\u00EC\u1E63e n\u00EDn\u00FA ${issue.origin}`;\n default:\n return \"\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n", "import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn, params) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n }, params);\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n", "import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // The `id` in `.meta()` is a Zod-specific registration tag used to extract\n // schemas into $defs \u2014 it is not user-facing JSON Schema metadata. Strip it\n // from the output body where it would otherwise leak. The id is preserved\n // implicitly via the $defs key (and via $ref paths).\n const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n if (rootMetaId !== undefined && result.id === rootMetaId)\n delete result.id;\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n if (seen.def.id === seen.defId)\n delete seen.def.id;\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n if (_schema._zod.traits.has(\"$ZodCodec\"))\n return true;\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n", "import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n // when both minimum and exclusiveMinimum exist, pick the more restrictive one\n const exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n const exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n const legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n if (exMin) {\n if (legacy) {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n else if (typeof minimum === \"number\") {\n json.minimum = minimum;\n }\n if (exMax) {\n if (legacy) {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n else if (typeof maximum === \"number\") {\n json.maximum = maximum;\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, {\n ...params,\n path: [...params.path, \"items\"],\n });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n", "import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = initializeContext({\n processors: allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return process(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n extractDefs(this.ctx, schema);\n const result = finalize(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n", "export {};\n", "import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\n// Lazy-bind builder methods.\n//\n// Builder methods (`.optional`, `.array`, `.refine`, ...) live as\n// non-enumerable getters on each concrete schema constructor's\n// prototype. On first access from an instance the getter allocates\n// `fn.bind(this)` and caches it as an own property on that instance,\n// so detached usage (`const m = schema.optional; m()`) still works\n// and the per-instance allocation only happens for methods actually\n// touched.\n//\n// One install per (prototype, group), memoized by `_installedGroups`.\nconst _installedGroups = /* @__PURE__ */ new WeakMap();\nfunction _installLazyMethods(inst, group, methods) {\n const proto = Object.getPrototypeOf(inst);\n let installed = _installedGroups.get(proto);\n if (!installed) {\n installed = new Set();\n _installedGroups.set(proto, installed);\n }\n if (installed.has(group))\n return;\n installed.add(group);\n for (const key in methods) {\n const fn = methods[key];\n Object.defineProperty(proto, key, {\n configurable: true,\n enumerable: false,\n get() {\n const bound = fn.bind(this);\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: bound,\n });\n return bound;\n },\n set(v) {\n Object.defineProperty(this, key, {\n configurable: true,\n writable: true,\n enumerable: true,\n value: v,\n });\n },\n });\n }\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // Parse-family is intentionally kept as per-instance closures: these are\n // the hot path AND the most-detached methods (`arr.map(schema.parse)`,\n // `const { parse } = schema`, etc.). Eager closures here mean callers pay\n // ~12 closure allocations per schema but get monomorphic call sites and\n // detached usage that \"just works\".\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // All builder methods are placed on the internal prototype as lazy-bind\n // getters. On first access per-instance, a bound thunk is allocated and\n // cached as an own property; subsequent accesses skip the getter. This\n // means: no per-instance allocation for unused methods, full\n // detachability preserved (`const m = schema.optional; m()` works), and\n // shared underlying function references across all instances.\n _installLazyMethods(inst, \"ZodType\", {\n check(...chks) {\n const def = this.def;\n return this.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), { parent: true });\n },\n with(...chks) {\n return this.check(...chks);\n },\n clone(def, params) {\n return core.clone(this, def, params);\n },\n brand() {\n return this;\n },\n register(reg, meta) {\n reg.add(this, meta);\n return this;\n },\n refine(check, params) {\n return this.check(refine(check, params));\n },\n superRefine(refinement, params) {\n return this.check(superRefine(refinement, params));\n },\n overwrite(fn) {\n return this.check(checks.overwrite(fn));\n },\n optional() {\n return optional(this);\n },\n exactOptional() {\n return exactOptional(this);\n },\n nullable() {\n return nullable(this);\n },\n nullish() {\n return optional(nullable(this));\n },\n nonoptional(params) {\n return nonoptional(this, params);\n },\n array() {\n return array(this);\n },\n or(arg) {\n return union([this, arg]);\n },\n and(arg) {\n return intersection(this, arg);\n },\n transform(tx) {\n return pipe(this, transform(tx));\n },\n default(d) {\n return _default(this, d);\n },\n prefault(d) {\n return prefault(this, d);\n },\n catch(params) {\n return _catch(this, params);\n },\n pipe(target) {\n return pipe(this, target);\n },\n readonly() {\n return readonly(this);\n },\n describe(description) {\n const cl = this.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n },\n meta(...args) {\n // overloaded: meta() returns the registered metadata, meta(data)\n // returns a clone with `data` registered. The mapped type picks\n // up the second overload, so we accept variadic any-args and\n // return `any` to satisfy both at runtime.\n if (args.length === 0)\n return core.globalRegistry.get(this);\n const cl = this.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n },\n isOptional() {\n return this.safeParse(undefined).success;\n },\n isNullable() {\n return this.safeParse(null).success;\n },\n apply(fn) {\n return fn(this);\n },\n });\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n _installLazyMethods(inst, \"_ZodString\", {\n regex(...args) {\n return this.check(checks.regex(...args));\n },\n includes(...args) {\n return this.check(checks.includes(...args));\n },\n startsWith(...args) {\n return this.check(checks.startsWith(...args));\n },\n endsWith(...args) {\n return this.check(checks.endsWith(...args));\n },\n min(...args) {\n return this.check(checks.minLength(...args));\n },\n max(...args) {\n return this.check(checks.maxLength(...args));\n },\n length(...args) {\n return this.check(checks.length(...args));\n },\n nonempty(...args) {\n return this.check(checks.minLength(1, ...args));\n },\n lowercase(params) {\n return this.check(checks.lowercase(params));\n },\n uppercase(params) {\n return this.check(checks.uppercase(params));\n },\n trim() {\n return this.check(checks.trim());\n },\n normalize(...args) {\n return this.check(checks.normalize(...args));\n },\n toLowerCase() {\n return this.check(checks.toLowerCase());\n },\n toUpperCase() {\n return this.check(checks.toUpperCase());\n },\n slugify() {\n return this.check(checks.slugify());\n },\n });\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: core.regexes.httpProtocol,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n _installLazyMethods(inst, \"ZodNumber\", {\n gt(value, params) {\n return this.check(checks.gt(value, params));\n },\n gte(value, params) {\n return this.check(checks.gte(value, params));\n },\n min(value, params) {\n return this.check(checks.gte(value, params));\n },\n lt(value, params) {\n return this.check(checks.lt(value, params));\n },\n lte(value, params) {\n return this.check(checks.lte(value, params));\n },\n max(value, params) {\n return this.check(checks.lte(value, params));\n },\n int(params) {\n return this.check(int(params));\n },\n safe(params) {\n return this.check(int(params));\n },\n positive(params) {\n return this.check(checks.gt(0, params));\n },\n nonnegative(params) {\n return this.check(checks.gte(0, params));\n },\n negative(params) {\n return this.check(checks.lt(0, params));\n },\n nonpositive(params) {\n return this.check(checks.lte(0, params));\n },\n multipleOf(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n step(value, params) {\n return this.check(checks.multipleOf(value, params));\n },\n finite() {\n return this;\n },\n });\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n _installLazyMethods(inst, \"ZodArray\", {\n min(n, params) {\n return this.check(checks.minLength(n, params));\n },\n nonempty(params) {\n return this.check(checks.minLength(1, params));\n },\n max(n, params) {\n return this.check(checks.maxLength(n, params));\n },\n length(n, params) {\n return this.check(checks.length(n, params));\n },\n unwrap() {\n return this.element;\n },\n });\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n _installLazyMethods(inst, \"ZodObject\", {\n keyof() {\n return _enum(Object.keys(this._zod.def.shape));\n },\n catchall(catchall) {\n return this.clone({ ...this._zod.def, catchall: catchall });\n },\n passthrough() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n loose() {\n return this.clone({ ...this._zod.def, catchall: unknown() });\n },\n strict() {\n return this.clone({ ...this._zod.def, catchall: never() });\n },\n strip() {\n return this.clone({ ...this._zod.def, catchall: undefined });\n },\n extend(incoming) {\n return util.extend(this, incoming);\n },\n safeExtend(incoming) {\n return util.safeExtend(this, incoming);\n },\n merge(other) {\n return util.merge(this, other);\n },\n pick(mask) {\n return util.pick(this, mask);\n },\n omit(mask) {\n return util.omit(this, mask);\n },\n partial(...args) {\n return util.partial(ZodOptional, this, args[0]);\n },\n required(...args) {\n return util.required(ZodNonOptional, this, args[0]);\n },\n });\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n // v3-compat: z.record(valueType, params?) \u2014 defaults keyType to z.string()\n if (!valueType || !valueType._zod) {\n return new ZodRecord({\n type: \"record\",\n keyType: string(),\n valueType: keyType,\n ...util.normalizeParams(valueType),\n });\n }\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n payload.fallback = true;\n return payload;\n });\n }\n payload.value = output;\n payload.fallback = true;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport function invertCodec(codec) {\n const def = codec._zod.def;\n return new ZodCodec({\n type: \"pipe\",\n in: def.out,\n out: def.in,\n transform: def.reverseTransform,\n reverseTransform: def.transform,\n });\n}\nexport const ZodPreprocess = /*@__PURE__*/ core.$constructor(\"ZodPreprocess\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodPreprocess.init(inst, def);\n});\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\nexport function preprocess(fn, schema) {\n return new ZodPreprocess({\n type: \"pipe\",\n in: transform(fn),\n out: schema,\n });\n}\n", "export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n", "import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n", "import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n", "// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n", "import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = /*@__PURE__*/ new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Apply `default` so it wraps the fully-composed schema. This ensures\n // `parse(undefined) -> default` works regardless of which branch of\n // `convertBaseSchema` produced the inner schema (enum/const/not/typed/etc.).\n if (schema.default !== undefined) {\n baseSchema = baseSchema.default(schema.default);\n }\n // Collect non-description annotation metadata into the user-supplied\n // registry. Description is handled separately below via `.describe()` to\n // preserve the contract that `schema.description` reads from globalRegistry.\n const extraMeta = {};\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n // Apply description last. `.describe()` clones the schema and sets\n // `_zod.parent` on the clone, so registry lookups on the returned reference\n // still resolve `extraMeta` via parent inheritance.\n if (schema.description) {\n baseSchema = baseSchema.describe(schema.description);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Normalize input via a JSON round-trip. This guarantees the converter\n // walks a plain, finite, JSON-valid object graph: cyclic inputs fail here,\n // getter/Proxy-based properties are materialized into static values, and\n // class instances collapse to plain objects.\n let normalized;\n try {\n normalized = JSON.parse(JSON.stringify(schema));\n }\n catch {\n throw new Error(\"fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas\");\n }\n const version = detectVersion(normalized, params?.defaultTarget);\n const defs = (normalized.$defs || normalized.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: normalized,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(normalized, ctx);\n}\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n", "import { z } from 'zod';\r\nimport { promises as fs } from 'node:fs';\r\nimport path from 'node:path';\r\nimport { typedOk, typedErr, type ToolDefinition } from '../toolTypes.js';\r\n\r\nconst ReadFileArgsSchema = z.object({\r\n path: z.string().min(1),\r\n startLine: z.number().int().nonnegative().optional(),\r\n endLine: z.number().int().positive().optional(),\r\n maxBytes: z.number().int().positive().max(10_000_000).default(1_000_000),\r\n});\r\n\r\ntype ReadFileArgs = z.infer<typeof ReadFileArgsSchema>;\r\n\r\ninterface ReadFileResult {\r\n path: string;\r\n content: string;\r\n totalLines: number;\r\n readLines: { start: number; end: number };\r\n sizeBytes: number;\r\n}\r\n\r\nexport const readFileTool: ToolDefinition<ReadFileArgs, ReadFileResult> = {\r\n name: 'read_file',\r\n description: 'Read a file with optional line range. Returns content + metadata. Use before edit_file.',\r\n permissions: ['read'],\r\n timeoutMs: 5000,\r\n inputSchema: ReadFileArgsSchema,\r\n execute: async (args, ctx) => {\r\n try {\r\n const absPath = path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path);\r\n const buf = await fs.readFile(absPath, { encoding: 'utf-8', signal: ctx.signal } as never);\r\n const content = typeof buf === 'string' ? buf : buf.toString('utf-8');\r\n const truncated = content.length > args.maxBytes ? content.slice(0, args.maxBytes) : content;\r\n const lines = truncated.split('\\n');\r\n const totalLines = content.split('\\n').length;\r\n const start = args.startLine ?? 0;\r\n const end = Math.min(args.endLine ?? lines.length, lines.length);\r\n return typedOk({\r\n path: absPath,\r\n content: lines.slice(start, end).join('\\n'),\r\n totalLines,\r\n readLines: { start, end: end - 1 },\r\n sizeBytes: content.length,\r\n });\r\n } catch (err) {\r\n return typedErr(err instanceof Error ? err.message : String(err));\r\n }\r\n },\r\n};\r\n\r\nconst WriteFileArgsSchema = z.object({\r\n path: z.string().min(1),\r\n content: z.string(),\r\n createDirs: z.boolean().default(false),\r\n});\r\n\r\ntype WriteFileArgs = z.infer<typeof WriteFileArgsSchema>;\r\n\r\ninterface WriteFileResult {\r\n path: string;\r\n bytesWritten: number;\r\n}\r\n\r\nexport const writeFileTool: ToolDefinition<WriteFileArgs, WriteFileResult> = {\r\n name: 'write_file',\r\n description: 'Write or create a file. Use createDirs=true to auto-create parent directories.',\r\n permissions: ['write'],\r\n timeoutMs: 10000,\r\n inputSchema: WriteFileArgsSchema,\r\n execute: async (args, ctx) => {\r\n try {\r\n const absPath = path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path);\r\n if (args.createDirs) {\r\n await fs.mkdir(path.dirname(absPath), { recursive: true });\r\n }\r\n await fs.writeFile(absPath, args.content, { encoding: 'utf-8', signal: ctx.signal } as never);\r\n return typedOk({ path: absPath, bytesWritten: args.content.length });\r\n } catch (err) {\r\n return typedErr(err instanceof Error ? err.message : String(err));\r\n }\r\n },\r\n};\r\n\r\nconst EditFileArgsSchema = z.object({\r\n path: z.string().min(1),\r\n oldString: z.string().min(1),\r\n newString: z.string(),\r\n replaceAll: z.boolean().default(false),\r\n});\r\n\r\ntype EditFileArgs = z.infer<typeof EditFileArgsSchema>;\r\n\r\ninterface EditFileResult {\r\n path: string;\r\n occurrencesReplaced: number;\r\n}\r\n\r\nexport const editFileTool: ToolDefinition<EditFileArgs, EditFileResult> = {\r\n name: 'edit_file',\r\n description: 'Replace exact string match in a file. Idempotent: returns 0 occurrences if no match.',\r\n permissions: ['write'],\r\n timeoutMs: 10000,\r\n inputSchema: EditFileArgsSchema,\r\n execute: async (args, ctx) => {\r\n try {\r\n const absPath = path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path);\r\n const content = await fs.readFile(absPath, { encoding: 'utf-8', signal: ctx.signal } as never);\r\n const text = typeof content === 'string' ? content : content.toString('utf-8');\r\n let occurrences = 0;\r\n let newContent: string;\r\n if (args.replaceAll) {\r\n const parts = text.split(args.oldString);\r\n occurrences = parts.length - 1;\r\n newContent = parts.join(args.newString);\r\n } else {\r\n const idx = text.indexOf(args.oldString);\r\n if (idx === -1) {\r\n occurrences = 0;\r\n newContent = text;\r\n } else {\r\n occurrences = 1;\r\n newContent = text.slice(0, idx) + args.newString + text.slice(idx + args.oldString.length);\r\n }\r\n }\r\n if (occurrences > 0) {\r\n await fs.writeFile(absPath, newContent, { encoding: 'utf-8', signal: ctx.signal } as never);\r\n }\r\n return typedOk({ path: absPath, occurrencesReplaced: occurrences });\r\n } catch (err) {\r\n return typedErr(err instanceof Error ? err.message : String(err));\r\n }\r\n },\r\n};\r\n", "import { z } from 'zod';\r\nimport { spawn } from 'node:child_process';\r\nimport { typedOk, typedErr, type ToolDefinition } from '../toolTypes.js';\r\n\r\nconst BashArgsSchema = z.object({\r\n command: z.string().min(1),\r\n cwd: z.string().optional(),\r\n timeoutMs: z.number().int().positive().max(600_000).default(30_000),\r\n});\r\n\r\ntype BashArgs = z.infer<typeof BashArgsSchema>;\r\n\r\ninterface BashResult {\r\n stdout: string;\r\n stderr: string;\r\n exitCode: number;\r\n durationMs: number;\r\n}\r\n\r\nexport const bashTool: ToolDefinition<BashArgs, BashResult> = {\r\n name: 'bash',\r\n description: 'Run a shell command. Streams stdout/stderr. Respects timeout and cancellation. Returns exit code.',\r\n permissions: ['execute'],\r\n timeoutMs: 60000,\r\n inputSchema: BashArgsSchema,\r\n execute: async (args, ctx) => {\r\n return new Promise((resolve) => {\r\n const start = Date.now();\r\n const cwd = args.cwd ?? ctx.cwd;\r\n const child = spawn(args.command, { shell: true, cwd, signal: ctx.signal });\r\n let stdout = '';\r\n let stderr = '';\r\n const maxBuffer = 1024 * 1024; // 1MB cap on each stream\r\n child.stdout?.on('data', (data: Buffer) => {\r\n if (stdout.length < maxBuffer) stdout += data.toString('utf-8');\r\n });\r\n child.stderr?.on('data', (data: Buffer) => {\r\n if (stderr.length < maxBuffer) stderr += data.toString('utf-8');\r\n });\r\n const timer = setTimeout(() => {\r\n child.kill('SIGTERM');\r\n resolve(typedErr(`Bash command timed out after ${args.timeoutMs}ms`));\r\n }, args.timeoutMs);\r\n child.on('close', (code) => {\r\n clearTimeout(timer);\r\n resolve(typedOk({\r\n stdout: stdout.slice(0, maxBuffer),\r\n stderr: stderr.slice(0, maxBuffer),\r\n exitCode: code ?? -1,\r\n durationMs: Date.now() - start,\r\n }));\r\n });\r\n child.on('error', (err) => {\r\n clearTimeout(timer);\r\n resolve(typedErr(err.message));\r\n });\r\n });\r\n },\r\n};\r\n", "import { z } from 'zod';\r\nimport { promises as fs } from 'node:fs';\r\nimport path from 'node:path';\r\nimport { typedOk, typedErr, type ToolDefinition } from '../toolTypes.js';\r\n\r\nconst GrepContentArgsSchema = z.object({\r\n path: z.string().min(1),\r\n pattern: z.string().min(1),\r\n contextLines: z.number().int().nonnegative().default(2),\r\n maxMatches: z.number().int().positive().max(1000).default(50),\r\n});\r\n\r\ntype GrepContentArgs = z.infer<typeof GrepContentArgsSchema>;\r\n\r\ninterface GrepMatch {\r\n file: string;\r\n line: number;\r\n text: string;\r\n context: { before: string[]; after: string[] };\r\n}\r\n\r\ninterface GrepResult {\r\n matches: GrepMatch[];\r\n totalMatches: number;\r\n truncated: boolean;\r\n}\r\n\r\nexport const grepContentTool: ToolDefinition<GrepContentArgs, GrepResult> = {\r\n name: 'grep_content',\r\n description: 'Regex search for content in a file. Returns matches with line numbers and context.',\r\n permissions: ['read'],\r\n timeoutMs: 10000,\r\n inputSchema: GrepContentArgsSchema,\r\n execute: async (args, ctx) => {\r\n try {\r\n const absPath = path.isAbsolute(args.path) ? args.path : path.join(ctx.cwd, args.path);\r\n const content = await fs.readFile(absPath, { encoding: 'utf-8', signal: ctx.signal } as never);\r\n const text = typeof content === 'string' ? content : content.toString('utf-8');\r\n const lines = text.split('\\n');\r\n const regex = new RegExp(args.pattern, 'gm');\r\n const matches: GrepMatch[] = [];\r\n let totalMatches = 0;\r\n let truncated = false;\r\n for (let i = 0; i < lines.length; i++) {\r\n if (regex.test(lines[i])) {\r\n regex.lastIndex = 0; // Reset global regex state\r\n totalMatches++;\r\n if (matches.length < args.maxMatches) {\r\n const startBefore = Math.max(0, i - args.contextLines);\r\n const endAfter = Math.min(lines.length - 1, i + args.contextLines);\r\n matches.push({\r\n file: absPath,\r\n line: i + 1,\r\n text: lines[i],\r\n context: {\r\n before: lines.slice(startBefore, i),\r\n after: lines.slice(i + 1, endAfter + 1),\r\n },\r\n });\r\n } else {\r\n truncated = true;\r\n }\r\n }\r\n }\r\n return typedOk({ matches, totalMatches, truncated });\r\n } catch (err) {\r\n return typedErr(err instanceof Error ? err.message : String(err));\r\n }\r\n },\r\n};\r\n", "/**\r\n * sandboxPath \u2014 enforce that filesystem tool paths stay inside an allowed\r\n * root directory (default: process.cwd()).\r\n *\r\n * Prevents the agent from escaping its working directory by using\r\n * `..` segments or absolute paths outside the sandbox.\r\n *\r\n * Task A2 of AnathemaCoder v3-A.\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3.md (Task A2)\r\n */\r\nimport path from 'node:path';\r\n\r\nexport class SandboxViolationError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly attemptedPath: string,\r\n public readonly resolvedPath: string,\r\n ) {\r\n super(message);\r\n this.name = 'SandboxViolationError';\r\n }\r\n}\r\n\r\n/**\r\n * Resolve a user-supplied path against an allowed root, throwing\r\n * SandboxViolationError if the result escapes the root.\r\n *\r\n * - Absolute paths are taken as-is but must be inside the root.\r\n * - Relative paths are joined to the root.\r\n * - Symlink resolution is the caller's responsibility (the FS tool\r\n * resolves on read/write); this function only checks textual containment\r\n * after normalization.\r\n */\r\nexport function resolveSandboxedPath(\r\n userPath: string,\r\n options: { root?: string } = {},\r\n): string {\r\n if (typeof userPath !== 'string' || userPath.length === 0) {\r\n throw new SandboxViolationError('Empty path', userPath, '');\r\n }\r\n const root = path.resolve(options.root ?? process.cwd());\r\n const resolved = path.isAbsolute(userPath)\r\n ? path.resolve(userPath)\r\n : path.resolve(root, userPath);\r\n\r\n // Normalize for comparison: ensure trailing separator for prefix check\r\n // so `/foo/bar` does not match `/foo/barbaz`.\r\n const rootWithSep = root.endsWith(path.sep) ? root : root + path.sep;\r\n if (resolved !== root && !resolved.startsWith(rootWithSep)) {\r\n throw new SandboxViolationError(\r\n `Path escapes sandbox root: ${userPath} \u2192 ${resolved} (root: ${root})`,\r\n userPath,\r\n resolved,\r\n );\r\n }\r\n return resolved;\r\n}\r\n\r\n/**\r\n * Lightweight check that does NOT throw \u2014 returns true if the path\r\n * would be allowed by resolveSandboxedPath.\r\n */\r\nexport function isPathInsideSandbox(\r\n userPath: string,\r\n options: { root?: string } = {},\r\n): boolean {\r\n try {\r\n resolveSandboxedPath(userPath, options);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}", "/**\r\n * shellBlocklist \u2014 reject shell commands that look destructive or that\r\n * exfiltrate data.\r\n *\r\n * Task A2 of AnathemaCoder v3-A.\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3.md (Task A2)\r\n */\r\n\r\nexport class ShellBlockedError extends Error {\r\n constructor(\r\n message: string,\r\n public readonly reason: string,\r\n public readonly pattern: string,\r\n ) {\r\n super(message);\r\n this.name = 'ShellBlockedError';\r\n }\r\n}\r\n\r\ninterface BlockRule {\r\n /** Regex pattern (case-insensitive). */\r\n pattern: RegExp;\r\n /** Short reason for the error message + audit log. */\r\n reason: string;\r\n}\r\n\r\n/**\r\n * Default blocklist. Conservative: prefers false positives over letting\r\n * the agent destroy the user's machine.\r\n */\r\nconst DEFAULT_RULES: BlockRule[] = [\r\n // Recursive destructive on root-ish paths. Match `rm` followed by 1-3\r\n // single-letter flag clusters (e.g. -rf, -fr, -r, -f) and a root path.\r\n { pattern: /\\brm\\s+(?:-[a-z]+\\s+){1,3}\\/\\s*$/, reason: 'rm -rf /' },\r\n { pattern: /\\brm\\s+(?:-[a-z]+\\s+){1,3}\\/etc\\b/, reason: 'rm -rf /etc' },\r\n { pattern: /\\brm\\s+(?:-[a-z]+\\s+){1,3}\\/boot\\b/, reason: 'rm -rf /boot' },\r\n { pattern: /\\brm\\s+(?:-[a-z]+\\s+){1,3}\\/usr\\b/, reason: 'rm -rf /usr' },\r\n // Disk wipe\r\n { pattern: /\\bmkfs(?:\\.[a-z0-9]+)?\\s+\\/dev\\//, reason: 'mkfs on device' },\r\n { pattern: /\\bdd\\s+.*of=\\/dev\\//, reason: 'dd to device' },\r\n // Fork bomb\r\n { pattern: /:\\(\\)\\s*\\{\\s*:\\|:&\\s*\\}/, reason: 'fork bomb' },\r\n // Network exfiltration / arbitrary download\r\n { pattern: /\\bcurl\\s+[^|]*\\|\\s*(?:sudo\\s+)?(?:ba)?sh/, reason: 'curl | sh' },\r\n { pattern: /\\bwget\\s+[^|]*\\|\\s*(?:sudo\\s+)?(?:ba)?sh/, reason: 'wget | sh' },\r\n // Privilege escalation without explicit user intent\r\n { pattern: /\\bsudo\\s+/, reason: 'sudo without explicit consent' },\r\n // System file overwrites\r\n { pattern: />\\s*\\/etc\\//, reason: 'redirect to /etc' },\r\n { pattern: />\\s*\\/boot\\//, reason: 'redirect to /boot' },\r\n { pattern: />\\s*\\/usr\\//, reason: 'redirect to /usr' },\r\n];\r\n\r\n/**\r\n * Test a shell command against the blocklist.\r\n * Returns null if allowed, or a BlockRule describing why it was blocked.\r\n */\r\nexport function findBlockedReason(\r\n command: string,\r\n rules: BlockRule[] = DEFAULT_RULES,\r\n): BlockRule | null {\r\n if (typeof command !== 'string' || command.length === 0) return null;\r\n for (const rule of rules) {\r\n if (rule.pattern.test(command)) {\r\n return rule;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Throw ShellBlockedError if the command matches any blocklist pattern.\r\n * Otherwise return normally.\r\n */\r\nexport function assertShellAllowed(command: string): void {\r\n const blocked = findBlockedReason(command);\r\n if (blocked) {\r\n throw new ShellBlockedError(\r\n `Shell command blocked: ${blocked.reason}`,\r\n blocked.reason,\r\n blocked.pattern.source,\r\n );\r\n }\r\n}\r\n\r\n/** Expose the default rules for testing/introspection. */\r\nexport const DEFAULT_BLOCK_RULES = DEFAULT_RULES;", "/**\r\n * auditLogger \u2014 append-only JSONL log of every tool invocation.\r\n *\r\n * Task A2 of AnathemaCoder v3-A. Persists to\r\n * `~/.tmp/anathema-coder/audit.jsonl` by default (override via\r\n * ANATHEMA_AUDIT_LOG env). Each entry is one line of JSON with:\r\n * ts, sessionId, tool, args (summary), ok, resultSummary, durationMs, error?\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3.md (Task A2)\r\n */\r\nimport { promises as fs } from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\n\r\nexport interface AuditEntry {\r\n /** ISO timestamp. */\r\n ts: string;\r\n /** Session that originated the call (CLI session id). */\r\n sessionId: string;\r\n /** Tool name (e.g. 'read_file', 'bash'). */\r\n tool: string;\r\n /** Args passed (truncated to keep entries small). */\r\n args: Record<string, unknown>;\r\n /** Whether the tool succeeded. */\r\n ok: boolean;\r\n /** Result summary (first ~120 chars or error message). */\r\n resultSummary: string;\r\n /** Wall-clock duration of the invocation in ms. */\r\n durationMs: number;\r\n /** Present only when ok=false. */\r\n error?: string;\r\n}\r\n\r\nexport class AuditLogger {\r\n private readonly logPath: string;\r\n private writeQueue: Promise<void> = Promise.resolve();\r\n\r\n constructor(logPath?: string) {\r\n this.logPath = logPath ?? defaultAuditPath();\r\n }\r\n\r\n /** Path to the JSONL file. */\r\n get path(): string {\r\n return this.logPath;\r\n }\r\n\r\n /**\r\n * Append one entry to the log. Serialized through a queue so concurrent\r\n * invocations do not interleave their writes.\r\n */\r\n async append(entry: AuditEntry): Promise<void> {\r\n const line = JSON.stringify(entry) + '\\n';\r\n this.writeQueue = this.writeQueue.then(async () => {\r\n await fs.mkdir(path.dirname(this.logPath), { recursive: true });\r\n await fs.appendFile(this.logPath, line, 'utf-8');\r\n });\r\n return this.writeQueue;\r\n }\r\n\r\n /**\r\n * Run a tool invocation and write an audit entry capturing the result.\r\n * Returns the tool result unchanged so callers can compose it as\r\n * `const r = await audit.runTool({ tool: 'bash', args: {...}, sessionId, fn })`.\r\n */\r\n async runTool<T>(params: {\r\n tool: string;\r\n args: Record<string, unknown>;\r\n sessionId: string;\r\n fn: () => Promise<T>;\r\n /** Map the tool return value to a string summary for the log. */\r\n summarize?: (result: T) => string;\r\n /** Map an error to a string summary. */\r\n summarizeError?: (err: unknown) => string;\r\n }): Promise<T> {\r\n const start = Date.now();\r\n let ok = true;\r\n let error: string | undefined;\r\n let resultSummary = '';\r\n try {\r\n const result = await params.fn();\r\n resultSummary = (params.summarize?.(result) ?? safeStringify(result)).slice(0, 200);\r\n return result;\r\n } catch (err) {\r\n ok = false;\r\n error = err instanceof Error ? err.message : String(err);\r\n resultSummary = (params.summarizeError?.(err) ?? error).slice(0, 200);\r\n throw err;\r\n } finally {\r\n const entry: AuditEntry = {\r\n ts: new Date(start).toISOString(),\r\n sessionId: params.sessionId,\r\n tool: params.tool,\r\n args: redactArgs(params.args),\r\n ok,\r\n resultSummary,\r\n durationMs: Date.now() - start,\r\n ...(error !== undefined ? { error } : {}),\r\n };\r\n // Fire-and-forget: do not block the caller on disk I/O, but still\r\n // serialize writes through the queue.\r\n void this.append(entry).catch((err) => {\r\n // Best-effort logging \u2014 never throw from inside the finally.\r\n console.error('[auditLogger] failed to append entry:', err);\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction defaultAuditPath(): string {\r\n const override = process.env.ANATHEMA_AUDIT_LOG;\r\n if (override && override.trim().length > 0) return override;\r\n return path.join(os.tmpdir(), 'zelari-code', 'audit.jsonl');\r\n}\r\n\r\n/**\r\n * Redact sensitive args (anything that looks like an API key or secret)\r\n * before writing to the audit log. Conservative: replaces long random\r\n * strings and env-var-style 'key' / 'apiKey' fields.\r\n */\r\nfunction redactArgs(args: Record<string, unknown>): Record<string, unknown> {\r\n const redacted: Record<string, unknown> = {};\r\n for (const [k, v] of Object.entries(args)) {\r\n if (/(api[_-]?key|secret|token|password)/i.test(k) && typeof v === 'string') {\r\n redacted[k] = '***';\r\n } else if (typeof v === 'string' && v.length > 64) {\r\n redacted[k] = v.slice(0, 60) + '\u2026';\r\n } else {\r\n redacted[k] = v;\r\n }\r\n }\r\n return redacted;\r\n}\r\n\r\nfunction safeStringify(value: unknown): string {\r\n try {\r\n return typeof value === 'string' ? value : JSON.stringify(value);\r\n } catch {\r\n return String(value);\r\n }\r\n}", "/**\r\n * toolRegistry \u2014 default ToolRegistry for the zelari-code CLI.\r\n *\r\n * Wires the 5 built-in tools (filesystem read/write/edit + bash + grep) into a\r\n * ToolRegistry instance that the AgentHarness can hand to the provider via\r\n * `tools: registry.toOpenAITools()` + `toolRegistry: registry`.\r\n *\r\n * Task A1 of AnathemaCoder v3-A: enable the existing tool pipeline.\r\n * Task A2 of v3-A: wrap each tool with the safety layer (sandbox path,\r\n * shell blocklist, audit log).\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3.md (Tasks A1 + A2)\r\n */\r\nimport { ToolRegistry } from '../main/core/tools/registry.js';\r\nimport {\r\n readFileTool,\r\n writeFileTool,\r\n editFileTool,\r\n} from '../main/core/tools/builtin/filesystem.js';\r\nimport { bashTool } from '../main/core/tools/builtin/shell.js';\r\nimport { grepContentTool } from '../main/core/tools/builtin/search.js';\r\nimport { resolveSandboxedPath, SandboxViolationError } from './safety/sandboxPath.js';\r\nimport { assertShellAllowed, ShellBlockedError } from './safety/shellBlocklist.js';\r\nimport { AuditLogger } from './safety/auditLogger.js';\r\nimport type { ToolDefinition, TypedResult, ToolContext } from '../main/core/tools/toolTypes.js';\r\n\r\nexport interface BuiltinToolSummary {\r\n /** Tool name as registered. */\r\n name: string;\r\n /** Tool description. */\r\n description: string;\r\n /** Required permission (read | write | execute). */\r\n permissions: readonly string[];\r\n}\r\n\r\nexport interface CreateRegistryOptions {\r\n /** Sandbox root. Defaults to process.cwd(). */\r\n root?: string;\r\n /** Audit logger instance. If omitted, creates a default file-backed one. */\r\n audit?: AuditLogger;\r\n /** Session id used in audit entries. */\r\n sessionId?: string;\r\n}\r\n\r\n/**\r\n * Create a fresh ToolRegistry pre-populated with the 5 built-in tools,\r\n * each wrapped with the safety layer (Task A2).\r\n *\r\n * Safety policy applied:\r\n * - filesystem tools: resolveSandboxedPath() on every path arg; throws\r\n * SandboxViolationError if the path escapes the root.\r\n * - bash: assertShellAllowed() on the command; throws ShellBlockedError\r\n * on any blocklist match.\r\n * - every tool: AuditLogger.runTool() wraps the call to record ts,\r\n * args (redacted), ok, duration, summary.\r\n */\r\nexport function createBuiltinToolRegistry(\r\n options: CreateRegistryOptions = {},\r\n): { registry: ToolRegistry; tools: BuiltinToolSummary[] } {\r\n const root = options.root ?? process.cwd();\r\n const audit = options.audit ?? new AuditLogger();\r\n const sessionId = options.sessionId ?? 'cli';\r\n\r\n // Wrap filesystem tools: sandbox the path argument before delegating.\r\n const safeReadFile = wrapWithSandbox(readFileTool, ['path'], root, audit, sessionId);\r\n const safeWriteFile = wrapWithSandbox(writeFileTool, ['path'], root, audit, sessionId);\r\n const safeEditFile = wrapWithSandbox(editFileTool, ['path'], root, audit, sessionId);\r\n const safeGrepContent = wrapWithSandbox(grepContentTool, ['path'], root, audit, sessionId);\r\n\r\n // Wrap bash: shell blocklist + audit.\r\n const safeBash = wrapWithShellSafety(bashTool, audit, sessionId);\r\n\r\n const registry = new ToolRegistry();\r\n registry.register(safeReadFile);\r\n registry.register(safeWriteFile);\r\n registry.register(safeEditFile);\r\n registry.register(safeBash);\r\n registry.register(safeGrepContent);\r\n\r\n const tools: BuiltinToolSummary[] = [\r\n safeReadFile,\r\n safeWriteFile,\r\n safeEditFile,\r\n safeBash,\r\n safeGrepContent,\r\n ].map((t) => ({\r\n name: t.name,\r\n description: t.description,\r\n permissions: t.permissions ?? [],\r\n }));\r\n return { registry, tools };\r\n}\r\n\r\n/**\r\n * Wrap a tool so that the named string args are validated through\r\n * resolveSandboxedPath() before the original execute() runs. The path\r\n * arg is rewritten to its resolved form so the tool sees the absolute\r\n * sandboxed path.\r\n */\r\nfunction wrapWithSandbox<I extends Record<string, unknown>, O>(\r\n original: ToolDefinition<I, O>,\r\n pathArgs: readonly string[],\r\n root: string,\r\n audit: AuditLogger,\r\n sessionId: string,\r\n): ToolDefinition<I, O> {\r\n return {\r\n ...original,\r\n execute: async (rawArgs: I, ctx: ToolContext): Promise<TypedResult<O>> => {\r\n // Pre-flight: sandbox all path args; rewrite them in-place.\r\n const args = rawArgs as Record<string, unknown>;\r\n for (const key of pathArgs) {\r\n const v = args[key];\r\n if (typeof v === 'string' && v.length > 0) {\r\n try {\r\n args[key] = resolveSandboxedPath(v, { root });\r\n } catch (err) {\r\n if (err instanceof SandboxViolationError) {\r\n // Audit + return typedErr so the caller gets a friendly error.\r\n await audit.append({\r\n ts: new Date().toISOString(),\r\n sessionId,\r\n tool: original.name,\r\n args: redactForAudit(args),\r\n ok: false,\r\n resultSummary: err.message,\r\n durationMs: 0,\r\n error: 'sandbox_violation',\r\n });\r\n return {\r\n ok: false,\r\n error: `[sandbox] ${err.message}`,\r\n } as TypedResult<O>;\r\n }\r\n throw err;\r\n }\r\n }\r\n }\r\n // Audit-wrapped execution.\r\n try {\r\n return await audit.runTool({\r\n tool: original.name,\r\n args: redactForAudit(args),\r\n sessionId,\r\n fn: () => original.execute(rawArgs, ctx),\r\n });\r\n } catch (err) {\r\n return {\r\n ok: false,\r\n error: err instanceof Error ? err.message : String(err),\r\n } as TypedResult<O>;\r\n }\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * Wrap the bash tool: assertShellAllowed() runs before execute(), and\r\n * every invocation is audited.\r\n */\r\nfunction wrapWithShellSafety<I extends Record<string, unknown>, O>(\r\n original: ToolDefinition<I, O>,\r\n audit: AuditLogger,\r\n sessionId: string,\r\n): ToolDefinition<I, O> {\r\n return {\r\n ...original,\r\n execute: async (rawArgs: I, ctx: ToolContext): Promise<TypedResult<O>> => {\r\n const args = rawArgs as Record<string, unknown>;\r\n const cmd = args['command'];\r\n if (typeof cmd === 'string') {\r\n try {\r\n assertShellAllowed(cmd);\r\n } catch (err) {\r\n if (err instanceof ShellBlockedError) {\r\n await audit.append({\r\n ts: new Date().toISOString(),\r\n sessionId,\r\n tool: original.name,\r\n args: redactForAudit(args),\r\n ok: false,\r\n resultSummary: err.message,\r\n durationMs: 0,\r\n error: 'shell_blocked',\r\n });\r\n return {\r\n ok: false,\r\n error: `[shell-blocked] ${err.message}`,\r\n } as TypedResult<O>;\r\n }\r\n throw err;\r\n }\r\n }\r\n try {\r\n return await audit.runTool({\r\n tool: original.name,\r\n args: redactForAudit(args),\r\n sessionId,\r\n fn: () => original.execute(rawArgs, ctx),\r\n });\r\n } catch (err) {\r\n return {\r\n ok: false,\r\n error: err instanceof Error ? err.message : String(err),\r\n } as TypedResult<O>;\r\n }\r\n },\r\n };\r\n}\r\n\r\nfunction redactForAudit(args: Record<string, unknown>): Record<string, unknown> {\r\n const out: Record<string, unknown> = {};\r\n for (const [k, v] of Object.entries(args)) {\r\n if (/(api[_-]?key|secret|token|password)/i.test(k) && typeof v === 'string') {\r\n out[k] = '***';\r\n } else if (typeof v === 'string' && v.length > 200) {\r\n out[k] = v.slice(0, 200) + '\u2026';\r\n } else {\r\n out[k] = v;\r\n }\r\n }\r\n return out;\r\n}", "/**\r\n * gitOps \u2014 git-backed operations for slash commands.\r\n *\r\n * Exposes:\r\n * - `getWorkingDiff(opts)` \u2192 returns the output of `git diff` (and optionally\r\n * `git diff --cached`) as a string. Read-only, safe.\r\n * - `undoWorkingChanges(opts)` \u2192 reverts working-tree modifications via\r\n * `git checkout -- .` and `git reset HEAD` for staged changes.\r\n * Destructive \u2014 callers should require an explicit `--yes` flag.\r\n *\r\n * Pure Node child_process \u2014 no Electron deps, browser-importable for tests.\r\n */\r\n\r\nimport { execFile } from 'node:child_process';\r\nimport { promisify } from 'node:util';\r\nimport path from 'node:path';\r\n\r\nconst execFileAsync = promisify(execFile);\r\n\r\nexport interface DiffOptions {\r\n /** Include staged changes (`git diff --cached`). Default false. */\r\n staged?: boolean;\r\n /** Working directory. Defaults to `process.cwd()`. */\r\n cwd?: string;\r\n /** Hard cap on diff length returned (chars). Default 50_000. */\r\n maxChars?: number;\r\n}\r\n\r\nexport interface DiffResult {\r\n /** Combined diff text. */\r\n diff: string;\r\n /** True if the diff was truncated due to maxChars. */\r\n truncated: boolean;\r\n /** True if there are no changes at all. */\r\n empty: boolean;\r\n}\r\n\r\nexport interface UndoOptions {\r\n /** Working directory. Defaults to `process.cwd()`. */\r\n cwd?: string;\r\n /** If true, also unstage everything (`git reset HEAD`). Default true. */\r\n unstage?: boolean;\r\n}\r\n\r\nexport interface UndoResult {\r\n /** Reverted file paths (post-checkout). */\r\n reverted: string[];\r\n /** Unstaged file paths (post-reset). */\r\n unstaged: string[];\r\n /** Human-readable summary. */\r\n summary: string;\r\n}\r\n\r\n/**\r\n * Best-effort: run `git -C <cwd> <args>` and return stdout. Returns null on\r\n * error (no git, not a repo, etc.). Never throws.\r\n */\r\nasync function git(cwd: string, args: string[]): Promise<string | null> {\r\n try {\r\n const { stdout } = await execFileAsync('git', ['-C', cwd, ...args], {\r\n maxBuffer: 16 * 1024 * 1024,\r\n });\r\n return stdout;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/** True if the working directory is inside a git working tree. */\r\nexport async function isGitRepo(cwd: string = process.cwd()): Promise<boolean> {\r\n const out = await git(cwd, ['rev-parse', '--is-inside-work-tree']);\r\n return out?.trim() === 'true';\r\n}\r\n\r\n/**\r\n * Read the working-tree diff. Combines `git diff` (unstaged) and, when\r\n * `staged: true`, `git diff --cached` (staged).\r\n */\r\nexport async function getWorkingDiff(opts: DiffOptions = {}): Promise<DiffResult> {\r\n const cwd = opts.cwd ?? process.cwd();\r\n const maxChars = opts.maxChars ?? 50_000;\r\n const unstaged = (await git(cwd, ['diff'])) ?? '';\r\n const staged = opts.staged\r\n ? ((await git(cwd, ['diff', '--cached'])) ?? '')\r\n : '';\r\n const combined = [staged, unstaged].filter((s) => s.length > 0).join('\\n');\r\n if (combined.length === 0) {\r\n return { diff: '', truncated: false, empty: true };\r\n }\r\n if (combined.length > maxChars) {\r\n return { diff: combined.slice(0, maxChars), truncated: true, empty: false };\r\n }\r\n return { diff: combined, truncated: false, empty: false };\r\n}\r\n\r\n/**\r\n * Revert working-tree changes. Discards:\r\n * - All unstaged modifications (`git checkout -- .`)\r\n * - All untracked files are NOT touched (would be too dangerous \u2014 use a\r\n * separate `git clean` command for that, intentionally not exposed here).\r\n * - Optionally unstages everything (`git reset HEAD`).\r\n *\r\n * Returns the list of files that were touched, so callers can show feedback.\r\n */\r\nexport async function undoWorkingChanges(opts: UndoOptions = {}): Promise<UndoResult> {\r\n const cwd = opts.cwd ?? process.cwd();\r\n const unstage = opts.unstage !== false; // default true\r\n\r\n // Snapshot the list of modified + staged files BEFORE the revert so we\r\n // can report what changed. We exclude untracked ('??') and ignored ('!!')\r\n // entries \u2014 undoing those would require `git clean`, which is intentionally\r\n // NOT exposed here.\r\n const statusBefore = (await git(cwd, ['status', '--porcelain'])) ?? '';\r\n const modified = statusBefore\r\n .split('\\n')\r\n .filter((line) => line.length > 0)\r\n .filter((line) => !line.startsWith('??') && !line.startsWith('!!'))\r\n .map((line) => line.slice(3).trim());\r\n\r\n // 1. `git checkout -- .` \u2014 revert unstaged modifications.\r\n await git(cwd, ['checkout', '--', '.']);\r\n\r\n // 2. Optionally `git reset HEAD` \u2014 unstage everything.\r\n if (unstage) {\r\n await git(cwd, ['reset', 'HEAD', '--', '.']);\r\n }\r\n\r\n return {\r\n reverted: modified,\r\n unstaged: unstage ? modified : [],\r\n summary: `Reverted ${modified.length} file(s)${unstage ? ' (also unstaged)' : ''}.`,\r\n };\r\n}\r\n\r\n/** Resolve the project root (the directory of this module's package.json) for convenience. */\r\nexport function defaultProjectRoot(): string {\r\n // electron/cli/gitOps.ts \u2192 3 levels up = project root.\r\n return path.resolve(__dirname, '..', '..', '..');\r\n}", "/**\r\n * compaction \u2014 Transcript compaction for long sessions (Task B.3).\r\n *\r\n * Strategy: stateless sliding-window with a \"summary\" placeholder message.\r\n * When the transcript exceeds `threshold` messages, keep only the most\r\n * recent `keepRecent` ones and prepend a single system message that\r\n * records how many earlier messages were dropped.\r\n *\r\n * Note: this is intentionally simpler than the LLM-summarization approach\r\n * documented in the plan (B.3.1). The current implementation:\r\n * - does NOT call an LLM\r\n * - does NOT preserve semantics of dropped messages\r\n * - just reduces the visible transcript so the next AgentHarness turn\r\n * doesn't blow context-window budgets\r\n *\r\n * The LLM-summarization path can be added later as a sibling function\r\n * (e.g. `compactTranscriptWithSummary(messages, providerStream)`) without\r\n * breaking this contract.\r\n */\r\n\r\nexport interface CompactionOptions {\r\n /** Soft trigger \u2014 compact when messages.length > threshold. Default 50. */\r\n threshold?: number;\r\n /** Hard cap \u2014 keep at most this many recent messages. Default 20. */\r\n keepRecent?: number;\r\n /** Current epoch ms (injected for tests). */\r\n now?: number;\r\n}\r\n\r\nexport interface CompactionResult {\r\n /** Compacted transcript (new array \u2014 original is not mutated). */\r\n messages: ReadonlyArray<CompactMessage>;\r\n /** Number of messages dropped. */\r\n droppedCount: number;\r\n /** Original total before compaction. */\r\n originalCount: number;\r\n /** Summary message prepended (null when no compaction needed). */\r\n summaryMessage: CompactMessage | null;\r\n}\r\n\r\n/** Minimal shape compatible with both BrainMessage and ChatMessage. */\r\nexport interface CompactMessage {\r\n id: string;\r\n role: 'user' | 'assistant' | 'system' | 'tool';\r\n content: string;\r\n ts: number;\r\n toolName?: string;\r\n toolOk?: boolean;\r\n toolDurationMs?: number;\r\n}\r\n\r\n/**\r\n * Compact a transcript when it exceeds the threshold.\r\n *\r\n * Returns the same array reference (with no summary) when compaction\r\n * isn't needed, so callers can compare references cheaply.\r\n */\r\nexport function compactTranscript(\r\n messages: ReadonlyArray<CompactMessage>,\r\n options: CompactionOptions = {},\r\n): CompactionResult {\r\n const threshold = options.threshold ?? 50;\r\n const keepRecent = options.keepRecent ?? 20;\r\n const now = options.now ?? Date.now();\r\n const original = messages.length;\r\n\r\n if (original <= threshold || keepRecent >= original) {\r\n return {\r\n messages,\r\n droppedCount: 0,\r\n originalCount: original,\r\n summaryMessage: null,\r\n };\r\n }\r\n\r\n // Drop the oldest (original - keepRecent) messages.\r\n const keepCount = Math.min(keepRecent, original);\r\n const droppedCount = original - keepCount;\r\n const kept = messages.slice(-keepCount);\r\n\r\n const summary: CompactMessage = {\r\n id: `compact-${now}-${Math.random().toString(36).slice(2, 8)}`,\r\n role: 'system',\r\n content: `[compact] ${droppedCount} earlier message(s) dropped (kept ${keepCount} recent). Full transcript in JSONL sidecar.`,\r\n ts: now,\r\n };\r\n\r\n return {\r\n messages: [summary, ...kept],\r\n droppedCount,\r\n originalCount: original,\r\n summaryMessage: summary,\r\n };\r\n}\r\n\r\n/** Format a CompactionResult for display in a system message. */\r\nexport function formatCompactionSummary(result: CompactionResult): string {\r\n if (result.droppedCount === 0) {\r\n return `[compact] no compaction needed (${result.originalCount} messages, below threshold)`;\r\n }\r\n return `[compact] ${result.originalCount} \u2192 ${result.messages.length} messages (dropped ${result.droppedCount})`;\r\n}", "/**\r\n * metrics \u2014 JSONL metrics logger (Task B.5).\r\n *\r\n * Append-only NDJSON writer for runtime telemetry. One event per line,\r\n * flushed via fire-and-forget queue (matches auditLogger pattern from\r\n * v3-A).\r\n *\r\n * Schema (per record):\r\n * {\r\n * ts: number, // epoch ms\r\n * kind: 'run' | 'message' | 'error',\r\n * sessionId?: string,\r\n * provider?: string,\r\n * model?: string,\r\n * latencyMs?: number,\r\n * tokens?: number,\r\n * costUsd?: number,\r\n * ok?: boolean,\r\n * error?: string,\r\n * }\r\n *\r\n * Storage: `~/.tmp/anathema-coder/metrics.jsonl` (override via\r\n * `ANATHEMA_METRICS_FILE` env var, useful for tests).\r\n *\r\n * Rotation: when the file exceeds 10MB, it's renamed to\r\n * `metrics.1.jsonl` (existing `.1.jsonl` is overwritten). Only one\r\n * rotation step \u2014 older data is dropped. This matches typical\r\n * logrotate setups.\r\n */\r\n\r\nimport { promises as fs, existsSync, statSync, renameSync, appendFileSync, mkdirSync } from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\n\r\nexport const METRICS_ROTATE_BYTES = 10 * 1024 * 1024; // 10 MB\r\n\r\nexport type MetricsKind = 'run' | 'message' | 'error' | 'tool';\r\n\r\nexport interface MetricsRecord {\r\n ts: number;\r\n kind: MetricsKind;\r\n sessionId?: string;\r\n provider?: string;\r\n model?: string;\r\n latencyMs?: number;\r\n tokens?: number;\r\n costUsd?: number;\r\n ok?: boolean;\r\n error?: string;\r\n /** Tool name (for `kind: 'tool'` records, Task G.3). */\r\n toolName?: string;\r\n /** Tool call id (for `kind: 'tool'` records). */\r\n toolCallId?: string;\r\n}\r\n\r\nexport class MetricsLogger {\r\n private readonly file: string;\r\n private writeQueue: Promise<void> = Promise.resolve();\r\n\r\n constructor(file?: string) {\r\n this.file = file ?? process.env.ANATHEMA_METRICS_FILE\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'metrics.jsonl');\r\n mkdirSync(path.dirname(this.file), { recursive: true });\r\n }\r\n\r\n /** Fire-and-forget record append. */\r\n record(rec: Omit<MetricsRecord, 'ts'> & { ts?: number }): void {\r\n const full: MetricsRecord = { ts: rec.ts ?? Date.now(), ...rec };\r\n this.writeQueue = this.writeQueue.then(() => this.append(full));\r\n void this.writeQueue.catch(() => {/* swallow \u2014 fire-and-forget */});\r\n }\r\n\r\n /** Append a single record synchronously (file I/O). */\r\n private append(rec: MetricsRecord): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n try {\r\n this.maybeRotate();\r\n const line = JSON.stringify(rec) + '\\n';\r\n appendFileSync(this.file, line, { encoding: 'utf-8' });\r\n resolve();\r\n } catch (err) {\r\n reject(err);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Force the write queue to flush \u2014 used by tests + on graceful shutdown.\r\n * Returns the underlying promise so callers can await it.\r\n */\r\n async flush(): Promise<void> {\r\n await this.writeQueue;\r\n }\r\n\r\n /** If the file is over the rotation threshold, rotate it. */\r\n private maybeRotate(): void {\r\n if (!existsSync(this.file)) return;\r\n try {\r\n const stat = statSync(this.file);\r\n if (stat.size >= METRICS_ROTATE_BYTES) {\r\n const rotated = this.file.replace(/\\.jsonl$/, '.1.jsonl');\r\n renameSync(this.file, rotated);\r\n }\r\n } catch {\r\n // Best-effort.\r\n }\r\n }\r\n}\r\n\r\n/** Convenience helper for tests: read all records from a metrics file. */\r\nexport async function readMetrics(file: string): Promise<MetricsRecord[]> {\r\n let raw = '';\r\n try {\r\n raw = await fs.readFile(file, 'utf-8');\r\n } catch {\r\n return [];\r\n }\r\n const out: MetricsRecord[] = [];\r\n for (const line of raw.split('\\n')) {\r\n if (!line.trim()) continue;\r\n try {\r\n out.push(JSON.parse(line) as MetricsRecord);\r\n } catch {\r\n // Skip malformed lines.\r\n }\r\n }\r\n return out;\r\n}\r\n\r\n/**\r\n * Process-wide singleton MetricsLogger (Task G.3.3). Multiple consumers\r\n * (the chat session in `app.tsx`, the shutdown handler in `main.ts`)\r\n * need to coordinate on a single writer so SIGINT/SIGTERM can flush\r\n * the pending fire-and-forget queue before `process.exit(0)` discards\r\n * anything still in memory.\r\n *\r\n * Lazy-instantiated on first access. Respects the same env override as\r\n * the constructor (`ANATHEMA_METRICS_FILE`), so tests can point it at\r\n * a temp file before any consumer imports it.\r\n *\r\n * @see docs/plans/2026-06-29-anathema-coder-v3-G.md (Task G.3.3)\r\n */\r\nlet _singleton: MetricsLogger | null = null;\r\nexport function getMetricsLogger(): MetricsLogger {\r\n if (!_singleton) {\r\n _singleton = new MetricsLogger();\r\n }\r\n return _singleton;\r\n}\r\n\r\n/** Reset the singleton (test-only). Forces a fresh instance on next getMetricsLogger(). */\r\nexport function resetMetricsLogger(): void {\r\n _singleton = null;\r\n}", "/**\r\n * skillHistory \u2014 JSONL skill invocation history (Phase 25 \u2014 Skill History + Telemetry).\r\n *\r\n * Tracks every invocation of `/skill <name>` so the user can later query\r\n * success rate + duration + token usage via `/skill-stats [name]`.\r\n *\r\n * Schema (per record):\r\n * {\r\n * ts: number, // epoch ms when invocation ended\r\n * skillId: string, // e.g. 'coder-debug', 'brain-memory'\r\n * invocationId: string, // unique per recordStart() call\r\n * sessionId?: string,\r\n * durationMs?: number, // wall-clock from recordStart to recordEnd\r\n * tokensUsed?: number, // optional \u2014 caller-supplied\r\n * ok: boolean, // true on success, false on error\r\n * error?: string, // error message when ok=false\r\n * }\r\n *\r\n * Storage: `~/.tmp/anathema-coder/skill-history.jsonl` (override via\r\n * `ANATHEMA_SKILL_HISTORY_FILE` env var, useful for tests).\r\n *\r\n * Rotation: when the file exceeds 10MB, it's renamed to\r\n * `skill-history.1.jsonl` (existing `.1.jsonl` is overwritten). Only one\r\n * rotation step \u2014 older data is dropped. Same pattern as metrics.ts.\r\n *\r\n * Privacy: only metadata is stored (skillId, duration, ok). No prompt\r\n * content or model outputs are persisted by this logger.\r\n */\r\n\r\nimport { promises as fs, existsSync, statSync, renameSync, appendFileSync, mkdirSync } from 'node:fs';\r\nimport path from 'node:path';\r\nimport os from 'node:os';\r\nimport { randomUUID } from 'node:crypto';\r\n\r\nexport const SKILL_HISTORY_ROTATE_BYTES = 10 * 1024 * 1024; // 10 MB\r\n\r\nexport interface SkillHistoryRecord {\r\n ts: number;\r\n skillId: string;\r\n invocationId: string;\r\n sessionId?: string;\r\n durationMs?: number;\r\n tokensUsed?: number;\r\n ok: boolean;\r\n error?: string;\r\n}\r\n\r\n/**\r\n * Aggregated stats for a single skill (or for all skills when skillId is omitted).\r\n * All fields default to 0 when count is 0.\r\n */\r\nexport interface SkillStats {\r\n count: number;\r\n successRate: number; // 0..1; 0 when count is 0\r\n avgDurationMs: number;\r\n totalTokens: number;\r\n}\r\n\r\n/**\r\n * In-flight invocation context (stored between recordStart + recordEnd).\r\n * Held in memory only \u2014 not persisted until recordEnd is called.\r\n */\r\ninterface InflightInvocation {\r\n ts: number;\r\n skillId: string;\r\n sessionId?: string;\r\n}\r\n\r\nexport class SkillHistoryLogger {\r\n private readonly file: string;\r\n private writeQueue: Promise<void> = Promise.resolve();\r\n private readonly inflight = new Map<string, InflightInvocation>();\r\n\r\n constructor(file?: string) {\r\n this.file = file ?? process.env.ANATHEMA_SKILL_HISTORY_FILE\r\n ?? path.join(os.homedir(), '.tmp', 'zelari-code', 'skill-history.jsonl');\r\n mkdirSync(path.dirname(this.file), { recursive: true });\r\n }\r\n\r\n /**\r\n * Mark the start of a skill invocation. Returns a unique invocationId\r\n * that the caller must pass to `recordEnd` when the invocation completes.\r\n *\r\n * Multiple concurrent invocations are supported (one inflight entry per id).\r\n */\r\n recordStart(skillId: string, sessionId?: string): string {\r\n const invocationId = randomUUID();\r\n this.inflight.set(invocationId, { ts: Date.now(), skillId, sessionId });\r\n return invocationId;\r\n }\r\n\r\n /**\r\n * Mark the end of a skill invocation. Writes a SkillHistoryRecord to disk.\r\n *\r\n * If `invocationId` is unknown (e.g. duplicate call or logger recreated),\r\n * this is a no-op. The logger never throws from recordEnd \u2014 it's safe\r\n * to call from finally blocks.\r\n */\r\n recordEnd(\r\n invocationId: string,\r\n outcome: { ok: boolean; tokensUsed?: number; error?: string },\r\n ): void {\r\n const start = this.inflight.get(invocationId);\r\n if (!start) return; // unknown id \u2014 graceful no-op\r\n this.inflight.delete(invocationId);\r\n const rec: SkillHistoryRecord = {\r\n ts: Date.now(),\r\n skillId: start.skillId,\r\n invocationId,\r\n sessionId: start.sessionId,\r\n durationMs: Date.now() - start.ts,\r\n tokensUsed: outcome.tokensUsed,\r\n ok: outcome.ok,\r\n error: outcome.error,\r\n };\r\n this.writeQueue = this.writeQueue.then(() => this.append(rec));\r\n void this.writeQueue.catch(() => {/* swallow \u2014 fire-and-forget */});\r\n }\r\n\r\n /**\r\n * Force the write queue to flush \u2014 used by tests + on graceful shutdown.\r\n * Returns the underlying promise so callers can await it.\r\n */\r\n async flush(): Promise<void> {\r\n await this.writeQueue;\r\n }\r\n\r\n /** Number of in-flight invocations (mostly for tests). */\r\n inflightCount(): number {\r\n return this.inflight.size;\r\n }\r\n\r\n /** Append a single record synchronously (file I/O). */\r\n private append(rec: SkillHistoryRecord): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n try {\r\n this.maybeRotate();\r\n const line = JSON.stringify(rec) + '\\n';\r\n appendFileSync(this.file, line, { encoding: 'utf-8' });\r\n resolve();\r\n } catch (err) {\r\n reject(err);\r\n }\r\n });\r\n }\r\n\r\n /** If the file is over the rotation threshold, rotate it. */\r\n private maybeRotate(): void {\r\n if (!existsSync(this.file)) return;\r\n try {\r\n const stat = statSync(this.file);\r\n if (stat.size >= SKILL_HISTORY_ROTATE_BYTES) {\r\n const rotated = this.file.replace(/\\.jsonl$/, '.1.jsonl');\r\n renameSync(this.file, rotated);\r\n }\r\n } catch {\r\n // Best-effort.\r\n }\r\n }\r\n}\r\n\r\n/** Convenience helper: read all records from a skill history file. */\r\nexport async function readSkillHistory(file: string): Promise<SkillHistoryRecord[]> {\r\n let raw = '';\r\n try {\r\n raw = await fs.readFile(file, 'utf-8');\r\n } catch {\r\n return [];\r\n }\r\n const out: SkillHistoryRecord[] = [];\r\n for (const line of raw.split('\\n')) {\r\n if (!line.trim()) continue;\r\n try {\r\n out.push(JSON.parse(line) as SkillHistoryRecord);\r\n } catch {\r\n // Skip malformed lines.\r\n }\r\n }\r\n return out;\r\n}\r\n\r\n/**\r\n * Compute aggregated stats over a list of records.\r\n *\r\n * Pure function \u2014 no file I/O. Caller reads the file with readSkillHistory()\r\n * and passes the records here.\r\n *\r\n * @param records \u2014 full record list (already loaded from disk)\r\n * @param skillId \u2014 optional filter: only stats for this skill\r\n * @param sinceTs \u2014 optional filter: only records with ts >= sinceTs\r\n */\r\nexport function getSkillStats(\r\n records: SkillHistoryRecord[],\r\n skillId?: string,\r\n sinceTs?: number,\r\n): SkillStats {\r\n const filtered = records.filter((r) => {\r\n if (skillId !== undefined && r.skillId !== skillId) return false;\r\n if (sinceTs !== undefined && r.ts < sinceTs) return false;\r\n return true;\r\n });\r\n if (filtered.length === 0) {\r\n return { count: 0, successRate: 0, avgDurationMs: 0, totalTokens: 0 };\r\n }\r\n const successCount = filtered.filter((r) => r.ok).length;\r\n const durations = filtered\r\n .map((r) => r.durationMs)\r\n .filter((d): d is number => typeof d === 'number');\r\n const avgDurationMs = durations.length === 0\r\n ? 0\r\n : durations.reduce((a, b) => a + b, 0) / durations.length;\r\n const totalTokens = filtered.reduce((sum, r) => sum + (r.tokensUsed ?? 0), 0);\r\n return {\r\n count: filtered.length,\r\n successRate: successCount / filtered.length,\r\n avgDurationMs,\r\n totalTokens,\r\n };\r\n}"],
5
+ "mappings": "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BAAA;AAAA,SAAAA,eAAA;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;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,eAAAC;AAAA,EAAA;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,oBAAAC;AAAA,EAAA;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,iBAAAC;AAAA,EAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAI;AAEG,IAAM,QAAsB,uBAAO,OAAO;AAAA,EAC7C,QAAQ;AACZ,CAAC;AAAA;AAC+B,SAAS,aAAa,MAAMC,cAAa,QAAQ;AAC7E,WAAS,KAAK,MAAM,KAAK;AACrB,QAAI,CAAC,KAAK,MAAM;AACZ,aAAO,eAAe,MAAM,QAAQ;AAAA,QAChC,OAAO;AAAA,UACH;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ,oBAAI,IAAI;AAAA,QACpB;AAAA,QACA,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AACA,QAAI,KAAK,KAAK,OAAO,IAAI,IAAI,GAAG;AAC5B;AAAA,IACJ;AACA,SAAK,KAAK,OAAO,IAAI,IAAI;AACzB,IAAAA,aAAY,MAAM,GAAG;AAErB,UAAM,QAAQ,EAAE;AAChB,UAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,YAAM,IAAI,KAAK,CAAC;AAChB,UAAI,EAAE,KAAK,OAAO;AACd,aAAK,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAAA,MAChC;AAAA,IACJ;AAAA,EACJ;AAEA,QAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,MAAM,mBAAmB,OAAO;AAAA,EAChC;AACA,SAAO,eAAe,YAAY,QAAQ,EAAE,OAAO,KAAK,CAAC;AACzD,WAAS,EAAE,KAAK;AACZ,QAAIC;AACJ,UAAM,OAAO,QAAQ,SAAS,IAAI,WAAW,IAAI;AACjD,SAAK,MAAM,GAAG;AACd,KAACA,MAAK,KAAK,MAAM,aAAaA,IAAG,WAAW,CAAC;AAC7C,eAAW,MAAM,KAAK,KAAK,UAAU;AACjC,SAAG;AAAA,IACP;AACA,WAAO;AAAA,EACX;AACA,SAAO,eAAe,GAAG,QAAQ,EAAE,OAAO,KAAK,CAAC;AAChD,SAAO,eAAe,GAAG,OAAO,aAAa;AAAA,IACzC,OAAO,CAAC,SAAS;AACb,UAAI,QAAQ,UAAU,gBAAgB,OAAO;AACzC,eAAO;AACX,aAAO,MAAM,MAAM,QAAQ,IAAI,IAAI;AAAA,IACvC;AAAA,EACJ,CAAC;AACD,SAAO,eAAe,GAAG,QAAQ,EAAE,OAAO,KAAK,CAAC;AAChD,SAAO;AACX;AAEO,IAAM,SAAS,OAAO,WAAW;AACjC,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACtC,cAAc;AACV,UAAM,0EAA0E;AAAA,EACpF;AACJ;AACO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACvC,YAAY,MAAM;AACd,UAAM,uDAAuD,IAAI,EAAE;AACnE,SAAK,OAAO;AAAA,EAChB;AACJ;AAAA,CACC,KAAK,YAAY,uBAAuB,GAAG,qBAAqB,CAAC;AAC3D,IAAM,eAAe,WAAW;AAChC,SAAS,OAAO,WAAW;AAC9B,MAAI;AACA,WAAO,OAAO,cAAc,SAAS;AACzC,SAAO;AACX;;;AC7EA;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,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,YAAY,KAAK;AAC7B,SAAO;AACX;AACO,SAAS,eAAe,KAAK;AAChC,SAAO;AACX;AACO,SAAS,SAAS,MAAM;AAAE;AAC1B,SAAS,YAAY,IAAI;AAC5B,QAAM,IAAI,MAAM,sCAAsC;AAC1D;AACO,SAAS,OAAO,GAAG;AAAE;AACrB,SAAS,cAAc,SAAS;AACnC,QAAM,gBAAgB,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,OAAO,MAAM,QAAQ;AAChF,QAAM,SAAS,OAAO,QAAQ,OAAO,EAChC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,cAAc,QAAQ,CAAC,CAAC,MAAM,EAAE,EACnD,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB,SAAO;AACX;AACO,SAAS,WAAWC,QAAO,YAAY,KAAK;AAC/C,SAAOA,OAAM,IAAI,CAAC,QAAQ,mBAAmB,GAAG,CAAC,EAAE,KAAK,SAAS;AACrE;AACO,SAAS,sBAAsB,GAAG,OAAO;AAC5C,MAAI,OAAO,UAAU;AACjB,WAAO,MAAM,SAAS;AAC1B,SAAO;AACX;AACO,SAAS,OAAO,QAAQ;AAC3B,QAAMC,OAAM;AACZ,SAAO;AAAA,IACH,IAAI,QAAQ;AACR,UAAI,CAACA,MAAK;AACN,cAAM,QAAQ,OAAO;AACrB,eAAO,eAAe,MAAM,SAAS,EAAE,MAAM,CAAC;AAC9C,eAAO;AAAA,MACX;AACA,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC9C;AAAA,EACJ;AACJ;AACO,SAAS,QAAQ,OAAO;AAC3B,SAAO,UAAU,QAAQ,UAAU;AACvC;AACO,SAAS,WAAW,QAAQ;AAC/B,QAAM,QAAQ,OAAO,WAAW,GAAG,IAAI,IAAI;AAC3C,QAAM,MAAM,OAAO,SAAS,GAAG,IAAI,OAAO,SAAS,IAAI,OAAO;AAC9D,SAAO,OAAO,MAAM,OAAO,GAAG;AAClC;AACO,SAAS,mBAAmB,KAAK,MAAM;AAC1C,QAAM,QAAQ,MAAM;AACpB,QAAM,eAAe,KAAK,MAAM,KAAK;AAErC,QAAM,YAAY,OAAO,UAAU,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC;AAC9D,MAAI,KAAK,IAAI,QAAQ,YAAY,IAAI;AACjC,WAAO;AACX,SAAO,QAAQ;AACnB;AACA,IAAM,aAA4B,uBAAO,YAAY;AAC9C,SAAS,WAAWC,SAAQ,KAAK,QAAQ;AAC5C,MAAI,QAAQ;AACZ,SAAO,eAAeA,SAAQ,KAAK;AAAA,IAC/B,MAAM;AACF,UAAI,UAAU,YAAY;AAEtB,eAAO;AAAA,MACX;AACA,UAAI,UAAU,QAAW;AACrB,gBAAQ;AACR,gBAAQ,OAAO;AAAA,MACnB;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,GAAG;AACH,aAAO,eAAeA,SAAQ,KAAK;AAAA,QAC/B,OAAO;AAAA;AAAA,MAEX,CAAC;AAAA,IAEL;AAAA,IACA,cAAc;AAAA,EAClB,CAAC;AACL;AACO,SAAS,YAAY,KAAK;AAC7B,SAAO,OAAO,OAAO,OAAO,eAAe,GAAG,GAAG,OAAO,0BAA0B,GAAG,CAAC;AAC1F;AACO,SAAS,WAAW,QAAQ,MAAM,OAAO;AAC5C,SAAO,eAAe,QAAQ,MAAM;AAAA,IAChC;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AACL;AACO,SAAS,aAAa,MAAM;AAC/B,QAAM,oBAAoB,CAAC;AAC3B,aAAW,OAAO,MAAM;AACpB,UAAM,cAAc,OAAO,0BAA0B,GAAG;AACxD,WAAO,OAAO,mBAAmB,WAAW;AAAA,EAChD;AACA,SAAO,OAAO,iBAAiB,CAAC,GAAG,iBAAiB;AACxD;AACO,SAAS,SAAS,QAAQ;AAC7B,SAAO,UAAU,OAAO,KAAK,GAAG;AACpC;AACO,SAAS,iBAAiB,KAAKC,QAAM;AACxC,MAAI,CAACA;AACD,WAAO;AACX,SAAOA,OAAK,OAAO,CAAC,KAAK,QAAQ,MAAM,GAAG,GAAG,GAAG;AACpD;AACO,SAAS,iBAAiB,aAAa;AAC1C,QAAM,OAAO,OAAO,KAAK,WAAW;AACpC,QAAM,WAAW,KAAK,IAAI,CAAC,QAAQ,YAAY,GAAG,CAAC;AACnD,SAAO,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,YAAY;AAC3C,UAAM,cAAc,CAAC;AACrB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,kBAAY,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;AAAA,IACpC;AACA,WAAO;AAAA,EACX,CAAC;AACL;AACO,SAAS,aAAa,SAAS,IAAI;AACtC,QAAM,QAAQ;AACd,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,WAAO,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,MAAM,MAAM,CAAC;AAAA,EACzD;AACA,SAAO;AACX;AACO,SAAS,IAAI,KAAK;AACrB,SAAO,KAAK,UAAU,GAAG;AAC7B;AACO,SAASC,SAAQ,OAAO;AAC3B,SAAO,MACF,YAAY,EACZ,KAAK,EACL,QAAQ,aAAa,EAAE,EACvB,QAAQ,YAAY,GAAG,EACvB,QAAQ,YAAY,EAAE;AAC/B;AACO,IAAM,oBAAqB,uBAAuB,QAAQ,MAAM,oBAAoB,IAAI,UAAU;AAAE;AACpG,SAAS,SAAS,MAAM;AAC3B,SAAO,OAAO,SAAS,YAAY,SAAS,QAAQ,CAAC,MAAM,QAAQ,IAAI;AAC3E;AACO,IAAM,aAA4B,uBAAO,MAAM;AAGlD,MAAI,aAAa,SAAS;AACtB,WAAO;AAAA,EACX;AAEA,MAAI,OAAO,cAAc,eAAe,WAAW,WAAW,SAAS,YAAY,GAAG;AAClF,WAAO;AAAA,EACX;AACA,MAAI;AACA,UAAM,IAAI;AACV,QAAI,EAAE,EAAE;AACR,WAAO;AAAA,EACX,SACO,GAAG;AACN,WAAO;AAAA,EACX;AACJ,CAAC;AACM,SAAS,cAAc,GAAG;AAC7B,MAAI,SAAS,CAAC,MAAM;AAChB,WAAO;AAEX,QAAM,OAAO,EAAE;AACf,MAAI,SAAS;AACT,WAAO;AACX,MAAI,OAAO,SAAS;AAChB,WAAO;AAEX,QAAM,OAAO,KAAK;AAClB,MAAI,SAAS,IAAI,MAAM;AACnB,WAAO;AAEX,MAAI,OAAO,UAAU,eAAe,KAAK,MAAM,eAAe,MAAM,OAAO;AACvE,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACO,SAAS,aAAa,GAAG;AAC5B,MAAI,cAAc,CAAC;AACf,WAAO,EAAE,GAAG,EAAE;AAClB,MAAI,MAAM,QAAQ,CAAC;AACf,WAAO,CAAC,GAAG,CAAC;AAChB,MAAI,aAAa;AACb,WAAO,IAAI,IAAI,CAAC;AACpB,MAAI,aAAa;AACb,WAAO,IAAI,IAAI,CAAC;AACpB,SAAO;AACX;AACO,SAAS,QAAQ,MAAM;AAC1B,MAAI,WAAW;AACf,aAAW,OAAO,MAAM;AACpB,QAAI,OAAO,UAAU,eAAe,KAAK,MAAM,GAAG,GAAG;AACjD;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACO,IAAM,gBAAgB,CAAC,SAAS;AACnC,QAAM,IAAI,OAAO;AACjB,UAAQ,GAAG;AAAA,IACP,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO,OAAO,MAAM,IAAI,IAAI,QAAQ;AAAA,IACxC,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,UAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,eAAO;AAAA,MACX;AACA,UAAI,SAAS,MAAM;AACf,eAAO;AAAA,MACX;AACA,UAAI,KAAK,QAAQ,OAAO,KAAK,SAAS,cAAc,KAAK,SAAS,OAAO,KAAK,UAAU,YAAY;AAChG,eAAO;AAAA,MACX;AACA,UAAI,OAAO,QAAQ,eAAe,gBAAgB,KAAK;AACnD,eAAO;AAAA,MACX;AACA,UAAI,OAAO,QAAQ,eAAe,gBAAgB,KAAK;AACnD,eAAO;AAAA,MACX;AACA,UAAI,OAAO,SAAS,eAAe,gBAAgB,MAAM;AACrD,eAAO;AAAA,MACX;AAEA,UAAI,OAAO,SAAS,eAAe,gBAAgB,MAAM;AACrD,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AACI,YAAM,IAAI,MAAM,sBAAsB,CAAC,EAAE;AAAA,EACjD;AACJ;AACO,IAAM,mBAAkC,oBAAI,IAAI,CAAC,UAAU,UAAU,QAAQ,CAAC;AAC9E,IAAM,iBAAgC,oBAAI,IAAI;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AACM,SAAS,YAAY,KAAK;AAC7B,SAAO,IAAI,QAAQ,uBAAuB,MAAM;AACpD;AAEO,SAAS,MAAM,MAAM,KAAK,QAAQ;AACrC,QAAM,KAAK,IAAI,KAAK,KAAK,OAAO,OAAO,KAAK,KAAK,GAAG;AACpD,MAAI,CAAC,OAAO,QAAQ;AAChB,OAAG,KAAK,SAAS;AACrB,SAAO;AACX;AACO,SAAS,gBAAgB,SAAS;AACrC,QAAM,SAAS;AACf,MAAI,CAAC;AACD,WAAO,CAAC;AACZ,MAAI,OAAO,WAAW;AAClB,WAAO,EAAE,OAAO,MAAM,OAAO;AACjC,MAAI,QAAQ,YAAY,QAAW;AAC/B,QAAI,QAAQ,UAAU;AAClB,YAAM,IAAI,MAAM,kDAAkD;AACtE,WAAO,QAAQ,OAAO;AAAA,EAC1B;AACA,SAAO,OAAO;AACd,MAAI,OAAO,OAAO,UAAU;AACxB,WAAO,EAAE,GAAG,QAAQ,OAAO,MAAM,OAAO,MAAM;AAClD,SAAO;AACX;AACO,SAAS,uBAAuB,QAAQ;AAC3C,MAAI;AACJ,SAAO,IAAI,MAAM,CAAC,GAAG;AAAA,IACjB,IAAI,GAAG,MAAM,UAAU;AACnB,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA,IAC7C;AAAA,IACA,IAAI,GAAG,MAAM,OAAO,UAAU;AAC1B,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,IAAI,QAAQ,MAAM,OAAO,QAAQ;AAAA,IACpD;AAAA,IACA,IAAI,GAAG,MAAM;AACT,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,IAAI,QAAQ,IAAI;AAAA,IACnC;AAAA,IACA,eAAe,GAAG,MAAM;AACpB,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,eAAe,QAAQ,IAAI;AAAA,IAC9C;AAAA,IACA,QAAQ,GAAG;AACP,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,QAAQ,MAAM;AAAA,IACjC;AAAA,IACA,yBAAyB,GAAG,MAAM;AAC9B,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,yBAAyB,QAAQ,IAAI;AAAA,IACxD;AAAA,IACA,eAAe,GAAG,MAAM,YAAY;AAChC,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,eAAe,QAAQ,MAAM,UAAU;AAAA,IAC1D;AAAA,EACJ,CAAC;AACL;AACO,SAAS,mBAAmB,OAAO;AACtC,MAAI,OAAO,UAAU;AACjB,WAAO,MAAM,SAAS,IAAI;AAC9B,MAAI,OAAO,UAAU;AACjB,WAAO,IAAI,KAAK;AACpB,SAAO,GAAG,KAAK;AACnB;AACO,SAAS,aAAa,OAAO;AAChC,SAAO,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,MAAM;AACpC,WAAO,MAAM,CAAC,EAAE,KAAK,UAAU,cAAc,MAAM,CAAC,EAAE,KAAK,WAAW;AAAA,EAC1E,CAAC;AACL;AACO,IAAM,uBAAuB;AAAA,EAChC,SAAS,CAAC,OAAO,kBAAkB,OAAO,gBAAgB;AAAA,EAC1D,OAAO,CAAC,aAAa,UAAU;AAAA,EAC/B,QAAQ,CAAC,GAAG,UAAU;AAAA,EACtB,SAAS,CAAC,uBAAwB,oBAAqB;AAAA,EACvD,SAAS,CAAC,CAAC,OAAO,WAAW,OAAO,SAAS;AACjD;AACO,IAAM,uBAAuB;AAAA,EAChC,OAAO,CAAgB,uBAAO,sBAAsB,GAAkB,uBAAO,qBAAqB,CAAC;AAAA,EACnG,QAAQ,CAAgB,uBAAO,CAAC,GAAkB,uBAAO,sBAAsB,CAAC;AACpF;AACO,SAAS,KAAK,QAAQ,MAAM;AAC/B,QAAM,UAAU,OAAO,KAAK;AAC5B,QAAM,SAAS,QAAQ;AACvB,QAAM,YAAY,UAAU,OAAO,SAAS;AAC5C,MAAI,WAAW;AACX,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACrF;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,WAAW,CAAC;AAClB,iBAAW,OAAO,MAAM;AACpB,YAAI,EAAE,OAAO,QAAQ,QAAQ;AACzB,gBAAM,IAAI,MAAM,sBAAsB,GAAG,GAAG;AAAA,QAChD;AACA,YAAI,CAAC,KAAK,GAAG;AACT;AACJ,iBAAS,GAAG,IAAI,QAAQ,MAAM,GAAG;AAAA,MACrC;AACA,iBAAW,MAAM,SAAS,QAAQ;AAClC,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,CAAC;AAAA,EACb,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,KAAK,QAAQ,MAAM;AAC/B,QAAM,UAAU,OAAO,KAAK;AAC5B,QAAM,SAAS,QAAQ;AACvB,QAAM,YAAY,UAAU,OAAO,SAAS;AAC5C,MAAI,WAAW;AACX,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACrF;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,WAAW,EAAE,GAAG,OAAO,KAAK,IAAI,MAAM;AAC5C,iBAAW,OAAO,MAAM;AACpB,YAAI,EAAE,OAAO,QAAQ,QAAQ;AACzB,gBAAM,IAAI,MAAM,sBAAsB,GAAG,GAAG;AAAA,QAChD;AACA,YAAI,CAAC,KAAK,GAAG;AACT;AACJ,eAAO,SAAS,GAAG;AAAA,MACvB;AACA,iBAAW,MAAM,SAAS,QAAQ;AAClC,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,CAAC;AAAA,EACb,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,OAAO,QAAQ,OAAO;AAClC,MAAI,CAAC,cAAc,KAAK,GAAG;AACvB,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACtE;AACA,QAAM,SAAS,OAAO,KAAK,IAAI;AAC/B,QAAM,YAAY,UAAU,OAAO,SAAS;AAC5C,MAAI,WAAW;AAGX,UAAM,gBAAgB,OAAO,KAAK,IAAI;AACtC,eAAW,OAAO,OAAO;AACrB,UAAI,OAAO,yBAAyB,eAAe,GAAG,MAAM,QAAW;AACnE,cAAM,IAAI,MAAM,8FAA8F;AAAA,MAClH;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,SAAS,EAAE,GAAG,OAAO,KAAK,IAAI,OAAO,GAAG,MAAM;AACpD,iBAAW,MAAM,SAAS,MAAM;AAChC,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,WAAW,QAAQ,OAAO;AACtC,MAAI,CAAC,cAAc,KAAK,GAAG;AACvB,UAAM,IAAI,MAAM,sDAAsD;AAAA,EAC1E;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,SAAS,EAAE,GAAG,OAAO,KAAK,IAAI,OAAO,GAAG,MAAM;AACpD,iBAAW,MAAM,SAAS,MAAM;AAChC,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,MAAM,GAAG,GAAG;AACxB,MAAI,EAAE,KAAK,IAAI,QAAQ,QAAQ;AAC3B,UAAM,IAAI,MAAM,8FAA8F;AAAA,EAClH;AACA,QAAM,MAAM,UAAU,EAAE,KAAK,KAAK;AAAA,IAC9B,IAAI,QAAQ;AACR,YAAM,SAAS,EAAE,GAAG,EAAE,KAAK,IAAI,OAAO,GAAG,EAAE,KAAK,IAAI,MAAM;AAC1D,iBAAW,MAAM,SAAS,MAAM;AAChC,aAAO;AAAA,IACX;AAAA,IACA,IAAI,WAAW;AACX,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAAA,IACA,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC;AAAA,EAClC,CAAC;AACD,SAAO,MAAM,GAAG,GAAG;AACvB;AACO,SAAS,QAAQC,QAAO,QAAQ,MAAM;AACzC,QAAM,UAAU,OAAO,KAAK;AAC5B,QAAM,SAAS,QAAQ;AACvB,QAAM,YAAY,UAAU,OAAO,SAAS;AAC5C,MAAI,WAAW;AACX,UAAM,IAAI,MAAM,oEAAoE;AAAA,EACxF;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,WAAW,OAAO,KAAK,IAAI;AACjC,YAAM,QAAQ,EAAE,GAAG,SAAS;AAC5B,UAAI,MAAM;AACN,mBAAW,OAAO,MAAM;AACpB,cAAI,EAAE,OAAO,WAAW;AACpB,kBAAM,IAAI,MAAM,sBAAsB,GAAG,GAAG;AAAA,UAChD;AACA,cAAI,CAAC,KAAK,GAAG;AACT;AAEJ,gBAAM,GAAG,IAAIA,SACP,IAAIA,OAAM;AAAA,YACR,MAAM;AAAA,YACN,WAAW,SAAS,GAAG;AAAA,UAC3B,CAAC,IACC,SAAS,GAAG;AAAA,QACtB;AAAA,MACJ,OACK;AACD,mBAAW,OAAO,UAAU;AAExB,gBAAM,GAAG,IAAIA,SACP,IAAIA,OAAM;AAAA,YACR,MAAM;AAAA,YACN,WAAW,SAAS,GAAG;AAAA,UAC3B,CAAC,IACC,SAAS,GAAG;AAAA,QACtB;AAAA,MACJ;AACA,iBAAW,MAAM,SAAS,KAAK;AAC/B,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,CAAC;AAAA,EACb,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,SAASA,QAAO,QAAQ,MAAM;AAC1C,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,WAAW,OAAO,KAAK,IAAI;AACjC,YAAM,QAAQ,EAAE,GAAG,SAAS;AAC5B,UAAI,MAAM;AACN,mBAAW,OAAO,MAAM;AACpB,cAAI,EAAE,OAAO,QAAQ;AACjB,kBAAM,IAAI,MAAM,sBAAsB,GAAG,GAAG;AAAA,UAChD;AACA,cAAI,CAAC,KAAK,GAAG;AACT;AAEJ,gBAAM,GAAG,IAAI,IAAIA,OAAM;AAAA,YACnB,MAAM;AAAA,YACN,WAAW,SAAS,GAAG;AAAA,UAC3B,CAAC;AAAA,QACL;AAAA,MACJ,OACK;AACD,mBAAW,OAAO,UAAU;AAExB,gBAAM,GAAG,IAAI,IAAIA,OAAM;AAAA,YACnB,MAAM;AAAA,YACN,WAAW,SAAS,GAAG;AAAA,UAC3B,CAAC;AAAA,QACL;AAAA,MACJ;AACA,iBAAW,MAAM,SAAS,KAAK;AAC/B,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AAEO,SAAS,QAAQ,GAAG,aAAa,GAAG;AACvC,MAAI,EAAE,YAAY;AACd,WAAO;AACX,WAAS,IAAI,YAAY,IAAI,EAAE,OAAO,QAAQ,KAAK;AAC/C,QAAI,EAAE,OAAO,CAAC,GAAG,aAAa,MAAM;AAChC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AAGO,SAAS,kBAAkB,GAAG,aAAa,GAAG;AACjD,MAAI,EAAE,YAAY;AACd,WAAO;AACX,WAAS,IAAI,YAAY,IAAI,EAAE,OAAO,QAAQ,KAAK;AAC/C,QAAI,EAAE,OAAO,CAAC,GAAG,aAAa,OAAO;AACjC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,aAAaF,QAAM,QAAQ;AACvC,SAAO,OAAO,IAAI,CAAC,QAAQ;AACvB,QAAIG;AACJ,KAACA,MAAK,KAAK,SAASA,IAAG,OAAO,CAAC;AAC/B,QAAI,KAAK,QAAQH,MAAI;AACrB,WAAO;AAAA,EACX,CAAC;AACL;AACO,SAAS,cAAc,SAAS;AACnC,SAAO,OAAO,YAAY,WAAW,UAAU,SAAS;AAC5D;AACO,SAAS,cAAc,KAAK,KAAKI,SAAQ;AAC5C,QAAM,UAAU,IAAI,UACd,IAAI,UACH,cAAc,IAAI,MAAM,KAAK,KAAK,QAAQ,GAAG,CAAC,KAC7C,cAAc,KAAK,QAAQ,GAAG,CAAC,KAC/B,cAAcA,QAAO,cAAc,GAAG,CAAC,KACvC,cAAcA,QAAO,cAAc,GAAG,CAAC,KACvC;AACR,QAAM,EAAE,MAAM,OAAO,UAAU,WAAW,OAAO,QAAQ,GAAG,KAAK,IAAI;AACrE,OAAK,SAAS,KAAK,OAAO,CAAC;AAC3B,OAAK,UAAU;AACf,MAAI,KAAK,aAAa;AAClB,SAAK,QAAQ;AAAA,EACjB;AACA,SAAO;AACX;AACO,SAAS,iBAAiB,OAAO;AACpC,MAAI,iBAAiB;AACjB,WAAO;AACX,MAAI,iBAAiB;AACjB,WAAO;AAEX,MAAI,iBAAiB;AACjB,WAAO;AACX,SAAO;AACX;AACO,SAAS,oBAAoB,OAAO;AACvC,MAAI,MAAM,QAAQ,KAAK;AACnB,WAAO;AACX,MAAI,OAAO,UAAU;AACjB,WAAO;AACX,SAAO;AACX;AACO,SAAS,WAAW,MAAM;AAC7B,QAAM,IAAI,OAAO;AACjB,UAAQ,GAAG;AAAA,IACP,KAAK,UAAU;AACX,aAAO,OAAO,MAAM,IAAI,IAAI,QAAQ;AAAA,IACxC;AAAA,IACA,KAAK,UAAU;AACX,UAAI,SAAS,MAAM;AACf,eAAO;AAAA,MACX;AACA,UAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,eAAO;AAAA,MACX;AACA,YAAM,MAAM;AACZ,UAAI,OAAO,OAAO,eAAe,GAAG,MAAM,OAAO,aAAa,iBAAiB,OAAO,IAAI,aAAa;AACnG,eAAO,IAAI,YAAY;AAAA,MAC3B;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,SAAS,MAAM;AAC3B,QAAM,CAAC,KAAK,OAAO,IAAI,IAAI;AAC3B,MAAI,OAAO,QAAQ,UAAU;AACzB,WAAO;AAAA,MACH,SAAS;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,EAAE,GAAG,IAAI;AACpB;AACO,SAAS,UAAU,KAAK;AAC3B,SAAO,OAAO,QAAQ,GAAG,EACpB,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM;AAEpB,WAAO,OAAO,MAAM,OAAO,SAAS,GAAG,EAAE,CAAC;AAAA,EAC9C,CAAC,EACI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAC1B;AAEO,SAAS,mBAAmBC,SAAQ;AACvC,QAAM,eAAe,KAAKA,OAAM;AAChC,QAAM,QAAQ,IAAI,WAAW,aAAa,MAAM;AAChD,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,UAAM,CAAC,IAAI,aAAa,WAAW,CAAC;AAAA,EACxC;AACA,SAAO;AACX;AACO,SAAS,mBAAmB,OAAO;AACtC,MAAI,eAAe;AACnB,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,oBAAgB,OAAO,aAAa,MAAM,CAAC,CAAC;AAAA,EAChD;AACA,SAAO,KAAK,YAAY;AAC5B;AACO,SAAS,sBAAsBC,YAAW;AAC7C,QAAMD,UAASC,WAAU,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AAC7D,QAAM,UAAU,IAAI,QAAQ,IAAKD,QAAO,SAAS,KAAM,CAAC;AACxD,SAAO,mBAAmBA,UAAS,OAAO;AAC9C;AACO,SAAS,sBAAsB,OAAO;AACzC,SAAO,mBAAmB,KAAK,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,MAAM,EAAE;AAC7F;AACO,SAAS,gBAAgBE,MAAK;AACjC,QAAM,WAAWA,KAAI,QAAQ,OAAO,EAAE;AACtC,MAAI,SAAS,SAAS,MAAM,GAAG;AAC3B,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AACA,QAAM,QAAQ,IAAI,WAAW,SAAS,SAAS,CAAC;AAChD,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AACzC,UAAM,IAAI,CAAC,IAAI,OAAO,SAAS,SAAS,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;AAAA,EAC/D;AACA,SAAO;AACX;AACO,SAAS,gBAAgB,OAAO;AACnC,SAAO,MAAM,KAAK,KAAK,EAClB,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAC1C,KAAK,EAAE;AAChB;AAEO,IAAM,QAAN,MAAY;AAAA,EACf,eAAe,OAAO;AAAA,EAAE;AAC5B;;;AC/pBA,IAAM,cAAc,CAAC,MAAM,QAAQ;AAC/B,OAAK,OAAO;AACZ,SAAO,eAAe,MAAM,QAAQ;AAAA,IAChC,OAAO,KAAK;AAAA,IACZ,YAAY;AAAA,EAChB,CAAC;AACD,SAAO,eAAe,MAAM,UAAU;AAAA,IAClC,OAAO;AAAA,IACP,YAAY;AAAA,EAChB,CAAC;AACD,OAAK,UAAU,KAAK,UAAU,KAAU,uBAAuB,CAAC;AAChE,SAAO,eAAe,MAAM,YAAY;AAAA,IACpC,OAAO,MAAM,KAAK;AAAA,IAClB,YAAY;AAAA,EAChB,CAAC;AACL;AACO,IAAM,YAAY,aAAa,aAAa,WAAW;AACvD,IAAM,gBAAgB,aAAa,aAAa,aAAa,EAAE,QAAQ,MAAM,CAAC;AAC9E,SAAS,aAAaC,SAAO,SAAS,CAACC,WAAUA,OAAM,SAAS;AACnE,QAAM,cAAc,CAAC;AACrB,QAAM,aAAa,CAAC;AACpB,aAAW,OAAOD,QAAM,QAAQ;AAC5B,QAAI,IAAI,KAAK,SAAS,GAAG;AACrB,kBAAY,IAAI,KAAK,CAAC,CAAC,IAAI,YAAY,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC;AACxD,kBAAY,IAAI,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,GAAG,CAAC;AAAA,IAC7C,OACK;AACD,iBAAW,KAAK,OAAO,GAAG,CAAC;AAAA,IAC/B;AAAA,EACJ;AACA,SAAO,EAAE,YAAY,YAAY;AACrC;AACO,SAAS,YAAYA,SAAO,SAAS,CAACC,WAAUA,OAAM,SAAS;AAClE,QAAM,cAAc,EAAE,SAAS,CAAC,EAAE;AAClC,QAAM,eAAe,CAACD,SAAOE,SAAO,CAAC,MAAM;AACvC,eAAWD,UAASD,QAAM,QAAQ;AAC9B,UAAIC,OAAM,SAAS,mBAAmBA,OAAM,OAAO,QAAQ;AACvD,QAAAA,OAAM,OAAO,IAAI,CAAC,WAAW,aAAa,EAAE,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC,CAAC;AAAA,MACnF,WACSA,OAAM,SAAS,eAAe;AACnC,qBAAa,EAAE,QAAQA,OAAM,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC;AAAA,MACnE,WACSA,OAAM,SAAS,mBAAmB;AACvC,qBAAa,EAAE,QAAQA,OAAM,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC;AAAA,MACnE,OACK;AACD,cAAM,WAAW,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI;AACxC,YAAI,SAAS,WAAW,GAAG;AACvB,sBAAY,QAAQ,KAAK,OAAOA,MAAK,CAAC;AAAA,QAC1C,OACK;AACD,cAAI,OAAO;AACX,cAAI,IAAI;AACR,iBAAO,IAAI,SAAS,QAAQ;AACxB,kBAAM,KAAK,SAAS,CAAC;AACrB,kBAAM,WAAW,MAAM,SAAS,SAAS;AACzC,gBAAI,CAAC,UAAU;AACX,mBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;AAAA,YACzC,OACK;AACD,mBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;AACrC,mBAAK,EAAE,EAAE,QAAQ,KAAK,OAAOA,MAAK,CAAC;AAAA,YACvC;AACA,mBAAO,KAAK,EAAE;AACd;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,eAAaD,OAAK;AAClB,SAAO;AACX;AACO,SAAS,aAAaA,SAAO,SAAS,CAACC,WAAUA,OAAM,SAAS;AACnE,QAAM,SAAS,EAAE,QAAQ,CAAC,EAAE;AAC5B,QAAM,eAAe,CAACD,SAAOE,SAAO,CAAC,MAAM;AACvC,QAAIC,KAAI;AACR,eAAWF,UAASD,QAAM,QAAQ;AAC9B,UAAIC,OAAM,SAAS,mBAAmBA,OAAM,OAAO,QAAQ;AAEvD,QAAAA,OAAM,OAAO,IAAI,CAAC,WAAW,aAAa,EAAE,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC,CAAC;AAAA,MACnF,WACSA,OAAM,SAAS,eAAe;AACnC,qBAAa,EAAE,QAAQA,OAAM,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC;AAAA,MACnE,WACSA,OAAM,SAAS,mBAAmB;AACvC,qBAAa,EAAE,QAAQA,OAAM,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC;AAAA,MACnE,OACK;AACD,cAAM,WAAW,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI;AACxC,YAAI,SAAS,WAAW,GAAG;AACvB,iBAAO,OAAO,KAAK,OAAOA,MAAK,CAAC;AAChC;AAAA,QACJ;AACA,YAAI,OAAO;AACX,YAAI,IAAI;AACR,eAAO,IAAI,SAAS,QAAQ;AACxB,gBAAM,KAAK,SAAS,CAAC;AACrB,gBAAM,WAAW,MAAM,SAAS,SAAS;AACzC,cAAI,OAAO,OAAO,UAAU;AACxB,iBAAK,eAAe,KAAK,aAAa,CAAC;AACvC,aAACE,MAAK,KAAK,YAAY,EAAE,MAAMA,IAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;AACrD,mBAAO,KAAK,WAAW,EAAE;AAAA,UAC7B,OACK;AACD,iBAAK,UAAU,KAAK,QAAQ,CAAC;AAC7B,aAAC,KAAK,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;AAChD,mBAAO,KAAK,MAAM,EAAE;AAAA,UACxB;AACA,cAAI,UAAU;AACV,iBAAK,OAAO,KAAK,OAAOF,MAAK,CAAC;AAAA,UAClC;AACA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,eAAaD,OAAK;AAClB,SAAO;AACX;AAiCO,SAAS,UAAU,OAAO;AAC7B,QAAM,OAAO,CAAC;AACd,QAAME,SAAO,MAAM,IAAI,CAAC,QAAS,OAAO,QAAQ,WAAW,IAAI,MAAM,GAAI;AACzE,aAAW,OAAOA,QAAM;AACpB,QAAI,OAAO,QAAQ;AACf,WAAK,KAAK,IAAI,GAAG,GAAG;AAAA,aACf,OAAO,QAAQ;AACpB,WAAK,KAAK,IAAI,KAAK,UAAU,OAAO,GAAG,CAAC,CAAC,GAAG;AAAA,aACvC,SAAS,KAAK,GAAG;AACtB,WAAK,KAAK,IAAI,KAAK,UAAU,GAAG,CAAC,GAAG;AAAA,SACnC;AACD,UAAI,KAAK;AACL,aAAK,KAAK,GAAG;AACjB,WAAK,KAAK,GAAG;AAAA,IACjB;AAAA,EACJ;AACA,SAAO,KAAK,KAAK,EAAE;AACvB;AACO,SAAS,cAAcF,SAAO;AACjC,QAAM,QAAQ,CAAC;AAEf,QAAM,SAAS,CAAC,GAAGA,QAAM,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM;AAE7F,aAAWC,UAAS,QAAQ;AACxB,UAAM,KAAK,UAAKA,OAAM,OAAO,EAAE;AAC/B,QAAIA,OAAM,MAAM;AACZ,YAAM,KAAK,eAAU,UAAUA,OAAM,IAAI,CAAC,EAAE;AAAA,EACpD;AAEA,SAAO,MAAM,KAAK,IAAI;AAC1B;;;ACrLO,IAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,OAAO,MAAM,YAAY;AAC9D,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,OAAO,MAAM,IAAI,EAAE,OAAO,MAAM;AAC9D,QAAM,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AACzD,MAAI,kBAAkB,SAAS;AAC3B,UAAM,IAAS,eAAe;AAAA,EAClC;AACA,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,IAAI,KAAK,SAAS,OAAO,MAAM,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAC5G,IAAK,kBAAkB,GAAG,SAAS,MAAM;AACzC,UAAM;AAAA,EACV;AACA,SAAO,OAAO;AAClB;AACO,IAAM,QAAuB,uBAAc,aAAa;AACxD,IAAM,cAAc,CAAC,SAAS,OAAO,QAAQ,OAAO,MAAM,WAAW;AACxE,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK;AAC5D,MAAI,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AACvD,MAAI,kBAAkB;AAClB,aAAS,MAAM;AACnB,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,IAAI,KAAK,QAAQ,OAAO,MAAM,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAC3G,IAAK,kBAAkB,GAAG,QAAQ,MAAM;AACxC,UAAM;AAAA,EACV;AACA,SAAO,OAAO;AAClB;AACO,IAAM,aAA4B,4BAAmB,aAAa;AAClE,IAAM,aAAa,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AACzD,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,OAAO,MAAM,IAAI,EAAE,OAAO,MAAM;AAC9D,QAAM,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AACzD,MAAI,kBAAkB,SAAS;AAC3B,UAAM,IAAS,eAAe;AAAA,EAClC;AACA,SAAO,OAAO,OAAO,SACf;AAAA,IACE,SAAS;AAAA,IACT,OAAO,KAAK,QAAe,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EACjH,IACE,EAAE,SAAS,MAAM,MAAM,OAAO,MAAM;AAC9C;AACO,IAAM,YAA2B,2BAAkB,aAAa;AAChE,IAAM,kBAAkB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACpE,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK;AAC5D,MAAI,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AACvD,MAAI,kBAAkB;AAClB,aAAS,MAAM;AACnB,SAAO,OAAO,OAAO,SACf;AAAA,IACE,SAAS;AAAA,IACT,OAAO,IAAI,KAAK,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EAC3F,IACE,EAAE,SAAS,MAAM,MAAM,OAAO,MAAM;AAC9C;AACO,IAAM,iBAAgC,gCAAuB,aAAa;AAC1E,IAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AACtD,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAChF,SAAO,OAAO,IAAI,EAAE,QAAQ,OAAO,GAAG;AAC1C;AACO,IAAM,SAAwB,wBAAe,aAAa;AAC1D,IAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AACtD,SAAO,OAAO,IAAI,EAAE,QAAQ,OAAO,IAAI;AAC3C;AACO,IAAM,SAAwB,wBAAe,aAAa;AAC1D,IAAM,eAAe,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACjE,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAChF,SAAO,YAAY,IAAI,EAAE,QAAQ,OAAO,GAAG;AAC/C;AACO,IAAM,cAA6B,6BAAoB,aAAa;AACpE,IAAM,eAAe,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACjE,SAAO,YAAY,IAAI,EAAE,QAAQ,OAAO,IAAI;AAChD;AACO,IAAM,cAA6B,6BAAoB,aAAa;AACpE,IAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAC1D,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAChF,SAAO,WAAW,IAAI,EAAE,QAAQ,OAAO,GAAG;AAC9C;AACO,IAAM,aAA4B,4BAAmB,aAAa;AAClE,IAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAC1D,SAAO,WAAW,IAAI,EAAE,QAAQ,OAAO,IAAI;AAC/C;AACO,IAAM,aAA4B,4BAAmB,aAAa;AAClE,IAAM,mBAAmB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACrE,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAChF,SAAO,gBAAgB,IAAI,EAAE,QAAQ,OAAO,GAAG;AACnD;AACO,IAAM,kBAAiC,iCAAwB,aAAa;AAC5E,IAAM,mBAAmB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACrE,SAAO,gBAAgB,IAAI,EAAE,QAAQ,OAAO,IAAI;AACpD;AACO,IAAM,kBAAiC,iCAAwB,aAAa;;;AC5FnF;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;AAMO,IAAM,OAAO;AACb,IAAM,QAAQ;AACd,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,QAAQ;AACd,IAAM,SAAS;AAEf,IAAM,WAAW;AAEjB,IAAM,mBAAmB;AAEzB,IAAM,OAAO;AAIb,IAAM,OAAO,CAACG,aAAY;AAC7B,MAAI,CAACA;AACD,WAAO;AACX,SAAO,IAAI,OAAO,mCAAmCA,QAAO,yDAAyD;AACzH;AACO,IAAM,QAAsB,qBAAK,CAAC;AAClC,IAAM,QAAsB,qBAAK,CAAC;AAClC,IAAM,QAAsB,qBAAK,CAAC;AAElC,IAAM,QAAQ;AAEd,IAAM,aAAa;AAEnB,IAAM,eAAe;AAErB,IAAM,eAAe;AACrB,IAAM,WAAW;AACjB,IAAM,eAAe;AAE5B,IAAM,SAAS;AACR,SAAS,QAAQ;AACpB,SAAO,IAAI,OAAO,QAAQ,GAAG;AACjC;AACO,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,MAAM,CAAC,cAAc;AAC9B,QAAM,eAAoB,YAAY,aAAa,GAAG;AACtD,SAAO,IAAI,OAAO,kBAAkB,YAAY,mCAAmC,YAAY,kBAAkB;AACrH;AACO,IAAM,SAAS;AACf,IAAM,SAAS;AAEf,IAAM,SAAS;AACf,IAAM,YAAY;AAGlB,IAAM,WAAW;AACjB,IAAM,SAAS;AACf,IAAM,eAAe;AAGrB,IAAM,OAAO;AAEpB,IAAM,aAAa;AACZ,IAAM,OAAqB,oBAAI,OAAO,IAAI,UAAU,GAAG;AAC9D,SAAS,WAAW,MAAM;AACtB,QAAM,OAAO;AACb,QAAM,QAAQ,OAAO,KAAK,cAAc,WAClC,KAAK,cAAc,KACf,GAAG,IAAI,KACP,KAAK,cAAc,IACf,GAAG,IAAI,cACP,GAAG,IAAI,mBAAmB,KAAK,SAAS,MAChD,GAAG,IAAI;AACb,SAAO;AACX;AACO,SAAS,KAAK,MAAM;AACvB,SAAO,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,GAAG;AAC7C;AAEO,SAAS,SAAS,MAAM;AAC3B,QAAMC,QAAO,WAAW,EAAE,WAAW,KAAK,UAAU,CAAC;AACrD,QAAM,OAAO,CAAC,GAAG;AACjB,MAAI,KAAK;AACL,SAAK,KAAK,EAAE;AAEhB,MAAI,KAAK;AACL,SAAK,KAAK,mCAAmC;AACjD,QAAM,YAAY,GAAGA,KAAI,MAAM,KAAK,KAAK,GAAG,CAAC;AAC7C,SAAO,IAAI,OAAO,IAAI,UAAU,OAAO,SAAS,IAAI;AACxD;AACO,IAAM,SAAS,CAAC,WAAW;AAC9B,QAAM,QAAQ,SAAS,YAAY,QAAQ,WAAW,CAAC,IAAI,QAAQ,WAAW,EAAE,MAAM;AACtF,SAAO,IAAI,OAAO,IAAI,KAAK,GAAG;AAClC;AACO,IAAM,SAAS;AACf,IAAM,UAAU;AAChB,IAAM,SAAS;AACf,IAAM,UAAU;AACvB,IAAM,QAAQ;AAEd,IAAM,aAAa;AAGZ,IAAM,YAAY;AAElB,IAAM,YAAY;AAElB,IAAM,MAAM;AAGnB,SAAS,YAAY,YAAY,SAAS;AACtC,SAAO,IAAI,OAAO,kBAAkB,UAAU,IAAI,OAAO,GAAG;AAChE;AAEA,SAAS,eAAe,QAAQ;AAC5B,SAAO,IAAI,OAAO,kBAAkB,MAAM,IAAI;AAClD;AAEO,IAAM,UAAU;AAChB,IAAM,aAA2B,4BAAY,IAAI,IAAI;AACrD,IAAM,gBAA8B,+BAAe,EAAE;AAErD,IAAM,WAAW;AACjB,IAAM,cAA4B,4BAAY,IAAI,GAAG;AACrD,IAAM,iBAA+B,+BAAe,EAAE;AAEtD,IAAM,aAAa;AACnB,IAAM,gBAA8B,4BAAY,IAAI,GAAG;AACvD,IAAM,mBAAiC,+BAAe,EAAE;AAExD,IAAM,aAAa;AACnB,IAAM,gBAA8B,4BAAY,IAAI,EAAE;AACtD,IAAM,mBAAiC,+BAAe,EAAE;AAExD,IAAM,aAAa;AACnB,IAAM,gBAA8B,4BAAY,IAAI,IAAI;AACxD,IAAM,mBAAiC,+BAAe,EAAE;;;ACtIxD,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAIC;AACJ,OAAK,SAAS,KAAK,OAAO,CAAC;AAC3B,OAAK,KAAK,MAAM;AAChB,GAACA,MAAK,KAAK,MAAM,aAAaA,IAAG,WAAW,CAAC;AACjD,CAAC;AACD,IAAM,mBAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACZ;AACO,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,SAAS,iBAAiB,OAAO,IAAI,KAAK;AAChD,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,UAAM,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,qBAAqB,OAAO;AAC5E,QAAI,IAAI,QAAQ,MAAM;AAClB,UAAI,IAAI;AACJ,YAAI,UAAU,IAAI;AAAA;AAElB,YAAI,mBAAmB,IAAI;AAAA,IACnC;AAAA,EACJ,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,IAAI,YAAY,QAAQ,SAAS,IAAI,QAAQ,QAAQ,QAAQ,IAAI,OAAO;AACxE;AAAA,IACJ;AACA,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,OAAO,IAAI,UAAU,WAAW,IAAI,MAAM,QAAQ,IAAI,IAAI;AAAA,MACnE,OAAO,QAAQ;AAAA,MACf,WAAW,IAAI;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,uBAAqC,gBAAK,aAAa,wBAAwB,CAAC,MAAM,QAAQ;AACvG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,SAAS,iBAAiB,OAAO,IAAI,KAAK;AAChD,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,UAAM,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,qBAAqB,OAAO;AAC5E,QAAI,IAAI,QAAQ,MAAM;AAClB,UAAI,IAAI;AACJ,YAAI,UAAU,IAAI;AAAA;AAElB,YAAI,mBAAmB,IAAI;AAAA,IACnC;AAAA,EACJ,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,IAAI,YAAY,QAAQ,SAAS,IAAI,QAAQ,QAAQ,QAAQ,IAAI,OAAO;AACxE;AAAA,IACJ;AACA,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,OAAO,IAAI,UAAU,WAAW,IAAI,MAAM,QAAQ,IAAI,IAAI;AAAA,MACnE,OAAO,QAAQ;AAAA,MACf,WAAW,IAAI;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,sBACC,gBAAK,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AAClE,YAAU,KAAK,MAAM,GAAG;AACxB,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,QAAID;AACJ,KAACA,MAAKC,MAAK,KAAK,KAAK,eAAeD,IAAG,aAAa,IAAI;AAAA,EAC5D,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,OAAO,QAAQ,UAAU,OAAO,IAAI;AACpC,YAAM,IAAI,MAAM,oDAAoD;AACxE,UAAM,aAAa,OAAO,QAAQ,UAAU,WACtC,QAAQ,QAAQ,IAAI,UAAU,OAAO,CAAC,IACjC,mBAAmB,QAAQ,OAAO,IAAI,KAAK,MAAM;AAC5D,QAAI;AACA;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ,OAAO,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,YAAU,KAAK,MAAM,GAAG;AACxB,MAAI,SAAS,IAAI,UAAU;AAC3B,QAAM,QAAQ,IAAI,QAAQ,SAAS,KAAK;AACxC,QAAM,SAAS,QAAQ,QAAQ;AAC/B,QAAM,CAAC,SAAS,OAAO,IAAS,qBAAqB,IAAI,MAAM;AAC/D,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,SAAS,IAAI;AACjB,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI;AACA,UAAI,UAAkB;AAAA,EAC9B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO;AACP,UAAI,CAAC,OAAO,UAAU,KAAK,GAAG;AAU1B,gBAAQ,OAAO,KAAK;AAAA,UAChB,UAAU;AAAA,UACV,QAAQ,IAAI;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV;AAAA,UACA;AAAA,QACJ,CAAC;AACD;AAAA,MASJ;AACA,UAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAC9B,YAAI,QAAQ,GAAG;AAEX,kBAAQ,OAAO,KAAK;AAAA,YAChB;AAAA,YACA,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,YAChB,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL,OACK;AAED,kBAAQ,OAAO,KAAK;AAAA,YAChB;AAAA,YACA,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,YAChB,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL;AACA;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,QAAQ,SAAS;AACjB,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AACA,QAAI,QAAQ,SAAS;AACjB,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,CAAC,SAAS,OAAO,IAAS,qBAAqB,IAAI,MAAM;AAC/D,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,SAAS,IAAI;AACjB,QAAI,UAAU;AACd,QAAI,UAAU;AAAA,EAClB,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,QAAI,QAAQ,SAAS;AACjB,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AACA,QAAI,QAAQ,SAAS;AACjB,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA,EAC9C;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,OAAQA,MAAK,KAAK,IAAI,WAAW,OAAO;AAC9C,QAAI,IAAI,UAAU;AACd,MAAAA,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,EACpC,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,QAAI,QAAQ,IAAI;AACZ;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,MACnC,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA,EAC9C;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,OAAQA,MAAK,KAAK,IAAI,WAAW,OAAO;AAC9C,QAAI,IAAI,UAAU;AACd,MAAAA,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,EACpC,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,QAAI,QAAQ,IAAI;AACZ;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,MACnC,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,sBAAoC,gBAAK,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AACrG,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA,EAC9C;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,UAAU,IAAI;AAClB,QAAI,UAAU,IAAI;AAClB,QAAI,OAAO,IAAI;AAAA,EACnB,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,QAAI,SAAS,IAAI;AACb;AACJ,UAAM,SAAS,OAAO,IAAI;AAC1B,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,MACnC,GAAI,SAAS,EAAE,MAAM,WAAW,SAAS,IAAI,KAAK,IAAI,EAAE,MAAM,aAAa,SAAS,IAAI,KAAK;AAAA,MAC7F,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA,EAChD;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,OAAQA,MAAK,KAAK,IAAI,WAAW,OAAO;AAC9C,QAAI,IAAI,UAAU;AACd,MAAAA,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,EACpC,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,MAAM;AACrB,QAAI,UAAU,IAAI;AACd;AACJ,UAAM,SAAc,oBAAoB,KAAK;AAC7C,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA,EAChD;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,OAAQA,MAAK,KAAK,IAAI,WAAW,OAAO;AAC9C,QAAI,IAAI,UAAU;AACd,MAAAA,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,EACpC,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,MAAM;AACrB,QAAI,UAAU,IAAI;AACd;AACJ,UAAM,SAAc,oBAAoB,KAAK;AAC7C,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA,EAChD;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,UAAU,IAAI;AAClB,QAAI,UAAU,IAAI;AAClB,QAAI,SAAS,IAAI;AAAA,EACrB,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,MAAM;AACrB,QAAI,WAAW,IAAI;AACf;AACJ,UAAM,SAAc,oBAAoB,KAAK;AAC7C,UAAM,SAAS,SAAS,IAAI;AAC5B,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,GAAI,SAAS,EAAE,MAAM,WAAW,SAAS,IAAI,OAAO,IAAI,EAAE,MAAM,aAAa,SAAS,IAAI,OAAO;AAAA,MACjG,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,MAAID,KAAI;AACR,YAAU,KAAK,MAAM,GAAG;AACxB,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,SAAS,IAAI;AACjB,QAAI,IAAI,SAAS;AACb,UAAI,aAAa,IAAI,WAAW,oBAAI,IAAI;AACxC,UAAI,SAAS,IAAI,IAAI,OAAO;AAAA,IAChC;AAAA,EACJ,CAAC;AACD,MAAI,IAAI;AACJ,KAACD,MAAK,KAAK,MAAM,UAAUA,IAAG,QAAQ,CAAC,YAAY;AAC/C,UAAI,QAAQ,YAAY;AACxB,UAAI,IAAI,QAAQ,KAAK,QAAQ,KAAK;AAC9B;AACJ,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ,IAAI;AAAA,QACZ,OAAO,QAAQ;AAAA,QACf,GAAI,IAAI,UAAU,EAAE,SAAS,IAAI,QAAQ,SAAS,EAAE,IAAI,CAAC;AAAA,QACzD;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAEA,KAAC,KAAK,KAAK,MAAM,UAAU,GAAG,QAAQ,MAAM;AAAA,IAAE;AACtD,CAAC;AACM,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,wBAAsB,KAAK,MAAM,GAAG;AACpC,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,YAAY;AACxB,QAAI,IAAI,QAAQ,KAAK,QAAQ,KAAK;AAC9B;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf,SAAS,IAAI,QAAQ,SAAS;AAAA,MAC9B;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,MAAI,YAAY,IAAI,UAAkB;AACtC,wBAAsB,KAAK,MAAM,GAAG;AACxC,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,MAAI,YAAY,IAAI,UAAkB;AACtC,wBAAsB,KAAK,MAAM,GAAG;AACxC,CAAC;AACM,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,eAAoB,YAAY,IAAI,QAAQ;AAClD,QAAM,UAAU,IAAI,OAAO,OAAO,IAAI,aAAa,WAAW,MAAM,IAAI,QAAQ,IAAI,YAAY,KAAK,YAAY;AACjH,MAAI,UAAU;AACd,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,aAAa,IAAI,WAAW,oBAAI,IAAI;AACxC,QAAI,SAAS,IAAI,OAAO;AAAA,EAC5B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,MAAM,SAAS,IAAI,UAAU,IAAI,QAAQ;AACjD;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,IAAI;AAAA,MACd,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,sBAAoC,gBAAK,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AACrG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,UAAU,IAAI,OAAO,IAAS,YAAY,IAAI,MAAM,CAAC,IAAI;AAC/D,MAAI,YAAY,IAAI,UAAU;AAC9B,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,aAAa,IAAI,WAAW,oBAAI,IAAI;AACxC,QAAI,SAAS,IAAI,OAAO;AAAA,EAC5B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,MAAM,WAAW,IAAI,MAAM;AACnC;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,UAAU,IAAI,OAAO,KAAU,YAAY,IAAI,MAAM,CAAC,GAAG;AAC/D,MAAI,YAAY,IAAI,UAAU;AAC9B,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,aAAa,IAAI,WAAW,oBAAI,IAAI;AACxC,QAAI,SAAS,IAAI,OAAO;AAAA,EAC5B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,MAAM,SAAS,IAAI,MAAM;AACjC;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AAID,SAAS,0BAA0B,QAAQ,SAAS,UAAU;AAC1D,MAAI,OAAO,OAAO,QAAQ;AACtB,YAAQ,OAAO,KAAK,GAAQ,aAAa,UAAU,OAAO,MAAM,CAAC;AAAA,EACrE;AACJ;AACO,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,SAAS,IAAI,OAAO,KAAK,IAAI;AAAA,MAC/B,OAAO,QAAQ,MAAM,IAAI,QAAQ;AAAA,MACjC,QAAQ,CAAC;AAAA,IACb,GAAG,CAAC,CAAC;AACL,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACC,YAAW,0BAA0BA,SAAQ,SAAS,IAAI,QAAQ,CAAC;AAAA,IAC3F;AACA,8BAA0B,QAAQ,SAAS,IAAI,QAAQ;AACvD;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,UAAU,IAAI,IAAI,IAAI,IAAI;AAChC,OAAK,KAAK,SAAS,KAAK,CAACD,UAAS;AAC9B,IAAAA,MAAK,KAAK,IAAI,OAAO,IAAI;AAAA,EAC7B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,IAAI,QAAQ,MAAM,IAAI;AAC9B;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ,MAAM;AAAA,MACrB;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,YAAU,KAAK,MAAM,GAAG;AACxB,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,YAAQ,QAAQ,IAAI,GAAG,QAAQ,KAAK;AAAA,EACxC;AACJ,CAAC;;;AC9jBM,IAAM,MAAN,MAAU;AAAA,EACb,YAAY,OAAO,CAAC,GAAG;AACnB,SAAK,UAAU,CAAC;AAChB,SAAK,SAAS;AACd,QAAI;AACA,WAAK,OAAO;AAAA,EACpB;AAAA,EACA,SAAS,IAAI;AACT,SAAK,UAAU;AACf,OAAG,IAAI;AACP,SAAK,UAAU;AAAA,EACnB;AAAA,EACA,MAAM,KAAK;AACP,QAAI,OAAO,QAAQ,YAAY;AAC3B,UAAI,MAAM,EAAE,WAAW,OAAO,CAAC;AAC/B,UAAI,MAAM,EAAE,WAAW,QAAQ,CAAC;AAChC;AAAA,IACJ;AACA,UAAM,UAAU;AAChB,UAAM,QAAQ,QAAQ,MAAM,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;AACjD,UAAM,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC/E,UAAM,WAAW,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC;AAChG,eAAW,QAAQ,UAAU;AACzB,WAAK,QAAQ,KAAK,IAAI;AAAA,IAC1B;AAAA,EACJ;AAAA,EACA,UAAU;AACN,UAAM,IAAI;AACV,UAAM,OAAO,MAAM;AACnB,UAAM,UAAU,MAAM,WAAW,CAAC,EAAE;AACpC,UAAM,QAAQ,CAAC,GAAG,QAAQ,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;AAE9C,WAAO,IAAI,EAAE,GAAG,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,EAC1C;AACJ;;;AClCO,IAAM,UAAU;AAAA,EACnB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACX;;;ACGO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAIE;AACJ,WAAS,OAAO,CAAC;AACjB,OAAK,KAAK,MAAM;AAChB,OAAK,KAAK,MAAM,KAAK,KAAK,OAAO,CAAC;AAClC,OAAK,KAAK,UAAU;AACpB,QAAM,SAAS,CAAC,GAAI,KAAK,KAAK,IAAI,UAAU,CAAC,CAAE;AAE/C,MAAI,KAAK,KAAK,OAAO,IAAI,WAAW,GAAG;AACnC,WAAO,QAAQ,IAAI;AAAA,EACvB;AACA,aAAW,MAAM,QAAQ;AACrB,eAAW,MAAM,GAAG,KAAK,UAAU;AAC/B,SAAG,IAAI;AAAA,IACX;AAAA,EACJ;AACA,MAAI,OAAO,WAAW,GAAG;AAGrB,KAACA,MAAK,KAAK,MAAM,aAAaA,IAAG,WAAW,CAAC;AAC7C,SAAK,KAAK,UAAU,KAAK,MAAM;AAC3B,WAAK,KAAK,MAAM,KAAK,KAAK;AAAA,IAC9B,CAAC;AAAA,EACL,OACK;AACD,UAAM,YAAY,CAAC,SAASC,SAAQ,QAAQ;AACxC,UAAI,YAAiB,QAAQ,OAAO;AACpC,UAAI;AACJ,iBAAW,MAAMA,SAAQ;AACrB,YAAI,GAAG,KAAK,IAAI,MAAM;AAClB,cAAS,kBAAkB,OAAO;AAC9B;AACJ,gBAAM,YAAY,GAAG,KAAK,IAAI,KAAK,OAAO;AAC1C,cAAI,CAAC;AACD;AAAA,QACR,WACS,WAAW;AAChB;AAAA,QACJ;AACA,cAAM,UAAU,QAAQ,OAAO;AAC/B,cAAM,IAAI,GAAG,KAAK,MAAM,OAAO;AAC/B,YAAI,aAAa,WAAW,KAAK,UAAU,OAAO;AAC9C,gBAAM,IAAS,eAAe;AAAA,QAClC;AACA,YAAI,eAAe,aAAa,SAAS;AACrC,yBAAe,eAAe,QAAQ,QAAQ,GAAG,KAAK,YAAY;AAC9D,kBAAM;AACN,kBAAM,UAAU,QAAQ,OAAO;AAC/B,gBAAI,YAAY;AACZ;AACJ,gBAAI,CAAC;AACD,0BAAiB,QAAQ,SAAS,OAAO;AAAA,UACjD,CAAC;AAAA,QACL,OACK;AACD,gBAAM,UAAU,QAAQ,OAAO;AAC/B,cAAI,YAAY;AACZ;AACJ,cAAI,CAAC;AACD,wBAAiB,QAAQ,SAAS,OAAO;AAAA,QACjD;AAAA,MACJ;AACA,UAAI,aAAa;AACb,eAAO,YAAY,KAAK,MAAM;AAC1B,iBAAO;AAAA,QACX,CAAC;AAAA,MACL;AACA,aAAO;AAAA,IACX;AACA,UAAM,qBAAqB,CAAC,QAAQ,SAAS,QAAQ;AAEjD,UAAS,QAAQ,MAAM,GAAG;AACtB,eAAO,UAAU;AACjB,eAAO;AAAA,MACX;AAEA,YAAM,cAAc,UAAU,SAAS,QAAQ,GAAG;AAClD,UAAI,uBAAuB,SAAS;AAChC,YAAI,IAAI,UAAU;AACd,gBAAM,IAAS,eAAe;AAClC,eAAO,YAAY,KAAK,CAACC,iBAAgB,KAAK,KAAK,MAAMA,cAAa,GAAG,CAAC;AAAA,MAC9E;AACA,aAAO,KAAK,KAAK,MAAM,aAAa,GAAG;AAAA,IAC3C;AACA,SAAK,KAAK,MAAM,CAAC,SAAS,QAAQ;AAC9B,UAAI,IAAI,YAAY;AAChB,eAAO,KAAK,KAAK,MAAM,SAAS,GAAG;AAAA,MACvC;AACA,UAAI,IAAI,cAAc,YAAY;AAG9B,cAAM,SAAS,KAAK,KAAK,MAAM,EAAE,OAAO,QAAQ,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,YAAY,KAAK,CAAC;AACjG,YAAI,kBAAkB,SAAS;AAC3B,iBAAO,OAAO,KAAK,CAACC,YAAW;AAC3B,mBAAO,mBAAmBA,SAAQ,SAAS,GAAG;AAAA,UAClD,CAAC;AAAA,QACL;AACA,eAAO,mBAAmB,QAAQ,SAAS,GAAG;AAAA,MAClD;AAEA,YAAM,SAAS,KAAK,KAAK,MAAM,SAAS,GAAG;AAC3C,UAAI,kBAAkB,SAAS;AAC3B,YAAI,IAAI,UAAU;AACd,gBAAM,IAAS,eAAe;AAClC,eAAO,OAAO,KAAK,CAACC,YAAW,UAAUA,SAAQ,QAAQ,GAAG,CAAC;AAAA,MACjE;AACA,aAAO,UAAU,QAAQ,QAAQ,GAAG;AAAA,IACxC;AAAA,EACJ;AAEA,EAAK,WAAW,MAAM,aAAa,OAAO;AAAA,IACtC,UAAU,CAAC,UAAU;AACjB,UAAI;AACA,cAAM,IAAI,UAAU,MAAM,KAAK;AAC/B,eAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,OAAO,OAAO;AAAA,MACrE,SACO,GAAG;AACN,eAAO,eAAe,MAAM,KAAK,EAAE,KAAK,CAAC,MAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,OAAO,OAAO,CAAE;AAAA,MAChH;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,IACR,SAAS;AAAA,EACb,EAAE;AACN,CAAC;AAEM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAU,CAAC,GAAI,MAAM,KAAK,KAAK,YAAY,CAAC,CAAE,EAAE,IAAI,KAAa,OAAO,KAAK,KAAK,GAAG;AAC/F,OAAK,KAAK,QAAQ,CAAC,SAAS,MAAM;AAC9B,QAAI,IAAI;AACJ,UAAI;AACA,gBAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,MACxC,SACOC,IAAG;AAAA,MAAE;AAChB,QAAI,OAAO,QAAQ,UAAU;AACzB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAE/F,EAAO,sBAAsB,KAAK,MAAM,GAAG;AAC3C,aAAW,KAAK,MAAM,GAAG;AAC7B,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,IAAI,SAAS;AACb,UAAM,aAAa;AAAA,MACf,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACR;AACA,UAAM,IAAI,WAAW,IAAI,OAAO;AAChC,QAAI,MAAM;AACN,YAAM,IAAI,MAAM,0BAA0B,IAAI,OAAO,GAAG;AAC5D,QAAI,YAAY,IAAI,UAAkB,KAAK,CAAC;AAAA,EAChD;AAEI,QAAI,YAAY,IAAI,UAAkB,KAAK;AAC/C,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI;AAEA,YAAM,UAAU,QAAQ,MAAM,KAAK;AAGnC,UAAI,CAAC,IAAI,aAAa,IAAI,UAAU,WAAmB,aAAa,QAAQ;AACxE,YAAI,CAAC,gBAAgB,KAAK,OAAO,GAAG;AAChC,kBAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AACD;AAAA,QACJ;AAAA,MACJ;AAEA,YAAMC,OAAM,IAAI,IAAI,OAAO;AAC3B,UAAI,IAAI,UAAU;AACd,YAAI,SAAS,YAAY;AACzB,YAAI,CAAC,IAAI,SAAS,KAAKA,KAAI,QAAQ,GAAG;AAClC,kBAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,SAAS,IAAI,SAAS;AAAA,YACtB,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL;AAAA,MACJ;AACA,UAAI,IAAI,UAAU;AACd,YAAI,SAAS,YAAY;AACzB,YAAI,CAAC,IAAI,SAAS,KAAKA,KAAI,SAAS,SAAS,GAAG,IAAIA,KAAI,SAAS,MAAM,GAAG,EAAE,IAAIA,KAAI,QAAQ,GAAG;AAC3F,kBAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,SAAS,IAAI,SAAS;AAAA,YACtB,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL;AAAA,MACJ;AAEA,UAAI,IAAI,WAAW;AAEf,gBAAQ,QAAQA,KAAI;AAAA,MACxB,OACK;AAED,gBAAQ,QAAQ;AAAA,MACpB;AACA;AAAA,IACJ,SACO,GAAG;AACN,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAI,YAAY,IAAI,UAAkB,MAAM;AAC5C,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AAMM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,MAAI,YAAY,IAAI,UAAkB,SAAS,GAAG;AAClD,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,MAAI,YAAY,IAAI,UAAkB,KAAK,GAAG;AAC9C,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,SAAS;AAC3B,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,SAAS;AACvB,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI;AAEA,UAAI,IAAI,WAAW,QAAQ,KAAK,GAAG;AAAA,IAEvC,QACM;AACF,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,MAAI,YAAY,IAAI,UAAkB,IAAI,IAAI,SAAS;AACvD,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,SAAS;AAC3B,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ,MAAM,MAAM,GAAG;AACrC,QAAI;AACA,UAAI,MAAM,WAAW;AACjB,cAAM,IAAI,MAAM;AACpB,YAAM,CAAC,SAAS,MAAM,IAAI;AAC1B,UAAI,CAAC;AACD,cAAM,IAAI,MAAM;AACpB,YAAM,YAAY,OAAO,MAAM;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,cAAM,IAAI,MAAM;AACpB,UAAI,YAAY,KAAK,YAAY;AAC7B,cAAM,IAAI,MAAM;AAEpB,UAAI,IAAI,WAAW,OAAO,GAAG;AAAA,IACjC,QACM;AACF,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AAEM,SAAS,cAAc,MAAM;AAChC,MAAI,SAAS;AACT,WAAO;AAEX,MAAI,KAAK,KAAK,IAAI;AACd,WAAO;AACX,MAAI,KAAK,SAAS,MAAM;AACpB,WAAO;AACX,MAAI;AAEA,SAAK,IAAI;AACT,WAAO;AAAA,EACX,QACM;AACF,WAAO;AAAA,EACX;AACJ;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,kBAAkB;AAChC,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,cAAc,QAAQ,KAAK;AAC3B;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AAEM,SAAS,iBAAiB,MAAM;AACnC,MAAI,CAAS,UAAU,KAAK,IAAI;AAC5B,WAAO;AACX,QAAMC,UAAS,KAAK,QAAQ,SAAS,CAAC,MAAO,MAAM,MAAM,MAAM,GAAI;AACnE,QAAM,SAASA,QAAO,OAAO,KAAK,KAAKA,QAAO,SAAS,CAAC,IAAI,GAAG,GAAG;AAClE,SAAO,cAAc,MAAM;AAC/B;AACO,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AACzF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,kBAAkB;AAChC,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,iBAAiB,QAAQ,KAAK;AAC9B;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AAEM,SAAS,WAAW,OAAO,YAAY,MAAM;AAChD,MAAI;AACA,UAAM,cAAc,MAAM,MAAM,GAAG;AACnC,QAAI,YAAY,WAAW;AACvB,aAAO;AACX,UAAM,CAAC,MAAM,IAAI;AACjB,QAAI,CAAC;AACD,aAAO;AAEX,UAAM,eAAe,KAAK,MAAM,KAAK,MAAM,CAAC;AAC5C,QAAI,SAAS,gBAAgB,cAAc,QAAQ;AAC/C,aAAO;AACX,QAAI,CAAC,aAAa;AACd,aAAO;AACX,QAAI,cAAc,EAAE,SAAS,iBAAiB,aAAa,QAAQ;AAC/D,aAAO;AACX,WAAO;AAAA,EACX,QACM;AACF,WAAO;AAAA,EACX;AACJ;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,WAAW,QAAQ,OAAO,IAAI,GAAG;AACjC;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,yBAAuC,gBAAK,aAAa,0BAA0B,CAAC,MAAM,QAAQ;AAC3G,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,IAAI,GAAG,QAAQ,KAAK;AACpB;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAU,KAAK,KAAK,IAAI,WAAmB;AACrD,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,IAAI;AACJ,UAAI;AACA,gBAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,MACxC,SACO,GAAG;AAAA,MAAE;AAChB,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,KAAK,OAAO,SAAS,KAAK,GAAG;AAC7E,aAAO;AAAA,IACX;AACA,UAAM,WAAW,OAAO,UAAU,WAC5B,OAAO,MAAM,KAAK,IACd,QACA,CAAC,OAAO,SAAS,KAAK,IAClB,aACA,SACR;AACN,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,IACnC,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,EAAO,sBAAsB,KAAK,MAAM,GAAG;AAC3C,aAAW,KAAK,MAAM,GAAG;AAC7B,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAkB;AAC5B,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,IAAI;AACJ,UAAI;AACA,gBAAQ,QAAQ,QAAQ,QAAQ,KAAK;AAAA,MACzC,SACO,GAAG;AAAA,MAAE;AAChB,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAkB;AAC5B,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,IAAI;AACJ,UAAI;AACA,gBAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,MACxC,SACO,GAAG;AAAA,MAAE;AAChB,QAAI,OAAO,QAAQ,UAAU;AACzB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,EAAO,sBAAsB,KAAK,MAAM,GAAG;AAC3C,aAAW,KAAK,MAAM,GAAG;AAC7B,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AACzF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAkB;AAC5B,OAAK,KAAK,SAAS,oBAAI,IAAI,CAAC,MAAS,CAAC;AACtC,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAkB;AAC5B,OAAK,KAAK,SAAS,oBAAI,IAAI,CAAC,IAAI,CAAC;AACjC,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,UAAU;AACV,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,YAAY;AACnC,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,YAAY;AACnC,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,IAAI,QAAQ;AACZ,UAAI;AACA,gBAAQ,QAAQ,IAAI,KAAK,QAAQ,KAAK;AAAA,MAC1C,SACO,MAAM;AAAA,MAAE;AAAA,IACnB;AACA,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,iBAAiB;AAChC,UAAM,cAAc,UAAU,CAAC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC3D,QAAI;AACA,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA,GAAI,SAAS,EAAE,UAAU,eAAe,IAAI,CAAC;AAAA,MAC7C;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,kBAAkB,QAAQ,OAAO,OAAO;AAC7C,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,OAAO,KAAK,GAAQ,aAAa,OAAO,OAAO,MAAM,CAAC;AAAA,EAChE;AACA,QAAM,MAAM,KAAK,IAAI,OAAO;AAChC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,YAAQ,QAAQ,MAAM,MAAM,MAAM;AAClC,UAAM,QAAQ,CAAC;AACf,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,YAAM,OAAO,MAAM,CAAC;AACpB,YAAM,SAAS,IAAI,QAAQ,KAAK,IAAI;AAAA,QAChC,OAAO;AAAA,QACP,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AACN,UAAI,kBAAkB,SAAS;AAC3B,cAAM,KAAK,OAAO,KAAK,CAACH,YAAW,kBAAkBA,SAAQ,SAAS,CAAC,CAAC,CAAC;AAAA,MAC7E,OACK;AACD,0BAAkB,QAAQ,SAAS,CAAC;AAAA,MACxC;AAAA,IACJ;AACA,QAAI,MAAM,QAAQ;AACd,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAAA,IAChD;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,qBAAqB,QAAQ,OAAO,KAAK,OAAO,cAAc,eAAe;AAClF,QAAM,YAAY,OAAO;AACzB,MAAI,OAAO,OAAO,QAAQ;AAEtB,QAAI,gBAAgB,iBAAiB,CAAC,WAAW;AAC7C;AAAA,IACJ;AACA,UAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,EAC9D;AACA,MAAI,CAAC,aAAa,CAAC,cAAc;AAC7B,QAAI,CAAC,OAAO,OAAO,QAAQ;AACvB,YAAM,OAAO,KAAK;AAAA,QACd,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO;AAAA,QACP,MAAM,CAAC,GAAG;AAAA,MACd,CAAC;AAAA,IACL;AACA;AAAA,EACJ;AACA,MAAI,OAAO,UAAU,QAAW;AAC5B,QAAI,WAAW;AACX,YAAM,MAAM,GAAG,IAAI;AAAA,IACvB;AAAA,EACJ,OACK;AACD,UAAM,MAAM,GAAG,IAAI,OAAO;AAAA,EAC9B;AACJ;AACA,SAAS,aAAa,KAAK;AACvB,QAAM,OAAO,OAAO,KAAK,IAAI,KAAK;AAClC,aAAW,KAAK,MAAM;AAClB,QAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,MAAM,QAAQ,IAAI,UAAU,GAAG;AAChD,YAAM,IAAI,MAAM,2BAA2B,CAAC,0BAA0B;AAAA,IAC1E;AAAA,EACJ;AACA,QAAM,QAAa,aAAa,IAAI,KAAK;AACzC,SAAO;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA,QAAQ,IAAI,IAAI,IAAI;AAAA,IACpB,SAAS,KAAK;AAAA,IACd,cAAc,IAAI,IAAI,KAAK;AAAA,EAC/B;AACJ;AACA,SAAS,eAAe,OAAO,OAAO,SAAS,KAAK,KAAK,MAAM;AAC3D,QAAM,eAAe,CAAC;AACtB,QAAM,SAAS,IAAI;AACnB,QAAM,YAAY,IAAI,SAAS;AAC/B,QAAM,IAAI,UAAU,IAAI;AACxB,QAAM,eAAe,UAAU,UAAU;AACzC,QAAM,gBAAgB,UAAU,WAAW;AAC3C,aAAW,OAAO,OAAO;AAGrB,QAAI,QAAQ;AACR;AACJ,QAAI,OAAO,IAAI,GAAG;AACd;AACJ,QAAI,MAAM,SAAS;AACf,mBAAa,KAAK,GAAG;AACrB;AAAA,IACJ;AACA,UAAM,IAAI,UAAU,IAAI,EAAE,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC9D,QAAI,aAAa,SAAS;AACtB,YAAM,KAAK,EAAE,KAAK,CAACI,OAAM,qBAAqBA,IAAG,SAAS,KAAK,OAAO,cAAc,aAAa,CAAC,CAAC;AAAA,IACvG,OACK;AACD,2BAAqB,GAAG,SAAS,KAAK,OAAO,cAAc,aAAa;AAAA,IAC5E;AAAA,EACJ;AACA,MAAI,aAAa,QAAQ;AACrB,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACA,MAAI,CAAC,MAAM;AACP,WAAO;AACX,SAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM;AACjC,WAAO;AAAA,EACX,CAAC;AACL;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AAEnF,WAAS,KAAK,MAAM,GAAG;AAEvB,QAAM,OAAO,OAAO,yBAAyB,KAAK,OAAO;AACzD,MAAI,CAAC,MAAM,KAAK;AACZ,UAAM,KAAK,IAAI;AACf,WAAO,eAAe,KAAK,SAAS;AAAA,MAChC,KAAK,MAAM;AACP,cAAM,QAAQ,EAAE,GAAG,GAAG;AACtB,eAAO,eAAe,KAAK,SAAS;AAAA,UAChC,OAAO;AAAA,QACX,CAAC;AACD,eAAO;AAAA,MACX;AAAA,IACJ,CAAC;AAAA,EACL;AACA,QAAM,cAAmB,OAAO,MAAM,aAAa,GAAG,CAAC;AACvD,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM;AAC3C,UAAM,QAAQ,IAAI;AAClB,UAAM,aAAa,CAAC;AACpB,eAAW,OAAO,OAAO;AACrB,YAAM,QAAQ,MAAM,GAAG,EAAE;AACzB,UAAI,MAAM,QAAQ;AACd,mBAAW,GAAG,MAAM,WAAW,GAAG,IAAI,oBAAI,IAAI;AAC9C,mBAAW,KAAK,MAAM;AAClB,qBAAW,GAAG,EAAE,IAAI,CAAC;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO;AAAA,EACX,CAAC;AACD,QAAMC,YAAgB;AACtB,QAAM,WAAW,IAAI;AACrB,MAAI;AACJ,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,cAAU,QAAQ,YAAY;AAC9B,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAACA,UAAS,KAAK,GAAG;AAClB,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,YAAQ,QAAQ,CAAC;AACjB,UAAM,QAAQ,CAAC;AACf,UAAM,QAAQ,MAAM;AACpB,eAAW,OAAO,MAAM,MAAM;AAC1B,YAAM,KAAK,MAAM,GAAG;AACpB,YAAM,eAAe,GAAG,KAAK,UAAU;AACvC,YAAM,gBAAgB,GAAG,KAAK,WAAW;AACzC,YAAM,IAAI,GAAG,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC5D,UAAI,aAAa,SAAS;AACtB,cAAM,KAAK,EAAE,KAAK,CAACD,OAAM,qBAAqBA,IAAG,SAAS,KAAK,OAAO,cAAc,aAAa,CAAC,CAAC;AAAA,MACvG,OACK;AACD,6BAAqB,GAAG,SAAS,KAAK,OAAO,cAAc,aAAa;AAAA,MAC5E;AAAA,IACJ;AACA,QAAI,CAAC,UAAU;AACX,aAAO,MAAM,SAAS,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO,IAAI;AAAA,IACnE;AACA,WAAO,eAAe,OAAO,OAAO,SAAS,KAAK,YAAY,OAAO,IAAI;AAAA,EAC7E;AACJ,CAAC;AACM,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AAEzF,aAAW,KAAK,MAAM,GAAG;AACzB,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,cAAmB,OAAO,MAAM,aAAa,GAAG,CAAC;AACvD,QAAM,mBAAmB,CAAC,UAAU;AAChC,UAAM,MAAM,IAAI,IAAI,CAAC,SAAS,WAAW,KAAK,CAAC;AAC/C,UAAM,aAAa,YAAY;AAC/B,UAAM,WAAW,CAAC,QAAQ;AACtB,YAAM,IAAS,IAAI,GAAG;AACtB,aAAO,SAAS,CAAC,6BAA6B,CAAC;AAAA,IACnD;AACA,QAAI,MAAM,8BAA8B;AACxC,UAAM,MAAM,uBAAO,OAAO,IAAI;AAC9B,QAAI,UAAU;AACd,eAAW,OAAO,WAAW,MAAM;AAC/B,UAAI,GAAG,IAAI,OAAO,SAAS;AAAA,IAC/B;AAEA,QAAI,MAAM,uBAAuB;AACjC,eAAW,OAAO,WAAW,MAAM;AAC/B,YAAM,KAAK,IAAI,GAAG;AAClB,YAAM,IAAS,IAAI,GAAG;AACtB,YAAM,SAAS,MAAM,GAAG;AACxB,YAAM,eAAe,QAAQ,MAAM,UAAU;AAC7C,YAAM,gBAAgB,QAAQ,MAAM,WAAW;AAC/C,UAAI,MAAM,SAAS,EAAE,MAAM,SAAS,GAAG,CAAC,GAAG;AAC3C,UAAI,gBAAgB,eAAe;AAE/B,YAAI,MAAM;AAAA,cACZ,EAAE;AAAA,gBACA,CAAC;AAAA,qDACoC,EAAE;AAAA;AAAA,kCAErB,CAAC,qBAAqB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,cAK3C,EAAE;AAAA,gBACA,CAAC;AAAA,wBACO,CAAC;AAAA;AAAA;AAAA,sBAGH,CAAC,OAAO,EAAE;AAAA;AAAA;AAAA,OAGzB;AAAA,MACK,WACS,CAAC,cAAc;AACpB,YAAI,MAAM;AAAA,gBACV,EAAE,cAAc,CAAC;AAAA,cACnB,EAAE;AAAA,mDACmC,EAAE;AAAA;AAAA,gCAErB,CAAC,qBAAqB,CAAC;AAAA;AAAA;AAAA,eAGxC,EAAE,gBAAgB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKd,CAAC;AAAA;AAAA;AAAA;AAAA,cAIR,EAAE;AAAA,gBACA,EAAE;AAAA,wBACM,CAAC;AAAA;AAAA,wBAED,CAAC,OAAO,EAAE;AAAA;AAAA;AAAA;AAAA,OAI3B;AAAA,MACK,OACK;AACD,YAAI,MAAM;AAAA,cACZ,EAAE;AAAA,mDACmC,EAAE;AAAA;AAAA,gCAErB,CAAC,qBAAqB,CAAC;AAAA;AAAA;AAAA;AAAA,cAIzC,EAAE;AAAA,gBACA,CAAC;AAAA,wBACO,CAAC;AAAA;AAAA;AAAA,sBAGH,CAAC,OAAO,EAAE;AAAA;AAAA;AAAA,OAGzB;AAAA,MACK;AAAA,IACJ;AACA,QAAI,MAAM,4BAA4B;AACtC,QAAI,MAAM,iBAAiB;AAC3B,UAAM,KAAK,IAAI,QAAQ;AACvB,WAAO,CAAC,SAAS,QAAQ,GAAG,OAAO,SAAS,GAAG;AAAA,EACnD;AACA,MAAI;AACJ,QAAMC,YAAgB;AACtB,QAAM,MAAM,CAAM,aAAa;AAC/B,QAAMC,cAAkB;AACxB,QAAM,cAAc,OAAOA,YAAW;AACtC,QAAM,WAAW,IAAI;AACrB,MAAI;AACJ,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,cAAU,QAAQ,YAAY;AAC9B,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAACD,UAAS,KAAK,GAAG;AAClB,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,OAAO,eAAe,KAAK,UAAU,SAAS,IAAI,YAAY,MAAM;AAEpE,UAAI,CAAC;AACD,mBAAW,iBAAiB,IAAI,KAAK;AACzC,gBAAU,SAAS,SAAS,GAAG;AAC/B,UAAI,CAAC;AACD,eAAO;AACX,aAAO,eAAe,CAAC,GAAG,OAAO,SAAS,KAAK,OAAO,IAAI;AAAA,IAC9D;AACA,WAAO,WAAW,SAAS,GAAG;AAAA,EAClC;AACJ,CAAC;AACD,SAAS,mBAAmB,SAAS,OAAO,MAAM,KAAK;AACnD,aAAW,UAAU,SAAS;AAC1B,QAAI,OAAO,OAAO,WAAW,GAAG;AAC5B,YAAM,QAAQ,OAAO;AACrB,aAAO;AAAA,IACX;AAAA,EACJ;AACA,QAAM,aAAa,QAAQ,OAAO,CAAC,MAAM,CAAM,QAAQ,CAAC,CAAC;AACzD,MAAI,WAAW,WAAW,GAAG;AACzB,UAAM,QAAQ,WAAW,CAAC,EAAE;AAC5B,WAAO,WAAW,CAAC;AAAA,EACvB;AACA,QAAM,OAAO,KAAK;AAAA,IACd,MAAM;AAAA,IACN,OAAO,MAAM;AAAA,IACb;AAAA,IACA,QAAQ,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EAC3G,CAAC;AACD,SAAO;AACX;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,UAAU,UAAU,IAAI,aAAa,MAAS;AACvH,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,WAAW,UAAU,IAAI,aAAa,MAAS;AACzH,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM;AACvC,QAAI,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM,GAAG;AACzC,aAAO,IAAI,IAAI,IAAI,QAAQ,QAAQ,CAAC,WAAW,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC;AAAA,IAClF;AACA,WAAO;AAAA,EACX,CAAC;AACD,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM;AACxC,QAAI,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,OAAO,GAAG;AAC1C,YAAM,WAAW,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO;AACtD,aAAO,IAAI,OAAO,KAAK,SAAS,IAAI,CAACE,OAAW,WAAWA,GAAE,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI;AAAA,IACvF;AACA,WAAO;AAAA,EACX,CAAC;AACD,QAAM,QAAQ,IAAI,QAAQ,WAAW,IAAI,IAAI,QAAQ,CAAC,EAAE,KAAK,MAAM;AACnE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,OAAO;AACP,aAAO,MAAM,SAAS,GAAG;AAAA,IAC7B;AACA,QAAI,QAAQ;AACZ,UAAM,UAAU,CAAC;AACjB,eAAW,UAAU,IAAI,SAAS;AAC9B,YAAM,SAAS,OAAO,KAAK,IAAI;AAAA,QAC3B,OAAO,QAAQ;AAAA,QACf,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AACN,UAAI,kBAAkB,SAAS;AAC3B,gBAAQ,KAAK,MAAM;AACnB,gBAAQ;AAAA,MACZ,OACK;AACD,YAAI,OAAO,OAAO,WAAW;AACzB,iBAAO;AACX,gBAAQ,KAAK,MAAM;AAAA,MACvB;AAAA,IACJ;AACA,QAAI,CAAC;AACD,aAAO,mBAAmB,SAAS,SAAS,MAAM,GAAG;AACzD,WAAO,QAAQ,IAAI,OAAO,EAAE,KAAK,CAACC,aAAY;AAC1C,aAAO,mBAAmBA,UAAS,SAAS,MAAM,GAAG;AAAA,IACzD,CAAC;AAAA,EACL;AACJ,CAAC;AACD,SAAS,4BAA4B,SAAS,OAAO,MAAM,KAAK;AAC5D,QAAM,YAAY,QAAQ,OAAO,CAAC,MAAM,EAAE,OAAO,WAAW,CAAC;AAC7D,MAAI,UAAU,WAAW,GAAG;AACxB,UAAM,QAAQ,UAAU,CAAC,EAAE;AAC3B,WAAO;AAAA,EACX;AACA,MAAI,UAAU,WAAW,GAAG;AAExB,UAAM,OAAO,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,MACb;AAAA,MACA,QAAQ,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,IAC3G,CAAC;AAAA,EACL,OACK;AAED,UAAM,OAAO,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,MACb;AAAA,MACA,QAAQ,CAAC;AAAA,MACT,WAAW;AAAA,IACf,CAAC;AAAA,EACL;AACA,SAAO;AACX;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,YAAU,KAAK,MAAM,GAAG;AACxB,MAAI,YAAY;AAChB,QAAM,QAAQ,IAAI,QAAQ,WAAW,IAAI,IAAI,QAAQ,CAAC,EAAE,KAAK,MAAM;AACnE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,OAAO;AACP,aAAO,MAAM,SAAS,GAAG;AAAA,IAC7B;AACA,QAAI,QAAQ;AACZ,UAAM,UAAU,CAAC;AACjB,eAAW,UAAU,IAAI,SAAS;AAC9B,YAAM,SAAS,OAAO,KAAK,IAAI;AAAA,QAC3B,OAAO,QAAQ;AAAA,QACf,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AACN,UAAI,kBAAkB,SAAS;AAC3B,gBAAQ,KAAK,MAAM;AACnB,gBAAQ;AAAA,MACZ,OACK;AACD,gBAAQ,KAAK,MAAM;AAAA,MACvB;AAAA,IACJ;AACA,QAAI,CAAC;AACD,aAAO,4BAA4B,SAAS,SAAS,MAAM,GAAG;AAClE,WAAO,QAAQ,IAAI,OAAO,EAAE,KAAK,CAACA,aAAY;AAC1C,aAAO,4BAA4BA,UAAS,SAAS,MAAM,GAAG;AAAA,IAClE,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,yBAEb,gBAAK,aAAa,0BAA0B,CAAC,MAAM,QAAQ;AACvD,MAAI,YAAY;AAChB,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,SAAS,KAAK,KAAK;AACzB,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM;AAC3C,UAAM,aAAa,CAAC;AACpB,eAAW,UAAU,IAAI,SAAS;AAC9B,YAAM,KAAK,OAAO,KAAK;AACvB,UAAI,CAAC,MAAM,OAAO,KAAK,EAAE,EAAE,WAAW;AAClC,cAAM,IAAI,MAAM,gDAAgD,IAAI,QAAQ,QAAQ,MAAM,CAAC,GAAG;AAClG,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,EAAE,GAAG;AACrC,YAAI,CAAC,WAAW,CAAC;AACb,qBAAW,CAAC,IAAI,oBAAI,IAAI;AAC5B,mBAAW,OAAO,GAAG;AACjB,qBAAW,CAAC,EAAE,IAAI,GAAG;AAAA,QACzB;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX,CAAC;AACD,QAAM,OAAY,OAAO,MAAM;AAC3B,UAAM,OAAO,IAAI;AACjB,UAAMC,OAAM,oBAAI,IAAI;AACpB,eAAW,KAAK,MAAM;AAClB,YAAM,SAAS,EAAE,KAAK,aAAa,IAAI,aAAa;AACpD,UAAI,CAAC,UAAU,OAAO,SAAS;AAC3B,cAAM,IAAI,MAAM,gDAAgD,IAAI,QAAQ,QAAQ,CAAC,CAAC,GAAG;AAC7F,iBAAW,KAAK,QAAQ;AACpB,YAAIA,KAAI,IAAI,CAAC,GAAG;AACZ,gBAAM,IAAI,MAAM,kCAAkC,OAAO,CAAC,CAAC,GAAG;AAAA,QAClE;AACA,QAAAA,KAAI,IAAI,GAAG,CAAC;AAAA,MAChB;AAAA,IACJ;AACA,WAAOA;AAAA,EACX,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAM,SAAS,KAAK,GAAG;AACvB,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,QACV;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,MAAM,KAAK,MAAM,IAAI,QAAQ,IAAI,aAAa,CAAC;AACrD,QAAI,KAAK;AACL,aAAO,IAAI,KAAK,IAAI,SAAS,GAAG;AAAA,IACpC;AAKA,QAAI,IAAI,iBAAiB,IAAI,cAAc,YAAY;AACnD,aAAO,OAAO,SAAS,GAAG;AAAA,IAC9B;AAEA,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,CAAC;AAAA,MACT,MAAM;AAAA,MACN,eAAe,IAAI;AAAA,MACnB,SAAS,MAAM,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,MACrC;AAAA,MACA,MAAM,CAAC,IAAI,aAAa;AAAA,MACxB;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAChE,UAAM,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAClE,UAAM,QAAQ,gBAAgB,WAAW,iBAAiB;AAC1D,QAAI,OAAO;AACP,aAAO,QAAQ,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,CAACC,OAAMC,MAAK,MAAM;AACtD,eAAO,0BAA0B,SAASD,OAAMC,MAAK;AAAA,MACzD,CAAC;AAAA,IACL;AACA,WAAO,0BAA0B,SAAS,MAAM,KAAK;AAAA,EACzD;AACJ,CAAC;AACD,SAAS,YAAY,GAAG,GAAG;AAGvB,MAAI,MAAM,GAAG;AACT,WAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,EAClC;AACA,MAAI,aAAa,QAAQ,aAAa,QAAQ,CAAC,MAAM,CAAC,GAAG;AACrD,WAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,EAClC;AACA,MAAS,cAAc,CAAC,KAAU,cAAc,CAAC,GAAG;AAChD,UAAM,QAAQ,OAAO,KAAK,CAAC;AAC3B,UAAM,aAAa,OAAO,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,MAAM,QAAQ,GAAG,MAAM,EAAE;AAC3E,UAAM,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE;AAC5B,eAAW,OAAO,YAAY;AAC1B,YAAM,cAAc,YAAY,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC;AAC9C,UAAI,CAAC,YAAY,OAAO;AACpB,eAAO;AAAA,UACH,OAAO;AAAA,UACP,gBAAgB,CAAC,KAAK,GAAG,YAAY,cAAc;AAAA,QACvD;AAAA,MACJ;AACA,aAAO,GAAG,IAAI,YAAY;AAAA,IAC9B;AACA,WAAO,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,EACvC;AACA,MAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;AACtC,QAAI,EAAE,WAAW,EAAE,QAAQ;AACvB,aAAO,EAAE,OAAO,OAAO,gBAAgB,CAAC,EAAE;AAAA,IAC9C;AACA,UAAM,WAAW,CAAC;AAClB,aAAS,QAAQ,GAAG,QAAQ,EAAE,QAAQ,SAAS;AAC3C,YAAM,QAAQ,EAAE,KAAK;AACrB,YAAM,QAAQ,EAAE,KAAK;AACrB,YAAM,cAAc,YAAY,OAAO,KAAK;AAC5C,UAAI,CAAC,YAAY,OAAO;AACpB,eAAO;AAAA,UACH,OAAO;AAAA,UACP,gBAAgB,CAAC,OAAO,GAAG,YAAY,cAAc;AAAA,QACzD;AAAA,MACJ;AACA,eAAS,KAAK,YAAY,IAAI;AAAA,IAClC;AACA,WAAO,EAAE,OAAO,MAAM,MAAM,SAAS;AAAA,EACzC;AACA,SAAO,EAAE,OAAO,OAAO,gBAAgB,CAAC,EAAE;AAC9C;AACA,SAAS,0BAA0B,QAAQ,MAAM,OAAO;AAEpD,QAAM,YAAY,oBAAI,IAAI;AAC1B,MAAI;AACJ,aAAW,OAAO,KAAK,QAAQ;AAC3B,QAAI,IAAI,SAAS,qBAAqB;AAClC,qBAAe,aAAa;AAC5B,iBAAW,KAAK,IAAI,MAAM;AACtB,YAAI,CAAC,UAAU,IAAI,CAAC;AAChB,oBAAU,IAAI,GAAG,CAAC,CAAC;AACvB,kBAAU,IAAI,CAAC,EAAE,IAAI;AAAA,MACzB;AAAA,IACJ,OACK;AACD,aAAO,OAAO,KAAK,GAAG;AAAA,IAC1B;AAAA,EACJ;AACA,aAAW,OAAO,MAAM,QAAQ;AAC5B,QAAI,IAAI,SAAS,qBAAqB;AAClC,iBAAW,KAAK,IAAI,MAAM;AACtB,YAAI,CAAC,UAAU,IAAI,CAAC;AAChB,oBAAU,IAAI,GAAG,CAAC,CAAC;AACvB,kBAAU,IAAI,CAAC,EAAE,IAAI;AAAA,MACzB;AAAA,IACJ,OACK;AACD,aAAO,OAAO,KAAK,GAAG;AAAA,IAC1B;AAAA,EACJ;AAEA,QAAM,WAAW,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5E,MAAI,SAAS,UAAU,YAAY;AAC/B,WAAO,OAAO,KAAK,EAAE,GAAG,YAAY,MAAM,SAAS,CAAC;AAAA,EACxD;AACA,MAAS,QAAQ,MAAM;AACnB,WAAO;AACX,QAAM,SAAS,YAAY,KAAK,OAAO,MAAM,KAAK;AAClD,MAAI,CAAC,OAAO,OAAO;AACf,UAAM,IAAI,MAAM,wCAA6C,KAAK,UAAU,OAAO,cAAc,CAAC,EAAE;AAAA,EACxG;AACA,SAAO,QAAQ,OAAO;AACtB,SAAO;AACX;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,QAAM,QAAQ,IAAI;AAClB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,cAAQ,OAAO,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,YAAQ,QAAQ,CAAC;AACjB,UAAM,QAAQ,CAAC;AACf,UAAM,aAAa,iBAAiB,OAAO,OAAO;AAClD,UAAM,cAAc,iBAAiB,OAAO,QAAQ;AACpD,QAAI,CAAC,IAAI,MAAM;AACX,UAAI,MAAM,SAAS,YAAY;AAC3B,gBAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACZ,CAAC;AACD,eAAO;AAAA,MACX;AACA,UAAI,MAAM,SAAS,MAAM,QAAQ;AAC7B,gBAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS,MAAM;AAAA,UACf,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL;AAAA,IACJ;AAKA,UAAM,cAAc,IAAI,MAAM,MAAM,MAAM;AAC1C,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,YAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE,OAAO,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAChE,UAAI,aAAa,SAAS;AACtB,cAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AACtB,sBAAY,CAAC,IAAI;AAAA,QACrB,CAAC,CAAC;AAAA,MACN,OACK;AACD,oBAAY,CAAC,IAAI;AAAA,MACrB;AAAA,IACJ;AACA,QAAI,IAAI,MAAM;AACV,UAAI,IAAI,MAAM,SAAS;AACvB,YAAM,OAAO,MAAM,MAAM,MAAM,MAAM;AACrC,iBAAW,MAAM,MAAM;AACnB;AACA,cAAM,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC/D,YAAI,kBAAkB,SAAS;AAC3B,gBAAM,KAAK,OAAO,KAAK,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC;AAAA,QACnE,OACK;AACD,4BAAkB,QAAQ,SAAS,CAAC;AAAA,QACxC;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,MAAM,QAAQ;AACd,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,mBAAmB,aAAa,SAAS,OAAO,OAAO,WAAW,CAAC;AAAA,IAC5G;AACA,WAAO,mBAAmB,aAAa,SAAS,OAAO,OAAO,WAAW;AAAA,EAC7E;AACJ,CAAC;AACD,SAAS,iBAAiB,OAAO,KAAK;AAClC,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,QAAI,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM;AACvB,aAAO,IAAI;AAAA,EACnB;AACA,SAAO;AACX;AACA,SAAS,kBAAkB,QAAQ,OAAO,OAAO;AAC7C,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,OAAO,KAAK,GAAQ,aAAa,OAAO,OAAO,MAAM,CAAC;AAAA,EAChE;AACA,QAAM,MAAM,KAAK,IAAI,OAAO;AAChC;AACA,SAAS,mBAAmB,aAAa,OAAO,OAAO,OAAO,aAAa;AAIvE,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,UAAM,IAAI,YAAY,CAAC;AACvB,UAAM,YAAY,IAAI,MAAM;AAC5B,QAAI,EAAE,OAAO,QAAQ;AACjB,UAAI,CAAC,aAAa,KAAK,aAAa;AAChC,cAAM,MAAM,SAAS;AACrB;AAAA,MACJ;AACA,YAAM,OAAO,KAAK,GAAQ,aAAa,GAAG,EAAE,MAAM,CAAC;AAAA,IACvD;AACA,UAAM,MAAM,CAAC,IAAI,EAAE;AAAA,EACvB;AAOA,WAAS,IAAI,MAAM,MAAM,SAAS,GAAG,KAAK,MAAM,QAAQ,KAAK;AACzD,QAAI,MAAM,CAAC,EAAE,KAAK,WAAW,cAAc,MAAM,MAAM,CAAC,MAAM,QAAW;AACrE,YAAM,MAAM,SAAS;AAAA,IACzB,OACK;AACD;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAM,cAAc,KAAK,GAAG;AAC5B,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,QAAQ,CAAC;AACf,UAAM,SAAS,IAAI,QAAQ,KAAK;AAChC,QAAI,QAAQ;AACR,cAAQ,QAAQ,CAAC;AACjB,YAAM,aAAa,oBAAI,IAAI;AAC3B,iBAAW,OAAO,QAAQ;AACtB,YAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AAC/E,qBAAW,IAAI,OAAO,QAAQ,WAAW,IAAI,SAAS,IAAI,GAAG;AAC7D,gBAAM,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AACtE,cAAI,qBAAqB,SAAS;AAC9B,kBAAM,IAAI,MAAM,sDAAsD;AAAA,UAC1E;AACA,cAAI,UAAU,OAAO,QAAQ;AACzB,oBAAQ,OAAO,KAAK;AAAA,cAChB,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,cACjF,OAAO;AAAA,cACP,MAAM,CAAC,GAAG;AAAA,cACV;AAAA,YACJ,CAAC;AACD;AAAA,UACJ;AACA,gBAAM,SAAS,UAAU;AACzB,gBAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC5E,cAAI,kBAAkB,SAAS;AAC3B,kBAAM,KAAK,OAAO,KAAK,CAACX,YAAW;AAC/B,kBAAIA,QAAO,OAAO,QAAQ;AACtB,wBAAQ,OAAO,KAAK,GAAQ,aAAa,KAAKA,QAAO,MAAM,CAAC;AAAA,cAChE;AACA,sBAAQ,MAAM,MAAM,IAAIA,QAAO;AAAA,YACnC,CAAC,CAAC;AAAA,UACN,OACK;AACD,gBAAI,OAAO,OAAO,QAAQ;AACtB,sBAAQ,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,YAChE;AACA,oBAAQ,MAAM,MAAM,IAAI,OAAO;AAAA,UACnC;AAAA,QACJ;AAAA,MACJ;AACA,UAAI;AACJ,iBAAW,OAAO,OAAO;AACrB,YAAI,CAAC,WAAW,IAAI,GAAG,GAAG;AACtB,yBAAe,gBAAgB,CAAC;AAChC,uBAAa,KAAK,GAAG;AAAA,QACzB;AAAA,MACJ;AACA,UAAI,gBAAgB,aAAa,SAAS,GAAG;AACzC,gBAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,IACJ,OACK;AACD,cAAQ,QAAQ,CAAC;AAEjB,iBAAW,OAAO,QAAQ,QAAQ,KAAK,GAAG;AACtC,YAAI,QAAQ;AACR;AACJ,YAAI,CAAC,OAAO,UAAU,qBAAqB,KAAK,OAAO,GAAG;AACtD;AACJ,YAAI,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AACpE,YAAI,qBAAqB,SAAS;AAC9B,gBAAM,IAAI,MAAM,sDAAsD;AAAA,QAC1E;AAGA,cAAM,kBAAkB,OAAO,QAAQ,YAAoB,OAAO,KAAK,GAAG,KAAK,UAAU,OAAO;AAChG,YAAI,iBAAiB;AACjB,gBAAM,cAAc,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,OAAO,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAChF,cAAI,uBAAuB,SAAS;AAChC,kBAAM,IAAI,MAAM,sDAAsD;AAAA,UAC1E;AACA,cAAI,YAAY,OAAO,WAAW,GAAG;AACjC,wBAAY;AAAA,UAChB;AAAA,QACJ;AACA,YAAI,UAAU,OAAO,QAAQ;AACzB,cAAI,IAAI,SAAS,SAAS;AAEtB,oBAAQ,MAAM,GAAG,IAAI,MAAM,GAAG;AAAA,UAClC,OACK;AAED,oBAAQ,OAAO,KAAK;AAAA,cAChB,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,cACjF,OAAO;AAAA,cACP,MAAM,CAAC,GAAG;AAAA,cACV;AAAA,YACJ,CAAC;AAAA,UACL;AACA;AAAA,QACJ;AACA,cAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC5E,YAAI,kBAAkB,SAAS;AAC3B,gBAAM,KAAK,OAAO,KAAK,CAACA,YAAW;AAC/B,gBAAIA,QAAO,OAAO,QAAQ;AACtB,sBAAQ,OAAO,KAAK,GAAQ,aAAa,KAAKA,QAAO,MAAM,CAAC;AAAA,YAChE;AACA,oBAAQ,MAAM,UAAU,KAAK,IAAIA,QAAO;AAAA,UAC5C,CAAC,CAAC;AAAA,QACN,OACK;AACD,cAAI,OAAO,OAAO,QAAQ;AACtB,oBAAQ,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,UAChE;AACA,kBAAQ,MAAM,UAAU,KAAK,IAAI,OAAO;AAAA,QAC5C;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,MAAM,QAAQ;AACd,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAAA,IAChD;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,EAAE,iBAAiB,MAAM;AACzB,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,QAAQ,CAAC;AACf,YAAQ,QAAQ,oBAAI,IAAI;AACxB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO;AAC9B,YAAM,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AACtE,YAAM,cAAc,IAAI,UAAU,KAAK,IAAI,EAAE,OAAc,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC5E,UAAI,qBAAqB,WAAW,uBAAuB,SAAS;AAChE,cAAM,KAAK,QAAQ,IAAI,CAAC,WAAW,WAAW,CAAC,EAAE,KAAK,CAAC,CAACY,YAAWC,YAAW,MAAM;AAChF,0BAAgBD,YAAWC,cAAa,SAAS,KAAK,OAAO,MAAM,GAAG;AAAA,QAC1E,CAAC,CAAC;AAAA,MACN,OACK;AACD,wBAAgB,WAAW,aAAa,SAAS,KAAK,OAAO,MAAM,GAAG;AAAA,MAC1E;AAAA,IACJ;AACA,QAAI,MAAM;AACN,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAChD,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,gBAAgB,WAAW,aAAa,OAAO,KAAK,OAAO,MAAM,KAAK;AAC3E,MAAI,UAAU,OAAO,QAAQ;AACzB,QAAS,iBAAiB,IAAI,OAAO,GAAG,GAAG;AACvC,YAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,UAAU,MAAM,CAAC;AAAA,IACjE,OACK;AACD,YAAM,OAAO,KAAK;AAAA,QACd,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,MACrF,CAAC;AAAA,IACL;AAAA,EACJ;AACA,MAAI,YAAY,OAAO,QAAQ;AAC3B,QAAS,iBAAiB,IAAI,OAAO,GAAG,GAAG;AACvC,YAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,YAAY,MAAM,CAAC;AAAA,IACnE,OACK;AACD,YAAM,OAAO,KAAK;AAAA,QACd,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,YAAY,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,MACvF,CAAC;AAAA,IACL;AAAA,EACJ;AACA,QAAM,MAAM,IAAI,UAAU,OAAO,YAAY,KAAK;AACtD;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,EAAE,iBAAiB,MAAM;AACzB,cAAQ,OAAO,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,QAAQ,CAAC;AACf,YAAQ,QAAQ,oBAAI,IAAI;AACxB,eAAW,QAAQ,OAAO;AACtB,YAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,QAAQ,CAAC,EAAE,GAAG,GAAG;AACtE,UAAI,kBAAkB,SAAS;AAC3B,cAAM,KAAK,OAAO,KAAK,CAACb,YAAW,gBAAgBA,SAAQ,OAAO,CAAC,CAAC;AAAA,MACxE;AAEI,wBAAgB,QAAQ,OAAO;AAAA,IACvC;AACA,QAAI,MAAM;AACN,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAChD,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,gBAAgB,QAAQ,OAAO;AACpC,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,OAAO,KAAK,GAAG,OAAO,MAAM;AAAA,EACtC;AACA,QAAM,MAAM,IAAI,OAAO,KAAK;AAChC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,QAAM,SAAc,cAAc,IAAI,OAAO;AAC7C,QAAM,YAAY,IAAI,IAAI,MAAM;AAChC,OAAK,KAAK,SAAS;AACnB,OAAK,KAAK,UAAU,IAAI,OAAO,KAAK,OAC/B,OAAO,CAAC,MAAW,iBAAiB,IAAI,OAAO,CAAC,CAAC,EACjD,IAAI,CAAC,MAAO,OAAO,MAAM,WAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,CAAE,EACvE,KAAK,GAAG,CAAC,IAAI;AAClB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,UAAU,IAAI,KAAK,GAAG;AACtB,aAAO;AAAA,IACX;AACA,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,MAAI,IAAI,OAAO,WAAW,GAAG;AACzB,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACvE;AACA,QAAM,SAAS,IAAI,IAAI,IAAI,MAAM;AACjC,OAAK,KAAK,SAAS;AACnB,OAAK,KAAK,UAAU,IAAI,OAAO,KAAK,IAAI,OACnC,IAAI,CAAC,MAAO,OAAO,MAAM,WAAgB,YAAY,CAAC,IAAI,IAAS,YAAY,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,CAAE,EACzG,KAAK,GAAG,CAAC,IAAI;AAClB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,IAAI,KAAK,GAAG;AACnB,aAAO;AAAA,IACX;AACA,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AAEtB,QAAI,iBAAiB;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AACzF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ;AAClB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,YAAM,IAAS,gBAAgB,KAAK,YAAY,IAAI;AAAA,IACxD;AACA,UAAM,OAAO,IAAI,UAAU,QAAQ,OAAO,OAAO;AACjD,QAAI,IAAI,OAAO;AACX,YAAM,SAAS,gBAAgB,UAAU,OAAO,QAAQ,QAAQ,IAAI;AACpE,aAAO,OAAO,KAAK,CAACc,YAAW;AAC3B,gBAAQ,QAAQA;AAChB,gBAAQ,WAAW;AACnB,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,QAAI,gBAAgB,SAAS;AACzB,YAAM,IAAS,eAAe;AAAA,IAClC;AACA,YAAQ,QAAQ;AAChB,YAAQ,WAAW;AACnB,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,qBAAqB,QAAQ,OAAO;AACzC,MAAI,UAAU,WAAc,OAAO,OAAO,UAAU,OAAO,WAAW;AAClE,WAAO,EAAE,QAAQ,CAAC,GAAG,OAAO,OAAU;AAAA,EAC1C;AACA,SAAO;AACX;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ;AAClB,OAAK,KAAK,SAAS;AACnB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM;AACvC,WAAO,IAAI,UAAU,KAAK,SAAS,oBAAI,IAAI,CAAC,GAAG,IAAI,UAAU,KAAK,QAAQ,MAAS,CAAC,IAAI;AAAA,EAC5F,CAAC;AACD,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM;AACxC,UAAM,UAAU,IAAI,UAAU,KAAK;AACnC,WAAO,UAAU,IAAI,OAAO,KAAU,WAAW,QAAQ,MAAM,CAAC,KAAK,IAAI;AAAA,EAC7E,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,UAAU,KAAK,UAAU,YAAY;AACzC,YAAM,QAAQ,QAAQ;AACtB,YAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,UAAI,kBAAkB;AAClB,eAAO,OAAO,KAAK,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC5D,aAAO,qBAAqB,QAAQ,KAAK;AAAA,IAC7C;AACA,QAAI,QAAQ,UAAU,QAAW;AAC7B,aAAO;AAAA,IACX;AACA,WAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,EAC9C;AACJ,CAAC;AACM,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AAEjG,eAAa,KAAK,MAAM,GAAG;AAE3B,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM,IAAI,UAAU,KAAK,OAAO;AAEtE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,WAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,EAC9C;AACJ,CAAC;AACM,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,UAAU,KAAK,KAAK;AAClE,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM;AACxC,UAAM,UAAU,IAAI,UAAU,KAAK;AACnC,WAAO,UAAU,IAAI,OAAO,KAAU,WAAW,QAAQ,MAAM,CAAC,SAAS,IAAI;AAAA,EACjF,CAAC;AACD,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM;AACvC,WAAO,IAAI,UAAU,KAAK,SAAS,oBAAI,IAAI,CAAC,GAAG,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,IAAI;AAAA,EACvF,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAEhC,QAAI,QAAQ,UAAU;AAClB,aAAO;AACX,WAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,EAC9C;AACJ,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AAEvB,OAAK,KAAK,QAAQ;AAClB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,aAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAEA,QAAI,QAAQ,UAAU,QAAW;AAC7B,cAAQ,QAAQ,IAAI;AAIpB,aAAO;AAAA,IACX;AAEA,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACd,YAAW,oBAAoBA,SAAQ,GAAG,CAAC;AAAA,IACnE;AACA,WAAO,oBAAoB,QAAQ,GAAG;AAAA,EAC1C;AACJ,CAAC;AACD,SAAS,oBAAoB,SAAS,KAAK;AACvC,MAAI,QAAQ,UAAU,QAAW;AAC7B,YAAQ,QAAQ,IAAI;AAAA,EACxB;AACA,SAAO;AACX;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ;AAClB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,aAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAEA,QAAI,QAAQ,UAAU,QAAW;AAC7B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,WAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,EAC9C;AACJ,CAAC;AACM,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM;AACvC,UAAM,IAAI,IAAI,UAAU,KAAK;AAC7B,WAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,MAAS,CAAC,IAAI;AAAA,EAChE,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACA,YAAW,wBAAwBA,SAAQ,IAAI,CAAC;AAAA,IACxE;AACA,WAAO,wBAAwB,QAAQ,IAAI;AAAA,EAC/C;AACJ,CAAC;AACD,SAAS,wBAAwB,SAAS,MAAM;AAC5C,MAAI,CAAC,QAAQ,OAAO,UAAU,QAAQ,UAAU,QAAW;AACvD,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AAAA,EACL;AACA,SAAO;AACX;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,YAAM,IAAS,gBAAgB,YAAY;AAAA,IAC/C;AACA,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACA,YAAW;AAC3B,gBAAQ,QAAQA,QAAO,OAAO,WAAW;AACzC,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,YAAQ,QAAQ,OAAO,OAAO,WAAW;AACzC,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ;AAClB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,aAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAEA,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACA,YAAW;AAC3B,gBAAQ,QAAQA,QAAO;AACvB,YAAIA,QAAO,OAAO,QAAQ;AACtB,kBAAQ,QAAQ,IAAI,WAAW;AAAA,YAC3B,GAAG;AAAA,YACH,OAAO;AAAA,cACH,QAAQA,QAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,YAClF;AAAA,YACA,OAAO,QAAQ;AAAA,UACnB,CAAC;AACD,kBAAQ,SAAS,CAAC;AAClB,kBAAQ,WAAW;AAAA,QACvB;AACA,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,YAAQ,QAAQ,OAAO;AACvB,QAAI,OAAO,OAAO,QAAQ;AACtB,cAAQ,QAAQ,IAAI,WAAW;AAAA,QAC3B,GAAG;AAAA,QACH,OAAO;AAAA,UACH,QAAQ,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,QAClF;AAAA,QACA,OAAO,QAAQ;AAAA,MACnB,CAAC;AACD,cAAQ,SAAS,CAAC;AAClB,cAAQ,WAAW;AAAA,IACvB;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,OAAO,QAAQ,UAAU,YAAY,CAAC,OAAO,MAAM,QAAQ,KAAK,GAAG;AACnE,cAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,MAAM;AAC7D,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,GAAG,KAAK,KAAK;AAC3D,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,IAAI,KAAK,MAAM;AAC9D,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,GAAG,KAAK,UAAU;AACrE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,YAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,SAAS,GAAG;AAC3C,UAAI,iBAAiB,SAAS;AAC1B,eAAO,MAAM,KAAK,CAACW,WAAU,iBAAiBA,QAAO,IAAI,IAAI,GAAG,CAAC;AAAA,MACrE;AACA,aAAO,iBAAiB,OAAO,IAAI,IAAI,GAAG;AAAA,IAC9C;AACA,UAAM,OAAO,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG;AACzC,QAAI,gBAAgB,SAAS;AACzB,aAAO,KAAK,KAAK,CAACD,UAAS,iBAAiBA,OAAM,IAAI,KAAK,GAAG,CAAC;AAAA,IACnE;AACA,WAAO,iBAAiB,MAAM,IAAI,KAAK,GAAG;AAAA,EAC9C;AACJ,CAAC;AACD,SAAS,iBAAiB,MAAM,MAAM,KAAK;AACvC,MAAI,KAAK,OAAO,QAAQ;AAEpB,SAAK,UAAU;AACf,WAAO;AAAA,EACX;AACA,SAAO,KAAK,KAAK,IAAI,EAAE,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,UAAU,KAAK,SAAS,GAAG,GAAG;AACjG;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,MAAM;AAC7D,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,GAAG,KAAK,KAAK;AAC3D,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,IAAI,KAAK,MAAM;AAC9D,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,GAAG,KAAK,UAAU;AACrE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,YAAY,IAAI,aAAa;AACnC,QAAI,cAAc,WAAW;AACzB,YAAM,OAAO,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG;AACzC,UAAI,gBAAgB,SAAS;AACzB,eAAO,KAAK,KAAK,CAACA,UAAS,mBAAmBA,OAAM,KAAK,GAAG,CAAC;AAAA,MACjE;AACA,aAAO,mBAAmB,MAAM,KAAK,GAAG;AAAA,IAC5C,OACK;AACD,YAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,SAAS,GAAG;AAC3C,UAAI,iBAAiB,SAAS;AAC1B,eAAO,MAAM,KAAK,CAACC,WAAU,mBAAmBA,QAAO,KAAK,GAAG,CAAC;AAAA,MACpE;AACA,aAAO,mBAAmB,OAAO,KAAK,GAAG;AAAA,IAC7C;AAAA,EACJ;AACJ,CAAC;AACD,SAAS,mBAAmB,QAAQ,KAAK,KAAK;AAC1C,MAAI,OAAO,OAAO,QAAQ;AAEtB,WAAO,UAAU;AACjB,WAAO;AAAA,EACX;AACA,QAAM,YAAY,IAAI,aAAa;AACnC,MAAI,cAAc,WAAW;AACzB,UAAM,cAAc,IAAI,UAAU,OAAO,OAAO,MAAM;AACtD,QAAI,uBAAuB,SAAS;AAChC,aAAO,YAAY,KAAK,CAAC,UAAU,oBAAoB,QAAQ,OAAO,IAAI,KAAK,GAAG,CAAC;AAAA,IACvF;AACA,WAAO,oBAAoB,QAAQ,aAAa,IAAI,KAAK,GAAG;AAAA,EAChE,OACK;AACD,UAAM,cAAc,IAAI,iBAAiB,OAAO,OAAO,MAAM;AAC7D,QAAI,uBAAuB,SAAS;AAChC,aAAO,YAAY,KAAK,CAAC,UAAU,oBAAoB,QAAQ,OAAO,IAAI,IAAI,GAAG,CAAC;AAAA,IACtF;AACA,WAAO,oBAAoB,QAAQ,aAAa,IAAI,IAAI,GAAG;AAAA,EAC/D;AACJ;AACA,SAAS,oBAAoB,MAAM,OAAO,YAAY,KAAK;AAEvD,MAAI,KAAK,OAAO,QAAQ;AACpB,SAAK,UAAU;AACf,WAAO;AAAA,EACX;AACA,SAAO,WAAW,KAAK,IAAI,EAAE,OAAO,QAAQ,KAAK,OAAO,GAAG,GAAG;AAClE;AACO,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,WAAS,KAAK,MAAM,GAAG;AAC3B,CAAC;AACM,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,UAAU,KAAK,UAAU;AAC5E,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,WAAW,MAAM,KAAK;AACpE,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,WAAW,MAAM,MAAM;AACtE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,aAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AACA,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,oBAAoB;AAAA,IAC3C;AACA,WAAO,qBAAqB,MAAM;AAAA,EACtC;AACJ,CAAC;AACD,SAAS,qBAAqB,SAAS;AACnC,UAAQ,QAAQ,OAAO,OAAO,QAAQ,KAAK;AAC3C,SAAO;AACX;AACO,IAAM,sBAAoC,gBAAK,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AACrG,WAAS,KAAK,MAAM,GAAG;AACvB,QAAM,aAAa,CAAC;AACpB,aAAW,QAAQ,IAAI,OAAO;AAC1B,QAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAE3C,UAAI,CAAC,KAAK,KAAK,SAAS;AAEpB,cAAM,IAAI,MAAM,oDAAoD,CAAC,GAAG,KAAK,KAAK,MAAM,EAAE,MAAM,CAAC,EAAE;AAAA,MACvG;AACA,YAAM,SAAS,KAAK,KAAK,mBAAmB,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK,KAAK;AAC1F,UAAI,CAAC;AACD,cAAM,IAAI,MAAM,kCAAkC,KAAK,KAAK,MAAM,EAAE;AACxE,YAAM,QAAQ,OAAO,WAAW,GAAG,IAAI,IAAI;AAC3C,YAAM,MAAM,OAAO,SAAS,GAAG,IAAI,OAAO,SAAS,IAAI,OAAO;AAC9D,iBAAW,KAAK,OAAO,MAAM,OAAO,GAAG,CAAC;AAAA,IAC5C,WACS,SAAS,QAAa,eAAe,IAAI,OAAO,IAAI,GAAG;AAC5D,iBAAW,KAAU,YAAY,GAAG,IAAI,EAAE,CAAC;AAAA,IAC/C,OACK;AACD,YAAM,IAAI,MAAM,kCAAkC,IAAI,EAAE;AAAA,IAC5D;AAAA,EACJ;AACA,OAAK,KAAK,UAAU,IAAI,OAAO,IAAI,WAAW,KAAK,EAAE,CAAC,GAAG;AACzD,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,OAAO,QAAQ,UAAU,UAAU;AACnC,cAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,SAAK,KAAK,QAAQ,YAAY;AAC9B,QAAI,CAAC,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK,GAAG;AACxC,cAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,MAAM;AAAA,QACN,QAAQ,IAAI,UAAU;AAAA,QACtB,SAAS,KAAK,KAAK,QAAQ;AAAA,MAC/B,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,OAAO;AACZ,OAAK,KAAK,MAAM;AAChB,OAAK,YAAY,CAAC,SAAS;AACvB,QAAI,OAAO,SAAS,YAAY;AAC5B,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAChE;AACA,WAAO,YAAa,MAAM;AACtB,YAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,OAAO,IAAI,IAAI;AACpE,YAAM,SAAS,QAAQ,MAAM,MAAM,MAAM,UAAU;AACnD,UAAI,KAAK,KAAK,QAAQ;AAClB,eAAO,MAAM,KAAK,KAAK,QAAQ,MAAM;AAAA,MACzC;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,OAAK,iBAAiB,CAAC,SAAS;AAC5B,QAAI,OAAO,SAAS,YAAY;AAC5B,YAAM,IAAI,MAAM,iDAAiD;AAAA,IACrE;AACA,WAAO,kBAAmB,MAAM;AAC5B,YAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,WAAW,KAAK,KAAK,OAAO,IAAI,IAAI;AAC/E,YAAM,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,UAAU;AACzD,UAAI,KAAK,KAAK,QAAQ;AAClB,eAAO,MAAM,WAAW,KAAK,KAAK,QAAQ,MAAM;AAAA,MACpD;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,OAAO,QAAQ,UAAU,YAAY;AACrC,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO,QAAQ;AAAA,QACf;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AAEA,UAAM,mBAAmB,KAAK,KAAK,UAAU,KAAK,KAAK,OAAO,KAAK,IAAI,SAAS;AAChF,QAAI,kBAAkB;AAClB,cAAQ,QAAQ,KAAK,eAAe,QAAQ,KAAK;AAAA,IACrD,OACK;AACD,cAAQ,QAAQ,KAAK,UAAU,QAAQ,KAAK;AAAA,IAChD;AACA,WAAO;AAAA,EACX;AACA,OAAK,QAAQ,IAAI,SAAS;AACtB,UAAM,IAAI,KAAK;AACf,QAAI,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AACxB,aAAO,IAAI,EAAE;AAAA,QACT,MAAM;AAAA,QACN,OAAO,IAAI,UAAU;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,KAAK,CAAC;AAAA,UACb,MAAM,KAAK,CAAC;AAAA,QAChB,CAAC;AAAA,QACD,QAAQ,KAAK,KAAK;AAAA,MACtB,CAAC;AAAA,IACL;AACA,WAAO,IAAI,EAAE;AAAA,MACT,MAAM;AAAA,MACN,OAAO,KAAK,CAAC;AAAA,MACb,QAAQ,KAAK,KAAK;AAAA,IACtB,CAAC;AAAA,EACL;AACA,OAAK,SAAS,CAAC,WAAW;AACtB,UAAM,IAAI,KAAK;AACf,WAAO,IAAI,EAAE;AAAA,MACT,MAAM;AAAA,MACN,OAAO,KAAK,KAAK;AAAA,MACjB;AAAA,IACJ,CAAC;AAAA,EACL;AACA,SAAO;AACX,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,WAAO,QAAQ,QAAQ,QAAQ,KAAK,EAAE,KAAK,CAAC,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC;AAAA,EACnH;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AAIvB,EAAK,WAAW,KAAK,MAAM,aAAa,MAAM;AAC1C,UAAM,IAAI;AACV,QAAI,CAAC,EAAE;AACH,QAAE,eAAe,IAAI,OAAO;AAChC,WAAO,EAAE;AAAA,EACb,CAAC;AACD,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM,KAAK,KAAK,WAAW,MAAM,OAAO;AAC9E,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM,KAAK,KAAK,WAAW,MAAM,UAAU;AACpF,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,KAAK,KAAK,WAAW,MAAM,SAAS,MAAS;AACvF,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,KAAK,KAAK,WAAW,MAAM,UAAU,MAAS;AACzF,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,KAAK,KAAK;AACxB,WAAO,MAAM,KAAK,IAAI,SAAS,GAAG;AAAA,EACtC;AACJ,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAO,UAAU,KAAK,MAAM,GAAG;AAC/B,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,MAAM;AAC9B,WAAO;AAAA,EACX;AACA,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,IAAI,IAAI,GAAG,KAAK;AACtB,QAAI,aAAa,SAAS;AACtB,aAAO,EAAE,KAAK,CAACP,OAAM,mBAAmBA,IAAG,SAAS,OAAO,IAAI,CAAC;AAAA,IACpE;AACA,uBAAmB,GAAG,SAAS,OAAO,IAAI;AAC1C;AAAA,EACJ;AACJ,CAAC;AACD,SAAS,mBAAmB,QAAQ,SAAS,OAAO,MAAM;AACtD,MAAI,CAAC,QAAQ;AACT,UAAM,OAAO;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA;AAAA,MACA,MAAM,CAAC,GAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,CAAE;AAAA;AAAA,MACpC,UAAU,CAAC,KAAK,KAAK,IAAI;AAAA;AAAA,IAE7B;AACA,QAAI,KAAK,KAAK,IAAI;AACd,WAAK,SAAS,KAAK,KAAK,IAAI;AAChC,YAAQ,OAAO,KAAU,MAAM,IAAI,CAAC;AAAA,EACxC;AACJ;;;AC9rEA;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;;;ACCA,IAAM,QAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,sBAAO,MAAM,wCAAU;AAAA,IACvC,MAAM,EAAE,MAAM,4BAAQ,MAAM,wCAAU;AAAA,IACtC,OAAO,EAAE,MAAM,4BAAQ,MAAM,wCAAU;AAAA,IACvC,KAAK,EAAE,MAAM,4BAAQ,MAAM,wCAAU;AAAA,EACzC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACW,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,0KAA6CA,OAAM,QAAQ,+EAAmB,QAAQ;AAAA,QACjG;AACA,eAAO,+JAAkC,QAAQ,+EAAmB,QAAQ;AAAA,MAChF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,+JAAuC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACrF,eAAO,uPAAyD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACjG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,qJAAkCA,OAAM,UAAU,sCAAQ,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,0BAAM;AACjI,eAAO,oJAAiCA,OAAM,UAAU,sCAAQ,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,2HAA4BA,OAAM,MAAM,0CAAY,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC7G;AACA,eAAO,2HAA4BA,OAAM,MAAM,0CAAY,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,gJAAkCA,OAAM,MAAM;AACzD,YAAI,OAAO,WAAW;AAClB,iBAAO,sJAAmC,OAAO,MAAM;AAC3D,YAAI,OAAO,WAAW;AAClB,iBAAO,qJAAkC,OAAO,QAAQ;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,uKAAqC,OAAO,OAAO;AAC9D,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,0LAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,2BAAOA,OAAM,KAAK,SAAS,IAAI,iBAAO,EAAE,4BAAQA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,SAAI,CAAC;AAAA,MACjI,KAAK;AACD,eAAO,2FAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,2FAAqBA,OAAM,MAAM;AAAA,MAC5C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAa,MAAM;AAAA,EACvB;AACJ;;;ACxGA,IAAMC,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,sBAAY;AAAA,IAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAY;AAAA,IACxC,OAAO,EAAE,MAAM,WAAW,MAAM,sBAAY;AAAA,IAC5C,KAAK,EAAE,MAAM,WAAW,MAAM,sBAAY;AAAA,EAC9C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,wEAAuCA,OAAM,QAAQ,gBAAgB,QAAQ;AAAA,QACxF;AACA,eAAO,6DAA4B,QAAQ,gBAAgB,QAAQ;AAAA,MACvE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,6DAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,4FAAsD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC9F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,+CAAyBA,OAAM,UAAU,iBAAO,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,SAAS;AACzH,eAAO,+CAAyBA,OAAM,UAAU,iBAAO,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,4CAAyBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AACjG,eAAO,4CAAyBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAClF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,gCAAiB,OAAO,MAAM;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,gCAAiB,OAAO,MAAM;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,gCAAiB,OAAO,QAAQ;AAC3C,YAAI,OAAO,WAAW;AAClB,iBAAO,+BAAgB,OAAO,OAAO;AACzC,eAAO,oBAAU,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACpE;AAAA,MACA,KAAK;AACD,eAAO,oCAAgBA,OAAM,OAAO;AAAA,MACxC,KAAK;AACD,eAAO,0BAAkBA,OAAM,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACrG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;ACvGA,SAAS,oBAAoB,OAAO,KAAK,KAAK,MAAM;AAChD,QAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,QAAM,YAAY,WAAW;AAC7B,QAAM,gBAAgB,WAAW;AACjC,MAAI,iBAAiB,MAAM,iBAAiB,IAAI;AAC5C,WAAO;AAAA,EACX;AACA,MAAI,cAAc,GAAG;AACjB,WAAO;AAAA,EACX;AACA,MAAI,aAAa,KAAK,aAAa,GAAG;AAClC,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,sJAAwCA,OAAM,QAAQ,sDAAc,QAAQ;AAAA,QACvF;AACA,eAAO,2IAA6B,QAAQ,sDAAc,QAAQ;AAAA,MACtE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iJAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,mMAA6C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACrF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,oBAAoB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC7F,iBAAO,yJAAiCA,OAAM,UAAU,kDAAU,+CAAY,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QACvI;AACA,eAAO,yJAAiCA,OAAM,UAAU,kDAAU,wEAAiB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrH;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,oBAAoB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC7F,iBAAO,6IAA+BA,OAAM,MAAM,+CAAY,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QACvH;AACA,eAAO,6IAA+BA,OAAM,MAAM,wEAAiB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,gNAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,kOAA8C,OAAO,MAAM;AACtE,YAAI,OAAO,WAAW;AAClB,iBAAO,mMAAwC,OAAO,QAAQ;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,yPAAiD,OAAO,OAAO;AAC1E,eAAO,sEAAe,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACzE;AAAA,MACA,KAAK;AACD,eAAO,yMAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,4EAAgBA,OAAM,KAAK,SAAS,IAAI,mCAAU,0BAAM,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzG,KAAK;AACD,eAAO,sGAAsBA,OAAM,MAAM;AAAA,MAC7C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,oIAA2BA,OAAM,MAAM;AAAA,MAClD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;AC1JA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAW,MAAM,0DAAa;AAAA,IAC9C,MAAM,EAAE,MAAM,kCAAS,MAAM,0DAAa;AAAA,IAC1C,OAAO,EAAE,MAAM,oDAAY,MAAM,0DAAa;AAAA,IAC9C,KAAK,EAAE,MAAM,oDAAY,MAAM,0DAAa;AAAA,EAChD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,0IAAsCA,OAAM,QAAQ,gDAAa,QAAQ;AAAA,QACpF;AACA,eAAO,+HAA2B,QAAQ,gDAAa,QAAQ;AAAA,MACnE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,+HAAgC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC9E,eAAO,iLAA0C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAClF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gIAA4BA,OAAM,UAAU,kDAAU,4DAAe,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,kDAAU;AAC3I,eAAO,gIAA4BA,OAAM,UAAU,kDAAU,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,0HAA2BA,OAAM,MAAM,4DAAe,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC9G;AACA,eAAO,0HAA2BA,OAAM,MAAM,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,mLAAuC,OAAO,MAAM;AAAA,QAC/D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,yLAAwC,OAAO,MAAM;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,4KAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,kLAAsC,OAAO,OAAO;AAC/D,YAAI,cAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,eAAO,GAAG,WAAW,IAAI,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC5E;AAAA,MACA,KAAK;AACD,eAAO,uNAA6CA,OAAM,OAAO;AAAA,MACrE,KAAK;AACD,eAAO,qEAAcA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,4BAAQA,OAAM,KAAK,SAAS,IAAI,uBAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzI,KAAK;AACD,eAAO,0FAAoBA,OAAM,MAAM;AAAA,MAC3C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,kHAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;ACtHA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAa,MAAM,WAAW;AAAA,IAC9C,MAAM,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,IACxC,OAAO,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC5C,KAAK,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,EAC9C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,2CAAwCA,OAAM,QAAQ,gBAAgB,QAAQ;AAAA,QACzF;AACA,eAAO,gCAA6B,QAAQ,gBAAgB,QAAQ;AAAA,MACxE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gCAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,2CAA0C,WAAWA,OAAM,QAAQ,KAAK,CAAC;AAAA,MACpF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,mBAAgB;AAC9C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8BAA8BA,OAAM,UAAU,UAAU,kBAAe,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC9I,eAAO,8BAA8BA,OAAM,UAAU,UAAU,QAAQ,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,mBAAgB;AAC9C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,+BAA+BA,OAAM,MAAM,kBAAe,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACnH;AACA,eAAO,+BAA+BA,OAAM,MAAM,QAAQ,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,6CAAuC,OAAO,MAAM;AAAA,QAC/D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,uCAAoC,OAAO,MAAM;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,qCAAkC,OAAO,QAAQ;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,sDAAgD,OAAO,OAAO;AACzE,eAAO,2BAAwB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAClF;AAAA,MACA,KAAK;AACD,eAAO,kDAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,OAAOA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,iBAAiBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzI,KAAK;AACD,eAAO,sBAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA;AAAA,MACX,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAS,MAAM,SAAM;AAAA,IACrC,MAAM,EAAE,MAAM,cAAS,MAAM,SAAM;AAAA,IACnC,OAAO,EAAE,MAAM,cAAS,MAAM,SAAM;AAAA,IACpC,KAAK,EAAE,MAAM,cAAS,MAAM,SAAM;AAAA,EACtC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,sDAAwCA,OAAM,QAAQ,mBAAc,QAAQ;AAAA,QACvF;AACA,eAAO,2CAA6B,QAAQ,mBAAc,QAAQ;AAAA,MACtE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,2CAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,iEAAmD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC3F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,4CAA4BA,OAAM,UAAU,SAAS,mBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,YAAO;AAAA,QACrI;AACA,eAAO,4CAA4BA,OAAM,UAAU,SAAS,mBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,2CAA2BA,OAAM,UAAU,SAAS,mBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,YAAO;AAAA,QACpI;AACA,eAAO,2CAA2BA,OAAM,UAAU,SAAS,mBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1G;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,8DAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,0DAAqC,OAAO,MAAM;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,qDAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAA0C,OAAO,OAAO;AACnE,eAAO,yBAAmB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7E;AAAA,MACA,KAAK;AACD,eAAO,yDAAqCA,OAAM,OAAO;AAAA,MAC7D,KAAK;AACD,eAAO,gCAAuB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC9D,KAAK;AACD,eAAO,8BAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,yBAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;AC7GA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,IACtC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,IAC9C,KAAK,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,EAChD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,yCAAyCA,OAAM,QAAQ,SAAS,QAAQ;AAAA,QACnF;AACA,eAAO,8BAA8B,QAAQ,SAAS,QAAQ;AAAA,MAClE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gCAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,+CAAiD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACzF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI;AACA,iBAAO,wBAAwB,UAAU,OAAO,IAAI,OAAO,IAAI,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AACpI,eAAO,wBAAwB,UAAU,OAAO,UAAU,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI,QAAQ;AACR,iBAAO,yBAAyB,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3G;AACA,eAAO,yBAAyB,MAAM,UAAU,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACnF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,oCAAoC,OAAO,MAAM;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,kCAAkC,OAAO,MAAM;AAC1D,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAmC,OAAO,QAAQ;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAAyC,OAAO,OAAO;AAClE,eAAO,WAAW,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACrE;AAAA,MACA,KAAK;AACD,eAAO,2CAAwCA,OAAM,OAAO;AAAA,MAChE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,sBAAmB,iBAAc,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC7G,KAAK;AACD,eAAO,sBAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,sBAAmBA,OAAM,MAAM;AAAA,MAC1C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;ACjHA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,IAC5C,MAAM,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,IACxC,OAAO,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC5C,KAAK,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,EAC9C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,6CAA0CA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QACzF;AACA,eAAO,kCAA+B,QAAQ,cAAc,QAAQ;AAAA,MACxE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,kCAAoC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAClF,eAAO,0CAA4C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACpF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8BAA2BA,OAAM,UAAU,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC3H,eAAO,8BAA2BA,OAAM,UAAU,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,4BAA4BA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACpG;AACA,eAAO,4BAA4BA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAgC,OAAO,MAAM;AACxD,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAgC,OAAO,MAAM;AACxD,YAAI,OAAO,WAAW;AAClB,iBAAO,+BAA4B,OAAO,QAAQ;AACtD,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAsC,OAAO,OAAO;AAC/D,eAAO,gBAAa,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACvE;AAAA,MACA,KAAK;AACD,eAAO,8CAA2CA,OAAM,OAAO;AAAA,MACnE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,4BAAyB,0BAAuB,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC5H,KAAK;AACD,eAAO,iCAA2BA,OAAM,MAAM;AAAA,MAClD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,yBAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gEAAc,MAAM,wCAAU;AAAA,IAC9C,MAAM,EAAE,MAAM,SAAS,MAAM,wCAAU;AAAA,IACvC,OAAO,EAAE,MAAM,oDAAY,MAAM,wCAAU;AAAA,IAC3C,KAAK,EAAE,MAAM,oDAAY,MAAM,wCAAU;AAAA,IACzC,KAAK,EAAE,MAAM,4EAAgB,MAAM,wCAAU;AAAA,EACjD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,OAAOA,OAAM,aAAa,YAAY,SAAS,KAAKA,OAAM,QAAQ,GAAG;AACrE,iBAAO,yKAA4CA,OAAM,QAAQ,gDAAa,QAAQ;AAAA,QAC1F;AACA,eAAO,8JAAiC,QAAQ,gDAAa,QAAQ;AAAA,MACzE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,8JAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,oMAA8C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,+HAA2BA,OAAM,UAAU,0BAAM,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,kDAAU;AACnI,eAAO,+HAA2BA,OAAM,UAAU,0BAAM,gDAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,yHAA0BA,OAAM,MAAM,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC1G;AACA,eAAO,yHAA0BA,OAAM,MAAM,gDAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,oOAAgD,OAAO,MAAM;AAAA,QACxE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,sPAAmD,OAAO,MAAM;AAC3E,YAAI,OAAO,WAAW;AAClB,iBAAO,mOAA+C,OAAO,QAAQ;AACzE,YAAI,OAAO,WAAW;AAClB,iBAAO,uSAA4D,OAAO,OAAO;AACrF,eAAO,sDAAc,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACxE;AAAA,MACA,KAAK;AACD,eAAO,8QAAuDA,OAAM,OAAO;AAAA,MAC/E,KAAK;AACD,eAAO,uCAASA,OAAM,KAAK,SAAS,IAAI,WAAM,QAAG,kCAASA,OAAM,KAAK,SAAS,IAAI,iBAAO,QAAG,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACtI,KAAK;AACD,eAAO,6GAAwBA,OAAM,MAAM;AAAA,MAC/C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,iGAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,IAC9C,MAAM,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACvC,OAAO,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACxC,KAAK,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACtC,KAAK,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAEA,QAAM,iBAAiB;AAAA;AAAA,IAEnB,KAAK;AAAA;AAAA,EAET;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,eAAO,2BAA2B,QAAQ,cAAc,QAAQ;AAAA,MACpE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,2BAAgC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC9E,eAAO,mCAAwC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,qBAAqBA,OAAM,UAAU,OAAO,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC9H,eAAO,qBAAqBA,OAAM,UAAU,OAAO,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC/F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uBAAuBA,OAAM,MAAM,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACvG;AACA,eAAO,uBAAuBA,OAAM,MAAM,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,oCAAoC,OAAO,MAAM;AAAA,QAC5D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,kCAAkC,OAAO,MAAM;AAC1D,YAAI,OAAO,WAAW;AAClB,iBAAO,iCAAiC,OAAO,QAAQ;AAC3D,YAAI,OAAO,WAAW;AAClB,iBAAO,sCAAsC,OAAO,OAAO;AAC/D,eAAO,WAAW,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACrE;AAAA,MACA,KAAK;AACD,eAAO,yCAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,mBAAmBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACpG,KAAK;AACD,eAAO,kBAAkBA,OAAM,MAAM;AAAA,MACzC,KAAK;AACD,YAAIA,OAAM,WAAW,MAAM,QAAQA,OAAM,OAAO,KAAKA,OAAM,QAAQ,SAAS,GAAG;AAC3E,gBAAM,OAAOA,OAAM,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK;AAC1D,iBAAO,yCAAyC,IAAI;AAAA,QACxD;AACA,eAAO;AAAA,MACX,KAAK;AACD,eAAO,oBAAoBA,OAAM,MAAM;AAAA,MAC3C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC/GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,IAC3C,MAAM,EAAE,MAAM,WAAW,MAAM,OAAO;AAAA,IACtC,OAAO,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,IAC1C,KAAK,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,6CAAwCA,OAAM,QAAQ,oBAAe,QAAQ;AAAA,QACxF;AACA,eAAO,kCAA6B,QAAQ,oBAAe,QAAQ;AAAA,MACvE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,kCAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,yCAAyC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACjF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,iCAA4BA,OAAM,UAAU,QAAQ,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,YAAY;AACrI,eAAO,iCAA4BA,OAAM,UAAU,QAAQ,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,oCAA+BA,OAAM,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC5G;AACA,eAAO,oCAA+BA,OAAM,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,kDAA6C,OAAO,MAAM;AACrE,YAAI,OAAO,WAAW;AAClB,iBAAO,+CAA0C,OAAO,MAAM;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAyC,OAAO,QAAQ;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,oDAAoD,OAAO,OAAO;AAC7E,eAAO,YAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,uCAAuCA,OAAM,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,WAAWA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,gBAAWA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACvI,KAAK;AACD,eAAO,4BAAuBA,OAAM,MAAM;AAAA,MAC9C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,sBAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,QAAQ;AAAA,IAC5C,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+CAA4CA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QAC3F;AACA,eAAO,oCAAiC,QAAQ,cAAc,QAAQ;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,oCAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,6CAA4C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACpF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI;AACA,iBAAO,qCAAqC,UAAU,OAAO,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AACzI,eAAO,qCAAqC,UAAU,OAAO,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI,QAAQ;AACR,iBAAO,yCAAsC,MAAM,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAChH;AACA,eAAO,yCAAsC,MAAM,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC/F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAuC,OAAO,MAAM;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,qCAAkC,OAAO,QAAQ;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAiD,OAAO,OAAO;AAC1E,eAAO,eAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,kDAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,QAAQA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,eAAeA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxI,KAAK;AACD,eAAO,wBAAqB,eAAeA,OAAM,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC5E,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAqB,eAAeA,OAAM,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC5E;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AClIA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAW,MAAM,0DAAa;AAAA,IAC9C,MAAM,EAAE,MAAM,4BAAQ,MAAM,0DAAa;AAAA,IACzC,OAAO,EAAE,MAAM,4BAAQ,MAAM,0DAAa;AAAA,IAC1C,KAAK,EAAE,MAAM,4BAAQ,MAAM,0DAAa;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,0IAAsCA,OAAM,QAAQ,+CAAY,QAAQ;AAAA,QACnF;AACA,eAAO,+HAA2B,QAAQ,+CAAY,QAAQ;AAAA,MAClE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW,GAAG;AAC3B,iBAAO,+HAAgC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAAA,QAC9E;AACA,eAAO,+JAAuC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC/E,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sDAAcA,OAAM,UAAU,gCAAO,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,0BAAM;AAAA,QAChH;AACA,eAAO,sDAAcA,OAAM,UAAU,gCAAO,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sDAAcA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3F;AACA,eAAO,sDAAcA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,+GAA0B,OAAO,MAAM;AAAA,QAClD;AACA,YAAI,OAAO,WAAW,aAAa;AAC/B,iBAAO,+GAA0B,OAAO,MAAM;AAAA,QAClD;AACA,YAAI,OAAO,WAAW,YAAY;AAC9B,iBAAO,2HAA4B,OAAO,QAAQ;AAAA,QACtD;AACA,YAAI,OAAO,WAAW,SAAS;AAC3B,iBAAO,6IAA+B,OAAO,OAAO;AAAA,QACxD;AACA,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,oHAA0BA,OAAM,OAAO;AAAA,MAClD,KAAK;AACD,eAAO,2BAAOA,OAAM,KAAK,SAAS,IAAI,uBAAQ,EAAE,0CAAiB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACjG,KAAK;AACD,eAAO,8EAAkBA,OAAM,MAAM;AAAA,MACzC,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,0FAAoBA,OAAM,MAAM;AAAA,MAC3C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AChHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAW,SAAS,cAAc;AAAA,IAClD,MAAM,EAAE,MAAM,SAAS,SAAS,YAAY;AAAA,IAC5C,OAAO,EAAE,MAAM,WAAW,SAAS,SAAS;AAAA,IAC5C,KAAK,EAAE,MAAM,WAAW,SAAS,SAAS;AAAA,IAC1C,QAAQ,EAAE,MAAM,IAAI,SAAS,QAAQ;AAAA,IACrC,QAAQ,EAAE,MAAM,IAAI,SAAS,uBAAuB;AAAA,IACpD,KAAK,EAAE,MAAM,IAAI,SAAS,gBAAgB;AAAA,IAC1C,MAAM,EAAE,MAAM,IAAI,SAAS,6BAAc;AAAA,EAC7C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,8CAA8CA,OAAM,QAAQ,SAAS,QAAQ;AAAA,QACxF;AACA,eAAO,mCAAmC,QAAQ,SAAS,QAAQ;AAAA,MACvE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,yCAAwC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACtF,eAAO,0DAA4D,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACpG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,gBAAgB,OAAO,OAAO,mBAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,GAAG,KAAK;AAAA,QAC9G;AACA,eAAO,qCAAkC,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3E;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,gBAAgB,OAAO,OAAO,mBAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,GAAG,KAAK;AAAA,QAC9G;AACA,eAAO,qCAAkC,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAqC,OAAO,MAAM;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAwC,OAAO,QAAQ;AAClE,YAAI,OAAO,WAAW,SAAS;AAC3B,iBAAO,gFAA8D,OAAO,OAAO;AAAA,QACvF;AACA,eAAO,gBAAgB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,eAAO,2CAAwCA,OAAM,OAAO;AAAA,MAChE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,0BAA0B,kBAAkB,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxH,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC9GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAc,MAAM,QAAQ;AAAA,IAC5C,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,kBAAY,MAAM,QAAQ;AAAA,IACzC,KAAK,EAAE,MAAM,kBAAY,MAAM,QAAQ;AAAA,EAC3C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,IACL,UAAU;AAAA,EACd;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,mCAAgCA,OAAM,QAAQ,aAAa,QAAQ;AAAA,QAC9E;AACA,eAAO,wBAAqB,QAAQ,aAAa,QAAQ;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,wBAA0B,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACxE,eAAO,sCAA2C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACnF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gBAAgB,eAAeA,OAAM,MAAM,KAAK,QAAQ,SAAS,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,kBAAY;AACxJ,eAAO,gBAAgB,eAAeA,OAAM,MAAM,KAAK,QAAQ,iBAAc,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC/G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gBAAgB,eAAeA,OAAM,MAAM,KAAK,QAAQ,SAAS,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AACxI,eAAO,gBAAgB,eAAeA,OAAM,MAAM,KAAK,QAAQ,iBAAc,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC/G;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAAyC,OAAO,MAAM;AACjE,YAAI,OAAO,WAAW;AAClB,iBAAO,8CAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,sCAAmC,OAAO,QAAQ;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAiD,OAAO,OAAO;AAC1E,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,iDAA8CA,OAAM,OAAO;AAAA,MACtE,KAAK;AACD,eAAO,SAAMA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,gBAAgBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,MAAW,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxI,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3HA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAc,MAAM,QAAQ;AAAA,IAC5C,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,kBAAY,MAAM,QAAQ;AAAA,IACzC,KAAK,EAAE,MAAM,kBAAY,MAAM,QAAQ;AAAA,EAC3C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,2CAAwCA,OAAM,QAAQ,aAAU,QAAQ;AAAA,QACnF;AACA,eAAO,gCAA6B,QAAQ,aAAU,QAAQ;AAAA,MAClE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gCAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,yDAA8D,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,WAAM;AACpC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,4BAA4BA,OAAM,UAAU,WAAW,QAAQ,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AACvH,eAAO,4BAA4BA,OAAM,UAAU,WAAW,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,WAAM;AACpC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,4BAA4BA,OAAM,MAAM,QAAQ,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACxG;AACA,eAAO,4BAA4BA,OAAM,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,4CAAyC,OAAO,MAAM;AAAA,QACjE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,8CAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,sCAAmC,OAAO,QAAQ;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAAgD,OAAO,OAAO;AACzE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,iDAA8CA,OAAM,OAAO;AAAA,MACtE,KAAK;AACD,eAAO,SAAMA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,gBAAgBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,MAAW,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxI,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,gBAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,UAAQ,MAAM;AAEhB,QAAM,YAAY;AAAA,IACd,QAAQ,EAAE,OAAO,wCAAU,QAAQ,IAAI;AAAA,IACvC,QAAQ,EAAE,OAAO,4BAAQ,QAAQ,IAAI;AAAA,IACrC,SAAS,EAAE,OAAO,iEAAe,QAAQ,IAAI;AAAA,IAC7C,QAAQ,EAAE,OAAO,UAAU,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,kCAAS,QAAQ,IAAI;AAAA,IACpC,OAAO,EAAE,OAAO,4BAAQ,QAAQ,IAAI;AAAA,IACpC,QAAQ,EAAE,OAAO,8CAAW,QAAQ,IAAI;AAAA,IACxC,MAAM,EAAE,OAAO,gDAAkB,QAAQ,IAAI;AAAA,IAC7C,WAAW,EAAE,OAAO,8EAA4B,QAAQ,IAAI;AAAA,IAC5D,QAAQ,EAAE,OAAO,iDAAmB,QAAQ,IAAI;AAAA,IAChD,UAAU,EAAE,OAAO,8CAAW,QAAQ,IAAI;AAAA,IAC1C,KAAK,EAAE,OAAO,4BAAa,QAAQ,IAAI;AAAA,IACvC,KAAK,EAAE,OAAO,wCAAe,QAAQ,IAAI;AAAA,IACzC,MAAM,EAAE,OAAO,4BAAQ,QAAQ,IAAI;AAAA,IACnC,SAAS,EAAE,OAAO,WAAW,QAAQ,IAAI;AAAA,IACzC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,SAAS,EAAE,OAAO,4DAAe,QAAQ,IAAI;AAAA,IAC7C,OAAO,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,EACvC;AAEA,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,kCAAS,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC9D,MAAM,EAAE,MAAM,wCAAU,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC7D,OAAO,EAAE,MAAM,wCAAU,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC9D,KAAK,EAAE,MAAM,wCAAU,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC5D,QAAQ,EAAE,MAAM,IAAI,YAAY,sBAAO,WAAW,2BAAO;AAAA;AAAA,EAC7D;AAEA,QAAM,YAAY,CAAC,MAAO,IAAI,UAAU,CAAC,IAAI;AAC7C,QAAM,YAAY,CAAC,MAAM;AACrB,UAAM,IAAI,UAAU,CAAC;AACrB,QAAI;AACA,aAAO,EAAE;AAEb,WAAO,KAAK,UAAU,QAAQ;AAAA,EAClC;AACA,QAAM,eAAe,CAAC,MAAM,SAAI,UAAU,CAAC,CAAC;AAC5C,QAAM,UAAU,CAAC,MAAM;AACnB,UAAM,IAAI,UAAU,CAAC;AACrB,UAAM,SAAS,GAAG,UAAU;AAC5B,WAAO,WAAW,MAAM,kEAAgB;AAAA,EAC5C;AACA,QAAM,YAAY,CAAC,WAAW;AAC1B,QAAI,CAAC;AACD,aAAO;AACX,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACnC,OAAO,EAAE,OAAO,uEAAgB,QAAQ,IAAI;AAAA,IAC5C,KAAK,EAAE,OAAO,qDAAa,QAAQ,IAAI;AAAA,IACvC,OAAO,EAAE,OAAO,yCAAW,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,QAAQ,EAAE,OAAO,UAAU,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,OAAO,EAAE,OAAO,SAAS,QAAQ,IAAI;AAAA,IACrC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,OAAO,EAAE,OAAO,SAAS,QAAQ,IAAI;AAAA,IACrC,UAAU,EAAE,OAAO,+DAAkB,QAAQ,IAAI;AAAA,IACjD,MAAM,EAAE,OAAO,sCAAa,QAAQ,IAAI;AAAA,IACxC,MAAM,EAAE,OAAO,0BAAW,QAAQ,IAAI;AAAA,IACtC,UAAU,EAAE,OAAO,6CAAe,QAAQ,IAAI;AAAA,IAC9C,MAAM,EAAE,OAAO,uCAAc,QAAQ,IAAI;AAAA,IACzC,MAAM,EAAE,OAAO,uCAAc,QAAQ,IAAI;AAAA,IACzC,QAAQ,EAAE,OAAO,iCAAa,QAAQ,IAAI;AAAA,IAC1C,QAAQ,EAAE,OAAO,iCAAa,QAAQ,IAAI;AAAA,IAC1C,QAAQ,EAAE,OAAO,0EAAmB,QAAQ,IAAI;AAAA,IAChD,WAAW,EAAE,OAAO,wIAA+B,QAAQ,IAAI;AAAA,IAC/D,aAAa,EAAE,OAAO,6CAAe,QAAQ,IAAI;AAAA,IACjD,MAAM,EAAE,OAAO,kCAAc,QAAQ,IAAI;AAAA,IACzC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,WAAW,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACvC,UAAU,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACtC,WAAW,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACvC,aAAa,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACzC,WAAW,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,EAC3C;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AAEjB,cAAM,cAAcA,OAAM;AAC1B,cAAM,WAAW,eAAe,eAAe,EAAE,KAAK,UAAU,WAAW;AAE3E,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK,UAAU,YAAY,GAAG,SAAS;AACnF,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gIAAsCA,OAAM,QAAQ,oCAAW,QAAQ;AAAA,QAClF;AACA,eAAO,qHAA2B,QAAQ,oCAAW,QAAQ;AAAA,MACjE;AAAA,MACA,KAAK,iBAAiB;AAClB,YAAIA,OAAM,OAAO,WAAW,GAAG;AAC3B,iBAAO,8IAAqC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAAA,QACnF;AAEA,cAAM,cAAcA,OAAM,OAAO,IAAI,CAAC,MAAW,mBAAmB,CAAC,CAAC;AACtE,YAAIA,OAAM,OAAO,WAAW,GAAG;AAC3B,iBAAO,kLAAsC,YAAY,CAAC,CAAC,iBAAO,YAAY,CAAC,CAAC;AAAA,QACpF;AAEA,cAAM,YAAY,YAAY,YAAY,SAAS,CAAC;AACpD,cAAM,aAAa,YAAY,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI;AACrD,eAAO,kLAAsC,UAAU,iBAAO,SAAS;AAAA,MAC3E;AAAA,MACA,KAAK,WAAW;AACZ,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,UAAU,aAAaA,OAAM,UAAU,OAAO;AACpD,YAAIA,OAAM,WAAW,UAAU;AAE3B,iBAAO,GAAG,QAAQ,aAAa,0BAAM,wBAAS,OAAO,kEAAgBA,OAAM,QAAQ,SAAS,CAAC,IAAI,QAAQ,QAAQ,EAAE,IAAIA,OAAM,YAAY,0CAAY,mDAAW,GAAG,KAAK;AAAA,QAC5K;AACA,YAAIA,OAAM,WAAW,UAAU;AAE3B,gBAAM,aAAaA,OAAM,YAAY,mEAAiBA,OAAM,OAAO,KAAK,6BAASA,OAAM,OAAO;AAC9F,iBAAO,gDAAa,OAAO,4DAAe,UAAU;AAAA,QACxD;AACA,YAAIA,OAAM,WAAW,WAAWA,OAAM,WAAW,OAAO;AAEpD,gBAAM,OAAOA,OAAM,WAAW,QAAQ,mCAAU;AAChD,gBAAM,aAAaA,OAAM,YACnB,GAAGA,OAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE,2CACtC,mCAAUA,OAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE;AACnD,iBAAO,gDAAa,OAAO,IAAI,IAAI,mCAAU,UAAU,GAAG,KAAK;AAAA,QACnE;AACA,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,KAAK,QAAQA,OAAM,UAAU,OAAO;AAC1C,YAAI,QAAQ,MAAM;AACd,iBAAO,GAAG,OAAO,SAAS,wBAAS,OAAO,IAAI,EAAE,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACrG;AACA,eAAO,GAAG,QAAQ,aAAa,0BAAM,wBAAS,OAAO,IAAI,EAAE,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACjG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,UAAU,aAAaA,OAAM,UAAU,OAAO;AACpD,YAAIA,OAAM,WAAW,UAAU;AAE3B,iBAAO,GAAG,QAAQ,cAAc,oBAAK,wBAAS,OAAO,kEAAgBA,OAAM,QAAQ,SAAS,CAAC,IAAI,QAAQ,QAAQ,EAAE,IAAIA,OAAM,YAAY,0CAAY,gCAAO,GAAG,KAAK;AAAA,QACxK;AACA,YAAIA,OAAM,WAAW,UAAU;AAE3B,gBAAM,aAAaA,OAAM,YAAY,yEAAkBA,OAAM,OAAO,KAAK,mCAAUA,OAAM,OAAO;AAChG,iBAAO,0CAAY,OAAO,4DAAe,UAAU;AAAA,QACvD;AACA,YAAIA,OAAM,WAAW,WAAWA,OAAM,WAAW,OAAO;AAEpD,gBAAM,OAAOA,OAAM,WAAW,QAAQ,mCAAU;AAEhD,cAAIA,OAAM,YAAY,KAAKA,OAAM,WAAW;AACxC,kBAAM,iBAAiBA,OAAM,WAAW,QAAQ,+EAAmB;AACnE,mBAAO,0CAAY,OAAO,IAAI,IAAI,mCAAU,cAAc;AAAA,UAC9D;AACA,gBAAM,aAAaA,OAAM,YACnB,GAAGA,OAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE,2CACtC,mCAAUA,OAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE;AACnD,iBAAO,0CAAY,OAAO,IAAI,IAAI,mCAAU,UAAU,GAAG,KAAK;AAAA,QAClE;AACA,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,KAAK,QAAQA,OAAM,UAAU,OAAO;AAC1C,YAAI,QAAQ,MAAM;AACd,iBAAO,GAAG,OAAO,UAAU,wBAAS,OAAO,IAAI,EAAE,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACtG;AACA,eAAO,GAAG,QAAQ,cAAc,oBAAK,wBAAS,OAAO,IAAI,EAAE,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACjG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AAEf,YAAI,OAAO,WAAW;AAClB,iBAAO,0HAA2B,OAAO,MAAM;AACnD,YAAI,OAAO,WAAW;AAClB,iBAAO,gIAA4B,OAAO,MAAM;AACpD,YAAI,OAAO,WAAW;AAClB,iBAAO,6GAAwB,OAAO,QAAQ;AAClD,YAAI,OAAO,WAAW;AAClB,iBAAO,uJAA+B,OAAO,OAAO;AAExD,cAAM,YAAY,iBAAiB,OAAO,MAAM;AAChD,cAAM,OAAO,WAAW,SAAS,OAAO;AACxC,cAAM,SAAS,WAAW,UAAU;AACpC,cAAM,YAAY,WAAW,MAAM,mCAAU;AAC7C,eAAO,GAAG,IAAI,iBAAO,SAAS;AAAA,MAClC;AAAA,MACA,KAAK;AACD,eAAO,uKAAqCA,OAAM,OAAO;AAAA,MAC7D,KAAK;AACD,eAAO,2BAAOA,OAAM,KAAK,SAAS,IAAI,iBAAO,EAAE,yCAAWA,OAAM,KAAK,SAAS,IAAI,iBAAO,QAAG,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACtI,KAAK,eAAe;AAChB,eAAO;AAAA,MACX;AAAA,MACA,KAAK;AACD,eAAO;AAAA,MACX,KAAK,mBAAmB;AACpB,cAAM,QAAQ,aAAaA,OAAM,UAAU,OAAO;AAClD,eAAO,kEAAgB,KAAK;AAAA,MAChC;AAAA,MACA;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACpNA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACzC,MAAM,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACvC,OAAO,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACvC,KAAK,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,EACzC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+CAA0CA,OAAM,QAAQ,oBAAoB,QAAQ;AAAA,QAC/F;AACA,eAAO,oCAA+B,QAAQ,oBAAoB,QAAQ;AAAA,MAC9E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,yCAAyC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACvF,eAAO,8CAA8C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI;AACA,iBAAO,gCAA2B,UAAU,YAAY,QAAQ,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AAChI,eAAO,gCAA2B,UAAU,YAAY,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACnG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI,QAAQ;AACR,iBAAO,8BAAyB,MAAM,QAAQ,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/F;AACA,eAAO,8BAAyB,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACjF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,8CAAyC,OAAO,MAAM;AACjE,YAAI,OAAO,WAAW;AAClB,iBAAO,6CAAwC,OAAO,MAAM;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAsC,OAAO,QAAQ;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAA4C,OAAO,OAAO;AACrE,eAAO,cAAc,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACxE;AAAA,MACA,KAAK;AACD,eAAO,kDAA6CA,OAAM,OAAO;AAAA,MACrE,KAAK;AACD,eAAO,cAAcA,OAAM,KAAK,SAAS,IAAI,oBAAe,aAAQ,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC9G,KAAK;AACD,eAAO,2BAAsB,eAAeA,OAAM,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7E,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,2BAA2B,eAAeA,OAAM,MAAM,KAAKA,OAAM,MAAM;AAAA,MAClF;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACxHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,SAAS;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,IACrC,OAAO,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,IACtC,KAAK,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,EACxC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+DAAgDA,OAAM,QAAQ,0BAAoB,QAAQ;AAAA,QACrG;AACA,eAAO,oDAAqC,QAAQ,0BAAoB,QAAQ;AAAA,MACpF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,oDAA0C,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACxF,eAAO,8DAAiD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACzF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gBAAaA,OAAM,UAAU,aAAO,0BAAoB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,MAAM;AAC1H,eAAO,uCAA8BA,OAAM,UAAU,aAAO,iBAAc,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,wCAA+BA,OAAM,MAAM,2BAAqB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACxH;AACA,eAAO,wCAA+BA,OAAM,MAAM,iBAAc,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAClG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAwB,OAAO,MAAM;AAChD,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAwB,OAAO,MAAM;AAChD,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAwB,OAAO,QAAQ;AAClD,YAAI,OAAO,WAAW;AAClB,iBAAO,6BAAuB,OAAO,OAAO;AAChD,eAAO,qBAAe,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACzE;AAAA,MACA,KAAK;AACD,eAAO,8BAAqBA,OAAM,OAAO;AAAA,MAC7C,KAAK;AACD,eAAO,mBAAmBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACpG,KAAK;AACD,eAAO,2BAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,kCAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,SAAS,kBAAkB,OAAO,KAAK,MAAM;AACzC,SAAO,KAAK,IAAI,KAAK,MAAM,IAAI,MAAM;AACzC;AACA,SAAS,oBAAoB,MAAM;AAC/B,MAAI,CAAC;AACD,WAAO;AACX,QAAM,SAAS,CAAC,UAAK,UAAK,UAAK,UAAK,UAAK,gBAAM,QAAG;AAClD,QAAM,WAAW,KAAK,KAAK,SAAS,CAAC;AACrC,SAAO,QAAQ,OAAO,SAAS,QAAQ,IAAI,WAAM;AACrD;AACA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,8KAA4CA,OAAM,QAAQ,uDAAe,QAAQ;AAAA,QAC5F;AACA,eAAO,mKAAiC,QAAQ,uDAAe,QAAQ;AAAA,MAC3E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,mKAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,yPAAsD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC9F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,kBAAkB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC1E,iBAAO,kLAAsC,oBAAoBA,OAAM,UAAU,gCAAO,CAAC,+CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QAC/I;AACA,eAAO,kLAAsC,oBAAoBA,OAAM,UAAU,gCAAO,CAAC,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACpI;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,kBAAkB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC1E,iBAAO,wLAAuC,oBAAoBA,OAAM,MAAM,CAAC,+CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QACrI;AACA,eAAO,wLAAuC,oBAAoBA,OAAM,MAAM,CAAC,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1H;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,qHAA2B,OAAO,MAAM;AACnD,YAAI,OAAO,WAAW;AAClB,iBAAO,iIAA6B,OAAO,MAAM;AACrD,YAAI,OAAO,WAAW;AAClB,iBAAO,6IAA+B,OAAO,QAAQ;AACzD,YAAI,OAAO,WAAW;AAClB,iBAAO,oKAAkC,OAAO,OAAO;AAC3D,eAAO,4BAAQ,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAClE;AAAA,MACA,KAAK;AACD,eAAO,2KAAoCA,OAAM,OAAO;AAAA,MAC5D,KAAK;AACD,eAAO,8FAAmBA,OAAM,KAAK,SAAS,IAAI,uBAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACtG,KAAK;AACD,eAAO,iEAAe,oBAAoBA,OAAM,MAAM,CAAC;AAAA,MAC3D,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,2DAAc,oBAAoBA,OAAM,MAAM,CAAC;AAAA,MAC1D;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACjJA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC7C,MAAM,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,IACvC,OAAO,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,IACxC,KAAK,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,EAC1C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,4CAA4CA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QAC3F;AACA,eAAO,iCAAiC,QAAQ,cAAc,QAAQ;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iCAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,mDAAwD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,6BAA6BA,OAAM,UAAU,OAAO,aAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,QAAQ;AACrI,eAAO,6BAA6BA,OAAM,UAAU,OAAO,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,6BAA6BA,OAAM,MAAM,aAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC9G;AACA,eAAO,6BAA6BA,OAAM,MAAM,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,6CAA6C,OAAO,MAAM;AACrE,YAAI,OAAO,WAAW;AAClB,iBAAO,8CAA8C,OAAO,MAAM;AACtE,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAA0C,OAAO,QAAQ;AACpE,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAyC,OAAO,OAAO;AAClE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,2CAA2CA,OAAM,OAAO;AAAA,MACnE,KAAK;AACD,eAAO,wBAAwBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzG,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACxGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,SAAS,MAAM,aAAU;AAAA,IACzC,MAAM,EAAE,MAAM,WAAQ,MAAM,aAAU;AAAA,IACtC,OAAO,EAAE,MAAM,SAAS,MAAM,aAAU;AAAA,IACxC,KAAK,EAAE,MAAM,SAAS,MAAM,aAAU;AAAA,EAC1C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,sCAA6B,QAAQ,0CAAiCA,OAAM,QAAQ;AAAA,QAC/F;AACA,eAAO,sCAA6B,QAAQ,+BAAsB,QAAQ;AAAA,MAC9E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,qCAAoC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAClF,eAAO,iDAAgD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACxF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8CAAkCA,OAAM,UAAU,OAAO,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,OAAO;AACrI,eAAO,8CAAkCA,OAAM,UAAU,OAAO,UAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,iDAAkCA,OAAM,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/G;AACA,eAAO,iDAAkCA,OAAM,MAAM,UAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,oDAAwC,OAAO,MAAM;AAAA,QAChE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAAuC,OAAO,MAAM;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAA0C,OAAO,QAAQ;AACpE,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAA8C,OAAO,OAAO;AACvE,eAAO,SAAS,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACnE;AAAA,MACA,KAAK;AACD,eAAO,mDAA0CA,OAAM,OAAO;AAAA,MAClE,KAAK;AACD,eAAO,gBAAUA,OAAM,KAAK,SAAS,IAAI,cAAc,WAAW,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC5G,KAAK;AACD,eAAO,sBAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,oBAAiBA,OAAM,MAAM;AAAA,MACxC;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,IACpC,OAAO,EAAE,MAAM,YAAY,MAAM,QAAQ;AAAA,IACzC,KAAK,EAAE,MAAM,YAAY,MAAM,QAAQ;AAAA,EAC3C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,uCAAuCA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QACtF;AACA,eAAO,4BAA4B,QAAQ,cAAc,QAAQ;AAAA,MACrE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,4BAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,sCAA2C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACnF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,kBAAkBA,OAAM,UAAU,QAAQ,eAAe,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC/H,eAAO,kBAAkBA,OAAM,UAAU,QAAQ,gBAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACnG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,mBAAmBA,OAAM,MAAM,eAAe,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACtG;AACA,eAAO,mBAAmBA,OAAM,MAAM,gBAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAA0C,OAAO,MAAM;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,uCAAuC,OAAO,QAAQ;AACjE,YAAI,OAAO,WAAW;AAClB,iBAAO,qDAAqD,OAAO,OAAO;AAC9E,eAAO,qBAAqB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC/E;AAAA,MACA,KAAK;AACD,eAAO,iDAAiDA,OAAM,OAAO;AAAA,MACzE,KAAK;AACD,eAAO,QAAQA,OAAM,KAAK,SAAS,IAAI,MAAM,GAAG,mBAAmBA,OAAM,KAAK,SAAS,IAAI,MAAM,GAAG,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC9I,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAM,MAAM,qBAAM;AAAA,IAClC,MAAM,EAAE,MAAM,sBAAO,MAAM,qBAAM;AAAA,IACjC,OAAO,EAAE,MAAM,gBAAM,MAAM,qBAAM;AAAA,IACjC,KAAK,EAAE,MAAM,gBAAM,MAAM,qBAAM;AAAA,EACnC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,8CAAqBA,OAAM,QAAQ,+DAAa,QAAQ;AAAA,QACnE;AACA,eAAO,mCAAU,QAAQ,+DAAa,QAAQ;AAAA,MAClD;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,mCAAe,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC7D,eAAO,mCAAe,WAAWA,OAAM,QAAQ,QAAG,CAAC;AAAA,MACvD,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,mCAAU;AACxC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,yCAAWA,OAAM,UAAU,QAAG,SAAIA,OAAM,QAAQ,SAAS,CAAC,GAAG,OAAO,QAAQ,cAAI,GAAG,GAAG;AACjG,eAAO,yCAAWA,OAAM,UAAU,QAAG,SAAIA,OAAM,QAAQ,SAAS,CAAC,GAAG,GAAG;AAAA,MAC3E;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,mCAAU;AACxC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,yCAAWA,OAAM,MAAM,SAAIA,OAAM,QAAQ,SAAS,CAAC,GAAG,OAAO,IAAI,GAAG,GAAG;AAClF,eAAO,yCAAWA,OAAM,MAAM,SAAIA,OAAM,QAAQ,SAAS,CAAC,GAAG,GAAG;AAAA,MACpE;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAY,OAAO,MAAM;AACpC,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAY,OAAO,MAAM;AACpC,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAY,OAAO,QAAQ;AACtC,YAAI,OAAO,WAAW;AAClB,iBAAO,iEAAe,OAAO,OAAO;AACxC,eAAO,qBAAM,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAChE;AAAA,MACA,KAAK;AACD,eAAO,mCAAUA,OAAM,OAAO;AAAA,MAClC,KAAK;AACD,eAAO,+DAAaA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,QAAG,CAAC;AAAA,MAC7F,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAW,MAAM,kFAAiB;AAAA,IAClD,MAAM,EAAE,MAAM,kCAAS,MAAM,kFAAiB;AAAA,IAC9C,OAAO,EAAE,MAAM,oDAAY,MAAM,kFAAiB;AAAA,IAClD,KAAK,EAAE,MAAM,oDAAY,MAAM,kFAAiB;AAAA,EACpD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,8KAA4CA,OAAM,QAAQ,sDAAc,QAAQ;AAAA,QAC3F;AACA,eAAO,mKAAiC,QAAQ,sDAAc,QAAQ;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,mKAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,2NAAiD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACzF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,iJAA8BA,OAAM,UAAU,oEAAa,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AACtI,eAAO,iJAA8BA,OAAM,UAAU,oEAAa,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,6JAAgCA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACvH;AACA,eAAO,6JAAgCA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,+JAAkC,OAAO,MAAM;AAAA,QAC1D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,iLAAqC,OAAO,MAAM;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,+JAAkC,OAAO,QAAQ;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,uOAA8C,OAAO,OAAO;AACvE,eAAO,oDAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,4IAA8BA,OAAM,OAAO;AAAA,MACtD,KAAK;AACD,eAAO,kFAAiBA,OAAM,KAAK,SAAS,IAAI,uBAAQ,QAAG,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACrG,KAAK;AACD,eAAO,qGAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,uHAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC9GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAW,MAAM,uCAAS;AAAA,IAC1C,MAAM,EAAE,MAAM,gBAAM,MAAM,uCAAS;AAAA,IACnC,OAAO,EAAE,MAAM,4BAAQ,MAAM,uCAAS;AAAA,IACtC,KAAK,EAAE,MAAM,4BAAQ,MAAM,uCAAS;AAAA,EACxC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,wOAAoDA,OAAM,QAAQ,yFAAmB,QAAQ;AAAA,QACxG;AACA,eAAO,6NAAyC,QAAQ,yFAAmB,QAAQ;AAAA,MACvF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,6NAA8C,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC5F,eAAO,qPAAkD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC1F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,yFAAmBA,OAAM,UAAU,gCAAO,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,0BAAM;AACjH,eAAO,yFAAmBA,OAAM,UAAU,gCAAO,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,+FAAoBA,OAAM,MAAM,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC7F;AACA,eAAO,+FAAoBA,OAAM,MAAM,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,sPAA8C,OAAO,MAAM;AAAA,QACtE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,oOAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,gMAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,iWAA+D,OAAO,OAAO;AACxF,eAAO,wFAAkB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC5E;AAAA,MACA,KAAK;AACD,eAAO,iNAAuCA,OAAM,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,0GAA0B,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACjE,KAAK;AACD,eAAO,wIAA0BA,OAAM,MAAM;AAAA,MACjD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,4KAAgCA,OAAM,MAAM;AAAA,MACvD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3Ge,SAAR,aAAoB;AACvB,SAAO,WAAG;AACd;;;ACHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAM,MAAM,UAAU;AAAA,IACtC,MAAM,EAAE,MAAM,sBAAO,MAAM,UAAU;AAAA,IACrC,OAAO,EAAE,MAAM,UAAK,MAAM,UAAU;AAAA,IACpC,KAAK,EAAE,MAAM,UAAK,MAAM,UAAU;AAAA,EACtC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+EAA6BA,OAAM,QAAQ,qCAAY,QAAQ;AAAA,QAC1E;AACA,eAAO,oEAAkB,QAAQ,qCAAY,QAAQ;AAAA,MACzD;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iDAAmB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjE,eAAO,oCAAgB,WAAWA,OAAM,QAAQ,eAAK,CAAC;AAAA,MAC1D,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,iBAAO;AACrC,cAAM,SAAS,QAAQ,iBAAO,0CAAY;AAC1C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,OAAO,QAAQ,QAAQ;AAC7B,YAAI;AACA,iBAAO,GAAGA,OAAM,UAAU,QAAG,2CAAaA,OAAM,QAAQ,SAAS,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,MAAM;AAC7F,eAAO,GAAGA,OAAM,UAAU,QAAG,2CAAaA,OAAM,QAAQ,SAAS,CAAC,IAAI,GAAG,GAAG,MAAM;AAAA,MACtF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,iBAAO;AACrC,cAAM,SAAS,QAAQ,iBAAO,0CAAY;AAC1C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,OAAO,QAAQ,QAAQ;AAC7B,YAAI,QAAQ;AACR,iBAAO,GAAGA,OAAM,UAAU,QAAG,iDAAcA,OAAM,QAAQ,SAAS,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,MAAM;AAAA,QAC9F;AACA,eAAO,GAAGA,OAAM,UAAU,QAAG,iDAAcA,OAAM,QAAQ,SAAS,CAAC,IAAI,GAAG,GAAG,MAAM;AAAA,MACvF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,2CAAa,OAAO,MAAM;AAAA,QACrC;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAa,OAAO,MAAM;AACrC,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAa,OAAO,QAAQ;AACvC,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAAgB,OAAO,OAAO;AACzC,eAAO,sBAAO,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACjE;AAAA,MACA,KAAK;AACD,eAAO,oCAAWA,OAAM,OAAO;AAAA,MACnC,KAAK;AACD,eAAO,kDAAoB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC3D,KAAK;AACD,eAAO,8BAAUA,OAAM,MAAM;AAAA,MACjC,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,8BAAUA,OAAM,MAAM;AAAA,MACjC;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC7GA,IAAM,2BAA2B,CAAC,SAAS;AACvC,SAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AACtD;AACA,SAAS,sBAAsBE,SAAQ;AACnC,QAAM,MAAM,KAAK,IAAIA,OAAM;AAC3B,QAAM,OAAO,MAAM;AACnB,QAAM,QAAQ,MAAM;AACpB,MAAK,SAAS,MAAM,SAAS,MAAO,SAAS;AACzC,WAAO;AACX,MAAI,SAAS;AACT,WAAO;AACX,SAAO;AACX;AACA,IAAMC,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,UAAU,QAAQ,UAAU,WAAW,gBAAgB;AAC5D,UAAM,SAAS,QAAQ,MAAM,KAAK;AAClC,QAAI,WAAW;AACX,aAAO;AACX,WAAO;AAAA,MACH,MAAM,OAAO,KAAK,QAAQ;AAAA,MAC1B,MAAM,OAAO,KAAK,cAAc,EAAE,YAAY,cAAc,cAAc;AAAA,IAC9E;AAAA,EACJ;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gBAAgB,QAAQ,kCAA6BA,OAAM,QAAQ;AAAA,QAC9E;AACA,eAAO,gBAAgB,QAAQ,uBAAkB,QAAQ;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,qBAAqB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACnE,eAAO,oCAA+B,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACvE,KAAK,WAAW;AACZ,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,cAAM,SAAS,UAAUA,OAAM,QAAQ,sBAAsB,OAAOA,OAAM,OAAO,CAAC,GAAGA,OAAM,aAAa,OAAO,SAAS;AACxH,YAAI,QAAQ;AACR,iBAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC,IAAI,OAAO,IAAI,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,eAAU;AACnJ,cAAM,MAAMA,OAAM,YAAY,qBAAqB;AACnD,eAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC,mBAAc,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,QAAQ,IAAI;AAAA,MACxI;AAAA,MACA,KAAK,aAAa;AACd,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,cAAM,SAAS,UAAUA,OAAM,QAAQ,sBAAsB,OAAOA,OAAM,OAAO,CAAC,GAAGA,OAAM,aAAa,OAAO,QAAQ;AACvH,YAAI,QAAQ;AACR,iBAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC,IAAI,OAAO,IAAI,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,eAAU;AACnJ,cAAM,MAAMA,OAAM,YAAY,0BAAqB;AACnD,eAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC,mBAAc,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,QAAQ,IAAI;AAAA,MACxI;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,uCAA6B,OAAO,MAAM;AAAA,QACrD;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAA8B,OAAO,MAAM;AACtD,YAAI,OAAO,WAAW;AAClB,iBAAO,sCAA4B,OAAO,QAAQ;AACtD,YAAI,OAAO,WAAW;AAClB,iBAAO,gCAA2B,OAAO,OAAO;AACpD,eAAO,eAAe,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACzE;AAAA,MACA,KAAK;AACD,eAAO,mCAAyBA,OAAM,OAAO;AAAA,MACjD,KAAK;AACD,eAAO,kBAAaA,OAAM,KAAK,SAAS,IAAI,MAAM,IAAI,QAAQA,OAAM,KAAK,SAAS,IAAI,OAAO,IAAI,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC3I,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK,mBAAmB;AACpB,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,eAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC;AAAA,MAC3E;AAAA,MACA;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzMA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,kCAAS,MAAM,8CAAW;AAAA,IAC1C,MAAM,EAAE,MAAM,kCAAS,MAAM,8CAAW;AAAA,IACxC,OAAO,EAAE,MAAM,wCAAU,MAAM,8CAAW;AAAA,IAC1C,KAAK,EAAE,MAAM,wCAAU,MAAM,8CAAW;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,qIAAsCA,OAAM,QAAQ,gDAAa,QAAQ;AAAA,QACpF;AACA,eAAO,0HAA2B,QAAQ,gDAAa,QAAQ;AAAA,MACnE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,2BAAgC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC9E,eAAO,qKAAwC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,4IAA8BA,OAAM,UAAU,wDAAW,oCAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,kDAAU;AAC1I,eAAO,4IAA8BA,OAAM,UAAU,wDAAW,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,gIAA4BA,OAAM,MAAM,oCAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3G;AACA,eAAO,gIAA4BA,OAAM,MAAM,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,+LAAyC,OAAO,MAAM;AAAA,QACjE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,yLAAwC,OAAO,MAAM;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,4KAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,mOAA+C,OAAO,OAAO;AACxE,eAAO,WAAW,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACrE;AAAA,MACA,KAAK;AACD,eAAO,6KAAsCA,OAAM,OAAO;AAAA,MAC9D,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,8HAA0B,mGAAmB,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzH,KAAK;AACD,eAAO,8EAAkBA,OAAM,MAAM;AAAA,MACzC,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,sGAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,IAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,YAAY;AAAA,IACxC,OAAO,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,IAC3C,KAAK,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,EAC7C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,EACZ;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,wCAAwCA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QACvF;AACA,eAAO,6BAA6B,QAAQ,cAAc,QAAQ;AAAA,MACtE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,6BAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,mDAAwD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,2BAA2BA,OAAM,UAAU,OAAO,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,QAAQ;AACzI,eAAO,2BAA2BA,OAAM,UAAU,OAAO,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,2BAA2BA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAClH;AACA,eAAO,2BAA2BA,OAAM,MAAM,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAA4C,OAAO,MAAM;AACpE,YAAI,OAAO,WAAW;AAClB,iBAAO,wCAAwC,OAAO,QAAQ;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,gDAAgD,OAAO,OAAO;AACzE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,mCAAmCA,OAAM,OAAO;AAAA,MAC3D,KAAK;AACD,eAAO,yBAA8B,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACrE,KAAK;AACD,eAAO,yBAAyBA,OAAM,MAAM;AAAA,MAChD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,yBAAyBA,OAAM,MAAM;AAAA,MAChD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACxC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,EACZ;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,yCAAyCA,OAAM,QAAQ,aAAa,QAAQ;AAAA,QACvF;AACA,eAAO,8BAA8B,QAAQ,aAAa,QAAQ;AAAA,MACtE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,8BAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,2CAA0C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAClF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,WAAWA,OAAM,WAAW,SAAS,SAASA,OAAM,WAAW,WAAW,SAAS;AACzF,YAAI;AACA,iBAAO,MAAM,QAAQ,kBAAkBA,OAAM,UAAU,QAAQ,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW,IAAI,OAAO,IAAI;AAClJ,eAAO,MAAM,QAAQ,kBAAkBA,OAAM,UAAU,QAAQ,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,YAAYA,OAAM,WAAW,SAAS,UAAUA,OAAM,WAAW,WAAW,SAAS;AAC3F,YAAI,QAAQ;AACR,iBAAO,MAAM,SAAS,kBAAkBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA,QACxH;AACA,eAAO,MAAM,SAAS,kBAAkBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,8BAA8B,OAAO,MAAM;AAAA,QACtD;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,6BAA6B,OAAO,MAAM;AACrD,YAAI,OAAO,WAAW;AAClB,iBAAO,0BAA0B,OAAO,QAAQ;AACpD,YAAI,OAAO,WAAW;AAClB,iBAAO,kDAAkD,OAAO,OAAO;AAC3E,eAAO,aAAa,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACvE;AAAA,MACA,KAAK;AACD,eAAO,yCAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,gBAAgBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACjG,KAAK;AACD,eAAO,oBAAoBA,OAAM,MAAM;AAAA,MAC3C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,uBAAuBA,OAAM,MAAM;AAAA,MAC9C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,UAAO;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS,MAAM,UAAO;AAAA,IACpC,OAAO,EAAE,MAAM,aAAa,MAAM,iBAAc;AAAA,IAChD,KAAK,EAAE,MAAM,aAAa,MAAM,iBAAc;AAAA,EAClD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,uCAAuCA,OAAM,QAAQ,UAAU,QAAQ;AAAA,QAClF;AACA,eAAO,4BAA4B,QAAQ,UAAU,QAAQ;AAAA,MACjE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,4BAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,iCAAsC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC9E,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,0BAA0BA,OAAM,UAAU,OAAO,gBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AACrI,eAAO,0BAA0BA,OAAM,UAAU,OAAO,gBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,0BAA0BA,OAAM,MAAM,gBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3G;AACA,eAAO,0BAA0BA,OAAM,MAAM,gBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,qCAAkC,OAAO,MAAM;AAC1D,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAgC,OAAO,MAAM;AACxD,YAAI,OAAO,WAAW;AAClB,iBAAO,oCAAiC,OAAO,QAAQ;AAC3D,YAAI,OAAO,WAAW;AAClB,iBAAO,6CAAuC,OAAO,OAAO;AAChE,eAAO,WAAW,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACrE;AAAA,MACA,KAAK;AACD,eAAO,+CAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,sBAAmB,kBAAe,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC9G,KAAK;AACD,eAAO,uBAAoBA,OAAM,MAAM;AAAA,MAC3C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,mBAAmBA,OAAM,MAAM;AAAA,MAC1C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,sBAAY;AAAA,IAC1C,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAY;AAAA,IACxC,OAAO,EAAE,MAAM,SAAS,MAAM,sBAAY;AAAA,IAC1C,KAAK,EAAE,MAAM,SAAS,MAAM,sBAAY;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,qCAAkCA,OAAM,QAAQ,iBAAY,QAAQ;AAAA,QAC/E;AACA,eAAO,0BAAuB,QAAQ,iBAAY,QAAQ;AAAA,MAC9D;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,0BAA4B,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC1E,eAAO,kCAAiC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACzE,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,sBAAgBA,OAAM,UAAU,OAAO,KAAK,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAClH,eAAO,sBAAgBA,OAAM,UAAU,OAAO,KAAK,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,yBAAgBA,OAAM,MAAM,KAAK,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACzF;AACA,eAAO,yBAAgBA,OAAM,MAAM,KAAK,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,oBAAiB,OAAO,MAAM;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,oBAAiB,OAAO,MAAM;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,oBAAiB,OAAO,QAAQ;AAC3C,YAAI,OAAO,WAAW;AAClB,iBAAO,mBAAgB,OAAO,OAAO;AACzC,eAAO,YAAS,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACnE;AAAA,MACA,KAAK;AACD,eAAO,uBAAeA,OAAM,OAAO;AAAA,MACvC,KAAK;AACD,eAAO,2BAAsBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACvG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,cAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4BAAQ,MAAM,2BAAO;AAAA,IACrC,MAAM,EAAE,MAAM,kCAAS,MAAM,2BAAO;AAAA,IACpC,OAAO,EAAE,MAAM,4BAAQ,MAAM,2BAAO;AAAA,IACpC,KAAK,EAAE,MAAM,4BAAQ,MAAM,2BAAO;AAAA,EACtC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gGAA+BA,OAAM,QAAQ,2CAAa,QAAQ;AAAA,QAC7E;AACA,eAAO,qFAAoB,QAAQ,2CAAa,QAAQ;AAAA,MAC5D;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW,GAAG;AAC3B,iBAAO,qFAAyB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAAA,QACvE;AACA,eAAO,qHAAgC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACxE,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,0CAAYA,OAAM,UAAU,gCAAO,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,4CAAS;AAAA,QACjH;AACA,eAAO,0CAAYA,OAAM,UAAU,gCAAO,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sDAAcA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3F;AACA,eAAO,sDAAcA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,iFAAqB,OAAO,MAAM;AAAA,QAC7C;AACA,YAAI,OAAO,WAAW,aAAa;AAC/B,iBAAO,iFAAqB,OAAO,MAAM;AAAA,QAC7C;AACA,YAAI,OAAO,WAAW,YAAY;AAC9B,iBAAO,0EAAmB,OAAO,QAAQ;AAAA,QAC7C;AACA,YAAI,OAAO,WAAW,SAAS;AAC3B,iBAAO,gFAAoB,OAAO,OAAO;AAAA,QAC7C;AACA,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,gFAAoBA,OAAM,OAAO;AAAA,MAC5C,KAAK;AACD,eAAO,4BAAQA,OAAM,KAAK,SAAS,IAAI,+CAAY,0BAAM,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACnG,KAAK;AACD,eAAO,kEAAgBA,OAAM,MAAM;AAAA,MACvC,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,kEAAgBA,OAAM,MAAM;AAAA,MACvC;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AChHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAU,MAAM,YAAO;AAAA,IACvC,MAAM,EAAE,MAAM,aAAU,MAAM,YAAO;AAAA,IACrC,OAAO,EAAE,MAAM,gBAAa,MAAM,YAAO;AAAA,IACzC,KAAK,EAAE,MAAM,gBAAa,MAAM,YAAO;AAAA,EAC3C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,iEAAuDA,OAAM,QAAQ,eAAe,QAAQ;AAAA,QACvG;AACA,eAAO,sDAA4C,QAAQ,eAAe,QAAQ;AAAA,MACtF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,sDAAiD,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/F,eAAO,+DAA0D,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAClG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uDAAmCA,OAAM,UAAU,mBAAS,0BAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,cAAW;AAAA,QACnJ;AACA,eAAO,6CAAmCA,OAAM,UAAU,mBAAS,6BAAmB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxH;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uDAAmCA,OAAM,UAAU,mBAAS,0BAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,cAAW;AAAA,QACnJ;AACA,eAAO,6CAAmCA,OAAM,UAAU,mBAAS,6BAAmB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxH;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2EAAoD,OAAO,MAAM;AAC5E,YAAI,OAAO,WAAW;AAClB,iBAAO,+EAAmD,OAAO,MAAM;AAC3E,YAAI,OAAO,WAAW;AAClB,iBAAO,+DAA6C,OAAO,QAAQ;AACvE,YAAI,OAAO,WAAW;AAClB,iBAAO,yEAAuD,OAAO,OAAO;AAChF,eAAO,4BAAuB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACjF;AAAA,MACA,KAAK;AACD,eAAO,sEAAkDA,OAAM,OAAO;AAAA,MAC1E,KAAK;AACD,eAAO,uBAAuBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxG,KAAK;AACD,eAAO,8BAAyBA,OAAM,MAAM;AAAA,MAChD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,0CAA2BA,OAAM,MAAM;AAAA,MAClD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,MAAM;AAAA,IAC1C,MAAM,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,IACnC,OAAO,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,IACpC,KAAK,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,EACtC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,yCAAsCA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QACrF;AACA,eAAO,8BAA2B,QAAQ,cAAc,QAAQ;AAAA,MACpE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iCAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,6CAAyC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACjF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8BAA8BA,OAAM,UAAU,OAAO,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AACxI,eAAO,8BAA8BA,OAAM,UAAU,OAAO,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,+BAA+BA,OAAM,MAAM,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/G;AACA,eAAO,+BAA+BA,OAAM,MAAM,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAqC,OAAO,MAAM;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,oCAAiC,OAAO,QAAQ;AAC3D,YAAI,OAAO,WAAW;AAClB,iBAAO,qDAA+C,OAAO,OAAO;AACxE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,kDAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,QAAQA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,gBAAgBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzI,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAa,MAAM,oBAAU;AAAA,IAC7C,MAAM,EAAE,MAAM,eAAU,MAAM,oBAAU;AAAA,IACxC,OAAO,EAAE,MAAM,YAAY,MAAM,oBAAU;AAAA,IAC3C,KAAK,EAAE,MAAM,YAAY,MAAM,oBAAU;AAAA,IACzC,KAAK,EAAE,MAAM,gBAAW,MAAM,oBAAU;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,eAAO,wCAA8B,QAAQ,YAAY,QAAQ;AAAA,MACrE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,wCAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,wDAA8C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,+BAA0BA,OAAM,UAAU,UAAU,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC7I,eAAO,+BAA0BA,OAAM,UAAU,UAAU,gBAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,8BAAyBA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAChH;AACA,eAAO,8BAAyBA,OAAM,MAAM,gBAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,yDAAuC,OAAO,MAAM;AAAA,QAC/D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,oDAA0C,OAAO,MAAM;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAAoC,OAAO,QAAQ;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,oEAAqD,OAAO,OAAO;AAC9E,eAAO,mBAAmB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7E;AAAA,MACA,KAAK;AACD,eAAO,uDAA6CA,OAAM,OAAO;AAAA,MACrE,KAAK;AACD,eAAO,uBAA4B,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACnE,KAAK;AACD,eAAO,6BAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,+BAAuBA,OAAM,MAAM;AAAA,MAC9C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACrHA,SAAS,iBAAiB,OAAO,KAAK,KAAK,MAAM;AAC7C,QAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,QAAM,YAAY,WAAW;AAC7B,QAAM,gBAAgB,WAAW;AACjC,MAAI,iBAAiB,MAAM,iBAAiB,IAAI;AAC5C,WAAO;AAAA,EACX;AACA,MAAI,cAAc,GAAG;AACjB,WAAO;AAAA,EACX;AACA,MAAI,aAAa,KAAK,aAAa,GAAG;AAClC,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gJAAuCA,OAAM,QAAQ,sDAAc,QAAQ;AAAA,QACtF;AACA,eAAO,qIAA4B,QAAQ,sDAAc,QAAQ;AAAA,MACrE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,qIAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,6LAA4C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACpF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,iBAAiB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC1F,iBAAO,sNAA4CA,OAAM,UAAU,kDAAU,kEAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QACvI;AACA,eAAO,sNAA4CA,OAAM,UAAU,kDAAU,mCAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzH;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,iBAAiB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC1F,iBAAO,kOAA8CA,OAAM,MAAM,kEAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QAC3H;AACA,eAAO,kOAA8CA,OAAM,MAAM,mCAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7G;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,oMAAyC,OAAO,MAAM;AACjE,YAAI,OAAO,WAAW;AAClB,iBAAO,4NAA6C,OAAO,MAAM;AACrE,YAAI,OAAO,WAAW;AAClB,iBAAO,uLAAsC,OAAO,QAAQ;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,qQAAmD,OAAO,OAAO;AAC5E,eAAO,oDAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,6LAAuCA,OAAM,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,2EAAeA,OAAM,KAAK,SAAS,IAAI,iBAAO,cAAI,4BAAQA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC3I,KAAK;AACD,eAAO,oFAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,4GAAuBA,OAAM,MAAM;AAAA,MAC9C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1JA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACxC,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gDAA2CA,OAAM,QAAQ,aAAa,QAAQ;AAAA,QACzF;AACA,eAAO,qCAAgC,QAAQ,aAAa,QAAQ;AAAA,MACxE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,qCAAqC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACnF,eAAO,uDAAkD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC1F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,sCAAiCA,OAAM,UAAU,UAAU,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AAC5I,eAAO,sCAAiCA,OAAM,UAAU,UAAU,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sCAAiCA,OAAM,MAAM,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/G;AACA,eAAO,sCAAiCA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,0CAAqC,OAAO,MAAM;AAAA,QAC7D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAmC,OAAO,QAAQ;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAyC,OAAO,OAAO;AAClE,eAAO,cAAc,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACxE;AAAA,MACA,KAAK;AACD,eAAO,sDAA4CA,OAAM,OAAO;AAAA,MACpE,KAAK;AACD,eAAO,cAAcA,OAAM,KAAK,SAAS,IAAI,kBAAa,aAAQ,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC5G,KAAK;AACD,eAAO,2BAAsBA,OAAM,MAAM;AAAA,MAC7C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,yBAAyBA,OAAM,MAAM;AAAA,MAChD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,IACzC,MAAM,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,IACtC,OAAO,EAAE,MAAM,UAAU,MAAM,mBAAgB;AAAA,IAC/C,KAAK,EAAE,MAAM,UAAU,MAAM,mBAAgB;AAAA,EACjD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,iDAA2CA,OAAM,QAAQ,UAAU,QAAQ;AAAA,QACtF;AACA,eAAO,sCAAgC,QAAQ,UAAU,QAAQ;AAAA,MACrE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,sCAAqC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACnF,eAAO,wCAAuC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC/E,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,oCAA2BA,OAAM,UAAU,WAAQ,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,SAAS;AAAA,QACnI;AACA,eAAO,mCAA0BA,OAAM,UAAU,WAAQ,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,oCAA2BA,OAAM,UAAU,WAAQ,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACtH;AACA,eAAO,oCAA2BA,OAAM,UAAU,WAAQ,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,6CAAoC,OAAO,MAAM;AAAA,QAC5D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAoC,OAAO,MAAM;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,6CAAoC,OAAO,QAAQ;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAA0C,OAAO,OAAO;AACnE,eAAO,cAAc,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACxE;AAAA,MACA,KAAK;AACD,eAAO,8CAA2CA,OAAM,OAAO;AAAA,MACnE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,sBAAmB,iBAAc,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC7G,KAAK;AACD,eAAO,oBAAoBA,OAAM,UAAU,WAAQ;AAAA,MACvD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,uBAAoBA,OAAM,UAAU,WAAQ;AAAA,MACvD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4EAAgB,MAAM,sHAAuB;AAAA,IAC7D,MAAM,EAAE,MAAM,0DAAa,MAAM,sHAAuB;AAAA,IACxD,OAAO,EAAE,MAAM,gEAAc,MAAM,sHAAuB;AAAA,IAC1D,KAAK,EAAE,MAAM,gEAAc,MAAM,sHAAuB;AAAA,EAC5D;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,kNAAkDA,OAAM,QAAQ,wEAAiB,QAAQ;AAAA,QACpG;AACA,eAAO,uMAAuC,QAAQ,wEAAiB,QAAQ;AAAA,MACnF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,uMAA4C,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC1F,eAAO,mNAA8C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,2LAAqCA,OAAM,UAAU,4CAAS,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,8DAAY;AAAA,QAC1I;AACA,eAAO,2LAAqCA,OAAM,UAAU,4CAAS,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uMAAuCA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/G;AACA,eAAO,uMAAuCA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAChG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAAgB,OAAO,MAAM;AACxC,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAAgB,OAAO,MAAM;AACxC,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAAgB,OAAO,QAAQ;AAC1C,YAAI,OAAO,WAAW;AAClB,iBAAO,4DAAe,OAAO,OAAO;AACxC,eAAO,kCAAS,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACnE;AAAA,MACA,KAAK;AACD,eAAO,sDAAcA,OAAM,OAAO;AAAA,MACtC,KAAK;AACD,eAAO,uHAAwBA,OAAM,KAAK,SAAS,IAAI,uBAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC3G,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,oDAAY,MAAM,iCAAQ;AAAA,IAC1C,MAAM,EAAE,MAAM,4BAAQ,MAAM,iCAAQ;AAAA,IACpC,OAAO,EAAE,MAAM,wCAAU,MAAM,iCAAQ;AAAA,IACvC,KAAK,EAAE,MAAM,wCAAU,MAAM,iCAAQ;AAAA,EACzC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+LAA8CA,OAAM,QAAQ,2DAAc,QAAQ;AAAA,QAC7F;AACA,eAAO,oLAAmC,QAAQ,2DAAc,QAAQ;AAAA,MAC5E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,8HAA+B,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC7E,eAAO,sMAA2C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACnF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,+CAAY;AAC1C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,2DAAcA,OAAM,UAAU,oBAAK,kCAAS,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,sCAAQ;AACjH,eAAO,2DAAcA,OAAM,UAAU,oBAAK,kCAAS,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,2DAAc;AAC5C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,mFAAkBA,OAAM,MAAM,kCAAS,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAChG;AACA,eAAO,mFAAkBA,OAAM,MAAM,kCAAS,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACjF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,2OAA6C,OAAO,MAAM;AAAA,QACrE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,qOAA4C,OAAO,MAAM;AACpE,YAAI,OAAO,WAAW;AAClB,iBAAO,qLAAoC,OAAO,QAAQ;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,sPAA8C,OAAO,OAAO;AACvE,eAAO,qGAAqB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC/E;AAAA,MACA,KAAK;AACD,eAAO,gPAA6CA,OAAM,OAAO;AAAA,MACrE,KAAK;AACD,eAAO,iHAA4B,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACnE,KAAK;AACD,eAAO,oGAAoBA,OAAM,MAAM;AAAA,MAC3C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,gHAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,cAAS;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAS;AAAA,IACrC,OAAO,EAAE,MAAM,eAAO,MAAM,cAAS;AAAA,IACrC,KAAK,EAAE,MAAM,eAAO,MAAM,cAAS;AAAA,EACvC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+CAAuCA,OAAM,QAAQ,iBAAY,QAAQ;AAAA,QACpF;AACA,eAAO,oCAA4B,QAAQ,iBAAY,QAAQ;AAAA,MACnE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,oCAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,4EAAuD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC/F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gCAAuBA,OAAM,UAAU,YAAO,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,aAAK;AACnH,eAAO,gCAAuBA,OAAM,UAAU,YAAO,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,mCAAuBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAC/F,eAAO,mCAAuBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAChF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,uBAAoB,OAAO,MAAM;AAC5C,YAAI,OAAO,WAAW;AAClB,iBAAO,uBAAoB,OAAO,MAAM;AAC5C,YAAI,OAAO,WAAW;AAClB,iBAAO,uBAAoB,OAAO,QAAQ;AAC9C,YAAI,OAAO,WAAW;AAClB,iBAAO,sBAAmB,OAAO,OAAO;AAC5C,eAAO,eAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,0BAAkBA,OAAM,OAAO;AAAA,MAC1C,KAAK;AACD,eAAO,0BAAqBA,OAAM,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACvGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,oDAAY,MAAM,uCAAS;AAAA,IAC3C,MAAM,EAAE,MAAM,wCAAU,MAAM,uCAAS;AAAA,IACvC,OAAO,EAAE,MAAM,0DAAa,MAAM,uCAAS;AAAA,IAC3C,KAAK,EAAE,MAAM,0DAAa,MAAM,uCAAS;AAAA,EAC7C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,6MAAkDA,OAAM,QAAQ,sDAAc,QAAQ;AAAA,QACjG;AACA,eAAO,kMAAuC,QAAQ,sDAAc,QAAQ;AAAA,MAChF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,kMAA4C,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC1F,eAAO,mMAA6C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACrF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,+JAAkCA,OAAM,UAAU,kDAAU,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,wDAAW;AACtJ,eAAO,+JAAkCA,OAAM,UAAU,kDAAU,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,mJAAgCA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACvH;AACA,eAAO,mJAAgCA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,4NAA6C,OAAO,MAAM;AACrE,YAAI,OAAO,WAAW;AAClB,iBAAO,oPAAiD,OAAO,MAAM;AACzE,YAAI,OAAO,WAAW;AAClB,iBAAO,mMAAwC,OAAO,QAAQ;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,qQAAmD,OAAO,OAAO;AAC5E,eAAO,4EAAgB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,eAAO,qNAA2CA,OAAM,OAAO;AAAA,MACnE,KAAK;AACD,eAAO,0GAAqBA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACtG,KAAK;AACD,eAAO,4GAAuBA,OAAM,MAAM;AAAA,MAC9C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,8HAA0BA,OAAM,MAAM;AAAA,MACjD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGe,SAAR,aAAoB;AACvB,SAAO,WAAG;AACd;;;ACHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4BAAQ,MAAM,2BAAO;AAAA,IACrC,MAAM,EAAE,MAAM,kCAAS,MAAM,2BAAO;AAAA,IACpC,OAAO,EAAE,MAAM,kCAAS,MAAM,2BAAO;AAAA,IACrC,KAAK,EAAE,MAAM,kCAAS,MAAM,2BAAO;AAAA,EACvC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,4DAAyBA,OAAM,QAAQ,4DAAe,QAAQ;AAAA,QACzE;AACA,eAAO,iDAAc,QAAQ,4DAAe,QAAQ;AAAA,MACxD;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iDAAmB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjE,eAAO,gDAAkB,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC1D,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,0CAAYA,OAAM,UAAU,gCAAO,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,gCAAO;AAC7G,eAAO,0CAAYA,OAAM,UAAU,gCAAO,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACnF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sDAAcA,OAAM,MAAM,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACzF;AACA,eAAO,sDAAcA,OAAM,MAAM,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,uDAAe,OAAO,MAAM;AAAA,QACvC;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAe,OAAO,MAAM;AACvC,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAe,OAAO,QAAQ;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,qFAAoB,OAAO,OAAO;AAC7C,eAAO,sBAAO,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACjE;AAAA,MACA,KAAK;AACD,eAAO,gDAAaA,OAAM,OAAO;AAAA,MACrC,KAAK;AACD,eAAO,oFAAmBA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,SAAI,CAAC;AAAA,MACpG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,SAAS,MAAM,sBAAiB;AAAA,IAChD,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAiB;AAAA,IAC7C,OAAO,EAAE,MAAM,WAAW,MAAM,sBAAiB;AAAA,IACjD,KAAK,EAAE,MAAM,WAAW,MAAM,sBAAiB;AAAA,IAC/C,KAAK,EAAE,MAAM,SAAS,MAAM,sBAAiB;AAAA,EACjD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,mDAAyCA,OAAM,QAAQ,oBAAoB,QAAQ;AAAA,QAC9F;AACA,eAAO,wCAA8B,QAAQ,oBAAoB,QAAQ;AAAA,MAC7E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,wCAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,6DAAwD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,wBAAwBA,OAAM,UAAU,QAAQ,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,IAAI,OAAO,IAAI;AAC3H,eAAO,wBAAwBA,OAAM,UAAU,QAAQ,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,yBAAyBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA,QAChH;AACA,eAAO,yBAAyBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAClF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAoB,OAAO,MAAM;AAC5C,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAoB,OAAO,MAAM;AAC5C,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAoB,OAAO,QAAQ;AAC9C,YAAI,OAAO,WAAW;AAClB,iBAAO,6BAAmB,OAAO,OAAO;AAC5C,eAAO,uBAAa,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACvE;AAAA,MACA,KAAK;AACD,eAAO,8BAAoBA,OAAM,OAAO;AAAA,MAC5C,KAAK;AACD,eAAO,sBAAiBA,OAAM,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACpG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAS,MAAM,QAAK;AAAA,IACpC,MAAM,EAAE,MAAM,QAAQ,MAAM,QAAK;AAAA,IACjC,OAAO,EAAE,MAAM,qBAAW,MAAM,QAAK;AAAA,IACrC,KAAK,EAAE,MAAM,qBAAW,MAAM,QAAK;AAAA,EACvC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,iFAA6CA,OAAM,QAAQ,mCAAe,QAAQ;AAAA,QAC7F;AACA,eAAO,sEAAkC,QAAQ,mCAAe,QAAQ;AAAA,MAC5E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,sEAAuC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACrF,eAAO,wGAA8D,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,uCAAqBA,OAAM,UAAU,iBAAS,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,mBAAS;AACtI,eAAO,uCAAqBA,OAAM,UAAU,iBAAS,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uCAAqBA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC5G;AACA,eAAO,uCAAqBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,qFAA0C,OAAO,MAAM;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,+EAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,iEAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,+EAAyC,OAAO,OAAO;AAClE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,gFAAuCA,OAAM,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,6DAAmC,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC1E,KAAK;AACD,eAAO,2CAA2BA,OAAM,MAAM;AAAA,MAClD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,mDAA8BA,OAAM,MAAM;AAAA,MACrD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,IACjC,MAAM,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,IAC/B,OAAO,EAAE,MAAM,UAAK,MAAM,eAAK;AAAA,IAC/B,KAAK,EAAE,MAAM,UAAK,MAAM,eAAK;AAAA,EACjC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,yDAAsBA,OAAM,QAAQ,kCAAS,QAAQ;AAAA,QAChE;AACA,eAAO,8CAAW,QAAQ,kCAAS,QAAQ;AAAA,MAC/C;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,8CAAgB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC9D,eAAO,sEAAoB,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC5D,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8CAAWA,OAAM,UAAU,QAAG,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,oBAAK;AACnG,eAAO,8CAAWA,OAAM,UAAU,QAAG,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3E;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,8CAAWA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACnF;AACA,eAAO,8CAAWA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACpE;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2DAAc,OAAO,MAAM;AACtC,YAAI,OAAO,WAAW;AAClB,iBAAO,2DAAc,OAAO,MAAM;AACtC,YAAI,OAAO,WAAW;AAClB,iBAAO,iEAAe,OAAO,QAAQ;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,8FAAmB,OAAO,OAAO;AAC5C,eAAO,eAAK,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC/D;AAAA,MACA,KAAK;AACD,eAAO,oDAAYA,OAAM,OAAO;AAAA,MACpC,KAAK;AACD,eAAO,8CAAqB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC5D,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,gBAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,IACjC,MAAM,EAAE,MAAM,sBAAO,MAAM,eAAK;AAAA,IAChC,OAAO,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,IAChC,KAAK,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,EAClC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,2EAAyBA,OAAM,QAAQ,4BAAQ,QAAQ;AAAA,QAClE;AACA,eAAO,gEAAc,QAAQ,4BAAQ,QAAQ;AAAA,MACjD;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gEAAmB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjE,eAAO,8FAAwB,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChE,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8CAAWA,OAAM,UAAU,QAAG,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,oBAAK;AACtG,eAAO,8CAAWA,OAAM,UAAU,QAAG,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9E;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,8CAAWA,OAAM,MAAM,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACtF;AACA,eAAO,8CAAWA,OAAM,MAAM,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvE;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,2DAAc,OAAO,MAAM;AAAA,QACtC;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,2DAAc,OAAO,MAAM;AACtC,YAAI,OAAO,WAAW;AAClB,iBAAO,iEAAe,OAAO,QAAQ;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,4EAAgB,OAAO,OAAO;AACzC,eAAO,sBAAO,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACjE;AAAA,MACA,KAAK;AACD,eAAO,0DAAaA,OAAM,OAAO;AAAA,MACrC,KAAK;AACD,eAAO,6CAAUA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,SAAS,WAAWA,OAAM,MAAM,QAAG,CAAC;AAAA,MACzF,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,gBAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAO,MAAM,QAAK;AAAA,IAClC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAK;AAAA,IAClC,OAAO,EAAE,MAAM,QAAQ,MAAM,QAAK;AAAA,IAClC,KAAK,EAAE,MAAM,QAAQ,MAAM,QAAK;AAAA,EACpC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,2EAA0CA,OAAM,QAAQ,+BAAe,QAAQ;AAAA,QAC1F;AACA,eAAO,gEAA+B,QAAQ,+BAAe,QAAQ;AAAA,MACzE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gEAAoC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAClF,eAAO,wEAAqC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC7E,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,kEAA+BA,OAAM,UAAU,KAAK,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,OAAO,IAAI,OAAO,IAAI;AACpH,eAAO,4DAA4B,GAAG,GAAGA,OAAM,OAAO;AAAA,MAC1D;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,sDAA6BA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,OAAO,IAAI,OAAO,IAAI;AACzG,eAAO,gDAA0B,GAAG,GAAGA,OAAM,OAAO;AAAA,MACxD;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,4HAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,yGAAoC,OAAO,MAAM;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,oFAA4B,OAAO,QAAQ;AACtD,YAAI,OAAO,WAAW;AAClB,iBAAO,+GAAqC,OAAO,OAAO;AAC9D,eAAO,uBAAU,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACpE;AAAA,MACA,KAAK;AACD,eAAO,8GAA0CA,OAAM,OAAO;AAAA,MAClE,KAAK;AACD,eAAO,4CAAsB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC7D,KAAK;AACD,eAAO,mDAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,qCAAkBA,OAAM,MAAM;AAAA,MACzC;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAIE;AACG,IAAM,UAAU,OAAO,WAAW;AAClC,IAAM,SAAS,OAAO,UAAU;AAChC,IAAM,eAAN,MAAmB;AAAA,EACtB,cAAc;AACV,SAAK,OAAO,oBAAI,QAAQ;AACxB,SAAK,SAAS,oBAAI,IAAI;AAAA,EAC1B;AAAA,EACA,IAAI,WAAW,OAAO;AAClB,UAAMC,QAAO,MAAM,CAAC;AACpB,SAAK,KAAK,IAAI,QAAQA,KAAI;AAC1B,QAAIA,SAAQ,OAAOA,UAAS,YAAY,QAAQA,OAAM;AAClD,WAAK,OAAO,IAAIA,MAAK,IAAI,MAAM;AAAA,IACnC;AACA,WAAO;AAAA,EACX;AAAA,EACA,QAAQ;AACJ,SAAK,OAAO,oBAAI,QAAQ;AACxB,SAAK,SAAS,oBAAI,IAAI;AACtB,WAAO;AAAA,EACX;AAAA,EACA,OAAO,QAAQ;AACX,UAAMA,QAAO,KAAK,KAAK,IAAI,MAAM;AACjC,QAAIA,SAAQ,OAAOA,UAAS,YAAY,QAAQA,OAAM;AAClD,WAAK,OAAO,OAAOA,MAAK,EAAE;AAAA,IAC9B;AACA,SAAK,KAAK,OAAO,MAAM;AACvB,WAAO;AAAA,EACX;AAAA,EACA,IAAI,QAAQ;AAGR,UAAMC,KAAI,OAAO,KAAK;AACtB,QAAIA,IAAG;AACH,YAAM,KAAK,EAAE,GAAI,KAAK,IAAIA,EAAC,KAAK,CAAC,EAAG;AACpC,aAAO,GAAG;AACV,YAAM,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,EAAE;AAC5C,aAAO,OAAO,KAAK,CAAC,EAAE,SAAS,IAAI;AAAA,IACvC;AACA,WAAO,KAAK,KAAK,IAAI,MAAM;AAAA,EAC/B;AAAA,EACA,IAAI,QAAQ;AACR,WAAO,KAAK,KAAK,IAAI,MAAM;AAAA,EAC/B;AACJ;AAEO,SAASC,YAAW;AACvB,SAAO,IAAI,aAAa;AAC5B;AAAA,CACCH,MAAK,YAAY,yBAAyBA,IAAG,uBAAuBG,UAAS;AACvE,IAAM,iBAAiB,WAAW;;;;AC7ClC,SAAS,QAAQC,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,eAAeA,QAAO,QAAQ;AAC1C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAASC,QAAOD,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAOO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,WAAWA,QAAO,QAAQ;AACtC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,gBAAgB;AAAA,EACzB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,aAAa;AACjB;AAAA;AAEO,SAAS,aAAaA,QAAO,QAAQ;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,aAAaA,QAAO,QAAQ;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,eAAeA,QAAO,QAAQ;AAC1C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,gBAAgBA,QAAO,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,eAAeA,QAAO,QAAQ;AAC1C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAASE,YAAWF,QAAO,QAAQ;AACtC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAASG,OAAMH,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO;AACxB,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,EACV,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO;AAC5B,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,EACV,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,aAAaA,QAAO,QAAQ;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,IAAI,OAAO,QAAQ;AAC/B,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AACL;AAAA;AAEO,SAAS,KAAK,OAAO,QAAQ;AAChC,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AACL;;AAKO,SAAS,IAAI,OAAO,QAAQ;AAC/B,SAAO,IAAW,qBAAqB;AAAA,IACnC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AACL;AAAA;AAEO,SAAS,KAAK,OAAO,QAAQ;AAChC,SAAO,IAAW,qBAAqB;AAAA,IACnC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AACL;;AAKO,SAAS,UAAU,QAAQ;AAC9B,SAAO,oBAAI,GAAG,MAAM;AACxB;AAAA;AAGO,SAAS,UAAU,QAAQ;AAC9B,SAAO,oBAAI,GAAG,MAAM;AACxB;AAAA;AAGO,SAAS,aAAa,QAAQ;AACjC,SAAO,qBAAK,GAAG,MAAM;AACzB;AAAA;AAGO,SAAS,aAAa,QAAQ;AACjC,SAAO,qBAAK,GAAG,MAAM;AACzB;AAAA;AAEO,SAAS,YAAY,OAAO,QAAQ;AACvC,SAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,SAAS,SAAS,QAAQ;AACtC,SAAO,IAAW,iBAAiB;AAAA,IAC/B,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,SAAS,SAAS,QAAQ;AACtC,SAAO,IAAW,iBAAiB;AAAA,IAC/B,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,MAAM,MAAM,QAAQ;AAChC,SAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,WAAW,SAAS,QAAQ;AACxC,QAAM,KAAK,IAAW,mBAAmB;AAAA,IACrC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AAAA;AAEO,SAAS,WAAW,SAAS,QAAQ;AACxC,SAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,QAAQ,QAAQ,QAAQ;AACpC,SAAO,IAAW,sBAAsB;AAAA,IACpC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,OAAO,SAAS,QAAQ;AACpC,SAAO,IAAW,eAAe;AAAA,IAC7B,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,WAAW,QAAQ;AAC/B,SAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,WAAW,QAAQ;AAC/B,SAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,UAAU,UAAU,QAAQ;AACxC,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,YAAY,QAAQ,QAAQ;AACxC,SAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,UAAU,QAAQ,QAAQ;AACtC,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,UAAU,UAAU,QAAQ,QAAQ;AAChD,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAM,OAAO,QAAQ;AACjC,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,WAAW,IAAI;AAC3B,SAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP;AAAA,EACJ,CAAC;AACL;AAAA;AAGO,SAAS,WAAW,MAAM;AAC7B,SAAO,2BAAW,CAAC,UAAU,MAAM,UAAU,IAAI,CAAC;AACtD;AAAA;AAGO,SAAS,QAAQ;AACpB,SAAO,2BAAW,CAAC,UAAU,MAAM,KAAK,CAAC;AAC7C;AAAA;AAGO,SAAS,eAAe;AAC3B,SAAO,2BAAW,CAAC,UAAU,MAAM,YAAY,CAAC;AACpD;AAAA;AAGO,SAAS,eAAe;AAC3B,SAAO,2BAAW,CAAC,UAAU,MAAM,YAAY,CAAC;AACpD;AAAA;AAGO,SAAS,WAAW;AACvB,SAAO,2BAAW,CAAC,UAAeI,SAAQ,KAAK,CAAC;AACpD;AAAA;AAEO,SAAS,OAAOC,QAAO,SAAS,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA;AAAA;AAAA;AAAA,IAIA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,SAAS,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,SAAS,KAAKA,QAAO,SAAS,QAAQ;AACzC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IACX,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,oBAAoBA,QAAO,eAAe,SAAS,QAAQ;AACvE,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,cAAcA,QAAO,MAAM,OAAO;AAC9C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AAAA;AAOO,SAAS,OAAOA,QAAO,OAAO,eAAe,SAAS;AACzD,QAAM,UAAU,yBAAiC;AACjD,QAAM,SAAS,UAAU,UAAU;AACnC,QAAM,OAAO,UAAU,gBAAgB;AACvC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,SAAS,WAAW,QAAQ;AACvD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,SAAS,WAAW,QAAQ;AACpD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,WAAW,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ,QAAQ;AACzC,QAAM,UAAU,MAAM,QAAQ,MAAM,IAAI,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AAYxF,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AASO,SAAS,YAAYA,QAAO,SAAS,QAAQ;AAChD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,OAAO,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IAC7C,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,WAAWA,QAAO,IAAI;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,WAAW;AAAA,EACf,CAAC;AACL;AAAA;AAEO,SAAS,UAAUA,QAAO,WAAW;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,UAAUA,QAAO,WAAW;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,WAAW,cAAc;AACrD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,IAAI,eAAe;AACf,aAAO,OAAO,iBAAiB,aAAa,aAAa,IAAS,aAAa,YAAY;AAAA,IAC/F;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,aAAaA,QAAO,WAAW,QAAQ;AACnD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,WAAW;AACvC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,WAAW,YAAY;AACjD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,YAAa,OAAO,eAAe,aAAa,aAAa,MAAM;AAAA,EACvE,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,KAAK,KAAK;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,UAAUA,QAAO,WAAW;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,iBAAiBA,QAAO,OAAO,QAAQ;AACnD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,WAAW;AACvC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,IAAI,SAAS;AACxC,QAAM,OAAY,gBAAgB,OAAO;AACzC,OAAK,UAAU,KAAK,QAAQ;AAC5B,QAAM,SAAS,IAAIA,OAAM;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,GAAG;AAAA,EACP,CAAC;AACD,SAAO;AACX;AAAA;AAGO,SAAS,QAAQA,QAAO,IAAI,SAAS;AACxC,QAAM,SAAS,IAAIA,OAAM;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,GAAQ,gBAAgB,OAAO;AAAA,EACnC,CAAC;AACD,SAAO;AACX;AAAA;AAEO,SAAS,aAAa,IAAI,QAAQ;AACrC,QAAM,KAAK,uBAAO,CAAC,YAAY;AAC3B,YAAQ,WAAW,CAACC,WAAU;AAC1B,UAAI,OAAOA,WAAU,UAAU;AAC3B,gBAAQ,OAAO,KAAU,MAAMA,QAAO,QAAQ,OAAO,GAAG,KAAK,GAAG,CAAC;AAAA,MACrE,OACK;AAED,cAAM,SAASA;AACf,YAAI,OAAO;AACP,iBAAO,WAAW;AACtB,eAAO,SAAS,OAAO,OAAO;AAC9B,eAAO,UAAU,OAAO,QAAQ,QAAQ;AACxC,eAAO,SAAS,OAAO,OAAO;AAC9B,eAAO,aAAa,OAAO,WAAW,CAAC,GAAG,KAAK,IAAI;AACnD,gBAAQ,OAAO,KAAU,MAAM,MAAM,CAAC;AAAA,MAC1C;AAAA,IACJ;AACA,WAAO,GAAG,QAAQ,OAAO,OAAO;AAAA,EACpC,GAAG,MAAM;AACT,SAAO;AACX;AAAA;AAEO,SAAS,OAAO,IAAI,QAAQ;AAC/B,QAAM,KAAK,IAAW,UAAU;AAAA,IAC5B,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACD,KAAG,KAAK,QAAQ;AAChB,SAAO;AACX;AAAA;AAEO,SAAS,SAAS,aAAa;AAClC,QAAM,KAAK,IAAW,UAAU,EAAE,OAAO,WAAW,CAAC;AACrD,KAAG,KAAK,WAAW;AAAA,IACf,CAAC,SAAS;AACN,YAAM,WAAsB,eAAe,IAAI,IAAI,KAAK,CAAC;AACzD,MAAW,eAAe,IAAI,MAAM,EAAE,GAAG,UAAU,YAAY,CAAC;AAAA,IACpE;AAAA,EACJ;AACA,KAAG,KAAK,QAAQ,MAAM;AAAA,EAAE;AACxB,SAAO;AACX;AAAA;AAEO,SAAS,KAAK,UAAU;AAC3B,QAAM,KAAK,IAAW,UAAU,EAAE,OAAO,OAAO,CAAC;AACjD,KAAG,KAAK,WAAW;AAAA,IACf,CAAC,SAAS;AACN,YAAM,WAAsB,eAAe,IAAI,IAAI,KAAK,CAAC;AACzD,MAAW,eAAe,IAAI,MAAM,EAAE,GAAG,UAAU,GAAG,SAAS,CAAC;AAAA,IACpE;AAAA,EACJ;AACA,KAAG,KAAK,QAAQ,MAAM;AAAA,EAAE;AACxB,SAAO;AACX;AAAA;AAEO,SAAS,YAAY,SAAS,SAAS;AAC1C,QAAM,SAAc,gBAAgB,OAAO;AAC3C,MAAI,cAAc,OAAO,UAAU,CAAC,QAAQ,KAAK,OAAO,MAAM,KAAK,SAAS;AAC5E,MAAI,aAAa,OAAO,SAAS,CAAC,SAAS,KAAK,MAAM,OAAO,KAAK,UAAU;AAC5E,MAAI,OAAO,SAAS,aAAa;AAC7B,kBAAc,YAAY,IAAI,CAAC,MAAO,OAAO,MAAM,WAAW,EAAE,YAAY,IAAI,CAAE;AAClF,iBAAa,WAAW,IAAI,CAAC,MAAO,OAAO,MAAM,WAAW,EAAE,YAAY,IAAI,CAAE;AAAA,EACpF;AACA,QAAM,YAAY,IAAI,IAAI,WAAW;AACrC,QAAM,WAAW,IAAI,IAAI,UAAU;AACnC,QAAM,SAAS,QAAQ,SAAiB;AACxC,QAAM,WAAW,QAAQ,WAAmB;AAC5C,QAAM,UAAU,QAAQ,UAAkB;AAC1C,QAAM,eAAe,IAAI,QAAQ,EAAE,MAAM,UAAU,OAAO,OAAO,MAAM,CAAC;AACxE,QAAM,gBAAgB,IAAI,SAAS,EAAE,MAAM,WAAW,OAAO,OAAO,MAAM,CAAC;AAC3E,QAAMC,SAAQ,IAAI,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,WAAY,CAAC,OAAO,YAAY;AAC5B,UAAI,OAAO;AACX,UAAI,OAAO,SAAS;AAChB,eAAO,KAAK,YAAY;AAC5B,UAAI,UAAU,IAAI,IAAI,GAAG;AACrB,eAAO;AAAA,MACX,WACS,SAAS,IAAI,IAAI,GAAG;AACzB,eAAO;AAAA,MACX,OACK;AACD,gBAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,UAAU;AAAA,UACV,QAAQ,CAAC,GAAG,WAAW,GAAG,QAAQ;AAAA,UAClC,OAAO,QAAQ;AAAA,UACf,MAAMA;AAAA,UACN,UAAU;AAAA,QACd,CAAC;AACD,eAAO,CAAC;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,kBAAmB,CAAC,OAAO,aAAa;AACpC,UAAI,UAAU,MAAM;AAChB,eAAO,YAAY,CAAC,KAAK;AAAA,MAC7B,OACK;AACD,eAAO,WAAW,CAAC,KAAK;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,OAAO,OAAO;AAAA,EAClB,CAAC;AACD,SAAOA;AACX;AAAA;AAEO,SAAS,cAAcF,QAAO,QAAQ,WAAW,UAAU,CAAC,GAAG;AAClE,QAAM,SAAc,gBAAgB,OAAO;AAC3C,QAAM,MAAM;AAAA,IACR,GAAQ,gBAAgB,OAAO;AAAA,IAC/B,OAAO;AAAA,IACP,MAAM;AAAA,IACN;AAAA,IACA,IAAI,OAAO,cAAc,aAAa,YAAY,CAAC,QAAQ,UAAU,KAAK,GAAG;AAAA,IAC7E,GAAG;AAAA,EACP;AACA,MAAI,qBAAqB,QAAQ;AAC7B,QAAI,UAAU;AAAA,EAClB;AACA,QAAM,OAAO,IAAIA,OAAM,GAAG;AAC1B,SAAO;AACX;;;ACrjCO,SAAS,kBAAkB,QAAQ;AAEtC,MAAI,SAAS,QAAQ,UAAU;AAC/B,MAAI,WAAW;AACX,aAAS;AACb,MAAI,WAAW;AACX,aAAS;AACb,SAAO;AAAA,IACH,YAAY,OAAO,cAAc,CAAC;AAAA,IAClC,kBAAkB,QAAQ,YAAY;AAAA,IACtC;AAAA,IACA,iBAAiB,QAAQ,mBAAmB;AAAA,IAC5C,UAAU,QAAQ,aAAa,MAAM;AAAA,IAAE;AAAA,IACvC,IAAI,QAAQ,MAAM;AAAA,IAClB,SAAS;AAAA,IACT,MAAM,oBAAI,IAAI;AAAA,IACd,QAAQ,QAAQ,UAAU;AAAA,IAC1B,QAAQ,QAAQ,UAAU;AAAA,IAC1B,UAAU,QAAQ,YAAY;AAAA,EAClC;AACJ;AACO,SAASG,SAAQ,QAAQ,KAAK,UAAU,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG;AACzE,MAAIC;AACJ,QAAM,MAAM,OAAO,KAAK;AAExB,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,MAAI,MAAM;AACN,SAAK;AAEL,UAAM,UAAU,QAAQ,WAAW,SAAS,MAAM;AAClD,QAAI,SAAS;AACT,WAAK,QAAQ,QAAQ;AAAA,IACzB;AACA,WAAO,KAAK;AAAA,EAChB;AAEA,QAAM,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,GAAG,OAAO,QAAW,MAAM,QAAQ,KAAK;AAC5E,MAAI,KAAK,IAAI,QAAQ,MAAM;AAE3B,QAAM,iBAAiB,OAAO,KAAK,eAAe;AAClD,MAAI,gBAAgB;AAChB,WAAO,SAAS;AAAA,EACpB,OACK;AACD,UAAM,SAAS;AAAA,MACX,GAAG;AAAA,MACH,YAAY,CAAC,GAAG,QAAQ,YAAY,MAAM;AAAA,MAC1C,MAAM,QAAQ;AAAA,IAClB;AACA,QAAI,OAAO,KAAK,mBAAmB;AAC/B,aAAO,KAAK,kBAAkB,KAAK,OAAO,QAAQ,MAAM;AAAA,IAC5D,OACK;AACD,YAAM,QAAQ,OAAO;AACrB,YAAM,YAAY,IAAI,WAAW,IAAI,IAAI;AACzC,UAAI,CAAC,WAAW;AACZ,cAAM,IAAI,MAAM,uDAAuD,IAAI,IAAI,EAAE;AAAA,MACrF;AACA,gBAAU,QAAQ,KAAK,OAAO,MAAM;AAAA,IACxC;AACA,UAAM,SAAS,OAAO,KAAK;AAC3B,QAAI,QAAQ;AAER,UAAI,CAAC,OAAO;AACR,eAAO,MAAM;AACjB,MAAAD,SAAQ,QAAQ,KAAK,MAAM;AAC3B,UAAI,KAAK,IAAI,MAAM,EAAE,WAAW;AAAA,IACpC;AAAA,EACJ;AAEA,QAAME,QAAO,IAAI,iBAAiB,IAAI,MAAM;AAC5C,MAAIA;AACA,WAAO,OAAO,OAAO,QAAQA,KAAI;AACrC,MAAI,IAAI,OAAO,WAAW,eAAe,MAAM,GAAG;AAE9C,WAAO,OAAO,OAAO;AACrB,WAAO,OAAO,OAAO;AAAA,EACzB;AAEA,MAAI,IAAI,OAAO,WAAW,eAAe,OAAO;AAC5C,KAACD,MAAK,OAAO,QAAQ,YAAYA,IAAG,UAAU,OAAO,OAAO;AAChE,SAAO,OAAO,OAAO;AAErB,QAAM,UAAU,IAAI,KAAK,IAAI,MAAM;AACnC,SAAO,QAAQ;AACnB;AACO,SAAS,YAAY,KAAK,QAE/B;AAEE,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,2CAA2C;AAE/D,QAAM,aAAa,oBAAI,IAAI;AAC3B,aAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AACpC,UAAM,KAAK,IAAI,iBAAiB,IAAI,MAAM,CAAC,CAAC,GAAG;AAC/C,QAAI,IAAI;AACJ,YAAM,WAAW,WAAW,IAAI,EAAE;AAClC,UAAI,YAAY,aAAa,MAAM,CAAC,GAAG;AACnC,cAAM,IAAI,MAAM,wBAAwB,EAAE,mHAAmH;AAAA,MACjK;AACA,iBAAW,IAAI,IAAI,MAAM,CAAC,CAAC;AAAA,IAC/B;AAAA,EACJ;AAGA,QAAM,UAAU,CAAC,UAAU;AAKvB,UAAM,cAAc,IAAI,WAAW,kBAAkB,UAAU;AAC/D,QAAI,IAAI,UAAU;AACd,YAAM,aAAa,IAAI,SAAS,SAAS,IAAI,MAAM,CAAC,CAAC,GAAG;AAExD,YAAM,eAAe,IAAI,SAAS,QAAQ,CAACE,QAAOA;AAClD,UAAI,YAAY;AACZ,eAAO,EAAE,KAAK,aAAa,UAAU,EAAE;AAAA,MAC3C;AAEA,YAAM,KAAK,MAAM,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,OAAO,MAAM,SAAS,IAAI,SAAS;AACzE,YAAM,CAAC,EAAE,QAAQ;AACjB,aAAO,EAAE,OAAO,IAAI,KAAK,GAAG,aAAa,UAAU,CAAC,KAAK,WAAW,IAAI,EAAE,GAAG;AAAA,IACjF;AACA,QAAI,MAAM,CAAC,MAAM,MAAM;AACnB,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAEA,UAAM,YAAY;AAClB,UAAM,eAAe,GAAG,SAAS,IAAI,WAAW;AAChD,UAAM,QAAQ,MAAM,CAAC,EAAE,OAAO,MAAM,WAAW,IAAI,SAAS;AAC5D,WAAO,EAAE,OAAO,KAAK,eAAe,MAAM;AAAA,EAC9C;AAGA,QAAM,eAAe,CAAC,UAAU;AAE5B,QAAI,MAAM,CAAC,EAAE,OAAO,MAAM;AACtB;AAAA,IACJ;AACA,UAAM,OAAO,MAAM,CAAC;AACpB,UAAM,EAAE,KAAK,MAAM,IAAI,QAAQ,KAAK;AACpC,SAAK,MAAM,EAAE,GAAG,KAAK,OAAO;AAG5B,QAAI;AACA,WAAK,QAAQ;AAEjB,UAAMC,UAAS,KAAK;AACpB,eAAW,OAAOA,SAAQ;AACtB,aAAOA,QAAO,GAAG;AAAA,IACrB;AACA,IAAAA,QAAO,OAAO;AAAA,EAClB;AAGA,MAAI,IAAI,WAAW,SAAS;AACxB,eAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AACpC,YAAM,OAAO,MAAM,CAAC;AACpB,UAAI,KAAK,OAAO;AACZ,cAAM,IAAI,MAAM,qBACP,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA;AAAA,iFACwD;AAAA,MAC1F;AAAA,IACJ;AAAA,EACJ;AAEA,aAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AACpC,UAAM,OAAO,MAAM,CAAC;AAEpB,QAAI,WAAW,MAAM,CAAC,GAAG;AACrB,mBAAa,KAAK;AAClB;AAAA,IACJ;AAEA,QAAI,IAAI,UAAU;AACd,YAAM,MAAM,IAAI,SAAS,SAAS,IAAI,MAAM,CAAC,CAAC,GAAG;AACjD,UAAI,WAAW,MAAM,CAAC,KAAK,KAAK;AAC5B,qBAAa,KAAK;AAClB;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,KAAK,IAAI,iBAAiB,IAAI,MAAM,CAAC,CAAC,GAAG;AAC/C,QAAI,IAAI;AACJ,mBAAa,KAAK;AAClB;AAAA,IACJ;AAEA,QAAI,KAAK,OAAO;AAEZ,mBAAa,KAAK;AAClB;AAAA,IACJ;AAEA,QAAI,KAAK,QAAQ,GAAG;AAChB,UAAI,IAAI,WAAW,OAAO;AACtB,qBAAa,KAAK;AAElB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AACO,SAAS,SAAS,KAAK,QAAQ;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,2CAA2C;AAE/D,QAAM,aAAa,CAAC,cAAc;AAC9B,UAAM,OAAO,IAAI,KAAK,IAAI,SAAS;AAEnC,QAAI,KAAK,QAAQ;AACb;AACJ,UAAMA,UAAS,KAAK,OAAO,KAAK;AAChC,UAAM,UAAU,EAAE,GAAGA,QAAO;AAC5B,UAAM,MAAM,KAAK;AACjB,SAAK,MAAM;AACX,QAAI,KAAK;AACL,iBAAW,GAAG;AACd,YAAM,UAAU,IAAI,KAAK,IAAI,GAAG;AAChC,YAAM,YAAY,QAAQ;AAE1B,UAAI,UAAU,SAAS,IAAI,WAAW,cAAc,IAAI,WAAW,cAAc,IAAI,WAAW,gBAAgB;AAE5G,QAAAA,QAAO,QAAQA,QAAO,SAAS,CAAC;AAChC,QAAAA,QAAO,MAAM,KAAK,SAAS;AAAA,MAC/B,OACK;AACD,eAAO,OAAOA,SAAQ,SAAS;AAAA,MACnC;AAEA,aAAO,OAAOA,SAAQ,OAAO;AAC7B,YAAM,cAAc,UAAU,KAAK,WAAW;AAE9C,UAAI,aAAa;AACb,mBAAW,OAAOA,SAAQ;AACtB,cAAI,QAAQ,UAAU,QAAQ;AAC1B;AACJ,cAAI,EAAE,OAAO,UAAU;AACnB,mBAAOA,QAAO,GAAG;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,UAAU,QAAQ,QAAQ,KAAK;AAC/B,mBAAW,OAAOA,SAAQ;AACtB,cAAI,QAAQ,UAAU,QAAQ;AAC1B;AACJ,cAAI,OAAO,QAAQ,OAAO,KAAK,UAAUA,QAAO,GAAG,CAAC,MAAM,KAAK,UAAU,QAAQ,IAAI,GAAG,CAAC,GAAG;AACxF,mBAAOA,QAAO,GAAG;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAIA,UAAM,SAAS,UAAU,KAAK;AAC9B,QAAI,UAAU,WAAW,KAAK;AAE1B,iBAAW,MAAM;AACjB,YAAM,aAAa,IAAI,KAAK,IAAI,MAAM;AACtC,UAAI,YAAY,OAAO,MAAM;AACzB,QAAAA,QAAO,OAAO,WAAW,OAAO;AAEhC,YAAI,WAAW,KAAK;AAChB,qBAAW,OAAOA,SAAQ;AACtB,gBAAI,QAAQ,UAAU,QAAQ;AAC1B;AACJ,gBAAI,OAAO,WAAW,OAAO,KAAK,UAAUA,QAAO,GAAG,CAAC,MAAM,KAAK,UAAU,WAAW,IAAI,GAAG,CAAC,GAAG;AAC9F,qBAAOA,QAAO,GAAG;AAAA,YACrB;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,SAAS;AAAA,MACT;AAAA,MACA,YAAYA;AAAA,MACZ,MAAM,KAAK,QAAQ,CAAC;AAAA,IACxB,CAAC;AAAA,EACL;AACA,aAAW,SAAS,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,EAAE,QAAQ,GAAG;AACnD,eAAW,MAAM,CAAC,CAAC;AAAA,EACvB;AACA,QAAM,SAAS,CAAC;AAChB,MAAI,IAAI,WAAW,iBAAiB;AAChC,WAAO,UAAU;AAAA,EACrB,WACS,IAAI,WAAW,YAAY;AAChC,WAAO,UAAU;AAAA,EACrB,WACS,IAAI,WAAW,YAAY;AAChC,WAAO,UAAU;AAAA,EACrB,WACS,IAAI,WAAW,eAAe;AAAA,EAEvC,OACK;AAAA,EAEL;AACA,MAAI,IAAI,UAAU,KAAK;AACnB,UAAM,KAAK,IAAI,SAAS,SAAS,IAAI,MAAM,GAAG;AAC9C,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,oCAAoC;AACxD,WAAO,MAAM,IAAI,SAAS,IAAI,EAAE;AAAA,EACpC;AACA,SAAO,OAAO,QAAQ,KAAK,OAAO,KAAK,MAAM;AAK7C,QAAM,aAAa,IAAI,iBAAiB,IAAI,MAAM,GAAG;AACrD,MAAI,eAAe,UAAa,OAAO,OAAO;AAC1C,WAAO,OAAO;AAElB,QAAM,OAAO,IAAI,UAAU,QAAQ,CAAC;AACpC,aAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AACpC,UAAM,OAAO,MAAM,CAAC;AACpB,QAAI,KAAK,OAAO,KAAK,OAAO;AACxB,UAAI,KAAK,IAAI,OAAO,KAAK;AACrB,eAAO,KAAK,IAAI;AACpB,WAAK,KAAK,KAAK,IAAI,KAAK;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,IAAI,UAAU;AAAA,EAClB,OACK;AACD,QAAI,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AAC9B,UAAI,IAAI,WAAW,iBAAiB;AAChC,eAAO,QAAQ;AAAA,MACnB,OACK;AACD,eAAO,cAAc;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AACA,MAAI;AAIA,UAAM,YAAY,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AACnD,WAAO,eAAe,WAAW,aAAa;AAAA,MAC1C,OAAO;AAAA,QACH,GAAG,OAAO,WAAW;AAAA,QACrB,YAAY;AAAA,UACR,OAAO,+BAA+B,QAAQ,SAAS,IAAI,UAAU;AAAA,UACrE,QAAQ,+BAA+B,QAAQ,UAAU,IAAI,UAAU;AAAA,QAC3E;AAAA,MACJ;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,IACd,CAAC;AACD,WAAO;AAAA,EACX,SACO,MAAM;AACT,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACtD;AACJ;AACA,SAAS,eAAe,SAAS,MAAM;AACnC,QAAM,MAAM,QAAQ,EAAE,MAAM,oBAAI,IAAI,EAAE;AACtC,MAAI,IAAI,KAAK,IAAI,OAAO;AACpB,WAAO;AACX,MAAI,KAAK,IAAI,OAAO;AACpB,QAAM,MAAM,QAAQ,KAAK;AACzB,MAAI,IAAI,SAAS;AACb,WAAO;AACX,MAAI,IAAI,SAAS;AACb,WAAO,eAAe,IAAI,SAAS,GAAG;AAC1C,MAAI,IAAI,SAAS;AACb,WAAO,eAAe,IAAI,WAAW,GAAG;AAC5C,MAAI,IAAI,SAAS;AACb,WAAO,eAAe,IAAI,OAAO,GAAG,GAAG;AAC3C,MAAI,IAAI,SAAS,aACb,IAAI,SAAS,cACb,IAAI,SAAS,iBACb,IAAI,SAAS,cACb,IAAI,SAAS,cACb,IAAI,SAAS,aACb,IAAI,SAAS,YAAY;AACzB,WAAO,eAAe,IAAI,WAAW,GAAG;AAAA,EAC5C;AACA,MAAI,IAAI,SAAS,gBAAgB;AAC7B,WAAO,eAAe,IAAI,MAAM,GAAG,KAAK,eAAe,IAAI,OAAO,GAAG;AAAA,EACzE;AACA,MAAI,IAAI,SAAS,YAAY,IAAI,SAAS,OAAO;AAC7C,WAAO,eAAe,IAAI,SAAS,GAAG,KAAK,eAAe,IAAI,WAAW,GAAG;AAAA,EAChF;AACA,MAAI,IAAI,SAAS,QAAQ;AACrB,QAAI,QAAQ,KAAK,OAAO,IAAI,WAAW;AACnC,aAAO;AACX,WAAO,eAAe,IAAI,IAAI,GAAG,KAAK,eAAe,IAAI,KAAK,GAAG;AAAA,EACrE;AACA,MAAI,IAAI,SAAS,UAAU;AACvB,eAAW,OAAO,IAAI,OAAO;AACzB,UAAI,eAAe,IAAI,MAAM,GAAG,GAAG,GAAG;AAClC,eAAO;AAAA,IACf;AACA,WAAO;AAAA,EACX;AACA,MAAI,IAAI,SAAS,SAAS;AACtB,eAAW,UAAU,IAAI,SAAS;AAC9B,UAAI,eAAe,QAAQ,GAAG;AAC1B,eAAO;AAAA,IACf;AACA,WAAO;AAAA,EACX;AACA,MAAI,IAAI,SAAS,SAAS;AACtB,eAAW,QAAQ,IAAI,OAAO;AAC1B,UAAI,eAAe,MAAM,GAAG;AACxB,eAAO;AAAA,IACf;AACA,QAAI,IAAI,QAAQ,eAAe,IAAI,MAAM,GAAG;AACxC,aAAO;AACX,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAKO,IAAM,2BAA2B,CAAC,QAAQ,aAAa,CAAC,MAAM,CAAC,WAAW;AAC7E,QAAM,MAAM,kBAAkB,EAAE,GAAG,QAAQ,WAAW,CAAC;AACvD,EAAAJ,SAAQ,QAAQ,GAAG;AACnB,cAAY,KAAK,MAAM;AACvB,SAAO,SAAS,KAAK,MAAM;AAC/B;AACO,IAAM,iCAAiC,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW;AACvF,QAAM,EAAE,gBAAgB,OAAO,IAAI,UAAU,CAAC;AAC9C,QAAM,MAAM,kBAAkB,EAAE,GAAI,kBAAkB,CAAC,GAAI,QAAQ,IAAI,WAAW,CAAC;AACnF,EAAAA,SAAQ,QAAQ,GAAG;AACnB,cAAY,KAAK,MAAM;AACvB,SAAO,SAAS,KAAK,MAAM;AAC/B;;;AC7bA,IAAM,YAAY;AAAA,EACd,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU;AAAA,EACV,aAAa;AAAA,EACb,OAAO;AAAA;AACX;AAEO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,YAAY;AAC5D,QAAMK,QAAO;AACb,EAAAA,MAAK,OAAO;AACZ,QAAM,EAAE,SAAS,SAAS,QAAQ,UAAU,gBAAgB,IAAI,OAAO,KAClE;AACL,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,YAAY;AACrB,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,YAAY;AAErB,MAAI,QAAQ;AACR,IAAAA,MAAK,SAAS,UAAU,MAAM,KAAK;AACnC,QAAIA,MAAK,WAAW;AAChB,aAAOA,MAAK;AAGhB,QAAI,WAAW,QAAQ;AACnB,aAAOA,MAAK;AAAA,IAChB;AAAA,EACJ;AACA,MAAI;AACA,IAAAA,MAAK,kBAAkB;AAC3B,MAAI,YAAY,SAAS,OAAO,GAAG;AAC/B,UAAM,UAAU,CAAC,GAAG,QAAQ;AAC5B,QAAI,QAAQ,WAAW;AACnB,MAAAA,MAAK,UAAU,QAAQ,CAAC,EAAE;AAAA,aACrB,QAAQ,SAAS,GAAG;AACzB,MAAAA,MAAK,QAAQ;AAAA,QACT,GAAG,QAAQ,IAAI,CAAC,WAAW;AAAA,UACvB,GAAI,IAAI,WAAW,cAAc,IAAI,WAAW,cAAc,IAAI,WAAW,gBACvE,EAAE,MAAM,SAAS,IACjB,CAAC;AAAA,UACP,SAAS,MAAM;AAAA,QACnB,EAAE;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AACJ;AACO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,YAAY;AAC5D,QAAMA,QAAO;AACb,QAAM,EAAE,SAAS,SAAS,QAAQ,YAAY,kBAAkB,iBAAiB,IAAI,OAAO,KAAK;AACjG,MAAI,OAAO,WAAW,YAAY,OAAO,SAAS,KAAK;AACnD,IAAAA,MAAK,OAAO;AAAA;AAEZ,IAAAA,MAAK,OAAO;AAEhB,QAAM,QAAQ,OAAO,qBAAqB,YAAY,qBAAqB,WAAW,OAAO;AAC7F,QAAM,QAAQ,OAAO,qBAAqB,YAAY,qBAAqB,WAAW,OAAO;AAC7F,QAAM,SAAS,IAAI,WAAW,cAAc,IAAI,WAAW;AAC3D,MAAI,OAAO;AACP,QAAI,QAAQ;AACR,MAAAA,MAAK,UAAU;AACf,MAAAA,MAAK,mBAAmB;AAAA,IAC5B,OACK;AACD,MAAAA,MAAK,mBAAmB;AAAA,IAC5B;AAAA,EACJ,WACS,OAAO,YAAY,UAAU;AAClC,IAAAA,MAAK,UAAU;AAAA,EACnB;AACA,MAAI,OAAO;AACP,QAAI,QAAQ;AACR,MAAAA,MAAK,UAAU;AACf,MAAAA,MAAK,mBAAmB;AAAA,IAC5B,OACK;AACD,MAAAA,MAAK,mBAAmB;AAAA,IAC5B;AAAA,EACJ,WACS,OAAO,YAAY,UAAU;AAClC,IAAAA,MAAK,UAAU;AAAA,EACnB;AACA,MAAI,OAAO,eAAe;AACtB,IAAAA,MAAK,aAAa;AAC1B;AACO,IAAM,mBAAmB,CAAC,SAAS,MAAMA,OAAM,YAAY;AAC9D,EAAAA,MAAK,OAAO;AAChB;AACO,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC7D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,6CAA6C;AAAA,EACjE;AACJ;AACO,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC7D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAClE;AACJ;AACO,IAAM,gBAAgB,CAAC,SAAS,KAAKA,OAAM,YAAY;AAC1D,MAAI,IAAI,WAAW,eAAe;AAC9B,IAAAA,MAAK,OAAO;AACZ,IAAAA,MAAK,WAAW;AAChB,IAAAA,MAAK,OAAO,CAAC,IAAI;AAAA,EACrB,OACK;AACD,IAAAA,MAAK,OAAO;AAAA,EAChB;AACJ;AACO,IAAM,qBAAqB,CAAC,SAAS,KAAK,OAAO,YAAY;AAChE,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,gDAAgD;AAAA,EACpE;AACJ;AACO,IAAM,gBAAgB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC3D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC/D;AACJ;AACO,IAAM,iBAAiB,CAAC,SAAS,MAAMA,OAAM,YAAY;AAC5D,EAAAA,MAAK,MAAM,CAAC;AAChB;AACO,IAAM,eAAe,CAAC,SAAS,MAAM,OAAO,YAAY;AAE/D;AACO,IAAM,mBAAmB,CAAC,SAAS,MAAM,OAAO,YAAY;AAEnE;AACO,IAAM,gBAAgB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC3D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC/D;AACJ;AACO,IAAM,gBAAgB,CAAC,QAAQ,MAAMA,OAAM,YAAY;AAC1D,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,SAAS,cAAc,IAAI,OAAO;AAExC,MAAI,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AACzC,IAAAA,MAAK,OAAO;AAChB,MAAI,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AACzC,IAAAA,MAAK,OAAO;AAChB,EAAAA,MAAK,OAAO;AAChB;AACO,IAAM,mBAAmB,CAAC,QAAQ,KAAKA,OAAM,YAAY;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,OAAO,CAAC;AACd,aAAW,OAAO,IAAI,QAAQ;AAC1B,QAAI,QAAQ,QAAW;AACnB,UAAI,IAAI,oBAAoB,SAAS;AACjC,cAAM,IAAI,MAAM,0DAA0D;AAAA,MAC9E,OACK;AAAA,MAEL;AAAA,IACJ,WACS,OAAO,QAAQ,UAAU;AAC9B,UAAI,IAAI,oBAAoB,SAAS;AACjC,cAAM,IAAI,MAAM,sDAAsD;AAAA,MAC1E,OACK;AACD,aAAK,KAAK,OAAO,GAAG,CAAC;AAAA,MACzB;AAAA,IACJ,OACK;AACD,WAAK,KAAK,GAAG;AAAA,IACjB;AAAA,EACJ;AACA,MAAI,KAAK,WAAW,GAAG;AAAA,EAEvB,WACS,KAAK,WAAW,GAAG;AACxB,UAAM,MAAM,KAAK,CAAC;AAClB,IAAAA,MAAK,OAAO,QAAQ,OAAO,SAAS,OAAO;AAC3C,QAAI,IAAI,WAAW,cAAc,IAAI,WAAW,eAAe;AAC3D,MAAAA,MAAK,OAAO,CAAC,GAAG;AAAA,IACpB,OACK;AACD,MAAAA,MAAK,QAAQ;AAAA,IACjB;AAAA,EACJ,OACK;AACD,QAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AACvC,MAAAA,MAAK,OAAO;AAChB,QAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AACvC,MAAAA,MAAK,OAAO;AAChB,QAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,SAAS;AACxC,MAAAA,MAAK,OAAO;AAChB,QAAI,KAAK,MAAM,CAAC,MAAM,MAAM,IAAI;AAC5B,MAAAA,MAAK,OAAO;AAChB,IAAAA,MAAK,OAAO;AAAA,EAChB;AACJ;AACO,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAC1D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AACJ;AACO,IAAM,2BAA2B,CAAC,QAAQ,MAAMA,OAAM,YAAY;AACrE,QAAM,QAAQA;AACd,QAAM,UAAU,OAAO,KAAK;AAC5B,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,uCAAuC;AAC3D,QAAM,OAAO;AACb,QAAM,UAAU,QAAQ;AAC5B;AACO,IAAM,gBAAgB,CAAC,QAAQ,MAAMA,OAAM,YAAY;AAC1D,QAAM,QAAQA;AACd,QAAMC,QAAO;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,iBAAiB;AAAA,EACrB;AACA,QAAM,EAAE,SAAS,SAAS,KAAK,IAAI,OAAO,KAAK;AAC/C,MAAI,YAAY;AACZ,IAAAA,MAAK,YAAY;AACrB,MAAI,YAAY;AACZ,IAAAA,MAAK,YAAY;AACrB,MAAI,MAAM;AACN,QAAI,KAAK,WAAW,GAAG;AACnB,MAAAA,MAAK,mBAAmB,KAAK,CAAC;AAC9B,aAAO,OAAO,OAAOA,KAAI;AAAA,IAC7B,OACK;AACD,aAAO,OAAO,OAAOA,KAAI;AACzB,YAAM,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE;AAAA,IAC3D;AAAA,EACJ,OACK;AACD,WAAO,OAAO,OAAOA,KAAI;AAAA,EAC7B;AACJ;AACO,IAAM,mBAAmB,CAAC,SAAS,MAAMD,OAAM,YAAY;AAC9D,EAAAA,MAAK,OAAO;AAChB;AACO,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC7D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACvE;AACJ;AACO,IAAM,oBAAoB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC/D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACzE;AACJ;AACO,IAAM,qBAAqB,CAAC,SAAS,KAAK,OAAO,YAAY;AAChE,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACrE;AACJ;AACO,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAC1D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AACJ;AACO,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAC1D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AACJ;AAEO,IAAM,iBAAiB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC1D,QAAMA,QAAO;AACb,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,EAAE,SAAS,QAAQ,IAAI,OAAO,KAAK;AACzC,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,WAAW;AACpB,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,WAAW;AACpB,EAAAA,MAAK,OAAO;AACZ,EAAAA,MAAK,QAAQE,SAAQ,IAAI,SAAS,KAAK;AAAA,IACnC,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,OAAO;AAAA,EAClC,CAAC;AACL;AACO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC3D,QAAMF,QAAO;AACb,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAA,MAAK,OAAO;AACZ,EAAAA,MAAK,aAAa,CAAC;AACnB,QAAM,QAAQ,IAAI;AAClB,aAAW,OAAO,OAAO;AACrB,IAAAA,MAAK,WAAW,GAAG,IAAIE,SAAQ,MAAM,GAAG,GAAG,KAAK;AAAA,MAC5C,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,cAAc,GAAG;AAAA,IAC5C,CAAC;AAAA,EACL;AAEA,QAAM,UAAU,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AAC1C,QAAM,eAAe,IAAI,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,QAAQ;AACtD,UAAM,IAAI,IAAI,MAAM,GAAG,EAAE;AACzB,QAAI,IAAI,OAAO,SAAS;AACpB,aAAO,EAAE,UAAU;AAAA,IACvB,OACK;AACD,aAAO,EAAE,WAAW;AAAA,IACxB;AAAA,EACJ,CAAC,CAAC;AACF,MAAI,aAAa,OAAO,GAAG;AACvB,IAAAF,MAAK,WAAW,MAAM,KAAK,YAAY;AAAA,EAC3C;AAEA,MAAI,IAAI,UAAU,KAAK,IAAI,SAAS,SAAS;AAEzC,IAAAA,MAAK,uBAAuB;AAAA,EAChC,WACS,CAAC,IAAI,UAAU;AAEpB,QAAI,IAAI,OAAO;AACX,MAAAA,MAAK,uBAAuB;AAAA,EACpC,WACS,IAAI,UAAU;AACnB,IAAAA,MAAK,uBAAuBE,SAAQ,IAAI,UAAU,KAAK;AAAA,MACnD,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,sBAAsB;AAAA,IACjD,CAAC;AAAA,EACL;AACJ;AACO,IAAM,iBAAiB,CAAC,QAAQ,KAAKF,OAAM,WAAW;AACzD,QAAM,MAAM,OAAO,KAAK;AAGxB,QAAM,cAAc,IAAI,cAAc;AACtC,QAAM,UAAU,IAAI,QAAQ,IAAI,CAAC,GAAG,MAAME,SAAQ,GAAG,KAAK;AAAA,IACtD,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,cAAc,UAAU,SAAS,CAAC;AAAA,EAC7D,CAAC,CAAC;AACF,MAAI,aAAa;AACb,IAAAF,MAAK,QAAQ;AAAA,EACjB,OACK;AACD,IAAAA,MAAK,QAAQ;AAAA,EACjB;AACJ;AACO,IAAM,wBAAwB,CAAC,QAAQ,KAAKA,OAAM,WAAW;AAChE,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,IAAIE,SAAQ,IAAI,MAAM,KAAK;AAAA,IAC7B,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,SAAS,CAAC;AAAA,EACrC,CAAC;AACD,QAAM,IAAIA,SAAQ,IAAI,OAAO,KAAK;AAAA,IAC9B,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,SAAS,CAAC;AAAA,EACrC,CAAC;AACD,QAAM,uBAAuB,CAAC,QAAQ,WAAW,OAAO,OAAO,KAAK,GAAG,EAAE,WAAW;AACpF,QAAM,QAAQ;AAAA,IACV,GAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAAA,IAC1C,GAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC9C;AACA,EAAAF,MAAK,QAAQ;AACjB;AACO,IAAM,iBAAiB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC1D,QAAMA,QAAO;AACb,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAA,MAAK,OAAO;AACZ,QAAM,aAAa,IAAI,WAAW,kBAAkB,gBAAgB;AACpE,QAAM,WAAW,IAAI,WAAW,kBAAkB,UAAU,IAAI,WAAW,gBAAgB,UAAU;AACrG,QAAM,cAAc,IAAI,MAAM,IAAI,CAAC,GAAG,MAAME,SAAQ,GAAG,KAAK;AAAA,IACxD,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,YAAY,CAAC;AAAA,EACxC,CAAC,CAAC;AACF,QAAM,OAAO,IAAI,OACXA,SAAQ,IAAI,MAAM,KAAK;AAAA,IACrB,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,UAAU,GAAI,IAAI,WAAW,gBAAgB,CAAC,IAAI,MAAM,MAAM,IAAI,CAAC,CAAE;AAAA,EAChG,CAAC,IACC;AACN,MAAI,IAAI,WAAW,iBAAiB;AAChC,IAAAF,MAAK,cAAc;AACnB,QAAI,MAAM;AACN,MAAAA,MAAK,QAAQ;AAAA,IACjB;AAAA,EACJ,WACS,IAAI,WAAW,eAAe;AACnC,IAAAA,MAAK,QAAQ;AAAA,MACT,OAAO;AAAA,IACX;AACA,QAAI,MAAM;AACN,MAAAA,MAAK,MAAM,MAAM,KAAK,IAAI;AAAA,IAC9B;AACA,IAAAA,MAAK,WAAW,YAAY;AAC5B,QAAI,CAAC,MAAM;AACP,MAAAA,MAAK,WAAW,YAAY;AAAA,IAChC;AAAA,EACJ,OACK;AACD,IAAAA,MAAK,QAAQ;AACb,QAAI,MAAM;AACN,MAAAA,MAAK,kBAAkB;AAAA,IAC3B;AAAA,EACJ;AAEA,QAAM,EAAE,SAAS,QAAQ,IAAI,OAAO,KAAK;AACzC,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,WAAW;AACpB,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,WAAW;AACxB;AACO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC3D,QAAMA,QAAO;AACb,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAA,MAAK,OAAO;AAIZ,QAAM,UAAU,IAAI;AACpB,QAAM,SAAS,QAAQ,KAAK;AAC5B,QAAM,WAAW,QAAQ;AACzB,MAAI,IAAI,SAAS,WAAW,YAAY,SAAS,OAAO,GAAG;AAEvD,UAAM,cAAcE,SAAQ,IAAI,WAAW,KAAK;AAAA,MAC5C,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,qBAAqB,GAAG;AAAA,IACnD,CAAC;AACD,IAAAF,MAAK,oBAAoB,CAAC;AAC1B,eAAW,WAAW,UAAU;AAC5B,MAAAA,MAAK,kBAAkB,QAAQ,MAAM,IAAI;AAAA,IAC7C;AAAA,EACJ,OACK;AAED,QAAI,IAAI,WAAW,cAAc,IAAI,WAAW,iBAAiB;AAC7D,MAAAA,MAAK,gBAAgBE,SAAQ,IAAI,SAAS,KAAK;AAAA,QAC3C,GAAG;AAAA,QACH,MAAM,CAAC,GAAG,OAAO,MAAM,eAAe;AAAA,MAC1C,CAAC;AAAA,IACL;AACA,IAAAF,MAAK,uBAAuBE,SAAQ,IAAI,WAAW,KAAK;AAAA,MACpD,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,sBAAsB;AAAA,IACjD,CAAC;AAAA,EACL;AAEA,QAAM,YAAY,QAAQ,KAAK;AAC/B,MAAI,WAAW;AACX,UAAM,iBAAiB,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,OAAO,MAAM,YAAY,OAAO,MAAM,QAAQ;AAClG,QAAI,eAAe,SAAS,GAAG;AAC3B,MAAAF,MAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AACJ;AACO,IAAM,oBAAoB,CAAC,QAAQ,KAAKA,OAAM,WAAW;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,QAAQE,SAAQ,IAAI,WAAW,KAAK,MAAM;AAChD,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,MAAI,IAAI,WAAW,eAAe;AAC9B,SAAK,MAAM,IAAI;AACf,IAAAF,MAAK,WAAW;AAAA,EACpB,OACK;AACD,IAAAA,MAAK,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;AAAA,EACzC;AACJ;AACO,IAAM,uBAAuB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAChE,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAE,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACnB;AACO,IAAM,mBAAmB,CAAC,QAAQ,KAAKF,OAAM,WAAW;AAC3D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAE,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACf,EAAAF,MAAK,UAAU,KAAK,MAAM,KAAK,UAAU,IAAI,YAAY,CAAC;AAC9D;AACO,IAAM,oBAAoB,CAAC,QAAQ,KAAKA,OAAM,WAAW;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAE,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACf,MAAI,IAAI,OAAO;AACX,IAAAF,MAAK,YAAY,KAAK,MAAM,KAAK,UAAU,IAAI,YAAY,CAAC;AACpE;AACO,IAAM,iBAAiB,CAAC,QAAQ,KAAKA,OAAM,WAAW;AACzD,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAE,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACf,MAAI;AACJ,MAAI;AACA,iBAAa,IAAI,WAAW,MAAS;AAAA,EACzC,QACM;AACF,UAAM,IAAI,MAAM,uDAAuD;AAAA,EAC3E;AACA,EAAAF,MAAK,UAAU;AACnB;AACO,IAAM,gBAAgB,CAAC,QAAQ,KAAK,OAAO,WAAW;AACzD,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,gBAAgB,IAAI,GAAG,KAAK,OAAO,IAAI,eAAe;AAC5D,QAAM,YAAY,IAAI,OAAO,UAAW,gBAAgB,IAAI,MAAM,IAAI,KAAM,IAAI;AAChF,EAAAE,SAAQ,WAAW,KAAK,MAAM;AAC9B,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM;AACf;AACO,IAAM,oBAAoB,CAAC,QAAQ,KAAKF,OAAM,WAAW;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAE,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACf,EAAAF,MAAK,WAAW;AACpB;AACO,IAAM,mBAAmB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAE,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACnB;AACO,IAAM,oBAAoB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC7D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAA,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACnB;AACO,IAAM,gBAAgB,CAAC,QAAQ,KAAK,OAAO,WAAW;AACzD,QAAM,YAAY,OAAO,KAAK;AAC9B,EAAAA,SAAQ,WAAW,KAAK,MAAM;AAC9B,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM;AACf;AAEO,IAAM,gBAAgB;AAAA,EACzB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,WAAW;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc;AAAA,EACd,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAa;AAAA,EACb,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACV;AACO,SAAS,aAAa,OAAO,QAAQ;AACxC,MAAI,YAAY,OAAO;AAEnB,UAAMC,YAAW;AACjB,UAAMC,OAAM,kBAAkB,EAAE,GAAG,QAAQ,YAAY,cAAc,CAAC;AACtE,UAAM,OAAO,CAAC;AAEd,eAAW,SAASD,UAAS,OAAO,QAAQ,GAAG;AAC3C,YAAM,CAAC,GAAG,MAAM,IAAI;AACpB,MAAAD,SAAQ,QAAQE,IAAG;AAAA,IACvB;AACA,UAAM,UAAU,CAAC;AACjB,UAAM,WAAW;AAAA,MACb,UAAAD;AAAA,MACA,KAAK,QAAQ;AAAA,MACb;AAAA,IACJ;AAEA,IAAAC,KAAI,WAAW;AAEf,eAAW,SAASD,UAAS,OAAO,QAAQ,GAAG;AAC3C,YAAM,CAAC,KAAK,MAAM,IAAI;AACtB,kBAAYC,MAAK,MAAM;AACvB,cAAQ,GAAG,IAAI,SAASA,MAAK,MAAM;AAAA,IACvC;AACA,QAAI,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AAC9B,YAAM,cAAcA,KAAI,WAAW,kBAAkB,UAAU;AAC/D,cAAQ,WAAW;AAAA,QACf,CAAC,WAAW,GAAG;AAAA,MACnB;AAAA,IACJ;AACA,WAAO,EAAE,QAAQ;AAAA,EACrB;AAEA,QAAM,MAAM,kBAAkB,EAAE,GAAG,QAAQ,YAAY,cAAc,CAAC;AACtE,EAAAF,SAAQ,OAAO,GAAG;AAClB,cAAY,KAAK,KAAK;AACtB,SAAO,SAAS,KAAK,KAAK;AAC9B;;;ACrkBO,IAAM,sBAAN,MAA0B;AAAA;AAAA,EAE7B,IAAI,mBAAmB;AACnB,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,kBAAkB;AAClB,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,KAAK;AACL,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA,EACA,IAAI,QAAQ,OAAO;AACf,SAAK,IAAI,UAAU;AAAA,EACvB;AAAA;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA,EACA,YAAY,QAAQ;AAEhB,QAAI,mBAAmB,QAAQ,UAAU;AACzC,QAAI,qBAAqB;AACrB,yBAAmB;AACvB,QAAI,qBAAqB;AACrB,yBAAmB;AACvB,SAAK,MAAM,kBAAkB;AAAA,MACzB,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,GAAI,QAAQ,YAAY,EAAE,UAAU,OAAO,SAAS;AAAA,MACpD,GAAI,QAAQ,mBAAmB,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,MACzE,GAAI,QAAQ,YAAY,EAAE,UAAU,OAAO,SAAS;AAAA,MACpD,GAAI,QAAQ,MAAM,EAAE,IAAI,OAAO,GAAG;AAAA,IACtC,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,QAAQ,UAAU,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG;AACpD,WAAOG,SAAQ,QAAQ,KAAK,KAAK,OAAO;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,QAAQ,SAAS;AAElB,QAAI,SAAS;AACT,UAAI,QAAQ;AACR,aAAK,IAAI,SAAS,QAAQ;AAC9B,UAAI,QAAQ;AACR,aAAK,IAAI,SAAS,QAAQ;AAC9B,UAAI,QAAQ;AACR,aAAK,IAAI,WAAW,QAAQ;AAAA,IACpC;AACA,gBAAY,KAAK,KAAK,MAAM;AAC5B,UAAM,SAAS,SAAS,KAAK,KAAK,MAAM;AAExC,UAAM,EAAE,aAAa,GAAG,GAAG,YAAY,IAAI;AAC3C,WAAO;AAAA,EACX;AACJ;;;AC9FA;;;ACAA,IAAAC,mBAAA;AAAA,SAAAA,kBAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA,gBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,aAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,aAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,iBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,WAAAC;AAAA,EAAA;AAAA;;;ACAA,IAAAC,kBAAA;AAAA,SAAAA,iBAAA;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;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,YAAAC;AAAA;AAEO,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,EAAK,gBAAgB,KAAK,MAAM,GAAG;AACnC,EAAQ,gBAAgB,KAAK,MAAM,GAAG;AAC1C,CAAC;AACM,SAASC,UAAS,QAAQ;AAC7B,SAAY,aAAa,gBAAgB,MAAM;AACnD;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,EAAQ,gBAAgB,KAAK,MAAM,GAAG;AAC1C,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,SAAS,YAAY,MAAM;AAC3C;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,EAAQ,gBAAgB,KAAK,MAAM,GAAG;AAC1C,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,SAAS,YAAY,MAAM;AAC3C;AACO,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,EAAK,gBAAgB,KAAK,MAAM,GAAG;AACnC,EAAQ,gBAAgB,KAAK,MAAM,GAAG;AAC1C,CAAC;AACM,SAASC,UAAS,QAAQ;AAC7B,SAAY,aAAa,gBAAgB,MAAM;AACnD;;;AC1BA,IAAMC,eAAc,CAAC,MAAM,WAAW;AAClC,YAAU,KAAK,MAAM,MAAM;AAC3B,OAAK,OAAO;AACZ,SAAO,iBAAiB,MAAM;AAAA,IAC1B,QAAQ;AAAA,MACJ,OAAO,CAAC,WAAgB,YAAY,MAAM,MAAM;AAAA;AAAA,IAEpD;AAAA,IACA,SAAS;AAAA,MACL,OAAO,CAAC,WAAgB,aAAa,MAAM,MAAM;AAAA;AAAA,IAErD;AAAA,IACA,UAAU;AAAA,MACN,OAAO,CAACC,WAAU;AACd,aAAK,OAAO,KAAKA,MAAK;AACtB,aAAK,UAAU,KAAK,UAAU,KAAK,QAAa,uBAAuB,CAAC;AAAA,MAC5E;AAAA;AAAA,IAEJ;AAAA,IACA,WAAW;AAAA,MACP,OAAO,CAACC,YAAW;AACf,aAAK,OAAO,KAAK,GAAGA,OAAM;AAC1B,aAAK,UAAU,KAAK,UAAU,KAAK,QAAa,uBAAuB,CAAC;AAAA,MAC5E;AAAA;AAAA,IAEJ;AAAA,IACA,SAAS;AAAA,MACL,MAAM;AACF,eAAO,KAAK,OAAO,WAAW;AAAA,MAClC;AAAA;AAAA,IAEJ;AAAA,EACJ,CAAC;AAML;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAYF,YAAW;AACxE,IAAM,eAA6B,gBAAK,aAAa,YAAYA,cAAa;AAAA,EACjF,QAAQ;AACZ,CAAC;;;AC3CM,IAAMG,SAAwB,gBAAK,OAAO,YAAY;AACtD,IAAMC,cAA6B,gBAAK,YAAY,YAAY;AAChE,IAAMC,aAA4B,gBAAK,WAAW,YAAY;AAC9D,IAAMC,kBAAiC,gBAAK,gBAAgB,YAAY;AAExE,IAAMC,UAAyB,gBAAK,QAAQ,YAAY;AACxD,IAAMC,UAAyB,gBAAK,QAAQ,YAAY;AACxD,IAAMC,eAA8B,gBAAK,aAAa,YAAY;AAClE,IAAMC,eAA8B,gBAAK,aAAa,YAAY;AAClE,IAAMC,cAA6B,gBAAK,YAAY,YAAY;AAChE,IAAMC,cAA6B,gBAAK,YAAY,YAAY;AAChE,IAAMC,mBAAkC,gBAAK,iBAAiB,YAAY;AAC1E,IAAMC,mBAAkC,gBAAK,iBAAiB,YAAY;;;AJIjF,IAAM,mBAAmC,oBAAI,QAAQ;AACrD,SAAS,oBAAoB,MAAM,OAAO,SAAS;AAC/C,QAAM,QAAQ,OAAO,eAAe,IAAI;AACxC,MAAI,YAAY,iBAAiB,IAAI,KAAK;AAC1C,MAAI,CAAC,WAAW;AACZ,gBAAY,oBAAI,IAAI;AACpB,qBAAiB,IAAI,OAAO,SAAS;AAAA,EACzC;AACA,MAAI,UAAU,IAAI,KAAK;AACnB;AACJ,YAAU,IAAI,KAAK;AACnB,aAAW,OAAO,SAAS;AACvB,UAAM,KAAK,QAAQ,GAAG;AACtB,WAAO,eAAe,OAAO,KAAK;AAAA,MAC9B,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,MAAM;AACF,cAAM,QAAQ,GAAG,KAAK,IAAI;AAC1B,eAAO,eAAe,MAAM,KAAK;AAAA,UAC7B,cAAc;AAAA,UACd,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,OAAO;AAAA,QACX,CAAC;AACD,eAAO;AAAA,MACX;AAAA,MACA,IAAI,GAAG;AACH,eAAO,eAAe,MAAM,KAAK;AAAA,UAC7B,cAAc;AAAA,UACd,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,OAAO;AAAA,QACX,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,SAAO,OAAO,KAAK,WAAW,GAAG;AAAA,IAC7B,YAAY;AAAA,MACR,OAAO,+BAA+B,MAAM,OAAO;AAAA,MACnD,QAAQ,+BAA+B,MAAM,QAAQ;AAAA,IACzD;AAAA,EACJ,CAAC;AACD,OAAK,eAAe,yBAAyB,MAAM,CAAC,CAAC;AACrD,OAAK,MAAM;AACX,OAAK,OAAO,IAAI;AAChB,SAAO,eAAe,MAAM,QAAQ,EAAE,OAAO,IAAI,CAAC;AAMlD,OAAK,QAAQ,CAAC,MAAM,WAAiBC,OAAM,MAAM,MAAM,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC;AACrF,OAAK,YAAY,CAAC,MAAM,WAAiBC,WAAU,MAAM,MAAM,MAAM;AACrE,OAAK,aAAa,OAAO,MAAM,WAAiBC,YAAW,MAAM,MAAM,QAAQ,EAAE,QAAQ,KAAK,WAAW,CAAC;AAC1G,OAAK,iBAAiB,OAAO,MAAM,WAAiBC,gBAAe,MAAM,MAAM,MAAM;AACrF,OAAK,MAAM,KAAK;AAChB,OAAK,SAAS,CAAC,MAAM,WAAiBC,QAAO,MAAM,MAAM,MAAM;AAC/D,OAAK,SAAS,CAAC,MAAM,WAAiBC,QAAO,MAAM,MAAM,MAAM;AAC/D,OAAK,cAAc,OAAO,MAAM,WAAiBC,aAAY,MAAM,MAAM,MAAM;AAC/E,OAAK,cAAc,OAAO,MAAM,WAAiBC,aAAY,MAAM,MAAM,MAAM;AAC/E,OAAK,aAAa,CAAC,MAAM,WAAiBC,YAAW,MAAM,MAAM,MAAM;AACvE,OAAK,aAAa,CAAC,MAAM,WAAiBC,YAAW,MAAM,MAAM,MAAM;AACvE,OAAK,kBAAkB,OAAO,MAAM,WAAiBC,iBAAgB,MAAM,MAAM,MAAM;AACvF,OAAK,kBAAkB,OAAO,MAAM,WAAiBC,iBAAgB,MAAM,MAAM,MAAM;AAOvF,sBAAoB,MAAM,WAAW;AAAA,IACjC,SAAS,MAAM;AACX,YAAMC,OAAM,KAAK;AACjB,aAAO,KAAK,MAAM,aAAK,UAAUA,MAAK;AAAA,QAClC,QAAQ;AAAA,UACJ,GAAIA,KAAI,UAAU,CAAC;AAAA,UACnB,GAAG,KAAK,IAAI,CAAC,OAAO,OAAO,OAAO,aAAa,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;AAAA,QACvH;AAAA,MACJ,CAAC,GAAG,EAAE,QAAQ,KAAK,CAAC;AAAA,IACxB;AAAA,IACA,QAAQ,MAAM;AACV,aAAO,KAAK,MAAM,GAAG,IAAI;AAAA,IAC7B;AAAA,IACA,MAAMA,MAAK,QAAQ;AACf,aAAY,MAAM,MAAMA,MAAK,MAAM;AAAA,IACvC;AAAA,IACA,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,IACA,SAAS,KAAKC,OAAM;AAChB,UAAI,IAAI,MAAMA,KAAI;AAClB,aAAO;AAAA,IACX;AAAA,IACA,OAAOC,QAAO,QAAQ;AAClB,aAAO,KAAK,MAAM,OAAOA,QAAO,MAAM,CAAC;AAAA,IAC3C;AAAA,IACA,YAAY,YAAY,QAAQ;AAC5B,aAAO,KAAK,MAAM,YAAY,YAAY,MAAM,CAAC;AAAA,IACrD;AAAA,IACA,UAAU,IAAI;AACV,aAAO,KAAK,MAAa,WAAU,EAAE,CAAC;AAAA,IAC1C;AAAA,IACA,WAAW;AACP,aAAO,SAAS,IAAI;AAAA,IACxB;AAAA,IACA,gBAAgB;AACZ,aAAO,cAAc,IAAI;AAAA,IAC7B;AAAA,IACA,WAAW;AACP,aAAO,SAAS,IAAI;AAAA,IACxB;AAAA,IACA,UAAU;AACN,aAAO,SAAS,SAAS,IAAI,CAAC;AAAA,IAClC;AAAA,IACA,YAAY,QAAQ;AAChB,aAAO,YAAY,MAAM,MAAM;AAAA,IACnC;AAAA,IACA,QAAQ;AACJ,aAAO,MAAM,IAAI;AAAA,IACrB;AAAA,IACA,GAAG,KAAK;AACJ,aAAO,MAAM,CAAC,MAAM,GAAG,CAAC;AAAA,IAC5B;AAAA,IACA,IAAI,KAAK;AACL,aAAO,aAAa,MAAM,GAAG;AAAA,IACjC;AAAA,IACA,UAAU,IAAI;AACV,aAAO,KAAK,MAAM,UAAU,EAAE,CAAC;AAAA,IACnC;AAAA,IACA,QAAQ,GAAG;AACP,aAAOC,UAAS,MAAM,CAAC;AAAA,IAC3B;AAAA,IACA,SAAS,GAAG;AACR,aAAO,SAAS,MAAM,CAAC;AAAA,IAC3B;AAAA,IACA,MAAM,QAAQ;AACV,aAAOC,QAAO,MAAM,MAAM;AAAA,IAC9B;AAAA,IACA,KAAK,QAAQ;AACT,aAAO,KAAK,MAAM,MAAM;AAAA,IAC5B;AAAA,IACA,WAAW;AACP,aAAO,SAAS,IAAI;AAAA,IACxB;AAAA,IACA,SAAS,aAAa;AAClB,YAAM,KAAK,KAAK,MAAM;AACtB,MAAK,eAAe,IAAI,IAAI,EAAE,YAAY,CAAC;AAC3C,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,MAAM;AAKV,UAAI,KAAK,WAAW;AAChB,eAAY,eAAe,IAAI,IAAI;AACvC,YAAM,KAAK,KAAK,MAAM;AACtB,MAAK,eAAe,IAAI,IAAI,KAAK,CAAC,CAAC;AACnC,aAAO;AAAA,IACX;AAAA,IACA,aAAa;AACT,aAAO,KAAK,UAAU,MAAS,EAAE;AAAA,IACrC;AAAA,IACA,aAAa;AACT,aAAO,KAAK,UAAU,IAAI,EAAE;AAAA,IAChC;AAAA,IACA,MAAM,IAAI;AACN,aAAO,GAAG,IAAI;AAAA,IAClB;AAAA,EACJ,CAAC;AACD,SAAO,eAAe,MAAM,eAAe;AAAA,IACvC,MAAM;AACF,aAAY,eAAe,IAAI,IAAI,GAAG;AAAA,IAC1C;AAAA,IACA,cAAc;AAAA,EAClB,CAAC;AACD,SAAO;AACX,CAAC;AAEM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,QAAM,MAAM,KAAK,KAAK;AACtB,OAAK,SAAS,IAAI,UAAU;AAC5B,OAAK,YAAY,IAAI,WAAW;AAChC,OAAK,YAAY,IAAI,WAAW;AAChC,sBAAoB,MAAM,cAAc;AAAA,IACpC,SAAS,MAAM;AACX,aAAO,KAAK,MAAa,OAAM,GAAG,IAAI,CAAC;AAAA,IAC3C;AAAA,IACA,YAAY,MAAM;AACd,aAAO,KAAK,MAAa,UAAS,GAAG,IAAI,CAAC;AAAA,IAC9C;AAAA,IACA,cAAc,MAAM;AAChB,aAAO,KAAK,MAAa,YAAW,GAAG,IAAI,CAAC;AAAA,IAChD;AAAA,IACA,YAAY,MAAM;AACd,aAAO,KAAK,MAAa,UAAS,GAAG,IAAI,CAAC;AAAA,IAC9C;AAAA,IACA,OAAO,MAAM;AACT,aAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA,IAC/C;AAAA,IACA,OAAO,MAAM;AACT,aAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA,IAC/C;AAAA,IACA,UAAU,MAAM;AACZ,aAAO,KAAK,MAAa,QAAO,GAAG,IAAI,CAAC;AAAA,IAC5C;AAAA,IACA,YAAY,MAAM;AACd,aAAO,KAAK,MAAa,WAAU,GAAG,GAAG,IAAI,CAAC;AAAA,IAClD;AAAA,IACA,UAAU,QAAQ;AACd,aAAO,KAAK,MAAa,WAAU,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,UAAU,QAAQ;AACd,aAAO,KAAK,MAAa,WAAU,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,OAAO;AACH,aAAO,KAAK,MAAa,MAAK,CAAC;AAAA,IACnC;AAAA,IACA,aAAa,MAAM;AACf,aAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA,IAC/C;AAAA,IACA,cAAc;AACV,aAAO,KAAK,MAAa,aAAY,CAAC;AAAA,IAC1C;AAAA,IACA,cAAc;AACV,aAAO,KAAK,MAAa,aAAY,CAAC;AAAA,IAC1C;AAAA,IACA,UAAU;AACN,aAAO,KAAK,MAAa,SAAQ,CAAC;AAAA,IACtC;AAAA,EACJ,CAAC;AACL,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,aAAW,KAAK,MAAM,GAAG;AACzB,OAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AACjE,OAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAC3D,OAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAC3D,OAAK,QAAQ,CAAC,WAAW,KAAK,MAAWC,QAAO,UAAU,MAAM,CAAC;AACjE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAClE,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAClE,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAClE,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AACpE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AACjE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AACpE,OAAK,YAAY,CAAC,WAAW,KAAK,MAAW,WAAW,cAAc,MAAM,CAAC;AAC7E,OAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAC3D,OAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AACjE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AACpE,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AACpE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAE9D,OAAK,WAAW,CAAC,WAAW,KAAK,MAAUC,UAAS,MAAM,CAAC;AAC3D,OAAK,OAAO,CAAC,WAAW,KAAK,MAAUC,MAAK,MAAM,CAAC;AACnD,OAAK,OAAO,CAAC,WAAW,KAAK,MAAUC,MAAK,MAAM,CAAC;AACnD,OAAK,WAAW,CAAC,WAAW,KAAK,MAAUC,UAAS,MAAM,CAAC;AAC/D,CAAC;AACM,SAASC,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,EAAK,iBAAiB,KAAK,MAAM,GAAG;AACpC,aAAW,KAAK,MAAM,GAAG;AAC7B,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAE/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,OAAM,QAAQ;AAC1B,SAAY,OAAO,UAAU,MAAM;AACvC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,SAAS,MAAM;AACvC;AAEO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,SAAS,MAAM;AACvC;AAEO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,SAAS,MAAM;AACvC;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAE3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAAS,IAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,SAAS,QAAQ,QAAQ;AAC5B,SAAY,KAAK,QAAQ;AAAA,IACrB,UAAe,gBAAQ;AAAA,IACvB,UAAe,gBAAQ;AAAA,IACvB,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAE/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,OAAM,QAAQ;AAC1B,SAAYT,QAAO,UAAU,MAAM;AACvC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AAEjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASU,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AAMO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AAQM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAE/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,OAAM,QAAQ;AAC1B,SAAY,OAAO,UAAU,MAAM;AACvC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAE3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,KAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAE/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,OAAM,QAAQ;AAC1B,SAAY,OAAO,UAAU,MAAM;AACvC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAE3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,KAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AAEjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAEvF,EAAK,cAAc,KAAK,MAAM,GAAG;AACjC,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,WAAU,QAAQ;AAC9B,SAAY,WAAW,cAAc,MAAM;AAC/C;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAE3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAAS,IAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AAEzG,EAAK,uBAAuB,KAAK,MAAM,GAAG;AAC1C,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAAS,aAAa,QAAQ,WAAW,UAAU,CAAC,GAAG;AAC1D,SAAY,cAAc,uBAAuB,QAAQ,WAAW,OAAO;AAC/E;AACO,SAASC,UAAS,SAAS;AAC9B,SAAY,cAAc,uBAAuB,YAAiB,gBAAQ,UAAU,OAAO;AAC/F;AACO,SAASC,KAAI,SAAS;AACzB,SAAY,cAAc,uBAAuB,OAAY,gBAAQ,KAAK,OAAO;AACrF;AACO,SAAS,KAAK,KAAK,QAAQ;AAC9B,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,SAAS,GAAG,GAAG,IAAI,GAAG;AAC5B,QAAM,QAAa,gBAAQ,MAAM;AACjC,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,6BAA6B,MAAM,EAAE;AACzD,SAAY,cAAc,uBAAuB,QAAQ,OAAO,MAAM;AAC1E;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAK1B,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,sBAAoB,MAAM,aAAa;AAAA,IACnC,GAAG,OAAO,QAAQ;AACd,aAAO,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,IAAI,OAAO,QAAQ;AACf,aAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,IAAI,OAAO,QAAQ;AACf,aAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,GAAG,OAAO,QAAQ;AACd,aAAO,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,IAAI,OAAO,QAAQ;AACf,aAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,IAAI,OAAO,QAAQ;AACf,aAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,KAAK,MAAM,IAAI,MAAM,CAAC;AAAA,IACjC;AAAA,IACA,KAAK,QAAQ;AACT,aAAO,KAAK,MAAM,IAAI,MAAM,CAAC;AAAA,IACjC;AAAA,IACA,SAAS,QAAQ;AACb,aAAO,KAAK,MAAa,IAAG,GAAG,MAAM,CAAC;AAAA,IAC1C;AAAA,IACA,YAAY,QAAQ;AAChB,aAAO,KAAK,MAAa,KAAI,GAAG,MAAM,CAAC;AAAA,IAC3C;AAAA,IACA,SAAS,QAAQ;AACb,aAAO,KAAK,MAAa,IAAG,GAAG,MAAM,CAAC;AAAA,IAC1C;AAAA,IACA,YAAY,QAAQ;AAChB,aAAO,KAAK,MAAa,KAAI,GAAG,MAAM,CAAC;AAAA,IAC3C;AAAA,IACA,WAAW,OAAO,QAAQ;AACtB,aAAO,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAAA,IACtD;AAAA,IACA,KAAK,OAAO,QAAQ;AAChB,aAAO,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAAA,IACtD;AAAA,IACA,SAAS;AACL,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,QAAM,MAAM,KAAK,KAAK;AACtB,OAAK,WACD,KAAK,IAAI,IAAI,WAAW,OAAO,mBAAmB,IAAI,oBAAoB,OAAO,iBAAiB,KAAK;AAC3G,OAAK,WACD,KAAK,IAAI,IAAI,WAAW,OAAO,mBAAmB,IAAI,oBAAoB,OAAO,iBAAiB,KAAK;AAC3G,OAAK,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,KAAK,OAAO,cAAc,IAAI,cAAc,GAAG;AAC7F,OAAK,WAAW;AAChB,OAAK,SAAS,IAAI,UAAU;AAChC,CAAC;AACM,SAAS2B,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,EAAK,iBAAiB,KAAK,MAAM,GAAG;AACpC,YAAU,KAAK,MAAM,GAAG;AAC5B,CAAC;AACM,SAAS,IAAI,QAAQ;AACxB,SAAY,KAAK,iBAAiB,MAAM;AAC5C;AACO,SAAS,QAAQ,QAAQ;AAC5B,SAAY,SAAS,iBAAiB,MAAM;AAChD;AACO,SAAS,QAAQ,QAAQ;AAC5B,SAAY,SAAS,iBAAiB,MAAM;AAChD;AACO,SAAS,MAAM,QAAQ;AAC1B,SAAY,OAAO,iBAAiB,MAAM;AAC9C;AACO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,iBAAiB,MAAM;AAC/C;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAK3B,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AAC5G,CAAC;AACM,SAAS4B,SAAQ,QAAQ;AAC5B,SAAY,SAAS,YAAY,MAAM;AAC3C;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAK5B,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,KAAK,CAAC,OAAO,WAAW,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAChE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,KAAK,CAAC,OAAO,WAAW,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAChE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,WAAW,CAAC,WAAW,KAAK,MAAa,IAAG,OAAO,CAAC,GAAG,MAAM,CAAC;AACnE,OAAK,WAAW,CAAC,WAAW,KAAK,MAAa,IAAG,OAAO,CAAC,GAAG,MAAM,CAAC;AACnE,OAAK,cAAc,CAAC,WAAW,KAAK,MAAa,KAAI,OAAO,CAAC,GAAG,MAAM,CAAC;AACvE,OAAK,cAAc,CAAC,WAAW,KAAK,MAAa,KAAI,OAAO,CAAC,GAAG,MAAM,CAAC;AACvE,OAAK,aAAa,CAAC,OAAO,WAAW,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAChF,QAAM,MAAM,KAAK,KAAK;AACtB,OAAK,WAAW,IAAI,WAAW;AAC/B,OAAK,WAAW,IAAI,WAAW;AAC/B,OAAK,SAAS,IAAI,UAAU;AAChC,CAAC;AACM,SAAS6B,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,EAAK,iBAAiB,KAAK,MAAM,GAAG;AACpC,YAAU,KAAK,MAAM,GAAG;AAC5B,CAAC;AAEM,SAAS,MAAM,QAAQ;AAC1B,SAAY,OAAO,iBAAiB,MAAM;AAC9C;AAEO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,iBAAiB,MAAM;AAC/C;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAK7B,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AAC3G,CAAC;AACM,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,EAAK,cAAc,KAAK,MAAM,GAAG;AACjC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,mBAAmB,MAAM,KAAKA,OAAM,MAAM;AAC9G,CAAC;AACD,SAAS8B,YAAW,QAAQ;AACxB,SAAYA,YAAW,cAAc,MAAM;AAC/C;AAEO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACzG,CAAC;AACD,SAASC,OAAM,QAAQ;AACnB,SAAYA,OAAM,SAAS,MAAM;AACrC;AAEO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,aAAa,MAAM,KAAKA,OAAM,MAAM;AACxG,CAAC;AACM,SAAS,MAAM;AAClB,SAAY,KAAK,MAAM;AAC3B;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AAC5G,CAAC;AACM,SAAS,UAAU;AACtB,SAAY,SAAS,UAAU;AACnC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AAC1G,CAAC;AACM,SAAS,MAAM,QAAQ;AAC1B,SAAY,OAAO,UAAU,MAAM;AACvC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACzG,CAAC;AACD,SAASC,OAAM,QAAQ;AACnB,SAAY,MAAM,SAAS,MAAM;AACrC;AAEO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,QAAM,IAAI,KAAK,KAAK;AACpB,OAAK,UAAU,EAAE,UAAU,IAAI,KAAK,EAAE,OAAO,IAAI;AACjD,OAAK,UAAU,EAAE,UAAU,IAAI,KAAK,EAAE,OAAO,IAAI;AACrD,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKD,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,UAAU,IAAI;AACnB,sBAAoB,MAAM,YAAY;AAAA,IAClC,IAAI,GAAG,QAAQ;AACX,aAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA,IACjD;AAAA,IACA,SAAS,QAAQ;AACb,aAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA,IACjD;AAAA,IACA,IAAI,GAAG,QAAQ;AACX,aAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA,IACjD;AAAA,IACA,OAAO,GAAG,QAAQ;AACd,aAAO,KAAK,MAAa,QAAO,GAAG,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,SAAS;AACL,aAAO,KAAK;AAAA,IAChB;AAAA,EACJ,CAAC;AACL,CAAC;AACM,SAAS,MAAM,SAAS,QAAQ;AACnC,SAAY,OAAO,UAAU,SAAS,MAAM;AAChD;AAEO,SAAS,MAAM,QAAQ;AAC1B,QAAM,QAAQ,OAAO,KAAK,IAAI;AAC9B,SAAOE,OAAM,OAAO,KAAK,KAAK,CAAC;AACnC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,cAAc,KAAK,MAAM,GAAG;AACjC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKF,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,eAAK,WAAW,MAAM,SAAS,MAAM;AACjC,WAAO,IAAI;AAAA,EACf,CAAC;AACD,sBAAoB,MAAM,aAAa;AAAA,IACnC,QAAQ;AACJ,aAAOE,OAAM,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC;AAAA,IACjD;AAAA,IACA,SAAS,UAAU;AACf,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,SAAmB,CAAC;AAAA,IAC9D;AAAA,IACA,cAAc;AACV,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,UAAU,QAAQ,EAAE,CAAC;AAAA,IAC/D;AAAA,IACA,QAAQ;AACJ,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,UAAU,QAAQ,EAAE,CAAC;AAAA,IAC/D;AAAA,IACA,SAAS;AACL,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,UAAU,MAAM,EAAE,CAAC;AAAA,IAC7D;AAAA,IACA,QAAQ;AACJ,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,UAAU,OAAU,CAAC;AAAA,IAC/D;AAAA,IACA,OAAO,UAAU;AACb,aAAO,aAAK,OAAO,MAAM,QAAQ;AAAA,IACrC;AAAA,IACA,WAAW,UAAU;AACjB,aAAO,aAAK,WAAW,MAAM,QAAQ;AAAA,IACzC;AAAA,IACA,MAAM,OAAO;AACT,aAAO,aAAK,MAAM,MAAM,KAAK;AAAA,IACjC;AAAA,IACA,KAAK,MAAM;AACP,aAAO,aAAK,KAAK,MAAM,IAAI;AAAA,IAC/B;AAAA,IACA,KAAK,MAAM;AACP,aAAO,aAAK,KAAK,MAAM,IAAI;AAAA,IAC/B;AAAA,IACA,WAAW,MAAM;AACb,aAAO,aAAK,QAAQ,aAAa,MAAM,KAAK,CAAC,CAAC;AAAA,IAClD;AAAA,IACA,YAAY,MAAM;AACd,aAAO,aAAK,SAAS,gBAAgB,MAAM,KAAK,CAAC,CAAC;AAAA,IACtD;AAAA,EACJ,CAAC;AACL,CAAC;AACM,SAAS,OAAO,OAAO,QAAQ;AAClC,QAAM,MAAM;AAAA,IACR,MAAM;AAAA,IACN,OAAO,SAAS,CAAC;AAAA,IACjB,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC;AACA,SAAO,IAAI,UAAU,GAAG;AAC5B;AAEO,SAAS,aAAa,OAAO,QAAQ;AACxC,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAEO,SAAS,YAAY,OAAO,QAAQ;AACvC,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKF,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,UAAU,IAAI;AACvB,CAAC;AACM,SAAS,MAAM,SAAS,QAAQ;AACnC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,UAAU,IAAI;AACvB,CAAC;AAIM,SAAS,IAAI,SAAS,QAAQ;AACjC,SAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IACX,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,uBAAuB,KAAK,MAAM,GAAG;AAC9C,CAAC;AACM,SAAS,mBAAmB,eAAe,SAAS,QAAQ;AAE/D,SAAO,IAAI,sBAAsB;AAAA,IAC7B,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,EAAK,iBAAiB,KAAK,MAAM,GAAG;AACpC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,sBAAsB,MAAM,KAAKA,OAAM,MAAM;AACjH,CAAC;AACM,SAAS,aAAa,MAAM,OAAO;AACtC,SAAO,IAAI,gBAAgB;AAAA,IACvB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,OAAO,CAAC,SAAS,KAAK,MAAM;AAAA,IAC7B,GAAG,KAAK,KAAK;AAAA,IACb;AAAA,EACJ,CAAC;AACL,CAAC;AACM,SAAS,MAAM,OAAO,eAAe,SAAS;AACjD,QAAM,UAAU,yBAA8B;AAC9C,QAAM,SAAS,UAAU,UAAU;AACnC,QAAM,OAAO,UAAU,gBAAgB;AACvC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,OAAK,UAAU,IAAI;AACnB,OAAK,YAAY,IAAI;AACzB,CAAC;AACM,SAAS,OAAO,SAAS,WAAW,QAAQ;AAE/C,MAAI,CAAC,aAAa,CAAC,UAAU,MAAM;AAC/B,WAAO,IAAI,UAAU;AAAA,MACjB,MAAM;AAAA,MACN,SAASG,QAAO;AAAA,MAChB,WAAW;AAAA,MACX,GAAG,aAAK,gBAAgB,SAAS;AAAA,IACrC,CAAC;AAAA,EACL;AACA,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAEO,SAAS,cAAc,SAAS,WAAW,QAAQ;AACtD,QAAM,IAAS,MAAM,OAAO;AAC5B,IAAE,KAAK,SAAS;AAChB,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,SAAS,YAAY,SAAS,WAAW,QAAQ;AACpD,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKH,OAAM,WAAsB,aAAa,MAAM,KAAKA,OAAM,MAAM;AACpG,OAAK,UAAU,IAAI;AACnB,OAAK,YAAY,IAAI;AACrB,OAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AACzD,OAAK,WAAW,CAAC,WAAW,KAAK,MAAW,SAAS,GAAG,MAAM,CAAC;AAC/D,OAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AACzD,OAAK,OAAO,IAAI,SAAS,KAAK,MAAW,MAAM,GAAG,IAAI,CAAC;AAC3D,CAAC;AACM,SAAS,IAAI,SAAS,WAAW,QAAQ;AAC5C,SAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,aAAa,MAAM,KAAKA,OAAM,MAAM;AACpG,OAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AACzD,OAAK,WAAW,CAAC,WAAW,KAAK,MAAW,SAAS,GAAG,MAAM,CAAC;AAC/D,OAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AACzD,OAAK,OAAO,IAAI,SAAS,KAAK,MAAW,MAAM,GAAG,IAAI,CAAC;AAC3D,CAAC;AACM,SAAS,IAAI,WAAW,QAAQ;AACnC,SAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,OAAO,IAAI;AAChB,OAAK,UAAU,OAAO,OAAO,IAAI,OAAO;AACxC,QAAM,OAAO,IAAI,IAAI,OAAO,KAAK,IAAI,OAAO,CAAC;AAC7C,OAAK,UAAU,CAAC,QAAQ,WAAW;AAC/B,UAAM,aAAa,CAAC;AACpB,eAAW,SAAS,QAAQ;AACxB,UAAI,KAAK,IAAI,KAAK,GAAG;AACjB,mBAAW,KAAK,IAAI,IAAI,QAAQ,KAAK;AAAA,MACzC;AAEI,cAAM,IAAI,MAAM,OAAO,KAAK,oBAAoB;AAAA,IACxD;AACA,WAAO,IAAI,QAAQ;AAAA,MACf,GAAG;AAAA,MACH,QAAQ,CAAC;AAAA,MACT,GAAG,aAAK,gBAAgB,MAAM;AAAA,MAC9B,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AACA,OAAK,UAAU,CAAC,QAAQ,WAAW;AAC/B,UAAM,aAAa,EAAE,GAAG,IAAI,QAAQ;AACpC,eAAW,SAAS,QAAQ;AACxB,UAAI,KAAK,IAAI,KAAK,GAAG;AACjB,eAAO,WAAW,KAAK;AAAA,MAC3B;AAEI,cAAM,IAAI,MAAM,OAAO,KAAK,oBAAoB;AAAA,IACxD;AACA,WAAO,IAAI,QAAQ;AAAA,MACf,GAAG;AAAA,MACH,QAAQ,CAAC;AAAA,MACT,GAAG,aAAK,gBAAgB,MAAM;AAAA,MAC9B,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AACJ,CAAC;AACD,SAASE,OAAM,QAAQ,QAAQ;AAC3B,QAAM,UAAU,MAAM,QAAQ,MAAM,IAAI,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AACxF,SAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AASO,SAAS,WAAW,SAAS,QAAQ;AACxC,SAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKE,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AACxG,OAAK,SAAS,IAAI,IAAI,IAAI,MAAM;AAChC,SAAO,eAAe,MAAM,SAAS;AAAA,IACjC,MAAM;AACF,UAAI,IAAI,OAAO,SAAS,GAAG;AACvB,cAAM,IAAI,MAAM,4EAA4E;AAAA,MAChG;AACA,aAAO,IAAI,OAAO,CAAC;AAAA,IACvB;AAAA,EACJ,CAAC;AACL,CAAC;AACM,SAAS,QAAQ,OAAO,QAAQ;AACnC,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IAC7C,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,MAAM,CAAC,MAAM,WAAW,KAAK,MAAW,SAAS,MAAM,MAAM,CAAC;AACnE,OAAK,MAAM,CAAC,MAAM,WAAW,KAAK,MAAW,SAAS,MAAM,MAAM,CAAC;AACnE,OAAK,OAAO,CAAC,OAAO,WAAW,KAAK,MAAW,MAAM,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;AACxG,CAAC;AACM,SAAS,KAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,EAAK,cAAc,KAAK,MAAM,GAAG;AACjC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,mBAAmB,MAAM,KAAKA,OAAM,MAAM;AAC1G,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,KAAK,cAAc,YAAY;AAC/B,YAAM,IAAS,gBAAgB,KAAK,YAAY,IAAI;AAAA,IACxD;AACA,YAAQ,WAAW,CAACC,WAAU;AAC1B,UAAI,OAAOA,WAAU,UAAU;AAC3B,gBAAQ,OAAO,KAAK,aAAK,MAAMA,QAAO,QAAQ,OAAO,GAAG,CAAC;AAAA,MAC7D,OACK;AAED,cAAM,SAASA;AACf,YAAI,OAAO;AACP,iBAAO,WAAW;AACtB,eAAO,SAAS,OAAO,OAAO;AAC9B,eAAO,UAAU,OAAO,QAAQ,QAAQ;AACxC,eAAO,SAAS,OAAO,OAAO;AAE9B,gBAAQ,OAAO,KAAK,aAAK,MAAM,MAAM,CAAC;AAAA,MAC1C;AAAA,IACJ;AACA,UAAM,SAAS,IAAI,UAAU,QAAQ,OAAO,OAAO;AACnD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACC,YAAW;AAC3B,gBAAQ,QAAQA;AAChB,gBAAQ,WAAW;AACnB,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,YAAQ,QAAQ;AAChB,YAAQ,WAAW;AACnB,WAAO;AAAA,EACX;AACJ,CAAC;AACM,SAAS,UAAU,IAAI;AAC1B,SAAO,IAAI,aAAa;AAAA,IACpB,MAAM;AAAA,IACN,WAAW;AAAA,EACf,CAAC;AACL;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKF,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,SAAS,WAAW;AAChC,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,EAAK,kBAAkB,KAAK,MAAM,GAAG;AACrC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,cAAc,WAAW;AACrC,SAAO,IAAI,iBAAiB;AAAA,IACxB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,SAAS,WAAW;AAChC,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAEO,SAASG,SAAQ,WAAW;AAC/B,SAAO,SAAS,SAAS,SAAS,CAAC;AACvC;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKH,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AACxG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAClC,OAAK,gBAAgB,KAAK;AAC9B,CAAC;AACM,SAASI,UAAS,WAAW,cAAc;AAC9C,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,IACA,IAAI,eAAe;AACf,aAAO,OAAO,iBAAiB,aAAa,aAAa,IAAI,aAAK,aAAa,YAAY;AAAA,IAC/F;AAAA,EACJ,CAAC;AACL;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKJ,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,SAAS,WAAW,cAAc;AAC9C,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,IACA,IAAI,eAAe;AACf,aAAO,OAAO,iBAAiB,aAAa,aAAa,IAAI,aAAK,aAAa,YAAY;AAAA,IAC/F;AAAA,EACJ,CAAC;AACL;AACO,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,EAAK,gBAAgB,KAAK,MAAM,GAAG;AACnC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,qBAAqB,MAAM,KAAKA,OAAM,MAAM;AAC5G,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,YAAY,WAAW,QAAQ;AAC3C,SAAO,IAAI,eAAe;AAAA,IACtB,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AACxG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,QAAQ,WAAW;AAC/B,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAClC,OAAK,cAAc,KAAK;AAC5B,CAAC;AACD,SAASK,QAAO,WAAW,YAAY;AACnC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,IACA,YAAa,OAAO,eAAe,aAAa,aAAa,MAAM;AAAA,EACvE,CAAC;AACL;AAEO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,aAAa,MAAM,KAAKA,OAAM,MAAM;AACxG,CAAC;AACM,SAAS,IAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,KAAK,IAAI;AACd,OAAK,MAAM,IAAI;AACnB,CAAC;AACM,SAAS,KAAK,KAAK,KAAK;AAC3B,SAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA;AAAA,EAEJ,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,UAAQ,KAAK,MAAM,GAAG;AACtB,EAAK,UAAU,KAAK,MAAM,GAAG;AACjC,CAAC;AACM,SAAS,MAAM,KAAK,KAAK,QAAQ;AACpC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,IACA,WAAW,OAAO;AAAA,IAClB,kBAAkB,OAAO;AAAA,EAC7B,CAAC;AACL;AACO,SAAS,YAAYC,QAAO;AAC/B,QAAM,MAAMA,OAAM,KAAK;AACvB,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,IAAI,IAAI;AAAA,IACR,KAAK,IAAI;AAAA,IACT,WAAW,IAAI;AAAA,IACf,kBAAkB,IAAI;AAAA,EAC1B,CAAC;AACL;AACO,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AACzF,UAAQ,KAAK,MAAM,GAAG;AACtB,EAAK,eAAe,KAAK,MAAM,GAAG;AACtC,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKD,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,SAAS,WAAW;AAChC,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,EAAK,oBAAoB,KAAK,MAAM,GAAG;AACvC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,yBAAyB,MAAM,KAAKA,OAAM,MAAM;AACpH,CAAC;AACM,SAAS,gBAAgB,OAAO,QAAQ;AAC3C,SAAO,IAAI,mBAAmB;AAAA,IAC1B,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI,OAAO;AAC7C,CAAC;AACM,SAAS,KAAK,QAAQ;AACzB,SAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AACxG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,QAAQ,WAAW;AAC/B,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AAC7G,CAAC;AACM,SAAS,UAAU,QAAQ;AAC9B,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,MAAM,QAAQ,QAAQ,KAAK,IAAI,MAAM,QAAQ,KAAK,IAAK,QAAQ,SAAS,MAAM,QAAQ,CAAC;AAAA,IAC9F,QAAQ,QAAQ,UAAU,QAAQ;AAAA,EACtC,CAAC;AACL;AAEO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKE,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AAC3G,CAAC;AAEM,SAAS,MAAM,IAAI;AACtB,QAAM,KAAK,IAAS,UAAU;AAAA,IAC1B,OAAO;AAAA;AAAA,EAEX,CAAC;AACD,KAAG,KAAK,QAAQ;AAChB,SAAO;AACX;AACO,SAAS,OAAO,IAAI,SAAS;AAChC,SAAY,QAAQ,WAAW,OAAO,MAAM,OAAO,OAAO;AAC9D;AACO,SAAS,OAAO,IAAI,UAAU,CAAC,GAAG;AACrC,SAAY,QAAQ,WAAW,IAAI,OAAO;AAC9C;AAEO,SAAS,YAAY,IAAI,QAAQ;AACpC,SAAY,aAAa,IAAI,MAAM;AACvC;AAEO,IAAMC,YAAgB;AACtB,IAAMC,QAAY;AACzB,SAAS,YAAY,KAAK,SAAS,CAAC,GAAG;AACnC,QAAM,OAAO,IAAI,UAAU;AAAA,IACvB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,IAAI,CAAC,SAAS,gBAAgB;AAAA,IAC9B,OAAO;AAAA,IACP,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACD,OAAK,KAAK,IAAI,QAAQ;AAEtB,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,EAAE,QAAQ,iBAAiB,MAAM;AACjC,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU,IAAI;AAAA,QACd,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,MAAM,CAAC,GAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,CAAE;AAAA,MACxC,CAAC;AAAA,IACL;AAAA,EACJ;AACA,SAAO;AACX;AAGO,IAAM,aAAa,IAAI,SAAc,YAAY;AAAA,EACpD,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACZ,GAAG,GAAG,IAAI;AACH,SAAS,KAAK,QAAQ;AACzB,QAAM,aAAa,KAAK,MAAM;AAC1B,WAAO,MAAM,CAACC,QAAO,MAAM,GAAGC,QAAO,GAAGC,SAAQ,GAAGC,OAAM,GAAG,MAAM,UAAU,GAAG,OAAOH,QAAO,GAAG,UAAU,CAAC,CAAC;AAAA,EAChH,CAAC;AACD,SAAO;AACX;AAEO,SAAS,WAAW,IAAI,QAAQ;AACnC,SAAO,IAAI,cAAc;AAAA,IACrB,MAAM;AAAA,IACN,IAAI,UAAU,EAAE;AAAA,IAChB,KAAK;AAAA,EACT,CAAC;AACL;;;AK/2CO,IAAM,eAAe;AAAA,EACxB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,QAAQ;AACZ;AAGO,SAAS,YAAYI,MAAK;AAC7B,EAAK,OAAO;AAAA,IACR,aAAaA;AAAA,EACjB,CAAC;AACL;AAEO,SAAS,cAAc;AAC1B,SAAY,OAAO,EAAE;AACzB;AAEO,IAAI;AACV,0BAAUC,wBAAuB;AAClC,GAAG,0BAA0B,wBAAwB,CAAC,EAAE;;;ACzBxD,IAAM,IAAI;AAAA,EACN,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,KAAK;AACT;AAEA,IAAM,kBAAgC,oBAAI,IAAI;AAAA;AAAA,EAE1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AACJ,CAAC;AACD,SAAS,cAAc,QAAQ,eAAe;AAC1C,QAAM,UAAU,OAAO;AACvB,MAAI,YAAY,gDAAgD;AAC5D,WAAO;AAAA,EACX;AACA,MAAI,YAAY,2CAA2C;AACvD,WAAO;AAAA,EACX;AACA,MAAI,YAAY,2CAA2C;AACvD,WAAO;AAAA,EACX;AAEA,SAAO,iBAAiB;AAC5B;AACA,SAAS,WAAW,KAAK,KAAK;AAC1B,MAAI,CAAC,IAAI,WAAW,GAAG,GAAG;AACtB,UAAM,IAAI,MAAM,qEAAqE;AAAA,EACzF;AACA,QAAMC,SAAO,IAAI,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AAEnD,MAAIA,OAAK,WAAW,GAAG;AACnB,WAAO,IAAI;AAAA,EACf;AACA,QAAM,UAAU,IAAI,YAAY,kBAAkB,UAAU;AAC5D,MAAIA,OAAK,CAAC,MAAM,SAAS;AACrB,UAAM,MAAMA,OAAK,CAAC;AAClB,QAAI,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG;AACxB,YAAM,IAAI,MAAM,wBAAwB,GAAG,EAAE;AAAA,IACjD;AACA,WAAO,IAAI,KAAK,GAAG;AAAA,EACvB;AACA,QAAM,IAAI,MAAM,wBAAwB,GAAG,EAAE;AACjD;AACA,SAAS,kBAAkB,QAAQ,KAAK;AAEpC,MAAI,OAAO,QAAQ,QAAW;AAE1B,QAAI,OAAO,OAAO,QAAQ,YAAY,OAAO,KAAK,OAAO,GAAG,EAAE,WAAW,GAAG;AACxE,aAAO,EAAE,MAAM;AAAA,IACnB;AACA,UAAM,IAAI,MAAM,4DAA4D;AAAA,EAChF;AACA,MAAI,OAAO,qBAAqB,QAAW;AACvC,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,MAAI,OAAO,0BAA0B,QAAW;AAC5C,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC5D;AACA,MAAI,OAAO,OAAO,UAAa,OAAO,SAAS,UAAa,OAAO,SAAS,QAAW;AACnF,UAAM,IAAI,MAAM,sDAAsD;AAAA,EAC1E;AACA,MAAI,OAAO,qBAAqB,UAAa,OAAO,sBAAsB,QAAW;AACjF,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC9E;AAEA,MAAI,OAAO,MAAM;AACb,UAAM,UAAU,OAAO;AACvB,QAAI,IAAI,KAAK,IAAI,OAAO,GAAG;AACvB,aAAO,IAAI,KAAK,IAAI,OAAO;AAAA,IAC/B;AACA,QAAI,IAAI,WAAW,IAAI,OAAO,GAAG;AAE7B,aAAO,EAAE,KAAK,MAAM;AAChB,YAAI,CAAC,IAAI,KAAK,IAAI,OAAO,GAAG;AACxB,gBAAM,IAAI,MAAM,oCAAoC,OAAO,EAAE;AAAA,QACjE;AACA,eAAO,IAAI,KAAK,IAAI,OAAO;AAAA,MAC/B,CAAC;AAAA,IACL;AACA,QAAI,WAAW,IAAI,OAAO;AAC1B,UAAM,WAAW,WAAW,SAAS,GAAG;AACxC,UAAMC,aAAY,cAAc,UAAU,GAAG;AAC7C,QAAI,KAAK,IAAI,SAASA,UAAS;AAC/B,QAAI,WAAW,OAAO,OAAO;AAC7B,WAAOA;AAAA,EACX;AAEA,MAAI,OAAO,SAAS,QAAW;AAC3B,UAAM,aAAa,OAAO;AAE1B,QAAI,IAAI,YAAY,iBAChB,OAAO,aAAa,QACpB,WAAW,WAAW,KACtB,WAAW,CAAC,MAAM,MAAM;AACxB,aAAO,EAAE,KAAK;AAAA,IAClB;AACA,QAAI,WAAW,WAAW,GAAG;AACzB,aAAO,EAAE,MAAM;AAAA,IACnB;AACA,QAAI,WAAW,WAAW,GAAG;AACzB,aAAO,EAAE,QAAQ,WAAW,CAAC,CAAC;AAAA,IAClC;AAEA,QAAI,WAAW,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,GAAG;AAChD,aAAO,EAAE,KAAK,UAAU;AAAA,IAC5B;AAEA,UAAM,iBAAiB,WAAW,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACzD,QAAI,eAAe,SAAS,GAAG;AAC3B,aAAO,eAAe,CAAC;AAAA,IAC3B;AACA,WAAO,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,GAAG,GAAG,eAAe,MAAM,CAAC,CAAC,CAAC;AAAA,EACrF;AAEA,MAAI,OAAO,UAAU,QAAW;AAC5B,WAAO,EAAE,QAAQ,OAAO,KAAK;AAAA,EACjC;AAEA,QAAM,OAAO,OAAO;AACpB,MAAI,MAAM,QAAQ,IAAI,GAAG;AAErB,UAAM,cAAc,KAAK,IAAI,CAAC,MAAM;AAChC,YAAM,aAAa,EAAE,GAAG,QAAQ,MAAM,EAAE;AACxC,aAAO,kBAAkB,YAAY,GAAG;AAAA,IAC5C,CAAC;AACD,QAAI,YAAY,WAAW,GAAG;AAC1B,aAAO,EAAE,MAAM;AAAA,IACnB;AACA,QAAI,YAAY,WAAW,GAAG;AAC1B,aAAO,YAAY,CAAC;AAAA,IACxB;AACA,WAAO,EAAE,MAAM,WAAW;AAAA,EAC9B;AACA,MAAI,CAAC,MAAM;AAEP,WAAO,EAAE,IAAI;AAAA,EACjB;AACA,MAAI;AACJ,UAAQ,MAAM;AAAA,IACV,KAAK,UAAU;AACX,UAAI,eAAe,EAAE,OAAO;AAE5B,UAAI,OAAO,QAAQ;AACf,cAAM,SAAS,OAAO;AAEtB,YAAI,WAAW,SAAS;AACpB,yBAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,WACS,WAAW,SAAS,WAAW,iBAAiB;AACrD,yBAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,WACS,WAAW,UAAU,WAAW,QAAQ;AAC7C,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,aAAa;AAC7B,yBAAe,aAAa,MAAM,EAAE,IAAI,SAAS,CAAC;AAAA,QACtD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,IAAI,KAAK,CAAC;AAAA,QAClD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,IAAI,KAAK,CAAC;AAAA,QAClD,WACS,WAAW,YAAY;AAC5B,yBAAe,aAAa,MAAM,EAAE,IAAI,SAAS,CAAC;AAAA,QACtD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,OAAO;AACvB,yBAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,WACS,WAAW,WAAW;AAC3B,yBAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,WACS,WAAW,UAAU;AAC1B,yBAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,WACS,WAAW,aAAa;AAC7B,yBAAe,aAAa,MAAM,EAAE,UAAU,CAAC;AAAA,QACnD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,OAAO;AACvB,yBAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,WACS,WAAW,SAAS;AACzB,yBAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,WACS,WAAW,UAAU;AAC1B,yBAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,SAAS;AACzB,yBAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,OAAO;AACvB,yBAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,WACS,WAAW,SAAS;AACzB,yBAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C;AAAA,MAGJ;AAEA,UAAI,OAAO,OAAO,cAAc,UAAU;AACtC,uBAAe,aAAa,IAAI,OAAO,SAAS;AAAA,MACpD;AACA,UAAI,OAAO,OAAO,cAAc,UAAU;AACtC,uBAAe,aAAa,IAAI,OAAO,SAAS;AAAA,MACpD;AACA,UAAI,OAAO,SAAS;AAEhB,uBAAe,aAAa,MAAM,IAAI,OAAO,OAAO,OAAO,CAAC;AAAA,MAChE;AACA,kBAAY;AACZ;AAAA,IACJ;AAAA,IACA,KAAK;AAAA,IACL,KAAK,WAAW;AACZ,UAAI,eAAe,SAAS,YAAY,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,OAAO;AAEpE,UAAI,OAAO,OAAO,YAAY,UAAU;AACpC,uBAAe,aAAa,IAAI,OAAO,OAAO;AAAA,MAClD;AACA,UAAI,OAAO,OAAO,YAAY,UAAU;AACpC,uBAAe,aAAa,IAAI,OAAO,OAAO;AAAA,MAClD;AACA,UAAI,OAAO,OAAO,qBAAqB,UAAU;AAC7C,uBAAe,aAAa,GAAG,OAAO,gBAAgB;AAAA,MAC1D,WACS,OAAO,qBAAqB,QAAQ,OAAO,OAAO,YAAY,UAAU;AAC7E,uBAAe,aAAa,GAAG,OAAO,OAAO;AAAA,MACjD;AACA,UAAI,OAAO,OAAO,qBAAqB,UAAU;AAC7C,uBAAe,aAAa,GAAG,OAAO,gBAAgB;AAAA,MAC1D,WACS,OAAO,qBAAqB,QAAQ,OAAO,OAAO,YAAY,UAAU;AAC7E,uBAAe,aAAa,GAAG,OAAO,OAAO;AAAA,MACjD;AACA,UAAI,OAAO,OAAO,eAAe,UAAU;AACvC,uBAAe,aAAa,WAAW,OAAO,UAAU;AAAA,MAC5D;AACA,kBAAY;AACZ;AAAA,IACJ;AAAA,IACA,KAAK,WAAW;AACZ,kBAAY,EAAE,QAAQ;AACtB;AAAA,IACJ;AAAA,IACA,KAAK,QAAQ;AACT,kBAAY,EAAE,KAAK;AACnB;AAAA,IACJ;AAAA,IACA,KAAK,UAAU;AACX,YAAM,QAAQ,CAAC;AACf,YAAM,aAAa,OAAO,cAAc,CAAC;AACzC,YAAM,cAAc,IAAI,IAAI,OAAO,YAAY,CAAC,CAAC;AAEjD,iBAAW,CAAC,KAAK,UAAU,KAAK,OAAO,QAAQ,UAAU,GAAG;AACxD,cAAM,gBAAgB,cAAc,YAAY,GAAG;AAEnD,cAAM,GAAG,IAAI,YAAY,IAAI,GAAG,IAAI,gBAAgB,cAAc,SAAS;AAAA,MAC/E;AAEA,UAAI,OAAO,eAAe;AACtB,cAAM,YAAY,cAAc,OAAO,eAAe,GAAG;AACzD,cAAM,cAAc,OAAO,wBAAwB,OAAO,OAAO,yBAAyB,WACpF,cAAc,OAAO,sBAAsB,GAAG,IAC9C,EAAE,IAAI;AAEZ,YAAI,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AACjC,sBAAY,EAAE,OAAO,WAAW,WAAW;AAC3C;AAAA,QACJ;AAEA,cAAMC,gBAAe,EAAE,OAAO,KAAK,EAAE,YAAY;AACjD,cAAM,eAAe,EAAE,YAAY,WAAW,WAAW;AACzD,oBAAY,EAAE,aAAaA,eAAc,YAAY;AACrD;AAAA,MACJ;AAEA,UAAI,OAAO,mBAAmB;AAG1B,cAAM,eAAe,OAAO;AAC5B,cAAM,cAAc,OAAO,KAAK,YAAY;AAC5C,cAAM,eAAe,CAAC;AACtB,mBAAW,WAAW,aAAa;AAC/B,gBAAM,eAAe,cAAc,aAAa,OAAO,GAAG,GAAG;AAC7D,gBAAM,YAAY,EAAE,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,CAAC;AACtD,uBAAa,KAAK,EAAE,YAAY,WAAW,YAAY,CAAC;AAAA,QAC5D;AAEA,cAAM,qBAAqB,CAAC;AAC5B,YAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAE/B,6BAAmB,KAAK,EAAE,OAAO,KAAK,EAAE,YAAY,CAAC;AAAA,QACzD;AACA,2BAAmB,KAAK,GAAG,YAAY;AACvC,YAAI,mBAAmB,WAAW,GAAG;AACjC,sBAAY,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAAA,QACzC,WACS,mBAAmB,WAAW,GAAG;AACtC,sBAAY,mBAAmB,CAAC;AAAA,QACpC,OACK;AAED,cAAI,SAAS,EAAE,aAAa,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,CAAC;AACxE,mBAAS,IAAI,GAAG,IAAI,mBAAmB,QAAQ,KAAK;AAChD,qBAAS,EAAE,aAAa,QAAQ,mBAAmB,CAAC,CAAC;AAAA,UACzD;AACA,sBAAY;AAAA,QAChB;AACA;AAAA,MACJ;AAIA,YAAM,eAAe,EAAE,OAAO,KAAK;AACnC,UAAI,OAAO,yBAAyB,OAAO;AAEvC,oBAAY,aAAa,OAAO;AAAA,MACpC,WACS,OAAO,OAAO,yBAAyB,UAAU;AAEtD,oBAAY,aAAa,SAAS,cAAc,OAAO,sBAAsB,GAAG,CAAC;AAAA,MACrF,OACK;AAED,oBAAY,aAAa,YAAY;AAAA,MACzC;AACA;AAAA,IACJ;AAAA,IACA,KAAK,SAAS;AAIV,YAAM,cAAc,OAAO;AAC3B,YAAM,QAAQ,OAAO;AACrB,UAAI,eAAe,MAAM,QAAQ,WAAW,GAAG;AAE3C,cAAM,aAAa,YAAY,IAAI,CAAC,SAAS,cAAc,MAAM,GAAG,CAAC;AACrE,cAAM,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IACjE,cAAc,OAAO,GAAG,IACxB;AACN,YAAI,MAAM;AACN,sBAAY,EAAE,MAAM,UAAU,EAAE,KAAK,IAAI;AAAA,QAC7C,OACK;AACD,sBAAY,EAAE,MAAM,UAAU;AAAA,QAClC;AAEA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,sBAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AACA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,sBAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AAAA,MACJ,WACS,MAAM,QAAQ,KAAK,GAAG;AAE3B,cAAM,aAAa,MAAM,IAAI,CAAC,SAAS,cAAc,MAAM,GAAG,CAAC;AAC/D,cAAM,OAAO,OAAO,mBAAmB,OAAO,OAAO,oBAAoB,WACnE,cAAc,OAAO,iBAAiB,GAAG,IACzC;AACN,YAAI,MAAM;AACN,sBAAY,EAAE,MAAM,UAAU,EAAE,KAAK,IAAI;AAAA,QAC7C,OACK;AACD,sBAAY,EAAE,MAAM,UAAU;AAAA,QAClC;AAEA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,sBAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AACA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,sBAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AAAA,MACJ,WACS,UAAU,QAAW;AAE1B,cAAM,UAAU,cAAc,OAAO,GAAG;AACxC,YAAI,cAAc,EAAE,MAAM,OAAO;AAEjC,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,wBAAc,YAAY,IAAI,OAAO,QAAQ;AAAA,QACjD;AACA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,wBAAc,YAAY,IAAI,OAAO,QAAQ;AAAA,QACjD;AACA,oBAAY;AAAA,MAChB,OACK;AAED,oBAAY,EAAE,MAAM,EAAE,IAAI,CAAC;AAAA,MAC/B;AACA;AAAA,IACJ;AAAA,IACA;AACI,YAAM,IAAI,MAAM,qBAAqB,IAAI,EAAE;AAAA,EACnD;AACA,SAAO;AACX;AACA,SAAS,cAAc,QAAQ,KAAK;AAChC,MAAI,OAAO,WAAW,WAAW;AAC7B,WAAO,SAAS,EAAE,IAAI,IAAI,EAAE,MAAM;AAAA,EACtC;AAEA,MAAI,aAAa,kBAAkB,QAAQ,GAAG;AAC9C,QAAM,kBAAkB,OAAO,QAAQ,OAAO,SAAS,UAAa,OAAO,UAAU;AAGrF,MAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAC7C,UAAM,UAAU,OAAO,MAAM,IAAI,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAC7D,UAAM,aAAa,EAAE,MAAM,OAAO;AAClC,iBAAa,kBAAkB,EAAE,aAAa,YAAY,UAAU,IAAI;AAAA,EAC5E;AAEA,MAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAC7C,UAAM,UAAU,OAAO,MAAM,IAAI,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAC7D,UAAM,aAAa,EAAE,IAAI,OAAO;AAChC,iBAAa,kBAAkB,EAAE,aAAa,YAAY,UAAU,IAAI;AAAA,EAC5E;AAEA,MAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAC7C,QAAI,OAAO,MAAM,WAAW,GAAG;AAC3B,mBAAa,kBAAkB,aAAa,EAAE,IAAI;AAAA,IACtD,OACK;AACD,UAAI,SAAS,kBAAkB,aAAa,cAAc,OAAO,MAAM,CAAC,GAAG,GAAG;AAC9E,YAAM,WAAW,kBAAkB,IAAI;AACvC,eAAS,IAAI,UAAU,IAAI,OAAO,MAAM,QAAQ,KAAK;AACjD,iBAAS,EAAE,aAAa,QAAQ,cAAc,OAAO,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,MACvE;AACA,mBAAa;AAAA,IACjB;AAAA,EACJ;AAEA,MAAI,OAAO,aAAa,QAAQ,IAAI,YAAY,eAAe;AAC3D,iBAAa,EAAE,SAAS,UAAU;AAAA,EACtC;AAEA,MAAI,OAAO,aAAa,MAAM;AAC1B,iBAAa,EAAE,SAAS,UAAU;AAAA,EACtC;AAIA,MAAI,OAAO,YAAY,QAAW;AAC9B,iBAAa,WAAW,QAAQ,OAAO,OAAO;AAAA,EAClD;AAIA,QAAM,YAAY,CAAC;AACnB,QAAM,mBAAmB,CAAC,OAAO,MAAM,YAAY,WAAW,eAAe,eAAe,gBAAgB;AAC5G,aAAW,OAAO,kBAAkB;AAChC,QAAI,OAAO,QAAQ;AACf,gBAAU,GAAG,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACJ;AACA,QAAM,sBAAsB,CAAC,mBAAmB,oBAAoB,eAAe;AACnF,aAAW,OAAO,qBAAqB;AACnC,QAAI,OAAO,QAAQ;AACf,gBAAU,GAAG,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACJ;AACA,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACnC,QAAI,CAAC,gBAAgB,IAAI,GAAG,GAAG;AAC3B,gBAAU,GAAG,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACJ;AACA,MAAI,OAAO,KAAK,SAAS,EAAE,SAAS,GAAG;AACnC,QAAI,SAAS,IAAI,YAAY,SAAS;AAAA,EAC1C;AAIA,MAAI,OAAO,aAAa;AACpB,iBAAa,WAAW,SAAS,OAAO,WAAW;AAAA,EACvD;AACA,SAAO;AACX;AAGO,SAAS,eAAe,QAAQ,QAAQ;AAE3C,MAAI,OAAO,WAAW,WAAW;AAC7B,WAAO,SAAS,EAAE,IAAI,IAAI,EAAE,MAAM;AAAA,EACtC;AAKA,MAAI;AACJ,MAAI;AACA,iBAAa,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AAAA,EAClD,QACM;AACF,UAAM,IAAI,MAAM,gGAAgG;AAAA,EACpH;AACA,QAAMC,WAAU,cAAc,YAAY,QAAQ,aAAa;AAC/D,QAAM,OAAQ,WAAW,SAAS,WAAW,eAAe,CAAC;AAC7D,QAAM,MAAM;AAAA,IACR,SAAAA;AAAA,IACA;AAAA,IACA,MAAM,oBAAI,IAAI;AAAA,IACd,YAAY,oBAAI,IAAI;AAAA,IACpB,YAAY;AAAA,IACZ,UAAU,QAAQ,YAAY;AAAA,EAClC;AACA,SAAO,cAAc,YAAY,GAAG;AACxC;;;ACtlBA;AAAA;AAAA,gBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,cAAAC;AAAA;AAEO,SAASC,QAAO,QAAQ;AAC3B,SAAY,eAAuB,WAAW,MAAM;AACxD;AACO,SAASC,QAAO,QAAQ;AAC3B,SAAY,eAAuB,WAAW,MAAM;AACxD;AACO,SAASC,SAAQ,QAAQ;AAC5B,SAAY,gBAAwB,YAAY,MAAM;AAC1D;AACO,SAASC,QAAO,QAAQ;AAC3B,SAAY,eAAuB,WAAW,MAAM;AACxD;AACO,SAASC,MAAK,QAAQ;AACzB,SAAY,aAAqB,SAAS,MAAM;AACpD;;;A7EPA,OAAO,WAAG,CAAC;;;A8ERX,SAAS,YAAYC,WAAU;AAC/B,OAAOC,WAAU;AAGjB,IAAM,qBAAqB,iBAAE,OAAO;AAAA,EAClC,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,WAAW,iBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACnD,SAAS,iBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC9C,UAAU,iBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAU,EAAE,QAAQ,GAAS;AACzE,CAAC;AAYM,IAAM,eAA6D;AAAA,EACxE,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa,CAAC,MAAM;AAAA,EACpB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,SAAS,OAAO,MAAM,QAAQ;AAC5B,QAAI;AACF,YAAM,UAAUC,MAAK,WAAW,KAAK,IAAI,IAAI,KAAK,OAAOA,MAAK,KAAK,IAAI,KAAK,KAAK,IAAI;AACrF,YAAM,MAAM,MAAMC,IAAG,SAAS,SAAS,EAAE,UAAU,SAAS,QAAQ,IAAI,OAAO,CAAU;AACzF,YAAM,UAAU,OAAO,QAAQ,WAAW,MAAM,IAAI,SAAS,OAAO;AACpE,YAAM,YAAY,QAAQ,SAAS,KAAK,WAAW,QAAQ,MAAM,GAAG,KAAK,QAAQ,IAAI;AACrF,YAAM,QAAQ,UAAU,MAAM,IAAI;AAClC,YAAM,aAAa,QAAQ,MAAM,IAAI,EAAE;AACvC,YAAM,QAAQ,KAAK,aAAa;AAChC,YAAM,MAAM,KAAK,IAAI,KAAK,WAAW,MAAM,QAAQ,MAAM,MAAM;AAC/D,aAAO,QAAQ;AAAA,QACb,MAAM;AAAA,QACN,SAAS,MAAM,MAAM,OAAO,GAAG,EAAE,KAAK,IAAI;AAAA,QAC1C;AAAA,QACA,WAAW,EAAE,OAAO,KAAK,MAAM,EAAE;AAAA,QACjC,WAAW,QAAQ;AAAA,MACrB,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,aAAO,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAClE;AAAA,EACF;AACF;AAEA,IAAM,sBAAsB,iBAAE,OAAO;AAAA,EACnC,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,SAAS,iBAAE,OAAO;AAAA,EAClB,YAAY,iBAAE,QAAQ,EAAE,QAAQ,KAAK;AACvC,CAAC;AASM,IAAM,gBAAgE;AAAA,EAC3E,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa,CAAC,OAAO;AAAA,EACrB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,SAAS,OAAO,MAAM,QAAQ;AAC5B,QAAI;AACF,YAAM,UAAUD,MAAK,WAAW,KAAK,IAAI,IAAI,KAAK,OAAOA,MAAK,KAAK,IAAI,KAAK,KAAK,IAAI;AACrF,UAAI,KAAK,YAAY;AACnB,cAAMC,IAAG,MAAMD,MAAK,QAAQ,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MAC3D;AACA,YAAMC,IAAG,UAAU,SAAS,KAAK,SAAS,EAAE,UAAU,SAAS,QAAQ,IAAI,OAAO,CAAU;AAC5F,aAAO,QAAQ,EAAE,MAAM,SAAS,cAAc,KAAK,QAAQ,OAAO,CAAC;AAAA,IACrE,SAAS,KAAK;AACZ,aAAO,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAClE;AAAA,EACF;AACF;AAEA,IAAM,qBAAqB,iBAAE,OAAO;AAAA,EAClC,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,WAAW,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,WAAW,iBAAE,OAAO;AAAA,EACpB,YAAY,iBAAE,QAAQ,EAAE,QAAQ,KAAK;AACvC,CAAC;AASM,IAAM,eAA6D;AAAA,EACxE,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa,CAAC,OAAO;AAAA,EACrB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,SAAS,OAAO,MAAM,QAAQ;AAC5B,QAAI;AACF,YAAM,UAAUD,MAAK,WAAW,KAAK,IAAI,IAAI,KAAK,OAAOA,MAAK,KAAK,IAAI,KAAK,KAAK,IAAI;AACrF,YAAM,UAAU,MAAMC,IAAG,SAAS,SAAS,EAAE,UAAU,SAAS,QAAQ,IAAI,OAAO,CAAU;AAC7F,YAAM,OAAO,OAAO,YAAY,WAAW,UAAU,QAAQ,SAAS,OAAO;AAC7E,UAAI,cAAc;AAClB,UAAI;AACJ,UAAI,KAAK,YAAY;AACnB,cAAM,QAAQ,KAAK,MAAM,KAAK,SAAS;AACvC,sBAAc,MAAM,SAAS;AAC7B,qBAAa,MAAM,KAAK,KAAK,SAAS;AAAA,MACxC,OAAO;AACL,cAAM,MAAM,KAAK,QAAQ,KAAK,SAAS;AACvC,YAAI,QAAQ,IAAI;AACd,wBAAc;AACd,uBAAa;AAAA,QACf,OAAO;AACL,wBAAc;AACd,uBAAa,KAAK,MAAM,GAAG,GAAG,IAAI,KAAK,YAAY,KAAK,MAAM,MAAM,KAAK,UAAU,MAAM;AAAA,QAC3F;AAAA,MACF;AACA,UAAI,cAAc,GAAG;AACnB,cAAMA,IAAG,UAAU,SAAS,YAAY,EAAE,UAAU,SAAS,QAAQ,IAAI,OAAO,CAAU;AAAA,MAC5F;AACA,aAAO,QAAQ,EAAE,MAAM,SAAS,qBAAqB,YAAY,CAAC;AAAA,IACpE,SAAS,KAAK;AACZ,aAAO,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAClE;AAAA,EACF;AACF;;;ACpIA,SAAS,aAAa;AAGtB,IAAM,iBAAiB,iBAAE,OAAO;AAAA,EAC9B,SAAS,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,KAAK,iBAAE,OAAO,EAAE,SAAS;AAAA,EACzB,WAAW,iBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAO,EAAE,QAAQ,GAAM;AACpE,CAAC;AAWM,IAAM,WAAiD;AAAA,EAC5D,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa,CAAC,SAAS;AAAA,EACvB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,SAAS,OAAO,MAAM,QAAQ;AAC5B,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,YAAM,QAAQ,KAAK,IAAI;AACvB,YAAM,MAAM,KAAK,OAAO,IAAI;AAC5B,YAAM,QAAQ,MAAM,KAAK,SAAS,EAAE,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC;AAC1E,UAAI,SAAS;AACb,UAAI,SAAS;AACb,YAAM,YAAY,OAAO;AACzB,YAAM,QAAQ,GAAG,QAAQ,CAAC,SAAiB;AACzC,YAAI,OAAO,SAAS,UAAW,WAAU,KAAK,SAAS,OAAO;AAAA,MAChE,CAAC;AACD,YAAM,QAAQ,GAAG,QAAQ,CAAC,SAAiB;AACzC,YAAI,OAAO,SAAS,UAAW,WAAU,KAAK,SAAS,OAAO;AAAA,MAChE,CAAC;AACD,YAAM,QAAQ,WAAW,MAAM;AAC7B,cAAM,KAAK,SAAS;AACpB,gBAAQ,SAAS,gCAAgC,KAAK,SAAS,IAAI,CAAC;AAAA,MACtE,GAAG,KAAK,SAAS;AACjB,YAAM,GAAG,SAAS,CAAC,SAAS;AAC1B,qBAAa,KAAK;AAClB,gBAAQ,QAAQ;AAAA,UACd,QAAQ,OAAO,MAAM,GAAG,SAAS;AAAA,UACjC,QAAQ,OAAO,MAAM,GAAG,SAAS;AAAA,UACjC,UAAU,QAAQ;AAAA,UAClB,YAAY,KAAK,IAAI,IAAI;AAAA,QAC3B,CAAC,CAAC;AAAA,MACJ,CAAC;AACD,YAAM,GAAG,SAAS,CAAC,QAAQ;AACzB,qBAAa,KAAK;AAClB,gBAAQ,SAAS,IAAI,OAAO,CAAC;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;ACzDA,SAAS,YAAYC,YAAU;AAC/B,OAAOC,WAAU;AAGjB,IAAM,wBAAwB,iBAAE,OAAO;AAAA,EACrC,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,SAAS,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,cAAc,iBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC;AAAA,EACtD,YAAY,iBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAI,EAAE,QAAQ,EAAE;AAC9D,CAAC;AAiBM,IAAM,kBAA+D;AAAA,EAC1E,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa,CAAC,MAAM;AAAA,EACpB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,SAAS,OAAO,MAAM,QAAQ;AAC5B,QAAI;AACF,YAAM,UAAUC,MAAK,WAAW,KAAK,IAAI,IAAI,KAAK,OAAOA,MAAK,KAAK,IAAI,KAAK,KAAK,IAAI;AACrF,YAAM,UAAU,MAAMC,KAAG,SAAS,SAAS,EAAE,UAAU,SAAS,QAAQ,IAAI,OAAO,CAAU;AAC7F,YAAM,OAAO,OAAO,YAAY,WAAW,UAAU,QAAQ,SAAS,OAAO;AAC7E,YAAM,QAAQ,KAAK,MAAM,IAAI;AAC7B,YAAM,QAAQ,IAAI,OAAO,KAAK,SAAS,IAAI;AAC3C,YAAM,UAAuB,CAAC;AAC9B,UAAI,eAAe;AACnB,UAAI,YAAY;AAChB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAI,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG;AACxB,gBAAM,YAAY;AAClB;AACA,cAAI,QAAQ,SAAS,KAAK,YAAY;AACpC,kBAAM,cAAc,KAAK,IAAI,GAAG,IAAI,KAAK,YAAY;AACrD,kBAAM,WAAW,KAAK,IAAI,MAAM,SAAS,GAAG,IAAI,KAAK,YAAY;AACjE,oBAAQ,KAAK;AAAA,cACX,MAAM;AAAA,cACN,MAAM,IAAI;AAAA,cACV,MAAM,MAAM,CAAC;AAAA,cACb,SAAS;AAAA,gBACP,QAAQ,MAAM,MAAM,aAAa,CAAC;AAAA,gBAClC,OAAO,MAAM,MAAM,IAAI,GAAG,WAAW,CAAC;AAAA,cACxC;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AACL,wBAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF;AACA,aAAO,QAAQ,EAAE,SAAS,cAAc,UAAU,CAAC;AAAA,IACrD,SAAS,KAAK;AACZ,aAAO,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,IAClE;AAAA,EACF;AACF;;;AC1DA,OAAOC,YAAU;AAEV,IAAM,wBAAN,cAAoC,MAAM;AAAA,EAC/C,YACE,SACgB,eACA,cAChB;AACA,UAAM,OAAO;AAHG;AACA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;AAYO,SAAS,qBACd,UACA,UAA6B,CAAC,GACtB;AACR,MAAI,OAAO,aAAa,YAAY,SAAS,WAAW,GAAG;AACzD,UAAM,IAAI,sBAAsB,cAAc,UAAU,EAAE;AAAA,EAC5D;AACA,QAAM,OAAOA,OAAK,QAAQ,QAAQ,QAAQ,QAAQ,IAAI,CAAC;AACvD,QAAM,WAAWA,OAAK,WAAW,QAAQ,IACrCA,OAAK,QAAQ,QAAQ,IACrBA,OAAK,QAAQ,MAAM,QAAQ;AAI/B,QAAM,cAAc,KAAK,SAASA,OAAK,GAAG,IAAI,OAAO,OAAOA,OAAK;AACjE,MAAI,aAAa,QAAQ,CAAC,SAAS,WAAW,WAAW,GAAG;AAC1D,UAAM,IAAI;AAAA,MACR,8BAA8B,QAAQ,WAAM,QAAQ,WAAW,IAAI;AAAA,MACnE;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;AChDO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAC3C,YACE,SACgB,QACA,SAChB;AACA,UAAM,OAAO;AAHG;AACA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;AAaA,IAAM,gBAA6B;AAAA;AAAA;AAAA,EAGjC,EAAE,SAAS,oCAAoC,QAAQ,WAAW;AAAA,EAClE,EAAE,SAAS,qCAAqC,QAAQ,cAAc;AAAA,EACtE,EAAE,SAAS,sCAAsC,QAAQ,eAAe;AAAA,EACxE,EAAE,SAAS,qCAAqC,QAAQ,cAAc;AAAA;AAAA,EAEtE,EAAE,SAAS,oCAAoC,QAAQ,iBAAiB;AAAA,EACxE,EAAE,SAAS,uBAAuB,QAAQ,eAAe;AAAA;AAAA,EAEzD,EAAE,SAAS,2BAA2B,QAAQ,YAAY;AAAA;AAAA,EAE1D,EAAE,SAAS,4CAA4C,QAAQ,YAAY;AAAA,EAC3E,EAAE,SAAS,4CAA4C,QAAQ,YAAY;AAAA;AAAA,EAE3E,EAAE,SAAS,aAAa,QAAQ,gCAAgC;AAAA;AAAA,EAEhE,EAAE,SAAS,eAAe,QAAQ,mBAAmB;AAAA,EACrD,EAAE,SAAS,gBAAgB,QAAQ,oBAAoB;AAAA,EACvD,EAAE,SAAS,eAAe,QAAQ,mBAAmB;AACvD;AAMO,SAAS,kBACd,SACA,QAAqB,eACH;AAClB,MAAI,OAAO,YAAY,YAAY,QAAQ,WAAW,EAAG,QAAO;AAChE,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,QAAQ,KAAK,OAAO,GAAG;AAC9B,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAMO,SAAS,mBAAmB,SAAuB;AACxD,QAAM,UAAU,kBAAkB,OAAO;AACzC,MAAI,SAAS;AACX,UAAM,IAAI;AAAA,MACR,0BAA0B,QAAQ,MAAM;AAAA,MACxC,QAAQ;AAAA,MACR,QAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AACF;;;AC1EA,SAAS,YAAYC,YAAU;AAC/B,OAAOC,YAAU;AACjB,OAAOC,SAAQ;AAqBR,IAAM,cAAN,MAAkB;AAAA,EACN;AAAA,EACT,aAA4B,QAAQ,QAAQ;AAAA,EAEpD,YAAY,SAAkB;AAC5B,SAAK,UAAU,WAAW,iBAAiB;AAAA,EAC7C;AAAA;AAAA,EAGA,IAAI,OAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,OAAkC;AAC7C,UAAM,OAAO,KAAK,UAAU,KAAK,IAAI;AACrC,SAAK,aAAa,KAAK,WAAW,KAAK,YAAY;AACjD,YAAMF,KAAG,MAAMC,OAAK,QAAQ,KAAK,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAC9D,YAAMD,KAAG,WAAW,KAAK,SAAS,MAAM,OAAO;AAAA,IACjD,CAAC;AACD,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,QAAW,QASF;AACb,UAAM,QAAQ,KAAK,IAAI;AACvB,QAAI,KAAK;AACT,QAAIG;AACJ,QAAI,gBAAgB;AACpB,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,GAAG;AAC/B,uBAAiB,OAAO,YAAY,MAAM,KAAK,cAAc,MAAM,GAAG,MAAM,GAAG,GAAG;AAClF,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,WAAK;AACL,MAAAA,UAAQ,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AACvD,uBAAiB,OAAO,iBAAiB,GAAG,KAAKA,SAAO,MAAM,GAAG,GAAG;AACpE,YAAM;AAAA,IACR,UAAE;AACA,YAAM,QAAoB;AAAA,QACxB,IAAI,IAAI,KAAK,KAAK,EAAE,YAAY;AAAA,QAChC,WAAW,OAAO;AAAA,QAClB,MAAM,OAAO;AAAA,QACb,MAAM,WAAW,OAAO,IAAI;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,YAAY,KAAK,IAAI,IAAI;AAAA,QACzB,GAAIA,YAAU,SAAY,EAAE,OAAAA,QAAM,IAAI,CAAC;AAAA,MACzC;AAGA,WAAK,KAAK,OAAO,KAAK,EAAE,MAAM,CAAC,QAAQ;AAErC,gBAAQ,MAAM,yCAAyC,GAAG;AAAA,MAC5D,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,SAAS,mBAA2B;AAClC,QAAM,WAAW,QAAQ,IAAI;AAC7B,MAAI,YAAY,SAAS,KAAK,EAAE,SAAS,EAAG,QAAO;AACnD,SAAOF,OAAK,KAAKC,IAAG,OAAO,GAAG,eAAe,aAAa;AAC5D;AAOA,SAAS,WAAW,MAAwD;AAC1E,QAAM,WAAoC,CAAC;AAC3C,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,GAAG;AACzC,QAAI,uCAAuC,KAAK,CAAC,KAAK,OAAO,MAAM,UAAU;AAC3E,eAAS,CAAC,IAAI;AAAA,IAChB,WAAW,OAAO,MAAM,YAAY,EAAE,SAAS,IAAI;AACjD,eAAS,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI;AAAA,IACjC,OAAO;AACL,eAAS,CAAC,IAAI;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,cAAc,OAAwB;AAC7C,MAAI;AACF,WAAO,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,KAAK;AAAA,EACjE,QAAQ;AACN,WAAO,OAAO,KAAK;AAAA,EACrB;AACF;;;ACnFO,SAAS,0BACd,UAAiC,CAAC,GACuB;AACzD,QAAM,OAAO,QAAQ,QAAQ,QAAQ,IAAI;AACzC,QAAM,QAAQ,QAAQ,SAAS,IAAI,YAAY;AAC/C,QAAM,YAAY,QAAQ,aAAa;AAGvC,QAAM,eAAe,gBAAgB,cAAc,CAAC,MAAM,GAAG,MAAM,OAAO,SAAS;AACnF,QAAM,gBAAgB,gBAAgB,eAAe,CAAC,MAAM,GAAG,MAAM,OAAO,SAAS;AACrF,QAAM,eAAe,gBAAgB,cAAc,CAAC,MAAM,GAAG,MAAM,OAAO,SAAS;AACnF,QAAM,kBAAkB,gBAAgB,iBAAiB,CAAC,MAAM,GAAG,MAAM,OAAO,SAAS;AAGzF,QAAM,WAAW,oBAAoB,UAAU,OAAO,SAAS;AAE/D,QAAME,YAAW,IAAI,aAAa;AAClC,EAAAA,UAAS,SAAS,YAAY;AAC9B,EAAAA,UAAS,SAAS,aAAa;AAC/B,EAAAA,UAAS,SAAS,YAAY;AAC9B,EAAAA,UAAS,SAAS,QAAQ;AAC1B,EAAAA,UAAS,SAAS,eAAe;AAEjC,QAAM,QAA8B;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,IAAI,CAAC,OAAO;AAAA,IACZ,MAAM,EAAE;AAAA,IACR,aAAa,EAAE;AAAA,IACf,aAAa,EAAE,eAAe,CAAC;AAAA,EACjC,EAAE;AACF,SAAO,EAAE,UAAAA,WAAU,MAAM;AAC3B;AAQA,SAAS,gBACP,UACA,UACA,MACA,OACA,WACsB;AACtB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS,OAAO,SAAY,QAA8C;AAExE,YAAM,OAAO;AACb,iBAAW,OAAO,UAAU;AAC1B,cAAM,IAAI,KAAK,GAAG;AAClB,YAAI,OAAO,MAAM,YAAY,EAAE,SAAS,GAAG;AACzC,cAAI;AACF,iBAAK,GAAG,IAAI,qBAAqB,GAAG,EAAE,KAAK,CAAC;AAAA,UAC9C,SAAS,KAAK;AACZ,gBAAI,eAAe,uBAAuB;AAExC,oBAAM,MAAM,OAAO;AAAA,gBACjB,KAAI,oBAAI,KAAK,GAAE,YAAY;AAAA,gBAC3B;AAAA,gBACA,MAAM,SAAS;AAAA,gBACf,MAAM,eAAe,IAAI;AAAA,gBACzB,IAAI;AAAA,gBACJ,eAAe,IAAI;AAAA,gBACnB,YAAY;AAAA,gBACZ,OAAO;AAAA,cACT,CAAC;AACD,qBAAO;AAAA,gBACL,IAAI;AAAA,gBACJ,OAAO,aAAa,IAAI,OAAO;AAAA,cACjC;AAAA,YACF;AACA,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,UAAI;AACF,eAAO,MAAM,MAAM,QAAQ;AAAA,UACzB,MAAM,SAAS;AAAA,UACf,MAAM,eAAe,IAAI;AAAA,UACzB;AAAA,UACA,IAAI,MAAM,SAAS,QAAQ,SAAS,GAAG;AAAA,QACzC,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAMA,SAAS,oBACP,UACA,OACA,WACsB;AACtB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS,OAAO,SAAY,QAA8C;AACxE,YAAM,OAAO;AACb,YAAM,MAAM,KAAK,SAAS;AAC1B,UAAI,OAAO,QAAQ,UAAU;AAC3B,YAAI;AACF,6BAAmB,GAAG;AAAA,QACxB,SAAS,KAAK;AACZ,cAAI,eAAe,mBAAmB;AACpC,kBAAM,MAAM,OAAO;AAAA,cACjB,KAAI,oBAAI,KAAK,GAAE,YAAY;AAAA,cAC3B;AAAA,cACA,MAAM,SAAS;AAAA,cACf,MAAM,eAAe,IAAI;AAAA,cACzB,IAAI;AAAA,cACJ,eAAe,IAAI;AAAA,cACnB,YAAY;AAAA,cACZ,OAAO;AAAA,YACT,CAAC;AACD,mBAAO;AAAA,cACL,IAAI;AAAA,cACJ,OAAO,mBAAmB,IAAI,OAAO;AAAA,YACvC;AAAA,UACF;AACA,gBAAM;AAAA,QACR;AAAA,MACF;AACA,UAAI;AACF,eAAO,MAAM,MAAM,QAAQ;AAAA,UACzB,MAAM,SAAS;AAAA,UACf,MAAM,eAAe,IAAI;AAAA,UACzB;AAAA,UACA,IAAI,MAAM,SAAS,QAAQ,SAAS,GAAG;AAAA,QACzC,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,eAAe,MAAwD;AAC9E,QAAM,MAA+B,CAAC;AACtC,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,IAAI,GAAG;AACzC,QAAI,uCAAuC,KAAK,CAAC,KAAK,OAAO,MAAM,UAAU;AAC3E,UAAI,CAAC,IAAI;AAAA,IACX,WAAW,OAAO,MAAM,YAAY,EAAE,SAAS,KAAK;AAClD,UAAI,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,IAAI;AAAA,IAC7B,OAAO;AACL,UAAI,CAAC,IAAI;AAAA,IACX;AAAA,EACF;AACA,SAAO;AACT;;;ACjNA,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,OAAOC,YAAU;AAEjB,IAAM,gBAAgB,UAAU,QAAQ;AAwCxC,eAAe,IAAI,KAAa,MAAwC;AACtE,MAAI;AACF,UAAM,EAAE,OAAO,IAAI,MAAM,cAAc,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG;AAAA,MAClE,WAAW,KAAK,OAAO;AAAA,IACzB,CAAC;AACD,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,eAAsB,UAAU,MAAc,QAAQ,IAAI,GAAqB;AAC7E,QAAM,MAAM,MAAM,IAAI,KAAK,CAAC,aAAa,uBAAuB,CAAC;AACjE,SAAO,KAAK,KAAK,MAAM;AACzB;AAMA,eAAsB,eAAe,OAAoB,CAAC,GAAwB;AAChF,QAAM,MAAM,KAAK,OAAO,QAAQ,IAAI;AACpC,QAAM,WAAW,KAAK,YAAY;AAClC,QAAM,WAAY,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAM;AAC/C,QAAM,SAAS,KAAK,SACd,MAAM,IAAI,KAAK,CAAC,QAAQ,UAAU,CAAC,KAAM,KAC3C;AACJ,QAAM,WAAW,CAAC,QAAQ,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI;AACzE,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO,EAAE,MAAM,IAAI,WAAW,OAAO,OAAO,KAAK;AAAA,EACnD;AACA,MAAI,SAAS,SAAS,UAAU;AAC9B,WAAO,EAAE,MAAM,SAAS,MAAM,GAAG,QAAQ,GAAG,WAAW,MAAM,OAAO,MAAM;AAAA,EAC5E;AACA,SAAO,EAAE,MAAM,UAAU,WAAW,OAAO,OAAO,MAAM;AAC1D;AAWA,eAAsB,mBAAmB,OAAoB,CAAC,GAAwB;AACpF,QAAM,MAAM,KAAK,OAAO,QAAQ,IAAI;AACpC,QAAM,UAAU,KAAK,YAAY;AAMjC,QAAM,eAAgB,MAAM,IAAI,KAAK,CAAC,UAAU,aAAa,CAAC,KAAM;AACpE,QAAM,WAAW,aACd,MAAM,IAAI,EACV,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,EAChC,OAAO,CAAC,SAAS,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,WAAW,IAAI,CAAC,EACjE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC;AAGrC,QAAM,IAAI,KAAK,CAAC,YAAY,MAAM,GAAG,CAAC;AAGtC,MAAI,SAAS;AACX,UAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,MAAM,GAAG,CAAC;AAAA,EAC7C;AAEA,SAAO;AAAA,IACL,UAAU;AAAA,IACV,UAAU,UAAU,WAAW,CAAC;AAAA,IAChC,SAAS,YAAY,SAAS,MAAM,WAAW,UAAU,qBAAqB,EAAE;AAAA,EAClF;AACF;AAGO,SAAS,qBAA6B;AAE3C,SAAOA,OAAK,QAAQ,WAAW,MAAM,MAAM,IAAI;AACjD;;;ACjFO,SAAS,kBACd,UACA,UAA6B,CAAC,GACZ;AAClB,QAAM,YAAY,QAAQ,aAAa;AACvC,QAAM,aAAa,QAAQ,cAAc;AACzC,QAAM,MAAM,QAAQ,OAAO,KAAK,IAAI;AACpC,QAAM,WAAW,SAAS;AAE1B,MAAI,YAAY,aAAa,cAAc,UAAU;AACnD,WAAO;AAAA,MACL;AAAA,MACA,cAAc;AAAA,MACd,eAAe;AAAA,MACf,gBAAgB;AAAA,IAClB;AAAA,EACF;AAGA,QAAM,YAAY,KAAK,IAAI,YAAY,QAAQ;AAC/C,QAAM,eAAe,WAAW;AAChC,QAAM,OAAO,SAAS,MAAM,CAAC,SAAS;AAEtC,QAAM,UAA0B;AAAA,IAC9B,IAAI,WAAW,GAAG,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC5D,MAAM;AAAA,IACN,SAAS,aAAa,YAAY,qCAAqC,SAAS;AAAA,IAChF,IAAI;AAAA,EACN;AAEA,SAAO;AAAA,IACL,UAAU,CAAC,SAAS,GAAG,IAAI;AAAA,IAC3B;AAAA,IACA,eAAe;AAAA,IACf,gBAAgB;AAAA,EAClB;AACF;AAGO,SAAS,wBAAwB,QAAkC;AACxE,MAAI,OAAO,iBAAiB,GAAG;AAC7B,WAAO,mCAAmC,OAAO,aAAa;AAAA,EAChE;AACA,SAAO,aAAa,OAAO,aAAa,WAAM,OAAO,SAAS,MAAM,sBAAsB,OAAO,YAAY;AAC/G;;;ACvEA,SAAS,YAAYC,MAAI,cAAAC,aAAY,YAAAC,WAAU,YAAY,gBAAgB,aAAAC,kBAAiB;AAC5F,OAAOC,YAAU;AACjB,OAAOC,SAAQ;AAER,IAAM,uBAAuB,KAAK,OAAO;AAqBzC,IAAM,gBAAN,MAAoB;AAAA,EACR;AAAA,EACT,aAA4B,QAAQ,QAAQ;AAAA,EAEpD,YAAYC,OAAe;AACzB,SAAK,OAAOA,SAAQ,QAAQ,IAAI,yBAC3BF,OAAK,KAAKC,IAAG,QAAQ,GAAG,QAAQ,eAAe,eAAe;AACnE,IAAAF,WAAUC,OAAK,QAAQ,KAAK,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACxD;AAAA;AAAA,EAGA,OAAO,KAAwD;AAC7D,UAAM,OAAsB,EAAE,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,GAAG,IAAI;AAC/D,SAAK,aAAa,KAAK,WAAW,KAAK,MAAM,KAAK,OAAO,IAAI,CAAC;AAC9D,SAAK,KAAK,WAAW,MAAM,MAAM;AAAA,IAAgC,CAAC;AAAA,EACpE;AAAA;AAAA,EAGQ,OAAO,KAAmC;AAChD,WAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,UAAI;AACF,aAAK,YAAY;AACjB,cAAM,OAAO,KAAK,UAAU,GAAG,IAAI;AACnC,uBAAe,KAAK,MAAM,MAAM,EAAE,UAAU,QAAQ,CAAC;AACrD,gBAAQ;AAAA,MACV,SAAS,KAAK;AACZ,eAAO,GAAG;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAuB;AAC3B,UAAM,KAAK;AAAA,EACb;AAAA;AAAA,EAGQ,cAAoB;AAC1B,QAAI,CAACH,YAAW,KAAK,IAAI,EAAG;AAC5B,QAAI;AACF,YAAM,OAAOC,UAAS,KAAK,IAAI;AAC/B,UAAI,KAAK,QAAQ,sBAAsB;AACrC,cAAM,UAAU,KAAK,KAAK,QAAQ,YAAY,UAAU;AACxD,mBAAW,KAAK,MAAM,OAAO;AAAA,MAC/B;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AACF;AAmCA,IAAI,aAAmC;AAChC,SAAS,mBAAkC;AAChD,MAAI,CAAC,YAAY;AACf,iBAAa,IAAI,cAAc;AAAA,EACjC;AACA,SAAO;AACT;;;ACvHA,SAAS,YAAYK,MAAI,cAAAC,aAAY,YAAAC,WAAU,cAAAC,aAAY,kBAAAC,iBAAgB,aAAAC,kBAAiB;AAC5F,OAAOC,YAAU;AACjB,OAAOC,SAAQ;AACf,SAAS,cAAAC,mBAAkB;AAEpB,IAAM,6BAA6B,KAAK,OAAO;AAkC/C,IAAM,qBAAN,MAAyB;AAAA,EACb;AAAA,EACT,aAA4B,QAAQ,QAAQ;AAAA,EACnC,WAAW,oBAAI,IAAgC;AAAA,EAEhE,YAAYC,OAAe;AACzB,SAAK,OAAOA,SAAQ,QAAQ,IAAI,+BAC3BH,OAAK,KAAKC,IAAG,QAAQ,GAAG,QAAQ,eAAe,qBAAqB;AACzE,IAAAF,WAAUC,OAAK,QAAQ,KAAK,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,SAAiB,WAA4B;AACvD,UAAM,eAAeE,YAAW;AAChC,SAAK,SAAS,IAAI,cAAc,EAAE,IAAI,KAAK,IAAI,GAAG,SAAS,UAAU,CAAC;AACtE,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UACE,cACA,SACM;AACN,UAAM,QAAQ,KAAK,SAAS,IAAI,YAAY;AAC5C,QAAI,CAAC,MAAO;AACZ,SAAK,SAAS,OAAO,YAAY;AACjC,UAAM,MAA0B;AAAA,MAC9B,IAAI,KAAK,IAAI;AAAA,MACb,SAAS,MAAM;AAAA,MACf;AAAA,MACA,WAAW,MAAM;AAAA,MACjB,YAAY,KAAK,IAAI,IAAI,MAAM;AAAA,MAC/B,YAAY,QAAQ;AAAA,MACpB,IAAI,QAAQ;AAAA,MACZ,OAAO,QAAQ;AAAA,IACjB;AACA,SAAK,aAAa,KAAK,WAAW,KAAK,MAAM,KAAK,OAAO,GAAG,CAAC;AAC7D,SAAK,KAAK,WAAW,MAAM,MAAM;AAAA,IAAgC,CAAC;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAuB;AAC3B,UAAM,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,gBAAwB;AACtB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA;AAAA,EAGQ,OAAO,KAAwC;AACrD,WAAO,IAAI,QAAc,CAAC,SAAS,WAAW;AAC5C,UAAI;AACF,aAAK,YAAY;AACjB,cAAM,OAAO,KAAK,UAAU,GAAG,IAAI;AACnC,QAAAJ,gBAAe,KAAK,MAAM,MAAM,EAAE,UAAU,QAAQ,CAAC;AACrD,gBAAQ;AAAA,MACV,SAAS,KAAK;AACZ,eAAO,GAAG;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA,EAGQ,cAAoB;AAC1B,QAAI,CAACH,YAAW,KAAK,IAAI,EAAG;AAC5B,QAAI;AACF,YAAM,OAAOC,UAAS,KAAK,IAAI;AAC/B,UAAI,KAAK,QAAQ,4BAA4B;AAC3C,cAAM,UAAU,KAAK,KAAK,QAAQ,YAAY,UAAU;AACxD,QAAAC,YAAW,KAAK,MAAM,OAAO;AAAA,MAC/B;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AACF;AAGA,eAAsB,iBAAiBM,OAA6C;AAClF,MAAI,MAAM;AACV,MAAI;AACF,UAAM,MAAMT,KAAG,SAASS,OAAM,OAAO;AAAA,EACvC,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACA,QAAM,MAA4B,CAAC;AACnC,aAAW,QAAQ,IAAI,MAAM,IAAI,GAAG;AAClC,QAAI,CAAC,KAAK,KAAK,EAAG;AAClB,QAAI;AACF,UAAI,KAAK,KAAK,MAAM,IAAI,CAAuB;AAAA,IACjD,QAAQ;AAAA,IAER;AAAA,EACF;AACA,SAAO;AACT;AAYO,SAAS,cACd,SACA,SACA,SACY;AACZ,QAAM,WAAW,QAAQ,OAAO,CAAC,MAAM;AACrC,QAAI,YAAY,UAAa,EAAE,YAAY,QAAS,QAAO;AAC3D,QAAI,YAAY,UAAa,EAAE,KAAK,QAAS,QAAO;AACpD,WAAO;AAAA,EACT,CAAC;AACD,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO,EAAE,OAAO,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,EAAE;AAAA,EACtE;AACA,QAAM,eAAe,SAAS,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE;AAClD,QAAM,YAAY,SACf,IAAI,CAAC,MAAM,EAAE,UAAU,EACvB,OAAO,CAAC,MAAmB,OAAO,MAAM,QAAQ;AACnD,QAAM,gBAAgB,UAAU,WAAW,IACvC,IACA,UAAU,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,UAAU;AACrD,QAAM,cAAc,SAAS,OAAO,CAAC,KAAK,MAAM,OAAO,EAAE,cAAc,IAAI,CAAC;AAC5E,SAAO;AAAA,IACL,OAAO,SAAS;AAAA,IAChB,aAAa,eAAe,SAAS;AAAA,IACrC;AAAA,IACA;AAAA,EACF;AACF;;;A3H/KA,OAAOC,YAAU;AACjB,OAAOC,UAAQ;AAGf,IAAM,QAAQ,QAAQ,IAAI,gBAAgB;AAC1C,IAAM,WAAW;AAOjB,IAAM,mBAA2C;AAAA,EAC/C,qBAAqB;AAAA,EACrB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AACT;AAiBA,eAAsB,oBAAoB,SAMxB;AAChB,QAAM,EAAE,MAAM,SAAS,eAAe,eAAe,eAAe,IAAI;AACxE,MAAI,CAAC,SAAS;AACZ,kBAAc,uEAAkE;AAChF,UAAM,eAAe,IAAI;AACzB;AAAA,EACF;AACA,UAAQ,QAAQ,IAAI;AACpB,UAAQ,OAAO;AACf,gBAAc,QAAQ,WAAW;AACjC,gBAAc,0DAA0D,IAAI,aAAa,QAAQ,WAAW,GAAG;AACjH;AAiBO,SAAS,yBACd,WACA,UACA,kBACA,OACA,MAC+C;AAC/C,QAAM,eAAe,YAAY,UAAU,eAAe,KAAK,KAAK,SAAS,SAAS,CAAC;AACvF,QAAM,mBAAmB,YACrB,UAAU,mBACV,KAAK,KAAK,iBAAiB,SAAS,CAAC;AACzC,QAAM,WAAW,cAAc,OAAO,cAAc,gBAAgB;AACpE,SAAO;AAAA,IACL,aAAa,KAAK,cAAc,eAAe;AAAA,IAC/C,cAAc,KAAK,eAAe;AAAA,EACpC;AACF;AAyBA,SAAS,eAAe,IAAoB;AAC1C,QAAM,MAAM,KAAK,IAAI,EAAE;AACvB,QAAM,OAAO,KAAK,IAAI,SAAS;AAC/B,MAAI,MAAM,IAAM,QAAO,GAAG,GAAG,KAAK,IAAI;AACtC,QAAM,IAAI,KAAK,MAAM,MAAM,GAAI;AAC/B,MAAI,IAAI,GAAI,QAAO,GAAG,CAAC,IAAI,IAAI;AAC/B,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,QAAM,KAAK,IAAI;AACf,MAAI,IAAI,GAAI,QAAO,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI;AAClE,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,QAAM,KAAK,IAAI;AACf,MAAI,IAAI,GAAI,QAAO,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI;AAClE,QAAM,IAAI,KAAK,MAAM,IAAI,EAAE;AAC3B,QAAM,KAAK,IAAI;AACf,SAAO,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI;AACxD;AAEO,SAAS,mBACd,KACA,KACA,SACQ;AACR,QAAM,SAAS,cAAc,SAAS,GAAG;AACzC,QAAM,SAAS,cAAc,SAAS,GAAG;AACzC,QAAM,QAAkB,CAAC,iBAAiB;AAC1C,QAAM,KAAK,uBAAuB,KAAK,MAAM,CAAC;AAC9C,QAAM,KAAK,uBAAuB,KAAK,MAAM,CAAC;AAE9C,MAAI,OAAO,QAAQ,KAAK,OAAO,QAAQ,GAAG;AACxC,UAAM,SAAS,kBAAkB,QAAQ,MAAM;AAC/C,QAAI,WAAW,MAAM;AACnB,YAAM,KAAK,qDAAqD;AAAA,IAClE,WAAW,WAAW,KAAK;AACzB,YAAM,KAAK,WAAW,GAAG,wBAAwB,OAAO,gBAAgB,OAAO,cAAc,qCAAgC,EAAE,GAAG;AAAA,IACpI,OAAO;AACL,YAAM,KAAK,WAAW,GAAG,wBAAwB,OAAO,gBAAgB,OAAO,cAAc,qCAAgC,EAAE,GAAG;AAAA,IACpI;AAAA,EACF,OAAO;AACL,UAAM,KAAK,mFAAyE;AAAA,EACtF;AACA,SAAO,MAAM,KAAK,IAAI;AACxB;AAGA,SAAS,uBAAuB,IAAY,OAA2B;AACrE,MAAI,MAAM,UAAU,GAAG;AACrB,WAAO,KAAK,EAAE;AAAA,EAChB;AACA,SAAO,KAAK,EAAE,WAAM,MAAM,KAAK,kBAAkB,MAAM,cAAc,KAAK,QAAQ,CAAC,CAAC,kBAAkB,MAAM,cAAc,QAAQ,CAAC,CAAC,OAAO,MAAM,WAAW;AAC9J;AAOO,SAAS,kBACd,GACA,GACkB;AAClB,MAAI,EAAE,cAAc,EAAE,YAAa,QAAO;AAC1C,MAAI,EAAE,cAAc,EAAE,YAAa,QAAO;AAE1C,MAAI,EAAE,gBAAgB,EAAE,cAAe,QAAO;AAC9C,MAAI,EAAE,gBAAgB,EAAE,cAAe,QAAO;AAE9C,SAAO;AACT;AAMA,eAAsB,sBACpB,KACA,KACA,aACiB;AACjB,QAAM,UAAU,MAAM,iBAAiB,WAAW;AAClD,SAAO,mBAAmB,KAAK,KAAK,OAAO;AAC7C;AAEA,SAAS,iBAAiB,QAA8C;AACtE,QAAM,MAAqB,CAAC;AAC5B,MAAI,kBAAkB;AACtB,MAAI,cAAc;AAClB,aAAW,KAAK,QAAQ;AACtB,QAAI,EAAE,SAAS,iBAAiB;AAC9B,UAAI,gBAAgB,GAAI,eAAc,WAAW,aAAa,CAAC;AAC/D,yBAAmB,EAAE;AACrB,YAAM,OAAO,IAAI,IAAI,SAAS,CAAC;AAC/B,UAAI,QAAQ,KAAK,SAAS,eAAe,KAAK,OAAO,aAAa;AAChE,YAAI,IAAI,SAAS,CAAC,IAAI,EAAE,GAAG,MAAM,SAAS,gBAAgB;AAAA,MAC5D,OAAO;AACL,YAAI,KAAK,EAAE,IAAI,aAAa,MAAM,aAAa,SAAS,iBAAiB,IAAI,EAAE,GAAG,CAAC;AAAA,MACrF;AAAA,IACF,WAAW,EAAE,SAAS,aAAa;AACjC,wBAAkB;AAClB,oBAAc;AACd,UAAI,KAAK;AAAA,QACP,IAAI,OAAO,WAAW;AAAA,QACtB,MAAM;AAAA,QACN,SAAS,eAAe,EAAE,QAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,QAC9E,IAAI,EAAE;AAAA,MACR,CAAC;AAAA,IACH,WAAW,EAAE,SAAS,eAAe;AACnC,UAAI,KAAK;AAAA,QACP,IAAI,OAAO,WAAW;AAAA,QACtB,MAAM;AAAA,QACN,SAAS,iBAAiB,EAAE,QAAQ,WAAM,EAAE,KAAK,OAAO,OAAO;AAAA,QAC/D,IAAI,EAAE;AAAA,MACR,CAAC;AAAA,IACH,WAAW,EAAE,SAAS,eAAe;AACnC,UAAI,KAAK;AAAA,QACP,IAAI,OAAO,WAAW;AAAA,QACtB,MAAM;AAAA,QACN,SAAS,uBAAuB,EAAE,KAAK,aAAa,EAAE,QAAQ;AAAA,QAC9D,IAAI,EAAE;AAAA,MACR,CAAC;AAAA,IACH,WAAW,EAAE,SAAS,aAAa;AACjC,UAAI,KAAK;AAAA,QACP,IAAI,OAAO,WAAW;AAAA,QACtB,MAAM;AAAA,QACN,SAAS,sBAAsB,EAAE,MAAM,aAAa,EAAE,UAAU;AAAA,QAChE,IAAI,EAAE;AAAA,MACR,CAAC;AAAA,IACH,WAAW,EAAE,SAAS,SAAS;AAC7B,UAAI,KAAK;AAAA,QACP,IAAI,OAAO,WAAW;AAAA,QACtB,MAAM;AAAA,QACN,SAAS,WAAW,EAAE,OAAO;AAAA,QAC7B,IAAI,EAAE;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,MAA0B;AACxC,QAAM,CAAC,OAAO,QAAQ,IAAIC,UAAS,EAAE;AACrC,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAwB,CAAC,CAAC;AAC1D,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAiB,EAAE;AACrD,QAAM,CAAC,eAAe,gBAAgB,IAAIA,UAAS,KAAK;AACxD,QAAM,CAAC,MAAM,OAAO,IAAIA,UAAS,KAAK;AACtC,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,UAAS,MAAM,kBAAkB,CAAC;AAC9E,QAAM,CAAC,cAAc,eAAe,IAAIA,UAAwD,EAAE,aAAa,GAAG,cAAc,EAAE,CAAC;AACnI,QAAM,qBAAqB,kBAAsB;AACjD,QAAM,cAAc,eAAe,gBAAgB,mBAAmB,EAAE;AAExE,QAAM,YAAY,OAAkC,IAAI;AAGxD,QAAM,aAAa,OAA4B,IAAI;AAEnD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAiB,CAAC;AAEtD,QAAM,SAAS,QAAQ,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnD,QAAM,YAAY,QAAQ,MAAM,gBAAgB,MAAM,GAAG,CAAC,MAAM,CAAC;AACjE,QAAM,cAAc,MAAM,WAAW,GAAG;AAGxC,YAAU,MAAM;AACd,QAAI,YAAY;AAChB,KAAC,YAAY;AACX,YAAM,iBAAiB;AACvB,UAAI,KAAK,oBAAoB;AAC7B,UAAI,UAAU;AACd,UAAI,mBAAkC,CAAC;AACvC,UAAI,IAAI;AACN,YAAI;AACF,gBAAM,SAAS,MAAM,kBAAkB,EAAE;AACzC,cAAI,CAAC,WAAW;AACd,+BAAmB,iBAAiB,MAAM;AAC1C,sBAAU,OAAO,SAAS;AAAA,UAC5B;AAAA,QACF,QAAQ;AAEN,eAAK;AAAA,QACP;AAAA,MACF;AACA,UAAI,CAAC,IAAI;AACP,aAAK,aAAa;AAClB,4BAAoB,EAAE;AAAA,MACxB;AACA,UAAI,UAAW;AACf,gBAAU,UAAU,IAAI,mBAAmB,EAAE;AAC7C,mBAAa,EAAE;AACf,kBAAY,gBAAgB;AAC5B,UAAI,SAAS;AACX,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,mBAAmB,iBAAiB,MAAM,0BAA0B,GAAG,MAAM,GAAG,CAAC,CAAC;AAAA,YAC3F,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AACD,yBAAiB,IAAI;AAAA,MACvB;AAAA,IACF,GAAG;AACH,WAAO,MAAM;AACX,kBAAY;AAEZ,WAAK,UAAU,SAAS,MAAM;AAAA,IAChC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,iBAAiB,OAAO,aAAqB;AACjD,UAAM,YAAY,MAAM,gBAAgB;AACxC,QAAI,CAAC,WAAW;AACd,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAEA,YAAQ,IAAI;AAKZ,UAAM,EAAE,UAAU,aAAa,IAAI,0BAA0B;AAW7D,UAAM,qBAAqB,yBAAyB,SAAS;AAC7D,UAAM,qBAAqB,MAAM,sBAAsB;AAAA,MACrD,iBAAiB,QAAQ,IAAI,sBAAsB;AAAA,MACnD,UAAU,QAAQ,IAAI;AAAA,MACtB,mBAAmB,UAAU;AAAA,MAC7B,SAAS;AAAA,MACT,kBAAkB,UAAU,IAAI,CAACC,OAAMA,GAAE,EAAE;AAAA,MAC3C,sBAAsB,OAAO,OAC3B,kBAAkB,EAAkB;AAAA,MACtC,aAAa,CAACC,YACZ;AAAA,QACEA;AAAA,MACF;AAAA,IACJ,CAAC;AACD,QAAI,mBAAmB,SAAS;AAC9B,cAAQ,KAAK,mBAAmB,OAAO;AAAA,IACzC;AACA,UAAM,iBACJ,mBAAmB,gBACf,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,UAAU,mBAAmB;AAAA,MAC7B,eAAe,mBAAmB;AAAA,IACpC,CAAC,IACD,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,UAAU,mBAAmB;AAAA,IAC/B,CAAC;AACP,UAAM,UAAU,IAAI,aAAa;AAAA,MAC/B,OAAO,UAAU;AAAA,MACjB,UAAU;AAAA,MACV,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,SAAS,CAAC;AAAA,MAC9C,OAAO,aAAa,cAAc;AAAA,MAClC;AAAA,MACA;AAAA,IACF,CAAC;AACD,eAAW,UAAU;AACrB,kBAAc,QAAQ,WAAW;AAEjC,QAAI,mBAAmB;AAIvB,UAAM,UAAyB,iBAAiB;AAKhD,QAAI,YAA4F;AAChG,QAAI;AACF,uBAAiB,SAAS,QAAQ,IAAI,GAAG;AAEvC,YAAI,MAAM,SAAS,iBAAiB,MAAM,OAAO;AAC/C,sBAAY,MAAM;AAAA,QACpB;AAEA,YAAI,MAAM,SAAS,gBAAgB;AACjC,wBAAc,QAAQ,WAAW;AAAA,QACnC;AAEA,YAAI,UAAU,SAAS;AACrB,gBAAM,UAAU,QAAQ,OAAO,KAAK;AAAA,QACtC;AAEA,YAAI,MAAM,SAAS,aAAa;AAC9B,kBAAQ,OAAO;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA,UAAU,UAAU;AAAA,YACpB,OAAO,UAAU;AAAA,YACjB,WAAW,MAAM;AAAA,YACjB,IAAI,MAAM,WAAW;AAAA,UACvB,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,SAAS;AACjC,kBAAQ,OAAO;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA,UAAU,UAAU;AAAA,YACpB,OAAO,UAAU;AAAA,YACjB,OAAO,MAAM;AAAA,UACf,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,sBAAsB;AAK9C,kBAAQ,OAAO;AAAA,YACb,MAAM;AAAA,YACN;AAAA,YACA,UAAU,UAAU;AAAA,YACpB,OAAO,UAAU;AAAA,YACjB,UAAU,MAAM;AAAA,YAChB,YAAY,MAAM;AAAA,YAClB,YAAY,MAAM;AAAA,YAClB,IAAI,CAAC,MAAM;AAAA,UACb,CAAC;AAAA,QACH;AACA,YAAI,MAAM,SAAS,iBAAiB;AAClC,8BAAoB,MAAM;AAC1B,sBAAY,CAAC,SAAS;AACpB,kBAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AACjC,gBAAI,QAAQ,KAAK,SAAS,eAAe,KAAK,GAAG,WAAW,YAAY,GAAG;AACzE,qBAAO,CAAC,GAAG,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,SAAS,iBAAiB,CAAC;AAAA,YACtE;AACA,mBAAO;AAAA,cACL,GAAG;AAAA,cACH,EAAE,IAAI,aAAa,OAAO,WAAW,CAAC,IAAI,MAAM,aAAa,SAAS,kBAAkB,IAAI,KAAK,IAAI,EAAE;AAAA,YACzG;AAAA,UACF,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,SAAS;AACjC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,WAAW,MAAM,OAAO,IAAI,IAAI,KAAK,IAAI,EAAE;AAAA,UACjG,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,aAAa;AACrC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,eAAe,MAAM,QAAQ,IAAI,KAAK,UAAU,MAAM,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,cACtF,IAAI,MAAM;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,eAAe;AACvC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,iBAAiB,MAAM,QAAQ,WAAM,MAAM,KAAK,OAAO,OAAO;AAAA,cACvE,IAAI,MAAM;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,wBAAwB;AAEhD,gBAAM,cAAc,KAAK,UAAU,MAAM,IAAI,EAAE,MAAM,GAAG,GAAG;AAC3D,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,UAAK,MAAM,QAAQ,IAAI,WAAW;AAAA,cAC3C,IAAI,MAAM;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,sBAAsB;AAC9C,gBAAM,UAAU,MAAM,OAAO,MAAM,GAAG,GAAG;AACzC,gBAAM,OAAO,MAAM,UAAU,WAAM;AACnC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,GAAG,IAAI,IAAI,OAAO,GAAG,MAAM,OAAO,SAAS,MAAM,WAAM,EAAE,KAAK,MAAM,UAAU;AAAA,cACvF,IAAI,MAAM;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,UAAE;AACA,iBAAW,UAAU;AACrB,oBAAc,CAAC;AACf,cAAQ,KAAK;AAKb;AAAA,QAAgB,CAAC,SACf;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAoB,OAAO,WAAgD;AAC/E,QAAI,OAAO,SAAS,WAAW;AAC7B,UAAI;AACF,cAAM,WAAW,MAAM,aAAa;AACpC,YAAI,SAAS,WAAW,EAAG,QAAO;AAClC,cAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM;AAC7C,gBAAM,KAAK,IAAI,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE;AAC1E,iBAAO,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,WAAM,EAAE,UAAU,YAAY,EAAE;AAAA,QAC9D,CAAC;AACD,eAAO,sBAAsB,KAAK,IAAI,SAAS,QAAQ,EAAE,CAAC,OAAO,SAAS,MAAM;AAAA,EAAM,MAAM,KAAK,IAAI,CAAC;AAAA,MACxG,SAAS,KAAK;AACZ,eAAO,qBAAqB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,MAC9E;AAAA,IACF;AACA,QAAI,OAAO,SAAS,YAAY,OAAO,iBAAiB;AACtD,0BAAoB,OAAO,eAAe;AAC1C,aAAO,oBAAoB,OAAO,gBAAgB,MAAM,GAAG,CAAC,CAAC;AAAA,IAC/D;AACA,QAAI,OAAO,SAAS,OAAO;AACzB,4BAAsB;AACtB,YAAM,KAAK,aAAa;AACxB,0BAAoB,EAAE;AACtB,gBAAU,SAAS,MAAM;AACzB,gBAAU,UAAU,IAAI,mBAAmB,EAAE;AAC7C,mBAAa,EAAE;AACf,kBAAY,CAAC,CAAC;AACd,uBAAiB,KAAK;AACtB,aAAO,uBAAuB,GAAG,MAAM,GAAG,CAAC,CAAC;AAAA,IAC9C;AACA,WAAO,OAAO,WAAW,IAAI,OAAO,IAAI;AAAA,EAC1C;AAEA,QAAM,wBAAwB,OAAOC,WAAkB;AACrD,UAAM,YAAY,MAAM,gBAAgB;AACxC,QAAI,CAAC,WAAW;AACd,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,IACF;AACA,YAAQ,IAAI;AAMZ,UAAM,EAAE,UAAU,oBAAoB,IAAI,0BAA0B;AAIpE,UAAM,uBAAuB,IAAI,cAAc;AAC/C,QAAI;AACF,uBAAiB,SAAS,gBAAgBA,QAAO;AAAA,QAC/C,QAAQ,UAAU;AAAA,QAClB,OAAO,UAAU;AAAA,QACjB,UAAU;AAAA,QACV,gBAAgB,yBAAyB,SAAS;AAAA,QAClD;AAAA,QACA,OAAO;AAAA,QACP,eAAe;AAAA,MACjB,CAAC,GAAG;AACF,YAAI,UAAU,SAAS;AACrB,gBAAM,UAAU,QAAQ,OAAO,KAAK;AAAA,QACtC;AACA,YAAI,MAAM,SAAS,iBAAiB;AAClC,sBAAY,CAAC,SAAS;AACpB,kBAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AACjC,gBAAI,QAAQ,KAAK,SAAS,eAAe,KAAK,GAAG,WAAW,YAAY,GAAG;AACzE,qBAAO,CAAC,GAAG,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,SAAS,KAAK,KAAK,SAAS,CAAC,EAAE,UAAU,MAAM,MAAM,CAAC;AAAA,YACjG;AACA,mBAAO;AAAA,cACL,GAAG;AAAA,cACH,EAAE,IAAI,aAAa,OAAO,WAAW,CAAC,IAAI,MAAM,aAAa,SAAS,MAAM,OAAO,IAAI,MAAM,GAAG;AAAA,YAClG;AAAA,UACF,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,wBAAwB;AAEhD,gBAAM,cAAc,KAAK,UAAU,MAAM,IAAI,EAAE,MAAM,GAAG,GAAG;AAC3D,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,GAAG,MAAM,QAAQ,IAAI,WAAW;AAAA,cACzC,IAAI,MAAM;AAAA,cACV,UAAU,MAAM;AAAA,cAChB,YAAY,MAAM;AAAA,cAClB,QAAQ;AAAA,cACR,gBAAgB;AAAA,YAClB;AAAA,UACF,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,sBAAsB;AAE9C,sBAAY,CAAC,SAAS;AACpB,qBAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,oBAAM,IAAI,KAAK,CAAC;AAChB,kBAAI,KAAK,EAAE,SAAS,UAAU,EAAE,eAAe,MAAM,cAAc,EAAE,mBAAmB,QAAW;AACjG,sBAAM,UAAU,CAAC,GAAG,IAAI;AACxB,wBAAQ,CAAC,IAAI;AAAA,kBACX,GAAG;AAAA,kBACH,QAAQ,CAAC,MAAM;AAAA,kBACf,gBAAgB,MAAM;AAAA,kBACtB,SAAS,GAAG,EAAE,YAAY,MAAM,GAAG,MAAM,UAAU,kBAAa,YAAO,KAAK,MAAM,UAAU;AAAA,gBAC9F;AACA,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH,WAAW,MAAM,SAAS,SAAS;AACjC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,WAAW,MAAM,OAAO,IAAI,IAAI,MAAM,GAAG;AAAA,UAC/F,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,SAAS,KAAK;AACZ,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,mBAAmB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,UAC5E,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,UAAE;AACA,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AAEA,QAAM,eAAe,OAAO,UAAkB;AAC5C,QAAI,CAAC,MAAM,KAAK,KAAK,KAAM;AAE3B,UAAM,SAA6B,mBAAmB,OAAO,MAAM;AAEnE,QAAI,CAAC,OAAO,SAAS;AACnB,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,QAAQ,SAAS,OAAO,IAAI,KAAK,IAAI,EAAE;AAAA,MAC1E,CAAC;AACD,uBAAiB,IAAI;AACrB,YAAM,eAAe,KAAK;AAC1B,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,aAAa,OAAO,SAAS,YAAY,OAAO,SAAS,OAAO;AAClF,YAAMC,UAAS,MAAM,kBAAkB,MAAM;AAC7C,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAASA,SAAQ,IAAI,KAAK,IAAI,EAAE;AAAA,MAC7E,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,aAAa,OAAO,cAAc;AACpD,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,QAAQ,SAAS,YAAY,OAAO,YAAY,IAAI,IAAI,KAAK,IAAI,EAAE;AAAA,MACtG,CAAC;AACD,uBAAiB,IAAI;AACrB,eAAS,EAAE;AACX,YAAM,sBAAsB,OAAO,YAAY;AAC/C;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,sBACb,OAAO,oBACP,OAAO,OAAO,kBAAkB,UAAU;AAC/C,UAAI;AACF,cAAM,QAAQ,IAAI,cAAc;AAChC,cAAM,QAAQ,MAAM,OAAO;AAAA,UACzB,UAAU,OAAO;AAAA,UACjB,OAAO,OAAO;AAAA,UACd,GAAI,OAAO,eAAe,EAAE,MAAM,OAAO,aAAa,IAAI,CAAC;AAAA,UAC3D,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,QACnC,CAAC;AACD,cAAM,QAAQ,MAAM,SAAS,OAAO,gBAAgB;AACpD,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,sBAAsB,OAAO,gBAAgB,UAAU,MAAM,KAAK,yBACrD,MAAM,IAAI,QAAQ,CAAC,CAAC,SAAS,MAAM,KAAK;AAAA,YAC9D,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,8BAA8B,eAAe,QAAQ,IAAI,UAAU,SAAS;AAAA,YACrF,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,kBAAkB,OAAO,UAAU;AACrD,YAAM,OAAO,gBAAgB,OAAO,QAAQ;AAC5C,UAAI,CAAC,MAAM;AACT,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,uBAAuB,OAAO,QAAQ;AAAA,YAC/C,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AACD,iBAAS,EAAE;AACX;AAAA,MACF;AACA,UAAI;AACF,4BAAsB,KAAK,EAAE;AAC7B,0BAAkB,kBAAkB,CAAC;AACrC,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,sBAAsB,KAAK,WAAW,YAAY,oBAAoB,KAAK,EAAE,CAAC;AAAA,YACvF,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,oBAAoB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YAC7E,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,iBAAiB;AACnC,YAAM,OAAO,kBAAsB;AACnC,YAAM,WAAW,kBAAkB,KAAK,EAAE;AAC1C,YAAM,SAAS,WAAW,4BAAuB,QAAQ,KAAK;AAC9D,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,uBAAuB,KAAK,WAAW,YAAY,WAAW,IAAI,MAAM;AAAA,UACjF,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,mBAAmB;AACrC,YAAM,KAAK,mBAAmB;AAC9B,UAAI;AACF,YAAI,OAAO,aAAa;AACtB,8BAAoB,EAAE;AACtB,4BAAkB,kBAAkB,CAAC;AACrC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,0CAA0C,EAAE;AAAA,cACrD,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,WAAW,OAAO,gBAAgB;AAChC,4BAAkB,IAAI,OAAO,cAAc;AAC3C,4BAAkB,kBAAkB,CAAC;AACrC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,kCAAkC,EAAE,WAAW,OAAO,cAAc;AAAA,cAC7E,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,WAAW,OAAO,SAAS;AACzB,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,cAAc,OAAO,OAAO;AAAA,cACrC,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,oBAAoB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YAC7E,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,sBAAsB,OAAO,UAAU;AACzD,YAAM,OAAO,gBAAgB,OAAO,QAAQ;AAC5C,UAAI,CAAC,MAAM;AACT,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,uBAAuB,OAAO,QAAQ;AAAA,YAC/C,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AACD,iBAAS,EAAE;AACX;AAAA,MACF;AACA,UAAI;AACF,cAAM,YAAY,MAAM,sBAAsB,KAAK,EAAE;AACrD,YAAI,CAAC,WAAW;AACd,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,sBAAsB,KAAK,EAAE,mCAAmC,KAAK,EAAE;AAAA,cAChF,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AACD,mBAAS,EAAE;AACX;AAAA,QACF;AACA,cAAM,UAAU,UAAU,YACtB,sBAAiB,eAAe,UAAU,YAAY,KAAK,IAAI,CAAC,CAAC,KACjE;AACJ,cAAM,OAAO,eAAe,KAAK,EAAE;AACnC,cAAM,WAAW,OAAO,KAAK;AAC7B,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,sBAAsB,KAAK,EAAE,mBAAc,QAAQ,UAAU,MAAM,CAAC,GAAG,OAAO,GAAG,QAAQ;AAAA,YAClG,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,4BAA4B,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YACrF,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,qBAAqB,OAAO,UAAU;AACxD,YAAM,OAAO,gBAAgB,OAAO,QAAQ;AAC5C,UAAI,CAAC,MAAM;AACT,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,uBAAuB,OAAO,QAAQ;AAAA,YAC/C,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AACD,iBAAS,EAAE;AACX;AAAA,MACF;AACA,YAAM,SAAS,QAAQ,IAAI,KAAK,MAAM;AACtC,YAAM,SAAS,cAAc,KAAK,EAAE;AACpC,YAAM,SAAS,UAAU,OAAO,KAAK,EAAE,SAAS,IAC5C,QAAQ,KAAK,MAAM,MACnB,SACE,UACA;AACN,YAAM,UAAU,QAAQ,YACpB,eAAe,OAAO,YAAY,KAAK,IAAI,CAAC,IAC5C;AACJ,YAAM,aAAa,eAAe,KAAK,EAAE,IAAI,QAAQ;AACrD,YAAM,kBAAkB,QAAQ,eAAe,QAAQ;AACvD,YAAM,UAAU,KAAK,WAAW;AAChC,YAAM,aAAa,MAAM,eAAe,KAAK,IAAI,UAAU,QAAQ,UAAU,EAAE,EAAE,MAAM,MAAM,IAAI;AACjG,YAAM,UAAU,aACZ,WAAW,UACT,qCACA,eAAe,WAAW,KAAK,OAAO,SAAS,WAAW,MAAM,GAAG,GAAG,WAAW,aAAa,IAAI,WAAW,UAAU,OAAO,EAAE,KAClI;AACJ,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,qBAAqB,KAAK,EAAE,KAAK,KAAK,WAAW;AAAA,gBAAoB,KAAK,MAAM;AAAA,gBAAmB,MAAM;AAAA,gBAAmB,OAAO;AAAA,gBAAmB,UAAU;AAAA,gBAAqC,eAAe;AAAA,gBAAmB,OAAO;AAAA,IAAO,OAAO;AAAA,UACrQ,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,oBAAoB,OAAO,iBAAiB;AAC9D,UAAI;AACF,cAAM,EAAE,OAAO,SAAS,IAAI,cAAc,OAAO,eAAe;AAChE,cAAM,WAAW,QAAQ,IAAI,sBACxBN,OAAK,KAAKC,KAAG,QAAQ,GAAG,QAAQ,eAAe,QAAQ;AAC5D,cAAM,GAAG,SAAS,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AACrD,cAAM,WAAWD,OAAK,KAAK,UAAU,GAAG,MAAM,EAAE,KAAK;AACrD,cAAM,GAAG,SAAS,UAAU,UAAU,UAAU,MAAM;AACtD,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SACE,oBAAoB,MAAM,IAAI,KAAK,OAAO,eAAe,YAAO,QAAQ;AAAA,iBACtD,MAAM,QAAQ;AAAA,iBACd,MAAM,aAAa;AAAA,iBACnB,MAAM,cAAc,KAAK,IAAI,KAAK,QAAG;AAAA,iBACrC,MAAM,cAAc,KAAK,IAAI,KAAK,QAAG;AAAA,iBACrC,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,YACzC,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,cAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,0BAA0B,GAAG;AAAA,YACtC,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,wBAAwB;AAC1C,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,OAAO,sBAAsB;AAAA,UACtC,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,gBAAgB;AAClC,UAAI;AACF,cAAM,EAAE,gBAAAO,gBAAe,IAAI,MAAM;AACjC,cAAM,OAAO,MAAMA,gBAAe;AAClC,YAAI,KAAK,OAAO;AACd,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,0BAA0B,KAAK,KAAK;AAAA,cAC7C,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,WAAW,KAAK,iBAAiB;AAC/B,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SACE,mCAA4B,KAAK,aAAa,wBAAwB,KAAK,cAAc;AAAA;AAAA,cAE3F,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,wBAAwB,KAAK,cAAc;AAAA,cACpD,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,KAAK;AACZ,cAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,kBAAkB,GAAG;AAAA,YAC9B,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,kBAAkB;AACpC,UAAI;AACF,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS;AAAA,YACT,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AACD,cAAM,EAAE,eAAAC,eAAc,IAAI,MAAM;AAChC,cAAM,eAAe,MAAMA,eAAc;AACzC,YAAI,aAAa,IAAI;AACnB,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SACE;AAAA;AAAA;AAAA;AAAA,cAGF,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SACE,2BAAsB,aAAa,SAAS,eAAe;AAAA;AAAA;AAAA,EAC3C,aAAa,UAAU,SAAS;AAAA,cAClD,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,KAAK;AACZ,cAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,kBAAkB,GAAG;AAAA,YAC9B,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,gBAAgB;AAClC,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,OAAO,WAAW;AAAA,UAC3B,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,WAAW;AAC7B,YAAM,OAAoD,CAAC;AAC3D,UAAI,OAAO,qBAAqB,OAAW,MAAK,YAAY,OAAO;AACnE,UAAI,OAAO,sBAAsB,OAAW,MAAK,aAAa,OAAO;AACrE,YAAM,IAAI,kBAAkB,UAAU,IAAI;AAC1C,kBAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC3B,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,wBAAwB,CAAC;AAAA,UAClC,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,QAAQ;AAC1B,UAAI;AACF,cAAM,WAAW,mBAAmB;AACpC,YAAI,CAAE,MAAM,UAAU,QAAQ,GAAI;AAChC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS;AAAA,cACT,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,gBAAM,EAAE,MAAM,WAAW,MAAM,IAAI,MAAM,eAAe;AAAA,YACtD,KAAK;AAAA,YACL,QAAQ,OAAO,cAAc;AAAA,UAC/B,CAAC;AACD,gBAAM,SAAS,QACX,4BAA4B,OAAO,aAAa,oBAAoB,EAAE,KACtE,SAAS,OAAO,aAAa,yBAAyB,EAAE,WAAM,YAAY,2BAA2B,qBAAqB;AAC9H,gBAAM,OAAO,QAAQ,KAAK;AAAA;AAAA,EAAO,IAAI;AACrC,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,GAAG,MAAM,GAAG,IAAI;AAAA,cACzB,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,gBAAgB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YACzE,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,UAAU,OAAO,SAAS,gBAAgB;AAE5D,UAAI,OAAO,SAAS;AAClB,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,YAChB,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,OAAO,SAAS,kBAAkB,OAAO,eAAe;AAC1D,YAAI;AACF,gBAAM,WAAW,mBAAmB;AACpC,cAAI,CAAE,MAAM,UAAU,QAAQ,GAAI;AAChC,wBAAY,CAAC,SAAS;AAAA,cACpB,GAAG;AAAA,cACH;AAAA,gBACE,IAAI,OAAO,WAAW;AAAA,gBACtB,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,IAAI,KAAK,IAAI;AAAA,cACf;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AACL,kBAAM,MAAM,MAAM,mBAAmB,EAAE,KAAK,SAAS,CAAC;AACtD,wBAAY,CAAC,SAAS;AAAA,cACpB,GAAG;AAAA,cACH;AAAA,gBACE,IAAI,OAAO,WAAW;AAAA,gBACtB,MAAM;AAAA,gBACN,SAAS,UAAU,IAAI,OAAO,GAAG,IAAI,SAAS,SAAS,IAAI;AAAA,MAAS,IAAI,SAAS,MAAM,GAAG,EAAE,EAAE,KAAK,QAAQ,CAAC,GAAG,IAAI,SAAS,SAAS,KAAK;AAAA,SAAY,IAAI,SAAS,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE;AAAA,gBACjM,IAAI,KAAK,IAAI;AAAA,cACf;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,SAAS,KAAK;AACZ,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,gBAAgB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,cACzE,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,eAAe,OAAO,OAAO;AAC/C,YAAM,KAAK,mBAAmB;AAC9B,UAAI;AACF,4BAAwB,IAAI,OAAO,KAAK;AACxC,0BAAkB,kBAAkB,CAAC;AACrC,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,gBAAgB,EAAE,WAAM,OAAO,KAAK;AAAA,YAC7C,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,iBAAiB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YAC1E,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,cAAc;AAChC,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,oBAAoB,mBAAmB,WAAW,WAAM,WAAW;AAAA,UAC5E,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,eAAe;AACjC,YAAM,SAAS,mBAAmB;AAClC,YAAMC,UAAS,gBAAgB,MAAM;AACrC,UAAI,CAACA,WAAUA,QAAO,OAAO,WAAW,GAAG;AACzC,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,yBAAyB,mBAAmB,WAAW,mCAAmC,MAAM;AAAA,YACzG,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,cAAM,SAAS,KAAK,OAAO,KAAK,IAAI,IAAIA,QAAO,aAAa,GAAM;AAClE,cAAM,OAAOA,QAAO,OAAO,IAAI,CAAC,MAAM,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,KAAK,EAAE,OAAO,MAAM,EAAE,EAAE,EAAE,KAAK,IAAI;AACnG,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,YAAY,mBAAmB,WAAW,WAAMA,QAAO,OAAO,MAAM,oBAAoB,MAAM,cAAcA,QAAO,OAAO;AAAA,EAAO,IAAI;AAAA,YAC9I,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,oBAAoB,OAAO,SAAS,iBAAiB;AACvE,YAAM,SAAS,mBAAmB;AAClC,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,sCAAsC,mBAAmB,WAAW;AAAA,UAC7E,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AAEX,OAAC,YAAY;AACX,YAAI;AACF,gBAAM,QAAQ,MAAM,0BAA0B,MAAM;AACpD,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,mBAAc,MAAM,OAAO,MAAM,0BAA0B,mBAAmB,WAAW;AAAA,cAClG,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,SAAS,KAAK;AACZ,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,qCAAgC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,cACzF,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,GAAG;AACH;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,mBAAmB,OAAO,YAAY;AACxD,UAAI,CAAC,WAAW;AACd,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS;AAAA,YACT,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AACD,iBAAS,EAAE;AACX;AAAA,MACF;AACA,UAAI;AACF,cAAM,OAAO,MAAM,aAAa,OAAO,YAAY,SAAS;AAC5D,yBAAiB,KAAK,IAAI;AAC1B,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,qBAAqB,KAAK,IAAI,kBAAkB,KAAK,cAAc,MAAM,GAAG,CAAC,CAAC,WAAM,KAAK,YAAY;AAAA,YAC9G,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,kBAAkB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YAC3E,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,eAAe;AACjC,UAAI;AACF,cAAM,OAAO,MAAM,aAAa;AAChC,YAAI,KAAK,WAAW,GAAG;AACrB,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS;AAAA,cACT,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,gBAAM,gBAAgB,iBAAiB;AACvC,gBAAM,QAAQ,KAAK,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM;AACzC,kBAAM,KAAK,IAAI,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE;AAC5E,kBAAM,SAAS,kBAAkB,EAAE,OAAO,OAAO;AACjD,mBAAO,IAAI,MAAM,GAAG,EAAE,KAAK,OAAO,EAAE,CAAC,SAAS,EAAE,cAAc,MAAM,GAAG,CAAC,CAAC,WAAM,EAAE,YAAY,cAAc,EAAE;AAAA,UAC/G,CAAC;AACD,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,cAAc,KAAK,MAAM;AAAA,EAAyB,MAAM,KAAK,IAAI,CAAC;AAAA,cAC3E,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,oBAAoB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YAC7E,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,qBAAqB,OAAO,YAAY;AAC1D,UAAI;AACF,YAAI,CAAC,aAAkB,OAAO,UAAU,GAAG;AACzC,gBAAM,IAAI,MAAM,WAAW,OAAO,UAAU,0CAA0C;AAAA,QACxF;AACA,yBAAiB,OAAO,UAAU;AAClC,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,oCAAoC,OAAO,UAAU;AAAA,YAC9D,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,oBAAoB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YAC7E,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,mBAAmB;AACrC,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,MAAM;AACT,YAAI,OAAO,SAAS;AAClB,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,OAAO,SAAU,IAAI,KAAK,IAAI,EAAE;AAAA,UACtF,CAAC;AAAA,QACH;AACA,iBAAS,EAAE;AACX;AAAA,MACF;AACA,0BAAoB;AAAA,QAClB;AAAA,QACA,SAAS,WAAW;AAAA,QACpB,eAAe,CAAC,YACd,YAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,IAAI,KAAK,IAAI,EAAE;AAAA,QACrE,CAAC;AAAA,QACH;AAAA,QACA;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,SAAS;AAC3B,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,MAAM;AAET,YAAI,OAAO,SAAS;AAClB,sBAAY,CAAC,SAAS;AAAA,YACpB,GAAG;AAAA,YACH;AAAA,cACE,IAAI,OAAO,WAAW;AAAA,cACtB,MAAM;AAAA,cACN,SAAS,OAAO;AAAA,cAChB,IAAI,KAAK,IAAI;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AACA,iBAAS,EAAE;AACX;AAAA,MACF;AACA,YAAM,UAAU,WAAW;AAC3B,UAAI,CAAC,SAAS;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS;AAAA,YACT,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AACD,iBAAS,EAAE;AACX;AAAA,MACF;AACA,cAAQ,QAAQ,IAAI;AACpB,oBAAc,QAAQ,WAAW;AACjC,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS,oBAAoB,IAAI,aAAa,QAAQ,WAAW;AAAA,UACjE,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,eAAS,EAAE;AACX;AAAA,IACF;AAQA,QAAI,OAAO,SAAS,WAAW,OAAO,YAAY,OAAO,UAAU;AACjE,YAAM,OAAO,gBAAgB,OAAO,QAAQ;AAC5C,YAAM,cAAc,MAAM,eAAe,OAAO;AAChD,YAAM,SAAS,MAAM,UAAU,GAAG,OAAO,SAAS,YAAY,CAAC;AAC/D,UAAI;AACF,kBAAU,OAAO,UAAU,OAAO,QAAQ;AAG1C,4BAAsB,OAAO,QAAuD;AAGpF,cAAM,eAAe,oBAAoB,OAAO,QAAqD;AACrG,YAAI,CAAC,cAAc;AACjB,gBAAM,gBAAgB,iBAAiB,OAAO,QAAyC;AACvF,cAAI,eAAe;AACjB,gCAAwB,OAAO,UAA2D,aAAa;AAAA,UACzG;AAAA,QACF;AACA,0BAAkB,kBAAkB,CAAC;AACrC,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,WAAW,WAAW,gBAAgB,QAAQ,OAAO,QAAQ,CAAC,kCAAkC,WAAW;AAAA,YACpH,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAID,cAAM,oBAAoB,OAAO;AACjC,YAAI,CAAC,QAAQ,OAAO,WAAW,mBAAmB,EAAE,SAAS,iBAAiB,GAAG;AAC/E,qCAA2B,mBAAmB;AAAA,YAC5C,SAAS,CAAC,QAAQ;AAChB,0BAAY,CAAC,SAAS;AAAA,gBACpB,GAAG;AAAA,gBACH;AAAA,kBACE,IAAI,OAAO,WAAW;AAAA,kBACtB,MAAM;AAAA,kBACN,SAAS,iCAAiC,iBAAiB,KAAK,IAAI,OAAO;AAAA,kBAC3E,IAAI,KAAK,IAAI;AAAA,gBACf;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,iBAAiB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YAC1E,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,iBAAiB,OAAO,aAAa,QAAQ;AAG/D,kBAAY,CAAC,SAAS;AAAA,QACpB,GAAG;AAAA,QACH;AAAA,UACE,IAAI,OAAO,WAAW;AAAA,UACtB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,IAAI,KAAK,IAAI;AAAA,QACf;AAAA,MACF,CAAC;AACD,cAAQ,IAAI;AACZ,UAAI;AACF,cAAM,cAAc,MAAM,iBAAiB;AAAA,UACzC,mBAAmB;AAAA,QACrB,CAAC;AAGD,sBAAc,QAAQ;AAAA,UACpB,QAAQ,YAAY;AAAA,UACpB,GAAI,YAAY,cAAc,SAAY,EAAE,WAAW,YAAY,UAAU,IAAI,CAAC;AAAA,UAClF,GAAI,YAAY,eAAe,EAAE,cAAc,YAAY,aAAa,IAAI,CAAC;AAAA,QAC/E,CAAC;AAED,4BAAsB,MAAM;AAC5B,YAAI,CAAC,oBAAoB,MAAM,GAAG;AAChC,8BAAwB,QAAQ,iBAAiB,MAAM,KAAK,QAAQ;AAAA,QACtE;AACA,0BAAkB,kBAAkB,CAAC;AACrC,cAAM,cAAc,YAAY,YAC5B,aAAa,IAAI,KAAK,YAAY,SAAS,EAAE,YAAY,CAAC,KAC1D;AACJ,cAAM,cAAc,YAAY,eAAe,0BAA0B;AACzE,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,gEAA2D,QAAQ,YAAY,WAAW,CAAC,GAAG,WAAW,GAAG,WAAW;AAAA,YAChI,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAED,mCAA2B,QAAQ;AAAA,UACjC,SAAS,CAAC,QAAQ;AAChB,wBAAY,CAAC,SAAS;AAAA,cACpB,GAAG;AAAA,cACH;AAAA,gBACE,IAAI,OAAO,WAAW;AAAA,gBACtB,MAAM;AAAA,gBACN,SAAS,uCAAuC,IAAI,OAAO;AAAA,gBAC3D,IAAI,KAAK,IAAI;AAAA,cACf;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,YACE,IAAI,OAAO,WAAW;AAAA,YACtB,MAAM;AAAA,YACN,SAAS,uBAAuB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,YAChF,IAAI,KAAK,IAAI;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,UAAE;AACA,gBAAQ,KAAK;AAAA,MACf;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,UAAM,SAAS,OAAO,YAChB,OAAO,SAAS,WAAW,OAAO,gBAClC,WAAW,OAAO,cAAc,OAAO,wDACvC,IAAI,OAAO,IAAI;AACrB,gBAAY,CAAC,SAAS;AAAA,MACpB,GAAG;AAAA,MACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,QAAQ,IAAI,KAAK,IAAI,EAAE;AAAA,IAC7E,CAAC;AAGD,QAAI,OAAO,SAAS,WAAW,OAAO,eAAe;AACnD,YAAM,cAAc,IAAI,mBAAmB;AAC3C,YAAM,eAAe,YAAY,YAAY,OAAO,cAAc,SAAS,aAAa,MAAS;AACjG,UAAI;AACJ,UAAI;AACF,iBAAS,EAAE;AACX,cAAM,eAAe,OAAO,cAAc,MAAM;AAAA,MAClD,SAAS,KAAK;AACZ,wBAAgB,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;AAAA,MACpE,UAAE;AACA,oBAAY,UAAU,cAAc;AAAA,UAClC,IAAI,CAAC;AAAA,UACL,OAAO,eAAe;AAAA,QACxB,CAAC;AACD,gBAAQ,KAAK;AAAA,MACf;AACA;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,eAAe;AACjC,YAAM,cAAc,QAAQ,IAAI,+BAC3BT,OAAK,KAAKC,KAAG,QAAQ,GAAG,QAAQ,eAAe,qBAAqB;AACzE,UAAI;AACF,cAAM,UAAU,MAAM,iBAAiB,WAAW;AAClD,cAAM,QAAQ,cAAc,SAAS,OAAO,iBAAiB;AAC7D,cAAM,QAAQ,OAAO,qBAAqB;AAC1C,cAAM,YAAY,MAAM,UAAU,IAC9B,iBAAiB,KAAK,kCACtB,iBAAiB,KAAK,KAAK,MAAM,KAAK,kBAAkB,MAAM,cAAc,KAAK,QAAQ,CAAC,CAAC,kBAAkB,MAAM,cAAc,QAAQ,CAAC,CAAC,OAAO,MAAM,WAAW;AACvK,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,WAAW,IAAI,KAAK,IAAI,EAAE;AAAA,QAChF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,uBAAuB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE;AAAA,QAChJ,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,iBAAiB;AACnC,YAAM,MAAM,OAAO;AACnB,UAAI,CAAC,KAAK;AAGR,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,OAAO,WAAW,gCAAgC,IAAI,KAAK,IAAI,EAAE;AAAA,QACvH,CAAC;AACD,iBAAS,EAAE;AACX;AAAA,MACF;AACA,YAAM,cAAc,QAAQ,IAAI,+BAC3BD,OAAK,KAAKC,KAAG,QAAQ,GAAG,QAAQ,eAAe,qBAAqB;AACzE,UAAI;AACF,cAAM,YAAY,MAAM,sBAAsB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,WAAW;AACzE,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,WAAW,IAAI,KAAK,IAAI,EAAE;AAAA,QAChF,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,oBAAY,CAAC,SAAS;AAAA,UACpB,GAAG;AAAA,UACH,EAAE,IAAI,OAAO,WAAW,GAAG,MAAM,UAAU,SAAS,yBAAyB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE;AAAA,QAClJ,CAAC;AAAA,MACH;AACA,eAAS,EAAE;AACX;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,QAAQ;AAC1B,YAAM,UAAU,SAAS,MAAM;AAC/B,iBAAW,MAAM,QAAQ,KAAK,CAAC,GAAG,EAAE;AAAA,IACtC;AACA,QAAI,OAAO,SAAS,SAAS;AAC3B,kBAAY,CAAC,CAAC;AACd,uBAAiB,KAAK;AAAA,IACxB;AACA,aAAS,EAAE;AAAA,EACb;AAEA,SACE,gBAAAS,OAAA,cAACC,MAAA,EAAI,eAAc,YACjB,gBAAAD,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU,mBAAmB;AAAA,MAC7B,YAAY,OAAO;AAAA,MACnB;AAAA,MACA,WAAW,YAAY,UAAU,MAAM,GAAG,CAAC,IAAI;AAAA,MAC/C,aAAa,aAAa;AAAA,MAC1B,cAAc,aAAa;AAAA;AAAA,EAC7B,GACA,gBAAAA,OAAA,cAACC,MAAA,EAAI,eAAc,SACjB,gBAAAD,OAAA,cAAC,cAAW,UAAoB,GAChC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,cAAc,SAAS;AAAA,MACvB;AAAA;AAAA,EACF,CACF,GACA,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA;AAAA,EACZ,CACF;AAEJ;;;AD50DO,IAAM,UAAU;AAYvB,eAAe,wBAAuC;AACpD,MAAI,QAAQ,IAAI,iBAAiB,IAAK;AACtC,QAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAI,CAAC;AACxD,MAAI;AACF,UAAM,EAAE,gBAAAE,gBAAe,IAAI,MAAM;AACjC,UAAM,OAAO,MAAMA,gBAAe;AAClC,QAAI,KAAK,mBAAmB,CAAC,KAAK,OAAO;AAEvC,cAAQ;AAAA,QACN,6BAAsB,KAAK,aAAa,yBAAyB,KAAK,cAAc;AAAA,MAEtF;AAAA,IACF;AAAA,EACF,QAAQ;AAAA,EAGR;AACF;AAEA,eAAe,WAA0B;AAOvC,MAAI;AACF,UAAM,iBAAiB,EAAE,MAAM;AAAA,EACjC,QAAQ;AAAA,EAER;AACA,UAAQ,KAAK,CAAC;AAChB;AAEA,SAAS,OAAO;AACd,QAAM,EAAE,eAAe,QAAQ,IAAI,OAAOC,OAAM,cAAc,GAAG,CAAC;AAElE,UAAQ,GAAG,UAAU,MAAM;AACzB,YAAQ;AACR,SAAK,SAAS;AAAA,EAChB,CAAC;AACD,UAAQ,GAAG,WAAW,MAAM;AAC1B,YAAQ;AACR,SAAK,SAAS;AAAA,EAChB,CAAC;AAGD,OAAK,sBAAsB;AAE3B,gBAAc,EAAE,KAAK,MAAM;AACzB,SAAK,SAAS;AAAA,EAChB,CAAC;AACH;AAEA,KAAK;",
6
+ "names": ["url", "hash", "url", "spawn", "fs", "path", "os", "p", "file", "spawn", "path", "__dirname", "require", "parse", "React", "React", "useState", "Box", "React", "Box", "Text", "React", "Box", "Text", "React", "Box", "Text", "React", "Box", "Text", "React", "Box", "Text", "url", "text", "version", "config", "fs", "fs", "existsSync", "readFileSync", "writeFileSync", "mkdirSync", "path", "os", "file", "p", "config", "url", "custom", "config", "fs", "existsSync", "readFileSync", "writeFileSync", "mkdirSync", "path", "os", "path", "os", "fs", "file", "existsSync", "readFileSync", "mkdirSync", "writeFileSync", "fs", "path", "required", "p", "required", "path", "registry", "p", "config", "config", "fs", "existsSync", "readFileSync", "writeFileSync", "mkdirSync", "path", "os", "fs", "existsSync", "readFileSync", "path", "file", "registry", "file", "fs", "path", "resolveApiKeyWithMeta", "getOAuthToken", "json", "url", "fs", "existsSync", "readFileSync", "writeFileSync", "mkdirSync", "statSync", "path", "os", "meta", "required", "error", "error", "_default", "base64", "base64url", "bigint", "boolean", "_catch", "cidrv4", "cidrv6", "core_exports", "cuid", "cuid2", "date", "decode", "decodeAsync", "describe", "e164", "email", "emoji", "encode", "encodeAsync", "_enum", "guid", "hex", "hostname", "ipv4", "ipv6", "ksuid", "mac", "meta", "nanoid", "_null", "nullish", "number", "parse", "parseAsync", "registry", "safeDecode", "safeDecodeAsync", "safeEncode", "safeEncodeAsync", "safeParse", "safeParseAsync", "string", "ulid", "_undefined", "uuid", "_void", "xid", "core_exports", "_emoji", "_null", "_undefined", "process", "registry", "initializer", "_a", "slugify", "array", "set", "object", "path", "slugify", "Class", "_a", "config", "base64", "base64url", "hex", "error", "issue", "path", "_a", "version", "time", "_a", "inst", "result", "_a", "checks", "checkResult", "canary", "result", "_", "url", "base64", "r", "isObject", "allowsEval", "p", "results", "map", "left", "right", "keyResult", "valueResult", "output", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "number", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "error", "issue", "_a", "meta", "p", "registry", "Class", "_emoji", "_undefined", "_null", "slugify", "Class", "issue", "codec", "process", "_a", "meta", "id", "schema", "json", "file", "process", "registry", "ctx", "process", "schemas_exports", "_default", "base64", "base64url", "bigint", "boolean", "_catch", "cidrv4", "cidrv6", "cuid", "cuid2", "date", "describe", "e164", "email", "emoji", "_enum", "guid", "hex", "hostname", "ipv4", "ipv6", "ksuid", "mac", "meta", "nanoid", "_null", "nullish", "number", "string", "ulid", "_undefined", "uuid", "_void", "xid", "checks_exports", "date", "datetime", "duration", "time", "datetime", "date", "time", "duration", "initializer", "issue", "issues", "parse", "parseAsync", "safeParse", "safeParseAsync", "encode", "decode", "encodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "parse", "safeParse", "parseAsync", "safeParseAsync", "encode", "decode", "encodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "def", "meta", "check", "_default", "_catch", "json", "_emoji", "datetime", "date", "time", "duration", "string", "email", "guid", "uuid", "emoji", "nanoid", "cuid", "cuid2", "ulid", "xid", "ksuid", "ipv4", "mac", "ipv6", "cidrv4", "cidrv6", "base64", "base64url", "e164", "hostname", "hex", "number", "boolean", "bigint", "_undefined", "json", "_null", "json", "_void", "json", "date", "_enum", "string", "json", "issue", "output", "nullish", "_default", "_catch", "json", "codec", "json", "describe", "meta", "string", "number", "boolean", "_null", "map", "ZodFirstPartyTypeKind", "schemas_exports", "checks_exports", "path", "zodSchema", "objectSchema", "version", "bigint", "boolean", "date", "number", "string", "string", "number", "boolean", "bigint", "date", "fs", "path", "path", "fs", "fs", "path", "path", "fs", "path", "fs", "path", "os", "error", "registry", "path", "fs", "existsSync", "statSync", "mkdirSync", "path", "os", "file", "fs", "existsSync", "statSync", "renameSync", "appendFileSync", "mkdirSync", "path", "os", "randomUUID", "file", "path", "os", "useState", "p", "config", "input", "sysMsg", "checkForUpdate", "performUpdate", "cached", "React", "Box", "checkForUpdate", "React"]
7
+ }