@discomedia/utils 1.0.77 → 1.0.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index-frontend.cjs +2024 -15270
- package/dist/index-frontend.cjs.map +7 -1
- package/dist/index-frontend.mjs +1985 -15260
- package/dist/index-frontend.mjs.map +7 -1
- package/dist/index.cjs +5486 -24388
- package/dist/index.cjs.map +7 -1
- package/dist/index.mjs +5444 -24377
- package/dist/index.mjs.map +7 -1
- package/dist/package.json +10 -11
- package/dist/test.mjs +5814 -0
- package/dist/test.mjs.map +7 -0
- package/dist/types/alpaca-market-data-api.d.ts.map +1 -1
- package/dist/types/alpaca-trading-api.d.ts.map +1 -1
- package/dist/types/disco-mail.d.ts +24 -0
- package/dist/types/disco-mail.d.ts.map +1 -0
- package/dist/types/index-frontend.d.ts +2 -1
- package/dist/types/index-frontend.d.ts.map +1 -1
- package/dist/types/index.d.ts +10 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/llm-config.d.ts +4 -2
- package/dist/types/llm-config.d.ts.map +1 -1
- package/dist/types/llm-deepseek.d.ts.map +1 -1
- package/dist/types/llm-images.d.ts.map +1 -1
- package/dist/types/llm-openai.d.ts +7 -4
- package/dist/types/llm-openai.d.ts.map +1 -1
- package/dist/types/llm-openrouter.d.ts.map +1 -1
- package/dist/types/market-time.d.ts +1 -1
- package/dist/types/market-time.d.ts.map +1 -1
- package/dist/types/misc-utils.d.ts +1 -1
- package/dist/types/misc-utils.d.ts.map +1 -1
- package/dist/types/performance-timer.d.ts.map +1 -1
- package/dist/types/types/disco-mail-types.d.ts +80 -0
- package/dist/types/types/disco-mail-types.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/llm-types.d.ts +8 -5
- package/dist/types/types/llm-types.d.ts.map +1 -1
- package/package.json +10 -11
- package/dist/test.js +0 -17500
- package/dist/test.js.map +0 -1
- package/dist/types-frontend/alpaca-market-data-api.d.ts +0 -451
- package/dist/types-frontend/alpaca-market-data-api.d.ts.map +0 -1
- package/dist/types-frontend/alpaca-trading-api.d.ts +0 -407
- package/dist/types-frontend/alpaca-trading-api.d.ts.map +0 -1
- package/dist/types-frontend/format-tools.d.ts +0 -46
- package/dist/types-frontend/format-tools.d.ts.map +0 -1
- package/dist/types-frontend/index-frontend.d.ts +0 -18
- package/dist/types-frontend/index-frontend.d.ts.map +0 -1
- package/dist/types-frontend/index.d.ts +0 -59
- package/dist/types-frontend/index.d.ts.map +0 -1
- package/dist/types-frontend/json-tools.d.ts +0 -31
- package/dist/types-frontend/json-tools.d.ts.map +0 -1
- package/dist/types-frontend/llm-config.d.ts +0 -51
- package/dist/types-frontend/llm-config.d.ts.map +0 -1
- package/dist/types-frontend/llm-deepseek.d.ts +0 -12
- package/dist/types-frontend/llm-deepseek.d.ts.map +0 -1
- package/dist/types-frontend/llm-images.d.ts +0 -52
- package/dist/types-frontend/llm-images.d.ts.map +0 -1
- package/dist/types-frontend/llm-openai.d.ts +0 -79
- package/dist/types-frontend/llm-openai.d.ts.map +0 -1
- package/dist/types-frontend/llm-openrouter.d.ts +0 -28
- package/dist/types-frontend/llm-openrouter.d.ts.map +0 -1
- package/dist/types-frontend/llm-utils.d.ts +0 -16
- package/dist/types-frontend/llm-utils.d.ts.map +0 -1
- package/dist/types-frontend/logging.d.ts +0 -12
- package/dist/types-frontend/logging.d.ts.map +0 -1
- package/dist/types-frontend/market-hours.d.ts +0 -24
- package/dist/types-frontend/market-hours.d.ts.map +0 -1
- package/dist/types-frontend/market-time.d.ts +0 -270
- package/dist/types-frontend/market-time.d.ts.map +0 -1
- package/dist/types-frontend/misc-utils.d.ts +0 -43
- package/dist/types-frontend/misc-utils.d.ts.map +0 -1
- package/dist/types-frontend/performance-timer.d.ts +0 -73
- package/dist/types-frontend/performance-timer.d.ts.map +0 -1
- package/dist/types-frontend/test.d.ts +0 -2
- package/dist/types-frontend/test.d.ts.map +0 -1
- package/dist/types-frontend/testing/market-time-refactor-test.d.ts +0 -1
- package/dist/types-frontend/testing/market-time-refactor-test.d.ts.map +0 -1
- package/dist/types-frontend/types/alpaca-crypto-pairs.d.ts +0 -11
- package/dist/types-frontend/types/alpaca-crypto-pairs.d.ts.map +0 -1
- package/dist/types-frontend/types/alpaca-types.d.ts +0 -1181
- package/dist/types-frontend/types/alpaca-types.d.ts.map +0 -1
- package/dist/types-frontend/types/index.d.ts +0 -6
- package/dist/types-frontend/types/index.d.ts.map +0 -1
- package/dist/types-frontend/types/llm-types.d.ts +0 -174
- package/dist/types-frontend/types/llm-types.d.ts.map +0 -1
- package/dist/types-frontend/types/logging-types.d.ts +0 -10
- package/dist/types-frontend/types/logging-types.d.ts.map +0 -1
- package/dist/types-frontend/types/market-time-types.d.ts +0 -64
- package/dist/types-frontend/types/market-time-types.d.ts.map +0 -1
- package/dist/types-frontend/types/ta-types.d.ts +0 -89
- package/dist/types-frontend/types/ta-types.d.ts.map +0 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/logging.ts","../src/market-hours.ts","../src/market-time.ts","../src/format-tools.ts","../src/types/llm-types.ts","../src/misc-utils.ts","../node_modules/openai/internal/tslib.mjs","../node_modules/openai/internal/utils/uuid.mjs","../node_modules/openai/internal/errors.mjs","../node_modules/openai/core/error.mjs","../node_modules/openai/internal/utils/values.mjs","../node_modules/openai/internal/utils/sleep.mjs","../node_modules/openai/version.mjs","../node_modules/openai/internal/detect-platform.mjs","../node_modules/openai/internal/shims.mjs","../node_modules/openai/internal/request-options.mjs","../node_modules/openai/internal/qs/formats.mjs","../node_modules/openai/internal/qs/utils.mjs","../node_modules/openai/internal/qs/stringify.mjs","../node_modules/openai/internal/utils/query.mjs","../node_modules/openai/internal/utils/bytes.mjs","../node_modules/openai/internal/decoders/line.mjs","../node_modules/openai/internal/utils/log.mjs","../node_modules/openai/core/streaming.mjs","../node_modules/openai/internal/parse.mjs","../node_modules/openai/core/api-promise.mjs","../node_modules/openai/core/pagination.mjs","../node_modules/openai/auth/workload-identity-auth.mjs","../node_modules/openai/internal/uploads.mjs","../node_modules/openai/internal/to-file.mjs","../node_modules/openai/core/resource.mjs","../node_modules/openai/internal/utils/path.mjs","../node_modules/openai/resources/chat/completions/messages.mjs","../node_modules/openai/lib/parser.mjs","../node_modules/openai/lib/chatCompletionUtils.mjs","../node_modules/openai/lib/EventStream.mjs","../node_modules/openai/lib/RunnableFunction.mjs","../node_modules/openai/lib/AbstractChatCompletionRunner.mjs","../node_modules/openai/lib/ChatCompletionRunner.mjs","../node_modules/openai/_vendor/partial-json-parser/parser.mjs","../node_modules/openai/lib/ChatCompletionStream.mjs","../node_modules/openai/lib/ChatCompletionStreamingRunner.mjs","../node_modules/openai/resources/chat/completions/completions.mjs","../node_modules/openai/resources/chat/chat.mjs","../node_modules/openai/resources/admin/organization/admin-api-keys.mjs","../node_modules/openai/resources/admin/organization/audit-logs.mjs","../node_modules/openai/resources/admin/organization/certificates.mjs","../node_modules/openai/resources/admin/organization/data-retention.mjs","../node_modules/openai/resources/admin/organization/invites.mjs","../node_modules/openai/resources/admin/organization/roles.mjs","../node_modules/openai/resources/admin/organization/spend-alerts.mjs","../node_modules/openai/resources/admin/organization/usage.mjs","../node_modules/openai/resources/admin/organization/groups/roles.mjs","../node_modules/openai/resources/admin/organization/groups/users.mjs","../node_modules/openai/resources/admin/organization/groups/groups.mjs","../node_modules/openai/resources/admin/organization/projects/api-keys.mjs","../node_modules/openai/resources/admin/organization/projects/certificates.mjs","../node_modules/openai/resources/admin/organization/projects/data-retention.mjs","../node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.mjs","../node_modules/openai/resources/admin/organization/projects/model-permissions.mjs","../node_modules/openai/resources/admin/organization/projects/rate-limits.mjs","../node_modules/openai/resources/admin/organization/projects/roles.mjs","../node_modules/openai/resources/admin/organization/projects/service-accounts.mjs","../node_modules/openai/resources/admin/organization/projects/spend-alerts.mjs","../node_modules/openai/resources/admin/organization/projects/groups/roles.mjs","../node_modules/openai/resources/admin/organization/projects/groups/groups.mjs","../node_modules/openai/resources/admin/organization/projects/users/roles.mjs","../node_modules/openai/resources/admin/organization/projects/users/users.mjs","../node_modules/openai/resources/admin/organization/projects/projects.mjs","../node_modules/openai/resources/admin/organization/users/roles.mjs","../node_modules/openai/resources/admin/organization/users/users.mjs","../node_modules/openai/resources/admin/organization/organization.mjs","../node_modules/openai/resources/admin/admin.mjs","../node_modules/openai/internal/headers.mjs","../node_modules/openai/resources/audio/speech.mjs","../node_modules/openai/resources/audio/transcriptions.mjs","../node_modules/openai/resources/audio/translations.mjs","../node_modules/openai/resources/audio/audio.mjs","../node_modules/openai/resources/batches.mjs","../node_modules/openai/resources/beta/assistants.mjs","../node_modules/openai/resources/beta/realtime/sessions.mjs","../node_modules/openai/resources/beta/realtime/transcription-sessions.mjs","../node_modules/openai/resources/beta/realtime/realtime.mjs","../node_modules/openai/resources/beta/chatkit/sessions.mjs","../node_modules/openai/resources/beta/chatkit/threads.mjs","../node_modules/openai/resources/beta/chatkit/chatkit.mjs","../node_modules/openai/resources/beta/threads/messages.mjs","../node_modules/openai/resources/beta/threads/runs/steps.mjs","../node_modules/openai/internal/utils/base64.mjs","../node_modules/openai/internal/utils/env.mjs","../node_modules/openai/lib/AssistantStream.mjs","../node_modules/openai/resources/beta/threads/runs/runs.mjs","../node_modules/openai/resources/beta/threads/threads.mjs","../node_modules/openai/resources/beta/beta.mjs","../node_modules/openai/resources/completions.mjs","../node_modules/openai/resources/containers/files/content.mjs","../node_modules/openai/resources/containers/files/files.mjs","../node_modules/openai/resources/containers/containers.mjs","../node_modules/openai/resources/conversations/items.mjs","../node_modules/openai/resources/conversations/conversations.mjs","../node_modules/openai/resources/embeddings.mjs","../node_modules/openai/resources/evals/runs/output-items.mjs","../node_modules/openai/resources/evals/runs/runs.mjs","../node_modules/openai/resources/evals/evals.mjs","../node_modules/openai/resources/files.mjs","../node_modules/openai/resources/fine-tuning/methods.mjs","../node_modules/openai/resources/fine-tuning/alpha/graders.mjs","../node_modules/openai/resources/fine-tuning/alpha/alpha.mjs","../node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs","../node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs","../node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs","../node_modules/openai/resources/fine-tuning/jobs/jobs.mjs","../node_modules/openai/resources/fine-tuning/fine-tuning.mjs","../node_modules/openai/resources/graders/grader-models.mjs","../node_modules/openai/resources/graders/graders.mjs","../node_modules/openai/resources/images.mjs","../node_modules/openai/resources/models.mjs","../node_modules/openai/resources/moderations.mjs","../node_modules/openai/resources/realtime/calls.mjs","../node_modules/openai/resources/realtime/client-secrets.mjs","../node_modules/openai/resources/realtime/realtime.mjs","../node_modules/openai/lib/ResponsesParser.mjs","../node_modules/openai/lib/responses/ResponseStream.mjs","../node_modules/openai/resources/responses/input-items.mjs","../node_modules/openai/resources/responses/input-tokens.mjs","../node_modules/openai/resources/responses/responses.mjs","../node_modules/openai/resources/skills/content.mjs","../node_modules/openai/resources/skills/versions/content.mjs","../node_modules/openai/resources/skills/versions/versions.mjs","../node_modules/openai/resources/skills/skills.mjs","../node_modules/openai/resources/uploads/parts.mjs","../node_modules/openai/resources/uploads/uploads.mjs","../node_modules/openai/lib/Util.mjs","../node_modules/openai/resources/vector-stores/file-batches.mjs","../node_modules/openai/resources/vector-stores/files.mjs","../node_modules/openai/resources/vector-stores/vector-stores.mjs","../node_modules/openai/resources/videos.mjs","../node_modules/openai/resources/webhooks/webhooks.mjs","../node_modules/openai/client.mjs","../node_modules/zod/v4/core/util.js","../node_modules/zod/v4/core/registries.js","../node_modules/zod/v4/core/to-json-schema.js","../node_modules/zod/v4/core/json-schema-processors.js","../node_modules/openai/_vendor/zod-to-json-schema/Options.mjs","../node_modules/openai/_vendor/zod-to-json-schema/util.mjs","../node_modules/openai/_vendor/zod-to-json-schema/Refs.mjs","../node_modules/openai/_vendor/zod-to-json-schema/errorMessages.mjs","../node_modules/zod/v3/types.js","../node_modules/openai/_vendor/zod-to-json-schema/parsers/any.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/array.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/bigint.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/boolean.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/branded.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/catch.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/date.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/default.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/effects.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/enum.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/intersection.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/literal.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/string.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/record.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/map.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/nativeEnum.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/never.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/null.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/union.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/nullable.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/number.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/object.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/optional.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/pipeline.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/promise.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/set.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/tuple.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/undefined.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/unknown.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parsers/readonly.mjs","../node_modules/openai/_vendor/zod-to-json-schema/parseDef.mjs","../node_modules/openai/_vendor/zod-to-json-schema/zodToJsonSchema.mjs","../node_modules/openai/lib/transform.mjs","../node_modules/openai/helpers/zod.mjs","../src/llm-config.ts","../src/json-tools.ts","../src/llm-utils.ts","../src/llm-openai.ts","../src/llm-images.ts","../src/llm-deepseek.ts","../src/llm-openrouter.ts","../src/performance-timer.ts","../node_modules/ws/lib/constants.js","../node_modules/ws/lib/buffer-util.js","../node_modules/ws/lib/limiter.js","../node_modules/ws/lib/permessage-deflate.js","../node_modules/ws/lib/validation.js","../node_modules/ws/lib/receiver.js","../node_modules/ws/lib/sender.js","../node_modules/ws/lib/event-target.js","../node_modules/ws/lib/extension.js","../node_modules/ws/lib/websocket.js","../node_modules/ws/lib/stream.js","../node_modules/ws/lib/subprotocol.js","../node_modules/ws/lib/websocket-server.js","../node_modules/dotenv/lib/main.js","../node_modules/dotenv/lib/env-options.js","../node_modules/dotenv/lib/cli-options.js","../node_modules/dotenv/config.js","../src/alpaca-market-data-api.ts","../src/alpaca-trading-api.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,"function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\")\n throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f)\n throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? (f.value = value) : state.set(receiver, value), value;\n}\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f)\n throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport { __classPrivateFieldSet, __classPrivateFieldGet };\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n/**\n * https://stackoverflow.com/a/2117523\n */\nexport let uuid4 = function () {\n const { crypto } = globalThis;\n if (crypto?.randomUUID) {\n uuid4 = crypto.randomUUID.bind(crypto);\n return crypto.randomUUID();\n }\n const u8 = new Uint8Array(1);\n const randomByte = crypto ? () => crypto.getRandomValues(u8)[0] : () => (Math.random() * 0xff) & 0xff;\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => (+c ^ (randomByte() & (15 >> (+c / 4)))).toString(16));\n};\n//# sourceMappingURL=uuid.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport function isAbortError(err) {\n return (typeof err === 'object' &&\n err !== null &&\n // Spec-compliant fetch implementations\n (('name' in err && err.name === 'AbortError') ||\n // Expo fetch\n ('message' in err && String(err.message).includes('FetchRequestCanceledException'))));\n}\nexport const castToError = (err) => {\n if (err instanceof Error)\n return err;\n if (typeof err === 'object' && err !== null) {\n try {\n if (Object.prototype.toString.call(err) === '[object Error]') {\n // @ts-ignore - not all envs have native support for cause yet\n const error = new Error(err.message, err.cause ? { cause: err.cause } : {});\n if (err.stack)\n error.stack = err.stack;\n // @ts-ignore - not all envs have native support for cause yet\n if (err.cause && !error.cause)\n error.cause = err.cause;\n if (err.name)\n error.name = err.name;\n return error;\n }\n }\n catch { }\n try {\n return new Error(JSON.stringify(err));\n }\n catch { }\n }\n return new Error(err);\n};\n//# sourceMappingURL=errors.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { castToError } from \"../internal/errors.mjs\";\nexport class OpenAIError extends Error {\n}\nexport class APIError extends OpenAIError {\n constructor(status, error, message, headers) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n this.requestID = headers?.get('x-request-id');\n this.error = error;\n const data = error;\n this.code = data?.['code'];\n this.param = data?.['param'];\n this.type = data?.['type'];\n }\n static makeMessage(status, error, message) {\n const msg = error?.message ?\n typeof error.message === 'string' ?\n error.message\n : JSON.stringify(error.message)\n : error ? JSON.stringify(error)\n : message;\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return '(no status code or body)';\n }\n static generate(status, errorResponse, message, headers) {\n if (!status || !headers) {\n return new APIConnectionError({ message, cause: castToError(errorResponse) });\n }\n const error = errorResponse?.['error'];\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n return new APIError(status, error, message, headers);\n }\n}\nexport class APIUserAbortError extends APIError {\n constructor({ message } = {}) {\n super(undefined, undefined, message || 'Request was aborted.', undefined);\n }\n}\nexport class APIConnectionError extends APIError {\n constructor({ message, cause }) {\n super(undefined, undefined, message || 'Connection error.', undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause)\n this.cause = cause;\n }\n}\nexport class APIConnectionTimeoutError extends APIConnectionError {\n constructor({ message } = {}) {\n super({ message: message ?? 'Request timed out.' });\n }\n}\nexport class BadRequestError extends APIError {\n}\nexport class AuthenticationError extends APIError {\n}\nexport class PermissionDeniedError extends APIError {\n}\nexport class NotFoundError extends APIError {\n}\nexport class ConflictError extends APIError {\n}\nexport class UnprocessableEntityError extends APIError {\n}\nexport class RateLimitError extends APIError {\n}\nexport class InternalServerError extends APIError {\n}\nexport class LengthFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the length limit was reached`);\n }\n}\nexport class ContentFilterFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the request was rejected by the content filter`);\n }\n}\nexport class InvalidWebhookSignatureError extends Error {\n constructor(message) {\n super(message);\n }\n}\n/**\n * Error thrown by the API server during OAuth token exchange.\n * Can have status codes 400, 401, or 403.\n * Other status codes from OAuth endpoints are raised as normal APIError types.\n */\nexport class OAuthError extends APIError {\n constructor(status, error, headers) {\n let finalMessage = 'OAuth2 authentication error';\n let error_code = undefined;\n if (error && typeof error === 'object') {\n const errorData = error;\n error_code = errorData['error'];\n const description = errorData['error_description'];\n if (description && typeof description === 'string') {\n finalMessage = description;\n }\n else if (error_code) {\n finalMessage = error_code;\n }\n }\n super(status, error, finalMessage, headers);\n this.error_code = error_code;\n }\n}\nexport class SubjectTokenProviderError extends OpenAIError {\n constructor(message, provider, cause) {\n super(message);\n this.provider = provider;\n this.cause = cause;\n }\n}\n//# sourceMappingURL=error.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { OpenAIError } from \"../../core/error.mjs\";\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\nexport const isAbsoluteURL = (url) => {\n return startsWithSchemeRegexp.test(url);\n};\nexport let isArray = (val) => ((isArray = Array.isArray), isArray(val));\nexport let isReadonlyArray = isArray;\n/** Returns an object if the given value isn't an object, otherwise returns as-is */\nexport function maybeObj(x) {\n if (typeof x !== 'object') {\n return {};\n }\n return x ?? {};\n}\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj) {\n if (!obj)\n return true;\n for (const _k in obj)\n return false;\n return true;\n}\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\nexport function isObj(obj) {\n return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\nexport const ensurePresent = (value) => {\n if (value == null) {\n throw new OpenAIError(`Expected a value to be given but received ${value} instead.`);\n }\n return value;\n};\nexport const validatePositiveInteger = (name, n) => {\n if (typeof n !== 'number' || !Number.isInteger(n)) {\n throw new OpenAIError(`${name} must be an integer`);\n }\n if (n < 0) {\n throw new OpenAIError(`${name} must be a positive integer`);\n }\n return n;\n};\nexport const coerceInteger = (value) => {\n if (typeof value === 'number')\n return Math.round(value);\n if (typeof value === 'string')\n return parseInt(value, 10);\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceFloat = (value) => {\n if (typeof value === 'number')\n return value;\n if (typeof value === 'string')\n return parseFloat(value);\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceBoolean = (value) => {\n if (typeof value === 'boolean')\n return value;\n if (typeof value === 'string')\n return value === 'true';\n return Boolean(value);\n};\nexport const maybeCoerceInteger = (value) => {\n if (value == null) {\n return undefined;\n }\n return coerceInteger(value);\n};\nexport const maybeCoerceFloat = (value) => {\n if (value == null) {\n return undefined;\n }\n return coerceFloat(value);\n};\nexport const maybeCoerceBoolean = (value) => {\n if (value == null) {\n return undefined;\n }\n return coerceBoolean(value);\n};\nexport const safeJSON = (text) => {\n try {\n return JSON.parse(text);\n }\n catch (err) {\n return undefined;\n }\n};\n//# sourceMappingURL=values.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n//# sourceMappingURL=sleep.mjs.map","export const VERSION = '6.44.0'; // x-release-please-version\n//# sourceMappingURL=version.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { VERSION } from \"../version.mjs\";\nexport const isRunningInBrowser = () => {\n return (\n // @ts-ignore\n typeof window !== 'undefined' &&\n // @ts-ignore\n typeof window.document !== 'undefined' &&\n // @ts-ignore\n typeof navigator !== 'undefined');\n};\n/**\n * Note this does not detect 'browser'; for that, use getBrowserInfo().\n */\nfunction getDetectedPlatform() {\n if (typeof Deno !== 'undefined' && Deno.build != null) {\n return 'deno';\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return 'edge';\n }\n if (Object.prototype.toString.call(typeof globalThis.process !== 'undefined' ? globalThis.process : 0) === '[object process]') {\n return 'node';\n }\n return 'unknown';\n}\nconst getPlatformProperties = () => {\n const detectedPlatform = getDetectedPlatform();\n if (detectedPlatform === 'deno') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(Deno.build.os),\n 'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n 'X-Stainless-Runtime': 'deno',\n 'X-Stainless-Runtime-Version': typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n };\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': `other:${EdgeRuntime}`,\n 'X-Stainless-Runtime': 'edge',\n 'X-Stainless-Runtime-Version': globalThis.process.version,\n };\n }\n // Check if Node.js\n if (detectedPlatform === 'node') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(globalThis.process.platform ?? 'unknown'),\n 'X-Stainless-Arch': normalizeArch(globalThis.process.arch ?? 'unknown'),\n 'X-Stainless-Runtime': 'node',\n 'X-Stainless-Runtime-Version': globalThis.process.version ?? 'unknown',\n };\n }\n const browserInfo = getBrowserInfo();\n if (browserInfo) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n 'X-Stainless-Runtime-Version': browserInfo.version,\n };\n }\n // TODO add support for Cloudflare workers, etc.\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': 'unknown',\n 'X-Stainless-Runtime-Version': 'unknown',\n };\n};\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo() {\n if (typeof navigator === 'undefined' || !navigator) {\n return null;\n }\n // NOTE: The order matters here!\n const browserPatterns = [\n { key: 'edge', pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'chrome', pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'firefox', pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'safari', pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n ];\n // Find the FIRST matching browser\n for (const { key, pattern } of browserPatterns) {\n const match = pattern.exec(navigator.userAgent);\n if (match) {\n const major = match[1] || 0;\n const minor = match[2] || 0;\n const patch = match[3] || 0;\n return { browser: key, version: `${major}.${minor}.${patch}` };\n }\n }\n return null;\n}\nconst normalizeArch = (arch) => {\n // Node docs:\n // - https://nodejs.org/api/process.html#processarch\n // Deno docs:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n if (arch === 'x32')\n return 'x32';\n if (arch === 'x86_64' || arch === 'x64')\n return 'x64';\n if (arch === 'arm')\n return 'arm';\n if (arch === 'aarch64' || arch === 'arm64')\n return 'arm64';\n if (arch)\n return `other:${arch}`;\n return 'unknown';\n};\nconst normalizePlatform = (platform) => {\n // Node platforms:\n // - https://nodejs.org/api/process.html#processplatform\n // Deno platforms:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n // - https://github.com/denoland/deno/issues/14799\n platform = platform.toLowerCase();\n // NOTE: this iOS check is untested and may not work\n // Node does not work natively on IOS, there is a fork at\n // https://github.com/nodejs-mobile/nodejs-mobile\n // however it is unknown at the time of writing how to detect if it is running\n if (platform.includes('ios'))\n return 'iOS';\n if (platform === 'android')\n return 'Android';\n if (platform === 'darwin')\n return 'MacOS';\n if (platform === 'win32')\n return 'Windows';\n if (platform === 'freebsd')\n return 'FreeBSD';\n if (platform === 'openbsd')\n return 'OpenBSD';\n if (platform === 'linux')\n return 'Linux';\n if (platform)\n return `Other:${platform}`;\n return 'Unknown';\n};\nlet _platformHeaders;\nexport const getPlatformHeaders = () => {\n return (_platformHeaders ?? (_platformHeaders = getPlatformProperties()));\n};\n//# sourceMappingURL=detect-platform.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport function getDefaultFetch() {\n if (typeof fetch !== 'undefined') {\n return fetch;\n }\n throw new Error('`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`');\n}\nexport function makeReadableStream(...args) {\n const ReadableStream = globalThis.ReadableStream;\n if (typeof ReadableStream === 'undefined') {\n // Note: All of the platforms / runtimes we officially support already define\n // `ReadableStream` as a global, so this should only ever be hit on unsupported runtimes.\n throw new Error('`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`');\n }\n return new ReadableStream(...args);\n}\nexport function ReadableStreamFrom(iterable) {\n let iter = Symbol.asyncIterator in iterable ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();\n return makeReadableStream({\n start() { },\n async pull(controller) {\n const { done, value } = await iter.next();\n if (done) {\n controller.close();\n }\n else {\n controller.enqueue(value);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n}\n/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function ReadableStreamToAsyncIterable(stream) {\n if (stream[Symbol.asyncIterator])\n return stream;\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done)\n reader.releaseLock(); // release lock when stream becomes closed\n return result;\n }\n catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n/**\n * Cancels a ReadableStream we don't need to consume.\n * See https://undici.nodejs.org/#/?id=garbage-collection\n */\nexport async function CancelReadableStream(stream) {\n if (stream === null || typeof stream !== 'object')\n return;\n if (stream[Symbol.asyncIterator]) {\n await stream[Symbol.asyncIterator]().return?.();\n return;\n }\n const reader = stream.getReader();\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n}\n//# sourceMappingURL=shims.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport const FallbackEncoder = ({ headers, body }) => {\n return {\n bodyHeaders: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify(body),\n };\n};\n//# sourceMappingURL=request-options.mjs.map","export const default_format = 'RFC3986';\nexport const default_formatter = (v) => String(v);\nexport const formatters = {\n RFC1738: (v) => String(v).replace(/%20/g, '+'),\n RFC3986: default_formatter,\n};\nexport const RFC1738 = 'RFC1738';\nexport const RFC3986 = 'RFC3986';\n//# sourceMappingURL=formats.mjs.map","import { RFC1738 } from \"./formats.mjs\";\nimport { isArray } from \"../utils/values.mjs\";\nexport let has = (obj, key) => ((has = Object.hasOwn ?? Function.prototype.call.bind(Object.prototype.hasOwnProperty)),\n has(obj, key));\nconst hex_table = /* @__PURE__ */ (() => {\n const array = [];\n for (let i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n return array;\n})();\nfunction compact_queue(queue) {\n while (queue.length > 1) {\n const item = queue.pop();\n if (!item)\n continue;\n const obj = item.obj[item.prop];\n if (isArray(obj)) {\n const compacted = [];\n for (let j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n // @ts-ignore\n item.obj[item.prop] = compacted;\n }\n }\n}\nfunction array_to_object(source, options) {\n const obj = options && options.plainObjects ? Object.create(null) : {};\n for (let i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n return obj;\n}\nexport function merge(target, source, options = {}) {\n if (!source) {\n return target;\n }\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n }\n else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has(Object.prototype, source)) {\n target[source] = true;\n }\n }\n else {\n return [target, source];\n }\n return target;\n }\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n let mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n // @ts-ignore\n mergeTarget = array_to_object(target, options);\n }\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has(target, i)) {\n const targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n }\n else {\n target.push(item);\n }\n }\n else {\n target[i] = item;\n }\n });\n return target;\n }\n return Object.keys(source).reduce(function (acc, key) {\n const value = source[key];\n if (has(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n }\n else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n}\nexport function assign_single_source(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n}\nexport function decode(str, _, charset) {\n const strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n }\n catch (e) {\n return strWithoutPlus;\n }\n}\nconst limit = 1024;\nexport const encode = (str, _defaultEncoder, charset, _kind, format) => {\n // This code was originally written by Brian White for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n let string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n }\n else if (typeof str !== 'string') {\n string = String(str);\n }\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n let out = '';\n for (let j = 0; j < string.length; j += limit) {\n const segment = string.length >= limit ? string.slice(j, j + limit) : string;\n const arr = [];\n for (let i = 0; i < segment.length; ++i) {\n let c = segment.charCodeAt(i);\n if (c === 0x2d || // -\n c === 0x2e || // .\n c === 0x5f || // _\n c === 0x7e || // ~\n (c >= 0x30 && c <= 0x39) || // 0-9\n (c >= 0x41 && c <= 0x5a) || // a-z\n (c >= 0x61 && c <= 0x7a) || // A-Z\n (format === RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n if (c < 0x80) {\n arr[arr.length] = hex_table[c];\n continue;\n }\n if (c < 0x800) {\n arr[arr.length] = hex_table[0xc0 | (c >> 6)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n if (c < 0xd800 || c >= 0xe000) {\n arr[arr.length] =\n hex_table[0xe0 | (c >> 12)] + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n i += 1;\n c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));\n arr[arr.length] =\n hex_table[0xf0 | (c >> 18)] +\n hex_table[0x80 | ((c >> 12) & 0x3f)] +\n hex_table[0x80 | ((c >> 6) & 0x3f)] +\n hex_table[0x80 | (c & 0x3f)];\n }\n out += arr.join('');\n }\n return out;\n};\nexport function compact(value) {\n const queue = [{ obj: { o: value }, prop: 'o' }];\n const refs = [];\n for (let i = 0; i < queue.length; ++i) {\n const item = queue[i];\n // @ts-ignore\n const obj = item.obj[item.prop];\n const keys = Object.keys(obj);\n for (let j = 0; j < keys.length; ++j) {\n const key = keys[j];\n const val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n compact_queue(queue);\n return value;\n}\nexport function is_regexp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nexport function is_buffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n}\nexport function combine(a, b) {\n return [].concat(a, b);\n}\nexport function maybe_map(val, fn) {\n if (isArray(val)) {\n const mapped = [];\n for (let i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n}\n//# sourceMappingURL=utils.mjs.map","import { encode, is_buffer, maybe_map, has } from \"./utils.mjs\";\nimport { default_format, default_formatter, formatters } from \"./formats.mjs\";\nimport { isArray } from \"../utils/values.mjs\";\nconst array_prefix_generators = {\n brackets(prefix) {\n return String(prefix) + '[]';\n },\n comma: 'comma',\n indices(prefix, key) {\n return String(prefix) + '[' + key + ']';\n },\n repeat(prefix) {\n return String(prefix);\n },\n};\nconst push_to_array = function (arr, value_or_array) {\n Array.prototype.push.apply(arr, isArray(value_or_array) ? value_or_array : [value_or_array]);\n};\nlet toISOString;\nconst defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: encode,\n encodeValuesOnly: false,\n format: default_format,\n formatter: default_formatter,\n /** @deprecated */\n indices: false,\n serializeDate(date) {\n return (toISOString ?? (toISOString = Function.prototype.call.bind(Date.prototype.toISOString)))(date);\n },\n skipNulls: false,\n strictNullHandling: false,\n};\nfunction is_non_nullish_primitive(v) {\n return (typeof v === 'string' ||\n typeof v === 'number' ||\n typeof v === 'boolean' ||\n typeof v === 'symbol' ||\n typeof v === 'bigint');\n}\nconst sentinel = {};\nfunction inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) {\n let obj = object;\n let tmp_sc = sideChannel;\n let step = 0;\n let find_flag = false;\n while ((tmp_sc = tmp_sc.get(sentinel)) !== void undefined && !find_flag) {\n // Where object last appeared in the ref tree\n const pos = tmp_sc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n }\n else {\n find_flag = true; // Break while\n }\n }\n if (typeof tmp_sc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n }\n else if (obj instanceof Date) {\n obj = serializeDate?.(obj);\n }\n else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = maybe_map(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate?.(value);\n }\n return value;\n });\n }\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ?\n // @ts-expect-error\n encoder(prefix, defaults.encoder, charset, 'key', format)\n : prefix;\n }\n obj = '';\n }\n if (is_non_nullish_primitive(obj) || is_buffer(obj)) {\n if (encoder) {\n const key_value = encodeValuesOnly ? prefix\n // @ts-expect-error\n : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [\n formatter?.(key_value) +\n '=' +\n // @ts-expect-error\n formatter?.(encoder(obj, defaults.encoder, charset, 'value', format)),\n ];\n }\n return [formatter?.(prefix) + '=' + formatter?.(String(obj))];\n }\n const values = [];\n if (typeof obj === 'undefined') {\n return values;\n }\n let obj_keys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n // @ts-expect-error values only\n obj = maybe_map(obj, encoder);\n }\n obj_keys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n }\n else if (isArray(filter)) {\n obj_keys = filter;\n }\n else {\n const keys = Object.keys(obj);\n obj_keys = sort ? keys.sort(sort) : keys;\n }\n const encoded_prefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n const adjusted_prefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encoded_prefix + '[]' : encoded_prefix;\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjusted_prefix + '[]';\n }\n for (let j = 0; j < obj_keys.length; ++j) {\n const key = obj_keys[j];\n const value = \n // @ts-ignore\n typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n if (skipNulls && value === null) {\n continue;\n }\n // @ts-ignore\n const encoded_key = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n const key_prefix = isArray(obj) ?\n typeof generateArrayPrefix === 'function' ?\n generateArrayPrefix(adjusted_prefix, encoded_key)\n : adjusted_prefix\n : adjusted_prefix + (allowDots ? '.' + encoded_key : '[' + encoded_key + ']');\n sideChannel.set(object, step);\n const valueSideChannel = new WeakMap();\n valueSideChannel.set(sentinel, sideChannel);\n push_to_array(values, inner_stringify(value, key_prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, \n // @ts-ignore\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel));\n }\n return values;\n}\nfunction normalize_stringify_options(opts = defaults) {\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n const charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n let format = default_format;\n if (typeof opts.format !== 'undefined') {\n if (!has(formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n const formatter = formatters[format];\n let filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n let arrayFormat;\n if (opts.arrayFormat && opts.arrayFormat in array_prefix_generators) {\n arrayFormat = opts.arrayFormat;\n }\n else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n }\n else {\n arrayFormat = defaults.arrayFormat;\n }\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n const allowDots = typeof opts.allowDots === 'undefined' ?\n !!opts.encodeDotInKeys === true ?\n true\n : defaults.allowDots\n : !!opts.allowDots;\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n // @ts-ignore\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: !!opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n // @ts-ignore\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n };\n}\nexport function stringify(object, opts = {}) {\n let obj = object;\n const options = normalize_stringify_options(opts);\n let obj_keys;\n let filter;\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n }\n else if (isArray(options.filter)) {\n filter = options.filter;\n obj_keys = filter;\n }\n const keys = [];\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n const generateArrayPrefix = array_prefix_generators[options.arrayFormat];\n const commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n if (!obj_keys) {\n obj_keys = Object.keys(obj);\n }\n if (options.sort) {\n obj_keys.sort(options.sort);\n }\n const sideChannel = new WeakMap();\n for (let i = 0; i < obj_keys.length; ++i) {\n const key = obj_keys[i];\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n push_to_array(keys, inner_stringify(obj[key], key, \n // @ts-expect-error\n generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel));\n }\n const joined = keys.join(options.delimiter);\n let prefix = options.addQueryPrefix === true ? '?' : '';\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n }\n else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n return joined.length > 0 ? prefix + joined : '';\n}\n//# sourceMappingURL=stringify.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport * as qs from \"../qs/stringify.mjs\";\nexport function stringifyQuery(query) {\n return qs.stringify(query, { arrayFormat: 'brackets' });\n}\n//# sourceMappingURL=query.mjs.map","export function concatBytes(buffers) {\n let length = 0;\n for (const buffer of buffers) {\n length += buffer.length;\n }\n const output = new Uint8Array(length);\n let index = 0;\n for (const buffer of buffers) {\n output.set(buffer, index);\n index += buffer.length;\n }\n return output;\n}\nlet encodeUTF8_;\nexport function encodeUTF8(str) {\n let encoder;\n return (encodeUTF8_ ??\n ((encoder = new globalThis.TextEncoder()), (encodeUTF8_ = encoder.encode.bind(encoder))))(str);\n}\nlet decodeUTF8_;\nexport function decodeUTF8(bytes) {\n let decoder;\n return (decodeUTF8_ ??\n ((decoder = new globalThis.TextDecoder()), (decodeUTF8_ = decoder.decode.bind(decoder))))(bytes);\n}\n//# sourceMappingURL=bytes.mjs.map","var _LineDecoder_buffer, _LineDecoder_carriageReturnIndex;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../tslib.mjs\";\nimport { concatBytes, decodeUTF8, encodeUTF8 } from \"../utils/bytes.mjs\";\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nexport class LineDecoder {\n constructor() {\n _LineDecoder_buffer.set(this, void 0);\n _LineDecoder_carriageReturnIndex.set(this, void 0);\n __classPrivateFieldSet(this, _LineDecoder_buffer, new Uint8Array(), \"f\");\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n decode(chunk) {\n if (chunk == null) {\n return [];\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? encodeUTF8(chunk)\n : chunk;\n __classPrivateFieldSet(this, _LineDecoder_buffer, concatBytes([__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\"), binaryChunk]), \"f\");\n const lines = [];\n let patternIndex;\n while ((patternIndex = findNewlineIndex(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\"), __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"))) != null) {\n if (patternIndex.carriage && __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") == null) {\n // skip until we either get a corresponding `\\n`, a new `\\r` or nothing\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, patternIndex.index, \"f\");\n continue;\n }\n // we got double \\r or \\rtext\\n\n if (__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") != null &&\n (patternIndex.index !== __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") + 1 || patternIndex.carriage)) {\n lines.push(decodeUTF8(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(0, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") - 1)));\n __classPrivateFieldSet(this, _LineDecoder_buffer, __classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\")), \"f\");\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n continue;\n }\n const endIndex = __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") !== null ? patternIndex.preceding - 1 : patternIndex.preceding;\n const line = decodeUTF8(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(0, endIndex));\n lines.push(line);\n __classPrivateFieldSet(this, _LineDecoder_buffer, __classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(patternIndex.index), \"f\");\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n return lines;\n }\n flush() {\n if (!__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").length) {\n return [];\n }\n return this.decode('\\n');\n }\n}\n_LineDecoder_buffer = new WeakMap(), _LineDecoder_carriageReturnIndex = new WeakMap();\n// prettier-ignore\nLineDecoder.NEWLINE_CHARS = new Set(['\\n', '\\r']);\nLineDecoder.NEWLINE_REGEXP = /\\r\\n|[\\n\\r]/g;\n/**\n * This function searches the buffer for the end patterns, (\\r or \\n)\n * and returns an object with the index preceding the matched newline and the\n * index after the newline char. `null` is returned if no new line is found.\n *\n * ```ts\n * findNewLineIndex('abc\\ndef') -> { preceding: 2, index: 3 }\n * ```\n */\nfunction findNewlineIndex(buffer, startIndex) {\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = startIndex ?? 0; i < buffer.length; i++) {\n if (buffer[i] === newline) {\n return { preceding: i, index: i + 1, carriage: false };\n }\n if (buffer[i] === carriage) {\n return { preceding: i, index: i + 1, carriage: true };\n }\n }\n return null;\n}\nexport function findDoubleNewlineIndex(buffer) {\n // This function searches the buffer for the end patterns (\\r\\r, \\n\\n, \\r\\n\\r\\n)\n // and returns the index right after the first occurrence of any pattern,\n // or -1 if none of the patterns are found.\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = 0; i < buffer.length - 1; i++) {\n if (buffer[i] === newline && buffer[i + 1] === newline) {\n // \\n\\n\n return i + 2;\n }\n if (buffer[i] === carriage && buffer[i + 1] === carriage) {\n // \\r\\r\n return i + 2;\n }\n if (buffer[i] === carriage &&\n buffer[i + 1] === newline &&\n i + 3 < buffer.length &&\n buffer[i + 2] === carriage &&\n buffer[i + 3] === newline) {\n // \\r\\n\\r\\n\n return i + 4;\n }\n }\n return -1;\n}\n//# sourceMappingURL=line.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { hasOwn } from \"./values.mjs\";\nconst levelNumbers = {\n off: 0,\n error: 200,\n warn: 300,\n info: 400,\n debug: 500,\n};\nexport const parseLogLevel = (maybeLevel, sourceName, client) => {\n if (!maybeLevel) {\n return undefined;\n }\n if (hasOwn(levelNumbers, maybeLevel)) {\n return maybeLevel;\n }\n loggerFor(client).warn(`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(Object.keys(levelNumbers))}`);\n return undefined;\n};\nfunction noop() { }\nfunction makeLogFn(fnLevel, logger, logLevel) {\n if (!logger || levelNumbers[fnLevel] > levelNumbers[logLevel]) {\n return noop;\n }\n else {\n // Don't wrap logger functions, we want the stacktrace intact!\n return logger[fnLevel].bind(logger);\n }\n}\nconst noopLogger = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n};\nlet cachedLoggers = /* @__PURE__ */ new WeakMap();\nexport function loggerFor(client) {\n const logger = client.logger;\n const logLevel = client.logLevel ?? 'off';\n if (!logger) {\n return noopLogger;\n }\n const cachedLogger = cachedLoggers.get(logger);\n if (cachedLogger && cachedLogger[0] === logLevel) {\n return cachedLogger[1];\n }\n const levelLogger = {\n error: makeLogFn('error', logger, logLevel),\n warn: makeLogFn('warn', logger, logLevel),\n info: makeLogFn('info', logger, logLevel),\n debug: makeLogFn('debug', logger, logLevel),\n };\n cachedLoggers.set(logger, [logLevel, levelLogger]);\n return levelLogger;\n}\nexport const formatRequestDetails = (details) => {\n if (details.options) {\n details.options = { ...details.options };\n delete details.options['headers']; // redundant + leaks internals\n }\n if (details.headers) {\n details.headers = Object.fromEntries((details.headers instanceof Headers ? [...details.headers] : Object.entries(details.headers)).map(([name, value]) => [\n name,\n (name.toLowerCase() === 'authorization' ||\n name.toLowerCase() === 'api-key' ||\n name.toLowerCase() === 'x-api-key' ||\n name.toLowerCase() === 'cookie' ||\n name.toLowerCase() === 'set-cookie') ?\n '***'\n : value,\n ]));\n }\n if ('retryOfRequestLogID' in details) {\n if (details.retryOfRequestLogID) {\n details.retryOf = details.retryOfRequestLogID;\n }\n delete details.retryOfRequestLogID;\n }\n return details;\n};\n//# sourceMappingURL=log.mjs.map","var _Stream_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { makeReadableStream } from \"../internal/shims.mjs\";\nimport { findDoubleNewlineIndex, LineDecoder } from \"../internal/decoders/line.mjs\";\nimport { ReadableStreamToAsyncIterable } from \"../internal/shims.mjs\";\nimport { isAbortError } from \"../internal/errors.mjs\";\nimport { encodeUTF8 } from \"../internal/utils/bytes.mjs\";\nimport { loggerFor } from \"../internal/utils/log.mjs\";\nimport { APIError } from \"./error.mjs\";\nexport class Stream {\n constructor(iterator, controller, client) {\n this.iterator = iterator;\n _Stream_client.set(this, void 0);\n this.controller = controller;\n __classPrivateFieldSet(this, _Stream_client, client, \"f\");\n }\n static fromSSEResponse(response, controller, client, synthesizeEventData) {\n let consumed = false;\n const logger = client ? loggerFor(client) : console;\n async function* iterator() {\n if (consumed) {\n throw new OpenAIError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const sse of _iterSSEMessages(response, controller)) {\n if (done)\n continue;\n if (sse.data.startsWith('[DONE]')) {\n done = true;\n continue;\n }\n if (sse.event === null || !sse.event.startsWith('thread.')) {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n logger.error(`Could not parse message into JSON:`, sse.data);\n logger.error(`From chunk:`, sse.raw);\n throw e;\n }\n if (data && data.error) {\n throw new APIError(undefined, data.error, undefined, response.headers);\n }\n yield synthesizeEventData ? { event: sse.event, data } : data;\n }\n else {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n // TODO: Is this where the error should be thrown?\n if (sse.event == 'error') {\n throw new APIError(undefined, data.error, data.message, undefined);\n }\n yield { event: sse.event, data: data };\n }\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (isAbortError(e))\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller, client);\n }\n /**\n * Generates a Stream from a newline-separated ReadableStream\n * where each item is a JSON value.\n */\n static fromReadableStream(readableStream, controller, client) {\n let consumed = false;\n async function* iterLines() {\n const lineDecoder = new LineDecoder();\n const iter = ReadableStreamToAsyncIterable(readableStream);\n for await (const chunk of iter) {\n for (const line of lineDecoder.decode(chunk)) {\n yield line;\n }\n }\n for (const line of lineDecoder.flush()) {\n yield line;\n }\n }\n async function* iterator() {\n if (consumed) {\n throw new OpenAIError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const line of iterLines()) {\n if (done)\n continue;\n if (line)\n yield JSON.parse(line);\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (isAbortError(e))\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller, client);\n }\n [(_Stream_client = new WeakMap(), Symbol.asyncIterator)]() {\n return this.iterator();\n }\n /**\n * Splits the stream into two streams which can be\n * independently read from at different speeds.\n */\n tee() {\n const left = [];\n const right = [];\n const iterator = this.iterator();\n const teeIterator = (queue) => {\n return {\n next: () => {\n if (queue.length === 0) {\n const result = iterator.next();\n left.push(result);\n right.push(result);\n }\n return queue.shift();\n },\n };\n };\n return [\n new Stream(() => teeIterator(left), this.controller, __classPrivateFieldGet(this, _Stream_client, \"f\")),\n new Stream(() => teeIterator(right), this.controller, __classPrivateFieldGet(this, _Stream_client, \"f\")),\n ];\n }\n /**\n * Converts this stream to a newline-separated ReadableStream of\n * JSON stringified values in the stream\n * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n */\n toReadableStream() {\n const self = this;\n let iter;\n return makeReadableStream({\n async start() {\n iter = self[Symbol.asyncIterator]();\n },\n async pull(ctrl) {\n try {\n const { value, done } = await iter.next();\n if (done)\n return ctrl.close();\n const bytes = encodeUTF8(JSON.stringify(value) + '\\n');\n ctrl.enqueue(bytes);\n }\n catch (err) {\n ctrl.error(err);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n }\n}\nexport async function* _iterSSEMessages(response, controller) {\n if (!response.body) {\n controller.abort();\n if (typeof globalThis.navigator !== 'undefined' &&\n globalThis.navigator.product === 'ReactNative') {\n throw new OpenAIError(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`);\n }\n throw new OpenAIError(`Attempted to iterate over a response with no body`);\n }\n const sseDecoder = new SSEDecoder();\n const lineDecoder = new LineDecoder();\n const iter = ReadableStreamToAsyncIterable(response.body);\n for await (const sseChunk of iterSSEChunks(iter)) {\n for (const line of lineDecoder.decode(sseChunk)) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n }\n for (const line of lineDecoder.flush()) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n}\n/**\n * Given an async iterable iterator, iterates over it and yields full\n * SSE chunks, i.e. yields when a double new-line is encountered.\n */\nasync function* iterSSEChunks(iterator) {\n let data = new Uint8Array();\n for await (const chunk of iterator) {\n if (chunk == null) {\n continue;\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? encodeUTF8(chunk)\n : chunk;\n let newData = new Uint8Array(data.length + binaryChunk.length);\n newData.set(data);\n newData.set(binaryChunk, data.length);\n data = newData;\n let patternIndex;\n while ((patternIndex = findDoubleNewlineIndex(data)) !== -1) {\n yield data.slice(0, patternIndex);\n data = data.slice(patternIndex);\n }\n }\n if (data.length > 0) {\n yield data;\n }\n}\nclass SSEDecoder {\n constructor() {\n this.event = null;\n this.data = [];\n this.chunks = [];\n }\n decode(line) {\n if (line.endsWith('\\r')) {\n line = line.substring(0, line.length - 1);\n }\n if (!line) {\n // empty line and we didn't previously encounter any messages\n if (!this.event && !this.data.length)\n return null;\n const sse = {\n event: this.event,\n data: this.data.join('\\n'),\n raw: this.chunks,\n };\n this.event = null;\n this.data = [];\n this.chunks = [];\n return sse;\n }\n this.chunks.push(line);\n if (line.startsWith(':')) {\n return null;\n }\n let [fieldname, _, value] = partition(line, ':');\n if (value.startsWith(' ')) {\n value = value.substring(1);\n }\n if (fieldname === 'event') {\n this.event = value;\n }\n else if (fieldname === 'data') {\n this.data.push(value);\n }\n return null;\n }\n}\nfunction partition(str, delimiter) {\n const index = str.indexOf(delimiter);\n if (index !== -1) {\n return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n }\n return [str, '', ''];\n}\n//# sourceMappingURL=streaming.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { Stream } from \"../core/streaming.mjs\";\nimport { formatRequestDetails, loggerFor } from \"./utils/log.mjs\";\nexport async function defaultParseResponse(client, props) {\n const { response, requestLogID, retryOfRequestLogID, startTime } = props;\n const body = await (async () => {\n if (props.options.stream) {\n loggerFor(client).debug('response', response.status, response.url, response.headers, response.body);\n // Note: there is an invariant here that isn't represented in the type system\n // that if you set `stream: true` the response type must also be `Stream<T>`\n if (props.options.__streamClass) {\n return props.options.__streamClass.fromSSEResponse(response, props.controller, client, props.options.__synthesizeEventData);\n }\n return Stream.fromSSEResponse(response, props.controller, client, props.options.__synthesizeEventData);\n }\n // fetch refuses to read the body when the status code is 204.\n if (response.status === 204) {\n return null;\n }\n if (props.options.__binaryResponse) {\n return response;\n }\n const contentType = response.headers.get('content-type');\n const mediaType = contentType?.split(';')[0]?.trim();\n const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n if (isJSON) {\n const contentLength = response.headers.get('content-length');\n if (contentLength === '0') {\n // if there is no content we can't do anything\n return undefined;\n }\n const json = await response.json();\n return addRequestID(json, response);\n }\n const text = await response.text();\n return text;\n })();\n loggerFor(client).debug(`[${requestLogID}] response parsed`, formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n body,\n durationMs: Date.now() - startTime,\n }));\n return body;\n}\nexport function addRequestID(value, response) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return value;\n }\n return Object.defineProperty(value, '_request_id', {\n value: response.headers.get('x-request-id'),\n enumerable: false,\n });\n}\n//# sourceMappingURL=parse.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _APIPromise_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { defaultParseResponse, addRequestID, } from \"../internal/parse.mjs\";\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise extends Promise {\n constructor(client, responsePromise, parseResponse = defaultParseResponse) {\n super((resolve) => {\n // this is maybe a bit weird but this has to be a no-op to not implicitly\n // parse the response body; instead .then, .catch, .finally are overridden\n // to parse the response\n resolve(null);\n });\n this.responsePromise = responsePromise;\n this.parseResponse = parseResponse;\n _APIPromise_client.set(this, void 0);\n __classPrivateFieldSet(this, _APIPromise_client, client, \"f\");\n }\n _thenUnwrap(transform) {\n return new APIPromise(__classPrivateFieldGet(this, _APIPromise_client, \"f\"), this.responsePromise, async (client, props) => addRequestID(transform(await this.parseResponse(client, props), props), props.response));\n }\n /**\n * Gets the raw `Response` instance instead of parsing the response\n * data.\n *\n * If you want to parse the response body but still get the `Response`\n * instance, you can use {@link withResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n * to your `tsconfig.json`.\n */\n asResponse() {\n return this.responsePromise.then((p) => p.response);\n }\n /**\n * Gets the parsed response data, the raw `Response` instance and the ID of the request,\n * returned via the X-Request-ID header which is useful for debugging requests and reporting\n * issues to OpenAI.\n *\n * If you just want to get the raw `Response` instance without parsing it,\n * you can use {@link asResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n * to your `tsconfig.json`.\n */\n async withResponse() {\n const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n return { data, response, request_id: response.headers.get('x-request-id') };\n }\n parse() {\n if (!this.parsedPromise) {\n this.parsedPromise = this.responsePromise.then((data) => this.parseResponse(__classPrivateFieldGet(this, _APIPromise_client, \"f\"), data));\n }\n return this.parsedPromise;\n }\n then(onfulfilled, onrejected) {\n return this.parse().then(onfulfilled, onrejected);\n }\n catch(onrejected) {\n return this.parse().catch(onrejected);\n }\n finally(onfinally) {\n return this.parse().finally(onfinally);\n }\n}\n_APIPromise_client = new WeakMap();\n//# sourceMappingURL=api-promise.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _AbstractPage_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { defaultParseResponse } from \"../internal/parse.mjs\";\nimport { APIPromise } from \"./api-promise.mjs\";\nimport { maybeObj } from \"../internal/utils/values.mjs\";\nexport class AbstractPage {\n constructor(client, response, body, options) {\n _AbstractPage_client.set(this, void 0);\n __classPrivateFieldSet(this, _AbstractPage_client, client, \"f\");\n this.options = options;\n this.response = response;\n this.body = body;\n }\n hasNextPage() {\n const items = this.getPaginatedItems();\n if (!items.length)\n return false;\n return this.nextPageRequestOptions() != null;\n }\n async getNextPage() {\n const nextOptions = this.nextPageRequestOptions();\n if (!nextOptions) {\n throw new OpenAIError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.');\n }\n return await __classPrivateFieldGet(this, _AbstractPage_client, \"f\").requestAPIList(this.constructor, nextOptions);\n }\n async *iterPages() {\n let page = this;\n yield page;\n while (page.hasNextPage()) {\n page = await page.getNextPage();\n yield page;\n }\n }\n async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() {\n for await (const page of this.iterPages()) {\n for (const item of page.getPaginatedItems()) {\n yield item;\n }\n }\n }\n}\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\nexport class PagePromise extends APIPromise {\n constructor(client, request, Page) {\n super(client, request, async (client, props) => new Page(client, props.response, await defaultParseResponse(client, props), props.options));\n }\n /**\n * Allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\n async *[Symbol.asyncIterator]() {\n const page = await this;\n for await (const item of page) {\n yield item;\n }\n }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class Page extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.object = body.object;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n nextPageRequestOptions() {\n return null;\n }\n}\nexport class CursorPage extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n hasNextPage() {\n if (this.has_more === false) {\n return false;\n }\n return super.hasNextPage();\n }\n nextPageRequestOptions() {\n const data = this.getPaginatedItems();\n const id = data[data.length - 1]?.id;\n if (!id) {\n return null;\n }\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n after: id,\n },\n };\n }\n}\nexport class ConversationCursorPage extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n this.last_id = body.last_id || '';\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n hasNextPage() {\n if (this.has_more === false) {\n return false;\n }\n return super.hasNextPage();\n }\n nextPageRequestOptions() {\n const cursor = this.last_id;\n if (!cursor) {\n return null;\n }\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n after: cursor,\n },\n };\n }\n}\nexport class NextCursorPage extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n this.next = body.next || null;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n hasNextPage() {\n if (this.has_more === false) {\n return false;\n }\n return super.hasNextPage();\n }\n nextPageRequestOptions() {\n const cursor = this.next;\n if (!cursor) {\n return null;\n }\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n after: cursor,\n },\n };\n }\n}\n//# sourceMappingURL=pagination.mjs.map","import * as Shims from \"../internal/shims.mjs\";\nimport { APIError, OAuthError } from \"../core/error.mjs\";\nconst SUBJECT_TOKEN_TYPES = {\n jwt: 'urn:ietf:params:oauth:token-type:jwt',\n id: 'urn:ietf:params:oauth:token-type:id_token',\n};\nconst TOKEN_EXCHANGE_GRANT_TYPE = 'urn:ietf:params:oauth:grant-type:token-exchange';\nexport class WorkloadIdentityAuth {\n constructor(config, fetch) {\n this.cachedToken = null;\n this.refreshPromise = null;\n this.tokenExchangeUrl = 'https://auth.openai.com/oauth/token';\n this.config = config;\n this.fetch = fetch ?? Shims.getDefaultFetch();\n }\n async getToken() {\n if (!this.cachedToken || this.isTokenExpired(this.cachedToken)) {\n if (this.refreshPromise) {\n return await this.refreshPromise;\n }\n this.refreshPromise = this.refreshToken();\n try {\n const token = await this.refreshPromise;\n return token;\n }\n finally {\n this.refreshPromise = null;\n }\n }\n if (this.needsRefresh(this.cachedToken) && !this.refreshPromise) {\n this.refreshPromise = this.refreshToken().finally(() => {\n this.refreshPromise = null;\n });\n }\n return this.cachedToken.token;\n }\n async refreshToken() {\n const subjectToken = await this.config.provider.getToken();\n const body = {\n grant_type: TOKEN_EXCHANGE_GRANT_TYPE,\n subject_token: subjectToken,\n subject_token_type: SUBJECT_TOKEN_TYPES[this.config.provider.tokenType],\n identity_provider_id: this.config.identityProviderId,\n service_account_id: this.config.serviceAccountId,\n };\n if (this.config.clientId) {\n body['client_id'] = this.config.clientId;\n }\n const response = await this.fetch(this.tokenExchangeUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n });\n if (!response.ok) {\n const errorText = await response.text();\n let body = undefined;\n try {\n body = JSON.parse(errorText);\n }\n catch { }\n if (response.status === 400 || response.status === 401 || response.status === 403) {\n throw new OAuthError(response.status, body, response.headers);\n }\n throw APIError.generate(response.status, body, `Token exchange failed with status ${response.status}`, response.headers);\n }\n const tokenResponse = (await response.json());\n const expiresIn = tokenResponse.expires_in || 3600;\n const expiresAt = Date.now() + expiresIn * 1000;\n this.cachedToken = {\n token: tokenResponse.access_token,\n expiresAt,\n };\n return tokenResponse.access_token;\n }\n isTokenExpired(cachedToken) {\n return Date.now() >= cachedToken.expiresAt;\n }\n needsRefresh(cachedToken) {\n const bufferSeconds = this.config.refreshBufferSeconds ?? 1200;\n const bufferMs = bufferSeconds * 1000;\n return Date.now() >= cachedToken.expiresAt - bufferMs;\n }\n invalidateToken() {\n this.cachedToken = null;\n this.refreshPromise = null;\n }\n}\n//# sourceMappingURL=workload-identity-auth.mjs.map","import { ReadableStreamFrom } from \"./shims.mjs\";\nexport const checkFileSupport = () => {\n if (typeof File === 'undefined') {\n const { process } = globalThis;\n const isOldNode = typeof process?.versions?.node === 'string' && parseInt(process.versions.node.split('.')) < 20;\n throw new Error('`File` is not defined as a global, which is required for file uploads.' +\n (isOldNode ?\n \" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.\"\n : ''));\n }\n};\n/**\n * Construct a `File` instance. This is used to ensure a helpful error is thrown\n * for environments that don't define a global `File` yet.\n */\nexport function makeFile(fileBits, fileName, options) {\n checkFileSupport();\n return new File(fileBits, fileName ?? 'unknown_file', options);\n}\nexport function getName(value) {\n return (((typeof value === 'object' &&\n value !== null &&\n (('name' in value && value.name && String(value.name)) ||\n ('url' in value && value.url && String(value.url)) ||\n ('filename' in value && value.filename && String(value.filename)) ||\n ('path' in value && value.path && String(value.path)))) ||\n '')\n .split(/[\\\\/]/)\n .pop() || undefined);\n}\nexport const isAsyncIterable = (value) => value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (opts, fetch) => {\n if (!hasUploadableValue(opts.body))\n return opts;\n return { ...opts, body: await createForm(opts.body, fetch) };\n};\nexport const multipartFormRequestOptions = async (opts, fetch) => {\n return { ...opts, body: await createForm(opts.body, fetch) };\n};\nconst supportsFormDataMap = /* @__PURE__ */ new WeakMap();\n/**\n * node-fetch doesn't support the global FormData object in recent node versions. Instead of sending\n * properly-encoded form data, it just stringifies the object, resulting in a request body of \"[object FormData]\".\n * This function detects if the fetch function provided supports the global FormData object to avoid\n * confusing error messages later on.\n */\nfunction supportsFormData(fetchObject) {\n const fetch = typeof fetchObject === 'function' ? fetchObject : fetchObject.fetch;\n const cached = supportsFormDataMap.get(fetch);\n if (cached)\n return cached;\n const promise = (async () => {\n try {\n const FetchResponse = ('Response' in fetch ?\n fetch.Response\n : (await fetch('data:,')).constructor);\n const data = new FormData();\n if (data.toString() === (await new FetchResponse(data).text())) {\n return false;\n }\n return true;\n }\n catch {\n // avoid false negatives\n return true;\n }\n })();\n supportsFormDataMap.set(fetch, promise);\n return promise;\n}\nexport const createForm = async (body, fetch) => {\n if (!(await supportsFormData(fetch))) {\n throw new TypeError('The provided fetch function does not support file uploads with the current global FormData class.');\n }\n const form = new FormData();\n await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n return form;\n};\n// We check for Blob not File because Bun.File doesn't inherit from File,\n// but they both inherit from Blob and have a `name` property at runtime.\nconst isNamedBlob = (value) => value instanceof Blob && 'name' in value;\nconst isUploadable = (value) => typeof value === 'object' &&\n value !== null &&\n (value instanceof Response || isAsyncIterable(value) || isNamedBlob(value));\nconst hasUploadableValue = (value) => {\n if (isUploadable(value))\n return true;\n if (Array.isArray(value))\n return value.some(hasUploadableValue);\n if (value && typeof value === 'object') {\n for (const k in value) {\n if (hasUploadableValue(value[k]))\n return true;\n }\n }\n return false;\n};\nconst addFormValue = async (form, key, value) => {\n if (value === undefined)\n return;\n if (value == null) {\n throw new TypeError(`Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`);\n }\n // TODO: make nested formats configurable\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n form.append(key, String(value));\n }\n else if (value instanceof Response) {\n form.append(key, makeFile([await value.blob()], getName(value)));\n }\n else if (isAsyncIterable(value)) {\n form.append(key, makeFile([await new Response(ReadableStreamFrom(value)).blob()], getName(value)));\n }\n else if (isNamedBlob(value)) {\n form.append(key, value, getName(value));\n }\n else if (Array.isArray(value)) {\n await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n }\n else if (typeof value === 'object') {\n await Promise.all(Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)));\n }\n else {\n throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`);\n }\n};\n//# sourceMappingURL=uploads.mjs.map","import { getName, makeFile, isAsyncIterable } from \"./uploads.mjs\";\nimport { checkFileSupport } from \"./uploads.mjs\";\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isBlobLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.text === 'function' &&\n typeof value.slice === 'function' &&\n typeof value.arrayBuffer === 'function';\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isFileLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.name === 'string' &&\n typeof value.lastModified === 'number' &&\n isBlobLike(value);\nconst isResponseLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.url === 'string' &&\n typeof value.blob === 'function';\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, BlobLikePart, or AsyncIterable of BlobLikeParts\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(value, name, options) {\n checkFileSupport();\n // If it's a promise, resolve it.\n value = await value;\n // If we've been given a `File` we don't need to do anything\n if (isFileLike(value)) {\n if (value instanceof File) {\n return value;\n }\n return makeFile([await value.arrayBuffer()], value.name);\n }\n if (isResponseLike(value)) {\n const blob = await value.blob();\n name || (name = new URL(value.url).pathname.split(/[\\\\/]/).pop());\n return makeFile(await getBytes(blob), name, options);\n }\n const parts = await getBytes(value);\n name || (name = getName(value));\n if (!options?.type) {\n const type = parts.find((part) => typeof part === 'object' && 'type' in part && part.type);\n if (typeof type === 'string') {\n options = { ...options, type };\n }\n }\n return makeFile(parts, name, options);\n}\nasync function getBytes(value) {\n let parts = [];\n if (typeof value === 'string' ||\n ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n value instanceof ArrayBuffer) {\n parts.push(value);\n }\n else if (isBlobLike(value)) {\n parts.push(value instanceof Blob ? value : await value.arrayBuffer());\n }\n else if (isAsyncIterable(value) // includes Readable, ReadableStream, etc.\n ) {\n for await (const chunk of value) {\n parts.push(...(await getBytes(chunk))); // TODO, consider validating?\n }\n }\n else {\n const constructor = value?.constructor?.name;\n throw new Error(`Unexpected data type: ${typeof value}${constructor ? `; constructor: ${constructor}` : ''}${propsForError(value)}`);\n }\n return parts;\n}\nfunction propsForError(value) {\n if (typeof value !== 'object' || value === null)\n return '';\n const props = Object.getOwnPropertyNames(value);\n return `; props: [${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\n//# sourceMappingURL=to-file.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport class APIResource {\n constructor(client) {\n this._client = client;\n }\n}\n//# sourceMappingURL=resource.mjs.map","import { OpenAIError } from \"../../core/error.mjs\";\n/**\n * Percent-encode everything that isn't safe to have in a path without encoding safe chars.\n *\n * Taken from https://datatracker.ietf.org/doc/html/rfc3986#section-3.3:\n * > unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * > sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n * > pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n */\nexport function encodeURIPath(str) {\n return str.replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]+/g, encodeURIComponent);\n}\nconst EMPTY = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.create(null));\nexport const createPathTagFunction = (pathEncoder = encodeURIPath) => function path(statics, ...params) {\n // If there are no params, no processing is needed.\n if (statics.length === 1)\n return statics[0];\n let postPath = false;\n const invalidSegments = [];\n const path = statics.reduce((previousValue, currentValue, index) => {\n if (/[?#]/.test(currentValue)) {\n postPath = true;\n }\n const value = params[index];\n let encoded = (postPath ? encodeURIComponent : pathEncoder)('' + value);\n if (index !== params.length &&\n (value == null ||\n (typeof value === 'object' &&\n // handle values from other realms\n value.toString ===\n Object.getPrototypeOf(Object.getPrototypeOf(value.hasOwnProperty ?? EMPTY) ?? EMPTY)\n ?.toString))) {\n encoded = value + '';\n invalidSegments.push({\n start: previousValue.length + currentValue.length,\n length: encoded.length,\n error: `Value of type ${Object.prototype.toString\n .call(value)\n .slice(8, -1)} is not a valid path parameter`,\n });\n }\n return previousValue + currentValue + (index === params.length ? '' : encoded);\n }, '');\n const pathOnly = path.split(/[?#]/, 1)[0];\n const invalidSegmentPattern = /(?<=^|\\/)(?:\\.|%2e){1,2}(?=\\/|$)/gi;\n let match;\n // Find all invalid segments\n while ((match = invalidSegmentPattern.exec(pathOnly)) !== null) {\n invalidSegments.push({\n start: match.index,\n length: match[0].length,\n error: `Value \"${match[0]}\" can\\'t be safely passed as a path parameter`,\n });\n }\n invalidSegments.sort((a, b) => a.start - b.start);\n if (invalidSegments.length > 0) {\n let lastEnd = 0;\n const underline = invalidSegments.reduce((acc, segment) => {\n const spaces = ' '.repeat(segment.start - lastEnd);\n const arrows = '^'.repeat(segment.length);\n lastEnd = segment.start + segment.length;\n return acc + spaces + arrows;\n }, '');\n throw new OpenAIError(`Path parameters result in path with invalid segments:\\n${invalidSegments\n .map((e) => e.error)\n .join('\\n')}\\n${path}\\n${underline}`);\n }\n return path;\n};\n/**\n * URI-encodes path params and ensures no unsafe /./ or /../ path segments are introduced.\n */\nexport const path = /* @__PURE__ */ createPathTagFunction(encodeURIPath);\n//# sourceMappingURL=path.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Given a list of messages comprising a conversation, the model will return a response.\n */\nexport class Messages extends APIResource {\n /**\n * Get the messages in a stored chat completion. Only Chat Completions that have\n * been created with the `store` parameter set to `true` will be returned.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const chatCompletionStoreMessage of client.chat.completions.messages.list(\n * 'completion_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(completionID, query = {}, options) {\n return this._client.getAPIList(path `/chat/completions/${completionID}/messages`, (CursorPage), { query, ...options, __security: { bearerAuth: true } });\n }\n}\n//# sourceMappingURL=messages.mjs.map","import { ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError } from \"../error.mjs\";\nexport function isChatCompletionFunctionTool(tool) {\n return tool !== undefined && 'function' in tool && tool.function !== undefined;\n}\nexport function makeParseableResponseFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function makeParseableTextFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableResponseFormat(response_format) {\n return response_format?.['$brand'] === 'auto-parseable-response-format';\n}\nexport function makeParseableTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nexport function maybeParseChatCompletion(completion, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...completion,\n choices: completion.choices.map((choice) => {\n assertToolCallsAreChatCompletionFunctionToolCalls(choice.message.tool_calls);\n return {\n ...choice,\n message: {\n ...choice.message,\n parsed: null,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls,\n }\n : undefined),\n },\n };\n }),\n };\n }\n return parseChatCompletion(completion, params);\n}\nexport function parseChatCompletion(completion, params) {\n const choices = completion.choices.map((choice) => {\n if (choice.finish_reason === 'length') {\n throw new LengthFinishReasonError();\n }\n if (choice.finish_reason === 'content_filter') {\n throw new ContentFilterFinishReasonError();\n }\n assertToolCallsAreChatCompletionFunctionToolCalls(choice.message.tool_calls);\n return {\n ...choice,\n message: {\n ...choice.message,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls?.map((toolCall) => parseToolCall(params, toolCall)) ?? undefined,\n }\n : undefined),\n parsed: choice.message.content && !choice.message.refusal ?\n parseResponseFormat(params, choice.message.content)\n : null,\n },\n };\n });\n return { ...completion, choices };\n}\nfunction parseResponseFormat(params, content) {\n if (params.response_format?.type !== 'json_schema') {\n return null;\n }\n if (params.response_format?.type === 'json_schema') {\n if ('$parseRaw' in params.response_format) {\n const response_format = params.response_format;\n return response_format.$parseRaw(content);\n }\n return JSON.parse(content);\n }\n return null;\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = params.tools?.find((inputTool) => isChatCompletionFunctionTool(inputTool) && inputTool.function?.name === toolCall.function.name); // TS doesn't narrow based on isChatCompletionTool\n return {\n ...toolCall,\n function: {\n ...toolCall.function,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCall.function.arguments)\n : null,\n },\n };\n}\nexport function shouldParseToolCall(params, toolCall) {\n if (!params || !('tools' in params) || !params.tools) {\n return false;\n }\n const inputTool = params.tools?.find((inputTool) => isChatCompletionFunctionTool(inputTool) && inputTool.function?.name === toolCall.function.name);\n return (isChatCompletionFunctionTool(inputTool) &&\n (isAutoParsableTool(inputTool) || inputTool?.function.strict || false));\n}\nexport function hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.response_format)) {\n return true;\n }\n return (params.tools?.some((t) => isAutoParsableTool(t) || (t.type === 'function' && t.function.strict === true)) ?? false);\n}\nexport function assertToolCallsAreChatCompletionFunctionToolCalls(toolCalls) {\n for (const toolCall of toolCalls || []) {\n if (toolCall.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool calls are supported; Received \\`${toolCall.type}\\``);\n }\n }\n}\nexport function validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\n//# sourceMappingURL=parser.mjs.map","export const isAssistantMessage = (message) => {\n return message?.role === 'assistant';\n};\nexport const isToolMessage = (message) => {\n return message?.role === 'tool';\n};\nexport function isPresent(obj) {\n return obj != null;\n}\n//# sourceMappingURL=chatCompletionUtils.mjs.map","var _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_handleError;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nexport class EventStream {\n constructor() {\n _EventStream_instances.add(this);\n this.controller = new AbortController();\n _EventStream_connectedPromise.set(this, void 0);\n _EventStream_resolveConnectedPromise.set(this, () => { });\n _EventStream_rejectConnectedPromise.set(this, () => { });\n _EventStream_endPromise.set(this, void 0);\n _EventStream_resolveEndPromise.set(this, () => { });\n _EventStream_rejectEndPromise.set(this, () => { });\n _EventStream_listeners.set(this, {});\n _EventStream_ended.set(this, false);\n _EventStream_errored.set(this, false);\n _EventStream_aborted.set(this, false);\n _EventStream_catchingPromiseCreated.set(this, false);\n __classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveConnectedPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectConnectedPromise, reject, \"f\");\n }), \"f\");\n __classPrivateFieldSet(this, _EventStream_endPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveEndPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectEndPromise, reject, \"f\");\n }), \"f\");\n // Don't let these promises cause unhandled rejection errors.\n // we will manually cause an unhandled rejection error later\n // if the user hasn't registered any error listener or called\n // any promise-returning method.\n __classPrivateFieldGet(this, _EventStream_connectedPromise, \"f\").catch(() => { });\n __classPrivateFieldGet(this, _EventStream_endPromise, \"f\").catch(() => { });\n }\n _run(executor) {\n // Unfortunately if we call `executor()` immediately we get runtime errors about\n // references to `this` before the `super()` constructor call returns.\n setTimeout(() => {\n executor().then(() => {\n this._emitFinal();\n this._emit('end');\n }, __classPrivateFieldGet(this, _EventStream_instances, \"m\", _EventStream_handleError).bind(this));\n }, 0);\n }\n _connected() {\n if (this.ended)\n return;\n __classPrivateFieldGet(this, _EventStream_resolveConnectedPromise, \"f\").call(this);\n this._emit('connect');\n }\n get ended() {\n return __classPrivateFieldGet(this, _EventStream_ended, \"f\");\n }\n get errored() {\n return __classPrivateFieldGet(this, _EventStream_errored, \"f\");\n }\n get aborted() {\n return __classPrivateFieldGet(this, _EventStream_aborted, \"f\");\n }\n abort() {\n this.controller.abort();\n }\n /**\n * Adds the listener function to the end of the listeners array for the event.\n * No checks are made to see if the listener has already been added. Multiple calls passing\n * the same combination of event and listener will result in the listener being added, and\n * called, multiple times.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n on(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener });\n return this;\n }\n /**\n * Removes the specified listener from the listener array for the event.\n * off() will remove, at most, one instance of a listener from the listener array. If any single\n * listener has been added multiple times to the listener array for the specified event, then\n * off() must be called multiple times to remove each instance.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n off(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (!listeners)\n return this;\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0)\n listeners.splice(index, 1);\n return this;\n }\n /**\n * Adds a one-time listener function for the event. The next time the event is triggered,\n * this listener is removed and then invoked.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n once(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n /**\n * This is similar to `.once()`, but returns a Promise that resolves the next time\n * the event is triggered, instead of calling a listener callback.\n * @returns a Promise that resolves the next time given event is triggered,\n * or rejects if an error is emitted. (If you request the 'error' event,\n * returns a promise that resolves with the error).\n *\n * Example:\n *\n * const message = await stream.emitted('message') // rejects if the stream errors\n */\n emitted(event) {\n return new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n if (event !== 'error')\n this.once('error', reject);\n this.once(event, resolve);\n });\n }\n async done() {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n await __classPrivateFieldGet(this, _EventStream_endPromise, \"f\");\n }\n _emit(event, ...args) {\n // make sure we don't emit any events after end\n if (__classPrivateFieldGet(this, _EventStream_ended, \"f\")) {\n return;\n }\n if (event === 'end') {\n __classPrivateFieldSet(this, _EventStream_ended, true, \"f\");\n __classPrivateFieldGet(this, _EventStream_resolveEndPromise, \"f\").call(this);\n }\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (listeners) {\n __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = listeners.filter((l) => !l.once);\n listeners.forEach(({ listener }) => listener(...args));\n }\n if (event === 'abort') {\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n return;\n }\n if (event === 'error') {\n // NOTE: _emit('error', error) should only be called from #handleError().\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n // If you are seeing stack traces here, make sure to handle errors via either:\n // - runner.on('error', () => ...)\n // - await runner.done()\n // - await runner.finalChatCompletion()\n // - etc.\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n }\n }\n _emitFinal() { }\n}\n_EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_handleError = function _EventStream_handleError(error) {\n __classPrivateFieldSet(this, _EventStream_errored, true, \"f\");\n if (error instanceof Error && error.name === 'AbortError') {\n error = new APIUserAbortError();\n }\n if (error instanceof APIUserAbortError) {\n __classPrivateFieldSet(this, _EventStream_aborted, true, \"f\");\n return this._emit('abort', error);\n }\n if (error instanceof OpenAIError) {\n return this._emit('error', error);\n }\n if (error instanceof Error) {\n const openAIError = new OpenAIError(error.message);\n // @ts-ignore\n openAIError.cause = error;\n return this._emit('error', openAIError);\n }\n return this._emit('error', new OpenAIError(String(error)));\n};\n//# sourceMappingURL=EventStream.mjs.map","export function isRunnableFunctionWithParse(fn) {\n return typeof fn.parse === 'function';\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n */\nexport class ParsingToolFunction {\n constructor(input) {\n this.type = 'function';\n this.function = input;\n }\n}\n//# sourceMappingURL=RunnableFunction.mjs.map","var _AbstractChatCompletionRunner_instances, _AbstractChatCompletionRunner_getFinalContent, _AbstractChatCompletionRunner_getFinalMessage, _AbstractChatCompletionRunner_getFinalFunctionToolCall, _AbstractChatCompletionRunner_getFinalFunctionToolCallResult, _AbstractChatCompletionRunner_calculateTotalUsage, _AbstractChatCompletionRunner_validateParams, _AbstractChatCompletionRunner_stringifyFunctionCallResult;\nimport { __classPrivateFieldGet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"../error.mjs\";\nimport { isAutoParsableTool, parseChatCompletion } from \"../lib/parser.mjs\";\nimport { isAssistantMessage, isToolMessage } from \"./chatCompletionUtils.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nimport { isRunnableFunctionWithParse, } from \"./RunnableFunction.mjs\";\nconst DEFAULT_MAX_CHAT_COMPLETIONS = 10;\nexport class AbstractChatCompletionRunner extends EventStream {\n constructor() {\n super(...arguments);\n _AbstractChatCompletionRunner_instances.add(this);\n this._chatCompletions = [];\n this.messages = [];\n }\n _addChatCompletion(chatCompletion) {\n this._chatCompletions.push(chatCompletion);\n this._emit('chatCompletion', chatCompletion);\n const message = chatCompletion.choices[0]?.message;\n if (message)\n this._addMessage(message);\n return chatCompletion;\n }\n _addMessage(message, emit = true) {\n if (!('content' in message))\n message.content = null;\n this.messages.push(message);\n if (emit) {\n this._emit('message', message);\n if (isToolMessage(message) && message.content) {\n // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.\n this._emit('functionToolCallResult', message.content);\n }\n else if (isAssistantMessage(message) && message.tool_calls) {\n for (const tool_call of message.tool_calls) {\n if (tool_call.type === 'function') {\n this._emit('functionToolCall', tool_call.function);\n }\n }\n }\n }\n }\n /**\n * @returns a promise that resolves with the final ChatCompletion, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletion.\n */\n async finalChatCompletion() {\n await this.done();\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (!completion)\n throw new OpenAIError('stream ended without producing a ChatCompletion');\n return completion;\n }\n /**\n * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalContent() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n }\n /**\n * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,\n * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalMessage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n }\n /**\n * @returns a promise that resolves with the content of the final FunctionCall, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalFunctionToolCall() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCall).call(this);\n }\n async finalFunctionToolCallResult() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCallResult).call(this);\n }\n async totalUsage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this);\n }\n allChatCompletions() {\n return [...this._chatCompletions];\n }\n _emitFinal() {\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (completion)\n this._emit('finalChatCompletion', completion);\n const finalMessage = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n if (finalMessage)\n this._emit('finalMessage', finalMessage);\n const finalContent = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n if (finalContent)\n this._emit('finalContent', finalContent);\n const finalFunctionCall = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCall).call(this);\n if (finalFunctionCall)\n this._emit('finalFunctionToolCall', finalFunctionCall);\n const finalFunctionCallResult = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCallResult).call(this);\n if (finalFunctionCallResult != null)\n this._emit('finalFunctionToolCallResult', finalFunctionCallResult);\n if (this._chatCompletions.some((c) => c.usage)) {\n this._emit('totalUsage', __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this));\n }\n }\n async _createChatCompletion(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_validateParams).call(this, params);\n const chatCompletion = await client.chat.completions.create({ ...params, stream: false }, { ...options, signal: this.controller.signal });\n this._connected();\n return this._addChatCompletion(parseChatCompletion(chatCompletion, params));\n }\n async _runChatCompletion(client, params, options) {\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n return await this._createChatCompletion(client, params, options);\n }\n async _runTools(client, params, options) {\n const role = 'tool';\n const { tool_choice = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice.type === 'function' && tool_choice?.function?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n // TODO(someday): clean this logic up\n const inputTools = params.tools.map((tool) => {\n if (isAutoParsableTool(tool)) {\n if (!tool.$callback) {\n throw new OpenAIError('Tool given to `.runTools()` that does not have an associated function');\n }\n return {\n type: 'function',\n function: {\n function: tool.$callback,\n name: tool.function.name,\n description: tool.function.description || '',\n parameters: tool.function.parameters,\n parse: tool.$parseRaw,\n strict: true,\n },\n };\n }\n return tool;\n });\n const functionsByName = {};\n for (const f of inputTools) {\n if (f.type === 'function') {\n functionsByName[f.function.name || f.function.function.name] = f.function;\n }\n }\n const tools = 'tools' in params ?\n inputTools.map((t) => t.type === 'function' ?\n {\n type: 'function',\n function: {\n name: t.function.name || t.function.function.name,\n parameters: t.function.parameters,\n description: t.function.description,\n strict: t.function.strict,\n },\n }\n : t)\n : undefined;\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion = await this._createChatCompletion(client, {\n ...restParams,\n tool_choice,\n tools,\n messages: [...this.messages],\n }, options);\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.tool_calls?.length) {\n return;\n }\n for (const tool_call of message.tool_calls) {\n if (tool_call.type !== 'function')\n continue;\n const tool_call_id = tool_call.id;\n const { name, arguments: args } = tool_call.function;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(functionsByName)\n .map((name) => JSON.stringify(name))\n .join(', ')}. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n let parsed;\n try {\n parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n }\n catch (error) {\n const content = error instanceof Error ? error.message : String(error);\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n this._addMessage({ role, tool_call_id, content });\n if (singleFunctionToCall) {\n return;\n }\n }\n }\n return;\n }\n}\n_AbstractChatCompletionRunner_instances = new WeakSet(), _AbstractChatCompletionRunner_getFinalContent = function _AbstractChatCompletionRunner_getFinalContent() {\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this).content ?? null;\n}, _AbstractChatCompletionRunner_getFinalMessage = function _AbstractChatCompletionRunner_getFinalMessage() {\n let i = this.messages.length;\n while (i-- > 0) {\n const message = this.messages[i];\n if (isAssistantMessage(message)) {\n // TODO: support audio here\n const ret = {\n ...message,\n content: message.content ?? null,\n refusal: message.refusal ?? null,\n };\n return ret;\n }\n }\n throw new OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');\n}, _AbstractChatCompletionRunner_getFinalFunctionToolCall = function _AbstractChatCompletionRunner_getFinalFunctionToolCall() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isAssistantMessage(message) && message?.tool_calls?.length) {\n for (let j = message.tool_calls.length - 1; j >= 0; j--) {\n const toolCall = message.tool_calls[j];\n if (toolCall?.type === 'function') {\n return toolCall.function;\n }\n }\n }\n }\n return;\n}, _AbstractChatCompletionRunner_getFinalFunctionToolCallResult = function _AbstractChatCompletionRunner_getFinalFunctionToolCallResult() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isToolMessage(message) &&\n message.content != null &&\n typeof message.content === 'string' &&\n this.messages.some((x) => x.role === 'assistant' &&\n x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id))) {\n return message.content;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_calculateTotalUsage = function _AbstractChatCompletionRunner_calculateTotalUsage() {\n const total = {\n completion_tokens: 0,\n prompt_tokens: 0,\n total_tokens: 0,\n };\n for (const { usage } of this._chatCompletions) {\n if (usage) {\n total.completion_tokens += usage.completion_tokens;\n total.prompt_tokens += usage.prompt_tokens;\n total.total_tokens += usage.total_tokens;\n }\n }\n return total;\n}, _AbstractChatCompletionRunner_validateParams = function _AbstractChatCompletionRunner_validateParams(params) {\n if (params.n != null && params.n > 1) {\n throw new OpenAIError('ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.');\n }\n}, _AbstractChatCompletionRunner_stringifyFunctionCallResult = function _AbstractChatCompletionRunner_stringifyFunctionCallResult(rawContent) {\n return (typeof rawContent === 'string' ? rawContent\n : rawContent === undefined ? 'undefined'\n : JSON.stringify(rawContent));\n};\n//# sourceMappingURL=AbstractChatCompletionRunner.mjs.map","import { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { isAssistantMessage } from \"./chatCompletionUtils.mjs\";\nexport class ChatCompletionRunner extends AbstractChatCompletionRunner {\n static runTools(client, params, options) {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n _addMessage(message, emit = true) {\n super._addMessage(message, emit);\n if (isAssistantMessage(message) && message.content) {\n this._emit('content', message.content);\n }\n }\n}\n//# sourceMappingURL=ChatCompletionRunner.mjs.map","const STR = 0b000000001;\nconst NUM = 0b000000010;\nconst ARR = 0b000000100;\nconst OBJ = 0b000001000;\nconst NULL = 0b000010000;\nconst BOOL = 0b000100000;\nconst NAN = 0b001000000;\nconst INFINITY = 0b010000000;\nconst MINUS_INFINITY = 0b100000000;\nconst INF = INFINITY | MINUS_INFINITY;\nconst SPECIAL = NULL | BOOL | INF | NAN;\nconst ATOM = STR | NUM | SPECIAL;\nconst COLLECTION = ARR | OBJ;\nconst ALL = ATOM | COLLECTION;\nconst Allow = {\n STR,\n NUM,\n ARR,\n OBJ,\n NULL,\n BOOL,\n NAN,\n INFINITY,\n MINUS_INFINITY,\n INF,\n SPECIAL,\n ATOM,\n COLLECTION,\n ALL,\n};\n// The JSON string segment was unable to be parsed completely\nclass PartialJSON extends Error {\n}\nclass MalformedJSON extends Error {\n}\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = Allow.ALL) {\n if (typeof jsonString !== 'string') {\n throw new TypeError(`expecting str, got ${typeof jsonString}`);\n }\n if (!jsonString.trim()) {\n throw new Error(`${jsonString} is empty`);\n }\n return _parseJSON(jsonString.trim(), allowPartial);\n}\nconst _parseJSON = (jsonString, allow) => {\n const length = jsonString.length;\n let index = 0;\n const markPartialJSON = (msg) => {\n throw new PartialJSON(`${msg} at position ${index}`);\n };\n const throwMalformedError = (msg) => {\n throw new MalformedJSON(`${msg} at position ${index}`);\n };\n const parseAny = () => {\n skipBlank();\n if (index >= length)\n markPartialJSON('Unexpected end of input');\n if (jsonString[index] === '\"')\n return parseStr();\n if (jsonString[index] === '{')\n return parseObj();\n if (jsonString[index] === '[')\n return parseArr();\n if (jsonString.substring(index, index + 4) === 'null' ||\n (Allow.NULL & allow && length - index < 4 && 'null'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return null;\n }\n if (jsonString.substring(index, index + 4) === 'true' ||\n (Allow.BOOL & allow && length - index < 4 && 'true'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return true;\n }\n if (jsonString.substring(index, index + 5) === 'false' ||\n (Allow.BOOL & allow && length - index < 5 && 'false'.startsWith(jsonString.substring(index)))) {\n index += 5;\n return false;\n }\n if (jsonString.substring(index, index + 8) === 'Infinity' ||\n (Allow.INFINITY & allow && length - index < 8 && 'Infinity'.startsWith(jsonString.substring(index)))) {\n index += 8;\n return Infinity;\n }\n if (jsonString.substring(index, index + 9) === '-Infinity' ||\n (Allow.MINUS_INFINITY & allow &&\n 1 < length - index &&\n length - index < 9 &&\n '-Infinity'.startsWith(jsonString.substring(index)))) {\n index += 9;\n return -Infinity;\n }\n if (jsonString.substring(index, index + 3) === 'NaN' ||\n (Allow.NAN & allow && length - index < 3 && 'NaN'.startsWith(jsonString.substring(index)))) {\n index += 3;\n return NaN;\n }\n return parseNum();\n };\n const parseStr = () => {\n const start = index;\n let escape = false;\n index++; // skip initial quote\n while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === '\\\\'))) {\n escape = jsonString[index] === '\\\\' ? !escape : false;\n index++;\n }\n if (jsonString.charAt(index) == '\"') {\n try {\n return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n else if (Allow.STR & allow) {\n try {\n return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n }\n catch (e) {\n // SyntaxError: Invalid escape sequence\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('\\\\')) + '\"');\n }\n }\n markPartialJSON('Unterminated string literal');\n };\n const parseObj = () => {\n index++; // skip initial brace\n skipBlank();\n const obj = {};\n try {\n while (jsonString[index] !== '}') {\n skipBlank();\n if (index >= length && Allow.OBJ & allow)\n return obj;\n const key = parseStr();\n skipBlank();\n index++; // skip colon\n try {\n const value = parseAny();\n Object.defineProperty(obj, key, { value, writable: true, enumerable: true, configurable: true });\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n throw e;\n }\n skipBlank();\n if (jsonString[index] === ',')\n index++; // skip comma\n }\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n markPartialJSON(\"Expected '}' at end of object\");\n }\n index++; // skip final brace\n return obj;\n };\n const parseArr = () => {\n index++; // skip initial bracket\n const arr = [];\n try {\n while (jsonString[index] !== ']') {\n arr.push(parseAny());\n skipBlank();\n if (jsonString[index] === ',') {\n index++; // skip comma\n }\n }\n }\n catch (e) {\n if (Allow.ARR & allow) {\n return arr;\n }\n markPartialJSON(\"Expected ']' at end of array\");\n }\n index++; // skip final bracket\n return arr;\n };\n const parseNum = () => {\n if (index === 0) {\n if (jsonString === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n if (Allow.NUM & allow) {\n try {\n if ('.' === jsonString[jsonString.length - 1])\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('.')));\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('e')));\n }\n catch (e) { }\n }\n throwMalformedError(String(e));\n }\n }\n const start = index;\n if (jsonString[index] === '-')\n index++;\n while (jsonString[index] && !',]}'.includes(jsonString[index]))\n index++;\n if (index == length && !(Allow.NUM & allow))\n markPartialJSON('Unterminated number literal');\n try {\n return JSON.parse(jsonString.substring(start, index));\n }\n catch (e) {\n if (jsonString.substring(start, index) === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('e')));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n };\n const skipBlank = () => {\n while (index < length && ' \\n\\r\\t'.includes(jsonString[index])) {\n index++;\n }\n };\n return parseAny();\n};\n// using this function with malformed JSON is undefined behavior\nconst partialParse = (input) => parseJSON(input, Allow.ALL ^ Allow.NUM);\nexport { partialParse, PartialJSON, MalformedJSON };\n//# sourceMappingURL=parser.mjs.map","var _ChatCompletionStream_instances, _ChatCompletionStream_params, _ChatCompletionStream_choiceEventStates, _ChatCompletionStream_currentChatCompletionSnapshot, _ChatCompletionStream_beginRequest, _ChatCompletionStream_getChoiceEventState, _ChatCompletionStream_addChunk, _ChatCompletionStream_emitToolCallDoneEvent, _ChatCompletionStream_emitContentDoneEvents, _ChatCompletionStream_endRequest, _ChatCompletionStream_getAutoParseableResponseFormat, _ChatCompletionStream_accumulateChatCompletion;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { partialParse } from \"../_vendor/partial-json-parser/parser.mjs\";\nimport { APIUserAbortError, ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError, } from \"../error.mjs\";\nimport { hasAutoParseableInput, isAutoParsableResponseFormat, isAutoParsableTool, isChatCompletionFunctionTool, maybeParseChatCompletion, shouldParseToolCall, } from \"../lib/parser.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nexport class ChatCompletionStream extends AbstractChatCompletionRunner {\n constructor(params) {\n super();\n _ChatCompletionStream_instances.add(this);\n _ChatCompletionStream_params.set(this, void 0);\n _ChatCompletionStream_choiceEventStates.set(this, void 0);\n _ChatCompletionStream_currentChatCompletionSnapshot.set(this, void 0);\n __classPrivateFieldSet(this, _ChatCompletionStream_params, params, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n }\n get currentChatCompletionSnapshot() {\n return __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n }\n /**\n * Intended for use on the frontend, consuming a stream produced with\n * `.toReadableStream()` on the backend.\n *\n * Note that messages sent to the model do not appear in `.on('message')`\n * in this context.\n */\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStream(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n static createChatCompletion(client, params, options) {\n const runner = new ChatCompletionStream(params);\n runner._run(() => runner._runChatCompletion(client, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n return runner;\n }\n async _createChatCompletion(client, params, options) {\n super._createChatCompletion;\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n const stream = await client.chat.completions.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const chunk of stream) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n this._connected();\n const stream = Stream.fromReadableStream(readableStream, this.controller);\n let chatId;\n for await (const chunk of stream) {\n if (chatId && chatId !== chunk.id) {\n // A new request has been made.\n this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n chatId = chunk.id;\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n [(_ChatCompletionStream_params = new WeakMap(), _ChatCompletionStream_choiceEventStates = new WeakMap(), _ChatCompletionStream_currentChatCompletionSnapshot = new WeakMap(), _ChatCompletionStream_instances = new WeakSet(), _ChatCompletionStream_beginRequest = function _ChatCompletionStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n }, _ChatCompletionStream_getChoiceEventState = function _ChatCompletionStream_getChoiceEventState(choice) {\n let state = __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index];\n if (state) {\n return state;\n }\n state = {\n content_done: false,\n refusal_done: false,\n logprobs_content_done: false,\n logprobs_refusal_done: false,\n done_tool_calls: new Set(),\n current_tool_call_index: null,\n };\n __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index] = state;\n return state;\n }, _ChatCompletionStream_addChunk = function _ChatCompletionStream_addChunk(chunk) {\n if (this.ended)\n return;\n const completion = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_accumulateChatCompletion).call(this, chunk);\n this._emit('chunk', chunk, completion);\n for (const choice of chunk.choices) {\n const choiceSnapshot = completion.choices[choice.index];\n if (choice.delta.content != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.content) {\n this._emit('content', choice.delta.content, choiceSnapshot.message.content);\n this._emit('content.delta', {\n delta: choice.delta.content,\n snapshot: choiceSnapshot.message.content,\n parsed: choiceSnapshot.message.parsed,\n });\n }\n if (choice.delta.refusal != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.refusal) {\n this._emit('refusal.delta', {\n delta: choice.delta.refusal,\n snapshot: choiceSnapshot.message.refusal,\n });\n }\n if (choice.logprobs?.content != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.content.delta', {\n content: choice.logprobs?.content,\n snapshot: choiceSnapshot.logprobs?.content ?? [],\n });\n }\n if (choice.logprobs?.refusal != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.refusal.delta', {\n refusal: choice.logprobs?.refusal,\n snapshot: choiceSnapshot.logprobs?.refusal ?? [],\n });\n }\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.finish_reason) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n for (const toolCall of choice.delta.tool_calls ?? []) {\n if (state.current_tool_call_index !== toolCall.index) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n // new tool call started, the previous one is done\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n state.current_tool_call_index = toolCall.index;\n }\n for (const toolCallDelta of choice.delta.tool_calls ?? []) {\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallDelta.index];\n if (!toolCallSnapshot?.type) {\n continue;\n }\n if (toolCallSnapshot?.type === 'function') {\n this._emit('tool_calls.function.arguments.delta', {\n name: toolCallSnapshot.function?.name,\n index: toolCallDelta.index,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: toolCallSnapshot.function.parsed_arguments,\n arguments_delta: toolCallDelta.function?.arguments ?? '',\n });\n }\n else {\n assertNever(toolCallSnapshot?.type);\n }\n }\n }\n }, _ChatCompletionStream_emitToolCallDoneEvent = function _ChatCompletionStream_emitToolCallDoneEvent(choiceSnapshot, toolCallIndex) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (state.done_tool_calls.has(toolCallIndex)) {\n // we've already fired the done event\n return;\n }\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallIndex];\n if (!toolCallSnapshot) {\n throw new Error('no tool call snapshot');\n }\n if (!toolCallSnapshot.type) {\n throw new Error('tool call snapshot missing `type`');\n }\n if (toolCallSnapshot.type === 'function') {\n const inputTool = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.tools?.find((tool) => isChatCompletionFunctionTool(tool) && tool.function.name === toolCallSnapshot.function.name); // TS doesn't narrow based on isChatCompletionTool\n this._emit('tool_calls.function.arguments.done', {\n name: toolCallSnapshot.function.name,\n index: toolCallIndex,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCallSnapshot.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCallSnapshot.function.arguments)\n : null,\n });\n }\n else {\n assertNever(toolCallSnapshot.type);\n }\n }, _ChatCompletionStream_emitContentDoneEvents = function _ChatCompletionStream_emitContentDoneEvents(choiceSnapshot) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.message.content && !state.content_done) {\n state.content_done = true;\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this);\n this._emit('content.done', {\n content: choiceSnapshot.message.content,\n parsed: responseFormat ? responseFormat.$parseRaw(choiceSnapshot.message.content) : null,\n });\n }\n if (choiceSnapshot.message.refusal && !state.refusal_done) {\n state.refusal_done = true;\n this._emit('refusal.done', { refusal: choiceSnapshot.message.refusal });\n }\n if (choiceSnapshot.logprobs?.content && !state.logprobs_content_done) {\n state.logprobs_content_done = true;\n this._emit('logprobs.content.done', { content: choiceSnapshot.logprobs.content });\n }\n if (choiceSnapshot.logprobs?.refusal && !state.logprobs_refusal_done) {\n state.logprobs_refusal_done = true;\n this._emit('logprobs.refusal.done', { refusal: choiceSnapshot.logprobs.refusal });\n }\n }, _ChatCompletionStream_endRequest = function _ChatCompletionStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any chunks`);\n }\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n return finalizeChatCompletion(snapshot, __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"));\n }, _ChatCompletionStream_getAutoParseableResponseFormat = function _ChatCompletionStream_getAutoParseableResponseFormat() {\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.response_format;\n if (isAutoParsableResponseFormat(responseFormat)) {\n return responseFormat;\n }\n return null;\n }, _ChatCompletionStream_accumulateChatCompletion = function _ChatCompletionStream_accumulateChatCompletion(chunk) {\n var _a, _b, _c, _d;\n let snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n const { choices, ...rest } = chunk;\n if (!snapshot) {\n snapshot = __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, {\n ...rest,\n choices: [],\n }, \"f\");\n }\n else {\n Object.assign(snapshot, rest);\n }\n for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {\n let choice = snapshot.choices[index];\n if (!choice) {\n choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };\n }\n if (logprobs) {\n if (!choice.logprobs) {\n choice.logprobs = Object.assign({}, logprobs);\n }\n else {\n const { content, refusal, ...rest } = logprobs;\n assertIsEmpty(rest);\n Object.assign(choice.logprobs, rest);\n if (content) {\n (_a = choice.logprobs).content ?? (_a.content = []);\n choice.logprobs.content.push(...content);\n }\n if (refusal) {\n (_b = choice.logprobs).refusal ?? (_b.refusal = []);\n choice.logprobs.refusal.push(...refusal);\n }\n }\n }\n if (finish_reason) {\n choice.finish_reason = finish_reason;\n if (__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\") && hasAutoParseableInput(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"))) {\n if (finish_reason === 'length') {\n throw new LengthFinishReasonError();\n }\n if (finish_reason === 'content_filter') {\n throw new ContentFilterFinishReasonError();\n }\n }\n }\n Object.assign(choice, other);\n if (!delta)\n continue; // Shouldn't happen; just in case.\n const { content, refusal, function_call, role, tool_calls, ...rest } = delta;\n assertIsEmpty(rest);\n Object.assign(choice.message, rest);\n if (refusal) {\n choice.message.refusal = (choice.message.refusal || '') + refusal;\n }\n if (role)\n choice.message.role = role;\n if (function_call) {\n if (!choice.message.function_call) {\n choice.message.function_call = function_call;\n }\n else {\n if (function_call.name)\n choice.message.function_call.name = function_call.name;\n if (function_call.arguments) {\n (_c = choice.message.function_call).arguments ?? (_c.arguments = '');\n choice.message.function_call.arguments += function_call.arguments;\n }\n }\n }\n if (content) {\n choice.message.content = (choice.message.content || '') + content;\n if (!choice.message.refusal && __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this)) {\n choice.message.parsed = partialParse(choice.message.content);\n }\n }\n if (tool_calls) {\n if (!choice.message.tool_calls)\n choice.message.tool_calls = [];\n for (const { index, id, type, function: fn, ...rest } of tool_calls) {\n const tool_call = ((_d = choice.message.tool_calls)[index] ?? (_d[index] = {}));\n Object.assign(tool_call, rest);\n if (id)\n tool_call.id = id;\n if (type)\n tool_call.type = type;\n if (fn)\n tool_call.function ?? (tool_call.function = { name: fn.name ?? '', arguments: '' });\n if (fn?.name)\n tool_call.function.name = fn.name;\n if (fn?.arguments) {\n tool_call.function.arguments += fn.arguments;\n if (shouldParseToolCall(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"), tool_call)) {\n tool_call.function.parsed_arguments = partialParse(tool_call.function.arguments);\n }\n }\n }\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('chunk', (chunk) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(chunk);\n }\n else {\n pushQueue.push(chunk);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n toReadableStream() {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n}\nfunction finalizeChatCompletion(snapshot, params) {\n const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;\n const completion = {\n ...rest,\n id,\n choices: choices.map(({ message, finish_reason, index, logprobs, ...choiceRest }) => {\n if (!finish_reason) {\n throw new OpenAIError(`missing finish_reason for choice ${index}`);\n }\n const { content = null, function_call, tool_calls, ...messageRest } = message;\n const role = message.role; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.\n if (!role) {\n throw new OpenAIError(`missing role for choice ${index}`);\n }\n if (function_call) {\n const { arguments: args, name } = function_call;\n if (args == null) {\n throw new OpenAIError(`missing function_call.arguments for choice ${index}`);\n }\n if (!name) {\n throw new OpenAIError(`missing function_call.name for choice ${index}`);\n }\n return {\n ...choiceRest,\n message: {\n content,\n function_call: { arguments: args, name },\n role,\n refusal: message.refusal ?? null,\n },\n finish_reason,\n index,\n logprobs,\n };\n }\n if (tool_calls) {\n return {\n ...choiceRest,\n index,\n finish_reason,\n logprobs,\n message: {\n ...messageRest,\n role,\n content,\n refusal: message.refusal ?? null,\n tool_calls: tool_calls.map((tool_call, i) => {\n const { function: fn, type, id, ...toolRest } = tool_call;\n const { arguments: args, name, ...fnRest } = fn || {};\n if (id == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].id\\n${str(snapshot)}`);\n }\n if (type == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\\n${str(snapshot)}`);\n }\n if (name == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.name\\n${str(snapshot)}`);\n }\n if (args == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.arguments\\n${str(snapshot)}`);\n }\n return { ...toolRest, id, type, function: { ...fnRest, name, arguments: args } };\n }),\n },\n };\n }\n return {\n ...choiceRest,\n message: { ...messageRest, content, role, refusal: message.refusal ?? null },\n finish_reason,\n index,\n logprobs,\n };\n }),\n created,\n model,\n object: 'chat.completion',\n ...(system_fingerprint ? { system_fingerprint } : {}),\n };\n return maybeParseChatCompletion(completion, params);\n}\nfunction str(x) {\n return JSON.stringify(x);\n}\n/**\n * Ensures the given argument is an empty object, useful for\n * asserting that all known properties on an object have been\n * destructured.\n */\nfunction assertIsEmpty(obj) {\n return;\n}\nfunction assertNever(_x) { }\n//# sourceMappingURL=ChatCompletionStream.mjs.map","import { ChatCompletionStream } from \"./ChatCompletionStream.mjs\";\nexport class ChatCompletionStreamingRunner extends ChatCompletionStream {\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStreamingRunner(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n static runTools(client, params, options) {\n const runner = new ChatCompletionStreamingRunner(\n // @ts-expect-error TODO these types are incompatible\n params);\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n}\n//# sourceMappingURL=ChatCompletionStreamingRunner.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages } from \"./messages.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nimport { ChatCompletionRunner } from \"../../../lib/ChatCompletionRunner.mjs\";\nimport { ChatCompletionStreamingRunner } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nimport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nimport { parseChatCompletion, validateInputTools } from \"../../../lib/parser.mjs\";\n/**\n * Given a list of messages comprising a conversation, the model will return a response.\n */\nexport class Completions extends APIResource {\n constructor() {\n super(...arguments);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n create(body, options) {\n return this._client.post('/chat/completions', {\n body,\n ...options,\n stream: body.stream ?? false,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Get a stored chat completion. Only Chat Completions that have been created with\n * the `store` parameter set to `true` will be returned.\n *\n * @example\n * ```ts\n * const chatCompletion =\n * await client.chat.completions.retrieve('completion_id');\n * ```\n */\n retrieve(completionID, options) {\n return this._client.get(path `/chat/completions/${completionID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Modify a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be modified. Currently, the only\n * supported modification is to update the `metadata` field.\n *\n * @example\n * ```ts\n * const chatCompletion = await client.chat.completions.update(\n * 'completion_id',\n * { metadata: { foo: 'string' } },\n * );\n * ```\n */\n update(completionID, body, options) {\n return this._client.post(path `/chat/completions/${completionID}`, {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * List stored Chat Completions. Only Chat Completions that have been stored with\n * the `store` parameter set to `true` will be returned.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const chatCompletion of client.chat.completions.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/chat/completions', (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be deleted.\n *\n * @example\n * ```ts\n * const chatCompletionDeleted =\n * await client.chat.completions.delete('completion_id');\n * ```\n */\n delete(completionID, options) {\n return this._client.delete(path `/chat/completions/${completionID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n parse(body, options) {\n validateInputTools(body.tools);\n return this._client.chat.completions\n .create(body, {\n ...options,\n headers: {\n ...options?.headers,\n 'X-Stainless-Helper-Method': 'chat.completions.parse',\n },\n })\n ._thenUnwrap((completion) => parseChatCompletion(completion, body));\n }\n runTools(body, options) {\n if (body.stream) {\n return ChatCompletionStreamingRunner.runTools(this._client, body, options);\n }\n return ChatCompletionRunner.runTools(this._client, body, options);\n }\n /**\n * Creates a chat completion stream\n */\n stream(body, options) {\n return ChatCompletionStream.createChatCompletion(this._client, body, options);\n }\n}\nexport { ChatCompletionStreamingRunner } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nexport { ParsingToolFunction, } from \"../../../lib/RunnableFunction.mjs\";\nexport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nexport { ChatCompletionRunner } from \"../../../lib/ChatCompletionRunner.mjs\";\nCompletions.Messages = Messages;\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as CompletionsAPI from \"./completions/completions.mjs\";\nimport { Completions, } from \"./completions/completions.mjs\";\nexport class Chat extends APIResource {\n constructor() {\n super(...arguments);\n this.completions = new CompletionsAPI.Completions(this._client);\n }\n}\nChat.Completions = Completions;\n//# sourceMappingURL=chat.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class AdminAPIKeys extends APIResource {\n /**\n * Create an organization admin API key\n *\n * @example\n * ```ts\n * const adminAPIKey =\n * await client.admin.organization.adminAPIKeys.create({\n * name: 'New Admin Key',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/organization/admin_api_keys', {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieve a single organization API key\n *\n * @example\n * ```ts\n * const adminAPIKey =\n * await client.admin.organization.adminAPIKeys.retrieve(\n * 'key_id',\n * );\n * ```\n */\n retrieve(keyID, options) {\n return this._client.get(path `/organization/admin_api_keys/${keyID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * List organization API keys\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const adminAPIKey of client.admin.organization.adminAPIKeys.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/admin_api_keys', (CursorPage), {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Delete an organization admin API key\n *\n * @example\n * ```ts\n * const adminAPIKey =\n * await client.admin.organization.adminAPIKeys.delete(\n * 'key_id',\n * );\n * ```\n */\n delete(keyID, options) {\n return this._client.delete(path `/organization/admin_api_keys/${keyID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=admin-api-keys.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../core/pagination.mjs\";\n/**\n * List user actions and configuration changes within this organization.\n */\nexport class AuditLogs extends APIResource {\n /**\n * List user actions and configuration changes within this organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const auditLogListResponse of client.admin.organization.auditLogs.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/audit_logs', (ConversationCursorPage), {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=audit-logs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { ConversationCursorPage, Page, } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Certificates extends APIResource {\n /**\n * Upload a certificate to the organization. This does **not** automatically\n * activate the certificate.\n *\n * Organizations can upload up to 50 certificates.\n *\n * @example\n * ```ts\n * const certificate =\n * await client.admin.organization.certificates.create({\n * certificate: 'certificate',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/organization/certificates', {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get a certificate that has been uploaded to the organization.\n *\n * You can get a certificate regardless of whether it is active or not.\n *\n * @example\n * ```ts\n * const certificate =\n * await client.admin.organization.certificates.retrieve(\n * 'certificate_id',\n * );\n * ```\n */\n retrieve(certificateID, query = {}, options) {\n return this._client.get(path `/organization/certificates/${certificateID}`, {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Modify a certificate. Note that only the name can be modified.\n *\n * @example\n * ```ts\n * const certificate =\n * await client.admin.organization.certificates.update(\n * 'certificate_id',\n * );\n * ```\n */\n update(certificateID, body, options) {\n return this._client.post(path `/organization/certificates/${certificateID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * List uploaded certificates for this organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const certificateListResponse of client.admin.organization.certificates.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/certificates', (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Delete a certificate from the organization.\n *\n * The certificate must be inactive for the organization and all projects.\n *\n * @example\n * ```ts\n * const certificate =\n * await client.admin.organization.certificates.delete(\n * 'certificate_id',\n * );\n * ```\n */\n delete(certificateID, options) {\n return this._client.delete(path `/organization/certificates/${certificateID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Activate certificates at the organization level.\n *\n * You can atomically and idempotently activate up to 10 certificates at a time.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const certificateActivateResponse of client.admin.organization.certificates.activate(\n * { certificate_ids: ['cert_abc'] },\n * )) {\n * // ...\n * }\n * ```\n */\n activate(body, options) {\n return this._client.getAPIList('/organization/certificates/activate', (Page), {\n body,\n method: 'post',\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Deactivate certificates at the organization level.\n *\n * You can atomically and idempotently deactivate up to 10 certificates at a time.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const certificateDeactivateResponse of client.admin.organization.certificates.deactivate(\n * { certificate_ids: ['cert_abc'] },\n * )) {\n * // ...\n * }\n * ```\n */\n deactivate(body, options) {\n return this._client.getAPIList('/organization/certificates/deactivate', (Page), { body, method: 'post', ...options, __security: { adminAPIKeyAuth: true } });\n }\n}\n//# sourceMappingURL=certificates.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nexport class DataRetention extends APIResource {\n /**\n * Retrieves organization data retention controls.\n *\n * @example\n * ```ts\n * const organizationDataRetention =\n * await client.admin.organization.dataRetention.retrieve();\n * ```\n */\n retrieve(options) {\n return this._client.get('/organization/data_retention', {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates organization data retention controls.\n *\n * @example\n * ```ts\n * const organizationDataRetention =\n * await client.admin.organization.dataRetention.update({\n * retention_type: 'zero_data_retention',\n * });\n * ```\n */\n update(body, options) {\n return this._client.post('/organization/data_retention', {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=data-retention.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Invites extends APIResource {\n /**\n * Create an invite for a user to the organization. The invite must be accepted by\n * the user before they have access to the organization.\n *\n * @example\n * ```ts\n * const invite =\n * await client.admin.organization.invites.create({\n * email: 'email',\n * role: 'reader',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/organization/invites', {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves an invite.\n *\n * @example\n * ```ts\n * const invite =\n * await client.admin.organization.invites.retrieve(\n * 'invite_id',\n * );\n * ```\n */\n retrieve(inviteID, options) {\n return this._client.get(path `/organization/invites/${inviteID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Returns a list of invites in the organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const invite of client.admin.organization.invites.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/invites', (ConversationCursorPage), {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Delete an invite. If the invite has already been accepted, it cannot be deleted.\n *\n * @example\n * ```ts\n * const invite =\n * await client.admin.organization.invites.delete(\n * 'invite_id',\n * );\n * ```\n */\n delete(inviteID, options) {\n return this._client.delete(path `/organization/invites/${inviteID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=invites.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { NextCursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Roles extends APIResource {\n /**\n * Creates a custom role for the organization.\n *\n * @example\n * ```ts\n * const role = await client.admin.organization.roles.create({\n * permissions: ['string'],\n * role_name: 'role_name',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/organization/roles', {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves an organization role.\n *\n * @example\n * ```ts\n * const role = await client.admin.organization.roles.retrieve(\n * 'role_id',\n * );\n * ```\n */\n retrieve(roleID, options) {\n return this._client.get(path `/organization/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates an existing organization role.\n *\n * @example\n * ```ts\n * const role = await client.admin.organization.roles.update(\n * 'role_id',\n * );\n * ```\n */\n update(roleID, body, options) {\n return this._client.post(path `/organization/roles/${roleID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists the roles configured for the organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const role of client.admin.organization.roles.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/roles', (NextCursorPage), {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Deletes a custom role from the organization.\n *\n * @example\n * ```ts\n * const role = await client.admin.organization.roles.delete(\n * 'role_id',\n * );\n * ```\n */\n delete(roleID, options) {\n return this._client.delete(path `/organization/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=roles.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class SpendAlerts extends APIResource {\n /**\n * Creates an organization spend alert.\n *\n * @example\n * ```ts\n * const organizationSpendAlert =\n * await client.admin.organization.spendAlerts.create({\n * currency: 'USD',\n * interval: 'month',\n * notification_channel: {\n * recipients: ['string'],\n * type: 'email',\n * },\n * threshold_amount: 0,\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/organization/spend_alerts', {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves an organization spend alert.\n *\n * @example\n * ```ts\n * const organizationSpendAlert =\n * await client.admin.organization.spendAlerts.retrieve(\n * 'alert_id',\n * );\n * ```\n */\n retrieve(alertID, options) {\n return this._client.get(path `/organization/spend_alerts/${alertID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates an organization spend alert.\n *\n * @example\n * ```ts\n * const organizationSpendAlert =\n * await client.admin.organization.spendAlerts.update(\n * 'alert_id',\n * {\n * currency: 'USD',\n * interval: 'month',\n * notification_channel: {\n * recipients: ['string'],\n * type: 'email',\n * },\n * threshold_amount: 0,\n * },\n * );\n * ```\n */\n update(alertID, body, options) {\n return this._client.post(path `/organization/spend_alerts/${alertID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists organization spend alerts.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const organizationSpendAlert of client.admin.organization.spendAlerts.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/spend_alerts', (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Deletes an organization spend alert.\n *\n * @example\n * ```ts\n * const organizationSpendAlertDeleted =\n * await client.admin.organization.spendAlerts.delete(\n * 'alert_id',\n * );\n * ```\n */\n delete(alertID, options) {\n return this._client.delete(path `/organization/spend_alerts/${alertID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=spend-alerts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nexport class Usage extends APIResource {\n /**\n * Get audio speeches usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.audioSpeeches({\n * start_time: 0,\n * });\n * ```\n */\n audioSpeeches(query, options) {\n return this._client.get('/organization/usage/audio_speeches', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get audio transcriptions usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.audioTranscriptions(\n * { start_time: 0 },\n * );\n * ```\n */\n audioTranscriptions(query, options) {\n return this._client.get('/organization/usage/audio_transcriptions', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get code interpreter sessions usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.codeInterpreterSessions(\n * { start_time: 0 },\n * );\n * ```\n */\n codeInterpreterSessions(query, options) {\n return this._client.get('/organization/usage/code_interpreter_sessions', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get completions usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.completions({\n * start_time: 0,\n * });\n * ```\n */\n completions(query, options) {\n return this._client.get('/organization/usage/completions', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get costs details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.costs({\n * start_time: 0,\n * });\n * ```\n */\n costs(query, options) {\n return this._client.get('/organization/costs', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get embeddings usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.embeddings({\n * start_time: 0,\n * });\n * ```\n */\n embeddings(query, options) {\n return this._client.get('/organization/usage/embeddings', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get file search calls usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.fileSearchCalls({\n * start_time: 0,\n * });\n * ```\n */\n fileSearchCalls(query, options) {\n return this._client.get('/organization/usage/file_search_calls', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get images usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.images({\n * start_time: 0,\n * });\n * ```\n */\n images(query, options) {\n return this._client.get('/organization/usage/images', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get moderations usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.moderations({\n * start_time: 0,\n * });\n * ```\n */\n moderations(query, options) {\n return this._client.get('/organization/usage/moderations', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get vector stores usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.vectorStores({\n * start_time: 0,\n * });\n * ```\n */\n vectorStores(query, options) {\n return this._client.get('/organization/usage/vector_stores', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Get web search calls usage details for the organization.\n *\n * @example\n * ```ts\n * const response =\n * await client.admin.organization.usage.webSearchCalls({\n * start_time: 0,\n * });\n * ```\n */\n webSearchCalls(query, options) {\n return this._client.get('/organization/usage/web_search_calls', {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=usage.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { NextCursorPage } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class Roles extends APIResource {\n /**\n * Assigns an organization role to a group within the organization.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.groups.roles.create(\n * 'group_id',\n * { role_id: 'role_id' },\n * );\n * ```\n */\n create(groupID, body, options) {\n return this._client.post(path `/organization/groups/${groupID}/roles`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves an organization role assigned to a group.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.groups.roles.retrieve(\n * 'role_id',\n * { group_id: 'group_id' },\n * );\n * ```\n */\n retrieve(roleID, params, options) {\n const { group_id } = params;\n return this._client.get(path `/organization/groups/${group_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists the organization roles assigned to a group within the organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const roleListResponse of client.admin.organization.groups.roles.list(\n * 'group_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(groupID, query = {}, options) {\n return this._client.getAPIList(path `/organization/groups/${groupID}/roles`, (NextCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Unassigns an organization role from a group within the organization.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.groups.roles.delete(\n * 'role_id',\n * { group_id: 'group_id' },\n * );\n * ```\n */\n delete(roleID, params, options) {\n const { group_id } = params;\n return this._client.delete(path `/organization/groups/${group_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=roles.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { NextCursorPage } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class Users extends APIResource {\n /**\n * Adds a user to a group.\n *\n * @example\n * ```ts\n * const user =\n * await client.admin.organization.groups.users.create(\n * 'group_id',\n * { user_id: 'user_id' },\n * );\n * ```\n */\n create(groupID, body, options) {\n return this._client.post(path `/organization/groups/${groupID}/users`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a user in a group.\n *\n * @example\n * ```ts\n * const user =\n * await client.admin.organization.groups.users.retrieve(\n * 'user_id',\n * { group_id: 'group_id' },\n * );\n * ```\n */\n retrieve(userID, params, options) {\n const { group_id } = params;\n return this._client.get(path `/organization/groups/${group_id}/users/${userID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists the users assigned to a group.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const organizationGroupUser of client.admin.organization.groups.users.list(\n * 'group_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(groupID, query = {}, options) {\n return this._client.getAPIList(path `/organization/groups/${groupID}/users`, (NextCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Removes a user from a group.\n *\n * @example\n * ```ts\n * const user =\n * await client.admin.organization.groups.users.delete(\n * 'user_id',\n * { group_id: 'group_id' },\n * );\n * ```\n */\n delete(userID, params, options) {\n const { group_id } = params;\n return this._client.delete(path `/organization/groups/${group_id}/users/${userID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=users.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport * as RolesAPI from \"./roles.mjs\";\nimport { Roles, } from \"./roles.mjs\";\nimport * as UsersAPI from \"./users.mjs\";\nimport { Users, } from \"./users.mjs\";\nimport { NextCursorPage } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class Groups extends APIResource {\n constructor() {\n super(...arguments);\n this.users = new UsersAPI.Users(this._client);\n this.roles = new RolesAPI.Roles(this._client);\n }\n /**\n * Creates a new group in the organization.\n *\n * @example\n * ```ts\n * const group = await client.admin.organization.groups.create(\n * { name: 'x' },\n * );\n * ```\n */\n create(body, options) {\n return this._client.post('/organization/groups', {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a group.\n *\n * @example\n * ```ts\n * const group =\n * await client.admin.organization.groups.retrieve(\n * 'group_id',\n * );\n * ```\n */\n retrieve(groupID, options) {\n return this._client.get(path `/organization/groups/${groupID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates a group's information.\n *\n * @example\n * ```ts\n * const group = await client.admin.organization.groups.update(\n * 'group_id',\n * { name: 'x' },\n * );\n * ```\n */\n update(groupID, body, options) {\n return this._client.post(path `/organization/groups/${groupID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists all groups in the organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const group of client.admin.organization.groups.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/groups', (NextCursorPage), {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Deletes a group from the organization.\n *\n * @example\n * ```ts\n * const group = await client.admin.organization.groups.delete(\n * 'group_id',\n * );\n * ```\n */\n delete(groupID, options) {\n return this._client.delete(path `/organization/groups/${groupID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\nGroups.Users = Users;\nGroups.Roles = Roles;\n//# sourceMappingURL=groups.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class APIKeys extends APIResource {\n /**\n * Retrieves an API key in the project.\n *\n * @example\n * ```ts\n * const projectAPIKey =\n * await client.admin.organization.projects.apiKeys.retrieve(\n * 'api_key_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n retrieve(apiKeyID, params, options) {\n const { project_id } = params;\n return this._client.get(path `/organization/projects/${project_id}/api_keys/${apiKeyID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Returns a list of API keys in the project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const projectAPIKey of client.admin.organization.projects.apiKeys.list(\n * 'project_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(projectID, query = {}, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/api_keys`, (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Deletes an API key from the project.\n *\n * Returns confirmation of the key deletion, or an error if the key belonged to a\n * service account.\n *\n * @example\n * ```ts\n * const apiKey =\n * await client.admin.organization.projects.apiKeys.delete(\n * 'api_key_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n delete(apiKeyID, params, options) {\n const { project_id } = params;\n return this._client.delete(path `/organization/projects/${project_id}/api_keys/${apiKeyID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=api-keys.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { ConversationCursorPage, Page, } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class Certificates extends APIResource {\n /**\n * List certificates for this project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const certificateListResponse of client.admin.organization.projects.certificates.list(\n * 'project_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(projectID, query = {}, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/certificates`, (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Activate certificates at the project level.\n *\n * You can atomically and idempotently activate up to 10 certificates at a time.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const certificateActivateResponse of client.admin.organization.projects.certificates.activate(\n * 'project_id',\n * { certificate_ids: ['cert_abc'] },\n * )) {\n * // ...\n * }\n * ```\n */\n activate(projectID, body, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/certificates/activate`, (Page), { body, method: 'post', ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Deactivate certificates at the project level. You can atomically and\n * idempotently deactivate up to 10 certificates at a time.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const certificateDeactivateResponse of client.admin.organization.projects.certificates.deactivate(\n * 'project_id',\n * { certificate_ids: ['cert_abc'] },\n * )) {\n * // ...\n * }\n * ```\n */\n deactivate(projectID, body, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/certificates/deactivate`, (Page), { body, method: 'post', ...options, __security: { adminAPIKeyAuth: true } });\n }\n}\n//# sourceMappingURL=certificates.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class DataRetention extends APIResource {\n /**\n * Retrieves project data retention controls.\n *\n * @example\n * ```ts\n * const projectDataRetention =\n * await client.admin.organization.projects.dataRetention.retrieve(\n * 'project_id',\n * );\n * ```\n */\n retrieve(projectID, options) {\n return this._client.get(path `/organization/projects/${projectID}/data_retention`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates project data retention controls.\n *\n * @example\n * ```ts\n * const projectDataRetention =\n * await client.admin.organization.projects.dataRetention.update(\n * 'project_id',\n * { retention_type: 'organization_default' },\n * );\n * ```\n */\n update(projectID, body, options) {\n return this._client.post(path `/organization/projects/${projectID}/data_retention`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=data-retention.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class HostedToolPermissions extends APIResource {\n /**\n * Returns hosted tool permissions for a project.\n *\n * @example\n * ```ts\n * const projectHostedToolPermissions =\n * await client.admin.organization.projects.hostedToolPermissions.retrieve(\n * 'project_id',\n * );\n * ```\n */\n retrieve(projectID, options) {\n return this._client.get(path `/organization/projects/${projectID}/hosted_tool_permissions`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates hosted tool permissions for a project.\n *\n * @example\n * ```ts\n * const projectHostedToolPermissions =\n * await client.admin.organization.projects.hostedToolPermissions.update(\n * 'project_id',\n * );\n * ```\n */\n update(projectID, body, options) {\n return this._client.post(path `/organization/projects/${projectID}/hosted_tool_permissions`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=hosted-tool-permissions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class ModelPermissions extends APIResource {\n /**\n * Returns model permissions for a project.\n *\n * @example\n * ```ts\n * const projectModelPermissions =\n * await client.admin.organization.projects.modelPermissions.retrieve(\n * 'project_id',\n * );\n * ```\n */\n retrieve(projectID, options) {\n return this._client.get(path `/organization/projects/${projectID}/model_permissions`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates model permissions for a project.\n *\n * @example\n * ```ts\n * const projectModelPermissions =\n * await client.admin.organization.projects.modelPermissions.update(\n * 'project_id',\n * { mode: 'allow_list', model_ids: ['string'] },\n * );\n * ```\n */\n update(projectID, body, options) {\n return this._client.post(path `/organization/projects/${projectID}/model_permissions`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Deletes model permissions for a project.\n *\n * @example\n * ```ts\n * const projectModelPermissionsDeleted =\n * await client.admin.organization.projects.modelPermissions.delete(\n * 'project_id',\n * );\n * ```\n */\n delete(projectID, options) {\n return this._client.delete(path `/organization/projects/${projectID}/model_permissions`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=model-permissions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class RateLimits extends APIResource {\n /**\n * Returns the rate limits per model for a project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const projectRateLimit of client.admin.organization.projects.rateLimits.listRateLimits(\n * 'project_id',\n * )) {\n * // ...\n * }\n * ```\n */\n listRateLimits(projectID, query = {}, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/rate_limits`, (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Updates a project rate limit.\n *\n * @example\n * ```ts\n * const projectRateLimit =\n * await client.admin.organization.projects.rateLimits.updateRateLimit(\n * 'rate_limit_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n updateRateLimit(rateLimitID, params, options) {\n const { project_id, ...body } = params;\n return this._client.post(path `/organization/projects/${project_id}/rate_limits/${rateLimitID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=rate-limits.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { NextCursorPage } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class Roles extends APIResource {\n /**\n * Creates a custom role for a project.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.roles.create(\n * 'project_id',\n * { permissions: ['string'], role_name: 'role_name' },\n * );\n * ```\n */\n create(projectID, body, options) {\n return this._client.post(path `/projects/${projectID}/roles`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a project role.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.roles.retrieve(\n * 'role_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n retrieve(roleID, params, options) {\n const { project_id } = params;\n return this._client.get(path `/projects/${project_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates an existing project role.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.roles.update(\n * 'role_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n update(roleID, params, options) {\n const { project_id, ...body } = params;\n return this._client.post(path `/projects/${project_id}/roles/${roleID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists the roles configured for a project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const role of client.admin.organization.projects.roles.list(\n * 'project_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(projectID, query = {}, options) {\n return this._client.getAPIList(path `/projects/${projectID}/roles`, (NextCursorPage), {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Deletes a custom role from a project.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.roles.delete(\n * 'role_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n delete(roleID, params, options) {\n const { project_id } = params;\n return this._client.delete(path `/projects/${project_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=roles.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class ServiceAccounts extends APIResource {\n /**\n * Creates a new service account in the project. This also returns an unredacted\n * API key for the service account.\n *\n * @example\n * ```ts\n * const serviceAccount =\n * await client.admin.organization.projects.serviceAccounts.create(\n * 'project_id',\n * { name: 'name' },\n * );\n * ```\n */\n create(projectID, body, options) {\n return this._client.post(path `/organization/projects/${projectID}/service_accounts`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a service account in the project.\n *\n * @example\n * ```ts\n * const projectServiceAccount =\n * await client.admin.organization.projects.serviceAccounts.retrieve(\n * 'service_account_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n retrieve(serviceAccountID, params, options) {\n const { project_id } = params;\n return this._client.get(path `/organization/projects/${project_id}/service_accounts/${serviceAccountID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates a service account in the project.\n *\n * @example\n * ```ts\n * const projectServiceAccount =\n * await client.admin.organization.projects.serviceAccounts.update(\n * 'service_account_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n update(serviceAccountID, params, options) {\n const { project_id, ...body } = params;\n return this._client.post(path `/organization/projects/${project_id}/service_accounts/${serviceAccountID}`, { body, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Returns a list of service accounts in the project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const projectServiceAccount of client.admin.organization.projects.serviceAccounts.list(\n * 'project_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(projectID, query = {}, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/service_accounts`, (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Deletes a service account from the project.\n *\n * Returns confirmation of service account deletion, or an error if the project is\n * archived (archived projects have no service accounts).\n *\n * @example\n * ```ts\n * const serviceAccount =\n * await client.admin.organization.projects.serviceAccounts.delete(\n * 'service_account_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n delete(serviceAccountID, params, options) {\n const { project_id } = params;\n return this._client.delete(path `/organization/projects/${project_id}/service_accounts/${serviceAccountID}`, { ...options, __security: { adminAPIKeyAuth: true } });\n }\n}\n//# sourceMappingURL=service-accounts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class SpendAlerts extends APIResource {\n /**\n * Creates a project spend alert.\n *\n * @example\n * ```ts\n * const projectSpendAlert =\n * await client.admin.organization.projects.spendAlerts.create(\n * 'project_id',\n * {\n * currency: 'USD',\n * interval: 'month',\n * notification_channel: {\n * recipients: ['string'],\n * type: 'email',\n * },\n * threshold_amount: 0,\n * },\n * );\n * ```\n */\n create(projectID, body, options) {\n return this._client.post(path `/organization/projects/${projectID}/spend_alerts`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a project spend alert.\n *\n * @example\n * ```ts\n * const projectSpendAlert =\n * await client.admin.organization.projects.spendAlerts.retrieve(\n * 'alert_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n retrieve(alertID, params, options) {\n const { project_id } = params;\n return this._client.get(path `/organization/projects/${project_id}/spend_alerts/${alertID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Updates a project spend alert.\n *\n * @example\n * ```ts\n * const projectSpendAlert =\n * await client.admin.organization.projects.spendAlerts.update(\n * 'alert_id',\n * {\n * project_id: 'project_id',\n * currency: 'USD',\n * interval: 'month',\n * notification_channel: {\n * recipients: ['string'],\n * type: 'email',\n * },\n * threshold_amount: 0,\n * },\n * );\n * ```\n */\n update(alertID, params, options) {\n const { project_id, ...body } = params;\n return this._client.post(path `/organization/projects/${project_id}/spend_alerts/${alertID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists project spend alerts.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const projectSpendAlert of client.admin.organization.projects.spendAlerts.list(\n * 'project_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(projectID, query = {}, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/spend_alerts`, (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Deletes a project spend alert.\n *\n * @example\n * ```ts\n * const projectSpendAlertDeleted =\n * await client.admin.organization.projects.spendAlerts.delete(\n * 'alert_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n delete(alertID, params, options) {\n const { project_id } = params;\n return this._client.delete(path `/organization/projects/${project_id}/spend_alerts/${alertID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=spend-alerts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../../core/resource.mjs\";\nimport { NextCursorPage } from \"../../../../../core/pagination.mjs\";\nimport { path } from \"../../../../../internal/utils/path.mjs\";\nexport class Roles extends APIResource {\n /**\n * Assigns a project role to a group within a project.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.groups.roles.create(\n * 'group_id',\n * { project_id: 'project_id', role_id: 'role_id' },\n * );\n * ```\n */\n create(groupID, params, options) {\n const { project_id, ...body } = params;\n return this._client.post(path `/projects/${project_id}/groups/${groupID}/roles`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a project role assigned to a group.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.groups.roles.retrieve(\n * 'role_id',\n * { project_id: 'project_id', group_id: 'group_id' },\n * );\n * ```\n */\n retrieve(roleID, params, options) {\n const { project_id, group_id } = params;\n return this._client.get(path `/projects/${project_id}/groups/${group_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists the project roles assigned to a group within a project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const roleListResponse of client.admin.organization.projects.groups.roles.list(\n * 'group_id',\n * { project_id: 'project_id' },\n * )) {\n * // ...\n * }\n * ```\n */\n list(groupID, params, options) {\n const { project_id, ...query } = params;\n return this._client.getAPIList(path `/projects/${project_id}/groups/${groupID}/roles`, (NextCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Unassigns a project role from a group within a project.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.groups.roles.delete(\n * 'role_id',\n * { project_id: 'project_id', group_id: 'group_id' },\n * );\n * ```\n */\n delete(roleID, params, options) {\n const { project_id, group_id } = params;\n return this._client.delete(path `/projects/${project_id}/groups/${group_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=roles.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../../core/resource.mjs\";\nimport * as RolesAPI from \"./roles.mjs\";\nimport { Roles, } from \"./roles.mjs\";\nimport { NextCursorPage } from \"../../../../../core/pagination.mjs\";\nimport { path } from \"../../../../../internal/utils/path.mjs\";\nexport class Groups extends APIResource {\n constructor() {\n super(...arguments);\n this.roles = new RolesAPI.Roles(this._client);\n }\n /**\n * Grants a group access to a project.\n *\n * @example\n * ```ts\n * const projectGroup =\n * await client.admin.organization.projects.groups.create(\n * 'project_id',\n * { group_id: 'group_id', role: 'role' },\n * );\n * ```\n */\n create(projectID, body, options) {\n return this._client.post(path `/organization/projects/${projectID}/groups`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a project's group.\n *\n * @example\n * ```ts\n * const projectGroup =\n * await client.admin.organization.projects.groups.retrieve(\n * 'group_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n retrieve(groupID, params, options) {\n const { project_id, ...query } = params;\n return this._client.get(path `/organization/projects/${project_id}/groups/${groupID}`, {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists the groups that have access to a project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const projectGroup of client.admin.organization.projects.groups.list(\n * 'project_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(projectID, query = {}, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/groups`, (NextCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Revokes a group's access to a project.\n *\n * @example\n * ```ts\n * const group =\n * await client.admin.organization.projects.groups.delete(\n * 'group_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n delete(groupID, params, options) {\n const { project_id } = params;\n return this._client.delete(path `/organization/projects/${project_id}/groups/${groupID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\nGroups.Roles = Roles;\n//# sourceMappingURL=groups.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../../core/resource.mjs\";\nimport { NextCursorPage } from \"../../../../../core/pagination.mjs\";\nimport { path } from \"../../../../../internal/utils/path.mjs\";\nexport class Roles extends APIResource {\n /**\n * Assigns a project role to a user within a project.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.users.roles.create(\n * 'user_id',\n * { project_id: 'project_id', role_id: 'role_id' },\n * );\n * ```\n */\n create(userID, params, options) {\n const { project_id, ...body } = params;\n return this._client.post(path `/projects/${project_id}/users/${userID}/roles`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a project role assigned to a user.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.users.roles.retrieve(\n * 'role_id',\n * { project_id: 'project_id', user_id: 'user_id' },\n * );\n * ```\n */\n retrieve(roleID, params, options) {\n const { project_id, user_id } = params;\n return this._client.get(path `/projects/${project_id}/users/${user_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists the project roles assigned to a user within a project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const roleListResponse of client.admin.organization.projects.users.roles.list(\n * 'user_id',\n * { project_id: 'project_id' },\n * )) {\n * // ...\n * }\n * ```\n */\n list(userID, params, options) {\n const { project_id, ...query } = params;\n return this._client.getAPIList(path `/projects/${project_id}/users/${userID}/roles`, (NextCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Unassigns a project role from a user within a project.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.projects.users.roles.delete(\n * 'role_id',\n * { project_id: 'project_id', user_id: 'user_id' },\n * );\n * ```\n */\n delete(roleID, params, options) {\n const { project_id, user_id } = params;\n return this._client.delete(path `/projects/${project_id}/users/${user_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=roles.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../../core/resource.mjs\";\nimport * as RolesAPI from \"./roles.mjs\";\nimport { Roles, } from \"./roles.mjs\";\nimport { ConversationCursorPage, } from \"../../../../../core/pagination.mjs\";\nimport { path } from \"../../../../../internal/utils/path.mjs\";\nexport class Users extends APIResource {\n constructor() {\n super(...arguments);\n this.roles = new RolesAPI.Roles(this._client);\n }\n /**\n * Adds a user to the project. Users must already be members of the organization to\n * be added to a project.\n *\n * @example\n * ```ts\n * const projectUser =\n * await client.admin.organization.projects.users.create(\n * 'project_id',\n * { role: 'role' },\n * );\n * ```\n */\n create(projectID, body, options) {\n return this._client.post(path `/organization/projects/${projectID}/users`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a user in the project.\n *\n * @example\n * ```ts\n * const projectUser =\n * await client.admin.organization.projects.users.retrieve(\n * 'user_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n retrieve(userID, params, options) {\n const { project_id } = params;\n return this._client.get(path `/organization/projects/${project_id}/users/${userID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Modifies a user's role in the project.\n *\n * @example\n * ```ts\n * const projectUser =\n * await client.admin.organization.projects.users.update(\n * 'user_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n update(userID, params, options) {\n const { project_id, ...body } = params;\n return this._client.post(path `/organization/projects/${project_id}/users/${userID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Returns a list of users in the project.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const projectUser of client.admin.organization.projects.users.list(\n * 'project_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(projectID, query = {}, options) {\n return this._client.getAPIList(path `/organization/projects/${projectID}/users`, (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Deletes a user from the project.\n *\n * Returns confirmation of project user deletion, or an error if the project is\n * archived (archived projects have no users).\n *\n * @example\n * ```ts\n * const user =\n * await client.admin.organization.projects.users.delete(\n * 'user_id',\n * { project_id: 'project_id' },\n * );\n * ```\n */\n delete(userID, params, options) {\n const { project_id } = params;\n return this._client.delete(path `/organization/projects/${project_id}/users/${userID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\nUsers.Roles = Roles;\n//# sourceMappingURL=users.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport * as APIKeysAPI from \"./api-keys.mjs\";\nimport { APIKeys, } from \"./api-keys.mjs\";\nimport * as CertificatesAPI from \"./certificates.mjs\";\nimport { Certificates, } from \"./certificates.mjs\";\nimport * as DataRetentionAPI from \"./data-retention.mjs\";\nimport { DataRetention } from \"./data-retention.mjs\";\nimport * as HostedToolPermissionsAPI from \"./hosted-tool-permissions.mjs\";\nimport { HostedToolPermissions, } from \"./hosted-tool-permissions.mjs\";\nimport * as ModelPermissionsAPI from \"./model-permissions.mjs\";\nimport { ModelPermissions, } from \"./model-permissions.mjs\";\nimport * as RateLimitsAPI from \"./rate-limits.mjs\";\nimport { RateLimits, } from \"./rate-limits.mjs\";\nimport * as RolesAPI from \"./roles.mjs\";\nimport { Roles, } from \"./roles.mjs\";\nimport * as ServiceAccountsAPI from \"./service-accounts.mjs\";\nimport { ServiceAccounts, } from \"./service-accounts.mjs\";\nimport * as SpendAlertsAPI from \"./spend-alerts.mjs\";\nimport { SpendAlerts, } from \"./spend-alerts.mjs\";\nimport * as GroupsAPI from \"./groups/groups.mjs\";\nimport { Groups, } from \"./groups/groups.mjs\";\nimport * as UsersAPI from \"./users/users.mjs\";\nimport { Users, } from \"./users/users.mjs\";\nimport { ConversationCursorPage, } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class Projects extends APIResource {\n constructor() {\n super(...arguments);\n this.users = new UsersAPI.Users(this._client);\n this.serviceAccounts = new ServiceAccountsAPI.ServiceAccounts(this._client);\n this.apiKeys = new APIKeysAPI.APIKeys(this._client);\n this.rateLimits = new RateLimitsAPI.RateLimits(this._client);\n this.modelPermissions = new ModelPermissionsAPI.ModelPermissions(this._client);\n this.hostedToolPermissions = new HostedToolPermissionsAPI.HostedToolPermissions(this._client);\n this.groups = new GroupsAPI.Groups(this._client);\n this.roles = new RolesAPI.Roles(this._client);\n this.dataRetention = new DataRetentionAPI.DataRetention(this._client);\n this.spendAlerts = new SpendAlertsAPI.SpendAlerts(this._client);\n this.certificates = new CertificatesAPI.Certificates(this._client);\n }\n /**\n * Create a new project in the organization. Projects can be created and archived,\n * but cannot be deleted.\n *\n * @example\n * ```ts\n * const project =\n * await client.admin.organization.projects.create({\n * name: 'name',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/organization/projects', {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves a project.\n *\n * @example\n * ```ts\n * const project =\n * await client.admin.organization.projects.retrieve(\n * 'project_id',\n * );\n * ```\n */\n retrieve(projectID, options) {\n return this._client.get(path `/organization/projects/${projectID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Modifies a project in the organization.\n *\n * @example\n * ```ts\n * const project =\n * await client.admin.organization.projects.update(\n * 'project_id',\n * );\n * ```\n */\n update(projectID, body, options) {\n return this._client.post(path `/organization/projects/${projectID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Returns a list of projects.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const project of client.admin.organization.projects.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/projects', (ConversationCursorPage), {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Archives a project in the organization. Archived projects cannot be used or\n * updated.\n *\n * @example\n * ```ts\n * const project =\n * await client.admin.organization.projects.archive(\n * 'project_id',\n * );\n * ```\n */\n archive(projectID, options) {\n return this._client.post(path `/organization/projects/${projectID}/archive`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\nProjects.Users = Users;\nProjects.ServiceAccounts = ServiceAccounts;\nProjects.APIKeys = APIKeys;\nProjects.RateLimits = RateLimits;\nProjects.ModelPermissions = ModelPermissions;\nProjects.HostedToolPermissions = HostedToolPermissions;\nProjects.Groups = Groups;\nProjects.Roles = Roles;\nProjects.DataRetention = DataRetention;\nProjects.SpendAlerts = SpendAlerts;\nProjects.Certificates = Certificates;\n//# sourceMappingURL=projects.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { NextCursorPage } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class Roles extends APIResource {\n /**\n * Assigns an organization role to a user within the organization.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.users.roles.create(\n * 'user_id',\n * { role_id: 'role_id' },\n * );\n * ```\n */\n create(userID, body, options) {\n return this._client.post(path `/organization/users/${userID}/roles`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Retrieves an organization role assigned to a user.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.users.roles.retrieve(\n * 'role_id',\n * { user_id: 'user_id' },\n * );\n * ```\n */\n retrieve(roleID, params, options) {\n const { user_id } = params;\n return this._client.get(path `/organization/users/${user_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists the organization roles assigned to a user within the organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const roleListResponse of client.admin.organization.users.roles.list(\n * 'user_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(userID, query = {}, options) {\n return this._client.getAPIList(path `/organization/users/${userID}/roles`, (NextCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * Unassigns an organization role from a user within the organization.\n *\n * @example\n * ```ts\n * const role =\n * await client.admin.organization.users.roles.delete(\n * 'role_id',\n * { user_id: 'user_id' },\n * );\n * ```\n */\n delete(roleID, params, options) {\n const { user_id } = params;\n return this._client.delete(path `/organization/users/${user_id}/roles/${roleID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\n//# sourceMappingURL=roles.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport * as RolesAPI from \"./roles.mjs\";\nimport { Roles, } from \"./roles.mjs\";\nimport { ConversationCursorPage, } from \"../../../../core/pagination.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\nexport class Users extends APIResource {\n constructor() {\n super(...arguments);\n this.roles = new RolesAPI.Roles(this._client);\n }\n /**\n * Retrieves a user by their identifier.\n *\n * @example\n * ```ts\n * const organizationUser =\n * await client.admin.organization.users.retrieve('user_id');\n * ```\n */\n retrieve(userID, options) {\n return this._client.get(path `/organization/users/${userID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Modifies a user's role in the organization.\n *\n * @example\n * ```ts\n * const organizationUser =\n * await client.admin.organization.users.update('user_id');\n * ```\n */\n update(userID, body, options) {\n return this._client.post(path `/organization/users/${userID}`, {\n body,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Lists all of the users in the organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const organizationUser of client.admin.organization.users.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/organization/users', (ConversationCursorPage), {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * Deletes a user from the organization.\n *\n * @example\n * ```ts\n * const user = await client.admin.organization.users.delete(\n * 'user_id',\n * );\n * ```\n */\n delete(userID, options) {\n return this._client.delete(path `/organization/users/${userID}`, {\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n}\nUsers.Roles = Roles;\n//# sourceMappingURL=users.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as AdminAPIKeysAPI from \"./admin-api-keys.mjs\";\nimport { AdminAPIKeys, } from \"./admin-api-keys.mjs\";\nimport * as AuditLogsAPI from \"./audit-logs.mjs\";\nimport { AuditLogs } from \"./audit-logs.mjs\";\nimport * as CertificatesAPI from \"./certificates.mjs\";\nimport { Certificates, } from \"./certificates.mjs\";\nimport * as DataRetentionAPI from \"./data-retention.mjs\";\nimport { DataRetention } from \"./data-retention.mjs\";\nimport * as InvitesAPI from \"./invites.mjs\";\nimport { Invites, } from \"./invites.mjs\";\nimport * as RolesAPI from \"./roles.mjs\";\nimport { Roles, } from \"./roles.mjs\";\nimport * as SpendAlertsAPI from \"./spend-alerts.mjs\";\nimport { SpendAlerts, } from \"./spend-alerts.mjs\";\nimport * as UsageAPI from \"./usage.mjs\";\nimport { Usage, } from \"./usage.mjs\";\nimport * as GroupsAPI from \"./groups/groups.mjs\";\nimport { Groups, } from \"./groups/groups.mjs\";\nimport * as ProjectsAPI from \"./projects/projects.mjs\";\nimport { Projects, } from \"./projects/projects.mjs\";\nimport * as UsersAPI from \"./users/users.mjs\";\nimport { Users, } from \"./users/users.mjs\";\nexport class Organization extends APIResource {\n constructor() {\n super(...arguments);\n this.auditLogs = new AuditLogsAPI.AuditLogs(this._client);\n this.adminAPIKeys = new AdminAPIKeysAPI.AdminAPIKeys(this._client);\n this.usage = new UsageAPI.Usage(this._client);\n this.invites = new InvitesAPI.Invites(this._client);\n this.users = new UsersAPI.Users(this._client);\n this.groups = new GroupsAPI.Groups(this._client);\n this.roles = new RolesAPI.Roles(this._client);\n this.dataRetention = new DataRetentionAPI.DataRetention(this._client);\n this.spendAlerts = new SpendAlertsAPI.SpendAlerts(this._client);\n this.certificates = new CertificatesAPI.Certificates(this._client);\n this.projects = new ProjectsAPI.Projects(this._client);\n }\n}\nOrganization.AuditLogs = AuditLogs;\nOrganization.AdminAPIKeys = AdminAPIKeys;\nOrganization.Usage = Usage;\nOrganization.Invites = Invites;\nOrganization.Users = Users;\nOrganization.Groups = Groups;\nOrganization.Roles = Roles;\nOrganization.DataRetention = DataRetention;\nOrganization.SpendAlerts = SpendAlerts;\nOrganization.Certificates = Certificates;\nOrganization.Projects = Projects;\n//# sourceMappingURL=organization.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as OrganizationAPI from \"./organization/organization.mjs\";\nimport { Organization } from \"./organization/organization.mjs\";\nexport class Admin extends APIResource {\n constructor() {\n super(...arguments);\n this.organization = new OrganizationAPI.Organization(this._client);\n }\n}\nAdmin.Organization = Organization;\n//# sourceMappingURL=admin.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { isReadonlyArray } from \"./utils/values.mjs\";\nconst brand_privateNullableHeaders = /* @__PURE__ */ Symbol('brand.privateNullableHeaders');\nfunction* iterateHeaders(headers) {\n if (!headers)\n return;\n if (brand_privateNullableHeaders in headers) {\n const { values, nulls } = headers;\n yield* values.entries();\n for (const name of nulls) {\n yield [name, null];\n }\n return;\n }\n let shouldClear = false;\n let iter;\n if (headers instanceof Headers) {\n iter = headers.entries();\n }\n else if (isReadonlyArray(headers)) {\n iter = headers;\n }\n else {\n shouldClear = true;\n iter = Object.entries(headers ?? {});\n }\n for (let row of iter) {\n const name = row[0];\n if (typeof name !== 'string')\n throw new TypeError('expected header name to be a string');\n const values = isReadonlyArray(row[1]) ? row[1] : [row[1]];\n let didClear = false;\n for (const value of values) {\n if (value === undefined)\n continue;\n // Objects keys always overwrite older headers, they never append.\n // Yield a null to clear the header before adding the new values.\n if (shouldClear && !didClear) {\n didClear = true;\n yield [name, null];\n }\n yield [name, value];\n }\n }\n}\nexport const buildHeaders = (newHeaders) => {\n const targetHeaders = new Headers();\n const nullHeaders = new Set();\n for (const headers of newHeaders) {\n const seenHeaders = new Set();\n for (const [name, value] of iterateHeaders(headers)) {\n const lowerName = name.toLowerCase();\n if (!seenHeaders.has(lowerName)) {\n targetHeaders.delete(name);\n seenHeaders.add(lowerName);\n }\n if (value === null) {\n targetHeaders.delete(name);\n nullHeaders.add(lowerName);\n }\n else {\n targetHeaders.append(name, value);\n nullHeaders.delete(lowerName);\n }\n }\n }\n return { [brand_privateNullableHeaders]: true, values: targetHeaders, nulls: nullHeaders };\n};\nexport const isEmptyHeaders = (headers) => {\n for (const _ of iterateHeaders(headers))\n return false;\n return true;\n};\n//# sourceMappingURL=headers.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\n/**\n * Turn audio into text or text into audio.\n */\nexport class Speech extends APIResource {\n /**\n * Generates audio from the input text.\n *\n * Returns the audio file content, or a stream of audio events.\n *\n * @example\n * ```ts\n * const speech = await client.audio.speech.create({\n * input: 'input',\n * model: 'tts-1',\n * voice: 'alloy',\n * });\n *\n * const content = await speech.blob();\n * console.log(content);\n * ```\n */\n create(body, options) {\n return this._client.post('/audio/speech', {\n body,\n ...options,\n headers: buildHeaders([{ Accept: 'application/octet-stream' }, options?.headers]),\n __security: { bearerAuth: true },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=speech.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\n/**\n * Turn audio into text or text into audio.\n */\nexport class Transcriptions extends APIResource {\n create(body, options) {\n return this._client.post('/audio/transcriptions', multipartFormRequestOptions({\n body,\n ...options,\n stream: body.stream ?? false,\n __metadata: { model: body.model },\n __security: { bearerAuth: true },\n }, this._client));\n }\n}\n//# sourceMappingURL=transcriptions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\n/**\n * Turn audio into text or text into audio.\n */\nexport class Translations extends APIResource {\n create(body, options) {\n return this._client.post('/audio/translations', multipartFormRequestOptions({ body, ...options, __metadata: { model: body.model }, __security: { bearerAuth: true } }, this._client));\n }\n}\n//# sourceMappingURL=translations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as SpeechAPI from \"./speech.mjs\";\nimport { Speech } from \"./speech.mjs\";\nimport * as TranscriptionsAPI from \"./transcriptions.mjs\";\nimport { Transcriptions, } from \"./transcriptions.mjs\";\nimport * as TranslationsAPI from \"./translations.mjs\";\nimport { Translations, } from \"./translations.mjs\";\nexport class Audio extends APIResource {\n constructor() {\n super(...arguments);\n this.transcriptions = new TranscriptionsAPI.Transcriptions(this._client);\n this.translations = new TranslationsAPI.Translations(this._client);\n this.speech = new SpeechAPI.Speech(this._client);\n }\n}\nAudio.Transcriptions = Transcriptions;\nAudio.Translations = Translations;\nAudio.Speech = Speech;\n//# sourceMappingURL=audio.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { CursorPage } from \"../core/pagination.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\n/**\n * Create large batches of API requests to run asynchronously.\n */\nexport class Batches extends APIResource {\n /**\n * Creates and executes a batch from an uploaded file of requests\n */\n create(body, options) {\n return this._client.post('/batches', { body, ...options, __security: { bearerAuth: true } });\n }\n /**\n * Retrieves a batch.\n */\n retrieve(batchID, options) {\n return this._client.get(path `/batches/${batchID}`, { ...options, __security: { bearerAuth: true } });\n }\n /**\n * List your organization's batches.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/batches', (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Cancels an in-progress batch. The batch will be in status `cancelling` for up to\n * 10 minutes, before changing to `cancelled`, where it will have partial results\n * (if any) available in the output file.\n */\n cancel(batchID, options) {\n return this._client.post(path `/batches/${batchID}/cancel`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=batches.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n */\nexport class Assistants extends APIResource {\n /**\n * Create an assistant with a model and instructions.\n *\n * @deprecated\n */\n create(body, options) {\n return this._client.post('/assistants', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Retrieves an assistant.\n *\n * @deprecated\n */\n retrieve(assistantID, options) {\n return this._client.get(path `/assistants/${assistantID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Modifies an assistant.\n *\n * @deprecated\n */\n update(assistantID, body, options) {\n return this._client.post(path `/assistants/${assistantID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Returns a list of assistants.\n *\n * @deprecated\n */\n list(query = {}, options) {\n return this._client.getAPIList('/assistants', (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete an assistant.\n *\n * @deprecated\n */\n delete(assistantID, options) {\n return this._client.delete(path `/assistants/${assistantID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=assistants.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nexport class Sessions extends APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API. Can be configured with the same session parameters as the\n * `session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n *\n * @example\n * ```ts\n * const session =\n * await client.beta.realtime.sessions.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/sessions', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nexport class TranscriptionSessions extends APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API specifically for realtime transcriptions. Can be configured with\n * the same session parameters as the `transcription_session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n *\n * @example\n * ```ts\n * const transcriptionSession =\n * await client.beta.realtime.transcriptionSessions.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/transcription_sessions', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=transcription-sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as SessionsAPI from \"./sessions.mjs\";\nimport { Sessions, } from \"./sessions.mjs\";\nimport * as TranscriptionSessionsAPI from \"./transcription-sessions.mjs\";\nimport { TranscriptionSessions, } from \"./transcription-sessions.mjs\";\n/**\n * @deprecated Realtime has now launched and is generally available. The old beta API is now deprecated.\n */\nexport class Realtime extends APIResource {\n constructor() {\n super(...arguments);\n this.sessions = new SessionsAPI.Sessions(this._client);\n this.transcriptionSessions = new TranscriptionSessionsAPI.TranscriptionSessions(this._client);\n }\n}\nRealtime.Sessions = Sessions;\nRealtime.TranscriptionSessions = TranscriptionSessions;\n//# sourceMappingURL=realtime.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Sessions extends APIResource {\n /**\n * Create a ChatKit session.\n *\n * @example\n * ```ts\n * const chatSession =\n * await client.beta.chatkit.sessions.create({\n * user: 'x',\n * workflow: { id: 'id' },\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/chatkit/sessions', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Cancel an active ChatKit session and return its most recent metadata.\n *\n * Cancelling prevents new requests from using the issued client secret.\n *\n * @example\n * ```ts\n * const chatSession =\n * await client.beta.chatkit.sessions.cancel('cksess_123');\n * ```\n */\n cancel(sessionID, options) {\n return this._client.post(path `/chatkit/sessions/${sessionID}/cancel`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Threads extends APIResource {\n /**\n * Retrieve a ChatKit thread by its identifier.\n *\n * @example\n * ```ts\n * const chatkitThread =\n * await client.beta.chatkit.threads.retrieve('cthr_123');\n * ```\n */\n retrieve(threadID, options) {\n return this._client.get(path `/chatkit/threads/${threadID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * List ChatKit threads with optional pagination and user filters.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const chatkitThread of client.beta.chatkit.threads.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/chatkit/threads', (ConversationCursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a ChatKit thread along with its items and stored attachments.\n *\n * @example\n * ```ts\n * const thread = await client.beta.chatkit.threads.delete(\n * 'cthr_123',\n * );\n * ```\n */\n delete(threadID, options) {\n return this._client.delete(path `/chatkit/threads/${threadID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * List items that belong to a ChatKit thread.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const thread of client.beta.chatkit.threads.listItems(\n * 'cthr_123',\n * )) {\n * // ...\n * }\n * ```\n */\n listItems(threadID, query = {}, options) {\n return this._client.getAPIList(path `/chatkit/threads/${threadID}/items`, (ConversationCursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'chatkit_beta=v1' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=threads.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as SessionsAPI from \"./sessions.mjs\";\nimport { Sessions } from \"./sessions.mjs\";\nimport * as ThreadsAPI from \"./threads.mjs\";\nimport { Threads, } from \"./threads.mjs\";\nexport class ChatKit extends APIResource {\n constructor() {\n super(...arguments);\n this.sessions = new SessionsAPI.Sessions(this._client);\n this.threads = new ThreadsAPI.Threads(this._client);\n }\n}\nChatKit.Sessions = Sessions;\nChatKit.Threads = Threads;\n//# sourceMappingURL=chatkit.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Messages extends APIResource {\n /**\n * Create a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n create(threadID, body, options) {\n return this._client.post(path `/threads/${threadID}/messages`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Retrieve a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(messageID, params, options) {\n const { thread_id } = params;\n return this._client.get(path `/threads/${thread_id}/messages/${messageID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Modifies a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(messageID, params, options) {\n const { thread_id, ...body } = params;\n return this._client.post(path `/threads/${thread_id}/messages/${messageID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Returns a list of messages for a given thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n list(threadID, query = {}, options) {\n return this._client.getAPIList(path `/threads/${threadID}/messages`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Deletes a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n delete(messageID, params, options) {\n const { thread_id } = params;\n return this._client.delete(path `/threads/${thread_id}/messages/${messageID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=messages.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../../internal/headers.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Steps extends APIResource {\n /**\n * Retrieves a run step.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(stepID, params, options) {\n const { thread_id, run_id, ...query } = params;\n return this._client.get(path `/threads/${thread_id}/runs/${run_id}/steps/${stepID}`, {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Returns a list of run steps belonging to a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n list(runID, params, options) {\n const { thread_id, ...query } = params;\n return this._client.getAPIList(path `/threads/${thread_id}/runs/${runID}/steps`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=steps.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { OpenAIError } from \"../../core/error.mjs\";\nimport { encodeUTF8 } from \"./bytes.mjs\";\nexport const toBase64 = (data) => {\n if (!data)\n return '';\n if (typeof globalThis.Buffer !== 'undefined') {\n return globalThis.Buffer.from(data).toString('base64');\n }\n if (typeof data === 'string') {\n data = encodeUTF8(data);\n }\n if (typeof btoa !== 'undefined') {\n return btoa(String.fromCharCode.apply(null, data));\n }\n throw new OpenAIError('Cannot generate base64 string; Expected `Buffer` or `btoa` to be defined');\n};\nexport const fromBase64 = (str) => {\n if (typeof globalThis.Buffer !== 'undefined') {\n const buf = globalThis.Buffer.from(str, 'base64');\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n if (typeof atob !== 'undefined') {\n const bstr = atob(str);\n const buf = new Uint8Array(bstr.length);\n for (let i = 0; i < bstr.length; i++) {\n buf[i] = bstr.charCodeAt(i);\n }\n return buf;\n }\n throw new OpenAIError('Cannot decode base64 string; Expected `Buffer` or `atob` to be defined');\n};\n/**\n * Converts a Base64 encoded string to a Float32Array.\n * @param base64Str - The Base64 encoded string.\n * @returns An Array of numbers interpreted as Float32 values.\n */\nexport const toFloat32Array = (base64Str) => {\n if (typeof Buffer !== 'undefined') {\n // for Node.js environment\n const buf = Buffer.from(base64Str, 'base64');\n return Array.from(new Float32Array(buf.buffer, buf.byteOffset, buf.length / Float32Array.BYTES_PER_ELEMENT));\n }\n else {\n // for legacy web platform APIs\n const binaryStr = atob(base64Str);\n const len = binaryStr.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryStr.charCodeAt(i);\n }\n return Array.from(new Float32Array(bytes.buffer));\n }\n};\n//# sourceMappingURL=base64.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env) => {\n if (typeof globalThis.process !== 'undefined') {\n return globalThis.process.env?.[env]?.trim() || undefined;\n }\n if (typeof globalThis.Deno !== 'undefined') {\n return globalThis.Deno.env?.get?.(env)?.trim() || undefined;\n }\n return undefined;\n};\n//# sourceMappingURL=env.mjs.map","var _AssistantStream_instances, _a, _AssistantStream_events, _AssistantStream_runStepSnapshots, _AssistantStream_messageSnapshots, _AssistantStream_messageSnapshot, _AssistantStream_finalRun, _AssistantStream_currentContentIndex, _AssistantStream_currentContent, _AssistantStream_currentToolCallIndex, _AssistantStream_currentToolCall, _AssistantStream_currentEvent, _AssistantStream_currentRunSnapshot, _AssistantStream_currentRunStepSnapshot, _AssistantStream_addEvent, _AssistantStream_endRequest, _AssistantStream_handleMessage, _AssistantStream_handleRunStep, _AssistantStream_handleEvent, _AssistantStream_accumulateRunStep, _AssistantStream_accumulateMessage, _AssistantStream_accumulateContent, _AssistantStream_handleRun;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nimport { isObj } from \"../internal/utils.mjs\";\nexport class AssistantStream extends EventStream {\n constructor() {\n super(...arguments);\n _AssistantStream_instances.add(this);\n //Track all events in a single list for reference\n _AssistantStream_events.set(this, []);\n //Used to accumulate deltas\n //We are accumulating many types so the value here is not strict\n _AssistantStream_runStepSnapshots.set(this, {});\n _AssistantStream_messageSnapshots.set(this, {});\n _AssistantStream_messageSnapshot.set(this, void 0);\n _AssistantStream_finalRun.set(this, void 0);\n _AssistantStream_currentContentIndex.set(this, void 0);\n _AssistantStream_currentContent.set(this, void 0);\n _AssistantStream_currentToolCallIndex.set(this, void 0);\n _AssistantStream_currentToolCall.set(this, void 0);\n //For current snapshot methods\n _AssistantStream_currentEvent.set(this, void 0);\n _AssistantStream_currentRunSnapshot.set(this, void 0);\n _AssistantStream_currentRunStepSnapshot.set(this, void 0);\n }\n [(_AssistantStream_events = new WeakMap(), _AssistantStream_runStepSnapshots = new WeakMap(), _AssistantStream_messageSnapshots = new WeakMap(), _AssistantStream_messageSnapshot = new WeakMap(), _AssistantStream_finalRun = new WeakMap(), _AssistantStream_currentContentIndex = new WeakMap(), _AssistantStream_currentContent = new WeakMap(), _AssistantStream_currentToolCallIndex = new WeakMap(), _AssistantStream_currentToolCall = new WeakMap(), _AssistantStream_currentEvent = new WeakMap(), _AssistantStream_currentRunSnapshot = new WeakMap(), _AssistantStream_currentRunStepSnapshot = new WeakMap(), _AssistantStream_instances = new WeakSet(), Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n //Catch all for passing along all events\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n static fromReadableStream(stream) {\n const runner = new _a();\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n this._connected();\n const stream = Stream.fromReadableStream(readableStream, this.controller);\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n toReadableStream() {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n static createToolAssistantStream(runId, runs, params, options) {\n const runner = new _a();\n runner._run(() => runner._runToolAssistantStream(runId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createToolAssistantStream(run, runId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.submitToolOutputs(runId, body, {\n ...options,\n signal: this.controller.signal,\n });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static createThreadAssistantStream(params, thread, options) {\n const runner = new _a();\n runner._run(() => runner._threadAssistantStream(params, thread, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n static createAssistantStream(threadId, runs, params, options) {\n const runner = new _a();\n runner._run(() => runner._runAssistantStream(threadId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n currentEvent() {\n return __classPrivateFieldGet(this, _AssistantStream_currentEvent, \"f\");\n }\n currentRun() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunSnapshot, \"f\");\n }\n currentMessageSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\");\n }\n currentRunStepSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunStepSnapshot, \"f\");\n }\n async finalRunSteps() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\"));\n }\n async finalMessages() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\"));\n }\n async finalRun() {\n await this.done();\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run was not received.');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n }\n async _createThreadAssistantStream(thread, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await thread.createAndRun(body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n async _createAssistantStream(run, threadId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.create(threadId, body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static accumulateDelta(acc, delta) {\n for (const [key, deltaValue] of Object.entries(delta)) {\n if (!acc.hasOwnProperty(key)) {\n acc[key] = deltaValue;\n continue;\n }\n let accValue = acc[key];\n if (accValue === null || accValue === undefined) {\n acc[key] = deltaValue;\n continue;\n }\n // We don't accumulate these special properties\n if (key === 'index' || key === 'type') {\n acc[key] = deltaValue;\n continue;\n }\n // Type-specific accumulation logic\n if (typeof accValue === 'string' && typeof deltaValue === 'string') {\n accValue += deltaValue;\n }\n else if (typeof accValue === 'number' && typeof deltaValue === 'number') {\n accValue += deltaValue;\n }\n else if (isObj(accValue) && isObj(deltaValue)) {\n accValue = this.accumulateDelta(accValue, deltaValue);\n }\n else if (Array.isArray(accValue) && Array.isArray(deltaValue)) {\n if (accValue.every((x) => typeof x === 'string' || typeof x === 'number')) {\n accValue.push(...deltaValue); // Use spread syntax for efficient addition\n continue;\n }\n for (const deltaEntry of deltaValue) {\n if (!isObj(deltaEntry)) {\n throw new Error(`Expected array delta entry to be an object but got: ${deltaEntry}`);\n }\n const index = deltaEntry['index'];\n if (index == null) {\n console.error(deltaEntry);\n throw new Error('Expected array delta entry to have an `index` property');\n }\n if (typeof index !== 'number') {\n throw new Error(`Expected array delta entry \\`index\\` property to be a number but got ${index}`);\n }\n const accEntry = accValue[index];\n if (accEntry == null) {\n accValue.push(deltaEntry);\n }\n else {\n accValue[index] = this.accumulateDelta(accEntry, deltaEntry);\n }\n }\n continue;\n }\n else {\n throw Error(`Unhandled record type: ${key}, deltaValue: ${deltaValue}, accValue: ${accValue}`);\n }\n acc[key] = accValue;\n }\n return acc;\n }\n _addRun(run) {\n return run;\n }\n async _threadAssistantStream(params, thread, options) {\n return await this._createThreadAssistantStream(thread, params, options);\n }\n async _runAssistantStream(threadId, runs, params, options) {\n return await this._createAssistantStream(runs, threadId, params, options);\n }\n async _runToolAssistantStream(runId, runs, params, options) {\n return await this._createToolAssistantStream(runs, runId, params, options);\n }\n}\n_a = AssistantStream, _AssistantStream_addEvent = function _AssistantStream_addEvent(event) {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _AssistantStream_currentEvent, event, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleEvent).call(this, event);\n switch (event.event) {\n case 'thread.created':\n //No action on this event.\n break;\n case 'thread.run.created':\n case 'thread.run.queued':\n case 'thread.run.in_progress':\n case 'thread.run.requires_action':\n case 'thread.run.completed':\n case 'thread.run.incomplete':\n case 'thread.run.failed':\n case 'thread.run.cancelling':\n case 'thread.run.cancelled':\n case 'thread.run.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRun).call(this, event);\n break;\n case 'thread.run.step.created':\n case 'thread.run.step.in_progress':\n case 'thread.run.step.delta':\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRunStep).call(this, event);\n break;\n case 'thread.message.created':\n case 'thread.message.in_progress':\n case 'thread.message.delta':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleMessage).call(this, event);\n break;\n case 'error':\n //This is included for completeness, but errors are processed in the SSE event processing so this should not occur\n throw new Error('Encountered an error event in event processing - errors should be processed earlier');\n default:\n assertNever(event);\n }\n}, _AssistantStream_endRequest = function _AssistantStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run has not been received');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n}, _AssistantStream_handleMessage = function _AssistantStream_handleMessage(event) {\n const [accumulatedMessage, newContent] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateMessage).call(this, event, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, accumulatedMessage, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\")[accumulatedMessage.id] = accumulatedMessage;\n for (const content of newContent) {\n const snapshotContent = accumulatedMessage.content[content.index];\n if (snapshotContent?.type == 'text') {\n this._emit('textCreated', snapshotContent.text);\n }\n }\n switch (event.event) {\n case 'thread.message.created':\n this._emit('messageCreated', event.data);\n break;\n case 'thread.message.in_progress':\n break;\n case 'thread.message.delta':\n this._emit('messageDelta', event.data.delta, accumulatedMessage);\n if (event.data.delta.content) {\n for (const content of event.data.delta.content) {\n //If it is text delta, emit a text delta event\n if (content.type == 'text' && content.text) {\n let textDelta = content.text;\n let snapshot = accumulatedMessage.content[content.index];\n if (snapshot && snapshot.type == 'text') {\n this._emit('textDelta', textDelta, snapshot.text);\n }\n else {\n throw Error('The snapshot associated with this text delta is not text or missing');\n }\n }\n if (content.index != __classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")) {\n //See if we have in progress content\n if (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\")) {\n switch (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").type) {\n case 'text':\n this._emit('textDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'image_file':\n this._emit('imageFileDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContentIndex, content.index, \"f\");\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContent, accumulatedMessage.content[content.index], \"f\");\n }\n }\n break;\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //We emit the latest content we were working on on completion (including incomplete)\n if (__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\") !== undefined) {\n const currentContent = event.data.content[__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")];\n if (currentContent) {\n switch (currentContent.type) {\n case 'image_file':\n this._emit('imageFileDone', currentContent.image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'text':\n this._emit('textDone', currentContent.text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n }\n if (__classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\")) {\n this._emit('messageDone', event.data);\n }\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, undefined, \"f\");\n }\n}, _AssistantStream_handleRunStep = function _AssistantStream_handleRunStep(event) {\n const accumulatedRunStep = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateRunStep).call(this, event);\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, accumulatedRunStep, \"f\");\n switch (event.event) {\n case 'thread.run.step.created':\n this._emit('runStepCreated', event.data);\n break;\n case 'thread.run.step.delta':\n const delta = event.data.delta;\n if (delta.step_details &&\n delta.step_details.type == 'tool_calls' &&\n delta.step_details.tool_calls &&\n accumulatedRunStep.step_details.type == 'tool_calls') {\n for (const toolCall of delta.step_details.tool_calls) {\n if (toolCall.index == __classPrivateFieldGet(this, _AssistantStream_currentToolCallIndex, \"f\")) {\n this._emit('toolCallDelta', toolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index]);\n }\n else {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n __classPrivateFieldSet(this, _AssistantStream_currentToolCallIndex, toolCall.index, \"f\");\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index], \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"))\n this._emit('toolCallCreated', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n }\n }\n this._emit('runStepDelta', event.data.delta, accumulatedRunStep);\n break;\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, undefined, \"f\");\n const details = event.data.step_details;\n if (details.type == 'tool_calls') {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n }\n this._emit('runStepDone', event.data, accumulatedRunStep);\n break;\n case 'thread.run.step.in_progress':\n break;\n }\n}, _AssistantStream_handleEvent = function _AssistantStream_handleEvent(event) {\n __classPrivateFieldGet(this, _AssistantStream_events, \"f\").push(event);\n this._emit('event', event);\n}, _AssistantStream_accumulateRunStep = function _AssistantStream_accumulateRunStep(event) {\n switch (event.event) {\n case 'thread.run.step.created':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n return event.data;\n case 'thread.run.step.delta':\n let snapshot = __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n if (!snapshot) {\n throw Error('Received a RunStepDelta before creation of a snapshot');\n }\n let data = event.data;\n if (data.delta) {\n const accumulated = _a.accumulateDelta(snapshot, data.delta);\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = accumulated;\n }\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n case 'thread.run.step.in_progress':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n break;\n }\n if (__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id])\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n throw new Error('No snapshot available');\n}, _AssistantStream_accumulateMessage = function _AssistantStream_accumulateMessage(event, snapshot) {\n let newContent = [];\n switch (event.event) {\n case 'thread.message.created':\n //On creation the snapshot is just the initial message\n return [event.data, newContent];\n case 'thread.message.delta':\n if (!snapshot) {\n throw Error('Received a delta with no existing snapshot (there should be one from message creation)');\n }\n let data = event.data;\n //If this delta does not have content, nothing to process\n if (data.delta.content) {\n for (const contentElement of data.delta.content) {\n if (contentElement.index in snapshot.content) {\n let currentContent = snapshot.content[contentElement.index];\n snapshot.content[contentElement.index] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateContent).call(this, contentElement, currentContent);\n }\n else {\n snapshot.content[contentElement.index] = contentElement;\n // This is a new element\n newContent.push(contentElement);\n }\n }\n }\n return [snapshot, newContent];\n case 'thread.message.in_progress':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //No changes on other thread events\n if (snapshot) {\n return [snapshot, newContent];\n }\n else {\n throw Error('Received thread message event with no existing snapshot');\n }\n }\n throw Error('Tried to accumulate a non-message event');\n}, _AssistantStream_accumulateContent = function _AssistantStream_accumulateContent(contentElement, currentContent) {\n return _a.accumulateDelta(currentContent, contentElement);\n}, _AssistantStream_handleRun = function _AssistantStream_handleRun(event) {\n __classPrivateFieldSet(this, _AssistantStream_currentRunSnapshot, event.data, \"f\");\n switch (event.event) {\n case 'thread.run.created':\n break;\n case 'thread.run.queued':\n break;\n case 'thread.run.in_progress':\n break;\n case 'thread.run.requires_action':\n case 'thread.run.cancelled':\n case 'thread.run.failed':\n case 'thread.run.completed':\n case 'thread.run.expired':\n case 'thread.run.incomplete':\n __classPrivateFieldSet(this, _AssistantStream_finalRun, event.data, \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n break;\n case 'thread.run.cancelling':\n break;\n }\n};\nfunction assertNever(_x) { }\n//# sourceMappingURL=AssistantStream.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport * as StepsAPI from \"./steps.mjs\";\nimport { Steps, } from \"./steps.mjs\";\nimport { CursorPage } from \"../../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../../internal/headers.mjs\";\nimport { AssistantStream } from \"../../../../lib/AssistantStream.mjs\";\nimport { sleep } from \"../../../../internal/utils/sleep.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Runs extends APIResource {\n constructor() {\n super(...arguments);\n this.steps = new StepsAPI.Steps(this._client);\n }\n create(threadID, params, options) {\n const { include, ...body } = params;\n return this._client.post(path `/threads/${threadID}/runs`, {\n query: { include },\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n stream: params.stream ?? false,\n __synthesizeEventData: true,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Retrieves a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(runID, params, options) {\n const { thread_id } = params;\n return this._client.get(path `/threads/${thread_id}/runs/${runID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Modifies a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(runID, params, options) {\n const { thread_id, ...body } = params;\n return this._client.post(path `/threads/${thread_id}/runs/${runID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Returns a list of runs belonging to a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n list(threadID, query = {}, options) {\n return this._client.getAPIList(path `/threads/${threadID}/runs`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Cancels a run that is `in_progress`.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n cancel(runID, params, options) {\n const { thread_id } = params;\n return this._client.post(path `/threads/${thread_id}/runs/${runID}/cancel`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * A helper to create a run an poll for a terminal state. More information on Run\n * lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndPoll(threadId, body, options) {\n const run = await this.create(threadId, body, options);\n return await this.poll(run.id, { thread_id: threadId }, options);\n }\n /**\n * Create a Run stream\n *\n * @deprecated use `stream` instead\n */\n createAndStream(threadId, body, options) {\n return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n /**\n * A helper to poll a run status until it reaches a terminal state. More\n * information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async poll(runId, params, options) {\n const headers = buildHeaders([\n options?.headers,\n {\n 'X-Stainless-Poll-Helper': 'true',\n 'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n },\n ]);\n while (true) {\n const { data: run, response } = await this.retrieve(runId, params, {\n ...options,\n headers: { ...options?.headers, ...headers },\n }).withResponse();\n switch (run.status) {\n //If we are in any sort of intermediate state we poll\n case 'queued':\n case 'in_progress':\n case 'cancelling':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n //We return the run in any terminal state.\n case 'requires_action':\n case 'incomplete':\n case 'cancelled':\n case 'completed':\n case 'failed':\n case 'expired':\n return run;\n }\n }\n }\n /**\n * Create a Run stream\n */\n stream(threadId, body, options) {\n return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n submitToolOutputs(runID, params, options) {\n const { thread_id, ...body } = params;\n return this._client.post(path `/threads/${thread_id}/runs/${runID}/submit_tool_outputs`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n stream: params.stream ?? false,\n __synthesizeEventData: true,\n __security: { bearerAuth: true },\n });\n }\n /**\n * A helper to submit a tool output to a run and poll for a terminal run state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async submitToolOutputsAndPoll(runId, params, options) {\n const run = await this.submitToolOutputs(runId, params, options);\n return await this.poll(run.id, params, options);\n }\n /**\n * Submit the tool outputs from a previous run and stream the run to a terminal\n * state. More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n submitToolOutputsStream(runId, params, options) {\n return AssistantStream.createToolAssistantStream(runId, this._client.beta.threads.runs, params, options);\n }\n}\nRuns.Steps = Steps;\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages, } from \"./messages.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { Runs, } from \"./runs/runs.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { AssistantStream } from \"../../../lib/AssistantStream.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Build Assistants that can call models and use tools.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Threads extends APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n /**\n * Create a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n create(body = {}, options) {\n return this._client.post('/threads', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Retrieves a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(threadID, options) {\n return this._client.get(path `/threads/${threadID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Modifies a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(threadID, body, options) {\n return this._client.post(path `/threads/${threadID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n delete(threadID, options) {\n return this._client.delete(path `/threads/${threadID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n createAndRun(body, options) {\n return this._client.post('/threads/runs', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n stream: body.stream ?? false,\n __synthesizeEventData: true,\n __security: { bearerAuth: true },\n });\n }\n /**\n * A helper to create a thread, start a run and then poll for a terminal state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndRunPoll(body, options) {\n const run = await this.createAndRun(body, options);\n return await this.runs.poll(run.id, { thread_id: run.thread_id }, options);\n }\n /**\n * Create a thread and stream the run back\n */\n createAndRunStream(body, options) {\n return AssistantStream.createThreadAssistantStream(body, this._client.beta.threads, options);\n }\n}\nThreads.Runs = Runs;\nThreads.Messages = Messages;\n//# sourceMappingURL=threads.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as AssistantsAPI from \"./assistants.mjs\";\nimport { Assistants, } from \"./assistants.mjs\";\nimport * as RealtimeAPI from \"./realtime/realtime.mjs\";\nimport { Realtime, } from \"./realtime/realtime.mjs\";\nimport * as ChatKitAPI from \"./chatkit/chatkit.mjs\";\nimport { ChatKit } from \"./chatkit/chatkit.mjs\";\nimport * as ThreadsAPI from \"./threads/threads.mjs\";\nimport { Threads, } from \"./threads/threads.mjs\";\nexport class Beta extends APIResource {\n constructor() {\n super(...arguments);\n this.realtime = new RealtimeAPI.Realtime(this._client);\n this.chatkit = new ChatKitAPI.ChatKit(this._client);\n this.assistants = new AssistantsAPI.Assistants(this._client);\n this.threads = new ThreadsAPI.Threads(this._client);\n }\n}\nBeta.Realtime = Realtime;\nBeta.ChatKit = ChatKit;\nBeta.Assistants = Assistants;\nBeta.Threads = Threads;\n//# sourceMappingURL=beta.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\n/**\n * Given a prompt, the model will return one or more predicted completions, and can also return the probabilities of alternative tokens at each position.\n */\nexport class Completions extends APIResource {\n create(body, options) {\n return this._client.post('/completions', {\n body,\n ...options,\n stream: body.stream ?? false,\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Content extends APIResource {\n /**\n * Retrieve Container File Content\n */\n retrieve(fileID, params, options) {\n const { container_id } = params;\n return this._client.get(path `/containers/${container_id}/files/${fileID}/content`, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __security: { bearerAuth: true },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=content.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { maybeMultipartFormRequestOptions } from \"../../../internal/uploads.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Files extends APIResource {\n constructor() {\n super(...arguments);\n this.content = new ContentAPI.Content(this._client);\n }\n /**\n * Create a Container File\n *\n * You can send either a multipart/form-data request with the raw file content, or\n * a JSON request with a file ID.\n */\n create(containerID, body, options) {\n return this._client.post(path `/containers/${containerID}/files`, maybeMultipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n /**\n * Retrieve Container File\n */\n retrieve(fileID, params, options) {\n const { container_id } = params;\n return this._client.get(path `/containers/${container_id}/files/${fileID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * List Container files\n */\n list(containerID, query = {}, options) {\n return this._client.getAPIList(path `/containers/${containerID}/files`, (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete Container File\n */\n delete(fileID, params, options) {\n const { container_id } = params;\n return this._client.delete(path `/containers/${container_id}/files/${fileID}`, {\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\nFiles.Content = Content;\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as FilesAPI from \"./files/files.mjs\";\nimport { Files, } from \"./files/files.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Containers extends APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n }\n /**\n * Create Container\n */\n create(body, options) {\n return this._client.post('/containers', { body, ...options, __security: { bearerAuth: true } });\n }\n /**\n * Retrieve Container\n */\n retrieve(containerID, options) {\n return this._client.get(path `/containers/${containerID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * List Containers\n */\n list(query = {}, options) {\n return this._client.getAPIList('/containers', (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete Container\n */\n delete(containerID, options) {\n return this._client.delete(path `/containers/${containerID}`, {\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\nContainers.Files = Files;\n//# sourceMappingURL=containers.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Manage conversations and conversation items.\n */\nexport class Items extends APIResource {\n /**\n * Create items in a conversation with the given ID.\n */\n create(conversationID, params, options) {\n const { include, ...body } = params;\n return this._client.post(path `/conversations/${conversationID}/items`, {\n query: { include },\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Get a single item from a conversation with the given IDs.\n */\n retrieve(itemID, params, options) {\n const { conversation_id, ...query } = params;\n return this._client.get(path `/conversations/${conversation_id}/items/${itemID}`, {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * List all items for a conversation with the given ID.\n */\n list(conversationID, query = {}, options) {\n return this._client.getAPIList(path `/conversations/${conversationID}/items`, (ConversationCursorPage), { query, ...options, __security: { bearerAuth: true } });\n }\n /**\n * Delete an item from a conversation with the given IDs.\n */\n delete(itemID, params, options) {\n const { conversation_id } = params;\n return this._client.delete(path `/conversations/${conversation_id}/items/${itemID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as ItemsAPI from \"./items.mjs\";\nimport { Items, } from \"./items.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Manage conversations and conversation items.\n */\nexport class Conversations extends APIResource {\n constructor() {\n super(...arguments);\n this.items = new ItemsAPI.Items(this._client);\n }\n /**\n * Create a conversation.\n */\n create(body = {}, options) {\n return this._client.post('/conversations', { body, ...options, __security: { bearerAuth: true } });\n }\n /**\n * Get a conversation\n */\n retrieve(conversationID, options) {\n return this._client.get(path `/conversations/${conversationID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Update a conversation\n */\n update(conversationID, body, options) {\n return this._client.post(path `/conversations/${conversationID}`, {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a conversation. Items in the conversation will not be deleted.\n */\n delete(conversationID, options) {\n return this._client.delete(path `/conversations/${conversationID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\nConversations.Items = Items;\n//# sourceMappingURL=conversations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { loggerFor, toFloat32Array } from \"../internal/utils.mjs\";\n/**\n * Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.\n */\nexport class Embeddings extends APIResource {\n /**\n * Creates an embedding vector representing the input text.\n *\n * @example\n * ```ts\n * const createEmbeddingResponse =\n * await client.embeddings.create({\n * input: 'The quick brown fox jumped over the lazy dog',\n * model: 'text-embedding-3-small',\n * });\n * ```\n */\n create(body, options) {\n const hasUserProvidedEncodingFormat = !!body.encoding_format;\n // No encoding_format specified, defaulting to base64 for performance reasons\n // See https://github.com/openai/openai-node/pull/1312\n let encoding_format = hasUserProvidedEncodingFormat ? body.encoding_format : 'base64';\n if (hasUserProvidedEncodingFormat) {\n loggerFor(this._client).debug('embeddings/user defined encoding_format:', body.encoding_format);\n }\n const response = this._client.post('/embeddings', {\n body: {\n ...body,\n encoding_format: encoding_format,\n },\n ...options,\n __security: { bearerAuth: true },\n });\n // if the user specified an encoding_format, return the response as-is\n if (hasUserProvidedEncodingFormat) {\n return response;\n }\n // in this stage, we are sure the user did not specify an encoding_format\n // and we defaulted to base64 for performance reasons\n // we are sure then that the response is base64 encoded, let's decode it\n // the returned result will be a float32 array since this is OpenAI API's default encoding\n loggerFor(this._client).debug('embeddings/decoding base64 embeddings from base64');\n return response._thenUnwrap((response) => {\n if (response && response.data) {\n response.data.forEach((embeddingBase64Obj) => {\n const embeddingBase64Str = embeddingBase64Obj.embedding;\n embeddingBase64Obj.embedding = toFloat32Array(embeddingBase64Str);\n });\n }\n return response;\n });\n }\n}\n//# sourceMappingURL=embeddings.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage and run evals in the OpenAI platform.\n */\nexport class OutputItems extends APIResource {\n /**\n * Get an evaluation run output item by ID.\n */\n retrieve(outputItemID, params, options) {\n const { eval_id, run_id } = params;\n return this._client.get(path `/evals/${eval_id}/runs/${run_id}/output_items/${outputItemID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Get a list of output items for an evaluation run.\n */\n list(runID, params, options) {\n const { eval_id, ...query } = params;\n return this._client.getAPIList(path `/evals/${eval_id}/runs/${runID}/output_items`, (CursorPage), { query, ...options, __security: { bearerAuth: true } });\n }\n}\n//# sourceMappingURL=output-items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as OutputItemsAPI from \"./output-items.mjs\";\nimport { OutputItems, } from \"./output-items.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage and run evals in the OpenAI platform.\n */\nexport class Runs extends APIResource {\n constructor() {\n super(...arguments);\n this.outputItems = new OutputItemsAPI.OutputItems(this._client);\n }\n /**\n * Kicks off a new run for a given evaluation, specifying the data source, and what\n * model configuration to use to test. The datasource will be validated against the\n * schema specified in the config of the evaluation.\n */\n create(evalID, body, options) {\n return this._client.post(path `/evals/${evalID}/runs`, {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Get an evaluation run by ID.\n */\n retrieve(runID, params, options) {\n const { eval_id } = params;\n return this._client.get(path `/evals/${eval_id}/runs/${runID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Get a list of runs for an evaluation.\n */\n list(evalID, query = {}, options) {\n return this._client.getAPIList(path `/evals/${evalID}/runs`, (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete an eval run.\n */\n delete(runID, params, options) {\n const { eval_id } = params;\n return this._client.delete(path `/evals/${eval_id}/runs/${runID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Cancel an ongoing evaluation run.\n */\n cancel(runID, params, options) {\n const { eval_id } = params;\n return this._client.post(path `/evals/${eval_id}/runs/${runID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\nRuns.OutputItems = OutputItems;\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { Runs, } from \"./runs/runs.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Manage and run evals in the OpenAI platform.\n */\nexport class Evals extends APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n }\n /**\n * Create the structure of an evaluation that can be used to test a model's\n * performance. An evaluation is a set of testing criteria and the config for a\n * data source, which dictates the schema of the data used in the evaluation. After\n * creating an evaluation, you can run it on different models and model parameters.\n * We support several types of graders and datasources. For more information, see\n * the [Evals guide](https://platform.openai.com/docs/guides/evals).\n */\n create(body, options) {\n return this._client.post('/evals', { body, ...options, __security: { bearerAuth: true } });\n }\n /**\n * Get an evaluation by ID.\n */\n retrieve(evalID, options) {\n return this._client.get(path `/evals/${evalID}`, { ...options, __security: { bearerAuth: true } });\n }\n /**\n * Update certain properties of an evaluation.\n */\n update(evalID, body, options) {\n return this._client.post(path `/evals/${evalID}`, { body, ...options, __security: { bearerAuth: true } });\n }\n /**\n * List evaluations for a project.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/evals', (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete an evaluation.\n */\n delete(evalID, options) {\n return this._client.delete(path `/evals/${evalID}`, { ...options, __security: { bearerAuth: true } });\n }\n}\nEvals.Runs = Runs;\n//# sourceMappingURL=evals.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { CursorPage } from \"../core/pagination.mjs\";\nimport { buildHeaders } from \"../internal/headers.mjs\";\nimport { sleep } from \"../internal/utils/sleep.mjs\";\nimport { APIConnectionTimeoutError } from \"../error.mjs\";\nimport { multipartFormRequestOptions } from \"../internal/uploads.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\n/**\n * Files are used to upload documents that can be used with features like Assistants and Fine-tuning.\n */\nexport class Files extends APIResource {\n /**\n * Upload a file that can be used across various endpoints. Individual files can be\n * up to 512 MB, and each project can store up to 2.5 TB of files in total. There\n * is no organization-wide storage limit. Uploads to this endpoint are rate-limited\n * to 1,000 requests per minute per authenticated user.\n *\n * - The Assistants API supports files up to 2 million tokens and of specific file\n * types. See the\n * [Assistants Tools guide](https://platform.openai.com/docs/assistants/tools)\n * for details.\n * - The Fine-tuning API only supports `.jsonl` files. The input also has certain\n * required formats for fine-tuning\n * [chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input)\n * or\n * [completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)\n * models.\n * - The Batch API only supports `.jsonl` files up to 200 MB in size. The input\n * also has a specific required\n * [format](https://platform.openai.com/docs/api-reference/batch/request-input).\n * - For Retrieval or `file_search` ingestion, upload files here first. If you need\n * to attach multiple uploaded files to the same vector store, use\n * [`/vector_stores/{vector_store_id}/file_batches`](https://platform.openai.com/docs/api-reference/vector-stores-file-batches/createBatch)\n * instead of attaching them one by one. Vector store attachment has separate\n * limits from file upload, including 2,000 attached files per minute per\n * organization.\n *\n * Please [contact us](https://help.openai.com/) if you need to increase these\n * storage limits.\n */\n create(body, options) {\n return this._client.post('/files', multipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n /**\n * Returns information about a specific file.\n */\n retrieve(fileID, options) {\n return this._client.get(path `/files/${fileID}`, { ...options, __security: { bearerAuth: true } });\n }\n /**\n * Returns a list of files.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/files', (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a file and remove it from all vector stores.\n */\n delete(fileID, options) {\n return this._client.delete(path `/files/${fileID}`, { ...options, __security: { bearerAuth: true } });\n }\n /**\n * Returns the contents of the specified file.\n */\n content(fileID, options) {\n return this._client.get(path `/files/${fileID}/content`, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __security: { bearerAuth: true },\n __binaryResponse: true,\n });\n }\n /**\n * Waits for the given file to be processed, default timeout is 30 mins.\n */\n async waitForProcessing(id, { pollInterval = 5000, maxWait = 30 * 60 * 1000 } = {}) {\n const TERMINAL_STATES = new Set(['processed', 'error', 'deleted']);\n const start = Date.now();\n let file = await this.retrieve(id);\n while (!file.status || !TERMINAL_STATES.has(file.status)) {\n await sleep(pollInterval);\n file = await this.retrieve(id);\n if (Date.now() - start > maxWait) {\n throw new APIConnectionTimeoutError({\n message: `Giving up on waiting for file ${id} to finish processing after ${maxWait} milliseconds.`,\n });\n }\n }\n return file;\n }\n}\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class Methods extends APIResource {\n}\n//# sourceMappingURL=methods.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\n/**\n * Manage fine-tuning jobs to tailor a model to your specific training data.\n */\nexport class Graders extends APIResource {\n /**\n * Run a grader.\n *\n * @example\n * ```ts\n * const response = await client.fineTuning.alpha.graders.run({\n * grader: {\n * input: 'input',\n * name: 'name',\n * operation: 'eq',\n * reference: 'reference',\n * type: 'string_check',\n * },\n * model_sample: 'model_sample',\n * });\n * ```\n */\n run(body, options) {\n return this._client.post('/fine_tuning/alpha/graders/run', {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Validate a grader.\n *\n * @example\n * ```ts\n * const response =\n * await client.fineTuning.alpha.graders.validate({\n * grader: {\n * input: 'input',\n * name: 'name',\n * operation: 'eq',\n * reference: 'reference',\n * type: 'string_check',\n * },\n * });\n * ```\n */\n validate(body, options) {\n return this._client.post('/fine_tuning/alpha/graders/validate', {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=graders.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as GradersAPI from \"./graders.mjs\";\nimport { Graders, } from \"./graders.mjs\";\nexport class Alpha extends APIResource {\n constructor() {\n super(...arguments);\n this.graders = new GradersAPI.Graders(this._client);\n }\n}\nAlpha.Graders = Graders;\n//# sourceMappingURL=alpha.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { ConversationCursorPage, Page, } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage fine-tuning jobs to tailor a model to your specific training data.\n */\nexport class Permissions extends APIResource {\n /**\n * **NOTE:** Calling this endpoint requires an [admin API key](../admin-api-keys).\n *\n * This enables organization owners to share fine-tuned models with other projects\n * in their organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const permissionCreateResponse of client.fineTuning.checkpoints.permissions.create(\n * 'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n * { project_ids: ['string'] },\n * )) {\n * // ...\n * }\n * ```\n */\n create(fineTunedModelCheckpoint, body, options) {\n return this._client.getAPIList(path `/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, (Page), { body, method: 'post', ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n *\n * Organization owners can use this endpoint to view all permissions for a\n * fine-tuned model checkpoint.\n *\n * @deprecated Retrieve is deprecated. Please swap to the paginated list method instead.\n */\n retrieve(fineTunedModelCheckpoint, query = {}, options) {\n return this._client.get(path `/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, {\n query,\n ...options,\n __security: { adminAPIKeyAuth: true },\n });\n }\n /**\n * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n *\n * Organization owners can use this endpoint to view all permissions for a\n * fine-tuned model checkpoint.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const permissionListResponse of client.fineTuning.checkpoints.permissions.list(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * )) {\n * // ...\n * }\n * ```\n */\n list(fineTunedModelCheckpoint, query = {}, options) {\n return this._client.getAPIList(path `/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, (ConversationCursorPage), { query, ...options, __security: { adminAPIKeyAuth: true } });\n }\n /**\n * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n *\n * Organization owners can use this endpoint to delete a permission for a\n * fine-tuned model checkpoint.\n *\n * @example\n * ```ts\n * const permission =\n * await client.fineTuning.checkpoints.permissions.delete(\n * 'cp_zc4Q7MP6XxulcVzj4MZdwsAB',\n * {\n * fine_tuned_model_checkpoint:\n * 'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n * },\n * );\n * ```\n */\n delete(permissionID, params, options) {\n const { fine_tuned_model_checkpoint } = params;\n return this._client.delete(path `/fine_tuning/checkpoints/${fine_tuned_model_checkpoint}/permissions/${permissionID}`, { ...options, __security: { adminAPIKeyAuth: true } });\n }\n}\n//# sourceMappingURL=permissions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as PermissionsAPI from \"./permissions.mjs\";\nimport { Permissions, } from \"./permissions.mjs\";\nexport class Checkpoints extends APIResource {\n constructor() {\n super(...arguments);\n this.permissions = new PermissionsAPI.Permissions(this._client);\n }\n}\nCheckpoints.Permissions = Permissions;\n//# sourceMappingURL=checkpoints.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage fine-tuning jobs to tailor a model to your specific training data.\n */\nexport class Checkpoints extends APIResource {\n /**\n * List checkpoints for a fine-tuning job.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const fineTuningJobCheckpoint of client.fineTuning.jobs.checkpoints.list(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * )) {\n * // ...\n * }\n * ```\n */\n list(fineTuningJobID, query = {}, options) {\n return this._client.getAPIList(path `/fine_tuning/jobs/${fineTuningJobID}/checkpoints`, (CursorPage), { query, ...options, __security: { bearerAuth: true } });\n }\n}\n//# sourceMappingURL=checkpoints.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints.mjs\";\nimport { Checkpoints, } from \"./checkpoints.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * Manage fine-tuning jobs to tailor a model to your specific training data.\n */\nexport class Jobs extends APIResource {\n constructor() {\n super(...arguments);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n }\n /**\n * Creates a fine-tuning job which begins the process of creating a new model from\n * a given dataset.\n *\n * Response includes details of the enqueued job including job status and the name\n * of the fine-tuned models once complete.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/model-optimization)\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.create({\n * model: 'gpt-4o-mini',\n * training_file: 'file-abc123',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/fine_tuning/jobs', { body, ...options, __security: { bearerAuth: true } });\n }\n /**\n * Get info about a fine-tuning job.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/model-optimization)\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.retrieve(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n retrieve(fineTuningJobID, options) {\n return this._client.get(path `/fine_tuning/jobs/${fineTuningJobID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * List your organization's fine-tuning jobs\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const fineTuningJob of client.fineTuning.jobs.list()) {\n * // ...\n * }\n * ```\n */\n list(query = {}, options) {\n return this._client.getAPIList('/fine_tuning/jobs', (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Immediately cancel a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.cancel(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n cancel(fineTuningJobID, options) {\n return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/cancel`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Get status updates for a fine-tuning job.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const fineTuningJobEvent of client.fineTuning.jobs.listEvents(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * )) {\n * // ...\n * }\n * ```\n */\n listEvents(fineTuningJobID, query = {}, options) {\n return this._client.getAPIList(path `/fine_tuning/jobs/${fineTuningJobID}/events`, (CursorPage), { query, ...options, __security: { bearerAuth: true } });\n }\n /**\n * Pause a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.pause(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n pause(fineTuningJobID, options) {\n return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/pause`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Resume a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.resume(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n resume(fineTuningJobID, options) {\n return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/resume`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\nJobs.Checkpoints = Checkpoints;\n//# sourceMappingURL=jobs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as MethodsAPI from \"./methods.mjs\";\nimport { Methods, } from \"./methods.mjs\";\nimport * as AlphaAPI from \"./alpha/alpha.mjs\";\nimport { Alpha } from \"./alpha/alpha.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints/checkpoints.mjs\";\nimport { Checkpoints } from \"./checkpoints/checkpoints.mjs\";\nimport * as JobsAPI from \"./jobs/jobs.mjs\";\nimport { Jobs, } from \"./jobs/jobs.mjs\";\nexport class FineTuning extends APIResource {\n constructor() {\n super(...arguments);\n this.methods = new MethodsAPI.Methods(this._client);\n this.jobs = new JobsAPI.Jobs(this._client);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n this.alpha = new AlphaAPI.Alpha(this._client);\n }\n}\nFineTuning.Methods = Methods;\nFineTuning.Jobs = Jobs;\nFineTuning.Checkpoints = Checkpoints;\nFineTuning.Alpha = Alpha;\n//# sourceMappingURL=fine-tuning.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class GraderModels extends APIResource {\n}\n//# sourceMappingURL=grader-models.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as GraderModelsAPI from \"./grader-models.mjs\";\nimport { GraderModels, } from \"./grader-models.mjs\";\nexport class Graders extends APIResource {\n constructor() {\n super(...arguments);\n this.graderModels = new GraderModelsAPI.GraderModels(this._client);\n }\n}\nGraders.GraderModels = GraderModels;\n//# sourceMappingURL=graders.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../internal/uploads.mjs\";\n/**\n * Given a prompt and/or an input image, the model will generate a new image.\n */\nexport class Images extends APIResource {\n /**\n * Creates a variation of a given image. This endpoint only supports `dall-e-2`.\n *\n * @example\n * ```ts\n * const imagesResponse = await client.images.createVariation({\n * image: fs.createReadStream('otter.png'),\n * });\n * ```\n */\n createVariation(body, options) {\n return this._client.post('/images/variations', multipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n edit(body, options) {\n return this._client.post('/images/edits', multipartFormRequestOptions({ body, ...options, stream: body.stream ?? false, __security: { bearerAuth: true } }, this._client));\n }\n generate(body, options) {\n return this._client.post('/images/generations', {\n body,\n ...options,\n stream: body.stream ?? false,\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=images.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { Page } from \"../core/pagination.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\n/**\n * List and describe the various models available in the API.\n */\nexport class Models extends APIResource {\n /**\n * Retrieves a model instance, providing basic information about the model such as\n * the owner and permissioning.\n */\n retrieve(model, options) {\n return this._client.get(path `/models/${model}`, { ...options, __security: { bearerAuth: true } });\n }\n /**\n * Lists the currently available models, and provides basic information about each\n * one such as the owner and availability.\n */\n list(options) {\n return this._client.getAPIList('/models', (Page), { ...options, __security: { bearerAuth: true } });\n }\n /**\n * Delete a fine-tuned model. You must have the Owner role in your organization to\n * delete a model.\n */\n delete(model, options) {\n return this._client.delete(path `/models/${model}`, { ...options, __security: { bearerAuth: true } });\n }\n}\n//# sourceMappingURL=models.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\n/**\n * Given text and/or image inputs, classifies if those inputs are potentially harmful.\n */\nexport class Moderations extends APIResource {\n /**\n * Classifies if text and/or image inputs are potentially harmful. Learn more in\n * the [moderation guide](https://platform.openai.com/docs/guides/moderation).\n */\n create(body, options) {\n return this._client.post('/moderations', { body, ...options, __security: { bearerAuth: true } });\n }\n}\n//# sourceMappingURL=moderations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Calls extends APIResource {\n /**\n * Accept an incoming SIP call and configure the realtime session that will handle\n * it.\n *\n * @example\n * ```ts\n * await client.realtime.calls.accept('call_id', {\n * type: 'realtime',\n * });\n * ```\n */\n accept(callID, body, options) {\n return this._client.post(path `/realtime/calls/${callID}/accept`, {\n body,\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * End an active Realtime API call, whether it was initiated over SIP or WebRTC.\n *\n * @example\n * ```ts\n * await client.realtime.calls.hangup('call_id');\n * ```\n */\n hangup(callID, options) {\n return this._client.post(path `/realtime/calls/${callID}/hangup`, {\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Transfer an active SIP call to a new destination using the SIP REFER verb.\n *\n * @example\n * ```ts\n * await client.realtime.calls.refer('call_id', {\n * target_uri: 'tel:+14155550123',\n * });\n * ```\n */\n refer(callID, body, options) {\n return this._client.post(path `/realtime/calls/${callID}/refer`, {\n body,\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Decline an incoming SIP call by returning a SIP status code to the caller.\n *\n * @example\n * ```ts\n * await client.realtime.calls.reject('call_id');\n * ```\n */\n reject(callID, body = {}, options) {\n return this._client.post(path `/realtime/calls/${callID}/reject`, {\n body,\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=calls.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class ClientSecrets extends APIResource {\n /**\n * Create a Realtime client secret with an associated session configuration.\n *\n * Client secrets are short-lived tokens that can be passed to a client app, such\n * as a web frontend or mobile client, which grants access to the Realtime API\n * without leaking your main API key. You can configure a custom TTL for each\n * client secret.\n *\n * You can also attach session configuration options to the client secret, which\n * will be applied to any sessions created using that client secret, but these can\n * also be overridden by the client connection.\n *\n * [Learn more about authentication with client secrets over WebRTC](https://platform.openai.com/docs/guides/realtime-webrtc).\n *\n * Returns the created client secret and the effective session object. The client\n * secret is a string that looks like `ek_1234`.\n *\n * @example\n * ```ts\n * const clientSecret =\n * await client.realtime.clientSecrets.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/client_secrets', {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=client-secrets.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as CallsAPI from \"./calls.mjs\";\nimport { Calls } from \"./calls.mjs\";\nimport * as ClientSecretsAPI from \"./client-secrets.mjs\";\nimport { ClientSecrets, } from \"./client-secrets.mjs\";\nexport class Realtime extends APIResource {\n constructor() {\n super(...arguments);\n this.clientSecrets = new ClientSecretsAPI.ClientSecrets(this._client);\n this.calls = new CallsAPI.Calls(this._client);\n }\n}\nRealtime.ClientSecrets = ClientSecrets;\nRealtime.Calls = Calls;\n//# sourceMappingURL=realtime.mjs.map","import { OpenAIError } from \"../error.mjs\";\nimport { isAutoParsableResponseFormat } from \"../lib/parser.mjs\";\nexport function maybeParseResponse(response, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...response,\n output_parsed: null,\n output: response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: null,\n };\n }\n if (item.type === 'message') {\n return {\n ...item,\n content: item.content.map((content) => ({\n ...content,\n parsed: null,\n })),\n };\n }\n else {\n return item;\n }\n }),\n };\n }\n return parseResponse(response, params);\n}\nexport function parseResponse(response, params) {\n const output = response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: parseToolCall(params, item),\n };\n }\n if (item.type === 'message') {\n const content = item.content.map((content) => {\n if (content.type === 'output_text') {\n return {\n ...content,\n parsed: parseTextFormat(params, content.text),\n };\n }\n return content;\n });\n return {\n ...item,\n content,\n };\n }\n return item;\n });\n const parsed = Object.assign({}, response, { output });\n if (!Object.getOwnPropertyDescriptor(response, 'output_text')) {\n addOutputText(parsed);\n }\n Object.defineProperty(parsed, 'output_parsed', {\n enumerable: true,\n get() {\n for (const output of parsed.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text' && content.parsed !== null) {\n return content.parsed;\n }\n }\n }\n return null;\n },\n });\n return parsed;\n}\nfunction parseTextFormat(params, content) {\n if (params.text?.format?.type !== 'json_schema') {\n return null;\n }\n if ('$parseRaw' in params.text?.format) {\n const text_format = params.text?.format;\n return text_format.$parseRaw(content);\n }\n return JSON.parse(content);\n}\nexport function hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.text?.format)) {\n return true;\n }\n return false;\n}\nexport function makeParseableResponseTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nfunction getInputToolByName(input_tools, name) {\n return input_tools.find((tool) => tool.type === 'function' && tool.name === name);\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return {\n ...toolCall,\n ...toolCall,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.arguments)\n : inputTool?.strict ? JSON.parse(toolCall.arguments)\n : null,\n };\n}\nexport function shouldParseToolCall(params, toolCall) {\n if (!params) {\n return false;\n }\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return isAutoParsableTool(inputTool) || inputTool?.strict || false;\n}\nexport function validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\nexport function addOutputText(rsp) {\n const texts = [];\n for (const output of rsp.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text') {\n texts.push(content.text);\n }\n }\n }\n rsp.output_text = texts.join('');\n}\n//# sourceMappingURL=ResponsesParser.mjs.map","var _ResponseStream_instances, _ResponseStream_params, _ResponseStream_currentResponseSnapshot, _ResponseStream_finalResponse, _ResponseStream_beginRequest, _ResponseStream_addEvent, _ResponseStream_endRequest, _ResponseStream_accumulateResponse;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../../internal/tslib.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../../error.mjs\";\nimport { EventStream } from \"../EventStream.mjs\";\nimport { maybeParseResponse } from \"../ResponsesParser.mjs\";\nexport class ResponseStream extends EventStream {\n constructor(params) {\n super();\n _ResponseStream_instances.add(this);\n _ResponseStream_params.set(this, void 0);\n _ResponseStream_currentResponseSnapshot.set(this, void 0);\n _ResponseStream_finalResponse.set(this, void 0);\n __classPrivateFieldSet(this, _ResponseStream_params, params, \"f\");\n }\n static createResponse(client, params, options) {\n const runner = new ResponseStream(params);\n runner._run(() => runner._createOrRetrieveResponse(client, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createOrRetrieveResponse(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_beginRequest).call(this);\n let stream;\n let starting_after = null;\n if ('response_id' in params) {\n stream = await client.responses.retrieve(params.response_id, { stream: true }, { ...options, signal: this.controller.signal, stream: true });\n starting_after = params.starting_after ?? null;\n }\n else {\n stream = await client.responses.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n }\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_addEvent).call(this, event, starting_after);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_endRequest).call(this);\n }\n [(_ResponseStream_params = new WeakMap(), _ResponseStream_currentResponseSnapshot = new WeakMap(), _ResponseStream_finalResponse = new WeakMap(), _ResponseStream_instances = new WeakSet(), _ResponseStream_beginRequest = function _ResponseStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n }, _ResponseStream_addEvent = function _ResponseStream_addEvent(event, starting_after) {\n if (this.ended)\n return;\n const maybeEmit = (name, event) => {\n if (starting_after == null || event.sequence_number > starting_after) {\n this._emit(name, event);\n }\n };\n const response = __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_accumulateResponse).call(this, event);\n maybeEmit('event', event);\n switch (event.type) {\n case 'response.output_text.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n maybeEmit('response.output_text.delta', {\n ...event,\n snapshot: content.text,\n });\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n maybeEmit('response.function_call_arguments.delta', {\n ...event,\n snapshot: output.arguments,\n });\n }\n break;\n }\n default:\n maybeEmit(event.type, event);\n break;\n }\n }, _ResponseStream_endRequest = function _ResponseStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any events`);\n }\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n const parsedResponse = finalizeResponse(snapshot, __classPrivateFieldGet(this, _ResponseStream_params, \"f\"));\n __classPrivateFieldSet(this, _ResponseStream_finalResponse, parsedResponse, \"f\");\n return parsedResponse;\n }, _ResponseStream_accumulateResponse = function _ResponseStream_accumulateResponse(event) {\n let snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n if (event.type !== 'response.created') {\n throw new OpenAIError(`When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`);\n }\n snapshot = __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n return snapshot;\n }\n switch (event.type) {\n case 'response.output_item.added': {\n snapshot.output.push(event.item);\n break;\n }\n case 'response.content_part.added': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n const type = output.type;\n const part = event.part;\n if (type === 'message' && part.type !== 'reasoning_text') {\n output.content.push(part);\n }\n else if (type === 'reasoning' && part.type === 'reasoning_text') {\n if (!output.content) {\n output.content = [];\n }\n output.content.push(part);\n }\n break;\n }\n case 'response.output_text.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n content.text += event.delta;\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n output.arguments += event.delta;\n }\n break;\n }\n case 'response.reasoning_text.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'reasoning') {\n const content = output.content?.[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'reasoning_text') {\n throw new OpenAIError(`expected content to be 'reasoning_text', got ${content.type}`);\n }\n content.text += event.delta;\n }\n break;\n }\n case 'response.completed': {\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n break;\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((event) => (event ? { value: event, done: false } : { value: undefined, done: true }));\n }\n const event = pushQueue.shift();\n return { value: event, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n /**\n * @returns a promise that resolves with the final Response, or rejects\n * if an error occurred or the stream ended prematurely without producing a REsponse.\n */\n async finalResponse() {\n await this.done();\n const response = __classPrivateFieldGet(this, _ResponseStream_finalResponse, \"f\");\n if (!response)\n throw new OpenAIError('stream ended without producing a ChatCompletion');\n return response;\n }\n}\nfunction finalizeResponse(snapshot, params) {\n return maybeParseResponse(snapshot, params);\n}\n//# sourceMappingURL=ResponseStream.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class InputItems extends APIResource {\n /**\n * Returns a list of input items for a given response.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const responseItem of client.responses.inputItems.list(\n * 'response_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(responseID, query = {}, options) {\n return this._client.getAPIList(path `/responses/${responseID}/input_items`, (CursorPage), { query, ...options, __security: { bearerAuth: true } });\n }\n}\n//# sourceMappingURL=input-items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class InputTokens extends APIResource {\n /**\n * Returns input token counts of the request.\n *\n * Returns an object with `object` set to `response.input_tokens` and an\n * `input_tokens` count.\n *\n * @example\n * ```ts\n * const response = await client.responses.inputTokens.count();\n * ```\n */\n count(body = {}, options) {\n return this._client.post('/responses/input_tokens', {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=input-tokens.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { parseResponse, addOutputText, } from \"../../lib/ResponsesParser.mjs\";\nimport { ResponseStream } from \"../../lib/responses/ResponseStream.mjs\";\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as InputItemsAPI from \"./input-items.mjs\";\nimport { InputItems } from \"./input-items.mjs\";\nimport * as InputTokensAPI from \"./input-tokens.mjs\";\nimport { InputTokens } from \"./input-tokens.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Responses extends APIResource {\n constructor() {\n super(...arguments);\n this.inputItems = new InputItemsAPI.InputItems(this._client);\n this.inputTokens = new InputTokensAPI.InputTokens(this._client);\n }\n create(body, options) {\n return this._client.post('/responses', {\n body,\n ...options,\n stream: body.stream ?? false,\n __security: { bearerAuth: true },\n })._thenUnwrap((rsp) => {\n if ('object' in rsp && rsp.object === 'response') {\n addOutputText(rsp);\n }\n return rsp;\n });\n }\n retrieve(responseID, query = {}, options) {\n return this._client.get(path `/responses/${responseID}`, {\n query,\n ...options,\n stream: query?.stream ?? false,\n __security: { bearerAuth: true },\n })._thenUnwrap((rsp) => {\n if ('object' in rsp && rsp.object === 'response') {\n addOutputText(rsp);\n }\n return rsp;\n });\n }\n /**\n * Deletes a model response with the given ID.\n *\n * @example\n * ```ts\n * await client.responses.delete(\n * 'resp_677efb5139a88190b512bc3fef8e535d',\n * );\n * ```\n */\n delete(responseID, options) {\n return this._client.delete(path `/responses/${responseID}`, {\n ...options,\n headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n parse(body, options) {\n return this._client.responses\n .create(body, options)\n ._thenUnwrap((response) => parseResponse(response, body));\n }\n /**\n * Creates a model response stream\n */\n stream(body, options) {\n return ResponseStream.createResponse(this._client, body, options);\n }\n /**\n * Cancels a model response with the given ID. Only responses created with the\n * `background` parameter set to `true` can be cancelled.\n * [Learn more](https://platform.openai.com/docs/guides/background).\n *\n * @example\n * ```ts\n * const response = await client.responses.cancel(\n * 'resp_677efb5139a88190b512bc3fef8e535d',\n * );\n * ```\n */\n cancel(responseID, options) {\n return this._client.post(path `/responses/${responseID}/cancel`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Compact a conversation. Returns a compacted response object.\n *\n * Learn when and how to compact long-running conversations in the\n * [conversation state guide](https://platform.openai.com/docs/guides/conversation-state#managing-the-context-window).\n * For ZDR-compatible compaction details, see\n * [Compaction (advanced)](https://platform.openai.com/docs/guides/conversation-state#compaction-advanced).\n *\n * @example\n * ```ts\n * const compactedResponse = await client.responses.compact({\n * model: 'gpt-5.4',\n * });\n * ```\n */\n compact(body, options) {\n return this._client.post('/responses/compact', { body, ...options, __security: { bearerAuth: true } });\n }\n}\nResponses.InputItems = InputItems;\nResponses.InputTokens = InputTokens;\n//# sourceMappingURL=responses.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Content extends APIResource {\n /**\n * Download a skill zip bundle by its ID.\n */\n retrieve(skillID, options) {\n return this._client.get(path `/skills/${skillID}/content`, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __security: { bearerAuth: true },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=content.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Content extends APIResource {\n /**\n * Download a skill version zip bundle.\n */\n retrieve(version, params, options) {\n const { skill_id } = params;\n return this._client.get(path `/skills/${skill_id}/versions/${version}/content`, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __security: { bearerAuth: true },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=content.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { maybeMultipartFormRequestOptions } from \"../../../internal/uploads.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Versions extends APIResource {\n constructor() {\n super(...arguments);\n this.content = new ContentAPI.Content(this._client);\n }\n /**\n * Create a new immutable skill version.\n */\n create(skillID, body = {}, options) {\n return this._client.post(path `/skills/${skillID}/versions`, maybeMultipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n /**\n * Get a specific skill version.\n */\n retrieve(version, params, options) {\n const { skill_id } = params;\n return this._client.get(path `/skills/${skill_id}/versions/${version}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * List skill versions for a skill.\n */\n list(skillID, query = {}, options) {\n return this._client.getAPIList(path `/skills/${skillID}/versions`, (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a skill version.\n */\n delete(version, params, options) {\n const { skill_id } = params;\n return this._client.delete(path `/skills/${skill_id}/versions/${version}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\nVersions.Content = Content;\n//# sourceMappingURL=versions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport * as VersionsAPI from \"./versions/versions.mjs\";\nimport { Versions, } from \"./versions/versions.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { maybeMultipartFormRequestOptions } from \"../../internal/uploads.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Skills extends APIResource {\n constructor() {\n super(...arguments);\n this.content = new ContentAPI.Content(this._client);\n this.versions = new VersionsAPI.Versions(this._client);\n }\n /**\n * Create a new skill.\n */\n create(body = {}, options) {\n return this._client.post('/skills', maybeMultipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n /**\n * Get a skill by its ID.\n */\n retrieve(skillID, options) {\n return this._client.get(path `/skills/${skillID}`, { ...options, __security: { bearerAuth: true } });\n }\n /**\n * Update the default version pointer for a skill.\n */\n update(skillID, body, options) {\n return this._client.post(path `/skills/${skillID}`, {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * List all skills for the current project.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/skills', (CursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a skill by its ID.\n */\n delete(skillID, options) {\n return this._client.delete(path `/skills/${skillID}`, { ...options, __security: { bearerAuth: true } });\n }\n}\nSkills.Content = Content;\nSkills.Versions = Versions;\n//# sourceMappingURL=skills.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Use Uploads to upload large files in multiple parts.\n */\nexport class Parts extends APIResource {\n /**\n * Adds a\n * [Part](https://platform.openai.com/docs/api-reference/uploads/part-object) to an\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object.\n * A Part represents a chunk of bytes from the file you are trying to upload.\n *\n * Each Part can be at most 64 MB, and you can add Parts until you hit the Upload\n * maximum of 8 GB.\n *\n * It is possible to add multiple Parts in parallel. You can decide the intended\n * order of the Parts when you\n * [complete the Upload](https://platform.openai.com/docs/api-reference/uploads/complete).\n */\n create(uploadID, body, options) {\n return this._client.post(path `/uploads/${uploadID}/parts`, multipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n}\n//# sourceMappingURL=parts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as PartsAPI from \"./parts.mjs\";\nimport { Parts } from \"./parts.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\n/**\n * Use Uploads to upload large files in multiple parts.\n */\nexport class Uploads extends APIResource {\n constructor() {\n super(...arguments);\n this.parts = new PartsAPI.Parts(this._client);\n }\n /**\n * Creates an intermediate\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object\n * that you can add\n * [Parts](https://platform.openai.com/docs/api-reference/uploads/part-object) to.\n * Currently, an Upload can accept at most 8 GB in total and expires after an hour\n * after you create it.\n *\n * Once you complete the Upload, we will create a\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * contains all the parts you uploaded. This File is usable in the rest of our\n * platform as a regular File object.\n *\n * For certain `purpose` values, the correct `mime_type` must be specified. Please\n * refer to documentation for the\n * [supported MIME types for your use case](https://platform.openai.com/docs/assistants/tools/file-search#supported-files).\n *\n * For guidance on the proper filename extensions for each purpose, please follow\n * the documentation on\n * [creating a File](https://platform.openai.com/docs/api-reference/files/create).\n *\n * Returns the Upload object with status `pending`.\n */\n create(body, options) {\n return this._client.post('/uploads', { body, ...options, __security: { bearerAuth: true } });\n }\n /**\n * Cancels the Upload. No Parts may be added after an Upload is cancelled.\n *\n * Returns the Upload object with status `cancelled`.\n */\n cancel(uploadID, options) {\n return this._client.post(path `/uploads/${uploadID}/cancel`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Completes the\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object).\n *\n * Within the returned Upload object, there is a nested\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * is ready to use in the rest of the platform.\n *\n * You can specify the order of the Parts by passing in an ordered list of the Part\n * IDs.\n *\n * The number of bytes uploaded upon completion must match the number of bytes\n * initially specified when creating the Upload object. No Parts may be added after\n * an Upload is completed. Returns the Upload object with status `completed`,\n * including an additional `file` property containing the created usable File\n * object.\n */\n complete(uploadID, body, options) {\n return this._client.post(path `/uploads/${uploadID}/complete`, {\n body,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n}\nUploads.Parts = Parts;\n//# sourceMappingURL=uploads.mjs.map","/**\n * Like `Promise.allSettled()` but throws an error if any promises are rejected.\n */\nexport const allSettledWithThrow = async (promises) => {\n const results = await Promise.allSettled(promises);\n const rejected = results.filter((result) => result.status === 'rejected');\n if (rejected.length) {\n for (const result of rejected) {\n console.error(result.reason);\n }\n throw new Error(`${rejected.length} promise(s) failed - see the above errors`);\n }\n // Note: TS was complaining about using `.filter().map()` here for some reason\n const values = [];\n for (const result of results) {\n if (result.status === 'fulfilled') {\n values.push(result.value);\n }\n }\n return values;\n};\n//# sourceMappingURL=Util.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { sleep } from \"../../internal/utils/sleep.mjs\";\nimport { allSettledWithThrow } from \"../../lib/Util.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class FileBatches extends APIResource {\n /**\n * Create a vector store file batch.\n */\n create(vectorStoreID, body, options) {\n return this._client.post(path `/vector_stores/${vectorStoreID}/file_batches`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Retrieves a vector store file batch.\n */\n retrieve(batchID, params, options) {\n const { vector_store_id } = params;\n return this._client.get(path `/vector_stores/${vector_store_id}/file_batches/${batchID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Cancel a vector store file batch. This attempts to cancel the processing of\n * files in this batch as soon as possible.\n */\n cancel(batchID, params, options) {\n const { vector_store_id } = params;\n return this._client.post(path `/vector_stores/${vector_store_id}/file_batches/${batchID}/cancel`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Create a vector store batch and poll until all files have been processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const batch = await this.create(vectorStoreId, body);\n return await this.poll(vectorStoreId, batch.id, options);\n }\n /**\n * Returns a list of vector store files in a batch.\n */\n listFiles(batchID, params, options) {\n const { vector_store_id, ...query } = params;\n return this._client.getAPIList(path `/vector_stores/${vector_store_id}/file_batches/${batchID}/files`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Wait for the given file batch to be processed.\n *\n * Note: this will return even if one of the files failed to process, you need to\n * check batch.file_counts.failed_count to handle this case.\n */\n async poll(vectorStoreID, batchID, options) {\n const headers = buildHeaders([\n options?.headers,\n {\n 'X-Stainless-Poll-Helper': 'true',\n 'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n },\n ]);\n while (true) {\n const { data: batch, response } = await this.retrieve(batchID, { vector_store_id: vectorStoreID }, {\n ...options,\n headers,\n }).withResponse();\n switch (batch.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n case 'failed':\n case 'cancelled':\n case 'completed':\n return batch;\n }\n }\n }\n /**\n * Uploads the given files concurrently and then creates a vector store file batch.\n *\n * The concurrency limit is configurable using the `maxConcurrency` parameter.\n */\n async uploadAndPoll(vectorStoreId, { files, fileIds = [] }, options) {\n if (files == null || files.length == 0) {\n throw new Error(`No \\`files\\` provided to process. If you've already uploaded files you should use \\`.createAndPoll()\\` instead`);\n }\n const configuredConcurrency = options?.maxConcurrency ?? 5;\n // We cap the number of workers at the number of files (so we don't start any unnecessary workers)\n const concurrencyLimit = Math.min(configuredConcurrency, files.length);\n const client = this._client;\n const fileIterator = files.values();\n const allFileIds = [...fileIds];\n // This code is based on this design. The libraries don't accommodate our environment limits.\n // https://stackoverflow.com/questions/40639432/what-is-the-best-way-to-limit-concurrency-when-using-es6s-promise-all\n async function processFiles(iterator) {\n for (let item of iterator) {\n const fileObj = await client.files.create({ file: item, purpose: 'assistants' }, options);\n allFileIds.push(fileObj.id);\n }\n }\n // Start workers to process results\n const workers = Array(concurrencyLimit).fill(fileIterator).map(processFiles);\n // Wait for all processing to complete.\n await allSettledWithThrow(workers);\n return await this.createAndPoll(vectorStoreId, {\n file_ids: allFileIds,\n });\n }\n}\n//# sourceMappingURL=file-batches.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage, Page } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { sleep } from \"../../internal/utils.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Files extends APIResource {\n /**\n * Create a vector store file by attaching a\n * [File](https://platform.openai.com/docs/api-reference/files) to a\n * [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object).\n */\n create(vectorStoreID, body, options) {\n return this._client.post(path `/vector_stores/${vectorStoreID}/files`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Retrieves a vector store file.\n */\n retrieve(fileID, params, options) {\n const { vector_store_id } = params;\n return this._client.get(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Update attributes on a vector store file.\n */\n update(fileID, params, options) {\n const { vector_store_id, ...body } = params;\n return this._client.post(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Returns a list of vector store files.\n */\n list(vectorStoreID, query = {}, options) {\n return this._client.getAPIList(path `/vector_stores/${vectorStoreID}/files`, (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a vector store file. This will remove the file from the vector store but\n * the file itself will not be deleted. To delete the file, use the\n * [delete file](https://platform.openai.com/docs/api-reference/files/delete)\n * endpoint.\n */\n delete(fileID, params, options) {\n const { vector_store_id } = params;\n return this._client.delete(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Attach a file to the given vector store and wait for it to be processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const file = await this.create(vectorStoreId, body, options);\n return await this.poll(vectorStoreId, file.id, options);\n }\n /**\n * Wait for the vector store file to finish processing.\n *\n * Note: this will return even if the file failed to process, you need to check\n * file.last_error and file.status to handle these cases\n */\n async poll(vectorStoreID, fileID, options) {\n const headers = buildHeaders([\n options?.headers,\n {\n 'X-Stainless-Poll-Helper': 'true',\n 'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n },\n ]);\n while (true) {\n const fileResponse = await this.retrieve(fileID, {\n vector_store_id: vectorStoreID,\n }, { ...options, headers }).withResponse();\n const file = fileResponse.data;\n switch (file.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = fileResponse.response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n case 'failed':\n case 'completed':\n return file;\n }\n }\n }\n /**\n * Upload a file to the `files` API and then attach it to the given vector store.\n *\n * Note the file will be asynchronously processed (you can use the alternative\n * polling helper method to wait for processing to complete).\n */\n async upload(vectorStoreId, file, options) {\n const fileInfo = await this._client.files.create({ file: file, purpose: 'assistants' }, options);\n return this.create(vectorStoreId, { file_id: fileInfo.id }, options);\n }\n /**\n * Add a file to a vector store and poll until processing is complete.\n */\n async uploadAndPoll(vectorStoreId, file, options) {\n const fileInfo = await this.upload(vectorStoreId, file, options);\n return await this.poll(vectorStoreId, fileInfo.id, options);\n }\n /**\n * Retrieve the parsed contents of a vector store file.\n */\n content(fileID, params, options) {\n const { vector_store_id } = params;\n return this._client.getAPIList(path `/vector_stores/${vector_store_id}/files/${fileID}/content`, (Page), {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as FileBatchesAPI from \"./file-batches.mjs\";\nimport { FileBatches, } from \"./file-batches.mjs\";\nimport * as FilesAPI from \"./files.mjs\";\nimport { Files, } from \"./files.mjs\";\nimport { CursorPage, Page } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class VectorStores extends APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n this.fileBatches = new FileBatchesAPI.FileBatches(this._client);\n }\n /**\n * Create a vector store.\n */\n create(body, options) {\n return this._client.post('/vector_stores', {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Retrieves a vector store.\n */\n retrieve(vectorStoreID, options) {\n return this._client.get(path `/vector_stores/${vectorStoreID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Modifies a vector store.\n */\n update(vectorStoreID, body, options) {\n return this._client.post(path `/vector_stores/${vectorStoreID}`, {\n body,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Returns a list of vector stores.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/vector_stores', (CursorPage), {\n query,\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Delete a vector store.\n */\n delete(vectorStoreID, options) {\n return this._client.delete(path `/vector_stores/${vectorStoreID}`, {\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n /**\n * Search a vector store for relevant chunks based on a query and file attributes\n * filter.\n */\n search(vectorStoreID, body, options) {\n return this._client.getAPIList(path `/vector_stores/${vectorStoreID}/search`, (Page), {\n body,\n method: 'post',\n ...options,\n headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n __security: { bearerAuth: true },\n });\n }\n}\nVectorStores.Files = Files;\nVectorStores.FileBatches = FileBatches;\n//# sourceMappingURL=vector-stores.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { ConversationCursorPage } from \"../core/pagination.mjs\";\nimport { buildHeaders } from \"../internal/headers.mjs\";\nimport { maybeMultipartFormRequestOptions, multipartFormRequestOptions } from \"../internal/uploads.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\nexport class Videos extends APIResource {\n /**\n * Create a new video generation job from a prompt and optional reference assets.\n */\n create(body, options) {\n return this._client.post('/videos', multipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n /**\n * Fetch the latest metadata for a generated video.\n */\n retrieve(videoID, options) {\n return this._client.get(path `/videos/${videoID}`, { ...options, __security: { bearerAuth: true } });\n }\n /**\n * List recently generated videos for the current project.\n */\n list(query = {}, options) {\n return this._client.getAPIList('/videos', (ConversationCursorPage), {\n query,\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Permanently delete a completed or failed video and its stored assets.\n */\n delete(videoID, options) {\n return this._client.delete(path `/videos/${videoID}`, { ...options, __security: { bearerAuth: true } });\n }\n /**\n * Create a character from an uploaded video.\n */\n createCharacter(body, options) {\n return this._client.post('/videos/characters', multipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n /**\n * Download the generated video bytes or a derived preview asset.\n *\n * Streams the rendered video content for the specified video job.\n */\n downloadContent(videoID, query = {}, options) {\n return this._client.get(path `/videos/${videoID}/content`, {\n query,\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n __security: { bearerAuth: true },\n __binaryResponse: true,\n });\n }\n /**\n * Create a new video generation job by editing a source video or existing\n * generated video.\n */\n edit(body, options) {\n return this._client.post('/videos/edits', multipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n /**\n * Create an extension of a completed video.\n */\n extend(body, options) {\n return this._client.post('/videos/extensions', multipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n /**\n * Fetch a character.\n */\n getCharacter(characterID, options) {\n return this._client.get(path `/videos/characters/${characterID}`, {\n ...options,\n __security: { bearerAuth: true },\n });\n }\n /**\n * Create a remix of a completed video using a refreshed prompt.\n */\n remix(videoID, body, options) {\n return this._client.post(path `/videos/${videoID}/remix`, maybeMultipartFormRequestOptions({ body, ...options, __security: { bearerAuth: true } }, this._client));\n }\n}\n//# sourceMappingURL=videos.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _Webhooks_instances, _Webhooks_validateSecret, _Webhooks_getRequiredHeader;\nimport { __classPrivateFieldGet } from \"../../internal/tslib.mjs\";\nimport { InvalidWebhookSignatureError } from \"../../error.mjs\";\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nexport class Webhooks extends APIResource {\n constructor() {\n super(...arguments);\n _Webhooks_instances.add(this);\n }\n /**\n * Validates that the given payload was sent by OpenAI and parses the payload.\n */\n async unwrap(payload, headers, secret = this._client.webhookSecret, tolerance = 300) {\n await this.verifySignature(payload, headers, secret, tolerance);\n return JSON.parse(payload);\n }\n /**\n * Validates whether or not the webhook payload was sent by OpenAI.\n *\n * An error will be raised if the webhook payload was not sent by OpenAI.\n *\n * @param payload - The webhook payload\n * @param headers - The webhook headers\n * @param secret - The webhook secret (optional, will use client secret if not provided)\n * @param tolerance - Maximum age of the webhook in seconds (default: 300 = 5 minutes)\n */\n async verifySignature(payload, headers, secret = this._client.webhookSecret, tolerance = 300) {\n if (typeof crypto === 'undefined' ||\n typeof crypto.subtle.importKey !== 'function' ||\n typeof crypto.subtle.verify !== 'function') {\n throw new Error('Webhook signature verification is only supported when the `crypto` global is defined');\n }\n __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_validateSecret).call(this, secret);\n const headersObj = buildHeaders([headers]).values;\n const signatureHeader = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-signature');\n const timestamp = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-timestamp');\n const webhookId = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-id');\n // Validate timestamp to prevent replay attacks\n const timestampSeconds = parseInt(timestamp, 10);\n if (isNaN(timestampSeconds)) {\n throw new InvalidWebhookSignatureError('Invalid webhook timestamp format');\n }\n const nowSeconds = Math.floor(Date.now() / 1000);\n if (nowSeconds - timestampSeconds > tolerance) {\n throw new InvalidWebhookSignatureError('Webhook timestamp is too old');\n }\n if (timestampSeconds > nowSeconds + tolerance) {\n throw new InvalidWebhookSignatureError('Webhook timestamp is too new');\n }\n // Extract signatures from v1,<base64> format\n // The signature header can have multiple values, separated by spaces.\n // Each value is in the format v1,<base64>. We should accept if any match.\n const signatures = signatureHeader\n .split(' ')\n .map((part) => (part.startsWith('v1,') ? part.substring(3) : part));\n // Decode the secret if it starts with whsec_\n const decodedSecret = secret.startsWith('whsec_') ?\n Buffer.from(secret.replace('whsec_', ''), 'base64')\n : Buffer.from(secret, 'utf-8');\n // Create the signed payload: {webhook_id}.{timestamp}.{payload}\n const signedPayload = webhookId ? `${webhookId}.${timestamp}.${payload}` : `${timestamp}.${payload}`;\n // Import the secret as a cryptographic key for HMAC\n const key = await crypto.subtle.importKey('raw', decodedSecret, { name: 'HMAC', hash: 'SHA-256' }, false, ['verify']);\n // Check if any signature matches using timing-safe WebCrypto verify\n for (const signature of signatures) {\n try {\n const signatureBytes = Buffer.from(signature, 'base64');\n const isValid = await crypto.subtle.verify('HMAC', key, signatureBytes, new TextEncoder().encode(signedPayload));\n if (isValid) {\n return; // Valid signature found\n }\n }\n catch {\n // Invalid base64 or signature format, continue to next signature\n continue;\n }\n }\n throw new InvalidWebhookSignatureError('The given webhook signature does not match the expected signature');\n }\n}\n_Webhooks_instances = new WeakSet(), _Webhooks_validateSecret = function _Webhooks_validateSecret(secret) {\n if (typeof secret !== 'string' || secret.length === 0) {\n throw new Error(`The webhook secret must either be set using the env var, OPENAI_WEBHOOK_SECRET, on the client class, OpenAI({ webhookSecret: '123' }), or passed to this function`);\n }\n}, _Webhooks_getRequiredHeader = function _Webhooks_getRequiredHeader(headers, name) {\n if (!headers) {\n throw new Error(`Headers are required`);\n }\n const value = headers.get(name);\n if (value === null || value === undefined) {\n throw new Error(`Missing required header: ${name}`);\n }\n return value;\n};\n//# sourceMappingURL=webhooks.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _OpenAI_instances, _a, _OpenAI_encoder, _OpenAI_baseURLOverridden;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"./internal/tslib.mjs\";\nimport { uuid4 } from \"./internal/utils/uuid.mjs\";\nimport { validatePositiveInteger, isAbsoluteURL, safeJSON } from \"./internal/utils/values.mjs\";\nimport { sleep } from \"./internal/utils/sleep.mjs\";\nimport { castToError, isAbortError } from \"./internal/errors.mjs\";\nimport { getPlatformHeaders } from \"./internal/detect-platform.mjs\";\nimport * as Shims from \"./internal/shims.mjs\";\nimport * as Opts from \"./internal/request-options.mjs\";\nimport { stringifyQuery } from \"./internal/utils/query.mjs\";\nimport { VERSION } from \"./version.mjs\";\nimport * as Errors from \"./core/error.mjs\";\nimport * as Pagination from \"./core/pagination.mjs\";\nimport { WorkloadIdentityAuth } from \"./auth/workload-identity-auth.mjs\";\nimport { OAuthError, SubjectTokenProviderError } from \"./core/error.mjs\";\nimport * as Uploads from \"./core/uploads.mjs\";\nimport * as API from \"./resources/index.mjs\";\nimport { APIPromise } from \"./core/api-promise.mjs\";\nimport { Batches, } from \"./resources/batches.mjs\";\nimport { Completions, } from \"./resources/completions.mjs\";\nimport { Embeddings, } from \"./resources/embeddings.mjs\";\nimport { Files, } from \"./resources/files.mjs\";\nimport { Images, } from \"./resources/images.mjs\";\nimport { Models } from \"./resources/models.mjs\";\nimport { Moderations, } from \"./resources/moderations.mjs\";\nimport { Videos, } from \"./resources/videos.mjs\";\nimport { Admin } from \"./resources/admin/admin.mjs\";\nimport { Audio } from \"./resources/audio/audio.mjs\";\nimport { Beta } from \"./resources/beta/beta.mjs\";\nimport { Chat } from \"./resources/chat/chat.mjs\";\nimport { Containers, } from \"./resources/containers/containers.mjs\";\nimport { Conversations } from \"./resources/conversations/conversations.mjs\";\nimport { Evals, } from \"./resources/evals/evals.mjs\";\nimport { FineTuning } from \"./resources/fine-tuning/fine-tuning.mjs\";\nimport { Graders } from \"./resources/graders/graders.mjs\";\nimport { Realtime } from \"./resources/realtime/realtime.mjs\";\nimport { Responses } from \"./resources/responses/responses.mjs\";\nimport { Skills, } from \"./resources/skills/skills.mjs\";\nimport { Uploads as UploadsAPIUploads, } from \"./resources/uploads/uploads.mjs\";\nimport { VectorStores, } from \"./resources/vector-stores/vector-stores.mjs\";\nimport { Webhooks } from \"./resources/webhooks/webhooks.mjs\";\nimport { isRunningInBrowser } from \"./internal/detect-platform.mjs\";\nimport { buildHeaders } from \"./internal/headers.mjs\";\nimport { readEnv } from \"./internal/utils/env.mjs\";\nimport { formatRequestDetails, loggerFor, parseLogLevel, } from \"./internal/utils/log.mjs\";\nimport { isEmptyObj } from \"./internal/utils/values.mjs\";\nconst WORKLOAD_IDENTITY_API_KEY_PLACEHOLDER = 'workload-identity-auth';\n/**\n * API Client for interfacing with the OpenAI API.\n */\nexport class OpenAI {\n /**\n * API Client for interfacing with the OpenAI API.\n *\n * @param {string | null | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? null]\n * @param {string | null | undefined} [opts.adminAPIKey=process.env['OPENAI_ADMIN_KEY'] ?? null]\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string | null | undefined} [opts.project=process.env['OPENAI_PROJECT_ID'] ?? null]\n * @param {string | null | undefined} [opts.webhookSecret=process.env['OPENAI_WEBHOOK_SECRET'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls.\n * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {HeadersLike} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Record<string, string | undefined>} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({ baseURL = readEnv('OPENAI_BASE_URL'), apiKey = readEnv('OPENAI_API_KEY') ?? null, adminAPIKey = readEnv('OPENAI_ADMIN_KEY') ?? null, organization = readEnv('OPENAI_ORG_ID') ?? null, project = readEnv('OPENAI_PROJECT_ID') ?? null, webhookSecret = readEnv('OPENAI_WEBHOOK_SECRET') ?? null, workloadIdentity, ...opts } = {}) {\n _OpenAI_instances.add(this);\n _OpenAI_encoder.set(this, void 0);\n /**\n * Given a prompt, the model will return one or more predicted completions, and can also return the probabilities of alternative tokens at each position.\n */\n this.completions = new API.Completions(this);\n this.chat = new API.Chat(this);\n /**\n * Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.\n */\n this.embeddings = new API.Embeddings(this);\n /**\n * Files are used to upload documents that can be used with features like Assistants and Fine-tuning.\n */\n this.files = new API.Files(this);\n /**\n * Given a prompt and/or an input image, the model will generate a new image.\n */\n this.images = new API.Images(this);\n this.audio = new API.Audio(this);\n /**\n * Given text and/or image inputs, classifies if those inputs are potentially harmful.\n */\n this.moderations = new API.Moderations(this);\n /**\n * List and describe the various models available in the API.\n */\n this.models = new API.Models(this);\n this.fineTuning = new API.FineTuning(this);\n this.graders = new API.Graders(this);\n this.vectorStores = new API.VectorStores(this);\n this.webhooks = new API.Webhooks(this);\n this.beta = new API.Beta(this);\n /**\n * Create large batches of API requests to run asynchronously.\n */\n this.batches = new API.Batches(this);\n /**\n * Use Uploads to upload large files in multiple parts.\n */\n this.uploads = new API.Uploads(this);\n this.admin = new API.Admin(this);\n this.responses = new API.Responses(this);\n this.realtime = new API.Realtime(this);\n /**\n * Manage conversations and conversation items.\n */\n this.conversations = new API.Conversations(this);\n /**\n * Manage and run evals in the OpenAI platform.\n */\n this.evals = new API.Evals(this);\n this.containers = new API.Containers(this);\n this.skills = new API.Skills(this);\n this.videos = new API.Videos(this);\n const options = {\n apiKey,\n adminAPIKey,\n organization,\n project,\n webhookSecret,\n workloadIdentity,\n ...opts,\n baseURL: baseURL || `https://api.openai.com/v1`,\n };\n if (apiKey && workloadIdentity) {\n throw new Errors.OpenAIError('The `apiKey` and `workloadIdentity` options are mutually exclusive');\n }\n if (!apiKey && !adminAPIKey && !workloadIdentity) {\n throw new Errors.OpenAIError('Missing credentials. Please pass an `apiKey`, `workloadIdentity`, `adminAPIKey`, or set the `OPENAI_API_KEY` or `OPENAI_ADMIN_KEY` environment variable.');\n }\n if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n throw new Errors.OpenAIError(\"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\\n\\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\\n\");\n }\n this.baseURL = options.baseURL;\n this.timeout = options.timeout ?? _a.DEFAULT_TIMEOUT /* 10 minutes */;\n this.logger = options.logger ?? console;\n const defaultLogLevel = 'warn';\n // Set default logLevel early so that we can log a warning in parseLogLevel.\n this.logLevel = defaultLogLevel;\n this.logLevel =\n parseLogLevel(options.logLevel, 'ClientOptions.logLevel', this) ??\n parseLogLevel(readEnv('OPENAI_LOG'), \"process.env['OPENAI_LOG']\", this) ??\n defaultLogLevel;\n this.fetchOptions = options.fetchOptions;\n this.maxRetries = options.maxRetries ?? 2;\n this.fetch = options.fetch ?? Shims.getDefaultFetch();\n __classPrivateFieldSet(this, _OpenAI_encoder, Opts.FallbackEncoder, \"f\");\n const customHeadersEnv = readEnv('OPENAI_CUSTOM_HEADERS');\n if (customHeadersEnv) {\n const parsed = {};\n for (const line of customHeadersEnv.split('\\n')) {\n const colon = line.indexOf(':');\n if (colon >= 0) {\n parsed[line.substring(0, colon).trim()] = line.substring(colon + 1).trim();\n }\n }\n options.defaultHeaders = buildHeaders([parsed, options.defaultHeaders]);\n }\n this._options = options;\n if (workloadIdentity) {\n this._workloadIdentityAuth = new WorkloadIdentityAuth(workloadIdentity, this.fetch);\n }\n this.apiKey = typeof apiKey === 'string' ? apiKey : null;\n this.adminAPIKey = adminAPIKey;\n this.organization = organization;\n this.project = project;\n this.webhookSecret = webhookSecret;\n }\n /**\n * Create a new client instance re-using the same options given to the current client with optional overriding.\n */\n withOptions(options) {\n const client = new this.constructor({\n ...this._options,\n baseURL: this.baseURL,\n maxRetries: this.maxRetries,\n timeout: this.timeout,\n logger: this.logger,\n logLevel: this.logLevel,\n fetch: this.fetch,\n fetchOptions: this.fetchOptions,\n apiKey: this._options.apiKey,\n adminAPIKey: this.adminAPIKey,\n workloadIdentity: this._options.workloadIdentity,\n organization: this.organization,\n project: this.project,\n webhookSecret: this.webhookSecret,\n ...options,\n });\n return client;\n }\n defaultQuery() {\n return this._options.defaultQuery;\n }\n validateHeaders({ values, nulls }, schemes = {\n bearerAuth: true,\n adminAPIKeyAuth: true,\n }) {\n if (values.get('authorization') || values.get('api-key')) {\n return;\n }\n if (nulls.has('authorization') || nulls.has('api-key')) {\n return;\n }\n if (this._workloadIdentityAuth && schemes.bearerAuth) {\n return;\n }\n throw new Error('Could not resolve authentication method. Expected either apiKey or adminAPIKey to be set. Or for one of the \"Authorization\" or \"api-key\" headers to be explicitly omitted');\n }\n async authHeaders(opts, schemes = {\n bearerAuth: true,\n adminAPIKeyAuth: true,\n }) {\n return buildHeaders([\n schemes.bearerAuth ? await this.bearerAuth(opts) : null,\n schemes.adminAPIKeyAuth ? await this.adminAPIKeyAuth(opts) : null,\n ]);\n }\n async bearerAuth(opts) {\n if (this._workloadIdentityAuth) {\n return buildHeaders([{ Authorization: `Bearer ${await this._workloadIdentityAuth.getToken()}` }]);\n }\n if (this.apiKey == null) {\n return undefined;\n }\n return buildHeaders([{ Authorization: `Bearer ${this.apiKey}` }]);\n }\n async adminAPIKeyAuth(opts) {\n if (this.adminAPIKey == null) {\n return undefined;\n }\n return buildHeaders([{ Authorization: `Bearer ${this.adminAPIKey}` }]);\n }\n stringifyQuery(query) {\n return stringifyQuery(query);\n }\n getUserAgent() {\n return `${this.constructor.name}/JS ${VERSION}`;\n }\n defaultIdempotencyKey() {\n return `stainless-node-retry-${uuid4()}`;\n }\n makeStatusError(status, error, message, headers) {\n return Errors.APIError.generate(status, error, message, headers);\n }\n async _callApiKey() {\n const apiKey = this._options.apiKey;\n if (typeof apiKey !== 'function')\n return false;\n let token;\n try {\n token = await apiKey();\n }\n catch (err) {\n if (err instanceof Errors.OpenAIError)\n throw err;\n throw new Errors.OpenAIError(`Failed to get token from 'apiKey' function: ${err.message}`, \n // @ts-ignore\n { cause: err });\n }\n if (typeof token !== 'string' || !token) {\n throw new Errors.OpenAIError(`Expected 'apiKey' function argument to return a string but it returned ${token}`);\n }\n this.apiKey = token;\n return true;\n }\n buildURL(path, query, defaultBaseURL) {\n const baseURL = (!__classPrivateFieldGet(this, _OpenAI_instances, \"m\", _OpenAI_baseURLOverridden).call(this) && defaultBaseURL) || this.baseURL;\n const url = isAbsoluteURL(path) ?\n new URL(path)\n : new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n const defaultQuery = this.defaultQuery();\n const pathQuery = Object.fromEntries(url.searchParams);\n if (!isEmptyObj(defaultQuery) || !isEmptyObj(pathQuery)) {\n query = { ...pathQuery, ...defaultQuery, ...query };\n }\n if (typeof query === 'object' && query && !Array.isArray(query)) {\n url.search = this.stringifyQuery(query);\n }\n return url.toString();\n }\n /**\n * Used as a callback for mutating the given `FinalRequestOptions` object.\n */\n async prepareOptions(options) {\n const security = options.__security ?? { bearerAuth: true };\n if (security.bearerAuth) {\n await this._callApiKey();\n }\n }\n /**\n * Used as a callback for mutating the given `RequestInit` object.\n *\n * This is useful for cases where you want to add certain headers based off of\n * the request properties, e.g. `method` or `url`.\n */\n async prepareRequest(request, { url, options }) { }\n get(path, opts) {\n return this.methodRequest('get', path, opts);\n }\n post(path, opts) {\n return this.methodRequest('post', path, opts);\n }\n patch(path, opts) {\n return this.methodRequest('patch', path, opts);\n }\n put(path, opts) {\n return this.methodRequest('put', path, opts);\n }\n delete(path, opts) {\n return this.methodRequest('delete', path, opts);\n }\n methodRequest(method, path, opts) {\n return this.request(Promise.resolve(opts).then((opts) => {\n return { method, path, ...opts };\n }));\n }\n request(options, remainingRetries = null) {\n return new APIPromise(this, this.makeRequest(options, remainingRetries, undefined));\n }\n async makeRequest(optionsInput, retriesRemaining, retryOfRequestLogID) {\n const options = await optionsInput;\n const maxRetries = options.maxRetries ?? this.maxRetries;\n if (retriesRemaining == null) {\n retriesRemaining = maxRetries;\n }\n await this.prepareOptions(options);\n const { req, url, timeout } = await this.buildRequest(options, {\n retryCount: maxRetries - retriesRemaining,\n });\n await this.prepareRequest(req, { url, options });\n /** Not an API request ID, just for correlating local log entries. */\n const requestLogID = 'log_' + ((Math.random() * (1 << 24)) | 0).toString(16).padStart(6, '0');\n const retryLogStr = retryOfRequestLogID === undefined ? '' : `, retryOf: ${retryOfRequestLogID}`;\n const startTime = Date.now();\n loggerFor(this).debug(`[${requestLogID}] sending request`, formatRequestDetails({\n retryOfRequestLogID,\n method: options.method,\n url,\n options,\n headers: req.headers,\n }));\n if (options.signal?.aborted) {\n throw new Errors.APIUserAbortError();\n }\n const security = options.__security ?? { bearerAuth: true };\n const controller = new AbortController();\n const response = await this.fetchWithAuth(url, req, timeout, controller, security).catch(castToError);\n const headersTime = Date.now();\n if (response instanceof globalThis.Error) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n if (options.signal?.aborted) {\n throw new Errors.APIUserAbortError();\n }\n // detect native connection timeout errors\n // deno throws \"TypeError: error sending request for url (https://example/): client error (Connect): tcp connect error: Operation timed out (os error 60): Operation timed out (os error 60)\"\n // undici throws \"TypeError: fetch failed\" with cause \"ConnectTimeoutError: Connect Timeout Error (attempted address: example:443, timeout: 1ms)\"\n // others do not provide enough information to distinguish timeouts from other connection errors\n const isTimeout = isAbortError(response) ||\n /timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''));\n if (retriesRemaining) {\n loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - ${retryMessage}`);\n loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (${retryMessage})`, formatRequestDetails({\n retryOfRequestLogID,\n url,\n durationMs: headersTime - startTime,\n message: response.message,\n }));\n return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID);\n }\n loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - error; no more retries left`);\n loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (error; no more retries left)`, formatRequestDetails({\n retryOfRequestLogID,\n url,\n durationMs: headersTime - startTime,\n message: response.message,\n }));\n if (response instanceof OAuthError || response instanceof SubjectTokenProviderError) {\n throw response;\n }\n if (isTimeout) {\n throw new Errors.APIConnectionTimeoutError();\n }\n throw new Errors.APIConnectionError({\n message: getConnectionErrorMessage(response),\n cause: response,\n });\n }\n const specialHeaders = [...response.headers.entries()]\n .filter(([name]) => name === 'x-request-id')\n .map(([name, value]) => ', ' + name + ': ' + JSON.stringify(value))\n .join('');\n const responseInfo = `[${requestLogID}${retryLogStr}${specialHeaders}] ${req.method} ${url} ${response.ok ? 'succeeded' : 'failed'} with status ${response.status} in ${headersTime - startTime}ms`;\n if (!response.ok) {\n if (response.status === 401 &&\n this._workloadIdentityAuth &&\n security.bearerAuth &&\n !options.__metadata?.['hasStreamingBody'] &&\n !options.__metadata?.['workloadIdentityTokenRefreshed']) {\n await Shims.CancelReadableStream(response.body);\n this._workloadIdentityAuth.invalidateToken();\n return this.makeRequest({\n ...options,\n __metadata: {\n ...options.__metadata,\n workloadIdentityTokenRefreshed: true,\n },\n }, retriesRemaining, retryOfRequestLogID ?? requestLogID);\n }\n const shouldRetry = await this.shouldRetry(response);\n if (retriesRemaining && shouldRetry) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n // We don't need the body of this response.\n await Shims.CancelReadableStream(response.body);\n loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n durationMs: headersTime - startTime,\n }));\n return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID, response.headers);\n }\n const retryMessage = shouldRetry ? `error; no more retries left` : `error; not retryable`;\n loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n const errText = await response.text().catch((err) => castToError(err).message);\n const errJSON = safeJSON(errText);\n const errMessage = errJSON ? undefined : errText;\n loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n message: errMessage,\n durationMs: Date.now() - startTime,\n }));\n const err = this.makeStatusError(response.status, errJSON, errMessage, response.headers);\n throw err;\n }\n loggerFor(this).info(responseInfo);\n loggerFor(this).debug(`[${requestLogID}] response start`, formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n durationMs: headersTime - startTime,\n }));\n return { response, options, controller, requestLogID, retryOfRequestLogID, startTime };\n }\n getAPIList(path, Page, opts) {\n return this.requestAPIList(Page, opts && 'then' in opts ?\n opts.then((opts) => ({ method: 'get', path, ...opts }))\n : { method: 'get', path, ...opts });\n }\n requestAPIList(Page, options) {\n const request = this.makeRequest(options, null, undefined);\n return new Pagination.PagePromise(this, request, Page);\n }\n async fetchWithAuth(url, init, timeout, controller, schemes = {\n bearerAuth: true,\n adminAPIKeyAuth: true,\n }) {\n if (this._workloadIdentityAuth && schemes.bearerAuth) {\n const headers = init.headers;\n const authHeader = headers.get('Authorization');\n if (!authHeader || authHeader === `Bearer ${WORKLOAD_IDENTITY_API_KEY_PLACEHOLDER}`) {\n const token = await this._workloadIdentityAuth.getToken();\n headers.set('Authorization', `Bearer ${token}`);\n }\n }\n const response = await this.fetchWithTimeout(url, init, timeout, controller);\n return response;\n }\n async fetchWithTimeout(url, init, ms, controller) {\n const { signal, method, ...options } = init || {};\n const abort = this._makeAbort(controller);\n if (signal)\n signal.addEventListener('abort', abort, { once: true });\n const timeout = setTimeout(abort, ms);\n const isReadableBody = (globalThis.ReadableStream && options.body instanceof globalThis.ReadableStream) ||\n (typeof options.body === 'object' && options.body !== null && Symbol.asyncIterator in options.body);\n const fetchOptions = {\n signal: controller.signal,\n ...(isReadableBody ? { duplex: 'half' } : {}),\n method: 'GET',\n ...options,\n };\n if (method) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = method.toUpperCase();\n }\n try {\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n return await this.fetch.call(undefined, url, fetchOptions);\n }\n finally {\n clearTimeout(timeout);\n }\n }\n async shouldRetry(response) {\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get('x-should-retry');\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === 'true')\n return true;\n if (shouldRetryHeader === 'false')\n return false;\n // Retry on request timeouts.\n if (response.status === 408)\n return true;\n // Retry on lock timeouts.\n if (response.status === 409)\n return true;\n // Retry on rate limits.\n if (response.status === 429)\n return true;\n // Retry internal errors.\n if (response.status >= 500)\n return true;\n return false;\n }\n async retryRequest(options, retriesRemaining, requestLogID, responseHeaders) {\n let timeoutMillis;\n // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n const retryAfterMillisHeader = responseHeaders?.get('retry-after-ms');\n if (retryAfterMillisHeader) {\n const timeoutMs = parseFloat(retryAfterMillisHeader);\n if (!Number.isNaN(timeoutMs)) {\n timeoutMillis = timeoutMs;\n }\n }\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfterHeader = responseHeaders?.get('retry-after');\n if (retryAfterHeader && !timeoutMillis) {\n const timeoutSeconds = parseFloat(retryAfterHeader);\n if (!Number.isNaN(timeoutSeconds)) {\n timeoutMillis = timeoutSeconds * 1000;\n }\n else {\n timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n }\n }\n // If the API asks us to wait a certain amount of time, just do what it\n // says, but otherwise calculate a default\n if (timeoutMillis === undefined) {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n }\n await sleep(timeoutMillis);\n return this.makeRequest(options, retriesRemaining - 1, requestLogID);\n }\n calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {\n const initialRetryDelay = 0.5;\n const maxRetryDelay = 8.0;\n const numRetries = maxRetries - retriesRemaining;\n // Apply exponential backoff, but not more than the max.\n const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n // Apply some jitter, take up to at most 25 percent of the retry time.\n const jitter = 1 - Math.random() * 0.25;\n return sleepSeconds * jitter * 1000;\n }\n async buildRequest(inputOptions, { retryCount = 0 } = {}) {\n const options = { ...inputOptions };\n const { method, path, query, defaultBaseURL } = options;\n const url = this.buildURL(path, query, defaultBaseURL);\n if ('timeout' in options)\n validatePositiveInteger('timeout', options.timeout);\n options.timeout = options.timeout ?? this.timeout;\n const { bodyHeaders, body, isStreamingBody } = this.buildBody({ options });\n if (isStreamingBody) {\n inputOptions.__metadata = {\n ...inputOptions.__metadata,\n hasStreamingBody: true,\n };\n }\n const reqHeaders = await this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount });\n const req = {\n method,\n headers: reqHeaders,\n ...(options.signal && { signal: options.signal }),\n ...(globalThis.ReadableStream &&\n body instanceof globalThis.ReadableStream && { duplex: 'half' }),\n ...(body && { body }),\n ...(this.fetchOptions ?? {}),\n ...(options.fetchOptions ?? {}),\n };\n return { req, url, timeout: options.timeout };\n }\n async buildHeaders({ options, method, bodyHeaders, retryCount, }) {\n let idempotencyHeaders = {};\n if (this.idempotencyHeader && method !== 'get') {\n if (!options.idempotencyKey)\n options.idempotencyKey = this.defaultIdempotencyKey();\n idempotencyHeaders[this.idempotencyHeader] = options.idempotencyKey;\n }\n const headers = buildHeaders([\n idempotencyHeaders,\n {\n Accept: 'application/json',\n 'User-Agent': this.getUserAgent(),\n 'X-Stainless-Retry-Count': String(retryCount),\n ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),\n ...getPlatformHeaders(),\n 'OpenAI-Organization': this.organization,\n 'OpenAI-Project': this.project,\n },\n await this.authHeaders(options, options.__security ?? { bearerAuth: true }),\n this._options.defaultHeaders,\n bodyHeaders,\n options.headers,\n ]);\n this.validateHeaders(headers, options.__security ?? { bearerAuth: true });\n return headers.values;\n }\n _makeAbort(controller) {\n // note: we can't just inline this method inside `fetchWithTimeout()` because then the closure\n // would capture all request options, and cause a memory leak.\n return () => controller.abort();\n }\n buildBody({ options: { body, headers: rawHeaders } }) {\n if (!body) {\n return { bodyHeaders: undefined, body: undefined, isStreamingBody: false };\n }\n const headers = buildHeaders([rawHeaders]);\n const isReadableStream = typeof globalThis.ReadableStream !== 'undefined' &&\n body instanceof globalThis.ReadableStream;\n const isRetryableBody = !isReadableStream &&\n (typeof body === 'string' ||\n body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n (typeof globalThis.Blob !== 'undefined' && body instanceof globalThis.Blob) ||\n body instanceof URLSearchParams ||\n body instanceof FormData);\n if (\n // Pass raw type verbatim\n ArrayBuffer.isView(body) ||\n body instanceof ArrayBuffer ||\n body instanceof DataView ||\n (typeof body === 'string' &&\n // Preserve legacy string encoding behavior for now\n headers.values.has('content-type')) ||\n // `Blob` is superset of `File`\n (globalThis.Blob && body instanceof globalThis.Blob) ||\n // `FormData` -> `multipart/form-data`\n body instanceof FormData ||\n // `URLSearchParams` -> `application/x-www-form-urlencoded`\n body instanceof URLSearchParams ||\n // Send chunked stream (each chunk has own `length`)\n isReadableStream) {\n return { bodyHeaders: undefined, body: body, isStreamingBody: !isRetryableBody };\n }\n else if (typeof body === 'object' &&\n (Symbol.asyncIterator in body ||\n (Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))) {\n return {\n bodyHeaders: undefined,\n body: Shims.ReadableStreamFrom(body),\n isStreamingBody: true,\n };\n }\n else if (typeof body === 'object' &&\n headers.values.get('content-type') === 'application/x-www-form-urlencoded') {\n return {\n bodyHeaders: { 'content-type': 'application/x-www-form-urlencoded' },\n body: this.stringifyQuery(body),\n isStreamingBody: false,\n };\n }\n else {\n return { ...__classPrivateFieldGet(this, _OpenAI_encoder, \"f\").call(this, { body, headers }), isStreamingBody: false };\n }\n }\n}\n_a = OpenAI, _OpenAI_encoder = new WeakMap(), _OpenAI_instances = new WeakSet(), _OpenAI_baseURLOverridden = function _OpenAI_baseURLOverridden() {\n return this.baseURL !== 'https://api.openai.com/v1';\n};\nOpenAI.OpenAI = _a;\nOpenAI.DEFAULT_TIMEOUT = 600000; // 10 minutes\nOpenAI.OpenAIError = Errors.OpenAIError;\nOpenAI.APIError = Errors.APIError;\nOpenAI.APIConnectionError = Errors.APIConnectionError;\nOpenAI.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nOpenAI.APIUserAbortError = Errors.APIUserAbortError;\nOpenAI.NotFoundError = Errors.NotFoundError;\nOpenAI.ConflictError = Errors.ConflictError;\nOpenAI.RateLimitError = Errors.RateLimitError;\nOpenAI.BadRequestError = Errors.BadRequestError;\nOpenAI.AuthenticationError = Errors.AuthenticationError;\nOpenAI.InternalServerError = Errors.InternalServerError;\nOpenAI.PermissionDeniedError = Errors.PermissionDeniedError;\nOpenAI.UnprocessableEntityError = Errors.UnprocessableEntityError;\nOpenAI.InvalidWebhookSignatureError = Errors.InvalidWebhookSignatureError;\nOpenAI.toFile = Uploads.toFile;\nOpenAI.Completions = Completions;\nOpenAI.Chat = Chat;\nOpenAI.Embeddings = Embeddings;\nOpenAI.Files = Files;\nOpenAI.Images = Images;\nOpenAI.Audio = Audio;\nOpenAI.Moderations = Moderations;\nOpenAI.Models = Models;\nOpenAI.FineTuning = FineTuning;\nOpenAI.Graders = Graders;\nOpenAI.VectorStores = VectorStores;\nOpenAI.Webhooks = Webhooks;\nOpenAI.Beta = Beta;\nOpenAI.Batches = Batches;\nOpenAI.Uploads = UploadsAPIUploads;\nOpenAI.Admin = Admin;\nOpenAI.Responses = Responses;\nOpenAI.Realtime = Realtime;\nOpenAI.Conversations = Conversations;\nOpenAI.Evals = Evals;\nOpenAI.Containers = Containers;\nOpenAI.Skills = Skills;\nOpenAI.Videos = Videos;\nfunction getConnectionErrorMessage(error) {\n if (isUndiciDispatcherVersionMismatchError(error)) {\n return `Connection error. This may be caused by passing an undici dispatcher, such as ProxyAgent, that is incompatible with the fetch implementation. If you are using undici's ProxyAgent, pass the fetch implementation from the same undici package: import { fetch, ProxyAgent } from 'undici'; new OpenAI({ fetch, fetchOptions: { dispatcher: new ProxyAgent(...) } });`;\n }\n return undefined;\n}\nfunction isUndiciDispatcherVersionMismatchError(error) {\n let current = error;\n for (let i = 0; i < 8 && current && typeof current === 'object'; i++) {\n const err = current;\n if (err.code === 'UND_ERR_INVALID_ARG' &&\n typeof err.message === 'string' &&\n err.message.includes('invalid onRequestStart method')) {\n return true;\n }\n current = err.cause;\n }\n return false;\n}\n//# sourceMappingURL=client.mjs.map","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","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 { 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 — 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","export const ignoreOverride = Symbol('Let zodToJsonSchema decide on which parser to use');\nconst defaultOptions = {\n name: undefined,\n $refStrategy: 'root',\n effectStrategy: 'input',\n pipeStrategy: 'all',\n dateStrategy: 'format:date-time',\n mapStrategy: 'entries',\n nullableStrategy: 'from-target',\n removeAdditionalStrategy: 'passthrough',\n definitionPath: 'definitions',\n target: 'jsonSchema7',\n strictUnions: false,\n errorMessages: false,\n markdownDescription: false,\n patternStrategy: 'escape',\n applyRegexFlags: false,\n emailStrategy: 'format:email',\n base64Strategy: 'contentEncoding:base64',\n nameStrategy: 'ref',\n};\nexport const getDefaultOptions = (options) => {\n // We need to add `definitions` here as we may mutate it\n return (typeof options === 'string' ?\n {\n ...defaultOptions,\n basePath: ['#'],\n definitions: {},\n name: options,\n }\n : {\n ...defaultOptions,\n basePath: ['#'],\n definitions: {},\n ...options,\n });\n};\n//# sourceMappingURL=Options.mjs.map","export const zodDef = (zodSchema) => {\n return '_def' in zodSchema ? zodSchema._def : zodSchema;\n};\nexport function isEmptyObj(obj) {\n if (!obj)\n return true;\n for (const _k in obj)\n return false;\n return true;\n}\n//# sourceMappingURL=util.mjs.map","import { getDefaultOptions } from \"./Options.mjs\";\nimport { zodDef } from \"./util.mjs\";\nexport const getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== undefined ?\n [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n currentPath: currentPath,\n propertyPath: undefined,\n seenRefs: new Set(),\n seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n zodDef(def),\n {\n def: zodDef(def),\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ])),\n };\n};\n//# sourceMappingURL=Refs.mjs.map","export function addErrorMessage(res, key, errorMessage, refs) {\n if (!refs?.errorMessages)\n return;\n if (errorMessage) {\n res.errorMessage = {\n ...res.errorMessage,\n [key]: errorMessage,\n };\n }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n res[key] = value;\n addErrorMessage(res, key, errorMessage, refs);\n}\n//# sourceMappingURL=errorMessages.mjs.map","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?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// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[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// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?: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])$/;\nconst ipv4CidrRegex = /^(?:(?: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])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(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\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\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 dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n // @ts-ignore\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n // @ts-ignore\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(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 { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\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 { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","export function parseAnyDef() {\n return {};\n}\n//# sourceMappingURL=any.mjs.map","import { ZodFirstPartyTypeKind } from 'zod/v3';\nimport { setResponseValueAndErrors } from \"../errorMessages.mjs\";\nimport { parseDef } from \"../parseDef.mjs\";\nexport function parseArrayDef(def, refs) {\n const res = {\n type: 'array',\n };\n if (def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n });\n }\n if (def.minLength) {\n setResponseValueAndErrors(res, 'minItems', def.minLength.value, def.minLength.message, refs);\n }\n if (def.maxLength) {\n setResponseValueAndErrors(res, 'maxItems', def.maxLength.value, def.maxLength.message, refs);\n }\n if (def.exactLength) {\n setResponseValueAndErrors(res, 'minItems', def.exactLength.value, def.exactLength.message, refs);\n setResponseValueAndErrors(res, 'maxItems', def.exactLength.value, def.exactLength.message, refs);\n }\n return res;\n}\n//# sourceMappingURL=array.mjs.map","import { setResponseValueAndErrors } from \"../errorMessages.mjs\";\nexport function parseBigintDef(def, refs) {\n const res = {\n type: 'integer',\n format: 'int64',\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, 'exclusiveMinimum', check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs);\n }\n break;\n case 'max':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, 'exclusiveMaximum', check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs);\n }\n break;\n case 'multipleOf':\n setResponseValueAndErrors(res, 'multipleOf', check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n//# sourceMappingURL=bigint.mjs.map","export function parseBooleanDef() {\n return {\n type: 'boolean',\n };\n}\n//# sourceMappingURL=boolean.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport function parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n//# sourceMappingURL=branded.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport const parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n//# sourceMappingURL=catch.mjs.map","import { setResponseValueAndErrors } from \"../errorMessages.mjs\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n switch (strategy) {\n case 'string':\n case 'format:date-time':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'format:date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'integer':\n return integerDateParser(def, refs);\n }\n}\nconst integerDateParser = (def, refs) => {\n const res = {\n type: 'integer',\n format: 'unix-time',\n };\n if (refs.target === 'openApi3') {\n return res;\n }\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n setResponseValueAndErrors(res, 'minimum', check.value, // This is in milliseconds\n check.message, refs);\n break;\n case 'max':\n setResponseValueAndErrors(res, 'maximum', check.value, // This is in milliseconds\n check.message, refs);\n break;\n }\n }\n return res;\n};\n//# sourceMappingURL=date.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport function parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n//# sourceMappingURL=default.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport function parseEffectsDef(_def, refs, forceResolution) {\n return refs.effectStrategy === 'input' ? parseDef(_def.schema._def, refs, forceResolution) : {};\n}\n//# sourceMappingURL=effects.mjs.map","export function parseEnumDef(def) {\n return {\n type: 'string',\n enum: [...def.values],\n };\n}\n//# sourceMappingURL=enum.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nconst isJsonSchema7AllOfType = (type) => {\n if ('type' in type && type.type === 'string')\n return false;\n return 'allOf' in type;\n};\nexport function parseIntersectionDef(def, refs) {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '1'],\n }),\n ].filter((x) => !!x);\n let unevaluatedProperties = refs.target === 'jsonSchema2019-09' ? { unevaluatedProperties: false } : undefined;\n const mergedAllOf = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n if (schema.unevaluatedProperties === undefined) {\n // If one of the schemas has no unevaluatedProperties set,\n // the merged schema should also have no unevaluatedProperties set\n unevaluatedProperties = undefined;\n }\n }\n else {\n let nestedSchema = schema;\n if ('additionalProperties' in schema && schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n else {\n // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n unevaluatedProperties = undefined;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length ?\n {\n allOf: mergedAllOf,\n ...unevaluatedProperties,\n }\n : undefined;\n}\n//# sourceMappingURL=intersection.mjs.map","export function parseLiteralDef(def, refs) {\n const parsedType = typeof def.value;\n if (parsedType !== 'bigint' &&\n parsedType !== 'number' &&\n parsedType !== 'boolean' &&\n parsedType !== 'string') {\n return {\n type: Array.isArray(def.value) ? 'array' : 'object',\n };\n }\n if (refs.target === 'openApi3') {\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n enum: [def.value],\n };\n }\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n const: def.value,\n };\n}\n//# sourceMappingURL=literal.mjs.map","import { setResponseValueAndErrors } from \"../errorMessages.mjs\";\nlet emojiRegex;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp('^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$', 'u');\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n 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])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: 'string',\n };\n function processPattern(value) {\n return refs.patternStrategy === 'escape' ? escapeNonAlphaNumeric(value) : value;\n }\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n setResponseValueAndErrors(res, 'minLength', typeof res.minLength === 'number' ? Math.max(res.minLength, check.value) : check.value, check.message, refs);\n break;\n case 'max':\n setResponseValueAndErrors(res, 'maxLength', typeof res.maxLength === 'number' ? Math.min(res.maxLength, check.value) : check.value, check.message, refs);\n break;\n case 'email':\n switch (refs.emailStrategy) {\n case 'format:email':\n addFormat(res, 'email', check.message, refs);\n break;\n case 'format:idn-email':\n addFormat(res, 'idn-email', check.message, refs);\n break;\n case 'pattern:zod':\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case 'url':\n addFormat(res, 'uri', check.message, refs);\n break;\n case 'uuid':\n addFormat(res, 'uuid', check.message, refs);\n break;\n case 'regex':\n addPattern(res, check.regex, check.message, refs);\n break;\n case 'cuid':\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case 'cuid2':\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case 'startsWith':\n addPattern(res, RegExp(`^${processPattern(check.value)}`), check.message, refs);\n break;\n case 'endsWith':\n addPattern(res, RegExp(`${processPattern(check.value)}$`), check.message, refs);\n break;\n case 'datetime':\n addFormat(res, 'date-time', check.message, refs);\n break;\n case 'date':\n addFormat(res, 'date', check.message, refs);\n break;\n case 'time':\n addFormat(res, 'time', check.message, refs);\n break;\n case 'duration':\n addFormat(res, 'duration', check.message, refs);\n break;\n case 'length':\n setResponseValueAndErrors(res, 'minLength', typeof res.minLength === 'number' ? Math.max(res.minLength, check.value) : check.value, check.message, refs);\n setResponseValueAndErrors(res, 'maxLength', typeof res.maxLength === 'number' ? Math.min(res.maxLength, check.value) : check.value, check.message, refs);\n break;\n case 'includes': {\n addPattern(res, RegExp(processPattern(check.value)), check.message, refs);\n break;\n }\n case 'ip': {\n if (check.version !== 'v6') {\n addFormat(res, 'ipv4', check.message, refs);\n }\n if (check.version !== 'v4') {\n addFormat(res, 'ipv6', check.message, refs);\n }\n break;\n }\n case 'emoji':\n addPattern(res, zodPatterns.emoji, check.message, refs);\n break;\n case 'ulid': {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case 'base64': {\n switch (refs.base64Strategy) {\n case 'format:binary': {\n addFormat(res, 'binary', check.message, refs);\n break;\n }\n case 'contentEncoding:base64': {\n setResponseValueAndErrors(res, 'contentEncoding', 'base64', check.message, refs);\n break;\n }\n case 'pattern:zod': {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case 'nanoid': {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case 'toLowerCase':\n case 'toUpperCase':\n case 'trim':\n break;\n default:\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nconst escapeNonAlphaNumeric = (value) => Array.from(value)\n .map((c) => (/[a-zA-Z0-9]/.test(c) ? c : `\\\\${c}`))\n .join('');\nconst addFormat = (schema, value, message, refs) => {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message && refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, 'format', value, message, refs);\n }\n};\nconst addPattern = (schema, regex, message, refs) => {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: processRegExp(regex, refs),\n ...(message && refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, 'pattern', processRegExp(regex, refs), message, refs);\n }\n};\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nconst processRegExp = (regexOrFunction, refs) => {\n const regex = typeof regexOrFunction === 'function' ? regexOrFunction() : regexOrFunction;\n if (!refs.applyRegexFlags || !regex.flags)\n return regex.source;\n // Currently handled flags\n const flags = {\n i: regex.flags.includes('i'), // Case-insensitive\n m: regex.flags.includes('m'), // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes('s'), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = '';\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === '-' && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === '^') {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === '$') {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === '.') {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === '\\\\') {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === ']') {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === '[') {\n inCharGroup = true;\n }\n }\n try {\n const regexTest = new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join('/')} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n};\n//# sourceMappingURL=string.mjs.map","import { ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseDef } from \"../parseDef.mjs\";\nimport { parseStringDef } from \"./string.mjs\";\nexport function parseRecordDef(def, refs) {\n if (refs.target === 'openApi3' && def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n type: 'object',\n required: def.keyType._def.values,\n properties: def.keyType._def.values.reduce((acc, key) => ({\n ...acc,\n [key]: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', key],\n }) ?? {},\n }), {}),\n additionalProperties: false,\n };\n }\n const schema = {\n type: 'object',\n additionalProperties: parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? {},\n };\n if (refs.target === 'openApi3') {\n return schema;\n }\n if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString && def.keyType._def.checks?.length) {\n const keyType = Object.entries(parseStringDef(def.keyType._def, refs)).reduce((acc, [key, value]) => (key === 'type' ? acc : { ...acc, [key]: value }), {});\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n }\n return schema;\n}\n//# sourceMappingURL=record.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nimport { parseRecordDef } from \"./record.mjs\";\nexport function parseMapDef(def, refs) {\n if (refs.mapStrategy === 'record') {\n return parseRecordDef(def, refs);\n }\n const keys = parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '0'],\n }) || {};\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '1'],\n }) || {};\n return {\n type: 'array',\n maxItems: 125,\n items: {\n type: 'array',\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n//# sourceMappingURL=map.mjs.map","export function parseNativeEnumDef(def) {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key) => {\n return typeof object[object[key]] !== 'number';\n });\n const actualValues = actualKeys.map((key) => object[key]);\n const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n return {\n type: parsedTypes.length === 1 ?\n parsedTypes[0] === 'string' ?\n 'string'\n : 'number'\n : ['string', 'number'],\n enum: actualValues,\n };\n}\n//# sourceMappingURL=nativeEnum.mjs.map","export function parseNeverDef() {\n return {\n not: {},\n };\n}\n//# sourceMappingURL=never.mjs.map","export function parseNullDef(refs) {\n return refs.target === 'openApi3' ?\n {\n enum: ['null'],\n nullable: true,\n }\n : {\n type: 'null',\n };\n}\n//# sourceMappingURL=null.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport const primitiveMappings = {\n ZodString: 'string',\n ZodNumber: 'number',\n ZodBigInt: 'integer',\n ZodBoolean: 'boolean',\n ZodNull: 'null',\n};\nexport function parseUnionDef(def, refs) {\n if (refs.target === 'openApi3')\n return asAnyOf(def, refs);\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (options.every((x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length))) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n const types = options.reduce((types, x) => {\n const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n return {\n type: types.length > 1 ? types : types[0],\n };\n }\n else if (options.every((x) => x._def.typeName === 'ZodLiteral' && !x.description)) {\n // all options literals\n const types = options.reduce((acc, x) => {\n const type = typeof x._def.value;\n switch (type) {\n case 'string':\n case 'number':\n case 'boolean':\n return [...acc, type];\n case 'bigint':\n return [...acc, 'integer'];\n case 'object':\n if (x._def.value === null)\n return [...acc, 'null'];\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return acc;\n }\n }, []);\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce((acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n }, []),\n };\n }\n }\n else if (options.every((x) => x._def.typeName === 'ZodEnum')) {\n return {\n type: 'string',\n enum: options.reduce((acc, x) => [...acc, ...x._def.values.filter((x) => !acc.includes(x))], []),\n };\n }\n return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map ? Array.from(def.options.values()) : def.options)\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', `${i}`],\n }))\n .filter((x) => !!x && (!refs.strictUnions || (typeof x === 'object' && Object.keys(x).length > 0)));\n return anyOf.length ? { anyOf } : undefined;\n};\n//# sourceMappingURL=union.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nimport { primitiveMappings } from \"./union.mjs\";\nexport function parseNullableDef(def, refs) {\n if (['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(def.innerType._def.typeName) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n if (refs.target === 'openApi3' || refs.nullableStrategy === 'property') {\n return {\n type: primitiveMappings[def.innerType._def.typeName],\n nullable: true,\n };\n }\n return {\n type: [primitiveMappings[def.innerType._def.typeName], 'null'],\n };\n }\n if (refs.target === 'openApi3') {\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath],\n });\n if (base && '$ref' in base)\n return { allOf: [base], nullable: true };\n return base && { ...base, nullable: true };\n }\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '0'],\n });\n return base && { anyOf: [base, { type: 'null' }] };\n}\n//# sourceMappingURL=nullable.mjs.map","import { addErrorMessage, setResponseValueAndErrors } from \"../errorMessages.mjs\";\nexport function parseNumberDef(def, refs) {\n const res = {\n type: 'number',\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case 'int':\n res.type = 'integer';\n addErrorMessage(res, 'type', check.message, refs);\n break;\n case 'min':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, 'exclusiveMinimum', check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMinimum = true;\n }\n setResponseValueAndErrors(res, 'minimum', check.value, check.message, refs);\n }\n break;\n case 'max':\n if (refs.target === 'jsonSchema7') {\n if (check.inclusive) {\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs);\n }\n else {\n setResponseValueAndErrors(res, 'exclusiveMaximum', check.value, check.message, refs);\n }\n }\n else {\n if (!check.inclusive) {\n res.exclusiveMaximum = true;\n }\n setResponseValueAndErrors(res, 'maximum', check.value, check.message, refs);\n }\n break;\n case 'multipleOf':\n setResponseValueAndErrors(res, 'multipleOf', check.value, check.message, refs);\n break;\n }\n }\n return res;\n}\n//# sourceMappingURL=number.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nfunction decideAdditionalProperties(def, refs) {\n if (refs.removeAdditionalStrategy === 'strict') {\n return def.catchall._def.typeName === 'ZodNever' ?\n def.unknownKeys !== 'strict'\n : parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true;\n }\n else {\n return def.catchall._def.typeName === 'ZodNever' ?\n def.unknownKeys === 'passthrough'\n : parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? true;\n }\n}\nexport function parseObjectDef(def, refs) {\n const result = {\n type: 'object',\n ...Object.entries(def.shape()).reduce((acc, [propName, propDef]) => {\n if (propDef === undefined || propDef._def === undefined)\n return acc;\n const propertyPath = [...refs.currentPath, 'properties', propName];\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: propertyPath,\n propertyPath,\n });\n if (parsedDef === undefined)\n return acc;\n if (refs.openaiStrictMode &&\n propDef.isOptional() &&\n !propDef.isNullable() &&\n typeof propDef._def?.defaultValue === 'undefined') {\n throw new Error(`Zod field at \\`${propertyPath.join('/')}\\` uses \\`.optional()\\` without \\`.nullable()\\` which is not supported by the API. See: https://platform.openai.com/docs/guides/structured-outputs?api-mode=responses#all-fields-must-be-required`);\n }\n return {\n properties: {\n ...acc.properties,\n [propName]: parsedDef,\n },\n required: propDef.isOptional() && !refs.openaiStrictMode ? acc.required : [...acc.required, propName],\n };\n }, { properties: {}, required: [] }),\n additionalProperties: decideAdditionalProperties(def, refs),\n };\n if (!result.required.length)\n delete result.required;\n return result;\n}\n//# sourceMappingURL=object.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport const parseOptionalDef = (def, refs) => {\n if (refs.propertyPath &&\n refs.currentPath.slice(0, refs.propertyPath.length).toString() === refs.propertyPath.toString()) {\n return parseDef(def.innerType._def, { ...refs, currentPath: refs.currentPath });\n }\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '1'],\n });\n return innerSchema ?\n {\n anyOf: [\n {\n not: {},\n },\n innerSchema,\n ],\n }\n : {};\n};\n//# sourceMappingURL=optional.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport const parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === 'input') {\n return parseDef(def.in._def, refs);\n }\n else if (refs.pipeStrategy === 'output') {\n return parseDef(def.out._def, refs);\n }\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'],\n });\n return {\n allOf: [a, b].filter((x) => x !== undefined),\n };\n};\n//# sourceMappingURL=pipeline.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport function parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n//# sourceMappingURL=promise.mjs.map","import { setResponseValueAndErrors } from \"../errorMessages.mjs\";\nimport { parseDef } from \"../parseDef.mjs\";\nexport function parseSetDef(def, refs) {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n });\n const schema = {\n type: 'array',\n uniqueItems: true,\n items,\n };\n if (def.minSize) {\n setResponseValueAndErrors(schema, 'minItems', def.minSize.value, def.minSize.message, refs);\n }\n if (def.maxSize) {\n setResponseValueAndErrors(schema, 'maxItems', def.maxSize.value, def.maxSize.message, refs);\n }\n return schema;\n}\n//# sourceMappingURL=set.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport function parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: 'array',\n minItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalItems'],\n }),\n };\n }\n else {\n return {\n type: 'array',\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }))\n .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n };\n }\n}\n//# sourceMappingURL=tuple.mjs.map","export function parseUndefinedDef() {\n return {\n not: {},\n };\n}\n//# sourceMappingURL=undefined.mjs.map","export function parseUnknownDef() {\n return {};\n}\n//# sourceMappingURL=unknown.mjs.map","import { parseDef } from \"../parseDef.mjs\";\nexport const parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n//# sourceMappingURL=readonly.mjs.map","import { ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseAnyDef } from \"./parsers/any.mjs\";\nimport { parseArrayDef } from \"./parsers/array.mjs\";\nimport { parseBigintDef } from \"./parsers/bigint.mjs\";\nimport { parseBooleanDef } from \"./parsers/boolean.mjs\";\nimport { parseBrandedDef } from \"./parsers/branded.mjs\";\nimport { parseCatchDef } from \"./parsers/catch.mjs\";\nimport { parseDateDef } from \"./parsers/date.mjs\";\nimport { parseDefaultDef } from \"./parsers/default.mjs\";\nimport { parseEffectsDef } from \"./parsers/effects.mjs\";\nimport { parseEnumDef } from \"./parsers/enum.mjs\";\nimport { parseIntersectionDef } from \"./parsers/intersection.mjs\";\nimport { parseLiteralDef } from \"./parsers/literal.mjs\";\nimport { parseMapDef } from \"./parsers/map.mjs\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.mjs\";\nimport { parseNeverDef } from \"./parsers/never.mjs\";\nimport { parseNullDef } from \"./parsers/null.mjs\";\nimport { parseNullableDef } from \"./parsers/nullable.mjs\";\nimport { parseNumberDef } from \"./parsers/number.mjs\";\nimport { parseObjectDef } from \"./parsers/object.mjs\";\nimport { parseOptionalDef } from \"./parsers/optional.mjs\";\nimport { parsePipelineDef } from \"./parsers/pipeline.mjs\";\nimport { parsePromiseDef } from \"./parsers/promise.mjs\";\nimport { parseRecordDef } from \"./parsers/record.mjs\";\nimport { parseSetDef } from \"./parsers/set.mjs\";\nimport { parseStringDef } from \"./parsers/string.mjs\";\nimport { parseTupleDef } from \"./parsers/tuple.mjs\";\nimport { parseUndefinedDef } from \"./parsers/undefined.mjs\";\nimport { parseUnionDef } from \"./parsers/union.mjs\";\nimport { parseUnknownDef } from \"./parsers/unknown.mjs\";\nimport { parseReadonlyDef } from \"./parsers/readonly.mjs\";\nimport { ignoreOverride } from \"./Options.mjs\";\nexport function parseDef(def, refs, forceResolution = false) {\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== undefined) {\n if ('$ref' in seenSchema) {\n refs.seenRefs.add(seenSchema.$ref);\n }\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n refs.seen.set(def, newItem);\n const jsonSchema = selectParser(def, def.typeName, refs, forceResolution);\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n newItem.jsonSchema = jsonSchema;\n return jsonSchema;\n}\nconst get$ref = (item, refs) => {\n switch (refs.$refStrategy) {\n case 'root':\n return { $ref: item.path.join('/') };\n // this case is needed as OpenAI strict mode doesn't support top-level `$ref`s, i.e.\n // the top-level schema *must* be `{\"type\": \"object\", \"properties\": {...}}` but if we ever\n // need to define a `$ref`, relative `$ref`s aren't supported, so we need to extract\n // the schema to `#/definitions/` and reference that.\n //\n // e.g. if we need to reference a schema at\n // `[\"#\",\"definitions\",\"contactPerson\",\"properties\",\"person1\",\"properties\",\"name\"]`\n // then we'll extract it out to `contactPerson_properties_person1_properties_name`\n case 'extract-to-root':\n const name = item.path.slice(refs.basePath.length + 1).join('_');\n // we don't need to extract the root schema in this case, as it's already\n // been added to the definitions\n if (name !== refs.name && refs.nameStrategy === 'duplicate-ref') {\n refs.definitions[name] = item.def;\n }\n return { $ref: [...refs.basePath, refs.definitionPath, name].join('/') };\n case 'relative':\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case 'none':\n case 'seen': {\n if (item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(`Recursive reference detected at ${refs.currentPath.join('/')}! Defaulting to any`);\n return {};\n }\n return refs.$refStrategy === 'seen' ? {} : undefined;\n }\n }\n};\nconst getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i])\n break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/');\n};\nconst selectParser = (def, typeName, refs, forceResolution) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def, refs);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef();\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef(refs);\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def, refs);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return parseDef(def.getter()._def, refs);\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef();\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs, forceResolution);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef();\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef();\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n return ((_) => undefined)(typeName);\n }\n};\nconst addMeta = (def, refs, jsonSchema) => {\n if (def.description) {\n jsonSchema.description = def.description;\n if (refs.markdownDescription) {\n jsonSchema.markdownDescription = def.description;\n }\n }\n return jsonSchema;\n};\n//# sourceMappingURL=parseDef.mjs.map","import { parseDef } from \"./parseDef.mjs\";\nimport { getRefs } from \"./Refs.mjs\";\nimport { zodDef, isEmptyObj } from \"./util.mjs\";\nconst zodToJsonSchema = (schema, options) => {\n const refs = getRefs(options);\n const name = typeof options === 'string' ? options\n : options?.nameStrategy === 'title' ? undefined\n : options?.name;\n const main = parseDef(schema._def, name === undefined ? refs : ({\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n }), false) ?? {};\n const title = typeof options === 'object' && options.name !== undefined && options.nameStrategy === 'title' ?\n options.name\n : undefined;\n if (title !== undefined) {\n main.title = title;\n }\n const definitions = (() => {\n if (isEmptyObj(refs.definitions)) {\n return undefined;\n }\n const definitions = {};\n const processedDefinitions = new Set();\n // the call to `parseDef()` here might itself add more entries to `.definitions`\n // so we need to continually evaluate definitions until we've resolved all of them\n //\n // we have a generous iteration limit here to avoid blowing up the stack if there\n // are any bugs that would otherwise result in us iterating indefinitely\n for (let i = 0; i < 500; i++) {\n const newDefinitions = Object.entries(refs.definitions).filter(([key]) => !processedDefinitions.has(key));\n if (newDefinitions.length === 0)\n break;\n for (const [key, schema] of newDefinitions) {\n definitions[key] =\n parseDef(zodDef(schema), { ...refs, currentPath: [...refs.basePath, refs.definitionPath, key] }, true) ?? {};\n processedDefinitions.add(key);\n }\n }\n return definitions;\n })();\n const combined = name === undefined ?\n definitions ?\n {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : refs.nameStrategy === 'duplicate-ref' ?\n {\n ...main,\n ...(definitions || refs.seenRefs.size ?\n {\n [refs.definitionPath]: {\n ...definitions,\n // only actually duplicate the schema definition if it was ever referenced\n // otherwise the duplication is completely pointless\n ...(refs.seenRefs.size ? { [name]: main } : undefined),\n },\n }\n : undefined),\n }\n : {\n $ref: [...(refs.$refStrategy === 'relative' ? [] : refs.basePath), refs.definitionPath, name].join('/'),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n if (refs.target === 'jsonSchema7') {\n combined.$schema = 'http://json-schema.org/draft-07/schema#';\n }\n else if (refs.target === 'jsonSchema2019-09') {\n combined.$schema = 'https://json-schema.org/draft/2019-09/schema#';\n }\n return combined;\n};\nexport { zodToJsonSchema };\n//# sourceMappingURL=zodToJsonSchema.mjs.map","export function toStrictJsonSchema(schema) {\n if (schema.type !== 'object') {\n throw new Error(`Root schema must have type: 'object' but got type: ${schema.type ? `'${schema.type}'` : 'undefined'}`);\n }\n const schemaCopy = structuredClone(schema);\n return ensureStrictJsonSchema(schemaCopy, [], schemaCopy);\n}\nfunction isNullable(schema) {\n if (typeof schema === 'boolean') {\n return false;\n }\n if (schema.type === 'null') {\n return true;\n }\n for (const oneOfVariant of schema.oneOf ?? []) {\n if (isNullable(oneOfVariant)) {\n return true;\n }\n }\n for (const allOfVariant of schema.anyOf ?? []) {\n if (isNullable(allOfVariant)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Mutates the given JSON schema to ensure it conforms to the `strict` standard\n * that the API expects.\n */\nfunction ensureStrictJsonSchema(jsonSchema, path, root) {\n if (typeof jsonSchema === 'boolean') {\n throw new TypeError(`Expected object schema but got boolean; path=${path.join('/')}`);\n }\n if (!isObject(jsonSchema)) {\n throw new TypeError(`Expected ${JSON.stringify(jsonSchema)} to be an object; path=${path.join('/')}`);\n }\n // Handle $defs (non-standard but sometimes used)\n const defs = jsonSchema.$defs;\n if (isObject(defs)) {\n for (const [defName, defSchema] of Object.entries(defs)) {\n ensureStrictJsonSchema(defSchema, [...path, '$defs', defName], root);\n }\n }\n // Handle definitions (draft-04 style, deprecated in draft-07 but still used)\n const definitions = jsonSchema.definitions;\n if (isObject(definitions)) {\n for (const [definitionName, definitionSchema] of Object.entries(definitions)) {\n ensureStrictJsonSchema(definitionSchema, [...path, 'definitions', definitionName], root);\n }\n }\n // Add additionalProperties: false to object types\n const typ = jsonSchema.type;\n if (typ === 'object' && !('additionalProperties' in jsonSchema)) {\n jsonSchema.additionalProperties = false;\n }\n const required = jsonSchema.required ?? [];\n // Handle object properties\n const properties = jsonSchema.properties;\n if (isObject(properties)) {\n for (const [key, value] of Object.entries(properties)) {\n if (!isNullable(value) && !required.includes(key)) {\n throw new Error(`Zod field at \\`${[...path, 'properties', key].join('/')}\\` uses \\`.optional()\\` without \\`.nullable()\\` which is not supported by the API. See: https://platform.openai.com/docs/guides/structured-outputs?api-mode=responses#all-fields-must-be-required`);\n }\n }\n jsonSchema.required = Object.keys(properties);\n jsonSchema.properties = Object.fromEntries(Object.entries(properties).map(([key, propSchema]) => [\n key,\n ensureStrictJsonSchema(propSchema, [...path, 'properties', key], root),\n ]));\n }\n // Handle arrays\n const items = jsonSchema.items;\n if (isObject(items)) {\n jsonSchema.items = ensureStrictJsonSchema(items, [...path, 'items'], root);\n }\n // Handle unions (anyOf)\n const anyOf = jsonSchema.anyOf;\n if (Array.isArray(anyOf)) {\n jsonSchema.anyOf = anyOf.map((variant, i) => ensureStrictJsonSchema(variant, [...path, 'anyOf', String(i)], root));\n }\n // Handle intersections (allOf)\n const allOf = jsonSchema.allOf;\n if (Array.isArray(allOf)) {\n if (allOf.length === 1) {\n const resolved = ensureStrictJsonSchema(allOf[0], [...path, 'allOf', '0'], root);\n Object.assign(jsonSchema, resolved);\n delete jsonSchema.allOf;\n }\n else {\n jsonSchema.allOf = allOf.map((entry, i) => ensureStrictJsonSchema(entry, [...path, 'allOf', String(i)], root));\n }\n }\n // Strip `null` defaults as there's no meaningful distinction\n if (jsonSchema.default === null) {\n delete jsonSchema.default;\n }\n // Handle $ref with additional properties\n const ref = jsonSchema.$ref;\n if (ref && hasMoreThanNKeys(jsonSchema, 1)) {\n if (typeof ref !== 'string') {\n throw new TypeError(`Received non-string $ref - ${ref}; path=${path.join('/')}`);\n }\n const resolved = resolveRef(root, ref);\n if (typeof resolved === 'boolean') {\n throw new Error(`Expected \\`$ref: ${ref}\\` to resolve to an object schema but got boolean`);\n }\n if (!isObject(resolved)) {\n throw new Error(`Expected \\`$ref: ${ref}\\` to resolve to an object but got ${JSON.stringify(resolved)}`);\n }\n // Properties from the json schema take priority over the ones on the `$ref`\n Object.assign(jsonSchema, { ...resolved, ...jsonSchema });\n delete jsonSchema.$ref;\n // Since the schema expanded from `$ref` might not have `additionalProperties: false` applied,\n // we call `ensureStrictJsonSchema` again to fix the inlined schema and ensure it's valid.\n return ensureStrictJsonSchema(jsonSchema, path, root);\n }\n return jsonSchema;\n}\nfunction resolveRef(root, ref) {\n if (!ref.startsWith('#/')) {\n throw new Error(`Unexpected $ref format ${JSON.stringify(ref)}; Does not start with #/`);\n }\n const pathParts = ref.slice(2).split('/');\n let resolved = root;\n for (const key of pathParts) {\n if (!isObject(resolved)) {\n throw new Error(`encountered non-object entry while resolving ${ref} - ${JSON.stringify(resolved)}`);\n }\n const value = resolved[key];\n if (value === undefined) {\n throw new Error(`Key ${key} not found while resolving ${ref}`);\n }\n resolved = value;\n }\n return resolved;\n}\nfunction isObject(obj) {\n return typeof obj === 'object' && obj !== null && !Array.isArray(obj);\n}\nfunction hasMoreThanNKeys(obj, n) {\n let i = 0;\n for (const _ in obj) {\n i++;\n if (i > n) {\n return true;\n }\n }\n return false;\n}\n//# sourceMappingURL=transform.mjs.map","import * as z4 from 'zod/v4';\nimport { makeParseableResponseFormat, makeParseableTextFormat, makeParseableTool, } from \"../lib/parser.mjs\";\nimport { zodToJsonSchema as _zodToJsonSchema } from \"../_vendor/zod-to-json-schema/index.mjs\";\nimport { makeParseableResponseTool } from \"../lib/ResponsesParser.mjs\";\nimport { toStrictJsonSchema } from \"../lib/transform.mjs\";\nfunction zodV3ToJsonSchema(schema, options) {\n return _zodToJsonSchema(schema, {\n openaiStrictMode: true,\n name: options.name,\n nameStrategy: 'duplicate-ref',\n $refStrategy: 'extract-to-root',\n nullableStrategy: 'property',\n });\n}\nfunction zodV4ToJsonSchema(schema) {\n return toStrictJsonSchema(z4.toJSONSchema(schema, {\n target: 'draft-7',\n }));\n}\nfunction isZodV4(zodObject) {\n return '_zod' in zodObject;\n}\n/**\n * Creates a chat completion `JSONSchema` response format object from\n * the given Zod schema.\n *\n * If this is passed to the `.parse()`, `.stream()` or `.runTools()`\n * chat completion methods then the response message will contain a\n * `.parsed` property that is the result of parsing the content with\n * the given Zod object.\n *\n * ```ts\n * const completion = await client.chat.completions.parse({\n * model: 'gpt-4o-2024-08-06',\n * messages: [\n * { role: 'system', content: 'You are a helpful math tutor.' },\n * { role: 'user', content: 'solve 8x + 31 = 2' },\n * ],\n * response_format: zodResponseFormat(\n * z.object({\n * steps: z.array(z.object({\n * explanation: z.string(),\n * answer: z.string(),\n * })),\n * final_answer: z.string(),\n * }),\n * 'math_answer',\n * ),\n * });\n * const message = completion.choices[0]?.message;\n * if (message?.parsed) {\n * console.log(message.parsed);\n * console.log(message.parsed.final_answer);\n * }\n * ```\n *\n * This can be passed directly to the `.create()` method but will not\n * result in any automatic parsing, you'll have to parse the response yourself.\n */\nexport function zodResponseFormat(zodObject, name, props) {\n return makeParseableResponseFormat({\n type: 'json_schema',\n json_schema: {\n ...props,\n name,\n strict: true,\n schema: isZodV4(zodObject) ? zodV4ToJsonSchema(zodObject) : zodV3ToJsonSchema(zodObject, { name }),\n },\n }, (content) => zodObject.parse(JSON.parse(content)));\n}\nexport function zodTextFormat(zodObject, name, props) {\n return makeParseableTextFormat({\n type: 'json_schema',\n ...props,\n name,\n strict: true,\n schema: isZodV4(zodObject) ? zodV4ToJsonSchema(zodObject) : zodV3ToJsonSchema(zodObject, { name }),\n }, (content) => zodObject.parse(JSON.parse(content)));\n}\n/**\n * Creates a chat completion `function` tool that can be invoked\n * automatically by the chat completion `.runTools()` method or automatically\n * parsed by `.parse()` / `.stream()`.\n */\nexport function zodFunction(options) {\n // @ts-expect-error TODO\n return makeParseableTool({\n type: 'function',\n function: {\n name: options.name,\n parameters: isZodV4(options.parameters) ?\n zodV4ToJsonSchema(options.parameters)\n : zodV3ToJsonSchema(options.parameters, { name: options.name }),\n strict: true,\n ...(options.description ? { description: options.description } : undefined),\n },\n }, {\n callback: options.function,\n parser: (args) => options.parameters.parse(JSON.parse(args)),\n });\n}\nexport function zodResponsesFunction(options) {\n return makeParseableResponseTool({\n type: 'function',\n name: options.name,\n parameters: isZodV4(options.parameters) ?\n zodV4ToJsonSchema(options.parameters)\n : zodV3ToJsonSchema(options.parameters, { name: options.name }),\n strict: true,\n ...(options.description ? { description: options.description } : undefined),\n }, {\n callback: options.function,\n parser: (args) => options.parameters.parse(JSON.parse(args)),\n });\n}\n//# sourceMappingURL=zod.mjs.map",null,null,null,null,null,null,null,null,"'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [options.isServer=false] Create the instance in either\n * server or client mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n */\n constructor(options) {\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._maxPayload = this._options.maxPayload | 0;\n this._isServer = !!this._options.isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxBufferedChunks = options.maxBufferedChunks | 0;\n this._maxFragments = options.maxFragments | 0;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n if (\n this._maxBufferedChunks > 0 &&\n this._buffers.length >= this._maxBufferedChunks\n ) {\n cb(\n this.createError(\n RangeError,\n 'Too many buffered chunks',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n )\n );\n return;\n }\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n if (\n this._maxFragments > 0 &&\n this._fragments.length >= this._maxFragments\n ) {\n const error = this.createError(\n RangeError,\n 'Too many message fragments',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n );\n\n cb(error);\n return;\n }\n\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._maxFragments > 0 &&\n this._fragments.length >= this._maxFragments\n ) {\n const error = this.createError(\n RangeError,\n 'Too many message fragments',\n false,\n 1008,\n 'WS_ERR_TOO_MANY_BUFFERED_PARTS'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\nconst {\n types: { isUint8Array }\n} = require('util');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else if (isUint8Array(data)) {\n buf.set(data, 2);\n } else {\n throw new TypeError('Second argument must be a string or a Uint8Array');\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxBufferedChunks=0] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=0] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxBufferedChunks: options.maxBufferedChunks,\n maxFragments: options.maxFragments,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxBufferedChunks=1048576] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=131072] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxBufferedChunks: 1024 * 1024,\n maxFragments: 128 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate({\n ...opts.perMessageDeflate,\n isServer: false,\n maxPayload: opts.maxPayload\n });\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxBufferedChunks: opts.maxBufferedChunks,\n maxFragments: opts.maxFragments,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxBufferedChunks=1048576] The maximum number of\n * buffered data chunks\n * @param {Number} [options.maxFragments=131072] The maximum number of message\n * fragments\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxBufferedChunks: 1024 * 1024,\n maxFragments: 128 * 1024,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate({\n ...this.options.perMessageDeflate,\n isServer: true,\n maxPayload: this.options.maxPayload\n });\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxBufferedChunks: this.options.maxBufferedChunks,\n maxFragments: this.options.maxFragments,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n","const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\n\n// Array of tips to display randomly\nconst TIPS = [\n '◈ encrypted .env [www.dotenvx.com]',\n '◈ secrets for agents [www.dotenvx.com]',\n '⌁ auth for agents [www.vestauth.com]',\n '⌘ custom filepath { path: \\'/custom/path/.env\\' }',\n '⌘ enable debugging { debug: true }',\n '⌘ override existing { override: true }',\n '⌘ suppress logs { quiet: true }',\n '⌘ multiple files { path: [\\'.env.local\\', \\'.env\\'] }'\n]\n\n// Get a random tip from the tips array\nfunction _getRandomTip () {\n return TIPS[Math.floor(Math.random() * TIPS.length)]\n}\n\nfunction parseBoolean (value) {\n if (typeof value === 'string') {\n return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase())\n }\n return Boolean(value)\n}\n\nfunction supportsAnsi () {\n return process.stdout.isTTY // && process.env.TERM !== 'dumb'\n}\n\nfunction dim (text) {\n return supportsAnsi() ? `\\x1b[2m${text}\\x1b[0m` : text\n}\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.error(`⚠ ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`┆ ${message}`)\n}\n\nfunction _log (message) {\n console.log(`◇ ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug))\n const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (debug || !quiet) {\n _log('loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug))\n let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet))\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('no encoding is specified (UTF-8 is used by default)')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n const populated = DotenvModule.populate(processEnv, parsedAll, options)\n\n // handle user settings DOTENV_CONFIG_ options inside .env file(s)\n debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug)\n quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(populated).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injected env (${keysCount}) from ${shortPaths.join(',')} ${dim(`// tip: ${_getRandomTip()}`)}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`you set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n const populated = {}\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n populated[key] = parsed[key]\n }\n }\n\n return populated\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","// ../config.js accepts options via environment variables\nconst options = {}\n\nif (process.env.DOTENV_CONFIG_ENCODING != null) {\n options.encoding = process.env.DOTENV_CONFIG_ENCODING\n}\n\nif (process.env.DOTENV_CONFIG_PATH != null) {\n options.path = process.env.DOTENV_CONFIG_PATH\n}\n\nif (process.env.DOTENV_CONFIG_QUIET != null) {\n options.quiet = process.env.DOTENV_CONFIG_QUIET\n}\n\nif (process.env.DOTENV_CONFIG_DEBUG != null) {\n options.debug = process.env.DOTENV_CONFIG_DEBUG\n}\n\nif (process.env.DOTENV_CONFIG_OVERRIDE != null) {\n options.override = process.env.DOTENV_CONFIG_OVERRIDE\n}\n\nif (process.env.DOTENV_CONFIG_DOTENV_KEY != null) {\n options.DOTENV_KEY = process.env.DOTENV_CONFIG_DOTENV_KEY\n}\n\nmodule.exports = options\n","const re = /^dotenv_config_(encoding|path|quiet|debug|override|DOTENV_KEY)=(.+)$/\n\nmodule.exports = function optionMatcher (args) {\n const options = args.reduce(function (acc, cur) {\n const matches = cur.match(re)\n if (matches) {\n acc[matches[1]] = matches[2]\n }\n return acc\n }, {})\n\n if (!('quiet' in options)) {\n options.quiet = 'true'\n }\n\n return options\n}\n","(function () {\n require('./lib/main').config(\n Object.assign(\n {},\n require('./lib/env-options'),\n require('./lib/cli-options')(process.argv)\n )\n )\n})()\n",null,null,null],"names":["log","isEmptyObj","qs.stringify","Shims.getDefaultFetch","isAutoParsableTool","hasAutoParseableInput","parseToolCall","MessagesAPI.Messages","Completions","Messages","CompletionsAPI.Completions","UsersAPI.Users","RolesAPI.Roles","Groups","Users","Roles","ServiceAccountsAPI.ServiceAccounts","APIKeysAPI.APIKeys","RateLimitsAPI.RateLimits","ModelPermissionsAPI.ModelPermissions","HostedToolPermissionsAPI.HostedToolPermissions","GroupsAPI.Groups","DataRetentionAPI.DataRetention","SpendAlertsAPI.SpendAlerts","CertificatesAPI.Certificates","AuditLogsAPI.AuditLogs","AdminAPIKeysAPI.AdminAPIKeys","UsageAPI.Usage","InvitesAPI.Invites","ProjectsAPI.Projects","DataRetention","SpendAlerts","Certificates","OrganizationAPI.Organization","TranscriptionsAPI.Transcriptions","TranslationsAPI.Translations","SpeechAPI.Speech","SessionsAPI.Sessions","TranscriptionSessionsAPI.TranscriptionSessions","Realtime","Sessions","ThreadsAPI.Threads","Threads","_a","StepsAPI.Steps","Runs","RunsAPI.Runs","RealtimeAPI.Realtime","ChatKitAPI.ChatKit","AssistantsAPI.Assistants","ContentAPI.Content","Files","Content","FilesAPI.Files","ItemsAPI.Items","OutputItemsAPI.OutputItems","GradersAPI.Graders","Graders","PermissionsAPI.Permissions","Checkpoints","CheckpointsAPI.Checkpoints","MethodsAPI.Methods","JobsAPI.Jobs","AlphaAPI.Alpha","GraderModelsAPI.GraderModels","ClientSecretsAPI.ClientSecrets","CallsAPI.Calls","parseResponse","InputItemsAPI.InputItems","InputTokensAPI.InputTokens","VersionsAPI.Versions","PartsAPI.Parts","FileBatchesAPI.FileBatches","API.Completions","API.Chat","API.Embeddings","API.Files","API.Images","API.Audio","API.Moderations","API.Models","API.FineTuning","API.Graders","API.VectorStores","API.Webhooks","API.Beta","API.Batches","API.Uploads","API.Admin","API.Responses","API.Realtime","API.Conversations","API.Evals","API.Containers","API.Skills","API.Videos","Errors.OpenAIError","Opts.FallbackEncoder","Errors.APIError","Errors.APIUserAbortError","Errors.APIConnectionTimeoutError","Errors.APIConnectionError","Shims.CancelReadableStream","Pagination.PagePromise","Shims.ReadableStreamFrom","Errors.NotFoundError","Errors.ConflictError","Errors.RateLimitError","Errors.BadRequestError","Errors.AuthenticationError","Errors.InternalServerError","Errors.PermissionDeniedError","Errors.UnprocessableEntityError","Errors.InvalidWebhookSignatureError","Uploads.toFile","UploadsAPIUploads","process","_zodToJsonSchema","z4.toJSONSchema","require$$0","bufferUtilModule","bufferUtil","require$$1","require$$2","require$$3","validationModule","require$$4","require$$5","require$$6","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$7","mainModule","baseLog","ft.capFirstLetter","ft.formatCurrency","ft.formatNumber","ft.formatPercentage","ft.dateTimeForGS","llm.makeLLMCall","llm.uploadVisionFile","deepseek.makeDeepseekCall","llmImages.makeImagesCall","openrouter.makeOpenRouterCall","mt.convertDateToMarketTimeZone","mt.getStartAndEndDates","mt.getMarketOpenClose","mt.getOpenCloseForTradingDay","mt.getLastFullTradingDate","mt.getNextMarketDay","mt.getPreviousMarketDay","mt.getMarketTimePeriod","mt.getMarketStatus","mt.getNYTimeZone","mt.getTradingDate","mt.getTradingStartAndEndDates","mt.getTradingDaysBack","mt.isMarketDay","mt.isWithinMarketHours","mt.countTradingDays","mt.MARKET_TIMES","misc.logIfDebug","misc.fetchWithRetry"],"mappings":";;;;;;;;;;;;;;;AAEA;;;;;;;;AAQG;AACG,SAAUA,KAAG,CAAC,OAAe,EAAE,OAAA,GAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAA;;AAExF,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AACvB,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;AAChF,IAAA,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO;AAChC,IAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;;IAG9B,MAAM,UAAU,GAAG,CAAA,CAAA,EAAI,SAAS,IAAI,OAAO,EAAE,MAAM,GAAG,CAAA,EAAA,EAAK,OAAO,CAAC,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE,CAAA,EAChF,OAAO,GAAG,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAI,GAAG,EAC/B,CAAA,EAAG,MAAM,GAAG,CAAA,EAAA,EAAK,MAAM,IAAI,GAAG,EAAE,CAAA,EAAG,OAAO,CAAA,CAAE;;AAG5C,IAAA,IAAI,OAAO,EAAE,IAAI,KAAK,OAAO,EAAE;AAC7B,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;IAC3B;AAAO,SAAA,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,EAAE;AACnC,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1B;SAAO;AACL,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzB;AACF;;AC/BA;AA6BO,MAAM,cAAc,GAAmB;AAC5C,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,QAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrD,QAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/C,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrC,QAAA,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACtC,QAAA,sCAAsC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC9D,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnC,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,QAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnD,QAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrD,QAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/C,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrC,QAAA,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACtC,QAAA,sCAAsC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC9D,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnC,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,QAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrD,QAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/C,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrC,QAAA,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACtC,QAAA,sCAAsC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC9D,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnC,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,KAAA;CACF;AAEM,MAAM,iBAAiB,GAAsB;AAClD,IAAA,IAAI,EAAE;AACJ,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,uOAAuO;AAC1O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,yOAAyO;AAC5O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,0OAA0O;AAC7O,SAAA;AACF,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,sOAAsO;AACzO,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,yOAAyO;AAC5O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,4OAA4O;AAC/O,SAAA;AACF,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,uOAAuO;AAC1O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,yOAAyO;AAC5O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,2OAA2O;AAC9O,SAAA;AACF,KAAA;CACF;;AC5HD;AACO,MAAM,aAAa,GAAG;AAC3B,IAAA,QAAQ,EAAE,kBAAkB;AAC5B,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,KAAK,EAAE;QACL,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACtC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,gBAAgB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QACzC,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QACrC,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QACpC,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QACrC,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;AAC5C,KAAA;CACO;AAMV;AACA;;;;AAIG;AACH,SAAS,WAAW,CAAC,IAAU,EAAA;;AAE7B,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;AAClC,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,IAAA,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAE9B,IAAA,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE;QAC/D,OAAO,aAAa,CAAC,cAAc;IACrC;IACA,OAAO,aAAa,CAAC,mBAAmB;AAC1C;AAEA;AACA;;;;;;;AAOG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAE,OAAe,EAAE,CAAS,EAAA;IAGnF,IAAI,KAAK,GAAG,CAAC;AACb,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC;YAAE;AACtC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE;AAChC,YAAA,KAAK,EAAE;YACP,IAAI,KAAK,KAAK,CAAC;AAAE,gBAAA,OAAO,IAAI;QAC9B;IACF;;AAEA,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD;AAEA;AACA;;;;AAIG;AACH,SAAS,QAAQ,CAAC,IAAU,EAAA;AAC1B,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;;AAEhC,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;IAChC,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;AACpD,IAAA,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC3B;AAEA;AACA;;;;AAIG;AACH,SAAS,UAAU,CAAC,IAAU,EAAA;AAC5B,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;AAChC,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE;IAC/B,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;AACpD,IAAA,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC;AAC5B;AAEA;AACA;;;;;AAKG;AACH,SAAS,UAAU,CAAC,IAAU,EAAE,eAA6B,KAAK,EAAA;IAChE,QAAQ,YAAY;AAClB,QAAA,KAAK,cAAc;YACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC1C,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,KAAK,KAAK;AACV,QAAA;AACE,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;;AAE/B;AAEA;AACA;;;;AAIG;AACH,SAAS,cAAc,CAAC,IAAU,EAAA;AAChC,IAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;AACvE;AAEA;AACA;;AAEG;AACH,MAAM,cAAc,CAAA;AAClB;;;;AAIG;AACH,IAAA,SAAS,CAAC,IAAU,EAAA;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AACtC,QAAA,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IAC/B;AAEA;;;;AAIG;AACH,IAAA,SAAS,CAAC,IAAU,EAAA;AAClB,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,aAAa,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACjG,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,KAAK;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC;IACtF;AAEA;;;;AAIG;AACH,IAAA,eAAe,CAAC,IAAU,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,aAAa,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACjG,QAAA,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC;QAC/C,OAAO,eAAe,IAAI,eAAe,CAAC,aAAa,CAAC,KAAK,SAAS;IACxE;AAEA;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,IAAU,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,aAAa,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACjG,QAAA,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAC/C,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE;YACrD,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACnF,YAAA,OAAO,KAAK,GAAG,EAAE,GAAG,OAAO;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACH,IAAA,WAAW,CAAC,IAAU,EAAA;AACpB,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IACvD;AAEA;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACzB,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;AACjC,YAAA,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC7D;AACA,QAAA,OAAO,OAAO;IAChB;AAEA;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,IAAU,EAAA;AAC7B,QAAA,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;AACjC,YAAA,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC7D;AACA,QAAA,OAAO,OAAO;IAChB;AACD;AAED;AACA;;;;AAIG;AACH,SAAS,cAAc,CAAC,IAAU,EAAA;AAChC,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QAC/B,OAAO;AACL,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,QAAQ,EAAE,IAAI;SACf;IACH;AACA,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE;AACpC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE;AAClC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE;;AAG/B,IAAA,SAAS,WAAW,CAAC,IAAY,EAAE,MAAc,EAAA;QAC/C,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,QAAA,OAAO,UAAU,CAAC,CAAC,CAAC;IACtB;IAEA,IAAI,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;IACpG,IAAI,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;IACvG,IAAI,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;IAC7G,IAAI,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;AAE1G,IAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAClC,QAAA,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;AACjG,QAAA,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC;IACpH;IAEA,OAAO;AACL,QAAA,UAAU,EAAE,IAAI;QAChB,IAAI;QACJ,KAAK;QACL,OAAO;QACP,QAAQ;KACT;AACH;AAEA;AACA;;;;;AAKG;SACa,mBAAmB,CAAC,IAAU,EAAE,oBAAuC,cAAc,EAAA;AACnG,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AAAE,QAAA,OAAO,KAAK;AAC7C,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7B,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE;IAElE,QAAQ,iBAAiB;QACvB,KAAK,gBAAgB,EAAE;AACrB,YAAA,IAAI,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;AACrG,YAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAClC,gBAAA,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM;YAC/G;AACA,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;AAC7G,YAAA,OAAO,OAAO,IAAI,YAAY,IAAI,OAAO,IAAI,UAAU;QACzD;AACA,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,IAAI;QACb,SAAS;AACP,YAAA,IAAI,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;AACrG,YAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAClC,gBAAA,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;YACjG;AACA,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;AACvG,YAAA,OAAO,OAAO,IAAI,YAAY,IAAI,OAAO,IAAI,UAAU;QACzD;;AAEJ;AAEA;AACA;;;;AAIG;AACH,SAAS,0BAA0B,CAAC,WAAA,GAAoB,IAAI,IAAI,EAAE,EAAA;AAChE,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC;AACpC,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE;AAClE,IAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;AAC5G,IAAA,IAAI,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;AAC7G,IAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;AACzC,QAAA,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;IACzG;;AAGA,IAAA,IACE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC;AAClC,QAAA,OAAO,GAAG,iBAAiB;SAC1B,OAAO,IAAI,iBAAiB,IAAI,OAAO,GAAG,kBAAkB,CAAC,EAC9D;QACA,MAAM,aAAa,GAAG,QAAQ,CAAC,oBAAoB,CAAC,WAAW,CAAC;AAChE,QAAA,IAAI,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;AAC3G,QAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;AAC3C,YAAA,gBAAgB,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;QACvG;AACA,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC1C,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,cAAc,EAAE;AACxC,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,EAAE;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;AACnD,QAAA,MAAM,WAAW,GAAG,gBAAgB,GAAG,EAAE;QACzC,OAAO,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF;;AAGA,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE;AACpC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE;AAClC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC;AACrD,IAAA,MAAM,WAAW,GAAG,kBAAkB,GAAG,EAAE;IAC3C,OAAO,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvF;AAEA;AACA;;;;;AAKG;AACH,SAAS,gBAAgB,CACvB,IAAU,EACV,oBAAuC,cAAc,EAAA;AAErD,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7B,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE;AACpC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE;AAClC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE;AAE/B,IAAA,SAAS,WAAW,CAAC,IAAY,EAAE,MAAc,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAA;QAChE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACrE,QAAA,OAAO,UAAU,CAAC,CAAC,CAAC;IACtB;AAEA,IAAA,IAAI,KAAW;AACf,IAAA,IAAI,GAAS;IAEb,QAAQ,iBAAiB;AACvB,QAAA,KAAK,gBAAgB;YACnB,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7G,GAAG,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC;AAC1G,YAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAClC,GAAG,GAAG,WAAW,CACf,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAC3C,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAC7C,EAAE,EACF,GAAG,CACJ;YACH;YACA;AACF,QAAA,KAAK,YAAY;YACf,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3D;AACF,QAAA;YACE,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACvG,GAAG,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC;AAC1G,YAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAClC,GAAG,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC;YAC1G;YACA;;AAEJ,IAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;AACvB;AAEA;AACA;;;;;AAKG;AACH,SAAS,wBAAwB,CAAC,OAAa,EAAE,MAAc,EAAA;AAC7D,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,IAAI,SAAe;IACnB,QAAQ,MAAM;AACZ,QAAA,KAAK,KAAK;AACR,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9D;AACF,QAAA,KAAK,IAAI;AACP,YAAA,SAAS,GAAG,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC;YAClD;AACF,QAAA,KAAK,IAAI;AACP,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACjE;AACF,QAAA,KAAK,IAAI;AACP,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACjE;AACF,QAAA,KAAK,IAAI;AACP,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAClE;AACF,QAAA,KAAK,IAAI;YACP,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACzG;AACF,QAAA,KAAK,IAAI;YACP,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACzG;AACF,QAAA,KAAK,IAAI;YACP,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACzG;AACF,QAAA,KAAK,IAAI;YACP,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACzG;AACF,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAA,CAAE,CAAC;;;IAGhD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;AACvC,QAAA,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC;IAClD;AACA,IAAA,OAAO,SAAS;AAClB;AAEA;AACA;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,MAAwB,EAAA;AAC1D,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,kBAAkB,GAAG,cAAc,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,MAAM;AAEtG,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;AAClD,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AAErC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC/B,IAAA,IAAI,OAAa;IACjB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;IACpD,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,EAAE,kBAAkB,CAAC;AAClE,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,aAAa,EAAE;AACxE,IAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;IAE7G,IAAI,kBAAkB,EAAE;AACtB,QAAA,IAAI,OAAO,GAAG,kBAAkB,EAAE;;YAEhC,MAAM,aAAa,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACxD,YAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC;YAC3E,OAAO,GAAG,MAAM;QAClB;aAAO,IAAI,aAAa,EAAE;;YAExB,OAAO,GAAG,GAAG;QACf;aAAO;;AAEL,YAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,CAAC;YACjE,OAAO,GAAG,MAAM;QAClB;IACF;SAAO;;QAEL,MAAM,aAAa,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACxD,QAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAC3E,OAAO,GAAG,MAAM;IAClB;;IAGA,MAAM,eAAe,GAAG,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC;AACjE,IAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,eAAe,EAAE,kBAAkB,CAAC;IAEjF,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE;AAC1C,QAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;IACxD;IAEA,OAAO;AACL,QAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC;AACzC,QAAA,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;KACvC;AACH;AAEA;AACA;;;;AAIG;AACH,SAAS,mBAAmB,CAAC,IAAA,GAAa,IAAI,IAAI,EAAE,EAAA;AAClD,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7B,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE;IAClE,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;IAC9C,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAEtD,IAAA,MAAM,oBAAoB,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;AACrH,IAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;AAC7G,IAAA,MAAM,qBAAqB,GACzB,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM;AAE9F,IAAA,IAAI,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;AAC7G,IAAA,IAAI,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;IAC7G,IAAI,eAAe,EAAE;AACnB,QAAA,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;QACvG,kBAAkB;AAChB,YAAA,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM;IACpG;AAEA,IAAA,IAAI,MAA8B;AAClC,IAAA,IAAI,UAAsC;AAC1C,IAAA,IAAI,cAAoB;AACxB,IAAA,IAAI,YAA0C;IAE9C,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,GAAG,QAAQ;QACjB,UAAU,GAAG,gBAAgB;QAC7B,YAAY,GAAG,QAAQ;QACvB,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACrD,cAAc,GAAG,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,KAAK;IAC1E;AAAO,SAAA,IAAI,OAAO,GAAG,oBAAoB,EAAE;QACzC,MAAM,GAAG,QAAQ;QACjB,UAAU,GAAG,gBAAgB;QAC7B,YAAY,GAAG,QAAQ;QACvB,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,KAAK;IACjE;AAAO,SAAA,IAAI,OAAO,GAAG,kBAAkB,EAAE;QACvC,MAAM,GAAG,gBAAgB;QACzB,UAAU,GAAG,MAAM;QACnB,YAAY,GAAG,WAAW;QAC1B,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,KAAK;IAC/D;AAAO,SAAA,IAAI,OAAO,GAAG,kBAAkB,EAAE;QACvC,MAAM,GAAG,MAAM;QACf,UAAU,GAAG,gBAAgB;AAC7B,QAAA,YAAY,GAAG,OAAO,GAAG,qBAAqB,GAAG,aAAa,GAAG,eAAe;QAChF,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,GAAG;IAC7D;AAAO,SAAA,IAAI,OAAO,GAAG,kBAAkB,EAAE;QACvC,MAAM,GAAG,gBAAgB;QACzB,UAAU,GAAG,QAAQ;QACrB,YAAY,GAAG,aAAa;QAC5B,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,GAAG;IAC/D;SAAO;QACL,MAAM,GAAG,QAAQ;QACjB,UAAU,GAAG,gBAAgB;QAC7B,YAAY,GAAG,QAAQ;QACvB,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACrD,cAAc,GAAG,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,KAAK;IAC1E;;IAGA,MAAM,wBAAwB,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;IAE1E,OAAO;AACL,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC;QAClC,MAAM;QACN,UAAU;QACV,YAAY;QACZ,cAAc;QACd,wBAAwB;AACxB,QAAA,oBAAoB,EAAE,cAAc,CAAC,cAAc,CAAC;KACrD;AACH;AAEA;AACA;;;;AAIG;AACG,SAAU,kBAAkB,CAAC,OAAA,GAA2B,EAAE,EAAA;IAC9D,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,OAAO;AACrC,IAAA,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B;AAEA;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,MAAA,GAA2B,EAAE,EAAA;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAClD,OAAO;QACL,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK;QACvF,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;KAC9E;AACH;AAEA;;AAEG;AACH;;;;AAIG;SACa,sBAAsB,CAAC,WAAA,GAAoB,IAAI,IAAI,EAAE,EAAA;AACnE,IAAA,OAAO,0BAA0B,CAAC,WAAW,CAAC;AAChD;AAoBA;;;;AAIG;SACa,gBAAgB,CAAC,EAAE,aAAa,KAA+B,EAAE,EAAA;AAK/E,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,MAAM,SAAS,GAAG,aAAa,IAAI,IAAI,IAAI,EAAE;;IAG7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC;;AAGrD,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAC,cAAc,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CACxG,MAAM,CAAC,UAAU,EAAE,CACpB,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;IAEpB,OAAO;QACL,IAAI,EAAE,QAAQ;AACd,QAAA,QAAQ;AACR,QAAA,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;KACtC;AACH;AAEA;;;;AAIG;SACa,oBAAoB,CAAC,EAAE,aAAa,KAA+B,EAAE,EAAA;AACnF,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,MAAM,SAAS,GAAG,aAAa,IAAI,IAAI,IAAI,EAAE;IAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC;;IAGzD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClC,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAC,cAAc,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CACxG,MAAM,CAAC,UAAU,EAAE,CACpB,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;IAEpB,OAAO;AACL,QAAA,IAAI,EAAE,QAAQ;QACd,QAAQ;AACR,QAAA,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE;KACtC;AACH;AAEA;;;;AAIG;AACH;;;;AAIG;AACG,SAAU,cAAc,CAAC,IAA4B,EAAA;AACzD,IAAA,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACzG,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC7B,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAC9F,MAAM,CAAC,UAAU,EAAE,CACpB,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACtB;AAEA;;;;AAIG;AACG,SAAU,aAAa,CAAC,IAAW,EAAA;IACvC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;AAC9C,IAAA,OAAO,MAAM,KAAK,EAAE,GAAG,QAAQ,GAAG,QAAQ;AAC5C;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACG,SAAU,yBAAyB,CAAC,OAAe,EAAA;;IAEvD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,OAAO,CAAA,UAAA,CAAY,CAAC;IAClD,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;;IAG1C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,OAAO,CAAA,SAAA,EAAY,QAAQ,CAAA,CAAE,CAAC;AAEzD,IAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAA,CAAE,CAAC;IACvD;AAEA,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5D,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAA,CAAE,CAAC;IAC7D;AAEA,IAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AACxB;AAEA;;;;;;;;;;;;AAYG;AACG,SAAU,2BAA2B,CAAC,IAAU,EAAA;AACpD,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB;AAEA;;;;AAIG;AACG,SAAU,eAAe,CAAC,OAAA,GAA2B,EAAE,EAAA;IAC3D,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,OAAO;AACrC,IAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAClC;AAEA;;;;AAIG;AACG,SAAU,WAAW,CAAC,IAAU,EAAA;AACpC,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;AACrC,IAAA,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACnC;AAEA;;;;AAIG;AACH;;;;AAIG;AACG,SAAU,0BAA0B,CACxC,OAAA,GAGI,EAAE,EAAA;AAEN,IAAA,MAAM,EAAE,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,OAAO;AAClD,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;;IAGrC,IAAI,YAAY,GAAG,OAAO;AAC1B,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC/B,IAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;AAC5G,IAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM;AAC/G,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE;AAEhE,IAAA,IACE,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC;AAC9B,QAAA,OAAO,GAAG,iBAAiB;SAC1B,OAAO,IAAI,iBAAiB,IAAI,OAAO,GAAG,kBAAkB,CAAC,EAC9D;;AAEA,QAAA,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC;IACvD;SAAO;;QAEL,YAAY,GAAG,OAAO;IACxB;;AAGA,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAM;;IAGlE,IAAI,cAAc,GAAG,YAAY;IACjC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC9B,QAAA,cAAc,GAAG,QAAQ,CAAC,oBAAoB,CAAC,cAAc,CAAC;IAChE;;AAEA,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;QACZ,cAAc,GAAG,YAAY;AAC7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AAC7B,YAAA,cAAc,GAAG,QAAQ,CAAC,oBAAoB,CAAC,cAAc,CAAC;QAChE;IACF;AACA,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,IAAK;IAEpE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE;AACpD;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACG,SAAU,gBAAgB,CAC9B,SAAe,EACf,OAAA,GAAgB,IAAI,IAAI,EAAE,EAAA;AAM1B,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;;IAGrC,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE;AAC3C,QAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;IACvD;IAEA,IAAI,YAAY,GAAG,CAAC;;AAGpB,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC;AACnC,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;;AAG/B,IAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC5F;;IAGD,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;AAC7C,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;;AAGxC,QAAA,IAAI,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;;AAEpC,YAAA,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC;AAE9C,YAAA,IAAI,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;;AAEnE,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC1E,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAGvE,gBAAA,IAAI,QAAQ,GAAG,MAAM,EAAE;AACrB,oBAAA,YAAY,IAAI,CAAC,MAAM,GAAG,QAAQ,KAAK,IAAI,GAAG,EAAE,CAAC;gBACnD;YACF;QACF;;QAGA,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAClD;;AAGA,IAAA,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,IAAA,MAAM,IAAI,GAAG,YAAY,GAAG,uBAAuB;AACnD,IAAA,MAAM,KAAK,GAAG,YAAY,GAAG,EAAE;IAC/B,MAAM,OAAO,GAAG,YAAY;IAE5B,OAAO;AACL,QAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI;AACpC,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG;AACpC,QAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;KAC7B;AACH;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,kBAAkB,CAAC,OAA+B,EAAA;AAKhE,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE;IACrC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,wBAAwB,GAAG,IAAI,EAAE,GAAG,OAAO;AACxE,IAAA,MAAM,OAAO,GAAG,aAAa,IAAI,IAAI,IAAI,EAAE;IAC3C,MAAM,QAAQ,GAAG,IAAI;AAErB,IAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC/C,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;IACjD;;AAGA,IAAA,IAAI,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC;IAEpD,IAAI,CAAC,wBAAwB,EAAE;AAC7B,QAAA,UAAU,GAAG,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC;IACxD;;AAGA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACjC,QAAA,UAAU,GAAG,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC;IACxD;;AAGA,IAAA,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC;AAC9C,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACrB,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,CAAqC,CAAC;IACxD;;IAGA,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACzC,IAAA,MAAM,OAAO,GAAG,CAAA,EAAG,MAAM,CAAC,cAAc,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;IAEjJ,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;AACpD,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAEnE,OAAO;AACL,QAAA,IAAI,EAAE,OAAO;QACb,aAAa;QACb,aAAa;KACd;AACH;AAEA;AACO,MAAM,YAAY,GAAsB;IAC7C,QAAQ,EAAE,aAAa,CAAC,QAAQ;AAChC,IAAA,GAAG,EAAE;AACH,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC3C,QAAA,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;AAC3C,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;AAC5C,QAAA,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC3C,KAAA;AACD,IAAA,0BAA0B,EAAE;AAC1B,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;AAC5C,QAAA,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC3C,KAAA;AACD,IAAA,6BAA6B,EAAE;AAC7B,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC5C,QAAA,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AAC5C,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;AAC5C,QAAA,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC3C,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AAC3C,QAAA,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AAC5C,KAAA;CACF;;AC1iCD;AAEA;;;;;;;AAOG;AACG,SAAU,cAAc,CAAC,GAAW,EAAA;AACxC,IAAA,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,QAAA,OAAO,GAAG;AAC/C,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD;AAEA;;;;;;;AAOG;AACG,SAAU,cAAc,CAAC,KAAa,EAAA;AAC1C,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACpC,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB;AAEA;;;;;;;AAOG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;AACxC,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACrD;AAEA;;;;;;;;AAQG;SACa,gBAAgB,CAAC,KAAa,EAAE,gBAAwB,CAAC,EAAA;AACvE,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACpC,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,qBAAqB,EAAE,aAAa;AACrC,KAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB;AAEA;;;;;;AAMG;AACG,SAAU,aAAa,CAAC,IAAU,EAAA;AACtC,IAAA,OAAO;SACJ,cAAc,CAAC,OAAO,EAAE;AACvB,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,KAAK;KACd;AACA,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACxB;;AC9EA;;AAEG;AACI,MAAM,aAAa,GAAG;IAC3B,OAAO;IACP,YAAY;IACZ,cAAc;IACd,cAAc;IACd,YAAY;IACZ,SAAS;IACT,SAAS;IACT,SAAS;IACT,aAAa;IACb,SAAS;IACT,aAAa;IACb,eAAe;IACf,mBAAmB;;AAKrB;;AAEG;AACG,SAAU,aAAa,CAAC,KAAa,EAAA;AACzC,IAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAoB,CAAC;AACrD;AAEA;;AAEG;AACI,MAAM,mBAAmB,GAAG;IACjC,aAAa;IACb,wBAAwB;IACxB,eAAe;IACf,aAAa;IACb,kBAAkB;IAClB,sBAAsB;IACtB,UAAU;IACV,UAAU;;AAKZ;;AAEG;AACG,SAAU,kBAAkB,CAAC,KAAa,EAAA;AAC9C,IAAA,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAyB,CAAC;AAChE;AAOA;;AAEG;AACI,MAAM,iBAAiB,GAAG;IAC/B,cAAc;IACd,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB;IACpB,sBAAsB;IACtB,0BAA0B;IAC1B,qBAAqB;IACrB,cAAc;IACd,kBAAkB;IAClB,yBAAyB;IACzB,8BAA8B;IAC9B,2BAA2B;IAC3B,gCAAgC;;AAmBlC;;AAEG;AACG,SAAU,iBAAiB,CAAC,KAAa,EAAA;AAC7C,IAAA,OAAO,iBAAiB,CAAC,QAAQ,CAAC,KAAwB,CAAC;AAC7D;;;;;;;;;;;;AClHA;AAEA;AAKA;;;;;;;;;;;;AAYG;AACI,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,IAAc,EAAE,IAAA,GAAgB,MAAM,KAAI;IACpF,MAAM,MAAM,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,WAAW,EAAE,GAAG;IAC/C,MAAM,aAAa,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE;IAE7E,QAAQ,IAAI;AACV,QAAA,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;YAC7C;AACF,QAAA,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;YAC5C;AACF,QAAA,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;YAC7C;AACF,QAAA,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;YAC7C;AACF,QAAA,KAAK,MAAM;AACX,QAAA;YACE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;;AAElD,CAAC;AAED;;;;;;;;;AASG;AACH,SAAS,UAAU,CAAC,QAAgB,EAAA;AAClC,IAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACxB,QAAA,OAAO,QAAQ;IACjB;IACA,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAClC,IAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,IAAA,EAAO,OAAO,EAAE;AACpC;AAEA;;;;;;;;;;AAUG;AACG,SAAU,iBAAiB,CAAC,GAAW,EAAA;AAC3C,IAAA,IAAI;AACF,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;;AAG9B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE;AAC3D,YAAA,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;AAClC,gBAAA,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;gBAChC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;YACzC;QACF;AAEA,QAAA,OAAO,SAAS,CAAC,QAAQ,EAAE;IAC7B;AAAE,IAAA,MAAM;;AAEN,QAAA,OAAO,GAAG;IACZ;AACF;AASA;;;;;AAKG;AACH,SAAS,mBAAmB,CAAC,KAAc,EAAE,QAAmB,EAAA;AAC9D,IAAA,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACrE,IAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,OAAO;IAC7D,IAAI,OAAO,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvD,QAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,4BAA4B,EAAE,MAAM,EAAE,IAAI,EAAE;IACtF;AACA,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACnD,QAAA,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;AACzD,QAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE;IACvF;AACA,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC5E,QAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,yCAAyC,EAAE,MAAM,EAAE,GAAG,EAAE;IAC/F;AACA,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC5E,QAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,6CAA6C,EAAE,MAAM,EAAE,GAAG,EAAE;IACnG;AACA,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACpC,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACjE,QAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAA,CAAG,EAAE,MAAM,EAAE;IAC7E;AACA,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACpC,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACjE,QAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAA,CAAG,EAAE,MAAM,EAAE;IAC7E;AACA,IAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE;AAC7E;AAEA;;;;;;;;;;;AAWG;AACI,eAAe,cAAc,CAClC,GAAW,EACX,OAAA,GAAuB,EAAE,EACzB,OAAA,GAAkB,CAAC,EACnB,iBAAyB,IAAI,EAAA;IAE7B,IAAI,OAAO,GAAG,cAAc;AAE5B,IAAA,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE;AACnD,QAAA,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;;AAEhB,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;;oBAE3B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AACtD,oBAAA,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI;oBAElE,MAAM,IAAI,KAAK,CAAC,CAAA,YAAA,EAAe,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE,CAAC;gBACxF;AACA,gBAAA,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAClD,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,QAAQ,CAAC,MAAM,CAAA,CAAE,CAAC;gBACrD;AACA,gBAAA,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBACxC,MAAM,IAAI,KAAK,CAAC,CAAA,YAAA,EAAe,QAAQ,CAAC,MAAM,CAAA,CAAE,CAAC;gBACnD;AACA,gBAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;;oBAEnD,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,QAAQ,CAAC,MAAM,CAAA,CAAE,CAAC;gBACrD;gBACA,MAAM,IAAI,KAAK,CAAC,CAAA,YAAA,EAAe,QAAQ,CAAC,MAAM,CAAA,CAAE,CAAC;YACnD;AACA,YAAA,OAAO,QAAQ;QACjB;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AACvB,gBAAA,MAAM,KAAK;YACb;;AAGA,YAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC;YAC/C,IAAI,eAAe,GAAG,OAAO;;AAG7B,YAAA,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,EAAE;;AAEtC,gBAAA,IAAI,YAAY,CAAC,UAAU,EAAE;AAC3B,oBAAA,eAAe,GAAG,YAAY,CAAC,UAAU;gBAC3C;qBAAO;oBACL,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;gBAC3C;YACF;AAAO,iBAAA,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,EAAE;;AAE7C,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAA,yBAAA,EAA4B,iBAAiB,CAAC,GAAG,CAAC,CAAA,EAAA,EAAK,YAAY,CAAC,MAAM,EAAE,EAAE;AAC1F,oBAAA,aAAa,EAAE,OAAO;oBACtB,SAAS,EAAE,YAAY,CAAC,IAAI;oBAC5B,UAAU,EAAE,YAAY,CAAC,MAAM;AAC/B,oBAAA,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC;AAC3B,oBAAA,MAAM,EAAE,gBAAgB;AACxB,oBAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,iBAAA,CAAC;AACF,gBAAA,MAAM,KAAK;YACb;AAAO,iBAAA,IAAI,YAAY,CAAC,IAAI,KAAK,cAAc,EAAE;;AAE/C,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoB,iBAAiB,CAAC,GAAG,CAAC,CAAA,EAAA,EAAK,YAAY,CAAC,MAAM,EAAE,EAAE;AAClF,oBAAA,aAAa,EAAE,OAAO;oBACtB,SAAS,EAAE,YAAY,CAAC,IAAI;oBAC5B,UAAU,EAAE,YAAY,CAAC,MAAM;AAC/B,oBAAA,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC;AAC3B,oBAAA,MAAM,EAAE,gBAAgB;AACxB,oBAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,iBAAA,CAAC;AACF,gBAAA,MAAM,KAAK;YACb;;AAGA,YAAA,OAAO,CAAC,IAAI,CACV,iBAAiB,OAAO,CAAA,IAAA,EAAO,OAAO,CAAA,KAAA,EAAQ,iBAAiB,CAAC,GAAG,CAAC,YAClE,YAAY,CAAC,MACf,CAAA,cAAA,EAAiB,eAAe,OAAO,EACvC;AACE,gBAAA,aAAa,EAAE,OAAO;AACtB,gBAAA,YAAY,EAAE,OAAO;gBACrB,SAAS,EAAE,YAAY,CAAC,IAAI;gBAC5B,UAAU,EAAE,YAAY,CAAC,MAAM;AAC/B,gBAAA,UAAU,EAAE,eAAe;AAC3B,gBAAA,GAAG,EAAE,iBAAiB,CAAC,GAAG,CAAC;AAC3B,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,aAAA,CACF;AAED,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACpE,YAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACzC;IACF;AACA,IAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AAC5D;;ACjPA,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AAKjE,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,IAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrF,QAAQ,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC;AACtG,IAAI,OAAwE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK;AAC7G;AACA,SAAS,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1D,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;AAC1B,QAAQ,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC;AAC5E,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrF,QAAQ,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC;AACvG,IAAI,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjG;;ACfA;AACA;AACA;AACA;AACO,IAAI,KAAK,GAAG,YAAY;AAC/B,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU;AACjC,IAAI,IAAI,MAAM,EAAE,UAAU,EAAE;AAC5B,QAAQ,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,QAAQ,OAAO,MAAM,CAAC,UAAU,EAAE;AAClC,IAAI;AACJ,IAAI,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;AAChC,IAAI,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,IAAI;AACzG,IAAI,OAAO,sCAAsC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjI,CAAC;;ACbD;AACO,SAAS,YAAY,CAAC,GAAG,EAAE;AAClC,IAAI,QAAQ,OAAO,GAAG,KAAK,QAAQ;AACnC,QAAQ,GAAG,KAAK,IAAI;AACpB;AACA,SAAS,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;AACpD;AACA,aAAa,SAAS,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAChG;AACO,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK;AACpC,IAAI,IAAI,GAAG,YAAY,KAAK;AAC5B,QAAQ,OAAO,GAAG;AAClB,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AACjD,QAAQ,IAAI;AACZ,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB,EAAE;AAC1E;AACA,gBAAgB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAC3F,gBAAgB,IAAI,GAAG,CAAC,KAAK;AAC7B,oBAAoB,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AAC3C;AACA,gBAAgB,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;AAC7C,oBAAoB,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AAC3C,gBAAgB,IAAI,GAAG,CAAC,IAAI;AAC5B,oBAAoB,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AACzC,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,EAAE;AAChB,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ;AACR,QAAQ,MAAM,EAAE;AAChB,IAAI;AACJ,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC;AACzB,CAAC;;AClCD;AAEO,MAAM,WAAW,SAAS,KAAK,CAAC;AACvC;AACO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AACjD,QAAQ,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC;AACrD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,MAAM,IAAI,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAClC,IAAI;AACJ,IAAI,OAAO,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;AAC/C,QAAQ,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO;AAClC,YAAY,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;AAC7C,gBAAgB,KAAK,CAAC;AACtB,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO;AAC9C,cAAc,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;AAC1C,kBAAkB,OAAO;AACzB,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE;AAC3B,YAAY,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACrC,QAAQ;AACR,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,OAAO,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC;AACpD,QAAQ;AACR,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,OAAO,GAAG;AACtB,QAAQ;AACR,QAAQ,OAAO,0BAA0B;AACzC,IAAI;AACJ,IAAI,OAAO,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE;AAC7D,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;AACjC,YAAY,OAAO,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;AACzF,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,aAAa,GAAG,OAAO,CAAC;AAC9C,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE;AAC5B,YAAY,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AACvE,QAAQ;AACR,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE;AAC5B,YAAY,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC3E,QAAQ;AACR,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE;AAC5B,YAAY,OAAO,IAAI,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC7E,QAAQ;AACR,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE;AAC5B,YAAY,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AACrE,QAAQ;AACR,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE;AAC5B,YAAY,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AACrE,QAAQ;AACR,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE;AAC5B,YAAY,OAAO,IAAI,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAChF,QAAQ;AACR,QAAQ,IAAI,MAAM,KAAK,GAAG,EAAE;AAC5B,YAAY,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AACtE,QAAQ;AACR,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE;AAC3B,YAAY,OAAO,IAAI,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC3E,QAAQ;AACR,QAAQ,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AAC5D,IAAI;AACJ;AACO,MAAM,iBAAiB,SAAS,QAAQ,CAAC;AAChD,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;AAClC,QAAQ,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,IAAI,sBAAsB,EAAE,SAAS,CAAC;AACjF,IAAI;AACJ;AACO,MAAM,kBAAkB,SAAS,QAAQ,CAAC;AACjD,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;AACpC,QAAQ,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,IAAI,mBAAmB,EAAE,SAAS,CAAC;AAC9E;AACA;AACA,QAAQ,IAAI,KAAK;AACjB,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK;AAC9B,IAAI;AACJ;AACO,MAAM,yBAAyB,SAAS,kBAAkB,CAAC;AAClE,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;AAClC,QAAQ,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,CAAC;AAC3D,IAAI;AACJ;AACO,MAAM,eAAe,SAAS,QAAQ,CAAC;AAC9C;AACO,MAAM,mBAAmB,SAAS,QAAQ,CAAC;AAClD;AACO,MAAM,qBAAqB,SAAS,QAAQ,CAAC;AACpD;AACO,MAAM,aAAa,SAAS,QAAQ,CAAC;AAC5C;AACO,MAAM,aAAa,SAAS,QAAQ,CAAC;AAC5C;AACO,MAAM,wBAAwB,SAAS,QAAQ,CAAC;AACvD;AACO,MAAM,cAAc,SAAS,QAAQ,CAAC;AAC7C;AACO,MAAM,mBAAmB,SAAS,QAAQ,CAAC;AAClD;AACO,MAAM,uBAAuB,SAAS,WAAW,CAAC;AACzD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,CAAC,gEAAgE,CAAC,CAAC;AACjF,IAAI;AACJ;AACO,MAAM,8BAA8B,SAAS,WAAW,CAAC;AAChE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,CAAC,kFAAkF,CAAC,CAAC;AACnG,IAAI;AACJ;AACO,MAAM,4BAA4B,SAAS,KAAK,CAAC;AACxD,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,UAAU,SAAS,QAAQ,CAAC;AACzC,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;AACxC,QAAQ,IAAI,YAAY,GAAG,6BAA6B;AACxD,QAAQ,IAAI,UAAU,GAAG,SAAS;AAClC,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAChD,YAAY,MAAM,SAAS,GAAG,KAAK;AACnC,YAAY,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;AAC3C,YAAY,MAAM,WAAW,GAAG,SAAS,CAAC,mBAAmB,CAAC;AAC9D,YAAY,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AAChE,gBAAgB,YAAY,GAAG,WAAW;AAC1C,YAAY;AACZ,iBAAiB,IAAI,UAAU,EAAE;AACjC,gBAAgB,YAAY,GAAG,UAAU;AACzC,YAAY;AACZ,QAAQ;AACR,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC;AACnD,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,IAAI;AACJ;AACO,MAAM,yBAAyB,SAAS,WAAW,CAAC;AAC3D,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC1C,QAAQ,KAAK,CAAC,OAAO,CAAC;AACtB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,IAAI;AACJ;;AClJA;AAEA;AACA,MAAM,sBAAsB,GAAG,sBAAsB;AAC9C,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AACtC,IAAI,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3C,CAAC;AACM,IAAI,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,eAAe,GAAG,OAAO;AACpC;AACO,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC5B,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAC/B,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB;AACA;AACO,SAASC,YAAU,CAAC,GAAG,EAAE;AAChC,IAAI,IAAI,CAAC,GAAG;AACZ,QAAQ,OAAO,IAAI;AACnB,IAAI,KAAK,MAAM,EAAE,IAAI,GAAG;AACxB,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,IAAI;AACf;AACA;AACO,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AACjC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AACzD;AACO,SAAS,KAAK,CAAC,GAAG,EAAE;AAC3B,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACxE;AAOO,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK;AACpD,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACvD,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC3D,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE;AACf,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;AACnE,IAAI;AACJ,IAAI,OAAO,CAAC;AACZ,CAAC;AAwCM,MAAM,QAAQ,GAAG,CAAC,IAAI,KAAK;AAClC,IAAI,IAAI;AACR,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/B,IAAI;AACJ,IAAI,OAAO,GAAG,EAAE;AAChB,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,CAAC;;AC5FD;AACO,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;;ACDvE,MAAM,OAAO,GAAG,QAAQ,CAAC;;ACAhC;AAEO,MAAM,kBAAkB,GAAG,MAAM;AACxC,IAAI;AACJ;AACA,IAAI,OAAO,MAAM,KAAK,WAAW;AACjC;AACA,QAAQ,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW;AAC9C;AACA,QAAQ,OAAO,SAAS,KAAK,WAAW;AACxC,CAAC;AACD;AACA;AACA;AACA,SAAS,mBAAmB,GAAG;AAC/B,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AAC3D,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAC5C,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,kBAAkB,EAAE;AACnI,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,OAAO,SAAS;AACpB;AACA,MAAM,qBAAqB,GAAG,MAAM;AACpC,IAAI,MAAM,gBAAgB,GAAG,mBAAmB,EAAE;AAClD,IAAI,IAAI,gBAAgB,KAAK,MAAM,EAAE;AACrC,QAAQ,OAAO;AACf,YAAY,kBAAkB,EAAE,IAAI;AACpC,YAAY,6BAA6B,EAAE,OAAO;AAClD,YAAY,gBAAgB,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9D,YAAY,kBAAkB,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9D,YAAY,qBAAqB,EAAE,MAAM;AACzC,YAAY,6BAA6B,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,SAAS;AAC5H,SAAS;AACT,IAAI;AACJ,IAAI,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAC5C,QAAQ,OAAO;AACf,YAAY,kBAAkB,EAAE,IAAI;AACpC,YAAY,6BAA6B,EAAE,OAAO;AAClD,YAAY,gBAAgB,EAAE,SAAS;AACvC,YAAY,kBAAkB,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACtD,YAAY,qBAAqB,EAAE,MAAM;AACzC,YAAY,6BAA6B,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO;AACrE,SAAS;AACT,IAAI;AACJ;AACA,IAAI,IAAI,gBAAgB,KAAK,MAAM,EAAE;AACrC,QAAQ,OAAO;AACf,YAAY,kBAAkB,EAAE,IAAI;AACpC,YAAY,6BAA6B,EAAE,OAAO;AAClD,YAAY,gBAAgB,EAAE,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;AACzF,YAAY,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;AACnF,YAAY,qBAAqB,EAAE,MAAM;AACzC,YAAY,6BAA6B,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS;AAClF,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,cAAc,EAAE;AACxC,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,OAAO;AACf,YAAY,kBAAkB,EAAE,IAAI;AACpC,YAAY,6BAA6B,EAAE,OAAO;AAClD,YAAY,gBAAgB,EAAE,SAAS;AACvC,YAAY,kBAAkB,EAAE,SAAS;AACzC,YAAY,qBAAqB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AACnE,YAAY,6BAA6B,EAAE,WAAW,CAAC,OAAO;AAC9D,SAAS;AACT,IAAI;AACJ;AACA,IAAI,OAAO;AACX,QAAQ,kBAAkB,EAAE,IAAI;AAChC,QAAQ,6BAA6B,EAAE,OAAO;AAC9C,QAAQ,gBAAgB,EAAE,SAAS;AACnC,QAAQ,kBAAkB,EAAE,SAAS;AACrC,QAAQ,qBAAqB,EAAE,SAAS;AACxC,QAAQ,6BAA6B,EAAE,SAAS;AAChD,KAAK;AACL,CAAC;AACD;AACA,SAAS,cAAc,GAAG;AAC1B,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,SAAS,EAAE;AACxD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sCAAsC,EAAE;AACxE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,sCAAsC,EAAE;AACtE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,4CAA4C,EAAE;AAC5E,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,wCAAwC,EAAE;AAC5E,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,yCAAyC,EAAE;AAC9E,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,mEAAmE,EAAE;AACvG,KAAK;AACL;AACA,IAAI,KAAK,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,eAAe,EAAE;AACpD,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACvD,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,YAAY,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1E,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,MAAM,aAAa,GAAG,CAAC,IAAI,KAAK;AAChC;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,KAAK,KAAK;AACtB,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK;AAC3C,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,IAAI,KAAK,KAAK;AACtB,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO;AAC9C,QAAQ,OAAO,OAAO;AACtB,IAAI,IAAI,IAAI;AACZ,QAAQ,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9B,IAAI,OAAO,SAAS;AACpB,CAAC;AACD,MAAM,iBAAiB,GAAG,CAAC,QAAQ,KAAK;AACxC;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE;AACrC;AACA;AACA;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChC,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,QAAQ,KAAK,SAAS;AAC9B,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,QAAQ,KAAK,QAAQ;AAC7B,QAAQ,OAAO,OAAO;AACtB,IAAI,IAAI,QAAQ,KAAK,OAAO;AAC5B,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,QAAQ,KAAK,SAAS;AAC9B,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,QAAQ,KAAK,SAAS;AAC9B,QAAQ,OAAO,SAAS;AACxB,IAAI,IAAI,QAAQ,KAAK,OAAO;AAC5B,QAAQ,OAAO,OAAO;AACtB,IAAI,IAAI,QAAQ;AAChB,QAAQ,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClC,IAAI,OAAO,SAAS;AACpB,CAAC;AACD,IAAI,gBAAgB;AACb,MAAM,kBAAkB,GAAG,MAAM;AACxC,IAAI,QAAQ,gBAAgB,KAAK,gBAAgB,GAAG,qBAAqB,EAAE,CAAC;AAC5E,CAAC;;AC3JD;AACO,SAAS,eAAe,GAAG;AAClC,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AACtC,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,mJAAmJ,CAAC;AACxK;AACO,SAAS,kBAAkB,CAAC,GAAG,IAAI,EAAE;AAC5C,IAAI,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc;AACpD,IAAI,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;AAC/C;AACA;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,yHAAyH,CAAC;AAClJ,IAAI;AACJ,IAAI,OAAO,IAAI,cAAc,CAAC,GAAG,IAAI,CAAC;AACtC;AACO,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AAC7C,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,aAAa,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAChH,IAAI,OAAO,kBAAkB,CAAC;AAC9B,QAAQ,KAAK,GAAG,EAAE,CAAC;AACnB,QAAQ,MAAM,IAAI,CAAC,UAAU,EAAE;AAC/B,YAAY,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AACrD,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,UAAU,CAAC,KAAK,EAAE;AAClC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,MAAM,IAAI,CAAC,MAAM,IAAI;AACjC,QAAQ,CAAC;AACT,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,6BAA6B,CAAC,MAAM,EAAE;AACtD,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AACpC,QAAQ,OAAO,MAAM;AACrB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,OAAO;AACX,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,IAAI;AAChB,gBAAgB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;AAClD,gBAAgB,IAAI,MAAM,EAAE,IAAI;AAChC,oBAAoB,MAAM,CAAC,WAAW,EAAE,CAAC;AACzC,gBAAgB,OAAO,MAAM;AAC7B,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC;AACrC,gBAAgB,MAAM,CAAC;AACvB,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE;AACjD,YAAY,MAAM,CAAC,WAAW,EAAE;AAChC,YAAY,MAAM,aAAa;AAC/B,YAAY,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;AACnD,QAAQ,CAAC;AACT,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG;AACjC,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACO,eAAe,oBAAoB,CAAC,MAAM,EAAE;AACnD,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;AACrD,QAAQ;AACR,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AACtC,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,IAAI;AACvD,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrC,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE;AACzC,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,IAAI,MAAM,aAAa;AACvB;;ACnFA;AACO,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK;AACtD,IAAI,OAAO;AACX,QAAQ,WAAW,EAAE;AACrB,YAAY,cAAc,EAAE,kBAAkB;AAC9C,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAClC,KAAK;AACL,CAAC;;ACRM,MAAM,cAAc,GAAG,SAAS;AAChC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;AAC1C,MAAM,UAAU,GAAG;AAC1B,IAAI,OAAO,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AAClD,IAAI,OAAO,EAAE,iBAAiB;AAC9B,CAAC;AACM,MAAM,OAAO,GAAG,SAAS;;ACJzB,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACrH,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClB,MAAM,SAAS,mBAAmB,CAAC,MAAM;AACzC,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAClC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9E,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,CAAC,GAAG;AAsGJ,MAAM,KAAK,GAAG,IAAI;AACX,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK;AACxE;AACA;AACA,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,IAAI,MAAM,GAAG,GAAG;AACpB,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,IAAI;AACJ,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACtC,QAAQ,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AAC5B,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,YAAY,EAAE;AAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,EAAE,EAAE;AACvE,YAAY,OAAO,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;AAC/D,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,IAAI,GAAG,GAAG,EAAE;AAChB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE;AACnD,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM;AACpF,QAAQ,MAAM,GAAG,GAAG,EAAE;AACtB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACjD,YAAY,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,KAAK,IAAI;AAC1B,gBAAgB,CAAC,KAAK,IAAI;AAC1B,gBAAgB,CAAC,KAAK,IAAI;AAC1B,gBAAgB,CAAC,KAAK,IAAI;AAC1B,iBAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACxC,iBAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACxC,iBAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AACxC,iBAAiB,MAAM,KAAK,OAAO,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAClE,cAAc;AACd,gBAAgB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE;AAC1B,gBAAgB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC9C,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,GAAG,KAAK,EAAE;AAC3B,gBAAgB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3F,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,EAAE;AAC3C,gBAAgB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/B,oBAAoB,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACpH,gBAAgB;AAChB,YAAY;AACZ,YAAY,CAAC,IAAI,CAAC;AAClB,YAAY,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACjF,YAAY,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,gBAAgB,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,oBAAoB,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AACxD,oBAAoB,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACvD,oBAAoB,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAChD,QAAQ;AACR,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3B,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,CAAC;AAwBM,SAAS,SAAS,CAAC,GAAG,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzC,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3F;AAIO,SAAS,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE;AACnC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACtB,QAAQ,MAAM,MAAM,GAAG,EAAE;AACzB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAChD,YAAY,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,OAAO,EAAE,CAAC,GAAG,CAAC;AAClB;;ACpNA,MAAM,uBAAuB,GAAG;AAChC,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrB,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;AACpC,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC/C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAI,CAAC;AACL,CAAC;AACD,MAAM,aAAa,GAAG,UAAU,GAAG,EAAE,cAAc,EAAE;AACrD,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,CAAC,cAAc,CAAC,CAAC;AAChG,CAAC;AACD,IAAI,WAAW;AACf,MAAM,QAAQ,GAAG;AACjB,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,gBAAgB,EAAE,KAAK;AAC3B,IAAI,WAAW,EAAE,SAAS;AAC1B,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,gBAAgB,EAAE,KAAK;AAC3B,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,SAAS,EAAE,iBAAiB;AAChC;AACA,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,OAAO,CAAC,WAAW,KAAK,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC;AAC9G,IAAI,CAAC;AACL,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,kBAAkB,EAAE,KAAK;AAC7B,CAAC;AACD,SAAS,wBAAwB,CAAC,CAAC,EAAE;AACrC,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ;AACjC,QAAQ,OAAO,CAAC,KAAK,QAAQ;AAC7B,QAAQ,OAAO,CAAC,KAAK,SAAS;AAC9B,QAAQ,OAAO,CAAC,KAAK,QAAQ;AAC7B,QAAQ,OAAO,CAAC,KAAK,QAAQ;AAC7B;AACA,MAAM,QAAQ,GAAG,EAAE;AACnB,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE;AAC5P,IAAI,IAAI,GAAG,GAAG,MAAM;AACpB,IAAI,IAAI,MAAM,GAAG,WAAW;AAC5B,IAAI,IAAI,IAAI,GAAG,CAAC;AAChB,IAAI,IAAI,SAAS,GAAG,KAAK;AACzB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,SAAS,EAAE;AAC7E;AACA,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACtC,QAAQ,IAAI,IAAI,CAAC;AACjB,QAAQ,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AACxC,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE;AAC9B,gBAAgB,MAAM,IAAI,UAAU,CAAC,qBAAqB,CAAC;AAC3D,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,SAAS,GAAG,IAAI,CAAC;AACjC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,WAAW,EAAE;AACzD,YAAY,IAAI,GAAG,CAAC;AACpB,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AACtC,QAAQ,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;AACjC,IAAI;AACJ,SAAS,IAAI,GAAG,YAAY,IAAI,EAAE;AAClC,QAAQ,GAAG,GAAG,aAAa,GAAG,GAAG,CAAC;AAClC,IAAI;AACJ,SAAS,IAAI,mBAAmB,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAC9D,QAAQ,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,UAAU,KAAK,EAAE;AAC9C,YAAY,IAAI,KAAK,YAAY,IAAI,EAAE;AACvC,gBAAgB,OAAO,aAAa,GAAG,KAAK,CAAC;AAC7C,YAAY;AACZ,YAAY,OAAO,KAAK;AACxB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AACtB,QAAQ,IAAI,kBAAkB,EAAE;AAChC,YAAY,OAAO,OAAO,IAAI,CAAC,gBAAgB;AAC/C;AACA,gBAAgB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;AACxE,kBAAkB,MAAM;AACxB,QAAQ;AACR,QAAQ,GAAG,GAAG,EAAE;AAChB,IAAI;AACJ,IAAI,IAAI,wBAAwB,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACzD,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,MAAM,SAAS,GAAG,gBAAgB,GAAG;AACjD;AACA,kBAAkB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AAC3E,YAAY,OAAO;AACnB,gBAAgB,SAAS,GAAG,SAAS,CAAC;AACtC,oBAAoB,GAAG;AACvB;AACA,oBAAoB,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACzF,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AACpC,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,IAAI,QAAQ;AAChB,IAAI,IAAI,mBAAmB,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACzD;AACA,QAAQ,IAAI,gBAAgB,IAAI,OAAO,EAAE;AACzC;AACA,YAAY,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;AACzC,QAAQ;AACR,QAAQ,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;AACvF,IAAI;AACJ,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAQ,QAAQ,GAAG,MAAM;AACzB,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,QAAQ,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AAChD,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AAClG,IAAI,MAAM,eAAe,GAAG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,cAAc,GAAG,IAAI,GAAG,cAAc;AACvH,IAAI,IAAI,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D,QAAQ,OAAO,eAAe,GAAG,IAAI;AACrC,IAAI;AACJ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC9C,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,KAAK;AACnB;AACA,QAAQ,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,WAAW,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AAC1F,QAAQ,IAAI,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,WAAW,GAAG,SAAS,IAAI,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG;AAC1F,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;AACvC,YAAY,OAAO,mBAAmB,KAAK,UAAU;AACrD,gBAAgB,mBAAmB,CAAC,eAAe,EAAE,WAAW;AAChE,kBAAkB;AAClB,cAAc,eAAe,IAAI,SAAS,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,CAAC;AACzF,QAAQ,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AACrC,QAAQ,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAE;AAC9C,QAAQ,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;AACnD,QAAQ,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe;AACtK;AACA,QAAQ,mBAAmB,KAAK,OAAO,IAAI,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACtM,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,2BAA2B,CAAC,IAAI,GAAG,QAAQ,EAAE;AACtD,IAAI,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACpG,QAAQ,MAAM,IAAI,SAAS,CAAC,wEAAwE,CAAC;AACrG,IAAI;AACJ,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;AAClG,QAAQ,MAAM,IAAI,SAAS,CAAC,uEAAuE,CAAC;AACpG,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE;AAC5G,QAAQ,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC;AAC5D,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;AACpD,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,EAAE;AAC1G,QAAQ,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC;AAChG,IAAI;AACJ,IAAI,IAAI,MAAM,GAAG,cAAc;AAC/B,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;AAC5C,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;AAC3C,YAAY,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC;AAClE,QAAQ;AACR,QAAQ,MAAM,GAAG,IAAI,CAAC,MAAM;AAC5B,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM;AAChC,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACnE,QAAQ,MAAM,GAAG,IAAI,CAAC,MAAM;AAC5B,IAAI;AACJ,IAAI,IAAI,WAAW;AACnB,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,IAAI,uBAAuB,EAAE;AACzE,QAAQ,WAAW,GAAG,IAAI,CAAC,WAAW;AACtC,IAAI;AACJ,SAAS,IAAI,SAAS,IAAI,IAAI,EAAE;AAChC,QAAQ,WAAW,GAAG,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ;AACzD,IAAI;AACJ,SAAS;AACT,QAAQ,WAAW,GAAG,QAAQ,CAAC,WAAW;AAC1C,IAAI;AACJ,IAAI,IAAI,gBAAgB,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;AAC9E,QAAQ,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC;AAC5E,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW;AAC3D,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,KAAK,IAAI;AACvC,YAAY;AACZ,cAAc,QAAQ,CAAC;AACvB,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS;AAC1B,IAAI,OAAO;AACX,QAAQ,cAAc,EAAE,OAAO,IAAI,CAAC,cAAc,KAAK,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc;AAChH;AACA,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,gBAAgB,EAAE,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB;AAC1H,QAAQ,WAAW,EAAE,WAAW;AAChC,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,eAAe,EAAE,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe;AACpH,QAAQ,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc;AAC7C,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,GAAG,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAC9F,QAAQ,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;AAChF,QAAQ,eAAe,EAAE,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe;AACpH,QAAQ,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AACrF,QAAQ,gBAAgB,EAAE,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB;AACxH,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,aAAa,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa;AAC7G,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS;AAC5F;AACA,QAAQ,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI;AAChE,QAAQ,kBAAkB,EAAE,OAAO,IAAI,CAAC,kBAAkB,KAAK,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB;AAChI,KAAK;AACL;AACO,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE;AAC7C,IAAI,IAAI,GAAG,GAAG,MAAM;AACpB,IAAI,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACrD,IAAI,IAAI,QAAQ;AAChB,IAAI,IAAI,MAAM;AACd,IAAI,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;AAC9C,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM;AAC/B,QAAQ,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC;AAC7B,IAAI;AACJ,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtC,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM;AAC/B,QAAQ,QAAQ,GAAG,MAAM;AACzB,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,EAAE;AACnB,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AACjD,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC;AAC5E,IAAI,MAAM,cAAc,GAAG,mBAAmB,KAAK,OAAO,IAAI,OAAO,CAAC,cAAc;AACpF,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACtB,QAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,IAAI,OAAO,EAAE;AACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC9C,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC/B,QAAQ,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AACpD,YAAY;AACZ,QAAQ;AACR,QAAQ,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG;AACzD;AACA,QAAQ,mBAAmB,EAAE,cAAc,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC3V,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;AAC/C,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE;AAC3D,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE;AACjC,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY,EAAE;AAC9C;AACA,YAAY,MAAM,IAAI,sBAAsB;AAC5C,QAAQ;AACR,aAAa;AACb;AACA,YAAY,MAAM,IAAI,iBAAiB;AACvC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE;AACnD;;AChRA;AAEO,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,OAAOC,SAAY,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC3D;;ACJO,SAAS,WAAW,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,MAAM,IAAI,MAAM,CAAC,MAAM;AAC/B,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;AACzC,IAAI,IAAI,KAAK,GAAG,CAAC;AACjB,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;AACjC,QAAQ,KAAK,IAAI,MAAM,CAAC,MAAM;AAC9B,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;AACA,IAAI,WAAW;AACR,SAAS,UAAU,CAAC,GAAG,EAAE;AAChC,IAAI,IAAI,OAAO;AACf,IAAI,OAAO,CAAC,WAAW;AACvB,SAAS,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACtG;AACA,IAAI,WAAW;AACR,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,OAAO;AACf,IAAI,OAAO,CAAC,WAAW;AACvB,SAAS,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACxG;;ACxBA,IAAI,mBAAmB,EAAE,gCAAgC;AAGzD;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,GAAG;AAClB,QAAQ,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC7C,QAAQ,gCAAgC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC1D,QAAQ,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,UAAU,EAAO,CAAC;AAChF,QAAQ,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,IAAS,CAAC;AACjF,IAAI;AACJ,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,KAAK,YAAY,WAAW,GAAG,IAAI,UAAU,CAAC,KAAK;AAC/E,cAAc,OAAO,KAAK,KAAK,QAAQ,GAAG,UAAU,CAAC,KAAK;AAC1D,kBAAkB,KAAK;AACvB,QAAQ,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAM,CAAC;AAClJ,QAAQ,MAAM,KAAK,GAAG,EAAE;AACxB,QAAQ,IAAI,YAAY;AACxB,QAAQ,OAAO,CAAC,YAAY,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;AACvL,YAAY,IAAI,YAAY,CAAC,QAAQ,IAAI,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;AACtH;AACA,gBAAgB,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,YAAY,CAAC,KAAU,CAAC;AACvG,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,IAAI,IAAI;AAC3F,iBAAiB,YAAY,CAAC,KAAK,KAAK,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;AAC3I,gBAAgB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnL,gBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAM,CAAC;AAC5M,gBAAgB,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,IAAS,CAAC;AACzF,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,YAAY,CAAC,SAAS,GAAG,CAAC,GAAG,YAAY,CAAC,SAAS;AAC/J,YAAY,MAAM,IAAI,GAAG,UAAU,CAAC,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjH,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,YAAY,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAM,CAAC;AACvJ,YAAY,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,IAAS,CAAC;AACrF,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;AAC5E,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,IAAI;AACJ;AACA,mBAAmB,GAAG,IAAI,OAAO,EAAE,EAAE,gCAAgC,GAAG,IAAI,OAAO,EAAE;AACrF;AACA,WAAW,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,WAAW,CAAC,cAAc,GAAG,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE;AAC9C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC;AACzB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;AACnC,YAAY,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;AAClE,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACpC,YAAY,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;AACjE,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACO,SAAS,sBAAsB,CAAC,MAAM,EAAE;AAC/C;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC;AACzB,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChD,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,EAAE;AAChE;AACA,YAAY,OAAO,CAAC,GAAG,CAAC;AACxB,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;AAClE;AACA,YAAY,OAAO,CAAC,GAAG,CAAC;AACxB,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;AAClC,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO;AACrC,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM;AACjC,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ;AACtC,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,EAAE;AACvC;AACA,YAAY,OAAO,CAAC,GAAG,CAAC;AACxB,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,EAAE;AACb;;AC1GA;AAEA,MAAM,YAAY,GAAG;AACrB,IAAI,GAAG,EAAE,CAAC;AACV,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,IAAI,EAAE,GAAG;AACb,IAAI,KAAK,EAAE,GAAG;AACd,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,KAAK;AACjE,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE;AAC1C,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAClJ,IAAI,OAAO,SAAS;AACpB,CAAC;AACD,SAAS,IAAI,GAAG,EAAE;AAClB,SAAS,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE;AACnE,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,IAAI;AACJ;AACA,MAAM,UAAU,GAAG;AACnB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,CAAC;AACD,IAAI,aAAa,mBAAmB,IAAI,OAAO,EAAE;AAC1C,SAAS,SAAS,CAAC,MAAM,EAAE;AAClC,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAChC,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK;AAC7C,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;AAClD,IAAI,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACtD,QAAQ,OAAO,YAAY,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;AACnD,QAAQ,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;AACjD,QAAQ,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;AACjD,QAAQ,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;AACnD,KAAK;AACL,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACtD,IAAI,OAAO,WAAW;AACtB;AACO,MAAM,oBAAoB,GAAG,CAAC,OAAO,KAAK;AACjD,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;AAChD,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,YAAY,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK;AAClK,YAAY,IAAI;AAChB,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,eAAe;AACnD,gBAAgB,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS;AAChD,gBAAgB,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW;AAClD,gBAAgB,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ;AAC/C,gBAAgB,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;AACnD,gBAAgB;AAChB,kBAAkB,KAAK;AACvB,SAAS,CAAC,CAAC;AACX,IAAI;AACJ,IAAI,IAAI,qBAAqB,IAAI,OAAO,EAAE;AAC1C,QAAQ,IAAI,OAAO,CAAC,mBAAmB,EAAE;AACzC,YAAY,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,mBAAmB;AACzD,QAAQ;AACR,QAAQ,OAAO,OAAO,CAAC,mBAAmB;AAC1C,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB,CAAC;;AC/ED,IAAI,cAAc;AAUX,MAAM,MAAM,CAAC;AACpB,IAAI,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE;AAC9C,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAW,CAAC;AACjE,IAAI;AACJ,IAAI,OAAO,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE;AAC9E,QAAQ,IAAI,QAAQ,GAAG,KAAK;AAC5B,QAAQ,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO;AAC3D,QAAQ,gBAAgB,QAAQ,GAAG;AACnC,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,MAAM,IAAI,WAAW,CAAC,0EAA0E,CAAC;AACjH,YAAY;AACZ,YAAY,QAAQ,GAAG,IAAI;AAC3B,YAAY,IAAI,IAAI,GAAG,KAAK;AAC5B,YAAY,IAAI;AAChB,gBAAgB,WAAW,MAAM,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;AAChF,oBAAoB,IAAI,IAAI;AAC5B,wBAAwB;AACxB,oBAAoB,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACvD,wBAAwB,IAAI,GAAG,IAAI;AACnC,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAChF,wBAAwB,IAAI,IAAI;AAChC,wBAAwB,IAAI;AAC5B,4BAA4B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACvD,wBAAwB;AACxB,wBAAwB,OAAO,CAAC,EAAE;AAClC,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;AACxF,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAChE,4BAA4B,MAAM,CAAC;AACnC,wBAAwB;AACxB,wBAAwB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAChD,4BAA4B,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;AAClG,wBAAwB;AACxB,wBAAwB,MAAM,mBAAmB,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;AACrF,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,IAAI,IAAI;AAChC,wBAAwB,IAAI;AAC5B,4BAA4B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACvD,wBAAwB;AACxB,wBAAwB,OAAO,CAAC,EAAE;AAClC,4BAA4B,OAAO,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;AACzF,4BAA4B,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AACjE,4BAA4B,MAAM,CAAC;AACnC,wBAAwB;AACxB;AACA,wBAAwB,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,EAAE;AAClD,4BAA4B,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9F,wBAAwB;AACxB,wBAAwB,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9D,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,GAAG,IAAI;AAC3B,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB;AACA,gBAAgB,IAAI,YAAY,CAAC,CAAC,CAAC;AACnC,oBAAoB;AACpB,gBAAgB,MAAM,CAAC;AACvB,YAAY;AACZ,oBAAoB;AACpB;AACA,gBAAgB,IAAI,CAAC,IAAI;AACzB,oBAAoB,UAAU,CAAC,KAAK,EAAE;AACtC,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;AACvD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAO,kBAAkB,CAAC,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE;AAClE,QAAQ,IAAI,QAAQ,GAAG,KAAK;AAC5B,QAAQ,gBAAgB,SAAS,GAAG;AACpC,YAAY,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE;AACjD,YAAY,MAAM,IAAI,GAAG,6BAA6B,CAAC,cAAc,CAAC;AACtE,YAAY,WAAW,MAAM,KAAK,IAAI,IAAI,EAAE;AAC5C,gBAAgB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC9D,oBAAoB,MAAM,IAAI;AAC9B,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE;AACpD,gBAAgB,MAAM,IAAI;AAC1B,YAAY;AACZ,QAAQ;AACR,QAAQ,gBAAgB,QAAQ,GAAG;AACnC,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,MAAM,IAAI,WAAW,CAAC,0EAA0E,CAAC;AACjH,YAAY;AACZ,YAAY,QAAQ,GAAG,IAAI;AAC3B,YAAY,IAAI,IAAI,GAAG,KAAK;AAC5B,YAAY,IAAI;AAChB,gBAAgB,WAAW,MAAM,IAAI,IAAI,SAAS,EAAE,EAAE;AACtD,oBAAoB,IAAI,IAAI;AAC5B,wBAAwB;AACxB,oBAAoB,IAAI,IAAI;AAC5B,wBAAwB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9C,gBAAgB;AAChB,gBAAgB,IAAI,GAAG,IAAI;AAC3B,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB;AACA,gBAAgB,IAAI,YAAY,CAAC,CAAC,CAAC;AACnC,oBAAoB;AACpB,gBAAgB,MAAM,CAAC;AACvB,YAAY;AACZ,oBAAoB;AACpB;AACA,gBAAgB,IAAI,CAAC,IAAI;AACzB,oBAAoB,UAAU,CAAC,KAAK,EAAE;AACtC,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;AACvD,IAAI;AACJ,IAAI,EAAE,cAAc,GAAG,IAAI,OAAO,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG;AAC/D,QAAQ,OAAO,IAAI,CAAC,QAAQ,EAAE;AAC9B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,GAAG,GAAG;AACV,QAAQ,MAAM,IAAI,GAAG,EAAE;AACvB,QAAQ,MAAM,KAAK,GAAG,EAAE;AACxB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AACxC,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACvC,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,MAAM;AAC5B,oBAAoB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5C,wBAAwB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE;AACtD,wBAAwB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzC,wBAAwB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1C,oBAAoB;AACpB,oBAAoB,OAAO,KAAK,CAAC,KAAK,EAAE;AACxC,gBAAgB,CAAC;AACjB,aAAa;AACb,QAAQ,CAAC;AACT,QAAQ,OAAO;AACf,YAAY,IAAI,MAAM,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;AACnH,YAAY,IAAI,MAAM,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;AACpH,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,IAAI,GAAG,IAAI;AACzB,QAAQ,IAAI,IAAI;AAChB,QAAQ,OAAO,kBAAkB,CAAC;AAClC,YAAY,MAAM,KAAK,GAAG;AAC1B,gBAAgB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AACnD,YAAY,CAAC;AACb,YAAY,MAAM,IAAI,CAAC,IAAI,EAAE;AAC7B,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;AAC7D,oBAAoB,IAAI,IAAI;AAC5B,wBAAwB,OAAO,IAAI,CAAC,KAAK,EAAE;AAC3C,oBAAoB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC1E,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,gBAAgB;AAChB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,gBAAgB;AAChB,YAAY,CAAC;AACb,YAAY,MAAM,MAAM,GAAG;AAC3B,gBAAgB,MAAM,IAAI,CAAC,MAAM,IAAI;AACrC,YAAY,CAAC;AACb,SAAS,CAAC;AACV,IAAI;AACJ;AACO,gBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE;AAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxB,QAAQ,UAAU,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW;AACvD,YAAY,UAAU,CAAC,SAAS,CAAC,OAAO,KAAK,aAAa,EAAE;AAC5D,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,8JAA8J,CAAC,CAAC;AACnM,QAAQ;AACR,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,iDAAiD,CAAC,CAAC;AAClF,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE;AACvC,IAAI,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE;AACzC,IAAI,MAAM,IAAI,GAAG,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7D,IAAI,WAAW,MAAM,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;AACtD,QAAQ,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACzD,YAAY,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/C,YAAY,IAAI,GAAG;AACnB,gBAAgB,MAAM,GAAG;AACzB,QAAQ;AACR,IAAI;AACJ,IAAI,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE;AAC5C,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3C,QAAQ,IAAI,GAAG;AACf,YAAY,MAAM,GAAG;AACrB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa,CAAC,QAAQ,EAAE;AACxC,IAAI,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE;AAC/B,IAAI,WAAW,MAAM,KAAK,IAAI,QAAQ,EAAE;AACxC,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,KAAK,YAAY,WAAW,GAAG,IAAI,UAAU,CAAC,KAAK;AAC/E,cAAc,OAAO,KAAK,KAAK,QAAQ,GAAG,UAAU,CAAC,KAAK;AAC1D,kBAAkB,KAAK;AACvB,QAAQ,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;AACtE,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAQ,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;AAC7C,QAAQ,IAAI,GAAG,OAAO;AACtB,QAAQ,IAAI,YAAY;AACxB,QAAQ,OAAO,CAAC,YAAY,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACrE,YAAY,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;AAC7C,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AAC3C,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAQ,MAAM,IAAI;AAClB,IAAI;AACJ;AACA,MAAM,UAAU,CAAC;AACjB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI;AACzB,QAAQ,IAAI,CAAC,IAAI,GAAG,EAAE;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjC,YAAY,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB;AACA,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAChD,gBAAgB,OAAO,IAAI;AAC3B,YAAY,MAAM,GAAG,GAAG;AACxB,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjC,gBAAgB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,gBAAgB,GAAG,EAAE,IAAI,CAAC,MAAM;AAChC,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI;AAC7B,YAAY,IAAI,CAAC,IAAI,GAAG,EAAE;AAC1B,YAAY,IAAI,CAAC,MAAM,GAAG,EAAE;AAC5B,YAAY,OAAO,GAAG;AACtB,QAAQ;AACR,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAClC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;AACxD,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACnC,YAAY,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,QAAQ;AACR,QAAQ,IAAI,SAAS,KAAK,OAAO,EAAE;AACnC,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK;AAC9B,QAAQ;AACR,aAAa,IAAI,SAAS,KAAK,MAAM,EAAE;AACvC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE;AACnC,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AACxC,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACtB,QAAQ,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5F,IAAI;AACJ,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACxB;;AC9RA;AAGO,eAAe,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE;AAC1D,IAAI,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,KAAK;AAC5E,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY;AACpC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AAClC,YAAY,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC/G;AACA;AACA,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE;AAC7C,gBAAgB,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAC3I,YAAY;AACZ,YAAY,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAClH,QAAQ;AACR;AACA,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACrC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC5C,YAAY,OAAO,QAAQ;AAC3B,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAChE,QAAQ,MAAM,SAAS,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;AAC5D,QAAQ,MAAM,MAAM,GAAG,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC9F,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACxE,YAAY,IAAI,aAAa,KAAK,GAAG,EAAE;AACvC;AACA,gBAAgB,OAAO,SAAS;AAChC,YAAY;AACZ,YAAY,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAC9C,YAAY,OAAO,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC/C,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAC1C,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC,GAAG;AACR,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;AACtF,QAAQ,mBAAmB;AAC3B,QAAQ,GAAG,EAAE,QAAQ,CAAC,GAAG;AACzB,QAAQ,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC/B,QAAQ,IAAI;AACZ,QAAQ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;AAC1C,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI;AACf;AACO,SAAS,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC9C,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrE,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE;AACvD,QAAQ,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AACnD,QAAQ,UAAU,EAAE,KAAK;AACzB,KAAK,CAAC;AACN;;ACtDA;AACA,IAAI,kBAAkB;AAGtB;AACA;AACA;AACA;AACO,MAAM,UAAU,SAAS,OAAO,CAAC;AACxC,IAAI,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,aAAa,GAAG,oBAAoB,EAAE;AAC/E,QAAQ,KAAK,CAAC,CAAC,OAAO,KAAK;AAC3B;AACA;AACA;AACA,YAAY,OAAO,CAAC,IAAI,CAAC;AACzB,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC5C,QAAQ,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAW,CAAC;AACrE,IAAI;AACJ,IAAI,WAAW,CAAC,SAAS,EAAE;AAC3B,QAAQ,OAAO,IAAI,UAAU,CAAC,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,MAAM,EAAE,KAAK,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5N,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AAC3D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrF,QAAQ,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;AACnF,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACjC,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACrJ,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,aAAa;AACjC,IAAI;AACJ,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;AACzD,IAAI;AACJ,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AAC7C,IAAI;AACJ,IAAI,OAAO,CAAC,SAAS,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9C,IAAI;AACJ;AACA,kBAAkB,GAAG,IAAI,OAAO,EAAE;;ACtElC;AACA,IAAI,oBAAoB;AAMjB,MAAM,YAAY,CAAC;AAC1B,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,QAAQ,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9C,QAAQ,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAW,CAAC;AACvE,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC9C,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM;AACzB,YAAY,OAAO,KAAK;AACxB,QAAQ,OAAO,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI;AACpD,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACzD,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,MAAM,IAAI,WAAW,CAAC,uFAAuF,CAAC;AAC1H,QAAQ;AACR,QAAQ,OAAO,MAAM,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;AAC1H,IAAI;AACJ,IAAI,OAAO,SAAS,GAAG;AACvB,QAAQ,IAAI,IAAI,GAAG,IAAI;AACvB,QAAQ,MAAM,IAAI;AAClB,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE;AACnC,YAAY,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAY,MAAM,IAAI;AACtB,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,oBAAoB,GAAG,IAAI,OAAO,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG;AAC5E,QAAQ,WAAW,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACnD,YAAY,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AACzD,gBAAgB,MAAM,IAAI;AAC1B,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,SAAS,UAAU,CAAC;AAC5C,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AACvC,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,MAAM,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACnJ,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,CAAC,aAAa,CAAC,GAAG;AACpC,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI;AAC/B,QAAQ,WAAW,MAAM,IAAI,IAAI,IAAI,EAAE;AACvC,YAAY,MAAM,IAAI;AACtB,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACO,MAAM,IAAI,SAAS,YAAY,CAAC;AACvC,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;AACnC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACjC,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE;AAC9B,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACO,MAAM,UAAU,SAAS,YAAY,CAAC;AAC7C,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK;AAC9C,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE;AAC9B,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AACrC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE;AAClC,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC7C,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE;AAC5C,QAAQ,IAAI,CAAC,EAAE,EAAE;AACjB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,GAAG,IAAI,CAAC,OAAO;AAC3B,YAAY,KAAK,EAAE;AACnB,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/C,gBAAgB,KAAK,EAAE,EAAE;AACzB,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACO,MAAM,sBAAsB,SAAS,YAAY,CAAC;AACzD,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK;AAC9C,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;AACzC,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE;AAC9B,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AACrC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE;AAClC,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;AACnC,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,GAAG,IAAI,CAAC,OAAO;AAC3B,YAAY,KAAK,EAAE;AACnB,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/C,gBAAgB,KAAK,EAAE,MAAM;AAC7B,aAAa;AACb,SAAS;AACT,IAAI;AACJ;AACO,MAAM,cAAc,SAAS,YAAY,CAAC;AACjD,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,KAAK;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI;AACrC,IAAI;AACJ,IAAI,iBAAiB,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE;AAC9B,IAAI;AACJ,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AACrC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE;AAClC,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI;AAChC,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,GAAG,IAAI,CAAC,OAAO;AAC3B,YAAY,KAAK,EAAE;AACnB,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/C,gBAAgB,KAAK,EAAE,MAAM;AAC7B,aAAa;AACb,SAAS;AACT,IAAI;AACJ;;AC9KA,MAAM,mBAAmB,GAAG;AAC5B,IAAI,GAAG,EAAE,sCAAsC;AAC/C,IAAI,EAAE,EAAE,2CAA2C;AACnD,CAAC;AACD,MAAM,yBAAyB,GAAG,iDAAiD;AAC5E,MAAM,oBAAoB,CAAC;AAClC,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;AAClC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,qCAAqC;AACrE,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,IAAIC,eAAqB,EAAE;AACrD,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACxE,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;AACrC,gBAAgB,OAAO,MAAM,IAAI,CAAC,cAAc;AAChD,YAAY;AACZ,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE;AACrD,YAAY,IAAI;AAChB,gBAAgB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc;AACvD,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,oBAAoB;AACpB,gBAAgB,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACzE,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,MAAM;AACpE,gBAAgB,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1C,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK;AACrC,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAClE,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,UAAU,EAAE,yBAAyB;AACjD,YAAY,aAAa,EAAE,YAAY;AACvC,YAAY,kBAAkB,EAAE,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;AACnF,YAAY,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;AAChE,YAAY,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;AAC5D,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AAClC,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpD,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACjE,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,OAAO,EAAE;AACrB,gBAAgB,cAAc,EAAE,kBAAkB;AAClD,aAAa;AACb,YAAY,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACtC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,YAAY,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACnD,YAAY,IAAI,IAAI,GAAG,SAAS;AAChC,YAAY,IAAI;AAChB,gBAAgB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,YAAY;AACZ,YAAY,MAAM,EAAE;AACpB,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC/F,gBAAgB,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC7E,YAAY;AACZ,YAAY,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,kCAAkC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;AACpI,QAAQ;AACR,QAAQ,MAAM,aAAa,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrD,QAAQ,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,IAAI,IAAI;AAC1D,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI;AACvD,QAAQ,IAAI,CAAC,WAAW,GAAG;AAC3B,YAAY,KAAK,EAAE,aAAa,CAAC,YAAY;AAC7C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,OAAO,aAAa,CAAC,YAAY;AACzC,IAAI;AACJ,IAAI,cAAc,CAAC,WAAW,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,SAAS;AAClD,IAAI;AACJ,IAAI,YAAY,CAAC,WAAW,EAAE;AAC9B,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,IAAI;AACtE,QAAQ,MAAM,QAAQ,GAAG,aAAa,GAAG,IAAI;AAC7C,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,SAAS,GAAG,QAAQ;AAC7D,IAAI;AACJ,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI;AAC/B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;AAClC,IAAI;AACJ;;ACvFO,MAAM,gBAAgB,GAAG,MAAM;AACtC,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AACrC,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU;AACtC,QAAQ,MAAM,SAAS,GAAG,OAAO,OAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AACxH,QAAQ,MAAM,IAAI,KAAK,CAAC,wEAAwE;AAChG,aAAa,SAAS;AACtB,gBAAgB;AAChB,kBAAkB,EAAE,CAAC,CAAC;AACtB,IAAI;AACJ,CAAC;AACD;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;AACtD,IAAI,gBAAgB,EAAE;AACtB,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,cAAc,EAAE,OAAO,CAAC;AAClE;AACO,SAAS,OAAO,CAAC,KAAK,EAAE;AAC/B,IAAI,QAAQ,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;AACvC,QAAQ,KAAK,KAAK,IAAI;AACtB,SAAS,CAAC,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7D,aAAa,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9D,aAAa,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7E,aAAa,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,QAAQ,EAAE;AACV,SAAS,KAAK,CAAC,OAAO;AACtB,SAAS,GAAG,EAAE,IAAI,SAAS;AAC3B;AACO,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,UAAU;AACzI;AACA;AACA;AACA;AACO,MAAM,gCAAgC,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK;AACvE,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,QAAQ,OAAO,IAAI;AACnB,IAAI,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAChE,CAAC;AACM,MAAM,2BAA2B,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK;AAClE,IAAI,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAChE,CAAC;AACD,MAAM,mBAAmB,mBAAmB,IAAI,OAAO,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,WAAW,EAAE;AACvC,IAAI,MAAM,KAAK,GAAG,OAAO,WAAW,KAAK,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK;AACrF,IAAI,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;AACjD,IAAI,IAAI,MAAM;AACd,QAAQ,OAAO,MAAM;AACrB,IAAI,MAAM,OAAO,GAAG,CAAC,YAAY;AACjC,QAAQ,IAAI;AACZ,YAAY,MAAM,aAAa,IAAI,UAAU,IAAI,KAAK;AACtD,gBAAgB,KAAK,CAAC;AACtB,kBAAkB,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;AACtD,YAAY,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE;AACvC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AAC5E,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,MAAM;AACd;AACA,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI,CAAC,GAAG;AACR,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3C,IAAI,OAAO,OAAO;AAClB;AACO,MAAM,UAAU,GAAG,OAAO,IAAI,EAAE,KAAK,KAAK;AACjD,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1C,QAAQ,MAAM,IAAI,SAAS,CAAC,mGAAmG,CAAC;AAChI,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC/B,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACvG,IAAI,OAAO,IAAI;AACf,CAAC;AACD;AACA;AACA,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK,KAAK,YAAY,IAAI,IAAI,MAAM,IAAI,KAAK;AACvE,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ;AACzD,IAAI,KAAK,KAAK,IAAI;AAClB,KAAK,KAAK,YAAY,QAAQ,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/E,MAAM,kBAAkB,GAAG,CAAC,KAAK,KAAK;AACtC,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5B,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC7C,IAAI,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC5C,QAAQ,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AAC/B,YAAY,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAgB,OAAO,IAAI;AAC3B,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,CAAC;AACD,MAAM,YAAY,GAAG,OAAO,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK;AACjD,IAAI,IAAI,KAAK,KAAK,SAAS;AAC3B,QAAQ;AACR,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,2DAA2D,CAAC,CAAC;AACnH,IAAI;AACJ;AACA,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9F,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,IAAI;AACJ,SAAS,IAAI,KAAK,YAAY,QAAQ,EAAE;AACxC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,IAAI;AACJ,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AACrC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1G,IAAI;AACJ,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAI;AACJ,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnC,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACtF,IAAI;AACJ,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACnH,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,qGAAqG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACpJ,IAAI;AACJ,CAAC;;AC/HD;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI;AAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC7B,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;AAClC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;AAClC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;AACpC,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;AACrC,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU;AAC3C;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI;AAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC7B,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;AAClC,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;AAC1C,IAAI,UAAU,CAAC,KAAK,CAAC;AACrB,MAAM,cAAc,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI;AAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC7B,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;AACjC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AACnD,IAAI,gBAAgB,EAAE;AACtB;AACA,IAAI,KAAK,GAAG,MAAM,KAAK;AACvB;AACA,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AAC3B,QAAQ,IAAI,KAAK,YAAY,IAAI,EAAE;AACnC,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,OAAO,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;AAChE,IAAI;AACJ,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;AAC/B,QAAQ,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE;AACvC,QAAQ,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACzE,QAAQ,OAAO,QAAQ,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;AAC5D,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC;AACvC,IAAI,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AACxB,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;AAClG,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACtC,YAAY,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE;AAC1C,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;AACzC;AACA,eAAe,QAAQ,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,GAAG,EAAE;AAClB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;AACjC,QAAQ,KAAK,YAAY,WAAW,EAAE;AACtC,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,IAAI;AACJ,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AAChC,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7E,IAAI;AACJ,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC;AACnC,MAAM;AACN,QAAQ,WAAW,MAAM,KAAK,IAAI,KAAK,EAAE;AACzC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ;AACR,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI;AACpD,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,OAAO,KAAK,CAAC,EAAE,WAAW,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5I,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;AACnD,QAAQ,OAAO,EAAE;AACjB,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACnD,IAAI,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE;;ACtFA;AACO,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,IAAI;AACJ;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,GAAG,EAAE;AACnC,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,kCAAkC,EAAE,kBAAkB,CAAC;AAC9E;AACA,MAAM,KAAK,mBAAmB,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzE,MAAM,qBAAqB,GAAG,CAAC,WAAW,GAAG,aAAa,KAAK,SAAS,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE;AACxG;AACA,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAC5B,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,QAAQ,GAAG,KAAK;AACxB,IAAI,MAAM,eAAe,GAAG,EAAE;AAC9B,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,KAAK;AACxE,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACvC,YAAY,QAAQ,GAAG,IAAI;AAC3B,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,GAAG,kBAAkB,GAAG,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC;AAC/E,QAAQ,IAAI,KAAK,KAAK,MAAM,CAAC,MAAM;AACnC,aAAa,KAAK,IAAI,IAAI;AAC1B,iBAAiB,OAAO,KAAK,KAAK,QAAQ;AAC1C;AACA,oBAAoB,KAAK,CAAC,QAAQ;AAClC,wBAAwB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK;AAC3G,8BAA8B,QAAQ,CAAC,CAAC,EAAE;AAC1C,YAAY,OAAO,GAAG,KAAK,GAAG,EAAE;AAChC,YAAY,eAAe,CAAC,IAAI,CAAC;AACjC,gBAAgB,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;AACjE,gBAAgB,MAAM,EAAE,OAAO,CAAC,MAAM;AACtC,gBAAgB,KAAK,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC;AACzD,qBAAqB,IAAI,CAAC,KAAK;AAC/B,qBAAqB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,8BAA8B,CAAC;AACjE,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,OAAO,aAAa,GAAG,YAAY,IAAI,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,OAAO,CAAC;AACtF,IAAI,CAAC,EAAE,EAAE,CAAC;AACV,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,MAAM,qBAAqB,GAAG,oCAAoC;AACtE,IAAI,IAAI,KAAK;AACb;AACA,IAAI,OAAO,CAAC,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE;AACpE,QAAQ,eAAe,CAAC,IAAI,CAAC;AAC7B,YAAY,KAAK,EAAE,KAAK,CAAC,KAAK;AAC9B,YAAY,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;AACnC,YAAY,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC;AACpF,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACrD,IAAI,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,QAAQ,IAAI,OAAO,GAAG,CAAC;AACvB,QAAQ,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK;AACnE,YAAY,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;AAC9D,YAAY,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACrD,YAAY,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM;AACpD,YAAY,OAAO,GAAG,GAAG,MAAM,GAAG,MAAM;AACxC,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,uDAAuD,EAAE;AACxF,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK;AAC/B,aAAa,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AACjD,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,CAAC;AACD;AACA;AACA;AACO,MAAM,IAAI,mBAAmB,qBAAqB,CAAC,aAAa,CAAC;;ACxExE;AAIA;AACA;AACA;iBACO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAChK,IAAI;AACJ;;ACxBO,SAAS,4BAA4B,CAAC,IAAI,EAAE;AACnD,IAAI,OAAO,IAAI,KAAK,SAAS,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;AAClF;AAeO,SAAS,uBAAuB,CAAC,eAAe,EAAE,MAAM,EAAE;AACjE,IAAI,MAAM,GAAG,GAAG,EAAE,GAAG,eAAe,EAAE;AACtC,IAAI,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE;AACjC,QAAQ,MAAM,EAAE;AAChB,YAAY,KAAK,EAAE,gCAAgC;AACnD,YAAY,UAAU,EAAE,KAAK;AAC7B,SAAS;AACT,QAAQ,SAAS,EAAE;AACnB,YAAY,KAAK,EAAE,MAAM;AACzB,YAAY,UAAU,EAAE,KAAK;AAC7B,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO,GAAG;AACd;AACO,SAAS,4BAA4B,CAAC,eAAe,EAAE;AAC9D,IAAI,OAAO,eAAe,GAAG,QAAQ,CAAC,KAAK,gCAAgC;AAC3E;AAmBO,SAASC,oBAAkB,CAAC,IAAI,EAAE;AACzC,IAAI,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,qBAAqB;AACrD;AACO,SAAS,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE;AAC7D,IAAI,IAAI,CAAC,MAAM,IAAI,CAACC,uBAAqB,CAAC,MAAM,CAAC,EAAE;AACnD,QAAQ,OAAO;AACf,YAAY,GAAG,UAAU;AACzB,YAAY,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACxD,gBAAgB,iDAAiD,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AAC5F,gBAAgB,OAAO;AACvB,oBAAoB,GAAG,MAAM;AAC7B,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,GAAG,MAAM,CAAC,OAAO;AACzC,wBAAwB,MAAM,EAAE,IAAI;AACpC,wBAAwB,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU;AACrD,4BAA4B;AAC5B,gCAAgC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;AACrE;AACA,8BAA8B,SAAS,CAAC;AACxC,qBAAqB;AACrB,iBAAiB;AACjB,YAAY,CAAC,CAAC;AACd,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC;AAClD;AACO,SAAS,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE;AACxD,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACvD,QAAQ,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE;AAC/C,YAAY,MAAM,IAAI,uBAAuB,EAAE;AAC/C,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,aAAa,KAAK,gBAAgB,EAAE;AACvD,YAAY,MAAM,IAAI,8BAA8B,EAAE;AACtD,QAAQ;AACR,QAAQ,iDAAiD,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AACpF,QAAQ,OAAO;AACf,YAAY,GAAG,MAAM;AACrB,YAAY,OAAO,EAAE;AACrB,gBAAgB,GAAG,MAAM,CAAC,OAAO;AACjC,gBAAgB,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU;AAC7C,oBAAoB;AACpB,wBAAwB,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAKC,eAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,SAAS;AAC9H;AACA,sBAAsB,SAAS,CAAC;AAChC,gBAAgB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;AACzE,oBAAoB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;AACtE,sBAAsB,IAAI;AAC1B,aAAa;AACb,SAAS;AACT,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE;AACrC;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9C,IAAI,IAAI,MAAM,CAAC,eAAe,EAAE,IAAI,KAAK,aAAa,EAAE;AACxD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,eAAe,EAAE,IAAI,KAAK,aAAa,EAAE;AACxD,QAAQ,IAAI,WAAW,IAAI,MAAM,CAAC,eAAe,EAAE;AACnD,YAAY,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe;AAC1D,YAAY,OAAO,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC;AACrD,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,IAAI;AACJ,IAAI,OAAO,IAAI;AACf;AACA,SAASA,eAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;AACzC,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,4BAA4B,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxJ,IAAI,OAAO;AACX,QAAQ,GAAG,QAAQ;AACnB,QAAQ,QAAQ,EAAE;AAClB,YAAY,GAAG,QAAQ,CAAC,QAAQ;AAChC,YAAY,gBAAgB,EAAEF,oBAAkB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS;AAC7G,kBAAkB,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS;AACrF,sBAAsB,IAAI;AAC1B,SAAS;AACT,KAAK;AACL;AACO,SAAS,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE;AACtD,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC1D,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,4BAA4B,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvJ,IAAI,QAAQ,4BAA4B,CAAC,SAAS,CAAC;AACnD,SAASA,oBAAkB,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC;AAC9E;AACO,SAASC,uBAAqB,CAAC,MAAM,EAAE;AAC9C,IAAI,IAAI,4BAA4B,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;AAC9D,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,QAAQ,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAKD,oBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK;AAC9H;AACO,SAAS,iDAAiD,CAAC,SAAS,EAAE;AAC7E,IAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,IAAI,EAAE,EAAE;AAC5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;AAC1C,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,iEAAiE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxH,QAAQ;AACR,IAAI;AACJ;AACO,SAAS,kBAAkB,CAAC,KAAK,EAAE;AAC1C,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE;AACpC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AACtC,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,wEAAwE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3H,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE;AAC3C,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;AAC1J,QAAQ;AACR,IAAI;AACJ;;AChKO,MAAM,kBAAkB,GAAG,CAAC,OAAO,KAAK;AAC/C,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,WAAW;AACxC,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,OAAO,KAAK;AAC1C,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,MAAM;AACnC,CAAC;;ACLD,IAAI,sBAAsB,EAAE,6BAA6B,EAAE,oCAAoC,EAAE,mCAAmC,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,wBAAwB;AAG5W,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,GAAG;AAClB,QAAQ,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE;AAC/C,QAAQ,6BAA6B,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACvD,QAAQ,oCAAoC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACjE,QAAQ,mCAAmC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAChE,QAAQ,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACjD,QAAQ,8BAA8B,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3D,QAAQ,6BAA6B,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1D,QAAQ,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AAC5C,QAAQ,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,QAAQ,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7C,QAAQ,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7C,QAAQ,mCAAmC,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5D,QAAQ,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACrG,YAAY,sBAAsB,CAAC,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,GAAG,CAAC;AAC5F,YAAY,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,MAAM,EAAE,GAAG,CAAC;AAC1F,QAAQ,CAAC,CAAM,CAAC;AAChB,QAAQ,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,EAAE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC/F,YAAY,sBAAsB,CAAC,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,GAAG,CAAC;AACtF,YAAY,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,GAAG,CAAC;AACpF,QAAQ,CAAC,CAAM,CAAC;AAChB;AACA;AACA;AACA;AACA,QAAQ,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACzF,QAAQ,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACnF,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB;AACA;AACA,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM;AAClC,gBAAgB,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC,YAAY,CAAC,EAAE,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9G,QAAQ,CAAC,EAAE,CAAC,CAAC;AACb,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,IAAI,IAAI,CAAC,KAAK;AACtB,YAAY;AACZ,QAAQ,sBAAsB,CAAC,IAAI,EAAE,oCAAoC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1F,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7B,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC;AACpE,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,CAAC;AACtE,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,CAAC;AACtE,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC/B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE;AACxB,QAAQ,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACrK,QAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;AACpC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE;AACzB,QAAQ,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;AAC1F,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY,OAAO,IAAI;AACvB,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACzE,QAAQ,IAAI,KAAK,IAAI,CAAC;AACtB,YAAY,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACtC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC1B,QAAQ,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACrK,QAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAChD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,IAAS,CAAC;AACxF,YAAY,IAAI,KAAK,KAAK,OAAO;AACjC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AAC1C,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;AACrC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,IAAS,CAAC;AACpF,QAAQ,MAAM,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,EAAE,GAAG,CAAC;AACxE,IAAI;AACJ,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AAC1B;AACA,QAAQ,IAAI,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE;AACnE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE;AAC7B,YAAY,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAS,CAAC;AACvE,YAAY,sBAAsB,CAAC,IAAI,EAAE,8BAA8B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACxF,QAAQ;AACR,QAAQ,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;AAC1F,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/G,YAAY,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAClE,QAAQ;AACR,QAAQ,IAAI,KAAK,KAAK,OAAO,EAAE;AAC/B,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AAC/G,gBAAgB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,YAAY;AACZ,YAAY,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACpG,YAAY,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9F,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC7B,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,KAAK,OAAO,EAAE;AAC/B;AACA,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,YAAY;AACZ,YAAY,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACpG,YAAY,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9F,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC7B,QAAQ;AACR,IAAI;AACJ,IAAI,UAAU,GAAG,EAAE;AACnB;AACA,6BAA6B,GAAG,IAAI,OAAO,EAAE,EAAE,oCAAoC,GAAG,IAAI,OAAO,EAAE,EAAE,mCAAmC,GAAG,IAAI,OAAO,EAAE,EAAE,uBAAuB,GAAG,IAAI,OAAO,EAAE,EAAE,8BAA8B,GAAG,IAAI,OAAO,EAAE,EAAE,6BAA6B,GAAG,IAAI,OAAO,EAAE,EAAE,sBAAsB,GAAG,IAAI,OAAO,EAAE,EAAE,kBAAkB,GAAG,IAAI,OAAO,EAAE,EAAE,oBAAoB,GAAG,IAAI,OAAO,EAAE,EAAE,oBAAoB,GAAG,IAAI,OAAO,EAAE,EAAE,mCAAmC,GAAG,IAAI,OAAO,EAAE,EAAE,sBAAsB,GAAG,IAAI,OAAO,EAAE,EAAE,wBAAwB,GAAG,SAAS,wBAAwB,CAAC,KAAK,EAAE;AAC3lB,IAAI,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAS,CAAC;AACjE,IAAI,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;AAC/D,QAAQ,KAAK,GAAG,IAAI,iBAAiB,EAAE;AACvC,IAAI;AACJ,IAAI,IAAI,KAAK,YAAY,iBAAiB,EAAE;AAC5C,QAAQ,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,EAAE,IAAS,CAAC;AACrE,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC,IAAI;AACJ,IAAI,IAAI,KAAK,YAAY,WAAW,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC,IAAI;AACJ,IAAI,IAAI,KAAK,YAAY,KAAK,EAAE;AAChC,QAAQ,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1D;AACA,QAAQ,WAAW,CAAC,KAAK,GAAG,KAAK;AACjC,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC;AAC/C,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;;ACxLM,SAAS,2BAA2B,CAAC,EAAE,EAAE;AAChD,IAAI,OAAO,OAAO,EAAE,CAAC,KAAK,KAAK,UAAU;AACzC;;ACFA,IAAI,uCAAuC,EAAE,6CAA6C,EAAE,6CAA6C,EAAE,sDAAsD,EAAE,4DAA4D,EAAE,iDAAiD,EAAE,4CAA4C,EAAE,yDAAyD;AAO3Z,MAAM,4BAA4B,GAAG,EAAE;AAChC,MAAM,4BAA4B,SAAS,WAAW,CAAC;AAC9D,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,uCAAuC,CAAC,GAAG,CAAC,IAAI,CAAC;AACzD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE;AAC1B,IAAI;AACJ,IAAI,kBAAkB,CAAC,cAAc,EAAE;AACvC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;AAClD,QAAQ,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC;AACpD,QAAQ,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO;AAC1D,QAAQ,IAAI,OAAO;AACnB,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACrC,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE;AACtC,QAAQ,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC;AACnC,YAAY,OAAO,CAAC,OAAO,GAAG,IAAI;AAClC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1C,YAAY,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE;AAC3D;AACA,gBAAgB,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC;AACrE,YAAY;AACZ,iBAAiB,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE;AACxE,gBAAgB,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE;AAC5D,oBAAoB,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE;AACvD,wBAAwB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,SAAS,CAAC,QAAQ,CAAC;AAC1E,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,UAAU;AACvB,YAAY,MAAM,IAAI,WAAW,CAAC,iDAAiD,CAAC;AACpF,QAAQ,OAAO,UAAU;AACzB,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,6CAA6C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnJ,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,6CAA6C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnJ,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,qBAAqB,GAAG;AAClC,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,sDAAsD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5J,IAAI;AACJ,IAAI,MAAM,2BAA2B,GAAG;AACxC,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,4DAA4D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAClK,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,iDAAiD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACvJ,IAAI;AACJ,IAAI,kBAAkB,GAAG;AACzB,QAAQ,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACzC,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClF,QAAQ,IAAI,UAAU;AACtB,YAAY,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,UAAU,CAAC;AACzD,QAAQ,MAAM,YAAY,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,6CAA6C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACjK,QAAQ,IAAI,YAAY;AACxB,YAAY,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC;AACpD,QAAQ,MAAM,YAAY,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,6CAA6C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACjK,QAAQ,IAAI,YAAY;AACxB,YAAY,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC;AACpD,QAAQ,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,sDAAsD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/K,QAAQ,IAAI,iBAAiB;AAC7B,YAAY,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;AAClE,QAAQ,MAAM,uBAAuB,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,4DAA4D,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3L,QAAQ,IAAI,uBAAuB,IAAI,IAAI;AAC3C,YAAY,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,uBAAuB,CAAC;AAC9E,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;AACxD,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,iDAAiD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9K,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACzD,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AACtC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,MAAM,CAAC,OAAO;AAC9B,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAQ;AACR,QAAQ,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,4CAA4C,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;AACnJ,QAAQ,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACjJ,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACnF,IAAI;AACJ,IAAI,MAAM,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtD,QAAQ,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC/C,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5C,QAAQ;AACR,QAAQ,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AACxE,IAAI;AACJ,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AAC7C,QAAQ,MAAM,IAAI,GAAG,MAAM;AAC3B,QAAQ,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM;AACtE,QAAQ,MAAM,oBAAoB,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,IAAI,WAAW,EAAE,QAAQ,EAAE,IAAI;AACtI,QAAQ,MAAM,EAAE,kBAAkB,GAAG,4BAA4B,EAAE,GAAG,OAAO,IAAI,EAAE;AACnF;AACA,QAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACtD,YAAY,IAAIA,oBAAkB,CAAC,IAAI,CAAC,EAAE;AAC1C,gBAAgB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACrC,oBAAoB,MAAM,IAAI,WAAW,CAAC,uEAAuE,CAAC;AAClH,gBAAgB;AAChB,gBAAgB,OAAO;AACvB,oBAAoB,IAAI,EAAE,UAAU;AACpC,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,QAAQ,EAAE,IAAI,CAAC,SAAS;AAChD,wBAAwB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;AAChD,wBAAwB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE;AACpE,wBAAwB,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;AAC5D,wBAAwB,KAAK,EAAE,IAAI,CAAC,SAAS;AAC7C,wBAAwB,MAAM,EAAE,IAAI;AACpC,qBAAqB;AACrB,iBAAiB;AACjB,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC;AACV,QAAQ,MAAM,eAAe,GAAG,EAAE;AAClC,QAAQ,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AACpC,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;AACvC,gBAAgB,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ;AACzF,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,OAAO,IAAI,MAAM;AACvC,YAAY,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU;AACvD,gBAAgB;AAChB,oBAAoB,IAAI,EAAE,UAAU;AACpC,oBAAoB,QAAQ,EAAE;AAC9B,wBAAwB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;AACzE,wBAAwB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU;AACzD,wBAAwB,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW;AAC3D,wBAAwB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;AACjD,qBAAqB;AACrB;AACA,kBAAkB,CAAC;AACnB,cAAc,SAAS;AACvB,QAAQ,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC/C,YAAY,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5C,QAAQ;AACR,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,EAAE,CAAC,EAAE;AACrD,YAAY,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;AAC5E,gBAAgB,GAAG,UAAU;AAC7B,gBAAgB,WAAW;AAC3B,gBAAgB,KAAK;AACrB,gBAAgB,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5C,aAAa,EAAE,OAAO,CAAC;AACvB,YAAY,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO;AAC9D,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,MAAM,IAAI,WAAW,CAAC,CAAC,0CAA0C,CAAC,CAAC;AACnF,YAAY;AACZ,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE;AAC7C,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE;AACxD,gBAAgB,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU;AACjD,oBAAoB;AACpB,gBAAgB,MAAM,YAAY,GAAG,SAAS,CAAC,EAAE;AACjD,gBAAgB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,QAAQ;AACpE,gBAAgB,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC;AAChD,gBAAgB,IAAI,CAAC,EAAE,EAAE;AACzB,oBAAoB,MAAM,OAAO,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe;AACrI,yBAAyB,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC3D,yBAAyB,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC;AACvD,oBAAoB,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACrE,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB,IAAI,oBAAoB,IAAI,oBAAoB,KAAK,IAAI,EAAE;AAChF,oBAAoB,MAAM,OAAO,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,4BAA4B,CAAC;AACrJ,oBAAoB,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACrE,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,MAAM;AAC1B,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,GAAG,2BAA2B,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;AAC1F,gBAAgB;AAChB,gBAAgB,OAAO,KAAK,EAAE;AAC9B,oBAAoB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1F,oBAAoB,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACrE,oBAAoB;AACpB,gBAAgB;AAChB;AACA,gBAAgB,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;AAClE,gBAAgB,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,yDAAyD,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AAC5L,gBAAgB,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACjE,gBAAgB,IAAI,oBAAoB,EAAE;AAC1C,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ;AACR,IAAI;AACJ;AACA,uCAAuC,GAAG,IAAI,OAAO,EAAE,EAAE,6CAA6C,GAAG,SAAS,6CAA6C,GAAG;AAClK,IAAI,OAAO,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,EAAE,6CAA6C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI;AAC/J,CAAC,EAAE,6CAA6C,GAAG,SAAS,6CAA6C,GAAG;AAC5G,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;AAChC,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACpB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,QAAQ,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE;AACzC;AACA,YAAY,MAAM,GAAG,GAAG;AACxB,gBAAgB,GAAG,OAAO;AAC1B,gBAAgB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;AAChD,gBAAgB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;AAChD,aAAa;AACb,YAAY,OAAO,GAAG;AACtB,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,WAAW,CAAC,4EAA4E,CAAC;AACvG,CAAC,EAAE,sDAAsD,GAAG,SAAS,sDAAsD,GAAG;AAC9H,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,QAAQ,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;AACxE,YAAY,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACrE,gBAAgB,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACtD,gBAAgB,IAAI,QAAQ,EAAE,IAAI,KAAK,UAAU,EAAE;AACnD,oBAAoB,OAAO,QAAQ,CAAC,QAAQ;AAC5C,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI;AACJ,CAAC,EAAE,4DAA4D,GAAG,SAAS,4DAA4D,GAAG;AAC1I,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,QAAQ,IAAI,aAAa,CAAC,OAAO,CAAC;AAClC,YAAY,OAAO,CAAC,OAAO,IAAI,IAAI;AACnC,YAAY,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;AAC/C,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW;AAC5D,gBAAgB,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE;AACpG,YAAY,OAAO,OAAO,CAAC,OAAO;AAClC,QAAQ;AACR,IAAI;AACJ,IAAI;AACJ,CAAC,EAAE,iDAAiD,GAAG,SAAS,iDAAiD,GAAG;AACpH,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,iBAAiB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,CAAC;AACxB,QAAQ,YAAY,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnD,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB;AAC9D,YAAY,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa;AACtD,YAAY,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY;AACpD,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,CAAC,EAAE,4CAA4C,GAAG,SAAS,4CAA4C,CAAC,MAAM,EAAE;AAChH,IAAI,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;AAC1C,QAAQ,MAAM,IAAI,WAAW,CAAC,8HAA8H,CAAC;AAC7J,IAAI;AACJ,CAAC,EAAE,yDAAyD,GAAG,SAAS,yDAAyD,CAAC,UAAU,EAAE;AAC9I,IAAI,QAAQ,OAAO,UAAU,KAAK,QAAQ,GAAG;AAC7C,UAAU,UAAU,KAAK,SAAS,GAAG;AACrC,cAAc,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACxC,CAAC;;AChSM,MAAM,oBAAoB,SAAS,4BAA4B,CAAC;AACvE,IAAI,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AAC7C,QAAQ,MAAM,MAAM,GAAG,IAAI,oBAAoB,EAAE;AACjD,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE;AACrF,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE;AACtC,QAAQ,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC;AACxC,QAAQ,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE;AAC5D,YAAY,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;AAClD,QAAQ;AACR,IAAI;AACJ;;AClBA,MAAM,GAAG,GAAG,WAAW;AACvB,MAAM,GAAG,GAAG,WAAW;AACvB,MAAM,GAAG,GAAG,WAAW;AACvB,MAAM,GAAG,GAAG,WAAW;AACvB,MAAM,IAAI,GAAG,WAAW;AACxB,MAAM,IAAI,GAAG,WAAW;AACxB,MAAM,GAAG,GAAG,WAAW;AACvB,MAAM,QAAQ,GAAG,WAAW;AAC5B,MAAM,cAAc,GAAG,WAAW;AAClC,MAAM,GAAG,GAAG,QAAQ,GAAG,cAAc;AACrC,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG;AACvC,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO;AAChC,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG;AAC5B,MAAM,GAAG,GAAG,IAAI,GAAG,UAAU;AAC7B,MAAM,KAAK,GAAG;AACd,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,GAAG;AACP,IAAI,IAAI;AACR,IAAI,IAAI;AACR,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,cAAc;AAClB,IAAI,GAAG;AACP,IAAI,OAAO;AACX,IAAI,IAAI;AACR,IAAI,UAAU;AACd,IAAI,GAAG;AACP,CAAC;AACD;AACA,MAAM,WAAW,SAAS,KAAK,CAAC;AAChC;AACA,MAAM,aAAa,SAAS,KAAK,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,UAAU,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE;AACzD,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACxC,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,mBAAmB,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC;AACtE,IAAI;AACJ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;AACjD,IAAI;AACJ,IAAI,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC;AACtD;AACA,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,KAAK,KAAK;AAC1C,IAAI,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;AACpC,IAAI,IAAI,KAAK,GAAG,CAAC;AACjB,IAAI,MAAM,eAAe,GAAG,CAAC,GAAG,KAAK;AACrC,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,IAAI,CAAC;AACL,IAAI,MAAM,mBAAmB,GAAG,CAAC,GAAG,KAAK;AACzC,QAAQ,MAAM,IAAI,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,QAAQ,SAAS,EAAE;AACnB,QAAQ,IAAI,KAAK,IAAI,MAAM;AAC3B,YAAY,eAAe,CAAC,yBAAyB,CAAC;AACtD,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG;AACrC,YAAY,OAAO,QAAQ,EAAE;AAC7B,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG;AACrC,YAAY,OAAO,QAAQ,EAAE;AAC7B,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG;AACrC,YAAY,OAAO,QAAQ,EAAE;AAC7B,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,MAAM;AAC7D,aAAa,KAAK,CAAC,IAAI,GAAG,KAAK,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1G,YAAY,KAAK,IAAI,CAAC;AACtB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,MAAM;AAC7D,aAAa,KAAK,CAAC,IAAI,GAAG,KAAK,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1G,YAAY,KAAK,IAAI,CAAC;AACtB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,OAAO;AAC9D,aAAa,KAAK,CAAC,IAAI,GAAG,KAAK,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC3G,YAAY,KAAK,IAAI,CAAC;AACtB,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,UAAU;AACjE,aAAa,KAAK,CAAC,QAAQ,GAAG,KAAK,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAClH,YAAY,KAAK,IAAI,CAAC;AACtB,YAAY,OAAO,QAAQ;AAC3B,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,WAAW;AAClE,aAAa,KAAK,CAAC,cAAc,GAAG,KAAK;AACzC,gBAAgB,CAAC,GAAG,MAAM,GAAG,KAAK;AAClC,gBAAgB,MAAM,GAAG,KAAK,GAAG,CAAC;AAClC,gBAAgB,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACtE,YAAY,KAAK,IAAI,CAAC;AACtB,YAAY,OAAO,CAAC,QAAQ;AAC5B,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK;AAC5D,aAAa,KAAK,CAAC,GAAG,GAAG,KAAK,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACxG,YAAY,KAAK,IAAI,CAAC;AACtB,YAAY,OAAO,GAAG;AACtB,QAAQ;AACR,QAAQ,OAAO,QAAQ,EAAE;AACzB,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,QAAQ,MAAM,KAAK,GAAG,KAAK;AAC3B,QAAQ,IAAI,MAAM,GAAG,KAAK;AAC1B,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,OAAO,KAAK,GAAG,MAAM,KAAK,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,MAAM,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE;AAC5G,YAAY,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK;AACjE,YAAY,KAAK,EAAE;AACnB,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AAC7C,YAAY,IAAI;AAChB,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY;AACZ,QAAQ;AACR,aAAa,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,EAAE;AACpC,YAAY,IAAI;AAChB,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5F,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB;AACA,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AAClG,YAAY;AACZ,QAAQ;AACR,QAAQ,eAAe,CAAC,6BAA6B,CAAC;AACtD,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,SAAS,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAG,EAAE;AACtB,QAAQ,IAAI;AACZ,YAAY,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AAC9C,gBAAgB,SAAS,EAAE;AAC3B,gBAAgB,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACxD,oBAAoB,OAAO,GAAG;AAC9B,gBAAgB,MAAM,GAAG,GAAG,QAAQ,EAAE;AACtC,gBAAgB,SAAS,EAAE;AAC3B,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,KAAK,GAAG,QAAQ,EAAE;AAC5C,oBAAoB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACpH,gBAAgB;AAChB,gBAAgB,OAAO,CAAC,EAAE;AAC1B,oBAAoB,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACzC,wBAAwB,OAAO,GAAG;AAClC;AACA,wBAAwB,MAAM,CAAC;AAC/B,gBAAgB;AAChB,gBAAgB,SAAS,EAAE;AAC3B,gBAAgB,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG;AAC7C,oBAAoB,KAAK,EAAE,CAAC;AAC5B,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACjC,gBAAgB,OAAO,GAAG;AAC1B;AACA,gBAAgB,eAAe,CAAC,+BAA+B,CAAC;AAChE,QAAQ;AACR,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,OAAO,GAAG;AAClB,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,MAAM,GAAG,GAAG,EAAE;AACtB,QAAQ,IAAI;AACZ,YAAY,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AAC9C,gBAAgB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpC,gBAAgB,SAAS,EAAE;AAC3B,gBAAgB,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AAC/C,oBAAoB,KAAK,EAAE,CAAC;AAC5B,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,EAAE;AACnC,gBAAgB,OAAO,GAAG;AAC1B,YAAY;AACZ,YAAY,eAAe,CAAC,8BAA8B,CAAC;AAC3D,QAAQ;AACR,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,OAAO,GAAG;AAClB,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,QAAQ,IAAI,KAAK,KAAK,CAAC,EAAE;AACzB,YAAY,IAAI,UAAU,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACvD,gBAAgB,eAAe,CAAC,sBAAsB,CAAC;AACvD,YAAY,IAAI;AAChB,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAC7C,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,EAAE;AACvC,oBAAoB,IAAI;AACxB,wBAAwB,IAAI,GAAG,KAAK,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACrE,4BAA4B,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACnG,wBAAwB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/F,oBAAoB;AACpB,oBAAoB,OAAO,CAAC,EAAE,EAAE;AAChC,gBAAgB;AAChB,gBAAgB,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,KAAK;AAC3B,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG;AACrC,YAAY,KAAK,EAAE;AACnB,QAAQ,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACtE,YAAY,KAAK,EAAE;AACnB,QAAQ,IAAI,KAAK,IAAI,MAAM,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;AACnD,YAAY,eAAe,CAAC,6BAA6B,CAAC;AAC1D,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjE,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AAC/E,gBAAgB,eAAe,CAAC,sBAAsB,CAAC;AACvD,YAAY,IAAI;AAChB,gBAAgB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3F,YAAY;AACZ,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY;AACZ,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,QAAQ,OAAO,KAAK,GAAG,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AACxE,YAAY,KAAK,EAAE;AACnB,QAAQ;AACR,IAAI,CAAC;AACL,IAAI,OAAO,QAAQ,EAAE;AACrB,CAAC;AACD;AACA,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;;AC9OvE,IAAI,+BAA+B,EAAE,4BAA4B,EAAE,uCAAuC,EAAE,mDAAmD,EAAE,kCAAkC,EAAE,yCAAyC,EAAE,8BAA8B,EAAE,2CAA2C,EAAE,2CAA2C,EAAE,gCAAgC,EAAE,oDAAoD,EAAE,8CAA8C;AAOze,MAAM,oBAAoB,SAAS,4BAA4B,CAAC;AACvE,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,KAAK,EAAE;AACf,QAAQ,+BAA+B,CAAC,GAAG,CAAC,IAAI,CAAC;AACjD,QAAQ,4BAA4B,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACtD,QAAQ,uCAAuC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACjE,QAAQ,mDAAmD,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC7E,QAAQ,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,EAAE,MAAW,CAAC;AAC/E,QAAQ,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,EAAO,CAAC;AACtF,IAAI;AACJ,IAAI,IAAI,6BAA6B,GAAG;AACxC,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,mDAAmD,EAAE,GAAG,CAAC;AACrG,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,kBAAkB,CAAC,MAAM,EAAE;AACtC,QAAQ,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC;AACrD,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACzD,QAAQ,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC;AACvD,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AAClL,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACzD,QAAQ,KAAK,CAAC,qBAAqB;AACnC,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AACtC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,MAAM,CAAC,OAAO;AAC9B,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAQ;AACR,QAAQ,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzH,QAAQ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACxI,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,WAAW,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1C,YAAY,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,8BAA8B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAChI,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,YAAY,MAAM,IAAI,iBAAiB,EAAE;AACzC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,gCAAgC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvJ,IAAI;AACJ,IAAI,MAAM,mBAAmB,CAAC,cAAc,EAAE,OAAO,EAAE;AACvD,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AACtC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,MAAM,CAAC,OAAO;AAC9B,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAQ;AACR,QAAQ,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzH,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC;AACjF,QAAQ,IAAI,MAAM;AAClB,QAAQ,WAAW,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1C,YAAY,IAAI,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,EAAE;AAC/C;AACA,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,gCAAgC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxJ,YAAY;AACZ,YAAY,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,8BAA8B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAChI,YAAY,MAAM,GAAG,KAAK,CAAC,EAAE;AAC7B,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,YAAY,MAAM,IAAI,iBAAiB,EAAE;AACzC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,gCAAgC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvJ,IAAI;AACJ,IAAI,EAAE,4BAA4B,GAAG,IAAI,OAAO,EAAE,EAAE,uCAAuC,GAAG,IAAI,OAAO,EAAE,EAAE,mDAAmD,GAAG,IAAI,OAAO,EAAE,EAAE,+BAA+B,GAAG,IAAI,OAAO,EAAE,EAAE,kCAAkC,GAAG,SAAS,kCAAkC,GAAG;AACtT,QAAQ,IAAI,IAAI,CAAC,KAAK;AACtB,YAAY;AACZ,QAAQ,sBAAsB,CAAC,IAAI,EAAE,mDAAmD,EAAE,SAAc,CAAC;AACzG,IAAI,CAAC,EAAE,yCAAyC,GAAG,SAAS,yCAAyC,CAAC,MAAM,EAAE;AAC9G,QAAQ,IAAI,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5G,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,KAAK,GAAG;AAChB,YAAY,YAAY,EAAE,KAAK;AAC/B,YAAY,YAAY,EAAE,KAAK;AAC/B,YAAY,qBAAqB,EAAE,KAAK;AACxC,YAAY,qBAAqB,EAAE,KAAK;AACxC,YAAY,eAAe,EAAE,IAAI,GAAG,EAAE;AACtC,YAAY,uBAAuB,EAAE,IAAI;AACzC,SAAS;AACT,QAAQ,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK;AACxG,QAAQ,OAAO,KAAK;AACpB,IAAI,CAAC,EAAE,8BAA8B,GAAG,SAAS,8BAA8B,CAAC,KAAK,EAAE;AACvF,QAAQ,IAAI,IAAI,CAAC,KAAK;AACtB,YAAY;AACZ,QAAQ,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,8CAA8C,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC/J,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC;AAC9C,QAAQ,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AAC5C,YAAY,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACnE,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;AAC5C,gBAAgB,cAAc,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW;AAC5D,gBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;AACjD,gBAAgB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3F,gBAAgB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC5C,oBAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;AAC/C,oBAAoB,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;AAC5D,oBAAoB,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM;AACzD,iBAAiB,CAAC;AAClB,YAAY;AACZ,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;AAC5C,gBAAgB,cAAc,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW;AAC5D,gBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;AACjD,gBAAgB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC5C,oBAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;AAC/C,oBAAoB,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;AAC5D,iBAAiB,CAAC;AAClB,YAAY;AACZ,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW,EAAE;AAClG,gBAAgB,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE;AACrD,oBAAoB,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO;AACrD,oBAAoB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE;AACpE,iBAAiB,CAAC;AAClB,YAAY;AACZ,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,KAAK,WAAW,EAAE;AAClG,gBAAgB,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE;AACrD,oBAAoB,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO;AACrD,oBAAoB,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE;AACpE,iBAAiB,CAAC;AAClB,YAAY;AACZ,YAAY,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,yCAAyC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;AAClK,YAAY,IAAI,cAAc,CAAC,aAAa,EAAE;AAC9C,gBAAgB,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,2CAA2C,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;AAC1J,gBAAgB,IAAI,KAAK,CAAC,uBAAuB,IAAI,IAAI,EAAE;AAC3D,oBAAoB,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,2CAA2C,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,uBAAuB,CAAC;AAC7L,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE;AAClE,gBAAgB,IAAI,KAAK,CAAC,uBAAuB,KAAK,QAAQ,CAAC,KAAK,EAAE;AACtE,oBAAoB,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,2CAA2C,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;AAC9J;AACA,oBAAoB,IAAI,KAAK,CAAC,uBAAuB,IAAI,IAAI,EAAE;AAC/D,wBAAwB,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,2CAA2C,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,uBAAuB,CAAC;AACjM,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,KAAK,CAAC,uBAAuB,GAAG,QAAQ,CAAC,KAAK;AAC9D,YAAY;AACZ,YAAY,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE;AACvE,gBAAgB,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC;AACjG,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE;AAC7C,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,gBAAgB,EAAE,IAAI,KAAK,UAAU,EAAE;AAC3D,oBAAoB,IAAI,CAAC,KAAK,CAAC,qCAAqC,EAAE;AACtE,wBAAwB,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI;AAC7D,wBAAwB,KAAK,EAAE,aAAa,CAAC,KAAK;AAClD,wBAAwB,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC,SAAS;AACtE,wBAAwB,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB;AACpF,wBAAwB,eAAe,EAAE,aAAa,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE;AAChF,qBAAqB,CAAC;AACtB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC;AACvD,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI,CAAC,EAAE,2CAA2C,GAAG,SAAS,2CAA2C,CAAC,cAAc,EAAE,aAAa,EAAE;AACzI,QAAQ,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,yCAAyC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;AAC9J,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACtD;AACA,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC;AACnF,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;AACpD,QAAQ;AACR,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AACpC,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;AAChE,QAAQ;AACR,QAAQ,IAAI,gBAAgB,CAAC,IAAI,KAAK,UAAU,EAAE;AAClD,YAAY,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,4BAA4B,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClN,YAAY,IAAI,CAAC,KAAK,CAAC,oCAAoC,EAAE;AAC7D,gBAAgB,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI;AACpD,gBAAgB,KAAK,EAAE,aAAa;AACpC,gBAAgB,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC,SAAS;AAC9D,gBAAgB,gBAAgB,EAAEA,oBAAkB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS;AACzH,sBAAsB,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS;AACjG,0BAA0B,IAAI;AAC9B,aAAa,CAAC;AACd,QAAQ;AACR,aAAa;AACb,YAAY,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC9C,QAAQ;AACR,IAAI,CAAC,EAAE,2CAA2C,GAAG,SAAS,2CAA2C,CAAC,cAAc,EAAE;AAC1H,QAAQ,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,yCAAyC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;AAC9J,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACnE,YAAY,KAAK,CAAC,YAAY,GAAG,IAAI;AACrC,YAAY,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,oDAAoD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACtK,YAAY,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;AACvC,gBAAgB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO;AACvD,gBAAgB,MAAM,EAAE,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI;AACxG,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACnE,YAAY,KAAK,CAAC,YAAY,GAAG,IAAI;AACrC,YAAY,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACnF,QAAQ;AACR,QAAQ,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;AAC9E,YAAY,KAAK,CAAC,qBAAqB,GAAG,IAAI;AAC9C,YAAY,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC7F,QAAQ;AACR,QAAQ,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;AAC9E,YAAY,KAAK,CAAC,qBAAqB,GAAG,IAAI;AAC9C,YAAY,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC7F,QAAQ;AACR,IAAI,CAAC,EAAE,gCAAgC,GAAG,SAAS,gCAAgC,GAAG;AACtF,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,uCAAuC,CAAC,CAAC;AAC5E,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,mDAAmD,EAAE,GAAG,CAAC;AAC/G,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,wCAAwC,CAAC,CAAC;AAC7E,QAAQ;AACR,QAAQ,sBAAsB,CAAC,IAAI,EAAE,mDAAmD,EAAE,SAAc,CAAC;AACzG,QAAQ,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,EAAO,CAAC;AACtF,QAAQ,OAAO,sBAAsB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,CAAC,CAAC;AAChH,IAAI,CAAC,EAAE,oDAAoD,GAAG,SAAS,oDAAoD,GAAG;AAC9H,QAAQ,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,CAAC,EAAE,eAAe;AAC/G,QAAQ,IAAI,4BAA4B,CAAC,cAAc,CAAC,EAAE;AAC1D,YAAY,OAAO,cAAc;AACjC,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC,EAAE,8CAA8C,GAAG,SAAS,8CAA8C,CAAC,KAAK,EAAE;AACvH,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1B,QAAQ,IAAI,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,mDAAmD,EAAE,GAAG,CAAC;AAC7G,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK;AAC1C,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,mDAAmD,EAAE;AACzG,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,OAAO,EAAE,EAAE;AAC3B,aAAkB,CAAC;AACnB,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzC,QAAQ;AACR,QAAQ,KAAK,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AAChG,YAAY,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AAChD,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE;AAC5G,YAAY;AACZ,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtC,oBAAoB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC;AACjE,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ;AAElE,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AACxD,oBAAoB,IAAI,OAAO,EAAE;AACjC,wBAAwB,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,KAAK,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;AAC3E,wBAAwB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AAChE,oBAAoB;AACpB,oBAAoB,IAAI,OAAO,EAAE;AACjC,wBAAwB,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,KAAK,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;AAC3E,wBAAwB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AAChE,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,MAAM,CAAC,aAAa,GAAG,aAAa;AACpD,gBAAgB,IAAI,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,CAAC,IAAIC,uBAAqB,CAAC,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,CAAC,CAAC,EAAE;AAC/K,oBAAoB,IAAI,aAAa,KAAK,QAAQ,EAAE;AACpD,wBAAwB,MAAM,IAAI,uBAAuB,EAAE;AAC3D,oBAAoB;AACpB,oBAAoB,IAAI,aAAa,KAAK,gBAAgB,EAAE;AAC5D,wBAAwB,MAAM,IAAI,8BAA8B,EAAE;AAClE,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;AACxC,YAAY,IAAI,CAAC,KAAK;AACtB,gBAAgB,SAAS;AACzB,YAAY,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK;AAExF,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/C,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,IAAI,OAAO;AACjF,YAAY;AACZ,YAAY,IAAI,IAAI;AACpB,gBAAgB,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI;AAC1C,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE;AACnD,oBAAoB,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa;AAChE,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,aAAa,CAAC,IAAI;AAC1C,wBAAwB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AAC9E,oBAAoB,IAAI,aAAa,CAAC,SAAS,EAAE;AACjD,wBAAwB,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,KAAK,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5F,wBAAwB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS;AACzF,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,IAAI,OAAO;AACjF,gBAAgB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,EAAE,oDAAoD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpL,oBAAoB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAChF,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU;AAC9C,oBAAoB,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;AAClD,gBAAgB,KAAK,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,UAAU,EAAE;AACrF,oBAAoB,MAAM,SAAS,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AACnG,oBAAoB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AAClD,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,SAAS,CAAC,EAAE,GAAG,EAAE;AACzC,oBAAoB,IAAI,IAAI;AAC5B,wBAAwB,SAAS,CAAC,IAAI,GAAG,IAAI;AAC7C,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAC3G,oBAAoB,IAAI,EAAE,EAAE,IAAI;AAChC,wBAAwB,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI;AACzD,oBAAoB,IAAI,EAAE,EAAE,SAAS,EAAE;AACvC,wBAAwB,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS;AACpE,wBAAwB,IAAI,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,EAAE,4BAA4B,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE;AAC7H,4BAA4B,SAAS,CAAC,QAAQ,CAAC,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC5G,wBAAwB;AACxB,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,QAAQ;AACvB,IAAI,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG;AAChC,QAAQ,MAAM,SAAS,GAAG,EAAE;AAC5B,QAAQ,MAAM,SAAS,GAAG,EAAE;AAC5B,QAAQ,IAAI,IAAI,GAAG,KAAK;AACxB,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK;AACpC,YAAY,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE;AAC5C,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC7B,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAClC,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAClC,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,YAAY;AAC9B,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvC,oBAAoB,IAAI,IAAI,EAAE;AAC9B,wBAAwB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/D,oBAAoB;AACpB,oBAAoB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5L,gBAAgB;AAChB,gBAAgB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE;AAC/C,gBAAgB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,YAAY,CAAC;AACb,YAAY,MAAM,EAAE,YAAY;AAChC,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAgB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AACvD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AACzF,QAAQ,OAAO,MAAM,CAAC,gBAAgB,EAAE;AACxC,IAAI;AACJ;AACA,SAAS,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClD,IAAI,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ;AACjF,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,GAAG,IAAI;AACf,QAAQ,EAAE;AACV,QAAQ,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,KAAK;AAC7F,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,gBAAgB,MAAM,IAAI,WAAW,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC,CAAC;AAClF,YAAY;AACZ,YAAY,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO;AACzF,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACtC,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,gBAAgB,MAAM,IAAI,WAAW,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC,CAAC;AACzE,YAAY;AACZ,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa;AAC/D,gBAAgB,IAAI,IAAI,IAAI,IAAI,EAAE;AAClC,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC,CAAC;AAChG,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,IAAI,EAAE;AAC3B,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3F,gBAAgB;AAChB,gBAAgB,OAAO;AACvB,oBAAoB,GAAG,UAAU;AACjC,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,OAAO;AAC/B,wBAAwB,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AAChE,wBAAwB,IAAI;AAC5B,wBAAwB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;AACxD,qBAAqB;AACrB,oBAAoB,aAAa;AACjC,oBAAoB,KAAK;AACzB,oBAAoB,QAAQ;AAC5B,iBAAiB;AACjB,YAAY;AACZ,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,OAAO;AACvB,oBAAoB,GAAG,UAAU;AACjC,oBAAoB,KAAK;AACzB,oBAAoB,aAAa;AACjC,oBAAoB,QAAQ;AAC5B,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,GAAG,WAAW;AACtC,wBAAwB,IAAI;AAC5B,wBAAwB,OAAO;AAC/B,wBAAwB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;AACxD,wBAAwB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK;AACrE,4BAA4B,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS;AACrF,4BAA4B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AACjF,4BAA4B,IAAI,EAAE,IAAI,IAAI,EAAE;AAC5C,gCAAgC,MAAM,IAAI,WAAW,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxH,4BAA4B;AAC5B,4BAA4B,IAAI,IAAI,IAAI,IAAI,EAAE;AAC9C,gCAAgC,MAAM,IAAI,WAAW,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1H,4BAA4B;AAC5B,4BAA4B,IAAI,IAAI,IAAI,IAAI,EAAE;AAC9C,gCAAgC,MAAM,IAAI,WAAW,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnI,4BAA4B;AAC5B,4BAA4B,IAAI,IAAI,IAAI,IAAI,EAAE;AAC9C,gCAAgC,MAAM,IAAI,WAAW,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxI,4BAA4B;AAC5B,4BAA4B,OAAO,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;AAC5G,wBAAwB,CAAC,CAAC;AAC1B,qBAAqB;AACrB,iBAAiB;AACjB,YAAY;AACZ,YAAY,OAAO;AACnB,gBAAgB,GAAG,UAAU;AAC7B,gBAAgB,OAAO,EAAE,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE;AAC5F,gBAAgB,aAAa;AAC7B,gBAAgB,KAAK;AACrB,gBAAgB,QAAQ;AACxB,aAAa;AACb,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO;AACf,QAAQ,KAAK;AACb,QAAQ,MAAM,EAAE,iBAAiB;AACjC,QAAQ,IAAI,kBAAkB,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC;AAC7D,KAAK;AACL,IAAI,OAAO,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC;AACvD;AACA,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5B;AASA,SAAS,WAAW,CAAC,EAAE,EAAE,EAAE;;ACtepB,MAAM,6BAA6B,SAAS,oBAAoB,CAAC;AACxE,IAAI,OAAO,kBAAkB,CAAC,MAAM,EAAE;AACtC,QAAQ,MAAM,MAAM,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC;AAC9D,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AAC7C,QAAQ,MAAM,MAAM,GAAG,IAAI,6BAA6B;AACxD;AACA,QAAQ,MAAM,CAAC;AACf,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,UAAU,EAAE;AACrF,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACjE,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ;;AClBA;AAUA;AACA;AACA;oBACO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIE,UAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACtD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AACxC,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,EAAE;AAC1E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,EAAE;AAC3E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,GAAG,UAAU,GAAG;AAC1E,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,EAAE;AAC7E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;AACzB,QAAQ,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACjC,aAAa,MAAM,CAAC,IAAI,EAAE;AAC1B,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE;AACrB,gBAAgB,GAAG,OAAO,EAAE,OAAO;AACnC,gBAAgB,2BAA2B,EAAE,wBAAwB;AACrE,aAAa;AACb,SAAS;AACT,aAAa,WAAW,CAAC,CAAC,UAAU,KAAK,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC/E,IAAI;AACJ,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,OAAO,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;AACtF,QAAQ;AACR,QAAQ,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;AACzE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;AACrF,IAAI;AACJ;AAKAC,aAAW,CAAC,QAAQ,GAAGC,UAAQ;;AC9H/B;AAIO,MAAM,IAAI,SAAS,WAAW,CAAC;AACtC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIC,aAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,IAAI;AACJ;AACA,IAAI,CAAC,WAAW,GAAGF,aAAW;;ACV9B;AAIO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACjE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,8BAA8B,GAAG,UAAU,GAAG;AACrF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC,EAAE;AACjF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;AC3EA;AAGA;AACA;AACA;AACO,MAAM,SAAS,SAAS,WAAW,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,0BAA0B,GAAG,sBAAsB,GAAG;AAC7F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACzBA;qBAIO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE;AAC/D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,aAAa,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACjD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC,EAAE;AACpF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC,EAAE;AACrF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5J,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC,EAAE;AACvF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,qCAAqC,GAAG,IAAI,GAAG;AACtF,YAAY,IAAI;AAChB,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,uCAAuC,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACpK,IAAI;AACJ;;AC1IA;sBAEO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE;AAChE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACjE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACpCA;AAIO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC1D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,EAAE;AAC1E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,uBAAuB,GAAG,sBAAsB,GAAG;AAC1F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,EAAE;AAC7E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;AC7EA;cAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACxD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,EAAE;AACtE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,EAAE;AACvE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,GAAG,cAAc,GAAG;AAChF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,EAAE;AACzE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;AC1FA;oBAIO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE;AAC/D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,EAAE;AAC9E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,EAAE;AAC/E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5J,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC,EAAE;AACjF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACxGA;AAEO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE;AACtE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE;AAC5E,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE;AACjF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE;AACnE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE;AACvD,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE;AAClE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE;AACzE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE;AAC9D,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE;AACnE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE;AACrE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE;AACxE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACzMA;cAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACzF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACpK,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC5F,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;AC9EA;cAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACzF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACpK,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC5F,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;AC9EA;eAQO,MAAM,MAAM,SAAS,WAAW,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIG,OAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,OAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACzD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,EAAE;AACxE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,EAAE;AACzE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,GAAG,cAAc,GAAG;AACjF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,EAAE;AAC3E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACAC,QAAM,CAAC,KAAK,GAAGC,OAAK;AACpBD,QAAM,CAAC,KAAK,GAAGE,OAAK;;ACtGpB;AAIO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACxC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE;AAClG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACnL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE;AACrG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;AC9DA;AAIO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACvL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,sBAAsB,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC7L,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,wBAAwB,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC/L,IAAI;AACJ;;AC1DA;AAGO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE;AAC3F,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE;AAC5F,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACxCA;AAGO,MAAM,qBAAqB,SAAS,WAAW,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,wBAAwB,CAAC,EAAE;AACpG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,wBAAwB,CAAC,EAAE;AACrG,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACvCA;AAGO,MAAM,gBAAgB,SAAS,WAAW,CAAC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,kBAAkB,CAAC,EAAE;AAC9F,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,kBAAkB,CAAC,EAAE;AAC/F,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,kBAAkB,CAAC,EAAE;AACjG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACzDA;AAIO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACnD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACtL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE;AAClD,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,EAAE;AACzG,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACzCA;cAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;AACtE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAChF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACjF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,GAAG;AAC9F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACnF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACtGA;AAIO,MAAM,eAAe,SAAS,WAAW,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,iBAAiB,CAAC,EAAE;AAC9F,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE;AAChD,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,EAAE;AAClH,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE;AAC9C,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC/K,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3L,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE;AAC9C,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3K,IAAI;AACJ;;AC/FA;AAIO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,aAAa,CAAC,EAAE;AAC1F,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,EAAE;AACrG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,EAAE;AACtG,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACvL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,EAAE;AACxG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACnHA;cAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;AACzF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM;AAC/C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACnG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACnC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AAC/C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC9K,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM;AAC/C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACtG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACjFA;AAMO,MAAM,MAAM,SAAS,WAAW,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIH,OAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE;AACpF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AAC/C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE;AAC/F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACzK,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE;AAClG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA,MAAM,CAAC,KAAK,GAAGG,OAAK;;ACtFpB;cAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;AACvF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACjG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AAClC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AAC/C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5K,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACpG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;ACjFA;cAMO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIH,OAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE;AACnF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC7F,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC9F,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAChL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAChG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACAE,OAAK,CAAC,KAAK,GAAGC,OAAK;;AC7GnB;AA0BO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIJ,OAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAIK,eAAkC,CAAC,IAAI,CAAC,OAAO,CAAC;AACnF,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIC,OAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAIC,UAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;AACpE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAIC,gBAAoC,CAAC,IAAI,CAAC,OAAO,CAAC;AACtF,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAIC,qBAA8C,CAAC,IAAI,CAAC,OAAO,CAAC;AACrG,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIC,MAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACxD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIT,OAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAIU,aAA8B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7E,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIC,WAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAIC,YAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1E,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAC3D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,EAAE;AAC5E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,EAAE;AAC7E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,wBAAwB,GAAG,sBAAsB,GAAG;AAC3F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;AACrF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA,QAAQ,CAAC,KAAK,GAAGV,OAAK;AACtB,QAAQ,CAAC,eAAe,GAAG,eAAe;AAC1C,QAAQ,CAAC,OAAO,GAAG,OAAO;AAC1B,QAAQ,CAAC,UAAU,GAAG,UAAU;AAChC,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB;AAC5C,QAAQ,CAAC,qBAAqB,GAAG,qBAAqB;AACtD,QAAQ,CAAC,MAAM,GAAG,MAAM;AACxB,QAAQ,CAAC,KAAK,GAAGC,OAAK;AACtB,QAAQ,CAAC,aAAa,GAAG,aAAa;AACtC,QAAQ,CAAC,WAAW,GAAG,WAAW;AAClC,QAAQ,CAAC,YAAY,GAAG,YAAY;;AC9IpC;AAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;AAC7E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACvF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AAClK,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC1F,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;;AC9EA;AAMO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIH,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,EAAE;AACtE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,EAAE;AACvE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,GAAG,sBAAsB,GAAG;AACxF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,EAAE;AACzE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA,KAAK,CAAC,KAAK,GAAG,KAAK;;AC7EnB;AAwBO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAIa,SAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;AACjE,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAIC,YAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1E,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIC,OAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIjB,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIU,QAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACxD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIT,OAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAIU,eAA8B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7E,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIC,aAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAIC,cAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1E,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIK,QAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,IAAI;AACJ;AACA,YAAY,CAAC,SAAS,GAAG,SAAS;AAClC,YAAY,CAAC,YAAY,GAAG,YAAY;AACxC,YAAY,CAAC,KAAK,GAAG,KAAK;AAC1B,YAAY,CAAC,OAAO,GAAG,OAAO;AAC9B,YAAY,CAAC,KAAK,GAAG,KAAK;AAC1B,YAAY,CAAC,MAAM,GAAGhB,QAAM;AAC5B,YAAY,CAAC,KAAK,GAAGE,OAAK;AAC1B,YAAY,CAAC,aAAa,GAAGe,eAAa;AAC1C,YAAY,CAAC,WAAW,GAAGC,aAAW;AACtC,YAAY,CAAC,YAAY,GAAGC,cAAY;AACxC,YAAY,CAAC,QAAQ,GAAG,QAAQ;;AClDhC;AAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAIC,YAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1E,IAAI;AACJ;AACA,KAAK,CAAC,YAAY,GAAG,YAAY;;ACVjC;AAEA,MAAM,4BAA4B,mBAAmB,MAAM,CAAC,8BAA8B,CAAC;AAC3F,UAAU,cAAc,CAAC,OAAO,EAAE;AAClC,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ;AACR,IAAI,IAAI,4BAA4B,IAAI,OAAO,EAAE;AACjD,QAAQ,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;AACzC,QAAQ,OAAO,MAAM,CAAC,OAAO,EAAE;AAC/B,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAClC,YAAY,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;AAC9B,QAAQ;AACR,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,WAAW,GAAG,KAAK;AAC3B,IAAI,IAAI,IAAI;AACZ,IAAI,IAAI,OAAO,YAAY,OAAO,EAAE;AACpC,QAAQ,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE;AAChC,IAAI;AACJ,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE;AACvC,QAAQ,IAAI,GAAG,OAAO;AACtB,IAAI;AACJ,SAAS;AACT,QAAQ,WAAW,GAAG,IAAI;AAC1B,QAAQ,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5C,IAAI;AACJ,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AAC1B,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AAC3B,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;AACpC,YAAY,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC;AACtE,QAAQ,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,QAAQ,IAAI,QAAQ,GAAG,KAAK;AAC5B,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACpC,YAAY,IAAI,KAAK,KAAK,SAAS;AACnC,gBAAgB;AAChB;AACA;AACA,YAAY,IAAI,WAAW,IAAI,CAAC,QAAQ,EAAE;AAC1C,gBAAgB,QAAQ,GAAG,IAAI;AAC/B,gBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;AAClC,YAAY;AACZ,YAAY,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;AAC/B,QAAQ;AACR,IAAI;AACJ;AACO,MAAM,YAAY,GAAG,CAAC,UAAU,KAAK;AAC5C,IAAI,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE;AACvC,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AACjC,IAAI,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;AACtC,QAAQ,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AACrC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;AAC7D,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;AAChD,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC7C,gBAAgB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1C,gBAAgB,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1C,YAAY;AACZ,YAAY,IAAI,KAAK,KAAK,IAAI,EAAE;AAChC,gBAAgB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1C,gBAAgB,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;AACjD,gBAAgB,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7C,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,EAAE,CAAC,4BAA4B,GAAG,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;AAC9F,CAAC;;ACnED;AAGA;AACA;AACA;AACO,MAAM,MAAM,SAAS,WAAW,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE;AAClD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7F,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,YAAY,gBAAgB,EAAE,IAAI;AAClC,SAAS,CAAC;AACV,IAAI;AACJ;;ACjCA;AAGA;AACA;AACA;AACO,MAAM,cAAc,SAAS,WAAW,CAAC;AAChD,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;AACtF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AACxC,YAAY,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AAC7C,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI;AACJ;;AChBA;AAGA;AACA;AACA;AACO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7L,IAAI;AACJ;;ACVA;AAQO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAIC,cAAgC,CAAC,IAAI,CAAC,OAAO,CAAC;AAChF,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAIC,YAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1E,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIC,MAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACxD,IAAI;AACJ;AACA,KAAK,CAAC,cAAc,GAAG,cAAc;AACrC,KAAK,CAAC,YAAY,GAAG,YAAY;AACjC,KAAK,CAAC,MAAM,GAAG,MAAM;;AClBrB;AAIA;AACA;AACA;AACO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AACpG,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC7G,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU,GAAG;AACjE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;AACpE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACzCA;AAKA;AACA;AACA;AACO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;AAChD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE;AACnE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE;AACpE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,GAAG,UAAU,GAAG;AACpE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE;AACtE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACxEA;iBAGO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACvD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;AC3BA;AAGO,MAAM,qBAAqB,SAAS,WAAW,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE;AACrE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;AC3BA;AAMA;AACA;AACA;iBACO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIC,UAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAIC,qBAA8C,CAAC,IAAI,CAAC,OAAO,CAAC;AACrG,IAAI;AACJ;AACAC,UAAQ,CAAC,QAAQ,GAAGC,UAAQ;AAC5BD,UAAQ,CAAC,qBAAqB,GAAG,qBAAqB;;ACjBtD;AAIO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACtD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3F,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/E,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3F,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;AC3CA;gBAKO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,EAAE;AACrE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3F,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,GAAG,sBAAsB,GAAG;AACrF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3F,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,EAAE;AACxE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3F,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC7C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,sBAAsB,GAAG;AAC5G,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC3F,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;AC/EA;AAMO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIF,QAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAII,SAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,IAAI;AACJ;AACA,OAAO,CAAC,QAAQ,GAAG,QAAQ;AAC3B,OAAO,CAAC,OAAO,GAAGC,SAAO;;ACdzB;AAKA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AACzC,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE;AACpF,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC7C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE;AACrF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,UAAU,GAAG;AAC3F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE;AACvF,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;AC7EA;AAKA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AACtD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC7F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACjC,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG;AACvG,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACvCA;AAgCA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,CAAC,SAAS,KAAK;AAC7C,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACvC;AACA,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;AACpD,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;AACpH,IAAI;AACJ,SAAS;AACT;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzC,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM;AACpC,QAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AACzC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9C,QAAQ;AACR,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACzD,IAAI;AACJ,CAAC;;ACrDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK;AAChC,IAAI,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW,EAAE;AACnD,QAAQ,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS;AACjE,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE;AAChD,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS;AACnE,IAAI;AACJ,IAAI,OAAO,SAAS;AACpB,CAAC;;AChBD,IAAI,0BAA0B,EAAEC,IAAE,EAAE,uBAAuB,EAAE,iCAAiC,EAAE,iCAAiC,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,oCAAoC,EAAE,+BAA+B,EAAE,qCAAqC,EAAE,gCAAgC,EAAE,6BAA6B,EAAE,mCAAmC,EAAE,uCAAuC,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,kCAAkC,EAAE,kCAAkC,EAAE,kCAAkC,EAAE,0BAA0B;AAMltB,MAAM,eAAe,SAAS,WAAW,CAAC;AACjD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5C;AACA,QAAQ,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AAC7C;AACA;AACA,QAAQ,iCAAiC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACvD,QAAQ,iCAAiC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACvD,QAAQ,gCAAgC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC1D,QAAQ,yBAAyB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACnD,QAAQ,oCAAoC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9D,QAAQ,+BAA+B,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACzD,QAAQ,qCAAqC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC/D,QAAQ,gCAAgC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC1D;AACA,QAAQ,6BAA6B,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACvD,QAAQ,mCAAmC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC7D,QAAQ,uCAAuC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACjE,IAAI;AACJ,IAAI,EAAE,uBAAuB,GAAG,IAAI,OAAO,EAAE,EAAE,iCAAiC,GAAG,IAAI,OAAO,EAAE,EAAE,iCAAiC,GAAG,IAAI,OAAO,EAAE,EAAE,gCAAgC,GAAG,IAAI,OAAO,EAAE,EAAE,yBAAyB,GAAG,IAAI,OAAO,EAAE,EAAE,oCAAoC,GAAG,IAAI,OAAO,EAAE,EAAE,+BAA+B,GAAG,IAAI,OAAO,EAAE,EAAE,qCAAqC,GAAG,IAAI,OAAO,EAAE,EAAE,gCAAgC,GAAG,IAAI,OAAO,EAAE,EAAE,6BAA6B,GAAG,IAAI,OAAO,EAAE,EAAE,mCAAmC,GAAG,IAAI,OAAO,EAAE,EAAE,uCAAuC,GAAG,IAAI,OAAO,EAAE,EAAE,0BAA0B,GAAG,IAAI,OAAO,EAAE,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG;AACpqB,QAAQ,MAAM,SAAS,GAAG,EAAE;AAC5B,QAAQ,MAAM,SAAS,GAAG,EAAE;AAC5B,QAAQ,IAAI,IAAI,GAAG,KAAK;AACxB;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK;AACpC,YAAY,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE;AAC5C,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC7B,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAClC,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAClC,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,YAAY;AAC9B,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvC,oBAAoB,IAAI,IAAI,EAAE;AAC9B,wBAAwB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/D,oBAAoB;AACpB,oBAAoB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5L,gBAAgB;AAChB,gBAAgB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE;AAC/C,gBAAgB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,YAAY,CAAC;AACb,YAAY,MAAM,EAAE,YAAY;AAChC,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAgB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AACvD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,kBAAkB,CAAC,MAAM,EAAE;AACtC,QAAQ,MAAM,MAAM,GAAG,IAAIA,IAAE,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,MAAM,mBAAmB,CAAC,cAAc,EAAE,OAAO,EAAE;AACvD,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AACtC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,MAAM,CAAC,OAAO;AAC9B,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAQ;AACR,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC;AACjF,QAAQ,WAAW,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1C,YAAY,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACtH,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,YAAY,MAAM,IAAI,iBAAiB,EAAE;AACzC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClI,IAAI;AACJ,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AACzF,QAAQ,OAAO,MAAM,CAAC,gBAAgB,EAAE;AACxC,IAAI;AACJ,IAAI,OAAO,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AACnE,QAAQ,MAAM,MAAM,GAAG,IAAIA,IAAE,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AAC9E,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE;AACnF,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,MAAM,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AAClE,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AACtC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,MAAM,CAAC,OAAO;AAC9B,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AAChD,QAAQ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE;AAChE,YAAY,GAAG,OAAO;AACtB,YAAY,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC1C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,WAAW,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1C,YAAY,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACtH,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,YAAY,MAAM,IAAI,iBAAiB,EAAE;AACzC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClI,IAAI;AACJ,IAAI,OAAO,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AAChE,QAAQ,MAAM,MAAM,GAAG,IAAIA,IAAE,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE;AACxE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE;AACnF,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,OAAO,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AAClE,QAAQ,MAAM,MAAM,GAAG,IAAIA,IAAE,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7E,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE;AACnF,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,GAAG,CAAC;AAC/E,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,GAAG,CAAC;AACrF,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC;AAClF,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,CAAC;AACzF,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;AAClG,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;AAClG,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,CAAC;AACzE,YAAY,MAAM,KAAK,CAAC,6BAA6B,CAAC;AACtD,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,CAAC;AAC3E,IAAI;AACJ,IAAI,MAAM,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AAChE,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AACtC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,MAAM,CAAC,OAAO;AAC9B,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AAChD,QAAQ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACtG,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,WAAW,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1C,YAAY,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACtH,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,YAAY,MAAM,IAAI,iBAAiB,EAAE;AACzC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClI,IAAI;AACJ,IAAI,MAAM,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACjE,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AACtC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,MAAM,CAAC,OAAO;AAC9B,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AAChD,QAAQ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACvG,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,WAAW,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1C,YAAY,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACtH,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,YAAY,MAAM,IAAI,iBAAiB,EAAE;AACzC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClI,IAAI;AACJ,IAAI,OAAO,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE;AACvC,QAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/D,YAAY,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC1C,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU;AACrC,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;AACnC,YAAY,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC7D,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU;AACrC,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,EAAE;AACnD,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU;AACrC,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAChF,gBAAgB,QAAQ,IAAI,UAAU;AACtC,YAAY;AACZ,iBAAiB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACrF,gBAAgB,QAAQ,IAAI,UAAU;AACtC,YAAY;AACZ,iBAAiB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;AAC3D,gBAAgB,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC;AACrE,YAAY;AACZ,iBAAiB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC3E,gBAAgB,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE;AAC3F,oBAAoB,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;AACjD,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE;AACrD,oBAAoB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AAC5C,wBAAwB,MAAM,IAAI,KAAK,CAAC,CAAC,oDAAoD,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5G,oBAAoB;AACpB,oBAAoB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;AACrD,oBAAoB,IAAI,KAAK,IAAI,IAAI,EAAE;AACvC,wBAAwB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;AACjD,wBAAwB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;AACjG,oBAAoB;AACpB,oBAAoB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnD,wBAAwB,MAAM,IAAI,KAAK,CAAC,CAAC,qEAAqE,EAAE,KAAK,CAAC,CAAC,CAAC;AACxH,oBAAoB;AACpB,oBAAoB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;AACpD,oBAAoB,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1C,wBAAwB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACjD,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC;AACpF,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,CAAC,CAAC,uBAAuB,EAAE,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9G,YAAY;AACZ,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ;AAC/B,QAAQ;AACR,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,OAAO,CAAC,GAAG,EAAE;AACjB,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1D,QAAQ,OAAO,MAAM,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AAC/E,IAAI;AACJ,IAAI,MAAM,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AAC/D,QAAQ,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AACjF,IAAI;AACJ,IAAI,MAAM,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AAChE,QAAQ,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AAClF,IAAI;AACJ;AACAA,IAAE,GAAG,eAAe,EAAE,yBAAyB,GAAG,SAAS,yBAAyB,CAAC,KAAK,EAAE;AAC5F,IAAI,IAAI,IAAI,CAAC,KAAK;AAClB,QAAQ;AACR,IAAI,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,KAAU,CAAC;AAC3E,IAAI,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACjH,IAAI,QAAQ,KAAK,CAAC,KAAK;AACvB,QAAQ,KAAK,gBAAgB;AAC7B;AACA,YAAY;AACZ,QAAQ,KAAK,oBAAoB;AACjC,QAAQ,KAAK,mBAAmB;AAChC,QAAQ,KAAK,wBAAwB;AACrC,QAAQ,KAAK,4BAA4B;AACzC,QAAQ,KAAK,sBAAsB;AACnC,QAAQ,KAAK,uBAAuB;AACpC,QAAQ,KAAK,mBAAmB;AAChC,QAAQ,KAAK,uBAAuB;AACpC,QAAQ,KAAK,sBAAsB;AACnC,QAAQ,KAAK,oBAAoB;AACjC,YAAY,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AACvH,YAAY;AACZ,QAAQ,KAAK,yBAAyB;AACtC,QAAQ,KAAK,6BAA6B;AAC1C,QAAQ,KAAK,uBAAuB;AACpC,QAAQ,KAAK,2BAA2B;AACxC,QAAQ,KAAK,wBAAwB;AACrC,QAAQ,KAAK,2BAA2B;AACxC,QAAQ,KAAK,yBAAyB;AACtC,YAAY,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,8BAA8B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3H,YAAY;AACZ,QAAQ,KAAK,wBAAwB;AACrC,QAAQ,KAAK,4BAA4B;AACzC,QAAQ,KAAK,sBAAsB;AACnC,QAAQ,KAAK,0BAA0B;AACvC,QAAQ,KAAK,2BAA2B;AACxC,YAAY,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,8BAA8B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3H,YAAY;AACZ,QAAQ,KAAK,OAAO;AACpB;AACA,YAAY,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC;AAGlH;AACA,CAAC,EAAE,2BAA2B,GAAG,SAAS,2BAA2B,GAAG;AACxE,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,MAAM,IAAI,WAAW,CAAC,CAAC,uCAAuC,CAAC,CAAC;AACxE,IAAI;AACJ,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,CAAC;AACrE,QAAQ,MAAM,KAAK,CAAC,iCAAiC,CAAC;AACtD,IAAI,OAAO,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,CAAC;AACvE,CAAC,EAAE,8BAA8B,GAAG,SAAS,8BAA8B,CAAC,KAAK,EAAE;AACnF,IAAI,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AACrO,IAAI,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,kBAAuB,CAAC;AAC3F,IAAI,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,kBAAkB;AACpH,IAAI,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;AACtC,QAAQ,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AACzE,QAAQ,IAAI,eAAe,EAAE,IAAI,IAAI,MAAM,EAAE;AAC7C,YAAY,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC;AAC3D,QAAQ;AACR,IAAI;AACJ,IAAI,QAAQ,KAAK,CAAC,KAAK;AACvB,QAAQ,KAAK,wBAAwB;AACrC,YAAY,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC;AACpD,YAAY;AACZ,QAAQ,KAAK,4BAA4B;AACzC,YAAY;AACZ,QAAQ,KAAK,sBAAsB;AACnC,YAAY,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAC5E,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAC1C,gBAAgB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAChE;AACA,oBAAoB,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE;AAChE,wBAAwB,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI;AACpD,wBAAwB,IAAI,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAChF,wBAAwB,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,IAAI,MAAM,EAAE;AACjE,4BAA4B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC7E,wBAAwB;AACxB,6BAA6B;AAC7B,4BAA4B,MAAM,KAAK,CAAC,qEAAqE,CAAC;AAC9G,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,IAAI,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAAC,IAAI,EAAE,oCAAoC,EAAE,GAAG,CAAC,EAAE;AAClH;AACA,wBAAwB,IAAI,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,CAAC,EAAE;AAChG,4BAA4B,QAAQ,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,CAAC,CAAC,IAAI;AAC3G,gCAAgC,KAAK,MAAM;AAC3C,oCAAoC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AACxM,oCAAoC;AACpC,gCAAgC,KAAK,YAAY;AACjD,oCAAoC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AACnN,oCAAoC;AACpC;AACA,wBAAwB;AACxB,wBAAwB,sBAAsB,CAAC,IAAI,EAAE,oCAAoC,EAAE,OAAO,CAAC,KAAU,CAAC;AAC9G,oBAAoB;AACpB,oBAAoB,sBAAsB,CAAC,IAAI,EAAE,+BAA+B,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAM,CAAC;AACjI,gBAAgB;AAChB,YAAY;AACZ,YAAY;AACZ,QAAQ,KAAK,0BAA0B;AACvC,QAAQ,KAAK,2BAA2B;AACxC;AACA,YAAY,IAAI,sBAAsB,CAAC,IAAI,EAAE,oCAAoC,EAAE,GAAG,CAAC,KAAK,SAAS,EAAE;AACvG,gBAAgB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE,oCAAoC,EAAE,GAAG,CAAC,CAAC;AAClI,gBAAgB,IAAI,cAAc,EAAE;AACpC,oBAAoB,QAAQ,cAAc,CAAC,IAAI;AAC/C,wBAAwB,KAAK,YAAY;AACzC,4BAA4B,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,cAAc,CAAC,UAAU,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AACvJ,4BAA4B;AAC5B,wBAAwB,KAAK,MAAM;AACnC,4BAA4B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AAC5I,4BAA4B;AAC5B;AACA,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,EAAE;AACrF,gBAAgB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC;AACrD,YAAY;AACZ,YAAY,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,SAAc,CAAC;AAC1F;AACA,CAAC,EAAE,8BAA8B,GAAG,SAAS,8BAA8B,CAAC,KAAK,EAAE;AACnF,IAAI,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAClJ,IAAI,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,kBAAuB,CAAC;AAClG,IAAI,QAAQ,KAAK,CAAC,KAAK;AACvB,QAAQ,KAAK,yBAAyB;AACtC,YAAY,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC;AACpD,YAAY;AACZ,QAAQ,KAAK,uBAAuB;AACpC,YAAY,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK;AAC1C,YAAY,IAAI,KAAK,CAAC,YAAY;AAClC,gBAAgB,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,YAAY;AACvD,gBAAgB,KAAK,CAAC,YAAY,CAAC,UAAU;AAC7C,gBAAgB,kBAAkB,CAAC,YAAY,CAAC,IAAI,IAAI,YAAY,EAAE;AACtE,gBAAgB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;AACtE,oBAAoB,IAAI,QAAQ,CAAC,KAAK,IAAI,sBAAsB,CAAC,IAAI,EAAE,qCAAqC,EAAE,GAAG,CAAC,EAAE;AACpH,wBAAwB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,EAAE,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzH,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,IAAI,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,EAAE;AACjG,4BAA4B,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AAC3H,wBAAwB;AACxB,wBAAwB,sBAAsB,CAAC,IAAI,EAAE,qCAAqC,EAAE,QAAQ,CAAC,KAAU,CAAC;AAChH,wBAAwB,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAM,CAAC;AACvJ,wBAAwB,IAAI,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC;AAC/F,4BAA4B,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AAC9H,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAC5E,YAAY;AACZ,QAAQ,KAAK,2BAA2B;AACxC,QAAQ,KAAK,wBAAwB;AACrC,QAAQ,KAAK,2BAA2B;AACxC,QAAQ,KAAK,yBAAyB;AACtC,YAAY,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,SAAc,CAAC;AACjG,YAAY,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY;AACnD,YAAY,IAAI,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE;AAC9C,gBAAgB,IAAI,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,EAAE;AACzF,oBAAoB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AACnH,oBAAoB,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,SAAc,CAAC;AAClG,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC;AACrE,YAAY;AAGZ;AACA,CAAC,EAAE,4BAA4B,GAAG,SAAS,4BAA4B,CAAC,KAAK,EAAE;AAC/E,IAAI,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1E,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;AAC9B,CAAC,EAAE,kCAAkC,GAAG,SAAS,kCAAkC,CAAC,KAAK,EAAE;AAC3F,IAAI,QAAQ,KAAK,CAAC,KAAK;AACvB,QAAQ,KAAK,yBAAyB;AACtC,YAAY,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI;AAC5G,YAAY,OAAO,KAAK,CAAC,IAAI;AAC7B,QAAQ,KAAK,uBAAuB;AACpC,YAAY,IAAI,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9G,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,MAAM,KAAK,CAAC,uDAAuD,CAAC;AACpF,YAAY;AACZ,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI;AACjC,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAgB,MAAM,WAAW,GAAGA,IAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;AAC5E,gBAAgB,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,WAAW;AACjH,YAAY;AACZ,YAAY,OAAO,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACtG,QAAQ,KAAK,2BAA2B;AACxC,QAAQ,KAAK,wBAAwB;AACrC,QAAQ,KAAK,2BAA2B;AACxC,QAAQ,KAAK,yBAAyB;AACtC,QAAQ,KAAK,6BAA6B;AAC1C,YAAY,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI;AAC5G,YAAY;AACZ;AACA,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3F,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAClG,IAAI,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;AAC5C,CAAC,EAAE,kCAAkC,GAAG,SAAS,kCAAkC,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrG,IAAI,IAAI,UAAU,GAAG,EAAE;AACvB,IAAI,QAAQ,KAAK,CAAC,KAAK;AACvB,QAAQ,KAAK,wBAAwB;AACrC;AACA,YAAY,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAC3C,QAAQ,KAAK,sBAAsB;AACnC,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,MAAM,KAAK,CAAC,wFAAwF,CAAC;AACrH,YAAY;AACZ,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI;AACjC;AACA,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACpC,gBAAgB,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACjE,oBAAoB,IAAI,cAAc,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE;AAClE,wBAAwB,IAAI,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;AACnF,wBAAwB,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,EAAE,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC;AAC7M,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,cAAc;AAC/E;AACA,wBAAwB,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;AACvD,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AACzC,QAAQ,KAAK,4BAA4B;AACzC,QAAQ,KAAK,0BAA0B;AACvC,QAAQ,KAAK,2BAA2B;AACxC;AACA,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC7C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,CAAC,yDAAyD,CAAC;AACtF,YAAY;AACZ;AACA,IAAI,MAAM,KAAK,CAAC,yCAAyC,CAAC;AAC1D,CAAC,EAAE,kCAAkC,GAAG,SAAS,kCAAkC,CAAC,cAAc,EAAE,cAAc,EAAE;AACpH,IAAI,OAAOA,IAAE,CAAC,eAAe,CAAC,cAAc,EAAE,cAAc,CAAC;AAC7D,CAAC,EAAE,0BAA0B,GAAG,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAC3E,IAAI,sBAAsB,CAAC,IAAI,EAAE,mCAAmC,EAAE,KAAK,CAAC,IAAS,CAAC;AACtF,IAAI,QAAQ,KAAK,CAAC,KAAK;AACvB,QAAQ,KAAK,oBAAoB;AACjC,YAAY;AACZ,QAAQ,KAAK,mBAAmB;AAChC,YAAY;AACZ,QAAQ,KAAK,wBAAwB;AACrC,YAAY;AACZ,QAAQ,KAAK,4BAA4B;AACzC,QAAQ,KAAK,sBAAsB;AACnC,QAAQ,KAAK,mBAAmB;AAChC,QAAQ,KAAK,sBAAsB;AACnC,QAAQ,KAAK,oBAAoB;AACjC,QAAQ,KAAK,uBAAuB;AACpC,YAAY,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,KAAK,CAAC,IAAS,CAAC;AACpF,YAAY,IAAI,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,EAAE;AACrF,gBAAgB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;AAC/G,gBAAgB,sBAAsB,CAAC,IAAI,EAAE,gCAAgC,EAAE,SAAc,CAAC;AAC9F,YAAY;AACZ,YAAY;AAGZ;AACA,CAAC;;ACliBD;AASA;AACA;AACA;AACA;AACA;aACO,MAAM,IAAI,SAAS,WAAW,CAAC;AACtC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC3C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnE,YAAY,KAAK,EAAE,EAAE,OAAO,EAAE;AAC9B,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;AAC1C,YAAY,qBAAqB,EAAE,IAAI;AACvC,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5E,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACnC,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC7C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AAC7E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG;AACvF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACnC,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AACpF,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,QAAQ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;AAC9D,QAAQ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC;AACxE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAC7C,QAAQ,OAAO,eAAe,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AAC7G,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,OAAO,GAAG,YAAY,CAAC;AACrC,YAAY,OAAO,EAAE,OAAO;AAC5B,YAAY;AACZ,gBAAgB,yBAAyB,EAAE,MAAM;AACjD,gBAAgB,kCAAkC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,SAAS;AACpG,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/E,gBAAgB,GAAG,OAAO;AAC1B,gBAAgB,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;AAC5D,aAAa,CAAC,CAAC,YAAY,EAAE;AAC7B,YAAY,QAAQ,GAAG,CAAC,MAAM;AAC9B;AACA,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,aAAa;AAClC,gBAAgB,KAAK,YAAY;AACjC,oBAAoB,IAAI,aAAa,GAAG,IAAI;AAC5C,oBAAoB,IAAI,OAAO,EAAE,cAAc,EAAE;AACjD,wBAAwB,aAAa,GAAG,OAAO,CAAC,cAAc;AAC9D,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAC3F,wBAAwB,IAAI,cAAc,EAAE;AAC5C,4BAA4B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC;AAC7E,4BAA4B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AAC1D,gCAAgC,aAAa,GAAG,gBAAgB;AAChE,4BAA4B;AAC5B,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM,KAAK,CAAC,aAAa,CAAC;AAC9C,oBAAoB;AACpB;AACA,gBAAgB,KAAK,iBAAiB;AACtC,gBAAgB,KAAK,YAAY;AACjC,gBAAgB,KAAK,WAAW;AAChC,gBAAgB,KAAK,WAAW;AAChC,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,SAAS;AAC9B,oBAAoB,OAAO,GAAG;AAC9B;AACA,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACpC,QAAQ,OAAO,eAAe,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AAC7G,IAAI;AACJ,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AAC9C,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC7C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAAE;AACjG,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;AAC1C,YAAY,qBAAqB,EAAE,IAAI;AACvC,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AAC3D,QAAQ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;AACxE,QAAQ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC;AACvD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,QAAQ,OAAO,eAAe,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;AAChH,IAAI;AACJ;AACAC,MAAI,CAAC,KAAK,GAAG,KAAK;;ACzLlB;AASA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAIC,MAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIvC,QAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE;AAC7C,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AAC7D,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AAC9D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AAChE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE;AAClD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AACxC,YAAY,qBAAqB,EAAE,IAAI;AACvC,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1C,QAAQ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;AAC1D,QAAQ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC;AAClF,IAAI;AACJ;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE;AACtC,QAAQ,OAAO,eAAe,CAAC,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACpG,IAAI;AACJ;AACA,OAAO,CAAC,IAAI,GAAGsC,MAAI;AACnB,OAAO,CAAC,QAAQ,GAAG,QAAQ;;ACjG3B;AAUO,MAAM,IAAI,SAAS,WAAW,CAAC;AACtC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIE,UAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIC,OAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAIC,UAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;AACpE,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIR,OAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,IAAI;AACJ;AACA,IAAI,CAAC,QAAQ,GAAGF,UAAQ;AACxB,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,IAAI,CAAC,OAAO,GAAG,OAAO;;ACtBtB;AAEA;AACA;AACA;AACO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE;AACjD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AACxC,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACdA;gBAIO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC5F,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,YAAY,gBAAgB,EAAE,IAAI;AAClC,SAAS,CAAC;AACV,IAAI;AACJ;;ACjBA;cAQO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIW,SAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,gCAAgC,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACjL,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACpF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC3C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG;AAC9F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AACvF,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACAC,OAAK,CAAC,OAAO,GAAGC,SAAO;;ACtDvB;AAOO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,OAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AACvG,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE;AACnE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,GAAG,UAAU,GAAG;AACpE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE;AACtE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA,UAAU,CAAC,KAAK,GAAGF,OAAK;;AChDxB;AAIA;AACA;AACA;AACO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE;AAC5C,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAC3C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE;AAChF,YAAY,KAAK,EAAE,EAAE,OAAO,EAAE;AAC9B,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AACpD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC1F,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AACxK,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC7F,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;AC/CA;AAKA;AACA;AACA;AACO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIG,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC1G,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE;AACzE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE;AAC1E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE;AAC5E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA,aAAa,CAAC,KAAK,GAAG,KAAK;;AChD3B;AAGA;AACA;AACA;AACO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,MAAM,6BAA6B,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe;AACpE;AACA;AACA,QAAQ,IAAI,eAAe,GAAG,6BAA6B,GAAG,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC7F,QAAQ,IAAI,6BAA6B,EAAE;AAC3C,YAAY,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,eAAe,CAAC;AAC3G,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;AAC1D,YAAY,IAAI,EAAE;AAClB,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,eAAe,EAAE,eAAe;AAChD,aAAa;AACb,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,6BAA6B,EAAE;AAC3C,YAAY,OAAO,QAAQ;AAC3B,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,mDAAmD,CAAC;AAC1F,QAAQ,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,KAAK;AAClD,YAAY,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC3C,gBAAgB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,kBAAkB,KAAK;AAC9D,oBAAoB,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,SAAS;AAC3E,oBAAoB,kBAAkB,CAAC,SAAS,GAAG,cAAc,CAAC,kBAAkB,CAAC;AACrF,gBAAgB,CAAC,CAAC;AAClB,YAAY;AACZ,YAAY,OAAO,QAAQ;AAC3B,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;;ACtDA;AAIA;AACA;AACA;AACO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C;AACA;AACA;AACA,IAAI,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE;AAC5C,QAAQ,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,EAAE;AACtG,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACjC,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AAC5C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAClK,IAAI;AACJ;;ACzBA;AAMA;AACA;AACA;AACO,MAAM,IAAI,SAAS,WAAW,CAAC;AACtC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIC,WAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AACxE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG;AACnF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACnC,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AAC3E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AACnC,QAAQ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AACzE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,CAAC,WAAW,GAAG,WAAW;;ACnE9B;AAMA;AACA;AACA;AACO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAIT,IAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAClG,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC1G,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AACjH,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,UAAU,GAAG;AAC/D,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC7G,IAAI;AACJ;AACA,KAAK,CAAC,IAAI,GAAG,IAAI;;ACtDjB;AAQA;AACA;AACA;cACO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7I,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC1G,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,UAAU,GAAG;AAC/D,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC7G,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;AACjE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,YAAY,gBAAgB,EAAE,IAAI;AAClC,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE;AACxF,QAAQ,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC1E,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAChC,QAAQ,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1C,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClE,YAAY,MAAM,KAAK,CAAC,YAAY,CAAC;AACrC,YAAY,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1C,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE;AAC9C,gBAAgB,MAAM,IAAI,yBAAyB,CAAC;AACpD,oBAAoB,OAAO,EAAE,CAAC,8BAA8B,EAAE,EAAE,CAAC,4BAA4B,EAAE,OAAO,CAAC,cAAc,CAAC;AACtH,iBAAiB,CAAC;AAClB,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;;AC/FA;AAEO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;;ACHA;AAEA;AACA;AACA;gBACO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE;AACnE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE;AACxE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACtDA;AAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIU,SAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,IAAI;AACJ;AACA,KAAK,CAAC,OAAO,GAAGC,SAAO;;ACVvB;AAIA;AACA;AACA;AACO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE;AACpD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,wBAAwB,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACpM,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,wBAAwB,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC5D,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,wBAAwB,CAAC,YAAY,CAAC,EAAE;AACzG,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AACjD,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,wBAAwB,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACxD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,wBAAwB,CAAC,YAAY,CAAC,GAAG,sBAAsB,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACvM,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1C,QAAQ,MAAM,EAAE,2BAA2B,EAAE,GAAG,MAAM;AACtD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,2BAA2B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;AACrL,IAAI;AACJ;;ACpFA;oBAIO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIC,WAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,IAAI;AACJ;AACAC,aAAW,CAAC,WAAW,GAAG,WAAW;;ACVrC;AAIA;AACA;AACA;AACO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC/C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AACtK,IAAI;AACJ;;ACxBA;AAMA;AACA;AACA;AACO,MAAM,IAAI,SAAS,WAAW,CAAC;AACtC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIC,WAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC7G,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,eAAe,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC,EAAE;AAC7E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,GAAG,UAAU,GAAG;AAC1E,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE;AACrF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,eAAe,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACrD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AACjK,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE;AACpF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE;AACrF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,CAAC,WAAW,GAAG,WAAW;;ACvI9B;AAUO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIC,OAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAIC,IAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIF,aAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIG,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA,UAAU,CAAC,OAAO,GAAG,OAAO;AAC5B,UAAU,CAAC,IAAI,GAAG,IAAI;AACtB,UAAU,CAAC,WAAW,GAAGJ,aAAW;AACpC,UAAU,CAAC,KAAK,GAAG,KAAK;;ACtBxB;AAEO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C;;ACHA;AAIO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAIK,YAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1E,IAAI;AACJ;AACA,OAAO,CAAC,YAAY,GAAG,YAAY;;ACVnC;AAGA;AACA;AACA;AACO,MAAM,MAAM,SAAS,WAAW,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzJ,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAClL,IAAI;AACJ,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACxD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AACxC,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;AC/BA;AAIA;AACA;AACA;AACO,MAAM,MAAM,SAAS,WAAW,CAAC;AACxC;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC1G,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3G,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC7G,IAAI;AACJ;;AC7BA;AAEA;AACA;AACA;AACO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AACxG,IAAI;AACJ;;ACbA;AAIO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;AAC1E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;AAC1E,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;AACzE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;AAC1E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACzEA;AAEO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAC7D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACjCA;AAMO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAIC,aAA8B,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7E,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA,QAAQ,CAAC,aAAa,GAAG,aAAa;AACtC,QAAQ,CAAC,KAAK,GAAG,KAAK;;ACZf,SAAS,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE;AACrD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE;AACnD,QAAQ,OAAO;AACf,YAAY,GAAG,QAAQ;AACvB,YAAY,aAAa,EAAE,IAAI;AAC/B,YAAY,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAClD,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE;AACnD,oBAAoB,OAAO;AAC3B,wBAAwB,GAAG,IAAI;AAC/B,wBAAwB,gBAAgB,EAAE,IAAI;AAC9C,qBAAqB;AACrB,gBAAgB;AAChB,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AAC7C,oBAAoB,OAAO;AAC3B,wBAAwB,GAAG,IAAI;AAC/B,wBAAwB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM;AAChE,4BAA4B,GAAG,OAAO;AACtC,4BAA4B,MAAM,EAAE,IAAI;AACxC,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,OAAO,IAAI;AAC/B,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,SAAS;AACT,IAAI;AACJ,IAAI,OAAOC,eAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC1C;AACO,SAASA,eAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;AAChD,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AACjD,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE;AAC3C,YAAY,OAAO;AACnB,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,gBAAgB,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7D,aAAa;AACb,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AACrC,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK;AAC1D,gBAAgB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE;AACpD,oBAAoB,OAAO;AAC3B,wBAAwB,GAAG,OAAO;AAClC,wBAAwB,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;AACrE,qBAAqB;AACrB,gBAAgB;AAChB,gBAAgB,OAAO,OAAO;AAC9B,YAAY,CAAC,CAAC;AACd,YAAY,OAAO;AACnB,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,OAAO;AACvB,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC;AAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE;AACnE,QAAQ,aAAa,CAAC,MAAM,CAAC;AAC7B,IAAI;AACJ,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE;AACnD,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,GAAG,GAAG;AACd,YAAY,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AAChD,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AAC/C,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE;AACtD,oBAAoB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;AACnF,wBAAwB,OAAO,OAAO,CAAC,MAAM;AAC7C,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC;AACT,KAAK,CAAC;AACN,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1C,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,aAAa,EAAE;AACrD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;AAC5C,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM;AAC/C,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC;AAC7C,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC9B;AACO,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC9C,IAAI,IAAI,4BAA4B,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AAC3D,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AAmBO,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACzC,IAAI,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,qBAAqB;AACrD;AACA,SAAS,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE;AAC/C,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AACrF;AACA,SAAS,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;AACzC,IAAI,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC3E,IAAI,OAAO;AACX,QAAQ,GAAG,QAAQ;AACnB,QAAQ,GAAG,QAAQ;AACnB,QAAQ,gBAAgB,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS;AAChG,cAAc,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS;AAC/D,kBAAkB,IAAI;AACtB,KAAK;AACL;AAkBO,SAAS,aAAa,CAAC,GAAG,EAAE;AACnC,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AACrC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AACvC,YAAY;AACZ,QAAQ;AACR,QAAQ,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE;AAC9C,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE;AAChD,gBAAgB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACxC,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AACpC;;AC9JA,IAAI,yBAAyB,EAAE,sBAAsB,EAAE,uCAAuC,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,kCAAkC;AAK9O,MAAM,cAAc,SAAS,WAAW,CAAC;AAChD,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,KAAK,EAAE;AACf,QAAQ,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3C,QAAQ,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAChD,QAAQ,uCAAuC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACjE,QAAQ,6BAA6B,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACvD,QAAQ,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,MAAW,CAAC;AACzE,IAAI;AACJ,IAAI,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACnD,QAAQ,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC;AACjD,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE;AAC3E,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE;AACnF,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,MAAM,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AAC7D,QAAQ,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;AACtC,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,MAAM,CAAC,OAAO;AAC9B,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3E,QAAQ;AACR,QAAQ,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7G,QAAQ,IAAI,MAAM;AAClB,QAAQ,IAAI,cAAc,GAAG,IAAI;AACjC,QAAQ,IAAI,aAAa,IAAI,MAAM,EAAE;AACrC,YAAY,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACxJ,YAAY,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI;AAC1D,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AAC/H,QAAQ;AACR,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,WAAW,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1C,YAAY,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;AACpI,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,YAAY,MAAM,IAAI,iBAAiB,EAAE;AACzC,QAAQ;AACR,QAAQ,OAAO,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAClH,IAAI;AACJ,IAAI,EAAE,sBAAsB,GAAG,IAAI,OAAO,EAAE,EAAE,uCAAuC,GAAG,IAAI,OAAO,EAAE,EAAE,6BAA6B,GAAG,IAAI,OAAO,EAAE,EAAE,yBAAyB,GAAG,IAAI,OAAO,EAAE,EAAE,4BAA4B,GAAG,SAAS,4BAA4B,GAAG;AACxQ,QAAQ,IAAI,IAAI,CAAC,KAAK;AACtB,YAAY;AACZ,QAAQ,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,SAAc,CAAC;AAC7F,IAAI,CAAC,EAAE,wBAAwB,GAAG,SAAS,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE;AAC3F,QAAQ,IAAI,IAAI,CAAC,KAAK;AACtB,YAAY;AACZ,QAAQ,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;AAC3C,YAAY,IAAI,cAAc,IAAI,IAAI,IAAI,KAAK,CAAC,eAAe,GAAG,cAAc,EAAE;AAClF,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,yBAAyB,EAAE,GAAG,EAAE,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3I,QAAQ,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AACjC,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,YAAY,KAAK,4BAA4B,EAAE;AAC/C,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;AAClE,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1F,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AAC/C,oBAAoB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;AACvE,oBAAoB,IAAI,CAAC,OAAO,EAAE;AAClC,wBAAwB,MAAM,IAAI,WAAW,CAAC,CAAC,yBAAyB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AAChG,oBAAoB;AACpB,oBAAoB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE;AACxD,wBAAwB,MAAM,IAAI,WAAW,CAAC,CAAC,0CAA0C,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1G,oBAAoB;AACpB,oBAAoB,SAAS,CAAC,4BAA4B,EAAE;AAC5D,wBAAwB,GAAG,KAAK;AAChC,wBAAwB,QAAQ,EAAE,OAAO,CAAC,IAAI;AAC9C,qBAAqB,CAAC;AACtB,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,wCAAwC,EAAE;AAC3D,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;AAClE,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1F,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;AACrD,oBAAoB,SAAS,CAAC,wCAAwC,EAAE;AACxE,wBAAwB,GAAG,KAAK;AAChC,wBAAwB,QAAQ,EAAE,MAAM,CAAC,SAAS;AAClD,qBAAqB,CAAC;AACtB,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ,YAAY;AACZ,gBAAgB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5C,gBAAgB;AAChB;AACA,IAAI,CAAC,EAAE,0BAA0B,GAAG,SAAS,0BAA0B,GAAG;AAC1E,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,uCAAuC,CAAC,CAAC;AAC5E,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,CAAC;AACnG,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,MAAM,IAAI,WAAW,CAAC,CAAC,wCAAwC,CAAC,CAAC;AAC7E,QAAQ;AACR,QAAQ,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,SAAc,CAAC;AAC7F,QAAQ,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;AACpH,QAAQ,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,cAAmB,CAAC;AACxF,QAAQ,OAAO,cAAc;AAC7B,IAAI,CAAC,EAAE,kCAAkC,GAAG,SAAS,kCAAkC,CAAC,KAAK,EAAE;AAC/F,QAAQ,IAAI,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,GAAG,CAAC;AACjG,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;AACnD,gBAAgB,MAAM,IAAI,WAAW,CAAC,CAAC,0EAA0E,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAChI,YAAY;AACZ,YAAY,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,KAAK,CAAC,QAAa,CAAC;AACjH,YAAY,OAAO,QAAQ;AAC3B,QAAQ;AACR,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,YAAY,KAAK,4BAA4B,EAAE;AAC/C,gBAAgB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAChD,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,6BAA6B,EAAE;AAChD,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;AAClE,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1F,gBAAgB;AAChB,gBAAgB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;AACxC,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACvC,gBAAgB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;AAC1E,oBAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,gBAAgB;AAChB,qBAAqB,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;AACjF,oBAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACzC,wBAAwB,MAAM,CAAC,OAAO,GAAG,EAAE;AAC3C,oBAAoB;AACpB,oBAAoB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,4BAA4B,EAAE;AAC/C,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;AAClE,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1F,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AAC/C,oBAAoB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;AACvE,oBAAoB,IAAI,CAAC,OAAO,EAAE;AAClC,wBAAwB,MAAM,IAAI,WAAW,CAAC,CAAC,yBAAyB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AAChG,oBAAoB;AACpB,oBAAoB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE;AACxD,wBAAwB,MAAM,IAAI,WAAW,CAAC,CAAC,0CAA0C,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1G,oBAAoB;AACpB,oBAAoB,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK;AAC/C,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,wCAAwC,EAAE;AAC3D,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;AAClE,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1F,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;AACrD,oBAAoB,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK;AACnD,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,+BAA+B,EAAE;AAClD,gBAAgB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;AAClE,gBAAgB,IAAI,CAAC,MAAM,EAAE;AAC7B,oBAAoB,MAAM,IAAI,WAAW,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1F,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;AACjD,oBAAoB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;AACzE,oBAAoB,IAAI,CAAC,OAAO,EAAE;AAClC,wBAAwB,MAAM,IAAI,WAAW,CAAC,CAAC,yBAAyB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AAChG,oBAAoB;AACpB,oBAAoB,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE;AAC3D,wBAAwB,MAAM,IAAI,WAAW,CAAC,CAAC,6CAA6C,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7G,oBAAoB;AACpB,oBAAoB,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK;AAC/C,gBAAgB;AAChB,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,oBAAoB,EAAE;AACvC,gBAAgB,sBAAsB,CAAC,IAAI,EAAE,uCAAuC,EAAE,KAAK,CAAC,QAAa,CAAC;AAC1G,gBAAgB;AAChB,YAAY;AACZ;AACA,QAAQ,OAAO,QAAQ;AACvB,IAAI,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG;AAChC,QAAQ,MAAM,SAAS,GAAG,EAAE;AAC5B,QAAQ,MAAM,SAAS,GAAG,EAAE;AAC5B,QAAQ,IAAI,IAAI,GAAG,KAAK;AACxB,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK;AACpC,YAAY,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE;AAC5C,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC7B,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAClC,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAClC,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;AAC5C,gBAAgB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AAClC,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC;AAChC,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,YAAY;AAC9B,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvC,oBAAoB,IAAI,IAAI,EAAE;AAC9B,wBAAwB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/D,oBAAoB;AACpB,oBAAoB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5L,gBAAgB;AAChB,gBAAgB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE;AAC/C,gBAAgB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,YAAY,CAAC;AACb,YAAY,MAAM,EAAE,YAAY;AAChC,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAgB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;AACvD,YAAY,CAAC;AACb,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,EAAE,GAAG,CAAC;AACzF,QAAQ,IAAI,CAAC,QAAQ;AACrB,YAAY,MAAM,IAAI,WAAW,CAAC,iDAAiD,CAAC;AACpF,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ;AACA,SAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC5C,IAAI,OAAO,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC/C;;ACnQA;AAIO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC1J,IAAI;AACJ;;ACrBA;AAEO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE;AAC5D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACrBA;AAUO,MAAM,SAAS,SAAS,WAAW,CAAC;AAC3C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAIC,UAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;AACpE,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIC,WAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;AAC/C,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AACxC,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK;AAChC,YAAY,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;AAC9D,gBAAgB,aAAa,CAAC,GAAG,CAAC;AAClC,YAAY;AACZ,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,EAAE;AACjE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK;AAC1C,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK;AAChC,YAAY,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;AAC9D,gBAAgB,aAAa,CAAC,GAAG,CAAC;AAClC,YAAY;AACZ,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,EAAE;AACpE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,aAAa,MAAM,CAAC,IAAI,EAAE,OAAO;AACjC,aAAa,WAAW,CAAC,CAAC,QAAQ,KAAKF,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACrE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;AACzE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;AACzE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC9G,IAAI;AACJ;AACA,SAAS,CAAC,UAAU,GAAG,UAAU;AACjC,SAAS,CAAC,WAAW,GAAG,WAAW;;AC5GnC;gBAIO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,YAAY,gBAAgB,EAAE,IAAI;AAClC,SAAS,CAAC;AACV,IAAI;AACJ;;AChBA;AAIO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;AACxF,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,YAAY,gBAAgB,EAAE,IAAI;AAClC,SAAS,CAAC;AACV,IAAI;AACJ;;ACjBA;AAOO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIjB,OAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,gCAAgC,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5K,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE;AAChF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,UAAU,GAAG;AACzF,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE;AACnF,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA,QAAQ,CAAC,OAAO,GAAG,OAAO;;ACjD1B;AASO,MAAM,MAAM,SAAS,WAAW,CAAC;AACxC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIA,SAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3D,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIoB,QAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,gCAAgC,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnJ,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5G,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE;AAC5D,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,UAAU,GAAG;AAChE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC/G,IAAI;AACJ;AACA,MAAM,CAAC,OAAO,GAAGlB,SAAO;AACxB,MAAM,CAAC,QAAQ,GAAG,QAAQ;;ACvD1B;AAIA;AACA;AACA;AACO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACtK,IAAI;AACJ;;ACxBA;AAKA;AACA;AACA;AACO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAImB,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AACpG,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;AACrE,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA,OAAO,CAAC,KAAK,GAAG,KAAK;;AC3ErB;AACA;AACA;AACO,MAAM,mBAAmB,GAAG,OAAO,QAAQ,KAAK;AACvD,IAAI,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;AACtD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC;AAC7E,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE;AACzB,QAAQ,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AACvC,YAAY,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACxC,QAAQ;AACR,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;AACtF,IAAI;AACJ;AACA,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,CAAC;;ACpBD;AAOO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C;AACA;AACA;AACA,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE;AACtF,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,EAAE;AAClG,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1G,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACtD,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC;AAC5D,QAAQ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC;AAChE,IAAI;AACJ;AACA;AACA;AACA,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACxC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM;AACpD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG;AAC7H,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE;AAChD,QAAQ,MAAM,OAAO,GAAG,YAAY,CAAC;AACrC,YAAY,OAAO,EAAE,OAAO;AAC5B,YAAY;AACZ,gBAAgB,yBAAyB,EAAE,MAAM;AACjD,gBAAgB,kCAAkC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,SAAS;AACpG,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE;AAC/G,gBAAgB,GAAG,OAAO;AAC1B,gBAAgB,OAAO;AACvB,aAAa,CAAC,CAAC,YAAY,EAAE;AAC7B,YAAY,QAAQ,KAAK,CAAC,MAAM;AAChC,gBAAgB,KAAK,aAAa;AAClC,oBAAoB,IAAI,aAAa,GAAG,IAAI;AAC5C,oBAAoB,IAAI,OAAO,EAAE,cAAc,EAAE;AACjD,wBAAwB,aAAa,GAAG,OAAO,CAAC,cAAc;AAC9D,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAC3F,wBAAwB,IAAI,cAAc,EAAE;AAC5C,4BAA4B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC;AAC7E,4BAA4B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AAC1D,gCAAgC,aAAa,GAAG,gBAAgB;AAChE,4BAA4B;AAC5B,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM,KAAK,CAAC,aAAa,CAAC;AAC9C,oBAAoB;AACpB,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,WAAW;AAChC,gBAAgB,KAAK,WAAW;AAChC,oBAAoB,OAAO,KAAK;AAChC;AACA,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE;AACzE,QAAQ,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AAChD,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,8GAA8G,CAAC,CAAC;AAC7I,QAAQ;AACR,QAAQ,MAAM,qBAAqB,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC;AAClE;AACA,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC;AAC9E,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;AACnC,QAAQ,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE;AAC3C,QAAQ,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC;AACvC;AACA;AACA,QAAQ,eAAe,YAAY,CAAC,QAAQ,EAAE;AAC9C,YAAY,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;AACvC,gBAAgB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC;AACzG,gBAAgB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AAC3C,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;AACpF;AACA,QAAQ,MAAM,mBAAmB,CAAC,OAAO,CAAC;AAC1C,QAAQ,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;AACvD,YAAY,QAAQ,EAAE,UAAU;AAChC,SAAS,CAAC;AACV,IAAI;AACJ;;ACvIA;AAMO,MAAM,KAAK,SAAS,WAAW,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE;AAC/E,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC1F,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AACnD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC3F,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC7C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG;AACnG,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACpC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE;AAC7F,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACtD,QAAQ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC;AACpE,QAAQ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;AAC/D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE;AAC/C,QAAQ,MAAM,OAAO,GAAG,YAAY,CAAC;AACrC,YAAY,OAAO,EAAE,OAAO;AAC5B,YAAY;AACZ,gBAAgB,yBAAyB,EAAE,MAAM;AACjD,gBAAgB,kCAAkC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,SAAS;AACpG,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC7D,gBAAgB,eAAe,EAAE,aAAa;AAC9C,aAAa,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE;AACtD,YAAY,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI;AAC1C,YAAY,QAAQ,IAAI,CAAC,MAAM;AAC/B,gBAAgB,KAAK,aAAa;AAClC,oBAAoB,IAAI,aAAa,GAAG,IAAI;AAC5C,oBAAoB,IAAI,OAAO,EAAE,cAAc,EAAE;AACjD,wBAAwB,aAAa,GAAG,OAAO,CAAC,cAAc;AAC9D,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;AACxG,wBAAwB,IAAI,cAAc,EAAE;AAC5C,4BAA4B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC;AAC7E,4BAA4B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AAC1D,gCAAgC,aAAa,GAAG,gBAAgB;AAChE,4BAA4B;AAC5B,wBAAwB;AACxB,oBAAoB;AACpB,oBAAoB,MAAM,KAAK,CAAC,aAAa,CAAC;AAC9C,oBAAoB;AACpB,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,WAAW;AAChC,oBAAoB,OAAO,IAAI;AAC/B;AACA,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AAC/C,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC;AACxG,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC;AAC5E,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACtD,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC;AACxE,QAAQ,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM;AAC1C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG;AACjH,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;;ACjJA;AASO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIlB,KAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAImB,WAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;AACvE,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACnD,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,EAAE;AACxE,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,EAAE;AACzE,YAAY,IAAI;AAChB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,GAAG,UAAU,GAAG;AACvE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,EAAE;AAC3E,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;AACzC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG;AAC9F,YAAY,IAAI;AAChB,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA,YAAY,CAAC,KAAK,GAAG,KAAK;AAC1B,YAAY,CAAC,WAAW,GAAG,WAAW;;ACnFtC;AAMO,MAAM,MAAM,SAAS,WAAW,CAAC;AACxC;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9I,IAAI;AACJ;AACA;AACA;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5G,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,GAAG,sBAAsB,GAAG;AAC5E,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAC/G,IAAI;AACJ;AACA;AACA;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzJ,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE;AAClD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnE,YAAY,KAAK;AACjB,YAAY,GAAG,OAAO;AACtB,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACvF,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,YAAY,gBAAgB,EAAE,IAAI;AAClC,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACpJ,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzJ,IAAI;AACJ;AACA;AACA;AACA,IAAI,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC,EAAE;AAC1E,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;AAC5C,SAAS,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,gCAAgC,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzK,IAAI;AACJ;;ACnFA;AACA,IAAI,mBAAmB,EAAE,wBAAwB,EAAE,2BAA2B;AAKvE,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,GAAG,GAAG,EAAE;AACzF,QAAQ,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;AACvE,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,GAAG,GAAG,EAAE;AAClG,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW;AACzC,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU;AACzD,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC;AACnH,QAAQ;AACR,QAAQ,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;AAC3G,QAAQ,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;AACzD,QAAQ,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC;AAC/J,QAAQ,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,CAAC;AACzJ,QAAQ,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC;AAClJ;AACA,QAAQ,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;AACxD,QAAQ,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACrC,YAAY,MAAM,IAAI,4BAA4B,CAAC,kCAAkC,CAAC;AACtF,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,QAAQ,IAAI,UAAU,GAAG,gBAAgB,GAAG,SAAS,EAAE;AACvD,YAAY,MAAM,IAAI,4BAA4B,CAAC,8BAA8B,CAAC;AAClF,QAAQ;AACR,QAAQ,IAAI,gBAAgB,GAAG,UAAU,GAAG,SAAS,EAAE;AACvD,YAAY,MAAM,IAAI,4BAA4B,CAAC,8BAA8B,CAAC;AAClF,QAAQ;AACR;AACA;AACA;AACA,QAAQ,MAAM,UAAU,GAAG;AAC3B,aAAa,KAAK,CAAC,GAAG;AACtB,aAAa,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/E;AACA,QAAQ,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AACzD,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,QAAQ;AAC9D,cAAc,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1C;AACA,QAAQ,MAAM,aAAa,GAAG,SAAS,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5G;AACA,QAAQ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC7H;AACA,QAAQ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAC5C,YAAY,IAAI;AAChB,gBAAgB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;AACvE,gBAAgB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAChI,gBAAgB,IAAI,OAAO,EAAE;AAC7B,oBAAoB,OAAO;AAC3B,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM;AAClB;AACA,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,IAAI,4BAA4B,CAAC,mEAAmE,CAAC;AACnH,IAAI;AACJ;AACA,mBAAmB,GAAG,IAAI,OAAO,EAAE,EAAE,wBAAwB,GAAG,SAAS,wBAAwB,CAAC,MAAM,EAAE;AAC1G,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3D,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,iKAAiK,CAAC,CAAC;AAC5L,IAAI;AACJ,CAAC,EAAE,2BAA2B,GAAG,SAAS,2BAA2B,CAAC,OAAO,EAAE,IAAI,EAAE;AACrF,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC/C,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC/C,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3D,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,CAAC;;AC/FD;AACA,IAAI,iBAAiB,EAAE7B,IAAE,EAAE,eAAe,EAAE,yBAAyB;AA8CrE,MAAM,qCAAqC,GAAG,wBAAwB;AACtE;AACA;AACA;AACO,MAAM,MAAM,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,uBAAuB,CAAC,IAAI,IAAI,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE;AACpV,QAAQ,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,QAAQ,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AACzC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI8B,WAAe,CAAC,IAAI,CAAC;AACpD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAIC,IAAQ,CAAC,IAAI,CAAC;AACtC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAIC,UAAc,CAAC,IAAI,CAAC;AAClD;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,OAAS,CAAC,IAAI,CAAC;AACxC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIC,MAAU,CAAC,IAAI,CAAC;AAC1C,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,KAAS,CAAC,IAAI,CAAC;AACxC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAIC,WAAe,CAAC,IAAI,CAAC;AACpD;AACA;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIC,MAAU,CAAC,IAAI,CAAC;AAC1C,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAIC,UAAc,CAAC,IAAI,CAAC;AAClD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIC,OAAW,CAAC,IAAI,CAAC;AAC5C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAIC,YAAgB,CAAC,IAAI,CAAC;AACtD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIC,QAAY,CAAC,IAAI,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAIC,IAAQ,CAAC,IAAI,CAAC;AACtC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIC,OAAW,CAAC,IAAI,CAAC;AAC5C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAIC,OAAW,CAAC,IAAI,CAAC;AAC5C,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,KAAS,CAAC,IAAI,CAAC;AACxC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAIC,SAAa,CAAC,IAAI,CAAC;AAChD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAIC,QAAY,CAAC,IAAI,CAAC;AAC9C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAIC,aAAiB,CAAC,IAAI,CAAC;AACxD;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAIC,KAAS,CAAC,IAAI,CAAC;AACxC,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAIC,UAAc,CAAC,IAAI,CAAC;AAClD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIC,MAAU,CAAC,IAAI,CAAC;AAC1C,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAIC,MAAU,CAAC,IAAI,CAAC;AAC1C,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB,YAAY,OAAO;AACnB,YAAY,aAAa;AACzB,YAAY,gBAAgB;AAC5B,YAAY,GAAG,IAAI;AACnB,YAAY,OAAO,EAAE,OAAO,IAAI,CAAC,yBAAyB,CAAC;AAC3D,SAAS;AACT,QAAQ,IAAI,MAAM,IAAI,gBAAgB,EAAE;AACxC,YAAY,MAAM,IAAIC,WAAkB,CAAC,oEAAoE,CAAC;AAC9G,QAAQ;AACR,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,gBAAgB,EAAE;AAC1D,YAAY,MAAM,IAAIA,WAAkB,CAAC,0JAA0J,CAAC;AACpM,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,kBAAkB,EAAE,EAAE;AACtE,YAAY,MAAM,IAAIA,WAAkB,CAAC,obAAob,CAAC;AAC9d,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;AACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAIrD,IAAE,CAAC,eAAe;AAC5D,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO;AAC/C,QAAQ,MAAM,eAAe,GAAG,MAAM;AACtC;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,eAAe;AACvC,QAAQ,IAAI,CAAC,QAAQ;AACrB,YAAY,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,wBAAwB,EAAE,IAAI,CAAC;AAC3E,gBAAgB,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,2BAA2B,EAAE,IAAI,CAAC;AACvF,gBAAgB,eAAe;AAC/B,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;AAChD,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC;AACjD,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAIxC,eAAqB,EAAE;AAC7D,QAAQ,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE8F,eAAyB,CAAC;AAChF,QAAQ,MAAM,gBAAgB,GAAG,OAAO,CAAC,uBAAuB,CAAC;AACjE,QAAQ,IAAI,gBAAgB,EAAE;AAC9B,YAAY,MAAM,MAAM,GAAG,EAAE;AAC7B,YAAY,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC7D,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/C,gBAAgB,IAAI,KAAK,IAAI,CAAC,EAAE;AAChC,oBAAoB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9F,gBAAgB;AAChB,YAAY;AACZ,YAAY,OAAO,CAAC,cAAc,GAAG,YAAY,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;AACnF,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,QAAQ,IAAI,gBAAgB,EAAE;AAC9B,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI,oBAAoB,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC;AAC/F,QAAQ;AACR,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI;AAChE,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC;AAC5C,YAAY,GAAG,IAAI,CAAC,QAAQ;AAC5B,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO;AACjC,YAAY,UAAU,EAAE,IAAI,CAAC,UAAU;AACvC,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO;AACjC,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;AAC/B,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACnC,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;AAC7B,YAAY,YAAY,EAAE,IAAI,CAAC,YAAY;AAC3C,YAAY,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;AACxC,YAAY,WAAW,EAAE,IAAI,CAAC,WAAW;AACzC,YAAY,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;AAC5D,YAAY,YAAY,EAAE,IAAI,CAAC,YAAY;AAC3C,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO;AACjC,YAAY,aAAa,EAAE,IAAI,CAAC,aAAa;AAC7C,YAAY,GAAG,OAAO;AACtB,SAAS,CAAC;AACV,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY;AACzC,IAAI;AACJ,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,GAAG;AACjD,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,eAAe,EAAE,IAAI;AAC7B,KAAK,EAAE;AACP,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAClE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAChE,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,qBAAqB,IAAI,OAAO,CAAC,UAAU,EAAE;AAC9D,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,IAAI,KAAK,CAAC,2KAA2K,CAAC;AACpM,IAAI;AACJ,IAAI,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG;AACtC,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,eAAe,EAAE,IAAI;AAC7B,KAAK,EAAE;AACP,QAAQ,OAAO,YAAY,CAAC;AAC5B,YAAY,OAAO,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI;AACnE,YAAY,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI;AAC7E,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,OAAO,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7G,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AACjC,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,QAAQ,OAAO,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACzE,IAAI;AACJ,IAAI,MAAM,eAAe,CAAC,IAAI,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;AACtC,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,QAAQ,OAAO,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9E,IAAI;AACJ,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,OAAO,cAAc,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,IAAI;AACJ,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,OAAO,CAAC,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,IAAI;AACJ,IAAI,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AACrD,QAAQ,OAAOC,QAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;AACxE,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;AAC3C,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU;AACxC,YAAY,OAAO,KAAK;AACxB,QAAQ,IAAI,KAAK;AACjB,QAAQ,IAAI;AACZ,YAAY,KAAK,GAAG,MAAM,MAAM,EAAE;AAClC,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,IAAI,GAAG,YAAYF,WAAkB;AACjD,gBAAgB,MAAM,GAAG;AACzB,YAAY,MAAM,IAAIA,WAAkB,CAAC,CAAC,4CAA4C,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACrG;AACA,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC3B,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE;AACjD,YAAY,MAAM,IAAIA,WAAkB,CAAC,CAAC,uEAAuE,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3H,QAAQ;AACR,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;AAC1C,QAAQ,MAAM,OAAO,GAAG,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,KAAK,IAAI,CAAC,OAAO;AACvJ,QAAQ,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;AACvC,YAAY,IAAI,GAAG,CAAC,IAAI;AACxB,cAAc,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACvG,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AAChD,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC;AAC9D,QAAQ,IAAI,CAAC/F,YAAU,CAAC,YAAY,CAAC,IAAI,CAACA,YAAU,CAAC,SAAS,CAAC,EAAE;AACjE,YAAY,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE;AAC/D,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzE,YAAY,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACnD,QAAQ;AACR,QAAQ,OAAO,GAAG,CAAC,QAAQ,EAAE;AAC7B,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE;AAClC,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;AACnE,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE;AACjC,YAAY,MAAM,IAAI,CAAC,WAAW,EAAE;AACpC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;AACtD,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AACrD,IAAI;AACJ,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AACtD,IAAI;AACJ,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;AACvB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;AACvD,IAAI;AACJ,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACjE,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;AAC5C,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ,IAAI,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,EAAE;AAC9C,QAAQ,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;AAC3F,IAAI;AACJ,IAAI,MAAM,WAAW,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE;AAC3E,QAAQ,MAAM,OAAO,GAAG,MAAM,YAAY;AAC1C,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;AAChE,QAAQ,IAAI,gBAAgB,IAAI,IAAI,EAAE;AACtC,YAAY,gBAAgB,GAAG,UAAU;AACzC,QAAQ;AACR,QAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC1C,QAAQ,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACvE,YAAY,UAAU,EAAE,UAAU,GAAG,gBAAgB;AACrD,SAAS,CAAC;AACV,QAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AACxD;AACA,QAAQ,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACrG,QAAQ,MAAM,WAAW,GAAG,mBAAmB,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;AACxG,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AACpC,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;AACxF,YAAY,mBAAmB;AAC/B,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;AAClC,YAAY,GAAG;AACf,YAAY,OAAO;AACnB,YAAY,OAAO,EAAE,GAAG,CAAC,OAAO;AAChC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AACrC,YAAY,MAAM,IAAIkG,iBAAwB,EAAE;AAChD,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;AACnE,QAAQ,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE;AAChD,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;AAC7G,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;AACtC,QAAQ,IAAI,QAAQ,YAAY,UAAU,CAAC,KAAK,EAAE;AAClD,YAAY,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,mBAAmB,CAAC;AACnF,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AACzC,gBAAgB,MAAM,IAAIA,iBAAwB,EAAE;AACpD,YAAY;AACZ;AACA;AACA;AACA;AACA,YAAY,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC;AACpD,gBAAgB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G,YAAY,IAAI,gBAAgB,EAAE;AAClC,gBAAgB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AAC5H,gBAAgB,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACnJ,oBAAoB,mBAAmB;AACvC,oBAAoB,GAAG;AACvB,oBAAoB,UAAU,EAAE,WAAW,GAAG,SAAS;AACvD,oBAAoB,OAAO,EAAE,QAAQ,CAAC,OAAO;AAC7C,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,IAAI,YAAY,CAAC;AACxG,YAAY;AACZ,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC,8BAA8B,CAAC,CAAC;AACpI,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC,8BAA8B,CAAC,EAAE,oBAAoB,CAAC;AAC3J,gBAAgB,mBAAmB;AACnC,gBAAgB,GAAG;AACnB,gBAAgB,UAAU,EAAE,WAAW,GAAG,SAAS;AACnD,gBAAgB,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzC,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,QAAQ,YAAY,UAAU,IAAI,QAAQ,YAAY,yBAAyB,EAAE;AACjG,gBAAgB,MAAM,QAAQ;AAC9B,YAAY;AACZ,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,MAAM,IAAIC,yBAAgC,EAAE;AAC5D,YAAY;AACZ,YAAY,MAAM,IAAIC,kBAAyB,CAAC;AAChD,gBAAgB,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC;AAC5D,gBAAgB,KAAK,EAAE,QAAQ;AAC/B,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AAC7D,aAAa,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,cAAc;AACvD,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC9E,aAAa,IAAI,CAAC,EAAE,CAAC;AACrB,QAAQ,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,WAAW,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;AAC3M,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,YAAY,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;AACvC,gBAAgB,IAAI,CAAC,qBAAqB;AAC1C,gBAAgB,QAAQ,CAAC,UAAU;AACnC,gBAAgB,CAAC,OAAO,CAAC,UAAU,GAAG,kBAAkB,CAAC;AACzD,gBAAgB,CAAC,OAAO,CAAC,UAAU,GAAG,gCAAgC,CAAC,EAAE;AACzE,gBAAgB,MAAMC,oBAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/D,gBAAgB,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE;AAC5D,gBAAgB,OAAO,IAAI,CAAC,WAAW,CAAC;AACxC,oBAAoB,GAAG,OAAO;AAC9B,oBAAoB,UAAU,EAAE;AAChC,wBAAwB,GAAG,OAAO,CAAC,UAAU;AAC7C,wBAAwB,8BAA8B,EAAE,IAAI;AAC5D,qBAAqB;AACrB,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,IAAI,YAAY,CAAC;AACzE,YAAY;AACZ,YAAY,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAChE,YAAY,IAAI,gBAAgB,IAAI,WAAW,EAAE;AACjD,gBAAgB,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,mBAAmB,CAAC;AACvF;AACA,gBAAgB,MAAMA,oBAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/D,gBAAgB,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AACzE,gBAAgB,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACjH,oBAAoB,mBAAmB;AACvC,oBAAoB,GAAG,EAAE,QAAQ,CAAC,GAAG;AACrC,oBAAoB,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC3C,oBAAoB,OAAO,EAAE,QAAQ,CAAC,OAAO;AAC7C,oBAAoB,UAAU,EAAE,WAAW,GAAG,SAAS;AACvD,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,IAAI,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC1H,YAAY;AACZ,YAAY,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,2BAA2B,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACrG,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AACrE,YAAY,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC1F,YAAY,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC7C,YAAY,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO;AAC5D,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC;AAC7G,gBAAgB,mBAAmB;AACnC,gBAAgB,GAAG,EAAE,QAAQ,CAAC,GAAG;AACjC,gBAAgB,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvC,gBAAgB,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzC,gBAAgB,OAAO,EAAE,UAAU;AACnC,gBAAgB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;AAClD,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC;AACpG,YAAY,MAAM,GAAG;AACrB,QAAQ;AACR,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;AACvF,YAAY,mBAAmB;AAC/B,YAAY,GAAG,EAAE,QAAQ,CAAC,GAAG;AAC7B,YAAY,MAAM,EAAE,QAAQ,CAAC,MAAM;AACnC,YAAY,OAAO,EAAE,QAAQ,CAAC,OAAO;AACrC,YAAY,UAAU,EAAE,WAAW,GAAG,SAAS;AAC/C,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE;AAC9F,IAAI;AACJ,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,MAAM,IAAI,IAAI;AAC/D,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AAClE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AAC/C,IAAI;AACJ,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;AAClC,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;AAClE,QAAQ,OAAO,IAAIC,WAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG;AAClE,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,eAAe,EAAE,IAAI;AAC7B,KAAK,EAAE;AACP,QAAQ,IAAI,IAAI,CAAC,qBAAqB,IAAI,OAAO,CAAC,UAAU,EAAE;AAC9D,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO;AACxC,YAAY,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAC3D,YAAY,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,CAAC,OAAO,EAAE,qCAAqC,CAAC,CAAC,EAAE;AACjG,gBAAgB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE;AACzE,gBAAgB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC;AACpF,QAAQ,OAAO,QAAQ;AACvB,IAAI;AACJ,IAAI,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE;AACtD,QAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE;AACzD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACjD,QAAQ,IAAI,MAAM;AAClB,YAAY,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACnE,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C,QAAQ,MAAM,cAAc,GAAG,CAAC,UAAU,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,YAAY,UAAU,CAAC,cAAc;AAC9G,aAAa,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;AAC/G,QAAQ,MAAM,YAAY,GAAG;AAC7B,YAAY,MAAM,EAAE,UAAU,CAAC,MAAM;AACrC,YAAY,IAAI,cAAc,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AACzD,YAAY,MAAM,EAAE,KAAK;AACzB,YAAY,GAAG,OAAO;AACtB,SAAS;AACT,QAAQ,IAAI,MAAM,EAAE;AACpB;AACA;AACA,YAAY,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;AACtD,QAAQ;AACR,QAAQ,IAAI;AACZ;AACA,YAAY,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC;AACtE,QAAQ;AACR,gBAAgB;AAChB,YAAY,YAAY,CAAC,OAAO,CAAC;AACjC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE;AAChC;AACA,QAAQ,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACxE;AACA,QAAQ,IAAI,iBAAiB,KAAK,MAAM;AACxC,YAAY,OAAO,IAAI;AACvB,QAAQ,IAAI,iBAAiB,KAAK,OAAO;AACzC,YAAY,OAAO,KAAK;AACxB;AACA,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;AACnC,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;AACnC,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;AACnC,YAAY,OAAO,IAAI;AACvB;AACA,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;AAClC,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE;AACjF,QAAQ,IAAI,aAAa;AACzB;AACA,QAAQ,MAAM,sBAAsB,GAAG,eAAe,EAAE,GAAG,CAAC,gBAAgB,CAAC;AAC7E,QAAQ,IAAI,sBAAsB,EAAE;AACpC,YAAY,MAAM,SAAS,GAAG,UAAU,CAAC,sBAAsB,CAAC;AAChE,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAC1C,gBAAgB,aAAa,GAAG,SAAS;AACzC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,gBAAgB,GAAG,eAAe,EAAE,GAAG,CAAC,aAAa,CAAC;AACpE,QAAQ,IAAI,gBAAgB,IAAI,CAAC,aAAa,EAAE;AAChD,YAAY,MAAM,cAAc,GAAG,UAAU,CAAC,gBAAgB,CAAC;AAC/D,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC/C,gBAAgB,aAAa,GAAG,cAAc,GAAG,IAAI;AACrD,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACzE,YAAY;AACZ,QAAQ;AACR;AACA;AACA,QAAQ,IAAI,aAAa,KAAK,SAAS,EAAE;AACzC,YAAY,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;AACpE,YAAY,aAAa,GAAG,IAAI,CAAC,kCAAkC,CAAC,gBAAgB,EAAE,UAAU,CAAC;AACjG,QAAQ;AACR,QAAQ,MAAM,KAAK,CAAC,aAAa,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,CAAC,EAAE,YAAY,CAAC;AAC5E,IAAI;AACJ,IAAI,kCAAkC,CAAC,gBAAgB,EAAE,UAAU,EAAE;AACrE,QAAQ,MAAM,iBAAiB,GAAG,GAAG;AACrC,QAAQ,MAAM,aAAa,GAAG,GAAG;AACjC,QAAQ,MAAM,UAAU,GAAG,UAAU,GAAG,gBAAgB;AACxD;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC;AACjG;AACA,QAAQ,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI;AAC/C,QAAQ,OAAO,YAAY,GAAG,MAAM,GAAG,IAAI;AAC3C,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,YAAY,EAAE,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE;AAC9D,QAAQ,MAAM,OAAO,GAAG,EAAE,GAAG,YAAY,EAAE;AAC3C,QAAQ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO;AAC/D,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC;AAC9D,QAAQ,IAAI,SAAS,IAAI,OAAO;AAChC,YAAY,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;AAC/D,QAAQ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;AACzD,QAAQ,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;AAClF,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,YAAY,CAAC,UAAU,GAAG;AACtC,gBAAgB,GAAG,YAAY,CAAC,UAAU;AAC1C,gBAAgB,gBAAgB,EAAE,IAAI;AACtC,aAAa;AACb,QAAQ;AACR,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC9G,QAAQ,MAAM,GAAG,GAAG;AACpB,YAAY,MAAM;AAClB,YAAY,OAAO,EAAE,UAAU;AAC/B,YAAY,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAC7D,YAAY,IAAI,UAAU,CAAC,cAAc;AACzC,gBAAgB,IAAI,YAAY,UAAU,CAAC,cAAc,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAChF,YAAY,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;AACjC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;AACxC,YAAY,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;AACrD,IAAI;AACJ,IAAI,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,GAAG,EAAE;AACtE,QAAQ,IAAI,kBAAkB,GAAG,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,IAAI,MAAM,KAAK,KAAK,EAAE;AACxD,YAAY,IAAI,CAAC,OAAO,CAAC,cAAc;AACvC,gBAAgB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACrE,YAAY,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,cAAc;AAC/E,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,YAAY,CAAC;AACrC,YAAY,kBAAkB;AAC9B,YAAY;AACZ,gBAAgB,MAAM,EAAE,kBAAkB;AAC1C,gBAAgB,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjD,gBAAgB,yBAAyB,EAAE,MAAM,CAAC,UAAU,CAAC;AAC7D,gBAAgB,IAAI,OAAO,CAAC,OAAO,GAAG,EAAE,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;AACjH,gBAAgB,GAAG,kBAAkB,EAAE;AACvC,gBAAgB,qBAAqB,EAAE,IAAI,CAAC,YAAY;AACxD,gBAAgB,gBAAgB,EAAE,IAAI,CAAC,OAAO;AAC9C,aAAa;AACb,YAAY,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACvF,YAAY,IAAI,CAAC,QAAQ,CAAC,cAAc;AACxC,YAAY,WAAW;AACvB,YAAY,OAAO,CAAC,OAAO;AAC3B,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACjF,QAAQ,OAAO,OAAO,CAAC,MAAM;AAC7B,IAAI;AACJ,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B;AACA;AACA,QAAQ,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE;AACvC,IAAI;AACJ,IAAI,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;AAC1D,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE;AACtF,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAClD,QAAQ,MAAM,gBAAgB,GAAG,OAAO,UAAU,CAAC,cAAc,KAAK,WAAW;AACjF,YAAY,IAAI,YAAY,UAAU,CAAC,cAAc;AACrD,QAAQ,MAAM,eAAe,GAAG,CAAC,gBAAgB;AACjD,aAAa,OAAO,IAAI,KAAK,QAAQ;AACrC,gBAAgB,IAAI,YAAY,WAAW;AAC3C,gBAAgB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;AACxC,iBAAiB,OAAO,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,YAAY,UAAU,CAAC,IAAI,CAAC;AAC3F,gBAAgB,IAAI,YAAY,eAAe;AAC/C,gBAAgB,IAAI,YAAY,QAAQ,CAAC;AACzC,QAAQ;AACR;AACA,QAAQ,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,YAAY,IAAI,YAAY,WAAW;AACvC,YAAY,IAAI,YAAY,QAAQ;AACpC,aAAa,OAAO,IAAI,KAAK,QAAQ;AACrC;AACA,gBAAgB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACnD;AACA,aAAa,UAAU,CAAC,IAAI,IAAI,IAAI,YAAY,UAAU,CAAC,IAAI,CAAC;AAChE;AACA,YAAY,IAAI,YAAY,QAAQ;AACpC;AACA,YAAY,IAAI,YAAY,eAAe;AAC3C;AACA,YAAY,gBAAgB,EAAE;AAC9B,YAAY,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,eAAe,EAAE;AAC5F,QAAQ;AACR,aAAa,IAAI,OAAO,IAAI,KAAK,QAAQ;AACzC,aAAa,MAAM,CAAC,aAAa,IAAI,IAAI;AACzC,iBAAiB,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,EAAE;AACjG,YAAY,OAAO;AACnB,gBAAgB,WAAW,EAAE,SAAS;AACtC,gBAAgB,IAAI,EAAEC,kBAAwB,CAAC,IAAI,CAAC;AACpD,gBAAgB,eAAe,EAAE,IAAI;AACrC,aAAa;AACb,QAAQ;AACR,aAAa,IAAI,OAAO,IAAI,KAAK,QAAQ;AACzC,YAAY,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,mCAAmC,EAAE;AACxF,YAAY,OAAO;AACnB,gBAAgB,WAAW,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;AACpF,gBAAgB,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC/C,gBAAgB,eAAe,EAAE,KAAK;AACtC,aAAa;AACb,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,EAAE,GAAG,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE;AAClI,QAAQ;AACR,IAAI;AACJ;AACA7D,IAAE,GAAG,MAAM,EAAE,eAAe,GAAG,IAAI,OAAO,EAAE,EAAE,iBAAiB,GAAG,IAAI,OAAO,EAAE,EAAE,yBAAyB,GAAG,SAAS,yBAAyB,GAAG;AAClJ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,2BAA2B;AACvD,CAAC;AACD,MAAM,CAAC,MAAM,GAAGA,IAAE;AAClB,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,WAAW,GAAGqD,WAAkB;AACvC,MAAM,CAAC,QAAQ,GAAGE,QAAe;AACjC,MAAM,CAAC,kBAAkB,GAAGG,kBAAyB;AACrD,MAAM,CAAC,yBAAyB,GAAGD,yBAAgC;AACnE,MAAM,CAAC,iBAAiB,GAAGD,iBAAwB;AACnD,MAAM,CAAC,aAAa,GAAGM,aAAoB;AAC3C,MAAM,CAAC,aAAa,GAAGC,aAAoB;AAC3C,MAAM,CAAC,cAAc,GAAGC,cAAqB;AAC7C,MAAM,CAAC,eAAe,GAAGC,eAAsB;AAC/C,MAAM,CAAC,mBAAmB,GAAGC,mBAA0B;AACvD,MAAM,CAAC,mBAAmB,GAAGC,mBAA0B;AACvD,MAAM,CAAC,qBAAqB,GAAGC,qBAA4B;AAC3D,MAAM,CAAC,wBAAwB,GAAGC,wBAA+B;AACjE,MAAM,CAAC,4BAA4B,GAAGC,4BAAmC;AACzE,MAAM,CAAC,MAAM,GAAGC,MAAc;AAC9B,MAAM,CAAC,WAAW,GAAG,WAAW;AAChC,MAAM,CAAC,IAAI,GAAG,IAAI;AAClB,MAAM,CAAC,UAAU,GAAG,UAAU;AAC9B,MAAM,CAAC,KAAK,GAAG/D,OAAK;AACpB,MAAM,CAAC,MAAM,GAAG,MAAM;AACtB,MAAM,CAAC,KAAK,GAAG,KAAK;AACpB,MAAM,CAAC,WAAW,GAAG,WAAW;AAChC,MAAM,CAAC,MAAM,GAAG,MAAM;AACtB,MAAM,CAAC,UAAU,GAAG,UAAU;AAC9B,MAAM,CAAC,OAAO,GAAG,OAAO;AACxB,MAAM,CAAC,YAAY,GAAG,YAAY;AAClC,MAAM,CAAC,QAAQ,GAAG,QAAQ;AAC1B,MAAM,CAAC,IAAI,GAAG,IAAI;AAClB,MAAM,CAAC,OAAO,GAAG,OAAO;AACxB,MAAM,CAAC,OAAO,GAAGgE,OAAiB;AAClC,MAAM,CAAC,KAAK,GAAG,KAAK;AACpB,MAAM,CAAC,SAAS,GAAG,SAAS;AAC5B,MAAM,CAAC,QAAQ,GAAG,QAAQ;AAC1B,MAAM,CAAC,aAAa,GAAG,aAAa;AACpC,MAAM,CAAC,KAAK,GAAG,KAAK;AACpB,MAAM,CAAC,UAAU,GAAG,UAAU;AAC9B,MAAM,CAAC,MAAM,GAAG,MAAM;AACtB,MAAM,CAAC,MAAM,GAAG,MAAM;AACtB,SAAS,yBAAyB,CAAC,KAAK,EAAE;AAC1C,IAAI,IAAI,sCAAsC,CAAC,KAAK,CAAC,EAAE;AACvD,QAAQ,OAAO,CAAC,qWAAqW,CAAC;AACtX,IAAI;AACJ,IAAI,OAAO,SAAS;AACpB;AACA,SAAS,sCAAsC,CAAC,KAAK,EAAE;AACvD,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC1E,QAAQ,MAAM,GAAG,GAAG,OAAO;AAC3B,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAqB;AAC9C,YAAY,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;AAC3C,YAAY,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE;AACnE,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,QAAQ,OAAO,GAAG,GAAG,CAAC,KAAK;AAC3B,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;;AC9tBO,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC;AACrF,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;AACzC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5D,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAI,OAAO,MAAM;AACjB;;ACnBA,IAAI,EAAE;AAGC,MAAM,YAAY,CAAC;AAC1B,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE;AAC/B,IAAI;AACJ,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE;AAC1B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AACnC,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE;AAC9D,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;AAC5C,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAE;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE;AAC/B,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1C,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE;AAC9D,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACvC,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAChC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,GAAG,CAAC,MAAM,EAAE;AAChB;AACA;AACA,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;AACpC,QAAQ,IAAI,CAAC,EAAE;AACf,YAAY,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AACjD,YAAY,OAAO,EAAE,CAAC,EAAE,CAAC;AACzB,YAAY,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACzD,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS;AACxD,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAI;AACJ,IAAI,GAAG,CAAC,MAAM,EAAE;AAChB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,IAAI;AACJ;AACA;AACO,SAAS,QAAQ,GAAG;AAC3B,IAAI,OAAO,IAAI,YAAY,EAAE;AAC7B;AACA,CAAC,EAAE,GAAG,UAAU,EAAE,oBAAoB,KAAK,EAAE,CAAC,oBAAoB,GAAG,QAAQ,EAAE,CAAC;AACzE,MAAM,cAAc,GAAG,UAAU,CAAC,oBAAoB;;ACjD7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,MAAM,EAAE;AAC1C;AACA,IAAI,IAAI,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,eAAe;AAClD,IAAI,IAAI,MAAM,KAAK,SAAS;AAC5B,QAAQ,MAAM,GAAG,UAAU;AAC3B,IAAI,IAAI,MAAM,KAAK,SAAS;AAC5B,QAAQ,MAAM,GAAG,UAAU;AAC3B,IAAI,OAAO;AACX,QAAQ,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;AAC3C,QAAQ,gBAAgB,EAAE,MAAM,EAAE,QAAQ,IAAI,cAAc;AAC5D,QAAQ,MAAM;AACd,QAAQ,eAAe,EAAE,MAAM,EAAE,eAAe,IAAI,OAAO;AAC3D,QAAQ,QAAQ,EAAE,MAAM,EAAE,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;AACjD,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,QAAQ;AAClC,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,IAAI,EAAE,IAAI,GAAG,EAAE;AACvB,QAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK;AACvC,QAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ;AAC1C,QAAQ,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,SAAS;AAC/C,KAAK;AACL;AACO,SAASC,SAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE;AAC7E,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B;AACA,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,IAAI,EAAE;AACd,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3D,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI;AACrC,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B,IAAI;AACJ;AACA,IAAI,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;AACjF,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AAChC;AACA,IAAI,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI;AACvD,IAAI,IAAI,cAAc,EAAE;AACxB,QAAQ,MAAM,CAAC,MAAM,GAAG,cAAc;AACtC,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,GAAG,OAAO;AACtB,YAAY,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;AACvD,YAAY,IAAI,EAAE,OAAO,CAAC,IAAI;AAC9B,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3C,YAAY,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AACrE,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM;AACvC,YAAY,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACtD,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,oDAAoD,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,YAAY;AACZ,YAAY,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;AACjD,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;AACzC,QAAQ,IAAI,MAAM,EAAE;AACpB;AACA,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG;AAC3B,gBAAgB,MAAM,CAAC,GAAG,GAAG,MAAM;AACnC,YAAYA,SAAO,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC;AACxC,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,IAAI;AAChD,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;AACjD,IAAI,IAAI,IAAI;AACZ,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1C,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;AACtD;AACA,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ;AACrC,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO;AACpC,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM;AAC1D,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9E,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS;AAClC;AACA,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACxC,IAAI,OAAO,OAAO,CAAC,MAAM;AACzB;AACO,SAAS,WAAW,CAAC,GAAG,EAAE;AACjC;AACA,EAAE;AACF;AACA,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI;AACb,QAAQ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;AACpE;AACA,IAAI,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE;AAChC,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5C,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACzD,QAAQ,IAAI,EAAE,EAAE;AAChB,YAAY,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/C,YAAY,IAAI,QAAQ,IAAI,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;AACnD,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC,iHAAiH,CAAC,CAAC;AAC9K,YAAY;AACZ,YAAY,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ;AACR,IAAI;AACJ;AACA;AACA,IAAI,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC/B;AACA;AACA;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,KAAK,eAAe,GAAG,OAAO,GAAG,aAAa;AACpF,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE;AAC1B,YAAY,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACvE;AACA,YAAY,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AACjE,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE;AACxD,YAAY;AACZ;AACA,YAAY,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACvF,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AAChC,YAAY,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC1F,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC/B,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE;AAC/B,QAAQ;AACR;AACA,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,YAAY,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3D,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACtE,QAAQ,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,GAAG,KAAK,EAAE;AACnD,IAAI,CAAC;AACL;AACA;AACA,IAAI,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK;AACpC;AACA,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAClC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;AAC7C,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AACrC;AACA;AACA,QAAQ,IAAI,KAAK;AACjB,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK;AAC9B;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAClC,QAAQ,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAClC,YAAY,OAAO,MAAM,CAAC,GAAG,CAAC;AAC9B,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,GAAG,GAAG;AACzB,IAAI,CAAC;AACL;AACA;AACA,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE;AAChC,QAAQ,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAChD,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE;AAC5B,gBAAgB,MAAM,IAAI,KAAK,CAAC,kBAAkB;AAClD,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACvD,oBAAoB,kFAAkF,CAAC;AACvG,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5C,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7B;AACA,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;AACjC,YAAY,YAAY,CAAC,KAAK,CAAC,CAAC;AAChC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE;AAC1B,YAAY,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/D,YAAY,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;AAC5C,gBAAgB,YAAY,CAAC,KAAK,CAAC;AACnC,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACzD,QAAQ,IAAI,EAAE,EAAE;AAChB,YAAY,YAAY,CAAC,KAAK,CAAC;AAC/B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;AACxB;AACA,YAAY,YAAY,CAAC,KAAK,CAAC;AAC/B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5B,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE;AACtC,gBAAgB,YAAY,CAAC,KAAK,CAAC;AACnC;AACA,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACO,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;AACtC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI;AACb,QAAQ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;AACpE;AACA,IAAI,MAAM,UAAU,GAAG,CAAC,SAAS,KAAK;AACtC,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5C;AACA,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;AAC7B,YAAY;AACZ,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM;AAC9C,QAAQ,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE;AACrC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACxB,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,UAAU,CAAC,GAAG,CAAC;AAC3B,YAAY,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7C,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM;AAC5C;AACA,YAAY,IAAI,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,CAAC,EAAE;AAC5H;AACA,gBAAgB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;AACjD,gBAAgB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5C,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;AAChD,YAAY;AACZ;AACA,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1C,YAAY,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,GAAG;AAC7D;AACA,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAC1C,oBAAoB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;AACzD,wBAAwB;AACxB,oBAAoB,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE;AAC3C,wBAAwB,OAAO,MAAM,CAAC,GAAG,CAAC;AAC1C,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ;AACA,YAAY,IAAI,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE;AAC/C,gBAAgB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAC1C,oBAAoB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;AACzD,wBAAwB;AACxB,oBAAoB,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAChH,wBAAwB,OAAO,MAAM,CAAC,GAAG,CAAC;AAC1C,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR;AACA;AACA;AACA,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM;AAC5C,QAAQ,IAAI,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE;AACtC;AACA,YAAY,UAAU,CAAC,MAAM,CAAC;AAC9B,YAAY,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACnD,YAAY,IAAI,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;AACzC,gBAAgB,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI;AACpD;AACA,gBAAgB,IAAI,UAAU,CAAC,GAAG,EAAE;AACpC,oBAAoB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AAC9C,wBAAwB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;AAC7D,4BAA4B;AAC5B,wBAAwB,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1H,4BAA4B,OAAO,MAAM,CAAC,GAAG,CAAC;AAC9C,wBAAwB;AACxB,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,GAAG,CAAC,QAAQ,CAAC;AACrB,YAAY,SAAS,EAAE,SAAS;AAChC,YAAY,UAAU,EAAE,MAAM;AAC9B,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;AACjC,SAAS,CAAC;AACV,IAAI,CAAC;AACL,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;AAC3D,QAAQ,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,eAAe,EAAE;AACxC,QAAQ,MAAM,CAAC,OAAO,GAAG,8CAA8C;AACvE,IAAI;AACJ,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;AACxC,QAAQ,MAAM,CAAC,OAAO,GAAG,yCAAyC;AAClE,IAAI;AACJ,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;AACxC,QAAQ,MAAM,CAAC,OAAO,GAAG,yCAAyC;AAClE,IAAI;AACJ,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE;AAG3C,SAAS;AAGT,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;AAC3B,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;AACxD,QAAQ,IAAI,CAAC,EAAE;AACf,YAAY,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AACjE,QAAQ,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AACzC,IAAI;AACJ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;AAClD;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE;AAC3D,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU;AAC5D,QAAQ,OAAO,MAAM,CAAC,EAAE;AACxB;AACA,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE;AACzC,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5C,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;AACpC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK;AAC1C,gBAAgB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;AAClC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG;AACvC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE;AAEtB,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,eAAe,EAAE;AAChD,gBAAgB,MAAM,CAAC,KAAK,GAAG,IAAI;AACnC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,WAAW,GAAG,IAAI;AACzC,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI;AACR;AACA;AACA;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAQ,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE;AACtD,YAAY,KAAK,EAAE;AACnB,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,KAAK,EAAE,8BAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;AAC1F,oBAAoB,MAAM,EAAE,8BAA8B,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC;AAC5F,iBAAiB;AACjB,aAAa;AACb,YAAY,UAAU,EAAE,KAAK;AAC7B,YAAY,QAAQ,EAAE,KAAK;AAC3B,SAAS,CAAC;AACV,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAC3D,IAAI;AACJ;AACA,SAAS,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE;AACvC,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE;AAC3C,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,QAAQ,OAAO,KAAK;AACpB,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG;AAChC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;AAChC,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;AAC5B,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AAC/C,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK;AAC1B,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC;AACjD,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;AAC3B,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;AAChD,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;AAC9B,QAAQ,GAAG,CAAC,IAAI,KAAK,UAAU;AAC/B,QAAQ,GAAG,CAAC,IAAI,KAAK,aAAa;AAClC,QAAQ,GAAG,CAAC,IAAI,KAAK,UAAU;AAC/B,QAAQ,GAAG,CAAC,IAAI,KAAK,UAAU;AAC/B,QAAQ,GAAG,CAAC,IAAI,KAAK,SAAS;AAC9B,QAAQ,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;AACjC,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC;AACjD,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE;AACrC,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;AAC9E,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;AACrD,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC;AACrF,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;AAC7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AAChD,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC1E,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/B,QAAQ,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;AACrC,YAAY,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;AACnD,gBAAgB,OAAO,IAAI;AAC3B,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AAC9B,QAAQ,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;AAC1C,YAAY,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC;AAC3C,gBAAgB,OAAO,IAAI;AAC3B,QAAQ;AACR,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AAC9B,QAAQ,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE;AACtC,YAAY,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC;AACzC,gBAAgB,OAAO,IAAI;AAC3B,QAAQ;AACR,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AACrD,YAAY,OAAO,IAAI;AACvB,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AAWO,MAAM,8BAA8B,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,EAAE,KAAK,CAAC,MAAM,KAAK;AAC3F,IAAI,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE;AACnD,IAAI,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,IAAI,cAAc,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;AACxF,IAAIA,SAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACxB,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;AAC5B,IAAI,OAAO,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAChC,CAAC;;AC7bD,MAAM,SAAS,GAAG;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,QAAQ,EAAE,WAAW;AACzB,IAAI,WAAW,EAAE,aAAa;AAC9B,IAAI,KAAK,EAAE,EAAE;AACb,CAAC;AACD;AACO,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AAChE,IAAI,MAAM,IAAI,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;AACxB,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;AAC3E,SAAS,GAAG;AACZ,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;AACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO;AAChC,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;AACnC,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO;AAChC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,QAAQ,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM;AACjD,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE;AAC9B,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC;AAC/B;AACA;AACA,QAAQ,IAAI,MAAM,KAAK,MAAM,EAAE;AAC/B,YAAY,OAAO,IAAI,CAAC,MAAM;AAC9B,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,eAAe;AACvB,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACvC,QAAQ,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC;AACrC,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAChC,YAAY,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM;AAC5C,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAY,IAAI,CAAC,KAAK,GAAG;AACzB,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAC3C,oBAAoB,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK;AACjG,0BAA0B,EAAE,IAAI,EAAE,QAAQ;AAC1C,0BAA0B,EAAE,CAAC;AAC7B,oBAAoB,OAAO,EAAE,KAAK,CAAC,MAAM;AACzC,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,CAAC;AACM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AAChE,IAAI,MAAM,IAAI,GAAG,KAAK;AACtB,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AACxG,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5D,QAAQ,IAAI,CAAC,IAAI,GAAG,SAAS;AAC7B;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ;AAC5B;AACA,IAAI,MAAM,KAAK,GAAG,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,KAAK,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC;AACnH,IAAI,MAAM,KAAK,GAAG,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,KAAK,OAAO,IAAI,MAAM,CAAC,iBAAiB,CAAC;AACnH,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa;AAC5E,IAAI,IAAI,KAAK,EAAE;AACf,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,OAAO,GAAG,gBAAgB;AAC3C,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACxC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AACpD,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,IAAI;AACJ,IAAI,IAAI,KAAK,EAAE;AACf,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,OAAO,GAAG,gBAAgB;AAC3C,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACxC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AACpD,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,IAAI;AACJ,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;AACtC,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK;AAClE,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS;AACzB,CAAC;AACM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AACjE,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AACtE,IAAI;AACJ,CAAC;AACM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AACjE,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AACvE,IAAI;AACJ,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,KAAK;AAC9D,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE;AACtC,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ;AAC5B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC;AAC1B,IAAI;AACJ,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM;AAC1B,IAAI;AACJ,CAAC;AACM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AACpE,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AACzE,IAAI;AACJ,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AAC/D,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;AACpE,IAAI;AACJ,CAAC;AACM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK;AAChE,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE;AACjB,CAAC;AACM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK;AAC/D;AACA,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,KAAK;AACnE;AACA,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AAC/D,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;AACpE,IAAI;AACJ,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK;AAC9D,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7C;AACA,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC;AAClD,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ;AAC5B,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC;AAClD,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ;AAC5B,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM;AACtB,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,KAAK;AAChE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,MAAM,IAAI,GAAG,EAAE;AACnB,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE;AAClC,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;AAC/B,YAAY,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACjD,gBAAgB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;AAC3F,YAAY;AAIZ,QAAQ;AACR,aAAa,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC1C,YAAY,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACjD,gBAAgB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;AACvF,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAG3B,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG;AACtD,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE;AACvE,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;AAC7B,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,GAAG,GAAG;AAC5B,QAAQ;AACR,IAAI;AACJ,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC;AACpD,YAAY,IAAI,CAAC,IAAI,GAAG,QAAQ;AAChC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC;AACpD,YAAY,IAAI,CAAC,IAAI,GAAG,QAAQ;AAChC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,SAAS,CAAC;AACrD,YAAY,IAAI,CAAC,IAAI,GAAG,SAAS;AACjC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AACzC,YAAY,IAAI,CAAC,IAAI,GAAG,MAAM;AAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,IAAI;AACJ,CAAC;AACM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AAC9D,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AACnE,IAAI;AACJ,CAAC;AACM,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK;AACzE,IAAI,MAAM,KAAK,GAAG,IAAI;AACtB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO;AACvC,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAChE,IAAI,KAAK,CAAC,IAAI,GAAG,QAAQ;AACzB,IAAI,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM;AAClC,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK;AAC9D,IAAI,MAAM,KAAK,GAAG,IAAI;AACtB,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,MAAM,EAAE,QAAQ;AACxB,QAAQ,eAAe,EAAE,QAAQ;AACjC,KAAK;AACL,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AACtD,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO;AAChC,IAAI,IAAI,OAAO,KAAK,SAAS;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO;AAChC,IAAI,IAAI,IAAI,EAAE;AACd,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC;AAC3C,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;AACtC,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACvC,YAAY,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,QAAQ;AACR,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;AAClC,IAAI;AACJ,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,KAAK;AAClE,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS;AACzB,CAAC;AACM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AACjE,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;AAC5E,IAAI;AACJ,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AACnE,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC9E,IAAI;AACJ,CAAC;AACM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AACpE,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;AAC1E,IAAI;AACJ,CAAC;AACM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AAC9D,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AACnE,IAAI;AACJ,CAAC;AACM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,KAAK;AAC9D,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;AACnE,IAAI;AACJ,CAAC;AACD;AACO,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AAC9D,IAAI,MAAM,IAAI,GAAG,KAAK;AACtB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAChD,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO;AACvB,IAAI,IAAI,CAAC,KAAK,GAAGA,SAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;AAC3C,QAAQ,GAAG,MAAM;AACjB,QAAQ,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;AACvC,KAAK,CAAC;AACN,CAAC;AACM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AAC/D,IAAI,MAAM,IAAI,GAAG,KAAK;AACtB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;AACxB,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE;AACxB,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK;AAC3B,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAGA,SAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;AACxD,YAAY,GAAG,MAAM;AACrB,YAAY,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC;AACrD,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAI,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AAC9D,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI;AACrC,QAAQ,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,EAAE;AAChC,YAAY,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS;AACxC,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS;AACzC,QAAQ;AACR,IAAI,CAAC,CAAC,CAAC;AACP,IAAI,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;AAChD,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AACjD;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACzC,IAAI;AACJ,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC5B;AACA,QAAQ,IAAI,GAAG,CAAC,EAAE,KAAK,QAAQ;AAC/B,YAAY,IAAI,CAAC,oBAAoB,GAAG,KAAK;AAC7C,IAAI;AACJ,SAAS,IAAI,GAAG,CAAC,QAAQ,EAAE;AAC3B,QAAQ,IAAI,CAAC,oBAAoB,GAAGA,SAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;AAC/D,YAAY,GAAG,MAAM;AACrB,YAAY,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC;AAC1D,SAAS,CAAC;AACV,IAAI;AACJ,CAAC;AACM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK;AAC7D,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B;AACA;AACA,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,KAAK,KAAK;AAC/C,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAKA,SAAO,CAAC,CAAC,EAAE,GAAG,EAAE;AAC9D,QAAQ,GAAG,MAAM;AACjB,QAAQ,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,EAAE,CAAC,CAAC;AAClE,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO;AAC5B,IAAI;AACJ,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO;AAC5B,IAAI;AACJ,CAAC;AACM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK;AACpE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,MAAM,CAAC,GAAGA,SAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;AACrC,QAAQ,GAAG,MAAM;AACjB,QAAQ,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1C,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,GAAGA,SAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE;AACtC,QAAQ,GAAG,MAAM;AACjB,QAAQ,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1C,KAAK,CAAC;AACN,IAAI,MAAM,oBAAoB,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;AACzF,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,QAAQ,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,CAAC;AACM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AAC9D,IAAI,MAAM,IAAI,GAAG,KAAK;AACtB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO;AACvB,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,KAAK,eAAe,GAAG,aAAa,GAAG,OAAO;AAC/E,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,KAAK,eAAe,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,KAAK,aAAa,GAAG,OAAO,GAAG,iBAAiB;AAC1H,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAKA,SAAO,CAAC,CAAC,EAAE,GAAG,EAAE;AAChE,QAAQ,GAAG,MAAM;AACjB,QAAQ,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAC7C,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC;AACrB,UAAUA,SAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE;AACjC,YAAY,GAAG,MAAM;AACrB,YAAY,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACzG,SAAS;AACT,UAAU,IAAI;AACd,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,eAAe,EAAE;AACxC,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI;AAC7B,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE;AAC3C,QAAQ,IAAI,CAAC,KAAK,GAAG;AACrB,YAAY,KAAK,EAAE,WAAW;AAC9B,SAAS;AACT,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM;AAC1C,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM;AAC9C,QAAQ;AACR,IAAI;AACJ,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW;AAChC,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI;AACvC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAChD,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B,CAAC;AACM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AAC/D,IAAI,MAAM,IAAI,GAAG,KAAK;AACtB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;AACxB;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO;AAC/B,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG;AACnC,IAAI,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ;AACrC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AAC/D;AACA,QAAQ,MAAM,WAAW,GAAGA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;AACxD,YAAY,GAAG,MAAM;AACrB,YAAY,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,CAAC;AAC5D,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,iBAAiB,GAAG,EAAE;AACnC,QAAQ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AACxC,YAAY,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,WAAW;AAChE,QAAQ;AACR,IAAI;AACJ,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,eAAe,EAAE;AACzE,YAAY,IAAI,CAAC,aAAa,GAAGA,SAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;AAC3D,gBAAgB,GAAG,MAAM;AACzB,gBAAgB,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC;AACvD,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,IAAI,CAAC,oBAAoB,GAAGA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE;AAChE,YAAY,GAAG,MAAM;AACrB,YAAY,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC;AAC1D,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM;AACzC,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;AAC3G,QAAQ,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAY,IAAI,CAAC,QAAQ,GAAG,cAAc;AAC1C,QAAQ;AACR,IAAI;AACJ,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK;AAChE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,MAAM,KAAK,GAAGA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACrD,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE;AACtC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS;AAChC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,IAAI;AACJ,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9C,IAAI;AACJ,CAAC;AACM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AACpE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAIA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS;AAC5B,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK;AAC/D,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAIA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS;AAC5B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC/D,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK;AAChE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAIA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS;AAC5B,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO;AAC1B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACrE,CAAC;AACM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK;AAC7D,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAIA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS;AAC5B,IAAI,IAAI,UAAU;AAClB,IAAI,IAAI;AACR,QAAQ,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9C,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;AAChF,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,GAAG,UAAU;AAC7B,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AAC7D,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;AACjE,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,OAAO,IAAI,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG;AACvF,IAAIA,SAAO,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACnC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS;AACxB,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK;AAChE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAIA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS;AAC5B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;AACxB,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AAChE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAIA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS;AAC5B,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AACjE,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AAC/B,IAAIA,SAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS;AAC5B,CAAC;AACM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK;AAC7D,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS;AAC3C,IAAIA,SAAO,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACnC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS;AACxB,CAAC;AACD;AACO,MAAM,aAAa,GAAG;AAC7B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,SAAS,EAAE,kBAAkB;AACjC,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,GAAG,EAAE,YAAY;AACrB,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,GAAG,EAAE,YAAY;AACrB,IAAI,gBAAgB,EAAE,wBAAwB;AAC9C,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,QAAQ,EAAE,iBAAiB;AAC/B,IAAI,SAAS,EAAE,kBAAkB;AACjC,IAAI,GAAG,EAAE,YAAY;AACrB,IAAI,GAAG,EAAE,YAAY;AACrB,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,YAAY,EAAE,qBAAqB;AACvC,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,QAAQ,EAAE,iBAAiB;AAC/B,IAAI,WAAW,EAAE,oBAAoB;AACrC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,QAAQ,EAAE,iBAAiB;AAC/B,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,QAAQ,EAAE,iBAAiB;AAC/B,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,QAAQ,EAAE,iBAAiB;AAC/B,IAAI,IAAI,EAAE,aAAa;AACvB,CAAC;AACM,SAAS,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;AAC5C,IAAI,IAAI,QAAQ,IAAI,KAAK,EAAE;AAC3B;AACA,QAAQ,MAAM,QAAQ,GAAG,KAAK;AAC9B,QAAQ,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AAC/E,QAAQ,MAAM,IAAI,GAAG,EAAE;AACvB;AACA,QAAQ,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;AACvD,YAAY,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK;AACrC,YAAYA,SAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AAChC,QAAQ;AACR,QAAQ,MAAM,OAAO,GAAG,EAAE;AAC1B,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,QAAQ;AACpB,YAAY,GAAG,EAAE,MAAM,EAAE,GAAG;AAC5B,YAAY,IAAI;AAChB,SAAS;AACT;AACA,QAAQ,GAAG,CAAC,QAAQ,GAAG,QAAQ;AAC/B;AACA,QAAQ,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;AACvD,YAAY,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK;AACvC,YAAY,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC;AACpC,YAAY,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAChD,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,YAAY,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,KAAK,eAAe,GAAG,OAAO,GAAG,aAAa;AACxF,YAAY,OAAO,CAAC,QAAQ,GAAG;AAC/B,gBAAgB,CAAC,WAAW,GAAG,IAAI;AACnC,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,EAAE,OAAO,EAAE;AAC1B,IAAI;AACJ;AACA,IAAI,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AAC3E,IAAIA,SAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACvB,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;AAC3B,IAAI,OAAO,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B;;ACxlBO,MAAM,cAAc,GAAG,MAAM,CAAC,mDAAmD,CAAC;AACzF,MAAM,cAAc,GAAG;AACvB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,YAAY,EAAE,MAAM;AACxB,IAAI,cAAc,EAAE,OAAO;AAC3B,IAAI,YAAY,EAAE,KAAK;AACvB,IAAI,YAAY,EAAE,kBAAkB;AACpC,IAAI,WAAW,EAAE,SAAS;AAC1B,IAAI,gBAAgB,EAAE,aAAa;AACnC,IAAI,wBAAwB,EAAE,aAAa;AAC3C,IAAI,cAAc,EAAE,aAAa;AACjC,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,YAAY,EAAE,KAAK;AACvB,IAAI,aAAa,EAAE,KAAK;AACxB,IAAI,mBAAmB,EAAE,KAAK;AAC9B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,aAAa,EAAE,cAAc;AACjC,IAAI,cAAc,EAAE,wBAAwB;AAC5C,IAAI,YAAY,EAAE,KAAK;AACvB,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,OAAO,KAAK;AAC9C;AACA,IAAI,QAAQ,OAAO,OAAO,KAAK,QAAQ;AACvC,QAAQ;AACR,YAAY,GAAG,cAAc;AAC7B,YAAY,QAAQ,EAAE,CAAC,GAAG,CAAC;AAC3B,YAAY,WAAW,EAAE,EAAE;AAC3B,YAAY,IAAI,EAAE,OAAO;AACzB;AACA,UAAU;AACV,YAAY,GAAG,cAAc;AAC7B,YAAY,QAAQ,EAAE,CAAC,GAAG,CAAC;AAC3B,YAAY,WAAW,EAAE,EAAE;AAC3B,YAAY,GAAG,OAAO;AACtB,SAAS;AACT,CAAC;;ACpCM,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK;AACrC,IAAI,OAAO,MAAM,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS;AAC3D,CAAC;AACM,SAAS,UAAU,CAAC,GAAG,EAAE;AAChC,IAAI,IAAI,CAAC,GAAG;AACZ,QAAQ,OAAO,IAAI;AACnB,IAAI,KAAK,MAAM,EAAE,IAAI,GAAG;AACxB,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,IAAI;AACf;;ACPO,MAAM,OAAO,GAAG,CAAC,OAAO,KAAK;AACpC,IAAI,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAC/C,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,KAAK,SAAS;AACnD,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI;AACrE,UAAU,QAAQ,CAAC,QAAQ;AAC3B,IAAI,OAAO;AACX,QAAQ,GAAG,QAAQ;AACnB,QAAQ,WAAW,EAAE,WAAW;AAChC,QAAQ,YAAY,EAAE,SAAS;AAC/B,QAAQ,QAAQ,EAAE,IAAI,GAAG,EAAE;AAC3B,QAAQ,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK;AAChF,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,YAAY;AACZ,gBAAgB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;AAChC,gBAAgB,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;AAC3E;AACA,gBAAgB,UAAU,EAAE,SAAS;AACrC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,CAAC;;ACtBM,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE;AAC9D,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa;AAC5B,QAAQ;AACR,IAAI,IAAI,YAAY,EAAE;AACtB,QAAQ,GAAG,CAAC,YAAY,GAAG;AAC3B,YAAY,GAAG,GAAG,CAAC,YAAY;AAC/B,YAAY,CAAC,GAAG,GAAG,YAAY;AAC/B,SAAS;AACT,IAAI;AACJ;AACO,SAAS,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;AAC/E,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACpB,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC;AACjD;;ACigHO,IAAI,qBAAqB;AAChC,CAAC,UAAU,qBAAqB,EAAE;AAClC,IAAI,qBAAqB,CAAC,WAAW,CAAC,GAAG,WAAW;AACpD,IAAI,qBAAqB,CAAC,WAAW,CAAC,GAAG,WAAW;AACpD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC9C,IAAI,qBAAqB,CAAC,WAAW,CAAC,GAAG,WAAW;AACpD,IAAI,qBAAqB,CAAC,YAAY,CAAC,GAAG,YAAY;AACtD,IAAI,qBAAqB,CAAC,SAAS,CAAC,GAAG,SAAS;AAChD,IAAI,qBAAqB,CAAC,WAAW,CAAC,GAAG,WAAW;AACpD,IAAI,qBAAqB,CAAC,cAAc,CAAC,GAAG,cAAc;AAC1D,IAAI,qBAAqB,CAAC,SAAS,CAAC,GAAG,SAAS;AAChD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC9C,IAAI,qBAAqB,CAAC,YAAY,CAAC,GAAG,YAAY;AACtD,IAAI,qBAAqB,CAAC,UAAU,CAAC,GAAG,UAAU;AAClD,IAAI,qBAAqB,CAAC,SAAS,CAAC,GAAG,SAAS;AAChD,IAAI,qBAAqB,CAAC,UAAU,CAAC,GAAG,UAAU;AAClD,IAAI,qBAAqB,CAAC,WAAW,CAAC,GAAG,WAAW;AACpD,IAAI,qBAAqB,CAAC,UAAU,CAAC,GAAG,UAAU;AAClD,IAAI,qBAAqB,CAAC,uBAAuB,CAAC,GAAG,uBAAuB;AAC5E,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,GAAG,iBAAiB;AAChE,IAAI,qBAAqB,CAAC,UAAU,CAAC,GAAG,UAAU;AAClD,IAAI,qBAAqB,CAAC,WAAW,CAAC,GAAG,WAAW;AACpD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC9C,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC9C,IAAI,qBAAqB,CAAC,aAAa,CAAC,GAAG,aAAa;AACxD,IAAI,qBAAqB,CAAC,SAAS,CAAC,GAAG,SAAS;AAChD,IAAI,qBAAqB,CAAC,YAAY,CAAC,GAAG,YAAY;AACtD,IAAI,qBAAqB,CAAC,SAAS,CAAC,GAAG,SAAS;AAChD,IAAI,qBAAqB,CAAC,YAAY,CAAC,GAAG,YAAY;AACtD,IAAI,qBAAqB,CAAC,eAAe,CAAC,GAAG,eAAe;AAC5D,IAAI,qBAAqB,CAAC,aAAa,CAAC,GAAG,aAAa;AACxD,IAAI,qBAAqB,CAAC,aAAa,CAAC,GAAG,aAAa;AACxD,IAAI,qBAAqB,CAAC,YAAY,CAAC,GAAG,YAAY;AACtD,IAAI,qBAAqB,CAAC,UAAU,CAAC,GAAG,UAAU;AAClD,IAAI,qBAAqB,CAAC,YAAY,CAAC,GAAG,YAAY;AACtD,IAAI,qBAAqB,CAAC,YAAY,CAAC,GAAG,YAAY;AACtD,IAAI,qBAAqB,CAAC,aAAa,CAAC,GAAG,aAAa;AACxD,IAAI,qBAAqB,CAAC,aAAa,CAAC,GAAG,aAAa;AACxD,CAAC,EAAE,qBAAqB,KAAK,qBAAqB,GAAG,EAAE,CAAC,CAAC;;ACpjHlD,SAAS,WAAW,GAAG;AAC9B,IAAI,OAAO,EAAE;AACb;;ACCO,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG;AAChB,QAAQ,IAAI,EAAE,OAAO;AACrB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,KAAK,qBAAqB,CAAC,MAAM,EAAE;AACnE,QAAQ,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AAC5C,YAAY,GAAG,IAAI;AACnB,YAAY,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;AACvD,SAAS,CAAC;AACV,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE;AACvB,QAAQ,yBAAyB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;AACpG,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE;AACvB,QAAQ,yBAAyB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;AACpG,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE;AACzB,QAAQ,yBAAyB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC;AACxG,QAAQ,yBAAyB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC;AACxG,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;;ACvBO,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1C,IAAI,MAAM,GAAG,GAAG;AAChB,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,MAAM,EAAE,OAAO;AACvB,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;AACnB,QAAQ,OAAO,GAAG;AAClB,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;AACpC,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,YAAY,KAAK,KAAK;AACtB,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE;AACnD,oBAAoB,IAAI,KAAK,CAAC,SAAS,EAAE;AACzC,wBAAwB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnG,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5G,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC1C,wBAAwB,GAAG,CAAC,gBAAgB,GAAG,IAAI;AACnD,oBAAoB;AACpB,oBAAoB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/F,gBAAgB;AAChB,gBAAgB;AAChB,YAAY,KAAK,KAAK;AACtB,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE;AACnD,oBAAoB,IAAI,KAAK,CAAC,SAAS,EAAE;AACzC,wBAAwB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnG,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5G,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC1C,wBAAwB,GAAG,CAAC,gBAAgB,GAAG,IAAI;AACnD,oBAAoB;AACpB,oBAAoB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/F,gBAAgB;AAChB,gBAAgB;AAChB,YAAY,KAAK,YAAY;AAC7B,gBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9F,gBAAgB;AAChB;AACA,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;;AChDO,SAAS,eAAe,GAAG;AAClC,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,SAAS;AACvB,KAAK;AACL;;ACHO,SAAS,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5C,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AACzC;;ACFO,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AAC5C,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;AAC7C,CAAC;;ACFM,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE;AAC9D,IAAI,MAAM,QAAQ,GAAG,oBAAoB,IAAI,IAAI,CAAC,YAAY;AAC9D,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACjC,QAAQ,OAAO;AACf,YAAY,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3E,SAAS;AACT,IAAI;AACJ,IAAI,QAAQ,QAAQ;AACpB,QAAQ,KAAK,QAAQ;AACrB,QAAQ,KAAK,kBAAkB;AAC/B,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,MAAM,EAAE,WAAW;AACnC,aAAa;AACb,QAAQ,KAAK,aAAa;AAC1B,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,MAAM,EAAE,MAAM;AAC9B,aAAa;AACb,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC/C;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AACzC,IAAI,MAAM,GAAG,GAAG;AAChB,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,MAAM,EAAE,WAAW;AAC3B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AACpC,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;AACpC,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,YAAY,KAAK,KAAK;AACtB,gBAAgB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK;AACrE,gBAAgB,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACpC,gBAAgB;AAChB,YAAY,KAAK,KAAK;AACtB,gBAAgB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK;AACrE,gBAAgB,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACpC,gBAAgB;AAChB;AACA,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,CAAC;;AC5CM,SAAS,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5C,IAAI,OAAO;AACX,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;AAC9C,QAAQ,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;AACpC,KAAK;AACL;;ACLO,SAAS,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;AAC7D,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE;AACnG;;ACHO,SAAS,YAAY,CAAC,GAAG,EAAE;AAClC,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AAC7B,KAAK;AACL;;ACJA,MAAM,sBAAsB,GAAG,CAAC,IAAI,KAAK;AACzC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;AAChD,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,OAAO,IAAI,IAAI;AAC1B,CAAC;AACM,SAAS,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE;AAChD,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AAChC,YAAY,GAAG,IAAI;AACnB,YAAY,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC;AAC5D,SAAS,CAAC;AACV,QAAQ,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;AACjC,YAAY,GAAG,IAAI;AACnB,YAAY,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC;AAC5D,SAAS,CAAC;AACV,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,IAAI,qBAAqB,GAAG,IAAI,CAAC,MAAM,KAAK,mBAAmB,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,SAAS;AAClH,IAAI,MAAM,WAAW,GAAG,EAAE;AAC1B;AACA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC9B,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE;AAC5C,YAAY,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7C,YAAY,IAAI,MAAM,CAAC,qBAAqB,KAAK,SAAS,EAAE;AAC5D;AACA;AACA,gBAAgB,qBAAqB,GAAG,SAAS;AACjD,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,YAAY,GAAG,MAAM;AACrC,YAAY,IAAI,sBAAsB,IAAI,MAAM,IAAI,MAAM,CAAC,oBAAoB,KAAK,KAAK,EAAE;AAC3F,gBAAgB,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM;AAChE,gBAAgB,YAAY,GAAG,IAAI;AACnC,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,qBAAqB,GAAG,SAAS;AACjD,YAAY;AACZ,YAAY,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,WAAW,CAAC,MAAM;AAC7B,QAAQ;AACR,YAAY,KAAK,EAAE,WAAW;AAC9B,YAAY,GAAG,qBAAqB;AACpC;AACA,UAAU,SAAS;AACnB;;AChDO,SAAS,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE;AAC3C,IAAI,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC,KAAK;AACvC,IAAI,IAAI,UAAU,KAAK,QAAQ;AAC/B,QAAQ,UAAU,KAAK,QAAQ;AAC/B,QAAQ,UAAU,KAAK,SAAS;AAChC,QAAQ,UAAU,KAAK,QAAQ,EAAE;AACjC,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ;AAC/D,SAAS;AACT,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AACpC,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,UAAU;AAClE,YAAY,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,SAAS;AACT,IAAI;AACJ,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,UAAU;AAC9D,QAAQ,KAAK,EAAE,GAAG,CAAC,KAAK;AACxB,KAAK;AACL;;ACnBA,IAAI,UAAU;AACd;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG;AAC3B;AACA;AACA;AACA,IAAI,IAAI,EAAE,kBAAkB;AAC5B,IAAI,KAAK,EAAE,aAAa;AACxB,IAAI,IAAI,EAAE,0BAA0B;AACpC;AACA;AACA;AACA,IAAI,KAAK,EAAE,kGAAkG;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,MAAM;AACjB,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,UAAU,GAAG,MAAM,CAAC,sDAAsD,EAAE,GAAG,CAAC;AAC5F,QAAQ;AACR,QAAQ,OAAO,UAAU;AACzB,IAAI,CAAC;AACL,IAYI,MAAM,EAAE,kEAAkE;AAC9E,IAAI,MAAM,EAAE,qBAAqB;AACjC,CAAC;AACM,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1C,IAAI,MAAM,GAAG,GAAG;AAChB,QAAQ,IAAI,EAAE,QAAQ;AACtB,KAAK;AACL,IAAI,SAAS,cAAc,CAAC,KAAK,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,KAAK;AACvF,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE;AACpB,QAAQ,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;AACxC,YAAY,QAAQ,KAAK,CAAC,IAAI;AAC9B,gBAAgB,KAAK,KAAK;AAC1B,oBAAoB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5K,oBAAoB;AACpB,gBAAgB,KAAK,KAAK;AAC1B,oBAAoB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5K,oBAAoB;AACpB,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,QAAQ,IAAI,CAAC,aAAa;AAC9C,wBAAwB,KAAK,cAAc;AAC3C,4BAA4B,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACxE,4BAA4B;AAC5B,wBAAwB,KAAK,kBAAkB;AAC/C,4BAA4B,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5E,4BAA4B;AAC5B,wBAAwB,KAAK,aAAa;AAC1C,4BAA4B,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnF,4BAA4B;AAC5B;AACA,oBAAoB;AACpB,gBAAgB,KAAK,KAAK;AAC1B,oBAAoB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9D,oBAAoB;AACpB,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/D,oBAAoB;AACpB,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACrE,oBAAoB;AACpB,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC1E,oBAAoB;AACpB,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC3E,oBAAoB;AACpB,gBAAgB,KAAK,YAAY;AACjC,oBAAoB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnG,oBAAoB;AACpB,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnG,oBAAoB;AACpB,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACpE,oBAAoB;AACpB,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/D,oBAAoB;AACpB,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/D,oBAAoB;AACpB,gBAAgB,KAAK,UAAU;AAC/B,oBAAoB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnE,oBAAoB;AACpB,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5K,oBAAoB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5K,oBAAoB;AACpB,gBAAgB,KAAK,UAAU,EAAE;AACjC,oBAAoB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7F,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,KAAK,IAAI,EAAE;AAC3B,oBAAoB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;AAChD,wBAAwB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnE,oBAAoB;AACpB,oBAAoB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;AAChD,wBAAwB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnE,oBAAoB;AACpB,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC3E,oBAAoB;AACpB,gBAAgB,KAAK,MAAM,EAAE;AAC7B,oBAAoB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC1E,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,KAAK,QAAQ,EAAE;AAC/B,oBAAoB,QAAQ,IAAI,CAAC,cAAc;AAC/C,wBAAwB,KAAK,eAAe,EAAE;AAC9C,4BAA4B,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACzE,4BAA4B;AAC5B,wBAAwB;AACxB,wBAAwB,KAAK,wBAAwB,EAAE;AACvD,4BAA4B,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5G,4BAA4B;AAC5B,wBAAwB;AACxB,wBAAwB,KAAK,aAAa,EAAE;AAC5C,4BAA4B,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACpF,4BAA4B;AAC5B,wBAAwB;AACxB;AACA,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,KAAK,QAAQ,EAAE;AAC/B,oBAAoB,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5E,gBAAgB;AAOhB;AACA,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;AACA,MAAM,qBAAqB,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK;AACzD,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,KAAK,IAAI,CAAC,EAAE,CAAC;AACb,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,KAAK;AACpD,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9D,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC3B,YAAY,MAAM,CAAC,KAAK,GAAG,EAAE;AAC7B,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE;AAC3B,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9B,gBAAgB,MAAM,EAAE,MAAM,CAAC,MAAM;AACrC,gBAAgB,IAAI,MAAM,CAAC,YAAY;AACvC,oBAAoB,IAAI,CAAC,aAAa,IAAI;AAC1C,oBAAoB,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;AACxE,iBAAiB,CAAC;AAClB,aAAa,CAAC;AACd,YAAY,OAAO,MAAM,CAAC,MAAM;AAChC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;AACrC,gBAAgB,OAAO,MAAM,CAAC,YAAY,CAAC,MAAM;AACjD,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACnE,oBAAoB,OAAO,MAAM,CAAC,YAAY;AAC9C,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1B,YAAY,MAAM,EAAE,KAAK;AACzB,YAAY,IAAI,OAAO,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;AACvF,SAAS,CAAC;AACV,IAAI;AACJ,SAAS;AACT,QAAQ,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;AACzE,IAAI;AACJ,CAAC;AACD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,KAAK;AACrD,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;AAChE,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC3B,YAAY,MAAM,CAAC,KAAK,GAAG,EAAE;AAC7B,QAAQ;AACR,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE;AAC5B,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9B,gBAAgB,OAAO,EAAE,MAAM,CAAC,OAAO;AACvC,gBAAgB,IAAI,MAAM,CAAC,YAAY;AACvC,oBAAoB,IAAI,CAAC,aAAa,IAAI;AAC1C,oBAAoB,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;AAC1E,iBAAiB,CAAC;AAClB,aAAa,CAAC;AACd,YAAY,OAAO,MAAM,CAAC,OAAO;AACjC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE;AACrC,gBAAgB,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO;AAClD,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACnE,oBAAoB,OAAO,MAAM,CAAC,YAAY;AAC9C,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1B,YAAY,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;AAC/C,YAAY,IAAI,OAAO,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;AACxF,SAAS,CAAC;AACV,IAAI;AACJ,SAAS;AACT,QAAQ,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC;AAC/F,IAAI;AACJ,CAAC;AACD;AACA,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,IAAI,KAAK;AACjD,IAAI,MAAM,KAAK,GAAG,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,EAAE,GAAG,eAAe;AAC7F,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,KAAK;AAC7C,QAAQ,OAAO,KAAK,CAAC,MAAM;AAC3B;AACA,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpC,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,MAAM;AACtE,IAAI,IAAI,OAAO,GAAG,EAAE;AACpB,IAAI,IAAI,SAAS,GAAG,KAAK;AACzB,IAAI,IAAI,WAAW,GAAG,KAAK;AAC3B,IAAI,IAAI,WAAW,GAAG,KAAK;AAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,SAAS,GAAG,KAAK;AAC7B,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,CAAC,EAAE;AACrB,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC9C,oBAAoB,IAAI,WAAW,EAAE;AACrC,wBAAwB,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;AAC5C,wBAAwB,OAAO,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AAChF,wBAAwB,WAAW,GAAG,KAAK;AAC3C,oBAAoB;AACpB,yBAAyB,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AACrF,wBAAwB,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;AAC5C,wBAAwB,WAAW,GAAG,IAAI;AAC1C,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,OAAO,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3E,oBAAoB;AACpB,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,iBAAiB,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC/C,gBAAgB,OAAO,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACrE,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,CAAC,EAAE;AACrB,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACnC,gBAAgB,OAAO,IAAI,CAAC,eAAe,CAAC;AAC5C,gBAAgB;AAChB,YAAY;AACZ,iBAAiB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxC,gBAAgB,OAAO,IAAI,CAAC,cAAc,CAAC;AAC3C,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1C,YAAY,OAAO,IAAI,WAAW,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9E,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;AAC5B,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAChC,YAAY,SAAS,GAAG,IAAI;AAC5B,QAAQ;AACR,aAAa,IAAI,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACnD,YAAY,WAAW,GAAG,KAAK;AAC/B,QAAQ;AACR,aAAa,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACpD,YAAY,WAAW,GAAG,IAAI;AAC9B,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;AAC7C,IAAI;AACJ,IAAI,MAAM;AACV,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,mCAAmC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,qEAAqE,CAAC,CAAC;AAC7J,QAAQ,OAAO,KAAK,CAAC,MAAM;AAC3B,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB,CAAC;;ACnTM,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1C,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,qBAAqB,CAAC,OAAO,EAAE;AACpG,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;AAC7C,YAAY,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM;AACtE,gBAAgB,GAAG,GAAG;AACtB,gBAAgB,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;AACpD,oBAAoB,GAAG,IAAI;AAC3B,oBAAoB,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC;AACzE,iBAAiB,CAAC,IAAI,EAAE;AACxB,aAAa,CAAC,EAAE,EAAE,CAAC;AACnB,YAAY,oBAAoB,EAAE,KAAK;AACvC,SAAS;AACT,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,oBAAoB,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;AAC3D,YAAY,GAAG,IAAI;AACnB,YAAY,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC;AACtE,SAAS,CAAC,IAAI,EAAE;AAChB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AACpC,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,qBAAqB,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;AAC3G,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACnK,QAAQ,OAAO;AACf,YAAY,GAAG,MAAM;AACrB,YAAY,aAAa,EAAE,OAAO;AAClC,SAAS;AACT,IAAI;AACJ,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,qBAAqB,CAAC,OAAO,EAAE;AAC3E,QAAQ,OAAO;AACf,YAAY,GAAG,MAAM;AACrB,YAAY,aAAa,EAAE;AAC3B,gBAAgB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM;AAC7C,aAAa;AACb,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;;AC1CO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AACvC,QAAQ,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AACxC,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;AAC5C,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC;AACjE,KAAK,CAAC,IAAI,EAAE;AACZ,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;AAChD,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC;AACjE,KAAK,CAAC,IAAI,EAAE;AACZ,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,QAAQ,EAAE,GAAG;AACrB,QAAQ,KAAK,EAAE;AACf,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;AACjC,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS;AACT,KAAK;AACL;;ACxBO,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;AAC7B,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AAC/D,QAAQ,OAAO,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ;AACtD,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7D,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;AACxF,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;AACtC,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ;AACvC,gBAAgB;AAChB,kBAAkB;AAClB,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAClC,QAAQ,IAAI,EAAE,YAAY;AAC1B,KAAK;AACL;;ACfO,SAAS,aAAa,GAAG;AAChC,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,EAAE;AACf,KAAK;AACL;;ACJO,SAAS,YAAY,CAAC,IAAI,EAAE;AACnC,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU;AACrC,QAAQ;AACR,YAAY,IAAI,EAAE,CAAC,MAAM,CAAC;AAC1B,YAAY,QAAQ,EAAE,IAAI;AAC1B;AACA,UAAU;AACV,YAAY,IAAI,EAAE,MAAM;AACxB,SAAS;AACT;;ACRO,MAAM,iBAAiB,GAAG;AACjC,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,SAAS;AACxB,IAAI,UAAU,EAAE,SAAS;AACzB,IAAI,OAAO,EAAE,MAAM;AACnB,CAAC;AACM,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AACzC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;AAClC,QAAQ,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;AACjC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,YAAY,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO;AAC/F;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,iBAAiB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACjH;AACA,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK;AACnD,YAAY,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5D,YAAY,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK;AAC3E,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACrD,SAAS;AACT,IAAI;AACJ,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;AACvF;AACA,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AACjD,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK;AAC5C,YAAY,QAAQ,IAAI;AACxB,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,SAAS;AAC9B,oBAAoB,OAAO,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC;AACzC,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,OAAO,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC;AAC9C,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI;AAC7C,wBAAwB,OAAO,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC;AAC/C,gBAAgB,KAAK,QAAQ;AAC7B,gBAAgB,KAAK,WAAW;AAChC,gBAAgB,KAAK,UAAU;AAC/B,gBAAgB;AAChB,oBAAoB,OAAO,GAAG;AAC9B;AACA,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE;AAC7C;AACA,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7E,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC;AAC3E,gBAAgB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AACjD,oBAAoB,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACpF,gBAAgB,CAAC,EAAE,EAAE,CAAC;AACtB,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE;AAClE,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5G,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;AAC7B;AACA,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AAC/B,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,YAAY,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO;AAC9F,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;AACxC,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK,CAAC;AACN,SAAS,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3G,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS;AAC/C,CAAC;;ACrEM,SAAS,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9G,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC3E,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,gBAAgB,KAAK,UAAU,EAAE;AAChF,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpE,gBAAgB,QAAQ,EAAE,IAAI;AAC9B,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;AAC1E,SAAS;AACT,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AACpC,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;AAClD,YAAY,GAAG,IAAI;AACnB,YAAY,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AAC9C,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;AAClC,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;AACpD,QAAQ,OAAO,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AAClD,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;AAC9C,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC;AACxD,KAAK,CAAC;AACN,IAAI,OAAO,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;AACtD;;AC5BO,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1C,IAAI,MAAM,GAAG,GAAG;AAChB,QAAQ,IAAI,EAAE,QAAQ;AACtB,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;AACnB,QAAQ,OAAO,GAAG;AAClB,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;AACpC,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,YAAY,KAAK,KAAK;AACtB,gBAAgB,GAAG,CAAC,IAAI,GAAG,SAAS;AACpC,gBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACjE,gBAAgB;AAChB,YAAY,KAAK,KAAK;AACtB,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE;AACnD,oBAAoB,IAAI,KAAK,CAAC,SAAS,EAAE;AACzC,wBAAwB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnG,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5G,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC1C,wBAAwB,GAAG,CAAC,gBAAgB,GAAG,IAAI;AACnD,oBAAoB;AACpB,oBAAoB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/F,gBAAgB;AAChB,gBAAgB;AAChB,YAAY,KAAK,KAAK;AACtB,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE;AACnD,oBAAoB,IAAI,KAAK,CAAC,SAAS,EAAE;AACzC,wBAAwB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AACnG,oBAAoB;AACpB,yBAAyB;AACzB,wBAAwB,yBAAyB,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC5G,oBAAoB;AACpB,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC1C,wBAAwB,GAAG,CAAC,gBAAgB,GAAG,IAAI;AACnD,oBAAoB;AACpB,oBAAoB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC/F,gBAAgB;AAChB,gBAAgB;AAChB,YAAY,KAAK,YAAY;AAC7B,gBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9F,gBAAgB;AAChB;AACA,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;;AClDA,SAAS,0BAA0B,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/C,IAAI,IAAI,IAAI,CAAC,wBAAwB,KAAK,QAAQ,EAAE;AACpD,QAAQ,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU;AACxD,YAAY,GAAG,CAAC,WAAW,KAAK;AAChC,cAAc,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC;AAC1E,aAAa,CAAC,IAAI,IAAI;AACtB,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU;AACxD,YAAY,GAAG,CAAC,WAAW,KAAK;AAChC,cAAc,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC;AAC1E,aAAa,CAAC,IAAI,IAAI;AACtB,IAAI;AACJ;AACO,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK;AAC5E,YAAY,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;AACnE,gBAAgB,OAAO,GAAG;AAC1B,YAAY,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC;AAC9E,YAAY,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;AACrD,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,WAAW,EAAE,YAAY;AACzC,gBAAgB,YAAY;AAC5B,aAAa,CAAC;AACd,YAAY,IAAI,SAAS,KAAK,SAAS;AACvC,gBAAgB,OAAO,GAAG;AAC1B,YAAY,IAAI,IAAI,CAAC,gBAAgB;AACrC,gBAAgB,OAAO,CAAC,UAAU,EAAE;AACpC,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE;AACrC,gBAAgB,OAAO,OAAO,CAAC,IAAI,EAAE,YAAY,KAAK,WAAW,EAAE;AACnE,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iMAAiM,CAAC,CAAC;AAC5Q,YAAY;AACZ,YAAY,OAAO;AACnB,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,GAAG,GAAG,CAAC,UAAU;AACrC,oBAAoB,CAAC,QAAQ,GAAG,SAAS;AACzC,iBAAiB;AACjB,gBAAgB,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACrH,aAAa;AACb,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC5C,QAAQ,oBAAoB,EAAE,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC;AACnE,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;AAC/B,QAAQ,OAAO,MAAM,CAAC,QAAQ;AAC9B,IAAI,OAAO,MAAM;AACjB;;ACnDO,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AAC/C,IAAI,IAAI,IAAI,CAAC,YAAY;AACzB,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE;AACzG,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACvF,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;AACrD,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC;AACxD,KAAK,CAAC;AACN,IAAI,OAAO,WAAW;AACtB,QAAQ;AACR,YAAY,KAAK,EAAE;AACnB,gBAAgB;AAChB,oBAAoB,GAAG,EAAE,EAAE;AAC3B,iBAAiB;AACjB,gBAAgB,WAAW;AAC3B,aAAa;AACb;AACA,UAAU,EAAE;AACZ,CAAC;;ACnBM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AAC/C,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;AACvC,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1C,IAAI;AACJ,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;AAC7C,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3C,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;AACpC,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC;AACxD,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AACrC,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAClE,KAAK,CAAC;AACN,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AACpD,KAAK;AACL,CAAC;;AClBM,SAAS,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE;AAC3C,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AACxC;;ACDO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AACvC,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;AAC/C,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;AACnD,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,WAAW,EAAE,IAAI;AACzB,QAAQ,KAAK;AACb,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE;AACrB,QAAQ,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AACnG,IAAI;AACJ,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE;AACrB,QAAQ,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;AACnG,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;;AClBO,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AACzC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;AAClB,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;AACtC,YAAY,KAAK,EAAE,GAAG,CAAC;AACvB,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;AAChD,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,aAAa,CAAC;AACd,iBAAiB,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9E,YAAY,eAAe,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AACrD,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC;AACrE,aAAa,CAAC;AACd,SAAS;AACT,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;AACtC,YAAY,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;AACtC,YAAY,KAAK,EAAE,GAAG,CAAC;AACvB,iBAAiB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;AAChD,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,aAAa,CAAC;AACd,iBAAiB,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9E,SAAS;AACT,IAAI;AACJ;;AC/BO,SAAS,iBAAiB,GAAG;AACpC,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,EAAE;AACf,KAAK;AACL;;ACJO,SAAS,eAAe,GAAG;AAClC,IAAI,OAAO,EAAE;AACb;;ACDO,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;AAC/C,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;AAC7C,CAAC;;AC6BM,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,eAAe,GAAG,KAAK,EAAE;AAC7D,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACvC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC;AACpF,QAAQ,IAAI,cAAc,KAAK,cAAc,EAAE;AAC/C,YAAY,OAAO,cAAc;AACjC,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,QAAQ,IAAI,CAAC,eAAe,EAAE;AACtC,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AAClD,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,IAAI,MAAM,IAAI,UAAU,EAAE;AACtC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AAClD,YAAY;AACZ,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE;AAC1E,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;AAC/B,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC;AAC7E,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC;AACtC,IAAI;AACJ,IAAI,OAAO,CAAC,UAAU,GAAG,UAAU;AACnC,IAAI,OAAO,UAAU;AACrB;AACA,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK;AAChC,IAAI,QAAQ,IAAI,CAAC,YAAY;AAC7B,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK,iBAAiB;AAC9B,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5E;AACA;AACA,YAAY,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,eAAe,EAAE;AAC7E,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;AACjD,YAAY;AACZ,YAAY,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACpF,QAAQ,KAAK,UAAU;AACvB,YAAY,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACzE,QAAQ,KAAK,MAAM;AACnB,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AAC1D,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;AACtF,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,gCAAgC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAChH,gBAAgB,OAAO,EAAE;AACzB,YAAY;AACZ,YAAY,OAAO,IAAI,CAAC,YAAY,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AAChE,QAAQ;AACR;AACA,CAAC;AACD,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK;AAC1C,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,IAAI,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;AACjC,YAAY;AACZ,IAAI;AACJ,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACvE,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,KAAK;AAC/D,IAAI,QAAQ,QAAQ;AACpB,QAAQ,KAAK,qBAAqB,CAAC,SAAS;AAC5C,YAAY,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AAC5C,QAAQ,KAAK,qBAAqB,CAAC,SAAS;AAC5C,YAAY,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AAC5C,QAAQ,KAAK,qBAAqB,CAAC,SAAS;AAC5C,YAAY,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AAC5C,QAAQ,KAAK,qBAAqB,CAAC,SAAS;AAC5C,YAAY,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AAC5C,QAAQ,KAAK,qBAAqB,CAAC,UAAU;AAC7C,YAAY,OAAO,eAAe,EAAE;AACpC,QAAQ,KAAK,qBAAqB,CAAC,OAAO;AAC1C,YAAY,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;AAC1C,QAAQ,KAAK,qBAAqB,CAAC,YAAY;AAC/C,YAAY,OAAO,iBAAiB,EAAE;AACtC,QAAQ,KAAK,qBAAqB,CAAC,OAAO;AAC1C,YAAY,OAAO,YAAY,CAAC,IAAI,CAAC;AACrC,QAAQ,KAAK,qBAAqB,CAAC,QAAQ;AAC3C,YAAY,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;AAC3C,QAAQ,KAAK,qBAAqB,CAAC,QAAQ;AAC3C,QAAQ,KAAK,qBAAqB,CAAC,qBAAqB;AACxD,YAAY,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;AAC3C,QAAQ,KAAK,qBAAqB,CAAC,eAAe;AAClD,YAAY,OAAO,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC;AAClD,QAAQ,KAAK,qBAAqB,CAAC,QAAQ;AAC3C,YAAY,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;AAC3C,QAAQ,KAAK,qBAAqB,CAAC,SAAS;AAC5C,YAAY,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AAC5C,QAAQ,KAAK,qBAAqB,CAAC,UAAU;AAC7C,YAAY,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;AAC7C,QAAQ,KAAK,qBAAqB,CAAC,OAAO;AAC1C,YAAY,OAAO,YAAY,CAAC,GAAG,CAAC;AACpC,QAAQ,KAAK,qBAAqB,CAAC,aAAa;AAChD,YAAY,OAAO,kBAAkB,CAAC,GAAG,CAAC;AAC1C,QAAQ,KAAK,qBAAqB,CAAC,WAAW;AAC9C,YAAY,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9C,QAAQ,KAAK,qBAAqB,CAAC,WAAW;AAC9C,YAAY,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9C,QAAQ,KAAK,qBAAqB,CAAC,MAAM;AACzC,YAAY,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;AACzC,QAAQ,KAAK,qBAAqB,CAAC,MAAM;AACzC,YAAY,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;AACzC,QAAQ,KAAK,qBAAqB,CAAC,OAAO;AAC1C,YAAY,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACpD,QAAQ,KAAK,qBAAqB,CAAC,UAAU;AAC7C,YAAY,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;AAC7C,QAAQ,KAAK,qBAAqB,CAAC,MAAM;AACzC,QAAQ,KAAK,qBAAqB,CAAC,QAAQ;AAC3C,YAAY,OAAO,aAAa,EAAE;AAClC,QAAQ,KAAK,qBAAqB,CAAC,UAAU;AAC7C,YAAY,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC;AAC9D,QAAQ,KAAK,qBAAqB,CAAC,MAAM;AACzC,YAAY,OAAO,WAAW,EAAE;AAChC,QAAQ,KAAK,qBAAqB,CAAC,UAAU;AAC7C,YAAY,OAAO,eAAe,EAAE;AACpC,QAAQ,KAAK,qBAAqB,CAAC,UAAU;AAC7C,YAAY,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;AAC7C,QAAQ,KAAK,qBAAqB,CAAC,UAAU;AAC7C,YAAY,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;AAC7C,QAAQ,KAAK,qBAAqB,CAAC,WAAW;AAC9C,YAAY,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9C,QAAQ,KAAK,qBAAqB,CAAC,QAAQ;AAC3C,YAAY,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;AAC3C,QAAQ,KAAK,qBAAqB,CAAC,WAAW;AAC9C,YAAY,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9C,QAAQ,KAAK,qBAAqB,CAAC,WAAW;AAC9C,QAAQ,KAAK,qBAAqB,CAAC,OAAO;AAC1C,QAAQ,KAAK,qBAAqB,CAAC,SAAS;AAC5C,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAU,CAAC;AAC/C;AACA,CAAC;AACD,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,KAAK;AAC3C,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE;AACzB,QAAQ,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAChD,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,UAAU,CAAC,mBAAmB,GAAG,GAAG,CAAC,WAAW;AAC5D,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,UAAU;AACrB,CAAC;;AClLD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK;AAC7C,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;AACjC,IAAI,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG;AAC/C,UAAU,OAAO,EAAE,YAAY,KAAK,OAAO,GAAG;AAC9C,cAAc,OAAO,EAAE,IAAI;AAC3B,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,GAAG,IAAI,IAAI;AACpE,QAAQ,GAAG,IAAI;AACf,QAAQ,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;AAClE,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;AACpB,IAAI,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,YAAY,KAAK,OAAO;AAC/G,QAAQ,OAAO,CAAC;AAChB,UAAU,SAAS;AACnB,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,CAAC,MAAM;AAC/B,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC1C,YAAY,OAAO,SAAS;AAC5B,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,EAAE;AAC9B,QAAQ,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,YAAY,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrH,YAAY,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;AAC3C,gBAAgB;AAChB,YAAY,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,cAAc,EAAE;AACxD,gBAAgB,WAAW,CAAC,GAAG,CAAC;AAChC,oBAAoB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AAChI,gBAAgB,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,WAAW;AAC1B,IAAI,CAAC,GAAG;AACR,IAAI,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS;AACvC,QAAQ,WAAW;AACnB,YAAY;AACZ,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,CAAC,IAAI,CAAC,cAAc,GAAG,WAAW;AAClD;AACA,cAAc;AACd,UAAU,IAAI,CAAC,YAAY,KAAK,eAAe;AAC/C,YAAY;AACZ,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;AACrD,oBAAoB;AACpB,wBAAwB,CAAC,IAAI,CAAC,cAAc,GAAG;AAC/C,4BAA4B,GAAG,WAAW;AAC1C;AACA;AACA,4BAA4B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;AAClF,yBAAyB;AACzB;AACA,sBAAsB,SAAS,CAAC;AAChC;AACA,cAAc;AACd,gBAAgB,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACvH,gBAAgB,CAAC,IAAI,CAAC,cAAc,GAAG;AACvC,oBAAoB,GAAG,WAAW;AAClC,oBAAoB,CAAC,IAAI,GAAG,IAAI;AAChC,iBAAiB;AACjB,aAAa;AACb,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE;AACvC,QAAQ,QAAQ,CAAC,OAAO,GAAG,yCAAyC;AACpE,IAAI;AACJ,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,mBAAmB,EAAE;AAClD,QAAQ,QAAQ,CAAC,OAAO,GAAG,+CAA+C;AAC1E,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB,CAAC;;AC5EM,SAAS,kBAAkB,CAAC,MAAM,EAAE;AAC3C,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,mDAAmD,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AAC/H,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC;AAC9C,IAAI,OAAO,sBAAsB,CAAC,UAAU,EAAE,EAAE,EAAE,UAAU,CAAC;AAC7D;AACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,IAAI,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;AACrC,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;AAChC,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;AACnD,QAAQ,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI;AACJ,IAAI,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;AACnD,QAAQ,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;AACxD,IAAI,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE;AACzC,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,6CAA6C,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7F,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC/B,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7G,IAAI;AACJ;AACA,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK;AACjC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;AACxB,QAAQ,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjE,YAAY,sBAAsB,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC;AAChF,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW;AAC9C,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC/B,QAAQ,KAAK,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACtF,YAAY,sBAAsB,CAAC,gBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC;AACpG,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI;AAC/B,IAAI,IAAI,GAAG,KAAK,QAAQ,IAAI,EAAE,sBAAsB,IAAI,UAAU,CAAC,EAAE;AACrE,QAAQ,UAAU,CAAC,oBAAoB,GAAG,KAAK;AAC/C,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE;AAC9C;AACA,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU;AAC5C,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC9B,QAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC/D,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC/D,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iMAAiM,CAAC,CAAC;AAC5R,YAAY;AACZ,QAAQ;AACR,QAAQ,UAAU,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AACrD,QAAQ,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK;AACzG,YAAY,GAAG;AACf,YAAY,sBAAsB,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;AAClF,SAAS,CAAC,CAAC;AACX,IAAI;AACJ;AACA,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK;AAClC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzB,QAAQ,UAAU,CAAC,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC;AAClF,IAAI;AACJ;AACA,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,sBAAsB,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1H,IAAI;AACJ;AACA,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;AAC5F,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC/C,YAAY,OAAO,UAAU,CAAC,KAAK;AACnC,QAAQ;AACR,aAAa;AACb,YAAY,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,sBAAsB,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1H,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE;AACrC,QAAQ,OAAO,UAAU,CAAC,OAAO;AACjC,IAAI;AACJ;AACA,IAAI,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI;AAC/B,IAAI,IAAI,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE;AAChD,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACrC,YAAY,MAAM,IAAI,SAAS,CAAC,CAAC,2BAA2B,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5F,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;AAC9C,QAAQ,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE;AAC3C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,GAAG,CAAC,iDAAiD,CAAC,CAAC;AACvG,QAAQ;AACR,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACjC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpH,QAAQ;AACR;AACA,QAAQ,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC;AACjE,QAAQ,OAAO,UAAU,CAAC,IAAI;AAC9B;AACA;AACA,QAAQ,OAAO,sBAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC;AAC7D,IAAI;AACJ,IAAI,OAAO,UAAU;AACrB;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,wBAAwB,CAAC,CAAC;AAChG,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7C,IAAI,IAAI,QAAQ,GAAG,IAAI;AACvB,IAAI,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACjC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,6CAA6C,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChH,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC;AACnC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1E,QAAQ;AACR,QAAQ,QAAQ,GAAG,KAAK;AACxB,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,IAAI,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACzE;AACA,SAAS,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACzB,QAAQ,CAAC,EAAE;AACX,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;AACnB,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;;AChJA,SAAS,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5C,IAAI,OAAOC,eAAgB,CAAC,MAAM,EAAE;AACpC,QAAQ,gBAAgB,EAAE,IAAI;AAC9B,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI;AAC1B,QAAQ,YAAY,EAAE,eAAe;AACrC,QAAQ,YAAY,EAAE,iBAAiB;AACvC,QAAQ,gBAAgB,EAAE,UAAU;AACpC,KAAK,CAAC;AACN;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACnC,IAAI,OAAO,kBAAkB,CAACC,YAAe,CAAC,MAAM,EAAE;AACtD,QAAQ,MAAM,EAAE,SAAS;AACzB,KAAK,CAAC,CAAC;AACP;AACA,SAAS,OAAO,CAAC,SAAS,EAAE;AAC5B,IAAI,OAAO,MAAM,IAAI,SAAS;AAC9B;AAiDO,SAAS,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE;AACtD,IAAI,OAAO,uBAAuB,CAAC;AACnC,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,GAAG,KAAK;AAChB,QAAQ,IAAI;AACZ,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC;AAC1G,KAAK,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD;;AC1EO,MAAM,aAAa,GAAgB,cAAc;AAkBxD,MAAM,mCAAmC,GAAG,OAAO;AACnD,MAAM,mCAAmC,GAAG,CAAC;AAC7C,MAAM,oCAAoC,GAAG,GAAG;AAEhD;AACO,MAAM,gBAAgB,GAAiB;AAC5C,IAAA,OAAO,EAAE;QACP,SAAS,EAAE,IAAI,GAAG,SAAS;QAC3B,YAAY,EAAE,KAAK,GAAG,SAAS;QAC/B,UAAU,EAAE,EAAE,GAAG,SAAS;AAC3B,KAAA;AACD,IAAA,YAAY,EAAE;QACZ,SAAS,EAAE,IAAI,GAAG,SAAS;QAC3B,YAAY,EAAE,KAAK,GAAG,SAAS;QAC/B,UAAU,EAAE,CAAC,GAAG,SAAS;AAC1B,KAAA;AACD,IAAA,cAAc,EAAE;QACd,SAAS,EAAE,IAAI,GAAG,SAAS;QAC3B,YAAY,EAAE,KAAK,GAAG,SAAS;QAC/B,UAAU,EAAE,GAAG,GAAG,SAAS;AAC5B,KAAA;AACD,IAAA,cAAc,EAAE;QACd,SAAS,EAAE,GAAG,GAAG,SAAS;QAC1B,YAAY,EAAE,IAAI,GAAG,SAAS;QAC9B,UAAU,EAAE,IAAI,GAAG,SAAS;AAC7B,KAAA;AACD,IAAA,YAAY,EAAE;QACZ,SAAS,EAAE,IAAI,GAAG,SAAS;QAC3B,YAAY,EAAE,KAAK,GAAG,SAAS;QAC/B,UAAU,EAAE,GAAG,GAAG,SAAS;AAC5B,KAAA;AACD,IAAA,SAAS,EAAE;QACT,SAAS,EAAE,IAAI,GAAG,SAAS;QAC3B,YAAY,EAAE,KAAK,GAAG,SAAS;QAC/B,UAAU,EAAE,EAAE,GAAG,SAAS;AAC3B,KAAA;AACD,IAAA,SAAS,EAAE;QACT,SAAS,EAAE,GAAG,GAAG,SAAS;QAC1B,YAAY,EAAE,IAAI,GAAG,SAAS;QAC9B,UAAU,EAAE,EAAE,GAAG,SAAS;AAC3B,KAAA;AACD,IAAA,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,GAAG,SAAS;QACxB,YAAY,EAAE,GAAG,GAAG,SAAS;QAC7B,UAAU,EAAE,EAAE,GAAG,SAAS;AAC3B,KAAA;AACD,IAAA,aAAa,EAAE;QACb,SAAS,EAAE,EAAE,GAAG,SAAS;QACzB,UAAU,EAAE,GAAG,GAAG,SAAS;AAC5B,KAAA;AACD,IAAA,SAAS,EAAE;QACT,SAAS,EAAE,IAAI,GAAG,SAAS;QAC3B,YAAY,EAAE,KAAK,GAAG,SAAS;QAC/B,UAAU,EAAE,EAAE,GAAG,SAAS;AAC3B,KAAA;AACD,IAAA,aAAa,EAAE;QACb,SAAS,EAAE,EAAE,GAAG,SAAS;QACzB,UAAU,EAAE,GAAG,GAAG,SAAS;AAC5B,KAAA;AACD,IAAA,eAAe,EAAE;QACf,SAAS,EAAE,IAAI,GAAG,SAAS;QAC3B,YAAY,EAAE,KAAK,GAAG,SAAS;QAC/B,UAAU,EAAE,EAAE,GAAG,SAAS;AAC3B,KAAA;AACD,IAAA,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAI,GAAG,SAAS;QAC3B,YAAY,EAAE,KAAK,GAAG,SAAS;QAC/B,UAAU,EAAE,EAAE,GAAG,SAAS;AAC3B,KAAA;CACF;AAEM,MAAM,kBAAkB,GAAiB;AAC9C,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,IAAI,GAAG,SAAS;AAC3B,QAAA,YAAY,EAAE,IAAI,GAAG,SAAS;AAC9B,QAAA,UAAU,EAAE,GAAG,GAAG,SAAS;AAC5B,KAAA;AACD,IAAA,mBAAmB,EAAE;AACnB,QAAA,SAAS,EAAE,IAAI,GAAG,SAAS;AAC3B,QAAA,YAAY,EAAE,IAAI,GAAG,SAAS;AAC9B,QAAA,UAAU,EAAE,IAAI,GAAG,SAAS;AAC7B,KAAA;CACF;AAED,SAAS,+BAA+B,CAAC,KAAa,EAAE,WAAmB,EAAA;AACzE,IAAA,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,KAAK,WAAW,GAAG,mCAAmC;AAC1G;AAWO,MAAM,6BAA6B,GAA8B,MAAM;AACvE,MAAM,0BAA0B,GAA2B,WAAW;AAE7E,MAAM,0BAA0B,GAAsC;IACpE,aAAa;IACb,wBAAwB;IACxB,eAAe;IACf,aAAa;IACb,kBAAkB;CACnB;AACD,MAAM,0BAA0B,GAAsC,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;AAE7G;;;;AAIG;AACI,MAAM,+BAA+B,GAGxC;AACF,IAAA,aAAa,EAAE;AACb,QAAA,GAAG,EAAE;AACH,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACF,KAAA;AACD,IAAA,wBAAwB,EAAE;AACxB,QAAA,GAAG,EAAE;AACH,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,GAAG,EAAE;AACH,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,WAAW,EAAE,GAAG;AACjB,SAAA;AACF,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,GAAG,EAAE;AACH,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,WAAW,EAAE,IAAI;AAClB,SAAA;AACF,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,GAAG,EAAE;AACH,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA;AACF,KAAA;CACF;AAkBD,SAAS,wBAAwB,CAAC,KAAa,EAAA;AAC7C,IAAA,OAAO,0BAA0B,CAAC,QAAQ,CAAC,KAA+B,CAAC;AAC7E;AAEA,SAAS,wBAAwB,CAAC,IAAY,EAAA;AAC5C,IAAA,OAAO,0BAA0B,CAAC,QAAQ,CAAC,IAA8B,CAAC;AAC5E;AAEA,SAAS,0BAA0B,CAAC,OAAwC,EAAA;AAC1E,IAAA,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,EAAE;AACnE,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,OAAO,6BAA6B;AACtC;AAEA,SAAS,uBAAuB,CAAC,IAAkC,EAAA;IACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE;AAC9D,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,0BAA0B;AACnC;AAEA;;;;;;;;AAQG;AACG,SAAU,kBAAkB,CAChC,KAAgC,EAChC,UAAkB,EAClB,OAAwC,EACxC,IAAkC,EAAA;AAElC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,IAAI,CAAC,EAAE;AAClF,QAAA,OAAO,CAAC;IACV;AAEA,IAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC;AAE9C,IAAA,MAAM,cAAc,GAAG,0BAA0B,CAAC,OAAO,CAAC;AAC1D,IAAA,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC;AACjD,IAAA,MAAM,YAAY,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC;IAExF,OAAO,UAAU,GAAG,YAAY;AAClC;AAEA;;;;;;;;;;AAUG;AACG,SAAU,aAAa,CAC3B,QAAgB,EAChB,KAAa,EACb,WAAmB,EACnB,YAAoB,EACpB,eAAwB,EACxB,cAAuB,EAAA;IAEvB,IACE,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,WAAW,KAAK,QAAQ;QAC/B,OAAO,YAAY,KAAK,QAAQ;SAC/B,eAAe,KAAK,SAAS,IAAI,OAAO,eAAe,KAAK,QAAQ,CAAC;SACrE,cAAc,KAAK,SAAS,IAAI,OAAO,cAAc,KAAK,QAAQ,CAAC,EACpE;AACA,QAAA,OAAO,CAAC;IACV;AAEA,IAAA,MAAM,UAAU,GAAG,QAAQ,KAAK,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAEhG,IAAA,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,CAAC;AAEzB,IAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC;AACrF,IAAA,IAAI,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC,SAAS;IAClD,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,IAAI,qBAAqB,GAAG,CAAC,EAAE;AAC5E,QAAA,SAAS,GAAG,qBAAqB,GAAG,UAAU,CAAC,YAAY,GAAG,CAAC,WAAW,GAAG,qBAAqB,IAAI,UAAU,CAAC,SAAS;IAC5H;AAEA,IAAA,IAAI,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,UAAU;IACrD,IAAI,aAAa,GAAG,CAAC,eAAe,IAAI,CAAC,IAAI,UAAU,CAAC,UAAU;IAElE,IAAI,QAAQ,KAAK,QAAQ,IAAI,+BAA+B,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;QAChF,SAAS,IAAI,mCAAmC;QAChD,UAAU,IAAI,oCAAoC;QAClD,aAAa,IAAI,oCAAoC;IACvD;AAEA,IAAA,OAAO,SAAS,GAAG,UAAU,GAAG,aAAa;AAC/C;;ACvVA;;;;AAIG;AACG,SAAU,aAAa,CAAC,OAAe,EAAA;;IAE3C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;IAEvC,IAAI,KAAK,GAAG,CAAC;AAEb,IAAA,SAAS,KAAK,GAAA;QACZ,MAAM,OAAO,GAAgB,EAAE;AAC/B,QAAA,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE;AAC7B,YAAA,cAAc,EAAE;AAChB,YAAA,MAAM,KAAK,GAAG,UAAU,EAAE;AAC1B,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACrB;iBAAO;gBACL,KAAK,EAAE,CAAC;YACV;QACF;AACA,QAAA,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO;IACpD;AAEA,IAAA,SAAS,UAAU,GAAA;AACjB,QAAA,cAAc,EAAE;AAChB,QAAA,MAAM,IAAI,GAAG,OAAO,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,SAAS;QAC3B,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,WAAW,EAAE;QACtC,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,UAAU,EAAE;AACrC,QAAA,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,WAAW,EAAE;QACtD,IAAI,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YAC5E,KAAK,IAAI,CAAC;AACV,YAAA,OAAO,IAAI;QACb;QACA,IAAI,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;YAC7E,KAAK,IAAI,CAAC;AACV,YAAA,OAAO,KAAK;QACd;QACA,IAAI,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YAC5E,KAAK,IAAI,CAAC;AACV,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,WAAW,EAAE,CAAC;AAChD,QAAA,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,WAAW,EAAE;QACzE,OAAO,SAAS,CAAC;IACnB;AAEA,IAAA,SAAS,WAAW,GAAA;QAClB,MAAM,GAAG,GAAe,EAAE;QAC1B,KAAK,EAAE,CAAC;AACR,QAAA,cAAc,EAAE;QAChB,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE;AAClD,YAAA,cAAc,EAAE;AAChB,YAAA,MAAM,GAAG,GAAG,WAAW,EAAE;AACzB,YAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,gBAAA,OAAO,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAA,CAAE,CAAC;AACjD,gBAAA,KAAK,EAAE;gBACP;YACF;AACA,YAAA,cAAc,EAAE;AAChB,YAAA,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE;gBACrB,KAAK,EAAE,CAAC;YACV;iBAAO;gBACL,OAAO,CAAC,IAAI,CAAC,CAAA,yBAAA,EAA4B,GAAG,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAE,CAAC;YACvE;AACA,YAAA,cAAc,EAAE;AAChB,YAAA,MAAM,KAAK,GAAG,UAAU,EAAE;AAC1B,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAO,CAAC,IAAI,CAAC,CAAA,wBAAA,EAA2B,GAAG,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAE,CAAC;AACpE,gBAAA,KAAK,EAAE;gBACP;YACF;AACA,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAChB,YAAA,cAAc,EAAE;AAChB,YAAA,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE;gBACrB,KAAK,EAAE,CAAC;YACV;iBAAO;gBACL;YACF;AACA,YAAA,cAAc,EAAE;QAClB;AACA,QAAA,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE;YACrB,KAAK,EAAE,CAAC;QACV;aAAO;;YAEL,OAAO,IAAI,GAAG;QAChB;AACA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,SAAS,UAAU,GAAA;QACjB,MAAM,GAAG,GAAc,EAAE;QACzB,KAAK,EAAE,CAAC;AACR,QAAA,cAAc,EAAE;QAChB,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE;AAClD,YAAA,MAAM,KAAK,GAAG,UAAU,EAAE;AAC1B,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,CAAA,CAAE,CAAC;AACnD,gBAAA,KAAK,EAAE;YACT;iBAAO;AACL,gBAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YACjB;AACA,YAAA,cAAc,EAAE;AAChB,YAAA,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE;gBACrB,KAAK,EAAE,CAAC;YACV;iBAAO;gBACL;YACF;AACA,YAAA,cAAc,EAAE;QAClB;AACA,QAAA,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE;YACrB,KAAK,EAAE,CAAC;QACV;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,iDAAiD,KAAK,CAAA,CAAE,CAAC;QACxE;AACA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,SAAS,WAAW,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,OAAO,EAAE;QAC3B,IAAI,MAAM,GAAG,EAAE;QACf,IAAI,QAAQ,GAAG,KAAK;QACpB,IAAI,SAAS,GAAG,EAAE;QAElB,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE;YAC1C,QAAQ,GAAG,IAAI;YACf,SAAS,GAAG,SAAS;YACrB,KAAK,EAAE,CAAC;QACV;AAEA,QAAA,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE;AAC7B,YAAA,MAAM,IAAI,GAAG,OAAO,EAAE;YACtB,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,KAAK,EAAE,CAAC;AACR,oBAAA,OAAO,MAAM;gBACf;AAAO,qBAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACxB,oBAAA,KAAK,EAAE;AACP,oBAAA,MAAM,UAAU,GAAG,OAAO,EAAE;AAC5B,oBAAA,MAAM,eAAe,GAA8B;AACjD,wBAAA,CAAC,EAAE,IAAI;AACP,wBAAA,CAAC,EAAE,IAAI;AACP,wBAAA,CAAC,EAAE,IAAI;AACP,wBAAA,CAAC,EAAE,IAAI;AACP,wBAAA,CAAC,EAAE,IAAI;AACP,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,GAAG,EAAE,GAAG;AACR,wBAAA,GAAG,EAAE,GAAG;AACR,wBAAA,GAAG,EAAE,GAAG;AACR,wBAAA,CAAC,EAAE,GAAG;qBACP;AACD,oBAAA,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,IAAI,UAAU;gBACrD;qBAAO;oBACL,MAAM,IAAI,IAAI;gBAChB;AACA,gBAAA,KAAK,EAAE;YACT;iBAAO;AACL,gBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,oBAAA,OAAO,MAAM;gBACf;qBAAO;oBACL,MAAM,IAAI,IAAI;AACd,oBAAA,KAAK,EAAE;gBACT;YACF;QACF;QACA,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,CAAC,IAAI,CAAC,yDAAyD,KAAK,CAAA,CAAE,CAAC;QAChF;AACA,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,SAAS,WAAW,GAAA;QAClB,MAAM,WAAW,GAAG,+BAA+B;AACnD,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;AACxB,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,CAAA,CAAE,CAAC;AACnD,YAAA,KAAK,EAAE;AACP,YAAA,OAAO,SAAS;QAClB;IACF;AAEA,IAAA,SAAS,OAAO,GAAA;AACd,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB;AAEA,IAAA,SAAS,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAAE,YAAA,KAAK,EAAE;IACtC;AAEA,IAAA,IAAI;QACF,OAAO,KAAK,EAAE;IAChB;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,CAAA,+BAAA,EAAkC,KAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAC;AAChE,QAAA,OAAO,IAAI;IACb;AACF;AAEA;;;;;;;AAOG;AACG,SAAU,WAAW,CAAC,UAAkB,EAAA;AAC5C,IAAA,IAAI;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACtB,QAAA,OAAO,IAAI;IACb;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,KAAK;IACd;AACF;AASA,IAAI,MAAc;AAElB;;;;;AAKG;AACH,SAAS,gBAAgB,CAAC,MAAe,EAAA;IACvC,MAAM,GAAG,GAAa,OAAO,CAAC,GAAG,CAAC,cAAc;IAChD,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC;IACtG;IACA,OAAO,IAAI,MAAM,CAAC;AAChB,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,cAAc,EAAE,EAAE,YAAY,EAAE,4DAA4D,EAAE;AAC/F,KAAA,CAAC;AACJ;AAEA;;;;;;;AAOG;AACI,eAAe,aAAa,CAAC,OAAe,EAAE,MAAe,EAAA;AAClE,IAAA,IAAI;QACF,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,gBAAgB,EAAE;QAC7B;QAEA,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACtD,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,OAAO,EAAE,0FAA0F;AACpG,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAA,uBAAA,EAA0B,OAAO,CAAA,CAAE;AAC7C,iBAAA;AACF,aAAA;AACD,YAAA,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;AACzC,SAAA,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO;AAEzD,QAAA,IAAI,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9B;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IAC/C;IAAE,OAAO,GAAY,EAAE;AACrB,QAAA,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,wBAAwB;AAClF,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,CAAA,CAAE,CAAC;IAC/D;AACF;;AC/RA;AAKM,SAAU,kBAAkB,CAAC,KAAa,EAAA;IAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAc;AAC3D;AAEO,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC;AAEjH;;;;;;;;;;AAUG;AACE,eAAe,aAAa,CAAI,OAAe,EAAE,cAAoC,EAAA;AAC1F,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,IAAI;AAEzB,IAAA,IAAI,cAAc,KAAK,MAAM,KAAK,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,EAAE,IAAI,KAAK,aAAa,CAAC,EAAE;AAC/G,QAAA,IAAI,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE;QACnC,IAAI,YAAY,GAAkB,IAAI;;QAGtC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;YACzD,IAAI,cAAc,CAAC,UAAU,CAAC,SAAS,IAAI,CAAA,CAAE,CAAC,EAAE;gBAC9C,YAAY,GAAG,IAAI;AACnB,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,KAAK;AACd,QAAA,CAAC,CAAC;QAEF,IAAI,mBAAmB,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzD,MAAM,iBAAiB,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;AACtD,YAAA,IAAI,iBAAiB,KAAK,EAAE,EAAE;AAC5B,gBAAA,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;gBACvE,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,YAAY,CAAA,wCAAA,EAA2C,cAAc,CAAA,CAAE,CAAC;YAC7G;QACF;;AAGA,QAAA,MAAM,qBAAqB,GAAG;;AAE5B,YAAA,MAAK;AACH,gBAAA,IAAI;AACF,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;gBACnC;AAAE,gBAAA,MAAM;AACN,oBAAA,OAAO,IAAI;gBACb;YACF,CAAC;;AAED,YAAA,MAAK;gBACH,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBACzD,IAAI,SAAS,EAAE;AACb,oBAAA,IAAI;wBACF,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACjC;AAAE,oBAAA,MAAM;AACN,wBAAA,OAAO,IAAI;oBACb;gBACF;AACA,gBAAA,OAAO,IAAI;YACb,CAAC;;AAED,YAAA,MAAK;gBACH,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;AACjE,gBAAA,IAAI;AACF,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC9B;AAAE,gBAAA,MAAM;AACN,oBAAA,OAAO,IAAI;gBACb;YACF,CAAC;;AAED,YAAA,MAAK;AACH,gBAAA,OAAO,aAAa,CAAC,cAAc,CAAC;YACtC,CAAC;;AAED,YAAA,MAAK;AACH,gBAAA,OAAO,aAAa,CAAC,cAAc,CAAC;YACtC,CAAC;SACF;;AAGD,QAAA,KAAK,MAAM,QAAQ,IAAI,qBAAqB,EAAE;AAC5C,YAAA,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE;AAC/B,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,OAAO,MAAW;YACpB;QACF;;QAGA,OAAO,CAAC,KAAK,CAAC,CAAA,mCAAA,EAAsC,cAAc,CAAA,iBAAA,EAAoB,OAAO,CAAA,CAAE,CAAC;AAChG,QAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;IAClD;SAAO;AACL,QAAA,OAAO,OAAY;IACrB;AACF;;ACrGA;AA0CA,MAAM,uBAAuB,GAAG,YAAY;AAE5C;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,MAAc,EAAA;AAChD,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,WAAW,CAAC,MAAyB,EAAA;AAC5C,IAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,WAAW,IAAI,MAAM;AAC/E;AAEA,SAAS,qBAAqB,CAC5B,MAAyB,EACzB,UAAkB,EAClB,iBAA0B,EAC1B,YAAsB,EAAA;AAEtB,IAAA,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QACvB,MAAM,SAAS,GAAG,aAAa,CAC7B,MAAM,EACN,UAAU,EACV;AACE,cAAE;AACE,gBAAA,WAAW,EAAE,iBAAiB;AAC/B;cACD,SAAS,CACd;QAED,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,SAAS,CAAC,MAAM;AACxB,YAAA,IAAI,SAAS,CAAC,WAAW,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;YACxE,IAAI,YAAY,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;SAC1F;IACH;IAEA,OAAO;AACL,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,UAAU;QAChB,MAAM;AACN,QAAA,IAAI,iBAAiB,GAAG,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC;AAChE,QAAA,IAAI,YAAY,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;KAChE;AACH;AAEA,SAAS,mBAAmB,CAAC,MAAe,EAAA;IAC1C,MAAM,cAAc,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;IAE3D,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC;IACtG;AAEA,IAAA,OAAO,cAAc;AACvB;AAEA,SAAS,kBAAkB,CAAC,MAAc,EAAA;IACxC,OAAO,IAAI,MAAM,CAAC;QAChB,MAAM;AACP,KAAA,CAAC;AACJ;AAEA,SAAS,qBAAqB,CAAC,SAAiB,EAAE,QAAQ,GAAG,uBAAuB,EAAA;AAClF,IAAA,OAAO,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,CAAA,KAAA,EAAQ,QAAQ,CAAA,QAAA,EAAW,SAAS,EAAE;AAC3F;AAEA,SAAS,mBAAmB,CAAC,QAAgB,EAAA;IAC3C,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;IACnD,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtD,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,QAAQ,CAAA,CAAE,CAAC;IAC/E;AAEA,IAAA,OAAO,QAAQ;AACjB;AAEA,SAAS,kBAAkB,CAAC,QAAgB,EAAA;AAC1C,IAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE;AAE7C,IAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnC,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACvE,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACpC,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnC,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,OAAO,SAAS;AAClB;AAEA,eAAe,kBAAkB,CAAC,QAAgB,EAAA;AAChD,IAAA,IAAI;QACF,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAEV;QACjE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC;AAE5D,QAAA,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC;IACjC;AAAE,IAAA,MAAM;AACN,QAAA,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC;IACvG;AACF;AAEA,eAAe,wBAAwB,CACrC,MAAc,EACd,QAAgB,EAChB,QAAiB,EACjB,QAAiB,EAAA;AAEjB,IAAA,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC;IACpD,MAAM,gBAAgB,GAAG,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,CAAC;IAClE,MAAM,gBAAgB,GAAG,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,CAAC;IACjE,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,MAAM,CACxC,SAAS,EACT,gBAAgB,EAChB,gBAAgB,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAC1D;IAED,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7C,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,OAAO,EAAE,QAAQ;AAClB,KAAA,CAAC;IAEF,OAAO,YAAY,CAAC,EAAE;AACxB;AAEA,SAAS,kBAAkB,CACzB,KAAmC,EACnC,MAAsC,EACtC,WAA+B,EAAA;IAE/B,MAAM,eAAe,GAAuB,EAAE;IAE9C,IAAI,KAAK,EAAE;AACT,QAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;IAEA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACjC;IAEA,IAAI,WAAW,EAAE;QACf,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/C;AAEA,IAAA,OAAO,eAAe;AACxB;AAEA,SAAS,iBAAiB,CAAC,MAA0B,EAAA;AACnD,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC;AACpD;AAEA,eAAe,qBAAqB,CAClC,KAAuB,EACvB,aAAgC,EAChC,MAAe,EAAA;AAEf,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,aAAa;AAE5C,IAAA,IAAI,KAAK,IAAI,KAAK,EAAE;QAClB,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,SAAS,EAAE,KAAK,CAAC,GAAG;SACrB;IACH;AAEA,IAAA,IAAI,SAAS,IAAI,KAAK,EAAE;QACtB,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,SAAS,EAAE,KAAK,CAAC,OAAO;SACzB;IACH;AAEA,IAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;QACrB,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;SAC/D;IACH;AAEA,IAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;QACrB,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,OAAO,EAAE,KAAK,CAAC,MAAM;SACtB;IACH;IAEA,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC;IACzG;AAEA,IAAA,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IACrG,OAAO;AACL,QAAA,IAAI,EAAE,aAAa;QACnB,MAAM;AACN,QAAA,OAAO,EAAE,MAAM;KAChB;AACH;AAEA,eAAe,kBAAkB,CAC/B,KAAa,EACb,WAA+B,EAC/B,WAA8B,EAC9B,MAAe,EAAA;AAEf,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AAErH,IAAA,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,YAAY,CAAC;AAC/D;AAEO,eAAe,gBAAgB,CACpC,QAAgB,EAChB,UAII,EAAE,EAAA;IAEN,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AAC1D,IAAA,MAAM,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC;AAEjD,IAAA,OAAO,MAAM,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;AAC7F;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,oBAAoB,GAAG,OAClC,KAAyD,EACzD,OAAA,GAGI,EAAE,KACqB;IAC3B,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;AAC1E,IAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,eAAe,CAAA,qCAAA,CAAuC,CAAC;IACtG;IAEA,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AAClD,IAAA,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;;AAGzC,IAAA,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO;AAEzD,IAAA,MAAM,WAAW,GAAqC;AACpD,QAAA,KAAK,EAAE,eAAe;QACtB,KAAK;AACL,QAAA,GAAG,YAAY;KAChB;;IAGD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;IAC3D,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAAE,oBAAoB,EAAE,aAAa,IAAI,CAAC;;AAG/E,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC;AACzB,UAAE,MAAM,CAAC,CAAC,IAAwB,KAAuC,IAAI,CAAC,IAAI,KAAK,eAAe;AACrG,SAAA,GAAG,CAAC,CAAC,QAAkC,MAAM;QAC5C,EAAE,EAAE,QAAQ,CAAC,OAAO;AACpB,QAAA,IAAI,EAAE,UAAmB;AACzB,QAAA,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;AAC9B,SAAA;AACF,KAAA,CAAC,CAAC;;AAGL,IAAA,MAAM,oBAAoB,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAClD,CAAC,IAAwB,KAA8C,IAAI,CAAC,IAAI,KAAK,uBAAuB,CAC7G;IACD,IAAI,sBAAsB,GAA2D,SAAS;IAC9F,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;;QAE3D,sBAAsB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;;YAE3D,IAAI,EAAE,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC,OAAO;AACjC,YAAA,OAAO,EAAE;AACX,QAAA,CAAC,CAAC;IACJ;;IAGA,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QACrC,OAAO;AACL,YAAA,QAAQ,EAAE;gBACR,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;oBACjC,EAAE,EAAE,EAAE,CAAC,EAAE;AACT,oBAAA,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;oBACtB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC7C,iBAAA,CAAC,CAAC;AACC,aAAA;AACN,YAAA,KAAK,EAAE;AACL,gBAAA,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;AAChD,gBAAA,iBAAiB,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;gBACrD,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,IAAI,CAAC;AAC9E,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,gBAAgB,EAAE,cAAc;AAChC,gBAAA,IAAI,EAAE,aAAa,CACjB,QAAQ,EACR,eAAe,EACf,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,EACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,EAClC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,IAAI,CAAC,EAC5D,cAAc,CACf;AACF,aAAA;AACD,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,IAAI,sBAAsB,GAAG,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC;SACxF;IACH;;AAGA,IAAA,MAAM,WAAW,GACf,QAAQ,CAAC;AACP,UAAE,MAAM,CAAC,CAAC,IAAwB,KAAoC,IAAI,CAAC,IAAI,KAAK,SAAS;SAC5F,GAAG,CAAC,CAAC,IAA2B,KAC/B,IAAI,CAAC;SACF,MAAM,CAAC,CAAC,OAAO,KAAoC,OAAO,CAAC,IAAI,KAAK,aAAa;SACjF,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI;SAC7B,IAAI,CAAC,EAAE,CAAC;AAEZ,SAAA,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;;IAGnB,IAAI,aAAa,GAAyB,MAAM;AAChD,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM;AAChD,IAAA,IAAI,eAAe,EAAE,IAAI,KAAK,aAAa,EAAE;QAC3C,aAAa,GAAG,MAAM;IACxB;AAAO,SAAA,IAAI,eAAe,EAAE,IAAI,KAAK,aAAa,EAAE;QAClD,aAAa,GAAG,eAAe;IACjC;;IAGA,MAAM,cAAc,GAAG,MAAM,aAAa,CAAI,WAAW,EAAE,aAAa,CAAC;AACzE,IAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AAC3B,QAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;IAChE;IAEA,OAAO;AACL,QAAA,QAAQ,EAAE,cAAc;AACxB,QAAA,KAAK,EAAE;AACL,YAAA,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;AAChD,YAAA,iBAAiB,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;YACrD,gBAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,IAAI,CAAC;AAC9E,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,gBAAgB,EAAE,cAAc;AAChC,YAAA,IAAI,EAAE,aAAa,CACjB,QAAQ,EACR,eAAe,EACf,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,EACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,EAClC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,IAAI,CAAC,EAC5D,cAAc,CACf;AACF,SAAA;AACD,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,IAAI,sBAAsB,GAAG,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC;KACxF;AACH,CAAC;AAED;;;;;;;;;;;;;;;AAeG;AACI,eAAe,WAAW,CAC/B,KAAa,EACb,UAgBI,EAAE,EAAA;IAEN,MAAM,EACJ,MAAM,EACN,KAAK,GAAG,aAAa,EACrB,cAAc,GAAG,MAAM,EACvB,MAAM,EACN,UAAU,GAAG,UAAU,EACvB,iBAAiB,EACjB,YAAY,EACZ,KAAK,EACL,kBAAkB,GAAG,KAAK,EAC1B,YAAY,GAAG,KAAK,EACpB,KAAK,EACL,MAAM,EACN,WAAW,EACX,WAAW,GAAG,MAAM,EACpB,OAAO,GACR,GAAG,OAAO;;AAGX,IAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC;AACjD,IAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;AACnC,QAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,eAAe,CAAA,qCAAA,CAAuC,CAAC;IACtG;AAEA,IAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAClD,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC;AAClE,IAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,GAAG,kBAAkB,CAAC,cAAc,CAAC,GAAG,SAAS;AAC9F,IAAA,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC;;AAGvF,IAAA,IAAI,cAAsC;IAE1C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;;QAEjC,MAAM,oBAAoB,GAAuB,EAAE;;AAGnD,QAAA,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE;YAChC,oBAAoB,CAAC,IAAI,CAAC;gBACxB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,OAAO,EAAE,UAAU,CAAC,OAAO;AAC3B,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA,CAAC;QACJ;;AAGA,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;;YAE1B,oBAAoB,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA,CAAC;QACJ;aAAO;;YAEL,oBAAoB,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA,CAAC;QACJ;QAEA,cAAc,GAAG,oBAAoB;IACvC;AAAO,SAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEjC,QAAA,cAAc,GAAG;AACf,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;SACF;IACH;SAAO;;QAEL,cAAc,GAAG,KAAK;IACxB;;AAGA,IAAA,IAAI,gBAAgB,GAA+C;AACjE,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,mBAAmB,EAAE,KAAK;QAC1B,KAAK;KACN;;IAQD,IAAI,MAAM,EAAE;QACV,gBAAgB,CAAC,IAAI,GAAG;YACtB,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,CAAC;SACnF;IACH;AAAO,SAAA,IAAI,cAAc,KAAK,MAAM,EAAE;AACpC,QAAA,gBAAgB,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;IAC7D;SAAO,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,EAAE;QACtF,gBAAgB,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE;IACpD;;IAGA,IAAI,kBAAkB,EAAE;AACtB,QAAA,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;AACpF,QAAA,gBAAgB,CAAC,OAAO,GAAG,CAAC,+BAA+B,CAAC;IAC9D;IAEA,IAAI,YAAY,EAAE;QAChB,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC3D;AAEA,IAAA,OAAO,MAAM,oBAAoB,CAAI,cAAc,EAAE,gBAAgB,CAAC;AACxE;;ACpkBO,MAAM,mBAAmB,GAAoB,aAAa;AAE1D,MAAM,iBAAiB,GAAG,CAAC,KAAuB,KAAsB,KAAK,IAAI,mBAAmB;AAE3G,MAAM,wBAAwB,GAA0B,IAAI,GAAG,CAAC,aAAa,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AACI,eAAe,cAAc,CAClC,MAAc,EACd,UAAkC,EAAE,EAAA;AAEpC,IAAA,MAAM,EACJ,KAAK,EACL,IAAI,GAAG,MAAM,EACb,YAAY,GAAG,MAAM,EACrB,WAAW,GAAG,EAAE,EAChB,OAAO,GAAG,MAAM,EAChB,KAAK,GAAG,CAAC,EACT,UAAU,GAAG,MAAM,EACnB,UAAU,GAAG,MAAM,EACnB,MAAM,EACN,WAAW,GACZ,GAAG,OAAO;AACX,IAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC;AAC3C,IAAA,MAAM,oBAAoB,GAAG,WAAW,IAAI,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,SAAS;AAC/G,IAAA,IAAI,WAAW,IAAI,CAAC,oBAAoB,EAAE;AACxC,QAAA,OAAO,CAAC,IAAI,CACV,gBAAgB,WAAW,CAAA,mFAAA,CAAqF,CACjH;IACH;;IAGA,MAAM,eAAe,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;IAC5D,IAAI,CAAC,eAAe,EAAE;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC;IACtG;;IAGA,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACzC,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;IACtD;AAEA,IAAA,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,EAAE;AACtC,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;IACnD;AAEA,IAAA,IAAI,WAAW,KAAK,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,GAAG,CAAC,EAAE;AACzD,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAC1D;AAEA,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AACxB,QAAA,MAAM,EAAE,eAAe;AACxB,KAAA,CAAC;;AAGF,IAAA,MAAM,aAAa,GAAwB;AACzC,QAAA,KAAK,EAAE,UAAU;QACjB,MAAM;QACN,CAAC,EAAE,KAAK,IAAI,CAAC;QACb,IAAI,EAAE,IAAI,IAAI,MAAM;QACpB,OAAO,EAAE,OAAO,IAAI,MAAM;QAC1B,UAAU,EAAE,UAAU,IAAI,MAAM;QAChC,UAAU,EAAE,UAAU,IAAI,MAAM;KACjC;;IAGD,IAAI,YAAY,EAAE;AAChB,QAAA,aAAa,CAAC,aAAa,GAAG,YAAY;IAC5C;;AAGA,IAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,QAAA,aAAa,CAAC,kBAAkB,GAAG,WAAW;IAChD;AAEA,IAAA,IAAI;;QAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;;AAG5D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC;QAC9D;;AAGA,QAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC;;AAGtE,QAAA,MAAM,gBAAgB,GAA2B;AAC/C,YAAA,GAAG,QAAQ;AACX,YAAA,KAAK,EAAE;;AAEL,gBAAA,IAAI,QAAQ,CAAC,KAAK,IAAI;AACpB,oBAAA,YAAY,EAAE,CAAC;oBACf,oBAAoB,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;AACzD,oBAAA,aAAa,EAAE,CAAC;AAChB,oBAAA,YAAY,EAAE,CAAC;iBAChB,CAAC;AACF,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,KAAK,EAAE,UAAU;gBACjB,IAAI;AACJ,gBAAA,IAAI,oBAAoB,GAAG,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC;AACvE,aAAA;SACF;AAED,QAAA,OAAO,gBAAgB;IACzB;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe;AACxE,QAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,CAAA,CAAE,CAAC;IAC9D;AACF;;ACtJA;;AAEG;AACH,MAAM,wBAAwB,GAAG;AAC/B,IAAA,YAAY,EAAE,eAAgC;CAC/C;AAED;;;;AAIG;AACH,MAAM,wBAAwB,GAAG,CAAC,KAAa,KAA4B;IACzE,OAAO,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/D,CAAC;AAED;;;;AAIG;AACH,MAAM,kBAAkB,GAAG,CAAC,KAAa,KAAa;IACpD,OAAO,KAAK,KAAK,eAAe;AAClC,CAAC;AAED;;;;AAIG;AACH,MAAM,mBAAmB,GAAG,CAAC,KAAa,KAAa;IACrD,OAAO,KAAK,KAAK,eAAe;AAClC,CAAC;AAED;;;;;;AAMG;AACH,SAAS,+BAA+B,CAAC,cAAoC,EAAE,KAAa,EAAA;;IAE1F,IAAI,cAAc,KAAK,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AAC3D,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,CAAA,yDAAA,CAA2D,CAAC;AACvF,QAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IACzB;AAEA,IAAA,IAAI,cAAc,KAAK,MAAM,EAAE;AAC7B,QAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;IACzB;AACA,IAAA,IAAI,cAAc,KAAK,MAAM,KAAK,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE;AAC9G,QAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;IAChC;AACA,IAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACzB;AAEA;;;;;;;AAOG;AACH,eAAe,wBAAwB,CACrC,OAA6C,EAC7C,cAAoC,EACpC,UAAsB,EAAE,EAAA;;IAGxB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,wBAAwB,CAAC,YAAY;AAC1E,IAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,CAAC;;AAGvD,IAAA,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,EAAE;AAC9C,QAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,eAAe,CAAA,oDAAA,CAAsD,CAAC;IACvH;;AAGA,IAAA,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE;AACtF,QAAA,MAAM,IAAI,KAAK,CAAC,SAAS,eAAe,CAAA,+BAAA,CAAiC,CAAC;IAC5E;IAEA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB;IAC7D,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC;IAC1G;;AAGA,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM;AACN,QAAA,OAAO,EAAE,0BAA0B;AACpC,KAAA,CAAC;IAEF,MAAM,QAAQ,GAAiC,EAAE;;AAGjD,IAAA,IAAI,OAAO,CAAC,eAAe,EAAE;QAC3B,QAAQ,CAAC,IAAI,CAAC;AACZ,YAAA,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,OAAO,CAAC,eAAe;AACjC,SAAA,CAAC;IACJ;;AAGA,IAAA,IAAI,OAAO,CAAC,OAAO,EAAE;QACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC;;AAGA,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,QAAQ,CAAC,IAAI,CAAC;AACZ,YAAA,IAAI,EAAE,MAAM;YACZ,OAAO;AACR,SAAA,CAAC;IACJ;SAAO;QACL,QAAQ,CAAC,IAAI,CAAC;AACZ,YAAA,IAAI,EAAE,MAAM;YACZ,OAAO;AACR,SAAA,CAAC;IACJ;;AAGA,IAAA,IAAI,CAAC,cAAc,KAAK,MAAM,KAAK,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,CAAC;AACxG,WAAA,kBAAkB,CAAC,eAAe,CAAC,EAAE;;AAE1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE;YAC5C,QAAQ,CAAC,OAAO,CAAC;AACf,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,OAAO,EAAE,sCAAsC;AAChD,aAAA,CAAC;QACJ;aAAO;;AAEL,YAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AACnE,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC;AAC1C,YAAA,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE;gBACzC,QAAQ,CAAC,cAAc,CAAC,GAAG;AACzB,oBAAA,GAAG,SAAS;AACZ,oBAAA,OAAO,EAAE,CAAA,EAAG,SAAS,CAAC,OAAO,CAAA,qCAAA,CAAuC;iBACrE;YACH;QACF;IACF;AAEA,IAAA,MAAM,YAAY,GAA+B;AAC/C,QAAA,KAAK,EAAE,eAAe;QACtB,QAAQ;AACR,QAAA,eAAe,EAAE,+BAA+B,CAAC,cAAc,EAAE,eAAe,CAAC;QACjF,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,UAAU,EAAE,OAAO,CAAC,qBAAqB;KAC1C;;IAGD,IAAI,OAAO,CAAC,KAAK,IAAI,mBAAmB,CAAC,eAAe,CAAC,EAAE;AACzD,QAAA,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;IACpC;AAEA,IAAA,IAAI;AACF,QAAA,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC;QAErE,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,EAAE;AACjB,YAAA,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;YACtD,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU;AACtD,YAAA,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI;AACzB,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,iBAAiB,EAAE,CAAC;AACpB,gBAAA,YAAY,EAAE,CAAC;AAChB,aAAA;YACD,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;AACjD,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,KAAK,EAAE,eAAgC;SACxC;IACH;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;AACnD,QAAA,MAAM,KAAK;IACb;AACF;AAEA;;;;;;;AAOG;AACI,MAAM,gBAAgB,GAAG,OAC9B,OAA6C,EAC7C,cAAA,GAAuC,MAAM,EAC7C,OAAA,GAAsB,EAAE,KACG;;AAE3B,IAAA,MAAM,aAAa,GAAG;AACpB,QAAA,GAAG,OAAO;KACX;AAED,IAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACxB,QAAA,aAAa,CAAC,KAAK,GAAG,wBAAwB,CAAC,YAAY;IAC7D;IAEA,MAAM,SAAS,GAAG,kBAAkB,CAAC,aAAa,CAAC,KAAe,CAAC;;IAGnE,IAAI,cAAc,KAAK,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;AAC/D,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,SAAS,CAAA,iEAAA,CAAmE,CAAC;QACnG,OAAO;AACL,YAAA,QAAQ,EAAE;gBACR,KAAK,EAAE,CAAA,MAAA,EAAS,SAAS,CAAA,qCAAA;AACV,aAAA;AACjB,YAAA,KAAK,EAAE;AACL,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,iBAAiB,EAAE,CAAC;AACpB,gBAAA,gBAAgB,EAAE,CAAC;AACnB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,SAA0B;AACjC,gBAAA,gBAAgB,EAAE,CAAC;AACnB,gBAAA,IAAI,EAAE,CAAC;AACR,aAAA;AACD,YAAA,UAAU,EAAE,SAAS;SACtB;IACH;;AAGA,IAAA,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE;AAC5F,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,SAAS,CAAA,kEAAA,CAAoE,CAAC;QACpG,OAAO;AACL,YAAA,QAAQ,EAAE;gBACR,KAAK,EAAE,CAAA,MAAA,EAAS,SAAS,CAAA,+BAAA;AACV,aAAA;AACjB,YAAA,KAAK,EAAE;AACL,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,iBAAiB,EAAE,CAAC;AACpB,gBAAA,gBAAgB,EAAE,CAAC;AACnB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,SAA0B;AACjC,gBAAA,gBAAgB,EAAE,CAAC;AACnB,gBAAA,IAAI,EAAE,CAAC;AACR,aAAA;AACD,YAAA,UAAU,EAAE,SAAS;SACtB;IACH;AAEA,IAAA,IAAI;QACF,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC;;AAGzF,QAAA,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,YAAA,MAAM,OAAO,GAAG,UAAU,CAAC;iBACxB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,UAAU;AACrC,iBAAA,GAAG,CAAC,CAAC,EAAE,MAAM;gBACZ,EAAE,EAAE,EAAE,CAAC,EAAE;AACT,gBAAA,IAAI,EAAG,EAA+C,CAAC,QAAQ,CAAC,IAAI;gBACpE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAE,EAA+C,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC3F,aAAA,CAAC,CAAC;YACL,OAAO;AACL,gBAAA,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,EAAO;AACtC,gBAAA,KAAK,EAAE;AACL,oBAAA,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa;AAC7C,oBAAA,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB;oBACrD,gBAAgB,EAAE,CAAC;AACnB,oBAAA,QAAQ,EAAE,UAAU;oBACpB,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,gBAAgB,EAAE,CAAC;oBACnB,IAAI,EAAE,aAAa,CACjB,UAAU,EACV,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,KAAK,CAAC,aAAa,EAC9B,UAAU,CAAC,KAAK,CAAC,iBAAiB,EAClC,CAAC,EACD,CAAC;AACF,qBAAA;AACF,iBAAA;gBACD,UAAU,EAAE,UAAU,CAAC,UAAU;aAClC;QACH;;QAGF,MAAM,cAAc,GAAG,MAAM,aAAa,CAAI,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC;AAC/E,QAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;QACtD;QAEA,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,KAAK,EAAE;AACL,gBAAA,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa;AAC7C,gBAAA,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB;gBACrD,gBAAgB,EAAE,CAAC;AACnB,gBAAA,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,gBAAgB,EAAE,CAAC;gBACnB,IAAI,EAAE,aAAa,CACjB,UAAU,EACV,UAAU,CAAC,KAAK,EAChB,UAAU,CAAC,KAAK,CAAC,aAAa,EAC9B,UAAU,CAAC,KAAK,CAAC,iBAAiB,EAClC,CAAC,EACD,CAAC;AACF,iBAAA;AACF,aAAA;YACD,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC;IACH;IAAE,OAAO,KAAK,EAAE;;AAEd,QAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;QACnD,OAAO;AACL,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG;AACjC,aAAA;AACjB,YAAA,KAAK,EAAE;AACL,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,iBAAiB,EAAE,CAAC;AACpB,gBAAA,gBAAgB,EAAE,CAAC;AACnB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,SAA0B;AACjC,gBAAA,gBAAgB,EAAE,CAAC;AACnB,gBAAA,IAAI,EAAE,CAAC;AACR,aAAA;AACD,YAAA,UAAU,EAAE,SAAS;SACtB;IACH;AACF,CAAC;;ACjVD;AA0BA;AACA,SAAS,oBAAoB,CAAC,OAAyB,EAAA;AACrD,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACzB,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,WAAW,GAAG,QAAQ,GAAG,GAAG,CAAC,IAAI;QAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAgC;AACrE,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,KAAK;IAC9C,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,IAAI,aAAa,CAAC;IACvD,OAAO,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE;AACzB;AAEA;AACA,SAAS,wBAAwB,CAAC,KAAyB,EAAA;AACzD,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,CAAC,aAAa,CAAC,EAAE;AACvF,IAAA,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC9F,IAAA,MAAM,QAAQ,IAAI,aAAa,KAAK,UAAU,GAAG,UAAU,GAAG,QAAQ,CAA0B;IAChG,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,IAAI,KAAK,CAAC;AACzD,IAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;AAChC;AAsBA;;;AAGG;AACI,eAAe,kBAAkB,CACtC,KAAa,EACb,UAAiC,EAAE,EAAA;IAEnC,MAAM,EACJ,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EACvC,KAAK,EACL,cAAc,GAAG,MAAM,EACvB,KAAK,EACL,UAAU,EACV,OAAO,EACP,eAAe,EACf,WAAW,GAAG,GAAG,EACjB,UAAU,EACV,KAAK,EACL,iBAAiB,EACjB,gBAAgB,EAChB,IAAI,EACJ,IAAI,EACJ,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EACzC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,GACzC,GAAG,OAAO;IAEX,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;IACzF;AAEA,IAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM;AACN,QAAA,OAAO,EAAE,8BAA8B;AACvC,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,OAAO,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC/C,YAAA,IAAI,KAAK,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvC,SAAA;AACF,KAAA,CAAC;IAEF,MAAM,QAAQ,GAAiC,EAAE;AACjD,IAAA,IAAI,eAAe,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE;AAC7C,QAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAC7D;IACA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,QAAQ,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD;AACA,IAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;AAG/C,IAAA,IAAI,eAAoD;IACxD,IAAI,aAAa,GAAyB,MAAM;AAChD,IAAA,IAAI,cAAc,KAAK,MAAM,EAAE;AAC7B,QAAA,eAAe,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;QACzC,aAAa,GAAG,MAAM;IACxB;AAAO,SAAA,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;AAC7C,QAAA,eAAe,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;QACzC,aAAa,GAAG,cAAc;IAChC;AAEA,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC;IAExC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACtD,QAAA,KAAK,EAAE,OAAO;QACd,QAAQ;QACR,eAAe;QACf,KAAK;AACL,QAAA,WAAW,EAAE,UAAU;QACvB,WAAW;QACX,UAAU;QACV,KAAK;QACL,iBAAiB;QACjB,gBAAgB;QAChB,IAAI;QACJ,IAAI;AACL,KAAA,CAAC;IAEF,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS;AACtG,IAAA,MAAM,OAAO,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,CAE9D;AAEb,IAAA,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,wBAAwB,CAAC,OAAO,CAAC;IAClF,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;IACzD,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;AACjE,IAAA,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC;;AAGtF,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,OAAQ,CAAC,UAAW,CAAC,MAAM,GAAG,CAAC;IAC1F,IAAI,YAAY,EAAE;AAChB,QAAA,MAAM,UAAU,GAAa,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,GAAI,aAA0B;QAC/F,OAAO;AACL,YAAA,QAAQ,EAAE,EAAO;AACjB,YAAA,KAAK,EAAE;AACL,gBAAA,aAAa,EAAE,YAAY;AAC3B,gBAAA,iBAAiB,EAAE,gBAAgB;AACnC,gBAAA,QAAQ,EAAE,YAAY;AACtB,gBAAA,KAAK,EAAE,UAAU;gBACjB,IAAI;AACL,aAAA;YACD,UAAU,EAAE,OAAQ,CAAC,UAA6C;SACnE;IACH;AAEA,IAAA,MAAM,OAAO,GAAG,OAAO,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,EAAE;IAC3E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAI,OAAO,EAAE,aAAa,CAAC;AAC7D,IAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;IACxD;;AAGA,IAAA,MAAM,UAAU,GAAa,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,GAAI,aAA0B;IAE/F,OAAO;AACL,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,KAAK,EAAE;AACL,YAAA,aAAa,EAAE,YAAY;AAC3B,YAAA,iBAAiB,EAAE,gBAAgB;AACnC,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,KAAK,EAAE,UAAU;YACjB,IAAI;AACL,SAAA;AACD,QAAA,IAAI,YAAY,GAAG,EAAE,UAAU,EAAE,OAAQ,CAAC,UAA6C,EAAE,GAAG,EAAE,CAAC;KAChG;AACH;;ACjMA;;;;;;;;;;;;;;;;;;;;;AAqBG;MACU,gBAAgB,CAAA;AACnB,IAAA,SAAS;AACT,IAAA,WAAW;AACX,IAAA,SAAS;AAEjB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;AAEA;;;;AAIG;IACH,iBAAiB,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;AACxE,QAAA,OAAO,MAAM,CAAC,CAAC,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C;AAEA;;;;AAIG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;IAChD;AAEA;;AAEG;IACH,IAAI,GAAA;QACF,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;IACrD;AAEA;;;;;;AAMG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;QACnE;AAEA,QAAA,MAAM,MAAM,GAAsB;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,MAAM,EAAE;SACT;AAED,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS;;AAG7B,QAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC5D,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,iBAAiB,EAAE;AAC7C,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,QAAQ;AAChC,YAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,CAAA,CAAE,CAAC;YACxE;AACA,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,KAAK;gBACL;AACD,aAAA,CAAC;YACF,QAAQ,GAAG,IAAI;QACjB;;AAGA,QAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ;AAC/C,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACjB,gBAAA,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;AACrC,aAAA,CAAC;QACJ;AACA,QAAA,OAAO,MAAM;IACf;AAEA;;;;AAIG;IACI,cAAc,GAAA;AACnB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;;QAGvC,MAAM,YAAY,GAAG,CAAC,GAAW,KAC/B,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;;QAGrF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AAC9E,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;;QAGlG,IAAI,MAAM,GAAG,CAAA,CAAA,EAAI,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAA,GAAA,CAAK;AACzF,QAAA,MAAM,IAAI,CAAA,EAAA,EAAK,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA,GAAA,EAAM,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM;QAC9F,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK;;AAGtF,QAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;YAC5B,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA,GAAA,EAAM,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA,IAAA,CAAM;AACvH,QAAA,CAAC,CAAC;;QAGF,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK;QACtF,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA,GAAA,EAAM,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA,IAAA,CAAM;QACnH,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK;AAEtF,QAAA,OAAO,MAAM;IACf;AACD;;;;;;;;;;;;;;;CCxID,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC;AAC/D,CAAA,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,WAAW;;AAE3C,CAAA,IAAI,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;;AAEtC,CAAA,SAAc,GAAG;AACjB,GAAE,YAAY;GACZ,aAAa,EAAE,KAAK;AACtB,GAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;GAC7B,IAAI,EAAE,sCAAsC;AAC9C,GAAE,OAAO;AACT,GAAE,oBAAoB,EAAE,MAAM,CAAC,wBAAwB,CAAC;AACxD,GAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;AAChC,GAAE,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;AACpC,GAAE,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;GAC/B,IAAI,EAAE,MAAM,CAAA;EACb;;;;;;;;;;AChBD,CAAA,MAAM,EAAE,YAAY,EAAE,GAAGC,gBAAA,EAAsB;;AAE/C,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE;GACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,YAAY;GAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;;GAErC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;GAC9C,IAAI,MAAM,GAAG,CAAC;;AAEhB,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,KAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,KAAI,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AAC3B,KAAI,MAAM,IAAI,GAAG,CAAC,MAAM;AACxB,GAAA;;AAEA,GAAE,IAAI,MAAM,GAAG,WAAW,EAAE;AAC5B,KAAI,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;AACnE,GAAA;;AAEA,GAAE,OAAO,MAAM;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AACrD,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,KAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAChD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/B,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KACtC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5B,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,GAAG,EAAE;GAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;KACxC,OAAO,GAAG,CAAC,MAAM;AACrB,GAAA;;AAEA,GAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;AACtE,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,IAAI,EAAE;AACxB,GAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;;GAExB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;;AAExC,GAAE,IAAI,GAAG;;AAET,GAAE,IAAI,IAAI,YAAY,WAAW,EAAE;AACnC,KAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;GAC9B,CAAG,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACvC,KAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AACvE,GAAA,CAAG,MAAM;AACT,KAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,KAAI,QAAQ,CAAC,QAAQ,GAAG,KAAK;AAC7B,GAAA;;AAEA,GAAE,OAAO,GAAG;AACZ,CAAA;;AAEA,CAAAC,UAAA,CAAA,OAAc,GAAG;AACjB,GAAE,MAAM;GACN,IAAI,EAAE,KAAK;AACb,GAAE,aAAa;AACf,GAAE,QAAQ;AACV,GAAE,MAAM,EAAE;EACT;;AAED;AACA,CAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;AACpC,GAAE,IAAI;AACN,KAAI,MAAMC,YAAU,GAAG,OAAA,CAAQ,YAAY,CAAC;;AAE5C,KAAID,UAAA,CAAA,OAAA,CAAA,IAAmB,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1E,OAAM,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAClE,YAAWC,YAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChE,CAAK;;AAEL,KAAID,yBAAqB,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;AACpD,OAAM,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AACnD,YAAWC,YAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;KAC1C,CAAK;GACL,CAAG,CAAC,OAAO,CAAC,EAAE;AACd;AACA,GAAA;AACA,CAAA;;;;;;;;;;;AChIA,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;;AAE3B;AACA;AACA;AACA;AACA,CAAA,MAAM,OAAO,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,WAAW,EAAE;AAC3B,KAAI,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM;OAClB,IAAI,CAAC,OAAO,EAAE;AACpB,OAAM,IAAI,CAAC,IAAI,CAAC,EAAE;KAClB,CAAK;AACL,KAAI,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,QAAQ;AAC9C,KAAI,IAAI,CAAC,IAAI,GAAG,EAAE;AAClB,KAAI,IAAI,CAAC,OAAO,GAAG,CAAC;AACpB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,GAAG,CAAC,GAAG,EAAE;AACX,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,KAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAChB,GAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,CAAC,IAAI,CAAC,GAAG;KACP,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE;;AAE3C,KAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;OACpB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;OAE7B,IAAI,CAAC,OAAO,EAAE;AACpB,OAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB,KAAA;AACA,GAAA;AACA;;AAEA,CAAA,OAAc,GAAG,OAAO;;;;;;;;;;;CCpDxB,MAAM,IAAI,GAAG,UAAe;;CAE5B,MAAM,UAAU,GAAGC,iBAAA,EAAwB;CAC3C,MAAM,OAAO,GAAGC,cAAA,EAAoB;AACpC,CAAA,MAAM,EAAE,WAAW,EAAE,GAAGC,gBAAA,EAAsB;;AAE9C,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACzC,CAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,CAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACvD,CAAA,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AAC3C,CAAA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,CAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,CAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,WAAW;;AAEf;AACA;AACA;AACA,CAAA,MAAM,iBAAiB,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,OAAO,EAAE;AACvB,KAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,EAAE;KAC7B,IAAI,CAAC,UAAU;AACnB,OAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI;KACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC;KAC/C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAC7C,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;AACxB,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAExB,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI;;KAElB,IAAI,CAAC,WAAW,EAAE;AACtB,OAAM,MAAM,WAAW;AACvB,SAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK;aAC/B,IAAI,CAAC,QAAQ,CAAC;AAC1B,aAAY,EAAE;AACd,OAAM,WAAW,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;AAC5C,KAAA;AACA,GAAA;;AAEA;AACA;AACA;GACE,WAAW,aAAa,GAAG;AAC7B,KAAI,OAAO,oBAAoB;AAC/B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,KAAK,GAAG;KACN,MAAM,MAAM,GAAG,EAAE;;AAErB,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AAC/C,OAAM,MAAM,CAAC,0BAA0B,GAAG,IAAI;AAC9C,KAAA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AAC/C,OAAM,MAAM,CAAC,0BAA0B,GAAG,IAAI;AAC9C,KAAA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;OACrC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AACvE,KAAA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;OACrC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;KACvE,CAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,IAAI,IAAI,EAAE;AAC1D,OAAM,MAAM,CAAC,sBAAsB,GAAG,IAAI;AAC1C,KAAA;;AAEA,KAAI,OAAO,MAAM;AACjB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,MAAM,CAAC,cAAc,EAAE;AACzB,KAAI,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;;AAEzD,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc;AAC1C,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;;KAEvC,OAAO,IAAI,CAAC,MAAM;AACtB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,GAAG;AACZ,KAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,OAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC3B,OAAM,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC1B,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;OACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;;AAE/C,OAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC3B,OAAM,IAAI,CAAC,QAAQ,GAAG,IAAI;;OAEpB,IAAI,QAAQ,EAAE;AACpB,SAAQ,QAAQ;AAChB,WAAU,IAAI,KAAK;aACP;AACZ;UACS;AACT,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,CAAC,MAAM,EAAE;AACzB,KAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;KAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;OACvC;AACN,SAAQ,CAAC,IAAI,CAAC,uBAAuB,KAAK,KAAK;WACrC,MAAM,CAAC,0BAA0B;UAClC,MAAM,CAAC,sBAAsB;AACtC,YAAW,IAAI,CAAC,mBAAmB,KAAK,KAAK;AAC7C,cAAa,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ;eAC3C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACzE,UAAS,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ;WAC3C,CAAC,MAAM,CAAC,sBAAsB;SAChC;AACR,SAAQ,OAAO,KAAK;AACpB,OAAA;;AAEA,OAAM,OAAO,IAAI;AACjB,KAAA,CAAK,CAAC;;KAEF,IAAI,CAAC,QAAQ,EAAE;AACnB,OAAM,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AACrE,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACtC,OAAM,QAAQ,CAAC,0BAA0B,GAAG,IAAI;AAChD,KAAA;AACA,KAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACtC,OAAM,QAAQ,CAAC,0BAA0B,GAAG,IAAI;AAChD,KAAA;AACA,KAAI,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AACtD,OAAM,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,mBAAmB;AAChE,KAAA;AACA,KAAI,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AACtD,OAAM,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,mBAAmB;AAChE,KAAA,CAAK,MAAM;AACX,OAAM,QAAQ,CAAC,sBAAsB,KAAK,IAAI;OACxC,IAAI,CAAC,mBAAmB,KAAK;OAC7B;OACA,OAAO,QAAQ,CAAC,sBAAsB;AAC5C,KAAA;;AAEA,KAAI,OAAO,QAAQ;AACnB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,CAAC,QAAQ,EAAE;AAC3B,KAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;;KAE1B;AACJ,OAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,KAAK,KAAK;AACrD,OAAM,MAAM,CAAC;OACP;AACN,OAAM,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;AAC1E,KAAA;;AAEA,KAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;OAClC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,QAAQ,EAAE;SACzD,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AACzE,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,KAAK;AACjD,QAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,QAAQ;SACpD,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;OACnE;OACA,MAAM,IAAI,KAAK;SACb;QACD;AACP,KAAA;;AAEA,KAAI,OAAO,MAAM;AACjB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,eAAe,CAAC,cAAc,EAAE;AAClC,KAAI,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;OACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3C,SAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;;AAE/B,SAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;WACpB,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC7E,SAAA;;AAEA,SAAQ,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;;AAExB,SAAQ,IAAI,GAAG,KAAK,wBAAwB,EAAE;AAC9C,WAAU,IAAI,KAAK,KAAK,IAAI,EAAE;AAC9B,aAAY,MAAM,GAAG,GAAG,CAAC,KAAK;AAC9B,aAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE;eACjD,MAAM,IAAI,SAAS;iBACjB,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;gBAChD;AACf,aAAA;aACY,KAAK,GAAG,GAAG;AACvB,WAAA,CAAW,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;aAC1B,MAAM,IAAI,SAAS;eACjB,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;cAChD;AACb,WAAA;AACA,SAAA,CAAS,MAAM,IAAI,GAAG,KAAK,wBAAwB,EAAE;AACrD,WAAU,MAAM,GAAG,GAAG,CAAC,KAAK;AAC5B,WAAU,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE;aACjD,MAAM,IAAI,SAAS;eACjB,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;cAChD;AACb,WAAA;WACU,KAAK,GAAG,GAAG;AACrB,SAAA,CAAS,MAAM;WACL,GAAG,KAAK,4BAA4B;AAC9C,WAAU,GAAG,KAAK;WACR;AACV,WAAU,IAAI,KAAK,KAAK,IAAI,EAAE;aAClB,MAAM,IAAI,SAAS;eACjB,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;cAChD;AACb,WAAA;AACA,SAAA,CAAS,MAAM;WACL,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD,SAAA;;AAEA,SAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AAC3B,OAAA,CAAO,CAAC;AACR,KAAA,CAAK,CAAC;;AAEN,KAAI,OAAO,cAAc;AACzB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;AAClC,KAAI,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC9B,OAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;AACnD,SAAQ,IAAI,EAAE;AACd,SAAQ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAC7B,OAAA,CAAO,CAAC;AACR,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;AAChC,KAAI,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC9B,OAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;AACjD,SAAQ,IAAI,EAAE;AACd,SAAQ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAC7B,OAAA,CAAO,CAAC;AACR,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;KAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ;;AAEzD,KAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;OAClB,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,OAAM,MAAM,UAAU;AACtB,SAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AACpC,aAAY,IAAI,CAAC;AACjB,aAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAE5B,OAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC5C,SAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB;SACnC;AACR,QAAO,CAAC;AACR,OAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI;AAC9C,OAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;OAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC;OACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;AAC7C,KAAA;;AAEA,KAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ;;AAEvC,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;KACzB,IAAI,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;;AAEzC,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;OACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;;OAEjC,IAAI,GAAG,EAAE;AACf,SAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7B,SAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;SACpB,QAAQ,CAAC,GAAG,CAAC;SACb;AACR,OAAA;;AAEA,OAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM;AACpC,SAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC/B,SAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY;QAC3B;;OAED,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE;AACnD,SAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7B,SAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AACvC,SAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;;AAEpC,SAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE;AACnE,WAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC/B,SAAA;AACA,OAAA;;AAEA,OAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1B,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;KAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ;;AAEzD,KAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;OAClB,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,OAAM,MAAM,UAAU;AACtB,SAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AACpC,aAAY,IAAI,CAAC;AACjB,aAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAE5B,OAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC5C,SAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB;SACnC;AACR,QAAO,CAAC;;AAER,OAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;;OAE5B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;AAC7C,KAAA;;AAEA,KAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ;;AAEvC,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;KACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM;AACjD,OAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1B;AACA;AACA;SACQ;AACR,OAAA;;AAEA,OAAM,IAAI,IAAI,GAAG,UAAU,CAAC,MAAM;AAClC,SAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC/B,SAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY;QAC3B;;OAED,IAAI,GAAG,EAAE;AACf,SAAQ,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5E,OAAA;;AAEA;AACA;AACA;AACA;AACA,OAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI;;AAErC,OAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;;AAElC,OAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE;AACjE,SAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7B,OAAA;;AAEA,OAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1B,KAAA,CAAK,CAAC;AACN,GAAA;AACA;;AAEA,CAAA,iBAAc,GAAG,iBAAiB;;AAElC;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,KAAK,EAAE;GAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,GAAE,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,MAAM;AACpC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,GAAE,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,MAAM;;GAElC;AACF,KAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,GAAG,CAAC;KACxC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC/C;KACA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KAC1B;AACJ,GAAA;;GAEE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,2BAA2B,CAAC;AAC5D,GAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,mCAAmC;GACvD,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI;AAClC,GAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;GACE,IAAI,CAAC,KAAK,EAAE;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,GAAG,IAAI;;AAE1C,GAAE,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;KAChB,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7B;AACJ,GAAA;;AAEA,GAAE,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI;AACzB,GAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;AACtB,CAAA;;;;;;;;;;;;AC7gBA,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGL,YAAiB;;AAEpC,CAAA,MAAM,EAAE,OAAO,EAAE,GAAGG,gBAAA,EAAsB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,UAAU,GAAG;AACnB,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EAC/C;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,iBAAiB,CAAC,IAAI,EAAE;GAC/B;KACE,CAAC,IAAI,IAAI,IAAI;OACX,IAAI,IAAI,IAAI;OACZ,IAAI,KAAK,IAAI;OACb,IAAI,KAAK,IAAI;OACb,IAAI,KAAK,IAAI;AACnB,MAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACjC;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM;GACtB,IAAI,CAAC,GAAG,CAAC;;AAEX,GAAE,OAAO,CAAC,GAAG,GAAG,EAAE;KACd,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;AAC/B;AACA,OAAM,CAAC,EAAE;KACT,CAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;AACzC;OACM;AACN,SAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;SACb,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SAC5B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SACxB;AACR,SAAQ,OAAO,KAAK;AACpB,OAAA;;OAEM,CAAC,IAAI,CAAC;KACZ,CAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;AACzC;OACM;AACN,SAAQ,CAAC,GAAG,CAAC,IAAI,GAAG;SACZ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SAC5B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;AACpC,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AACzD,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;SACjD;AACR,SAAQ,OAAO,KAAK;AACpB,OAAA;;OAEM,CAAC,IAAI,CAAC;KACZ,CAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;AACzC;OACM;AACN,SAAQ,CAAC,GAAG,CAAC,IAAI,GAAG;SACZ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SAC5B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SAC5B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;AACpC,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AACzD,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9C,SAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;SACb;AACR,SAAQ,OAAO,KAAK;AACpB,OAAA;;OAEM,CAAC,IAAI,CAAC;AACZ,KAAA,CAAK,MAAM;AACX,OAAM,OAAO,KAAK;AAClB,KAAA;AACA,GAAA;;AAEA,GAAE,OAAO,IAAI;AACb,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,MAAM,CAAC,KAAK,EAAE;GACrB;AACF,KAAI,OAAO;KACP,OAAO,KAAK,KAAK,QAAQ;AAC7B,KAAI,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU;AAC3C,KAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;AAClC,KAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;AACtC,MAAK,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM;AACzC,OAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM;AAC1C;AACA,CAAA;;AAEA,CAAAG,UAAA,CAAA,OAAc,GAAG;AACjB,GAAE,MAAM;AACR,GAAE,iBAAiB;GACjB,WAAW,EAAE,YAAY;GACzB;EACD;;AAED,CAAA,IAAI,MAAM,EAAE;AACZ,GAAEA,UAAA,CAAA,OAAA,CAAA,WAA0B,GAAG,UAAU,GAAG,EAAE;AAC9C,KAAI,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;GAC5D,CAAG;CACH,CAAC,kCAAkC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE;AAC1E,GAAE,IAAI;AACN,KAAI,MAAM,WAAW,GAAG,OAAA,CAAQ,gBAAgB,CAAC;;AAEjD,KAAIA,UAAA,CAAA,OAAA,CAAA,WAA0B,GAAG,UAAU,GAAG,EAAE;AAChD,OAAM,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC;KACnE,CAAK;GACL,CAAG,CAAC,OAAO,CAAC,EAAE;AACd;AACA,GAAA;AACA,CAAA;;;;;;;;;;;ACrJA,CAAA,MAAM,EAAE,QAAQ,EAAE,GAAGN,YAAiB;;CAEtC,MAAM,iBAAiB,GAAGG,wBAAA,EAA+B;CACzD,MAAM;AACN,GAAE,YAAY;AACd,GAAE,YAAY;AACd,GAAE,WAAW;GACX;AACF,EAAC,GAAGC,gBAAA,EAAsB;CAC1B,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAGC,iBAAA,EAAwB;AAClE,CAAA,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAGE,iBAAA,EAAuB;;AAElE,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;CAEzC,MAAM,QAAQ,GAAG,CAAC;CAClB,MAAM,qBAAqB,GAAG,CAAC;CAC/B,MAAM,qBAAqB,GAAG,CAAC;CAC/B,MAAM,QAAQ,GAAG,CAAC;CAClB,MAAM,QAAQ,GAAG,CAAC;CAClB,MAAM,SAAS,GAAG,CAAC;CACnB,MAAM,WAAW,GAAG,CAAC;;AAErB;AACA;AACA;AACA;AACA;CACA,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC5B,KAAI,KAAK,EAAE;;KAEP,IAAI,CAAC,uBAAuB;OAC1B,OAAO,CAAC,sBAAsB,KAAK;AACzC,WAAU,OAAO,CAAC;AAClB,WAAU,IAAI;KACV,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC,CAAC;KACxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE;KAC3C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ;KACnC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,GAAG,CAAC;KACvD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC;KAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC;KACzC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB;AAC3D,KAAI,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS;;AAEhC,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAEtB,KAAI,IAAI,CAAC,WAAW,GAAG,KAAK;AAC5B,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,KAAK,GAAG,SAAS;AAC1B,KAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AACxB,KAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,KAAI,IAAI,CAAC,IAAI,GAAG,KAAK;AACrB,KAAI,IAAI,CAAC,OAAO,GAAG,CAAC;;AAEpB,KAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC;AAChC,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,UAAU,GAAG,EAAE;;AAExB,KAAI,IAAI,CAAC,QAAQ,GAAG,KAAK;AACzB,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,KAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC1B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC9B,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE;;KAEjE;AACJ,OAAM,IAAI,CAAC,kBAAkB,GAAG,CAAC;AACjC,OAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC;OAC7B;AACN,OAAM,EAAE;SACA,IAAI,CAAC,WAAW;AACxB,WAAU,UAAU;AACpB,WAAU,0BAA0B;AACpC,WAAU,KAAK;AACf,WAAU,IAAI;WACJ;AACV;QACO;OACD;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM;AACvC,KAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,KAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACtB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,CAAC,CAAC,EAAE;AACb,KAAI,IAAI,CAAC,cAAc,IAAI,CAAC;;AAE5B,KAAI,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;;KAE/D,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;OAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;OAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU;SAC/B,GAAG,CAAC,MAAM;AAClB,SAAQ,GAAG,CAAC,UAAU,GAAG,CAAC;SAClB,GAAG,CAAC,MAAM,GAAG;QACd;;AAEP,OAAM,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1D,KAAA;;KAEI,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;;AAErC,KAAI,GAAG;OACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,OAAM,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;;AAEnC,OAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;AAC3B,SAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC;AAC9C,OAAA,CAAO,MAAM;AACb,SAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;SAC9D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU;WAC/B,GAAG,CAAC,MAAM;AACpB,WAAU,GAAG,CAAC,UAAU,GAAG,CAAC;WAClB,GAAG,CAAC,MAAM,GAAG;UACd;AACT,OAAA;;AAEA,OAAM,CAAC,IAAI,GAAG,CAAC,MAAM;KACrB,CAAK,QAAQ,CAAC,GAAG,CAAC;;AAElB,KAAI,OAAO,GAAG;AACd,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,SAAS,CAAC,EAAE,EAAE;AAChB,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI;;AAErB,KAAI,GAAG;OACD,QAAQ,IAAI,CAAC,MAAM;AACzB,SAAQ,KAAK,QAAQ;AACrB,WAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;WAChB;AACV,SAAQ,KAAK,qBAAqB;AAClC,WAAU,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;WAC3B;AACV,SAAQ,KAAK,qBAAqB;AAClC,WAAU,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;WAC3B;AACV,SAAQ,KAAK,QAAQ;WACX,IAAI,CAAC,OAAO,EAAE;WACd;AACV,SAAQ,KAAK,QAAQ;AACrB,WAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;WAChB;AACV,SAAQ,KAAK,SAAS;AACtB,SAAQ,KAAK,WAAW;AACxB,WAAU,IAAI,CAAC,KAAK,GAAG,KAAK;WAClB;AACV;KACA,CAAK,QAAQ,IAAI,CAAC,KAAK;;AAEvB,KAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE;AAC5B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,CAAC,EAAE,EAAE;AACd,KAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK;OAClB;AACN,KAAA;;KAEI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;KAE3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;AAClC,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,6BAA6B;AACrC,SAAQ,IAAI;AACZ,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;KAEI,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;;AAE/C,KAAI,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;AAC1E,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,oBAAoB;AAC5B,SAAQ,IAAI;AACZ,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;KACpC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;KAC5B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;;AAEvC,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;OACzB,IAAI,UAAU,EAAE;AACtB,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,oBAAoB;AAC9B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC7B,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,kBAAkB;AAC5B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;AACrC,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/D,OAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5B,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,WAAW,GAAG,UAAU;AACnC,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;AAC3D,OAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACtB,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,iBAAiB;AAC3B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;OAEM,IAAI,UAAU,EAAE;AACtB,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,oBAAoB;AAC9B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;OAEM;AACN,SAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;UACzB,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;SACnD;AACR,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACzD,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,SAAQ,IAAI;AACZ,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO;AACxE,KAAI,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;;AAE3C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,OAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACzB,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,kBAAkB;AAC5B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC7B,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,oBAAoB;AAC5B,SAAQ,IAAI;AACZ,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;KAEI,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,qBAAqB;UAC/D,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,qBAAqB;AAC7E,UAAS,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,kBAAkB,CAAC,EAAE,EAAE;AACzB,KAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK;OAClB;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACzD,KAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACvB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,kBAAkB,CAAC,EAAE,EAAE;AACzB,KAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK;OAClB;AACN,KAAA;;KAEI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;;AAEnC;AACA;AACA;AACA;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;AACxC,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,wDAAwD;AAChE,SAAQ,KAAK;AACb,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;KAEI,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AACrE,KAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACvB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,UAAU,CAAC,EAAE,EAAE;KACb,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;AACpD,OAAM,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,cAAc;AACrD,OAAM,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AAC/E,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,2BAA2B;AACrC,WAAU,KAAK;AACf,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;AACA,KAAA;;KAEI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC5C,UAAS,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC/B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,GAAG;AACZ,KAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK;OAClB;AACN,KAAA;;KAEI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAChC,KAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC1B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,CAAC,EAAE,EAAE;KACV,IAAI,IAAI,GAAG,YAAY;;AAE3B,KAAI,IAAI,IAAI,CAAC,cAAc,EAAE;OACvB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AACrD,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;SAClB;AACR,OAAA;;OAEM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;;OAExC;SACE,IAAI,CAAC,OAAO;AACpB,SAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;SACpE;AACR,SAAQ,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAChC,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;AAC7B,OAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;OAC7B;AACN,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,OAAM,IAAI,CAAC,MAAM,GAAG,SAAS;AAC7B,OAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;OACzB;AACN,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE;OACf;AACN,SAAQ,IAAI,CAAC,aAAa,GAAG,CAAC;AAC9B,SAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC;SAC/B;AACR,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,4BAA4B;AACtC,WAAU,KAAK;AACf,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;AAEA;AACA;AACA;AACA;AACA,OAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB;AACpD,OAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,KAAA;;AAEA,KAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AACxB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE;KACnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC;;AAE/E,KAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AAChE,OAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;;AAE7B,OAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AACtB,SAAQ,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,MAAM;AACzC,SAAQ,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AAC5E,WAAU,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACxC,aAAY,UAAU;AACtB,aAAY,2BAA2B;AACvC,aAAY,KAAK;AACjB,aAAY,IAAI;aACJ;YACD;;WAED,EAAE,CAAC,KAAK,CAAC;WACT;AACV,SAAA;;SAEQ;AACR,WAAU,IAAI,CAAC,aAAa,GAAG,CAAC;AAChC,WAAU,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC;WAC/B;AACV,WAAU,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACxC,aAAY,UAAU;AACtB,aAAY,4BAA4B;AACxC,aAAY,KAAK;AACjB,aAAY,IAAI;aACJ;YACD;;WAED,EAAE,CAAC,KAAK,CAAC;WACT;AACV,SAAA;;AAEA,SAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,OAAA;;AAEA,OAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAC1B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,EAAE,EAAE;AAClB,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACpB,OAAM,IAAI,CAAC,MAAM,GAAG,QAAQ;OACtB;AACN,KAAA;;AAEA,KAAI,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc;AAC7C,KAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;;AAErC,KAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC;AAChC,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AACxB,KAAI,IAAI,CAAC,UAAU,GAAG,EAAE;;AAExB,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;AAC5B,OAAM,IAAI,IAAI;;AAEd,OAAM,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE;AAC7C,SAAQ,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC;AAC/C,OAAA,CAAO,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE;SAC7C,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC9D,OAAA,CAAO,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;AAC9C,SAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAClC,OAAA,CAAO,MAAM;SACL,IAAI,GAAG,SAAS;AACxB,OAAA;;AAEA,OAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE;SAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;AACxC,SAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC9B,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,CAAC,MAAM,GAAG,WAAW;SACzB,YAAY,CAAC,MAAM;WACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;AAC1C,WAAU,IAAI,CAAC,MAAM,GAAG,QAAQ;AAChC,WAAU,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5B,SAAA,CAAS,CAAC;AACV,OAAA;AACA,KAAA,CAAK,MAAM;OACL,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC;;OAE5C,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC1D,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,KAAK;AACf,WAAU,wBAAwB;AAClC,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;OAEM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,uBAAuB,EAAE;SAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;AACxC,SAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC9B,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,CAAC,MAAM,GAAG,WAAW;SACzB,YAAY,CAAC,MAAM;WACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;AAC1C,WAAU,IAAI,CAAC,MAAM,GAAG,QAAQ;AAChC,WAAU,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5B,SAAA,CAAS,CAAC;AACV,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE;AAC3B,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;SAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,CAAC;SACzC,IAAI,CAAC,GAAG,EAAE;AAClB,OAAA,CAAO,MAAM;SACL,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;;AAEzC,SAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACtC,WAAU,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACxC,aAAY,UAAU;AACtB,aAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACzC,aAAY,IAAI;AAChB,aAAY,IAAI;aACJ;YACD;;WAED,EAAE,CAAC,KAAK,CAAC;WACT;AACV,SAAA;;AAEA,SAAQ,MAAM,GAAG,GAAG,IAAI,UAAU;WACxB,IAAI,CAAC,MAAM;AACrB,WAAU,IAAI,CAAC,UAAU,GAAG,CAAC;WACnB,IAAI,CAAC,MAAM,GAAG;UACf;;SAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC5D,WAAU,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACxC,aAAY,KAAK;AACjB,aAAY,wBAAwB;AACpC,aAAY,IAAI;AAChB,aAAY,IAAI;aACJ;YACD;;WAED,EAAE,CAAC,KAAK,CAAC;WACT;AACV,SAAA;;AAEA,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;SAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC;SAChC,IAAI,CAAC,GAAG,EAAE;AAClB,OAAA;;AAEA,OAAM,IAAI,CAAC,MAAM,GAAG,QAAQ;OACtB;AACN,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACtC,OAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC;AAC9D,OAAM,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC5B,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,MAAM,GAAG,WAAW;OACzB,YAAY,CAAC,MAAM;AACzB,SAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC;AAChE,SAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC9B,SAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC1B,OAAA,CAAO,CAAC;AACR,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AACjE,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAExB,KAAI,MAAM,GAAG,GAAG,IAAI,SAAS;OACvB,MAAM,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,GAAG;MAClD;;KAED,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC;AAClD,KAAI,GAAG,CAAC,IAAI,GAAG,SAAS;AACxB,KAAI,GAAG,CAAC,WAAW,CAAC,GAAG,UAAU;AACjC,KAAI,OAAO,GAAG;AACd,GAAA;AACA;;AAEA,CAAA,QAAc,GAAG,QAAQ;;;;;;;;;;;;;ACnvBzB,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGP,YAAiB;AACpC,CAAA,MAAM,EAAE,cAAc,EAAE,GAAGG,UAAiB;CAC5C,MAAM;GACJ,KAAK,EAAE,EAAE,YAAY;AACvB,EAAC,GAAG,UAAe;;CAEnB,MAAM,iBAAiB,GAAGE,wBAAA,EAA+B;CACzD,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,GAAGE,gBAAA,EAAsB;AACjE,CAAA,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAGC,iBAAA,EAAuB;CAC7D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAGC,iBAAA,EAAwB;;AAE9D,CAAA,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACzC,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAA,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI;AACjC,CAAA,IAAI,UAAU;CACd,IAAI,iBAAiB,GAAG,gBAAgB;;CAExC,MAAM,OAAO,GAAG,CAAC;CACjB,MAAM,SAAS,GAAG,CAAC;CACnB,MAAM,aAAa,GAAG,CAAC;;AAEvB;AACA;AACA;AACA,CAAA,MAAM,MAAM,CAAC;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE;AAChD,KAAI,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE;;KAEnC,IAAI,YAAY,EAAE;AACtB,OAAM,IAAI,CAAC,aAAa,GAAG,YAAY;OACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,MAAM;;AAEzB,KAAI,IAAI,CAAC,cAAc,GAAG,IAAI;AAC9B,KAAI,IAAI,CAAC,SAAS,GAAG,KAAK;;AAE1B,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,MAAM,GAAG,EAAE;AACpB,KAAI,IAAI,CAAC,MAAM,GAAG,OAAO;AACzB,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,KAAI,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS;AAChC,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9B,KAAI,IAAI,IAAI;KACR,IAAI,KAAK,GAAG,KAAK;KACjB,IAAI,MAAM,GAAG,CAAC;KACd,IAAI,WAAW,GAAG,KAAK;;AAE3B,KAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACtB,OAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU;;AAE7C,OAAM,IAAI,OAAO,CAAC,YAAY,EAAE;AAChC,SAAQ,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;AAClC,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,iBAAiB,KAAK,gBAAgB,EAAE;AACpD;AACA,WAAU,IAAI,UAAU,KAAK,SAAS,EAAE;AACxC;AACA;AACA;AACA;AACA,aAAY,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACvD,WAAA;;AAEA,WAAU,cAAc,CAAC,UAAU,EAAE,CAAC,EAAE,gBAAgB,CAAC;WAC/C,iBAAiB,GAAG,CAAC;AAC/B,SAAA;;SAEQ,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;AACjD,OAAA;;OAEM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;OAC3D,MAAM,GAAG,CAAC;AAChB,KAAA;;AAEA,KAAI,IAAI,UAAU;;AAElB,KAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;OAC5B;AACN,SAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW;AACrC,SAAQ,OAAO,CAAC,WAAW,CAAC,KAAK;SACzB;AACR,SAAQ,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;AACzC,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,SAAQ,UAAU,GAAG,IAAI,CAAC,MAAM;AAChC,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,UAAU,GAAG,IAAI,CAAC,MAAM;OACxB,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,WAAW;AAC9D,KAAA;;KAEI,IAAI,aAAa,GAAG,UAAU;;AAElC,KAAI,IAAI,UAAU,IAAI,KAAK,EAAE;OACvB,MAAM,IAAI,CAAC;OACX,aAAa,GAAG,GAAG;AACzB,KAAA,CAAK,MAAM,IAAI,UAAU,GAAG,GAAG,EAAE;OAC3B,MAAM,IAAI,CAAC;OACX,aAAa,GAAG,GAAG;AACzB,KAAA;;AAEA,KAAI,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;;AAE3E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM;KAChE,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI;;AAEvC,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,aAAa;;AAE7B,KAAI,IAAI,aAAa,KAAK,GAAG,EAAE;AAC/B,OAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;AACzC,KAAA,CAAK,MAAM,IAAI,aAAa,KAAK,GAAG,EAAE;OAChC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;OACzB,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1C,KAAA;;KAEI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;;AAE5C,KAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI;KACjB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;;KAE5B,IAAI,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;;KAEtC,IAAI,KAAK,EAAE;OACT,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;OACjD,OAAO,CAAC,MAAM,CAAC;AACrB,KAAA;;KAEI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;AAC9C,KAAI,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AACzB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AAC9B,KAAI,IAAI,GAAG;;AAEX,KAAI,IAAI,IAAI,KAAK,SAAS,EAAE;OACtB,GAAG,GAAG,YAAY;AACxB,KAAA,CAAK,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACrE,OAAM,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC;KAC7E,CAAK,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACnD,OAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACjC,OAAM,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;AAChC,KAAA,CAAK,MAAM;OACL,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;;AAE5C,OAAM,IAAI,MAAM,GAAG,GAAG,EAAE;AACxB,SAAQ,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC;AAC9E,OAAA;;OAEM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1C,OAAM,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;;AAEhC,OAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACpC,SAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1B,OAAA,CAAO,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACrC,SAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACxB,OAAA,CAAO,MAAM;AACb,SAAQ,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC;AAC/E,OAAA;AACA,KAAA;;KAEI,MAAM,OAAO,GAAG;AACpB,OAAM,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM;OACzB,GAAG,EAAE,IAAI;AACf,OAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,OAAM,IAAI;AACV,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;OAC5B,MAAM,EAAE,IAAI;OACZ,QAAQ,EAAE,KAAK;AACrB,OAAM,IAAI,EAAE;MACP;;AAEL,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACjC,OAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5D,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AACpD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AACvB,KAAI,IAAI,UAAU;AAClB,KAAI,IAAI,QAAQ;;AAEhB,KAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;OACpC,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7B,OAAM,UAAU,GAAG,IAAI,CAAC,IAAI;OACtB,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC3B,OAAM,UAAU,GAAG,IAAI,CAAC,MAAM;AAC9B,OAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAClC,KAAA;;AAEA,KAAI,IAAI,UAAU,GAAG,GAAG,EAAE;AAC1B,OAAM,MAAM,IAAI,UAAU,CAAC,kDAAkD,CAAC;AAC9E,KAAA;;KAEI,MAAM,OAAO,GAAG;OACd,CAAC,WAAW,GAAG,UAAU;OACzB,GAAG,EAAE,IAAI;AACf,OAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,OAAM,IAAI;AACV,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;OAC5B,MAAM,EAAE,IAAI;AAClB,OAAM,QAAQ;AACd,OAAM,IAAI,EAAE;MACP;;AAEL,KAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACtB,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACnC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAClE,OAAA,CAAO,MAAM;SACL,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;AAClD,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACxC,OAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC7D,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AACrD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AACvB,KAAI,IAAI,UAAU;AAClB,KAAI,IAAI,QAAQ;;AAEhB,KAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;OACpC,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7B,OAAM,UAAU,GAAG,IAAI,CAAC,IAAI;OACtB,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC3B,OAAM,UAAU,GAAG,IAAI,CAAC,MAAM;AAC9B,OAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAClC,KAAA;;AAEA,KAAI,IAAI,UAAU,GAAG,GAAG,EAAE;AAC1B,OAAM,MAAM,IAAI,UAAU,CAAC,kDAAkD,CAAC;AAC9E,KAAA;;KAEI,MAAM,OAAO,GAAG;OACd,CAAC,WAAW,GAAG,UAAU;OACzB,GAAG,EAAE,IAAI;AACf,OAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,OAAM,IAAI;AACV,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;OAC5B,MAAM,EAAE,IAAI;AAClB,OAAM,QAAQ;AACd,OAAM,IAAI,EAAE;MACP;;AAEL,KAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACtB,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACnC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAClE,OAAA,CAAO,MAAM;SACL,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;AAClD,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACxC,OAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC7D,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AACrD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;KACtB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC;KAC3E,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;AACvC,KAAI,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ;;AAE/B,KAAI,IAAI,UAAU;AAClB,KAAI,IAAI,QAAQ;;AAEhB,KAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;OACpC,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7B,OAAM,UAAU,GAAG,IAAI,CAAC,IAAI;OACtB,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC3B,OAAM,UAAU,GAAG,IAAI,CAAC,MAAM;AAC9B,OAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAClC,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,OAAM,IAAI,CAAC,cAAc,GAAG,KAAK;OAC3B;AACN,SAAQ,IAAI;AACZ,SAAQ,iBAAiB;SACjB,iBAAiB,CAAC,MAAM;AAChC,WAAU,iBAAiB,CAAC;eACd;eACA;AACd;SACQ;AACR,SAAQ,IAAI,GAAG,UAAU,IAAI,iBAAiB,CAAC,UAAU;AACzD,OAAA;AACA,OAAM,IAAI,CAAC,SAAS,GAAG,IAAI;AAC3B,KAAA,CAAK,MAAM;OACL,IAAI,GAAG,KAAK;OACZ,MAAM,GAAG,CAAC;AAChB,KAAA;;KAEI,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;;KAE3C,MAAM,IAAI,GAAG;OACX,CAAC,WAAW,GAAG,UAAU;AAC/B,OAAM,GAAG,EAAE,OAAO,CAAC,GAAG;AACtB,OAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,OAAM,IAAI,EAAE,OAAO,CAAC,IAAI;AACxB,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;AAClC,OAAM,MAAM;AACZ,OAAM,QAAQ;OACR;MACD;;AAEL,KAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACtB,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACnC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACxE,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AACxD,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACxC,OAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACnE,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AACnD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;AAC3C,KAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;AAC/C,KAAI,IAAI,CAAC,MAAM,GAAG,aAAa;;KAE3B;AACJ,QAAO,WAAW;AAClB,QAAO,IAAI,CAAC,CAAC,WAAW,KAAK;AAC7B,SAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACpC,WAAU,MAAM,GAAG,GAAG,IAAI,KAAK;aACnB;YACD;;AAEX;AACA;AACA;AACA;AACA;WACU,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;WAC9C;AACV,SAAA;;AAEA,SAAQ,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;AACnD,SAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;;SAElC,IAAI,CAAC,QAAQ,EAAE;AACvB,WAAU,IAAI,CAAC,MAAM,GAAG,OAAO;AAC/B,WAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;WAC/C,IAAI,CAAC,OAAO,EAAE;AACxB,SAAA,CAAS,MAAM;WACL,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;AACpD,SAAA;OACA,CAAO;AACP,QAAO,KAAK,CAAC,CAAC,GAAG,KAAK;AACtB;AACA;AACA;AACA;SACQ,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;AAChD,OAAA,CAAO,CAAC;AACR,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;KACpC,IAAI,CAAC,QAAQ,EAAE;AACnB,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;OAC/C;AACN,KAAA;;KAEI,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC;;AAE/E,KAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;AAC/C,KAAI,IAAI,CAAC,MAAM,GAAG,SAAS;AAC3B,KAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAC9D,OAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAClC,SAAQ,MAAM,GAAG,GAAG,IAAI,KAAK;WACnB;UACD;;AAET,SAAQ,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;SAC5B;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;AACjD,OAAM,IAAI,CAAC,MAAM,GAAG,OAAO;AAC3B,OAAM,OAAO,CAAC,QAAQ,GAAG,KAAK;AAC9B,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;OAC9C,IAAI,CAAC,OAAO,EAAE;AACpB,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,GAAG;AACZ,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;OACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;OAElC,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACnD,OAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,CAAC,MAAM,EAAE;KACd,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACjD,KAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;AACtB,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,OAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;OACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,OAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrC,OAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3B,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrC,KAAA;AACA,GAAA;AACA;;AAEA,CAAA,MAAc,GAAG,MAAM;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;GACtC,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC;;AAEvC,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;;KAE1C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;AACrD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;AAClC,GAAE,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;AAChC,GAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACrB,CAAA;;;;;;;;;;;AC5lBA,CAAA,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAGT,gBAAA,EAAsB;;AAElE,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC/B,CAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACnC,CAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC,CAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;;AAErC;AACA;AACA;AACA,CAAA,MAAM,KAAK,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,IAAI,EAAE;AACpB,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;AACxB,KAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;AACtB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,MAAM,GAAG;AACf,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,IAAI,GAAG;AACb,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAA;AACA;;AAEA,CAAA,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACtE,CAAA,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAEpE;AACA;AACA;AACA;AACA;CACA,MAAM,UAAU,SAAS,KAAK,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;KAC9B,KAAK,CAAC,IAAI,CAAC;;AAEf,KAAI,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI;AAC/D,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM;AACtE,KAAI,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,QAAQ;AAC/E,GAAA;;AAEA;AACA;AACA;GACE,IAAI,IAAI,GAAG;AACb,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,MAAM,GAAG;AACf,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,QAAQ,GAAG;AACjB,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAA;AACA;;AAEA,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACzE,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC3E,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAE7E;AACA;AACA;AACA;AACA;CACA,MAAM,UAAU,SAAS,KAAK,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;KAC9B,KAAK,CAAC,IAAI,CAAC;;AAEf,KAAI,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK;AACrE,KAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO;AACzE,GAAA;;AAEA;AACA;AACA;GACE,IAAI,KAAK,GAAG;AACd,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,OAAO,GAAG;AAChB,KAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;AACzB,GAAA;AACA;;AAEA,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC1E,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAE5E;AACA;AACA;AACA;AACA;CACA,MAAM,YAAY,SAAS,KAAK,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;KAC9B,KAAK,CAAC,IAAI,CAAC;;AAEf,KAAI,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI;AAClE,GAAA;;AAEA;AACA;AACA;GACE,IAAI,IAAI,GAAG;AACb,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAA;AACA;;AAEA,CAAA,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,WAAW,GAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;KAC5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;OAC3C;AACN,SAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACtC,SAAQ,QAAQ,CAAC,SAAS,CAAC,KAAK,OAAO;SAC/B,CAAC,QAAQ,CAAC,oBAAoB;SAC9B;SACA;AACR,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,OAAO;;AAEf,KAAI,IAAI,IAAI,KAAK,SAAS,EAAE;OACtB,OAAO,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE;AACnD,SAAQ,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE;WACxC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC/C,UAAS,CAAC;;AAEV,SAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,SAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;OAC1C,CAAO;AACP,KAAA,CAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;OAC3B,OAAO,GAAG,SAAS,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;AAChD,SAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;AAC9C,WAAU,IAAI;AACd,WAAU,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE;AACpC,WAAU,QAAQ,EAAE,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC;AACrD,UAAS,CAAC;;AAEV,SAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,SAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;OAC1C,CAAO;AACP,KAAA,CAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;AACjC,OAAM,OAAO,GAAG,SAAS,OAAO,CAAC,KAAK,EAAE;AACxC,SAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;AAC9C,WAAU,KAAK;WACL,OAAO,EAAE,KAAK,CAAC;AACzB,UAAS,CAAC;;AAEV,SAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,SAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;OAC1C,CAAO;AACP,KAAA,CAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAChC,OAAM,OAAO,GAAG,SAAS,MAAM,GAAG;AAClC,SAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;;AAEvC,SAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,SAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;OAC1C,CAAO;AACP,KAAA,CAAK,MAAM;OACL;AACN,KAAA;;KAEI,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACnE,KAAI,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO;;AAEhC,KAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACtB,OAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAC9B,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;AAC5B,KAAA;GACA,CAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE;KACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACjD,OAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;AAC9E,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;SACnC;AACR,OAAA;AACA,KAAA;AACA,GAAA;EACC;;AAED,CAAA,WAAc,GAAG;AACjB,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,KAAK;AACP,GAAE,WAAW;GACX;EACD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;GAC9C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;KACxD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC9C,GAAA,CAAG,MAAM;AACT,KAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AACjC,GAAA;AACA,CAAA;;;;;;;;;;;ACjSA,CAAA,MAAM,EAAE,UAAU,EAAE,GAAGA,iBAAA,EAAuB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAChC,GAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,KAAK,CAAC,MAAM,EAAE;GACrB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;GAClC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;GAChC,IAAI,YAAY,GAAG,KAAK;GACxB,IAAI,UAAU,GAAG,KAAK;GACtB,IAAI,QAAQ,GAAG,KAAK;AACtB,GAAE,IAAI,aAAa;AACnB,GAAE,IAAI,SAAS;AACf,GAAE,IAAI,KAAK,GAAG,EAAE;AAChB,GAAE,IAAI,IAAI,GAAG,EAAE;AACf,GAAE,IAAI,GAAG,GAAG,EAAE;GACZ,IAAI,CAAC,GAAG,CAAC;;GAET,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,KAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;;AAE/B,KAAI,IAAI,aAAa,KAAK,SAAS,EAAE;AACrC,OAAM,IAAI,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SACxC,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;AACnC,OAAA,CAAO,MAAM;SACL,CAAC,KAAK,CAAC;AACf,UAAS,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,IAAI,CAAC;SAC1C;AACR,SAAQ,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;OAC/C,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,IAAI,YAAY;AACrE,SAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;WAChB,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;;SAEQ,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;SACvB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7C,SAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,WAAU,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;AACpC,WAAU,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,SAAA,CAAS,MAAM;WACL,aAAa,GAAG,IAAI;AAC9B,SAAA;;AAEA,SAAQ,KAAK,GAAG,GAAG,GAAG,EAAE;AACxB,OAAA,CAAO,MAAM;SACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,SAAS,KAAK,SAAS,EAAE;AACxC,OAAM,IAAI,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SACxC,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;OACnC,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,SAAQ,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;OAC/C,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,SAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;WAChB,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;;SAEQ,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;AAC/B,SAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;AACpD,SAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,WAAU,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;AAC7C,WAAU,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;WAC5B,aAAa,GAAG,SAAS;AACnC,SAAA;;AAEA,SAAQ,KAAK,GAAG,GAAG,GAAG,EAAE;AACxB,OAAA,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,cAAc,KAAK,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;SAChE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,SAAQ,KAAK,GAAG,GAAG,GAAG,EAAE;AACxB,OAAA,CAAO,MAAM;SACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAA;AACA,KAAA,CAAK,MAAM;AACX;AACA;AACA;AACA;AACA;OACM,IAAI,UAAU,EAAE;AACtB,SAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;WAC1B,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;SACQ,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;AACnC,cAAa,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;SAC3C,UAAU,GAAG,KAAK;OAC1B,CAAO,MAAM,IAAI,QAAQ,EAAE;AAC3B,SAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;WAC1B,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;SACrC,CAAS,MAAM,IAAI,IAAI,KAAK,IAAI,cAAc,KAAK,KAAK,EAAE,EAAE;WAClD,QAAQ,GAAG,KAAK;WAChB,GAAG,GAAG,CAAC;AACjB,SAAA,CAAS,MAAM,IAAI,IAAI,KAAK,IAAI,YAAY;WAClC,UAAU,GAAG,IAAI;AAC3B,SAAA,CAAS,MAAM;WACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;AACA,OAAA,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;SAC7D,QAAQ,GAAG,IAAI;AACvB,OAAA,CAAO,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SAC/C,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;AACnC,OAAA,CAAO,MAAM,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE;SAC3D,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;OAC/B,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,SAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;WAChB,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;;SAEQ,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;SACvB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;SACpC,IAAI,YAAY,EAAE;WAChB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;WAChC,YAAY,GAAG,KAAK;AAC9B,SAAA;AACA,SAAQ,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;AACtC,SAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,WAAU,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;AAC7C,WAAU,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;WAC5B,aAAa,GAAG,SAAS;AACnC,SAAA;;SAEQ,SAAS,GAAG,SAAS;AAC7B,SAAQ,KAAK,GAAG,GAAG,GAAG,EAAE;AACxB,OAAA,CAAO,MAAM;SACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAA;AACA,KAAA;AACA,GAAA;;AAEA,GAAE,IAAI,KAAK,KAAK,EAAE,IAAI,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAClE,KAAI,MAAM,IAAI,WAAW,CAAC,yBAAyB,CAAC;AACpD,GAAA;;GAEE,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;GACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AACxC,GAAE,IAAI,aAAa,KAAK,SAAS,EAAE;AACnC,KAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AAC/B,GAAA,CAAG,MAAM;AACT,KAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjC,OAAM,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;KAC/B,CAAK,MAAM,IAAI,YAAY,EAAE;AAC7B,OAAM,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvD,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;AACpC,KAAA;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;AACvC,GAAA;;AAEA,GAAE,OAAO,MAAM;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,MAAM,CAAC,UAAU,EAAE;AAC5B,GAAE,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU;AAC/B,MAAK,GAAG,CAAC,CAAC,SAAS,KAAK;AACxB,OAAM,IAAI,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC;AAChD,OAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,CAAC,cAAc,CAAC;AAC3E,OAAM,OAAO;AACb,UAAS,GAAG,CAAC,CAAC,MAAM,KAAK;WACf,OAAO,CAAC,SAAS;AAC3B,cAAa,MAAM;eACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC7C,iBAAgB,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AACtC,iBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC;AAC7D,iBAAgB,OAAO;oBACJ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC;eAC7B,CAAe;AACf;cACa,IAAI,CAAC,IAAI,CAAC;SACvB,CAAS;UACA,IAAI,CAAC,IAAI,CAAC;KACnB,CAAK;MACA,IAAI,CAAC,IAAI,CAAC;AACf,CAAA;;AAEA,CAAA,SAAc,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;;;;;;;;;;;;;CCtMlC,MAAM,YAAY,GAAGA,YAAiB;CACtC,MAAM,KAAK,GAAG,UAAgB;CAC9B,MAAM,IAAI,GAAGI,YAAe;CAC5B,MAAM,GAAG,GAAGC,YAAc;CAC1B,MAAM,GAAG,GAAG,UAAc;AAC1B,CAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAGG,UAAiB;AACrD,CAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAGC,YAAiB;AAC9C,CAAA,MAAM,EAAE,GAAG,EAAE,GAAG,UAAc;;CAE9B,MAAM,iBAAiB,GAAGC,wBAAA,EAA+B;CACzD,MAAM,QAAQ,GAAGC,eAAA,EAAqB;CACtC,MAAM,MAAM,GAAGC,aAAA,EAAmB;AAClC,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGC,iBAAA,EAAuB;;CAE1C,MAAM;AACN,GAAE,YAAY;AACd,GAAE,aAAa;AACf,GAAE,YAAY;AACd,GAAE,IAAI;AACN,GAAE,oBAAoB;AACtB,GAAE,SAAS;AACX,GAAE,WAAW;AACb,GAAE,UAAU;GACV;AACF,EAAC,GAAGC,gBAAA,EAAsB;CAC1B,MAAM;AACN,GAAE,WAAW,EAAE,EAAE,gBAAgB,EAAE,mBAAmB;AACtD,EAAC,GAAGC,kBAAA,EAAyB;AAC7B,CAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAGC,gBAAA,EAAsB;AAChD,CAAA,MAAM,EAAE,QAAQ,EAAE,GAAGC,iBAAA,EAAwB;;AAE7C,CAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACnC,CAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;CAChC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC/D,MAAM,gBAAgB,GAAG,gCAAgC;;AAEzD;AACA;AACA;AACA;AACA;CACA,MAAM,SAAS,SAAS,YAAY,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;AAC3C,KAAI,KAAK,EAAE;;AAEX,KAAI,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;AACtC,KAAI,IAAI,CAAC,UAAU,GAAG,IAAI;AAC1B,KAAI,IAAI,CAAC,mBAAmB,GAAG,KAAK;AACpC,KAAI,IAAI,CAAC,eAAe,GAAG,KAAK;AAChC,KAAI,IAAI,CAAC,aAAa,GAAG,YAAY;AACrC,KAAI,IAAI,CAAC,WAAW,GAAG,IAAI;AAC3B,KAAI,IAAI,CAAC,aAAa,GAAG,KAAK;AAC9B,KAAI,IAAI,CAAC,WAAW,GAAG,EAAE;AACzB,KAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,KAAI,IAAI,CAAC,SAAS,GAAG,EAAE;AACvB,KAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU;AAC3C,KAAI,IAAI,CAAC,SAAS,GAAG,IAAI;AACzB,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI;;AAEvB,KAAI,IAAI,OAAO,KAAK,IAAI,EAAE;AAC1B,OAAM,IAAI,CAAC,eAAe,GAAG,CAAC;AAC9B,OAAM,IAAI,CAAC,SAAS,GAAG,KAAK;AAC5B,OAAM,IAAI,CAAC,UAAU,GAAG,CAAC;;AAEzB,OAAM,IAAI,SAAS,KAAK,SAAS,EAAE;SAC3B,SAAS,GAAG,EAAE;OACtB,CAAO,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;SACpC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;WACvD,OAAO,GAAG,SAAS;WACnB,SAAS,GAAG,EAAE;AACxB,SAAA,CAAS,MAAM;AACf,WAAU,SAAS,GAAG,CAAC,SAAS,CAAC;AACjC,SAAA;AACA,OAAA;;OAEM,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;AACrD,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ;AACvC,OAAM,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY;AAC/C,OAAM,IAAI,CAAC,SAAS,GAAG,IAAI;AAC3B,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,IAAI,UAAU,GAAG;KACf,OAAO,IAAI,CAAC,WAAW;AAC3B,GAAA;;AAEA,GAAE,IAAI,UAAU,CAAC,IAAI,EAAE;KACnB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;;AAEtC,KAAI,IAAI,CAAC,WAAW,GAAG,IAAI;;AAE3B;AACA;AACA;KACI,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI;AACzD,GAAA;;AAEA;AACA;AACA;GACE,IAAI,cAAc,GAAG;KACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,eAAe;;AAElD,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;AAC3E,GAAA;;AAEA;AACA;AACA;GACE,IAAI,UAAU,GAAG;KACf,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;AAC/C,GAAA;;AAEA;AACA;AACA;GACE,IAAI,QAAQ,GAAG;KACb,OAAO,IAAI,CAAC,OAAO;AACvB,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,OAAO,GAAG;AAChB,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,OAAO,GAAG;AAChB,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,MAAM,GAAG;AACf,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,SAAS,GAAG;AAClB,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;GACE,IAAI,QAAQ,GAAG;KACb,OAAO,IAAI,CAAC,SAAS;AACzB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,UAAU,GAAG;KACf,OAAO,IAAI,CAAC,WAAW;AAC3B,GAAA;;AAEA;AACA;AACA;GACE,IAAI,GAAG,GAAG;KACR,OAAO,IAAI,CAAC,IAAI;AACpB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,KAAI,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;AAClC,OAAM,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;AAC5D,OAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;AAClC,OAAM,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC9B,OAAM,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;AAClD,OAAM,YAAY,EAAE,OAAO,CAAC,YAAY;AACxC,OAAM,UAAU,EAAE,OAAO,CAAC,UAAU;OAC9B,kBAAkB,EAAE,OAAO,CAAC;AAClC,MAAK,CAAC;;AAEN,KAAI,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC;;AAE7E,KAAI,IAAI,CAAC,SAAS,GAAG,QAAQ;AAC7B,KAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,KAAI,IAAI,CAAC,OAAO,GAAG,MAAM;;AAEzB,KAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI;AAC/B,KAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI;AAC7B,KAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI;;AAE7B,KAAI,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;AAC/C,KAAI,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;AACzC,KAAI,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;AACzC,KAAI,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;AAC7C,KAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;AACvC,KAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;;AAEvC,KAAI,MAAM,CAAC,OAAO,GAAG,aAAa;;AAElC;AACA;AACA;KACI,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;KAC3C,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;;AAE9C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;;AAE7C,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;AACrC,KAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;AACnC,KAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AACjC,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;;AAErC,KAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI;AACrC,KAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACrB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,GAAG;AACd,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,OAAM,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM;AACzC,OAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;OACvD;AACN,KAAA;;KAEI,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;OACrD,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;AACjE,KAAA;;AAEA,KAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;AACvC,KAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM;AACvC,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;AAC3D,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;KAChB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE;KAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;OAC5C,MAAM,GAAG,GAAG,4DAA4D;OACxE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;OACpC;AACN,KAAA;;KAEI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE;OACzC;SACE,IAAI,CAAC,eAAe;UACnB,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY;SACvE;AACR,SAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1B,OAAA;;OAEM;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;AACxC,KAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK;AAC7D;AACA;AACA;AACA;OACM,IAAI,GAAG,EAAE;;AAEf,OAAM,IAAI,CAAC,eAAe,GAAG,IAAI;;OAE3B;SACE,IAAI,CAAC,mBAAmB;AAChC,SAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;SAC9B;AACR,SAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1B,OAAA;AACA,KAAA,CAAK,CAAC;;KAEF,aAAa,CAAC,IAAI,CAAC;AACvB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,KAAK,GAAG;KACN;AACJ,OAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;AAC9C,OAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;OAC9B;OACA;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,KAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;KACnB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;AAClD,OAAM,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;AACzE,KAAA;;AAEA,KAAI,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;OAC9B,EAAE,GAAG,IAAI;AACf,OAAM,IAAI,GAAG,IAAI,GAAG,SAAS;AAC7B,KAAA,CAAK,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;OACrC,EAAE,GAAG,IAAI;OACT,IAAI,GAAG,SAAS;AACtB,KAAA;;KAEI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;;KAEpD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC5C,OAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;OAC9B;AACN,KAAA;;KAEI,IAAI,IAAI,KAAK,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS;AAClD,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;AACrD,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;KACnB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;AAClD,OAAM,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;AACzE,KAAA;;AAEA,KAAI,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;OAC9B,EAAE,GAAG,IAAI;AACf,OAAM,IAAI,GAAG,IAAI,GAAG,SAAS;AAC7B,KAAA,CAAK,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;OACrC,EAAE,GAAG,IAAI;OACT,IAAI,GAAG,SAAS;AACtB,KAAA;;KAEI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;;KAEpD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC5C,OAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;OAC9B;AACN,KAAA;;KAEI,IAAI,IAAI,KAAK,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS;AAClD,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;AACrD,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,GAAG;KACP;AACJ,OAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;AAC9C,OAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;OAC9B;OACA;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,KAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvE,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;KACtB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;AAClD,OAAM,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;AACzE,KAAA;;AAEA,KAAI,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;OACjC,EAAE,GAAG,OAAO;OACZ,OAAO,GAAG,EAAE;AAClB,KAAA;;KAEI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;;KAEpD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC5C,OAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;OAC9B;AACN,KAAA;;KAEI,MAAM,IAAI,GAAG;AACjB,OAAM,MAAM,EAAE,OAAO,IAAI,KAAK,QAAQ;AACtC,OAAM,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS;OACrB,QAAQ,EAAE,IAAI;OACd,GAAG,EAAE,IAAI;AACf,OAAM,GAAG;MACJ;;KAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;AAC5D,OAAM,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC3B,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;AACrD,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,GAAG;KACV,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE;KAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;OAC5C,MAAM,GAAG,GAAG,4DAA4D;OACxE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;OACpC;AACN,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,OAAM,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;AAC1C,OAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC5B,KAAA;AACA,GAAA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE;GAC7C,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY;AACzC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;CACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE;GACvD,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY;AACzC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE;GACvC,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM;AACnC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;CACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE;GACjD,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM;AACnC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE;GAC1C,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS;AACtC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;CACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE;GACpD,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS;AACtC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE;GACzC,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ;AACrC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;CACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE;GACnD,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ;AACrC,EAAC,CAAC;;AAEF,CAAA;AACA,GAAE,YAAY;AACd,GAAE,gBAAgB;AAClB,GAAE,YAAY;AACd,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,YAAY;GACZ;AACF,EAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AACxB,GAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC5E,CAAA,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,CAAA,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC1D,GAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;KACxD,UAAU,EAAE,IAAI;AACpB,KAAI,GAAG,GAAG;OACJ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;SAC7C,IAAI,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,QAAQ,CAAC,SAAS,CAAC;AACtE,OAAA;;AAEA,OAAM,OAAO,IAAI;KACjB,CAAK;KACD,GAAG,CAAC,OAAO,EAAE;OACX,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACrD,SAAQ,IAAI,QAAQ,CAAC,oBAAoB,CAAC,EAAE;AAC5C,WAAU,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;WACrC;AACV,SAAA;AACA,OAAA;;AAEA,OAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;;AAEzC,OAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE;SACrC,CAAC,oBAAoB,GAAG;AAChC,QAAO,CAAC;AACR,KAAA;AACA,IAAG,CAAC;AACJ,CAAA,CAAC,CAAC;;AAEF,CAAA,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,gBAAgB;AACvD,CAAA,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,mBAAmB;;AAE7D,CAAA,SAAc,GAAG,SAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;GAC5D,MAAM,IAAI,GAAG;KACX,sBAAsB,EAAE,IAAI;KAC5B,QAAQ,EAAE,IAAI;KACd,YAAY,EAAE,aAAa;AAC/B,KAAI,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACxC,KAAI,iBAAiB,EAAE,IAAI,GAAG,IAAI;AAClC,KAAI,YAAY,EAAE,GAAG,GAAG,IAAI;AAC5B,KAAI,UAAU,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC7B,kBAAkB,EAAE,KAAK;KACzB,iBAAiB,EAAE,IAAI;KACvB,eAAe,EAAE,KAAK;KACtB,YAAY,EAAE,EAAE;AACpB,KAAI,GAAG,OAAO;KACV,UAAU,EAAE,SAAS;KACrB,QAAQ,EAAE,SAAS;KACnB,QAAQ,EAAE,SAAS;KACnB,OAAO,EAAE,SAAS;KAClB,MAAM,EAAE,KAAK;KACb,IAAI,EAAE,SAAS;KACf,IAAI,EAAE,SAAS;AACnB,KAAI,IAAI,EAAE;IACP;;AAEH,GAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ;AACrC,GAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY;;GAE3C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;KACpD,MAAM,IAAI,UAAU;OAClB,CAAC,8BAA8B,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;SACtD,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MACxD;AACL,GAAA;;AAEA,GAAE,IAAI,SAAS;;AAEf,GAAE,IAAI,OAAO,YAAY,GAAG,EAAE;KAC1B,SAAS,GAAG,OAAO;AACvB,GAAA,CAAG,MAAM;AACT,KAAI,IAAI;AACR,OAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAClC,KAAA,CAAK,CAAC,MAAM;OACN,MAAM,IAAI,WAAW,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;AACtD,KAAA;AACA,GAAA;;AAEA,GAAE,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,EAAE;AACtC,KAAI,SAAS,CAAC,QAAQ,GAAG,KAAK;AAC9B,GAAA,CAAG,MAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9C,KAAI,SAAS,CAAC,QAAQ,GAAG,MAAM;AAC/B,GAAA;;AAEA,GAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI;;AAEjC,GAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,KAAK,MAAM;AAChD,GAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,KAAK,UAAU;AACpD,GAAE,IAAI,iBAAiB;;AAEvB,GAAE,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AAC9D,KAAI,iBAAiB;AACrB,OAAM,oDAAoD;AAC1D,OAAM,kCAAkC;GACxC,CAAG,MAAM,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;KAC1C,iBAAiB,GAAG,6BAA6B;AACrD,GAAA,CAAG,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE;KACzB,iBAAiB,GAAG,wCAAwC;AAChE,GAAA;;GAEE,IAAI,iBAAiB,EAAE;AACzB,KAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,iBAAiB,CAAC;;AAElD,KAAI,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,EAAE;AACpC,OAAM,MAAM,GAAG;AACf,KAAA,CAAK,MAAM;AACX,OAAM,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC;OACjC;AACN,KAAA;AACA,GAAA;;AAEA,GAAE,MAAM,WAAW,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE;GACvC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;GAC9C,MAAM,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AACzD,GAAE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AAC/B,GAAE,IAAI,iBAAiB;;GAErB,IAAI,CAAC,gBAAgB;KACnB,IAAI,CAAC,gBAAgB,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;GAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,WAAW;GAClD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,WAAW;GACzC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;OACzC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE;OAC9B,SAAS,CAAC,QAAQ;GACtB,IAAI,CAAC,OAAO,GAAG;KACb,GAAG,IAAI,CAAC,OAAO;AACnB,KAAI,uBAAuB,EAAE,IAAI,CAAC,eAAe;KAC7C,mBAAmB,EAAE,GAAG;KACxB,UAAU,EAAE,SAAS;AACzB,KAAI,OAAO,EAAE;IACV;GACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM;AACnD,GAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB;;AAEtC,GAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC9B,KAAI,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;OACxC,GAAG,IAAI,CAAC,iBAAiB;OACzB,QAAQ,EAAE,KAAK;OACf,UAAU,EAAE,IAAI,CAAC;AACvB,MAAK,CAAC;KACF,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,MAAM,CAAC;AACtD,OAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,iBAAiB,CAAC,KAAK;AAChE,MAAK,CAAC;AACN,GAAA;AACA,GAAE,IAAI,SAAS,CAAC,MAAM,EAAE;AACxB,KAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;OAChC;SACE,OAAO,QAAQ,KAAK,QAAQ;AACpC,SAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,SAAQ,WAAW,CAAC,GAAG,CAAC,QAAQ;SACxB;SACA,MAAM,IAAI,WAAW;WACnB;UACD;AACT,OAAA;;AAEA,OAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/B,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AAChE,GAAA;AACA,GAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,KAAI,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE,EAAE;OAC7B,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,MAAM;AACxD,KAAA,CAAK,MAAM;OACL,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACvC,KAAA;AACA,GAAA;GACE,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE;AAChD,KAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7D,GAAA;;GAEE,IAAI,QAAQ,EAAE;KACZ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;AAEtC,KAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;AAC9B,KAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,GAAA;;AAEA,GAAE,IAAI,GAAG;;AAET,GAAE,IAAI,IAAI,CAAC,eAAe,EAAE;AAC5B,KAAI,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,EAAE;AACpC,OAAM,SAAS,CAAC,YAAY,GAAG,QAAQ;AACvC,OAAM,SAAS,CAAC,eAAe,GAAG,QAAQ;OACpC,SAAS,CAAC,yBAAyB,GAAG;AAC5C,WAAU,IAAI,CAAC;WACL,SAAS,CAAC,IAAI;;AAExB,OAAM,MAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO;;AAEhD;AACA;AACA;AACA;OACM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;;OAErC,IAAI,OAAO,EAAE;AACnB,SAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;WAClD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK;AACpD,SAAA;AACA,OAAA;KACA,CAAK,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;OACpD,MAAM,UAAU,GAAG;AACzB,WAAU,SAAS,CAAC;AACpB,aAAY,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;aAC9B;AACZ,WAAU,SAAS,CAAC;aACR;AACZ,aAAY,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,yBAAyB;;OAE5D,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,EAAE;AACnE;AACA;AACA;AACA;AACA,SAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;AACzC,SAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;;SAE1B,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;;AAEjD,SAAQ,IAAI,CAAC,IAAI,GAAG,SAAS;AAC7B,OAAA;AACA,KAAA;;AAEA;AACA;AACA;AACA;AACA;KACI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;AACrD,OAAM,OAAO,CAAC,OAAO,CAAC,aAAa;AACnC,SAAQ,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5D,KAAA;;KAEI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;AAExC,KAAI,IAAI,SAAS,CAAC,UAAU,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;OACM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;AACpD,KAAA;AACA,GAAA,CAAG,MAAM;KACL,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACxC,GAAA;;AAEA,GAAE,IAAI,IAAI,CAAC,OAAO,EAAE;AACpB,KAAI,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM;AAC5B,OAAM,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,iCAAiC,CAAC;AACvE,KAAA,CAAK,CAAC;AACN,GAAA;;GAEE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;KACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE;;AAEvC,KAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI;AAC/B,KAAI,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC;AACrC,GAAA,CAAG,CAAC;;GAEF,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK;AAC9B,KAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ;AACzC,KAAI,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU;;KAEjC;AACJ,OAAM,QAAQ;OACR,IAAI,CAAC,eAAe;OACpB,UAAU,IAAI,GAAG;AACvB,OAAM,UAAU,GAAG;OACb;OACA,IAAI,EAAE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AACtD,SAAQ,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,4BAA4B,CAAC;SAC5D;AACR,OAAA;;OAEM,GAAG,CAAC,KAAK,EAAE;;AAEjB,OAAM,IAAI,IAAI;;AAEd,OAAM,IAAI;SACF,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;OACzC,CAAO,CAAC,OAAO,CAAC,EAAE;AAClB,SAAQ,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/D,SAAQ,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC;SACjC;AACR,OAAA;;OAEM,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;AACvD,KAAA,CAAK,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AACjE,OAAM,cAAc;AACpB,SAAQ,SAAS;AACjB,SAAQ,GAAG;AACX,SAAQ,CAAC,4BAA4B,EAAE,GAAG,CAAC,UAAU,CAAC;QAC/C;AACP,KAAA;AACA,GAAA,CAAG,CAAC;;AAEJ,GAAE,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,KAAK;AAC3C,KAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;;AAElC;AACA;AACA;AACA;KACI,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;;AAEvD,KAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI;;AAE/B,KAAI,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO;;KAEnC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE;AACxE,OAAM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,wBAAwB,CAAC;OAC3D;AACN,KAAA;;AAEA,KAAI,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;AACpC,QAAO,MAAM,CAAC,GAAG,GAAG,IAAI;QACjB,MAAM,CAAC,QAAQ,CAAC;;KAEnB,IAAI,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,MAAM,EAAE;AACxD,OAAM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,qCAAqC,CAAC;OACxE;AACN,KAAA;;KAEI,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC;AAC5D,KAAI,IAAI,SAAS;;AAEjB,KAAI,IAAI,UAAU,KAAK,SAAS,EAAE;AAClC,OAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;SACrB,SAAS,GAAG,kDAAkD;OACtE,CAAO,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;SACvC,SAAS,GAAG,oCAAoC;AACxD,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE;OAC3B,SAAS,GAAG,4BAA4B;AAC9C,KAAA;;KAEI,IAAI,SAAS,EAAE;AACnB,OAAM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;OAC5C;AACN,KAAA;;AAEA,KAAI,IAAI,UAAU,EAAE,SAAS,CAAC,SAAS,GAAG,UAAU;;KAEhD,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC;;AAE1E,KAAI,IAAI,sBAAsB,KAAK,SAAS,EAAE;OACxC,IAAI,CAAC,iBAAiB,EAAE;AAC9B,SAAQ,MAAM,OAAO;AACrB,WAAU,iEAAiE;AAC3E,WAAU,eAAe;AACzB,SAAQ,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAC1C;AACR,OAAA;;AAEA,OAAM,IAAI,UAAU;;AAEpB,OAAM,IAAI;AACV,SAAQ,UAAU,GAAG,KAAK,CAAC,sBAAsB,CAAC;OAClD,CAAO,CAAC,OAAO,GAAG,EAAE;SACZ,MAAM,OAAO,GAAG,yCAAyC;AACjE,SAAQ,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAC1C;AACR,OAAA;;OAEM,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;;OAE9C;AACN,SAAQ,cAAc,CAAC,MAAM,KAAK,CAAC;AACnC,SAAQ,cAAc,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC;SACxC;SACA,MAAM,OAAO,GAAG,sDAAsD;AAC9E,SAAQ,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAC1C;AACR,OAAA;;AAEA,OAAM,IAAI;SACF,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;OAC7E,CAAO,CAAC,OAAO,GAAG,EAAE;SACZ,MAAM,OAAO,GAAG,yCAAyC;AACjE,SAAQ,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAC1C;AACR,OAAA;;AAEA,OAAM,SAAS,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC;AAC5D,SAAQ,iBAAiB;AACzB,KAAA;;AAEA,KAAI,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AACtC,OAAM,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;AACzD,OAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,OAAM,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AAC/C,OAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,OAAM,UAAU,EAAE,IAAI,CAAC,UAAU;OAC3B,kBAAkB,EAAE,IAAI,CAAC;AAC/B,MAAK,CAAC;AACN,GAAA,CAAG,CAAC;;AAEJ,GAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1B,KAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;AACtC,GAAA,CAAG,MAAM;KACL,GAAG,CAAC,GAAG,EAAE;AACb,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE;AAC3C,GAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;AAC3C;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,aAAa,GAAG,IAAI;AAChC,GAAE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;GAC5B,SAAS,CAAC,SAAS,EAAE;AACvB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,GAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU;AACnC,GAAE,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,GAAE,OAAO,CAAC,IAAI,GAAG,SAAS;;GAExB,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE;AACxD,KAAI,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI;AACnE,GAAA;;AAEA,GAAE,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,GAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;;AAE3C,GAAE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;AAChC,GAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC;;AAE9C,GAAE,IAAI,MAAM,CAAC,SAAS,EAAE;AACxB,KAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI;KACvB,MAAM,CAAC,KAAK,EAAE;;KAEd,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA,OAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7B,KAAA;;KAEI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,EAAE,GAAG,CAAC;AACvD,GAAA,CAAG,MAAM;AACT,KAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACvB,KAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjE,KAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7D,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;GAC3C,IAAI,IAAI,EAAE;AACZ,KAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM;;AAEnE;AACA;AACA;AACA;AACA;AACA;KACI,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM;AACrE,UAAS,SAAS,CAAC,eAAe,IAAI,MAAM;AAC5C,GAAA;;GAEE,IAAI,EAAE,EAAE;AACV,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK;OACnB,CAAC,kCAAkC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;SAC1D,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;MAC1C;AACL,KAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;AAC7B,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE;AAC1C,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,SAAS,CAAC,mBAAmB,GAAG,IAAI;AACtC,GAAE,SAAS,CAAC,aAAa,GAAG,MAAM;AAClC,GAAE,SAAS,CAAC,UAAU,GAAG,IAAI;;GAE3B,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;;GAEjD,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;GACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC;;GAE3C,IAAI,IAAI,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE;AACtC,QAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;AACpC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,eAAe,GAAG;AAC3B,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;GAElC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;AACrD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;GAElC,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;KAC/C,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;;AAE1D;AACA;AACA;AACA;KACI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC;;KAE3C,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACrC,GAAA;;AAEA,GAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAChC,KAAI,SAAS,CAAC,aAAa,GAAG,IAAI;AAClC,KAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAChC,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,gBAAgB,GAAG;AAC5B,GAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;AAC9B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC3C,GAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;AAClD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,IAAI,EAAE;AAC9B,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACtE,GAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC9B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,IAAI,EAAE;GAC5B,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACrC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,MAAM,CAAC,MAAM,EAAE;GACtB,MAAM,CAAC,MAAM,EAAE;AACjB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;GAElC,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE;GAC/C,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC/C,KAAI,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;KACzC,aAAa,CAAC,SAAS,CAAC;AAC5B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;;AAEpB,GAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAChC,KAAI,SAAS,CAAC,aAAa,GAAG,IAAI;AAClC,KAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAChC,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,GAAE,SAAS,CAAC,WAAW,GAAG,UAAU;KAChC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACrD,KAAI,SAAS,CAAC;IACX;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,GAAG;AACzB,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;AAC7C,GAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;AAC3C,GAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC;;AAEzC,GAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE;AACF,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU;KAC/B,CAAC,SAAS,CAAC,mBAAmB;AAClC,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY;AACpD,KAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK;KAC/B;AACJ,KAAI,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;;AAEvD,KAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,GAAA;;AAEA,GAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;;AAE3B,GAAE,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS;;AAE9B,GAAE,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC;;GAEnC;AACF,KAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ;AAC/C,KAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC;KACnC;KACA,SAAS,CAAC,SAAS,EAAE;AACzB,GAAA,CAAG,MAAM;KACL,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;KACjD,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AACtD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,GAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;KAC5C,IAAI,CAAC,KAAK,EAAE;AAChB,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,WAAW,GAAG;AACvB,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;AAC3C,GAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;GACzB,IAAI,CAAC,GAAG,EAAE;AACZ,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,GAAG;AACzB,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;AAC7C,GAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;;GAEtB,IAAI,SAAS,EAAE;AACjB,KAAI,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;KACzC,IAAI,CAAC,OAAO,EAAE;AAClB,GAAA;AACA,CAAA;;;;;;;;;;;;;CC33CkBjB,gBAAA;AAClB,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGG,YAAiB;;AAEpC;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,GAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,WAAW,GAAG;GACrB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;KACnD,IAAI,CAAC,OAAO,EAAE;AAClB,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,GAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;GAC3C,IAAI,CAAC,OAAO,EAAE;GACd,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzC;AACA,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAC3B,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE;GAC1C,IAAI,kBAAkB,GAAG,IAAI;;AAE/B,GAAE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAC5B,KAAI,GAAG,OAAO;KACV,WAAW,EAAE,KAAK;KAClB,SAAS,EAAE,KAAK;KAChB,UAAU,EAAE,KAAK;AACrB,KAAI,kBAAkB,EAAE;AACxB,IAAG,CAAC;;AAEJ,GAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE;AACnD,KAAI,MAAM,IAAI;AACd,OAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG;;AAE1E,KAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE;AACtC,GAAA,CAAG,CAAC;;GAEF,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,CAAC,GAAG,EAAE;AACvC,KAAI,IAAI,MAAM,CAAC,SAAS,EAAE;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;KACI,kBAAkB,GAAG,KAAK;AAC9B,KAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACvB,GAAA,CAAG,CAAC;;GAEF,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,GAAG;AACpC,KAAI,IAAI,MAAM,CAAC,SAAS,EAAE;;AAE1B,KAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,GAAA,CAAG,CAAC;;GAEF,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,QAAQ,EAAE;KACzC,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,MAAM,EAAE;OAC/B,QAAQ,CAAC,GAAG,CAAC;AACnB,OAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;OACnC;AACN,KAAA;;KAEI,IAAI,MAAM,GAAG,KAAK;;KAElB,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,CAAC,GAAG,EAAE;OACnC,MAAM,GAAG,IAAI;OACb,QAAQ,CAAC,GAAG,CAAC;AACnB,KAAA,CAAK,CAAC;;KAEF,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,GAAG;AACtC,OAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;AAChC,OAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;AACzC,KAAA,CAAK,CAAC;;AAEN,KAAI,IAAI,kBAAkB,EAAE,EAAE,CAAC,SAAS,EAAE;GAC1C,CAAG;;AAEH,GAAE,MAAM,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;KAClC,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,EAAE;OACnC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;AACtC,SAAQ,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/B,OAAA,CAAO,CAAC;OACF;AACN,KAAA;;AAEA;AACA;AACA;AACA;AACA,KAAI,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,EAAE;;KAEzB,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC5C,OAAM,QAAQ,EAAE;OACV,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE;AAC5D,KAAA,CAAK,MAAM;OACL,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,MAAM,GAAG;AAClD;AACA;AACA;AACA,SAAQ,QAAQ,EAAE;AAClB,OAAA,CAAO,CAAC;OACF,EAAE,CAAC,KAAK,EAAE;AAChB,KAAA;GACA,CAAG;;AAEH,GAAE,MAAM,CAAC,KAAK,GAAG,YAAY;KACzB,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE;GAChC,CAAG;;GAED,MAAM,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACnD,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,EAAE;OACnC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;SAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAChD,OAAA,CAAO,CAAC;OACF;AACN,KAAA;;AAEA,KAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;GAC5B,CAAG;;AAEH,GAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AAC/B,GAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;AACnC,GAAE,OAAO,MAAM;AACf,CAAA;;AAEA,CAAA,MAAc,GAAG,qBAAqB;;;;;;;;;;;;;;;;;;;;;AC9JtC,CAAA,MAAM,EAAE,UAAU,EAAE,GAAGH,iBAAA,EAAuB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,KAAK,CAAC,MAAM,EAAE;AACvB,GAAE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE;AAC7B,GAAE,IAAI,KAAK,GAAG,EAAE;AAChB,GAAE,IAAI,GAAG,GAAG,EAAE;GACZ,IAAI,CAAC,GAAG,CAAC;;GAET,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;;AAErC,KAAI,IAAI,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;OACxC,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;AACjC,KAAA,CAAK,MAAM;OACL,CAAC,KAAK,CAAC;AACb,QAAO,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,IAAI,CAAC;OAC1C;AACN,OAAM,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;AAC7C,KAAA,CAAK,MAAM,IAAI,IAAI,KAAK,IAAI,YAAY;AACxC,OAAM,IAAI,KAAK,KAAK,EAAE,EAAE;SAChB,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAA;;OAEM,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;;OAEvB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;;AAE/C,OAAM,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;SAC3B,MAAM,IAAI,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AAC5E,OAAA;;AAEA,OAAM,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,OAAM,KAAK,GAAG,GAAG,GAAG,EAAE;AACtB,KAAA,CAAK,MAAM;OACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,KAAA;AACA,GAAA;;GAEE,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;AAClC,KAAI,MAAM,IAAI,WAAW,CAAC,yBAAyB,CAAC;AACpD,GAAA;;GAEE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;;AAEzC,GAAE,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;KAC3B,MAAM,IAAI,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AACxE,GAAA;;AAEA,GAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzB,GAAE,OAAO,SAAS;AAClB,CAAA;;AAEA,CAAA,WAAc,GAAG,EAAE,KAAK,EAAE;;;;;;;;;;;;;;;;;;CCzD1B,MAAM,YAAY,GAAGA,YAAiB;CACtC,MAAM,IAAI,GAAGG,YAAe;AAC5B,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGC,YAAiB;AACpC,CAAA,MAAM,EAAE,UAAU,EAAE,GAAG,UAAiB;;CAExC,MAAM,SAAS,GAAGG,gBAAA,EAAsB;CACxC,MAAM,iBAAiB,GAAGC,wBAAA,EAA+B;CACzD,MAAM,WAAW,GAAGC,kBAAA,EAAwB;CAC5C,MAAM,SAAS,GAAGS,gBAAA,EAAsB;CACxC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,GAAGR,gBAAA,EAAsB;;CAElE,MAAM,QAAQ,GAAG,uBAAuB;;CAExC,MAAM,OAAO,GAAG,CAAC;CACjB,MAAM,OAAO,GAAG,CAAC;CACjB,MAAM,MAAM,GAAG,CAAC;;AAEhB;AACA;AACA;AACA;AACA;CACA,MAAM,eAAe,SAAS,YAAY,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;AACjC,KAAI,KAAK,EAAE;;AAEX,KAAI,OAAO,GAAG;OACR,sBAAsB,EAAE,IAAI;OAC5B,QAAQ,EAAE,IAAI;AACpB,OAAM,iBAAiB,EAAE,IAAI,GAAG,IAAI;AACpC,OAAM,YAAY,EAAE,GAAG,GAAG,IAAI;AAC9B,OAAM,UAAU,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;OAC7B,kBAAkB,EAAE,KAAK;OACzB,iBAAiB,EAAE,KAAK;OACxB,eAAe,EAAE,IAAI;OACrB,cAAc,EAAE,IAAI;OACpB,YAAY,EAAE,aAAa;OAC3B,YAAY,EAAE,IAAI;OAClB,QAAQ,EAAE,KAAK;OACf,OAAO,EAAE,IAAI;OACb,MAAM,EAAE,IAAI;OACZ,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;AAChB,OAAM,SAAS;AACf,OAAM,GAAG;MACJ;;KAED;AACJ,OAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ;AACnE,QAAO,OAAO,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpE,QAAO,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ;OACnC;OACA,MAAM,IAAI,SAAS;AACzB,SAAQ,kEAAkE;WAChE;QACH;AACP,KAAA;;AAEA,KAAI,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;AAC9B,OAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;SAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;;AAE3C,SAAQ,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;AAC3B,WAAU,gBAAgB,EAAE,IAAI,CAAC,MAAM;AACvC,WAAU,cAAc,EAAE;AAC1B,UAAS,CAAC;AACV,SAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,OAAA,CAAO,CAAC;AACR,OAAM,IAAI,CAAC,OAAO,CAAC,MAAM;SACjB,OAAO,CAAC,IAAI;SACZ,OAAO,CAAC,IAAI;SACZ,OAAO,CAAC,OAAO;SACf;QACD;AACP,KAAA,CAAK,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;AAC/B,OAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM;AACnC,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,OAAM,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;;OAEzD,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;SACjD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;SAC5C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;SACpC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,KAAK;WAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC;AAC/D,SAAA;AACA,QAAO,CAAC;AACR,KAAA;;KAEI,IAAI,OAAO,CAAC,iBAAiB,KAAK,IAAI,EAAE,OAAO,CAAC,iBAAiB,GAAG,EAAE;AAC1E,KAAI,IAAI,OAAO,CAAC,cAAc,EAAE;AAChC,OAAM,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE;AAC9B,OAAM,IAAI,CAAC,gBAAgB,GAAG,KAAK;AACnC,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,KAAI,IAAI,CAAC,MAAM,GAAG,OAAO;AACzB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,GAAG;AACZ,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC/B,OAAM,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;AACnE,KAAA;;AAEA,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI;AAClC,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACjC,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,KAAK,CAAC,EAAE,EAAE;AACZ,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;OAC1B,IAAI,EAAE,EAAE;AACd,SAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;AACjC,WAAU,EAAE,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACpD,SAAA,CAAS,CAAC;AACV,OAAA;;AAEA,OAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;OACjC;AACN,KAAA;;KAEI,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;;AAElC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACjC,KAAI,IAAI,CAAC,MAAM,GAAG,OAAO;;AAEzB,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACtD,OAAM,IAAI,IAAI,CAAC,OAAO,EAAE;SAChB,IAAI,CAAC,gBAAgB,EAAE;SACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;AACnD,OAAA;;AAEA,OAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACxB,SAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAChC,WAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;AAC3C,SAAA,CAAS,MAAM;AACf,WAAU,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACtC,SAAA;AACA,OAAA,CAAO,MAAM;AACb,SAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;AACzC,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;;OAE3B,IAAI,CAAC,gBAAgB,EAAE;OACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;;AAEjD;AACA;AACA;AACA;AACA,OAAM,MAAM,CAAC,KAAK,CAAC,MAAM;SACjB,SAAS,CAAC,IAAI,CAAC;AACvB,OAAA,CAAO,CAAC;AACR,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,YAAY,CAAC,GAAG,EAAE;AACpB,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;OACrB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;OAClC,MAAM,QAAQ,GAAG,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG;;OAEjE,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,KAAK;AACtD,KAAA;;AAEA,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AACvC,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;;KAEjC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;AAChD,KAAI,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO;KACnC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC;;AAEzD,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE;OACxB,MAAM,OAAO,GAAG,qBAAqB;OACrC,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;OAClE;AACN,KAAA;;KAEI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE;OAClE,MAAM,OAAO,GAAG,wBAAwB;OACxC,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;OAClE;AACN,KAAA;;AAEA,KAAI,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;OAC5C,MAAM,OAAO,GAAG,6CAA6C;OAC7D,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;OAClE;AACN,KAAA;;KAEI,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE;OACnC,MAAM,OAAO,GAAG,iDAAiD;OACjE,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;AACzE,SAAQ,uBAAuB,EAAE;AACjC,QAAO,CAAC;OACF;AACN,KAAA;;KAEI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;AACjC,OAAM,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC;OAC3B;AACN,KAAA;;KAEI,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC;AACtE,KAAI,IAAI,SAAS,GAAG,IAAI,GAAG,EAAE;;AAE7B,KAAI,IAAI,oBAAoB,KAAK,SAAS,EAAE;AAC5C,OAAM,IAAI;AACV,SAAQ,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC;OAC3D,CAAO,CAAC,OAAO,GAAG,EAAE;SACZ,MAAM,OAAO,GAAG,uCAAuC;SACvD,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;SAClE;AACR,OAAA;AACA,KAAA;;KAEI,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC;KACtE,MAAM,UAAU,GAAG,EAAE;;KAErB;AACJ,OAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB;AACpC,OAAM,sBAAsB,KAAK;OAC3B;AACN,OAAM,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;AACtD,SAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;SACjC,QAAQ,EAAE,IAAI;AACtB,SAAQ,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;AACjC,QAAO,CAAC;;AAER,OAAM,IAAI;SACF,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC;;AAE9D,SAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;WAC3C,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC3E,WAAU,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,iBAAiB;AACzE,SAAA;OACA,CAAO,CAAC,OAAO,GAAG,EAAE;AACpB,SAAQ,MAAM,OAAO;AACrB,WAAU,yDAAyD;SAC3D,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;SAClE;AACR,OAAA;AACA,KAAA;;AAEA;AACA;AACA;AACA,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;OAC7B,MAAM,IAAI,GAAG;AACnB,SAAQ,MAAM;AACd,WAAU,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,GAAG,sBAAsB,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC7E,SAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;SACzD;QACD;;OAED,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,SAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK;WACpE,IAAI,CAAC,QAAQ,EAAE;AACzB,aAAY,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;AACxE,WAAA;;WAEU,IAAI,CAAC,eAAe;AAC9B,aAAY,UAAU;AACtB,aAAY,GAAG;AACf,aAAY,SAAS;AACrB,aAAY,GAAG;AACf,aAAY,MAAM;AAClB,aAAY,IAAI;aACJ;YACD;AACX,SAAA,CAAS,CAAC;SACF;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC;AAC9E,KAAA;;AAEA,KAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3E,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AACrE;AACA;AACA;AACA,KAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,MAAM,CAAC,OAAO,EAAE;;AAErE,KAAI,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;OACtB,MAAM,IAAI,KAAK;AACrB,SAAQ,iEAAiE;WAC/D;QACH;AACP,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC;;AAEjE,KAAI,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;AACpC,QAAO,MAAM,CAAC,GAAG,GAAG,IAAI;QACjB,MAAM,CAAC,QAAQ,CAAC;;KAEnB,MAAM,OAAO,GAAG;AACpB,OAAM,kCAAkC;AACxC,OAAM,oBAAoB;AAC1B,OAAM,qBAAqB;AAC3B,OAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC;MACjC;;AAEL,KAAI,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;;AAExE,KAAI,IAAI,SAAS,CAAC,IAAI,EAAE;AACxB;AACA;AACA;AACA,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;WAC1B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG;WAC3C,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;;OAEnC,IAAI,QAAQ,EAAE;SACZ,OAAO,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3D,SAAQ,EAAE,CAAC,SAAS,GAAG,QAAQ;AAC/B,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;OAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,MAAM;AACvE,OAAM,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,SAAQ,CAAC,iBAAiB,CAAC,aAAa,GAAG,CAAC,MAAM;AAClD,QAAO,CAAC;OACF,OAAO,CAAC,IAAI,CAAC,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,OAAM,EAAE,CAAC,WAAW,GAAG,UAAU;AACjC,KAAA;;AAEA;AACA;AACA;KACI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC;;AAEtC,KAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;;AAEjD,KAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/B,OAAM,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB;AACjE,OAAM,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;AACvD,OAAM,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AAC7C,OAAM,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;AACzC,OAAM,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC;AACvC,MAAK,CAAC;;AAEN,KAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,OAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,OAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;AAC3B,SAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;;SAEvB,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACzD,WAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;AAC3C,SAAA;AACA,OAAA,CAAO,CAAC;AACR,KAAA;;AAEA,KAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;AACf,GAAA;AACA;;AAEA,CAAA,eAAc,GAAG,eAAe;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE;GACjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;;GAElE,OAAO,SAAS,eAAe,GAAG;KAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;OACpC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9C,KAAA;GACA,CAAG;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,GAAE,MAAM,CAAC,MAAM,GAAG,MAAM;AACxB,GAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,GAAG;GACvB,IAAI,CAAC,OAAO,EAAE;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC9C,GAAE,OAAO,GAAG;KACR,UAAU,EAAE,OAAO;KACnB,cAAc,EAAE,WAAW;AAC/B,KAAI,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAChD,KAAI,GAAG;IACJ;;GAED,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;;GAErC,MAAM,CAAC,GAAG;AACZ,KAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AACrD,OAAM,MAAM,CAAC,IAAI,CAAC,OAAO;AACzB,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;UAChC,IAAI,CAAC,MAAM,CAAC;AACrB,OAAM,UAAU;OACV;IACH;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,iCAAiC;AAC1C,GAAE,MAAM;AACR,GAAE,GAAG;AACL,GAAE,MAAM;AACR,GAAE,IAAI;AACN,GAAE,OAAO;GACP;GACA;AACF,GAAE,IAAI,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;AAC7C,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;AAClC,KAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,iCAAiC,CAAC;;KAE/D,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC;AAClD,GAAA,CAAG,MAAM;KACL,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAClD,GAAA;AACA,CAAA;;;;;;;;;;;;;;;ACjjBA,CAAA,MAAM,EAAE,GAAGV;AACX,CAAA,MAAM,IAAI,GAAGG;AACb,CAAA,MAAM,EAAE,GAAGC;AACX,CAAA,MAAM,MAAM,GAAG;;AAEf;AACA,CAAA,MAAM,IAAI,GAAG;AACb,GAAE,oCAAoC;AACtC,GAAE,wCAAwC;AAC1C,GAAE,sCAAsC;AACxC,GAAE,mDAAmD;AACrD,GAAE,oCAAoC;AACtC,GAAE,wCAAwC;AAC1C,GAAE,iCAAiC;GACjC;AACF;;AAEA;AACA,CAAA,SAAS,aAAa,IAAI;AAC1B,GAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AACrD,CAAA;;CAEA,SAAS,YAAY,EAAE,KAAK,EAAE;AAC9B,GAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACjC,KAAI,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE;AACxE,GAAA;GACE,OAAO,OAAO,CAAC,KAAK;AACtB,CAAA;;AAEA,CAAA,SAAS,YAAY,IAAI;AACzB,GAAE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK;AAC7B,CAAA;;CAEA,SAAS,GAAG,EAAE,IAAI,EAAE;GAClB,OAAO,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;AACpD,CAAA;;AAEA,CAAA,MAAM,IAAI,GAAG;;AAEb;CACA,SAAS,KAAK,EAAE,GAAG,EAAE;GACnB,MAAM,GAAG,GAAG;;AAEd;AACA,GAAE,IAAI,KAAK,GAAG,GAAG,CAAC,QAAQ;;AAE1B;GACE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI;;AAEvC,GAAE,IAAI;AACN,GAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AAC7C,KAAI,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC;;AAEvB;KACI,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;;AAE/B;AACA,KAAI,KAAK,GAAG,KAAK,CAAC,IAAI;;AAEtB;AACA,KAAI,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC;;AAE9B;KACI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,IAAI;;AAExD;AACA,KAAI,IAAI,UAAU,KAAK,GAAG,EAAE;OACtB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI;OAClC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI;AACxC,KAAA;;AAEA;AACA,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG;AACf,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;CAEA,SAAS,WAAW,EAAE,OAAO,EAAE;GAC7B,OAAO,GAAG,OAAO,IAAI;;AAEvB,GAAE,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACtC,GAAE,OAAO,CAAC,IAAI,GAAG,UAAS;AAC1B,GAAE,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO;AAClD,GAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACtB,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,2BAA2B,EAAE,SAAS,CAAC,sBAAsB,CAAC;KACrF,GAAG,CAAC,IAAI,GAAG;AACf,KAAI,MAAM;AACV,GAAA;;AAEA;AACA;GACE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG;AAC5C,GAAE,MAAM,MAAM,GAAG,IAAI,CAAC;;AAEtB,GAAE,IAAI;AACN,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,KAAI,IAAI;AACR;OACM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;;AAE9B;AACA,OAAM,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG;;AAE7C;AACA,OAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG;;OAE5D;KACN,CAAK,CAAC,OAAO,KAAK,EAAE;AACpB;AACA,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE;AAC3B,SAAQ,MAAM;AACd,OAAA;AACA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,GAAE,OAAO,YAAY,CAAC,KAAK,CAAC,SAAS;AACrC,CAAA;;CAEA,SAAS,KAAK,EAAE,OAAO,EAAE;GACvB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAA;;CAEA,SAAS,MAAM,EAAE,OAAO,EAAE;GACxB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAA;;CAEA,SAAS,IAAI,EAAE,OAAO,EAAE;GACtB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAA;;CAEA,SAAS,UAAU,EAAE,OAAO,EAAE;AAC9B;AACA,GAAE,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;KAClE,OAAO,OAAO,CAAC;AACnB,GAAA;;AAEA;AACA,GAAE,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACnE,KAAI,OAAO,OAAO,CAAC,GAAG,CAAC;AACvB,GAAA;;AAEA;AACA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,SAAS,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3C;AACA,GAAE,IAAI;AACN,GAAE,IAAI;AACN,KAAI,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS;GAC3B,CAAG,CAAC,OAAO,KAAK,EAAE;AAClB,KAAI,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE;AAC1C,OAAM,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,4IAA4I;OAClK,GAAG,CAAC,IAAI,GAAG;AACjB,OAAM,MAAM;AACZ,KAAA;;AAEA,KAAI,MAAM;AACV,GAAA;;AAEA;AACA,GAAE,MAAM,GAAG,GAAG,GAAG,CAAC;GAChB,IAAI,CAAC,GAAG,EAAE;AACZ,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,sCAAsC;KAC5D,GAAG,CAAC,IAAI,GAAG;AACf,KAAI,MAAM;AACV,GAAA;;AAEA;GACE,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa;GACtD,IAAI,CAAC,WAAW,EAAE;AACpB,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,8CAA8C;KACpE,GAAG,CAAC,IAAI,GAAG;AACf,KAAI,MAAM;AACV,GAAA;;AAEA;GACE,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC;GACjE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAC;GAChD,IAAI,CAAC,UAAU,EAAE;AACnB,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,wDAAwD,EAAE,cAAc,CAAC,yBAAyB,CAAC;KAC1H,GAAG,CAAC,IAAI,GAAG;AACf,KAAI,MAAM;AACV,GAAA;;AAEA,GAAE,OAAO,EAAE,UAAU,EAAE,GAAG;AAC1B,CAAA;;CAEA,SAAS,UAAU,EAAE,OAAO,EAAE;GAC5B,IAAI,iBAAiB,GAAG;;AAE1B,GAAE,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;KACtD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrC,OAAM,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;AAC3C,SAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACrC,WAAU,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM;AACzF,SAAA;AACA,OAAA;AACA,KAAA,CAAK,MAAM;OACL,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;AACjG,KAAA;AACA,GAAA,CAAG,MAAM;KACL,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY;AAChE,GAAA;;AAEA,GAAE,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;AACxC,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;CAEA,SAAS,YAAY,EAAE,OAAO,EAAE;GAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1E,CAAA;;CAEA,SAAS,YAAY,EAAE,OAAO,EAAE;AAChC,GAAE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AAC1F,GAAE,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;;AAE1F,GAAE,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;KACnB,IAAI,CAAC,uCAAuC;AAChD,GAAA;;AAEA,GAAE,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO;;AAEjD,GAAE,IAAI,UAAU,GAAG,OAAO,CAAC;GACzB,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;KACzC,UAAU,GAAG,OAAO,CAAC;AACzB,GAAA;;GAEE,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO;;GAEjD,OAAO,EAAE,MAAM;AACjB,CAAA;;CAEA,SAAS,YAAY,EAAE,OAAO,EAAE;AAChC,GAAE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM;GACrD,IAAI,QAAQ,GAAG;AACjB,GAAE,IAAI,UAAU,GAAG,OAAO,CAAC;GACzB,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;KACzC,UAAU,GAAG,OAAO,CAAC;AACzB,GAAA;AACA,GAAE,IAAI,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,mBAAmB,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACvF,GAAE,IAAI,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,mBAAmB,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;;AAEvF,GAAE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;KAC/B,QAAQ,GAAG,OAAO,CAAC;AACvB,GAAA,CAAG,MAAM;KACL,IAAI,KAAK,EAAE;OACT,MAAM,CAAC,qDAAqD;AAClE,KAAA;AACA,GAAA;;AAEA,GAAE,IAAI,WAAW,GAAG,CAAC,UAAU,EAAC;AAChC,GAAE,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;KAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;OAChC,WAAW,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/C,KAAA,CAAK,MAAM;OACL,WAAW,GAAG,GAAE;AACtB,OAAM,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;AAC3C,SAAQ,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC/C,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA;AACA,GAAE,IAAI;GACJ,MAAM,SAAS,GAAG;AACpB,GAAE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAClC,KAAI,IAAI;AACR;AACA,OAAM,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;;OAErE,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO;KACtD,CAAK,CAAC,OAAO,CAAC,EAAE;OACV,IAAI,KAAK,EAAE;AACjB,SAAQ,MAAM,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACpD,OAAA;AACA,OAAM,SAAS,GAAG;AAClB,KAAA;AACA,GAAA;;GAEE,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO;;AAExE;GACE,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,mBAAmB,IAAI,KAAK;GAC5D,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,mBAAmB,IAAI,KAAK;;AAE9D,GAAE,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;KACnB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACzC,MAAM,UAAU,GAAG;AACvB,KAAI,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;AACxC,OAAM,IAAI;AACV,SAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ;AAC9D,SAAQ,UAAU,CAAC,IAAI,CAAC,QAAQ;OAChC,CAAO,CAAC,OAAO,CAAC,EAAE;SACV,IAAI,KAAK,EAAE;AACnB,WAAU,MAAM,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1D,SAAA;AACA,SAAQ,SAAS,GAAG;AACpB,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,GAAA;;GAEE,IAAI,SAAS,EAAE;KACb,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS;AAChD,GAAA,CAAG,MAAM;AACT,KAAI,OAAO,EAAE,MAAM,EAAE,SAAS;AAC9B,GAAA;AACA,CAAA;;AAEA;CACA,SAAS,MAAM,EAAE,OAAO,EAAE;AAC1B;GACE,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,KAAI,OAAO,YAAY,CAAC,YAAY,CAAC,OAAO;AAC5C,GAAA;;AAEA,GAAE,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;;AAEtC;GACE,IAAI,CAAC,SAAS,EAAE;AAClB,KAAI,KAAK,CAAC,CAAC,4DAA4D,EAAE,SAAS,CAAC,CAAC;;AAEpF,KAAI,OAAO,YAAY,CAAC,YAAY,CAAC,OAAO;AAC5C,GAAA;;AAEA,GAAE,OAAO,YAAY,CAAC,YAAY,CAAC,OAAO;AAC1C,CAAA;;AAEA,CAAA,SAAS,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE;AACrC,GAAE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;GAChD,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ;;GAEhD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE;GACvC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG;GACvC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG;;AAE1C,GAAE,IAAI;KACF,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK;AACpE,KAAI,MAAM,CAAC,UAAU,CAAC,OAAO;AAC7B,KAAI,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;GACzD,CAAG,CAAC,OAAO,KAAK,EAAE;AAClB,KAAI,MAAM,OAAO,GAAG,KAAK,YAAY;AACrC,KAAI,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,KAAK;AAC/C,KAAI,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,KAAK;;AAE/C,KAAI,IAAI,OAAO,IAAI,gBAAgB,EAAE;AACrC,OAAM,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,6DAA6D;OACnF,GAAG,CAAC,IAAI,GAAG;AACjB,OAAM,MAAM;KACZ,CAAK,MAAM,IAAI,gBAAgB,EAAE;AACjC,OAAM,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,iDAAiD;OACvE,GAAG,CAAC,IAAI,GAAG;AACjB,OAAM,MAAM;AACZ,KAAA,CAAK,MAAM;AACX,OAAM,MAAM;AACZ,KAAA;AACA,GAAA;AACA,CAAA;;AAEA;CACA,SAAS,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;GACnD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK;GAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ;GACpD,MAAM,SAAS,GAAG;;AAEpB,GAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClC,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,gFAAgF;KACtG,GAAG,CAAC,IAAI,GAAG;AACf,KAAI,MAAM;AACV,GAAA;;AAEA;GACE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACzC,KAAI,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;AAC/D,OAAM,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC7B,SAAQ,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG;AACpC,SAAQ,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG;AACnC,OAAA;;OAEM,IAAI,KAAK,EAAE;AACjB,SAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;WACrB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,wCAAwC,CAAC;AAClE,SAAA,CAAS,MAAM;WACL,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,4CAA4C,CAAC;AACtE,SAAA;AACA,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG;AAClC,OAAM,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG;AACjC,KAAA;AACA,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,MAAM,YAAY,GAAG;AACrB,GAAE,YAAY;AACd,GAAE,YAAY;AACd,GAAE,WAAW;AACb,GAAE,MAAM;AACR,GAAE,OAAO;AACT,GAAE,KAAK;GACL;AACF;;AAEA,CAAAe,IAAA,CAAA,OAAA,CAAA,YAA2B,GAAG,YAAY,CAAC;AAC3C,CAAAA,IAAA,CAAA,OAAA,CAAA,YAA2B,GAAG,YAAY,CAAC;AAC3C,CAAAA,IAAA,CAAA,OAAA,CAAA,WAA0B,GAAG,YAAY,CAAC;AAC1C,CAAAA,IAAA,CAAA,OAAA,CAAA,MAAqB,GAAG,YAAY,CAAC;AACrC,CAAAA,IAAA,CAAA,OAAA,CAAA,OAAsB,GAAG,YAAY,CAAC;AACtC,CAAAA,IAAA,CAAA,OAAA,CAAA,KAAoB,GAAG,YAAY,CAAC;AACpC,CAAAA,IAAA,CAAA,OAAA,CAAA,QAAuB,GAAG,YAAY,CAAC;;AAEvC,CAAAA,IAAA,CAAA,OAAc,GAAG;;;;;;;;;;ACtajB;AACA,CAAA,MAAM,OAAO,GAAG;;AAEhB,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAI,EAAE;AAChD,GAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;AACjC,CAAA;;AAEA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,EAAE;AAC5C,GAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;AAC7B,CAAA;;AAEA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,EAAE;AAC7C,GAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAC9B,CAAA;;AAEA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,EAAE;AAC7C,GAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAC9B,CAAA;;AAEA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAI,EAAE;AAChD,GAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;AACjC,CAAA;;AAEA,CAAA,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,IAAI,EAAE;AAClD,GAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;AACnC,CAAA;;AAEA,CAAA,UAAc,GAAG;;;;;;;;;;AC3BjB,CAAA,MAAM,EAAE,GAAG;;AAEX,CAAA,UAAc,GAAG,SAAS,aAAa,EAAE,IAAI,EAAE;GAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE;AAClD,KAAI,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE;KAC5B,IAAI,OAAO,EAAE;OACX,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AACjC,KAAA;AACA,KAAI,OAAO;AACX,GAAA,CAAG,EAAE,EAAE;;AAEP,GAAE,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,EAAE;KACzB,OAAO,CAAC,KAAK,GAAG;AACpB,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;;;;;;;;AChBA,CAAA,CAAC,YAAY;GACXnB,WAAA,EAAqB,CAAC,MAAM;KAC1B,MAAM,CAAC,MAAM;AACjB,OAAM,EAAE;AACR,OAAMG,iBAAA,EAA4B;AAClC,OAAMC,iBAAA,EAA4B,CAAC,OAAO,CAAC,IAAI;AAC/C;AACA;CACA,CAAC;;;;;;ACmDD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,IAAI,KAAK;AAE9D,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,OAAA,GAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAI;IACtE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;QAC9C;IACF;AACA,IAAAgB,KAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;AACjE,CAAC;AAED;AACA,MAAM,kBAAkB,GAAG,KAAc;AACzC,MAAM,YAAY,GAAG,KAAiB;AACtC,MAAM,gBAAgB,GAAG,KAAc;AAyHvC;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,YAAY,CAAA;IAC3C,OAAO,QAAQ;AACf,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,MAAM;AACN,IAAA,UAAU;AACV,IAAA,UAAU;AACV,IAAA,cAAc,GAAW,yCAAyC,CAAC;AACnE,IAAA,eAAe,GAAW,kDAAkD,CAAC;IAC7E,OAAO,GAAqB,IAAI;IAChC,QAAQ,GAAqB,IAAI;AACjC,IAAA,kBAAkB,GAA6B,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;AACnF,IAAA,mBAAmB,GAA6B,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACpF,aAAa,GAAY,IAAI;IAC7B,sBAAsB,GAAW,CAAC;IAClC,uBAAuB,GAAW,CAAC;IACnC,qBAAqB,GAA0B,IAAI;IACnD,sBAAsB,GAA0B,IAAI;IAErD,OAAO,CAAC,OAA0C,YAAY,EAAA;AACnE,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;;AAEtB,YAAA,IAAI,CAAC,cAAc,GAAG,iDAAiD;AACvE,YAAA,IAAI,CAAC,eAAe,GAAG,0DAA0D;QACnF;AAAO,aAAA,IAAI,IAAI,KAAK,MAAM,EAAE;;AAE1B,YAAA,IAAI,CAAC,cAAc,GAAG,0CAA0C;AAChE,YAAA,IAAI,CAAC,eAAe,GAAG,kDAAkD,CAAC;QAC5E;aAAO;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,yCAAyC;AAC/D,YAAA,IAAI,CAAC,eAAe,GAAG,kDAAkD;QAC3E;IACF;IAEO,OAAO,GAAA;QACZ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC3C,YAAA,OAAO,SAAS;QAClB;aAAO,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC/C,YAAA,OAAO,MAAM;QACf;aAAO;AACL,YAAA,OAAO,YAAY;QACrB;IACF;AAEO,IAAA,gBAAgB,CAAC,OAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO;AAC5B,QAAA,GAAG,CAAC,CAAA,eAAA,EAAkB,OAAO,GAAG,SAAS,GAAG,UAAU,CAAA,CAAE,CAAC;IAC3D;IAEO,gBAAgB,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,gCAAgC;AAC/C,QAAA,IAAI,CAAC,MAAM;AACT,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK;AAClC,kBAAE;AACF,kBAAE,+BAA+B,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,qCAAqC,CAAC;AACxD,QAAA,IAAI,CAAC,UAAU,GAAG,qCAAqC,CAAC;AACxD,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG;AACb,YAAA,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,cAAe;AAC9C,YAAA,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;AACrD,YAAA,cAAc,EAAE,kBAAkB;SACnC;IACH;AAEO,IAAA,OAAO,WAAW,GAAA;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AACjC,YAAA,mBAAmB,CAAC,QAAQ,GAAG,IAAI,mBAAmB,EAAE;QAC1D;QACA,OAAO,mBAAmB,CAAC,QAAQ;IACrC;AAEQ,IAAA,iBAAiB,CAAC,OAAe,EAAA;;AAEvC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAC7C,QAAA,OAAO,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK;IAC1D;AAEQ,IAAA,iBAAiB,CAAC,UAA8B,EAAA;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,GAAG,CAAC,CAAA,0CAAA,EAA6C,UAAU,CAAA,OAAA,CAAS,CAAC;YACrE;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,UAAU,KAAK,OAAO,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB;QACpG,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAE9C,GAAG,CAAC,CAAA,WAAA,EAAc,UAAU,CAAA,2BAAA,EAA8B,QAAQ,GAAG,CAAC,CAAA,KAAA,EAAQ,KAAK,CAAA,EAAA,CAAI,CAAC;AAExF,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;YAC9B,GAAG,CAAC,2BAA2B,UAAU,CAAA,iBAAA,EAAoB,QAAQ,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;AAC7E,YAAA,IAAI,UAAU,KAAK,OAAO,EAAE;gBAC1B,IAAI,CAAC,sBAAsB,EAAE;YAC/B;iBAAO;gBACL,IAAI,CAAC,uBAAuB,EAAE;YAChC;AACA,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1B,CAAC,EAAE,KAAK,CAAC;AAET,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,qBAAqB,GAAG,OAAO;QACtC;aAAO;AACL,YAAA,IAAI,CAAC,sBAAsB,GAAG,OAAO;QACvC;IACF;IAKO,EAAE,CAAC,KAAsB,EAAE,QAAkC,EAAA;QAClE,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IAClC;AAIO,IAAA,IAAI,CAAC,KAAsB,EAAE,GAAG,IAAW,EAAA;QAChD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;IACnC;AAEQ,IAAA,OAAO,CAAC,UAA8B,EAAA;AAC5C,QAAA,MAAM,GAAG,GAAG,UAAU,KAAK,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe;AAC/E,QAAA,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;AAC7B,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;QACnB;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QACpB;AAEA,QAAA,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAK;AACjB,YAAA,GAAG,CAAC,CAAA,EAAG,UAAU,CAAA,iBAAA,CAAmB,CAAC;;AAErC,YAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,gBAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,oBAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxC,oBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;gBACnC;YACF;iBAAO;AACL,gBAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC;AAChC,gBAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,oBAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzC,oBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;gBACpC;YACF;AACA,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,cAAe;AAChC,gBAAA,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;aACvC;YACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;QAEF,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAoB,KAAI;;YAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5C,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,eAAe,EAAE;AAC9D,oBAAA,GAAG,CAAC,CAAA,EAAG,UAAU,CAAA,qBAAA,CAAuB,CAAC;AACzC,oBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBACnC;AAAO,qBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,OAAO,EAAE;AAChC,oBAAA,GAAG,CAAC,CAAA,EAAG,UAAU,CAAA,eAAA,EAAkB,OAAO,CAAC,GAAG,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBACtE;AAAO,qBAAA,IAAI,OAAO,CAAC,CAAC,EAAE;AACpB,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,OAAO,CAAC,CAAC,CAAA,CAAE,EAAE,OAAO,CAAC;oBACjD,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,UAAU,CAAA,KAAA,CAAO,EAAE,OAA+D,CAAC;gBACnG;YACF;AACF,QAAA,CAAC,CAAC;QAEF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,MAAc,KAAI;YAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,oBAAoB;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACnD,YAAA,GAAG,CAAC,CAAA,EAAG,UAAU,CAAA,6BAAA,EAAgC,IAAI,KAAK,QAAQ,CAAA,WAAA,EAAc,SAAS,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAE9G,YAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACrB;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACtB;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;AACpC,QAAA,CAAC,CAAC;QAEF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,KAAI;AAC9B,YAAA,GAAG,CAAC,CAAA,EAAG,UAAU,CAAA,eAAA,EAAkB,KAAK,CAAC,OAAO,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACxE,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,uBAAuB,CAAC,IAAY,EAAA;AAC1C,QAAA,MAAM,KAAK,GAA2B;AACpC,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,IAAI,EAAE,4BAA4B;AAClC,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,IAAI,EAAE,uBAAuB;AAC7B,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,IAAI,EAAE,eAAe;SACtB;AACD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS;IACjC;AAEQ,IAAA,gBAAgB,CAAC,UAA8B,EAAA;AACrD,QAAA,MAAM,EAAE,GAAG,UAAU,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ;AAChE,QAAA,MAAM,aAAa,GAAG,UAAU,KAAK,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB;QACjG,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;YAC1C,MAAM,iBAAiB,GAA8D,EAAE;YAEvF,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAA,iBAAiB,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;YACjD;YACA,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAA,iBAAiB,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;YACjD;YACA,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,gBAAA,iBAAiB,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;YAC7C;YAEA,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,gBAAA,MAAM,UAAU,GAAG;AACjB,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,GAAG,iBAAiB;iBACrB;gBACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACrC;QACF;IACF;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACvB;IACF;IAEO,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxB;IACF;IAEO,qBAAqB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxC,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;QACnC;AACA,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACtB;IACF;IAEO,sBAAsB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACzC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;QACpC;AACA,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACvB;IACF;IAEO,SAAS,CACd,UAA8B,EAC9B,aAAwE,EAAA;AAExE,QAAA,MAAM,oBAAoB,GAAG,UAAU,KAAK,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB;AACxG,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACrD,IAAI,KAAK,EAAE;gBACT,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;YAC5F;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;IACnC;IAEO,WAAW,CAChB,UAA8B,EAC9B,aAAwE,EAAA;AAExE,QAAA,MAAM,oBAAoB,GAAG,UAAU,KAAK,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB;AACxG,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACrD,IAAI,KAAK,EAAE;AACT,gBAAA,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjG;AACF,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,GAAG,aAAa;SACjB;AAED,QAAA,MAAM,EAAE,GAAG,UAAU,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ;QAChE,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;YAC1C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC;IACF;IAEQ,MAAM,WAAW,CACvB,QAAgB,EAChB,MAAA,GAAiB,KAAK,EACtB,MAA4B,EAC5B,WAAA,GAAsD,MAAM,EAAA;AAE5D,QAAA,MAAM,OAAO,GAAG,WAAW,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO;YACtC,WAAW,KAAK,KAAK,GAAG,IAAI,CAAC,MAAM;AACnC,gBAAA,WAAW,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;QAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE,CAAC;AAE5C,QAAA,IAAI;YACF,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC9C,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,wBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC/C;AAAO,yBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AAC9B,wBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAChD;AACF,gBAAA,CAAC,CAAC;YACJ;YAEA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAC3C,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,gBAAA,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACvC,gBAAA,GAAG,CAAC,CAAA,uBAAA,EAA0B,QAAQ,CAAC,MAAM,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBAClF,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,QAAQ,CAAC,MAAM,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,CAAC;YAC7E;AAEA,YAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,GAAY;YAC1B,GAAG,CAAC,yBAAyB,KAAK,CAAC,OAAO,CAAA,YAAA,EAAe,QAAQ,UAAU,GAAG,CAAC,QAAQ,EAAE,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC/G,YAAA,IAAI,KAAK,YAAY,SAAS,EAAE;AAC9B,gBAAA,GAAG,CAAC,CAAA,uBAAA,EAA0B,KAAK,CAAC,KAAK,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACjE;AACA,YAAA,MAAM,KAAK;QACb;IACF;AAEA;;;;;AAKG;IACH,MAAM,iBAAiB,CAAC,MAA4B,EAAA;AAClD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,OAAO,GAAgC,EAAE;QAC7C,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,cAAc,GAAG,CAAC;QACtB,IAAI,SAAS,GAAG,CAAC;QACjB,IAAI,QAAQ,GAAG,EAAE;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;AACtB,QAAA,CAAC,CAAC;AAEF,QAAA,GAAG,CACD,CAAA,SAAA,EAAY,MAAM,CAAC,SAAS,CAAA,eAAA,EAAkB,OAAO,CAAC,MAAM,CAAA,UAAA,EAAa,UAAU,CAAA,GAAA,EAAM,MAAM,CAAC,KAAK,IAAI,UAAU,CAAA,IAAA,EAAO,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAA,CAAA,CAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAC5K;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;AACT,gBAAA,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,kBAAkB;AACnD,gBAAA,IAAI,EAAE,YAAY;gBAClB,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAA2B,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,aAAa,CAAC;AAErG,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClB,gBAAA,GAAG,CAAC,CAAA,mCAAA,EAAsC,OAAO,CAAC,MAAM,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACzG;YACF;;YAGA,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,QAAQ,GAAG,QAAQ,CAAC,QAAQ;YAC9B;;YAGA,IAAI,aAAa,GAAG,CAAC;YACrB,IAAI,iBAAiB,GAAgB,IAAI;YACzC,IAAI,eAAe,GAAgB,IAAI;AAEvC,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAI;gBACvD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,oBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;AAC/C,oBAAA,aAAa,IAAI,IAAI,CAAC,MAAM;;AAG5B,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;wBACnB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,wBAAA,IAAI,CAAC,iBAAiB,IAAI,OAAO,GAAG,iBAAiB,EAAE;4BACrD,iBAAiB,GAAG,OAAO;wBAC7B;AACA,wBAAA,IAAI,CAAC,eAAe,IAAI,OAAO,GAAG,eAAe,EAAE;4BACjD,eAAe,GAAG,OAAO;wBAC3B;AACF,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;YAEF,cAAc,IAAI,aAAa;AAC/B,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;;AAG1B,YAAA,MAAM,YAAY,GAChB,iBAAiB,IAAI;AACnB,kBAAE,CAAA,EAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA,IAAA,EAAO,IAAI,IAAI,CACzG,eAAe,CAChB,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA;kBAC/D,eAAe;AAErB,YAAA,GAAG,CACD,CAAA,KAAA,EAAQ,SAAS,aAAa,aAAa,CAAC,cAAc,EAAE,CAAA,cAAA,EAAiB,cAAc,CAAC,cAAc,EAAE,CAAA,MAAA,EAC1G,OAAO,CAAC,MACV,yBAAyB,YAAY,CAAA,EAAG,YAAY,GAAG,wBAAwB,GAAG,YAAY,CAAA,CAAE,EAAE,EAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CACvI;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpB,GAAG,CAAC,CAAA,0BAAA,EAA6B,SAAS,CAAA,+BAAA,CAAiC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC9F;YACF;QACF;;AAGA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;AACxC,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA,EAAA,EAAK,IAAI,CAAC,MAAM,EAAE;aACnD,IAAI,CAAC,IAAI,CAAC;QACb,GAAG,CACD,CAAA,EAAG,MAAM,CAAC,SAAS,CAAA,sBAAA,EAAyB,cAAc,CAAC,cAAc,EAAE,CAAA,mBAAA,EAAsB,SAAS,CAAA,WAAA,EAAc,OAAO,CAAC,MAChI,CAAA,UAAA,EAAa,YAAY,CAAA,CAAA,CAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CACrD;QAED,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;YACb,eAAe,EAAE,IAAI;YACrB,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;SACvC;IACH;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,aAAa,CAAC,OAAiB,EAAE,QAAiB,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE;YACpD,OAAO;AACP,YAAA,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;AACvC,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACH,MAAM,YAAY,CAAC,MAAc,EAAA;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAE,EAAE,KAAK,CAAC;IAC7D;AAEA;;;;;;;AAOG;AACH,IAAA,MAAM,eAAe,CAAC,OAAiB,EAAE,IAAe,EAAE,QAAiB,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,KAAK,EAAE;YACtD,OAAO;YACP,IAAI,EAAE,IAAI,IAAI,YAAY;YAC1B,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;AACvC,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,eAAe,CAAC,OAAiB,EAAE,IAAe,EAAE,QAAiB,EAAA;;QAEzE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,GAAG,CAAC,kEAAkE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzF,OAAO;AACL,gBAAA,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;aACvC;QACH;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,KAAK,EAAE;YACtD,OAAO;YACP,IAAI,EAAE,IAAI,IAAI,YAAY;YAC1B,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;AACvC,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,cAAc,CAClB,MAAc,EACd,IAAe,EACf,QAAiB,EAAA;QAEjB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,MAAM,CAAA,cAAA,CAAgB,EAAE,KAAK,EAAE;YAChE,IAAI,EAAE,IAAI,IAAI,YAAY;YAC1B,QAAQ;AACT,SAAA,CAAC;IACJ;AAEA;;;;;AAKG;AACH,IAAA,MAAM,gBAAgB,CAAC,MAAc,EAAE,aAAoB,EAAA;AACzD,QAAA,MAAM,IAAI,GAAG,aAAa,IAAI,IAAI,IAAI,EAAE;AACxC,QAAA,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAEnD,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE;AACnC,YAAA,GAAG,EAAE,cAAc,CAAC,WAAW,EAAE;AACjC,YAAA,KAAK,EAAE,CAAC;AACT,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAChE,YAAA,GAAG,CAAC,CAAA,qCAAA,EAAwC,MAAM,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAChF,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,eAAe,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW,EAAA;AAC9D,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAChC,KAAK,EAAE,EAAE;AACV,SAAA,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpC;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,mBAAmB,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW,EAAA;AAClE,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AAChC,YAAA,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC;AAClB,SAAA,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpC;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,GAAW,EAAA;AAC7D,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAChC,KAAK,EAAE,GAAG;AACX,SAAA,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpC;AAEA;;;;;;;AAOG;IACH,MAAM,iBAAiB,CAAC,MAAc,EAAE,YAAoB,EAAE,KAAa,EAAE,GAAW,EAAA;AACtF,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,YAAY,KAAkB;AACnD,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,SAAS;YACT,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AACjC,SAAA,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpC;AAEA;;;;AAIG;IACH,OAAO,WAAW,CAAC,IAAW,EAAA;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,YAAA,OAAO,yBAAyB;QAClC;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG;QAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC3C,MAAM,mBAAmB,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG;QAE7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM;QAE3C,QACE,CAAA,QAAA,EAAW,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,KAAA,EAAQ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;YAC/F,CAAA,QAAA,EAAW,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAA,IAAA,EAAO,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;AAChH,YAAA,CAAA,OAAA,EAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,QAAA,EAAW,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AACtD,YAAA,CAAA,YAAA,EAAe,SAAS,CAAC,cAAc,EAAE,CAAA,CAAE;IAE/C;AAEA;;;;;;;;AAQG;IACH,MAAM,SAAS,CAAC,MAAwB,EAAA;;AAEtC,QAAA,MAAM,EACJ,MAAM,GAAG,QAAQ,EACjB,WAAW,GAAG,WAAW,EACzB,SAAS,GAAG,IAAI,GACjB,GAAmF;AAClF,YAAA,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ;AAClC,YAAA,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,WAAW;AAC/C,YAAA,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,IAAI;SACrC;AAED,QAAA,MAAM,MAAM,GAAkB,MAAM,IAAI,CAAC,WAAW,CAClD,SAAS,EACT,KAAK,EACL,EAAE,MAAM,EAAE,WAAW,EAAE,EACvB,KAAK,CACN;AAED,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,MAAM;QAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC;IAChF;AAEA;;;;;AAKG;IACH,MAAM,QAAQ,CAAC,eAAuB,EAAA;;AAEpC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA,QAAA,EAAW,kBAAkB,CAAC,eAAe,CAAC,CAAA,CAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;IACpG;;AAIA;;;;;;AAMG;IACH,MAAM,eAAe,CAAC,MAA0B,EAAA;QAC9C,MAAM,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM;AACpD,QAAA,OAAO,IAAI,CAAC,WAAW,CACrB,CAAA,mBAAA,EAAsB,kBAAkB,CAAC,iBAAiB,CAAC,CAAA,CAAE,EAC7D,KAAK,EACL,WAAW,EACX,SAAS,CACV;IACH;AAEA;;;;;;AAMG;IACH,MAAM,sBAAsB,CAAC,MAAiC,EAAA;;QAE5D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC;IACpF;AAEA;;;;;;AAMG;IACH,MAAM,sBAAsB,CAAC,MAAiC,EAAA;;QAE5D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC;IACpF;AAEA;;;;;;;AAOG;IACH,MAAM,wBAAwB,CAAC,MAAmC,EAAA;AAChE,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QACX,OAAO,CAAC,IAAI,CAAC,GAAG;QACnC,IAAI,OAAO,GAAsC,EAAE;QACnD,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,cAAc,GAAG,CAAC;QACtB,IAAI,SAAS,GAAG,CAAC;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;AACtB,QAAA,CAAC,CAAC;QAEF,GAAG,CACD,8CAA8C,OAAO,CAAC,MAAM,CAAA,UAAA,EAAa,MAAM,CAAC,SAAS,CAAA,EAAA,EACvF,MAAM,CAAC,KAAK,IAAI,UAClB,CAAA,IAAA,EAAO,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAA,CAAA,CAAG,CACjC;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;gBACT,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAAkC,MAAM,IAAI,CAAC,WAAW,CACpE,eAAe,EACf,KAAK,EACL,aAAa,EACb,SAAS,CACV;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClB,gBAAA,GAAG,CAAC,CAAA,2CAAA,EAA8C,OAAO,CAAC,MAAM,CAAA,QAAA,CAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC7F;YACF;;YAGA,IAAI,aAAa,GAAG,CAAC;YACrB,IAAI,iBAAiB,GAAgB,IAAI;YACzC,IAAI,eAAe,GAAgB,IAAI;AAEvC,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAI;gBACvD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,oBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;AAC/C,oBAAA,aAAa,IAAI,IAAI,CAAC,MAAM;;AAG5B,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;wBACnB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,wBAAA,IAAI,CAAC,iBAAiB,IAAI,OAAO,GAAG,iBAAiB,EAAE;4BACrD,iBAAiB,GAAG,OAAO;wBAC7B;AACA,wBAAA,IAAI,CAAC,eAAe,IAAI,OAAO,GAAG,eAAe,EAAE;4BACjD,eAAe,GAAG,OAAO;wBAC3B;AACF,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;YAEF,cAAc,IAAI,aAAa;AAC/B,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;;AAG1B,YAAA,MAAM,YAAY,GAChB,iBAAiB,IAAI;kBACjB,CAAA,EAAI,iBAA0B,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA,IAAA,EAC1F,eACD,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA;kBAC/D,eAAe;AAErB,YAAA,GAAG,CACD,CAAA,KAAA,EAAQ,SAAS,CAAA,UAAA,EAAa,aAAa,CAAC,cAAc,EAAE,CAAA,qBAAA,EAAwB,cAAc,CAAC,cAAc,EAAE,CAAA,MAAA,EACjH,OAAO,CAAC,MACV,CAAA,sBAAA,EAAyB,YAAY,CAAA,EAAG,YAAY,GAAG,wBAAwB,GAAG,YAAY,EAAE,EAChG;AACE,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CACF;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpB,GAAG,CAAC,CAAA,uCAAA,EAA0C,SAAS,CAAA,+BAAA,CAAiC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC3G;YACF;QACF;;AAGA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;AACxC,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA,EAAA,EAAK,IAAI,CAAC,MAAM,EAAE;aACnD,IAAI,CAAC,IAAI,CAAC;AACb,QAAA,GAAG,CACD,CAAA,6BAAA,EAAgC,cAAc,CAAC,cAAc,EAAE,CAAA,mBAAA,EAAsB,SAAS,CAAA,QAAA,EAAW,YAAY,CAAA,CAAA,CAAG,CACzH;QAED,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;YACb,eAAe,EAAE,SAAS;SAC3B;IACH;AAEA;;;;;;;AAOG;IACH,MAAM,0BAA0B,CAAC,MAAqC,EAAA;AACpE,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QACX,OAAO,CAAC,IAAI,CAAC,GAAG;QACnC,IAAI,SAAS,GAAwC,EAAE;QACvD,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,gBAAgB,GAAG,CAAC;QACxB,IAAI,SAAS,GAAG,CAAC;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE;AACxB,QAAA,CAAC,CAAC;AAEF,QAAA,GAAG,CACD,CAAA,6CAAA,EAAgD,OAAO,CAAC,MAAM,CAAA,UAAA,EAAa,MAAM,CAAC,KAAK,IAAI,UAAU,CAAA,IAAA,EACnG,MAAM,CAAC,GAAG,IAAI,QAChB,CAAA,CAAA,CAAG,CACJ;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;gBACT,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAAoC,MAAM,IAAI,CAAC,WAAW,CACtE,iBAAiB,EACjB,KAAK,EACL,aAAa,EACb,SAAS,CACV;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,gBAAA,GAAG,CAAC,CAAA,6CAAA,EAAgD,OAAO,CAAC,MAAM,CAAA,QAAA,CAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC/F;YACF;;YAGA,IAAI,eAAe,GAAG,CAAC;YACvB,IAAI,iBAAiB,GAAgB,IAAI;YACzC,IAAI,eAAe,GAAgB,IAAI;AAEvC,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;gBAC3D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,oBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC;AACrD,oBAAA,eAAe,IAAI,MAAM,CAAC,MAAM;;AAGhC,oBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;wBACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,wBAAA,IAAI,CAAC,iBAAiB,IAAI,SAAS,GAAG,iBAAiB,EAAE;4BACvD,iBAAiB,GAAG,SAAS;wBAC/B;AACA,wBAAA,IAAI,CAAC,eAAe,IAAI,SAAS,GAAG,eAAe,EAAE;4BACnD,eAAe,GAAG,SAAS;wBAC7B;AACF,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;YAEF,gBAAgB,IAAI,eAAe;AACnC,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;;AAG1B,YAAA,MAAM,YAAY,GAChB,iBAAiB,IAAI;kBACjB,CAAA,EAAI,iBAA0B,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA,IAAA,EAC1F,eACD,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA;kBAC/D,eAAe;AAErB,YAAA,GAAG,CACD,CAAA,KAAA,EAAQ,SAAS,CAAA,UAAA,EAAa,eAAe,CAAC,cAAc,EAAE,CAAA,uBAAA,EAA0B,gBAAgB,CAAC,cAAc,EAAE,CAAA,MAAA,EACvH,OAAO,CAAC,MACV,CAAA,sBAAA,EAAyB,YAAY,CAAA,EAAG,YAAY,GAAG,wBAAwB,GAAG,YAAY,EAAE,EAChG;AACE,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CACF;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpB,GAAG,CAAC,CAAA,yCAAA,EAA4C,SAAS,CAAA,+BAAA,CAAiC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC7G;YACF;QACF;;AAGA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS;AAC1C,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAA,EAAA,EAAK,MAAM,CAAC,MAAM,EAAE;aACvD,IAAI,CAAC,IAAI,CAAC;AACb,QAAA,GAAG,CACD,CAAA,+BAAA,EAAkC,gBAAgB,CAAC,cAAc,EAAE,CAAA,qBAAA,EAAwB,SAAS,CAAA,QAAA,EAAW,YAAY,CAAA,CAAA,CAAG,CAC/H;QAED,OAAO;AACL,YAAA,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,SAAS;SAC3B;IACH;AAEA;;;;;;;AAOG;IACH,MAAM,kBAAkB,CAAC,MAA8B,EAAA;;QAErD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC;IAChF;AAEA;;;;;;;AAOG;IACH,MAAM,wBAAwB,CAAC,QAAwB,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,4BAA4B,QAAQ,CAAA,CAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC;IAC9F;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,uBAAuB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,yBAAyB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC;IACjF;AAEA;;;;AAIG;IACH,OAAO,iBAAiB,CAAC,IAAiB,EAAA;QACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,YAAA,OAAO,gCAAgC;QACzC;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG;QAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC3C,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QAElF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM;QAE3C,QACE,CAAA,eAAA,EAAkB,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,KAAA,EAAQ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;YACtG,CAAA,QAAA,EAAW,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAA,IAAA,EAAO,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;AAChH,YAAA,CAAA,OAAA,EAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,QAAA,EAAW,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AACtD,YAAA,CAAA,YAAA,EAAe,SAAS,CAAC,cAAc,EAAE,CAAA,CAAE;IAE/C;AAEA;;;;AAIG;IACH,OAAO,kBAAkB,CAAC,MAAW,EAAA;QACnC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,0BAA0B;QACnC;QAEA,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AAC/E,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AAC/E,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AAC/E,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AAC5E,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AAEzE,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,0BAA0B;IACzE;AAEA;;;;;AAKG;AACH,IAAA,OAAO,uBAAuB,CAAC,cAAwB,EAAE,iBAAgD,EAAA;QACvG,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,YAAA,OAAO,eAAe;QACxB;QAEA,MAAM,YAAY,GAAG;AAClB,aAAA,GAAG,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAA,SAAA,EAAY,IAAI,GAAG;aAC5D,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,SAAS,CAAC;AAEvC,QAAA,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,qCAAqC;IAClG;AAEA;;;;;AAKG;AACH,IAAA,OAAO,eAAe,CAAC,YAAoB,EAAE,gBAA8C,EAAA;QACzF,OAAO,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAA,kBAAA,EAAqB,YAAY,GAAG;IAC/E;AAEA;;;;;AAKG;AACH,IAAA,MAAM,SAAS,CACb,MAAc,EACd,MAMC,EAAA;AAED,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACjD,GAAG,EAAE,IAAI,IAAI,EAAE;AACf,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,IAAI,EAAE,MAAe;AACrB,YAAA,eAAe,EAAE,IAAI;SACtB;QACD,MAAM,YAAY,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE;QACpD,IAAI,YAAY,GAAiB,EAAE;QACnC,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,YAAY,GAAG,CAAC;AACpB,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK;;QAGnC,SAAS,YAAY,CAAC,OAA2B,EAAA;AAC/C,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,SAAS;;YAE9B,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;QAC5C;QAEA,OAAO,YAAY,EAAE;AACnB,YAAA,MAAM,WAAW,GAAoB,IAAI,eAAe,CAAC;AACvD,gBAAA,IAAI,YAAY,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AAChF,gBAAA,IAAI,YAAY,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1E,IAAI,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAClC,IAAI,YAAY,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AACtF,gBAAA,IAAI,YAAY,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;AACrD,gBAAA,IAAI,YAAY,CAAC,eAAe,KAAK;sBACjC,EAAE,eAAe,EAAE,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE;sBAC1D,EAAE,CAAC;gBACP,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAC5C,aAAA,CAAC;YACF,MAAM,GAAG,GAAW,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,MAAA,EAAS,WAAW,CAAA,CAAE;AAC5D,YAAA,GAAG,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC5D,YAAA,MAAM,QAAQ,GAAa,MAAM,KAAK,CAAC,GAAG,EAAE;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,gBAAA,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACvC,gBAAA,GAAG,CAAC,CAAA,uBAAA,EAA0B,QAAQ,CAAC,MAAM,MAAM,SAAS,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC1F,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,QAAQ,CAAC,MAAM,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,CAAC;YAC7E;AACA,YAAA,MAAM,IAAI,GAAkE,MAAM,QAAQ,CAAC,IAAI,EAAE;AACjG,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3C,gBAAA,GAAG,CAAC,CAAA,0CAAA,EAA6C,MAAM,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACpF;YACF;AACA,YAAA,MAAM,eAAe,GAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAA0B,MAAM;gBACnF,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,QAAQ;gBACvB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAC5C,gBAAA,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS;gBACpE,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,gBAAA,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU;AAC9C,gBAAA,WAAW,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU;AACrD,gBAAA,SAAS,EAAE,CAAC;AACb,aAAA,CAAC,CAAC;AACH,YAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC;AACnD,YAAA,YAAY,GAAG,YAAY,CAAC,MAAM;AAClC,YAAA,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI;AACxC,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,QAAQ,IAAI,YAAY,GAAG,QAAQ,CAAC;YACpE,GAAG,CACD,WAAW,eAAe,CAAC,MAAM,CAAA,uBAAA,EAA0B,YAAY,SAAS,MAAM,CAAA,cAAA,EAAiB,YAAY,CAAA,CAAE,EACrH,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAC1B;AACD,YAAA,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,EAAE;gBACxC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAC9C;YACF;QACF;AACA,QAAA,OAAO,YAAY;IACrB;;AAIA;;;;;AAKG;IACH,MAAM,uBAAuB,CAAC,MAAkC,EAAA;AAC9D,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,OAAO,GAAgC,EAAE;QAC7C,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,cAAc,GAAG,CAAC;QACtB,IAAI,SAAS,GAAG,CAAC;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;AACtB,QAAA,CAAC,CAAC;QAEF,GAAG,CACD,6CAA6C,OAAO,CAAC,MAAM,CAAA,UAAA,EAAa,MAAM,CAAC,SAAS,CAAA,EAAA,EAAK,MAAM,CAAC,KAAK,IAAI,UAAU,CAAA,IAAA,EAAO,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAA,CAAA,CAAG,CACxJ;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;AACT,gBAAA,OAAO,EAAE,UAAU;gBACnB,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAAiC,MAAM,IAAI,CAAC,WAAW,CACnE,iBAAiB,EACjB,KAAK,EACL,aAAa,EACb,SAAS,CACV;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClB,gBAAA,GAAG,CAAC,CAAA,0CAAA,EAA6C,OAAO,CAAC,MAAM,CAAA,QAAA,CAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC5F;YACF;;YAGA,IAAI,aAAa,GAAG,CAAC;AACrB,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAI;gBACvD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,oBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;AAC/C,oBAAA,aAAa,IAAI,IAAI,CAAC,MAAM;gBAC9B;AACF,YAAA,CAAC,CAAC;YAEF,cAAc,IAAI,aAAa;AAC/B,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;AAE1B,YAAA,GAAG,CACD,CAAA,KAAA,EAAQ,SAAS,CAAA,UAAA,EAAa,aAAa,CAAC,cAAc,EAAE,CAAA,qBAAA,EAAwB,cAAc,CAAC,cAAc,EAAE,CAAA,MAAA,EAAS,OAAO,CAAC,MAAM,CAAA,QAAA,EAAW,YAAY,GAAG,wBAAwB,GAAG,YAAY,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CACjO;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpB,GAAG,CAAC,CAAA,sCAAA,EAAyC,SAAS,CAAA,+BAAA,CAAiC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC1G;YACF;QACF;QAEA,GAAG,CACD,CAAA,uCAAA,EAA0C,cAAc,CAAC,cAAc,EAAE,CAAA,mBAAA,EAAsB,SAAS,CAAA,MAAA,CAAQ,CACjH;QAED,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;YACb,eAAe,EAAE,IAAI;SACtB;IACH;AAEA;;;;AAIG;IACH,MAAM,mBAAmB,CAAC,OAAiB,EAAA;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACrG;AAEA;;;;;AAKG;IACH,MAAM,yBAAyB,CAAC,MAAoC,EAAA;AAClE,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,SAAS,GAAwC,EAAE;QACvD,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,gBAAgB,GAAG,CAAC;QACxB,IAAI,SAAS,GAAG,CAAC;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE;AACxB,QAAA,CAAC,CAAC;AAEF,QAAA,GAAG,CACD,CAAA,4CAAA,EAA+C,OAAO,CAAC,MAAM,CAAA,UAAA,EAAa,MAAM,CAAC,KAAK,IAAI,UAAU,CAAA,IAAA,EAAO,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAA,CAAA,CAAG,CACrI;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;AACT,gBAAA,OAAO,EAAE,UAAU;gBACnB,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAAmC,MAAM,IAAI,CAAC,WAAW,CACrE,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,SAAS,CACV;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,gBAAA,GAAG,CAAC,CAAA,4CAAA,EAA+C,OAAO,CAAC,MAAM,CAAA,QAAA,CAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC9F;YACF;;YAGA,IAAI,eAAe,GAAG,CAAC;AACvB,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;gBAC3D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,oBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC;AACrD,oBAAA,eAAe,IAAI,MAAM,CAAC,MAAM;gBAClC;AACF,YAAA,CAAC,CAAC;YAEF,gBAAgB,IAAI,eAAe;AACnC,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;AAE1B,YAAA,GAAG,CACD,CAAA,KAAA,EAAQ,SAAS,CAAA,UAAA,EAAa,eAAe,CAAC,cAAc,EAAE,CAAA,uBAAA,EAA0B,gBAAgB,CAAC,cAAc,EAAE,CAAA,MAAA,EAAS,OAAO,CAAC,MAAM,CAAA,QAAA,EAAW,YAAY,GAAG,wBAAwB,GAAG,YAAY,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CACvO;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpB,GAAG,CAAC,CAAA,wCAAA,EAA2C,SAAS,CAAA,+BAAA,CAAiC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC5G;YACF;QACF;QAEA,GAAG,CACD,CAAA,yCAAA,EAA4C,gBAAgB,CAAC,cAAc,EAAE,CAAA,qBAAA,EAAwB,SAAS,CAAA,MAAA,CAAQ,CACvH;QAED,OAAO;AACL,YAAA,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,IAAI;SACtB;IACH;AAEA;;;;AAIG;IACH,MAAM,qBAAqB,CAAC,OAAiB,EAAA;QAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,GAAG,CAAC,wEAAwE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/F,YAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACvB;QAEA,OAAO,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACvG;AAEA;;;;;AAKG;IACH,MAAM,yBAAyB,CAAC,MAAoC,EAAA;AAClE,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,SAAS,GAAwC,EAAE;QACvD,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,gBAAgB,GAAG,CAAC;QACxB,IAAI,SAAS,GAAG,CAAC;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE;AACxB,QAAA,CAAC,CAAC;AAEF,QAAA,GAAG,CACD,CAAA,4CAAA,EAA+C,OAAO,CAAC,MAAM,CAAA,UAAA,EAAa,MAAM,CAAC,KAAK,IAAI,UAAU,CAAA,IAAA,EAAO,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAA,CAAA,CAAG,CACrI;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;AACT,gBAAA,OAAO,EAAE,UAAU;gBACnB,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAAmC,MAAM,IAAI,CAAC,WAAW,CACrE,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,SAAS,CACV;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,gBAAA,GAAG,CAAC,CAAA,4CAAA,EAA+C,OAAO,CAAC,MAAM,CAAA,QAAA,CAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC9F;YACF;;YAGA,IAAI,eAAe,GAAG,CAAC;AACvB,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;gBAC3D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,oBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC;AACrD,oBAAA,eAAe,IAAI,MAAM,CAAC,MAAM;gBAClC;AACF,YAAA,CAAC,CAAC;YAEF,gBAAgB,IAAI,eAAe;AACnC,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;AAE1B,YAAA,GAAG,CACD,CAAA,KAAA,EAAQ,SAAS,CAAA,UAAA,EAAa,eAAe,CAAC,cAAc,EAAE,CAAA,uBAAA,EAA0B,gBAAgB,CAAC,cAAc,EAAE,CAAA,MAAA,EAAS,OAAO,CAAC,MAAM,CAAA,QAAA,EAAW,YAAY,GAAG,wBAAwB,GAAG,YAAY,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CACvO;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpB,GAAG,CAAC,CAAA,wCAAA,EAA2C,SAAS,CAAA,+BAAA,CAAiC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC5G;YACF;QACF;QAEA,GAAG,CACD,CAAA,yCAAA,EAA4C,gBAAgB,CAAC,cAAc,EAAE,CAAA,qBAAA,EAAwB,SAAS,CAAA,MAAA,CAAQ,CACvH;QAED,OAAO;AACL,YAAA,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,IAAI;SACtB;IACH;AAEA;;;;AAIG;IACH,MAAM,qBAAqB,CAAC,OAAiB,EAAA;QAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,GAAG,CAAC,wEAAwE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/F,YAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACvB;QAEA,OAAO,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACvG;AAEA;;;;;AAKG;IACH,MAAM,kBAAkB,CAAC,OAAiB,EAAA;QACxC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,GAAG,CAAC,qEAAqE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5F,YAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QAC1B;QAEA,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACnG;AAEA;;;;AAIG;IACH,MAAM,yBAAyB,CAAC,OAAiB,EAAA;QAC/C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,GAAG,CAAC,4EAA4E,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACnG,YAAA,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;QAC3B;QAEA,OAAO,IAAI,CAAC,WAAW,CAAC,8BAA8B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IAC3G;AAEA;;;;AAIG;IACH,OAAO,iBAAiB,CAAC,IAAW,EAAA;QAClC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,YAAA,OAAO,gCAAgC;QACzC;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG;QAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC3C,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QAElF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM;QAE3C,QACE,CAAA,eAAA,EAAkB,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,KAAA,EAAQ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;YACtG,CAAA,QAAA,EAAW,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAA,IAAA,EAAO,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;AAChH,YAAA,CAAA,OAAA,EAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,QAAA,EAAW,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AACtD,YAAA,CAAA,YAAA,EAAe,SAAS,CAAC,cAAc,EAAE,CAAA,CAAE;IAE/C;AACD;AAED;AACO,MAAM,aAAa,GAAG,mBAAmB,CAAC,WAAW,EAAE;;ACxqD9D,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAIzC,MAAM,kBAAmB,SAAQ,KAAK,CAAA;AAC3B,IAAA,MAAM;AACN,IAAA,MAAM;AACN,IAAA,GAAG;AACH,IAAA,YAAY;AACZ,IAAA,eAAe;AACf,IAAA,WAAW;AACX,IAAA,MAAM;AAEf,IAAA,WAAA,CAAY,MASX,EAAA;AACC,QAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,oBAAoB;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI;AACnC,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG;QACrB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI;QAC/C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI;QACrD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI;AAC7C,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;IAC7B;AACD;AAED;;;;;;;;;;;;;;;;;;;AAmBE;MAEW,gBAAgB,CAAA;IAC3B,OAAO,GAAG,CAAC,WAA8B,EAAA;AACvC,QAAA,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAqB;IAC9D;IAEA,OAAO,WAAW,CAAC,WAA8B,EAAA;AAC/C,QAAA,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAqB;IAC9D;IAEQ,EAAE,GAAqB,IAAI;AAC3B,IAAA,OAAO;IACP,mBAAmB,GAA2C,IAAI;AAClE,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,KAAK;IACL,aAAa,GAAG,KAAK;IACrB,UAAU,GAAG,KAAK;AAClB,IAAA,cAAc,GAAG,KAAK,CAAC;IACvB,gBAAgB,GAA0B,IAAI;AAC9C,IAAA,eAAe,GAAqC,IAAI,GAAG,EAAE;IAC7D,YAAY,GAAG,KAAK;IACpB,gBAAgB,GAAG,KAAK;AAEhC;;;;;;;;;;AAUG;IACH,WAAA,CAAY,WAA8B,EAAE,OAAoC,EAAA;AAC9E,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;;AAG9B,QAAA,IAAI,CAAC,UAAU;AACb,YAAA,WAAW,CAAC,IAAI,KAAK,OAAO,GAAG,qCAAqC,GAAG,+BAA+B;AAExG,QAAA,IAAI,CAAC,KAAK;AACR,YAAA,WAAW,CAAC,IAAI,KAAK,OAAO,GAAG,uCAAuC,GAAG,iCAAiC;QAE5G,IAAI,CAAC,OAAO,GAAG;YACb,iBAAiB,EAAE,WAAW,CAAC,MAAM;YACrC,qBAAqB,EAAE,WAAW,CAAC,SAAS;AAC5C,YAAA,cAAc,EAAE,kBAAkB;SACnC;;AAGD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5E,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,KAAK;IACpD;IAEQ,GAAG,CAAC,OAAe,EAAE,OAAA,GAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAA;QACjE,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE;YACjD;QACF;QACAA,KAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IACrG;AAEA;;;;AAIG;AACK,IAAA,mBAAmB,GAAG,CAAC,KAAa,KAAY;AACtD,QAAA,OAAO,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK;AACvF,IAAA,CAAC;AAEO,IAAA,YAAY,CAAC,KAAgB,EAAA;AACnC,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;IAC7E;AAEQ,IAAA,2BAA2B,CAAC,WAAmB,EAAA;AACrD,QAAA,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC7B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAc;YACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AACnC,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC;AAChC,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC;AACtC,YAAA,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC;YAEpC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC3D,gBAAA,OAAO,IAAI;YACb;YAEA,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACtD,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,OAAO,WAAqC;QAC9C;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,IAAI;QACb;IACF;AAEQ,IAAA,qBAAqB,CAAC,KAA4B,EAAA;AACxD,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3E;AAEA,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAC9B;QAEA,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE;IACnB;AAEQ,IAAA,2BAA2B,CAAC,aAAqC,EAAA;AACvE,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa;AAChC,aAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ;aACzE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;aACnE,IAAI,CAAC,IAAI,CAAC;IACf;AAEQ,IAAA,mBAAmB,CAAC,cAAqC,EAAA;AAC/D,QAAA,OAAO,cAAc,EAAE,MAAM,GAAG,CAAA,EAAG,cAAc,CAAC,MAAM,CAAA,OAAA,CAAS,GAAG,uBAAuB;IAC7F;AAEQ,IAAA,0BAA0B,CAAC,MAMlC,EAAA;AACC,QAAA,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,MAAM;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;QACvD,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,KAAK,WAAW,IAAI,wBAAwB,CAAC;AACnF,QAAA,MAAM,YAAY,GAAG,aAAa,EAAE,IAAI,GAAG,CAAA,OAAA,EAAU,aAAa,CAAC,IAAI,CAAA,CAAA,CAAG,GAAG,EAAE;AAC/E,QAAA,MAAM,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,GAAG,EAAE;AAC1F,QAAA,MAAM,UAAU,GACd,aAAa,KAAK;cACd,CAAA,UAAA,EAAa,aAAa,CAAA,CAAA;cAC1B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,aAAa,KAAK;kBAC7C,CAAA,WAAA,EAAc,WAAW,CAAA,CAAA;kBACzB,EAAE;AAEV,QAAA,OAAO,CAAA,EAAG,MAAM,CAAA,aAAA,EAAgB,MAAM,CAAA,EAAG,YAAY,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,EAAI,UAAU,CAAA,MAAA,EAAS,GAAG,EAAE;IAC/F;AAEQ,IAAA,iCAAiC,CAAC,MAIzC,EAAA;QACC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,MAAM;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;AACvD,QAAA,OAAO,GAAG,MAAM,CAAA,EAAA,EAAK,YAAY,CAAA,OAAA,EAAU,GAAG,EAAE;IAClD;AAEQ,IAAA,iBAAiB,CAAC,IAAS,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACrC;aAAO;YACL,IAAI,CAAC,GAAG,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,OAAO,IAAI,eAAe,CAAA,CAAE,EAAE;AACpE,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CAAC;QACJ;IACF;AAEQ,IAAA,mBAAmB,CAAC,IAAS,EAAA;QACnC,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,GAAG,CAAC,0CAA0C,CAAC;QACtD;IACF;AAEQ,IAAA,iBAAiB,CAAC,IAAiB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,GAAG,CACN,CAAA,cAAA,EAAiB,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA,OAAA,EACjE,IAAI,CAAC,KAAK,KAAK,cAAc,GAAG,CAAA,iBAAA,EAAoB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAA,CAAA,CAAG,GAAG,EACjF,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA,CAAE,EAC3B;AACE,gBAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;AACzB,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CACF;AACD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAChC;IACF;AAEQ,IAAA,aAAa,CAAC,OAAe,EAAA;AACnC,QAAA,IAAI;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAErD,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB;iBAAO;gBACL,IAAI,CAAC,GAAG,CAAC,CAAA,qCAAA,EAAwC,IAAI,CAAC,MAAM,EAAE,EAAE;AAC9D,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;YACJ;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE;AAC5C,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,EAAE;AAC9E,aAAA,CAAC;QACJ;IACF;IAEA,gBAAgB,GAAA;;AAEd,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,iDAAiD,CAAC;YAC3D;QACF;QAEA,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC1C,YAAA,IAAI,CAAC,GAAG,CAAC,gDAAgD,CAAC;YAC1D;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE;AAC5B,YAAA,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI;QAChB;QAEA,IAAI,CAAC,GAAG,CAAC,CAAA,2BAAA,EAA8B,IAAI,CAAC,KAAK,CAAA,GAAA,CAAK,CAAC;QAEvD,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAEnC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,YAAW;AAC5B,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAC/B,gBAAA,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB,gBAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE;AACpC,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACzB;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,GAAG,CAAC,sCAAsC,EAAE;AAC/C,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,EAAE;AAC9E,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;YAClB;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAoB,KAAI;YAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACrC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAI;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,EAAE;AAC9E,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACzB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC;AACvC,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAGvB,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;YAC9B;;AAGA,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAK;AACtC,oBAAA,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC;oBACtC,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC;YACzB;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,UAAU,GAAA;;AAER,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;AAG5B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;AAEA,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;AACX,YAAA,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC;;AAGtC,YAAA,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE;AAE5B,YAAA,IAAI;;gBAEF,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;oBACxF,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC;gBAC1C;qBAAO;AACL,oBAAA,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE;gBACrB;YACF;AAAE,YAAA,MAAM;;AAEN,gBAAA,IAAI;AACF,oBAAA,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE;gBACrB;AAAE,gBAAA,MAAM;;gBAER;YACF;AAEA,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI;QAChB;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACpC;AAEQ,IAAA,MAAM,YAAY,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AACrD,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;QAC3D;AAEA,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;AAC5B,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;SACnC;AAED,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAEzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,MAAK;gBAClC,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrD,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC/C,CAAC,EAAE,KAAK,CAAC;AAET,YAAA,MAAM,kBAAkB,GAAG,CAAC,IAAoB,KAAI;AAClD,gBAAA,IAAI;oBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3C,oBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,eAAe,EAAE;wBACtC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC;wBACtD,YAAY,CAAC,WAAW,CAAC;wBAEzB,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,EAAE;AACzC,4BAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,4BAAA,OAAO,EAAE;wBACX;6BAAO;4BACL,MAAM,KAAK,GAAG,CAAA,uBAAA,EAA0B,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,eAAe,CAAA,CAAE;4BAClF,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAClC,4BAAA,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC1B;oBACF;gBACF;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,IAAI,CAAC,GAAG,CAAC,+BAA+B,EAAE;AACxC,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,EAAE;AAC9E,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC;YAED,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC5C,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,uBAAuB,GAAA;QACnC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC5E,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;QACzD;AAEA,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,IAAI,EAAE;gBACJ,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,aAAA;SACF;AAED,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,MAAK;AACpC,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACxC,CAAC,EAAE,KAAK,CAAC;AAET,YAAA,MAAM,oBAAoB,GAAG,CAAC,IAAoB,KAAI;AACpD,gBAAA,IAAI;oBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3C,oBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE;wBAClC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,SAAS,EAAE,oBAAoB,CAAC;wBACxD,YAAY,CAAC,aAAa,CAAC;wBAE3B,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE;AACpD,4BAAA,OAAO,EAAE;wBACX;6BAAO;AACL,4BAAA,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;wBAC3D;oBACF;gBACF;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,IAAI,CAAC,GAAG,CAAC,iCAAiC,EAAE;AAC1C,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,eAAe,EAAE;AAC9E,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC;YAED,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC;AAC9C,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,WAAW,CACvB,QAAgB,EAChB,MAAA,GAAiB,KAAK,EACtB,IAAwB,EACxB,WAAA,GAAsB,EAAE,EACxB,cAAqC,EAAA;QAErC,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,EAAG,QAAQ,CAAA,EAAG,WAAW,CAAA,CAAE;AACzD,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS;AAC9C,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,gBAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;gBACzC,MAAM,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;gBACnE,MAAM,MAAM,GAAG,cAAc,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM;AAC9D,gBAAA,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC;AACnC,oBAAA,OAAO,EAAE,IAAI,CAAC,0BAA0B,CAAC;wBACvC,cAAc;wBACd,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,GAAG;wBACH,aAAa;wBACb,WAAW;qBACZ,CAAC;oBACF,MAAM;oBACN,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,GAAG;AACH,oBAAA,YAAY,EAAE,aAAa,EAAE,IAAI,IAAI,IAAI;AACzC,oBAAA,eAAe,EAAE,aAAa;oBAC9B,WAAW;oBACX,MAAM;AACP,iBAAA,CAAC;AAEF,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAClD,gBAAA,MAAM,KAAK;YACb;;AAGA,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE;AAC7E,gBAAA,OAAO,IAAiB;YAC1B;YAEA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACxD,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC3D,gBAAA,QAAQ,MAAM,QAAQ,CAAC,IAAI,EAAE;YAC/B;;AAGA,YAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACzC,YAAA,QAAQ,WAAW,IAAI,IAAI;QAC7B;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AACvC,gBAAA,MAAM,KAAK;YACb;AAEA,YAAA,MAAM,eAAe,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,CAAA,CAAE,CAAC;AAC9E,YAAA,MAAM,MAAM,GAAG,cAAc,EAAE,MAAM;AACrC,YAAA,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC;AAC1C,gBAAA,OAAO,EAAE,IAAI,CAAC,iCAAiC,CAAC;oBAC9C,cAAc;oBACd,GAAG;oBACH,YAAY,EAAE,eAAe,CAAC,OAAO;iBACtC,CAAC;gBACF,MAAM;gBACN,GAAG;AACH,gBAAA,WAAW,EAAE,IAAI;gBACjB,MAAM;AACP,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACzD,YAAA,MAAM,YAAY;QACpB;IACF;IAEA,MAAM,YAAY,CAAC,UAAuB,EAAA;AACxC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAmB,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;AAC7F,YAAA,MAAM,EAAE,eAAe;AACxB,SAAA,CAAC;QACF,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,WAAW,KAAK,UAAU,CAAC;QAC5E;AACA,QAAA,OAAO,SAAS;IAClB;AAEA;;;;;;;;;;;;AAYG;AACH,IAAA,MAAM,SAAS,CAAC,MAAA,GAA0B,EAAE,EAAA;AAC1C,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;QAEzC,IAAI,MAAM,CAAC,MAAM;YAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9D,IAAI,MAAM,CAAC,KAAK;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtE,IAAI,MAAM,CAAC,KAAK;YAAE,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QAC3D,IAAI,MAAM,CAAC,KAAK;YAAE,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QAC3D,IAAI,MAAM,CAAC,SAAS;YAAE,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC;QACvE,IAAI,MAAM,CAAC,MAAM;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzE,IAAI,MAAM,CAAC,OAAO;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,IAAI;YAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;QAExD,MAAM,QAAQ,GAAG,CAAA,OAAA,EAAU,WAAW,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE;QACvF,OAAO,IAAI,CAAC,WAAW,CAAgB,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;AACrE,YAAA,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;AAClC,SAAA,CAAC;IACJ;AAEA,IAAA,MAAM,iBAAiB,GAAA;QACrB,OAAO,IAAI,CAAC,WAAW,CAAuB,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;AAC9E,YAAA,MAAM,EAAE,qBAAqB;AAC9B,SAAA,CAAC;IACJ;AAEA;;;;;;;;;AASG;AACH,IAAA,MAAM,kBAAkB,CACtB,MAAc,EACd,GAAW,EACX,IAAoB,EACpB,eAAuB,EACvB,eAAkF,EAClF,eAAwB,EAAA;AAExB,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,uBAAA,EAA0B,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,GAAG,CAAA,YAAA,EAAe,MAAM,CAAA,oBAAA,EAAuB,eAAe,GAAG,EACjH;YACE,MAAM;AACP,SAAA,CACF;AAED,QAAA,MAAM,IAAI,GAAsB;YAC9B,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7B,IAAI;YACJ,eAAe;AACf,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,aAAa,EAAE,eAAe,CAAC,QAAQ,EAAE;AACzC,YAAA,aAAa,EAAE,KAAK;SACrB;AACD,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACxC;QACA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AAChE,YAAA,MAAM,EAAE,4BAA4B;YACpC,MAAM;AACP,SAAA,CAAC;IACJ;AAEA;;;;;;;;;;AAUG;AACH,IAAA,MAAM,eAAe,CACnB,MAAc,EACd,GAAW,EACX,IAAoB,EACpB,SAAiB,EACjB,eAAkF,EAClF,UAAmB,EACnB,eAAwB,EAAA;AAExB,QAAA,MAAM,WAAW,GAAG,UAAU,KAAK,SAAS;QAC5C,MAAM,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM;AAErD,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,SAAA,EAAY,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,GAAG,CAAA,YAAA,EAAe,MAAM,CAAA,iBAAA,EAAoB,SAAS,CAAA,EAAG,WAAW,GAAG,CAAA,iBAAA,EAAoB,UAAU,CAAA,CAAE,GAAG,EAAE,EAAE,EAC5J;YACE,MAAM;AACP,SAAA,CACF;AAED,QAAA,MAAM,IAAI,GAAsB;YAC9B,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7B,IAAI;YACJ,eAAe;AACf,YAAA,WAAW,EAAE,QAAQ;YACrB,IAAI,EAAE,WAAW,GAAG,YAAY,GAAG,MAAM;YACzC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;AAC1D,YAAA,aAAa,EAAE,KAAK;SACrB;AAED,QAAA,IAAI,UAAU,KAAK,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;QACpE;AAEA,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACxC;QAEA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;YAChE,MAAM,EAAE,CAAA,OAAA,EAAU,SAAS,CAAA,MAAA,CAAQ;YACnC,MAAM;AACP,SAAA,CAAC;IACJ;AAEA;;;;;;;AAOG;IACH,MAAM,iBAAiB,CACrB,MAAc,EACd,GAAW,EACX,IAAoB,EACpB,eAAkF,EAClF,eAAwB,EAAA;AAExB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,0BAAA,EAA6B,MAAM,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,SAAA,EAAY,eAAe,CAAA,CAAA,CAAG,EAAE;YAC1F,MAAM;AACP,SAAA,CAAC;AAEF,QAAA,MAAM,IAAI,GAAsB;YAC9B,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7B,IAAI;YACJ,eAAe;AACf,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,QAAQ;SACtB;AACD,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACxC;QACA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AAChE,YAAA,MAAM,EAAE,qBAAqB;YAC7B,MAAM;AACP,SAAA,CAAC;IACJ;AAEA;;;;;;;;;;;;;;;AAeG;IACH,MAAM,cAAc,CAClB,MAAc,EACd,GAAW,EACX,IAAoB,EACpB,eAAkF,EAClF,eAAwB,EAAA;AAExB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,kCAAA,EAAqC,MAAM,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,SAAA,EAAY,eAAe,CAAA,CAAA,CAAG,EAAE;YAClG,MAAM;AACP,SAAA,CAAC;AAEF,QAAA,MAAM,IAAI,GAAsB;YAC9B,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7B,IAAI;YACJ,eAAe;AACf,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,QAAQ;SACtB;AACD,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACxC;QACA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AAChE,YAAA,MAAM,EAAE,6BAA6B;YACrC,MAAM;AACP,SAAA,CAAC;IACJ;AAEA;;;;;;;;;;;;;;;AAeG;IACH,MAAM,cAAc,CAClB,MAAc,EACd,GAAW,EACX,IAAoB,EACpB,eAAkF,EAClF,eAAwB,EAAA;AAExB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,mCAAA,EAAsC,MAAM,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,SAAA,EAAY,eAAe,CAAA,CAAA,CAAG,EAAE;YACnG,MAAM;AACP,SAAA,CAAC;AAEF,QAAA,MAAM,IAAI,GAAsB;YAC9B,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7B,IAAI;YACJ,eAAe;AACf,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,QAAQ;SACtB;AACD,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACxC;QACA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AAChE,YAAA,MAAM,EAAE,8BAA8B;YACtC,MAAM;AACP,SAAA,CAAC;IACJ;AAEA;;;;;;;;;;;;AAYG;AACH,IAAA,MAAM,cAAc,CAClB,MAAc,EACd,GAAW,EACX,IAAoB,EACpB,eAAkF,EAClF,UAAkB,EAClB,eAAuB,EACvB,aAAqB,EACrB,kBAA2B,EAC3B,eAAwB,EAAA;AAExB,QAAA,IAAI,CAAC,GAAG,CACN,sBAAsB,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,GAAG,CAAA,YAAA,EAAe,MAAM,aAAa,UAAU,CAAA,kBAAA,EAAqB,eAAe,CAAA,eAAA,EAAkB,aAAa,EAAE,EAChK;YACE,MAAM;AACP,SAAA,CACF;AAED,QAAA,MAAM,IAAI,GAAsB;YAC9B,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7B,IAAI;YACJ,eAAe;AACf,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;AAC5D,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE;gBACX,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;AAClE,aAAA;AACD,YAAA,SAAS,EAAE;gBACT,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;AAC/D,aAAA;SACF;;AAGD,QAAA,IAAI,kBAAkB,KAAK,SAAS,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG;gBACf,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;gBAC9D,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;aACrE;QACH;AAEA,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACxC;QAEA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AAChE,YAAA,MAAM,EAAE,kBAAkB;YAC1B,MAAM;AACP,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACH,MAAM,sBAAsB,CAAC,MAAc,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;AAClC,YAAA,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,CAAC,MAAM,CAAC;AAClB,SAAA,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CACnC,CAAC,KAAK,KACJ,KAAK,CAAC,IAAI,KAAK,eAAe;AAC9B,aAAC,KAAK,CAAC,eAAe,KAAK,eAAe,IAAI,KAAK,CAAC,eAAe,KAAK,cAAc,CAAC,CAC1F;QAED,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,CAAA,yCAAA,EAA4C,MAAM,EAAE,EAAE;gBAC7D,MAAM;AACP,aAAA,CAAC;AACF,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AACpC,YAAA,IAAI,CAAC,GAAG,CAAC,CAAA,8BAAA,EAAiC,MAAM,6BAA6B,EAAE;gBAC7E,MAAM;AACP,aAAA,CAAC;AACF,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,YAAY,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC;AAChE,QAAA,OAAO,YAAY;IACrB;AAEA;;;;AAIG;AACH,IAAA,MAAM,kBAAkB,CAAC,MAAc,EAAE,eAAuB,EAAA;;AAE9D,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;AAClC,YAAA,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,CAAC,MAAM,CAAC;AAClB,SAAA,CAAC;;AAGF,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC;QAEhF,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,CAAA,sCAAA,EAAyC,MAAM,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YACtF;QACF;;AAGA,QAAA,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,aAAa,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,IAAI;;QAGhH,MAAM,OAAO,GAAG,MAAM;AACtB,QAAA,IAAI,mBAAmB,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,eAAe,CAAC,GAAG,OAAO,EAAE;YAC7F,IAAI,CAAC,GAAG,CACN,CAAA,kBAAA,EAAqB,MAAM,mBAAmB,eAAe,CAAA,YAAA,EAAe,mBAAmB,CAAA,mBAAA,CAAqB,EACpH;gBACE,MAAM;AACP,aAAA,CACF;YACD;QACF;QAEA,IAAI,CAAC,GAAG,CAAC,CAAA,2BAAA,EAA8B,MAAM,SAAS,mBAAmB,CAAA,KAAA,EAAQ,eAAe,CAAA,CAAA,CAAG,EAAE;YACnG,MAAM;AACP,SAAA,CAAC;QAEF,MAAM,IAAI,CAAC,WAAW,CACpB,WAAW,iBAAiB,CAAC,EAAE,CAAA,CAAE,EACjC,OAAO,EACP,EAAE,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,EAAE,EACrC,EAAE,EACF;AACE,YAAA,MAAM,EAAE,4BAA4B;YACpC,MAAM;AACP,SAAA,CACF;IACH;AAEA;;AAEG;AACH,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,yBAAA,CAA2B,CAAC;AACrC,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,WAAW,CAAO,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;AAC/D,gBAAA,MAAM,EAAE,wBAAwB;AACjC,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,EAAE,KAAK,YAAY,kBAAkB,CAAC,EAAE;gBAC1C,IAAI,CAAC,GAAG,CAAC,CAAA,4BAAA,EAA+B,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,KAAK,CAAA,CAAE,EAAE,EAAE;AAC7F,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA,CAAC;YACJ;QACF;IACF;AAEA;;;;;AAKG;IACH,MAAM,WAAW,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,GAAG,CAAC,8BAA8B,OAAO,CAAA,CAAE,CAAC;AAEjD,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,WAAW,CAAO,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC1E,MAAM,EAAE,CAAA,aAAA,EAAgB,OAAO,CAAA,CAAE;AAClC,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAA,CAAE,CAAC;QACpD;QAAE,OAAO,KAAK,EAAE;;YAEd,IAAI,KAAK,YAAY,kBAAkB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AAC/D,gBAAA,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,CAAA,kBAAA,CAAoB,CAAC;YACvD;;AAEA,YAAA,MAAM,KAAK;QACb;IACF;AAEA;;;;;;;;;AASG;AACH,IAAA,MAAM,gBAAgB,CACpB,MAAc,EACd,GAAW,EACX,IAAoB,EACpB,UAAkB,EAClB,eAAkF,EAClF,cAAA,GAA0B,KAAK,EAC/B,eAAwB,EAAA;AAExB,QAAA,IAAI,CAAC,GAAG,CACN,4BAA4B,MAAM,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,EAAI,GAAG,eAAe,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,eAAe,GAAG,EAC7G;YACE,MAAM;AACP,SAAA,CACF;AAED,QAAA,MAAM,IAAI,GAAsB;YAC9B,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7B,IAAI;YACJ,eAAe;AACf,YAAA,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;AAC5D,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,QAAQ;YACrB,cAAc;SACf;AACD,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACxC;QACA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AAChE,YAAA,MAAM,EAAE,oBAAoB;YAC5B,MAAM;AACP,SAAA,CAAC;IACJ;AAEA;;;;;AAKG;AACH,IAAA,MAAM,iBAAiB,CACrB,OAAA,GAA+D,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAA;AAE7G,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,qBAAA,EAAwB,OAAO,CAAC,cAAc,GAAG,qBAAqB,GAAG,EAAE,CAAA,EACzE,OAAO,CAAC,aAAa,GAAG,4BAA4B,GAAG,EACzD,CAAA,CAAE,CACH;AAED,QAAA,IAAI,OAAO,CAAC,cAAc,EAAE;;YAE1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AAEtD,YAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC;gBACjC;YACF;YAEA,IAAI,CAAC,GAAG,CAAC,CAAA,MAAA,EAAS,SAAS,CAAC,MAAM,CAAA,mBAAA,CAAqB,CAAC;;AAGxD,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC;YAC5D,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC;AAEnE,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM;AAChE,YAAA,IAAI,cAAc,KAAK,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,GAAG,CAAC,sDAAsD,EAAE;AAC/D,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA,CAAC;gBACF;YACF;AAEA,YAAA,IAAI,cAAc,KAAK,SAAS,CAAC,MAAM,EAAE;gBACvC,IAAI,CAAC,GAAG,CACN,CAAA,SAAA,EAAY,cAAc,CAAA,YAAA,EAAe,SAAS,CAAC,MAAM,CAAA,qBAAA,EAAwB,SAAS,CAAC,MAAM,SAAS,EAC1G,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB;gBACD;YACF;;AAGA,YAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACpD,IAAI,CAAC,KAAK,EAAE;oBACV,IAAI,CAAC,GAAG,CAAC,CAAA,uBAAA,EAA0B,QAAQ,CAAC,MAAM,wBAAwB,EAAE;wBAC1E,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvB,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;oBACF;gBACF;AAEA,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9C,gBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;AACtD,gBAAA,MAAM,cAAc,GAAG,IAAI,KAAK,MAAM,GAAG,eAAe,GAAG,cAAc;;AAGzE,gBAAA,MAAM,YAAY,GAAG,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;gBAE3D,IAAI,CAAC,YAAY,EAAE;oBACjB,IAAI,CAAC,GAAG,CAAC,CAAA,6BAAA,EAAgC,QAAQ,CAAC,MAAM,wBAAwB,EAAE;wBAChF,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvB,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;oBACF;gBACF;;AAGA,gBAAA,MAAM,qBAAqB,GAAG,4BAA4B,GAAG,GAAG;AAChE,gBAAA,MAAM,UAAU,GACd,IAAI,KAAK;AACP,sBAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;AACtE,sBAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;AAE3E,gBAAA,IAAI,CAAC,GAAG,CACN,iCAAiC,QAAQ,CAAC,MAAM,CAAA,WAAA,EAAc,IAAI,IAAI,GAAG,CAAA,YAAA,EAAe,UAAU,CAAC,OAAO,CACxG,CAAC,CACF,EAAE,EACH;oBACE,MAAM,EAAE,QAAQ,CAAC,MAAM;AACxB,iBAAA,CACF;AAED,gBAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC;YACrF;QACF;aAAO;YACL,MAAM,IAAI,CAAC,WAAW,CAAO,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,GAAG,qBAAqB,GAAG,EAAE,EAAE;AAClH,gBAAA,MAAM,EAAE,qBAAqB;AAC9B,aAAA,CAAC;QACJ;IACF;AAEA;;;;AAIG;AACH,IAAA,MAAM,2BAA2B,GAAA;AAC/B,QAAA,IAAI,CAAC,GAAG,CAAC,wEAAwE,CAAC;;AAGlF,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAA,MAAA,EAAS,SAAS,CAAC,MAAM,CAAA,mBAAA,CAAqB,CAAC;AAExD,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC;YACjC;QACF;AAEA,QAAA,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,yBAAA,CAA2B,CAAC;;AAGrC,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC;QAC5D,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC;;AAGnE,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpD,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,CAAA,uBAAA,EAA0B,QAAQ,CAAC,MAAM,wBAAwB,EAAE;oBAC1E,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvB,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;gBACF;YACF;AAEA,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9C,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;AACtD,YAAA,MAAM,cAAc,GAAG,IAAI,KAAK,MAAM,GAAG,eAAe,GAAG,cAAc;;AAGzE,YAAA,MAAM,YAAY,GAAG,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YAE3D,IAAI,CAAC,YAAY,EAAE;gBACjB,IAAI,CAAC,GAAG,CAAC,CAAA,6BAAA,EAAgC,QAAQ,CAAC,MAAM,wBAAwB,EAAE;oBAChF,MAAM,EAAE,QAAQ,CAAC,MAAM;AACvB,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;gBACF;YACF;;AAGA,YAAA,MAAM,qBAAqB,GAAG,4BAA4B,GAAG,GAAG;AAChE,YAAA,MAAM,UAAU,GACd,IAAI,KAAK;AACP,kBAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;AACtE,kBAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;AAE3E,YAAA,IAAI,CAAC,GAAG,CACN,gDACE,QAAQ,CAAC,MACX,CAAA,WAAA,EAAc,IAAI,IAAI,GAAG,CAAA,YAAA,EAAe,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAC/D;gBACE,MAAM,EAAE,QAAQ,CAAC,MAAM;AACxB,aAAA,CACF;AAED,YAAA,MAAM,IAAI,CAAC,gBAAgB,CACzB,QAAQ,CAAC,MAAM,EACf,GAAG,EACH,IAAI,EACJ,UAAU,EACV,cAAc,EACd,IAAI;aACL;QACH;QAEA,IAAI,CAAC,GAAG,CAAC,CAAA,sBAAA,EAAyB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;IAChF;AAEA,IAAA,aAAa,CAAC,QAAuC,EAAA;AACnD,QAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;IACrC;AAEA;;;;AAIG;IACH,MAAM,mBAAmB,CAAC,MAOzB,EAAA;AACC,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;QACzC,IAAI,MAAM,CAAC,SAAS;YAAE,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC;QACvE,IAAI,MAAM,CAAC,MAAM;YAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AAC9D,QAAA,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC/G,IAAI,MAAM,CAAC,KAAK;YAAE,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QAC3D,IAAI,MAAM,CAAC,GAAG;YAAE,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;QACrD,IAAI,MAAM,CAAC,QAAQ;YAAE,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;AAEpE,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CACrC,CAAA,2BAAA,EAA8B,WAAW,CAAC,QAAQ,EAAE,EAAE,EACtD,KAAK,EACL,SAAS,EACT,EAAE,EACF;AACE,YAAA,MAAM,EAAE,uBAAuB;AAChC,SAAA,CACF;AACD,QAAA,OAAO,QAAQ;IACjB;AAEA;;;;;;;;;;;;;AAaG;IACH,MAAM,wBAAwB,CAAC,MAM9B,EAAA;;QAEC,MAAM,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,IAAa,EAAE;QAC3D,MAAM,YAAY,GAAG,EAAE,SAAS,EAAE,MAAe,EAAE,MAAM,EAAE,IAAI,EAAE;QAEjE,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACtD,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;AACrC,YAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;AACvC,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACpE,YAAA,OAAO,YAAY;QACrB;;AAGA,QAAA,MAAM,kBAAkB,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;;AAGpF,QAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACpC,aAAA,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAChD,aAAA,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,GAAG,kBAAkB,CAAC;;AAG5D,QAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAA,OAAO,YAAY;QACrB;;QAGA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AACtE,QAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK;;;;;;QAO9C,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC;AACvD,QAAA,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7D,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/B,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;;AAG3F,QAAA,MAAM,mBAAmB,GAA6B;AACpD,YAAA,GAAG,YAAY;YACf,SAAS,EAAE,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC;AACzD,YAAA,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACvE,YAAA,WAAW,EAAE,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AACtF,YAAA,eAAe,EAAE,CAAC,GAAG,YAAY,CAAC,eAAe,EAAE,aAAa,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;SACnG;AAED,QAAA,OAAO,mBAAmB;IAC5B;AAEA;;;;AAIG;IACH,MAAM,kBAAkB,CAAC,MAAgC,EAAA;AACvD,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;AAEzC,QAAA,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE7E,IAAI,MAAM,CAAC,mBAAmB;YAAE,WAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,mBAAmB,CAAC;QACrG,IAAI,MAAM,CAAC,mBAAmB;YAAE,WAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,mBAAmB,CAAC;QACrG,IAAI,MAAM,CAAC,gBAAgB;YAAE,WAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,CAAC;QAC5F,IAAI,MAAM,CAAC,gBAAgB;YAAE,WAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,CAAC;QAC5F,IAAI,MAAM,CAAC,IAAI;YAAE,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM;YAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9D,IAAI,MAAM,CAAC,KAAK;AAAE,YAAA,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtE,IAAI,MAAM,CAAC,UAAU;YAAE,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC;AAE1E,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,8BAAA,EAAiC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YAChF,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,SAAA,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CACrC,CAAA,mBAAA,EAAsB,WAAW,CAAC,QAAQ,EAAE,EAAE,EAC9C,KAAK,EACL,SAAS,EACT,EAAE,EACF;AACE,YAAA,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,SAAA,CACF;QACD,IAAI,CAAC,GAAG,CAAC,CAAA,MAAA,EAAS,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAA,iBAAA,CAAmB,EAAE;YACrE,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,SAAA,CAAC;AACF,QAAA,OAAO,QAAQ;IACjB;AAEA;;;;AAIG;IACH,MAAM,iBAAiB,CAAC,UAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,qCAAA,EAAwC,UAAU,EAAE,EAAE;AAC7D,YAAA,MAAM,EAAE,UAAU;AACnB,SAAA,CAAC;AACF,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAiB,CAAA,mBAAA,EAAsB,UAAU,CAAA,CAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;AAChH,YAAA,MAAM,EAAE,6BAA6B;AACrC,YAAA,MAAM,EAAE,UAAU;AACnB,SAAA,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,CAAA,kCAAA,EAAqC,UAAU,KAAK,QAAQ,CAAC,IAAI,CAAA,CAAE,EAAE;AAC5E,YAAA,MAAM,EAAE,UAAU;AACnB,SAAA,CAAC;AACF,QAAA,OAAO,QAAQ;IACjB;AAEA;;;;;;;;;AASG;AACH,IAAA,MAAM,iBAAiB,CACrB,MAAc,EACd,GAAW,EACX,IAAoB,EACpB,eAAkF,EAClF,IAAwB,EACxB,UAAmB,EAAA;AAEnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,GAAG,CAAC,4DAA4D,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnG;QAEA,IAAI,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,GAAG,CAAC,0CAA0C,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACjF;AAEA,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,SAAA,EAAY,IAAI,CAAA,kBAAA,EAAqB,MAAM,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,YAAA,EAAe,eAAe,IACvF,IAAI,KAAK,OAAO,GAAG,CAAA,KAAA,EAAQ,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EACxD,EAAE,EACF;YACE,MAAM;AACP,SAAA,CACF;AAED,QAAA,MAAM,SAAS,GAAsB;YACnC,MAAM;AACN,YAAA,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;YACnB,IAAI;YACJ,eAAe;YACf,IAAI;AACJ,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,cAAc,EAAE,KAAK;SACtB;QAED,IAAI,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,SAAS,EAAE;AAChD,YAAA,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;QACzE;QAEA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;AACrE,YAAA,MAAM,EAAE,qBAAqB;YAC7B,MAAM;AACP,SAAA,CAAC;IACJ;AAEA;;;;;;;AAOG;IACH,MAAM,yBAAyB,CAC7B,IAAgB,EAChB,GAAW,EACX,IAAwB,EACxB,UAAmB,EAAA;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAE3D,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,GAAG,CAAC,4DAA4D,EAAE;AACrE,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CAAC;QACJ;QAEA,IAAI,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,GAAG,CAAC,0CAA0C,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC7F;AAEA,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,0CAA0C,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC7F;AAEA,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,mBAAA,EAAsB,IAAI,CAAA,mBAAA,EAAsB,IAAI,CAAC,MAAM,CAAA,OAAA,EAAU,UAAU,CAAA,CAAA,EAC7E,IAAI,KAAK,OAAO,GAAG,CAAA,KAAA,EAAQ,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,GAAG,EACxD,EAAE,EACF;AACE,YAAA,MAAM,EAAE,UAAU;AACnB,SAAA,CACF;AAED,QAAA,MAAM,SAAS,GAA8B;AAC3C,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE;YACnB,IAAI;AACJ,YAAA,aAAa,EAAE,KAAK;YACpB,IAAI;SACL;QAED,IAAI,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,SAAS,EAAE;AAChD,YAAA,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;QACzE;QAEA,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;AACrE,YAAA,MAAM,EAAE,+BAA+B;AACvC,YAAA,MAAM,EAAE,UAAU;AACnB,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACH,MAAM,cAAc,CAAC,kBAA0B,EAAA;AAC7C,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,2BAAA,EAA8B,kBAAkB,EAAE,EAAE;AAC3D,YAAA,MAAM,EAAE,kBAAkB;AAC3B,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,WAAW,CAAO,CAAA,WAAA,EAAc,kBAAkB,CAAA,SAAA,CAAW,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;AAChG,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,MAAM,EAAE,kBAAkB;AAC3B,SAAA,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,MAAM,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AACtD,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,MAAM,0BAA0B,GAAA;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC;;;;;IAKzC;AAEA;;;;;AAKG;AACH,IAAA,MAAM,mBAAmB,CACvB,YAA0C,EAC1C,IAAa,EAAA;AAEb,QAAA,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE;QAEzC,IAAI,YAAY,EAAE;AAChB,YAAA,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC;QACpD;aAAO;AACL,YAAA,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;QAC3D;QAEA,IAAI,IAAI,EAAE;AACR,YAAA,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;QAClC;AAEA,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,0BAAA,EAA6B,YAAY,GAAG,CAAA,SAAA,EAAY,YAAY,CAAA,CAAE,GAAG,EAAE,CAAA,EAAG,IAAI,GAAG,CAAA,UAAA,EAAa,IAAI,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE,CAChH;AAED,QAAA,OAAO,IAAI,CAAC,WAAW,CAA0B,CAAA,oBAAA,EAAuB,WAAW,CAAC,QAAQ,EAAE,CAAA,CAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;AACtH,YAAA,MAAM,EAAE,uBAAuB;AAChC,SAAA,CAAC;IACJ;AAEA;;;;;;;AAOG;IACH,MAAM,oBAAoB,CACxB,qBAA6B,EAC7B,sBAA8B,EAC9B,GAAW,EACX,UAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,+BAAA,EAAkC,qBAAqB,UAAU,sBAAsB,CAAA,OAAA,EAAU,GAAG,CAAA,UAAA,EAAa,UAAU,CAAC,OAAO,CACjI,CAAC,CACF,EAAE,EACH;AACE,YAAA,MAAM,EAAE,CAAA,EAAG,qBAAqB,CAAA,CAAA,EAAI,sBAAsB,CAAA,CAAE;AAC7D,SAAA,CACF;AAED,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA;AACE,gBAAA,MAAM,EAAE,qBAAqB;AAC7B,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,eAAe,EAAE,aAAa;AAC/B,aAAA;AACD,YAAA;AACE,gBAAA,MAAM,EAAE,sBAAsB;AAC9B,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,eAAe,EAAE,cAAc;AAChC,aAAA;SACF;AAED,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC;IACvE;AAEA;;;;;;;AAOG;IACH,MAAM,mBAAmB,CACvB,qBAA6B,EAC7B,oBAA4B,EAC5B,GAAW,EACX,UAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,8BAAA,EAAiC,qBAAqB,UAAU,oBAAoB,CAAA,OAAA,EAAU,GAAG,CAAA,UAAA,EAAa,UAAU,CAAC,OAAO,CAC9H,CAAC,CACF,EAAE,EACH;AACE,YAAA,MAAM,EAAE,CAAA,EAAG,qBAAqB,CAAA,CAAA,EAAI,oBAAoB,CAAA,CAAE;AAC3D,SAAA,CACF;AAED,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA;AACE,gBAAA,MAAM,EAAE,qBAAqB;AAC7B,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,eAAe,EAAE,aAAa;AAC/B,aAAA;AACD,YAAA;AACE,gBAAA,MAAM,EAAE,oBAAoB;AAC5B,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,eAAe,EAAE,cAAc;AAChC,aAAA;SACF;AAED,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC;IACvE;AAEA;;;;;;;;;AASG;AACH,IAAA,MAAM,gBAAgB,CACpB,aAAqB,EACrB,cAAsB,EACtB,eAAuB,EACvB,cAAsB,EACtB,GAAW,EACX,UAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,0BAAA,EAA6B,GAAG,CAAA,eAAA,EAAkB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClF,MAAM,EAAE,GAAG,aAAa,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA,EAAI,eAAe,CAAA,CAAA,EAAI,cAAc,CAAA,CAAE;AAClF,SAAA,CAAC;AAEF,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA;AACE,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,eAAe,EAAE,aAAa;AAC/B,aAAA;AACD,YAAA;AACE,gBAAA,MAAM,EAAE,cAAc;AACtB,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,eAAe,EAAE,cAAc;AAChC,aAAA;AACD,YAAA;AACE,gBAAA,MAAM,EAAE,eAAe;AACvB,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,eAAe,EAAE,cAAc;AAChC,aAAA;AACD,YAAA;AACE,gBAAA,MAAM,EAAE,cAAc;AACtB,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,eAAe,EAAE,aAAa;AAC/B,aAAA;SACF;AAED,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC;IACvE;AAEA;;;;;;;AAOG;IACH,MAAM,iBAAiB,CACrB,WAAmB,EACnB,gBAAwB,EACxB,GAAW,EACX,UAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,GAAG,CACN,CAAA,4BAAA,EAA+B,gBAAgB,YAAY,WAAW,CAAA,OAAA,EAAU,GAAG,CAAA,UAAA,EAAa,UAAU,CAAC,OAAO,CAChH,CAAC,CACF,EAAE,EACH;AACE,YAAA,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,gBAAgB,CAAA,CAAE;AAC7C,SAAA,CACF;;;AAID,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC;IACnG;AAEA;;;;;;;;AAQG;IACH,MAAM,kBAAkB,CACtB,mBAA2B,EAC3B,eAAuB,EACvB,GAAW,EACX,mBAAmC,EACnC,UAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,QAAA,EAAW,GAAG,IAAI,mBAAmB,CAAA,IAAA,EAAO,eAAe,CAAA,eAAA,EAAkB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;AAC7G,YAAA,MAAM,EAAE,CAAA,EAAG,mBAAmB,CAAA,CAAA,EAAI,eAAe,CAAA,CAAE;AACpD,SAAA,CAAC;;;AAIF,QAAA,MAAM,iBAAiB,GAAG,mBAAmB,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK;QACxE,MAAM,gBAAgB,GAAG,mBAAmB;AAE5C,QAAA,MAAM,mBAAmB,GAAG,iBAAiB,KAAK,KAAK,GAAG,cAAc,GAAG,eAAe;AAC1F,QAAA,MAAM,kBAAkB,GAAG,gBAAgB,KAAK,KAAK,GAAG,aAAa,GAAG,cAAc;AAEtF,QAAA,MAAM,IAAI,GAAe;AACvB,YAAA;AACE,gBAAA,MAAM,EAAE,mBAAmB;AAC3B,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,eAAe,EAAE,mBAAmB;AACrC,aAAA;AACD,YAAA;AACE,gBAAA,MAAM,EAAE,eAAe;AACvB,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,eAAe,EAAE,kBAAkB;AACpC,aAAA;SACF;AAED,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC;IACvE;AAEA;;;;;AAKG;AACH,IAAA,MAAM,cAAc,CAAC,gBAAwB,EAAE,cAAsB,EAAA;QACnE,IAAI,CAAC,GAAG,CAAC,CAAA,0BAAA,EAA6B,gBAAgB,CAAA,sBAAA,EAAyB,cAAc,EAAE,EAAE;AAC/F,YAAA,MAAM,EAAE,gBAAgB;AACzB,SAAA,CAAC;AAEF,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAA6B;gBACvC,kBAAkB,EAAE,CAAC,gBAAgB,CAAC;AACtC,gBAAA,mBAAmB,EAAE,cAAc;AACnC,gBAAA,mBAAmB,EAAE,cAAc;AACnC,gBAAA,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,GAAG;aACX;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACtD,YAAA,OAAO,QAAQ,CAAC,gBAAgB,IAAI,EAAE;QACxC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,EAAE,KAAK,YAAY,kBAAkB,CAAC,EAAE;gBAC1C,IAAI,CAAC,GAAG,CACN,CAAA,iCAAA,EAAoC,gBAAgB,CAAA,EAAA,EAAK,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE,CAAA,CAAE,EAC9G;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,MAAM,EAAE,gBAAgB;AACzB,iBAAA,CACF;YACH;AACA,YAAA,OAAO,EAAE;QACX;IACF;AAEA;;;;AAIG;IACH,MAAM,wBAAwB,CAAC,gBAAwB,EAAA;AACrD,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,wCAAA,EAA2C,gBAAgB,EAAE,EAAE;AACtE,YAAA,MAAM,EAAE,gBAAgB;AACzB,SAAA,CAAC;AAEF,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAA6B;gBACvC,kBAAkB,EAAE,CAAC,gBAAgB,CAAC;AACtC,gBAAA,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,IAAI;aACZ;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;;AAGtD,YAAA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU;AACzC,YAAA,IAAI,QAAQ,CAAC,gBAAgB,EAAE;gBAC7B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7C,oBAAA,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;AAC/C,gBAAA,CAAC,CAAC;YACJ;;YAGA,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE;QAC3C;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,EAAE,KAAK,YAAY,kBAAkB,CAAC,EAAE;gBAC1C,IAAI,CAAC,GAAG,CACN,CAAA,qCAAA,EAAwC,gBAAgB,CAAA,EAAA,EACtD,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,CAAA,EAAG,KAAK,CAAA,CACnD,CAAA,CAAE,EACF;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,MAAM,EAAE,gBAAgB;AACzB,iBAAA,CACF;YACH;AACA,YAAA,OAAO,EAAE;QACX;IACF;AAEA;;;AAGG;AACH,IAAA,MAAM,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC;AAE1C,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AACrD,QAAA,OAAO,cAAc,CAAC,qBAAqB,IAAI,CAAC;IAClD;AAEA;;;AAGG;AACH,IAAA,MAAM,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC;AAElD,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;;;;;AAMrD,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,qBAAqB,IAAI,CAAC;AAC9D,QAAA,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC;QAEnC,IAAI,CAAC,GAAG,CAAC,CAAA,uBAAA,EAA0B,YAAY,CAAA,WAAA,EAAc,SAAS,CAAA,CAAE,CAAC;AAEzE,QAAA,OAAO,SAAS;IAClB;AAEA;;;;AAIG;AACH,IAAA,MAAM,uBAAuB,CAAC,YAAA,GAAwB,IAAI,EAAA;AACxD,QAAA,IAAI,CAAC,GAAG,CAAC,CAAA,4BAAA,EAA+B,YAAY,GAAG,+BAA+B,GAAG,EAAE,CAAA,CAAE,CAAC;AAE9F,QAAA,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAEvD,QAAA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC;YACxC;QACF;;AAGA,QAAA,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;AACtC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;AACtD,YAAA,MAAM,cAAc,GAAG,IAAI,KAAK,MAAM,GAAG,eAAe,GAAG,cAAc;AAEzE,YAAA,IAAI,CAAC,GAAG,CAAC,CAAA,QAAA,EAAW,QAAQ,CAAC,IAAI,CAAA,aAAA,EAAgB,QAAQ,CAAC,GAAG,CAAA,eAAA,EAAkB,QAAQ,CAAC,MAAM,EAAE,EAAE;gBAChG,MAAM,EAAE,QAAQ,CAAC,MAAM;AACxB,aAAA,CAAC;YAEF,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC;QACvG;QAEA,IAAI,YAAY,EAAE;;AAEhB,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACvD,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC;;AAGhF,YAAA,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;gBAChC,IAAI,CAAC,GAAG,CAAC,CAAA,yBAAA,EAA4B,KAAK,CAAC,MAAM,EAAE,EAAE;oBACnD,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,iBAAA,CAAC;AACF,gBAAA,MAAM,IAAI,CAAC,WAAW,CAAO,WAAW,KAAK,CAAC,EAAE,CAAA,CAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;AAC3E,oBAAA,MAAM,EAAE,CAAA,oBAAA,EAAuB,KAAK,CAAC,EAAE,CAAA,CAAE;oBACzC,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,iBAAA,CAAC;YACJ;QACF;IACF;AAEA;;;;;AAKG;AACH,IAAA,MAAM,mBAAmB,CAAC,MAAc,EAAE,GAAY,EAAA;AACpD,QAAA,IAAI,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAA,EAAG,GAAG,GAAG,CAAA,EAAA,EAAK,GAAG,CAAA,WAAA,CAAa,GAAG,EAAE,EAAE,EAAE;YACnF,MAAM;AACP,SAAA,CAAC;;AAGF,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;AACjD,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;QAE3D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAA,CAAE,CAAC;QACpE;QAEA,MAAM,eAAe,GAAG,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrD,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;AACtD,QAAA,MAAM,cAAc,GAAG,IAAI,KAAK,MAAM,GAAG,eAAe,GAAG,cAAc;AAEzE,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,CAAC;IACxF;AAEA;;;;;AAKG;AACH,IAAA,MAAM,mBAAmB,CACvB,MAKC,EACD,OAA8B,EAAA;QAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM;AACpD,QAAA,MAAM,EACJ,IAAI,GAAG,QAAQ,EACf,UAAU,EACV,aAAa,GAAG,KAAK,EACrB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,cAAc,EACd,aAAa,GAAG,KAAK,EACrB,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,GAAG,OAAO,IAAI,EAAE;;AAGjB,QAAA,IAAI,aAAa,IAAI,IAAI,KAAK,QAAQ,EAAE;AACtC,YAAA,IAAI,CAAC,GAAG,CAAC,wDAAwD,EAAE;gBACjE,MAAM;AACN,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CAAC;AACF,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;QAC3E;;QAGA,IAAI,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,GAAG,CAAC,0CAA0C,EAAE;gBACnD,MAAM;AACN,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA,CAAC;AACF,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;QAC7D;AAEA,QAAA,IAAI,mBAAuC;AAC3C,QAAA,IAAI,yBAA6C;;QAGjD,IAAI,WAAW,EAAE;YACf,IAAI,SAAS,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE;AAC3D,gBAAA,IAAI,CAAC,GAAG,CAAC,8EAA8E,EAAE;oBACvF,MAAM;AACN,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA,CAAC;AACF,gBAAA,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC;YACjG;AAEA,YAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,gBAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,oBAAA,IAAI,CAAC,GAAG,CAAC,sDAAsD,EAAE;wBAC/D,MAAM;AACN,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA,CAAC;AACF,oBAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;gBACzE;;AAGA,gBAAA,MAAM,kBAAkB,GAAG,cAAc,GAAG,GAAG;AAC/C,gBAAA,IAAI,IAAI,KAAK,KAAK,EAAE;;oBAElB,mBAAmB,GAAG,cAAc,IAAI,CAAC,GAAG,kBAAkB,CAAC;gBACjE;qBAAO;;oBAEL,mBAAmB,GAAG,cAAc,IAAI,CAAC,GAAG,kBAAkB,CAAC;gBACjE;YACF;iBAAO;gBACL,mBAAmB,GAAG,SAAS;YACjC;QACF;;QAGA,IAAI,aAAa,EAAE;YACjB,IAAI,eAAe,KAAK,SAAS,IAAI,oBAAoB,KAAK,SAAS,EAAE;AACvE,gBAAA,IAAI,CAAC,GAAG,CAAC,4FAA4F,EAAE;oBACrG,MAAM;AACN,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA,CAAC;AACF,gBAAA,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC;YAC/G;AAEA,YAAA,IAAI,oBAAoB,KAAK,SAAS,EAAE;AACtC,gBAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,oBAAA,IAAI,CAAC,GAAG,CAAC,4DAA4D,EAAE;wBACrE,MAAM;AACN,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA,CAAC;AACF,oBAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;gBAC/E;;AAGA,gBAAA,MAAM,wBAAwB,GAAG,oBAAoB,GAAG,GAAG;AAC3D,gBAAA,IAAI,IAAI,KAAK,KAAK,EAAE;;oBAElB,yBAAyB,GAAG,cAAc,IAAI,CAAC,GAAG,wBAAwB,CAAC;gBAC7E;qBAAO;;oBAEL,yBAAyB,GAAG,cAAc,IAAI,CAAC,GAAG,wBAAwB,CAAC;gBAC7E;YACF;iBAAO;gBACL,yBAAyB,GAAG,eAAe;YAC7C;QACF;;QAGA,IAAI,UAAU,GAAiC,QAAQ;AACvD,QAAA,IAAI,WAAW,IAAI,aAAa,EAAE;YAChC,UAAU,GAAG,SAAS;QACxB;AAAO,aAAA,IAAI,WAAW,IAAI,aAAa,EAAE;YACvC,UAAU,GAAG,KAAK;QACpB;;AAGA,QAAA,MAAM,SAAS,GAAsB;YACnC,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;YAC7B,IAAI;YACJ,IAAI;AACJ,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,cAAc,EAAE,aAAa;YAC7B,eAAe,EAAE,IAAI,KAAK,KAAK,GAAG,aAAa,GAAG,cAAc;SACjE;QAED,IAAI,aAAa,EAAE;AACjB,YAAA,SAAS,CAAC,eAAe,GAAG,aAAa;QAC3C;;QAGA,IAAI,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,SAAS,EAAE;AAChD,YAAA,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;QACzE;;AAGA,QAAA,IAAI,WAAW,IAAI,mBAAmB,KAAK,SAAS,EAAE;YACpD,SAAS,CAAC,SAAS,GAAG;gBACpB,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;aACrE;QACH;;AAGA,QAAA,IAAI,aAAa,IAAI,yBAAyB,KAAK,SAAS,EAAE;YAC5D,SAAS,CAAC,WAAW,GAAG;gBACtB,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,QAAQ,EAAE;aAC5E;QACH;AAEA,QAAA,MAAM,UAAU,GAAG,CAAA,SAAA,EAAY,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,WAAA,EAAc,MAAM,KAAK,GAAG,CAAA,OAAA,EACnF,IAAI,KAAK,OAAO,GAAG,CAAA,KAAA,EAAQ,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,GAAG,EACxD,CAAA,EAAG,WAAW,GAAG,CAAA,oBAAA,EAAuB,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,GAAG,EAAE,CAAA,EAC5E,aAAa,GAAG,CAAA,sBAAA,EAAyB,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EACrF,GAAG,aAAa,GAAG,mBAAmB,GAAG,EAAE,EAAE;AAE7C,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;YACnB,MAAM;AACP,SAAA,CAAC;QAEF,OAAO,IAAI,CAAC,WAAW,CAAc,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;AACrE,YAAA,MAAM,EAAE,uBAAuB;YAC/B,MAAM;AACP,SAAA,CAAC;IACJ;AACD;;AC7nEM,MAAM,KAAK,GAAG;AACnB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,MAAM,EAAE;AACN,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,aAAa,EAAE,mBAAmB;AACnC,KAAA;AACD,IAAA,MAAM,EAAE;QACN,cAAc,EAAEC,cAAiB;QACjC,QAAQ,EAAEC,cAAiB;QAC3B,MAAM,EAAEC,YAAe;QACvB,GAAG,EAAEC,gBAAmB;QACxB,aAAa,EAAEC,aAAgB;AAChC,KAAA;AACD,IAAA,GAAG,EAAE;QACH,IAAI,EAAEC,WAAe;QACrB,gBAAgB,EAAEC,gBAAoB;QACtC,IAAI,EAAEC,gBAAyB;QAC/B,MAAM,EAAEC,cAAwB;QAClC,IAAI,EAAEC,kBAA6B;AAClC,KAAA;AACD,IAAA,IAAI,EAAE;QACJ,2BAA2B,EAAEC,2BAA8B;QAC3D,mBAAmB,EAAEC,mBAAsB;QAC3C,kBAAkB,EAAEC,kBAAqB;QACzC,yBAAyB,EAAEC,yBAA4B;QACvD,sBAAsB,EAAEC,sBAAyB;QACjD,gBAAgB,EAAEC,gBAAmB;QACrC,oBAAoB,EAAEC,oBAAuB;QAC7C,mBAAmB,EAAEC,mBAAsB;QAC3C,eAAe,EAAEC,eAAkB;QACnC,aAAa,EAAEC,aAAgB;QAC/B,cAAc,EAAEC,cAAiB;QACjC,0BAA0B,EAAEC,0BAA6B;QACzD,kBAAkB,EAAEC,kBAAqB;QACzC,WAAW,EAAEC,WAAc;QAC3B,mBAAmB,EAAEC,mBAAsB;QAC3C,gBAAgB,EAAEC,gBAAmB;QACrC,YAAY,EAAEC,YAAe;AAC9B,KAAA;AACD,IAAA,KAAK,EAAE;QACL,UAAU,EAAEC,UAAe;QAC3B,cAAc,EAAEC,cAAmB;AACnC,QAAA,KAAK,EAAE,gBAAgB;AACxB,KAAA;;;;;","x_google_ignoreList":[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206]}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/logging.ts", "../src/market-hours.ts", "../src/market-time.ts", "../src/format-tools.ts", "../src/types/index.ts", "../src/types/llm-types.ts", "../src/misc-utils.ts", "../src/llm-openai.ts", "../src/llm-config.ts", "../src/json-tools.ts", "../src/llm-utils.ts", "../src/llm-images.ts", "../src/llm-deepseek.ts", "../src/llm-openrouter.ts", "../src/performance-timer.ts", "../src/disco-mail.ts", "../src/alpaca-trading-api.ts", "../src/alpaca-market-data-api.ts", "../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { LogOptions } from './types/logging-types';\n\n/**\n * Logs a message to the console.\n * @param message The message to log.\n * @param options Optional options.\n * @param options.source The source of the message.\n * @param options.type The type of message to log.\n * @param options.symbol The trading symbol associated with this log.\n * @param options.account The account associated with this log.\n */\nexport function log(message: string, options: LogOptions = { source: 'App', type: 'info' }): void {\n // Format the timestamp\n const date = new Date();\n const timestamp = date.toLocaleString('en-US', { timeZone: 'America/New_York' });\n const account = options?.account;\n const symbol = options?.symbol;\n\n // Build the log message\n const logMessage = `[${timestamp}]${options?.source ? ` [${options.source}] ` : ''}${\n account ? ` [${account}] ` : ''\n }${symbol ? ` [${symbol}] ` : ''}${message}`;\n\n // Use appropriate console method based on type\n if (options?.type === 'error') {\n console.error(logMessage);\n } else if (options?.type === 'warn') {\n console.warn(logMessage);\n } else {\n console.log(logMessage);\n }\n}\n", "// market-hours.ts\n\nexport interface HolidayDetails {\n date: string;\n}\n\nexport interface MarketHolidaysForYear {\n [holidayName: string]: HolidayDetails;\n}\n\nexport interface MarketHolidays {\n [year: number]: MarketHolidaysForYear;\n}\n\nexport interface EarlyCloseDetails {\n date: string;\n time: string;\n optionsTime: string;\n notes: string;\n}\n\nexport interface EarlyClosesForYear {\n [date: string]: EarlyCloseDetails;\n}\n\nexport interface MarketEarlyCloses {\n [year: number]: EarlyClosesForYear;\n}\n\nexport const marketHolidays: MarketHolidays = {\n 2024: {\n \"New Year's Day\": { date: '2024-01-01' },\n 'Martin Luther King, Jr. Day': { date: '2024-01-15' },\n \"Washington's Birthday\": { date: '2024-02-19' },\n 'Good Friday': { date: '2024-03-29' },\n 'Memorial Day': { date: '2024-05-27' },\n 'Juneteenth National Independence Day': { date: '2024-06-19' },\n 'Independence Day': { date: '2024-07-04' },\n 'Labor Day': { date: '2024-09-02' },\n 'Thanksgiving Day': { date: '2024-11-28' },\n 'Christmas Day': { date: '2024-12-25' },\n },\n 2025: {\n \"New Year's Day\": { date: '2025-01-01' },\n 'Jimmy Carter Memorial Day': { date: '2025-01-09' },\n 'Martin Luther King, Jr. Day': { date: '2025-01-20' },\n \"Washington's Birthday\": { date: '2025-02-17' },\n 'Good Friday': { date: '2025-04-18' },\n 'Memorial Day': { date: '2025-05-26' },\n 'Juneteenth National Independence Day': { date: '2025-06-19' },\n 'Independence Day': { date: '2025-07-04' },\n 'Labor Day': { date: '2025-09-01' },\n 'Thanksgiving Day': { date: '2025-11-27' },\n 'Christmas Day': { date: '2025-12-25' },\n },\n 2026: {\n \"New Year's Day\": { date: '2026-01-01' },\n 'Martin Luther King, Jr. Day': { date: '2026-01-19' },\n \"Washington's Birthday\": { date: '2026-02-16' },\n 'Good Friday': { date: '2026-04-03' },\n 'Memorial Day': { date: '2026-05-25' },\n 'Juneteenth National Independence Day': { date: '2026-06-19' },\n 'Independence Day': { date: '2026-07-03' },\n 'Labor Day': { date: '2026-09-07' },\n 'Thanksgiving Day': { date: '2026-11-26' },\n 'Christmas Day': { date: '2026-12-25' },\n },\n};\n\nexport const marketEarlyCloses: MarketEarlyCloses = {\n 2024: {\n '2024-07-03': {\n date: '2024-07-03',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Market closes early on Wednesday, July 3, 2024 at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n '2024-11-29': {\n date: '2024-11-29',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Market closes early on Friday, November 29, 2024 at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n '2024-12-24': {\n date: '2024-12-24',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Market closes early on Tuesday, December 24, 2024 at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n },\n 2025: {\n '2025-07-03': {\n date: '2025-07-03',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Market closes early on Thursday, July 3, 2025 at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n '2025-11-28': {\n date: '2025-11-28',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Market closes early on Friday, November 28, 2025 at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n '2025-12-24': {\n date: '2025-12-24',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Market closes early on Wednesday, December 24, 2025 at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n },\n 2026: {\n '2026-07-02': {\n date: '2026-07-02',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Independence Day observed, market closes early at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n '2026-11-27': {\n date: '2026-11-27',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Market closes early on Friday, November 27, 2026 at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n '2026-12-24': {\n date: '2026-12-24',\n time: '13:00',\n optionsTime: '13:15',\n notes:\n 'Market closes early on Thursday, December 24, 2026 at 1:00 p.m. (1:15 p.m. for eligible options). NYSE American Equities, NYSE Arca Equities, NYSE Chicago, and NYSE National late trading sessions will close at 5:00 p.m. Eastern Time.',\n },\n },\n};\n", "import { log as baseLog } from './logging';\nimport { LogOptions } from './types/logging-types';\nimport {\n Period,\n IntradayReporting,\n PeriodDates,\n MarketTimeParams,\n OutputFormat,\n MarketOpenCloseResult,\n MarketStatus,\n MarketTimesConfig,\n TradingDaysBackOptions,\n} from './types/market-time-types';\nimport { marketHolidays, marketEarlyCloses } from './market-hours';\n\n// Constants for NY market times (Eastern Time)\nexport const MARKET_CONFIG = {\n TIMEZONE: 'America/New_York',\n UTC_OFFSET_STANDARD: -5, // EST\n UTC_OFFSET_DST: -4, // EDT\n TIMES: {\n EXTENDED_START: { hour: 4, minute: 0 },\n MARKET_OPEN: { hour: 9, minute: 30 },\n EARLY_MARKET_END: { hour: 10, minute: 0 },\n MARKET_CLOSE: { hour: 16, minute: 0 },\n EARLY_CLOSE: { hour: 13, minute: 0 },\n EXTENDED_END: { hour: 20, minute: 0 },\n EARLY_EXTENDED_END: { hour: 17, minute: 0 },\n },\n} as const;\n\nconst log = (message: string, options: LogOptions = { type: 'info' }) => {\n baseLog(message, { ...options, source: 'MarketTime' });\n};\n\n// Helper: Get NY offset for a given UTC date (DST rules for US)\n/**\n * Returns the NY timezone offset (in hours) for a given UTC date, accounting for US DST rules.\n * @param date - UTC date\n * @returns offset in hours (-5 for EST, -4 for EDT)\n */\nfunction getNYOffset(date: Date): number {\n // US DST starts 2nd Sunday in March, ends 1st Sunday in November\n const year = date.getUTCFullYear();\n const dstStart = getNthWeekdayOfMonth(year, 3, 0, 2); // March, Sunday, 2nd\n const dstEnd = getNthWeekdayOfMonth(year, 11, 0, 1); // November, Sunday, 1st\n const utcTime = date.getTime();\n\n if (utcTime >= dstStart.getTime() && utcTime < dstEnd.getTime()) {\n return MARKET_CONFIG.UTC_OFFSET_DST;\n }\n return MARKET_CONFIG.UTC_OFFSET_STANDARD;\n}\n\n// Helper: Get nth weekday of month in UTC\n/**\n * Returns the nth weekday of a given month in UTC.\n * @param year - Year\n * @param month - 1-based month (e.g. March = 3)\n * @param weekday - 0=Sunday, 1=Monday, ...\n * @param n - nth occurrence\n * @returns Date object for the nth weekday\n */\nfunction getNthWeekdayOfMonth(year: number, month: number, weekday: number, n: number): Date {\n // month: 1-based (March = 3), weekday: 0=Sunday\n const firstDay = new Date(Date.UTC(year, month - 1, 1));\n let count = 0;\n for (let d = 1; d <= 31; d++) {\n const date = new Date(Date.UTC(year, month - 1, d));\n if (date.getUTCMonth() !== month - 1) break;\n if (date.getUTCDay() === weekday) {\n count++;\n if (count === n) return date;\n }\n }\n // fallback: last day of month\n return new Date(Date.UTC(year, month - 1, 28));\n}\n\n// Helper: Convert UTC date to NY time (returns new Date object)\n/**\n * Converts a UTC date to NY time (returns a new Date object).\n * @param date - UTC date\n * @returns Date object in NY time\n */\nfunction toNYTime(date: Date): Date {\n const offset = getNYOffset(date);\n // NY offset in hours\n const utcMillis = date.getTime();\n const nyMillis = utcMillis + offset * 60 * 60 * 1000;\n return new Date(nyMillis);\n}\n\n// Helper: Convert NY time to UTC (returns new Date object)\n/**\n * Converts a NY time date to UTC (returns a new Date object).\n * @param date - NY time date\n * @returns Date object in UTC\n */\nfunction fromNYTime(date: Date): Date {\n const offset = getNYOffset(date);\n const nyMillis = date.getTime();\n const utcMillis = nyMillis - offset * 60 * 60 * 1000;\n return new Date(utcMillis);\n}\n\n// Helper: Format date in ISO, unix, etc.\n/**\n * Formats a date in ISO, unix-seconds, or unix-ms format.\n * @param date - Date object\n * @param outputFormat - Output format ('iso', 'unix-seconds', 'unix-ms')\n * @returns Formatted date string or number\n */\nfunction formatDate(date: Date, outputFormat: OutputFormat = 'iso'): string | number {\n switch (outputFormat) {\n case 'unix-seconds':\n return Math.floor(date.getTime() / 1000);\n case 'unix-ms':\n return date.getTime();\n case 'iso':\n default:\n return date.toISOString();\n }\n}\n\n// Helper: Format date in NY locale string\n/**\n * Formats a date in NY locale string.\n * @param date - Date object\n * @returns NY locale string\n */\nfunction formatNYLocale(date: Date): string {\n return date.toLocaleString('en-US', { timeZone: 'America/New_York' });\n}\n\n// Market calendar logic\n/**\n * Market calendar logic for holidays, weekends, and market days.\n */\nclass MarketCalendar {\n /**\n * Checks if a date is a weekend in NY time.\n * @param date - Date object\n * @returns true if weekend, false otherwise\n */\n isWeekend(date: Date): boolean {\n const day = toNYTime(date).getUTCDay();\n return day === 0 || day === 6;\n }\n\n /**\n * Checks if a date is a market holiday in NY time.\n * @param date - Date object\n * @returns true if holiday, false otherwise\n */\n isHoliday(date: Date): boolean {\n const nyDate = toNYTime(date);\n const year = nyDate.getUTCFullYear();\n const month = nyDate.getUTCMonth() + 1;\n const day = nyDate.getUTCDate();\n const formattedDate = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n const yearHolidays = marketHolidays[year];\n if (!yearHolidays) return false;\n return Object.values(yearHolidays).some((holiday) => holiday.date === formattedDate);\n }\n\n /**\n * Checks if a date is an early close day in NY time.\n * @param date - Date object\n * @returns true if early close, false otherwise\n */\n isEarlyCloseDay(date: Date): boolean {\n const nyDate = toNYTime(date);\n const year = nyDate.getUTCFullYear();\n const month = nyDate.getUTCMonth() + 1;\n const day = nyDate.getUTCDate();\n const formattedDate = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n const yearEarlyCloses = marketEarlyCloses[year];\n return yearEarlyCloses && yearEarlyCloses[formattedDate] !== undefined;\n }\n\n /**\n * Gets the early close time (in minutes from midnight) for a given date.\n * @param date - Date object\n * @returns minutes from midnight or null\n */\n getEarlyCloseTime(date: Date): number | null {\n const nyDate = toNYTime(date);\n const year = nyDate.getUTCFullYear();\n const month = nyDate.getUTCMonth() + 1;\n const day = nyDate.getUTCDate();\n const formattedDate = `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n const yearEarlyCloses = marketEarlyCloses[year];\n if (yearEarlyCloses && yearEarlyCloses[formattedDate]) {\n const [hours, minutes] = yearEarlyCloses[formattedDate].time.split(':').map(Number);\n return hours * 60 + minutes;\n }\n return null;\n }\n\n /**\n * Checks if a date is a market day (not weekend or holiday).\n * @param date - Date object\n * @returns true if market day, false otherwise\n */\n isMarketDay(date: Date): boolean {\n return !this.isWeekend(date) && !this.isHoliday(date);\n }\n\n /**\n * Gets the next market day after the given date.\n * @param date - Date object\n * @returns Date object for next market day\n */\n getNextMarketDay(date: Date): Date {\n let nextDay = new Date(date.getTime() + 24 * 60 * 60 * 1000);\n while (!this.isMarketDay(nextDay)) {\n nextDay = new Date(nextDay.getTime() + 24 * 60 * 60 * 1000);\n }\n return nextDay;\n }\n\n /**\n * Gets the previous market day before the given date.\n * @param date - Date object\n * @returns Date object for previous market day\n */\n getPreviousMarketDay(date: Date): Date {\n let prevDay = new Date(date.getTime() - 24 * 60 * 60 * 1000);\n while (!this.isMarketDay(prevDay)) {\n prevDay = new Date(prevDay.getTime() - 24 * 60 * 60 * 1000);\n }\n return prevDay;\n }\n}\n\n// Market open/close times\n/**\n * Returns market open/close times for a given date, including extended and early closes.\n * @param date - Date object\n * @returns MarketOpenCloseResult\n */\nfunction getMarketTimes(date: Date): MarketOpenCloseResult {\n const calendar = new MarketCalendar();\n const nyDate = toNYTime(date);\n if (!calendar.isMarketDay(date)) {\n return {\n marketOpen: false,\n open: null,\n close: null,\n openExt: null,\n closeExt: null,\n };\n }\n const year = nyDate.getUTCFullYear();\n const month = nyDate.getUTCMonth();\n const day = nyDate.getUTCDate();\n\n // Helper to build NY time for a given hour/minute\n function buildNYTime(hour: number, minute: number): Date {\n const d = new Date(Date.UTC(year, month, day, hour, minute, 0, 0));\n return fromNYTime(d);\n }\n\n let open = buildNYTime(MARKET_CONFIG.TIMES.MARKET_OPEN.hour, MARKET_CONFIG.TIMES.MARKET_OPEN.minute);\n let close = buildNYTime(MARKET_CONFIG.TIMES.MARKET_CLOSE.hour, MARKET_CONFIG.TIMES.MARKET_CLOSE.minute);\n let openExt = buildNYTime(MARKET_CONFIG.TIMES.EXTENDED_START.hour, MARKET_CONFIG.TIMES.EXTENDED_START.minute);\n let closeExt = buildNYTime(MARKET_CONFIG.TIMES.EXTENDED_END.hour, MARKET_CONFIG.TIMES.EXTENDED_END.minute);\n\n if (calendar.isEarlyCloseDay(date)) {\n close = buildNYTime(MARKET_CONFIG.TIMES.EARLY_CLOSE.hour, MARKET_CONFIG.TIMES.EARLY_CLOSE.minute);\n closeExt = buildNYTime(MARKET_CONFIG.TIMES.EARLY_EXTENDED_END.hour, MARKET_CONFIG.TIMES.EARLY_EXTENDED_END.minute);\n }\n\n return {\n marketOpen: true,\n open,\n close,\n openExt,\n closeExt,\n };\n}\n\n// Is within market hours\n/**\n * Checks if a date/time is within market hours, extended hours, or continuous.\n * @param date - Date object\n * @param intradayReporting - 'market_hours', 'extended_hours', or 'continuous'\n * @returns true if within hours, false otherwise\n */\nexport function isWithinMarketHours(date: Date, intradayReporting: IntradayReporting = 'market_hours'): boolean {\n const calendar = new MarketCalendar();\n if (!calendar.isMarketDay(date)) return false;\n const nyDate = toNYTime(date);\n const minutes = nyDate.getUTCHours() * 60 + nyDate.getUTCMinutes();\n\n switch (intradayReporting) {\n case 'extended_hours': {\n let endMinutes = MARKET_CONFIG.TIMES.EXTENDED_END.hour * 60 + MARKET_CONFIG.TIMES.EXTENDED_END.minute;\n if (calendar.isEarlyCloseDay(date)) {\n endMinutes = MARKET_CONFIG.TIMES.EARLY_EXTENDED_END.hour * 60 + MARKET_CONFIG.TIMES.EARLY_EXTENDED_END.minute;\n }\n const startMinutes = MARKET_CONFIG.TIMES.EXTENDED_START.hour * 60 + MARKET_CONFIG.TIMES.EXTENDED_START.minute;\n return minutes >= startMinutes && minutes <= endMinutes;\n }\n case 'continuous':\n return true;\n default: {\n let endMinutes = MARKET_CONFIG.TIMES.MARKET_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.MARKET_CLOSE.minute;\n if (calendar.isEarlyCloseDay(date)) {\n endMinutes = MARKET_CONFIG.TIMES.EARLY_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.EARLY_CLOSE.minute;\n }\n const startMinutes = MARKET_CONFIG.TIMES.MARKET_OPEN.hour * 60 + MARKET_CONFIG.TIMES.MARKET_OPEN.minute;\n return minutes >= startMinutes && minutes <= endMinutes;\n }\n }\n}\n\n// Get last full trading date\n/**\n * Returns the last full trading date (market close) for a given date.\n * @param currentDate - Date object (default: now)\n * @returns Date object for last full trading date\n */\nfunction getLastFullTradingDateImpl(currentDate: Date = new Date()): Date {\n const calendar = new MarketCalendar();\n const nyDate = toNYTime(currentDate);\n const minutes = nyDate.getUTCHours() * 60 + nyDate.getUTCMinutes();\n const marketOpenMinutes = MARKET_CONFIG.TIMES.MARKET_OPEN.hour * 60 + MARKET_CONFIG.TIMES.MARKET_OPEN.minute;\n let marketCloseMinutes = MARKET_CONFIG.TIMES.MARKET_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.MARKET_CLOSE.minute;\n if (calendar.isEarlyCloseDay(currentDate)) {\n marketCloseMinutes = MARKET_CONFIG.TIMES.EARLY_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.EARLY_CLOSE.minute;\n }\n\n // If not a market day, or before open, or during market hours, return previous market day's close\n if (\n !calendar.isMarketDay(currentDate) ||\n minutes < marketOpenMinutes ||\n (minutes >= marketOpenMinutes && minutes < marketCloseMinutes)\n ) {\n const prevMarketDay = calendar.getPreviousMarketDay(currentDate);\n let prevCloseMinutes = MARKET_CONFIG.TIMES.MARKET_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.MARKET_CLOSE.minute;\n if (calendar.isEarlyCloseDay(prevMarketDay)) {\n prevCloseMinutes = MARKET_CONFIG.TIMES.EARLY_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.EARLY_CLOSE.minute;\n }\n const prevNYDate = toNYTime(prevMarketDay);\n const year = prevNYDate.getUTCFullYear();\n const month = prevNYDate.getUTCMonth();\n const day = prevNYDate.getUTCDate();\n const closeHour = Math.floor(prevCloseMinutes / 60);\n const closeMinute = prevCloseMinutes % 60;\n return fromNYTime(new Date(Date.UTC(year, month, day, closeHour, closeMinute, 0, 0)));\n }\n\n // After market close or after extended hours, return today's close\n const year = nyDate.getUTCFullYear();\n const month = nyDate.getUTCMonth();\n const day = nyDate.getUTCDate();\n const closeHour = Math.floor(marketCloseMinutes / 60);\n const closeMinute = marketCloseMinutes % 60;\n return fromNYTime(new Date(Date.UTC(year, month, day, closeHour, closeMinute, 0, 0)));\n}\n\n// Get day boundaries\n/**\n * Returns the start and end boundaries for a market day, extended hours, or continuous.\n * @param date - Date object\n * @param intradayReporting - 'market_hours', 'extended_hours', or 'continuous'\n * @returns Object with start and end Date\n */\nfunction getDayBoundaries(\n date: Date,\n intradayReporting: IntradayReporting = 'market_hours'\n): { start: Date; end: Date } {\n const calendar = new MarketCalendar();\n const nyDate = toNYTime(date);\n const year = nyDate.getUTCFullYear();\n const month = nyDate.getUTCMonth();\n const day = nyDate.getUTCDate();\n\n function buildNYTime(hour: number, minute: number, sec = 0, ms = 0): Date {\n const d = new Date(Date.UTC(year, month, day, hour, minute, sec, ms));\n return fromNYTime(d);\n }\n\n let start: Date;\n let end: Date;\n\n switch (intradayReporting) {\n case 'extended_hours':\n start = buildNYTime(MARKET_CONFIG.TIMES.EXTENDED_START.hour, MARKET_CONFIG.TIMES.EXTENDED_START.minute, 0, 0);\n end = buildNYTime(MARKET_CONFIG.TIMES.EXTENDED_END.hour, MARKET_CONFIG.TIMES.EXTENDED_END.minute, 59, 999);\n if (calendar.isEarlyCloseDay(date)) {\n end = buildNYTime(\n MARKET_CONFIG.TIMES.EARLY_EXTENDED_END.hour,\n MARKET_CONFIG.TIMES.EARLY_EXTENDED_END.minute,\n 59,\n 999\n );\n }\n break;\n case 'continuous':\n start = new Date(Date.UTC(year, month, day, 0, 0, 0, 0));\n end = new Date(Date.UTC(year, month, day, 23, 59, 59, 999));\n break;\n default:\n start = buildNYTime(MARKET_CONFIG.TIMES.MARKET_OPEN.hour, MARKET_CONFIG.TIMES.MARKET_OPEN.minute, 0, 0);\n end = buildNYTime(MARKET_CONFIG.TIMES.MARKET_CLOSE.hour, MARKET_CONFIG.TIMES.MARKET_CLOSE.minute, 59, 999);\n if (calendar.isEarlyCloseDay(date)) {\n end = buildNYTime(MARKET_CONFIG.TIMES.EARLY_CLOSE.hour, MARKET_CONFIG.TIMES.EARLY_CLOSE.minute, 59, 999);\n }\n break;\n }\n return { start, end };\n}\n\n// Period calculator\n/**\n * Calculates the start date for a given period ending at endDate.\n * @param endDate - Date object\n * @param period - Period string\n * @returns Date object for period start\n */\nfunction calculatePeriodStartDate(endDate: Date, period: Period): Date {\n const calendar = new MarketCalendar();\n let startDate: Date;\n switch (period) {\n case 'YTD':\n startDate = new Date(Date.UTC(endDate.getUTCFullYear(), 0, 1));\n break;\n case '1D':\n startDate = calendar.getPreviousMarketDay(endDate);\n break;\n case '3D':\n startDate = new Date(endDate.getTime() - 3 * 24 * 60 * 60 * 1000);\n break;\n case '1W':\n startDate = new Date(endDate.getTime() - 7 * 24 * 60 * 60 * 1000);\n break;\n case '2W':\n startDate = new Date(endDate.getTime() - 14 * 24 * 60 * 60 * 1000);\n break;\n case '1M':\n startDate = new Date(Date.UTC(endDate.getUTCFullYear(), endDate.getUTCMonth() - 1, endDate.getUTCDate()));\n break;\n case '3M':\n startDate = new Date(Date.UTC(endDate.getUTCFullYear(), endDate.getUTCMonth() - 3, endDate.getUTCDate()));\n break;\n case '6M':\n startDate = new Date(Date.UTC(endDate.getUTCFullYear(), endDate.getUTCMonth() - 6, endDate.getUTCDate()));\n break;\n case '1Y':\n startDate = new Date(Date.UTC(endDate.getUTCFullYear() - 1, endDate.getUTCMonth(), endDate.getUTCDate()));\n break;\n default:\n throw new Error(`Invalid period: ${period}`);\n }\n // Ensure start date is a market day\n while (!calendar.isMarketDay(startDate)) {\n startDate = calendar.getNextMarketDay(startDate);\n }\n return startDate;\n}\n\n// Get market time period\n/**\n * Returns the start and end dates for a market time period.\n * @param params - MarketTimeParams\n * @returns PeriodDates object\n */\nexport function getMarketTimePeriod(params: MarketTimeParams): PeriodDates {\n const { period, end = new Date(), intraday_reporting = 'market_hours', outputFormat = 'iso' } = params;\n\n if (!period) throw new Error('Period is required');\n const calendar = new MarketCalendar();\n\n const nyEndDate = toNYTime(end);\n let endDate: Date;\n const isCurrentMarketDay = calendar.isMarketDay(end);\n const isWithinHours = isWithinMarketHours(end, intraday_reporting);\n const minutes = nyEndDate.getUTCHours() * 60 + nyEndDate.getUTCMinutes();\n const marketStartMinutes = MARKET_CONFIG.TIMES.MARKET_OPEN.hour * 60 + MARKET_CONFIG.TIMES.MARKET_OPEN.minute;\n\n if (isCurrentMarketDay) {\n if (minutes < marketStartMinutes) {\n // Before market open - use previous day's close\n const lastMarketDay = calendar.getPreviousMarketDay(end);\n const { end: dayEnd } = getDayBoundaries(lastMarketDay, intraday_reporting);\n endDate = dayEnd;\n } else if (isWithinHours) {\n // During market hours - use current time\n endDate = end;\n } else {\n // After market close - use today's close\n const { end: dayEnd } = getDayBoundaries(end, intraday_reporting);\n endDate = dayEnd;\n }\n } else {\n // Not a market day - use previous market day's close\n const lastMarketDay = calendar.getPreviousMarketDay(end);\n const { end: dayEnd } = getDayBoundaries(lastMarketDay, intraday_reporting);\n endDate = dayEnd;\n }\n\n // Calculate start date\n const periodStartDate = calculatePeriodStartDate(endDate, period);\n const { start: dayStart } = getDayBoundaries(periodStartDate, intraday_reporting);\n\n if (endDate.getTime() < dayStart.getTime()) {\n throw new Error('Start date cannot be after end date');\n }\n\n return {\n start: formatDate(dayStart, outputFormat),\n end: formatDate(endDate, outputFormat),\n };\n}\n\n// Market status\n/**\n * Returns the current market status for a given date.\n * @param date - Date object (default: now)\n * @returns MarketStatus object\n */\nfunction getMarketStatusImpl(date: Date = new Date()): MarketStatus {\n const calendar = new MarketCalendar();\n const nyDate = toNYTime(date);\n const minutes = nyDate.getUTCHours() * 60 + nyDate.getUTCMinutes();\n const isMarketDay = calendar.isMarketDay(date);\n const isEarlyCloseDay = calendar.isEarlyCloseDay(date);\n\n const extendedStartMinutes = MARKET_CONFIG.TIMES.EXTENDED_START.hour * 60 + MARKET_CONFIG.TIMES.EXTENDED_START.minute;\n const marketStartMinutes = MARKET_CONFIG.TIMES.MARKET_OPEN.hour * 60 + MARKET_CONFIG.TIMES.MARKET_OPEN.minute;\n const earlyMarketEndMinutes =\n MARKET_CONFIG.TIMES.EARLY_MARKET_END.hour * 60 + MARKET_CONFIG.TIMES.EARLY_MARKET_END.minute;\n\n let marketCloseMinutes = MARKET_CONFIG.TIMES.MARKET_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.MARKET_CLOSE.minute;\n let extendedEndMinutes = MARKET_CONFIG.TIMES.EXTENDED_END.hour * 60 + MARKET_CONFIG.TIMES.EXTENDED_END.minute;\n if (isEarlyCloseDay) {\n marketCloseMinutes = MARKET_CONFIG.TIMES.EARLY_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.EARLY_CLOSE.minute;\n extendedEndMinutes =\n MARKET_CONFIG.TIMES.EARLY_EXTENDED_END.hour * 60 + MARKET_CONFIG.TIMES.EARLY_EXTENDED_END.minute;\n }\n\n let status: MarketStatus['status'];\n let nextStatus: MarketStatus['nextStatus'];\n let nextStatusTime: Date;\n let marketPeriod: MarketStatus['marketPeriod'];\n\n if (!isMarketDay) {\n status = 'closed';\n nextStatus = 'extended hours';\n marketPeriod = 'closed';\n const nextMarketDay = calendar.getNextMarketDay(date);\n nextStatusTime = getDayBoundaries(nextMarketDay, 'extended_hours').start;\n } else if (minutes < extendedStartMinutes) {\n status = 'closed';\n nextStatus = 'extended hours';\n marketPeriod = 'closed';\n nextStatusTime = getDayBoundaries(date, 'extended_hours').start;\n } else if (minutes < marketStartMinutes) {\n status = 'extended hours';\n nextStatus = 'open';\n marketPeriod = 'preMarket';\n nextStatusTime = getDayBoundaries(date, 'market_hours').start;\n } else if (minutes < marketCloseMinutes) {\n status = 'open';\n nextStatus = 'extended hours';\n marketPeriod = minutes < earlyMarketEndMinutes ? 'earlyMarket' : 'regularMarket';\n nextStatusTime = getDayBoundaries(date, 'market_hours').end;\n } else if (minutes < extendedEndMinutes) {\n status = 'extended hours';\n nextStatus = 'closed';\n marketPeriod = 'afterMarket';\n nextStatusTime = getDayBoundaries(date, 'extended_hours').end;\n } else {\n status = 'closed';\n nextStatus = 'extended hours';\n marketPeriod = 'closed';\n const nextMarketDay = calendar.getNextMarketDay(date);\n nextStatusTime = getDayBoundaries(nextMarketDay, 'extended_hours').start;\n }\n\n // I think using nyDate here may be wrong - should use current time? i.e. date.getTime()\n const nextStatusTimeDifference = nextStatusTime.getTime() - date.getTime();\n\n return {\n time: date,\n timeString: formatNYLocale(nyDate),\n status,\n nextStatus,\n marketPeriod,\n nextStatusTime,\n nextStatusTimeDifference,\n nextStatusTimeString: formatNYLocale(nextStatusTime),\n };\n}\n\n// API exports\n/**\n * Returns market open/close times for a given date.\n * @param options - { date?: Date }\n * @returns MarketOpenCloseResult\n */\nexport function getMarketOpenClose(options: { date?: Date } = {}): MarketOpenCloseResult {\n const { date = new Date() } = options;\n return getMarketTimes(date);\n}\n\n/**\n * Returns the start and end dates for a market time period as Date objects.\n * @param params - MarketTimeParams\n * @returns Object with start and end Date\n */\nexport function getStartAndEndDates(params: MarketTimeParams = {}): { start: Date; end: Date } {\n const { start, end } = getMarketTimePeriod(params);\n return {\n start: typeof start === 'string' || typeof start === 'number' ? new Date(start) : start,\n end: typeof end === 'string' || typeof end === 'number' ? new Date(end) : end,\n };\n}\n\n/**\n * Returns the last full trading date as a Date object.\n */\n/**\n * Returns the last full trading date as a Date object.\n * @param currentDate - Date object (default: now)\n * @returns Date object for last full trading date\n */\nexport function getLastFullTradingDate(currentDate: Date = new Date()): Date {\n return getLastFullTradingDateImpl(currentDate);\n}\n\n/**\n * Returns the last full trading date and formatted YYYYMMDD string.\n */\n/**\n * Returns the last full trading date and formatted YYYY-MM-DD string.\n * @param currentDate - Date object (default: now)\n * @returns Object with date and YYYYMMDD string\n */\nexport function getLastFullTradingDateInfo(currentDate: Date = new Date()): { date: Date; YYYYMMDD: string } {\n const date = getLastFullTradingDateImpl(currentDate);\n return {\n date,\n YYYYMMDD: `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, '0')}-${String(\n date.getUTCDate()\n ).padStart(2, '0')}`,\n };\n}\n\n/**\n * Returns the next market day after the reference date.\n * @param referenceDate - Date object (default: now)\n * @returns Object with date, yyyymmdd string, and ISO string\n */\nexport function getNextMarketDay({ referenceDate }: { referenceDate?: Date } = {}): {\n date: Date;\n yyyymmdd: string;\n dateISOString: string;\n} {\n const calendar = new MarketCalendar();\n const startDate = referenceDate ?? new Date();\n\n // Find the next trading day (UTC Date object)\n const nextDate = calendar.getNextMarketDay(startDate);\n\n // Convert to NY time before extracting Y-M-D parts\n const nyNext = toNYTime(nextDate);\n const yyyymmdd = `${nyNext.getUTCFullYear()}-${String(nyNext.getUTCMonth() + 1).padStart(2, '0')}-${String(\n nyNext.getUTCDate()\n ).padStart(2, '0')}`;\n\n return {\n date: nextDate, // raw Date, unchanged\n yyyymmdd, // correct trading date string\n dateISOString: nextDate.toISOString(),\n };\n}\n\n/**\n * Returns the previous market day before the reference date.\n * @param referenceDate - Date object (default: now)\n * @returns Object with date, yyyymmdd string, and ISO string\n */\nexport function getPreviousMarketDay({ referenceDate }: { referenceDate?: Date } = {}) {\n const calendar = new MarketCalendar();\n const startDate = referenceDate || new Date();\n const prevDate = calendar.getPreviousMarketDay(startDate);\n\n // convert to NY time first\n const nyPrev = toNYTime(prevDate); // \u2190 already in this file\n const yyyymmdd = `${nyPrev.getUTCFullYear()}-${String(nyPrev.getUTCMonth() + 1).padStart(2, '0')}-${String(\n nyPrev.getUTCDate()\n ).padStart(2, '0')}`;\n\n return {\n date: prevDate,\n yyyymmdd,\n dateISOString: prevDate.toISOString(),\n };\n}\n\n/**\n * Returns the trading date for a given time. Note: Just trims the date string; does not validate if the date is a market day.\n * @param time - a string, number (unix timestamp), or Date object representing the time\n * @returns the trading date as a string in YYYY-MM-DD format\n */\n/**\n * Returns the trading date for a given time in YYYY-MM-DD format (NY time).\n * @param time - string, number, or Date\n * @returns trading date string\n */\nexport function getTradingDate(time: string | number | Date): string {\n const date = typeof time === 'number' ? new Date(time) : typeof time === 'string' ? new Date(time) : time;\n const nyDate = toNYTime(date);\n return `${nyDate.getUTCFullYear()}-${String(nyDate.getUTCMonth() + 1).padStart(2, '0')}-${String(\n nyDate.getUTCDate()\n ).padStart(2, '0')}`;\n}\n\n/**\n * Returns the NY timezone offset string for a given date.\n * @param date - Date object (default: now)\n * @returns '-04:00' for EDT, '-05:00' for EST\n */\nexport function getNYTimeZone(date?: Date): '-04:00' | '-05:00' {\n const offset = getNYOffset(date || new Date());\n return offset === -4 ? '-04:00' : '-05:00';\n}\n\n/**\n * Returns the regular market open and close Date objects for a given trading day string in the\n * America/New_York timezone (NYSE/NASDAQ calendar).\n *\n * This helper is convenient when you have a calendar date like '2025-10-03' and want the precise\n * open and close Date values for that day. It internally:\n * - Determines the NY offset for the day using `getNYTimeZone()`.\n * - Anchors a noon-time Date on that day in NY time to avoid DST edge cases.\n * - Verifies the day is a market day via `isMarketDay()`.\n * - Fetches the open/close times via `getMarketOpenClose()`.\n *\n * Throws if the provided day is not a market day or if open/close times are unavailable.\n *\n * See also:\n * - `getNYTimeZone(date?: Date)`\n * - `isMarketDay(date: Date)`\n * - `getMarketOpenClose(options?: { date?: Date })`\n *\n * @param dateStr - Trading day string in 'YYYY-MM-DD' format (Eastern Time date)\n * @returns An object containing `{ open: Date; close: Date }`\n * @example\n * ```ts\n * const { open, close } = disco.time.getOpenCloseForTradingDay('2025-10-03');\n * ```\n */\nexport function getOpenCloseForTradingDay(dateStr: string): { open: Date; close: Date } {\n // Build a UTC midnight anchor for the date, then derive the NY offset for that day.\n const utcAnchor = new Date(`${dateStr}T00:00:00Z`);\n const nyOffset = getNYTimeZone(utcAnchor); // '-04:00' | '-05:00'\n\n // Create a NY-local noon date to avoid DST midnight transitions.\n const nyNoon = new Date(`${dateStr}T12:00:00${nyOffset}`);\n\n if (!isMarketDay(nyNoon)) {\n throw new Error(`Not a market day in ET: ${dateStr}`);\n }\n\n const { open, close } = getMarketOpenClose({ date: nyNoon });\n if (!open || !close) {\n throw new Error(`No market times available for ${dateStr}`);\n }\n\n return { open, close };\n}\n\n/**\n * Converts any date to the market time zone (America/New_York, Eastern Time).\n * Returns a new Date object representing the same moment in time but adjusted to NY/Eastern timezone.\n * Automatically handles daylight saving time transitions (EST/EDT).\n * \n * @param date - Date object to convert to market time zone\n * @returns Date object in NY/Eastern time zone\n * @example\n * ```typescript\n * const utcDate = new Date('2024-01-15T15:30:00Z'); // 3:30 PM UTC\n * const nyDate = convertDateToMarketTimeZone(utcDate); // 10:30 AM EST (winter) or 11:30 AM EDT (summer)\n * ```\n */\nexport function convertDateToMarketTimeZone(date: Date): Date {\n return toNYTime(date);\n}\n\n/**\n * Returns the current market status for a given date.\n * @param options - { date?: Date }\n * @returns MarketStatus object\n */\nexport function getMarketStatus(options: { date?: Date } = {}): MarketStatus {\n const { date = new Date() } = options;\n return getMarketStatusImpl(date);\n}\n\n/**\n * Checks if a date is a market day.\n * @param date - Date object\n * @returns true if market day, false otherwise\n */\nexport function isMarketDay(date: Date): boolean {\n const calendar = new MarketCalendar();\n return calendar.isMarketDay(date);\n}\n\n/**\n * Returns full trading days from market open to market close.\n * endDate is always the most recent market close (previous day's close if before open, today's close if after open).\n * days: 1 or not specified = that day's open; 2 = previous market day's open, etc.\n */\n/**\n * Returns full trading days from market open to market close.\n * @param options - { endDate?: Date, days?: number }\n * @returns Object with startDate and endDate\n */\nexport function getTradingStartAndEndDates(\n options: {\n endDate?: Date;\n days?: number;\n } = {}\n): { startDate: Date; endDate: Date } {\n const { endDate = new Date(), days = 1 } = options;\n const calendar = new MarketCalendar();\n\n // Find the most recent market close\n let endMarketDay = endDate;\n const nyEnd = toNYTime(endDate);\n const marketOpenMinutes = MARKET_CONFIG.TIMES.MARKET_OPEN.hour * 60 + MARKET_CONFIG.TIMES.MARKET_OPEN.minute;\n const marketCloseMinutes = MARKET_CONFIG.TIMES.MARKET_CLOSE.hour * 60 + MARKET_CONFIG.TIMES.MARKET_CLOSE.minute;\n const minutes = nyEnd.getUTCHours() * 60 + nyEnd.getUTCMinutes();\n\n if (\n !calendar.isMarketDay(endDate) ||\n minutes < marketOpenMinutes ||\n (minutes >= marketOpenMinutes && minutes < marketCloseMinutes)\n ) {\n // Before market open, not a market day, or during market hours: use previous market day\n endMarketDay = calendar.getPreviousMarketDay(endDate);\n } else {\n // After market close: use today\n endMarketDay = endDate;\n }\n\n // Get market close for endMarketDay\n const endClose = getMarketOpenClose({ date: endMarketDay }).close!;\n\n // Find start market day by iterating back over market days\n let startMarketDay = endMarketDay;\n let count = Math.max(1, days);\n for (let i = 1; i < count; i++) {\n startMarketDay = calendar.getPreviousMarketDay(startMarketDay);\n }\n // If days > 1, we need to go back (days-1) market days from endMarketDay\n if (days > 1) {\n startMarketDay = endMarketDay;\n for (let i = 1; i < days; i++) {\n startMarketDay = calendar.getPreviousMarketDay(startMarketDay);\n }\n }\n const startOpen = getMarketOpenClose({ date: startMarketDay }).open!;\n\n return { startDate: startOpen, endDate: endClose };\n}\n\n/**\n * Counts trading time between two dates (passed as standard Date objects), excluding weekends and holidays, and closed market hours, using other functions in this library.\n *\n * This function calculates the actual trading time between two dates by:\n * 1. Iterating through each calendar day between startDate and endDate (inclusive)\n * 2. For each day that is a market day (not weekend/holiday), getting market open/close times\n * 3. Calculating the overlap between the time range and market hours for that day\n * 4. Summing up all the trading minutes across all days\n *\n * The function automatically handles:\n * - Weekends (Saturday/Sunday) - skipped entirely\n * - Market holidays - skipped entirely\n * - Early close days (e.g. day before holidays) - uses early close time\n * - Times outside market hours - only counts time within 9:30am-4pm ET (or early close)\n *\n * Examples:\n * - 12pm to 3:30pm same day = 3.5 hours = 210 minutes = 0.54 days\n * - 9:30am to 4pm same day = 6.5 hours = 390 minutes = 1 day\n * - Friday 2pm to Monday 2pm = 6.5 hours (Friday 2pm-4pm + Monday 9:30am-2pm)\n *\n * @param startDate - Start date/time\n * @param endDate - End date/time (default: now)\n * @returns Object containing:\n * - days: Trading time as fraction of full trading days (6.5 hours = 1 day)\n * - hours: Trading time in hours\n * - minutes: Trading time in minutes\n */\nexport function countTradingDays(\n startDate: Date,\n endDate: Date = new Date()\n): {\n days: number;\n hours: number;\n minutes: number;\n} {\n const calendar = new MarketCalendar();\n\n // Ensure start is before end\n if (startDate.getTime() > endDate.getTime()) {\n throw new Error('Start date must be before end date');\n }\n\n let totalMinutes = 0;\n\n // Get the NY dates for iteration\n const startNY = toNYTime(startDate);\n const endNY = toNYTime(endDate);\n\n // Create date at start of first day (in NY time)\n const currentNY = new Date(\n Date.UTC(startNY.getUTCFullYear(), startNY.getUTCMonth(), startNY.getUTCDate(), 0, 0, 0, 0)\n );\n\n // Iterate through each calendar day\n while (currentNY.getTime() <= endNY.getTime()) {\n const currentUTC = fromNYTime(currentNY);\n\n // Check if this is a market day\n if (calendar.isMarketDay(currentUTC)) {\n // Get market hours for this day\n const marketTimes = getMarketTimes(currentUTC);\n\n if (marketTimes.marketOpen && marketTimes.open && marketTimes.close) {\n // Calculate the overlap between our time range and market hours\n const dayStart = Math.max(startDate.getTime(), marketTimes.open.getTime());\n const dayEnd = Math.min(endDate.getTime(), marketTimes.close.getTime());\n\n // Only count if there's actual overlap\n if (dayStart < dayEnd) {\n totalMinutes += (dayEnd - dayStart) / (1000 * 60);\n }\n }\n }\n\n // Move to next day\n currentNY.setUTCDate(currentNY.getUTCDate() + 1);\n }\n\n // Convert to days, hours, minutes\n const MINUTES_PER_TRADING_DAY = 390; // 6.5 hours\n const days = totalMinutes / MINUTES_PER_TRADING_DAY;\n const hours = totalMinutes / 60;\n const minutes = totalMinutes;\n\n return {\n days: Math.round(days * 1000) / 1000, // Round to 3 decimal places\n hours: Math.round(hours * 100) / 100, // Round to 2 decimal places\n minutes: Math.round(minutes),\n };\n}\n\n/**\n * Returns the trading day N days back from a reference date, along with its market open time.\n * Trading days are counted as full or half trading days (days that end count as 1 full trading day).\n * By default, the most recent completed trading day counts as day 1.\n * Set includeMostRecentFullDay to false to count strictly before that day.\n * \n * @param options - Object with:\n * - referenceDate: Date to count back from (default: now)\n * - days: Number of trading days to go back (must be an integer >= 1)\n * - includeMostRecentFullDay: Whether to include the most recent completed trading day (default: true)\n * @returns Object containing:\n * - date: Trading date in YYYY-MM-DD format\n * - marketOpenISO: Market open time as ISO string (e.g., \"2025-11-15T13:30:00.000Z\")\n * - unixTimestamp: Market open time as Unix timestamp in seconds\n * @example\n * ```typescript\n * // Get the trading day 1 day back (most recent full trading day)\n * const result = getTradingDaysBack({ days: 1 });\n * console.log(result.date); // \"2025-11-01\"\n * console.log(result.marketOpenISO); // \"2025-11-01T13:30:00.000Z\"\n * console.log(result.unixTimestamp); // 1730466600\n * \n * // Get the trading day 5 days back from a specific date\n * const result2 = getTradingDaysBack({ \n * referenceDate: new Date('2025-11-15T12:00:00-05:00'), \n * days: 5 \n * });\n * ```\n */\nexport function getTradingDaysBack(options: TradingDaysBackOptions): {\n date: string;\n marketOpenISO: string;\n unixTimestamp: number;\n} {\n const calendar = new MarketCalendar();\n const { referenceDate, days, includeMostRecentFullDay = true } = options;\n const refDate = referenceDate || new Date();\n const daysBack = days;\n\n if (!Number.isInteger(daysBack) || daysBack < 1) {\n throw new Error('days must be an integer >= 1');\n }\n\n // Start from the last full trading date relative to reference\n let targetDate = getLastFullTradingDateImpl(refDate);\n\n if (!includeMostRecentFullDay) {\n targetDate = calendar.getPreviousMarketDay(targetDate);\n }\n\n // Go back the specified number of days (we're already at day 1, so go back days-1 more)\n for (let i = 1; i < daysBack; i++) {\n targetDate = calendar.getPreviousMarketDay(targetDate);\n }\n\n // Get market open time for this date\n const marketTimes = getMarketTimes(targetDate);\n if (!marketTimes.open) {\n throw new Error(`No market open time for target date`);\n }\n\n // Format the date string (YYYY-MM-DD) in NY time\n const nyDate = toNYTime(marketTimes.open);\n const dateStr = `${nyDate.getUTCFullYear()}-${String(nyDate.getUTCMonth() + 1).padStart(2, '0')}-${String(nyDate.getUTCDate()).padStart(2, '0')}`;\n\n const marketOpenISO = marketTimes.open.toISOString();\n const unixTimestamp = Math.floor(marketTimes.open.getTime() / 1000);\n\n return {\n date: dateStr,\n marketOpenISO,\n unixTimestamp,\n };\n}\n\n// Export MARKET_TIMES for compatibility\nexport const MARKET_TIMES: MarketTimesConfig = {\n TIMEZONE: MARKET_CONFIG.TIMEZONE,\n PRE: {\n START: { HOUR: 4, MINUTE: 0, MINUTES: 240 },\n END: { HOUR: 9, MINUTE: 30, MINUTES: 570 },\n },\n EARLY_MORNING: {\n START: { HOUR: 9, MINUTE: 30, MINUTES: 570 },\n END: { HOUR: 10, MINUTE: 0, MINUTES: 600 },\n },\n EARLY_CLOSE_BEFORE_HOLIDAY: {\n START: { HOUR: 9, MINUTE: 30, MINUTES: 570 },\n END: { HOUR: 13, MINUTE: 0, MINUTES: 780 },\n },\n EARLY_EXTENDED_BEFORE_HOLIDAY: {\n START: { HOUR: 13, MINUTE: 0, MINUTES: 780 },\n END: { HOUR: 17, MINUTE: 0, MINUTES: 1020 },\n },\n REGULAR: {\n START: { HOUR: 9, MINUTE: 30, MINUTES: 570 },\n END: { HOUR: 16, MINUTE: 0, MINUTES: 960 },\n },\n EXTENDED: {\n START: { HOUR: 4, MINUTE: 0, MINUTES: 240 },\n END: { HOUR: 20, MINUTE: 0, MINUTES: 1200 },\n },\n};\n", "// format-tools.ts\n\n/**\n * Capitalizes the first letter of a string\n * @param {string} str - The string to capitalize\n * @returns {string} The capitalized string, or original value if not a string\n * @example\n * capitalize('hello') // 'Hello'\n * capitalize(123) // 123\n */\nexport function capFirstLetter(str: string): string {\n if (!str || typeof str !== 'string') return str;\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n/**\n * Formats a number as US currency\n * @param {number} value - The number to format\n * @returns {string} The formatted currency string (e.g. '$1,234.56')\n * @example\n * formatCurrency(1234.56) // '$1,234.56'\n * formatCurrency(NaN) // '$0.00'\n */\nexport function formatCurrency(value: number): string {\n if (isNaN(value)) {\n return '$0.00';\n }\n\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n }).format(value);\n}\n\n/**\n * Formats a number with commas\n * @param {number} value - The number to format\n * @returns {string} The formatted number string (e.g. '1,234.56')\n * @example\n * formatNumber(1234.56) // '1,234.56'\n * formatNumber(NaN) // '0'\n */\nexport function formatNumber(value: number): string {\n if (isNaN(value)) {\n return '0';\n }\n\n return new Intl.NumberFormat('en-US').format(value);\n}\n\n/**\n * Formats a number as a percentage\n * @param {number} value - The number to format (e.g. 0.75 for 75%)\n * @param {number} [decimalPlaces=2] - Number of decimal places to show\n * @returns {string} The formatted percentage string (e.g. '75.00%')\n * @example\n * formatPercentage(0.75) // '75.00%'\n * formatPercentage(0.753, 1) // '75.3%'\n */\nexport function formatPercentage(value: number, decimalPlaces: number = 2): string {\n if (isNaN(value)) {\n return '0%';\n }\n return new Intl.NumberFormat('en-US', {\n style: 'percent',\n minimumFractionDigits: decimalPlaces,\n }).format(value);\n}\n\n/**\n * Formats a Date object to Australian datetime format for Google Sheets\n * @param {Date} date - The date to format\n * @returns {string} The formatted datetime string in 'DD/MM/YYYY HH:MM:SS' format\n * @example\n * dateTimeForGS(new Date('2025-01-01T12:34:56')) // '01/01/2025 12:34:56'\n */\nexport function dateTimeForGS(date: Date): string {\n return date\n .toLocaleString('en-AU', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n })\n .replace(/\\./g, '/');\n}\n", "export * from './alpaca-types';\nexport * from './market-time-types';\nexport * from './ta-types';\nexport * from './llm-types';\nexport * from './logging-types';\nexport * from './disco-mail-types';\n", "// openai-types.ts\nimport type {\n ChatCompletionMessageParam,\n ChatCompletionTool,\n ChatCompletionMessageToolCall,\n} from 'openai/resources/chat/completions';\nimport type { ImageGenerateParams, ImageModel } from 'openai/resources/images';\nimport type { ResponseFormatTextJSONSchemaConfig, ResponseInputImage } from 'openai/resources/responses/responses';\nimport type { ZodType } from 'zod';\n\n/**\n * Represents OpenAI models\n */\nexport const OPENAI_MODELS = [\n 'gpt-5.6',\n 'gpt-5.6-sol',\n 'gpt-5.6-terra',\n 'gpt-5.6-luna',\n 'gpt-5',\n 'gpt-5-mini',\n 'gpt-5.4-mini',\n 'gpt-5.4-nano',\n 'gpt-5-nano',\n 'gpt-5.1',\n 'gpt-5.4',\n 'gpt-5.5',\n 'gpt-5.5-pro',\n 'gpt-5.2',\n 'gpt-5.2-pro',\n 'gpt-5.1-codex',\n 'gpt-5.1-codex-max',\n] as const;\n\nexport type OpenAIModel = (typeof OPENAI_MODELS)[number];\n\n/**\n * Type guard to check if a model is a supported direct OpenAI model.\n */\nexport function isOpenAIModel(model: string): model is OpenAIModel {\n return OPENAI_MODELS.includes(model as OpenAIModel);\n}\n\n/**\n * Represents OpenAI image models.\n */\nexport const OPENAI_IMAGE_MODELS = [\n 'gpt-image-2',\n 'gpt-image-2-2026-04-21',\n 'gpt-image-1.5',\n 'gpt-image-1',\n 'gpt-image-1-mini',\n 'chatgpt-image-latest',\n 'dall-e-2',\n 'dall-e-3',\n] as const satisfies readonly ImageModel[];\n\nexport type OpenAIImageModel = (typeof OPENAI_IMAGE_MODELS)[number];\n\n/**\n * Type guard to check if a model is a supported OpenAI image model.\n */\nexport function isOpenAIImageModel(model: string): model is OpenAIImageModel {\n return OPENAI_IMAGE_MODELS.includes(model as OpenAIImageModel);\n}\n\n/**\n * Represents Deepseek models\n */\nexport type DeepseekModel = 'deepseek-chat' | 'deepseek-reasoner';\n\n/**\n * Represents OpenRouter models\n */\nexport const OPENROUTER_MODELS = [\n 'openai/gpt-5',\n 'openai/gpt-5-mini',\n 'openai/gpt-5.4-mini',\n 'openai/gpt-5.4-nano',\n 'openai/gpt-5-nano',\n 'openai/gpt-5.1',\n 'openai/gpt-5.4',\n 'openai/gpt-5.4-pro',\n 'openai/gpt-5.5',\n 'openai/gpt-5.5-pro',\n 'openai/gpt-5.2',\n 'openai/gpt-5.2-pro',\n 'openai/gpt-5.1-codex',\n 'openai/gpt-5.1-codex-max',\n 'openai/gpt-oss-120b',\n 'z.ai/glm-4.5',\n 'z.ai/glm-4.5-air',\n 'google/gemini-2.5-flash',\n 'google/gemini-2.5-flash-lite',\n 'deepseek/deepseek-r1-0528',\n 'deepseek/deepseek-chat-v3-0324',\n] as const;\n\nexport type OpenRouterModel = (typeof OPENROUTER_MODELS)[number];\n\n/**\n * Represents pricing information for OpenRouter models\n */\nexport interface OpenRouterPricing {\n input: number; // Cost per 1M input tokens\n output: number; // Cost per 1M output tokens\n context?: number; // Max context tokens\n}\n\n/**\n * Represents all supported LLM models\n */\nexport type LLMModel = OpenAIModel | DeepseekModel | OpenRouterModel;\n\n/**\n * Type guard to check if a model is an OpenRouter model\n */\nexport function isOpenRouterModel(model: string): model is OpenRouterModel {\n return OPENROUTER_MODELS.includes(model as OpenRouterModel);\n}\n\n/**\n * Represents the usage of the LLM.\n */\nexport interface LLMUsage {\n prompt_tokens: number;\n completion_tokens: number;\n reasoning_tokens?: number;\n provider: string;\n model: LLMModel;\n cache_hit_tokens?: number;\n cache_write_tokens?: number;\n cost: number;\n}\n\n/**\n * Represents the options for the LLM.\n */\nexport interface LLMOptions {\n model?: LLMModel;\n temperature?: number;\n top_p?: number;\n frequency_penalty?: number;\n presence_penalty?: number;\n max_completion_tokens?: number;\n tools?: ChatCompletionTool[];\n developerPrompt?: string;\n context?: ChatCompletionMessageParam[];\n store?: boolean;\n reasoning_effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';\n reasoning_mode?: 'standard' | 'pro';\n reasoning_context?: 'auto' | 'current_turn' | 'all_turns';\n metadata?: Record<string, string>;\n parallel_tool_calls?: boolean;\n service_tier?: 'auto' | 'default' | 'flex' | 'priority';\n apiKey?: string;\n}\n\n/**\n * Represents the response from the LLM.\n */\nexport interface LLMResponse<T> {\n response: T;\n usage: LLMUsage;\n tool_calls?: ChatCompletionMessageToolCall[];\n}\n\n/**\n * Represents the format of the OpenAI response.\n */\nexport type OpenAIResponseFormat = 'text' | 'json' | ResponseFormatTextJSONSchemaConfig;\n\n/**\n * Represents schema input for structured outputs in OpenAI calls.\n * Can be either a JSON Schema object or a Zod schema.\n */\nexport type OpenAISchemaInput = ResponseFormatTextJSONSchemaConfig['schema'] | ZodType;\n\n/**\n * Supported image detail levels for OpenAI Responses vision inputs.\n */\nexport type OpenAIImageDetail = ResponseInputImage['detail'];\n\n/**\n * A remote image URL to analyze.\n */\nexport interface OpenAIImageURLInput {\n url: string;\n detail?: OpenAIImageDetail;\n}\n\n/**\n * A base64-encoded image to analyze.\n * If `base64` is a raw base64 string, `mimeType` is used to create a data URL.\n */\nexport interface OpenAIImageBase64Input {\n base64: string;\n mimeType?: string;\n detail?: OpenAIImageDetail;\n}\n\n/**\n * A fully formed data URL to analyze.\n */\nexport interface OpenAIImageDataURLInput {\n dataUrl: string;\n detail?: OpenAIImageDetail;\n}\n\n/**\n * An already-uploaded OpenAI file ID to analyze.\n */\nexport interface OpenAIImageFileIDInput {\n fileId: string;\n detail?: OpenAIImageDetail;\n}\n\n/**\n * A local file path to upload for vision analysis in Node.js environments.\n */\nexport interface OpenAIImageFilePathInput {\n filePath: string;\n filename?: string;\n mimeType?: string;\n detail?: OpenAIImageDetail;\n}\n\n/**\n * Vision image input accepted by the OpenAI Responses helper.\n */\nexport type OpenAIImageInput =\n | OpenAIImageURLInput\n | OpenAIImageBase64Input\n | OpenAIImageDataURLInput\n | OpenAIImageFileIDInput\n | OpenAIImageFilePathInput;\n\n/**\n * Represents the options for the OpenAI Images API.\n * Extends the official ImageGenerateParams but with more user-friendly option names.\n */\nexport interface ImageGenerationOptions {\n model?: DiscoImageModel;\n size?: ImageGenerateParams['size'];\n outputFormat?: 'jpeg' | 'png' | 'webp';\n compression?: number;\n quality?: ImageGenerateParams['quality'];\n count?: number | null;\n apiKey?: string;\n background?: ImageGenerateParams['background'];\n moderation?: ImageGenerateParams['moderation'];\n /**\n * Optional multimodal LLM to pair with image outputs (e.g., gpt-5.4).\n */\n visionModel?: LLMModel;\n}\n\nexport type DiscoImageModel = OpenAIImageModel;\n\n/**\n * Context message for conversation history\n */\nexport interface ContextMessage {\n role: 'user' | 'assistant' | 'system' | 'developer';\n content: string;\n}\n\n\n// Re-export OpenAI types for convenience\nexport type { ImageModel, ImageGenerateParams } from 'openai/resources/images';\nexport type { ImagesResponse, Image } from 'openai/resources/images';\nexport type { Tool } from 'openai/resources/responses/responses';\n", "// Utility function for debug logging\n\n// Define the possible log types as a const array for better type inference\nconst LOG_TYPES = ['info', 'warn', 'error', 'debug', 'trace'] as const;\n// Create a union type from the array\ntype LogType = (typeof LOG_TYPES)[number];\n\n/**\n * Debug logging utility that respects environment debug flags.\n * Logs messages to the console based on the specified log level.\n *\n * @param message - The message to log.\n * @param data - Optional data to log alongside the message. This can be any type of data.\n * @param type - Log level. One of: 'info' | 'warn' | 'error' | 'debug' | 'trace'. Defaults to 'info'.\n *\n * @example\n * logIfDebug(\"User login failed\", { userId: 123 }, \"error\");\n * logIfDebug(\"Cache miss\", undefined, \"warn\");\n * logIfDebug(\"Processing request\", { requestId: \"abc\" }, \"debug\");\n */\nexport const logIfDebug = (message: string, data?: unknown, type: LogType = 'info') => {\n const prefix = `[DEBUG][${type.toUpperCase()}]`;\n const formattedData = data !== undefined ? JSON.stringify(data, null, 2) : '';\n\n switch (type) {\n case 'error':\n console.error(prefix, message, formattedData);\n break;\n case 'warn':\n console.warn(prefix, message, formattedData);\n break;\n case 'debug':\n console.debug(prefix, message, formattedData);\n break;\n case 'trace':\n console.trace(prefix, message, formattedData);\n break;\n case 'info':\n default:\n console.info(prefix, message, formattedData);\n }\n};\n\n/**\n * Masks the middle part of an API key, returning only the first 2 and last 2 characters.\n * If the API key is very short (<= 4 characters), it will be returned as is.\n *\n * @param keyValue - The API key to mask.\n * @returns The masked API key.\n *\n * @example\n * maskApiKey(\"12341239856677\"); // Returns \"12****77\"\n */\nfunction maskApiKey(keyValue: string): string {\n if (keyValue.length <= 4) {\n return keyValue;\n }\n const firstTwo = keyValue.slice(0, 2);\n const lastTwo = keyValue.slice(-2);\n return `${firstTwo}****${lastTwo}`;\n}\n\n/**\n * Hides (masks) the value of any query parameter that is \"apiKey\" (case-insensitive),\n * replacing the middle part with **** and keeping only the first 2 and last 2 characters.\n *\n * @param url - The URL containing the query parameters.\n * @returns The URL with the masked API key.\n *\n * @example\n * hideApiKeyFromurl(\"https://xxx.com/s/23/fdsa/?apiKey=12341239856677\");\n * // Returns \"https://xxx.com/s/23/fdsa/?apiKey=12****77\"\n */\nexport function hideApiKeyFromurl(url: string): string {\n try {\n const parsedUrl = new URL(url);\n\n // We iterate over all search params and look for one named 'apikey' (case-insensitive)\n for (const [key, value] of parsedUrl.searchParams.entries()) {\n if (key.toLowerCase() === 'apikey') {\n const masked = maskApiKey(value);\n parsedUrl.searchParams.set(key, masked);\n }\n }\n\n return parsedUrl.toString();\n } catch {\n // If we can't parse it as a valid URL, just return the original string\n return url;\n }\n}\n\ninterface ErrorDetails {\n type: string;\n reason: string;\n status: number | null;\n retryAfter?: number;\n}\n\n/**\n * Extracts meaningful error information from various error types.\n * @param error - The error to analyze.\n * @param response - Optional response object for HTTP errors.\n * @returns Structured error details.\n */\nfunction extractErrorDetails(error: unknown, response?: Response): ErrorDetails {\n const errMsg = error instanceof Error ? error.message : String(error);\n const errName = error instanceof Error ? error.name : 'Error';\n if (errName === 'TypeError' && errMsg.includes('fetch')) {\n return { type: 'NETWORK_ERROR', reason: 'Network connectivity issue', status: null };\n }\n if (errMsg.includes('HTTP error: 429')) {\n const match = errMsg.match(/RATE_LIMIT: 429:(\\d+)/);\n const retryAfter = match ? parseInt(match[1]) : undefined;\n return { type: 'RATE_LIMIT', reason: 'Rate limit exceeded', status: 429, retryAfter };\n }\n if (errMsg.includes('HTTP error: 401') || errMsg.includes('AUTH_ERROR: 401')) {\n return { type: 'AUTH_ERROR', reason: 'Authentication failed - invalid API key', status: 401 };\n }\n if (errMsg.includes('HTTP error: 403') || errMsg.includes('AUTH_ERROR: 403')) {\n return { type: 'AUTH_ERROR', reason: 'Access forbidden - insufficient permissions', status: 403 };\n }\n if (errMsg.includes('SERVER_ERROR:')) {\n const status = parseInt(errMsg.split('SERVER_ERROR: ')[1]) || 500;\n return { type: 'SERVER_ERROR', reason: `Server error (${status})`, status };\n }\n if (errMsg.includes('CLIENT_ERROR:')) {\n const status = parseInt(errMsg.split('CLIENT_ERROR: ')[1]) || 400;\n return { type: 'CLIENT_ERROR', reason: `Client error (${status})`, status };\n }\n return { type: 'UNKNOWN', reason: errMsg || 'Unknown error', status: null };\n}\n\n/**\n * Fetches a resource with intelligent retry logic for handling transient errors.\n * Features enhanced error logging, rate limit detection, and adaptive backoff.\n *\n * @param url - The URL to fetch.\n * @param options - Optional fetch options.\n * @param retries - The number of retry attempts. Defaults to 3.\n * @param initialBackoff - The initial backoff time in milliseconds. Defaults to 1000.\n * @returns A promise that resolves to the response.\n *\n * @throws Will throw an error if the fetch fails after the specified number of retries.\n */\nexport async function fetchWithRetry(\n url: string,\n options: RequestInit = {},\n retries: number = 3,\n initialBackoff: number = 1000,\n): Promise<Response> {\n let backoff = initialBackoff;\n\n for (let attempt = 1; attempt <= retries; attempt++) {\n try {\n const response = await fetch(url, options);\n if (!response.ok) {\n // Enhanced HTTP error handling with specific error types\n if (response.status === 429) {\n // Check for Retry-After header\n const retryAfter = response.headers.get('Retry-After');\n const retryDelay = retryAfter ? parseInt(retryAfter) * 1000 : null;\n\n throw new Error(`RATE_LIMIT: ${response.status}${retryDelay ? `:${retryDelay}` : ''}`);\n }\n if ([500, 502, 503, 504].includes(response.status)) {\n throw new Error(`SERVER_ERROR: ${response.status}`);\n }\n if ([401, 403].includes(response.status)) {\n throw new Error(`AUTH_ERROR: ${response.status}`);\n }\n if (response.status >= 400 && response.status < 500) {\n // Don't retry most 4xx client errors\n throw new Error(`CLIENT_ERROR: ${response.status}`);\n }\n throw new Error(`HTTP_ERROR: ${response.status}`);\n }\n return response;\n } catch (error) {\n if (attempt === retries) {\n throw error;\n }\n\n // Extract meaningful error information\n const errorDetails = extractErrorDetails(error);\n let adaptiveBackoff = backoff;\n\n // Adaptive backoff based on error type\n if (errorDetails.type === 'RATE_LIMIT') {\n // Use Retry-After header if available, otherwise use minimum 5s for rate limits\n if (errorDetails.retryAfter) {\n adaptiveBackoff = errorDetails.retryAfter;\n } else {\n adaptiveBackoff = Math.max(backoff, 5000);\n }\n } else if (errorDetails.type === 'AUTH_ERROR') {\n // Don't retry auth errors - fail fast\n console.error(`Authentication error for ${hideApiKeyFromurl(url)}: ${errorDetails.reason}`, {\n attemptNumber: attempt,\n errorType: errorDetails.type,\n httpStatus: errorDetails.status,\n url: hideApiKeyFromurl(url),\n source: 'fetchWithRetry',\n timestamp: new Date().toISOString(),\n });\n throw error;\n } else if (errorDetails.type === 'CLIENT_ERROR') {\n // Don't retry client errors (except 429 which is handled above)\n console.error(`Client error for ${hideApiKeyFromurl(url)}: ${errorDetails.reason}`, {\n attemptNumber: attempt,\n errorType: errorDetails.type,\n httpStatus: errorDetails.status,\n url: hideApiKeyFromurl(url),\n source: 'fetchWithRetry',\n timestamp: new Date().toISOString(),\n });\n throw error;\n }\n\n // Enhanced error logging with structured data\n console.warn(\n `Fetch attempt ${attempt} of ${retries} for ${hideApiKeyFromurl(url)} failed: ${\n errorDetails.reason\n }. Retrying in ${adaptiveBackoff}ms...`,\n {\n attemptNumber: attempt,\n totalRetries: retries,\n errorType: errorDetails.type,\n httpStatus: errorDetails.status,\n retryDelay: adaptiveBackoff,\n url: hideApiKeyFromurl(url),\n source: 'fetchWithRetry',\n timestamp: new Date().toISOString(),\n },\n );\n\n await new Promise((resolve) => setTimeout(resolve, adaptiveBackoff));\n backoff = Math.min(backoff * 2, 30000); // Cap at 30 seconds\n }\n }\n throw new Error('Failed to fetch after multiple attempts');\n}\n", "// llm-openai.ts\n\nimport OpenAI from 'openai';\nimport { zodTextFormat } from 'openai/helpers/zod';\nimport type { ZodType } from 'zod';\n\nimport type {\n Tool,\n ResponseInput,\n EasyInputMessage,\n ResponseInputImage,\n ResponseInputText,\n} from 'openai/resources/responses/responses';\n\nimport { calculateCost, DEFAULT_MODEL } from './llm-config';\nimport { parseResponse, normalizeModelName } from './llm-utils';\nimport { isOpenAIModel } from './types';\nimport type {\n LLMResponse,\n LLMOptions,\n LLMModel,\n OpenAIResponseFormat,\n ContextMessage,\n OpenAISchemaInput,\n OpenAIImageInput,\n OpenAIImageDetail,\n} from './types';\nimport type {\n ResponseCreateParamsNonStreaming,\n ResponseOutputItem,\n ResponseFunctionToolCall,\n ResponseCodeInterpreterToolCall,\n ResponseOutputMessage,\n ResponseOutputText,\n ResponseFormatTextJSONSchemaConfig,\n} from 'openai/resources/responses/responses';\n\nexport const DEFAULT_OPTIONS: LLMOptions = {\n model: DEFAULT_MODEL,\n parallel_tool_calls: false,\n};\n\nconst DEFAULT_IMAGE_MIME_TYPE = 'image/webp';\n\n/**\n * Checks if the given direct OpenAI model supports the temperature parameter.\n * @param model The model to check.\n * @returns True if the model supports the temperature parameter, false otherwise.\n */\nexport function supportsTemperature(_model: string): boolean {\n return false;\n}\n\nfunction isZodSchema(schema: OpenAISchemaInput): schema is ZodType {\n return typeof schema === 'object' && schema !== null && 'safeParse' in schema;\n}\n\nfunction buildJsonSchemaFormat(\n schema: OpenAISchemaInput,\n schemaName: string,\n schemaDescription?: string,\n schemaStrict?: boolean\n): ResponseFormatTextJSONSchemaConfig {\n if (isZodSchema(schema)) {\n const zodFormat = zodTextFormat(\n schema,\n schemaName,\n schemaDescription\n ? {\n description: schemaDescription,\n }\n : undefined\n );\n\n return {\n type: 'json_schema',\n name: zodFormat.name,\n schema: zodFormat.schema,\n ...(zodFormat.description ? { description: zodFormat.description } : {}),\n ...(schemaStrict !== undefined ? { strict: schemaStrict } : { strict: zodFormat.strict }),\n };\n }\n\n return {\n type: 'json_schema',\n name: schemaName,\n schema,\n ...(schemaDescription ? { description: schemaDescription } : {}),\n ...(schemaStrict !== undefined ? { strict: schemaStrict } : {}),\n };\n}\n\nfunction resolveOpenAIApiKey(apiKey?: string): string {\n const resolvedApiKey = apiKey || process.env.OPENAI_API_KEY;\n\n if (!resolvedApiKey) {\n throw new Error('OpenAI API key is not provided and OPENAI_API_KEY environment variable is not set');\n }\n\n return resolvedApiKey;\n}\n\nfunction createOpenAIClient(apiKey: string): OpenAI {\n return new OpenAI({\n apiKey,\n });\n}\n\nfunction normalizeImageDataUrl(imageData: string, mimeType = DEFAULT_IMAGE_MIME_TYPE): string {\n return imageData.startsWith('data:') ? imageData : `data:${mimeType};base64,${imageData}`;\n}\n\nfunction getFilenameFromPath(filePath: string): string {\n const normalizedPath = filePath.replace(/\\\\/g, '/');\n const pathSegments = normalizedPath.split('/');\n const filename = pathSegments[pathSegments.length - 1];\n\n if (!filename) {\n throw new Error(`Could not determine a filename from file path: ${filePath}`);\n }\n\n return filename;\n}\n\nfunction inferImageMimeType(filePath: string): string | undefined {\n const normalizedPath = filePath.toLowerCase();\n\n if (normalizedPath.endsWith('.png')) {\n return 'image/png';\n }\n\n if (normalizedPath.endsWith('.jpg') || normalizedPath.endsWith('.jpeg')) {\n return 'image/jpeg';\n }\n\n if (normalizedPath.endsWith('.webp')) {\n return 'image/webp';\n }\n\n if (normalizedPath.endsWith('.gif')) {\n return 'image/gif';\n }\n\n return undefined;\n}\n\nasync function readLocalFileBytes(filePath: string): Promise<Uint8Array> {\n try {\n const dynamicImport = new Function('specifier', 'return import(specifier);') as (\n specifier: string\n ) => Promise<{ readFile: (path: string) => Promise<Uint8Array> }>;\n const { readFile } = await dynamicImport('node:fs/promises');\n\n return await readFile(filePath);\n } catch {\n throw new Error('Local image file uploads require a Node.js runtime with access to node:fs/promises');\n }\n}\n\nasync function uploadVisionFileFromPath(\n openai: OpenAI,\n filePath: string,\n filename?: string,\n mimeType?: string\n): Promise<string> {\n const fileBytes = await readLocalFileBytes(filePath);\n const resolvedFilename = filename || getFilenameFromPath(filePath);\n const resolvedMimeType = mimeType || inferImageMimeType(filePath);\n const uploadableFile = await OpenAI.toFile(\n fileBytes,\n resolvedFilename,\n resolvedMimeType ? { type: resolvedMimeType } : undefined\n );\n\n const uploadedFile = await openai.files.create({\n file: uploadableFile,\n purpose: 'vision',\n });\n\n return uploadedFile.id;\n}\n\nfunction collectImageInputs(\n image: OpenAIImageInput | undefined,\n images: OpenAIImageInput[] | undefined,\n imageBase64: string | undefined\n): OpenAIImageInput[] {\n const collectedImages: OpenAIImageInput[] = [];\n\n if (image) {\n collectedImages.push(image);\n }\n\n if (images && images.length > 0) {\n collectedImages.push(...images);\n }\n\n if (imageBase64) {\n collectedImages.push({ base64: imageBase64 });\n }\n\n return collectedImages;\n}\n\nfunction hasLocalFileImage(images: OpenAIImageInput[]): boolean {\n return images.some((image) => 'filePath' in image);\n}\n\nasync function buildImageContentPart(\n image: OpenAIImageInput,\n defaultDetail: OpenAIImageDetail,\n openai?: OpenAI\n): Promise<ResponseInputImage> {\n const detail = image.detail ?? defaultDetail;\n\n if ('url' in image) {\n return {\n type: 'input_image',\n detail,\n image_url: image.url,\n };\n }\n\n if ('dataUrl' in image) {\n return {\n type: 'input_image',\n detail,\n image_url: image.dataUrl,\n };\n }\n\n if ('base64' in image) {\n return {\n type: 'input_image',\n detail,\n image_url: normalizeImageDataUrl(image.base64, image.mimeType),\n };\n }\n\n if ('fileId' in image) {\n return {\n type: 'input_image',\n detail,\n file_id: image.fileId,\n };\n }\n\n if (!openai) {\n throw new Error('A local image file path was provided, but no OpenAI client is available to upload it');\n }\n\n const fileId = await uploadVisionFileFromPath(openai, image.filePath, image.filename, image.mimeType);\n return {\n type: 'input_image',\n detail,\n file_id: fileId,\n };\n}\n\nasync function buildPromptContent(\n input: string,\n imageInputs: OpenAIImageInput[],\n imageDetail: OpenAIImageDetail,\n openai?: OpenAI\n): Promise<string | Array<ResponseInputText | ResponseInputImage>> {\n if (imageInputs.length === 0) {\n return input;\n }\n\n const imageContent = await Promise.all(imageInputs.map((image) => buildImageContentPart(image, imageDetail, openai)));\n\n return [{ type: 'input_text', text: input }, ...imageContent];\n}\n\nexport async function uploadVisionFile(\n filePath: string,\n options: {\n apiKey?: string;\n filename?: string;\n mimeType?: string;\n } = {}\n): Promise<string> {\n const resolvedApiKey = resolveOpenAIApiKey(options.apiKey);\n const openai = createOpenAIClient(resolvedApiKey);\n\n return await uploadVisionFileFromPath(openai, filePath, options.filename, options.mimeType);\n}\n\n/**\n * Makes a call to OpenAI's Responses API for more advanced use cases with built-in tools.\n *\n * This function provides access to the Responses API which supports:\n * - Built-in tools (web search, file search, computer use, code interpreter, image generation)\n * - Background processing\n * - Conversation state management\n * - GPT-5 reasoning controls\n *\n * @example\n * // Basic text response\n * const response = await makeResponsesAPICall('What is the weather like?');\n *\n * @example\n * // With web search tool\n * const response = await makeResponsesAPICall('Latest news about AI', {\n * tools: [{ type: 'web_search_preview' }]\n * });\n *\n * @param input - The input content. Can be:\n * - A string for simple text prompts\n * - An array of input items for complex/multi-modal content\n * @param options - Configuration options for the Responses API\n * @returns Promise<LLMResponse<T>> - The response in the same format as makeLLMCall\n * @throws Error if the API call fails\n */\nexport const makeResponsesAPICall = async <T = string>(\n input: string | ResponseCreateParamsNonStreaming['input'],\n options: Omit<ResponseCreateParamsNonStreaming, 'input' | 'model'> & {\n apiKey?: string;\n model?: string;\n } = {}\n): Promise<LLMResponse<T>> => {\n const normalizedModel = normalizeModelName(options.model || DEFAULT_MODEL);\n if (!isOpenAIModel(normalizedModel)) {\n throw new Error(`Unsupported OpenAI model: ${normalizedModel}. Please use a supported GPT-5 model.`);\n }\n\n const apiKey = resolveOpenAIApiKey(options.apiKey);\n const openai = createOpenAIClient(apiKey);\n\n // Remove apiKey from options before creating request body\n const { apiKey: _, model: __, ...cleanOptions } = options;\n\n const requestBody: ResponseCreateParamsNonStreaming = {\n model: normalizedModel,\n input,\n ...cleanOptions,\n };\n\n // Make the API call to the Responses endpoint\n const response = await openai.responses.create(requestBody);\n const cacheHitTokens = response.usage?.input_tokens_details?.cached_tokens || 0;\n const cacheWriteTokens = response.usage?.input_tokens_details?.cache_write_tokens || 0;\n\n // Extract tool calls from the output\n const toolCalls = response.output\n ?.filter((item: ResponseOutputItem): item is ResponseFunctionToolCall => item.type === 'function_call')\n .map((toolCall: ResponseFunctionToolCall) => ({\n id: toolCall.call_id,\n type: 'function' as const,\n function: {\n name: toolCall.name,\n arguments: toolCall.arguments,\n },\n }));\n\n // Extract code interpreter outputs if present\n const codeInterpreterCalls = response.output?.filter(\n (item: ResponseOutputItem): item is ResponseCodeInterpreterToolCall => item.type === 'code_interpreter_call'\n );\n let codeInterpreterOutputs: ResponseCodeInterpreterToolCall['outputs'] | undefined = undefined;\n if (codeInterpreterCalls && codeInterpreterCalls.length > 0) {\n // Each code_interpreter_call has an 'outputs' array property\n codeInterpreterOutputs = codeInterpreterCalls.flatMap((ci) => {\n // Return outputs if present, otherwise empty array\n if (ci.outputs) return ci.outputs;\n return [];\n });\n }\n\n // Handle tool calls differently\n if (toolCalls && toolCalls.length > 0) {\n return {\n response: {\n tool_calls: toolCalls.map((tc) => ({\n id: tc.id,\n name: tc.function.name,\n arguments: JSON.parse(tc.function.arguments),\n })),\n } as T,\n usage: {\n prompt_tokens: response.usage?.input_tokens || 0,\n completion_tokens: response.usage?.output_tokens || 0,\n reasoning_tokens: response.usage?.output_tokens_details?.reasoning_tokens || 0,\n provider: 'openai',\n model: normalizedModel,\n cache_hit_tokens: cacheHitTokens,\n cache_write_tokens: cacheWriteTokens,\n cost: calculateCost(\n 'openai',\n normalizedModel,\n response.usage?.input_tokens || 0,\n response.usage?.output_tokens || 0,\n response.usage?.output_tokens_details?.reasoning_tokens || 0,\n cacheHitTokens,\n cacheWriteTokens\n ),\n },\n tool_calls: toolCalls,\n ...(codeInterpreterOutputs ? { code_interpreter_outputs: codeInterpreterOutputs } : {}),\n };\n }\n\n // Extract text content from the response output\n const textContent =\n response.output\n ?.filter((item: ResponseOutputItem): item is ResponseOutputMessage => item.type === 'message')\n .map((item: ResponseOutputMessage) =>\n item.content\n .filter((content): content is ResponseOutputText => content.type === 'output_text')\n .map((content) => content.text)\n .join('')\n )\n .join('') || '';\n\n // Determine the format for parsing the response\n let parsingFormat: OpenAIResponseFormat = 'text';\n const requestedFormat = requestBody.text?.format;\n if (requestedFormat?.type === 'json_object') {\n parsingFormat = 'json';\n } else if (requestedFormat?.type === 'json_schema') {\n parsingFormat = requestedFormat;\n }\n\n // Handle regular responses\n const parsedResponse = await parseResponse<T>(textContent, parsingFormat);\n if (parsedResponse === null) {\n throw new Error('Failed to parse response from Responses API');\n }\n\n return {\n response: parsedResponse,\n usage: {\n prompt_tokens: response.usage?.input_tokens || 0,\n completion_tokens: response.usage?.output_tokens || 0,\n reasoning_tokens: response.usage?.output_tokens_details?.reasoning_tokens || 0,\n provider: 'openai',\n model: normalizedModel,\n cache_hit_tokens: cacheHitTokens,\n cache_write_tokens: cacheWriteTokens,\n cost: calculateCost(\n 'openai',\n normalizedModel,\n response.usage?.input_tokens || 0,\n response.usage?.output_tokens || 0,\n response.usage?.output_tokens_details?.reasoning_tokens || 0,\n cacheHitTokens,\n cacheWriteTokens\n ),\n },\n tool_calls: toolCalls,\n ...(codeInterpreterOutputs ? { code_interpreter_outputs: codeInterpreterOutputs } : {}),\n };\n};\n\n/**\n * Makes a call to the OpenAI Responses API for advanced use cases with built-in tools.\n *\n * @param input The text prompt to send to the model (e.g., \"What's in this image?\")\n * @param options The options for the Responses API call, including optional image data and context.\n * @return A promise that resolves to the response from the Responses API.\n *\n * @example\n * // With conversation context\n * const response = await makeLLMCall(\"What did I ask about earlier?\", {\n * context: [\n * { role: 'user', content: 'What is the capital of France?' },\n * { role: 'assistant', content: 'The capital of France is Paris.' }\n * ]\n * });\n */\nexport async function makeLLMCall<T = string>(\n input: string,\n options: {\n apiKey?: string;\n model?: LLMModel;\n responseFormat?: OpenAIResponseFormat;\n schema?: OpenAISchemaInput;\n schemaName?: string;\n schemaDescription?: string;\n schemaStrict?: boolean;\n tools?: Tool[];\n useCodeInterpreter?: boolean;\n useWebSearch?: boolean;\n image?: OpenAIImageInput;\n images?: OpenAIImageInput[];\n imageBase64?: string;\n imageDetail?: OpenAIImageDetail;\n context?: ContextMessage[];\n reasoningEffort?: LLMOptions['reasoning_effort'];\n reasoningMode?: LLMOptions['reasoning_mode'];\n reasoningContext?: LLMOptions['reasoning_context'];\n } = {}\n): Promise<LLMResponse<T>> {\n const {\n apiKey,\n model = DEFAULT_MODEL,\n responseFormat = 'text',\n schema,\n schemaName = 'response',\n schemaDescription,\n schemaStrict,\n tools,\n useCodeInterpreter = false,\n useWebSearch = false,\n image,\n images,\n imageBase64,\n imageDetail = 'high',\n context,\n reasoningEffort,\n reasoningMode,\n reasoningContext,\n } = options;\n\n // Validate model\n const normalizedModel = normalizeModelName(model);\n if (!isOpenAIModel(normalizedModel)) {\n throw new Error(`Unsupported OpenAI model: ${normalizedModel}. Please use a supported GPT-5 model.`);\n }\n\n const resolvedApiKey = resolveOpenAIApiKey(apiKey);\n const imageInputs = collectImageInputs(image, images, imageBase64);\n const openai = hasLocalFileImage(imageInputs) ? createOpenAIClient(resolvedApiKey) : undefined;\n const promptContent = await buildPromptContent(input, imageInputs, imageDetail, openai);\n\n // Process input for conversation context and image analysis\n let processedInput: string | ResponseInput;\n\n if (context && context.length > 0) {\n // Build conversation array with context\n const conversationMessages: EasyInputMessage[] = [];\n\n // Add context messages\n for (const contextMsg of context) {\n conversationMessages.push({\n role: contextMsg.role,\n content: contextMsg.content,\n type: 'message',\n });\n }\n\n // Add current input message\n if (imageInputs.length > 0) {\n // Current message includes text and one or more images\n conversationMessages.push({\n role: 'user',\n content: promptContent,\n type: 'message',\n });\n } else {\n // Current message is just text\n conversationMessages.push({\n role: 'user',\n content: input,\n type: 'message',\n });\n }\n\n processedInput = conversationMessages;\n } else if (imageInputs.length > 0) {\n // No context, but has image(s)\n processedInput = [\n {\n role: 'user',\n content: promptContent,\n type: 'message',\n },\n ];\n } else {\n // No context, no image - simple string input\n processedInput = input;\n }\n\n // Build the options object for makeResponsesAPICall\n let responsesOptions: Parameters<typeof makeResponsesAPICall>[1] = {\n apiKey: resolvedApiKey,\n model: normalizedModel,\n parallel_tool_calls: false,\n tools,\n };\n\n // Only include temperature if the model supports it\n if (supportsTemperature(normalizedModel)) {\n responsesOptions.temperature = 0.2;\n }\n\n if (reasoningEffort || reasoningMode || reasoningContext) {\n responsesOptions.reasoning = {\n ...(reasoningEffort ? { effort: reasoningEffort } : {}),\n ...(reasoningMode ? { mode: reasoningMode } : {}),\n ...(reasoningContext ? { context: reasoningContext } : {}),\n };\n }\n\n // Configure response format\n if (schema) {\n responsesOptions.text = {\n format: buildJsonSchemaFormat(schema, schemaName, schemaDescription, schemaStrict),\n };\n } else if (responseFormat === 'json') {\n responsesOptions.text = { format: { type: 'json_object' } };\n } else if (typeof responseFormat === 'object' && responseFormat.type === 'json_schema') {\n responsesOptions.text = { format: responseFormat };\n }\n\n // Configure built-in tools\n if (useCodeInterpreter) {\n responsesOptions.tools = [{ type: 'code_interpreter', container: { type: 'auto' } }];\n responsesOptions.include = ['code_interpreter_call.outputs'];\n }\n\n if (useWebSearch) {\n responsesOptions.tools = [{ type: 'web_search_preview' }];\n }\n\n return await makeResponsesAPICall<T>(processedInput, responsesOptions);\n}\n", "// llm-openai-config.ts\nimport type { ImageGenerateParams } from 'openai/resources/images';\nimport type { OpenAIImageModel, OpenAIModel } from './types/llm-types';\n\nexport const DEFAULT_MODEL: OpenAIModel = 'gpt-5.6-luna';\n\nexport const DEFAULT_DEVELOPER_PROMPT = `\n You are a highly experienced coding, business analyst, and financial analyst associate.\n Help with coding, business process design and analysis, data generation and refinement, content creation, financial analysis, and more.\n When presented with a coding problem, logic problem, or other problem benefiting from systematic thinking, think through it step by step before giving your final answer.\n Present complete, high-confidence, final answers only. Do not rephrase to be more brief or omit parts of answers.\n Respond only with final content (e.g. code, a json or yaml object, a formatted string, or a markdown document) and nothing else. Do not reply with a preamble, introduction, or conclusion.\n`;\n\ninterface AIModelCosts {\n [modelName: string]: {\n inputCost: number;\n outputCost: number;\n cacheHitCost?: number;\n cacheWriteCost?: number;\n };\n}\n\nconst GPT_5_HIGH_CONTEXT_THRESHOLD_TOKENS = 272_000;\nconst GPT_5_HIGH_CONTEXT_INPUT_MULTIPLIER = 2;\nconst GPT_5_HIGH_CONTEXT_OUTPUT_MULTIPLIER = 1.5;\n\n/** Token costs in USD per 1M tokens. Last updated July 2026 from the OpenAI API pricing page. */\nexport const openAiModelCosts: AIModelCosts = {\n 'gpt-5.6': {\n inputCost: 5 / 1_000_000,\n cacheHitCost: 0.5 / 1_000_000,\n cacheWriteCost: 6.25 / 1_000_000,\n outputCost: 30 / 1_000_000,\n },\n 'gpt-5.6-sol': {\n inputCost: 5 / 1_000_000,\n cacheHitCost: 0.5 / 1_000_000,\n cacheWriteCost: 6.25 / 1_000_000,\n outputCost: 30 / 1_000_000,\n },\n 'gpt-5.6-terra': {\n inputCost: 2.5 / 1_000_000,\n cacheHitCost: 0.25 / 1_000_000,\n cacheWriteCost: 3.125 / 1_000_000,\n outputCost: 15 / 1_000_000,\n },\n 'gpt-5.6-luna': {\n inputCost: 1 / 1_000_000,\n cacheHitCost: 0.1 / 1_000_000,\n cacheWriteCost: 1.25 / 1_000_000,\n outputCost: 6 / 1_000_000,\n },\n 'gpt-5': {\n inputCost: 1.25 / 1_000_000,\n cacheHitCost: 0.125 / 1_000_000,\n outputCost: 10 / 1_000_000,\n },\n 'gpt-5-mini': {\n inputCost: 0.25 / 1_000_000,\n cacheHitCost: 0.025 / 1_000_000,\n outputCost: 2 / 1_000_000,\n },\n 'gpt-5.4-mini': {\n inputCost: 0.75 / 1_000_000,\n cacheHitCost: 0.075 / 1_000_000,\n outputCost: 4.5 / 1_000_000,\n },\n 'gpt-5.4-nano': {\n inputCost: 0.2 / 1_000_000,\n cacheHitCost: 0.02 / 1_000_000,\n outputCost: 1.25 / 1_000_000,\n },\n 'gpt-5-nano': {\n inputCost: 0.05 / 1_000_000,\n cacheHitCost: 0.005 / 1_000_000,\n outputCost: 0.4 / 1_000_000,\n },\n 'gpt-5.1': {\n inputCost: 1.25 / 1_000_000,\n cacheHitCost: 0.125 / 1_000_000,\n outputCost: 10 / 1_000_000,\n },\n 'gpt-5.4': {\n inputCost: 2.5 / 1_000_000,\n cacheHitCost: 0.25 / 1_000_000,\n outputCost: 15 / 1_000_000,\n },\n 'gpt-5.5': {\n inputCost: 5 / 1_000_000,\n cacheHitCost: 0.5 / 1_000_000,\n outputCost: 30 / 1_000_000,\n },\n 'gpt-5.5-pro': {\n inputCost: 30 / 1_000_000,\n outputCost: 180 / 1_000_000,\n },\n 'gpt-5.2': {\n inputCost: 1.75 / 1_000_000,\n cacheHitCost: 0.175 / 1_000_000,\n outputCost: 14 / 1_000_000,\n },\n 'gpt-5.2-pro': {\n inputCost: 21 / 1_000_000,\n outputCost: 168 / 1_000_000,\n },\n 'gpt-5.1-codex': {\n inputCost: 1.25 / 1_000_000,\n cacheHitCost: 0.125 / 1_000_000,\n outputCost: 10 / 1_000_000,\n },\n 'gpt-5.1-codex-max': {\n inputCost: 1.25 / 1_000_000,\n cacheHitCost: 0.125 / 1_000_000,\n outputCost: 10 / 1_000_000,\n },\n};\n\nexport const deepseekModelCosts: AIModelCosts = {\n 'deepseek-chat': {\n inputCost: 0.27 / 1_000_000, // $0.27 per 1M tokens (Cache miss price)\n cacheHitCost: 0.07 / 1_000_000, // $0.07 per 1M tokens (Cache hit price)\n outputCost: 1.1 / 1_000_000, // $1.10 per 1M tokens\n },\n 'deepseek-reasoner': {\n inputCost: 0.55 / 1_000_000, // $0.55 per 1M tokens (Cache miss price)\n cacheHitCost: 0.14 / 1_000_000, // $0.14 per 1M tokens (Cache hit price)\n outputCost: 2.19 / 1_000_000, // $2.19 per 1M tokens\n },\n};\n\nfunction shouldUseGPT5HighContextPricing(model: string, inputTokens: number): boolean {\n return (\n (model === 'gpt-5.4' || model === 'gpt-5.5' || model === 'gpt-5.6' || model === 'gpt-5.6-sol' || model === 'gpt-5.6-terra' || model === 'gpt-5.6-luna') &&\n inputTokens > GPT_5_HIGH_CONTEXT_THRESHOLD_TOKENS\n );\n}\n\nexport type PricedOpenAIImageModel =\n | 'gpt-image-2'\n | 'gpt-image-2-2026-04-21'\n | 'gpt-image-1.5'\n | 'gpt-image-1'\n | 'gpt-image-1-mini';\nexport type OpenAIImagePricingQuality = 'low' | 'medium' | 'high';\nexport type OpenAIImagePricingSize = '1024x1024' | '1024x1536' | '1536x1024';\n\nexport const DEFAULT_IMAGE_PRICING_QUALITY: OpenAIImagePricingQuality = 'high';\nexport const DEFAULT_IMAGE_PRICING_SIZE: OpenAIImagePricingSize = '1024x1024';\n\nconst PRICED_OPENAI_IMAGE_MODELS: readonly PricedOpenAIImageModel[] = [\n 'gpt-image-2',\n 'gpt-image-2-2026-04-21',\n 'gpt-image-1.5',\n 'gpt-image-1',\n 'gpt-image-1-mini',\n];\nconst OPENAI_IMAGE_PRICING_SIZES: readonly OpenAIImagePricingSize[] = ['1024x1024', '1024x1536', '1536x1024'];\n\n/**\n * Estimated image output costs in USD per image for common GPT Image sizes.\n * Last updated May 2026 from the OpenAI image generation guide. Text and image\n * input token costs for prompts and edit inputs are not included.\n */\nexport const openAiImageCostByQualityAndSize: Record<\n PricedOpenAIImageModel,\n Record<OpenAIImagePricingQuality, Record<OpenAIImagePricingSize, number>>\n> = {\n 'gpt-image-2': {\n low: {\n '1024x1024': 0.006,\n '1024x1536': 0.005,\n '1536x1024': 0.005,\n },\n medium: {\n '1024x1024': 0.053,\n '1024x1536': 0.041,\n '1536x1024': 0.041,\n },\n high: {\n '1024x1024': 0.211,\n '1024x1536': 0.165,\n '1536x1024': 0.165,\n },\n },\n 'gpt-image-2-2026-04-21': {\n low: {\n '1024x1024': 0.006,\n '1024x1536': 0.005,\n '1536x1024': 0.005,\n },\n medium: {\n '1024x1024': 0.053,\n '1024x1536': 0.041,\n '1536x1024': 0.041,\n },\n high: {\n '1024x1024': 0.211,\n '1024x1536': 0.165,\n '1536x1024': 0.165,\n },\n },\n 'gpt-image-1.5': {\n low: {\n '1024x1024': 0.009,\n '1024x1536': 0.013,\n '1536x1024': 0.013,\n },\n medium: {\n '1024x1024': 0.034,\n '1024x1536': 0.05,\n '1536x1024': 0.05,\n },\n high: {\n '1024x1024': 0.133,\n '1024x1536': 0.2,\n '1536x1024': 0.2,\n },\n },\n 'gpt-image-1': {\n low: {\n '1024x1024': 0.011,\n '1024x1536': 0.016,\n '1536x1024': 0.016,\n },\n medium: {\n '1024x1024': 0.042,\n '1024x1536': 0.063,\n '1536x1024': 0.063,\n },\n high: {\n '1024x1024': 0.167,\n '1024x1536': 0.25,\n '1536x1024': 0.25,\n },\n },\n 'gpt-image-1-mini': {\n low: {\n '1024x1024': 0.005,\n '1024x1536': 0.006,\n '1536x1024': 0.006,\n },\n medium: {\n '1024x1024': 0.011,\n '1024x1536': 0.015,\n '1536x1024': 0.015,\n },\n high: {\n '1024x1024': 0.036,\n '1024x1536': 0.052,\n '1536x1024': 0.052,\n },\n },\n};\n\n/** Default image output costs in USD per image for legacy callers. */\nexport const openAiImageCosts: Record<PricedOpenAIImageModel, number> = {\n 'gpt-image-2':\n openAiImageCostByQualityAndSize['gpt-image-2'][DEFAULT_IMAGE_PRICING_QUALITY][DEFAULT_IMAGE_PRICING_SIZE],\n 'gpt-image-2-2026-04-21':\n openAiImageCostByQualityAndSize['gpt-image-2-2026-04-21'][DEFAULT_IMAGE_PRICING_QUALITY][\n DEFAULT_IMAGE_PRICING_SIZE\n ],\n 'gpt-image-1.5':\n openAiImageCostByQualityAndSize['gpt-image-1.5'][DEFAULT_IMAGE_PRICING_QUALITY][DEFAULT_IMAGE_PRICING_SIZE],\n 'gpt-image-1':\n openAiImageCostByQualityAndSize['gpt-image-1'][DEFAULT_IMAGE_PRICING_QUALITY][DEFAULT_IMAGE_PRICING_SIZE],\n 'gpt-image-1-mini':\n openAiImageCostByQualityAndSize['gpt-image-1-mini'][DEFAULT_IMAGE_PRICING_QUALITY][DEFAULT_IMAGE_PRICING_SIZE],\n};\n\nfunction isPricedOpenAIImageModel(model: string): model is PricedOpenAIImageModel {\n return PRICED_OPENAI_IMAGE_MODELS.includes(model as PricedOpenAIImageModel);\n}\n\nfunction isOpenAIImagePricingSize(size: string): size is OpenAIImagePricingSize {\n return OPENAI_IMAGE_PRICING_SIZES.includes(size as OpenAIImagePricingSize);\n}\n\nfunction resolveImagePricingQuality(quality?: ImageGenerateParams['quality']): OpenAIImagePricingQuality {\n if (quality === 'low' || quality === 'medium' || quality === 'high') {\n return quality;\n }\n\n return DEFAULT_IMAGE_PRICING_QUALITY;\n}\n\nfunction resolveImagePricingSize(size?: ImageGenerateParams['size']): OpenAIImagePricingSize {\n if (typeof size === 'string' && isOpenAIImagePricingSize(size)) {\n return size;\n }\n\n return DEFAULT_IMAGE_PRICING_SIZE;\n}\n\n/**\n * Calculates the cost of generating images using OpenAI's Images API.\n *\n * @param model The image generation model name.\n * @param imageCount The number of images generated.\n * @param quality The requested image quality.\n * @param size The requested image size.\n * @returns The cost of generating the images in USD.\n */\nexport function calculateImageCost(\n model: OpenAIImageModel | string,\n imageCount: number,\n quality?: ImageGenerateParams['quality'],\n size?: ImageGenerateParams['size']\n): number {\n if (typeof model !== 'string' || typeof imageCount !== 'number' || imageCount <= 0) {\n return 0;\n }\n\n if (!isPricedOpenAIImageModel(model)) return 0;\n\n const pricingQuality = resolveImagePricingQuality(quality);\n const pricingSize = resolveImagePricingSize(size);\n const costPerImage = openAiImageCostByQualityAndSize[model][pricingQuality][pricingSize];\n\n return imageCount * costPerImage;\n}\n\n/**\n * Calculates the cost of calling a language model in USD based on the provider and model, tokens, and given costs per 1M tokens.\n *\n * @param provider The provider of the language model. Supported providers are 'openai' and 'deepseek'.\n * @param model The name of the language model. Supported models are listed in the `openAiModelCosts` and `deepseekModelCosts` objects.\n * @param inputTokens The number of input tokens passed to the language model.\n * @param outputTokens The number of output tokens generated by the language model.\n * @param reasoningTokens The number of output tokens generated by the language model for reasoning.\n * @param cacheHitTokens The number of input tokens billed at cached-input rates.\n * @param cacheWriteTokens The number of input tokens billed at cache-write rates.\n * @returns The cost of calling the language model in USD.\n */\nexport function calculateCost(\n provider: string,\n model: string,\n inputTokens: number,\n outputTokens: number,\n reasoningTokens?: number,\n cacheHitTokens?: number,\n cacheWriteTokens?: number\n): number {\n if (\n typeof provider !== 'string' ||\n typeof model !== 'string' ||\n typeof inputTokens !== 'number' ||\n typeof outputTokens !== 'number' ||\n (reasoningTokens !== undefined && typeof reasoningTokens !== 'number') ||\n (cacheHitTokens !== undefined && typeof cacheHitTokens !== 'number') ||\n (cacheWriteTokens !== undefined && typeof cacheWriteTokens !== 'number')\n ) {\n return 0;\n }\n\n const modelCosts = provider === 'deepseek' ? deepseekModelCosts[model] : openAiModelCosts[model];\n\n if (!modelCosts) return 0;\n\n const boundedCacheHitTokens = Math.min(Math.max(cacheHitTokens || 0, 0), inputTokens);\n const boundedCacheWriteTokens = Math.min(Math.max(cacheWriteTokens || 0, 0), inputTokens - boundedCacheHitTokens);\n const uncachedInputTokens = inputTokens - boundedCacheHitTokens - boundedCacheWriteTokens;\n const inputCost =\n uncachedInputTokens * modelCosts.inputCost +\n boundedCacheHitTokens * (modelCosts.cacheHitCost || modelCosts.inputCost) +\n boundedCacheWriteTokens * (modelCosts.cacheWriteCost || modelCosts.inputCost);\n\n let outputCost = outputTokens * modelCosts.outputCost;\n let reasoningCost = (reasoningTokens || 0) * modelCosts.outputCost;\n\n if (provider === 'openai' && shouldUseGPT5HighContextPricing(model, inputTokens)) {\n return (\n inputCost * GPT_5_HIGH_CONTEXT_INPUT_MULTIPLIER +\n outputCost * GPT_5_HIGH_CONTEXT_OUTPUT_MULTIPLIER +\n reasoningCost * GPT_5_HIGH_CONTEXT_OUTPUT_MULTIPLIER\n );\n }\n\n return inputCost + outputCost + reasoningCost;\n}\n", "import OpenAI from 'openai';\nimport { DEFAULT_MODEL } from './llm-config';\n/**\n * Fix a broken JSON string by attempting to extract and parse valid JSON content. This function is very lenient and will attempt to fix many types of JSON errors, including unbalanced brackets, missing or extra commas, improperly escaped $ signs, unquoted strings, trailing commas, missing closing brackets or braces, etc.\n * @param {string} jsonStr - The broken JSON string to fix\n * @returns {JsonValue} - The parsed JSON value\n */\nexport function fixBrokenJson(jsonStr: string): JsonValue {\n // Pre-process: Fix improperly escaped $ signs\n jsonStr = jsonStr.replace(/\\\\\\$/g, '$');\n\n let index = 0;\n\n function parse(): JsonValue {\n const results: JsonValue[] = [];\n while (index < jsonStr.length) {\n skipWhitespace();\n const value = parseValue();\n if (value !== undefined) {\n results.push(value);\n } else {\n index++; // Skip invalid character\n }\n }\n return results.length === 1 ? results[0] : results;\n }\n\n function parseValue(): JsonValue | undefined {\n skipWhitespace();\n const char = getChar();\n if (!char) return undefined;\n if (char === '{') return parseObject();\n if (char === '[') return parseArray();\n if (char === '\"' || char === \"'\") return parseString();\n if (char === 't' && jsonStr.slice(index, index + 4).toLowerCase() === 'true') {\n index += 4;\n return true;\n }\n if (char === 'f' && jsonStr.slice(index, index + 5).toLowerCase() === 'false') {\n index += 5;\n return false;\n }\n if (char === 'n' && jsonStr.slice(index, index + 4).toLowerCase() === 'null') {\n index += 4;\n return null;\n }\n if (/[a-zA-Z]/.test(char)) return parseString(); // Unquoted string\n if (char === '-' || char === '.' || /\\d/.test(char)) return parseNumber();\n return undefined; // Unknown character\n }\n\n function parseObject(): JsonObject {\n const obj: JsonObject = {};\n index++; // Skip opening brace\n skipWhitespace();\n while (index < jsonStr.length && getChar() !== '}') {\n skipWhitespace();\n const key = parseString();\n if (key === undefined) {\n console.warn(`Expected key at position ${index}`);\n index++;\n continue;\n }\n skipWhitespace();\n if (getChar() === ':') {\n index++; // Skip colon\n } else {\n console.warn(`Missing colon after key \"${key}\" at position ${index}`);\n }\n skipWhitespace();\n const value = parseValue();\n if (value === undefined) {\n console.warn(`Expected value for key \"${key}\" at position ${index}`);\n index++;\n continue;\n }\n obj[key] = value;\n skipWhitespace();\n if (getChar() === ',') {\n index++; // Skip comma\n } else {\n break;\n }\n skipWhitespace();\n }\n if (getChar() === '}') {\n index++; // Skip closing brace\n } else {\n // Add a closing brace if it's missing\n jsonStr += '}';\n }\n return obj;\n }\n\n function parseArray(): JsonArray {\n const arr: JsonArray = [];\n index++; // Skip opening bracket\n skipWhitespace();\n while (index < jsonStr.length && getChar() !== ']') {\n const value = parseValue();\n if (value === undefined) {\n console.warn(`Expected value at position ${index}`);\n index++;\n } else {\n arr.push(value);\n }\n skipWhitespace();\n if (getChar() === ',') {\n index++; // Skip comma\n } else {\n break;\n }\n skipWhitespace();\n }\n if (getChar() === ']') {\n index++; // Skip closing bracket\n } else {\n console.warn(`Missing closing bracket for array at position ${index}`);\n }\n return arr;\n }\n\n function parseString(): string {\n const startChar = getChar();\n let result = '';\n let isQuoted = false;\n let delimiter = '';\n\n if (startChar === '\"' || startChar === \"'\") {\n isQuoted = true;\n delimiter = startChar;\n index++; // Skip opening quote\n }\n\n while (index < jsonStr.length) {\n const char = getChar();\n if (isQuoted) {\n if (char === delimiter) {\n index++; // Skip closing quote\n return result;\n } else if (char === '\\\\') {\n index++;\n const escapeChar = getChar();\n const escapeSequences: { [key: string]: string } = {\n n: '\\n',\n r: '\\r',\n t: '\\t',\n b: '\\b',\n f: '\\f',\n '\\\\': '\\\\',\n '/': '/',\n '\"': '\"',\n \"'\": \"'\",\n $: '$',\n };\n result += escapeSequences[escapeChar] || escapeChar;\n } else {\n result += char;\n }\n index++;\n } else {\n if (/\\s|,|}|]|\\:/.test(char)) {\n return result;\n } else {\n result += char;\n index++;\n }\n }\n }\n if (isQuoted) {\n console.warn(`Missing closing quote for string starting at position ${index}`);\n }\n return result;\n }\n\n function parseNumber(): number | undefined {\n const numberRegex = /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?/;\n const match = numberRegex.exec(jsonStr.slice(index));\n if (match) {\n index += match[0].length;\n return parseFloat(match[0]);\n } else {\n console.warn(`Invalid number at position ${index}`);\n index++;\n return undefined;\n }\n }\n\n function getChar(): string {\n return jsonStr[index];\n }\n\n function skipWhitespace(): void {\n while (/\\s/.test(getChar())) index++;\n }\n\n try {\n return parse();\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error(`Error parsing JSON at position ${index}: ${msg}`);\n return null;\n }\n}\n\n/**\n * Returns true if the given JSON string is valid, false otherwise.\n *\n * This function simply attempts to parse the given string as JSON and returns true if successful, or false if an error is thrown.\n *\n * @param {string} jsonString The JSON string to validate.\n * @returns {boolean} True if the JSON string is valid, false otherwise.\n */\nexport function isValidJson(jsonString: string): boolean {\n try {\n JSON.parse(jsonString);\n return true;\n } catch {\n return false;\n }\n}\n\n// Types just for fixing JSON with AI\ninterface JsonObject {\n [key: string]: JsonValue;\n}\ntype JsonArray = JsonValue[];\ntype JsonValue = string | number | boolean | null | JsonObject | JsonArray;\n\nlet openai: OpenAI;\n\n/**\n * Initializes an instance of the OpenAI client, using the provided API key or the value of the OPENAI_API_KEY environment variable if no key is provided.\n * @param apiKey - the API key to use, or undefined to use the value of the OPENAI_API_KEY environment variable\n * @returns an instance of the OpenAI client\n * @throws an error if the API key is not provided and the OPENAI_API_KEY environment variable is not set\n */\nfunction initializeOpenAI(apiKey?: string): OpenAI {\n const key = apiKey || process.env.OPENAI_API_KEY;\n if (!key) {\n throw new Error('OpenAI API key is not provided and OPENAI_API_KEY environment variable is not set');\n }\n return new OpenAI({\n apiKey: key,\n defaultHeaders: { 'User-Agent': 'My Server-side Application (compatible; OpenAI API Client)' },\n });\n}\n\n/**\n * Fixes broken JSON by sending it to OpenAI to fix it.\n * If the model fails to return valid JSON, an error is thrown.\n * @param jsonStr - the broken JSON to fix\n * @param apiKey - the OpenAI API key to use, or undefined to use the value of the OPENAI_API_KEY environment variable\n * @returns the fixed JSON\n * @throws an error if the model fails to return valid JSON\n */\nexport async function fixJsonWithAI(jsonStr: string, apiKey?: string): Promise<JsonValue> {\n try {\n if (!openai) {\n openai = initializeOpenAI();\n }\n\n const completion = await openai.chat.completions.create({\n model: DEFAULT_MODEL,\n messages: [\n {\n role: 'system',\n content: 'You are a JSON fixer. Return only valid JSON without any additional text or explanation.',\n },\n {\n role: 'user',\n content: `Fix this broken JSON:\\n${jsonStr}`,\n },\n ],\n response_format: { type: 'json_object' },\n });\n\n const fixedJson = completion.choices[0]?.message?.content;\n\n if (fixedJson && isValidJson(fixedJson)) {\n return JSON.parse(fixedJson);\n }\n throw new Error('Failed to fix JSON with AI');\n } catch (err: unknown) {\n const errorMessage = err instanceof Error ? err.message : 'Unknown error occurred';\n throw new Error(`Error fixing JSON with AI: ${errorMessage}`);\n }\n}\n", "// llm-utils.ts\n\nimport { LLMModel, OpenAIModel, OpenAIResponseFormat } from './types';\nimport { fixBrokenJson, fixJsonWithAI } from './json-tools';\n\nexport function normalizeModelName(model: string): LLMModel {\n return model.replace(/_/g, '-').toLowerCase() as LLMModel;\n}\n\nexport const CODE_BLOCK_TYPES = ['javascript', 'js', 'graphql', 'json', 'typescript', 'python', 'markdown', 'yaml'];\n\n /**\n * Tries to parse JSON from the given content string according to the specified\n * response format. If the response format is 'json' or a JSON schema object, it\n * will attempt to parse the content using multiple strategies. If any of the\n * strategies succeed, it will return the parsed JSON object. If all of them fail,\n * it will throw an error.\n *\n * @param content The content string to parse\n * @param responseFormat The desired format of the response\n * @returns The parsed JSON object or null if it fails\n */\nexport async function parseResponse<T>(content: string, responseFormat: OpenAIResponseFormat): Promise<T | null> {\n if (!content) return null;\n\n if (responseFormat === 'json' || (typeof responseFormat === 'object' && responseFormat?.type === 'json_schema')) {\n let cleanedContent = content.trim();\n let detectedType: string | null = null;\n\n // Remove code block markers if present\n const startsWithCodeBlock = CODE_BLOCK_TYPES.some((type) => {\n if (cleanedContent.startsWith(`\\`\\`\\`${type}`)) {\n detectedType = type;\n return true;\n }\n return false;\n });\n\n if (startsWithCodeBlock && cleanedContent.endsWith('```')) {\n const firstLineEndIndex = cleanedContent.indexOf('\\n');\n if (firstLineEndIndex !== -1) {\n cleanedContent = cleanedContent.slice(firstLineEndIndex + 1, -3).trim();\n console.log(`Code block for type ${detectedType} detected and removed. Cleaned content: ${cleanedContent}`);\n }\n }\n\n // Multiple JSON parsing strategies\n const jsonParsingStrategies = [\n // Strategy 1: Direct parsing\n () => {\n try {\n return JSON.parse(cleanedContent);\n } catch {\n return null;\n }\n },\n // Strategy 2: Extract JSON from between first {} or []\n () => {\n const jsonMatch = cleanedContent.match(/[\\{\\[].*[\\}\\]]/s);\n if (jsonMatch) {\n try {\n return JSON.parse(jsonMatch[0]);\n } catch {\n return null;\n }\n }\n return null;\n },\n // Strategy 3: Remove leading/trailing text and try parsing\n () => {\n const jsonMatch = cleanedContent.replace(/^[^{[]*|[^}\\]]*$/g, '');\n try {\n return JSON.parse(jsonMatch);\n } catch {\n return null;\n }\n },\n // Strategy 4: Use fixJsonWithAI\n () => {\n return fixJsonWithAI(cleanedContent);\n },\n // Strategy 5: Use fixBrokenJson\n () => {\n return fixBrokenJson(cleanedContent);\n },\n ];\n\n // Try each parsing strategy\n for (const strategy of jsonParsingStrategies) {\n const result = await strategy();\n if (result !== null) {\n return result as T;\n }\n }\n\n // If all strategies fail, throw an error\n console.error(`Failed to parse JSON from content: ${cleanedContent}. Original JSON: ${content}`);\n throw new Error('Unable to parse JSON response');\n } else {\n return content as T;\n }\n}\n", "import OpenAI from 'openai';\nimport { ImageGenerationOptions, LLMModel, DiscoImageModel, OPENAI_MODELS } from './types';\nimport { calculateImageCost } from './llm-config';\nimport { ImageGenerateParams, ImagesResponse } from 'openai/resources/images';\n\n/**\n * Enhanced ImagesResponse that includes cost calculation\n */\nexport interface ImageResponseWithUsage extends ImagesResponse {\n usage?: ImagesResponse['usage'] & {\n provider: string;\n model: DiscoImageModel;\n cost: number;\n visionModel?: LLMModel;\n };\n}\n\nexport const DEFAULT_IMAGE_MODEL: DiscoImageModel = 'gpt-image-2';\n\nexport const resolveImageModel = (model?: DiscoImageModel): DiscoImageModel => model ?? DEFAULT_IMAGE_MODEL;\n\nconst MULTIMODAL_VISION_MODELS: ReadonlySet<LLMModel> = new Set(OPENAI_MODELS);\n\n/**\n * Makes a call to the OpenAI Images API to generate images based on a text prompt.\n *\n * This function provides access to OpenAI's image generation capabilities with support for:\n * - Different output formats (JPEG, PNG, WebP)\n * - Various image sizes and quality settings\n * - Multiple image generation in a single call\n * - Base64 encoded image data return\n *\n * @example\n * // Basic image generation\n * const response = await makeImagesCall('A beautiful sunset over mountains');\n *\n * @example\n * // Custom options\n * const response = await makeImagesCall('A birthday cake', {\n * size: '1024x1024',\n * outputFormat: 'png',\n * quality: 'high',\n * count: 2\n * });\n *\n * @param prompt - The text prompt describing the image to generate\n * @param options - Configuration options for image generation. Includes:\n * - size: Image dimensions (uses OpenAI's size options)\n * - outputFormat: Image format ('jpeg', 'png', 'webp') - defaults to 'webp'\n * - compression: Compression level (number) - defaults to 50\n * - quality: Quality setting (uses OpenAI's quality options) - defaults to 'high'\n * - count: Number of images to generate - defaults to 1\n * - background: Background setting for transparency support\n * - moderation: Content moderation level\n * - apiKey: OpenAI API key (optional, falls back to environment variable)\n * @returns Promise<ImageResponseWithUsage> - The image generation response with cost information\n * @throws Error if the API call fails or invalid parameters are provided\n */\nexport async function makeImagesCall(\n prompt: string,\n options: ImageGenerationOptions = {}\n): Promise<ImageResponseWithUsage> {\n const {\n model,\n size = 'auto',\n outputFormat = 'webp',\n compression = 50,\n quality = 'high',\n count = 1,\n background = 'auto',\n moderation = 'auto',\n apiKey,\n visionModel,\n } = options;\n const imageModel = resolveImageModel(model);\n const supportedVisionModel = visionModel && MULTIMODAL_VISION_MODELS.has(visionModel) ? visionModel : undefined;\n if (visionModel && !supportedVisionModel) {\n console.warn(\n `Vision model ${visionModel} is not recognized as a multimodal OpenAI model. Ignoring for image usage metadata.`\n );\n }\n\n // Get API key\n const effectiveApiKey = apiKey || process.env.OPENAI_API_KEY;\n if (!effectiveApiKey) {\n throw new Error('OpenAI API key is not provided and OPENAI_API_KEY environment variable is not set');\n }\n\n // Validate inputs\n if (!prompt || typeof prompt !== 'string') {\n throw new Error('Prompt must be a non-empty string');\n }\n\n if (count && (count < 1 || count > 10)) {\n throw new Error('Count must be between 1 and 10');\n }\n\n if (compression && (compression < 0 || compression > 100)) {\n throw new Error('Compression must be between 0 and 100');\n }\n\n const openai = new OpenAI({\n apiKey: effectiveApiKey,\n });\n\n // Build the request parameters using OpenAI's type\n const requestParams: ImageGenerateParams = {\n model: imageModel,\n prompt,\n n: count || 1,\n size: size || 'auto',\n quality: quality || 'auto',\n background: background || 'auto',\n moderation: moderation || 'auto',\n };\n\n // Add output format if specified\n if (outputFormat) {\n requestParams.output_format = outputFormat;\n }\n\n // Add compression if specified\n if (compression !== undefined) {\n requestParams.output_compression = compression;\n }\n\n try {\n // Make the API call\n const response = await openai.images.generate(requestParams);\n\n // Validate response\n if (!response.data || response.data.length === 0) {\n throw new Error('No images returned from OpenAI Images API');\n }\n\n // Calculate cost\n const cost = calculateImageCost(imageModel, count || 1, quality, size);\n\n // Return the response with enhanced usage information\n const enhancedResponse: ImageResponseWithUsage = {\n ...response,\n usage: {\n // OpenAI Images response may not include usage details per image; preserve if present\n ...(response.usage ?? {\n input_tokens: 0,\n input_tokens_details: { image_tokens: 0, text_tokens: 0 },\n output_tokens: 0,\n total_tokens: 0,\n }),\n provider: 'openai',\n model: imageModel,\n cost,\n ...(supportedVisionModel ? { visionModel: supportedVisionModel } : {}),\n },\n };\n\n return enhancedResponse;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n throw new Error(`OpenAI Images API call failed: ${message}`);\n }\n} \n", "import OpenAI from 'openai';\nimport {\n ChatCompletionContentPart,\n ChatCompletionMessageParam,\n ChatCompletionCreateParams,\n} from 'openai/resources/chat';\n\nimport { calculateCost } from './llm-config';\nimport { parseResponse, normalizeModelName } from './llm-utils';\nimport { LLMResponse, LLMOptions, OpenAIModel, OpenAIResponseFormat, DeepseekModel, LLMModel } from './types';\n\n/**\n * Default options for Deepseek API calls\n */\nconst DEFAULT_DEEPSEEK_OPTIONS = {\n defaultModel: 'deepseek-chat' as DeepseekModel,\n};\n\n/**\n * Checks if the given model is a supported Deepseek model\n * @param model The model to check\n * @returns True if the model is supported, false otherwise\n */\nconst isSupportedDeepseekModel = (model: string): model is DeepseekModel => {\n return ['deepseek-chat', 'deepseek-reasoner'].includes(model);\n};\n\n/**\n * Checks if the given Deepseek model supports JSON output format\n * @param model The model to check\n * @returns True if JSON output is supported, false otherwise\n */\nconst supportsJsonOutput = (model: string): boolean => {\n return model === 'deepseek-chat';\n};\n\n/**\n * Checks if the given Deepseek model supports tool calling\n * @param model The model to check\n * @returns True if tool calling is supported, false otherwise\n */\nconst supportsToolCalling = (model: string): boolean => {\n return model === 'deepseek-chat';\n};\n\n/**\n * Gets the appropriate response format option for Deepseek API\n * \n * @param responseFormat The desired response format\n * @param model The model being used\n * @returns Object representing the Deepseek response format option\n */\nfunction getDeepseekResponseFormatOption(responseFormat: OpenAIResponseFormat, model: string): { type: 'text' } | { type: 'json_object' } {\n // Check if the model supports JSON output\n if (responseFormat !== 'text' && !supportsJsonOutput(model)) {\n console.warn(`Model ${model} does not support JSON output. Using text format instead.`);\n return { type: 'text' };\n }\n\n if (responseFormat === 'text') {\n return { type: 'text' };\n }\n if (responseFormat === 'json' || (typeof responseFormat === 'object' && responseFormat.type === 'json_schema')) {\n return { type: 'json_object' };\n }\n return { type: 'text' };\n}\n\n/**\n * Creates a completion using the Deepseek API\n * \n * @param content The content to pass to the API\n * @param responseFormat The desired format of the response\n * @param options Additional options for the API call\n * @returns Promise resolving to the API response\n */\nasync function createDeepseekCompletion(\n content: string | ChatCompletionContentPart[],\n responseFormat: OpenAIResponseFormat,\n options: LLMOptions = {}\n) {\n // Extract the model or use default\n const modelOption = options.model || DEFAULT_DEEPSEEK_OPTIONS.defaultModel;\n const normalizedModel = normalizeModelName(modelOption);\n \n // Validate model\n if (!isSupportedDeepseekModel(normalizedModel)) {\n throw new Error(`Unsupported Deepseek model: ${normalizedModel}. Please use 'deepseek-chat' or 'deepseek-reasoner'.`);\n }\n\n // Check if tools are requested with a model that doesn't support them\n if (options.tools && options.tools.length > 0 && !supportsToolCalling(normalizedModel)) {\n throw new Error(`Model ${normalizedModel} does not support tool calling.`);\n }\n\n const apiKey = options.apiKey || process.env.DEEPSEEK_API_KEY;\n if (!apiKey) {\n throw new Error('Deepseek API key is not provided and DEEPSEEK_API_KEY environment variable is not set');\n }\n\n // Initialize OpenAI client with Deepseek API URL\n const openai = new OpenAI({\n apiKey,\n baseURL: 'https://api.deepseek.com',\n });\n\n const messages: ChatCompletionMessageParam[] = [];\n\n // Add system message with developer prompt if present\n if (options.developerPrompt) {\n messages.push({\n role: 'system',\n content: options.developerPrompt,\n });\n }\n\n // Add context if present\n if (options.context) {\n messages.push(...options.context);\n }\n\n // Add user content\n if (typeof content === 'string') {\n messages.push({\n role: 'user',\n content,\n });\n } else {\n messages.push({\n role: 'user',\n content,\n });\n }\n\n // If JSON response format, include a hint in the system prompt\n if ((responseFormat === 'json' || (typeof responseFormat === 'object' && responseFormat.type === 'json_schema')) \n && supportsJsonOutput(normalizedModel)) {\n // If there's no system message yet, add one\n if (!messages.some(m => m.role === 'system')) {\n messages.unshift({\n role: 'system',\n content: 'Please respond in valid JSON format.',\n });\n } else {\n // Append to existing system message\n const systemMsgIndex = messages.findIndex(m => m.role === 'system');\n const systemMsg = messages[systemMsgIndex];\n if (typeof systemMsg.content === 'string') {\n messages[systemMsgIndex] = {\n ...systemMsg,\n content: `${systemMsg.content} Please respond in valid JSON format.`,\n };\n }\n }\n }\n\n const queryOptions: ChatCompletionCreateParams = {\n model: normalizedModel,\n messages,\n response_format: getDeepseekResponseFormatOption(responseFormat, normalizedModel),\n temperature: options.temperature,\n top_p: options.top_p,\n frequency_penalty: options.frequency_penalty,\n presence_penalty: options.presence_penalty,\n max_tokens: options.max_completion_tokens,\n };\n\n // Only add tools if the model supports them\n if (options.tools && supportsToolCalling(normalizedModel)) {\n queryOptions.tools = options.tools;\n }\n\n try {\n const completion = await openai.chat.completions.create(queryOptions);\n\n return {\n id: completion.id,\n content: completion.choices[0]?.message?.content || '',\n tool_calls: completion.choices[0]?.message?.tool_calls,\n usage: completion.usage || {\n prompt_tokens: 0,\n completion_tokens: 0,\n total_tokens: 0,\n },\n system_fingerprint: completion.system_fingerprint,\n provider: 'deepseek',\n model: normalizedModel as DeepseekModel,\n };\n } catch (error) {\n console.error('Error calling Deepseek API:', error);\n throw error;\n }\n}\n\n/**\n * Makes a call to the Deepseek AI API.\n *\n * @param content The content to pass to the LLM. Can be a string or an array of content parts.\n * @param responseFormat The format of the response. Defaults to 'json'.\n * @param options Configuration options including model ('deepseek-chat' or 'deepseek-reasoner'), tools, and apiKey.\n * @return A promise that resolves to the response from the Deepseek API.\n */\nexport const makeDeepseekCall = async <T = string>(\n content: string | ChatCompletionContentPart[],\n responseFormat: OpenAIResponseFormat = 'json',\n options: LLMOptions = {}\n): Promise<LLMResponse<T>> => {\n // Set default model if not provided\n const mergedOptions = {\n ...options,\n };\n\n if (!mergedOptions.model) {\n mergedOptions.model = DEFAULT_DEEPSEEK_OPTIONS.defaultModel;\n }\n\n const modelName = normalizeModelName(mergedOptions.model as string);\n \n // Check if the requested response format is compatible with the model\n if (responseFormat !== 'text' && !supportsJsonOutput(modelName)) {\n console.warn(`Model ${modelName} does not support JSON output. Will return error in the response.`);\n return {\n response: {\n error: `Model ${modelName} does not support JSON output format.`\n } as unknown as T,\n usage: {\n prompt_tokens: 0,\n completion_tokens: 0,\n reasoning_tokens: 0,\n provider: 'deepseek',\n model: modelName as DeepseekModel,\n cache_hit_tokens: 0,\n cost: 0,\n },\n tool_calls: undefined,\n };\n }\n\n // Check if tools are requested with a model that doesn't support them\n if (mergedOptions.tools && mergedOptions.tools.length > 0 && !supportsToolCalling(modelName)) {\n console.warn(`Model ${modelName} does not support tool calling. Will return error in the response.`);\n return {\n response: {\n error: `Model ${modelName} does not support tool calling.`\n } as unknown as T,\n usage: {\n prompt_tokens: 0,\n completion_tokens: 0,\n reasoning_tokens: 0,\n provider: 'deepseek',\n model: modelName as DeepseekModel,\n cache_hit_tokens: 0,\n cost: 0,\n },\n tool_calls: undefined,\n };\n }\n\n try {\n const completion = await createDeepseekCompletion(content, responseFormat, mergedOptions);\n\n // Handle tool calls similarly to OpenAI\n if (completion.tool_calls && completion.tool_calls.length > 0) {\n const fnCalls = completion.tool_calls\n .filter((tc) => tc.type === 'function')\n .map((tc) => ({\n id: tc.id,\n name: (tc as Extract<typeof tc, { type: 'function' }>).function.name,\n arguments: JSON.parse((tc as Extract<typeof tc, { type: 'function' }>).function.arguments),\n }));\n return {\n response: { tool_calls: fnCalls } as T,\n usage: {\n prompt_tokens: completion.usage.prompt_tokens,\n completion_tokens: completion.usage.completion_tokens,\n reasoning_tokens: 0, // Deepseek doesn't provide reasoning tokens separately\n provider: 'deepseek',\n model: completion.model,\n cache_hit_tokens: 0, // Not provided directly in API response\n cost: calculateCost(\n 'deepseek',\n completion.model,\n completion.usage.prompt_tokens,\n completion.usage.completion_tokens,\n 0,\n 0 // Cache hit tokens (not provided in the response)\n ),\n },\n tool_calls: completion.tool_calls,\n };\n }\n\n // Handle regular responses\n const parsedResponse = await parseResponse<T>(completion.content, responseFormat);\n if (parsedResponse === null) {\n throw new Error('Failed to parse Deepseek response');\n }\n\n return {\n response: parsedResponse,\n usage: {\n prompt_tokens: completion.usage.prompt_tokens,\n completion_tokens: completion.usage.completion_tokens,\n reasoning_tokens: 0, // Deepseek doesn't provide reasoning tokens separately\n provider: 'deepseek',\n model: completion.model,\n cache_hit_tokens: 0, // Not provided directly in API response\n cost: calculateCost(\n 'deepseek',\n completion.model,\n completion.usage.prompt_tokens,\n completion.usage.completion_tokens,\n 0,\n 0 // Cache hit tokens (not provided in the response)\n ),\n },\n tool_calls: completion.tool_calls,\n };\n } catch (error) {\n // If there's an error due to incompatible features, return a structured error\n console.error('Error in Deepseek API call:', error);\n return {\n response: {\n error: error instanceof Error ? error.message : 'Unknown error'\n } as unknown as T,\n usage: {\n prompt_tokens: 0,\n completion_tokens: 0,\n reasoning_tokens: 0,\n provider: 'deepseek',\n model: modelName as DeepseekModel,\n cache_hit_tokens: 0,\n cost: 0,\n },\n tool_calls: undefined,\n };\n }\n};\n", "// llm-openrouter.ts\n\nimport OpenAI from 'openai';\nimport type {\n ChatCompletionMessageParam,\n ChatCompletionMessageToolCall,\n ChatCompletionTool,\n ChatCompletionToolChoiceOption,\n} from 'openai/resources/chat/completions';\n\nimport { calculateCost, DEFAULT_MODEL } from './llm-config';\nimport { parseResponse, normalizeModelName } from './llm-utils';\nimport type {\n LLMResponse,\n ContextMessage,\n OpenAIResponseFormat,\n LLMModel,\n OpenAIModel,\n DeepseekModel,\n OpenRouterModel,\n} from './types/llm-types';\nimport { isOpenRouterModel } from './types/llm-types';\n\n// Use the SDK's tool choice type, compatible with OpenRouter\ntype ToolChoice = ChatCompletionToolChoiceOption;\n\n// Map our ContextMessage to OpenAI chat message\nfunction mapContextToMessages(context: ContextMessage[]): ChatCompletionMessageParam[] {\n return context.map((msg) => {\n const role = msg.role === 'developer' ? 'system' : msg.role;\n return { role, content: msg.content } as ChatCompletionMessageParam;\n });\n}\n\nfunction toOpenRouterModel(model?: string): string {\n if (model && model.includes('/')) return model;\n const base = normalizeModelName(model || DEFAULT_MODEL);\n return `openai/${base}`;\n}\n\n// Normalize model name for pricing\nfunction normalizeModelForPricing(model: string | undefined): { provider: 'openai' | 'deepseek'; coreModel: string } {\n if (!model) return { provider: 'openai', coreModel: normalizeModelName(DEFAULT_MODEL) };\n const [maybeProvider, maybeModel] = model.includes('/') ? model.split('/') : ['openai', model];\n const provider = (maybeProvider === 'deepseek' ? 'deepseek' : 'openai') as 'openai' | 'deepseek';\n const coreModel = normalizeModelName(maybeModel || model);\n return { provider, coreModel };\n}\n\nexport interface OpenRouterCallOptions {\n apiKey?: string;\n model?: OpenRouterModel | string; // OpenRouter model id (e.g., \"openai/gpt-5-mini\") or plain (\"gpt-5-mini\")\n responseFormat?: 'text' | 'json' | OpenAIResponseFormat;\n tools?: ChatCompletionTool[];\n toolChoice?: ToolChoice;\n context?: ContextMessage[];\n developerPrompt?: string;\n temperature?: number;\n max_tokens?: number;\n top_p?: number;\n frequency_penalty?: number;\n presence_penalty?: number;\n stop?: string | string[];\n seed?: number;\n // Optional headers for OpenRouter ranking\n referer?: string;\n title?: string;\n}\n\n/**\n * Make a call through OpenRouter using the OpenAI Chat Completions-compatible API.\n * Supports: JSON mode, model selection, message history, and tools.\n */\nexport async function makeOpenRouterCall<T = string>(\n input: string,\n options: OpenRouterCallOptions = {}\n): Promise<LLMResponse<T>> {\n const {\n apiKey = process.env.OPENROUTER_API_KEY,\n model,\n responseFormat = 'text',\n tools,\n toolChoice,\n context,\n developerPrompt,\n temperature = 0.2,\n max_tokens,\n top_p,\n frequency_penalty,\n presence_penalty,\n stop,\n seed,\n referer = process.env.OPENROUTER_SITE_URL,\n title = process.env.OPENROUTER_SITE_NAME,\n } = options;\n\n if (!apiKey) {\n throw new Error('OpenRouter API key is not provided and OPENROUTER_API_KEY is not set');\n }\n\n const client = new OpenAI({\n apiKey,\n baseURL: 'https://openrouter.ai/api/v1',\n defaultHeaders: {\n ...(referer ? { 'HTTP-Referer': referer } : {}),\n ...(title ? { 'X-Title': title } : {}),\n },\n });\n\n const messages: ChatCompletionMessageParam[] = [];\n if (developerPrompt && developerPrompt.trim()) {\n messages.push({ role: 'system', content: developerPrompt });\n }\n if (context && context.length > 0) {\n messages.push(...mapContextToMessages(context));\n }\n messages.push({ role: 'user', content: input });\n\n // Configure response_format\n let response_format: { type: 'json_object' } | undefined;\n let parsingFormat: OpenAIResponseFormat = 'text';\n if (responseFormat === 'json') {\n response_format = { type: 'json_object' };\n parsingFormat = 'json';\n } else if (typeof responseFormat === 'object') {\n response_format = { type: 'json_object' };\n parsingFormat = responseFormat;\n }\n\n const modelId = toOpenRouterModel(model);\n\n const completion = await client.chat.completions.create({\n model: modelId,\n messages,\n response_format,\n tools,\n tool_choice: toolChoice,\n temperature,\n max_tokens,\n top_p,\n frequency_penalty,\n presence_penalty,\n stop,\n seed,\n });\n\n const choice = completion.choices && completion.choices.length > 0 ? completion.choices[0] : undefined;\n const message = (choice && 'message' in choice ? choice.message : undefined) as\n | { content: string | null; role: string; tool_calls?: ChatCompletionMessageToolCall[] }\n | undefined;\n\n const { provider: pricingProvider, coreModel } = normalizeModelForPricing(modelId);\n const promptTokens = completion.usage?.prompt_tokens ?? 0;\n const completionTokens = completion.usage?.completion_tokens ?? 0;\n const cost = calculateCost(pricingProvider, coreModel, promptTokens, completionTokens);\n\n // Tool calls branch: return empty string response and expose tool_calls on LLMResponse\n const hasToolCalls = Array.isArray(message?.tool_calls) && message!.tool_calls!.length > 0;\n if (hasToolCalls) {\n const usageModel: LLMModel = isOpenRouterModel(modelId) ? modelId : (DEFAULT_MODEL as LLMModel);\n return {\n response: '' as T,\n usage: {\n prompt_tokens: promptTokens,\n completion_tokens: completionTokens,\n provider: 'openrouter',\n model: usageModel,\n cost,\n },\n tool_calls: message!.tool_calls as ChatCompletionMessageToolCall[],\n };\n }\n\n const rawText = typeof message?.content === 'string' ? message.content : '';\n const parsed = await parseResponse<T>(rawText, parsingFormat);\n if (parsed === null) {\n throw new Error('Failed to parse OpenRouter response');\n }\n\n // Ensure the model value conforms to LLMModel; otherwise fall back to DEFAULT_MODEL\n const usageModel: LLMModel = isOpenRouterModel(modelId) ? modelId : (DEFAULT_MODEL as LLMModel);\n\n return {\n response: parsed,\n usage: {\n prompt_tokens: promptTokens,\n completion_tokens: completionTokens,\n provider: 'openrouter',\n model: usageModel,\n cost,\n },\n ...(hasToolCalls ? { tool_calls: message!.tool_calls as ChatCompletionMessageToolCall[] } : {}),\n };\n}\n\nexport default makeOpenRouterCall;\n", "/**\n * A class to measure performance of code execution.\n *\n * This utility records elapsed time during execution and provides a detailed \n * breakdown of elapsed time between checkpoints.\n *\n * Usage example:\n * const timer = new PerformanceTimer();\n * timer.checkpoint('Start Processing');\n * // ... code for processing\n * timer.checkpoint('After Task 1');\n * // ... additional processing code\n * timer.stop();\n * console.log(timer.generateReport());\n *\n * Methods:\n * - checkpoint(label: string): Record a timestamped checkpoint.\n * - stop(): Stop the timer and compute the total elapsed time.\n * - generateReport(): Return a performance report with total time and phases.\n * - formatPerformanceReport(): Return a formatted string of the performance report.\n * - getElapsedSeconds(): Get the current elapsed time in seconds.\n */\nexport class PerformanceTimer {\n private startTime: number;\n private checkpoints: Map<string, number>;\n private totalTime: number | null;\n\n constructor() {\n this.startTime = performance.now();\n this.checkpoints = new Map();\n this.totalTime = null;\n }\n\n /**\n * Gets the current elapsed time in seconds.\n * \n * @returns The elapsed time in seconds with 3 decimal places of precision.\n */\n getElapsedSeconds(): number {\n const elapsedMs = this.totalTime ?? (performance.now() - this.startTime);\n return Number((elapsedMs / 1000).toFixed(3));\n }\n\n /**\n * Records a checkpoint with the given label.\n *\n * @param label - A descriptive label for the checkpoint.\n */\n checkpoint(label: string): void {\n this.checkpoints.set(label, performance.now());\n }\n\n /**\n * Stops the timer and sets the total elapsed time.\n */\n stop(): void {\n this.totalTime = performance.now() - this.startTime;\n }\n\n /**\n * Generates a performance report containing the total elapsed time and \n * breakdown of phases between checkpoints.\n *\n * @returns A performance report object.\n * @throws Error if the timer is not stopped before generating the report.\n */\n analyseReportData(): PerformanceReport {\n if (this.totalTime === null) {\n throw new Error('Timer must be stopped before generating report');\n }\n\n const report: PerformanceReport = {\n totalTime: this.totalTime,\n phases: []\n };\n\n let lastTime = this.startTime;\n\n // Convert checkpoints to a sorted array by time\n const sortedCheckpoints = Array.from(this.checkpoints.entries())\n .sort((a, b) => a[1] - b[1]);\n\n for (const [label, time] of sortedCheckpoints) {\n const duration = time - lastTime;\n if (duration < 0) {\n throw new Error(`Negative duration detected for checkpoint: ${label}`);\n }\n report.phases.push({\n label,\n duration\n });\n lastTime = time;\n }\n\n // Add final phase from last checkpoint to stop\n if (sortedCheckpoints.length > 0) {\n const finalDuration = this.totalTime - lastTime;\n report.phases.push({\n label: 'Final Processing',\n duration: Math.max(finalDuration, 0) // Prevent negative duration\n });\n }\n return report;\n }\n\n /**\n * Returns a formatted string of the performance report.\n *\n * @returns A string detailing the total execution time and phase breakdown.\n */\n public generateReport(): string {\n const report = this.analyseReportData();\n \n // Format numbers with thousands separators and 2 decimal places\n const formatNumber = (num: number) => \n num.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n\n // Calculate column widths\n const maxLabelLength = Math.max(...report.phases.map(p => p.label.length), 30);\n const maxDurationLength = Math.max(...report.phases.map(p => formatNumber(p.duration).length), 10);\n\n // Create table header\n let output = `\u2554${'\u2550'.repeat(maxLabelLength + 2)}\u2566${'\u2550'.repeat(maxDurationLength + 2)}\u2557\\n`;\n output += `\u2551 ${'Phase'.padEnd(maxLabelLength)} \u2551 ${'Time (ms)'.padEnd(maxDurationLength)} \u2551\\n`;\n output += `\u2560${'\u2550'.repeat(maxLabelLength + 2)}\u256C${'\u2550'.repeat(maxDurationLength + 2)}\u2563\\n`;\n\n // Add table rows\n report.phases.forEach(phase => {\n output += `\u2551 ${phase.label.padEnd(maxLabelLength)} \u2551 ${formatNumber(phase.duration).padStart(maxDurationLength)} \u2551\\n`;\n });\n\n // Add table footer with total\n output += `\u2560${'\u2550'.repeat(maxLabelLength + 2)}\u256C${'\u2550'.repeat(maxDurationLength + 2)}\u2563\\n`;\n output += `\u2551 ${'Total'.padEnd(maxLabelLength)} \u2551 ${formatNumber(report.totalTime).padStart(maxDurationLength)} \u2551\\n`;\n output += `\u255A${'\u2550'.repeat(maxLabelLength + 2)}\u2569${'\u2550'.repeat(maxDurationLength + 2)}\u255D\\n`;\n\n return output;\n }\n}\n\n/**\n * Interface representing a single phase of performance measurement.\n */\nexport interface PerformancePhase {\n label: string;\n duration: number;\n}\n\n/**\n * Interface representing the full performance report.\n */\nexport interface PerformanceReport {\n totalTime: number;\n phases: PerformancePhase[];\n}\n", "import type {\n DiscoMailApiErrorResponse,\n DiscoMailClientOptions,\n DiscoMailCreateDomainRequest,\n DiscoMailDomain,\n DiscoMailRequestOptions,\n DiscoMailSendRequest,\n DiscoMailSendResponse,\n DiscoMailVerifyDomainResponse,\n} from './types/disco-mail-types';\n\nconst DEFAULT_DISCO_MAIL_BASE_URL = 'https://mail.discomedia.co/api/v1';\n\ninterface DiscoMailErrorEnvelope {\n error?: DiscoMailApiErrorResponse;\n code?: string;\n message?: string;\n}\n\n/** Error returned when Disco Mail rejects an API request. */\nexport class DiscoMailApiError extends Error {\n public readonly code: string;\n public readonly status: number;\n\n public constructor(code: string, message: string, status: number) {\n super(`Disco Mail API error: ${code} ${message}`);\n this.name = 'DiscoMailApiError';\n this.code = code;\n this.status = status;\n }\n}\n\n/** Server-side client for the hosted Disco Mail API. */\nexport class DiscoMailAPI {\n public constructor(private readonly clientOptions: DiscoMailClientOptions = {}) {}\n\n public async send(\n payload: DiscoMailSendRequest,\n options: DiscoMailRequestOptions = {},\n ): Promise<DiscoMailSendResponse> {\n this.validateSendRequest(payload);\n\n const headers = new Headers();\n if (options.idempotencyKey) {\n headers.set('Idempotency-Key', options.idempotencyKey);\n }\n\n return this.request<DiscoMailSendResponse>('/emails', 'POST', options, payload, headers);\n }\n\n public async listDomains(options: DiscoMailRequestOptions = {}): Promise<DiscoMailDomain[]> {\n return this.request<DiscoMailDomain[]>('/domains', 'GET', options);\n }\n\n public async getDomain(domainId: number, options: DiscoMailRequestOptions = {}): Promise<DiscoMailDomain> {\n this.validateDomainId(domainId);\n return this.request<DiscoMailDomain>(`/domains/${domainId}`, 'GET', options);\n }\n\n public async createDomain(\n payload: DiscoMailCreateDomainRequest,\n options: DiscoMailRequestOptions = {},\n ): Promise<DiscoMailDomain> {\n if (!payload.name.trim()) {\n throw new Error('Disco Mail domain name must be a non-empty string');\n }\n if (!payload.region.trim()) {\n throw new Error('Disco Mail domain region must be a non-empty string');\n }\n\n return this.request<DiscoMailDomain>('/domains', 'POST', options, payload);\n }\n\n public async verifyDomain(\n domainId: number,\n options: DiscoMailRequestOptions = {},\n ): Promise<DiscoMailVerifyDomainResponse> {\n this.validateDomainId(domainId);\n return this.request<DiscoMailVerifyDomainResponse>(`/domains/${domainId}/verify`, 'PUT', options);\n }\n\n private async request<TResponse>(\n path: string,\n method: 'GET' | 'POST' | 'PUT',\n options: DiscoMailRequestOptions,\n body?: DiscoMailSendRequest | DiscoMailCreateDomainRequest,\n additionalHeaders: Headers = new Headers(),\n ): Promise<TResponse> {\n const apiKey = this.resolveApiKey(options);\n const headers = new Headers(additionalHeaders);\n headers.set('Authorization', `Bearer ${apiKey}`);\n headers.set('Content-Type', 'application/json');\n\n const response = await fetch(`${this.resolveBaseUrl(options)}${path}`, {\n method,\n headers,\n ...(body ? { body: JSON.stringify(body) } : {}),\n });\n\n if (!response.ok) {\n throw await this.createApiError(response);\n }\n\n return (await response.json()) as TResponse;\n }\n\n private resolveApiKey(options: DiscoMailRequestOptions): string {\n const apiKey = options.apiKey || this.clientOptions.apiKey || process.env.DISCO_MAIL_API_KEY || process.env.DISCOMAIL_API_KEY;\n if (!apiKey) {\n throw new Error(\n 'Disco Mail API key is not provided. Pass options.apiKey or set DISCO_MAIL_API_KEY or DISCOMAIL_API_KEY.',\n );\n }\n return apiKey;\n }\n\n private resolveBaseUrl(options: DiscoMailRequestOptions): string {\n const baseUrl = options.baseUrl || this.clientOptions.baseUrl || DEFAULT_DISCO_MAIL_BASE_URL;\n return baseUrl.replace(/\\/+$/, '');\n }\n\n private validateSendRequest(payload: DiscoMailSendRequest): void {\n const recipients = Array.isArray(payload.to) ? payload.to : [payload.to];\n if (recipients.length === 0 || recipients.some((recipient) => !recipient.trim())) {\n throw new Error('Disco Mail send requests require at least one non-empty recipient');\n }\n if (!payload.from.trim()) {\n throw new Error('Disco Mail send requests require a non-empty from address');\n }\n if (!payload.subject?.trim() && !payload.templateId?.trim()) {\n throw new Error('Disco Mail send requests require a non-empty subject or templateId');\n }\n if (!payload.html?.trim() && !payload.text?.trim()) {\n throw new Error('Disco Mail send requests require a non-empty html or text body');\n }\n if (payload.attachments && payload.attachments.length > 10) {\n throw new Error('Disco Mail send requests support a maximum of 10 attachments');\n }\n }\n\n private validateDomainId(domainId: number): void {\n if (!Number.isInteger(domainId) || domainId <= 0) {\n throw new Error('Disco Mail domainId must be a positive integer');\n }\n }\n\n private async createApiError(response: Response): Promise<DiscoMailApiError> {\n let body: DiscoMailErrorEnvelope | null = null;\n try {\n body = (await response.json()) as DiscoMailErrorEnvelope;\n } catch {\n body = null;\n }\n\n const apiError = body?.error ?? body;\n return new DiscoMailApiError(\n apiError?.code || `HTTP_${response.status}`,\n apiError?.message || response.statusText || 'Request failed',\n response.status,\n );\n }\n}\n", "import WebSocket from 'ws';\nimport { log as baseLog } from './logging';\nimport {\n AlpacaAccountDetails,\n AlpacaAPIErrorResponse,\n AlpacaCredentials,\n AlpacaRequestContext,\n AlpacaPosition,\n AssetClass,\n GetOptionContractsParams,\n GetOrdersParams,\n JsonObject,\n JsonValue,\n OptionAccountActivity,\n OptionContract,\n OptionContractsResponse,\n AlpacaOrder,\n OrderLeg,\n TradeUpdate,\n CreateOrderParams,\n CreateMultiLegOrderParams,\n PortfolioHistoryResponse,\n EquitiesTradeOptions,\n} from './types/alpaca-types';\nimport { LogOptions } from './types/logging-types';\nimport { marketDataAPI } from './alpaca-market-data-api';\nimport { getTradingDate } from './market-time';\n\nconst limitPriceSlippagePercent100 = 0.1; // 0.1%\n\ntype AlpacaRequestBody = CreateOrderParams | CreateMultiLegOrderParams | JsonObject;\n\nclass AlpacaRequestError extends Error {\n readonly method: string;\n readonly status: number | null;\n readonly url: string;\n readonly responseCode: number | null;\n readonly responseDetails: AlpacaAPIErrorResponse | null;\n readonly rawResponse: string | null;\n readonly symbol?: string;\n\n constructor(params: {\n message: string;\n method: string;\n status?: number;\n url: string;\n responseCode?: number | null;\n responseDetails?: AlpacaAPIErrorResponse | null;\n rawResponse?: string | null;\n symbol?: string;\n }) {\n super(params.message);\n this.name = 'AlpacaRequestError';\n this.method = params.method;\n this.status = params.status ?? null;\n this.url = params.url;\n this.responseCode = params.responseCode ?? null;\n this.responseDetails = params.responseDetails ?? null;\n this.rawResponse = params.rawResponse ?? null;\n this.symbol = params.symbol;\n }\n}\n\n/** \nWebsocket example\n const alpacaAPI = createAlpacaTradingAPI(credentials); // type AlpacaCredentials\n alpacaAPI.onTradeUpdate((update: TradeUpdate) => {\n this.log(`Received trade update: event ${update.event} for an order to ${update.order.side} ${update.order.qty} of ${update.order.symbol}`);\n });\n alpacaAPI.connectWebsocket(); // necessary to connect to the WebSocket\n\nPortfolio History examples\n // Get standard portfolio history\n const portfolioHistory = await alpacaAPI.getPortfolioHistory({\n timeframe: '1D',\n period: '1M'\n });\n\n // Get daily portfolio history with current day included (if available from hourly data)\n const dailyHistory = await alpacaAPI.getPortfolioDailyHistory({\n period: '1M'\n });\n*/\n\nexport class AlpacaTradingAPI {\n static new(credentials: AlpacaCredentials): AlpacaTradingAPI {\n return new AlpacaTradingAPI(credentials) as AlpacaTradingAPI;\n }\n\n static getInstance(credentials: AlpacaCredentials): AlpacaTradingAPI {\n return new AlpacaTradingAPI(credentials) as AlpacaTradingAPI;\n }\n\n private ws: WebSocket | null = null;\n private headers: Record<string, string>;\n private tradeUpdateCallback: ((update: TradeUpdate) => void) | null = null;\n private credentials: AlpacaCredentials;\n private apiBaseUrl: string;\n private wsUrl: string;\n private authenticated = false;\n private connecting = false;\n private reconnectDelay = 10000; // 10 seconds between reconnection attempts\n private reconnectTimeout: NodeJS.Timeout | null = null;\n private messageHandlers: Map<string, (data: any) => void> = new Map();\n private debugLogging = false;\n private manualDisconnect = false;\n\n /**\n * Constructor for AlpacaTradingAPI\n * @param credentials - Alpaca credentials,\n * accountName: string; // The account identifier used inthis.logs and tracking\n * apiKey: string; // Alpaca API key\n * apiSecret: string; // Alpaca API secret\n * type: AlpacaAccountType;\n * orderType: AlpacaOrderType;\n * @param options - Optional options\n * debugLogging: boolean; // Whether to log messages of type 'debug'\n */\n constructor(credentials: AlpacaCredentials, options?: { debugLogging?: boolean }) {\n this.credentials = credentials;\n\n // Set URLs based on account type\n this.apiBaseUrl =\n credentials.type === 'PAPER' ? 'https://paper-api.alpaca.markets/v2' : 'https://api.alpaca.markets/v2';\n\n this.wsUrl =\n credentials.type === 'PAPER' ? 'wss://paper-api.alpaca.markets/stream' : 'wss://api.alpaca.markets/stream';\n\n this.headers = {\n 'APCA-API-KEY-ID': credentials.apiKey,\n 'APCA-API-SECRET-KEY': credentials.apiSecret,\n 'Content-Type': 'application/json',\n };\n\n // Initialize message handlers\n this.messageHandlers.set('authorization', this.handleAuthMessage.bind(this));\n this.messageHandlers.set('listening', this.handleListenMessage.bind(this));\n this.messageHandlers.set('trade_updates', this.handleTradeUpdate.bind(this));\n\n this.debugLogging = options?.debugLogging || false;\n }\n\n private log(message: string, options: LogOptions = { type: 'info' }): void {\n if (this.debugLogging && options.type === 'debug') {\n return;\n }\n baseLog(message, { ...options, source: 'AlpacaTradingAPI', account: this.credentials.accountName });\n }\n\n /**\n * Round a price to the nearest 2 decimal places for Alpaca, or 4 decimal places for prices less than $1\n * @param price - The price to round\n * @returns The rounded price\n */\n private roundPriceForAlpaca = (price: number): number => {\n return price >= 1 ? Math.round(price * 100) / 100 : Math.round(price * 10000) / 10000;\n };\n\n private isJsonObject(value: JsonValue): value is JsonObject {\n return value !== null && !Array.isArray(value) && typeof value === 'object';\n }\n\n private parseAlpacaAPIErrorResponse(rawResponse: string): AlpacaAPIErrorResponse | null {\n if (rawResponse.trim() === '') {\n return null;\n }\n\n try {\n const parsedValue = JSON.parse(rawResponse) as JsonValue;\n if (!this.isJsonObject(parsedValue)) {\n return null;\n }\n\n const code = parsedValue['code'];\n const message = parsedValue['message'];\n const symbol = parsedValue['symbol'];\n\n if (typeof code !== 'number' || typeof message !== 'string') {\n return null;\n }\n\n if (symbol !== undefined && typeof symbol !== 'string') {\n return null;\n }\n\n return parsedValue as AlpacaAPIErrorResponse;\n } catch {\n return null;\n }\n }\n\n private formatJsonValueForLog(value: JsonValue | undefined): string {\n if (value === undefined) {\n return 'undefined';\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => this.formatJsonValueForLog(entry)).join(', ');\n }\n\n if (value === null) {\n return 'null';\n }\n\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n\n return `${value}`;\n }\n\n private formatAlpacaAPIErrorDetails(errorResponse: AlpacaAPIErrorResponse): string {\n return Object.entries(errorResponse)\n .filter(([key]) => key !== 'code' && key !== 'message' && key !== 'symbol')\n .map(([key, value]) => `${key}=${this.formatJsonValueForLog(value)}`)\n .join(', ');\n }\n\n private formatRequestAction(requestContext?: AlpacaRequestContext): string {\n return requestContext?.action ? `${requestContext.action} failed` : 'Alpaca request failed';\n }\n\n private buildAlpacaAPIErrorMessage(params: {\n requestContext?: AlpacaRequestContext;\n status: number;\n url: string;\n errorResponse: AlpacaAPIErrorResponse | null;\n rawResponse: string;\n }): string {\n const { requestContext, status, url, errorResponse, rawResponse } = params;\n const action = this.formatRequestAction(requestContext);\n const message = errorResponse?.message ?? (rawResponse || 'No error body returned');\n const responseCode = errorResponse?.code ? ` (code ${errorResponse.code})` : '';\n const detailSummary = errorResponse ? this.formatAlpacaAPIErrorDetails(errorResponse) : '';\n const detailText =\n detailSummary !== ''\n ? ` Details: ${detailSummary}.`\n : rawResponse.trim() !== '' && errorResponse === null\n ? ` Response: ${rawResponse}.`\n : '';\n\n return `${action}: Alpaca API ${status}${responseCode}: ${message}.${detailText} Url: ${url}`;\n }\n\n private buildRequestExecutionErrorMessage(params: {\n requestContext?: AlpacaRequestContext;\n url: string;\n errorMessage: string;\n }): string {\n const { requestContext, url, errorMessage } = params;\n const action = this.formatRequestAction(requestContext);\n return `${action}: ${errorMessage}. Url: ${url}`;\n }\n\n private handleAuthMessage(data: any): void {\n if (data.status === 'authorized') {\n this.authenticated = true;\n this.log('WebSocket authenticated');\n } else {\n this.log(`Authentication failed: ${data.message || 'Unknown error'}`, {\n type: 'error',\n });\n }\n }\n\n private handleListenMessage(data: any): void {\n if (data.streams?.includes('trade_updates')) {\n this.log('Successfully subscribed to trade updates');\n }\n }\n\n private handleTradeUpdate(data: TradeUpdate): void {\n if (this.tradeUpdateCallback) {\n this.log(\n `Trade update: ${data.event} to ${data.order.side} ${data.order.qty} shares${\n data.event === 'partial_fill' ? ` (filled shares: ${data.order.filled_qty})` : ''\n }, type ${data.order.type}`,\n {\n symbol: data.order.symbol,\n type: 'debug',\n }\n );\n this.tradeUpdateCallback(data);\n }\n }\n\n private handleMessage(message: string): void {\n try {\n const data = JSON.parse(message);\n const handler = this.messageHandlers.get(data.stream);\n\n if (handler) {\n handler(data.data);\n } else {\n this.log(`Received message for unknown stream: ${data.stream}`, {\n type: 'warn',\n });\n }\n } catch (error) {\n this.log('Failed to parse WebSocket message', {\n type: 'error',\n metadata: { error: error instanceof Error ? error.message : 'Unknown error' },\n });\n }\n }\n\n connectWebsocket(): void {\n // Reset manual disconnect flag to allow reconnection logic\n this.manualDisconnect = false;\n if (this.connecting) {\n this.log('Connection attempt skipped - already connecting');\n return;\n }\n\n if (this.ws?.readyState === WebSocket.OPEN) {\n this.log('Connection attempt skipped - already connected');\n return;\n }\n\n this.connecting = true;\n\n if (this.ws) {\n this.ws.removeAllListeners();\n this.ws.terminate();\n this.ws = null;\n }\n\n this.log(`Connecting to WebSocket at ${this.wsUrl}...`);\n\n this.ws = new WebSocket(this.wsUrl);\n\n this.ws.on('open', async () => {\n try {\n this.log('WebSocket connected');\n await this.authenticate();\n await this.subscribeToTradeUpdates();\n this.connecting = false;\n } catch (error) {\n this.log('Failed to setup WebSocket connection', {\n type: 'error',\n metadata: { error: error instanceof Error ? error.message : 'Unknown error' },\n });\n this.ws?.close();\n }\n });\n\n this.ws.on('message', (data: WebSocket.Data) => {\n this.handleMessage(data.toString());\n });\n\n this.ws.on('error', (error) => {\n this.log('WebSocket error', {\n type: 'error',\n metadata: { error: error instanceof Error ? error.message : 'Unknown error' },\n });\n this.connecting = false;\n });\n\n this.ws.on('close', () => {\n this.log('WebSocket connection closed');\n this.authenticated = false;\n this.connecting = false;\n\n // Clear any existing reconnect timeout\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n }\n\n // Schedule reconnection unless this was a manual disconnect\n if (!this.manualDisconnect) {\n this.reconnectTimeout = setTimeout(() => {\n this.log('Attempting to reconnect...');\n this.connectWebsocket();\n }, this.reconnectDelay);\n }\n });\n }\n\n /**\n * Cleanly disconnect from the WebSocket and stop auto-reconnects\n */\n disconnect(): void {\n // Prevent auto-reconnect scheduling\n this.manualDisconnect = true;\n\n // Clear any scheduled reconnect\n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n }\n\n if (this.ws) {\n this.log('Disconnecting WebSocket...');\n\n // Remove listeners first to avoid duplicate handlers after reconnects\n this.ws.removeAllListeners();\n\n try {\n // Attempt graceful close\n if (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING) {\n this.ws.close(1000, 'Client disconnect');\n } else {\n this.ws.terminate();\n }\n } catch {\n // Fallback terminate on any error\n try {\n this.ws.terminate();\n } catch {\n /* no-op */\n }\n }\n\n this.ws = null;\n }\n\n this.authenticated = false;\n this.connecting = false;\n this.log('WebSocket disconnected');\n }\n\n private async authenticate(): Promise<void> {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error('WebSocket not ready for authentication');\n }\n\n const authMessage = {\n action: 'auth',\n key: this.credentials.apiKey,\n secret: this.credentials.apiSecret,\n };\n\n this.ws.send(JSON.stringify(authMessage));\n\n return new Promise((resolve, reject) => {\n const authTimeout = setTimeout(() => {\n this.log('Authentication timeout', { type: 'error' });\n reject(new Error('Authentication timed out'));\n }, 10000);\n\n const handleAuthResponse = (data: WebSocket.Data) => {\n try {\n const message = JSON.parse(data.toString());\n if (message.stream === 'authorization') {\n this.ws?.removeListener('message', handleAuthResponse);\n clearTimeout(authTimeout);\n\n if (message.data?.status === 'authorized') {\n this.authenticated = true;\n resolve();\n } else {\n const error = `Authentication failed: ${message.data?.message || 'Unknown error'}`;\n this.log(error, { type: 'error' });\n reject(new Error(error));\n }\n }\n } catch (error) {\n this.log('Failed to parse auth response', {\n type: 'error',\n metadata: { error: error instanceof Error ? error.message : 'Unknown error' },\n });\n }\n };\n\n this.ws?.on('message', handleAuthResponse);\n });\n }\n\n private async subscribeToTradeUpdates(): Promise<void> {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN || !this.authenticated) {\n throw new Error('WebSocket not ready for subscription');\n }\n\n const listenMessage = {\n action: 'listen',\n data: {\n streams: ['trade_updates'],\n },\n };\n\n this.ws.send(JSON.stringify(listenMessage));\n\n return new Promise((resolve, reject) => {\n const listenTimeout = setTimeout(() => {\n reject(new Error('Subscribe timeout'));\n }, 10000);\n\n const handleListenResponse = (data: WebSocket.Data) => {\n try {\n const message = JSON.parse(data.toString());\n if (message.stream === 'listening') {\n this.ws?.removeListener('message', handleListenResponse);\n clearTimeout(listenTimeout);\n\n if (message.data?.streams?.includes('trade_updates')) {\n resolve();\n } else {\n reject(new Error('Failed to subscribe to trade updates'));\n }\n }\n } catch (error) {\n this.log('Failed to parse listen response', {\n type: 'error',\n metadata: { error: error instanceof Error ? error.message : 'Unknown error' },\n });\n }\n };\n\n this.ws?.on('message', handleListenResponse);\n });\n }\n\n private async makeRequest<TResponse>(\n endpoint: string,\n method: string = 'GET',\n body?: AlpacaRequestBody,\n queryString: string = '',\n requestContext?: AlpacaRequestContext\n ): Promise<TResponse> {\n const url = `${this.apiBaseUrl}${endpoint}${queryString}`;\n try {\n const response = await fetch(url, {\n method,\n headers: this.headers,\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n const rawResponse = await response.text();\n const errorResponse = this.parseAlpacaAPIErrorResponse(rawResponse);\n const symbol = requestContext?.symbol ?? errorResponse?.symbol;\n const error = new AlpacaRequestError({\n message: this.buildAlpacaAPIErrorMessage({\n requestContext,\n status: response.status,\n url,\n errorResponse,\n rawResponse,\n }),\n method,\n status: response.status,\n url,\n responseCode: errorResponse?.code ?? null,\n responseDetails: errorResponse,\n rawResponse,\n symbol,\n });\n\n this.log(error.message, { symbol, type: 'error' });\n throw error;\n }\n\n // Handle responses with no content (e.g., 204 No Content)\n if (response.status === 204 || response.headers.get('content-length') === '0') {\n return null as TResponse;\n }\n\n const contentType = response.headers.get('content-type');\n if (contentType && contentType.includes('application/json')) {\n return (await response.json()) as TResponse;\n }\n\n // For non-JSON responses, return the text content\n const textContent = await response.text();\n return (textContent || null) as TResponse;\n } catch (error) {\n if (error instanceof AlpacaRequestError) {\n throw error;\n }\n\n const normalizedError = error instanceof Error ? error : new Error(`${error}`);\n const symbol = requestContext?.symbol;\n const requestError = new AlpacaRequestError({\n message: this.buildRequestExecutionErrorMessage({\n requestContext,\n url,\n errorMessage: normalizedError.message,\n }),\n method,\n url,\n rawResponse: null,\n symbol,\n });\n\n this.log(requestError.message, { symbol, type: 'error' });\n throw requestError;\n }\n }\n\n async getPositions(assetClass?: AssetClass): Promise<AlpacaPosition[]> {\n const positions = await this.makeRequest<AlpacaPosition[]>('/positions', 'GET', undefined, '', {\n action: 'Get positions',\n });\n if (assetClass) {\n return positions.filter((position) => position.asset_class === assetClass);\n }\n return positions;\n }\n\n /**\n * Get all orders\n * @param params (GetOrdersParams) - optional parameters to filter the orders\n * - status: 'open' | 'closed' | 'all'\n * - limit: number\n * - after: string\n * - until: string\n * - direction: 'asc' | 'desc'\n * - nested: boolean\n * - symbols: string[], an array of all the symbols\n * - side: 'buy' | 'sell'\n * @returns all orders\n */\n async getOrders(params: GetOrdersParams = {}): Promise<AlpacaOrder[]> {\n const queryParams = new URLSearchParams();\n\n if (params.status) queryParams.append('status', params.status);\n if (params.limit) queryParams.append('limit', params.limit.toString());\n if (params.after) queryParams.append('after', params.after);\n if (params.until) queryParams.append('until', params.until);\n if (params.direction) queryParams.append('direction', params.direction);\n if (params.nested) queryParams.append('nested', params.nested.toString());\n if (params.symbols) queryParams.append('symbols', params.symbols.join(','));\n if (params.side) queryParams.append('side', params.side);\n\n const endpoint = `/orders${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;\n return this.makeRequest<AlpacaOrder[]>(endpoint, 'GET', undefined, '', {\n action: 'Get orders',\n symbol: params.symbols?.join(','),\n });\n }\n\n async getAccountDetails(): Promise<AlpacaAccountDetails> {\n return this.makeRequest<AlpacaAccountDetails>('/account', 'GET', undefined, '', {\n action: 'Get account details',\n });\n }\n\n /**\n * Create a trailing stop order\n * @param symbol (string) - the symbol of the order\n * @param qty (number) - the quantity of the order\n * @param side (string) - the side of the order\n * @param trailPercent100 (number) - the trail percent of the order (scale 100, i.e. 0.5 = 0.5%)\n * @param position_intent (string) - the position intent of the order\n * @param client_order_id (string) - optional client order id\n * @returns The created trailing stop order\n */\n async createTrailingStop(\n symbol: string,\n qty: number,\n side: 'buy' | 'sell',\n trailPercent100: number,\n position_intent: 'buy_to_open' | 'buy_to_close' | 'sell_to_open' | 'sell_to_close',\n client_order_id?: string\n ): Promise<AlpacaOrder> {\n this.log(\n `Creating trailing stop ${side.toUpperCase()} ${qty} shares for ${symbol} with trail percent ${trailPercent100}%`,\n {\n symbol,\n }\n );\n\n const body: CreateOrderParams = {\n symbol,\n qty: Math.abs(qty).toString(),\n side,\n position_intent,\n order_class: 'simple',\n type: 'trailing_stop',\n trail_percent: trailPercent100.toString(),\n time_in_force: 'gtc',\n };\n if (client_order_id !== undefined) {\n body.client_order_id = client_order_id;\n }\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', body, '', {\n action: 'Create trailing stop order',\n symbol,\n });\n }\n\n /**\n * Create a stop order (stop or stop-limit)\n * @param symbol (string) - the symbol of the order\n * @param qty (number) - the quantity of the order\n * @param side (string) - the side of the order\n * @param stopPrice (number) - the stop price that triggers the order\n * @param position_intent (string) - the position intent of the order\n * @param limitPrice (number) - optional limit price (if provided, creates a stop-limit order)\n * @param client_order_id (string) - optional client order id\n * @returns The created stop order\n */\n async createStopOrder(\n symbol: string,\n qty: number,\n side: 'buy' | 'sell',\n stopPrice: number,\n position_intent: 'buy_to_open' | 'buy_to_close' | 'sell_to_open' | 'sell_to_close',\n limitPrice?: number,\n client_order_id?: string\n ): Promise<AlpacaOrder> {\n const isStopLimit = limitPrice !== undefined;\n const orderType = isStopLimit ? 'stop-limit' : 'stop';\n\n this.log(\n `Creating ${orderType} ${side.toUpperCase()} ${qty} shares for ${symbol} with stop price ${stopPrice}${isStopLimit ? ` and limit price ${limitPrice}` : ''}`,\n {\n symbol,\n }\n );\n\n const body: CreateOrderParams = {\n symbol,\n qty: Math.abs(qty).toString(),\n side,\n position_intent,\n order_class: 'simple',\n type: isStopLimit ? 'stop_limit' : 'stop',\n stop_price: this.roundPriceForAlpaca(stopPrice).toString(),\n time_in_force: 'gtc',\n };\n\n if (limitPrice !== undefined) {\n body.limit_price = this.roundPriceForAlpaca(limitPrice).toString();\n }\n\n if (client_order_id !== undefined) {\n body.client_order_id = client_order_id;\n }\n\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', body, '', {\n action: `Create ${orderType} order`,\n symbol,\n });\n }\n\n /**\n * Create a market order\n * @param symbol (string) - the symbol of the order\n * @param qty (number) - the quantity of the order\n * @param side (string) - the side of the order\n * @param position_intent (string) - the position intent of the order. Important for knowing if a position needs a trailing stop.\n * @param client_order_id (string) - optional client order id\n */\n async createMarketOrder(\n symbol: string,\n qty: number,\n side: 'buy' | 'sell',\n position_intent: 'buy_to_open' | 'buy_to_close' | 'sell_to_open' | 'sell_to_close',\n client_order_id?: string\n ): Promise<AlpacaOrder> {\n this.log(`Creating market order for ${symbol}: ${side} ${qty} shares (${position_intent})`, {\n symbol,\n });\n\n const body: CreateOrderParams = {\n symbol,\n qty: Math.abs(qty).toString(),\n side,\n position_intent,\n type: 'market',\n time_in_force: 'day',\n order_class: 'simple',\n };\n if (client_order_id !== undefined) {\n body.client_order_id = client_order_id;\n }\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', body, '', {\n action: 'Create market order',\n symbol,\n });\n }\n\n /**\n * Create a Market on Open (MOO) order - executes in the opening auction\n *\n * IMPORTANT TIMING CONSTRAINTS:\n * - Valid submission window: After 7:00pm ET and before 9:28am ET\n * - Orders submitted between 9:28am and 7:00pm ET will be REJECTED\n * - Orders submitted after 7:00pm ET are queued for the next trading day's opening auction\n * - Example: An order at 8:00pm Monday will execute at Tuesday's market open (9:30am)\n *\n * @param symbol - The symbol of the order\n * @param qty - The quantity of shares\n * @param side - Buy or sell\n * @param position_intent - The position intent (buy_to_open, sell_to_close, etc.)\n * @param client_order_id - Optional client order id\n * @returns The created order\n */\n async createMOOOrder(\n symbol: string,\n qty: number,\n side: 'buy' | 'sell',\n position_intent: 'buy_to_open' | 'buy_to_close' | 'sell_to_open' | 'sell_to_close',\n client_order_id?: string\n ): Promise<AlpacaOrder> {\n this.log(`Creating Market on Open order for ${symbol}: ${side} ${qty} shares (${position_intent})`, {\n symbol,\n });\n\n const body: CreateOrderParams = {\n symbol,\n qty: Math.abs(qty).toString(),\n side,\n position_intent,\n type: 'market',\n time_in_force: 'opg',\n order_class: 'simple',\n };\n if (client_order_id !== undefined) {\n body.client_order_id = client_order_id;\n }\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', body, '', {\n action: 'Create market on open order',\n symbol,\n });\n }\n\n /**\n * Create a Market on Close (MOC) order - executes in the closing auction\n *\n * IMPORTANT TIMING CONSTRAINTS:\n * - Valid submission window: After 7:00pm ET (previous day) and before 3:50pm ET (same day)\n * - Orders submitted between 3:50pm and 7:00pm ET will be REJECTED\n * - Orders submitted after 7:00pm ET are queued for the next trading day's closing auction\n * - Example: An order at 8:00pm Monday will execute at Tuesday's market close (4:00pm)\n *\n * @param symbol - The symbol of the order\n * @param qty - The quantity of shares\n * @param side - Buy or sell\n * @param position_intent - The position intent (buy_to_open, sell_to_close, etc.)\n * @param client_order_id - Optional client order id\n * @returns The created order\n */\n async createMOCOrder(\n symbol: string,\n qty: number,\n side: 'buy' | 'sell',\n position_intent: 'buy_to_open' | 'buy_to_close' | 'sell_to_open' | 'sell_to_close',\n client_order_id?: string\n ): Promise<AlpacaOrder> {\n this.log(`Creating Market on Close order for ${symbol}: ${side} ${qty} shares (${position_intent})`, {\n symbol,\n });\n\n const body: CreateOrderParams = {\n symbol,\n qty: Math.abs(qty).toString(),\n side,\n position_intent,\n type: 'market',\n time_in_force: 'cls',\n order_class: 'simple',\n };\n if (client_order_id !== undefined) {\n body.client_order_id = client_order_id;\n }\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', body, '', {\n action: 'Create market on close order',\n symbol,\n });\n }\n\n /**\n * Create an OCO (One-Cancels-Other) order with take profit and stop loss\n * @param symbol (string) - the symbol of the order\n * @param qty (number) - the quantity of the order\n * @param side (string) - the side of the order (buy or sell)\n * @param position_intent (string) - the position intent of the order\n * @param limitPrice (number) - the limit price for the entry order (OCO orders must be limit orders)\n * @param takeProfitPrice (number) - the take profit price\n * @param stopLossPrice (number) - the stop loss price\n * @param stopLossLimitPrice (number) - optional limit price for stop loss (creates stop-limit instead of stop)\n * @param client_order_id (string) - optional client order id\n * @returns The created OCO order\n */\n async createOCOOrder(\n symbol: string,\n qty: number,\n side: 'buy' | 'sell',\n position_intent: 'buy_to_open' | 'buy_to_close' | 'sell_to_open' | 'sell_to_close',\n limitPrice: number,\n takeProfitPrice: number,\n stopLossPrice: number,\n stopLossLimitPrice?: number,\n client_order_id?: string\n ): Promise<AlpacaOrder> {\n this.log(\n `Creating OCO order ${side.toUpperCase()} ${qty} shares for ${symbol} at limit ${limitPrice} with take profit ${takeProfitPrice} and stop loss ${stopLossPrice}`,\n {\n symbol,\n }\n );\n\n const body: CreateOrderParams = {\n symbol,\n qty: Math.abs(qty).toString(),\n side,\n position_intent,\n order_class: 'oco',\n type: 'limit',\n limit_price: this.roundPriceForAlpaca(limitPrice).toString(),\n time_in_force: 'gtc',\n take_profit: {\n limit_price: this.roundPriceForAlpaca(takeProfitPrice).toString(),\n },\n stop_loss: {\n stop_price: this.roundPriceForAlpaca(stopLossPrice).toString(),\n },\n };\n\n // If stop loss limit price is provided, create stop-limit order\n if (stopLossLimitPrice !== undefined) {\n body.stop_loss = {\n stop_price: this.roundPriceForAlpaca(stopLossPrice).toString(),\n limit_price: this.roundPriceForAlpaca(stopLossLimitPrice).toString(),\n };\n }\n\n if (client_order_id !== undefined) {\n body.client_order_id = client_order_id;\n }\n\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', body, '', {\n action: 'Create OCO order',\n symbol,\n });\n }\n\n /**\n * Get the current trail percent for a symbol, assuming that it has an open position and a trailing stop order to close it. Because this relies on an orders request for one symbol, you can't do it too often.\n * @param symbol (string) - the symbol of the order\n * @returns the current trail percent\n */\n async getCurrentTrailPercent(symbol: string): Promise<number | null> {\n const orders = await this.getOrders({\n status: 'open',\n symbols: [symbol],\n });\n\n const trailingStopOrder = orders.find(\n (order) =>\n order.type === 'trailing_stop' &&\n (order.position_intent === 'sell_to_close' || order.position_intent === 'buy_to_close')\n );\n\n if (!trailingStopOrder) {\n this.log(`No closing trailing stop order found for ${symbol}`, {\n symbol,\n });\n return null;\n }\n\n if (!trailingStopOrder.trail_percent) {\n this.log(`Trailing stop order found for ${symbol} but no trail_percent value`, {\n symbol,\n });\n return null;\n }\n\n const trailPercent = parseFloat(trailingStopOrder.trail_percent);\n return trailPercent;\n }\n\n /**\n * Update the trail percent for a trailing stop order\n * @param symbol (string) - the symbol of the order\n * @param trailPercent100 (number) - the trail percent of the order (scale 100, i.e. 0.5 = 0.5%)\n */\n async updateTrailingStop(symbol: string, trailPercent100: number): Promise<void> {\n // First get all open orders for this symbol\n const orders = await this.getOrders({\n status: 'open',\n symbols: [symbol],\n });\n\n // Find the trailing stop order\n const trailingStopOrder = orders.find((order) => order.type === 'trailing_stop');\n\n if (!trailingStopOrder) {\n this.log(`No open trailing stop order found for ${symbol}`, { type: 'error', symbol });\n return;\n }\n\n // Check if the trail_percent is already set to the desired value\n const currentTrailPercent = trailingStopOrder.trail_percent ? parseFloat(trailingStopOrder.trail_percent) : null;\n\n // Compare with a small epsilon to handle floating point precision\n const epsilon = 0.0001;\n if (currentTrailPercent !== null && Math.abs(currentTrailPercent - trailPercent100) < epsilon) {\n this.log(\n `Trailing stop for ${symbol} already set to ${trailPercent100}% (current: ${currentTrailPercent}%), skipping update`,\n {\n symbol,\n }\n );\n return;\n }\n\n this.log(`Updating trailing stop for ${symbol} from ${currentTrailPercent}% to ${trailPercent100}%`, {\n symbol,\n });\n\n await this.makeRequest<AlpacaOrder>(\n `/orders/${trailingStopOrder.id}`,\n 'PATCH',\n { trail: trailPercent100.toString() },\n '',\n {\n action: 'Update trailing stop order',\n symbol,\n }\n );\n }\n\n /**\n * Cancel all open orders\n */\n async cancelAllOrders(): Promise<void> {\n this.log(`Canceling all open orders`);\n try {\n await this.makeRequest<null>('/orders', 'DELETE', undefined, '', {\n action: 'Cancel all open orders',\n });\n } catch (error) {\n if (!(error instanceof AlpacaRequestError)) {\n this.log(`Error canceling all orders: ${error instanceof Error ? error.message : `${error}`}`, {\n type: 'error',\n });\n }\n }\n }\n\n /**\n * Cancel a specific order by its ID\n * @param orderId The id of the order to cancel\n * @throws Error if the order is not cancelable (status 422) or if the order doesn't exist\n * @returns Promise that resolves when the order is successfully canceled\n */\n async cancelOrder(orderId: string): Promise<void> {\n this.log(`Attempting to cancel order ${orderId}`);\n\n try {\n await this.makeRequest<null>(`/orders/${orderId}`, 'DELETE', undefined, '', {\n action: `Cancel order ${orderId}`,\n });\n this.log(`Successfully canceled order ${orderId}`);\n } catch (error) {\n // If the error is a 422, it means the order is not cancelable\n if (error instanceof AlpacaRequestError && error.status === 422) {\n throw new Error(`Order ${orderId} is not cancelable`);\n }\n // Re-throw other errors\n throw error;\n }\n }\n\n /**\n * Create a limit order\n * @param symbol (string) - the symbol of the order\n * @param qty (number) - the quantity of the order\n * @param side (string) - the side of the order\n * @param limitPrice (number) - the limit price of the order\n * @param position_intent (string) - the position intent of the order\n * @param extended_hours (boolean) - whether the order is in extended hours\n * @param client_order_id (string) - the client order id of the order\n */\n async createLimitOrder(\n symbol: string,\n qty: number,\n side: 'buy' | 'sell',\n limitPrice: number,\n position_intent: 'buy_to_open' | 'buy_to_close' | 'sell_to_open' | 'sell_to_close',\n extended_hours: boolean = false,\n client_order_id?: string\n ): Promise<AlpacaOrder> {\n this.log(\n `Creating limit order for ${symbol}: ${side} ${qty} shares at $${limitPrice.toFixed(2)} (${position_intent})`,\n {\n symbol,\n }\n );\n\n const body: CreateOrderParams = {\n symbol,\n qty: Math.abs(qty).toString(),\n side,\n position_intent,\n type: 'limit',\n limit_price: this.roundPriceForAlpaca(limitPrice).toString(),\n time_in_force: 'day',\n order_class: 'simple',\n extended_hours,\n };\n if (client_order_id !== undefined) {\n body.client_order_id = client_order_id;\n }\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', body, '', {\n action: 'Create limit order',\n symbol,\n });\n }\n\n /**\n * Close all equities positions\n * @param options (object) - the options for closing the positions\n * - cancel_orders (boolean) - whether to cancel related orders\n * - useLimitOrders (boolean) - whether to use limit orders to close the positions\n */\n async closeAllPositions(\n options: { cancel_orders: boolean; useLimitOrders: boolean } = { cancel_orders: true, useLimitOrders: false }\n ): Promise<void> {\n this.log(\n `Closing all positions${options.useLimitOrders ? ' using limit orders' : ''}${\n options.cancel_orders ? ' and canceling open orders' : ''\n }`\n );\n\n if (options.useLimitOrders) {\n // Get all positions\n const positions = await this.getPositions('us_equity');\n\n if (positions.length === 0) {\n this.log('No positions to close');\n return;\n }\n\n this.log(`Found ${positions.length} positions to close`);\n\n // Get latest quotes for all positions\n const symbols = positions.map((position) => position.symbol);\n const quotesResponse = await marketDataAPI.getLatestQuotes(symbols);\n\n const lengthOfQuotes = Object.keys(quotesResponse.quotes).length;\n if (lengthOfQuotes === 0) {\n this.log('No quotes available for positions, received 0 quotes', {\n type: 'error',\n });\n return;\n }\n\n if (lengthOfQuotes !== positions.length) {\n this.log(\n `Received ${lengthOfQuotes} quotes for ${positions.length} positions, expected ${positions.length} quotes`,\n { type: 'warn' }\n );\n return;\n }\n\n // Create limit orders to close each position\n for (const position of positions) {\n const quote = quotesResponse.quotes[position.symbol];\n if (!quote) {\n this.log(`No quote available for ${position.symbol}, skipping limit order`, {\n symbol: position.symbol,\n type: 'warn',\n });\n continue;\n }\n\n const qty = Math.abs(parseFloat(position.qty));\n const side = position.side === 'long' ? 'sell' : 'buy';\n const positionIntent = side === 'sell' ? 'sell_to_close' : 'buy_to_close';\n\n // Get the current price from the quote\n const currentPrice = side === 'sell' ? quote.bp : quote.ap; // Use bid for sells, ask for buys\n\n if (!currentPrice) {\n this.log(`No valid price available for ${position.symbol}, skipping limit order`, {\n symbol: position.symbol,\n type: 'warn',\n });\n continue;\n }\n\n // Apply slippage from config\n const limitSlippagePercent1 = limitPriceSlippagePercent100 / 100;\n const limitPrice =\n side === 'sell'\n ? this.roundPriceForAlpaca(currentPrice * (1 - limitSlippagePercent1)) // Sell slightly lower\n : this.roundPriceForAlpaca(currentPrice * (1 + limitSlippagePercent1)); // Buy slightly higher\n\n this.log(\n `Creating limit order to close ${position.symbol} position: ${side} ${qty} shares at $${limitPrice.toFixed(\n 2\n )}`,\n {\n symbol: position.symbol,\n }\n );\n\n await this.createLimitOrder(position.symbol, qty, side, limitPrice, positionIntent);\n }\n } else {\n await this.makeRequest<null>('/positions', 'DELETE', undefined, options.cancel_orders ? '?cancel_orders=true' : '', {\n action: 'Close all positions',\n });\n }\n }\n\n /**\n * Close all equities positions using limit orders during extended hours trading\n * @param cancelOrders Whether to cancel related orders (default: true)\n * @returns Promise that resolves when all positions are closed\n */\n async closeAllPositionsAfterHours(): Promise<void> {\n this.log('Closing all positions using limit orders during extended hours trading');\n\n // Get all positions\n const positions = await this.getPositions();\n this.log(`Found ${positions.length} positions to close`);\n\n if (positions.length === 0) {\n this.log('No positions to close');\n return;\n }\n\n await this.cancelAllOrders();\n this.log(`Cancelled all open orders`);\n\n // Get latest quotes for all positions\n const symbols = positions.map((position) => position.symbol);\n const quotesResponse = await marketDataAPI.getLatestQuotes(symbols);\n\n // Create limit orders to close each position\n for (const position of positions) {\n const quote = quotesResponse.quotes[position.symbol];\n if (!quote) {\n this.log(`No quote available for ${position.symbol}, skipping limit order`, {\n symbol: position.symbol,\n type: 'warn',\n });\n continue;\n }\n\n const qty = Math.abs(parseFloat(position.qty));\n const side = position.side === 'long' ? 'sell' : 'buy';\n const positionIntent = side === 'sell' ? 'sell_to_close' : 'buy_to_close';\n\n // Get the current price from the quote\n const currentPrice = side === 'sell' ? quote.bp : quote.ap; // Use bid for sells, ask for buys\n\n if (!currentPrice) {\n this.log(`No valid price available for ${position.symbol}, skipping limit order`, {\n symbol: position.symbol,\n type: 'warn',\n });\n continue;\n }\n\n // Apply slippage from config\n const limitSlippagePercent1 = limitPriceSlippagePercent100 / 100;\n const limitPrice =\n side === 'sell'\n ? this.roundPriceForAlpaca(currentPrice * (1 - limitSlippagePercent1)) // Sell slightly lower\n : this.roundPriceForAlpaca(currentPrice * (1 + limitSlippagePercent1)); // Buy slightly higher\n\n this.log(\n `Creating extended hours limit order to close ${\n position.symbol\n } position: ${side} ${qty} shares at $${limitPrice.toFixed(2)}`,\n {\n symbol: position.symbol,\n }\n );\n\n await this.createLimitOrder(\n position.symbol,\n qty,\n side,\n limitPrice,\n positionIntent,\n true // Enable extended hours trading\n );\n }\n\n this.log(`All positions closed: ${positions.map((p) => p.symbol).join(', ')}`);\n }\n\n onTradeUpdate(callback: (update: TradeUpdate) => void): void {\n this.tradeUpdateCallback = callback;\n }\n\n /**\n * Get portfolio history for the account\n * @param params Parameters for the portfolio history request\n * @returns Portfolio history data\n */\n async getPortfolioHistory(params: {\n timeframe?: '1Min' | '5Min' | '15Min' | '1H' | '1D';\n period?: string;\n start?: string; // Start date in ISO format\n end?: string; // End date in ISO format\n extended_hours?: boolean;\n date_end?: string;\n }): Promise<PortfolioHistoryResponse> {\n const queryParams = new URLSearchParams();\n if (params.timeframe) queryParams.append('timeframe', params.timeframe);\n if (params.period) queryParams.append('period', params.period);\n if (params.extended_hours !== undefined) queryParams.append('extended_hours', params.extended_hours.toString());\n if (params.start) queryParams.append('start', params.start);\n if (params.end) queryParams.append('end', params.end);\n if (params.date_end) queryParams.append('date_end', params.date_end);\n\n const response = await this.makeRequest<PortfolioHistoryResponse>(\n `/account/portfolio/history?${queryParams.toString()}`,\n 'GET',\n undefined,\n '',\n {\n action: 'Get portfolio history',\n }\n );\n return response;\n }\n\n /**\n * Get portfolio daily history for the account, ensuring the most recent day is included\n * by combining daily and hourly history if needed.\n *\n * This function performs two API calls:\n * 1. Retrieves daily portfolio history\n * 2. Retrieves hourly portfolio history to check for more recent data\n *\n * If hourly history has timestamps more recent than the last timestamp in daily history,\n * it appends one additional day to the daily history using the most recent hourly values.\n *\n * @param params Parameters for the portfolio history request (same as getPortfolioHistory except timeframe is forced to '1D')\n * @returns Portfolio history data with daily timeframe, including the most recent day if available from hourly data\n */\n async getPortfolioDailyHistory(params: {\n period?: string;\n start?: string; // Start date in ISO format\n end?: string; // End date in ISO format\n extended_hours?: boolean;\n date_end?: string;\n }): Promise<PortfolioHistoryResponse> {\n // Get daily and hourly history in parallel\n const dailyParams = { ...params, timeframe: '1D' as const };\n const hourlyParams = { timeframe: '1Min' as const, period: '1D' };\n\n const [dailyHistory, hourlyHistory] = await Promise.all([\n this.getPortfolioHistory(dailyParams),\n this.getPortfolioHistory(hourlyParams),\n ]);\n\n // If no hourly history, return daily as-is\n if (!hourlyHistory.timestamp || hourlyHistory.timestamp.length === 0) {\n return dailyHistory;\n }\n\n // Get the last timestamp from daily history\n const lastDailyTimestamp = dailyHistory.timestamp[dailyHistory.timestamp.length - 1];\n\n // Check if hourly history has more recent data\n const recentHourlyData = hourlyHistory.timestamp\n .map((timestamp, index) => ({ timestamp, index }))\n .filter(({ timestamp }) => timestamp > lastDailyTimestamp);\n\n // If no more recent hourly data, return daily history as-is\n if (recentHourlyData.length === 0) {\n return dailyHistory;\n }\n\n // Get the most recent hourly data point\n const mostRecentHourly = recentHourlyData[recentHourlyData.length - 1];\n const mostRecentIndex = mostRecentHourly.index;\n\n // Calculate the timestamp for the new daily entry.\n // Alpaca's daily history timestamps are at 00:00:00Z for the calendar day\n // following the NY trading date. Derive the trading date in NY time from the\n // most recent intraday timestamp, then set the new daily timestamp to\n // midnight UTC of the next calendar day.\n const mostRecentMs = mostRecentHourly.timestamp * 1000; // hourly timestamps are seconds\n const tradingDateStr = getTradingDate(new Date(mostRecentMs)); // e.g., '2025-09-05' (NY trading date)\n const [yearStr, monthStr, dayStr] = tradingDateStr.split('-');\n const year = Number(yearStr);\n const month = Number(monthStr); // 1-based\n const day = Number(dayStr);\n const newDailyTimestamp = Math.floor(Date.UTC(year, month - 1, day + 1, 0, 0, 0, 0) / 1000);\n\n // Create a new daily history entry with the most recent hourly values\n const updatedDailyHistory: PortfolioHistoryResponse = {\n ...dailyHistory,\n timestamp: [...dailyHistory.timestamp, newDailyTimestamp],\n equity: [...dailyHistory.equity, hourlyHistory.equity[mostRecentIndex]],\n profit_loss: [...dailyHistory.profit_loss, hourlyHistory.profit_loss[mostRecentIndex]],\n profit_loss_pct: [...dailyHistory.profit_loss_pct, hourlyHistory.profit_loss_pct[mostRecentIndex]],\n };\n\n return updatedDailyHistory;\n }\n\n /**\n * Get option contracts based on specified parameters\n * @param params Parameters to filter option contracts\n * @returns Option contracts matching the criteria\n */\n async getOptionContracts(params: GetOptionContractsParams): Promise<OptionContractsResponse> {\n const queryParams = new URLSearchParams();\n\n queryParams.append('underlying_symbols', params.underlying_symbols.join(','));\n\n if (params.expiration_date_gte) queryParams.append('expiration_date_gte', params.expiration_date_gte);\n if (params.expiration_date_lte) queryParams.append('expiration_date_lte', params.expiration_date_lte);\n if (params.strike_price_gte) queryParams.append('strike_price_gte', params.strike_price_gte);\n if (params.strike_price_lte) queryParams.append('strike_price_lte', params.strike_price_lte);\n if (params.type) queryParams.append('type', params.type);\n if (params.status) queryParams.append('status', params.status);\n if (params.limit) queryParams.append('limit', params.limit.toString());\n if (params.page_token) queryParams.append('page_token', params.page_token);\n\n this.log(`Fetching option contracts for ${params.underlying_symbols.join(', ')}`, {\n symbol: params.underlying_symbols.join(', '),\n });\n\n const response = await this.makeRequest<OptionContractsResponse>(\n `/options/contracts?${queryParams.toString()}`,\n 'GET',\n undefined,\n '',\n {\n action: 'Get option contracts',\n symbol: params.underlying_symbols.join(', '),\n }\n );\n this.log(`Found ${response.option_contracts.length} option contracts`, {\n symbol: params.underlying_symbols.join(', '),\n });\n return response;\n }\n\n /**\n * Get a specific option contract by symbol or ID\n * @param symbolOrId The symbol or ID of the option contract\n * @returns The option contract details\n */\n async getOptionContract(symbolOrId: string): Promise<OptionContract> {\n this.log(`Fetching option contract details for ${symbolOrId}`, {\n symbol: symbolOrId,\n });\n const response = await this.makeRequest<OptionContract>(`/options/contracts/${symbolOrId}`, 'GET', undefined, '', {\n action: 'Get option contract details',\n symbol: symbolOrId,\n });\n this.log(`Found option contract details for ${symbolOrId}: ${response.name}`, {\n symbol: symbolOrId,\n });\n return response;\n }\n\n /**\n * Create a simple option order (market or limit)\n * @param symbol Option contract symbol\n * @param qty Quantity of contracts (must be a whole number)\n * @param side Buy or sell\n * @param position_intent Position intent (buy_to_open, buy_to_close, sell_to_open, sell_to_close)\n * @param type Order type (market or limit)\n * @param limitPrice Limit price (required for limit orders)\n * @returns The created order\n */\n async createOptionOrder(\n symbol: string,\n qty: number,\n side: 'buy' | 'sell',\n position_intent: 'buy_to_open' | 'buy_to_close' | 'sell_to_open' | 'sell_to_close',\n type: 'market' | 'limit',\n limitPrice?: number\n ): Promise<AlpacaOrder> {\n if (!Number.isInteger(qty) || qty <= 0) {\n this.log('Quantity must be a positive whole number for option orders', { symbol, type: 'error' });\n }\n\n if (type === 'limit' && limitPrice === undefined) {\n this.log('Limit price is required for limit orders', { symbol, type: 'error' });\n }\n\n this.log(\n `Creating ${type} option order for ${symbol}: ${side} ${qty} contracts (${position_intent})${\n type === 'limit' ? ` at $${limitPrice?.toFixed(2)}` : ''\n }`,\n {\n symbol,\n }\n );\n\n const orderData: CreateOrderParams = {\n symbol,\n qty: qty.toString(),\n side,\n position_intent,\n type,\n time_in_force: 'day',\n order_class: 'simple',\n extended_hours: false,\n };\n\n if (type === 'limit' && limitPrice !== undefined) {\n orderData.limit_price = this.roundPriceForAlpaca(limitPrice).toString();\n }\n\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', orderData, '', {\n action: 'Create option order',\n symbol,\n });\n }\n\n /**\n * Create a multi-leg option order\n * @param legs Array of order legs\n * @param qty Quantity of the multi-leg order (must be a whole number)\n * @param type Order type (market or limit)\n * @param limitPrice Limit price (required for limit orders)\n * @returns The created multi-leg order\n */\n async createMultiLegOptionOrder(\n legs: OrderLeg[],\n qty: number,\n type: 'market' | 'limit',\n limitPrice?: number\n ): Promise<AlpacaOrder> {\n const legSymbols = legs.map((leg) => leg.symbol).join(', ');\n\n if (!Number.isInteger(qty) || qty <= 0) {\n this.log('Quantity must be a positive whole number for option orders', {\n symbol: legSymbols,\n type: 'error',\n });\n }\n\n if (type === 'limit' && limitPrice === undefined) {\n this.log('Limit price is required for limit orders', { symbol: legSymbols, type: 'error' });\n }\n\n if (legs.length < 2) {\n this.log('Multi-leg orders require at least 2 legs', { symbol: legSymbols, type: 'error' });\n }\n\n this.log(\n `Creating multi-leg ${type} option order with ${legs.length} legs (${legSymbols})${\n type === 'limit' ? ` at $${limitPrice?.toFixed(2)}` : ''\n }`,\n {\n symbol: legSymbols,\n }\n );\n\n const orderData: CreateMultiLegOrderParams = {\n order_class: 'mleg',\n qty: qty.toString(),\n type,\n time_in_force: 'day',\n legs,\n };\n\n if (type === 'limit' && limitPrice !== undefined) {\n orderData.limit_price = this.roundPriceForAlpaca(limitPrice).toString();\n }\n\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', orderData, '', {\n action: 'Create multi-leg option order',\n symbol: legSymbols,\n });\n }\n\n /**\n * Exercise an option contract\n * @param symbolOrContractId The symbol or ID of the option contract to exercise\n * @returns Response from the exercise request\n */\n async exerciseOption(symbolOrContractId: string): Promise<null> {\n this.log(`Exercising option contract ${symbolOrContractId}`, {\n symbol: symbolOrContractId,\n });\n return this.makeRequest<null>(`/positions/${symbolOrContractId}/exercise`, 'POST', undefined, '', {\n action: 'Exercise option contract',\n symbol: symbolOrContractId,\n });\n }\n\n /**\n * Get option positions\n * @returns Array of option positions\n */\n async getOptionPositions(): Promise<AlpacaPosition[]> {\n this.log('Fetching option positions');\n const positions = await this.getPositions('us_option');\n return positions;\n }\n\n async getOptionsOpenSpreadTrades(): Promise<void> {\n this.log('Fetching option open trades');\n // this function will get all open positions, extract the symbol and see when they were created.\n // figures out when the earliest date was (should be today)\n // then it pulls all orders after the earliest date that were closed and that were of class 'mleg'\n // Each of these contains two orders. they look like this:\n }\n\n /**\n * Get option account activities (exercises, assignments, expirations)\n * @param activityType Type of option activity to filter by\n * @param date Date to filter activities (YYYY-MM-DD format)\n * @returns Array of option account activities\n */\n async getOptionActivities(\n activityType?: 'OPEXC' | 'OPASN' | 'OPEXP',\n date?: string\n ): Promise<OptionAccountActivity[]> {\n const queryParams = new URLSearchParams();\n\n if (activityType) {\n queryParams.append('activity_types', activityType);\n } else {\n queryParams.append('activity_types', 'OPEXC,OPASN,OPEXP');\n }\n\n if (date) {\n queryParams.append('date', date);\n }\n\n this.log(\n `Fetching option activities${activityType ? ` of type ${activityType}` : ''}${date ? ` for date ${date}` : ''}`\n );\n\n return this.makeRequest<OptionAccountActivity[]>(`/account/activities?${queryParams.toString()}`, 'GET', undefined, '', {\n action: 'Get option activities',\n });\n }\n\n /**\n * Create a long call spread (buy lower strike call, sell higher strike call)\n * @param lowerStrikeCallSymbol Symbol of the lower strike call option\n * @param higherStrikeCallSymbol Symbol of the higher strike call option\n * @param qty Quantity of spreads to create (must be a whole number)\n * @param limitPrice Limit price for the spread\n * @returns The created multi-leg order\n */\n async createLongCallSpread(\n lowerStrikeCallSymbol: string,\n higherStrikeCallSymbol: string,\n qty: number,\n limitPrice: number\n ): Promise<AlpacaOrder> {\n this.log(\n `Creating long call spread: Buy ${lowerStrikeCallSymbol}, Sell ${higherStrikeCallSymbol}, Qty: ${qty}, Price: $${limitPrice.toFixed(\n 2\n )}`,\n {\n symbol: `${lowerStrikeCallSymbol},${higherStrikeCallSymbol}`,\n }\n );\n\n const legs: OrderLeg[] = [\n {\n symbol: lowerStrikeCallSymbol,\n ratio_qty: '1',\n side: 'buy',\n position_intent: 'buy_to_open',\n },\n {\n symbol: higherStrikeCallSymbol,\n ratio_qty: '1',\n side: 'sell',\n position_intent: 'sell_to_open',\n },\n ];\n\n return this.createMultiLegOptionOrder(legs, qty, 'limit', limitPrice);\n }\n\n /**\n * Create a long put spread (buy higher strike put, sell lower strike put)\n * @param higherStrikePutSymbol Symbol of the higher strike put option\n * @param lowerStrikePutSymbol Symbol of the lower strike put option\n * @param qty Quantity of spreads to create (must be a whole number)\n * @param limitPrice Limit price for the spread\n * @returns The created multi-leg order\n */\n async createLongPutSpread(\n higherStrikePutSymbol: string,\n lowerStrikePutSymbol: string,\n qty: number,\n limitPrice: number\n ): Promise<AlpacaOrder> {\n this.log(\n `Creating long put spread: Buy ${higherStrikePutSymbol}, Sell ${lowerStrikePutSymbol}, Qty: ${qty}, Price: $${limitPrice.toFixed(\n 2\n )}`,\n {\n symbol: `${higherStrikePutSymbol},${lowerStrikePutSymbol}`,\n }\n );\n\n const legs: OrderLeg[] = [\n {\n symbol: higherStrikePutSymbol,\n ratio_qty: '1',\n side: 'buy',\n position_intent: 'buy_to_open',\n },\n {\n symbol: lowerStrikePutSymbol,\n ratio_qty: '1',\n side: 'sell',\n position_intent: 'sell_to_open',\n },\n ];\n\n return this.createMultiLegOptionOrder(legs, qty, 'limit', limitPrice);\n }\n\n /**\n * Create an iron condor (sell call spread and put spread)\n * @param longPutSymbol Symbol of the lower strike put (long)\n * @param shortPutSymbol Symbol of the higher strike put (short)\n * @param shortCallSymbol Symbol of the lower strike call (short)\n * @param longCallSymbol Symbol of the higher strike call (long)\n * @param qty Quantity of iron condors to create (must be a whole number)\n * @param limitPrice Limit price for the iron condor (credit)\n * @returns The created multi-leg order\n */\n async createIronCondor(\n longPutSymbol: string,\n shortPutSymbol: string,\n shortCallSymbol: string,\n longCallSymbol: string,\n qty: number,\n limitPrice: number\n ): Promise<AlpacaOrder> {\n this.log(`Creating iron condor with ${qty} contracts at $${limitPrice.toFixed(2)}`, {\n symbol: `${longPutSymbol},${shortPutSymbol},${shortCallSymbol},${longCallSymbol}`,\n });\n\n const legs: OrderLeg[] = [\n {\n symbol: longPutSymbol,\n ratio_qty: '1',\n side: 'buy',\n position_intent: 'buy_to_open',\n },\n {\n symbol: shortPutSymbol,\n ratio_qty: '1',\n side: 'sell',\n position_intent: 'sell_to_open',\n },\n {\n symbol: shortCallSymbol,\n ratio_qty: '1',\n side: 'sell',\n position_intent: 'sell_to_open',\n },\n {\n symbol: longCallSymbol,\n ratio_qty: '1',\n side: 'buy',\n position_intent: 'buy_to_open',\n },\n ];\n\n return this.createMultiLegOptionOrder(legs, qty, 'limit', limitPrice);\n }\n\n /**\n * Create a covered call (sell call option against owned stock)\n * @param stockSymbol Symbol of the underlying stock\n * @param callOptionSymbol Symbol of the call option to sell\n * @param qty Quantity of covered calls to create (must be a whole number)\n * @param limitPrice Limit price for the call option\n * @returns The created order\n */\n async createCoveredCall(\n stockSymbol: string,\n callOptionSymbol: string,\n qty: number,\n limitPrice: number\n ): Promise<AlpacaOrder> {\n this.log(\n `Creating covered call: Sell ${callOptionSymbol} against ${stockSymbol}, Qty: ${qty}, Price: $${limitPrice.toFixed(\n 2\n )}`,\n {\n symbol: `${stockSymbol},${callOptionSymbol}`,\n }\n );\n\n // For covered calls, we don't need to include the stock leg if we already own the shares\n // We just create a simple sell order for the call option\n return this.createOptionOrder(callOptionSymbol, qty, 'sell', 'sell_to_open', 'limit', limitPrice);\n }\n\n /**\n * Roll an option position to a new expiration or strike\n * @param currentOptionSymbol Symbol of the current option position\n * @param newOptionSymbol Symbol of the new option to roll to\n * @param qty Quantity of options to roll (must be a whole number)\n * @param currentPositionSide Side of the current position ('buy' or 'sell')\n * @param limitPrice Net limit price for the roll\n * @returns The created multi-leg order\n */\n async rollOptionPosition(\n currentOptionSymbol: string,\n newOptionSymbol: string,\n qty: number,\n currentPositionSide: 'buy' | 'sell',\n limitPrice: number\n ): Promise<AlpacaOrder> {\n this.log(`Rolling ${qty} ${currentOptionSymbol} to ${newOptionSymbol} at net price $${limitPrice.toFixed(2)}`, {\n symbol: `${currentOptionSymbol},${newOptionSymbol}`,\n });\n\n // If current position is long, we need to sell to close and buy to open\n // If current position is short, we need to buy to close and sell to open\n const closePositionSide = currentPositionSide === 'buy' ? 'sell' : 'buy';\n const openPositionSide = currentPositionSide;\n\n const closePositionIntent = closePositionSide === 'buy' ? 'buy_to_close' : 'sell_to_close';\n const openPositionIntent = openPositionSide === 'buy' ? 'buy_to_open' : 'sell_to_open';\n\n const legs: OrderLeg[] = [\n {\n symbol: currentOptionSymbol,\n ratio_qty: '1',\n side: closePositionSide,\n position_intent: closePositionIntent,\n },\n {\n symbol: newOptionSymbol,\n ratio_qty: '1',\n side: openPositionSide,\n position_intent: openPositionIntent,\n },\n ];\n\n return this.createMultiLegOptionOrder(legs, qty, 'limit', limitPrice);\n }\n\n /**\n * Get option chain for a specific underlying symbol and expiration date\n * @param underlyingSymbol The underlying stock symbol\n * @param expirationDate The expiration date (YYYY-MM-DD format)\n * @returns Option contracts for the specified symbol and expiration date\n */\n async getOptionChain(underlyingSymbol: string, expirationDate: string): Promise<OptionContract[]> {\n this.log(`Fetching option chain for ${underlyingSymbol} with expiration date ${expirationDate}`, {\n symbol: underlyingSymbol,\n });\n\n try {\n const params: GetOptionContractsParams = {\n underlying_symbols: [underlyingSymbol],\n expiration_date_gte: expirationDate,\n expiration_date_lte: expirationDate,\n status: 'active',\n limit: 500, // Get a large number to ensure we get all strikes\n };\n\n const response = await this.getOptionContracts(params);\n return response.option_contracts || [];\n } catch (error) {\n if (!(error instanceof AlpacaRequestError)) {\n this.log(\n `Failed to fetch option chain for ${underlyingSymbol}: ${error instanceof Error ? error.message : `${error}`}`,\n {\n type: 'error',\n symbol: underlyingSymbol,\n }\n );\n }\n return [];\n }\n }\n\n /**\n * Get all available expiration dates for a specific underlying symbol\n * @param underlyingSymbol The underlying stock symbol\n * @returns Array of available expiration dates\n */\n async getOptionExpirationDates(underlyingSymbol: string): Promise<string[]> {\n this.log(`Fetching available expiration dates for ${underlyingSymbol}`, {\n symbol: underlyingSymbol,\n });\n\n try {\n const params: GetOptionContractsParams = {\n underlying_symbols: [underlyingSymbol],\n status: 'active',\n limit: 1000, // Get a large number to ensure we get contracts with all expiration dates\n };\n\n const response = await this.getOptionContracts(params);\n\n // Extract unique expiration dates\n const expirationDates = new Set<string>();\n if (response.option_contracts) {\n response.option_contracts.forEach((contract) => {\n expirationDates.add(contract.expiration_date);\n });\n }\n\n // Convert to array and sort\n return Array.from(expirationDates).sort();\n } catch (error) {\n if (!(error instanceof AlpacaRequestError)) {\n this.log(\n `Failed to fetch expiration dates for ${underlyingSymbol}: ${\n error instanceof Error ? error.message : `${error}`\n }`,\n {\n type: 'error',\n symbol: underlyingSymbol,\n }\n );\n }\n return [];\n }\n }\n\n /**\n * Get the current options trading level for the account\n * @returns The options trading level (0-3)\n */\n async getOptionsTradingLevel(): Promise<number> {\n this.log('Fetching options trading level');\n\n const accountDetails = await this.getAccountDetails();\n return accountDetails.options_trading_level || 0;\n }\n\n /**\n * Check if the account has options trading enabled\n * @returns Boolean indicating if options trading is enabled\n */\n async isOptionsEnabled(): Promise<boolean> {\n this.log('Checking if options trading is enabled');\n\n const accountDetails = await this.getAccountDetails();\n\n // Check if options trading level is 2 or higher (Level 2+ allows buying calls/puts)\n // Level 0: Options disabled\n // Level 1: Only covered calls and cash-secured puts\n // Level 2+: Can buy calls and puts (required for executeOptionsOrder)\n const optionsLevel = accountDetails.options_trading_level || 0;\n const isEnabled = optionsLevel >= 2;\n\n this.log(`Options trading level: ${optionsLevel}, enabled: ${isEnabled}`);\n\n return isEnabled;\n }\n\n /**\n * Close all option positions\n * @param cancelOrders Whether to cancel related orders (default: true)\n * @returns Response from the close positions request\n */\n async closeAllOptionPositions(cancelOrders: boolean = true): Promise<void> {\n this.log(`Closing all option positions${cancelOrders ? ' and canceling related orders' : ''}`);\n\n const optionPositions = await this.getOptionPositions();\n\n if (optionPositions.length === 0) {\n this.log('No option positions to close');\n return;\n }\n\n // Create market orders to close each position\n for (const position of optionPositions) {\n const side = position.side === 'long' ? 'sell' : 'buy';\n const positionIntent = side === 'sell' ? 'sell_to_close' : 'buy_to_close';\n\n this.log(`Closing ${position.side} position of ${position.qty} contracts for ${position.symbol}`, {\n symbol: position.symbol,\n });\n\n await this.createOptionOrder(position.symbol, parseInt(position.qty), side, positionIntent, 'market');\n }\n\n if (cancelOrders) {\n // Get all open option orders\n const orders = await this.getOrders({ status: 'open' });\n const optionOrders = orders.filter((order) => order.asset_class === 'us_option');\n\n // Cancel each open option order\n for (const order of optionOrders) {\n this.log(`Canceling open order for ${order.symbol}`, {\n symbol: order.symbol,\n });\n await this.makeRequest<null>(`/orders/${order.id}`, 'DELETE', undefined, '', {\n action: `Cancel option order ${order.id}`,\n symbol: order.symbol,\n });\n }\n }\n }\n\n /**\n * Close a specific option position\n * @param symbol The option contract symbol\n * @param qty Optional quantity to close (defaults to entire position)\n * @returns The created order\n */\n async closeOptionPosition(symbol: string, qty?: number): Promise<AlpacaOrder> {\n this.log(`Closing option position for ${symbol}${qty ? ` (${qty} contracts)` : ''}`, {\n symbol,\n });\n\n // Get the position details\n const positions = await this.getOptionPositions();\n const position = positions.find((p) => p.symbol === symbol);\n\n if (!position) {\n throw new Error(`No position found for option contract ${symbol}`);\n }\n\n const quantityToClose = qty || parseInt(position.qty);\n const side = position.side === 'long' ? 'sell' : 'buy';\n const positionIntent = side === 'sell' ? 'sell_to_close' : 'buy_to_close';\n\n return this.createOptionOrder(symbol, quantityToClose, side, positionIntent, 'market');\n }\n\n /**\n * Create a complete equities trade with optional stop loss and take profit\n * @param params Trade parameters including symbol, qty, side, and optional referencePrice\n * @param options Trade options including order type, extended hours, stop loss, and take profit settings\n * @returns The created order\n */\n async createEquitiesTrade(\n params: {\n symbol: string;\n qty: number;\n side: 'buy' | 'sell';\n referencePrice?: number;\n },\n options?: EquitiesTradeOptions\n ): Promise<AlpacaOrder> {\n const { symbol, qty, side, referencePrice } = params;\n const {\n type = 'market',\n limitPrice,\n extendedHours = false,\n useStopLoss = false,\n stopPrice,\n stopPercent100,\n useTakeProfit = false,\n takeProfitPrice,\n takeProfitPercent100,\n clientOrderId,\n } = options || {};\n\n // Validation: Extended hours + market order is not allowed\n if (extendedHours && type === 'market') {\n this.log('Cannot create market order with extended hours enabled', {\n symbol,\n type: 'error',\n });\n throw new Error('Cannot create market order with extended hours enabled');\n }\n\n // Validation: Limit orders require limit price\n if (type === 'limit' && limitPrice === undefined) {\n this.log('Limit price is required for limit orders', {\n symbol,\n type: 'error',\n });\n throw new Error('Limit price is required for limit orders');\n }\n\n let calculatedStopPrice: number | undefined;\n let calculatedTakeProfitPrice: number | undefined;\n\n // Handle stop loss validation and calculation\n if (useStopLoss) {\n if (stopPrice === undefined && stopPercent100 === undefined) {\n this.log('Either stopPrice or stopPercent100 must be provided when useStopLoss is true', {\n symbol,\n type: 'error',\n });\n throw new Error('Either stopPrice or stopPercent100 must be provided when useStopLoss is true');\n }\n\n if (stopPercent100 !== undefined) {\n if (referencePrice === undefined) {\n this.log('referencePrice is required when using stopPercent100', {\n symbol,\n type: 'error',\n });\n throw new Error('referencePrice is required when using stopPercent100');\n }\n\n // Calculate stop price based on percentage and side\n const stopPercentDecimal = stopPercent100 / 100;\n if (side === 'buy') {\n // For buy orders, stop loss is below the reference price\n calculatedStopPrice = referencePrice * (1 - stopPercentDecimal);\n } else {\n // For sell orders, stop loss is above the reference price\n calculatedStopPrice = referencePrice * (1 + stopPercentDecimal);\n }\n } else {\n calculatedStopPrice = stopPrice;\n }\n }\n\n // Handle take profit validation and calculation\n if (useTakeProfit) {\n if (takeProfitPrice === undefined && takeProfitPercent100 === undefined) {\n this.log('Either takeProfitPrice or takeProfitPercent100 must be provided when useTakeProfit is true', {\n symbol,\n type: 'error',\n });\n throw new Error('Either takeProfitPrice or takeProfitPercent100 must be provided when useTakeProfit is true');\n }\n\n if (takeProfitPercent100 !== undefined) {\n if (referencePrice === undefined) {\n this.log('referencePrice is required when using takeProfitPercent100', {\n symbol,\n type: 'error',\n });\n throw new Error('referencePrice is required when using takeProfitPercent100');\n }\n\n // Calculate take profit price based on percentage and side\n const takeProfitPercentDecimal = takeProfitPercent100 / 100;\n if (side === 'buy') {\n // For buy orders, take profit is above the reference price\n calculatedTakeProfitPrice = referencePrice * (1 + takeProfitPercentDecimal);\n } else {\n // For sell orders, take profit is below the reference price\n calculatedTakeProfitPrice = referencePrice * (1 - takeProfitPercentDecimal);\n }\n } else {\n calculatedTakeProfitPrice = takeProfitPrice;\n }\n }\n\n // Determine order class based on what's enabled\n let orderClass: 'simple' | 'oto' | 'bracket' = 'simple';\n if (useStopLoss && useTakeProfit) {\n orderClass = 'bracket';\n } else if (useStopLoss || useTakeProfit) {\n orderClass = 'oto';\n }\n\n // Build the order request\n const orderData: CreateOrderParams = {\n symbol,\n qty: Math.abs(qty).toString(),\n side,\n type,\n time_in_force: 'day',\n order_class: orderClass,\n extended_hours: extendedHours,\n position_intent: side === 'buy' ? 'buy_to_open' : 'sell_to_open',\n };\n\n if (clientOrderId) {\n orderData.client_order_id = clientOrderId;\n }\n\n // Add limit price for limit orders\n if (type === 'limit' && limitPrice !== undefined) {\n orderData.limit_price = this.roundPriceForAlpaca(limitPrice).toString();\n }\n\n // Add stop loss if enabled\n if (useStopLoss && calculatedStopPrice !== undefined) {\n orderData.stop_loss = {\n stop_price: this.roundPriceForAlpaca(calculatedStopPrice).toString(),\n };\n }\n\n // Add take profit if enabled\n if (useTakeProfit && calculatedTakeProfitPrice !== undefined) {\n orderData.take_profit = {\n limit_price: this.roundPriceForAlpaca(calculatedTakeProfitPrice).toString(),\n };\n }\n\n const logMessage = `Creating ${orderClass} ${type} ${side} order for ${symbol}: ${qty} shares${\n type === 'limit' ? ` at $${limitPrice?.toFixed(2)}` : ''\n }${useStopLoss ? ` with stop loss at $${calculatedStopPrice?.toFixed(2)}` : ''}${\n useTakeProfit ? ` with take profit at $${calculatedTakeProfitPrice?.toFixed(2)}` : ''\n }${extendedHours ? ' (extended hours)' : ''}`;\n\n this.log(logMessage, {\n symbol,\n });\n\n return this.makeRequest<AlpacaOrder>('/orders', 'POST', orderData, '', {\n action: 'Create equities trade',\n symbol,\n });\n }\n}\n", "import 'dotenv/config';\nimport { log as baseLog } from './logging';\nimport { LogOptions } from './types/logging-types';\nimport {\n Bar,\n AlpacaQuote,\n TimeFrame,\n AlpacaTrade,\n AlpacaAsset,\n AssetClass,\n GetAssetsParams,\n OptionBar,\n OptionTrade,\n OptionsChainParams,\n OptionsChainResponse,\n LatestOptionsTradesParams,\n LatestOptionsTradesResponse,\n LatestOptionsQuotesParams,\n LatestOptionsQuotesResponse,\n LatestQuotesResponse,\n LatestTradesResponse,\n HistoricalOptionsBarsParams,\n HistoricalOptionsBarsResponse,\n HistoricalOptionsTradesParams,\n HistoricalOptionsTradesResponse,\n OptionsSnapshotsParams,\n OptionsSnapshotsResponse,\n OptionsConditionCodesResponse,\n OptionsExchangeCodesResponse,\n OptionTickType,\n SimpleNews,\n AlpacaNewsArticle,\n DataFeed,\n AlpacaStockStreamMessage,\n AlpacaOptionStreamMessage,\n StockStreamEventName,\n OptionStreamEventName,\n StockStreamEventMap,\n OptionStreamEventMap,\n CryptoTrade,\n CryptoQuote,\n CryptoOrderbook,\n CryptoSnapshot,\n CryptoHistoricalBarsResponse,\n CryptoLatestBarsResponse,\n CryptoHistoricalQuotesResponse,\n CryptoLatestQuotesResponse,\n CryptoHistoricalTradesResponse,\n CryptoLatestTradesResponse,\n CryptoSnapshotsResponse,\n CryptoLatestOrderbooksResponse,\n CryptoHistoricalBarsParams,\n CryptoHistoricalQuotesParams,\n CryptoHistoricalTradesParams,\n} from './types/alpaca-types';\nimport { getLastFullTradingDate } from './market-time';\nimport { EventEmitter } from 'events';\nimport WebSocket from 'ws';\n\nconst DEBUG_LOGGING = process.env['DEBUG'] === 'true' || false;\n\nconst log = (message: string, options: LogOptions = { type: 'info' }) => {\n if (!DEBUG_LOGGING && options.type === 'debug') {\n return;\n }\n baseLog(message, { ...options, source: 'AlpacaMarketDataAPI' });\n};\n\n// Default settings for market data API\nconst DEFAULT_ADJUSTMENT = 'all' as const;\nconst DEFAULT_FEED = 'sip' as DataFeed;\nconst DEFAULT_CURRENCY = 'USD' as const;\n\n/**\n * Parameters for retrieving historical market data bars\n * @see https://data.alpaca.markets/v2/stocks/bars\n */\nexport interface HistoricalBarsParams {\n /** Comma-separated list of stock symbols to query, e.g. 'AAPL,MSFT,TSLA' */\n symbols: string[];\n /**\n * Bar duration/timeframe\n * Format: [1-59]Min/T, [1-23]Hour/H, 1Day/D, 1Week/W, [1,2,3,4,6,12]Month/M\n * Examples: \"1Min\", \"5Min\", \"1Hour\", \"1Day\", \"1Week\", \"1Month\"\n */\n timeframe: TimeFrame;\n /**\n * Start datetime in RFC-3339 format (YYYY-MM-DD)\n * Example: \"2024-02-11T09:00:00Z\"\n */\n start?: string;\n /**\n * End datetime in RFC-3339 format (YYYY-MM-DD)\n * Example: \"2024-02-11T16:00:00Z\"\n */\n end?: string;\n /**\n * Number of bars to return (1-10000)\n * Default: 1000\n */\n limit?: number;\n /** \n\n /** \n * Pagination token for retrieving next page of results\n * Returned in the next_page_token field of the response\n */\n page_token?: string;\n /**\n * Specifies the price adjustments applied to the bars\n * - raw: no adjustments\n * - split: adjust for forward and reverse stock splits\n * - dividend: adjust for cash dividends\n * - spin-off: adjust for spin-offs\n * - all: apply all adjustments (default)\n * Can also be comma-separated combinations, e.g. 'split,spin-off'\n */\n adjustment?: 'raw' | 'split' | 'dividend' | 'spin-off' | 'all' | string;\n /**\n * Sort order of returned bars\n * - asc: Oldest to newest (default)\n * - desc: Newest to oldest\n */\n sort?: 'asc' | 'desc';\n}\n\n/**\n * Response from historical bars endpoint\n * Contains OHLCV (Open, High, Low, Close, Volume) data for requested symbols\n */\nexport interface HistoricalBarsResponse {\n /**\n * Map of symbol to array of bar data\n * Each bar contains OHLCV data for the specified timeframe\n */\n bars: {\n [symbol: string]: Bar[];\n };\n /**\n * Token for retrieving the next page of results\n * null if there are no more results\n */\n next_page_token: string | null;\n /** Currency of the price data in ISO 4217 format */\n currency: string;\n}\n\n/**\n * Response from latest bars endpoint\n * Contains the most recent minute bar for each requested symbol\n */\nexport interface LatestBarsResponse {\n /**\n * Map of symbol to latest bar data\n * Each bar contains OHLCV data for the most recent minute\n */\n bars: {\n [symbol: string]: Bar;\n };\n /** Currency of the price data in ISO 4217 format */\n currency: string;\n}\n\n/**\n * Response from last trade endpoint for a single symbol\n * Contains detailed information about the most recent trade\n */\nexport interface LastTradeResponse {\n /** Status of the request */\n status: string;\n /** The stock symbol that was queried */\n symbol: string;\n /**\n * Details of the last trade\n * @property price - Trade price\n * @property size - Trade size (quantity)\n * @property exchange - Exchange where trade occurred (see Common Exchange Codes in docs)\n * @property cond1-4 - Trade conditions\n * @property timestamp - UNIX epoch timestamp in milliseconds\n */\n last: {\n price: number;\n size: number;\n exchange: number;\n cond1: number;\n cond2: number;\n cond3: number;\n cond4: number;\n timestamp: number;\n };\n}\n\n/**\n * Singleton class for interacting with Alpaca Market Data API\n * Provides methods for fetching historical bars, latest bars, last trades, latest trades, latest quotes, and latest quote for a single symbol\n */\nexport class AlpacaMarketDataAPI extends EventEmitter {\n private static instance: AlpacaMarketDataAPI;\n private headers: Record<string, string>;\n private dataURL: string;\n private apiURL: string;\n private v1beta1url: string;\n private v1beta3url: string;\n private stockStreamUrl: string = 'wss://stream.data.alpaca.markets/v2/sip'; // production values\n private optionStreamUrl: string = 'wss://stream.data.alpaca.markets/v1beta3/options'; // production values\n private stockWs: WebSocket | null = null;\n private optionWs: WebSocket | null = null;\n private stockSubscriptions: Record<string, string[]> = { trades: [], quotes: [], bars: [] };\n private optionSubscriptions: Record<string, string[]> = { trades: [], quotes: [], bars: [] };\n private autoReconnect: boolean = true;\n private stockReconnectAttempts: number = 0;\n private optionReconnectAttempts: number = 0;\n private stockReconnectTimeout: NodeJS.Timeout | null = null;\n private optionReconnectTimeout: NodeJS.Timeout | null = null;\n\n public setMode(mode: 'sandbox' | 'test' | 'production' = 'production'): void {\n if (mode === 'sandbox') {\n // sandbox mode\n this.stockStreamUrl = 'wss://stream.data.sandbox.alpaca.markets/v2/sip';\n this.optionStreamUrl = 'wss://stream.data.sandbox.alpaca.markets/v1beta3/options';\n } else if (mode === 'test') {\n // test mode, can only use ticker FAKEPACA\n this.stockStreamUrl = 'wss://stream.data.alpaca.markets/v2/test';\n this.optionStreamUrl = 'wss://stream.data.alpaca.markets/v1beta3/options'; // there's no test mode for options\n } else {\n // production\n this.stockStreamUrl = 'wss://stream.data.alpaca.markets/v2/sip';\n this.optionStreamUrl = 'wss://stream.data.alpaca.markets/v1beta3/options';\n }\n }\n\n public getMode(): 'sandbox' | 'test' | 'production' {\n if (this.stockStreamUrl.includes('sandbox')) {\n return 'sandbox';\n } else if (this.stockStreamUrl.includes('test')) {\n return 'test';\n } else {\n return 'production';\n }\n }\n\n public setAutoReconnect(enabled: boolean): void {\n this.autoReconnect = enabled;\n log(`Auto-reconnect ${enabled ? 'enabled' : 'disabled'}`);\n }\n\n public getAutoReconnect(): boolean {\n return this.autoReconnect;\n }\n\n private constructor() {\n super();\n this.dataURL = 'https://data.alpaca.markets/v2';\n this.apiURL =\n process.env.ALPACA_ACCOUNT_TYPE === 'PAPER'\n ? 'https://paper-api.alpaca.markets/v2'\n : 'https://api.alpaca.markets/v2'; // used by some, e.g. getAssets\n this.v1beta1url = 'https://data.alpaca.markets/v1beta1'; // used for options endpoints\n this.v1beta3url = 'https://data.alpaca.markets/v1beta3'; // used for crypto endpoints\n this.setMode('production'); // sets stockStreamUrl and optionStreamUrl\n this.headers = {\n 'APCA-API-KEY-ID': process.env.ALPACA_API_KEY!,\n 'APCA-API-SECRET-KEY': process.env.ALPACA_SECRET_KEY!,\n 'Content-Type': 'application/json',\n };\n }\n\n public static getInstance(): AlpacaMarketDataAPI {\n if (!AlpacaMarketDataAPI.instance) {\n AlpacaMarketDataAPI.instance = new AlpacaMarketDataAPI();\n }\n return AlpacaMarketDataAPI.instance;\n }\n\n private getReconnectDelay(attempt: number): number {\n // 0: instant (0ms), 1: 5s, 2: 10s, 3: 15s, 4+: 60s\n const delays = [0, 5000, 10000, 15000, 60000];\n return attempt < delays.length ? delays[attempt] : 60000;\n }\n\n private scheduleReconnect(streamType: 'stock' | 'option'): void {\n if (!this.autoReconnect) {\n log(`Auto-reconnect disabled, not reconnecting ${streamType} stream`);\n return;\n }\n\n const attempts = streamType === 'stock' ? this.stockReconnectAttempts : this.optionReconnectAttempts;\n const delay = this.getReconnectDelay(attempts);\n \n log(`Scheduling ${streamType} stream reconnect (attempt ${attempts + 1}) in ${delay}ms`);\n\n const timeout = setTimeout(() => {\n log(`Attempting to reconnect ${streamType} stream (attempt ${attempts + 1})`);\n if (streamType === 'stock') {\n this.stockReconnectAttempts++;\n } else {\n this.optionReconnectAttempts++;\n }\n this.connect(streamType);\n }, delay);\n\n if (streamType === 'stock') {\n this.stockReconnectTimeout = timeout;\n } else {\n this.optionReconnectTimeout = timeout;\n }\n }\n\n // Type-safe event emitter methods\n public on<K extends StockStreamEventName>(event: K, listener: (data: StockStreamEventMap[K]) => void): this;\n public on<K extends OptionStreamEventName>(event: K, listener: (data: OptionStreamEventMap[K]) => void): this;\n public on(event: string | symbol, listener: (...args: any[]) => void): this {\n return super.on(event, listener);\n }\n\n public emit<K extends StockStreamEventName>(event: K, data: StockStreamEventMap[K]): boolean;\n public emit<K extends OptionStreamEventName>(event: K, data: OptionStreamEventMap[K]): boolean;\n public emit(event: string | symbol, ...args: any[]): boolean {\n return super.emit(event, ...args);\n }\n\n private connect(streamType: 'stock' | 'option'): void {\n const url = streamType === 'stock' ? this.stockStreamUrl : this.optionStreamUrl;\n const ws = new WebSocket(url);\n if (streamType === 'stock') {\n this.stockWs = ws;\n } else {\n this.optionWs = ws;\n }\n\n ws.on('open', () => {\n log(`${streamType} stream connected`);\n // Reset reconnect attempts on successful connection\n if (streamType === 'stock') {\n this.stockReconnectAttempts = 0;\n if (this.stockReconnectTimeout) {\n clearTimeout(this.stockReconnectTimeout);\n this.stockReconnectTimeout = null;\n }\n } else {\n this.optionReconnectAttempts = 0;\n if (this.optionReconnectTimeout) {\n clearTimeout(this.optionReconnectTimeout);\n this.optionReconnectTimeout = null;\n }\n }\n const authMessage = {\n action: 'auth',\n key: process.env.ALPACA_API_KEY!,\n secret: process.env.ALPACA_SECRET_KEY!,\n };\n ws.send(JSON.stringify(authMessage));\n });\n\n ws.on('message', (data: WebSocket.Data) => {\n //log(`RAW MESSASGE: ${data.toString()}`);\n const messages = JSON.parse(data.toString());\n for (const message of messages) {\n if (message.T === 'success' && message.msg === 'authenticated') {\n log(`${streamType} stream authenticated`);\n this.sendSubscription(streamType);\n } else if (message.T === 'error') {\n log(`${streamType} stream error: ${message.msg}`, { type: 'error' });\n } else if (message.S) {\n super.emit(`${streamType}-${message.T}`, message);\n super.emit(`${streamType}-data`, message as AlpacaStockStreamMessage | AlpacaOptionStreamMessage);\n }\n }\n });\n\n ws.on('close', (code: number, reason: Buffer) => {\n const reasonStr = reason.toString() || 'No reason provided';\n const codeDesc = this.getCloseCodeDescription(code);\n log(`${streamType} stream disconnected - Code: ${code} (${codeDesc}), Reason: ${reasonStr}`, { type: 'warn' });\n \n if (streamType === 'stock') {\n this.stockWs = null;\n } else {\n this.optionWs = null;\n }\n \n this.scheduleReconnect(streamType);\n });\n\n ws.on('error', (error: Error) => {\n log(`${streamType} stream error: ${error.message}`, { type: 'error' });\n });\n }\n\n private getCloseCodeDescription(code: number): string {\n const codes: Record<number, string> = {\n 1000: 'Normal Closure',\n 1001: 'Going Away',\n 1002: 'Protocol Error',\n 1003: 'Unsupported Data',\n 1005: 'No Status Received',\n 1006: 'Abnormal Closure',\n 1007: 'Invalid Frame Payload Data',\n 1008: 'Policy Violation',\n 1009: 'Message Too Big',\n 1010: 'Mandatory Extension',\n 1011: 'Internal Server Error',\n 1012: 'Service Restart',\n 1013: 'Try Again Later',\n 1014: 'Bad Gateway',\n 1015: 'TLS Handshake',\n };\n return codes[code] || 'Unknown';\n }\n\n private sendSubscription(streamType: 'stock' | 'option'): void {\n const ws = streamType === 'stock' ? this.stockWs : this.optionWs;\n const subscriptions = streamType === 'stock' ? this.stockSubscriptions : this.optionSubscriptions;\n if (ws && ws.readyState === WebSocket.OPEN) {\n const subMessagePayload: { trades?: string[]; quotes?: string[]; bars?: string[] } = {};\n\n if (subscriptions.trades.length > 0) {\n subMessagePayload.trades = subscriptions.trades;\n }\n if (subscriptions.quotes.length > 0) {\n subMessagePayload.quotes = subscriptions.quotes;\n }\n if (subscriptions.bars.length > 0) {\n subMessagePayload.bars = subscriptions.bars;\n }\n\n if (Object.keys(subMessagePayload).length > 0) {\n const subMessage = {\n action: 'subscribe',\n ...subMessagePayload,\n };\n ws.send(JSON.stringify(subMessage));\n }\n }\n }\n\n public connectStockStream(): void {\n if (!this.stockWs) {\n this.connect('stock');\n }\n }\n\n public connectOptionStream(): void {\n if (!this.optionWs) {\n this.connect('option');\n }\n }\n\n public disconnectStockStream(): void {\n if (this.stockReconnectTimeout) {\n clearTimeout(this.stockReconnectTimeout);\n this.stockReconnectTimeout = null;\n }\n this.stockReconnectAttempts = 0;\n if (this.stockWs) {\n this.stockWs.close();\n }\n }\n\n public disconnectOptionStream(): void {\n if (this.optionReconnectTimeout) {\n clearTimeout(this.optionReconnectTimeout);\n this.optionReconnectTimeout = null;\n }\n this.optionReconnectAttempts = 0;\n if (this.optionWs) {\n this.optionWs.close();\n }\n }\n\n public subscribe(\n streamType: 'stock' | 'option',\n subscriptions: { trades?: string[]; quotes?: string[]; bars?: string[] }\n ): void {\n const currentSubscriptions = streamType === 'stock' ? this.stockSubscriptions : this.optionSubscriptions;\n Object.entries(subscriptions).forEach(([key, value]) => {\n if (value) {\n currentSubscriptions[key] = [...new Set([...(currentSubscriptions[key] || []), ...value])];\n }\n });\n\n this.sendSubscription(streamType);\n }\n\n public unsubscribe(\n streamType: 'stock' | 'option',\n subscriptions: { trades?: string[]; quotes?: string[]; bars?: string[] }\n ): void {\n const currentSubscriptions = streamType === 'stock' ? this.stockSubscriptions : this.optionSubscriptions;\n Object.entries(subscriptions).forEach(([key, value]) => {\n if (value) {\n currentSubscriptions[key] = (currentSubscriptions[key] || []).filter((s) => !value.includes(s));\n }\n });\n const unsubMessage = {\n action: 'unsubscribe',\n ...subscriptions,\n };\n\n const ws = streamType === 'stock' ? this.stockWs : this.optionWs;\n if (ws && ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(unsubMessage));\n }\n }\n\n private async makeRequest(\n endpoint: string,\n method: string = 'GET',\n params?: Record<string, any>,\n baseUrlName: 'data' | 'api' | 'v1beta1' | 'v1beta3' = 'data'\n ): Promise<any> {\n const baseUrl = baseUrlName === 'data' ? this.dataURL : \n baseUrlName === 'api' ? this.apiURL : \n baseUrlName === 'v1beta1' ? this.v1beta1url : this.v1beta3url;\n const url = new URL(`${baseUrl}${endpoint}`);\n\n try {\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n url.searchParams.append(key, value.join(','));\n } else if (value !== undefined) {\n url.searchParams.append(key, value.toString());\n }\n });\n }\n\n const response = await fetch(url.toString(), {\n method,\n headers: this.headers,\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n log(`Market Data API error (${response.status}): ${errorText}`, { type: 'error' });\n throw new Error(`Market Data API error (${response.status}): ${errorText}`);\n }\n\n const data = await response.json();\n return data;\n } catch (err) {\n const error = err as Error;\n log(`Error in makeRequest: ${error.message}. Endpoint: ${endpoint}. Url: ${url.toString()}`, { type: 'error' });\n if (error instanceof TypeError) {\n log(`Network error details: ${error.stack}`, { type: 'error' });\n }\n throw error;\n }\n }\n\n /**\n * Get historical OHLCV bars for specified symbols, including pre-market and post-market data\n * Automatically handles pagination to fetch all available data\n * @param params Parameters for historical bars request\n * @returns Historical bars data with all pages combined\n */\n async getHistoricalBars(params: HistoricalBarsParams): Promise<HistoricalBarsResponse> {\n const symbols = params.symbols;\n const symbolsStr = symbols.join(',');\n let allBars: { [symbol: string]: Bar[] } = {};\n let pageToken: string | null = null;\n let hasMorePages = true;\n let totalBarsCount = 0;\n let pageCount = 0;\n let currency = '';\n\n // Initialize bar arrays for each symbol\n symbols.forEach((symbol) => {\n allBars[symbol] = [];\n });\n\n log(\n `Starting ${params.timeframe}bars fetch for ${symbols.length} symbols (${symbolsStr}), ${params.start || 'no start'} to ${params.end || 'no end'})`, { symbol: symbolsStr }\n );\n\n while (hasMorePages) {\n pageCount++;\n const requestParams = {\n ...params,\n adjustment: params.adjustment ?? DEFAULT_ADJUSTMENT,\n feed: DEFAULT_FEED,\n ...(pageToken && { page_token: pageToken }),\n };\n\n const response: HistoricalBarsResponse = await this.makeRequest('/stocks/bars', 'GET', requestParams);\n\n if (!response.bars) {\n log(`No bars data found in response for ${symbols.length} symbols`, { symbol: symbolsStr, type: 'warn' });\n break;\n }\n\n // Track currency from first response\n if (!currency) {\n currency = response.currency;\n }\n\n // Combine bars for each symbol\n let pageBarsCount = 0;\n let earliestTimestamp: Date | null = null;\n let latestTimestamp: Date | null = null;\n\n Object.entries(response.bars).forEach(([symbol, bars]) => {\n if (bars && bars.length > 0) {\n allBars[symbol] = [...allBars[symbol], ...bars];\n pageBarsCount += bars.length;\n\n // Track date range for this page\n bars.forEach((bar) => {\n const barDate = new Date(bar.t);\n if (!earliestTimestamp || barDate < earliestTimestamp) {\n earliestTimestamp = barDate;\n }\n if (!latestTimestamp || barDate > latestTimestamp) {\n latestTimestamp = barDate;\n }\n });\n }\n });\n\n totalBarsCount += pageBarsCount;\n pageToken = response.next_page_token || null;\n hasMorePages = !!pageToken;\n\n // Enhanced logging with date range and progress info\n const dateRangeStr =\n earliestTimestamp && latestTimestamp\n ? `${new Date(earliestTimestamp).toLocaleDateString('en-US', { timeZone: 'America/New_York' })} to ${new Date(\n latestTimestamp\n ).toLocaleDateString('en-US', { timeZone: 'America/New_York' })}`\n : 'unknown range';\n\n log(\n `Page ${pageCount}: Fetched ${pageBarsCount.toLocaleString()} bars (total: ${totalBarsCount.toLocaleString()}) for ${\n symbols.length\n } symbols, date range: ${dateRangeStr}${hasMorePages ? ', more pages available' : ', complete'}`, {symbol: symbolsStr, type: 'debug' }\n );\n\n // Prevent infinite loops\n if (pageCount > 1000) {\n log(`Stopping pagination after ${pageCount} pages to prevent infinite loop`, { type: 'warn' });\n break;\n }\n }\n\n // Final summary\n const symbolCounts = Object.entries(allBars)\n .map(([symbol, bars]) => `${symbol}: ${bars.length}`)\n .join(', ');\n log(\n `${params.timeframe} bars fetch complete: ${totalBarsCount.toLocaleString()} total bars across ${pageCount} pages for ${symbols.length\n } symbols (${symbolCounts})`, { symbol: symbolsStr }\n );\n\n return {\n bars: allBars,\n next_page_token: null, // Always null since we fetch all pages\n currency: currency || DEFAULT_CURRENCY,\n };\n }\n\n /**\n * Get the most recent minute bar for requested symbols\n * @param symbols Array of stock symbols to query\n * @param currency Optional currency in ISO 4217 format\n * @returns Latest bar data for each symbol\n \n */\n async getLatestBars(symbols: string[], currency?: string): Promise<LatestBarsResponse> {\n return this.makeRequest('/stocks/bars/latest', 'GET', {\n symbols,\n feed: DEFAULT_FEED,\n currency: currency || DEFAULT_CURRENCY,\n });\n }\n\n /**\n * Get the last trade for a single symbol\n * @param symbol The stock symbol to query\n * @returns Last trade details including price, size, exchange, and conditions\n */\n async getLastTrade(symbol: string): Promise<LastTradeResponse> {\n return this.makeRequest(`/v1/last/stocks/${symbol}`, 'GET');\n }\n\n /**\n * Get the most recent trades for requested symbols\n * @param symbols Array of stock symbols to query\n * @param feed Optional data source (sip/iex/delayed_sip)\n * @param currency Optional currency in ISO 4217 format\n * @returns Latest trade data for each symbol\n \n */\n async getLatestTrades(symbols: string[], feed?: DataFeed, currency?: string): Promise<LatestTradesResponse> {\n return this.makeRequest('/stocks/trades/latest', 'GET', {\n symbols,\n feed: feed || DEFAULT_FEED,\n currency: currency || DEFAULT_CURRENCY,\n });\n }\n\n /**\n * Get the most recent quotes for requested symbols\n * @param symbols Array of stock symbols to query\n * @param feed Optional data source (sip/iex/delayed_sip)\n * @param currency Optional currency in ISO 4217 format\n * @returns Latest quote data for each symbol\n */\n async getLatestQuotes(symbols: string[], feed?: DataFeed, currency?: string): Promise<LatestQuotesResponse> {\n // Return empty response if symbols array is empty to avoid API error\n if (!symbols || symbols.length === 0) {\n log('No symbols provided to getLatestQuotes, returning empty response', { type: 'warn' });\n return {\n quotes: {},\n currency: currency || DEFAULT_CURRENCY,\n };\n }\n\n return this.makeRequest('/stocks/quotes/latest', 'GET', {\n symbols,\n feed: feed || DEFAULT_FEED,\n currency: currency || DEFAULT_CURRENCY,\n });\n }\n\n /**\n * Get the latest quote for a single symbol\n * @param symbol The stock symbol to query\n * @param feed Optional data source (sip/iex/delayed_sip)\n * @param currency Optional currency in ISO 4217 format\n * @returns Latest quote data with symbol and currency information\n */\n async getLatestQuote(\n symbol: string,\n feed?: DataFeed,\n currency?: string\n ): Promise<{ quote: AlpacaQuote; symbol: string; currency: string }> {\n return this.makeRequest(`/stocks/${symbol}/quotes/latest`, 'GET', {\n feed: feed || DEFAULT_FEED,\n currency,\n });\n }\n\n /**\n * Get the previous day's closing price for a symbol\n * @param symbol The stock symbol to query\n * @param referenceDate Optional reference date to get the previous close for\n * @returns Previous day's closing price data\n */\n async getPreviousClose(symbol: string, referenceDate?: Date): Promise<Bar | null> {\n const date = referenceDate || new Date();\n const prevMarketDate = getLastFullTradingDate(date);\n\n const response = await this.getHistoricalBars({\n symbols: [symbol],\n timeframe: '1Day',\n start: prevMarketDate.toISOString(),\n end: prevMarketDate.toISOString(),\n limit: 1,\n });\n\n if (!response.bars[symbol] || response.bars[symbol].length === 0) {\n log(`No previous close data available for ${symbol}`, { type: 'error', symbol });\n return null;\n }\n\n return response.bars[symbol][0];\n }\n\n /**\n * Get hourly price data for a symbol\n * @param symbol The stock symbol to query\n * @param start Start time in milliseconds\n * @param end End time in milliseconds\n * @returns Array of hourly price bars\n */\n async getHourlyPrices(symbol: string, start: number, end: number): Promise<Bar[]> {\n const response = await this.getHistoricalBars({\n symbols: [symbol],\n timeframe: '1Hour',\n start: new Date(start).toISOString(),\n end: new Date(end).toISOString(),\n limit: 96, // Last 96 hours (4 days)\n });\n\n return response.bars[symbol] || [];\n }\n\n /**\n * Get half-hourly price data for a symbol\n * @param symbol The stock symbol to query\n * @param start Start time in milliseconds\n * @param end End time in milliseconds\n * @returns Array of half-hourly price bars\n */\n async getHalfHourlyPrices(symbol: string, start: number, end: number): Promise<Bar[]> {\n const response = await this.getHistoricalBars({\n symbols: [symbol],\n timeframe: '30Min',\n start: new Date(start).toISOString(),\n end: new Date(end).toISOString(),\n limit: 16 * 2 * 4, // last 4 days, 16 hours per day, 2 bars per hour\n });\n\n return response.bars[symbol] || [];\n }\n\n /**\n * Get daily price data for a symbol\n * @param symbol The stock symbol to query\n * @param start Start time in milliseconds\n * @param end End time in milliseconds\n * @returns Array of daily price bars\n */\n async getDailyPrices(symbol: string, start: number, end: number): Promise<Bar[]> {\n const response = await this.getHistoricalBars({\n symbols: [symbol],\n timeframe: '1Day',\n start: new Date(start).toISOString(),\n end: new Date(end).toISOString(),\n limit: 100, // Last 100 days\n });\n\n return response.bars[symbol] || [];\n }\n\n /**\n * Get intraday price data for a symbol\n * @param symbol The stock symbol to query\n * @param minutePeriod Minutes per bar (1, 5, 15, etc.)\n * @param start Start time in milliseconds\n * @param end End time in milliseconds\n * @returns Array of intraday price bars\n */\n async getIntradayPrices(symbol: string, minutePeriod: number, start: number, end: number): Promise<Bar[]> {\n const timeframe = `${minutePeriod}Min` as TimeFrame;\n const response = await this.getHistoricalBars({\n symbols: [symbol],\n timeframe,\n start: new Date(start).toISOString(),\n end: new Date(end).toISOString(),\n });\n\n return response.bars[symbol] || [];\n }\n\n /**\n * Analyzes an array of price bars and returns a summary string\n * @param bars Array of price bars to analyze\n * @returns A string summarizing the price data\n */\n static analyzeBars(bars: Bar[]): string {\n if (!bars || bars.length === 0) {\n return 'No price data available';\n }\n\n const firstBar = bars[0];\n const lastBar = bars[bars.length - 1];\n const priceChange = lastBar.c - firstBar.o;\n const percentChange = (priceChange / firstBar.o) * 100;\n\n const volumeChange = lastBar.v - firstBar.v;\n const percentVolumeChange = (volumeChange / firstBar.v) * 100;\n\n const high = Math.max(...bars.map((bar) => bar.h));\n const low = Math.min(...bars.map((bar) => bar.l));\n const totalVolume = bars.reduce((sum, bar) => sum + bar.v, 0);\n const avgVolume = totalVolume / bars.length;\n\n return (\n `Price: $${firstBar.o.toFixed(2)} -> $${lastBar.c.toFixed(2)} (${percentChange.toFixed(2)}%), ` +\n `Volume: ${firstBar.v.toLocaleString()} -> ${lastBar.v.toLocaleString()} (${percentVolumeChange.toFixed(2)}%), ` +\n `High: $${high.toFixed(2)}, Low: $${low.toFixed(2)}, ` +\n `Avg Volume: ${avgVolume.toLocaleString()}`\n );\n }\n\n /**\n * Get assets available for trade and data consumption from Alpaca\n * @param params Optional query params\n * - status: 'active' | 'inactive' (default 'active')\n * - asset_class: 'us_equity' | 'us_option' | 'crypto' (default 'us_equity')\n * - shortable: if true (default), filters to assets with shortable=true and easy_to_borrow=true\n * @returns Array of AlpacaAsset objects\n * @see https://docs.alpaca.markets/reference/get-v2-assets-1\n */\n async getAssets(params?: GetAssetsParams): Promise<AlpacaAsset[]> {\n // Endpoint: GET /v2/assets\n const {\n status = 'active',\n asset_class = 'us_equity',\n shortable = true,\n }: { status: 'active' | 'inactive'; asset_class: AssetClass; shortable: boolean } = {\n status: params?.status ?? 'active',\n asset_class: params?.asset_class ?? 'us_equity',\n shortable: params?.shortable ?? true,\n };\n\n const assets: AlpacaAsset[] = await this.makeRequest(\n '/assets',\n 'GET',\n { status, asset_class },\n 'api'\n );\n\n if (!shortable) return assets;\n return assets.filter((a) => a.shortable === true && a.easy_to_borrow === true);\n }\n\n /**\n * Get a single asset by symbol or asset_id\n * @param symbolOrAssetId Symbol or asset_id\n * @returns AlpacaAsset object\n * @see https://docs.alpaca.markets/reference/get-v2-assets-symbol_or_asset_id\n */\n async getAsset(symbolOrAssetId: string): Promise<AlpacaAsset> {\n // Endpoint: GET /v2/assets/{symbol_or_asset_id}\n return this.makeRequest(`/assets/${encodeURIComponent(symbolOrAssetId)}`, 'GET', undefined, 'api');\n }\n\n // ===== OPTIONS MARKET DATA METHODS =====\n\n /**\n * Get options chain for an underlying symbol\n * Provides the latest trade, latest quote, and greeks for each contract symbol of the underlying symbol\n * @param params Options chain request parameters\n * @returns Options chain data with snapshots for each contract\n * @see https://docs.alpaca.markets/reference/optionchain\n */\n async getOptionsChain(params: OptionsChainParams): Promise<OptionsChainResponse> {\n const { underlying_symbol, ...queryParams } = params;\n return this.makeRequest(\n `/options/snapshots/${encodeURIComponent(underlying_symbol)}`,\n 'GET',\n queryParams,\n 'v1beta1'\n );\n }\n\n /**\n * Get the most recent trades for requested option contract symbols\n * @param params Latest options trades request parameters\n * @returns Latest trade data for each option contract symbol\n \n * @see https://docs.alpaca.markets/reference/optionlatesttrades\n */\n async getLatestOptionsTrades(params: LatestOptionsTradesParams): Promise<LatestOptionsTradesResponse> {\n // Remove limit and page_token as they're not supported by this endpoint\n const { limit, page_token, ...requestParams } = params;\n return this.makeRequest('/options/trades/latest', 'GET', requestParams, 'v1beta1');\n }\n\n /**\n * Get the most recent quotes for requested option contract symbols\n * @param params Latest options quotes request parameters\n * @returns Latest quote data for each option contract symbol\n \n * @see https://docs.alpaca.markets/reference/optionlatestquotes\n */\n async getLatestOptionsQuotes(params: LatestOptionsQuotesParams): Promise<LatestOptionsQuotesResponse> {\n // Remove limit and page_token as they're not supported by this endpoint\n const { limit, page_token, ...requestParams } = params;\n return this.makeRequest('/options/quotes/latest', 'GET', requestParams, 'v1beta1');\n }\n\n /**\n * Get historical OHLCV bars for option contract symbols\n * Automatically handles pagination to fetch all available data\n * @param params Historical options bars request parameters\n * @returns Historical bar data for each option contract symbol with all pages combined\n \n * @see https://docs.alpaca.markets/reference/optionbars\n */\n async getHistoricalOptionsBars(params: HistoricalOptionsBarsParams): Promise<HistoricalOptionsBarsResponse> {\n const symbols = params.symbols;\n const symbolsStr = symbols.join(',');\n let allBars: { [symbol: string]: OptionBar[] } = {};\n let pageToken: string | null = null;\n let hasMorePages = true;\n let totalBarsCount = 0;\n let pageCount = 0;\n\n // Initialize bar arrays for each symbol\n symbols.forEach((symbol) => {\n allBars[symbol] = [];\n });\n\n log(\n `Starting historical options bars fetch for ${symbols.length} symbols (${params.timeframe}, ${\n params.start || 'no start'\n } to ${params.end || 'no end'})`\n );\n\n while (hasMorePages) {\n pageCount++;\n const requestParams = {\n ...params,\n ...(pageToken && { page_token: pageToken }),\n };\n\n const response: HistoricalOptionsBarsResponse = await this.makeRequest(\n '/options/bars',\n 'GET',\n requestParams,\n 'v1beta1'\n );\n\n if (!response.bars) {\n log(`No options bars data found in response for ${symbols.length} symbols`, { type: 'warn' });\n break;\n }\n\n // Combine bars for each symbol\n let pageBarsCount = 0;\n let earliestTimestamp: Date | null = null;\n let latestTimestamp: Date | null = null;\n\n Object.entries(response.bars).forEach(([symbol, bars]) => {\n if (bars && bars.length > 0) {\n allBars[symbol] = [...allBars[symbol], ...bars];\n pageBarsCount += bars.length;\n\n // Track date range for this page\n bars.forEach((bar) => {\n const barDate = new Date(bar.t);\n if (!earliestTimestamp || barDate < earliestTimestamp) {\n earliestTimestamp = barDate;\n }\n if (!latestTimestamp || barDate > latestTimestamp) {\n latestTimestamp = barDate;\n }\n });\n }\n });\n\n totalBarsCount += pageBarsCount;\n pageToken = response.next_page_token || null;\n hasMorePages = !!pageToken;\n\n // Enhanced logging with date range and progress info\n const dateRangeStr =\n earliestTimestamp && latestTimestamp\n ? `${(earliestTimestamp as Date).toLocaleDateString('en-US', { timeZone: 'America/New_York' })} to ${(\n latestTimestamp as Date\n ).toLocaleDateString('en-US', { timeZone: 'America/New_York' })}`\n : 'unknown range';\n\n log(\n `Page ${pageCount}: Fetched ${pageBarsCount.toLocaleString()} option bars (total: ${totalBarsCount.toLocaleString()}) for ${\n symbols.length\n } symbols, date range: ${dateRangeStr}${hasMorePages ? ', more pages available' : ', complete'}`,\n {\n type: 'debug',\n }\n );\n\n // Prevent infinite loops\n if (pageCount > 1000) {\n log(`Stopping options bars pagination after ${pageCount} pages to prevent infinite loop`, { type: 'warn' });\n break;\n }\n }\n\n // Final summary\n const symbolCounts = Object.entries(allBars)\n .map(([symbol, bars]) => `${symbol}: ${bars.length}`)\n .join(', ');\n log(\n `Options bars fetch complete: ${totalBarsCount.toLocaleString()} total bars across ${pageCount} pages (${symbolCounts})`\n );\n\n return {\n bars: allBars,\n next_page_token: undefined, // Always undefined since we fetch all pages\n };\n }\n\n /**\n * Get historical trades for option contract symbols\n * Automatically handles pagination to fetch all available data\n * @param params Historical options trades request parameters\n * @returns Historical trade data for each option contract symbol with all pages combined\n \n * @see https://docs.alpaca.markets/reference/optiontrades\n */\n async getHistoricalOptionsTrades(params: HistoricalOptionsTradesParams): Promise<HistoricalOptionsTradesResponse> {\n const symbols = params.symbols;\n const symbolsStr = symbols.join(',');\n let allTrades: { [symbol: string]: OptionTrade[] } = {};\n let pageToken: string | null = null;\n let hasMorePages = true;\n let totalTradesCount = 0;\n let pageCount = 0;\n\n // Initialize trades arrays for each symbol\n symbols.forEach((symbol) => {\n allTrades[symbol] = [];\n });\n\n log(\n `Starting historical options trades fetch for ${symbols.length} symbols (${params.start || 'no start'} to ${\n params.end || 'no end'\n })`\n );\n\n while (hasMorePages) {\n pageCount++;\n const requestParams = {\n ...params,\n ...(pageToken && { page_token: pageToken }),\n };\n\n const response: HistoricalOptionsTradesResponse = await this.makeRequest(\n '/options/trades',\n 'GET',\n requestParams,\n 'v1beta1'\n );\n\n if (!response.trades) {\n log(`No options trades data found in response for ${symbols.length} symbols`, { type: 'warn' });\n break;\n }\n\n // Combine trades for each symbol\n let pageTradesCount = 0;\n let earliestTimestamp: Date | null = null;\n let latestTimestamp: Date | null = null;\n\n Object.entries(response.trades).forEach(([symbol, trades]) => {\n if (trades && trades.length > 0) {\n allTrades[symbol] = [...allTrades[symbol], ...trades];\n pageTradesCount += trades.length;\n\n // Track date range for this page\n trades.forEach((trade) => {\n const tradeDate = new Date(trade.t);\n if (!earliestTimestamp || tradeDate < earliestTimestamp) {\n earliestTimestamp = tradeDate;\n }\n if (!latestTimestamp || tradeDate > latestTimestamp) {\n latestTimestamp = tradeDate;\n }\n });\n }\n });\n\n totalTradesCount += pageTradesCount;\n pageToken = response.next_page_token || null;\n hasMorePages = !!pageToken;\n\n // Enhanced logging with date range and progress info\n const dateRangeStr =\n earliestTimestamp && latestTimestamp\n ? `${(earliestTimestamp as Date).toLocaleDateString('en-US', { timeZone: 'America/New_York' })} to ${(\n latestTimestamp as Date\n ).toLocaleDateString('en-US', { timeZone: 'America/New_York' })}`\n : 'unknown range';\n\n log(\n `Page ${pageCount}: Fetched ${pageTradesCount.toLocaleString()} option trades (total: ${totalTradesCount.toLocaleString()}) for ${\n symbols.length\n } symbols, date range: ${dateRangeStr}${hasMorePages ? ', more pages available' : ', complete'}`,\n {\n type: 'debug',\n }\n );\n\n // Prevent infinite loops\n if (pageCount > 1000) {\n log(`Stopping options trades pagination after ${pageCount} pages to prevent infinite loop`, { type: 'warn' });\n break;\n }\n }\n\n // Final summary\n const symbolCounts = Object.entries(allTrades)\n .map(([symbol, trades]) => `${symbol}: ${trades.length}`)\n .join(', ');\n log(\n `Options trades fetch complete: ${totalTradesCount.toLocaleString()} total trades across ${pageCount} pages (${symbolCounts})`\n );\n\n return {\n trades: allTrades,\n next_page_token: undefined, // Always undefined since we fetch all pages\n };\n }\n\n /**\n * Get snapshots for option contract symbols\n * Provides latest trade, latest quote, and greeks for each contract symbol\n * @param params Options snapshots request parameters\n * @returns Snapshot data for each option contract symbol\n \n * @see https://docs.alpaca.markets/reference/optionsnapshots\n */\n async getOptionsSnapshot(params: OptionsSnapshotsParams): Promise<OptionsSnapshotsResponse> {\n // Remove limit and page_token as they may not be supported by this endpoint\n const { limit, page_token, ...requestParams } = params;\n return this.makeRequest('/options/snapshots', 'GET', requestParams, 'v1beta1');\n }\n\n /**\n * Get condition codes for options trades or quotes\n * Returns the mapping between condition codes and their descriptions\n * @param tickType The type of tick data ('trade' or 'quote')\n * @returns Mapping of condition codes to descriptions\n \n * @see https://docs.alpaca.markets/reference/optionmetaconditions\n */\n async getOptionsConditionCodes(tickType: OptionTickType): Promise<OptionsConditionCodesResponse> {\n return this.makeRequest(`/options/meta/conditions/${tickType}`, 'GET', undefined, 'v1beta1');\n }\n\n /**\n * Get exchange codes for options\n * Returns the mapping between option exchange codes and exchange names\n * @returns Mapping of exchange codes to exchange names\n \n * @see https://docs.alpaca.markets/reference/optionmetaexchanges\n */\n async getOptionsExchangeCodes(): Promise<OptionsExchangeCodesResponse> {\n return this.makeRequest('/options/meta/exchanges', 'GET', undefined, 'v1beta1');\n }\n\n /**\n * Analyzes an array of option bars and returns a summary string\n * @param bars Array of option bars to analyze\n * @returns A string summarizing the option price data\n */\n static analyzeOptionBars(bars: OptionBar[]): string {\n if (!bars || bars.length === 0) {\n return 'No option price data available';\n }\n\n const firstBar = bars[0];\n const lastBar = bars[bars.length - 1];\n const priceChange = lastBar.c - firstBar.o;\n const percentChange = (priceChange / firstBar.o) * 100;\n\n const volumeChange = lastBar.v - firstBar.v;\n const percentVolumeChange = firstBar.v > 0 ? (volumeChange / firstBar.v) * 100 : 0;\n\n const high = Math.max(...bars.map((bar) => bar.h));\n const low = Math.min(...bars.map((bar) => bar.l));\n const totalVolume = bars.reduce((sum, bar) => sum + bar.v, 0);\n const avgVolume = totalVolume / bars.length;\n\n return (\n `Option Price: $${firstBar.o.toFixed(2)} -> $${lastBar.c.toFixed(2)} (${percentChange.toFixed(2)}%), ` +\n `Volume: ${firstBar.v.toLocaleString()} -> ${lastBar.v.toLocaleString()} (${percentVolumeChange.toFixed(2)}%), ` +\n `High: $${high.toFixed(2)}, Low: $${low.toFixed(2)}, ` +\n `Avg Volume: ${avgVolume.toLocaleString()}`\n );\n }\n\n /**\n * Formats option greeks for display\n * @param greeks Option greeks object\n * @returns Formatted string with greek values\n */\n static formatOptionGreeks(greeks: any): string {\n if (!greeks) {\n return 'No greeks data available';\n }\n\n const parts: string[] = [];\n if (greeks.delta !== undefined) parts.push(`Delta: ${greeks.delta.toFixed(4)}`);\n if (greeks.gamma !== undefined) parts.push(`Gamma: ${greeks.gamma.toFixed(4)}`);\n if (greeks.theta !== undefined) parts.push(`Theta: ${greeks.theta.toFixed(4)}`);\n if (greeks.vega !== undefined) parts.push(`Vega: ${greeks.vega.toFixed(4)}`);\n if (greeks.rho !== undefined) parts.push(`Rho: ${greeks.rho.toFixed(4)}`);\n\n return parts.length > 0 ? parts.join(', ') : 'No greeks data available';\n }\n\n /**\n * Interprets condition codes using the provided condition codes mapping\n * @param conditionCodes Array of condition codes from trade or quote\n * @param conditionCodesMap Mapping of condition codes to descriptions\n * @returns Formatted string with condition descriptions\n */\n static interpretConditionCodes(conditionCodes: string[], conditionCodesMap: OptionsConditionCodesResponse): string {\n if (!conditionCodes || conditionCodes.length === 0) {\n return 'No conditions';\n }\n\n const descriptions = conditionCodes\n .map((code) => conditionCodesMap[code] || `Unknown (${code})`)\n .filter((desc) => desc !== undefined);\n\n return descriptions.length > 0 ? descriptions.join(', ') : 'No condition descriptions available';\n }\n\n /**\n * Gets the exchange name from exchange code using the provided exchange codes mapping\n * @param exchangeCode Exchange code from trade or quote\n * @param exchangeCodesMap Mapping of exchange codes to names\n * @returns Exchange name or formatted unknown exchange\n */\n static getExchangeName(exchangeCode: string, exchangeCodesMap: OptionsExchangeCodesResponse): string {\n return exchangeCodesMap[exchangeCode] || `Unknown Exchange (${exchangeCode})`;\n }\n\n /**\n * Fetches news articles from Alpaca API for a symbol, paginating through all results.\n * @param symbol The symbol to fetch news for (e.g., 'AAPL')\n * @param params Optional parameters: start, end, limit, sort, include_content\n * @returns Array of SimpleNews articles\n */\n async fetchNews(\n symbol: string,\n params?: {\n start?: Date | string;\n end?: Date | string;\n limit?: number;\n sort?: 'asc' | 'desc';\n include_content?: boolean;\n }\n ): Promise<SimpleNews[]> {\n const defaultParams = {\n start: new Date(Date.now() - 24 * 60 * 60 * 1000),\n end: new Date(),\n limit: 10,\n sort: 'desc' as const,\n include_content: true,\n };\n const mergedParams = { ...defaultParams, ...params };\n let newsArticles: SimpleNews[] = [];\n let pageToken: string | null = null;\n let hasMorePages = true;\n let fetchedCount = 0;\n const maxLimit = mergedParams.limit;\n\n // Utility to clean content\n function cleanContent(content: string | undefined): string | undefined {\n if (!content) return undefined;\n // Remove excessive whitespace, newlines, and trim\n return content.replace(/\\s+/g, ' ').trim();\n }\n\n while (hasMorePages) {\n const queryParams: URLSearchParams = new URLSearchParams({\n ...(mergedParams.start && { start: new Date(mergedParams.start).toISOString() }),\n ...(mergedParams.end && { end: new Date(mergedParams.end).toISOString() }),\n ...(symbol && { symbols: symbol }),\n ...(mergedParams.limit && { limit: Math.min(50, maxLimit - fetchedCount).toString() }),\n ...(mergedParams.sort && { sort: mergedParams.sort }),\n ...(mergedParams.include_content !== undefined\n ? { include_content: mergedParams.include_content.toString() }\n : {}),\n ...(pageToken && { page_token: pageToken }),\n });\n const url: string = `${this.v1beta1url}/news?${queryParams}`;\n log(`Fetching news from: ${url}`, { type: 'debug', symbol });\n const response: Response = await fetch(url, {\n method: 'GET',\n headers: this.headers,\n });\n if (!response.ok) {\n const errorText = await response.text();\n log(`Alpaca news API error (${response.status}): ${errorText}`, { type: 'error', symbol });\n throw new Error(`Alpaca news API error (${response.status}): ${errorText}`);\n }\n const data: { news: AlpacaNewsArticle[]; next_page_token: string | null } = await response.json();\n if (!data.news || !Array.isArray(data.news)) {\n log(`No news data found in Alpaca response for ${symbol}`, { type: 'warn', symbol });\n break;\n }\n const transformedNews: SimpleNews[] = data.news.map((article: AlpacaNewsArticle) => ({\n symbols: article.symbols,\n title: article.headline,\n summary: cleanContent(article.summary) ?? '',\n content: article.content ? cleanContent(article.content) : undefined,\n url: article.url,\n source: article.source,\n author: article.author,\n date: article.updated_at || article.created_at,\n updatedDate: article.updated_at || article.created_at,\n sentiment: 0,\n }));\n newsArticles = newsArticles.concat(transformedNews);\n fetchedCount = newsArticles.length;\n pageToken = data.next_page_token || null;\n hasMorePages = !!pageToken && (!maxLimit || fetchedCount < maxLimit);\n log(\n `Fetched ${transformedNews.length} news articles (total: ${fetchedCount}) for ${symbol}. More pages: ${hasMorePages}`,\n { type: 'debug', symbol }\n );\n if (maxLimit && fetchedCount >= maxLimit) {\n newsArticles = newsArticles.slice(0, maxLimit);\n break;\n }\n }\n return newsArticles;\n }\n\n // ===== CRYPTO MARKET DATA METHODS =====\n\n /**\n * Get historical OHLCV bars for crypto symbols\n * Automatically handles pagination to fetch all available data\n * @param params Parameters for crypto historical bars request\n * @returns Historical bars data with all pages combined\n */\n async getCryptoHistoricalBars(params: CryptoHistoricalBarsParams): Promise<CryptoHistoricalBarsResponse> {\n const symbols = params.symbols;\n const symbolsStr = symbols.join(',');\n let allBars: { [symbol: string]: Bar[] } = {};\n let pageToken: string | null = null;\n let hasMorePages = true;\n let totalBarsCount = 0;\n let pageCount = 0;\n\n // Initialize bar arrays for each symbol\n symbols.forEach((symbol) => {\n allBars[symbol] = [];\n });\n\n log(\n `Starting crypto historical bars fetch for ${symbols.length} symbols (${params.timeframe}, ${params.start || 'no start'} to ${params.end || 'no end'})`\n );\n\n while (hasMorePages) {\n pageCount++;\n const requestParams = {\n ...params,\n symbols: symbolsStr,\n ...(pageToken && { page_token: pageToken }),\n };\n\n const response: CryptoHistoricalBarsResponse = await this.makeRequest(\n '/crypto/us/bars',\n 'GET',\n requestParams,\n 'v1beta3'\n );\n\n if (!response.bars) {\n log(`No crypto bars data found in response for ${symbols.length} symbols`, { type: 'warn' });\n break;\n }\n\n // Combine bars for each symbol\n let pageBarsCount = 0;\n Object.entries(response.bars).forEach(([symbol, bars]) => {\n if (bars && bars.length > 0) {\n allBars[symbol] = [...allBars[symbol], ...bars];\n pageBarsCount += bars.length;\n }\n });\n\n totalBarsCount += pageBarsCount;\n pageToken = response.next_page_token || null;\n hasMorePages = !!pageToken;\n\n log(\n `Page ${pageCount}: Fetched ${pageBarsCount.toLocaleString()} crypto bars (total: ${totalBarsCount.toLocaleString()}) for ${symbols.length} symbols${hasMorePages ? ', more pages available' : ', complete'}`, { type: 'debug' }\n );\n\n // Prevent infinite loops\n if (pageCount > 1000) {\n log(`Stopping crypto bars pagination after ${pageCount} pages to prevent infinite loop`, { type: 'warn' });\n break;\n }\n }\n\n log(\n `Crypto historical bars fetch complete: ${totalBarsCount.toLocaleString()} total bars across ${pageCount} pages`\n );\n\n return {\n bars: allBars,\n next_page_token: null, // Always null since we fetch all pages\n };\n }\n\n /**\n * Get the most recent minute bar for requested crypto symbols\n * @param symbols Array of crypto symbols to query\n * @returns Latest bar data for each symbol\n */\n async getCryptoLatestBars(symbols: string[]): Promise<CryptoLatestBarsResponse> {\n return this.makeRequest('/crypto/us/latest/bars', 'GET', { symbols: symbols.join(',') }, 'v1beta3');\n }\n\n /**\n * Get historical quotes for crypto symbols\n * Automatically handles pagination to fetch all available data\n * @param params Parameters for crypto historical quotes request\n * @returns Historical quotes data with all pages combined\n */\n async getCryptoHistoricalQuotes(params: CryptoHistoricalQuotesParams): Promise<CryptoHistoricalQuotesResponse> {\n const symbols = params.symbols;\n const symbolsStr = symbols.join(',');\n let allQuotes: { [symbol: string]: CryptoQuote[] } = {};\n let pageToken: string | null = null;\n let hasMorePages = true;\n let totalQuotesCount = 0;\n let pageCount = 0;\n\n // Initialize quotes arrays for each symbol\n symbols.forEach((symbol) => {\n allQuotes[symbol] = [];\n });\n\n log(\n `Starting crypto historical quotes fetch for ${symbols.length} symbols (${params.start || 'no start'} to ${params.end || 'no end'})`\n );\n\n while (hasMorePages) {\n pageCount++;\n const requestParams = {\n ...params,\n symbols: symbolsStr,\n ...(pageToken && { page_token: pageToken }),\n };\n\n const response: CryptoHistoricalQuotesResponse = await this.makeRequest(\n '/crypto/us/quotes',\n 'GET',\n requestParams,\n 'v1beta3'\n );\n\n if (!response.quotes) {\n log(`No crypto quotes data found in response for ${symbols.length} symbols`, { type: 'warn' });\n break;\n }\n\n // Combine quotes for each symbol\n let pageQuotesCount = 0;\n Object.entries(response.quotes).forEach(([symbol, quotes]) => {\n if (quotes && quotes.length > 0) {\n allQuotes[symbol] = [...allQuotes[symbol], ...quotes];\n pageQuotesCount += quotes.length;\n }\n });\n\n totalQuotesCount += pageQuotesCount;\n pageToken = response.next_page_token || null;\n hasMorePages = !!pageToken;\n\n log(\n `Page ${pageCount}: Fetched ${pageQuotesCount.toLocaleString()} crypto quotes (total: ${totalQuotesCount.toLocaleString()}) for ${symbols.length} symbols${hasMorePages ? ', more pages available' : ', complete'}`, { type: 'debug' }\n );\n\n // Prevent infinite loops\n if (pageCount > 1000) {\n log(`Stopping crypto quotes pagination after ${pageCount} pages to prevent infinite loop`, { type: 'warn' });\n break;\n }\n }\n\n log(\n `Crypto historical quotes fetch complete: ${totalQuotesCount.toLocaleString()} total quotes across ${pageCount} pages`\n );\n\n return {\n quotes: allQuotes,\n next_page_token: null, // Always null since we fetch all pages\n };\n }\n\n /**\n * Get the most recent quotes for requested crypto symbols\n * @param symbols Array of crypto symbols to query\n * @returns Latest quote data for each symbol\n */\n async getCryptoLatestQuotes(symbols: string[]): Promise<CryptoLatestQuotesResponse> {\n if (!symbols || symbols.length === 0) {\n log('No symbols provided to getCryptoLatestQuotes, returning empty response', { type: 'warn' });\n return { quotes: {} };\n }\n\n return this.makeRequest('/crypto/us/latest/quotes', 'GET', { symbols: symbols.join(',') }, 'v1beta3');\n }\n\n /**\n * Get historical trades for crypto symbols\n * Automatically handles pagination to fetch all available data\n * @param params Parameters for crypto historical trades request\n * @returns Historical trades data with all pages combined\n */\n async getCryptoHistoricalTrades(params: CryptoHistoricalTradesParams): Promise<CryptoHistoricalTradesResponse> {\n const symbols = params.symbols;\n const symbolsStr = symbols.join(',');\n let allTrades: { [symbol: string]: CryptoTrade[] } = {};\n let pageToken: string | null = null;\n let hasMorePages = true;\n let totalTradesCount = 0;\n let pageCount = 0;\n\n // Initialize trades arrays for each symbol\n symbols.forEach((symbol) => {\n allTrades[symbol] = [];\n });\n\n log(\n `Starting crypto historical trades fetch for ${symbols.length} symbols (${params.start || 'no start'} to ${params.end || 'no end'})`\n );\n\n while (hasMorePages) {\n pageCount++;\n const requestParams = {\n ...params,\n symbols: symbolsStr,\n ...(pageToken && { page_token: pageToken }),\n };\n\n const response: CryptoHistoricalTradesResponse = await this.makeRequest(\n '/crypto/us/trades',\n 'GET',\n requestParams,\n 'v1beta3'\n );\n\n if (!response.trades) {\n log(`No crypto trades data found in response for ${symbols.length} symbols`, { type: 'warn' });\n break;\n }\n\n // Combine trades for each symbol\n let pageTradesCount = 0;\n Object.entries(response.trades).forEach(([symbol, trades]) => {\n if (trades && trades.length > 0) {\n allTrades[symbol] = [...allTrades[symbol], ...trades];\n pageTradesCount += trades.length;\n }\n });\n\n totalTradesCount += pageTradesCount;\n pageToken = response.next_page_token || null;\n hasMorePages = !!pageToken;\n\n log(\n `Page ${pageCount}: Fetched ${pageTradesCount.toLocaleString()} crypto trades (total: ${totalTradesCount.toLocaleString()}) for ${symbols.length} symbols${hasMorePages ? ', more pages available' : ', complete'}`, { type: 'debug' }\n );\n\n // Prevent infinite loops\n if (pageCount > 1000) {\n log(`Stopping crypto trades pagination after ${pageCount} pages to prevent infinite loop`, { type: 'warn' });\n break;\n }\n }\n\n log(\n `Crypto historical trades fetch complete: ${totalTradesCount.toLocaleString()} total trades across ${pageCount} pages`\n );\n\n return {\n trades: allTrades,\n next_page_token: null, // Always null since we fetch all pages\n };\n }\n\n /**\n * Get the most recent trades for requested crypto symbols\n * @param symbols Array of crypto symbols to query\n * @returns Latest trade data for each symbol\n */\n async getCryptoLatestTrades(symbols: string[]): Promise<CryptoLatestTradesResponse> {\n if (!symbols || symbols.length === 0) {\n log('No symbols provided to getCryptoLatestTrades, returning empty response', { type: 'warn' });\n return { trades: {} };\n }\n\n return this.makeRequest('/crypto/us/latest/trades', 'GET', { symbols: symbols.join(',') }, 'v1beta3');\n }\n\n /**\n * Get snapshots for crypto symbols\n * Returns the latest trade, latest quote, latest minute bar, latest daily bar, and previous daily bar data\n * @param symbols Array of crypto symbols to query\n * @returns Snapshot data for each symbol\n */\n async getCryptoSnapshots(symbols: string[]): Promise<CryptoSnapshotsResponse> {\n if (!symbols || symbols.length === 0) {\n log('No symbols provided to getCryptoSnapshots, returning empty response', { type: 'warn' });\n return { snapshots: {} };\n }\n\n return this.makeRequest('/crypto/us/snapshots', 'GET', { symbols: symbols.join(',') }, 'v1beta3');\n }\n\n /**\n * Get the latest orderbook for requested crypto symbols\n * @param symbols Array of crypto symbols to query\n * @returns Latest orderbook data for each symbol\n */\n async getCryptoLatestOrderbooks(symbols: string[]): Promise<CryptoLatestOrderbooksResponse> {\n if (!symbols || symbols.length === 0) {\n log('No symbols provided to getCryptoLatestOrderbooks, returning empty response', { type: 'warn' });\n return { orderbooks: {} };\n }\n\n return this.makeRequest('/crypto/us/latest/orderbooks', 'GET', { symbols: symbols.join(',') }, 'v1beta3');\n }\n\n /**\n * Analyzes an array of crypto bars and returns a summary string\n * @param bars Array of crypto bars to analyze\n * @returns A string summarizing the crypto price data\n */\n static analyzeCryptoBars(bars: Bar[]): string {\n if (!bars || bars.length === 0) {\n return 'No crypto price data available';\n }\n\n const firstBar = bars[0];\n const lastBar = bars[bars.length - 1];\n const priceChange = lastBar.c - firstBar.o;\n const percentChange = (priceChange / firstBar.o) * 100;\n\n const volumeChange = lastBar.v - firstBar.v;\n const percentVolumeChange = firstBar.v > 0 ? (volumeChange / firstBar.v) * 100 : 0;\n\n const high = Math.max(...bars.map((bar) => bar.h));\n const low = Math.min(...bars.map((bar) => bar.l));\n const totalVolume = bars.reduce((sum, bar) => sum + bar.v, 0);\n const avgVolume = totalVolume / bars.length;\n\n return (\n `Crypto Price: $${firstBar.o.toFixed(6)} -> $${lastBar.c.toFixed(6)} (${percentChange.toFixed(2)}%), ` +\n `Volume: ${firstBar.v.toLocaleString()} -> ${lastBar.v.toLocaleString()} (${percentVolumeChange.toFixed(2)}%), ` +\n `High: $${high.toFixed(6)}, Low: $${low.toFixed(6)}, ` +\n `Avg Volume: ${avgVolume.toLocaleString()}`\n );\n }\n}\n\n// Export the singleton instance\nexport const marketDataAPI = AlpacaMarketDataAPI.getInstance();\n", "import * as mt from './market-time';\nimport * as ft from './format-tools';\nimport * as Types from './types';\nimport * as misc from './misc-utils';\nimport * as llm from './llm-openai';\nimport * as llmImages from './llm-images';\nimport * as deepseek from './llm-deepseek';\nimport * as openrouter from './llm-openrouter';\nimport { PerformanceTimer } from './performance-timer';\nimport { DiscoMailAPI } from './disco-mail';\n\nimport { AlpacaTradingAPI } from './alpaca-trading-api';\nimport { AlpacaMarketDataAPI } from './alpaca-market-data-api';\nimport { getPackedSettings } from 'http2';\n\n// Re-export all types\nexport * from './types';\n\n// Export key classes directly for easier access\nexport { AlpacaTradingAPI } from './alpaca-trading-api';\nexport { AlpacaMarketDataAPI } from './alpaca-market-data-api';\nexport { DiscoMailAPI, DiscoMailApiError } from './disco-mail';\nexport { supportsTemperature, uploadVisionFile } from './llm-openai';\nexport { OPENAI_IMAGE_MODELS, OPENAI_MODELS, OPENROUTER_MODELS } from './types/llm-types';\n\nexport const disco = {\n types: Types,\n alpaca: {\n TradingAPI: AlpacaTradingAPI,\n MarketDataAPI: AlpacaMarketDataAPI,\n },\n format: {\n capFirstLetter: ft.capFirstLetter,\n currency: ft.formatCurrency,\n number: ft.formatNumber,\n pct: ft.formatPercentage,\n dateTimeForGS: ft.dateTimeForGS,\n },\n llm: {\n call: llm.makeLLMCall,\n uploadVisionFile: llm.uploadVisionFile,\n seek: deepseek.makeDeepseekCall,\n images: llmImages.makeImagesCall,\n open: openrouter.makeOpenRouterCall,\n },\n mail: new DiscoMailAPI(),\n time: {\n convertDateToMarketTimeZone: mt.convertDateToMarketTimeZone,\n getStartAndEndDates: mt.getStartAndEndDates,\n getMarketOpenClose: mt.getMarketOpenClose,\n getOpenCloseForTradingDay: mt.getOpenCloseForTradingDay,\n getLastFullTradingDate: mt.getLastFullTradingDate,\n getNextMarketDay: mt.getNextMarketDay,\n getPreviousMarketDay: mt.getPreviousMarketDay,\n getMarketTimePeriod: mt.getMarketTimePeriod,\n getMarketStatus: mt.getMarketStatus,\n getNYTimeZone: mt.getNYTimeZone,\n getTradingDate: mt.getTradingDate,\n getTradingStartAndEndDates: mt.getTradingStartAndEndDates,\n getTradingDaysBack: mt.getTradingDaysBack,\n isMarketDay: mt.isMarketDay,\n isWithinMarketHours: mt.isWithinMarketHours,\n countTradingDays: mt.countTradingDays,\n MARKET_TIMES: mt.MARKET_TIMES,\n },\n utils: {\n logIfDebug: misc.logIfDebug,\n fetchWithRetry: misc.fetchWithRetry,\n Timer: PerformanceTimer,\n },\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["year", "month", "day", "closeHour", "closeMinute", "isMarketDay", "OpenAI", "OpenAI", "openai", "OpenAI", "openai", "OpenAI", "OpenAI", "openai", "OpenAI", "OpenAI", "OpenAI", "usageModel", "formatNumber", "WebSocket", "log", "WebSocket"]
|
|
7
|
+
}
|