@proofkit/cli 1.2.0-beta.2 → 2.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["__filename","version","config","array","nullish","floatSafeRemainder","object","path","isObject","getParsedType","schema","Class","config","initializer","issue","error","path","schema","parse","parseAsync","safeParse","safeParseAsync","cuid","cuid2","ulid","xid","ksuid","nanoid","duration","guid","uuid","version","email","_emoji","emoji","ipv4","ipv6","cidrv4","cidrv6","base64","base64url","e164","date","time","datetime","timeRegex","string","bigint","number","boolean","_null","_undefined","inst","result","version","version","isAborted","checks","result","safeParse","safeParseAsync","_","url","regexes.hostname.source","inst","regexes.base64url.test","base64","isValidJWT","optionalKeys","isObject","core.globalConfig.jitless","allowsEval","r","p","results","map","left","right","mergeValues","keyResult","valueResult","util.propertyKeyTypes.has","output","util.primitiveTypes.has","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","parsedType","error","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","error","parsedType","issue","parsedType","issue","schema","p","Class","_undefined","_null","_void","_enum","_default","_catch","schema","parse","parseAsync","schema","json","format","file","params","gen","date","issue","issues","ZodError","parse","ZodType","def","check","core.globalRegistry.get","ZodString","string","ZodNumber","number","ZodBoolean","boolean","ZodBigInt","bigint","ZodSymbol","ZodUndefined","ZodNull","ZodAny","ZodUnknown","ZodNever","ZodVoid","ZodDate","date","ZodArray","schema","ZodObject","ZodOptional","ZodUnion","ZodDiscriminatedUnion","ZodIntersection","ZodTuple","ZodRecord","ZodMap","ZodSet","ZodEnum","ZodLiteral","issue","output","ZodNullable","ZodDefault","ZodCatch","ZodNaN","ZodReadonly","ZodLazy","ZodPromise","ZodIssueCode","INVALID","map","getErrorMap","config","en","z","z4","schema","state: ProgramState","getUserPkgManager: () => PackageManager","version","initEnvFile: Installer","file","error","error","addToSafeActionClient","settings: Settings | undefined","settingsFile: unknown","settings","error","ZodError","z","parseJsonc","error","configArray: ImportedDataSourceConfig[]","layoutsToAdd: ImportedLayoutConfig[]","schema","targetDataSource: ImportedDataSourceConfig | undefined","config","settings","newDataSource: ImportedDataSourceConfig","settings","targetDir: string | null","settings","settings","settings","file","fs","file","error","error","url: string","url","fs","dynamicEslintInstaller: Installer","eslintConfig","settings","pathModule","p","path","p","url","clack","filename","error","schema","path","parse","builder","result","path","record","config","config","url","z","error","settings","passedInLayoutName: string | undefined","settings","file","newDataSource: z.infer<typeof dataSourceSchema>","url: URL | null","fmsVersion: SemVer | null","ottoVersion: SemVer | null","url","defaultOptions: CliFlags","initialSettings: Settings","settings","settings","postInstallTable: TPostInstallFn","settings","file","filterOutCommonFieldNames","commonFieldNamesToExclude","postInstallTableInfinite: TPostInstallFn","nextjsTemplates: Record<string, Template>","wvTemplates: Record<string, Template>","settings","dataSource: DataSource | undefined","schemaName: string | undefined","dataSource","promptForSchemaFromDataSource","assertIs","assertNever","util","object","joinValues","array","issue","error","issue","defaultErrorMap","path","map","issue","defaultErrorMap","path","error","errorMap","check","version","jwt","base64","parsedType","ctx","result","schema","issue","issues","elements","defaultErrorMap","processed","preprocess","handlebars","string","error","array","file","typeToAliasMap: Record<string, string | undefined>","fs","importDeclaration: ImportDeclarationStructure","innerExpressionText: string","error","dataSource: DataSource | undefined","schemaName: string | undefined","routeName: string | undefined","pageName: string | undefined","settings","url","file","error","error","settings","error","settings: Settings","error","settings","result","availableUpgrades: Upgrade[]","settings","upgrade","error","settings","schema","routes: { label: string; href: string }[]","error","settings","schema","settings","settings","error","settings","upgrade","semver","settings: Settings | undefined","settings"],"sources":["../src/utils/getProofKitVersion.ts","../src/consts.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/core.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/util.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/errors.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/parse.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/regexes.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/checks.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/doc.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/versions.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/schemas.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ar.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/az.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/be.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ca.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/cs.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/de.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/en.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/es.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/fa.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/fi.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/fr.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/fr-CA.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/he.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/hu.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/id.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/it.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ja.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/kh.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ko.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/mk.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ms.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/nl.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/no.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ota.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ps.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/pl.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/pt.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ru.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/sl.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/sv.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ta.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/th.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/tr.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ua.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/ur.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/vi.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/zh-CN.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/zh-TW.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/locales/index.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/registries.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/api.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/function.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/to-json-schema.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/json-schema.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/core/index.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/classic/iso.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/classic/errors.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/classic/parse.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/classic/schemas.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/classic/compat.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/classic/coerce.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/classic/external.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/classic/index.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v4/index.js","../src/state.ts","../src/utils/getUserPkgManager.ts","../src/utils/logger.ts","../src/helpers/installDependencies.ts","../src/installers/dependencyVersionMap.ts","../src/utils/addPackageDependency.ts","../src/installers/envVars.ts","../src/utils/formatting.ts","../src/utils/ts-morph.ts","../src/utils/addToEnvs.ts","../src/installers/auth-shared.ts","../src/installers/clerk.ts","../src/cli/fmdapi.ts","../src/utils/parseSettings.ts","../src/cli/utils.ts","../src/generators/fmdapi.ts","../src/generators/tanstack-query.ts","../src/installers/install-fm-addon.ts","../src/installers/react-email.ts","../src/installers/proofkit-auth.ts","../src/generators/auth.ts","../src/globalOptions.ts","../src/helpers/installPackages.ts","../src/upgrades/cursorRules.ts","../src/helpers/scaffoldProject.ts","../src/helpers/replaceText.ts","../src/helpers/createProject.ts","../src/helpers/git.ts","../src/helpers/logNextSteps.ts","../src/helpers/setImportAlias.ts","../src/helpers/shadcn-cli.ts","../template/extras/config/_eslint.js","../src/installers/eslint.ts","../src/installers/index.ts","../src/installers/proofkit-webviewer.ts","../src/utils/removeTrailingSlash.ts","../src/utils/parseNameAndPath.ts","../src/utils/validateAppName.ts","../src/cli/ottofms.ts","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/createProxy.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/utils.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/TRPCError.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/stream/sse.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/transformer.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/error/formatter.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/middleware.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/parser.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/procedureBuilder.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/rootConfig.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/router.mjs","../../../node_modules/.pnpm/@trpc+server@11.0.0-rc.441/node_modules/@trpc/server/dist/unstable-core-do-not-import/initTRPC.mjs","../src/helpers/version-fetcher.ts","../src/cli/add/fmschema.ts","../src/cli/add/data-source/deploy-demo-file.ts","../src/cli/add/data-source/filemaker.ts","../src/cli/init.ts","../src/utils/renderTitle.ts","../src/cli/react-email.ts","../src/cli/tanstack-query.ts","../src/cli/add/auth.ts","../src/cli/add/data-source/index.ts","../src/cli/add/page/post-install/table.ts","../src/cli/add/page/post-install/table-infinite.ts","../src/cli/add/page/templates.ts","../src/generators/route.ts","../src/cli/add/page/index.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v3/helpers/util.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v3/ZodError.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v3/locales/en.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v3/errors.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/esm/v3/types.js","../../registry/dist/lib/index.js","../src/cli/add/registry/http.ts","../src/cli/add/registry/getOptions.ts","../src/cli/add/registry/postInstall/handlebars.ts","../src/cli/add/registry/postInstall/package-script.ts","../src/cli/add/registry/postInstall/wrap-provider.ts","../src/cli/add/registry/postInstall/index.ts","../src/helpers/stealth-init.ts","../src/cli/add/registry/preflight.ts","../src/cli/add/registry/install.ts","../src/cli/add/registry/listItems.ts","../src/cli/add/index.ts","../src/cli/deploy/index.ts","../src/upgrades/shadcn.ts","../src/upgrades/index.ts","../src/cli/remove/data-source.ts","../src/cli/remove/page.ts","../src/cli/remove/schema.ts","../src/cli/remove/index.ts","../src/cli/typegen/index.ts","../src/cli/update/index.ts","../src/cli/menu.ts","../src/cli/update/makeUpgradeCommand.ts","../src/utils/renderVersionWarning.ts","../src/index.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs-extra\";\nimport { type PackageJson } from \"type-fest\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\n\nexport const getVersion = () => {\n const packageJsonPath = path.join(PKG_ROOT, \"package.json\");\n\n const packageJsonContent = fs.readJSONSync(packageJsonPath) as PackageJson;\n\n return packageJsonContent.version ?? \"1.0.0\";\n};\n\nexport const getFmdapiVersion = () => {\n return __FMDAPI_VERSION__;\n};\n\nexport const getNodeMajorVersion = () => {\n const defaultVersion = \"22\";\n try {\n return process.versions.node.split(\".\")[0] ?? defaultVersion;\n } catch {\n return defaultVersion;\n }\n};\n\nexport const getProofkitBetterAuthVersion = () => {\n return __BETTER_AUTH_VERSION__;\n};\n","import path from \"path\";\nimport { fileURLToPath } from \"url\";\n\nimport { getVersion } from \"./utils/getProofKitVersion.js\";\n\n// Path is in relation to a single index.js file inside ./dist\nconst __filename = fileURLToPath(import.meta.url);\nconst distPath = path.dirname(__filename);\nexport const PKG_ROOT = path.join(distPath, \"../\");\nexport const cliName = \"proofkit\";\nexport const npmName = \"@proofkit/cli\";\nexport const DOCS_URL = \"https://proofkit.dev\";\n\nconst version = getVersion();\nconst versionCharLength = version.length;\n//export const PKG_ROOT = path.dirname(require.main.filename);\n\nexport const TITLE_TEXT = `\n _______ ___ ___ ____ _ _ \n|_ __ \\\\ .' ..]|_ ||_ _| (_) / |_ \n | |__) |_ .--. .--. .--. _| |_ | |_/ / __ \\`| |-'\n | ___/[ \\`/'\\`\\\\]/ .'\\`\\\\ \\\\/ .'\\`\\\\ \\\\'-| |-' | __'. [ | | | \n _| |_ | | | \\\\__. || \\\\__. | | | _| | \\\\ \\\\_ | | | |, \n|_____| [___] '.__.' '.__.' [___] |____||____|[___]\\\\__/ \n${\" \".repeat(61 - versionCharLength)}v${version}\n`;\nexport const DEFAULT_APP_NAME = \"my-proofkit-app\";\nexport const CREATE_FM_APP = cliName;\n\n// Registry URL is injected at build time via tsdown define\ndeclare const __REGISTRY_URL__: string;\n// Provide a safe fallback when running from source (not built)\nexport const DEFAULT_REGISTRY_URL =\n // typeof check avoids ReferenceError if not defined at runtime\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - __REGISTRY_URL__ is injected at build time\n typeof __REGISTRY_URL__ !== \"undefined\" && __REGISTRY_URL__\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - __REGISTRY_URL__ is injected at build time\n __REGISTRY_URL__\n : \"https://proofkit.dev\";\n","export /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n var _a;\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod ?? {},\n enumerable: false,\n });\n (_a = inst._zod).traits ?? (_a.traits = new Set());\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n for (const k in _.prototype) {\n if (!(k in inst))\n Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) });\n }\n inst._zod.constr = _;\n inst._zod.def = def;\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\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();\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 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 function defineLazy(object, key, getter) {\n const set = false;\n Object.defineProperty(object, key, {\n get() {\n if (!set) {\n const value = getter();\n object[key] = value;\n return value;\n }\n throw new Error(\"cached value already set\");\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 assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\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 const captureStackTrace = Error.captureStackTrace\n ? Error.captureStackTrace\n : (..._args) => { };\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\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});\nfunction _isObject(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\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 // 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 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 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 = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\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 newShape = {};\n const currDef = 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 // pick key\n newShape[key] = currDef.shape[key];\n }\n return clone(schema, {\n ...schema._zod.def,\n shape: newShape,\n checks: [],\n });\n}\nexport function omit(schema, mask) {\n const newShape = { ...schema._zod.def.shape };\n const currDef = 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 return clone(schema, {\n ...schema._zod.def,\n shape: newShape,\n checks: [],\n });\n}\nexport function extend(schema, shape) {\n const def = {\n ...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 checks: [], // delete existing checks\n };\n return clone(schema, def);\n}\nexport function merge(a, b) {\n return clone(a, {\n ...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 catchall: b._zod.def.catchall,\n checks: [], // delete existing checks\n });\n}\nexport function partial(Class, schema, mask) {\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 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 shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n return clone(schema, {\n ...schema._zod.def,\n shape,\n checks: [],\n });\n}\nexport function required(Class, schema, mask) {\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 return clone(schema, {\n ...schema._zod.def,\n shape,\n // optional: [],\n checks: [],\n });\n}\nexport function aborted(x, startIndex = 0) {\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i].continue !== true)\n return true;\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 full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = 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 full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\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 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// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n Object.defineProperty(inst, \"message\", {\n get() {\n return JSON.stringify(def, util.jsonStringifyReplacer, 2);\n },\n enumerable: true,\n // configurable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, _mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nexport function treeifyError(error, _mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(path) {\n const segs = [];\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => a.path.length - b.path.length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\n","export const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nexport const _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/;\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp =\n// /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$/;\nexport const hostname = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\nexport const e164 = /^\\+(?:[0-9]){6,14}[0-9]$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^\\d+n?$/;\nexport const integer = /^\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?/i;\nexport const boolean = /true|false/i;\nconst _null = /null/i;\nexport { _null as null };\nconst _undefined = /undefined/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin: origin,\n code: \"too_small\",\n minimum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n };\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n };\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n };\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n };\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n };\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n };\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n if (!def.pattern)\n throw new Error(\"Not implemented.\");\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 0,\n patch: 0,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n // avoids issues with using Math.random() in Next.js caching\n util.defineLazy(inst._zod, \"id\", () => def.type + \"_\" + util.randomString(10));\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n //\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.when) {\n const shouldRun = ch._zod.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n inst._zod.run = (payload, ctx) => {\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n inst[\"~standard\"] = {\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n };\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n const url = new URL(payload.value);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: regexes.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n const _super = inst._zod.check;\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n const _super = inst._zod.check;\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv4`;\n });\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv6`;\n });\n inst._zod.check = (payload) => {\n try {\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const [address, prefix] = payload.value.split(\"/\");\n try {\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64url\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checksp\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n const { value: input } = payload;\n if (typeof input === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const { value: input } = payload;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.parse = (payload, _ctx) => {\n const { value: input } = payload;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const { value: input } = payload;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const { value: input } = payload;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handleObjectResult(result, final, key) {\n // if(isOptional)\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n final.value[key] = result.value;\n}\nfunction handleOptionalObjectResult(result, final, key, input) {\n if (result.issues.length) {\n // validation failed against value schema\n if (input[key] === undefined) {\n // if input was undefined, ignore the error\n if (key in input) {\n final.value[key] = undefined;\n }\n else {\n final.value[key] = result.value;\n }\n }\n else {\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n }\n else if (result.value === undefined) {\n // validation returned `undefined`\n if (key in input)\n final.value[key] = undefined;\n }\n else {\n // non-undefined value\n final.value[key] = result.value;\n }\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n const _normalized = util.cached(() => {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!(def.shape[k] instanceof $ZodType)) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n shape: def.shape,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n });\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const { keys, optionalKeys } = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n for (const key of keys) {\n ids[key] = util.randomString(15);\n }\n // A: preserve key order {\n doc.write(`const newResult = {}`);\n for (const key of keys) {\n if (optionalKeys.has(key)) {\n const id = ids[key];\n doc.write(`const ${id} = ${parseStr(key)};`);\n const k = util.esc(key);\n doc.write(`\n if (${id}.issues.length) {\n if (input[${k}] === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n payload.issues = payload.issues.concat(\n ${id}.issues.map((iss) => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}],\n }))\n );\n }\n } else if (${id}.value === undefined) {\n if (${k} in input) newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n `);\n }\n else {\n const id = ids[key];\n // const id = ids[key];\n doc.write(`const ${id} = ${parseStr(key)};`);\n doc.write(`\n if (${id}.issues.length) payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${util.esc(key)}, ...iss.path] : [${util.esc(key)}]\n })));`);\n doc.write(`newResult[${util.esc(key)}] = ${id}.value`);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const { catchall } = def;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n }\n else {\n payload.value = {};\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n // do not add omitted optional keys\n // if (!(key in input)) {\n // if (optionalKeys.has(key)) continue;\n // payload.issues.push({\n // code: \"invalid_type\",\n // path: [key],\n // expected: \"nonoptional\",\n // note: `Missing required key: \"${key}\"`,\n // input,\n // inst,\n // });\n // }\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n const isOptional = el._zod.optin === \"optional\" && el._zod.optout === \"optional\";\n if (r instanceof Promise) {\n proms.push(r.then((r) => isOptional ? handleOptionalObjectResult(r, payload, key, input) : handleObjectResult(r, payload, key)));\n }\n else if (isOptional) {\n handleOptionalObjectResult(r, payload, key, input);\n }\n else {\n handleObjectResult(r, payload, key);\n }\n }\n }\n if (!catchall) {\n // return payload;\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n const unrecognized = [];\n // iterate over input keys\n const keySet = value.keySet;\n const _catchall = catchall._zod;\n const t = _catchall.def.type;\n for (const key of Object.keys(input)) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handleObjectResult(r, payload, key)));\n }\n else {\n handleObjectResult(r, payload, key);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const { value: input } = payload;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n if (left.issues.length) {\n result.issues.push(...left.issues);\n }\n if (right.issues.length) {\n result.issues.push(...right.issues);\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n const optStart = items.length - [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n input,\n inst,\n origin: \"array\",\n ...(tooBig ? { code: \"too_big\", maximum: items.length } : { code: \"too_small\", minimum: items.length }),\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n if (def.keyType._zod.values) {\n const values = def.keyType._zod.values;\n payload.value = {};\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!values.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n origin: \"record\",\n code: \"invalid_key\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n payload.value[keyResult.value] = keyResult.value;\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_key\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n inst._zod.values = new Set(values);\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.values = new Set(def.values);\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? o.toString() : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const _out = def.transform(payload.value, payload);\n if (_ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault always returns the default value immediately.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def, ctx));\n }\n return handlePipeResult(left, def, ctx);\n };\n});\nfunction handlePipeResult(left, def, ctx) {\n if (util.aborted(left)) {\n return left;\n }\n return def.out._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (part instanceof $ZodType) {\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"template_literal\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType._zod.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حرف\", verb: \"أن يحوي\" },\n file: { unit: \"بايت\", verb: \"أن يحوي\" },\n array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"مدخل\",\n email: \"بريد إلكتروني\",\n url: \"رابط\",\n emoji: \"إيموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاريخ ووقت بمعيار ISO\",\n date: \"تاريخ بمعيار ISO\",\n time: \"وقت بمعيار ISO\",\n duration: \"مدة بمعيار ISO\",\n ipv4: \"عنوان IPv4\",\n ipv6: \"عنوان IPv6\",\n cidrv4: \"مدى عناوين بصيغة IPv4\",\n cidrv6: \"مدى عناوين بصيغة IPv6\",\n base64: \"نَص بترميز base64-encoded\",\n base64url: \"نَص بترميز base64url-encoded\",\n json_string: \"نَص على هيئة JSON\",\n e164: \"رقم هاتف بمعيار E.164\",\n jwt: \"JWT\",\n template_literal: \"مدخل\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `مدخلات غير مقبولة: يفترض إدخال ${issue.expected}، ولكن تم إدخال ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n return `${Nouns[_issue.format] ?? issue.format} غير مقبول`;\n }\n case \"not_multiple_of\":\n return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `معرف غير مقبول في ${issue.origin}`;\n case \"invalid_union\":\n return \"مدخل غير مقبول\";\n case \"invalid_element\":\n return `مدخل غير مقبول في ${issue.origin}`;\n default:\n return \"مدخل غير مقبول\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"element\", verb: \"olmalıdır\" },\n set: { unit: \"element\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Yanlış dəyər: gözlənilən ${issue.expected}, daxil olan ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n if (_issue.format === \"ends_with\")\n return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n if (_issue.format === \"includes\")\n return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n if (_issue.format === \"regex\")\n return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n return `Yanlış ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n case \"unrecognized_keys\":\n return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilində yanlış açar`;\n case \"invalid_union\":\n return \"Yanlış dəyər\";\n case \"invalid_element\":\n return `${issue.origin} daxilində yanlış dəyər`;\n default:\n return `Yanlış dəyər`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"сімвал\",\n few: \"сімвалы\",\n many: \"сімвалаў\",\n },\n verb: \"мець\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элементы\",\n many: \"элементаў\",\n },\n verb: \"мець\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байты\",\n many: \"байтаў\",\n },\n verb: \"мець\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"лік\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"масіў\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"увод\",\n email: \"email адрас\",\n url: \"URL\",\n emoji: \"эмодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата і час\",\n date: \"ISO дата\",\n time: \"ISO час\",\n duration: \"ISO працягласць\",\n ipv4: \"IPv4 адрас\",\n ipv6: \"IPv6 адрас\",\n cidrv4: \"IPv4 дыяпазон\",\n cidrv6: \"IPv6 дыяпазон\",\n base64: \"радок у фармаце base64\",\n base64url: \"радок у фармаце base64url\",\n json_string: \"JSON радок\",\n e164: \"нумар E.164\",\n jwt: \"JWT\",\n template_literal: \"увод\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Няправільны ўвод: чакаўся ${issue.expected}, атрымана ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n return `Няправільны ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Няправільны ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Няправільны ўвод\";\n case \"invalid_element\":\n return `Няправільнае значэнне ў ${issue.origin}`;\n default:\n return `Няправільны ўвод`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caràcters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"entrada\",\n email: \"adreça electrònica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adreça IPv4\",\n ipv6: \"adreça IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Tipus invàlid: s'esperava ${issue.expected}, s'ha rebut ${parsedType(issue.input)}`;\n // return `Tipus invàlid: s'esperava ${issue.expected}, s'ha rebut ${util.getParsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n return `Format invàlid per a ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau invàlida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n case \"invalid_element\":\n return `Element invàlid a ${issue.origin}`;\n default:\n return `Entrada invàlida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaků\", verb: \"mít\" },\n file: { unit: \"bajtů\", verb: \"mít\" },\n array: { unit: \"prvků\", verb: \"mít\" },\n set: { unit: \"prvků\", verb: \"mít\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"číslo\";\n }\n case \"string\": {\n return \"řetězec\";\n }\n case \"boolean\": {\n return \"boolean\";\n }\n case \"bigint\": {\n return \"bigint\";\n }\n case \"function\": {\n return \"funkce\";\n }\n case \"symbol\": {\n return \"symbol\";\n }\n case \"undefined\": {\n return \"undefined\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"pole\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"regulární výraz\",\n email: \"e-mailová adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a čas ve formátu ISO\",\n date: \"datum ve formátu ISO\",\n time: \"čas ve formátu ISO\",\n duration: \"doba trvání ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"řetězec zakódovaný ve formátu base64\",\n base64url: \"řetězec zakódovaný ve formátu base64url\",\n json_string: \"řetězec ve formátu JSON\",\n e164: \"číslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Neplatný vstup: očekáváno ${issue.expected}, obdrženo ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n }\n return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n return `Neplatný formát ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatný klíč v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatný vstup\";\n case \"invalid_element\":\n return `Neplatná hodnota v ${issue.origin}`;\n default:\n return `Neplatný vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"Zahl\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"Array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Ungültige Eingabe: erwartet ${issue.expected}, erhalten ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ungültig: ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ungültiger Schlüssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ungültige Eingabe\";\n case \"invalid_element\":\n return `Ungültiger Wert in ${issue.origin}`;\n default:\n return `Ungültige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nexport const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n};\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const Nouns = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Invalid input: expected ${issue.expected}, received ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"número\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"arreglo\";\n }\n if (data === null) {\n return \"nulo\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"entrada\",\n email: \"dirección de correo electrónico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duración ISO\",\n ipv4: \"dirección IPv4\",\n ipv6: \"dirección IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Entrada inválida: se esperaba ${issue.expected}, recibido ${parsedType(issue.input)}`;\n // return `Entrada inválida: se esperaba ${issue.expected}, recibido ${util.getParsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Demasiado grande: se esperaba que ${issue.origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${issue.origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Demasiado pequeño: se esperaba que ${issue.origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado pequeño: se esperaba que ${issue.origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n return `Inválido ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inválida en ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido en ${issue.origin}`;\n default:\n return `Entrada inválida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n file: { unit: \"بایت\", verb: \"داشته باشد\" },\n array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"عدد\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"آرایه\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"ورودی\",\n email: \"آدرس ایمیل\",\n url: \"URL\",\n emoji: \"ایموجی\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"تاریخ و زمان ایزو\",\n date: \"تاریخ ایزو\",\n time: \"زمان ایزو\",\n duration: \"مدت زمان ایزو\",\n ipv4: \"IPv4 آدرس\",\n ipv6: \"IPv6 آدرس\",\n cidrv4: \"IPv4 دامنه\",\n cidrv6: \"IPv6 دامنه\",\n base64: \"base64-encoded رشته\",\n base64url: \"base64url-encoded رشته\",\n json_string: \"JSON رشته\",\n e164: \"E.164 عدد\",\n jwt: \"JWT\",\n template_literal: \"ورودی\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `ورودی نامعتبر: می‌بایست ${issue.expected} می‌بود، ${parsedType(issue.input)} دریافت شد`;\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ورودی نامعتبر: می‌بایست ${util.stringifyPrimitive(issue.values[0])} می‌بود`;\n }\n return `گزینه نامعتبر: می‌بایست یکی از ${util.joinValues(issue.values, \"|\")} می‌بود`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n }\n return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n }\n return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n }\n if (_issue.format === \"ends_with\") {\n return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n }\n if (_issue.format === \"includes\") {\n return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n }\n if (_issue.format === \"regex\") {\n return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n }\n return `${Nouns[_issue.format] ?? issue.format} نامعتبر`;\n }\n case \"not_multiple_of\":\n return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n case \"unrecognized_keys\":\n return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `کلید ناشناس در ${issue.origin}`;\n case \"invalid_union\":\n return `ورودی نامعتبر`;\n case \"invalid_element\":\n return `مقدار نامعتبر در ${issue.origin}`;\n default:\n return `ورودی نامعتبر`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"päivämäärän\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"säännöllinen lauseke\",\n email: \"sähköpostiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-päivämäärä\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Virheellinen tyyppi: odotettiin ${issue.expected}, oli ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen syöte`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"nombre\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"tableau\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"entrée\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Entrée invalide : ${issue.expected} attendu, ${parsedType(issue.input)} reçu`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : ${issue.origin} doit être ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n return `${Nouns[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caractères\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"éléments\", verb: \"avoir\" },\n set: { unit: \"éléments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"entrée\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"durée ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"chaîne encodée en base64\",\n base64url: \"chaîne encodée en base64url\",\n json_string: \"chaîne JSON\",\n e164: \"numéro E.164\",\n jwt: \"JWT\",\n template_literal: \"entrée\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Entrée invalide : attendu ${issue.expected}, reçu ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"≤\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"≥\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${Nouns[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clé invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrée invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entrée invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"אותיות\", verb: \"לכלול\" },\n file: { unit: \"בייטים\", verb: \"לכלול\" },\n array: { unit: \"פריטים\", verb: \"לכלול\" },\n set: { unit: \"פריטים\", verb: \"לכלול\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"קלט\",\n email: \"כתובת אימייל\",\n url: \"כתובת רשת\",\n emoji: \"אימוג'י\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"תאריך וזמן ISO\",\n date: \"תאריך ISO\",\n time: \"זמן ISO\",\n duration: \"משך זמן ISO\",\n ipv4: \"כתובת IPv4\",\n ipv6: \"כתובת IPv6\",\n cidrv4: \"טווח IPv4\",\n cidrv6: \"טווח IPv6\",\n base64: \"מחרוזת בבסיס 64\",\n base64url: \"מחרוזת בבסיס 64 לכתובות רשת\",\n json_string: \"מחרוזת JSON\",\n e164: \"מספר E.164\",\n jwt: \"JWT\",\n template_literal: \"קלט\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `קלט לא תקין: צריך ${issue.expected}, התקבל ${parsedType(issue.input)}`;\n // return `Invalid input: expected ${issue.expected}, received ${util.getParsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `קלט לא תקין: צריך ${util.stringifyPrimitive(issue.values[0])}`;\n return `קלט לא תקין: צריך אחת מהאפשרויות ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `גדול מדי: ${issue.origin ?? \"value\"} צריך להיות ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `גדול מדי: ${issue.origin ?? \"value\"} צריך להיות ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `קטן מדי: ${issue.origin} צריך להיות ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `קטן מדי: ${issue.origin} צריך להיות ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `מחרוזת לא תקינה: חייבת להתחיל ב\"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `מחרוזת לא תקינה: חייבת להסתיים ב \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `מחרוזת לא תקינה: חייבת לכלול \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `מחרוזת לא תקינה: חייבת להתאים לתבנית ${_issue.pattern}`;\n return `${Nouns[_issue.format] ?? issue.format} לא תקין`;\n }\n case \"not_multiple_of\":\n return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `מפתח לא תקין ב${issue.origin}`;\n case \"invalid_union\":\n return \"קלט לא תקין\";\n case \"invalid_element\":\n return `ערך לא תקין ב${issue.origin}`;\n default:\n return `קלט לא תקין`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"szám\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"tömb\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"bemenet\",\n email: \"email cím\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO időbélyeg\",\n date: \"ISO dátum\",\n time: \"ISO idő\",\n duration: \"ISO időintervallum\",\n ipv4: \"IPv4 cím\",\n ipv6: \"IPv6 cím\",\n cidrv4: \"IPv4 tartomány\",\n cidrv6: \"IPv6 tartomány\",\n base64: \"base64-kódolt string\",\n base64url: \"base64url-kódolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 szám\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Érvénytelen bemenet: a várt érték ${issue.expected}, a kapott érték ${parsedType(issue.input)}`;\n // return `Invalid input: expected ${issue.expected}, received ${util.getParsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n if (_issue.format === \"ends_with\")\n return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n if (_issue.format === \"includes\")\n return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n return `Érvénytelen ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Érvénytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"Érvénytelen bemenet\";\n case \"invalid_element\":\n return `Érvénytelen érték: ${issue.origin}`;\n default:\n return `Érvénytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Input tidak valid: diharapkan ${issue.expected}, diterima ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${Nouns[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"numero\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"vettore\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Input non valido: atteso ${issue.expected}, ricevuto ${parsedType(issue.input)}`;\n // return `Input non valido: atteso ${issue.expected}, ricevuto ${util.getParsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Invalid ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"文字\", verb: \"である\" },\n file: { unit: \"バイト\", verb: \"である\" },\n array: { unit: \"要素\", verb: \"である\" },\n set: { unit: \"要素\", verb: \"である\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"数値\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"配列\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"入力値\",\n email: \"メールアドレス\",\n url: \"URL\",\n emoji: \"絵文字\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日時\",\n date: \"ISO日付\",\n time: \"ISO時刻\",\n duration: \"ISO期間\",\n ipv4: \"IPv4アドレス\",\n ipv6: \"IPv6アドレス\",\n cidrv4: \"IPv4範囲\",\n cidrv6: \"IPv6範囲\",\n base64: \"base64エンコード文字列\",\n base64url: \"base64urlエンコード文字列\",\n json_string: \"JSON文字列\",\n e164: \"E.164番号\",\n jwt: \"JWT\",\n template_literal: \"入力値\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `無効な入力: ${issue.expected}が期待されましたが、${parsedType(issue.input)}が入力されました`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n if (_issue.format === \"ends_with\")\n return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n if (_issue.format === \"includes\")\n return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n if (_issue.format === \"regex\")\n return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n return `無効な${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n case \"unrecognized_keys\":\n return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin}内の無効なキー`;\n case \"invalid_union\":\n return \"無効な入力\";\n case \"invalid_element\":\n return `${issue.origin}内の無効な値`;\n default:\n return `無効な入力`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"មិនមែនជាលេខ (NaN)\" : \"លេខ\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"អារេ (Array)\";\n }\n if (data === null) {\n return \"គ្មានតម្លៃ (null)\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"ទិន្នន័យបញ្ចូល\",\n email: \"អាសយដ្ឋានអ៊ីមែល\",\n url: \"URL\",\n emoji: \"សញ្ញាអារម្មណ៍\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n date: \"កាលបរិច្ឆេទ ISO\",\n time: \"ម៉ោង ISO\",\n duration: \"រយៈពេល ISO\",\n ipv4: \"អាសយដ្ឋាន IPv4\",\n ipv6: \"អាសយដ្ឋាន IPv6\",\n cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n json_string: \"ខ្សែអក្សរ JSON\",\n e164: \"លេខ E.164\",\n jwt: \"JWT\",\n template_literal: \"ទិន្នន័យបញ្ចូល\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${issue.expected} ប៉ុន្តែទទួលបាន ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n return `មិនត្រឹមត្រូវ៖ ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n case \"invalid_union\":\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n case \"invalid_element\":\n return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n default:\n return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"문자\", verb: \"to have\" },\n file: { unit: \"바이트\", verb: \"to have\" },\n array: { unit: \"개\", verb: \"to have\" },\n set: { unit: \"개\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"입력\",\n email: \"이메일 주소\",\n url: \"URL\",\n emoji: \"이모지\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 날짜시간\",\n date: \"ISO 날짜\",\n time: \"ISO 시간\",\n duration: \"ISO 기간\",\n ipv4: \"IPv4 주소\",\n ipv6: \"IPv6 주소\",\n cidrv4: \"IPv4 범위\",\n cidrv6: \"IPv6 범위\",\n base64: \"base64 인코딩 문자열\",\n base64url: \"base64url 인코딩 문자열\",\n json_string: \"JSON 문자열\",\n e164: \"E.164 번호\",\n jwt: \"JWT\",\n template_literal: \"입력\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `잘못된 입력: 예상 타입은 ${issue.expected}, 받은 타입은 ${parsedType(issue.input)}입니다`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"이하\" : \"미만\";\n const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing)\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"이상\" : \"초과\";\n const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"요소\";\n if (sizing) {\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n }\n if (_issue.format === \"ends_with\")\n return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n if (_issue.format === \"includes\")\n return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n if (_issue.format === \"regex\")\n return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n return `잘못된 ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n case \"unrecognized_keys\":\n return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `잘못된 키: ${issue.origin}`;\n case \"invalid_union\":\n return `잘못된 입력`;\n case \"invalid_element\":\n return `잘못된 값: ${issue.origin}`;\n default:\n return `잘못된 입력`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"знаци\", verb: \"да имаат\" },\n file: { unit: \"бајти\", verb: \"да имаат\" },\n array: { unit: \"ставки\", verb: \"да имаат\" },\n set: { unit: \"ставки\", verb: \"да имаат\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"број\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"низа\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"внес\",\n email: \"адреса на е-пошта\",\n url: \"URL\",\n emoji: \"емоџи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO датум и време\",\n date: \"ISO датум\",\n time: \"ISO време\",\n duration: \"ISO времетраење\",\n ipv4: \"IPv4 адреса\",\n ipv6: \"IPv6 адреса\",\n cidrv4: \"IPv4 опсег\",\n cidrv6: \"IPv6 опсег\",\n base64: \"base64-енкодирана низа\",\n base64url: \"base64url-енкодирана низа\",\n json_string: \"JSON низа\",\n e164: \"E.164 број\",\n jwt: \"JWT\",\n template_literal: \"внес\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Грешен внес: се очекува ${issue.expected}, примено ${parsedType(issue.input)}`;\n // return `Invalid input: expected ${issue.expected}, received ${util.getParsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n return `Invalid ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Грешен број: мора да биде делив со ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Грешен клуч во ${issue.origin}`;\n case \"invalid_union\":\n return \"Грешен внес\";\n case \"invalid_element\":\n return `Грешна вредност во ${issue.origin}`;\n default:\n return `Грешен внес`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"nombor\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Input tidak sah: dijangka ${issue.expected}, diterima ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${Nouns[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\" },\n file: { unit: \"bytes\" },\n array: { unit: \"elementen\" },\n set: { unit: \"elementen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"getal\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Ongeldige invoer: verwacht ${issue.expected}, ontving ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Te lang: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} bevat`;\n return `Te lang: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Te kort: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} bevat`;\n }\n return `Te kort: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"å ha\" },\n file: { unit: \"bytes\", verb: \"å ha\" },\n array: { unit: \"elementer\", verb: \"å inneholde\" },\n set: { unit: \"elementer\", verb: \"å inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"tall\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"liste\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-område\",\n ipv6: \"IPv6-område\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Ugyldig input: forventet ${issue.expected}, fikk ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n return `Ugyldig ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig nøkkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmalıdır\" },\n file: { unit: \"bayt\", verb: \"olmalıdır\" },\n array: { unit: \"unsur\", verb: \"olmalıdır\" },\n set: { unit: \"unsur\", verb: \"olmalıdır\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"numara\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"saf\";\n }\n if (data === null) {\n return \"gayb\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"giren\",\n email: \"epostagâh\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO hengâmı\",\n date: \"ISO tarihi\",\n time: \"ISO zamanı\",\n duration: \"ISO müddeti\",\n ipv4: \"IPv4 nişânı\",\n ipv6: \"IPv6 nişânı\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-şifreli metin\",\n base64url: \"base64url-şifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Fâsit giren: umulan ${issue.expected}, alınan ${parsedType(issue.input)}`;\n // return `Fâsit giren: umulan ${issue.expected}, alınan ${util.getParsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n }\n return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n if (_issue.format === \"ends_with\")\n return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n if (_issue.format === \"regex\")\n return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n return `Fâsit ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} için tanınmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tanınamadı.\";\n case \"invalid_element\":\n return `${issue.origin} için tanınmayan kıymet var.`;\n default:\n return `Kıymet tanınamadı.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"توکي\", verb: \"ولري\" },\n file: { unit: \"بایټس\", verb: \"ولري\" },\n array: { unit: \"توکي\", verb: \"ولري\" },\n set: { unit: \"توکي\", verb: \"ولري\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"عدد\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"ارې\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"ورودي\",\n email: \"بریښنالیک\",\n url: \"یو آر ال\",\n emoji: \"ایموجي\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"نیټه او وخت\",\n date: \"نېټه\",\n time: \"وخت\",\n duration: \"موده\",\n ipv4: \"د IPv4 پته\",\n ipv6: \"د IPv6 پته\",\n cidrv4: \"د IPv4 ساحه\",\n cidrv6: \"د IPv6 ساحه\",\n base64: \"base64-encoded متن\",\n base64url: \"base64url-encoded متن\",\n json_string: \"JSON متن\",\n e164: \"د E.164 شمېره\",\n jwt: \"JWT\",\n template_literal: \"ورودي\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `ناسم ورودي: باید ${issue.expected} وای, مګر ${parsedType(issue.input)} ترلاسه شو`;\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n }\n return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n }\n return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n }\n return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n }\n if (_issue.format === \"ends_with\") {\n return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n }\n if (_issue.format === \"includes\") {\n return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n }\n if (_issue.format === \"regex\") {\n return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n }\n return `${Nouns[_issue.format] ?? issue.format} ناسم دی`;\n }\n case \"not_multiple_of\":\n return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n case \"unrecognized_keys\":\n return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `ناسم کلیډ په ${issue.origin} کې`;\n case \"invalid_union\":\n return `ناسمه ورودي`;\n case \"invalid_element\":\n return `ناسم عنصر په ${issue.origin} کې`;\n default:\n return `ناسمه ورودي`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znaków\", verb: \"mieć\" },\n file: { unit: \"bajtów\", verb: \"mieć\" },\n array: { unit: \"elementów\", verb: \"mieć\" },\n set: { unit: \"elementów\", verb: \"mieć\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"liczba\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"tablica\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"wyrażenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ciąg znaków zakodowany w formacie base64\",\n base64url: \"ciąg znaków zakodowany w formacie base64url\",\n json_string: \"ciąg znaków w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wejście\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Nieprawidłowe dane wejściowe: oczekiwano ${issue.expected}, otrzymano ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n }\n return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n return `Nieprawidłow(y/a/e) ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawidłowy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawidłowe dane wejściowe\";\n case \"invalid_element\":\n return `Nieprawidłowa wartość w ${issue.origin}`;\n default:\n return `Nieprawidłowe dane wejściowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"número\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"nulo\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"padrão\",\n email: \"endereço de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"duração ISO\",\n ipv4: \"endereço IPv4\",\n ipv6: \"endereço IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"número E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Tipo inválido: esperado ${issue.expected}, recebido ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n return `${Nouns[_issue.format] ?? issue.format} inválido`;\n }\n case \"not_multiple_of\":\n return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inválida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inválida\";\n case \"invalid_element\":\n return `Valor inválido em ${issue.origin}`;\n default:\n return `Campo inválido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"символ\",\n few: \"символа\",\n many: \"символов\",\n },\n verb: \"иметь\",\n },\n file: {\n unit: {\n one: \"байт\",\n few: \"байта\",\n many: \"байт\",\n },\n verb: \"иметь\",\n },\n array: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n set: {\n unit: {\n one: \"элемент\",\n few: \"элемента\",\n many: \"элементов\",\n },\n verb: \"иметь\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"число\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"массив\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"ввод\",\n email: \"email адрес\",\n url: \"URL\",\n emoji: \"эмодзи\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO дата и время\",\n date: \"ISO дата\",\n time: \"ISO время\",\n duration: \"ISO длительность\",\n ipv4: \"IPv4 адрес\",\n ipv6: \"IPv6 адрес\",\n cidrv4: \"IPv4 диапазон\",\n cidrv6: \"IPv6 диапазон\",\n base64: \"строка в формате base64\",\n base64url: \"строка в формате base64url\",\n json_string: \"JSON строка\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"ввод\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Неверный ввод: ожидалось ${issue.expected}, получено ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n return `Неверный ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неверное число: должно быть кратным ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неверный ключ в ${issue.origin}`;\n case \"invalid_union\":\n return \"Неверные входные данные\";\n case \"invalid_element\":\n return `Неверное значение в ${issue.origin}`;\n default:\n return `Неверные входные данные`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"število\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"tabela\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"vnos\",\n email: \"e-poštni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in čas\",\n date: \"ISO datum\",\n time: \"ISO čas\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 številka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Neveljaven vnos: pričakovano ${issue.expected}, prejeto ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven ključ v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att innehålla\" },\n set: { unit: \"objekt\", verb: \"att innehålla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"antal\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"lista\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"reguljärt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad sträng\",\n base64url: \"base64url-kodad sträng\",\n json_string: \"JSON-sträng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Ogiltig inmatning: förväntat ${issue.expected}, fick ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"எண் அல்லாதது\" : \"எண்\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"அணி\";\n }\n if (data === null) {\n return \"வெறுமை\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"உள்ளீடு\",\n email: \"மின்னஞ்சல் முகவரி\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO தேதி நேரம்\",\n date: \"ISO தேதி\",\n time: \"ISO நேரம்\",\n duration: \"ISO கால அளவு\",\n ipv4: \"IPv4 முகவரி\",\n ipv6: \"IPv6 முகவரி\",\n cidrv4: \"IPv4 வரம்பு\",\n cidrv6: \"IPv6 வரம்பு\",\n base64: \"base64-encoded சரம்\",\n base64url: \"base64url-encoded சரம்\",\n json_string: \"JSON சரம்\",\n e164: \"E.164 எண்\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${issue.expected}, பெறப்பட்டது ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n }\n return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n }\n return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n if (_issue.format === \"ends_with\")\n return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n if (_issue.format === \"includes\")\n return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n if (_issue.format === \"regex\")\n return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n return `தவறான ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n case \"unrecognized_keys\":\n return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} இல் தவறான விசை`;\n case \"invalid_union\":\n return \"தவறான உள்ளீடு\";\n case \"invalid_element\":\n return `${issue.origin} இல் தவறான மதிப்பு`;\n default:\n return `தவறான உள்ளீடு`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n array: { unit: \"รายการ\", verb: \"ควรมี\" },\n set: { unit: \"รายการ\", verb: \"ควรมี\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"ไม่ใช่ตัวเลข (NaN)\" : \"ตัวเลข\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"อาร์เรย์ (Array)\";\n }\n if (data === null) {\n return \"ไม่มีค่า (null)\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"ข้อมูลที่ป้อน\",\n email: \"ที่อยู่อีเมล\",\n url: \"URL\",\n emoji: \"อิโมจิ\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"วันที่เวลาแบบ ISO\",\n date: \"วันที่แบบ ISO\",\n time: \"เวลาแบบ ISO\",\n duration: \"ช่วงเวลาแบบ ISO\",\n ipv4: \"ที่อยู่ IPv4\",\n ipv6: \"ที่อยู่ IPv6\",\n cidrv4: \"ช่วง IP แบบ IPv4\",\n cidrv6: \"ช่วง IP แบบ IPv6\",\n base64: \"ข้อความแบบ Base64\",\n base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n json_string: \"ข้อความแบบ JSON\",\n e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n jwt: \"โทเคน JWT\",\n template_literal: \"ข้อมูลที่ป้อน\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${issue.expected} แต่ได้รับ ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n if (_issue.format === \"regex\")\n return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n return `รูปแบบไม่ถูกต้อง: ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n case \"unrecognized_keys\":\n return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n case \"invalid_union\":\n return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n case \"invalid_element\":\n return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n default:\n return `ข้อมูลไม่ถูกต้อง`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nexport const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n};\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmalı\" },\n file: { unit: \"bayt\", verb: \"olmalı\" },\n array: { unit: \"öğe\", verb: \"olmalı\" },\n set: { unit: \"öğe\", verb: \"olmalı\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const Nouns = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO süre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aralığı\",\n cidrv6: \"IPv6 aralığı\",\n base64: \"base64 ile şifrelenmiş metin\",\n base64url: \"base64url ile şifrelenmiş metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 sayısı\",\n jwt: \"JWT\",\n template_literal: \"Şablon dizesi\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Geçersiz değer: beklenen ${issue.expected}, alınan ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n if (_issue.format === \"ends_with\")\n return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n if (_issue.format === \"regex\")\n return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n return `Geçersiz ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n case \"unrecognized_keys\":\n return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} içinde geçersiz anahtar`;\n case \"invalid_union\":\n return \"Geçersiz değer\";\n case \"invalid_element\":\n return `${issue.origin} içinde geçersiz değer`;\n default:\n return `Geçersiz değer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"символів\", verb: \"матиме\" },\n file: { unit: \"байтів\", verb: \"матиме\" },\n array: { unit: \"елементів\", verb: \"матиме\" },\n set: { unit: \"елементів\", verb: \"матиме\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"число\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"масив\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"вхідні дані\",\n email: \"адреса електронної пошти\",\n url: \"URL\",\n emoji: \"емодзі\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"дата та час ISO\",\n date: \"дата ISO\",\n time: \"час ISO\",\n duration: \"тривалість ISO\",\n ipv4: \"адреса IPv4\",\n ipv6: \"адреса IPv6\",\n cidrv4: \"діапазон IPv4\",\n cidrv6: \"діапазон IPv6\",\n base64: \"рядок у кодуванні base64\",\n base64url: \"рядок у кодуванні base64url\",\n json_string: \"рядок JSON\",\n e164: \"номер E.164\",\n jwt: \"JWT\",\n template_literal: \"вхідні дані\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Неправильні вхідні дані: очікується ${issue.expected}, отримано ${parsedType(issue.input)}`;\n // return `Неправильні вхідні дані: очікується ${issue.expected}, отримано ${util.getParsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n return `Неправильний ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Неправильний ключ у ${issue.origin}`;\n case \"invalid_union\":\n return \"Неправильні вхідні дані\";\n case \"invalid_element\":\n return `Неправильне значення у ${issue.origin}`;\n default:\n return `Неправильні вхідні дані`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"حروف\", verb: \"ہونا\" },\n file: { unit: \"بائٹس\", verb: \"ہونا\" },\n array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"نمبر\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"آرے\";\n }\n if (data === null) {\n return \"نل\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"ان پٹ\",\n email: \"ای میل ایڈریس\",\n url: \"یو آر ایل\",\n emoji: \"ایموجی\",\n uuid: \"یو یو آئی ڈی\",\n uuidv4: \"یو یو آئی ڈی وی 4\",\n uuidv6: \"یو یو آئی ڈی وی 6\",\n nanoid: \"نینو آئی ڈی\",\n guid: \"جی یو آئی ڈی\",\n cuid: \"سی یو آئی ڈی\",\n cuid2: \"سی یو آئی ڈی 2\",\n ulid: \"یو ایل آئی ڈی\",\n xid: \"ایکس آئی ڈی\",\n ksuid: \"کے ایس یو آئی ڈی\",\n datetime: \"آئی ایس او ڈیٹ ٹائم\",\n date: \"آئی ایس او تاریخ\",\n time: \"آئی ایس او وقت\",\n duration: \"آئی ایس او مدت\",\n ipv4: \"آئی پی وی 4 ایڈریس\",\n ipv6: \"آئی پی وی 6 ایڈریس\",\n cidrv4: \"آئی پی وی 4 رینج\",\n cidrv6: \"آئی پی وی 6 رینج\",\n base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n json_string: \"جے ایس او این سٹرنگ\",\n e164: \"ای 164 نمبر\",\n jwt: \"جے ڈبلیو ٹی\",\n template_literal: \"ان پٹ\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `غلط ان پٹ: ${issue.expected} متوقع تھا، ${parsedType(issue.input)} موصول ہوا`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n }\n return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n }\n if (_issue.format === \"ends_with\")\n return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n if (_issue.format === \"includes\")\n return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n if (_issue.format === \"regex\")\n return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n return `غلط ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n case \"unrecognized_keys\":\n return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n case \"invalid_key\":\n return `${issue.origin} میں غلط کی`;\n case \"invalid_union\":\n return \"غلط ان پٹ\";\n case \"invalid_element\":\n return `${issue.origin} میں غلط ویلیو`;\n default:\n return `غلط ان پٹ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"ký tự\", verb: \"có\" },\n file: { unit: \"byte\", verb: \"có\" },\n array: { unit: \"phần tử\", verb: \"có\" },\n set: { unit: \"phần tử\", verb: \"có\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"số\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"mảng\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"đầu vào\",\n email: \"địa chỉ email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ngày giờ ISO\",\n date: \"ngày ISO\",\n time: \"giờ ISO\",\n duration: \"khoảng thời gian ISO\",\n ipv4: \"địa chỉ IPv4\",\n ipv6: \"địa chỉ IPv6\",\n cidrv4: \"dải IPv4\",\n cidrv6: \"dải IPv6\",\n base64: \"chuỗi mã hóa base64\",\n base64url: \"chuỗi mã hóa base64url\",\n json_string: \"chuỗi JSON\",\n e164: \"số E.164\",\n jwt: \"JWT\",\n template_literal: \"đầu vào\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Đầu vào không hợp lệ: mong đợi ${issue.expected}, nhận được ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n return `${Nouns[_issue.format] ?? issue.format} không hợp lệ`;\n }\n case \"not_multiple_of\":\n return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Khóa không hợp lệ trong ${issue.origin}`;\n case \"invalid_union\":\n return \"Đầu vào không hợp lệ\";\n case \"invalid_element\":\n return `Giá trị không hợp lệ trong ${issue.origin}`;\n default:\n return `Đầu vào không hợp lệ`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字符\", verb: \"包含\" },\n file: { unit: \"字节\", verb: \"包含\" },\n array: { unit: \"项\", verb: \"包含\" },\n set: { unit: \"项\", verb: \"包含\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"非数字(NaN)\" : \"数字\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"数组\";\n }\n if (data === null) {\n return \"空值(null)\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"输入\",\n email: \"电子邮件\",\n url: \"URL\",\n emoji: \"表情符号\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO日期时间\",\n date: \"ISO日期\",\n time: \"ISO时间\",\n duration: \"ISO时长\",\n ipv4: \"IPv4地址\",\n ipv6: \"IPv6地址\",\n cidrv4: \"IPv4网段\",\n cidrv6: \"IPv6网段\",\n base64: \"base64编码字符串\",\n base64url: \"base64url编码字符串\",\n json_string: \"JSON字符串\",\n e164: \"E.164号码\",\n jwt: \"JWT\",\n template_literal: \"输入\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `无效输入:期望 ${issue.expected},实际接收 ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;\n return `无效选项:期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n return `数值过大:期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `无效字符串:必须以 \"${_issue.prefix}\" 开头`;\n if (_issue.format === \"ends_with\")\n return `无效字符串:必须以 \"${_issue.suffix}\" 结尾`;\n if (_issue.format === \"includes\")\n return `无效字符串:必须包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;\n return `无效${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `无效数字:必须是 ${issue.divisor} 的倍数`;\n case \"unrecognized_keys\":\n return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} 中的键(key)无效`;\n case \"invalid_union\":\n return \"无效输入\";\n case \"invalid_element\":\n return `${issue.origin} 中包含无效值(value)`;\n default:\n return `无效输入`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"字元\", verb: \"擁有\" },\n file: { unit: \"位元組\", verb: \"擁有\" },\n array: { unit: \"項目\", verb: \"擁有\" },\n set: { unit: \"項目\", verb: \"擁有\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const 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 (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n };\n const Nouns = {\n regex: \"輸入\",\n email: \"郵件地址\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO 日期時間\",\n date: \"ISO 日期\",\n time: \"ISO 時間\",\n duration: \"ISO 期間\",\n ipv4: \"IPv4 位址\",\n ipv6: \"IPv6 位址\",\n cidrv4: \"IPv4 範圍\",\n cidrv6: \"IPv6 範圍\",\n base64: \"base64 編碼字串\",\n base64url: \"base64url 編碼字串\",\n json_string: \"JSON 字串\",\n e164: \"E.164 數值\",\n jwt: \"JWT\",\n template_literal: \"輸入\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `無效的輸入值:預期為 ${issue.expected},但收到 ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n return `數值過大:預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `無效的字串:必須以 \"${_issue.prefix}\" 開頭`;\n }\n if (_issue.format === \"ends_with\")\n return `無效的字串:必須以 \"${_issue.suffix}\" 結尾`;\n if (_issue.format === \"includes\")\n return `無效的字串:必須包含 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `無效的字串:必須符合格式 ${_issue.pattern}`;\n return `無效的 ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `無效的數字:必須為 ${issue.divisor} 的倍數`;\n case \"unrecognized_keys\":\n return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}:${util.joinValues(issue.keys, \"、\")}`;\n case \"invalid_key\":\n return `${issue.origin} 中有無效的鍵值`;\n case \"invalid_union\":\n return \"無效的輸入值\";\n case \"invalid_element\":\n return `${issue.origin} 中有無效的值`;\n default:\n return `無效的輸入值`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as id } from \"./id.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\n","export 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 if (this._idmap.has(meta.id)) {\n throw new Error(`ID ${meta.id} already exists in the registry`);\n }\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n remove(schema) {\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 return { ...pm, ...this._map.get(schema) };\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}\nexport const globalRegistry = /*@__PURE__*/ registry();\n","import * as checks from \"./checks.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n },\n });\n}\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// export function _refine<T>(\n// Class: util.SchemaClass<schemas.$ZodCustom>,\n// fn: (arg: NoInfer<T>) => util.MaybeAsync<unknown>,\n// _params: string | $ZodCustomParams = {}\n// ): checks.$ZodCheck<T> {\n// return _custom(Class, fn, _params);\n// }\n// same as _custom but deafults to abort:false\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\nexport function _stringbool(Classes, _params) {\n const { case: _case, error, truthy, falsy } = util.normalizeParams(_params);\n let truthyArray = truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (_case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Pipe = Classes.Pipe ?? schemas.$ZodPipe;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const _Transform = Classes.Transform ?? schemas.$ZodTransform;\n const tx = new _Transform({\n type: \"transform\",\n transform: (input, payload) => {\n let data = input;\n if (_case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: tx,\n });\n return {};\n }\n },\n error,\n });\n const innerPipe = new _Pipe({\n type: \"pipe\",\n in: new _String({ type: \"string\", error }),\n out: tx,\n error,\n });\n const outerPipe = new _Pipe({\n type: \"pipe\",\n in: innerPipe,\n out: new _Boolean({\n type: \"boolean\",\n error,\n }),\n error,\n });\n return outerPipe;\n}\n","import { _array, _tuple, _unknown } from \"./api.js\";\nimport { parse, parseAsync } from \"./parse.js\";\nimport * as schemas from \"./schemas.js\";\nimport { $ZodTuple } from \"./schemas.js\";\nexport class $ZodFunction {\n constructor(def) {\n this._def = def;\n this.def = def;\n }\n implement(func) {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n const impl = ((...args) => {\n const parsedArgs = this._def.input ? parse(this._def.input, args, undefined, { callee: impl }) : args;\n if (!Array.isArray(parsedArgs)) {\n throw new Error(\"Invalid arguments schema: not an array or tuple schema.\");\n }\n const output = func(...parsedArgs);\n return this._def.output ? parse(this._def.output, output, undefined, { callee: impl }) : output;\n });\n return impl;\n }\n implementAsync(func) {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n const impl = (async (...args) => {\n const parsedArgs = this._def.input ? await parseAsync(this._def.input, args, undefined, { callee: impl }) : args;\n if (!Array.isArray(parsedArgs)) {\n throw new Error(\"Invalid arguments schema: not an array or tuple schema.\");\n }\n const output = await func(...parsedArgs);\n return this._def.output ? parseAsync(this._def.output, output, undefined, { callee: impl }) : output;\n });\n return impl;\n }\n input(...args) {\n const F = this.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: this._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: this._def.output,\n });\n }\n output(output) {\n const F = this.constructor;\n return new F({\n type: \"function\",\n input: this._def.input,\n output,\n });\n }\n}\nfunction _function(params) {\n return new $ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input)\n ? _tuple(schemas.$ZodTuple, params?.input)\n : (params?.input ?? _array(schemas.$ZodArray, _unknown(schemas.$ZodUnknown))),\n output: params?.output ?? _unknown(schemas.$ZodUnknown),\n });\n}\nexport { _function as function };\n","import { $ZodRegistry, globalRegistry } from \"./registries.js\";\nimport { getEnumValues } from \"./util.js\";\nexport class JSONSchemaGenerator {\n constructor(params) {\n this.counter = 0;\n this.metadataRegistry = params?.metadata ?? globalRegistry;\n this.target = params?.target ?? \"draft-2020-12\";\n this.unrepresentable = params?.unrepresentable ?? \"throw\";\n this.override = params?.override ?? (() => { });\n this.io = params?.io ?? \"output\";\n this.seen = new Map();\n }\n process(schema, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n const formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n };\n // check for schema in seens\n const seen = this.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 };\n this.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 const parent = schema._zod.parent;\n if (parent) {\n // schema was cloned from another schema\n result.ref = parent;\n this.process(parent, params);\n this.seen.get(parent).isParent = true;\n }\n else {\n const _json = result.schema;\n switch (def.type) {\n case \"string\": {\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 }\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 result.schema.allOf = [\n ...regexes.map((regex) => ({\n ...(this.target === \"draft-7\" ? { type: \"string\" } : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n break;\n }\n case \"number\": {\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 if (typeof exclusiveMinimum === \"number\")\n json.exclusiveMinimum = exclusiveMinimum;\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\")\n json.exclusiveMaximum = exclusiveMaximum;\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n break;\n }\n case \"boolean\": {\n const json = _json;\n json.type = \"boolean\";\n break;\n }\n case \"bigint\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"symbol\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"undefined\": {\n const json = _json;\n json.type = \"null\";\n break;\n }\n case \"null\": {\n _json.type = \"null\";\n break;\n }\n case \"any\": {\n break;\n }\n case \"unknown\": {\n break;\n }\n case \"never\": {\n _json.not = {};\n break;\n }\n case \"void\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"date\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"array\": {\n const json = _json;\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 = this.process(def.element, { ...params, path: [...params.path, \"items\"] });\n break;\n }\n case \"object\": {\n const json = _json;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape; // params.shapeCache.get(schema)!;\n for (const key in shape) {\n json.properties[key] = this.process(shape[key], {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n // const optionalKeys = new Set(def.optional);\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (this.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 (this.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = this.process(def.catchall, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n break;\n }\n case \"union\": {\n const json = _json;\n json.anyOf = def.options.map((x, i) => this.process(x, {\n ...params,\n path: [...params.path, \"anyOf\", i],\n }));\n break;\n }\n case \"intersection\": {\n const json = _json;\n const a = this.process(def.left, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = this.process(def.right, {\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 break;\n }\n case \"tuple\": {\n const json = _json;\n json.type = \"array\";\n const prefixItems = def.items.map((x, i) => this.process(x, { ...params, path: [...params.path, \"prefixItems\", i] }));\n if (this.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n }\n else {\n json.items = prefixItems;\n }\n if (def.rest) {\n const rest = this.process(def.rest, {\n ...params,\n path: [...params.path, \"items\"],\n });\n if (this.target === \"draft-2020-12\") {\n json.items = rest;\n }\n else {\n json.additionalItems = rest;\n }\n }\n // additionalItems\n if (def.rest) {\n json.items = this.process(def.rest, {\n ...params,\n path: [...params.path, \"items\"],\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 break;\n }\n case \"record\": {\n const json = _json;\n json.type = \"object\";\n json.propertyNames = this.process(def.keyType, { ...params, path: [...params.path, \"propertyNames\"] });\n json.additionalProperties = this.process(def.valueType, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n break;\n }\n case \"map\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"set\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"enum\": {\n const json = _json;\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 break;\n }\n case \"literal\": {\n const json = _json;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (this.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 (this.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 json.const = val;\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 = \"string\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n break;\n }\n case \"file\": {\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 json.anyOf = mime.map((m) => {\n const mFile = { ...file, contentMediaType: m };\n return mFile;\n });\n }\n }\n else {\n Object.assign(json, file);\n }\n // if (this.unrepresentable === \"throw\") {\n // throw new Error(\"File cannot be represented in JSON Schema\");\n // }\n break;\n }\n case \"transform\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"nullable\": {\n const inner = this.process(def.innerType, params);\n _json.anyOf = [inner, { type: \"null\" }];\n break;\n }\n case \"nonoptional\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"success\": {\n const json = _json;\n json.type = \"boolean\";\n break;\n }\n case \"default\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n _json.default = JSON.parse(JSON.stringify(def.defaultValue));\n break;\n }\n case \"prefault\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n if (this.io === \"input\")\n _json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n break;\n }\n case \"catch\": {\n // use conditionals\n this.process(def.innerType, params);\n result.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 break;\n }\n case \"nan\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"template_literal\": {\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 break;\n }\n case \"pipe\": {\n const innerType = this.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n this.process(innerType, params);\n result.ref = innerType;\n break;\n }\n case \"readonly\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n _json.readOnly = true;\n break;\n }\n // passthrough types\n case \"promise\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"optional\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"lazy\": {\n const innerType = schema._zod.innerType;\n this.process(innerType, params);\n result.ref = innerType;\n break;\n }\n case \"custom\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n break;\n }\n default: {\n def;\n }\n }\n }\n }\n // metadata\n const meta = this.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (this.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 (this.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from this.seen in case it was overwritten\n const _result = this.seen.get(schema);\n return _result.schema;\n }\n emit(schema, _params) {\n const params = {\n cycles: _params?.cycles ?? \"ref\",\n reused: _params?.reused ?? \"inline\",\n // unrepresentable: _params?.unrepresentable ?? \"throw\",\n // uri: _params?.uri ?? ((id) => `${id}`),\n external: _params?.external ?? undefined,\n };\n // iterate over seen map;\n const root = this.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // initialize result with root schema fields\n // Object.assign(result, seen.cached);\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 = this.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (params.external) {\n const externalId = params.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${this.counter++}`;\n // check if schema is in the external registry\n if (externalId)\n return { ref: params.external.uri(externalId) };\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${this.counter++}`;\n entry[1].defId = id;\n return { defId: id, ref: `${params.external.uri(\"__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${this.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 (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 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 // extract schemas into $defs\n for (const entry of this.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n // also prevents root schema from being extracted\n if (schema === entry[0]) {\n // do not copy to defs...this is the root schema\n extractToDef(entry);\n continue;\n }\n // extract schemas that are in the external registry\n if (params.external) {\n const ext = params.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 = this.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n if (params.cycles === \"throw\") {\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 else if (params.cycles === \"ref\") {\n extractToDef(entry);\n }\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (params.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n // flatten _refs\n const flattenRef = (zodSchema, params) => {\n const seen = this.seen.get(zodSchema);\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n // already seen\n if (seen.ref === null) {\n return;\n }\n // flatten ref if defined\n const ref = seen.ref;\n seen.ref = null; // prevent recursion\n if (ref) {\n flattenRef(ref, params);\n // merge referenced schema into current\n const refSchema = this.seen.get(ref).schema;\n if (refSchema.$ref && params.target === \"draft-7\") {\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n Object.assign(schema, _cached); // prevent overwriting any fields in the original schema\n }\n }\n // execute overrides\n if (!seen.isParent)\n this.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n });\n };\n for (const entry of [...this.seen.entries()].reverse()) {\n flattenRef(entry[0], { target: this.target });\n }\n const result = {};\n if (this.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (this.target === \"draft-7\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else {\n console.warn(`Invalid target: ${this.target}`);\n }\n Object.assign(result, root.def);\n // build defs object\n const defs = params.external?.defs ?? {};\n for (const entry of this.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (!params.external && Object.keys(defs).length > 0) {\n if (this.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to .emit() is functionally independent\n // though the seen map is shared\n return JSON.parse(JSON.stringify(result));\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n }\n}\nexport function toJSONSchema(input, _params) {\n if (input instanceof $ZodRegistry) {\n const gen = new JSONSchemaGenerator(_params);\n const defs = {};\n for (const entry of input._idmap.entries()) {\n const [_, schema] = entry;\n gen.process(schema);\n }\n const schemas = {};\n const external = {\n registry: input,\n uri: _params?.uri || ((id) => id),\n defs,\n };\n for (const entry of input._idmap.entries()) {\n const [key, schema] = entry;\n schemas[key] = gen.emit(schema, {\n ..._params,\n external,\n });\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = gen.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n const gen = new JSONSchemaGenerator(_params);\n gen.process(input);\n return gen.emit(input, _params);\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 schema = _schema;\n const def = schema._zod.def;\n switch (def.type) {\n case \"string\":\n case \"number\":\n case \"bigint\":\n case \"boolean\":\n case \"date\":\n case \"symbol\":\n case \"undefined\":\n case \"null\":\n case \"any\":\n case \"unknown\":\n case \"never\":\n case \"void\":\n case \"literal\":\n case \"enum\":\n case \"nan\":\n case \"file\":\n case \"template_literal\":\n return false;\n case \"array\": {\n return isTransforming(def.element, ctx);\n }\n case \"object\": {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n case \"union\": {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n case \"intersection\": {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n case \"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 case \"record\": {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n case \"map\": {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n case \"set\": {\n return isTransforming(def.valueType, ctx);\n }\n // inner types\n case \"promise\":\n case \"optional\":\n case \"nonoptional\":\n case \"nullable\":\n case \"readonly\":\n return isTransforming(def.innerType, ctx);\n case \"lazy\":\n return isTransforming(def.getter(), ctx);\n case \"default\": {\n return isTransforming(def.innerType, ctx);\n }\n case \"prefault\": {\n return isTransforming(def.innerType, ctx);\n }\n case \"custom\": {\n return false;\n }\n case \"transform\": {\n return true;\n }\n case \"pipe\": {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n case \"success\": {\n return false;\n }\n case \"catch\": {\n return false;\n }\n default:\n def;\n }\n throw new Error(`Unknown schema type: ${def.type}`);\n}\n","export {};\n","export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./function.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n","import * as core from \"zod/v4/core\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"zod/v4/core\";\nimport { $ZodError } from \"zod/v4/core\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => inst.issues.push(issue),\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => inst.issues.push(...issues),\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"zod/v4/core\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n","import * as core from \"zod/v4/core\";\nimport { util } from \"zod/v4/core\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n inst.def = def;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone({\n ...def,\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }\n // { parent: true }\n );\n };\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return literal(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObject.init(inst, def);\n ZodType.init(inst, def);\n util.defineLazy(inst, \"shape\", () => {\n return Object.fromEntries(Object.entries(inst._zod.def.shape));\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n // inst.nonstrict = () => inst.clone({ ...inst._zod.def, catchall: api.unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n get shape() {\n util.assignProp(this, \"shape\", { ...shape });\n return this.shape;\n },\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n get shape() {\n util.assignProp(this, \"shape\", { ...shape });\n return this.shape;\n },\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n get shape() {\n util.assignProp(this, \"shape\", { ...shape });\n return this.shape;\n },\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType: union([keyType, never()]),\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n _issue.continue ?? (_issue.continue = true);\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n});\n// custom checks\nexport function check(fn, params) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n const ch = check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort);\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n }, params);\n return ch;\n}\nfunction _instanceof(cls, params = {\n error: `Input not instance of ${cls.name}`,\n}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Pipe: ZodPipe,\n Boolean: ZodBoolean,\n String: ZodString,\n Transform: ZodTransform,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","// Zod 3 compat layer\nimport * as core from \"zod/v4/core\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\n/** @deprecated Not necessary in Zod 4. */\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\n/** A special constant with type `never` */\nexport const NEVER = INVALID;\nexport { $brand, config } from \"zod/v4/core\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n","import * as core from \"zod/v4/core\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n","export * as core from \"zod/v4/core\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"zod/v4/core\";\nimport en from \"zod/v4/locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, function, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, toJSONSchema, TimePrecision, } from \"zod/v4/core\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n","import * as z from \"./external.js\";\nexport { z };\nexport * from \"./external.js\";\nexport default z;\n","import z4 from \"./classic/index.js\";\nexport * from \"./classic/index.js\";\nexport default z4;\n","import { z } from \"zod/v4\";\n\nconst schema = z\n .object({\n ci: z.boolean().default(false),\n debug: z.boolean().default(false),\n localBuild: z.boolean().default(false),\n baseCommand: z\n .enum([\"add\", \"init\", \"deploy\", \"upgrade\", \"remove\"])\n .optional()\n .catch(undefined),\n appType: z.enum([\"browser\", \"webviewer\"]).optional().catch(undefined),\n ui: z.enum([\"shadcn\", \"mantine\"]).optional().catch(\"mantine\"),\n projectDir: z.string().default(process.cwd()),\n authType: z.enum([\"clerk\", \"fmaddon\"]).optional(),\n emailProvider: z.enum([\"plunk\", \"resend\", \"none\"]).optional(),\n dataSource: z.enum([\"filemaker\", \"none\"]).optional(),\n })\n .passthrough();\n\ntype ProgramState = z.infer<typeof schema>;\nexport let state: ProgramState = schema.parse({});\n\nexport function initProgramState(args: unknown) {\n const parsed = schema.safeParse(args);\n if (parsed.success) {\n state = { ...state, ...parsed.data };\n }\n}\n","export type PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\";\n\nexport const getUserPkgManager: () => PackageManager = () => {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n } else if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n } else if (userAgent.startsWith(\"bun\")) {\n return \"bun\";\n } else {\n return \"npm\";\n }\n } else {\n // If no user agent is set, assume pnpm\n return \"pnpm\";\n }\n};\n","import chalk from \"chalk\";\n\nexport const logger = {\n error(...args: unknown[]) {\n console.log(chalk.red(...args));\n },\n warn(...args: unknown[]) {\n console.log(chalk.yellow(...args));\n },\n info(...args: unknown[]) {\n console.log(chalk.cyan(...args));\n },\n success(...args: unknown[]) {\n console.log(chalk.green(...args));\n },\n dim(...args: unknown[]) {\n console.log(chalk.dim(...args));\n },\n};\n","import chalk from \"chalk\";\nimport { execa, type StdoutStderrOption } from \"execa\";\nimport ora, { type Ora } from \"ora\";\n\nimport { state } from \"~/state.js\";\nimport {\n getUserPkgManager,\n type PackageManager,\n} from \"~/utils/getUserPkgManager.js\";\nimport { logger } from \"~/utils/logger.js\";\n\nconst execWithSpinner = async (\n projectDir: string,\n pkgManager: PackageManager | \"pnpx\" | \"bunx\",\n options: {\n args?: string[];\n stdout?: StdoutStderrOption;\n onDataHandle?: (spinner: Ora) => (data: Buffer) => void;\n loadingMessage?: string;\n }\n) => {\n const { onDataHandle, args = [\"install\"], stdout = \"pipe\" } = options;\n\n if (process.env.PROOFKIT_ENV === \"development\") {\n args.push(\"--prefer-offline\");\n }\n\n const spinner = ora(\n options.loadingMessage ?? `Running ${pkgManager} ${args.join(\" \")} ...`\n ).start();\n const subprocess = execa(pkgManager, args, {\n cwd: projectDir,\n stdout,\n stderr: \"pipe\", // Capture stderr to get error messages\n });\n\n await new Promise<void>((res, rej) => {\n let stdoutOutput = \"\";\n let stderrOutput = \"\";\n\n if (onDataHandle) {\n subprocess.stdout?.on(\"data\", onDataHandle(spinner));\n } else {\n // If no custom handler, capture stdout for error reporting\n subprocess.stdout?.on(\"data\", (data) => {\n stdoutOutput += data.toString();\n });\n }\n\n // Capture stderr output for error reporting\n subprocess.stderr?.on(\"data\", (data) => {\n stderrOutput += data.toString();\n });\n\n void subprocess.on(\"error\", (e) => rej(e));\n void subprocess.on(\"close\", (code) => {\n if (code === 0) {\n res();\n } else {\n // Combine stdout and stderr for complete error message\n const combinedOutput = [stdoutOutput, stderrOutput]\n .filter((output) => output.trim())\n .join(\"\\n\")\n .trim()\n // Remove spinner-related lines that aren't useful in error output\n .replace(/^- Checking registry\\.$/gm, \"\")\n .replace(/^\\s*$/gm, \"\") // Remove empty lines\n .trim();\n\n const errorMessage =\n combinedOutput ||\n `Command failed with exit code ${code}: ${pkgManager} ${args.join(\" \")}`;\n rej(new Error(errorMessage));\n }\n });\n });\n\n return spinner;\n};\n\nconst runInstallCommand = async (\n pkgManager: PackageManager,\n projectDir: string\n): Promise<Ora | null> => {\n switch (pkgManager) {\n // When using npm, inherit the stderr stream so that the progress bar is shown\n case \"npm\":\n await execa(pkgManager, [\"install\"], {\n cwd: projectDir,\n stderr: \"inherit\",\n });\n\n return null;\n // When using yarn or pnpm, use the stdout stream and ora spinner to show the progress\n case \"pnpm\":\n return execWithSpinner(projectDir, pkgManager, {\n onDataHandle: (spinner) => (data) => {\n const text = data.toString();\n\n if (text.includes(\"Progress\")) {\n spinner.text = text.includes(\"|\")\n ? (text.split(\" | \")[1] ?? \"\")\n : text;\n }\n },\n });\n case \"yarn\":\n return execWithSpinner(projectDir, pkgManager, {\n onDataHandle: (spinner) => (data) => {\n spinner.text = data.toString();\n },\n });\n // When using bun, the stdout stream is ignored and the spinner is shown\n case \"bun\":\n return execWithSpinner(projectDir, pkgManager, { stdout: \"ignore\" });\n }\n};\n\nexport const installDependencies = async (args?: { projectDir?: string }) => {\n const { projectDir = state.projectDir } = args ?? {};\n logger.info(\"Installing dependencies...\");\n const pkgManager = getUserPkgManager();\n\n const installSpinner = await runInstallCommand(pkgManager, projectDir);\n\n // If the spinner was used to show the progress, use succeed method on it\n // If not, use the succeed on a new spinner\n (installSpinner ?? ora()).succeed(\n chalk.green(\"Successfully installed dependencies!\\n\")\n );\n};\n\nexport const runExecCommand = async ({\n command,\n projectDir = state.projectDir,\n successMessage,\n errorMessage,\n loadingMessage,\n}: {\n command: string[];\n projectDir?: string;\n successMessage?: string;\n errorMessage?: string;\n loadingMessage?: string;\n}) => {\n let spinner: Ora | null = null;\n\n try {\n spinner = await _runExecCommand({\n projectDir,\n command,\n loadingMessage,\n });\n\n // If the spinner was used to show the progress, use succeed method on it\n // If not, use the succeed on a new spinner\n (spinner ?? ora()).succeed(\n chalk.green(\n successMessage\n ? `${successMessage}\\n`\n : `Successfully ran ${command.join(\" \")}!\\n`\n )\n );\n } catch (error) {\n // If we have a spinner, fail it, otherwise just throw the error\n if (spinner) {\n const failMessage = errorMessage || `Failed to run ${command.join(\" \")}`;\n spinner.fail(chalk.red(failMessage));\n }\n throw error;\n }\n};\n\nexport const _runExecCommand = async ({\n projectDir,\n command,\n loadingMessage,\n}: {\n projectDir: string;\n exec?: boolean;\n command: string[];\n loadingMessage?: string;\n}): Promise<Ora | null> => {\n const pkgManager = getUserPkgManager();\n switch (pkgManager) {\n // When using npm, capture both stdout and stderr to show error messages\n case \"npm\":\n const result = await execa(\"npx\", [...command], {\n cwd: projectDir,\n stdout: \"pipe\",\n stderr: \"pipe\",\n reject: false,\n });\n\n if (result.exitCode !== 0) {\n // Combine stdout and stderr for complete error message\n const combinedOutput = [result.stdout, result.stderr]\n .filter((output) => output?.trim())\n .join(\"\\n\")\n .trim()\n // Remove spinner-related lines that aren't useful in error output\n .replace(/^- Checking registry\\.$/gm, \"\")\n .replace(/^\\s*$/gm, \"\") // Remove empty lines\n .trim();\n\n const errorMessage =\n combinedOutput ||\n `Command failed with exit code ${result.exitCode}: npx ${command.join(\" \")}`;\n throw new Error(errorMessage);\n }\n\n return null;\n // When using yarn or pnpm, use the stdout stream and ora spinner to show the progress\n case \"pnpm\":\n // For shadcn commands, don't use progress handler to capture full output\n const isInstallCommand = command.includes(\"install\");\n return execWithSpinner(projectDir, \"pnpm\", {\n args: [\"dlx\", ...command],\n loadingMessage,\n onDataHandle: isInstallCommand\n ? (spinner) => (data) => {\n const text = data.toString();\n\n if (text.includes(\"Progress\")) {\n spinner.text = text.includes(\"|\")\n ? (text.split(\" | \")[1] ?? \"\")\n : text;\n }\n }\n : undefined,\n });\n case \"yarn\":\n // For shadcn commands, don't use progress handler to capture full output\n const isYarnInstallCommand = command.includes(\"install\");\n return execWithSpinner(projectDir, pkgManager, {\n args: [...command],\n loadingMessage,\n onDataHandle: isYarnInstallCommand\n ? (spinner) => (data) => {\n spinner.text = data.toString();\n }\n : undefined,\n });\n // When using bun, the stdout stream is ignored and the spinner is shown\n case \"bun\":\n return execWithSpinner(projectDir, \"bunx\", {\n stdout: \"ignore\",\n args: [...command],\n loadingMessage,\n });\n }\n};\n\nexport function generateRandomSecret(): string {\n return crypto.randomUUID().replace(/-/g, \"\");\n}\n","import {\n getFmdapiVersion,\n getNodeMajorVersion,\n getProofkitBetterAuthVersion,\n getVersion,\n} from \"~/utils/getProofKitVersion.js\";\n\n/*\n * This maps the necessary packages to a version.\n * This improves performance significantly over fetching it from the npm registry.\n */\nexport const dependencyVersionMap = {\n // NextAuth.js\n \"next-auth\": \"beta\",\n \"next-auth-adapter-filemaker\": \"beta\",\n\n \"@auth/prisma-adapter\": \"^1.6.0\",\n \"@auth/drizzle-adapter\": \"^1.1.0\",\n\n // Prisma\n prisma: \"^5.14.0\",\n \"@prisma/client\": \"^5.14.0\",\n \"@prisma/adapter-planetscale\": \"^5.14.0\",\n\n // Drizzle\n \"drizzle-orm\": \"^0.30.10\",\n \"drizzle-kit\": \"^0.21.4\",\n \"eslint-plugin-drizzle\": \"^0.2.3\",\n mysql2: \"^3.9.7\",\n \"@planetscale/database\": \"^1.18.0\",\n postgres: \"^3.4.4\",\n \"@libsql/client\": \"^0.6.0\",\n\n // TailwindCSS\n tailwindcss: \"^4.1.10\",\n postcss: \"^8.4.41\",\n prettier: \"^3.5.3\",\n \"prettier-plugin-tailwindcss\": \"^0.6.12\",\n \"@tailwindcss/postcss\": \"^4.1.10\",\n \"class-variance-authority\": \"^0.7.1\",\n clsx: \"^2.1.1\",\n \"tailwind-merge\": \"^3.3.1\",\n \"tw-animate-css\": \"^1.3.4\",\n\n // tRPC\n \"@trpc/client\": \"^11.0.0-rc.446\",\n \"@trpc/server\": \"^11.0.0-rc.446\",\n \"@trpc/react-query\": \"^11.0.0-rc.446\",\n \"@trpc/next\": \"^11.0.0-rc.446\",\n superjson: \"^2.2.1\",\n \"server-only\": \"^0.0.1\",\n\n // Clerk\n \"@clerk/nextjs\": \"^6.3.1\",\n \"@clerk/themes\": \"^2.1.33\",\n\n // FileMaker Data API\n \"@proofkit/fmdapi\": `^${getFmdapiVersion()}`,\n\n // ProofKit\n \"@proofkit/cli\": `^${getVersion()}`,\n\n // Tanstack Query\n \"@tanstack/react-query\": \"^5.59.0\",\n \"@tanstack/react-query-devtools\": \"^5.59.0\",\n \"@tanstack/eslint-plugin-query\": \"^5.59.1\",\n\n // ProofKit Auth\n \"@node-rs/argon2\": \"^2.0.2\",\n \"@oslojs/binary\": \"^1.0.0\",\n \"@oslojs/crypto\": \"^1.0.1\",\n \"@oslojs/encoding\": \"^1.1.0\",\n \"js-cookie\": \"^3.0.5\",\n \"@types/js-cookie\": \"^3.0.6\",\n\n // React Email\n \"@react-email/components\": \"^0.5.0\",\n \"@react-email/render\": \"1.2.0\",\n \"@react-email/preview-server\": \"^4.2.8\",\n \"@plunk/node\": \"^3.0.3\",\n \"react-email\": \"^4.2.8\",\n resend: \"^4.0.0\",\n \"@sendgrid/mail\": \"^8.1.4\",\n\n // Node\n \"@types/node\": `^${getNodeMajorVersion()}`,\n\n // Radix (for shadcn/ui)\n \"@radix-ui/react-slot\": \"^1.2.3\",\n\n // Icons (for shadcn/ui)\n \"lucide-react\": \"^0.518.0\",\n\n // better-auth\n \"better-auth\": \"^1.3.4\",\n \"@proofkit/better-auth\": `${getProofkitBetterAuthVersion()}`,\n \"@daveyplate/better-auth-ui\": \"^2.1.3\",\n\n // Mantine UI\n \"@mantine/core\": \"^7.15.0\",\n \"@mantine/dates\": \"^7.15.0\",\n \"@mantine/hooks\": \"^7.15.0\",\n \"@mantine/modals\": \"^7.15.0\",\n \"@mantine/notifications\": \"^7.15.0\",\n \"mantine-react-table\": \"^2.0.0\",\n\n // Theme utilities\n \"next-themes\": \"^0.4.6\",\n\n // Zod\n \"zod\": \"^4\",\n} as const;\nexport type AvailableDependencies = keyof typeof dependencyVersionMap;\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport sortPackageJson from \"sort-package-json\";\nimport { type PackageJson } from \"type-fest\";\n\nimport {\n dependencyVersionMap,\n type AvailableDependencies,\n} from \"~/installers/dependencyVersionMap.js\";\nimport { state } from \"~/state.js\";\n\nexport const addPackageDependency = (opts: {\n dependencies: AvailableDependencies[];\n devMode: boolean;\n projectDir?: string;\n}) => {\n const { dependencies, devMode, projectDir = state.projectDir } = opts;\n\n const pkgJson = fs.readJSONSync(\n path.join(projectDir, \"package.json\")\n ) as PackageJson;\n\n dependencies.forEach((pkgName) => {\n const version = dependencyVersionMap[pkgName];\n\n if (devMode && pkgJson.devDependencies) {\n pkgJson.devDependencies[pkgName] = version;\n } else if (pkgJson.dependencies) {\n pkgJson.dependencies[pkgName] = version;\n }\n });\n const sortedPkgJson = sortPackageJson(pkgJson);\n\n fs.writeJSONSync(path.join(projectDir, \"package.json\"), sortedPkgJson, {\n spaces: 2,\n });\n};\n","import path from \"path\";\nimport fs from \"fs-extra\";\n\nimport { type Installer } from \"~/installers/index.js\";\nimport { state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\n\nexport type FMAuthKeys =\n | { username: string; password: string }\n | { ottoApiKey: string };\n\nexport const initEnvFile: Installer = () => {\n const envFilePath = findT3EnvFile(false) ?? `./src/config/env.ts`;\n\n const envContent = `\n# When adding additional environment variables, the schema in \"${envFilePath}\"\n# should be updated accordingly.\n\n`\n .trim()\n .concat(\"\\n\");\n\n const envDest = path.join(state.projectDir, \".env\");\n\n fs.writeFileSync(envDest, envContent, \"utf-8\");\n};\n\nexport function findT3EnvFile(): string;\nexport function findT3EnvFile(throwIfNotFound: false): string | null;\nexport function findT3EnvFile(throwIfNotFound: true): string;\nexport function findT3EnvFile(throwIfNotFound?: boolean): string | null {\n const possiblePaths = [\n `src/config/env.ts`,\n `src/lib/env.ts`,\n `src/env.ts`,\n `lib/env.ts`,\n `env.ts`,\n `config/env.ts`,\n ];\n\n for (const testPath of possiblePaths) {\n const fullPath = path.join(state.projectDir, testPath);\n if (fs.existsSync(fullPath)) {\n return fullPath;\n }\n }\n\n if (throwIfNotFound === false) {\n return null;\n }\n\n logger.warn(\n `Could not find T3 env files. Run \"proofkit add utils/t3-env\" to initialize them.`\n );\n throw new Error(\"T3 env file not found\");\n}\n","import { format, getFileInfo } from \"prettier\";\nimport { Project } from \"ts-morph\";\n\nimport { state } from \"~/state.js\";\n\n/**\n * Formats all source files in a ts-morph Project using prettier and saves the changes.\n * @param project The ts-morph Project containing the files to format\n */\nexport async function formatAndSaveSourceFiles(project: Project) {\n project.saveSync(); // save here in case formatting fails\n try {\n const files = project.getSourceFiles();\n // run each file through the prettier formatter\n for await (const file of files) {\n const filePath = file.getFilePath();\n const fileInfo = await getFileInfo(filePath);\n\n if (fileInfo.ignored) continue;\n\n const formatted = await format(file.getFullText(), {\n filepath: filePath,\n });\n file.replaceWithText(formatted);\n }\n } catch (error) {\n if (state.debug) {\n console.log(\"Error formatting files\");\n console.error(error);\n }\n } finally {\n await project.save();\n }\n}\n","import path from \"path\";\nimport { Project, SyntaxKind, type ReturnStatement } from \"ts-morph\";\n\nexport { formatAndSaveSourceFiles } from \"./formatting.js\";\n\nexport function ensureReturnStatementIsWrappedInFragment(\n returnStatement: ReturnStatement | undefined\n) {\n const expression =\n returnStatement\n ?.getExpressionIfKind(SyntaxKind.ParenthesizedExpression)\n ?.getExpression() ?? returnStatement?.getExpression();\n\n if (expression?.isKind(SyntaxKind.JsxFragment)) {\n return returnStatement;\n }\n\n returnStatement?.replaceWithText(`return <>${expression}</>;`);\n return returnStatement;\n}\n\nexport function getNewProject(projectDir?: string) {\n const project = new Project({\n tsConfigFilePath: path.join(projectDir ?? process.cwd(), \"tsconfig.json\"),\n });\n\n return project;\n}\n","import { execSync } from \"child_process\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\nimport { SyntaxKind, type Project } from \"ts-morph\";\n\nimport { findT3EnvFile } from \"~/installers/envVars.js\";\nimport { state } from \"~/state.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"./ts-morph.js\";\n\ninterface EnvSchema {\n name: string;\n zodValue: string;\n /** This value will be added to the .env file, unless `addToRuntimeEnv` is set to `false`. */\n defaultValue?: string;\n type: \"server\" | \"client\";\n addToRuntimeEnv?: boolean;\n}\n\nexport async function addToEnv({\n projectDir = state.projectDir,\n envs,\n envFileDescription,\n ...args\n}: {\n projectDir?: string;\n project?: Project;\n envs: EnvSchema[];\n envFileDescription?: string;\n}) {\n const envSchemaFile = findT3EnvFile();\n\n const project = args.project ?? getNewProject(projectDir);\n const schemaFile = project.addSourceFileAtPath(envSchemaFile);\n\n if (!schemaFile) throw new Error(\"Schema file not found\");\n\n // Find the createEnv call expression\n const createEnvCall = schemaFile\n .getDescendantsOfKind(SyntaxKind.CallExpression)\n .find((callExpr) => callExpr.getExpression().getText() === \"createEnv\");\n\n if (!createEnvCall) {\n throw new Error(\n \"Could not find createEnv call in schema file. Make sure you have a valid env.ts file with createEnv setup.\"\n );\n }\n\n // Get the server object property\n const opts = createEnvCall.getArguments()[0];\n if (!opts) {\n throw new Error(\"createEnv call is missing options argument\");\n }\n\n const serverProperty = opts\n .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n .find((prop) => prop.getName() === \"server\")\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression);\n\n const clientProperty = opts\n .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n .find((prop) => prop.getName() === \"client\")\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression);\n\n const runtimeEnvProperty = opts\n .getDescendantsOfKind(SyntaxKind.PropertyAssignment)\n .find((prop) => prop.getName() === \"experimental__runtimeEnv\")\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression);\n\n const serverEnvs = envs.filter((env) => env.type === \"server\");\n const clientEnvs = envs.filter((env) => env.type === \"client\");\n\n for (const env of serverEnvs) {\n serverProperty?.addPropertyAssignment({\n name: env.name,\n initializer: env.zodValue,\n });\n }\n\n for (const env of clientEnvs) {\n clientProperty?.addPropertyAssignment({\n name: env.name,\n initializer: env.zodValue,\n });\n\n runtimeEnvProperty?.addPropertyAssignment({\n name: env.name,\n initializer: `process.env.${env.name}`,\n });\n }\n\n const envsString = envs\n .filter((env) => env.addToRuntimeEnv ?? true)\n .map((env) => `${env.name}=${env.defaultValue ?? \"\"}`)\n .join(\"\\n\");\n\n const dotEnvFile = path.join(projectDir, \".env\");\n\n // Only handle .env file if it already exists\n if (fs.existsSync(dotEnvFile)) {\n const currentFile = fs.readFileSync(dotEnvFile, \"utf-8\");\n\n // Ensure .env is in .gitignore using command line\n const gitIgnoreFile = path.join(projectDir, \".gitignore\");\n try {\n let gitIgnoreContent = \"\";\n if (fs.existsSync(gitIgnoreFile)) {\n gitIgnoreContent = fs.readFileSync(gitIgnoreFile, \"utf-8\");\n }\n\n if (!gitIgnoreContent.includes(\".env\")) {\n execSync(`echo \".env\" >> \"${gitIgnoreFile}\"`, { cwd: projectDir });\n }\n } catch (error) {\n // Silently ignore gitignore errors\n }\n\n const newContent = `${currentFile}\n${envFileDescription ? `# ${envFileDescription}\\n${envsString}` : envsString}\n `;\n\n fs.writeFileSync(dotEnvFile, newContent);\n }\n\n if (!args.project) {\n await formatAndSaveSourceFiles(project);\n }\n\n return schemaFile;\n}\n","import { SyntaxKind, type SourceFile } from \"ts-morph\";\n\nimport { ensureReturnStatementIsWrappedInFragment } from \"~/utils/ts-morph.js\";\n\nexport function addToHeaderSlot(\n slotSourceFile: SourceFile,\n importFrom: string\n) {\n slotSourceFile.addImportDeclaration({\n defaultImport: \"UserMenu\",\n moduleSpecifier: importFrom,\n });\n\n // ensure Group from @mantine/core is imported\n const mantineCoreImport = slotSourceFile.getImportDeclaration(\n (dec) => dec.getModuleSpecifierValue() === \"@mantine/core\"\n );\n if (!mantineCoreImport) {\n slotSourceFile.addImportDeclaration({\n namedImports: [{ name: \"Group\" }],\n moduleSpecifier: \"@mantine/core\",\n });\n } else {\n const groupImport = mantineCoreImport\n .getNamedImports()\n .find((imp) => imp.getName() === \"Group\");\n\n if (!groupImport) {\n mantineCoreImport.addNamedImport({ name: \"Group\" });\n }\n }\n\n const returnStatement = ensureReturnStatementIsWrappedInFragment(\n slotSourceFile\n .getFunction((dec) => dec.isDefaultExport())\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement)\n );\n\n const existingElements = returnStatement\n ?.getFirstDescendantByKind(SyntaxKind.JsxOpeningFragment)\n ?.getParentIfKind(SyntaxKind.JsxFragment)\n ?.getFirstDescendantByKind(SyntaxKind.SyntaxList)\n ?.getText();\n\n if (!existingElements) {\n console.log(\n `Failed to inject into header slot at ${slotSourceFile.getFilePath()}`\n );\n return;\n }\n\n returnStatement?.replaceWithText(\n `return (<><Group>${existingElements}<UserMenu /></Group></>)`\n );\n returnStatement?.formatText();\n slotSourceFile.saveSync();\n}\n","import path from \"path\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport { SyntaxKind, type SourceFile } from \"ts-morph\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { addToEnv } from \"~/utils/addToEnvs.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { addToHeaderSlot } from \"./auth-shared.js\";\n\nexport const clerkInstaller = async ({\n projectDir,\n}: {\n projectDir: string;\n}) => {\n addPackageDependency({\n projectDir,\n dependencies: [\"@clerk/nextjs\", \"@clerk/themes\"],\n devMode: false,\n });\n\n // add clerk middleware\n // check if middleware already exists, if not add it\n const extrasDir = path.join(PKG_ROOT, \"template/extras\");\n\n const middlewareDest = path.join(projectDir, \"src/middleware.ts\");\n if (!fs.existsSync(middlewareDest)) {\n const middlewareSrc = path.join(extrasDir, \"src/middleware/clerk.ts\");\n fs.copySync(middlewareSrc, middlewareDest);\n } else {\n // throw new Error(\"Middleware already exists\");\n console.log(\n chalk.yellow(\n \"Middleware already exists. To require auth for your app, be sure to follow the guide to setup Clerk middleware. https://clerk.com/docs/references/nextjs/clerk-middleware#clerk-middleware-next-js\"\n )\n );\n }\n\n // copy auth pages\n fs.copySync(\n path.join(extrasDir, \"src/app/clerk-auth\"),\n path.join(projectDir, \"src/app/auth\")\n );\n\n // copy auth components\n fs.copySync(\n path.join(extrasDir, \"src/components/clerk-auth\"),\n path.join(projectDir, \"src/components/clerk-auth\")\n );\n\n // add ClerkProvider to app layout\n const layoutFile = path.join(projectDir, \"src/app/layout.tsx\");\n const project = getNewProject(projectDir);\n addClerkProvider(project.addSourceFileAtPath(layoutFile));\n\n // inject signin/signout components to header slots\n addToHeaderSlot(\n project.addSourceFileAtPath(\n path.join(projectDir, \"src/components/AppShell/slot-header-right.tsx\")\n ),\n \"@/components/clerk-auth/user-menu\"\n );\n addToHeaderSlot(\n project.addSourceFileAtPath(\n path.join(\n projectDir,\n \"src/components/AppShell/slot-header-mobile-content.tsx\"\n )\n ),\n \"@/components/clerk-auth/user-menu-mobile\"\n );\n\n addToSafeActionClient(\n project.addSourceFileAtPathIfExists(\n path.join(projectDir, \"src/server/safe-action.ts\")\n )\n );\n\n // add envs to .env and .env.schema\n await addToEnv({\n projectDir,\n project,\n envs: [\n {\n name: \"NEXT_PUBLIC_CLERK_SIGN_IN_URL\",\n zodValue: \"z.string()\",\n defaultValue: \"/auth/signin\",\n type: \"client\",\n },\n {\n name: \"NEXT_PUBLIC_CLERK_SIGN_UP_URL\",\n zodValue: \"z.string()\",\n defaultValue: \"/auth/signup\",\n type: \"client\",\n },\n {\n name: \"CLERK_SECRET_KEY\",\n zodValue: `z.string().startsWith('sk_').min(1, {\n message:\n \"No Clerk Secret Key found. Did you create your Clerk app and copy the environment variables to you .env file?\",\n })`,\n type: \"server\",\n },\n {\n name: \"NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY\",\n zodValue: `z.string().startsWith('pk_').min(1, {\n message:\n \"No Clerk Public Key found. Did you create your Clerk app and copy the environment variables to you .env file?\",\n })`,\n type: \"client\",\n },\n ],\n envFileDescription:\n \"Hosted auth with Clerk. Set up a new app at https://dashboard.clerk.com/apps/new to get these values.\",\n });\n\n await formatAndSaveSourceFiles(project);\n};\n\nexport function addClerkProvider(sourceFile: SourceFile) {\n sourceFile.addImportDeclaration({\n namedImports: [{ name: \"ClerkAuthProvider\" }],\n moduleSpecifier: \"@/components/clerk-auth/clerk-provider\",\n });\n\n // Step 2: Wrap default exported function's return statement with ClerkProvider\n const exportDefault = sourceFile.getFunction((dec) => dec.isDefaultExport());\n\n // find the mantine provider in this export\n const mantineProvider = exportDefault\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement)\n ?.getDescendantsOfKind(SyntaxKind.JsxOpeningElement)\n .find(\n (openingElement) =>\n openingElement.getTagNameNode().getText() === \"MantineProvider\"\n )\n ?.getParentIfKind(SyntaxKind.JsxElement);\n\n const childrenText = mantineProvider\n ?.getJsxChildren()\n .map((child) => child.getText())\n .filter(Boolean)\n .join(\"\\n\");\n\n mantineProvider?.getChildSyntaxList()?.replaceWithText(\n `<ClerkAuthProvider>\n ${childrenText}\n </ClerkAuthProvider>`\n );\n}\n\nfunction addToSafeActionClient(sourceFile?: SourceFile) {\n if (!sourceFile) {\n console.log(\n chalk.yellow(\n \"Failed to inject into safe-action-client. Did you move the safe-action.ts file?\"\n )\n );\n return;\n }\n\n sourceFile.addImportDeclaration({\n namedImports: [{ name: \"auth\", alias: \"getAuth\" }],\n moduleSpecifier: \"@clerk/nextjs/server\",\n });\n\n // add to end of file\n sourceFile.addStatements((writer) =>\n writer.writeLine(`export const authedActionClient = actionClient.use(async ({ next, ctx }) => {\n const auth = getAuth();\n if (!auth.userId) {\n throw new Error(\"Unauthorized\");\n }\n return next({ ctx: { ...ctx, auth } });\n});\n\n`)\n );\n}\n","import DataApi, {\n OttoAdapter,\n type clientTypes,\n type OttoAPIKey,\n} from \"@proofkit/fmdapi\";\n\nexport async function getLayouts({\n dataApiKey,\n fmFile,\n server,\n}: {\n dataApiKey: OttoAPIKey;\n fmFile: string;\n server: string;\n}) {\n const DapiClient = DataApi({\n adapter: new OttoAdapter({\n auth: { apiKey: dataApiKey },\n db: fmFile,\n server,\n }),\n layout: \"\",\n });\n\n const layoutsResp = await DapiClient.layouts();\n\n const layouts = transformLayoutList(layoutsResp.layouts);\n\n return layouts;\n}\n\nfunction getAllLayoutNames(layout: clientTypes.LayoutOrFolder): string[] {\n if (\"isFolder\" in layout) {\n return (layout.folderLayoutNames ?? []).flatMap(getAllLayoutNames);\n }\n return [layout.name];\n}\n\nexport const commonFileMakerLayoutPrefixes = [\"API_\", \"API \", \"dapi_\", \"dapi\"];\n\nexport function transformLayoutList(\n layouts: clientTypes.LayoutOrFolder[]\n): string[] {\n const flatList = layouts.flatMap(getAllLayoutNames);\n\n // sort the list so that any values that begin with one of the prefixes are at the top\n\n const sortedList = flatList.sort((a, b) => {\n const aPrefix = commonFileMakerLayoutPrefixes.find((prefix) =>\n a.startsWith(prefix)\n );\n const bPrefix = commonFileMakerLayoutPrefixes.find((prefix) =>\n b.startsWith(prefix)\n );\n if (aPrefix && bPrefix) {\n return a.localeCompare(b);\n }\n if (aPrefix) {\n return -1;\n }\n if (bPrefix) {\n return 1;\n }\n return a.localeCompare(b);\n });\n return sortedList;\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport { z } from \"zod/v4\";\n\nimport { DEFAULT_REGISTRY_URL } from \"~/consts.js\";\nimport { state } from \"~/state.js\";\n\nconst authSchema = z\n .discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"clerk\"),\n }),\n z.object({\n type: z.literal(\"next-auth\"),\n }),\n z.object({\n type: z.literal(\"proofkit\").transform(() => \"fmaddon\"),\n }),\n z.object({\n type: z.literal(\"fmaddon\"),\n }),\n z.object({\n type: z.literal(\"better-auth\"),\n }),\n z.object({\n type: z.literal(\"none\"),\n }),\n ])\n .default({ type: \"none\" });\n\nexport const envNamesSchema = z.object({\n database: z.string().default(\"FM_DATABASE\"),\n server: z.string().default(\"FM_SERVER\"),\n apiKey: z.string().default(\"OTTO_API_KEY\"),\n});\nexport const dataSourceSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"fm\"),\n name: z.string(),\n envNames: envNamesSchema,\n }),\n z.object({\n type: z.literal(\"supabase\"),\n name: z.string(),\n }),\n]);\nexport type DataSource = z.infer<typeof dataSourceSchema>;\n\nexport const appTypes = [\"browser\", \"webviewer\"] as const;\n\nexport const uiTypes = [\"shadcn\", \"mantine\"] as const;\nexport type Ui = (typeof uiTypes)[number];\n\nconst settingsSchema = z.discriminatedUnion(\"ui\", [\n z.object({\n ui: z.literal(\"mantine\"),\n appType: z.enum(appTypes).default(\"browser\"),\n auth: authSchema,\n envFile: z.string().optional(),\n dataSources: z.array(dataSourceSchema).default([]),\n tanstackQuery: z.boolean().catch(false),\n replacedMainPage: z.boolean().catch(false),\n // Whether React Email scaffolding has been installed\n reactEmail: z.boolean().catch(false),\n // Whether provider-specific server email sender files have been installed\n reactEmailServer: z.boolean().catch(false),\n appliedUpgrades: z.array(z.string()).default([]),\n registryUrl: z.url().optional(),\n registryTemplates: z.array(z.string()).default([]),\n }),\n z.object({\n ui: z.literal(\"shadcn\"),\n appType: z.enum(appTypes).default(\"browser\"),\n envFile: z.string().optional(),\n dataSources: z.array(dataSourceSchema).default([]),\n replacedMainPage: z.boolean().catch(false),\n registryUrl: z.url().optional(),\n registryTemplates: z.array(z.string()).default([]),\n }),\n]);\n\nexport const defaultSettings = settingsSchema.parse({\n auth: { type: \"none\" },\n ui: \"shadcn\",\n appType: \"browser\",\n dataSources: [],\n replacedMainPage: false,\n registryTemplates: [],\n});\n\nlet settings: Settings | undefined;\nexport const getSettings = () => {\n if (settings) return settings;\n\n const settingsPath = path.join(state.projectDir, \"proofkit.json\");\n\n // Check if the settings file exists before trying to read it\n if (!fs.existsSync(settingsPath)) {\n throw new Error(`ProofKit settings file not found at: ${settingsPath}`);\n }\n\n let settingsFile: unknown = fs.readJSONSync(settingsPath);\n\n if (\n typeof settingsFile === \"object\" &&\n settingsFile !== null &&\n !(\"ui\" in settingsFile)\n ) {\n settingsFile = { ...settingsFile, ui: \"mantine\" };\n }\n\n const parsed = settingsSchema.parse(settingsFile);\n\n state.appType = parsed.appType;\n return parsed;\n};\n\nexport type Settings = z.infer<typeof settingsSchema>;\n\nexport function mergeSettings(_settings: Partial<Settings>) {\n const settings = getSettings();\n const merged = { ...settings, ..._settings };\n const validated = settingsSchema.parse(merged);\n setSettings(validated);\n}\n\nexport function setSettings(_settings: Settings) {\n fs.writeJSONSync(path.join(state.projectDir, \"proofkit.json\"), _settings, {\n spaces: 2,\n });\n settings = _settings;\n return settings;\n}\n\n/**\n * Validates and sets the envFile in settings only if the file exists.\n * Used during stealth initialization to avoid setting non-existent env files.\n */\nexport function validateAndSetEnvFile(envFileName = \".env\") {\n const settings = getSettings();\n const envFilePath = path.join(state.projectDir, envFileName);\n\n if (fs.existsSync(envFilePath)) {\n const updatedSettings = { ...settings, envFile: envFileName };\n setSettings(updatedSettings);\n return envFileName;\n }\n\n // If no env file exists, ensure envFile is undefined in settings\n if (settings.envFile) {\n const { envFile, ...settingsWithoutEnvFile } = settings;\n setSettings(settingsWithoutEnvFile as Settings);\n }\n\n return undefined;\n}\n","import path from \"path\";\n// import { isCancel } from \"@clack/core\";\nimport { cancel, isCancel } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport z, { ZodError } from \"zod/v4\";\n\nimport { npmName } from \"~/consts.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\n\n/**\n * Runs before any add command is run. Checks if the user is in a ProofKit project and if the\n * proofkit.json file is valid.\n */\nexport const ensureProofKitProject = ({\n commandName,\n}: {\n commandName: string;\n}) => {\n const settingsExists = fs.existsSync(\n path.join(process.cwd(), \"proofkit.json\")\n );\n if (!settingsExists) {\n console.log(\n chalk.yellow(\n `The \"${commandName}\" command requires an existing ProofKit project.\nPlease run \" ${npmName} init\" first, or try this command again when inside a ProofKit project.`\n )\n );\n process.exit(1);\n }\n\n try {\n return getSettings();\n } catch (error) {\n console.log(chalk.red(\"Error parsing ProofKit settings file:\"));\n if (error instanceof ZodError) {\n console.log(z.prettifyError(error));\n } else {\n console.log(error);\n }\n\n process.exit(1);\n }\n};\n\nexport class UserAbortedError extends Error {}\nexport function abortIfCancel(value: symbol | string): string;\nexport function abortIfCancel<T extends boolean>(value: symbol | T): T;\nexport function abortIfCancel<T extends string | boolean>(\n value: T | symbol\n): T {\n if (isCancel(value)) {\n cancel();\n throw new UserAbortedError();\n }\n return value;\n}\n","import path from \"path\";\nimport { generateTypedClients } from \"@proofkit/typegen\";\nimport { type typegenConfigSingle } from \"@proofkit/typegen/config\";\nimport { config as dotenvConfig } from \"dotenv\";\nimport fs from \"fs-extra\";\nimport { applyEdits, modify, parse as parseJsonc } from \"jsonc-parser\";\nimport { Project, SyntaxKind } from \"ts-morph\";\nimport { type z } from \"zod/v4\";\n\nimport { state } from \"~/state.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { getSettings, type envNamesSchema } from \"~/utils/parseSettings.js\";\nimport { getNewProject } from \"~/utils/ts-morph.js\";\n\n// Input schema for functions like addLayout\n// This might be different from the layout config stored in the file\ntype Schema = {\n layoutName: string;\n schemaName: string;\n valueLists?: \"strict\" | \"allowEmpty\" | \"ignore\";\n generateClient?: boolean;\n strictNumbers?: boolean;\n};\n\n// For a single data source configuration object\ntype ImportedDataSourceConfig = z.infer<typeof typegenConfigSingle>;\n// For a single layout configuration object within a data source\ntype ImportedLayoutConfig = ImportedDataSourceConfig[\"layouts\"][number];\n\n// This type represents the actual structure of the JSONC file, including $schema\ntype FullProofkitTypegenJsonFile = {\n $schema?: string;\n config: ImportedDataSourceConfig | ImportedDataSourceConfig[];\n};\n\n// Helper functions for JSON config\nasync function readJsonConfigFile(\n configPath: string\n): Promise<FullProofkitTypegenJsonFile | null> {\n if (!fs.existsSync(configPath)) {\n return null;\n }\n try {\n const fileContent = await fs.readFile(configPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n return parsed;\n } catch (error) {\n console.error(\n `Error reading or parsing JSONC config at ${configPath}:`,\n error\n );\n // Return a default structure for the *file* if parsing fails but file exists\n return {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [],\n };\n }\n}\n\nasync function writeJsonConfigFile(\n configPath: string,\n fileContent: FullProofkitTypegenJsonFile\n) {\n // Check if file exists to preserve comments\n if (fs.existsSync(configPath)) {\n const originalText = await fs.readFile(configPath, \"utf8\");\n // Use jsonc-parser's modify function to preserve comments\n const edits = modify(originalText, [\"config\"], fileContent.config, {\n formattingOptions: {\n tabSize: 2,\n insertSpaces: true,\n eol: \"\\n\",\n },\n });\n const modifiedText = applyEdits(originalText, edits);\n await fs.writeFile(configPath, modifiedText, \"utf8\");\n } else {\n // If file doesn't exist, create it with proper formatting\n await fs.writeJson(configPath, fileContent, { spaces: 2 });\n }\n}\n\nexport async function addLayout({\n projectDir = process.cwd(),\n schemas,\n runCodegen = true,\n dataSourceName,\n}: {\n projectDir?: string;\n schemas: Schema[];\n runCodegen?: boolean;\n dataSourceName: string;\n}) {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [],\n };\n }\n\n // Work with the 'config' property which is TypegenConfig['config']\n let configProperty = fileContent.config;\n\n let configArray: ImportedDataSourceConfig[];\n if (Array.isArray(configProperty)) {\n configArray = configProperty;\n } else {\n configArray = [configProperty];\n fileContent.config = configArray; // Update fileContent to ensure it's an array for later ops\n }\n\n const layoutsToAdd: ImportedLayoutConfig[] = schemas.map((schema) => ({\n layoutName: schema.layoutName,\n schemaName: schema.schemaName,\n valueLists: schema.valueLists,\n generateClient: schema.generateClient,\n strictNumbers: schema.strictNumbers,\n }));\n\n let targetDataSource: ImportedDataSourceConfig | undefined = configArray.find(\n (ds) =>\n ds.path?.endsWith(dataSourceName) ||\n ds.path?.endsWith(dataSourceName + \"/\") ||\n ds.path === dataSourceName\n );\n\n if (!targetDataSource) {\n targetDataSource = {\n layouts: [],\n path: `./src/config/schemas/${dataSourceName}`,\n // other default properties for a new DataSourceConfig can be added here if needed\n };\n configArray.push(targetDataSource);\n } else {\n targetDataSource.layouts = targetDataSource.layouts || [];\n }\n\n targetDataSource.layouts.push(...layoutsToAdd);\n // fileContent.config is already pointing to configArray if it was modified\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n\n if (runCodegen) {\n await runCodegenCommand();\n }\n}\n\nexport async function addConfig({\n config,\n projectDir,\n runCodegen = true,\n}: {\n config: ImportedDataSourceConfig | ImportedDataSourceConfig[];\n projectDir: string;\n runCodegen?: boolean;\n}) {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n const configsToAdd = Array.isArray(config) ? config : [config];\n\n if (!fileContent) {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: configsToAdd,\n };\n } else {\n if (Array.isArray(fileContent.config)) {\n fileContent.config.push(...configsToAdd);\n } else {\n fileContent.config = [fileContent.config, ...configsToAdd];\n }\n }\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n\n if (runCodegen) {\n await runCodegenCommand();\n }\n}\n\nexport async function runCodegenCommand() {\n const projectDir = state.projectDir;\n const settings = getSettings();\n if (settings.dataSources.length === 0) {\n console.log(\"no data sources found, skipping typegen\");\n return;\n }\n\n const hasFileMakerDataSources = settings.dataSources.some(\n (ds) => ds.type === \"fm\"\n );\n\n if (hasFileMakerDataSources) {\n const config = await readJsonConfigFile(\n path.join(projectDir, \"proofkit-typegen.config.jsonc\")\n );\n if (!config) {\n throw new Error(\"proofkit-typegen.config.jsonc not found\");\n }\n\n // make sure to load the .env file\n dotenvConfig({ path: path.join(projectDir, \".env\") });\n await generateTypedClients(config.config, { cwd: projectDir });\n }\n}\n\nexport function getClientSuffix({\n projectDir = process.cwd(),\n dataSourceName,\n}: {\n projectDir?: string;\n dataSourceName: string;\n}): string {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n if (!fs.existsSync(jsonConfigPath)) {\n return \"Client\";\n }\n try {\n const fileContent = fs.readFileSync(jsonConfigPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n\n let targetDataSource: ImportedDataSourceConfig | undefined;\n\n const configToSearch = Array.isArray(parsed.config)\n ? parsed.config\n : [parsed.config];\n\n targetDataSource = configToSearch.find(\n (ds) =>\n ds.path?.endsWith(dataSourceName) ||\n ds.path?.endsWith(dataSourceName + \"/\") ||\n ds.path === dataSourceName\n );\n return targetDataSource?.clientSuffix ?? \"Client\";\n } catch (error) {\n console.error(\n `Error reading or parsing JSONC config for getClientSuffix: ${jsonConfigPath}`,\n error\n );\n return \"Client\";\n }\n}\n\nexport function getExistingSchemas({\n projectDir = process.cwd(),\n dataSourceName,\n}: {\n projectDir?: string;\n dataSourceName: string;\n}): { layout?: string; schemaName?: string }[] {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n if (!fs.existsSync(jsonConfigPath)) {\n return [];\n }\n try {\n const fileContent = fs.readFileSync(jsonConfigPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n let targetDataSource: ImportedDataSourceConfig | undefined;\n\n const configToSearch = Array.isArray(parsed.config)\n ? parsed.config\n : [parsed.config];\n\n targetDataSource = configToSearch.find(\n (ds) =>\n ds.path?.endsWith(dataSourceName) ||\n ds.path?.endsWith(dataSourceName + \"/\") ||\n ds.path === dataSourceName\n );\n\n if (targetDataSource?.layouts) {\n return targetDataSource.layouts.map((layout) => ({\n layout: layout.layoutName,\n schemaName: layout.schemaName,\n }));\n }\n return [];\n } catch (error) {\n console.error(\n `Error reading or parsing JSONC config for getExistingSchemas: ${jsonConfigPath}`,\n error\n );\n return [];\n }\n}\n\nexport async function addToFmschemaConfig({\n dataSourceName,\n envNames,\n}: {\n dataSourceName: string;\n envNames?: z.infer<typeof envNamesSchema>;\n}) {\n const projectDir = state.projectDir;\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n const newDataSource: ImportedDataSourceConfig = {\n layouts: [],\n path: `./src/config/schemas/${dataSourceName}`,\n clearOldFiles: true,\n clientSuffix: \"Layout\",\n };\n\n if (envNames) {\n newDataSource.envNames = {\n server: envNames.server,\n db: envNames.database,\n auth: { apiKey: envNames.apiKey },\n };\n }\n if (state.appType === \"webviewer\") {\n newDataSource.webviewerScriptName = \"ExecuteDataApi\";\n }\n\n if (!fileContent) {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [newDataSource],\n };\n } else {\n let configArray: ImportedDataSourceConfig[];\n if (Array.isArray(fileContent.config)) {\n configArray = fileContent.config;\n } else {\n configArray = [fileContent.config];\n fileContent.config = configArray;\n }\n\n const existingDsIndex = configArray.findIndex(\n (ds) => ds.path === newDataSource.path\n );\n if (existingDsIndex === -1) {\n configArray.push(newDataSource);\n } else {\n configArray[existingDsIndex] = {\n ...configArray[existingDsIndex],\n ...newDataSource,\n layouts:\n newDataSource.layouts.length > 0\n ? newDataSource.layouts\n : configArray[existingDsIndex]?.layouts || [],\n };\n }\n }\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport function getFieldNamesForSchema({\n schemaName,\n dataSourceName,\n}: {\n schemaName: string;\n dataSourceName: string;\n}) {\n const projectDir = state.projectDir;\n const project = getNewProject(projectDir);\n const sourceFilePath = path.join(\n projectDir,\n `src/config/schemas/${dataSourceName}/generated/${schemaName}.ts`\n );\n\n const sourceFilePathAlternative = path.join(\n projectDir,\n `src/config/schemas/${dataSourceName}/${schemaName}.ts`\n );\n\n let fileToUse = sourceFilePath;\n if (!fs.existsSync(sourceFilePath)) {\n if (fs.existsSync(sourceFilePathAlternative)) {\n fileToUse = sourceFilePathAlternative;\n } else {\n return [];\n }\n }\n const sourceFile = project.addSourceFileAtPath(fileToUse);\n\n const zodSchema = sourceFile.getVariableDeclaration(`Z${schemaName}`);\n if (zodSchema) {\n const properties = zodSchema\n .getInitializer()\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression)\n ?.getProperties();\n return (\n properties\n ?.map((pr) =>\n pr.asKind(SyntaxKind.PropertyAssignment)?.getName()?.replace(/\"/g, \"\")\n )\n .filter(Boolean) ?? []\n );\n } else {\n const typeAlias = sourceFile.getTypeAlias(`T${schemaName}`);\n const properties = typeAlias\n ?.getFirstDescendantByKind(SyntaxKind.TypeLiteral)\n ?.getProperties();\n return (\n properties\n ?.map((pr) =>\n pr.asKind(SyntaxKind.PropertySignature)?.getName()?.replace(/\"/g, \"\")\n )\n .filter(Boolean) ?? []\n );\n }\n}\n\nexport async function removeFromFmschemaConfig({\n dataSourceName,\n}: {\n dataSourceName: string;\n}) {\n const projectDir = state.projectDir;\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n return;\n }\n\n const pathToRemove = `./src/config/schemas/${dataSourceName}`;\n\n if (Array.isArray(fileContent.config)) {\n fileContent.config = fileContent.config.filter(\n (ds) => ds.path !== pathToRemove\n );\n } else {\n const currentConfig = fileContent.config as ImportedDataSourceConfig;\n if (currentConfig.path === pathToRemove) {\n fileContent.config = [];\n }\n }\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport async function removeLayout({\n projectDir = state.projectDir,\n schemaName,\n dataSourceName,\n runCodegen = true,\n}: {\n projectDir?: string;\n schemaName: string;\n dataSourceName: string;\n runCodegen?: boolean;\n}) {\n const jsonConfigPath = path.join(projectDir, \"proofkit-typegen.config.jsonc\");\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n throw new Error(\n \"proofkit-typegen.config.jsonc not found, cannot remove layout.\"\n );\n }\n\n let dataSourceModified = false;\n const targetDsPath = `./src/config/schemas/${dataSourceName}`;\n\n let configArray: ImportedDataSourceConfig[];\n if (Array.isArray(fileContent.config)) {\n configArray = fileContent.config;\n } else {\n configArray = [fileContent.config];\n fileContent.config = configArray;\n }\n\n const targetDataSource = configArray.find((ds) => ds.path === targetDsPath);\n\n if (targetDataSource?.layouts) {\n const initialCount = targetDataSource.layouts.length;\n targetDataSource.layouts = targetDataSource.layouts.filter(\n (layout) => layout.schemaName !== schemaName\n );\n if (targetDataSource.layouts.length < initialCount) {\n dataSourceModified = true;\n }\n }\n\n if (dataSourceModified) {\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n }\n\n const schemaFilePath = path.join(\n projectDir,\n \"src\",\n \"config\",\n \"schemas\",\n dataSourceName,\n `${schemaName}.ts`\n );\n if (fs.existsSync(schemaFilePath)) {\n fs.removeSync(schemaFilePath);\n }\n\n if (runCodegen && dataSourceModified) {\n await runCodegenCommand();\n }\n}\n\n// Make sure to remove unused imports like Project, SyntaxKind, etc. if they are no longer used anywhere.\n// Also remove getNewProject and formatAndSaveSourceFiles from imports if they were only for config.\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport { SyntaxKind, type Project } from \"ts-morph\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { getSettings, setSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\n\nexport async function injectTanstackQuery(args?: { project?: Project }) {\n const projectDir = state.projectDir;\n const settings = getSettings();\n if (settings.ui === \"shadcn\") return false;\n if (settings.tanstackQuery) return false;\n\n addPackageDependency({\n projectDir,\n dependencies: [\"@tanstack/react-query\"],\n devMode: false,\n });\n addPackageDependency({\n projectDir,\n dependencies: [\n \"@tanstack/react-query-devtools\",\n \"@tanstack/eslint-plugin-query\",\n ],\n devMode: true,\n });\n const extrasDir = path.join(PKG_ROOT, \"template\", \"extras\");\n\n if (state.appType === \"browser\") {\n fs.copySync(\n path.join(extrasDir, \"config\", \"get-query-client.ts\"),\n path.join(projectDir, \"src/config/get-query-client.ts\")\n );\n fs.copySync(\n path.join(extrasDir, \"config\", \"query-provider.tsx\"),\n path.join(projectDir, \"src/config/query-provider.tsx\")\n );\n } else if (state.appType === \"webviewer\") {\n fs.copySync(\n path.join(extrasDir, \"config\", \"query-provider-vite.tsx\"),\n path.join(projectDir, \"src/config/query-provider.tsx\")\n );\n }\n\n // inject query provider into the root layout\n const project = args?.project ?? getNewProject(projectDir);\n const rootLayout = project.addSourceFileAtPath(\n path.join(\n projectDir,\n state.appType === \"browser\" ? \"src/app/layout.tsx\" : \"src/main.tsx\"\n )\n );\n rootLayout.addImportDeclaration({\n moduleSpecifier: \"@/config/query-provider\",\n defaultImport: \"QueryProvider\",\n });\n\n if (state.appType === \"browser\") {\n const exportDefault = rootLayout.getFunction((dec) =>\n dec.isDefaultExport()\n );\n const bodyElement = exportDefault\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement)\n ?.getDescendantsOfKind(SyntaxKind.JsxOpeningElement)\n .find(\n (openingElement) => openingElement.getTagNameNode().getText() === \"body\"\n )\n ?.getParentIfKind(SyntaxKind.JsxElement);\n\n const childrenText = bodyElement\n ?.getJsxChildren()\n .map((child) => child.getText())\n .filter(Boolean)\n .join(\"\\n\");\n\n bodyElement?.getChildSyntaxList()?.replaceWithText(\n `<QueryProvider>\n ${childrenText}\n </QueryProvider>`\n );\n } else if (state.appType === \"webviewer\") {\n const mantineProvider = rootLayout\n .getDescendantsOfKind(SyntaxKind.JsxElement)\n .find(\n (element) =>\n element.getOpeningElement().getTagNameNode().getText() ===\n \"MantineProvider\"\n );\n\n mantineProvider?.replaceWithText(\n `<QueryProvider>\n ${mantineProvider.getText()}\n </QueryProvider>`\n );\n }\n\n if (!args?.project) {\n await formatAndSaveSourceFiles(project);\n }\n\n setSettings({ ...settings, tanstackQuery: true });\n return true;\n}\n","import os from \"os\";\nimport path from \"path\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { logger } from \"~/utils/logger.js\";\n\nexport async function installFmAddon({\n addonName,\n}: {\n addonName: \"auth\" | \"wv\";\n}) {\n const addonDisplayName =\n addonName === \"auth\" ? \"FM Auth Add-on\" : \"ProofKit WebViewer\";\n\n let targetDir: string | null = null;\n if (process.platform === \"win32\") {\n targetDir = path.join(\n os.homedir(),\n \"AppData\",\n \"Local\",\n \"FileMaker\",\n \"Extensions\",\n \"AddonModules\"\n );\n } else if (process.platform === \"darwin\") {\n targetDir = path.join(\n os.homedir(),\n \"Library\",\n \"Application Support\",\n \"FileMaker\",\n \"Extensions\",\n \"AddonModules\"\n );\n }\n\n if (!targetDir) {\n logger.warn(\n `Could not install the ${addonDisplayName} addon. You will need to do this manually.`\n );\n return;\n }\n\n const addonDir = addonName === \"auth\" ? \"ProofKitAuth\" : \"ProofKitWV\";\n\n await fs.copy(\n path.join(PKG_ROOT, `template/fm-addon/${addonDir}`),\n path.join(targetDir, addonDir),\n { overwrite: true }\n );\n\n console.log(\"\");\n console.log(chalk.bgYellow(\" ACTION REQUIRED: \"));\n if (addonName === \"auth\") {\n console.log(\n `${chalk.yellowBright(\n \"You must install the FM Auth addon in your FileMaker file to continue.\"\n )} ${chalk.dim(\"(Learn more: https://proofkit.dev/auth/fm-addon)\")}`\n );\n } else {\n console.log(\n `${chalk.yellowBright(\n \"You must install the ProofKit WebViewer addon in your FileMaker file to continue.\"\n )} ${chalk.dim(\"(Learn more: https://proofkit.dev/webviewer)\")}`\n );\n }\n const steps = [\n \"Restart FileMaker Pro (if it's currently running)\",\n `Open your FileMaker file, go to layout mode, and install the ${addonDisplayName} addon to the file`,\n \"Come back here to continue the installation\",\n ];\n steps.forEach((step, index) => {\n console.log(`${index + 1}. ${step}`);\n });\n}\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport { type Project } from \"ts-morph\";\nimport { type PackageJson } from \"type-fest\";\n\nimport { abortIfCancel } from \"~/cli/utils.js\";\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { addToEnv } from \"~/utils/addToEnvs.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { getSettings, setSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\n\nexport async function installReactEmail({\n ...args\n}: {\n project?: Project;\n noInstall?: boolean;\n installServerFiles?: boolean;\n}) {\n const projectDir = state.projectDir;\n\n // Exit early if already installed\n const settings = getSettings();\n if (settings.ui === \"shadcn\") return false;\n if (settings.reactEmail) return false;\n\n // Ensure emails directory exists\n fs.ensureDirSync(path.join(projectDir, \"src/emails\"));\n addPackageDependency({\n dependencies: [\"@react-email/components\", \"@react-email/render\"],\n devMode: false,\n projectDir,\n });\n addPackageDependency({\n dependencies: [\"react-email\", \"@react-email/preview-server\"],\n devMode: true,\n projectDir,\n });\n\n // add a script to package.json\n const pkgJson = fs.readJSONSync(\n path.join(projectDir, \"package.json\")\n ) as PackageJson;\n pkgJson.scripts![\"email:preview\"] = \"email dev --port 3010 --dir=src/emails\";\n fs.writeJSONSync(path.join(projectDir, \"package.json\"), pkgJson, {\n spaces: 2,\n });\n\n const project = args.project ?? getNewProject(projectDir);\n\n if (args.installServerFiles) {\n const emailProvider = state.emailProvider;\n if (emailProvider === \"plunk\") {\n await installPlunk({ project });\n } else if (emailProvider === \"resend\") {\n await installResend({ project });\n } else {\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/none/email.tsx\"),\n path.join(projectDir, \"src/server/auth/email.tsx\")\n );\n }\n }\n\n // Copy base email template(s) into src/emails for preview and reuse\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailTemplates/generic.tsx\"),\n path.join(projectDir, \"src/emails/generic.tsx\")\n );\n if (args.installServerFiles) {\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailTemplates/auth-code.tsx\"),\n path.join(projectDir, \"src/emails/auth-code.tsx\")\n );\n }\n\n if (!args.project) {\n await formatAndSaveSourceFiles(project);\n }\n\n // Mark as installed\n setSettings({\n ...settings,\n reactEmail: true,\n reactEmailServer:\n Boolean(args.installServerFiles) || settings.reactEmailServer,\n });\n\n // Install dependencies unless explicitly skipped\n if (!args.noInstall) {\n await installDependencies({ projectDir });\n }\n return true;\n}\n\nexport async function installPlunk({ project }: { project?: Project }) {\n const projectDir = state.projectDir;\n addPackageDependency({\n dependencies: [\"@plunk/node\"],\n devMode: false,\n projectDir,\n });\n\n const apiKey =\n typeof state.apiKey === \"string\"\n ? state.apiKey\n : state.ci\n ? \"\"\n : abortIfCancel(\n await p.text({\n message: `Enter your Plunk API key\\n${chalk.dim(\n `Enter your Secret API Key from https://app.useplunk.com/settings/api`\n )}`,\n placeholder: \"...or leave blank to do this later\",\n })\n );\n\n if (!apiKey) {\n logger.warn(\n \"You will need to add your Plunk API key to the .env file manually for your app to run.\"\n );\n }\n\n console.log(\"\");\n\n await addToEnv({\n projectDir,\n project,\n envs: [\n {\n name: \"PLUNK_API_KEY\",\n zodValue: `z.string().startsWith(\"sk_\")`,\n type: \"server\",\n defaultValue: apiKey,\n },\n ],\n });\n\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/plunk/service.ts\"),\n path.join(projectDir, \"src/server/services/plunk.ts\")\n );\n\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/plunk/email.tsx\"),\n path.join(projectDir, \"src/server/auth/email.tsx\")\n );\n}\n\nexport async function installResend({ project }: { project?: Project }) {\n const projectDir = state.projectDir;\n addPackageDependency({\n dependencies: [\"resend\"],\n devMode: false,\n projectDir,\n });\n\n const apiKey =\n typeof state.apiKey === \"string\"\n ? state.apiKey\n : state.ci\n ? \"\"\n : abortIfCancel(\n await p.text({\n message: `Enter your Resend API key\\n${chalk.dim(\n `Only \"Sending Access\" permission required: https://resend.com/api-keys`\n )}`,\n placeholder: \"...or leave blank to do this later\",\n })\n );\n\n if (!apiKey) {\n logger.warn(\n \"You will need to add your Resend API key to the .env file manually for your app to run.\"\n );\n }\n\n console.log(\"\");\n\n await addToEnv({\n projectDir,\n project,\n envs: [\n {\n name: \"RESEND_API_KEY\",\n zodValue: `z.string().startsWith(\"re_\")`,\n type: \"server\",\n defaultValue: apiKey,\n },\n ],\n });\n\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/resend/service.ts\"),\n path.join(projectDir, \"src/server/services/resend.ts\")\n );\n\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/emailProviders/resend/email.tsx\"),\n path.join(projectDir, \"src/server/auth/email.tsx\")\n );\n}\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport { type OttoAPIKey } from \"@proofkit/fmdapi\";\nimport chalk from \"chalk\";\nimport dotenv from \"dotenv\";\nimport fs from \"fs-extra\";\nimport ora, { type Ora } from \"ora\";\nimport { SyntaxKind, type SourceFile } from \"ts-morph\";\n\nimport { getLayouts } from \"~/cli/fmdapi.js\";\nimport { abortIfCancel, UserAbortedError } from \"~/cli/utils.js\";\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { addConfig, runCodegenCommand } from \"~/generators/fmdapi.js\";\nimport { injectTanstackQuery } from \"~/generators/tanstack-query.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { addToHeaderSlot } from \"./auth-shared.js\";\nimport { installFmAddon } from \"./install-fm-addon.js\";\nimport { installReactEmail } from \"./react-email.js\";\n\nexport const proofkitAuthInstaller = async () => {\n const spinner = ora(\"Installing files for auth...\").start();\n\n const projectDir = state.projectDir;\n addPackageDependency({\n projectDir,\n dependencies: [\n \"@node-rs/argon2\",\n \"@oslojs/binary\",\n \"@oslojs/crypto\",\n \"@oslojs/encoding\",\n \"js-cookie\",\n ],\n devMode: false,\n });\n\n addPackageDependency({\n projectDir,\n dependencies: [\"@types/js-cookie\"],\n devMode: true,\n });\n\n // copy all files from template/extras/fmaddon-auth to projectDir/src\n await fs.copy(\n path.join(PKG_ROOT, \"template/extras/fmaddon-auth\"),\n path.join(projectDir, \"src\")\n );\n\n const project = getNewProject(projectDir);\n\n // ensure tanstack query is installed\n await injectTanstackQuery({ project });\n\n // inject signin/signout components to header slots\n addToHeaderSlot(\n project.addSourceFileAtPath(\n path.join(projectDir, \"src/components/AppShell/slot-header-right.tsx\")\n ),\n \"@/components/auth/user-menu\"\n );\n // addToHeaderSlot(\n // project.addSourceFileAtPath(\n // path.join(\n // projectDir,\n // \"src/components/AppShell/slot-header-mobile-content.tsx\"\n // )\n // ),\n // \"@/components/clerk-auth/user-menu-mobile\"\n // );\n\n addToSafeActionClient(\n project.addSourceFileAtPathIfExists(\n path.join(projectDir, \"src/server/safe-action.ts\")\n )\n );\n\n await addConfig({\n config: {\n clientSuffix: \"Layout\",\n layouts: [\n {\n layoutName: \"proofkit_auth_sessions\",\n schemaName: \"sessions\",\n strictNumbers: true,\n },\n {\n layoutName: \"proofkit_auth_users\",\n schemaName: \"users\",\n strictNumbers: true,\n },\n {\n layoutName: \"proofkit_auth_email_verification\",\n schemaName: \"emailVerification\",\n strictNumbers: true,\n },\n {\n layoutName: \"proofkit_auth_password_reset\",\n schemaName: \"passwordReset\",\n strictNumbers: true,\n },\n ],\n clearOldFiles: true,\n validator: false,\n path: \"./src/server/auth/db\",\n },\n projectDir,\n runCodegen: false,\n });\n\n // install email files based on the email provider in state\n await installReactEmail({ project, installServerFiles: true });\n\n protectMainLayout(\n project.addSourceFileAtPath(\n path.join(projectDir, \"src/app/(main)/layout.tsx\")\n )\n );\n\n await formatAndSaveSourceFiles(project);\n\n let hasProofKitLayouts = false;\n while (!hasProofKitLayouts) {\n hasProofKitLayouts = await checkForProofKitLayouts(projectDir, spinner);\n\n if (!hasProofKitLayouts) {\n const shouldContinue = abortIfCancel<boolean>(\n await p.confirm({\n message:\n \"I have followed the above instructions, continue installing\",\n initialValue: true,\n active: \"Continue\",\n inactive: \"Abort\",\n })\n );\n\n if (!shouldContinue) throw new UserAbortedError();\n } else {\n spinner.text =\n \"Successfully detected all required layouts in your FileMaker file.\";\n }\n }\n await runCodegenCommand();\n\n spinner.succeed(\"Auth installed successfully\");\n};\n\nfunction addToSafeActionClient(sourceFile?: SourceFile) {\n if (!sourceFile) {\n console.log(\n chalk.yellow(\n \"Failed to inject into safe-action-client. Did you move the safe-action.ts file?\"\n )\n );\n return;\n }\n\n sourceFile.addImportDeclaration({\n namedImports: [{ name: \"getCurrentSession\" }],\n moduleSpecifier: \"./auth/utils/session\",\n });\n\n // add to end of file\n sourceFile.addStatements((writer) =>\n writer.writeLine(`export const authedActionClient = actionClient.use(async ({ next, ctx }) => {\n const { session, user } = await getCurrentSession();\n if (session === null) {\n throw new Error(\"Unauthorized\");\n }\n\n return next({ ctx: { ...ctx, session, user } });\n});\n`)\n );\n}\n\nfunction protectMainLayout(sourceFile: SourceFile) {\n sourceFile.addImportDeclaration({\n defaultImport: \"Protect\",\n moduleSpecifier: \"@/components/auth/protect\",\n });\n\n // inject query provider into the root layout\n\n const exportDefault = sourceFile.getFunction((dec) => dec.isDefaultExport());\n const bodyElement = exportDefault\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement)\n ?.getFirstDescendantByKind(SyntaxKind.JsxElement);\n\n bodyElement?.replaceWithText(\n `<Protect>\n ${bodyElement?.getText()}\n </Protect>`\n );\n}\n\nasync function checkForProofKitLayouts(\n projectDir: string,\n spinner: Ora\n): Promise<boolean> {\n const settings = getSettings();\n\n const dataSource = settings.dataSources\n .filter((s) => s.type === \"fm\")\n .find((s) => s.name === \"filemaker\");\n\n if (!dataSource) return false;\n if (settings.envFile) {\n dotenv.config({\n path: path.join(projectDir, settings.envFile),\n });\n }\n const dataApiKey = process.env[dataSource.envNames.apiKey]! as OttoAPIKey;\n const fmFile = process.env[dataSource.envNames.database]!;\n const server = process.env[dataSource.envNames.server]!;\n\n const existingLayouts = await getLayouts({\n dataApiKey,\n fmFile,\n server,\n });\n const proofkitAuthLayouts = [\n \"proofkit_auth_sessions\",\n \"proofkit_auth_users\",\n \"proofkit_auth_email_verification\",\n \"proofkit_auth_password_reset\",\n ];\n\n const allProofkitAuthLayoutsExist = proofkitAuthLayouts.every((layout) =>\n existingLayouts.some((l) => l === layout)\n );\n\n if (allProofkitAuthLayoutsExist) return true;\n\n spinner.warn(\"Required layouts not found\");\n await installFmAddon({ addonName: \"auth\" });\n\n return false;\n}\n","import { readFileSync, writeFileSync } from \"fs\";\nimport path from \"path\";\nimport { glob } from \"glob\";\n\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { betterAuthInstaller } from \"~/installers/better-auth.js\";\nimport { clerkInstaller } from \"~/installers/clerk.js\";\nimport { proofkitAuthInstaller } from \"~/installers/proofkit-auth.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings, mergeSettings } from \"~/utils/parseSettings.js\";\n\nexport async function addAuth({\n options,\n noInstall = false,\n projectDir = process.cwd(),\n}: {\n options:\n | { type: \"clerk\" }\n | {\n type: \"fmaddon\";\n emailProvider?: \"plunk\" | \"resend\";\n apiKey?: string;\n }\n | { type: \"better-auth\" };\n projectDir?: string;\n noInstall?: boolean;\n}) {\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n throw new Error(\"Shadcn projects should add auth using the template registry\");\n }\n if (settings.auth.type !== \"none\") {\n throw new Error(\"Auth already exists\");\n } else if (\n !settings.dataSources.some((o) => o.type === \"fm\") &&\n options.type === \"fmaddon\"\n ) {\n throw new Error(\n \"A FileMaker data source is required to use the FM Add-on Auth\"\n );\n } else if (\n !settings.dataSources.some((o) => o.type === \"fm\") &&\n options.type === \"better-auth\"\n ) {\n throw new Error(\n \"A FileMaker data source is required to use the Better-Auth\"\n );\n }\n\n if (options.type === \"clerk\") {\n await addClerkAuth({ projectDir });\n } else if (options.type === \"fmaddon\") {\n await addFmaddonAuth();\n }\n\n // Replace actionClient with authedActionClient in all action files\n await replaceActionClientWithAuthed();\n\n if (!noInstall) {\n await installDependencies({ projectDir });\n }\n}\n\nasync function addClerkAuth({\n projectDir = process.cwd(),\n}: {\n projectDir?: string;\n}) {\n await clerkInstaller({ projectDir });\n mergeSettings({ auth: { type: \"clerk\" } });\n}\n\nasync function addFmaddonAuth() {\n await proofkitAuthInstaller();\n mergeSettings({ auth: { type: \"fmaddon\" } });\n}\n\nasync function replaceActionClientWithAuthed() {\n const projectDir = state.projectDir;\n const actionFiles = await glob(\"src/app/(main)/**/actions.ts\", {\n cwd: projectDir,\n });\n\n for (const file of actionFiles) {\n const fullPath = path.join(projectDir, file);\n const content = readFileSync(fullPath, \"utf-8\");\n const updatedContent = content.replace(\n /actionClient/g,\n \"authedActionClient\"\n );\n writeFileSync(fullPath, updatedContent);\n }\n}\n\nasync function addBetterAuth() {\n await betterAuthInstaller();\n mergeSettings({ auth: { type: \"better-auth\" } });\n}\n","import { Option } from \"commander\";\n\nexport const ciOption = new Option(\"--ci\", \"Run in CI mode\").default(false);\nexport const debugOption = new Option(\"--debug\", \"Run in debug mode\").default(\n false\n);\n","import chalk from \"chalk\";\nimport ora from \"ora\";\n\nimport {\n type InstallerOptions,\n type PkgInstallerMap,\n} from \"~/installers/index.js\";\nimport { logger } from \"~/utils/logger.js\";\n\ntype InstallPackagesOptions = InstallerOptions & {\n packages: PkgInstallerMap;\n};\n// This runs the installer for all the packages that the user has selected\nexport const installPackages = (options: InstallPackagesOptions) => {\n const { packages } = options;\n logger.info(\"Adding boilerplate...\");\n\n for (const [name, pkgOpts] of Object.entries(packages)) {\n if (pkgOpts.inUse) {\n // const spinner = ora(`Boilerplating ${name}...`).start();\n pkgOpts.installer(options);\n // spinner.succeed(\n // chalk.green(\n // `Successfully setup boilerplate for ${chalk.green.bold(name)}`\n // )\n // );\n }\n }\n\n logger.info(\"\");\n};\n","import path from \"path\";\nimport fs from \"fs-extra\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { state } from \"~/state.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\n\nexport async function copyCursorRules() {\n const projectDir = state.projectDir;\n const extrasDir = path.join(PKG_ROOT, \"template/extras\");\n const cursorRulesSrcDir = path.join(extrasDir, \"_cursor/rules\");\n const cursorRulesDestDir = path.join(projectDir, \".cursor/rules\");\n\n if (!fs.existsSync(cursorRulesSrcDir)) return;\n\n const pkgManager = getUserPkgManager();\n await fs.ensureDir(cursorRulesDestDir);\n await fs.copy(cursorRulesSrcDir, cursorRulesDestDir);\n\n // Copy package manager specific rules\n const conditionalRulesDir = path.join(extrasDir, \"_cursor/conditional-rules\");\n\n const packageManagerRules = {\n pnpm: \"pnpm.mdc\",\n npm: \"npm.mdc\",\n yarn: \"yarn.mdc\",\n };\n\n const selectedRule =\n packageManagerRules[pkgManager as keyof typeof packageManagerRules];\n\n if (selectedRule) {\n const ruleSrc = path.join(conditionalRulesDir, selectedRule);\n const ruleDest = path.join(cursorRulesDestDir, \"package-manager.mdc\");\n\n if (fs.existsSync(ruleSrc)) {\n await fs.copy(ruleSrc, ruleDest, { overwrite: true });\n }\n }\n}\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { type InstallerOptions } from \"~/installers/index.js\";\nimport { state } from \"~/state.js\";\nimport { copyCursorRules } from \"~/upgrades/cursorRules.js\";\nimport { logger } from \"~/utils/logger.js\";\n\n// This bootstraps the base Next.js application\nexport const scaffoldProject = async ({\n projectName,\n pkgManager,\n noInstall,\n}: InstallerOptions) => {\n const projectDir = state.projectDir;\n\n const srcDir = path.join(\n PKG_ROOT,\n state.appType === \"browser\"\n ? `template/${state.ui === \"mantine\" ? \"nextjs-mantine\" : \"nextjs-shadcn\"}`\n : \"template/vite-wv\"\n );\n\n if (!noInstall) {\n logger.info(`\\nUsing: ${chalk.cyan.bold(pkgManager)}\\n`);\n } else {\n logger.info(\"\");\n }\n\n const spinner = ora(`Scaffolding in: ${projectDir}...\\n`).start();\n\n if (fs.existsSync(projectDir)) {\n if (fs.readdirSync(projectDir).length === 0) {\n if (projectName !== \".\")\n spinner.info(\n `${chalk.cyan.bold(projectName)} exists but is empty, continuing...\\n`\n );\n } else {\n spinner.stopAndPersist();\n const overwriteDir = await p.select({\n message: `${chalk.redBright.bold(\"Warning:\")} ${chalk.cyan.bold(\n projectName\n )} already exists and isn't empty. How would you like to proceed?`,\n options: [\n {\n label: \"Abort installation (recommended)\",\n value: \"abort\",\n },\n {\n label: \"Clear the directory and continue installation\",\n value: \"clear\",\n },\n {\n label: \"Continue installation and overwrite conflicting files\",\n value: \"overwrite\",\n },\n ],\n initialValue: \"abort\",\n });\n if (overwriteDir === \"abort\") {\n spinner.fail(\"Aborting installation...\");\n process.exit(1);\n }\n\n const overwriteAction =\n overwriteDir === \"clear\"\n ? \"clear the directory\"\n : \"overwrite conflicting files\";\n\n const confirmOverwriteDir = await p.confirm({\n message: `Are you sure you want to ${overwriteAction}?`,\n initialValue: false,\n });\n\n if (!confirmOverwriteDir) {\n spinner.fail(\"Aborting installation...\");\n process.exit(1);\n }\n\n if (overwriteDir === \"clear\") {\n spinner.info(\n `Emptying ${chalk.cyan.bold(projectName)} and creating new ProofKit app..\\n`\n );\n fs.emptyDirSync(projectDir);\n }\n }\n }\n\n spinner.start();\n\n // Copy the main template\n fs.copySync(srcDir, projectDir);\n\n // Copy cursor rules\n copyCursorRules();\n\n // Rename gitignore\n fs.renameSync(\n path.join(projectDir, \"_gitignore\"),\n path.join(projectDir, \".gitignore\")\n );\n\n const scaffoldedName =\n projectName === \".\" ? \"App\" : chalk.cyan.bold(projectName);\n\n spinner.succeed(\n `${scaffoldedName} ${chalk.green(\"scaffolded successfully!\")}\\n`\n );\n};\n","import fs from \"fs\";\nimport path from \"path\";\n\nexport function replaceTextInFiles(\n directoryPath: string,\n search: string,\n replacement: string\n): void {\n const files = fs.readdirSync(directoryPath);\n\n files.forEach((file) => {\n const filePath = path.join(directoryPath, file);\n if (fs.statSync(filePath).isDirectory()) {\n replaceTextInFiles(filePath, search, replacement);\n } else {\n const data = fs.readFileSync(filePath, \"utf8\");\n const updatedData = data.replace(new RegExp(search, \"g\"), replacement);\n fs.writeFileSync(filePath, updatedData, \"utf8\");\n }\n });\n}\n","import path from \"path\";\n\nimport { installPackages } from \"~/helpers/installPackages.js\";\nimport { scaffoldProject } from \"~/helpers/scaffoldProject.js\";\nimport { type AvailableDependencies } from \"~/installers/dependencyVersionMap.js\";\nimport { type PkgInstallerMap } from \"~/installers/index.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { replaceTextInFiles } from \"./replaceText.js\";\nimport { shadcnInstall } from \"./shadcn-cli.js\";\n\ninterface CreateProjectOptions {\n projectName: string;\n packages: PkgInstallerMap;\n scopedAppName: string;\n noInstall: boolean;\n appRouter: boolean;\n}\n\nexport const createBareProject = async ({\n projectName,\n scopedAppName,\n packages,\n noInstall,\n}: CreateProjectOptions) => {\n const pkgManager = getUserPkgManager();\n state.projectDir = path.resolve(process.cwd(), projectName);\n\n // Bootstraps the base Next.js application\n await scaffoldProject({\n projectName,\n pkgManager,\n scopedAppName,\n noInstall,\n });\n\n addPackageDependency({\n dependencies: [\"@proofkit/cli\", \"@types/node\"],\n devMode: true,\n });\n\n // Add new base dependencies for Tailwind v4 and shadcn/ui or legacy Mantine\n // These should match the plan and dependencyVersionMap\n const SHADCN_BASE_DEPS = [\n \"@radix-ui/react-slot\",\n \"@tailwindcss/postcss\",\n \"class-variance-authority\",\n \"clsx\",\n \"lucide-react\",\n \"tailwind-merge\",\n \"tailwindcss\",\n \"tw-animate-css\",\n \"next-themes\",\n ] as AvailableDependencies[];\n const SHADCN_BASE_DEV_DEPS = [\n \"prettier\",\n \"prettier-plugin-tailwindcss\",\n ] as AvailableDependencies[];\n\n const MANTINE_DEPS = [\n \"@mantine/core\",\n \"@mantine/dates\",\n \"@mantine/hooks\",\n \"@mantine/modals\",\n \"@mantine/notifications\",\n \"mantine-react-table\",\n ] as AvailableDependencies[];\n const MANTINE_DEV_DEPS = [\n \"postcss\",\n \"postcss-preset-mantine\",\n \"postcss-simple-vars\",\n ] as AvailableDependencies[];\n\n if (state.ui === \"mantine\") {\n addPackageDependency({\n dependencies: MANTINE_DEPS,\n devMode: false,\n });\n addPackageDependency({\n dependencies: MANTINE_DEV_DEPS,\n devMode: true,\n });\n } else if (state.ui === \"shadcn\") {\n addPackageDependency({\n dependencies: SHADCN_BASE_DEPS,\n devMode: false,\n });\n addPackageDependency({\n dependencies: SHADCN_BASE_DEV_DEPS,\n devMode: true,\n });\n addPackageDependency({\n dependencies: [\"zod\"],\n devMode: false,\n });\n } else {\n throw new Error(`Unsupported UI library: ${state.ui}`);\n }\n\n // Install the selected packages\n installPackages({\n projectName,\n scopedAppName,\n pkgManager,\n packages,\n noInstall,\n });\n\n replaceTextInFiles(\n state.projectDir,\n \"__PNPM_COMMAND__\",\n pkgManager === \"pnpm\"\n ? \"pnpm\"\n : pkgManager === \"bun\"\n ? \"bun\"\n : pkgManager === \"yarn\"\n ? \"yarn\"\n : \"npm run\"\n );\n\n return state.projectDir;\n};\n","import { execSync } from \"child_process\";\nimport path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { execa } from \"execa\";\nimport fs from \"fs-extra\";\nimport ora from \"ora\";\n\nimport { logger } from \"~/utils/logger.js\";\n\nconst isGitInstalled = (dir: string): boolean => {\n try {\n execSync(\"git --version\", { cwd: dir });\n return true;\n } catch (_e) {\n return false;\n }\n};\n\n/** @returns Whether or not the provided directory has a `.git` subdirectory in it. */\nexport const isRootGitRepo = (dir: string): boolean => {\n return fs.existsSync(path.join(dir, \".git\"));\n};\n\n/** @returns Whether or not this directory or a parent directory has a `.git` directory. */\nexport const isInsideGitRepo = async (dir: string): Promise<boolean> => {\n try {\n // If this command succeeds, we're inside a git repo\n await execa(\"git\", [\"rev-parse\", \"--is-inside-work-tree\"], {\n cwd: dir,\n stdout: \"ignore\",\n });\n return true;\n } catch (_e) {\n // Else, it will throw a git-error and we return false\n return false;\n }\n};\n\nconst getGitVersion = () => {\n const stdout = execSync(\"git --version\").toString().trim();\n const gitVersionTag = stdout.split(\" \")[2];\n const major = gitVersionTag?.split(\".\")[0];\n const minor = gitVersionTag?.split(\".\")[1];\n return { major: Number(major), minor: Number(minor) };\n};\n\n/** @returns The git config value of \"init.defaultBranch\". If it is not set, returns \"main\". */\nconst getDefaultBranch = () => {\n const stdout = execSync(\"git config --global init.defaultBranch || echo main\")\n .toString()\n .trim();\n\n return stdout;\n};\n\n// This initializes the Git-repository for the project\nexport const initializeGit = async (projectDir: string) => {\n logger.info(\"Initializing Git...\");\n\n if (!isGitInstalled(projectDir)) {\n logger.warn(\"Git is not installed. Skipping Git initialization.\");\n return;\n }\n\n const spinner = ora(\"Creating a new git repo...\\n\").start();\n\n const isRoot = isRootGitRepo(projectDir);\n const isInside = await isInsideGitRepo(projectDir);\n const dirName = path.parse(projectDir).name; // skip full path for logging\n\n if (isInside && isRoot) {\n // Dir is a root git repo\n spinner.stop();\n const overwriteGit = await p.confirm({\n message: `${chalk.redBright.bold(\n \"Warning:\"\n )} Git is already initialized in \"${dirName}\". Initializing a new git repository would delete the previous history. Would you like to continue anyways?`,\n initialValue: false,\n });\n\n if (!overwriteGit) {\n spinner.info(\"Skipping Git initialization.\");\n return;\n }\n // Deleting the .git folder\n fs.removeSync(path.join(projectDir, \".git\"));\n } else if (isInside && !isRoot) {\n // Dir is inside a git worktree\n spinner.stop();\n const initializeChildGitRepo = await p.confirm({\n message: `${chalk.redBright.bold(\n \"Warning:\"\n )} \"${dirName}\" is already in a git worktree. Would you still like to initialize a new git repository in this directory?`,\n initialValue: false,\n });\n if (!initializeChildGitRepo) {\n spinner.info(\"Skipping Git initialization.\");\n return;\n }\n }\n\n // We're good to go, initializing the git repo\n try {\n const branchName = getDefaultBranch();\n\n // --initial-branch flag was added in git v2.28.0\n const { major, minor } = getGitVersion();\n if (major < 2 || (major == 2 && minor < 28)) {\n await execa(\"git\", [\"init\"], { cwd: projectDir });\n // symbolic-ref is used here due to refs/heads/master not existing\n // It is only created after the first commit\n // https://superuser.com/a/1419674\n await execa(\"git\", [\"symbolic-ref\", \"HEAD\", `refs/heads/${branchName}`], {\n cwd: projectDir,\n });\n } else {\n await execa(\"git\", [\"init\", `--initial-branch=${branchName}`], {\n cwd: projectDir,\n });\n }\n await execa(\"git\", [\"add\", \".\"], { cwd: projectDir });\n await execa(\"git\", [\"commit\", \"-m\", \"Initial commit\"], {\n cwd: projectDir,\n });\n spinner.succeed(\n `${chalk.green(\"Successfully initialized and staged\")} ${chalk.green.bold(\n \"git\"\n )}\\n`\n );\n } catch (error) {\n // Safeguard, should be unreachable\n spinner.fail(\n `${chalk.bold.red(\n \"Failed:\"\n )} could not initialize git. Update git to the latest version!\\n`\n );\n }\n};\n","import chalk from \"chalk\";\n\nimport { DEFAULT_APP_NAME } from \"~/consts.js\";\nimport { type InstallerOptions } from \"~/installers/index.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { logger } from \"~/utils/logger.js\";\n\n// This logs the next steps that the user should take in order to advance the project\nexport const logNextSteps = ({\n projectName = DEFAULT_APP_NAME,\n noInstall,\n}: Pick<InstallerOptions, \"projectName\" | \"noInstall\">) => {\n const pkgManager = getUserPkgManager();\n\n logger.info(chalk.bold(\"Next steps:\"));\n logger.dim(`\\nNavigate to the project directory:`);\n projectName !== \".\" && logger.info(` cd ${projectName}`);\n logger.dim(\n `(or open in your code editor, and run the rest of these commands from there)`\n );\n\n if (noInstall) {\n logger.dim(`\\nInstall dependencies:`);\n // To reflect yarn's default behavior of installing packages when no additional args provided\n if (pkgManager === \"yarn\") {\n logger.info(` ${pkgManager}`);\n } else {\n logger.info(` ${pkgManager} install`);\n }\n }\n\n logger.dim(`\\nStart the dev server to view your app in a browser:`);\n if ([\"npm\", \"bun\"].includes(pkgManager)) {\n logger.info(` ${pkgManager} run dev`);\n } else {\n logger.info(` ${pkgManager} dev`);\n }\n\n logger.dim(\n `\\nOr, run the ProofKit command again to add more to your project:`\n );\n if ([\"npm\", \"bun\"].includes(pkgManager)) {\n logger.info(` ${pkgManager} run proofkit`);\n } else {\n logger.info(` ${pkgManager} proofkit`);\n }\n logger.dim(\"(Must be inside the project directory)\");\n};\n","import { replaceTextInFiles } from \"./replaceText.js\";\n\nexport const setImportAlias = (projectDir: string, importAlias: string) => {\n const normalizedImportAlias = importAlias\n .replace(/\\*/g, \"\") // remove any wildcards (~/* -> ~/)\n .replace(/[^\\/]$/, \"$&/\"); // ensure trailing slash (@ -> ~/)\n\n // update import alias in any files if not using the default\n replaceTextInFiles(projectDir, `~/`, normalizedImportAlias);\n};\n","import fs from \"fs\";\nimport path from \"path\";\nimport { execa } from \"execa\";\n\nimport { DEFAULT_REGISTRY_URL } from \"~/consts.js\";\nimport { state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { runExecCommand } from \"./installDependencies.js\";\n\nexport async function shadcnInstall(\n components: string | string[],\n friendlyComponentName?: string\n) {\n const componentsArray = Array.isArray(components) ? components : [components];\n const command = [\"shadcn@latest\", \"add\", ...componentsArray];\n // Use execa to run the shadcn add command directly\n\n try {\n await execa(\"pnpm\", [\"dlx\", ...command], {\n stdio: \"inherit\",\n cwd: state.projectDir ?? process.cwd(),\n });\n } catch (error) {\n logger.error(`Failed to run shadcn add: ${error}`);\n throw error;\n }\n}\n\nexport function getRegistryUrl(): string {\n let url: string;\n try {\n url = getSettings().registryUrl ?? DEFAULT_REGISTRY_URL;\n } catch {\n // If we can't get settings (e.g., during development or outside a ProofKit project),\n // fall back to the default registry URL\n url = DEFAULT_REGISTRY_URL;\n }\n return url.endsWith(\"/\") ? url.slice(0, -1) : url;\n}\n\nexport type ShadcnConfig = {\n style: \"default\" | \"new-york\";\n tailwind: {\n config: string;\n css: string;\n baseColor: string;\n cssVariables: boolean;\n prefix?: string;\n [k: string]: unknown;\n };\n rsc: boolean;\n tsx?: boolean;\n iconLibrary?: string;\n aliases: {\n utils: string;\n components: string;\n ui?: string;\n lib?: string;\n hooks?: string;\n [k: string]: unknown;\n };\n registries?: {\n [k: string]:\n | string\n | {\n url: string;\n params?: {\n [k: string]: string;\n };\n headers?: {\n [k: string]: string;\n };\n [k: string]: unknown;\n };\n };\n [k: string]: unknown;\n};\n\nexport function getShadcnConfig() {\n const componentsJsonPath = path.join(state.projectDir, \"components.json\");\n const componentsJson = JSON.parse(\n fs.readFileSync(componentsJsonPath, \"utf8\")\n );\n return componentsJson as ShadcnConfig;\n}\n","/** @type {import(\"eslint\").Linter.Config} */\nexport const _initialConfig = {\n parser: \"@typescript-eslint/parser\",\n parserOptions: { project: true },\n plugins: [\"@typescript-eslint\"],\n extends: [\n \"next/core-web-vitals\",\n \"plugin:@typescript-eslint/recommended-type-checked\",\n \"plugin:@typescript-eslint/stylistic-type-checked\",\n ],\n rules: {\n \"@typescript-eslint/array-type\": \"off\",\n \"@typescript-eslint/consistent-type-definitions\": \"off\",\n \"@typescript-eslint/consistent-type-imports\": [\n \"warn\",\n { prefer: \"type-imports\", fixStyle: \"inline-type-imports\" },\n ],\n \"@typescript-eslint/no-unused-vars\": [\"warn\", { argsIgnorePattern: \"^_\" }],\n \"@typescript-eslint/require-await\": \"off\",\n \"@typescript-eslint/no-explicit-any\": \"warn\",\n \"@typescript-eslint/no-misused-promises\": [\n \"error\",\n { checksVoidReturn: { attributes: false } },\n ],\n \"@typescript-eslint/no-floating-promises\": \"warn\",\n },\n};\n","import path from \"path\";\nimport fs from \"fs-extra\";\n\nimport { _initialConfig as eslintConfig } from \"~/../template/extras/config/_eslint.js\";\nimport { type Installer } from \"~/installers/index.js\";\nimport { state } from \"~/state.js\";\n\nexport const dynamicEslintInstaller: Installer = () => {\n // Convert config from _eslint.config.json to .eslintrc.cjs\n const eslintrcFileContents = [\n '/** @type {import(\"eslint\").Linter.Config} */',\n `const config = ${JSON.stringify(eslintConfig, null, 2)}`,\n \"module.exports = config;\",\n ].join(\"\\n\");\n\n const eslintConfigDest = path.join(state.projectDir, \".eslintrc.cjs\");\n fs.writeFileSync(eslintConfigDest, eslintrcFileContents, \"utf-8\");\n};\n","import { initEnvFile } from \"~/installers/envVars.js\";\nimport { type PackageManager } from \"~/utils/getUserPkgManager.js\";\nimport { dynamicEslintInstaller } from \"./eslint.js\";\n\n// Turning this into a const allows the list to be iterated over for programmatically creating prompt options\n// Should increase extensibility in the future\nexport const availablePackages = [\n \"nextAuth\",\n \"trpc\",\n \"envVariables\",\n \"eslint\",\n \"fmdapi\",\n \"webViewerFetch\",\n \"clerk\",\n] as const;\nexport type AvailablePackages = (typeof availablePackages)[number];\n\nexport interface InstallerOptions {\n pkgManager: PackageManager;\n noInstall: boolean;\n packages?: PkgInstallerMap;\n projectName: string;\n scopedAppName: string;\n}\n\nexport type Installer = (opts: InstallerOptions) => void;\n\nexport type PkgInstallerMap = {\n [pkg in AvailablePackages]?: {\n inUse: boolean;\n installer: Installer;\n };\n};\n\nexport const buildPkgInstallerMap = (): PkgInstallerMap => ({\n envVariables: {\n inUse: true,\n installer: initEnvFile,\n },\n eslint: {\n inUse: true,\n installer: dynamicEslintInstaller,\n },\n});\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport { type OttoAPIKey } from \"@proofkit/fmdapi\";\nimport chalk from \"chalk\";\nimport dotenv from \"dotenv\";\n\nimport { getLayouts } from \"~/cli/fmdapi.js\";\nimport { abortIfCancel, UserAbortedError } from \"~/cli/utils.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { installFmAddon } from \"./install-fm-addon.js\";\n\nexport async function checkForWebViewerLayouts(): Promise<boolean> {\n const settings = getSettings();\n\n const dataSource = settings.dataSources\n .filter((s: { type: string }) => s.type === \"fm\")\n .find((s: { name: string; type: string }) => s.name === \"filemaker\") as\n | {\n type: \"fm\";\n name: string;\n envNames: { database: string; server: string; apiKey: string };\n }\n | undefined;\n\n if (!dataSource) return false;\n if (settings.envFile) {\n dotenv.config({\n path: path.join(state.projectDir, settings.envFile),\n });\n }\n const dataApiKey = process.env[dataSource.envNames.apiKey]! as OttoAPIKey;\n const fmFile = process.env[dataSource.envNames.database]!;\n const server = process.env[dataSource.envNames.server]!;\n\n const existingLayouts = await getLayouts({\n dataApiKey,\n fmFile,\n server,\n });\n const webviewerLayouts = [\"ProofKitWV\"];\n\n const allWebViewerLayoutsExist = webviewerLayouts.every((layout) =>\n existingLayouts.some((l: string) => l === layout)\n );\n\n if (allWebViewerLayoutsExist) {\n console.log(\n chalk.green(\n \"Successfully detected all required layouts for ProofKit WebViewer in your FileMaker file.\"\n )\n );\n return true;\n }\n\n await installFmAddon({ addonName: \"wv\" });\n\n return false;\n}\n\nexport async function ensureWebViewerAddonInstalled() {\n let hasWebViewerLayouts = false;\n while (!hasWebViewerLayouts) {\n hasWebViewerLayouts = await checkForWebViewerLayouts();\n\n if (!hasWebViewerLayouts) {\n const shouldContinue = abortIfCancel<boolean>(\n await p.confirm({\n message:\n \"I have followed the above instructions, continue installing\",\n initialValue: true,\n active: \"Continue\",\n inactive: \"Abort\",\n })\n );\n\n if (!shouldContinue) throw new UserAbortedError();\n }\n }\n}\n","export const removeTrailingSlash = (input: string) => {\n if (input.length > 1 && input.endsWith(\"/\")) {\n input = input.slice(0, -1);\n }\n\n return input;\n};\n","import pathModule from \"path\";\n\nimport { removeTrailingSlash } from \"./removeTrailingSlash.js\";\n\n/**\n * Parses the appName and its path from the user input.\n *\n * Returns a tuple of of `[appName, path]`, where `appName` is the name put in the \"package.json\"\n * file and `path` is the path to the directory where the app will be created.\n *\n * If `appName` is \".\", the name of the directory will be used instead. Handles the case where the\n * input includes a scoped package name in which case that is being parsed as the name, but not\n * included as the path.\n *\n * For example:\n *\n * - dir/@mono/app => [\"@mono/app\", \"dir/app\"]\n * - dir/app => [\"app\", \"dir/app\"]\n */\nexport const parseNameAndPath = (rawInput: string) => {\n const input = removeTrailingSlash(rawInput);\n\n const paths = input.split(\"/\");\n\n let appName = paths[paths.length - 1]!;\n\n // If the user ran `npx proofkit .` or similar, the appName should be the current directory\n if (appName === \".\") {\n const parsedCwd = pathModule.resolve(process.cwd());\n appName = pathModule.basename(parsedCwd);\n }\n\n // If the first part is a @, it's a scoped package\n const indexOfDelimiter = paths.findIndex((p) => p.startsWith(\"@\"));\n if (paths.findIndex((p) => p.startsWith(\"@\")) !== -1) {\n appName = paths.slice(indexOfDelimiter).join(\"/\");\n }\n\n const path = paths.filter((p) => !p.startsWith(\"@\")).join(\"/\");\n\n return [appName, path] as const;\n};\n","import { removeTrailingSlash } from \"./removeTrailingSlash.js\";\n\nconst validationRegExp =\n /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$/;\n\n//Validate a string against allowed package.json names\nexport const validateAppName = (rawInput: string) => {\n const input = removeTrailingSlash(rawInput);\n const paths = input.split(\"/\");\n\n // If the first part is a @, it's a scoped package\n const indexOfDelimiter = paths.findIndex((p) => p.startsWith(\"@\"));\n\n let appName = paths[paths.length - 1];\n if (paths.findIndex((p) => p.startsWith(\"@\")) !== -1) {\n appName = paths.slice(indexOfDelimiter).join(\"/\");\n }\n\n if (input === \".\" || validationRegExp.test(appName ?? \"\")) {\n return;\n } else {\n return \"Name must consist of only lowercase alphanumeric characters, '-', and '_'\";\n }\n};\n","import * as clack from \"@clack/prompts\";\nimport axios, { AxiosError } from \"axios\";\nimport chalk from \"chalk\";\nimport open from \"open\";\nimport randomstring from \"randomstring\";\nimport { z } from \"zod/v4\";\n\nimport { abortIfCancel } from \"./utils.js\";\n\ninterface WizardResponse {\n token: string;\n}\nexport async function getOttoFMSToken({\n url,\n}: {\n url: URL;\n}): Promise<{ token: string }> {\n // generate a random string\n const hash = randomstring.generate({ length: 18, charset: \"alphanumeric\" });\n\n const loginUrl = new URL(`/otto/wizard/${hash}`, url.origin);\n\n const urlToOpen = loginUrl.toString();\n clack.log.info(\n `${chalk.bold(\n `If the browser window didn't open automatically, please open the following link to login into your OttoFMS server:`\n )}\\n\\n${chalk.cyan(urlToOpen)}`\n );\n\n void open(loginUrl.toString());\n\n const loginSpinner = clack.spinner();\n\n loginSpinner.start(\"Waiting for you to log in using the link above\");\n\n const data = await new Promise<WizardResponse>((resolve) => {\n const pollingInterval = setInterval(() => {\n axios\n .get<{ response: WizardResponse }>(\n `${url.origin}/otto/api/cli/checkHash/${hash}`,\n {\n headers: {\n \"Accept-Encoding\": \"deflate\",\n },\n }\n )\n .then((result) => {\n resolve(result.data.response);\n clearTimeout(timeout);\n clearInterval(pollingInterval);\n void axios.delete(`${url.origin}/otto/api/cli/checkHash/${hash}`, {\n headers: {\n \"Accept-Encoding\": \"deflate\",\n },\n });\n })\n .catch(() => {\n // noop - just try again\n });\n }, 500);\n\n const timeout = setTimeout(() => {\n clearInterval(pollingInterval);\n loginSpinner.stop(\n \"Login timed out. No worries - it happens to the best of us.\"\n );\n }, 180_000); // 3 minutes\n });\n // clack.log.info(`Token: ${JSON.stringify(data)}`);\n\n loginSpinner.stop(\"Login complete.\");\n\n return data;\n}\n\ninterface ListFilesResponse {\n response: {\n databases: {\n clients: number;\n decryptHint: string;\n enabledExtPrivileges: string[];\n filename: string;\n folder: string;\n hasSavedDecryptKey: boolean;\n id: string;\n isEncrypted: boolean;\n size: number;\n status: string;\n }[];\n };\n}\n\nexport async function listFiles({ url, token }: { url: URL; token: string }) {\n const response = await axios.get<ListFilesResponse>(\n `${url.origin}/otto/fmi/admin/api/v2/databases`,\n {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n }\n );\n\n return response.data.response.databases;\n}\n\ninterface ListAPIKeysResponse {\n response: {\n \"api-keys\": {\n id: number;\n key: string;\n token: string;\n user: string;\n database: string;\n label: string;\n created_at: string;\n updated_at: string;\n }[];\n };\n}\n\nexport async function listAPIKeys({ url, token }: { url: URL; token: string }) {\n const response = await axios.get<ListAPIKeysResponse>(\n `${url.origin}/otto/api/api-key`,\n {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n }\n );\n\n return response.data.response[\"api-keys\"];\n}\n\ninterface CreateAPIKeyResponse {\n response: {\n key: string;\n token: string;\n };\n}\nexport async function createDataAPIKey({\n url,\n filename,\n}: {\n url: URL;\n filename: string;\n}) {\n clack.log.info(\n `${chalk.cyan(\"Creating a Data API Key\")}\\nEnter FileMaker credentials for ${chalk.bold(filename)}.\\n${chalk.dim(`The account must have the fmrest extended privilege enabled.`)}`\n );\n\n while (true) {\n const username = abortIfCancel(\n await clack.text({\n message: `Enter the account name for ${chalk.bold(filename)}`,\n })\n );\n\n const password = abortIfCancel(\n await clack.password({\n message: `Enter the password for ${chalk.bold(username)}`,\n })\n );\n\n try {\n const response = await createDataAPIKeyWithCredentials({\n url,\n filename,\n username,\n password,\n });\n\n return response;\n } catch (error) {\n if (!(error instanceof AxiosError)) {\n clack.log.error(\n `${chalk.red(\"Error creating Data API key:\")} Unknown error`\n );\n } else {\n const respMsg =\n error.response?.data && \"messages\" in error.response.data\n ? (error.response.data as { messages?: { text?: string }[] })\n .messages?.[0]?.text\n : undefined;\n\n clack.log.error(\n `${chalk.red(\"Error creating Data API key:\")} ${\n respMsg ?? `Error code ${error.response?.status}`\n }\n${chalk.dim(\n error.response?.status === 400 &&\n `Common reasons this might happen:\n- The provided credentials are incorrect.\n- The account does not have the fmrest extended privilege enabled.\n\nYou may also want to try to create an API directly in the OttoFMS dashboard:\n${url.origin}/otto/app/api-keys`\n)}\n `\n );\n }\n const tryAgain = abortIfCancel(\n await clack.confirm({\n message: \"Do you want to try and enter credentials again?\",\n active: \"Yes, try again\",\n inactive: \"No, abort\",\n })\n );\n if (!tryAgain) {\n throw new Error(\"User cancelled\");\n }\n }\n }\n}\n\nexport async function createDataAPIKeyWithCredentials({\n url,\n filename,\n username,\n password,\n}: {\n url: URL;\n filename: string;\n username: string;\n password: string;\n}) {\n const response = await axios.post<CreateAPIKeyResponse>(\n `${url.origin}/otto/api/api-key/create-only`,\n {\n database: filename,\n label: \"For FM Web App\",\n user: username,\n pass: password,\n }\n );\n\n return { apiKey: response.data.response.key };\n}\n\nexport async function startDeployment({\n payload,\n url,\n token,\n}: {\n payload: any;\n url: URL;\n token: string;\n}) {\n const responseSchema = z.object({\n response: z.object({\n started: z.boolean(),\n batchId: z.number(),\n subDeploymentIds: z.array(z.number()),\n }),\n messages: z.array(z.object({ code: z.number(), text: z.string() })),\n });\n\n const response = await axios\n .post(`${url.origin}/otto/api/deployment`, payload, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .catch((error) => {\n console.error(error.response.data);\n throw error;\n });\n\n return responseSchema.parse(response.data);\n}\n\nexport async function getDeploymentStatus({\n url,\n token,\n deploymentId,\n}: {\n url: URL;\n token: string;\n deploymentId: number;\n}) {\n const schema = z.object({\n response: z.object({\n id: z.number(),\n status: z.enum([\n \"queued\",\n \"running\",\n \"scheduled\",\n \"complete\",\n \"aborted\",\n \"unknown\",\n ]),\n running: z.coerce.boolean(),\n created_at: z.string(),\n started_at: z.string(),\n updated_at: z.string(),\n }),\n messages: z.array(z.object({ code: z.number(), text: z.string() })),\n });\n\n const response = await axios.get(\n `${url.origin}/otto/api/deployment/${deploymentId}`,\n {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n }\n );\n\n return schema.parse(response.data);\n}\n","const noop = ()=>{\n// noop\n};\nfunction createInnerProxy(callback, path, cache) {\n return new Proxy(noop, {\n get (_obj, key) {\n if (typeof key !== 'string' || key === 'then') {\n // special case for if the proxy is accidentally treated\n // like a PromiseLike (like in `Promise.resolve(proxy)`)\n return undefined;\n }\n return createInnerProxy(callback, [\n ...path,\n key\n ]);\n },\n apply (_1, _2, args) {\n const lastOfPath = path[path.length - 1];\n let opts = {\n args,\n path\n };\n // special handling for e.g. `trpc.hello.call(this, 'there')` and `trpc.hello.apply(this, ['there'])\n if (lastOfPath === 'call') {\n opts = {\n args: args.length >= 2 ? [\n args[1]\n ] : [],\n path: path.slice(0, -1)\n };\n } else if (lastOfPath === 'apply') {\n opts = {\n args: args.length >= 2 ? args[1] : [],\n path: path.slice(0, -1)\n };\n }\n return callback(opts);\n }\n });\n}\n/**\n * Creates a proxy that calls the callback with the path and arguments\n *\n * @internal\n */ const createRecursiveProxy = (callback)=>createInnerProxy(callback, []);\n/**\n * Used in place of `new Proxy` where each handler will map 1 level deep to another value.\n *\n * @internal\n */ const createFlatProxy = (callback)=>{\n return new Proxy(noop, {\n get (_obj, name) {\n if (typeof name !== 'string' || name === 'then') {\n // special case for if the proxy is accidentally treated\n // like a PromiseLike (like in `Promise.resolve(proxy)`)\n return undefined;\n }\n return callback(name);\n }\n });\n};\n\nexport { createFlatProxy, createRecursiveProxy };\n","/** @internal */ const unsetMarker = Symbol('unsetMarker');\n/**\n * Ensures there are no duplicate keys when building a procedure.\n * @internal\n */ function mergeWithoutOverrides(obj1, ...objs) {\n const newObj = Object.assign(Object.create(null), obj1);\n for (const overrides of objs){\n for(const key in overrides){\n if (key in newObj && newObj[key] !== overrides[key]) {\n throw new Error(`Duplicate key ${key}`);\n }\n newObj[key] = overrides[key];\n }\n }\n return newObj;\n}\n/**\n * Check that value is object\n * @internal\n */ function isObject(value) {\n return !!value && !Array.isArray(value) && typeof value === 'object';\n}\nfunction isFunction(fn) {\n return typeof fn === 'function';\n}\n/**\n * Create an object without inheriting anything from `Object.prototype`\n * @internal\n */ function omitPrototype(obj) {\n return Object.assign(Object.create(null), obj);\n}\nconst asyncIteratorsSupported = typeof Symbol === 'function' && !!Symbol.asyncIterator;\nfunction isAsyncIterable(value) {\n return asyncIteratorsSupported && isObject(value) && Symbol.asyncIterator in value;\n}\n/**\n * Run an IIFE\n */ const run = (fn)=>fn();\n\nexport { isAsyncIterable, isFunction, isObject, mergeWithoutOverrides, omitPrototype, run, unsetMarker };\n","import { isObject } from '../utils.mjs';\n\nclass UnknownCauseError extends Error {\n}\nfunction getCauseFromUnknown(cause) {\n if (cause instanceof Error) {\n return cause;\n }\n const type = typeof cause;\n if (type === 'undefined' || type === 'function' || cause === null) {\n return undefined;\n }\n // Primitive types just get wrapped in an error\n if (type !== 'object') {\n return new Error(String(cause));\n }\n // If it's an object, we'll create a synthetic error\n if (isObject(cause)) {\n const err = new UnknownCauseError();\n for(const key in cause){\n err[key] = cause[key];\n }\n return err;\n }\n return undefined;\n}\nfunction getTRPCErrorFromUnknown(cause) {\n if (cause instanceof TRPCError) {\n return cause;\n }\n if (cause instanceof Error && cause.name === 'TRPCError') {\n // https://github.com/trpc/trpc/pull/4848\n return cause;\n }\n const trpcError = new TRPCError({\n code: 'INTERNAL_SERVER_ERROR',\n cause\n });\n // Inherit stack from error\n if (cause instanceof Error && cause.stack) {\n trpcError.stack = cause.stack;\n }\n return trpcError;\n}\nclass TRPCError extends Error {\n constructor(opts){\n const cause = getCauseFromUnknown(opts.cause);\n const message = opts.message ?? cause?.message ?? opts.code;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore https://github.com/tc39/proposal-error-cause\n super(message, {\n cause\n });\n this.code = opts.code;\n this.name = 'TRPCError';\n if (!this.cause) {\n // < ES2022 / < Node 16.9.0 compatability\n this.cause = cause;\n }\n }\n}\n\nexport { TRPCError, getCauseFromUnknown, getTRPCErrorFromUnknown };\n","import { getTRPCErrorFromUnknown } from '../error/TRPCError.mjs';\nimport { run } from '../utils.mjs';\nimport { createTimeoutPromise } from './utils/createDeferred.mjs';\nimport { createReadableStream } from './utils/createReadableStream.mjs';\n\nconst sseSymbol = Symbol('SSEMessageEnvelope');\n/**\n * Produce a typed server-sent event message\n */ function sse(event) {\n if (event.id === '') {\n // This could be removed by using different event names for `yield sse(x)`-emitted events and `yield y`-emitted events\n throw new Error('`id` must not be an empty string as empty string is the same as not setting the id at all');\n }\n return [\n sseSymbol,\n event\n ];\n}\nfunction isSSEMessageEnvelope(value) {\n return Array.isArray(value) && value[0] === sseSymbol;\n}\n/**\n *\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */ function sseStreamProducer(opts) {\n const stream = createReadableStream();\n stream.controller.enqueue({\n comment: 'connected'\n });\n const { serialize =(v)=>v } = opts;\n const ping = {\n enabled: opts.ping?.enabled ?? false,\n intervalMs: opts.ping?.intervalMs ?? 1000\n };\n run(async ()=>{\n const iterator = opts.data[Symbol.asyncIterator]();\n const closedPromise = stream.cancelledPromise.then(()=>'closed');\n const maxDurationPromise = createTimeoutPromise(opts.maxDurationMs ?? Infinity, 'maxDuration');\n let nextPromise = iterator.next();\n while(true){\n const pingPromise = createTimeoutPromise(ping.enabled ? ping.intervalMs : Infinity, 'ping');\n const next = await Promise.race([\n nextPromise.catch(getTRPCErrorFromUnknown),\n pingPromise.promise,\n closedPromise,\n maxDurationPromise.promise\n ]);\n pingPromise.clear();\n if (next === 'closed') {\n break;\n }\n if (next === 'maxDuration') {\n break;\n }\n if (next === 'ping') {\n stream.controller.enqueue({\n comment: 'ping'\n });\n continue;\n }\n if (next instanceof Error) {\n stream.controller.error(next);\n break;\n }\n if (next.done) {\n break;\n }\n const value = next.value;\n const chunk = isSSEMessageEnvelope(value) ? {\n ...value[1]\n } : {\n data: value\n };\n if ('data' in chunk) {\n chunk.data = JSON.stringify(serialize(chunk.data));\n }\n stream.controller.enqueue(chunk);\n if (opts.emitAndEndImmediately) {\n // end the stream in the next tick so that we can send a few more events from the queue\n setTimeout(maxDurationPromise.resolve, 1);\n }\n nextPromise = iterator.next();\n }\n maxDurationPromise.clear();\n await iterator.return?.();\n try {\n stream.controller.close();\n } catch {}\n }).catch((error)=>{\n return stream.controller.error(error);\n });\n return stream.readable.pipeThrough(new TransformStream({\n transform (chunk, controller) {\n if ('event' in chunk) {\n controller.enqueue(`event: ${chunk.event}\\n`);\n }\n if ('data' in chunk) {\n controller.enqueue(`data: ${chunk.data}\\n`);\n }\n if ('id' in chunk) {\n controller.enqueue(`id: ${chunk.id}\\n`);\n }\n if ('comment' in chunk) {\n controller.enqueue(`: ${chunk.comment}\\n`);\n }\n controller.enqueue('\\n\\n');\n }\n }));\n}\n/**\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */ function sseStreamConsumer(opts) {\n const { deserialize =(v)=>v } = opts;\n const eventSource = opts.from;\n const stream = createReadableStream();\n const transform = new TransformStream({\n async transform (chunk, controller) {\n const def = {\n data: deserialize(JSON.parse(chunk.data))\n };\n if (chunk.lastEventId) {\n def.id = chunk.lastEventId;\n }\n controller.enqueue(def);\n }\n });\n eventSource.addEventListener('message', (msg)=>{\n stream.controller.enqueue(msg);\n });\n eventSource.addEventListener('error', (cause)=>{\n if (eventSource.readyState === EventSource.CLOSED) {\n stream.controller.error(cause);\n }\n });\n const readable = stream.readable.pipeThrough(transform);\n return {\n [Symbol.asyncIterator] () {\n const reader = readable.getReader();\n const iterator = {\n async next () {\n const value = await reader.read();\n if (value.done) {\n return {\n value: undefined,\n done: true\n };\n }\n return {\n value: value.value,\n done: false\n };\n },\n async return () {\n reader.releaseLock();\n return {\n value: undefined,\n done: true\n };\n }\n };\n return iterator;\n }\n };\n}\nconst sseHeaders = {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache, no-transform',\n 'X-Accel-Buffering': 'no',\n Connection: 'keep-alive'\n};\n\nexport { isSSEMessageEnvelope, sse, sseHeaders, sseStreamConsumer, sseStreamProducer };\n","import { isObject } from './utils.mjs';\n\n/**\n * @internal\n */ function getDataTransformer(transformer) {\n if ('input' in transformer) {\n return transformer;\n }\n return {\n input: transformer,\n output: transformer\n };\n}\n/**\n * @internal\n */ const defaultTransformer = {\n input: {\n serialize: (obj)=>obj,\n deserialize: (obj)=>obj\n },\n output: {\n serialize: (obj)=>obj,\n deserialize: (obj)=>obj\n }\n};\nfunction transformTRPCResponseItem(config, item) {\n if ('error' in item) {\n return {\n ...item,\n error: config.transformer.output.serialize(item.error)\n };\n }\n if ('data' in item.result) {\n return {\n ...item,\n result: {\n ...item.result,\n data: config.transformer.output.serialize(item.result.data)\n }\n };\n }\n return item;\n}\n/**\n * Takes a unserialized `TRPCResponse` and serializes it with the router's transformers\n **/ function transformTRPCResponse(config, itemOrItems) {\n return Array.isArray(itemOrItems) ? itemOrItems.map((item)=>transformTRPCResponseItem(config, item)) : transformTRPCResponseItem(config, itemOrItems);\n}\n// FIXME:\n// - the generics here are probably unnecessary\n// - the RPC-spec could probably be simplified to combine HTTP + WS\n/** @internal */ function transformResultInner(response, transformer) {\n if ('error' in response) {\n const error = transformer.deserialize(response.error);\n return {\n ok: false,\n error: {\n ...response,\n error\n }\n };\n }\n const result = {\n ...response.result,\n ...(!response.result.type || response.result.type === 'data') && {\n type: 'data',\n data: transformer.deserialize(response.result.data)\n }\n };\n return {\n ok: true,\n result\n };\n}\nclass TransformResultError extends Error {\n constructor(){\n super('Unable to transform response from server');\n }\n}\n/**\n * Transforms and validates that the result is a valid TRPCResponse\n * @internal\n */ function transformResult(response, transformer) {\n let result;\n try {\n // Use the data transformers on the JSON-response\n result = transformResultInner(response, transformer);\n } catch (err) {\n throw new TransformResultError();\n }\n // check that output of the transformers is a valid TRPCResponse\n if (!result.ok && (!isObject(result.error.error) || typeof result.error.error['code'] !== 'number')) {\n throw new TransformResultError();\n }\n if (result.ok && !isObject(result.result)) {\n throw new TransformResultError();\n }\n return result;\n}\n\nexport { defaultTransformer, getDataTransformer, transformResult, transformTRPCResponse };\n","const defaultFormatter = ({ shape })=>{\n return shape;\n};\n\nexport { defaultFormatter };\n","import { TRPCError } from './error/TRPCError.mjs';\nimport { isObject } from './utils.mjs';\n\n/** @internal */ const middlewareMarker = 'middlewareMarker';\n/**\n * @internal\n */ function createMiddlewareFactory() {\n function createMiddlewareInner(middlewares) {\n return {\n _middlewares: middlewares,\n unstable_pipe (middlewareBuilderOrFn) {\n const pipedMiddleware = '_middlewares' in middlewareBuilderOrFn ? middlewareBuilderOrFn._middlewares : [\n middlewareBuilderOrFn\n ];\n return createMiddlewareInner([\n ...middlewares,\n ...pipedMiddleware\n ]);\n }\n };\n }\n function createMiddleware(fn) {\n return createMiddlewareInner([\n fn\n ]);\n }\n return createMiddleware;\n}\n/**\n * Create a standalone middleware\n * @link https://trpc.io/docs/v11/server/middlewares#experimental-standalone-middlewares\n * @deprecated use `.unstable_concat()` instead\n */ const experimental_standaloneMiddleware = ()=>({\n create: createMiddlewareFactory()\n });\n/**\n * @internal\n * Please note, `trpc-openapi` uses this function.\n */ function createInputMiddleware(parse) {\n const inputMiddleware = async function inputValidatorMiddleware(opts) {\n let parsedInput;\n const rawInput = await opts.getRawInput();\n try {\n parsedInput = await parse(rawInput);\n } catch (cause) {\n throw new TRPCError({\n code: 'BAD_REQUEST',\n cause\n });\n }\n // Multiple input parsers\n const combinedInput = isObject(opts.input) && isObject(parsedInput) ? {\n ...opts.input,\n ...parsedInput\n } : parsedInput;\n return opts.next({\n input: combinedInput\n });\n };\n inputMiddleware._type = 'input';\n return inputMiddleware;\n}\n/**\n * @internal\n */ function createOutputMiddleware(parse) {\n const outputMiddleware = async function outputValidatorMiddleware({ next }) {\n const result = await next();\n if (!result.ok) {\n // pass through failures without validating\n return result;\n }\n try {\n const data = await parse(result.data);\n return {\n ...result,\n data\n };\n } catch (cause) {\n throw new TRPCError({\n message: 'Output validation failed',\n code: 'INTERNAL_SERVER_ERROR',\n cause\n });\n }\n };\n outputMiddleware._type = 'output';\n return outputMiddleware;\n}\n\nexport { createInputMiddleware, createMiddlewareFactory, createOutputMiddleware, experimental_standaloneMiddleware, middlewareMarker };\n","// zod / typeschema\nfunction getParseFn(procedureParser) {\n const parser = procedureParser;\n if (typeof parser === 'function') {\n // ParserValibotEsque (>= v0.31.0)\n // ParserCustomValidatorEsque\n return parser;\n }\n if (typeof parser.parseAsync === 'function') {\n // ParserZodEsque\n return parser.parseAsync.bind(parser);\n }\n if (typeof parser.parse === 'function') {\n // ParserZodEsque\n // ParserValibotEsque (< v0.13.0)\n return parser.parse.bind(parser);\n }\n if (typeof parser.validateSync === 'function') {\n // ParserYupEsque\n return parser.validateSync.bind(parser);\n }\n if (typeof parser.create === 'function') {\n // ParserSuperstructEsque\n return parser.create.bind(parser);\n }\n if (typeof parser.assert === 'function') {\n // ParserScaleEsque\n return (value)=>{\n parser.assert(value);\n return value;\n };\n }\n throw new Error('Could not find a validator fn');\n}\n\nexport { getParseFn };\n","import { TRPCError, getTRPCErrorFromUnknown } from './error/TRPCError.mjs';\nimport { createInputMiddleware, createOutputMiddleware, middlewareMarker } from './middleware.mjs';\nimport { getParseFn } from './parser.mjs';\nimport { mergeWithoutOverrides } from './utils.mjs';\n\nfunction createNewBuilder(def1, def2) {\n const { middlewares =[] , inputs , meta , ...rest } = def2;\n // TODO: maybe have a fn here to warn about calls\n return createBuilder({\n ...mergeWithoutOverrides(def1, rest),\n inputs: [\n ...def1.inputs,\n ...inputs ?? []\n ],\n middlewares: [\n ...def1.middlewares,\n ...middlewares\n ],\n meta: def1.meta && meta ? {\n ...def1.meta,\n ...meta\n } : meta ?? def1.meta\n });\n}\nfunction createBuilder(initDef = {}) {\n const _def = {\n procedure: true,\n inputs: [],\n middlewares: [],\n ...initDef\n };\n const builder = {\n _def,\n input (input) {\n const parser = getParseFn(input);\n return createNewBuilder(_def, {\n inputs: [\n input\n ],\n middlewares: [\n createInputMiddleware(parser)\n ]\n });\n },\n output (output) {\n const parser = getParseFn(output);\n return createNewBuilder(_def, {\n output,\n middlewares: [\n createOutputMiddleware(parser)\n ]\n });\n },\n meta (meta) {\n return createNewBuilder(_def, {\n meta\n });\n },\n use (middlewareBuilderOrFn) {\n // Distinguish between a middleware builder and a middleware function\n const middlewares = '_middlewares' in middlewareBuilderOrFn ? middlewareBuilderOrFn._middlewares : [\n middlewareBuilderOrFn\n ];\n return createNewBuilder(_def, {\n middlewares: middlewares\n });\n },\n unstable_concat (builder) {\n return createNewBuilder(_def, builder._def);\n },\n query (resolver) {\n return createResolver({\n ..._def,\n type: 'query'\n }, resolver);\n },\n mutation (resolver) {\n return createResolver({\n ..._def,\n type: 'mutation'\n }, resolver);\n },\n subscription (resolver) {\n return createResolver({\n ..._def,\n type: 'subscription'\n }, resolver);\n },\n experimental_caller (caller) {\n return createNewBuilder(_def, {\n caller\n });\n }\n };\n return builder;\n}\nfunction createResolver(_defIn, resolver) {\n const finalBuilder = createNewBuilder(_defIn, {\n resolver,\n middlewares: [\n async function resolveMiddleware(opts) {\n const data = await resolver(opts);\n return {\n marker: middlewareMarker,\n ok: true,\n data,\n ctx: opts.ctx\n };\n }\n ]\n });\n const _def = {\n ...finalBuilder._def,\n type: _defIn.type,\n experimental_caller: Boolean(finalBuilder._def.caller),\n meta: finalBuilder._def.meta,\n $types: null\n };\n const invoke = createProcedureCaller(finalBuilder._def);\n const callerOverride = finalBuilder._def.caller;\n if (!callerOverride) {\n return invoke;\n }\n const callerWrapper = async (...args)=>{\n return await callerOverride({\n args,\n invoke,\n _def: _def\n });\n };\n callerWrapper._def = _def;\n return callerWrapper;\n}\nconst codeblock = `\nThis is a client-only function.\nIf you want to call this function on the server, see https://trpc.io/docs/v11/server/server-side-calls\n`.trim();\nfunction createProcedureCaller(_def) {\n async function procedure(opts) {\n // is direct server-side call\n if (!opts || !('getRawInput' in opts)) {\n throw new Error(codeblock);\n }\n // run the middlewares recursively with the resolver as the last one\n async function callRecursive(callOpts = {\n index: 0,\n ctx: opts.ctx\n }) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const middleware = _def.middlewares[callOpts.index];\n const result = await middleware({\n ctx: callOpts.ctx,\n type: opts.type,\n path: opts.path,\n getRawInput: callOpts.getRawInput ?? opts.getRawInput,\n meta: _def.meta,\n input: callOpts.input,\n next (_nextOpts) {\n const nextOpts = _nextOpts;\n return callRecursive({\n index: callOpts.index + 1,\n ctx: nextOpts && 'ctx' in nextOpts ? {\n ...callOpts.ctx,\n ...nextOpts.ctx\n } : callOpts.ctx,\n input: nextOpts && 'input' in nextOpts ? nextOpts.input : callOpts.input,\n getRawInput: nextOpts && 'getRawInput' in nextOpts ? nextOpts.getRawInput : callOpts.getRawInput\n });\n }\n });\n return result;\n } catch (cause) {\n return {\n ok: false,\n error: getTRPCErrorFromUnknown(cause),\n marker: middlewareMarker\n };\n }\n }\n // there's always at least one \"next\" since we wrap this.resolver in a middleware\n const result = await callRecursive();\n if (!result) {\n throw new TRPCError({\n code: 'INTERNAL_SERVER_ERROR',\n message: 'No result from middlewares - did you forget to `return next()`?'\n });\n }\n if (!result.ok) {\n // re-throw original error\n throw result.error;\n }\n return result.data;\n }\n procedure._def = _def;\n // FIXME typecast shouldn't be needed - fixittt\n return procedure;\n}\n\nexport { createBuilder };\n","/**\n * The default check to see if we're in a server\n */ const isServerDefault = typeof window === 'undefined' || 'Deno' in window || // eslint-disable-next-line @typescript-eslint/dot-notation\nglobalThis.process?.env?.['NODE_ENV'] === 'test' || !!globalThis.process?.env?.['JEST_WORKER_ID'] || !!globalThis.process?.env?.['VITEST_WORKER_ID'];\n\nexport { isServerDefault };\n","import { createRecursiveProxy } from './createProxy.mjs';\nimport { defaultFormatter } from './error/formatter.mjs';\nimport { TRPCError, getTRPCErrorFromUnknown } from './error/TRPCError.mjs';\nimport { defaultTransformer } from './transformer.mjs';\nimport { mergeWithoutOverrides, omitPrototype, isFunction } from './utils.mjs';\n\nfunction isRouter(procedureOrRouter) {\n return procedureOrRouter._def && 'router' in procedureOrRouter._def;\n}\nconst emptyRouter = {\n _ctx: null,\n _errorShape: null,\n _meta: null,\n queries: {},\n mutations: {},\n subscriptions: {},\n errorFormatter: defaultFormatter,\n transformer: defaultTransformer\n};\n/**\n * Reserved words that can't be used as router or procedure names\n */ const reservedWords = [\n /**\n * Then is a reserved word because otherwise we can't return a promise that returns a Proxy\n * since JS will think that `.then` is something that exists\n */ 'then',\n /**\n * `fn.call()` and `fn.apply()` are reserved words because otherwise we can't call a function using `.call` or `.apply`\n */ 'call',\n 'apply'\n];\n/**\n * @internal\n */ function createRouterFactory(config) {\n function createRouterInner(input) {\n const reservedWordsUsed = new Set(Object.keys(input).filter((v)=>reservedWords.includes(v)));\n if (reservedWordsUsed.size > 0) {\n throw new Error('Reserved words used in `router({})` call: ' + Array.from(reservedWordsUsed).join(', '));\n }\n const procedures = omitPrototype({});\n function step(from, path = []) {\n const aggregate = omitPrototype({});\n for (const [key, item] of Object.entries(from ?? {})){\n if (isRouter(item)) {\n aggregate[key] = step(item._def.record, [\n ...path,\n key\n ]);\n continue;\n }\n if (!isProcedure(item)) {\n // RouterRecord\n aggregate[key] = step(item, [\n ...path,\n key\n ]);\n continue;\n }\n const newPath = [\n ...path,\n key\n ].join('.');\n if (procedures[newPath]) {\n throw new Error(`Duplicate key: ${newPath}`);\n }\n procedures[newPath] = item;\n aggregate[key] = item;\n }\n return aggregate;\n }\n const record = step(input);\n const _def = {\n _config: config,\n router: true,\n procedures,\n ...emptyRouter,\n record\n };\n return {\n ...record,\n _def,\n createCaller: createCallerFactory()({\n _def\n })\n };\n }\n return createRouterInner;\n}\nfunction isProcedure(procedureOrRouter) {\n return typeof procedureOrRouter === 'function';\n}\n/**\n * @internal\n */ function callProcedure(opts) {\n const { type , path } = opts;\n const proc = opts.procedures[path];\n if (!proc || !isProcedure(proc) || proc._def.type !== type && !opts.allowMethodOverride) {\n throw new TRPCError({\n code: 'NOT_FOUND',\n message: `No \"${type}\"-procedure on path \"${path}\"`\n });\n }\n /* istanbul ignore if -- @preserve */ if (proc._def.type !== type && opts.allowMethodOverride && proc._def.type === 'subscription') {\n throw new TRPCError({\n code: 'METHOD_NOT_SUPPORTED',\n message: `Method override is not supported for subscriptions`\n });\n }\n return proc(opts);\n}\nfunction createCallerFactory() {\n return function createCallerInner(router) {\n const _def = router._def;\n return function createCaller(ctxOrCallback, options) {\n return createRecursiveProxy(async ({ path , args })=>{\n const fullPath = path.join('.');\n if (path.length === 1 && path[0] === '_def') {\n return _def;\n }\n const procedure = _def.procedures[fullPath];\n let ctx = undefined;\n try {\n ctx = isFunction(ctxOrCallback) ? await Promise.resolve(ctxOrCallback()) : ctxOrCallback;\n return await procedure({\n path: fullPath,\n getRawInput: async ()=>args[0],\n ctx,\n type: procedure._def.type\n });\n } catch (cause) {\n options?.onError?.({\n ctx,\n error: getTRPCErrorFromUnknown(cause),\n input: args[0],\n path: fullPath,\n type: procedure._def.type\n });\n throw cause;\n }\n });\n };\n };\n}\nfunction mergeRouters(...routerList) {\n const record = mergeWithoutOverrides({}, ...routerList.map((r)=>r._def.record));\n const errorFormatter = routerList.reduce((currentErrorFormatter, nextRouter)=>{\n if (nextRouter._def._config.errorFormatter && nextRouter._def._config.errorFormatter !== defaultFormatter) {\n if (currentErrorFormatter !== defaultFormatter && currentErrorFormatter !== nextRouter._def._config.errorFormatter) {\n throw new Error('You seem to have several error formatters');\n }\n return nextRouter._def._config.errorFormatter;\n }\n return currentErrorFormatter;\n }, defaultFormatter);\n const transformer = routerList.reduce((prev, current)=>{\n if (current._def._config.transformer && current._def._config.transformer !== defaultTransformer) {\n if (prev !== defaultTransformer && prev !== current._def._config.transformer) {\n throw new Error('You seem to have several transformers');\n }\n return current._def._config.transformer;\n }\n return prev;\n }, defaultTransformer);\n const router = createRouterFactory({\n errorFormatter,\n transformer,\n isDev: routerList.every((r)=>r._def._config.isDev),\n allowOutsideOfServer: routerList.every((r)=>r._def._config.allowOutsideOfServer),\n isServer: routerList.every((r)=>r._def._config.isServer),\n $types: routerList[0]?._def._config.$types\n })(record);\n return router;\n}\n\nexport { callProcedure, createCallerFactory, createRouterFactory, mergeRouters };\n","import { defaultFormatter } from './error/formatter.mjs';\nimport { createMiddlewareFactory } from './middleware.mjs';\nimport { createBuilder } from './procedureBuilder.mjs';\nimport { isServerDefault } from './rootConfig.mjs';\nimport { createRouterFactory, mergeRouters, createCallerFactory } from './router.mjs';\nimport { getDataTransformer, defaultTransformer } from './transformer.mjs';\n\nclass TRPCBuilder {\n /**\n * Add a context shape as a generic to the root object\n * @link https://trpc.io/docs/v11/server/context\n */ context() {\n return new TRPCBuilder();\n }\n /**\n * Add a meta shape as a generic to the root object\n * @link https://trpc.io/docs/v11/quickstart\n */ meta() {\n return new TRPCBuilder();\n }\n /**\n * Create the root object\n * @link https://trpc.io/docs/v11/server/routers#initialize-trpc\n */ create(opts) {\n const config = {\n transformer: getDataTransformer(opts?.transformer ?? defaultTransformer),\n isDev: opts?.isDev ?? // eslint-disable-next-line @typescript-eslint/dot-notation\n globalThis.process?.env['NODE_ENV'] !== 'production',\n allowOutsideOfServer: opts?.allowOutsideOfServer ?? false,\n errorFormatter: opts?.errorFormatter ?? defaultFormatter,\n isServer: opts?.isServer ?? isServerDefault,\n /**\n * These are just types, they can't be used at runtime\n * @internal\n */ $types: null,\n experimental: opts?.experimental ?? {}\n };\n {\n // Server check\n const isServer = opts?.isServer ?? isServerDefault;\n if (!isServer && opts?.allowOutsideOfServer !== true) {\n throw new Error(`You're trying to use @trpc/server in a non-server environment. This is not supported by default.`);\n }\n }\n return {\n /**\n * Your router config\n * @internal\n */ _config: config,\n /**\n * Builder object for creating procedures\n * @link https://trpc.io/docs/v11/server/procedures\n */ procedure: createBuilder({\n meta: opts?.defaultMeta\n }),\n /**\n * Create reusable middlewares\n * @link https://trpc.io/docs/v11/server/middlewares\n */ middleware: createMiddlewareFactory(),\n /**\n * Create a router\n * @link https://trpc.io/docs/v11/server/routers\n */ router: createRouterFactory(config),\n /**\n * Merge Routers\n * @link https://trpc.io/docs/v11/server/merging-routers\n */ mergeRouters,\n /**\n * Create a server-side caller for a router\n * @link https://trpc.io/docs/v11/server/server-side-calls\n */ createCallerFactory: createCallerFactory()\n };\n }\n}\n/**\n * Builder to initialize the tRPC root object - use this exactly once per backend\n * @link https://trpc.io/docs/v11/quickstart\n */ const initTRPC = new TRPCBuilder();\n\nexport { initTRPC };\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport https from \"https\";\nimport { TRPCError } from \"@trpc/server\";\nimport axios from \"axios\";\nimport z from \"zod/v4\";\n\nexport async function fetchServerVersions({\n url,\n ottoPort = 3030,\n}: {\n url: string;\n ottoPort?: number;\n}) {\n const fmsInfo = await fetchFMSVersionInfo(url);\n const ottoInfo = await fetchOttoVersion({ url, ottoPort });\n return { fmsInfo, ottoInfo };\n}\n\nconst fmsInfoSchema = z.object({\n data: z.object({\n APIVersion: z.number().optional(),\n AcceptEARPassword: z.boolean().optional(),\n AcceptEncrypted: z.boolean().optional(),\n AcceptUnencrypted: z.boolean().optional(),\n AdminLocalAuth: z.string().optional(),\n AllowChangeUploadDBFolder: z.boolean().optional(),\n AutoOpenForUpload: z.boolean().optional(),\n DenyGuestAndAutoLogin: z.string().optional(),\n Hostname: z.string().optional(),\n IsAppleInternal: z.boolean().optional(),\n IsETS: z.boolean().optional(),\n PremisesType: z.string().optional(),\n ProductVersion: z.string().optional(),\n PublicKey: z.string().optional(),\n RequiresDBPasswords: z.boolean().optional(),\n ServerID: z.string().optional(),\n ServerVersion: z.string(),\n }),\n result: z.number(),\n});\n\nexport async function fetchFMSVersionInfo(url: string) {\n const fmsUrl = new URL(url);\n fmsUrl.pathname = \"/fmws/serverinfo\";\n\n const fmsInfoResult = await fetchWithoutSSL(fmsUrl.toString()).then((r) =>\n fmsInfoSchema.safeParse(r.data)\n );\n if (!fmsInfoResult.success) {\n console.error(\"fmsInfoResult.error\", fmsInfoResult.error.issues);\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Invalid FileMaker Server URL\",\n });\n }\n return fmsInfoResult.data.data;\n}\n\nconst ottoInfoSchema = z.object({\n Otto: z.object({\n version: z.string(),\n serverNickname: z.string().default(\"\"),\n isLicenseValid: z.boolean().optional(),\n }),\n migratorVersion: z.string().optional(),\n FileMakerServer: z.object({\n version: z.object({\n long: z.string(),\n short: z.string(),\n }),\n running: z.boolean().optional(),\n }),\n isMac: z.boolean().optional(),\n platform: z.string().optional(),\n host: z.string().optional(),\n});\n\nconst ottoInfoResponseSchema = z.object({\n response: ottoInfoSchema,\n});\n\nexport async function fetchOttoVersion({\n url,\n ottoPort = 3030,\n}: {\n url: string;\n ottoPort?: number | null;\n}): Promise<z.infer<typeof ottoInfoSchema> | null> {\n let ottoInfo = await fetchOtto4Version(url);\n if (!ottoInfo) ottoInfo = await fetchOtto3Version(url, ottoPort);\n return ottoInfo;\n}\n\nasync function fetchOtto4Version(url: string) {\n try {\n const otto4Url = new URL(url);\n otto4Url.pathname = \"/otto/api/info\";\n const otto4Info = await fetchWithoutSSL(otto4Url.toString()).then((r) => {\n return ottoInfoResponseSchema.parse(r.data).response;\n });\n return otto4Info;\n } catch (error) {\n console.log(\"unable to fetch otto4 info, trying otto3\");\n return null;\n }\n}\n\nasync function fetchOtto3Version(url: string, ottoPort: number | null) {\n try {\n const otto3Url = new URL(url);\n otto3Url.port = ottoPort ? ottoPort.toString() : \"3030\";\n otto3Url.pathname = \"/api/otto/info\";\n const ottoInfo = await fetchWithoutSSL(otto3Url.toString()).then((res) => {\n return ottoInfoSchema.parse(res.data);\n });\n return ottoInfo;\n } catch (error) {\n if (error instanceof Error) {\n console.error(\"otto3 fetch error\", error.message);\n }\n return null;\n }\n}\n\nasync function fetchWithoutSSL(url: string) {\n const agent = new https.Agent({\n rejectUnauthorized: false,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n const result = await axios.get(url, {\n validateStatus: null,\n headers: { Connection: \"close\" },\n httpsAgent: agent,\n timeout: 10000,\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n}\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport type { OttoAPIKey } from \"@proofkit/fmdapi\";\nimport { type ValueListsOptions } from \"@proofkit/typegen/config\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport dotenv from \"dotenv\";\nimport { z } from \"zod/v4\";\n\nimport { addLayout, getExistingSchemas } from \"~/generators/fmdapi.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings, type Settings } from \"~/utils/parseSettings.js\";\nimport { commonFileMakerLayoutPrefixes, getLayouts } from \"../fmdapi.js\";\nimport { abortIfCancel } from \"../utils.js\";\n\nexport const runAddSchemaAction = async (opts?: {\n projectDir?: string;\n settings: Settings;\n sourceName?: string;\n layoutName?: string;\n schemaName?: string;\n valueLists?: ValueListsOptions;\n}) => {\n const settings = getSettings();\n const projectDir = state.projectDir;\n let sourceName = opts?.sourceName;\n if (!sourceName) {\n // if there is more than one fm data source, we need to prompt for which one to add the layout to\n if (settings.dataSources.filter((s) => s.type === \"fm\").length > 1) {\n const dataSourceName = await p.select({\n message: \"Which FileMaker data source do you want to add a layout to?\",\n options: settings.dataSources\n .filter((s) => s.type === \"fm\")\n .map((s) => ({ label: s.name, value: s.name })),\n });\n if (p.isCancel(dataSourceName)) {\n p.cancel();\n process.exit(0);\n }\n sourceName = z.string().parse(dataSourceName);\n }\n } else {\n sourceName = opts?.sourceName;\n }\n\n if (!sourceName) sourceName = \"filemaker\";\n\n const dataSource = settings.dataSources\n .filter((s) => s.type === \"fm\")\n .find((s) => s.name === sourceName);\n if (!dataSource)\n throw new Error(\n `FileMaker data source ${sourceName} not found in your ProofKit config`\n );\n\n const spinner = p.spinner();\n spinner.start(\"Loading layouts from your FileMaker file...\");\n if (settings.envFile) {\n dotenv.config({\n path: path.join(projectDir, settings.envFile),\n });\n }\n\n const dataApiKey = process.env[dataSource.envNames.apiKey]! as OttoAPIKey;\n const fmFile = process.env[dataSource.envNames.database]!;\n const server = process.env[dataSource.envNames.server]!;\n\n const layouts = await getLayouts({\n dataApiKey,\n fmFile,\n server,\n });\n\n const existingConfigResults = getExistingSchemas({\n projectDir,\n dataSourceName: sourceName,\n });\n\n const existingLayouts = existingConfigResults\n .map((s) => s.layout)\n .filter(Boolean);\n\n const existingSchemas = existingConfigResults\n .map((s) => s.schemaName)\n .filter(Boolean);\n\n spinner.stop(\"Loaded layouts from your FileMaker file\");\n\n if (existingLayouts.length > 0) {\n p.note(\n existingLayouts.join(\"\\n\"),\n \"Detected existing layouts in your project\"\n );\n }\n\n // list other common layout names to exclude\n existingLayouts.push(\"-\");\n\n let passedInLayoutName: string | undefined = opts?.layoutName;\n if (\n passedInLayoutName === \"\" ||\n !layouts.includes(passedInLayoutName ?? \"\")\n ) {\n passedInLayoutName = undefined;\n }\n\n const selectedLayout =\n passedInLayoutName ??\n abortIfCancel(\n await p.select({\n message: `Select a new layout to read data from`,\n maxItems: 10,\n options: layouts\n .filter((layout) => !existingLayouts.includes(layout))\n .map((layout) => ({\n label: layout,\n value: layout,\n })),\n })\n );\n\n const defaultSchemaName = getDefaultSchemaName(selectedLayout);\n const schemaName =\n opts?.schemaName ||\n abortIfCancel(\n await p.text({\n message: `Enter a friendly name for the new schema.\\n${chalk.dim(\"This will the name by which you refer to this layout in your codebase\")}`,\n // initialValue: selectedLayout,\n defaultValue: defaultSchemaName,\n placeholder: defaultSchemaName,\n validate: (input) => {\n if (input === \"\") return; // allow empty input for the default value\n // ensure the input is a valid JS variable name\n if (!/^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(input)) {\n return \"Name must consist of only alphanumeric characters, '_', and must not start with a number\";\n }\n if (existingSchemas.includes(input)) {\n return \"Schema name must be unique\";\n }\n return;\n },\n })\n ).toString();\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const valueLists =\n opts?.valueLists ??\n ((await p.select({\n message: `Should we use value lists on this layout?\\n${chalk.dim(\n \"This will allow fields that contain a value list to be auto-completed in typescript and also validated to prevent incorrect values\"\n )}`,\n options: [\n {\n label: \"Yes, but allow empty fields\",\n value: \"allowEmpty\",\n hint: \"Empty fields or values that don't match the value list will be converted to an empty string\",\n },\n {\n label: \"Yes; empty values should fail validation\",\n value: \"strict\",\n hint: \"Empty fields or values that don't match the value list will cause validation to fail\",\n },\n {\n label: \"No, ignore value lists\",\n value: \"ignore\",\n hint: \"Fields will just be typed as strings\",\n },\n ],\n })) as ValueListsOptions);\n\n const valueListsValidated = z\n .enum([\"ignore\", \"allowEmpty\", \"strict\"])\n .catch(\"ignore\")\n .parse(valueLists);\n\n await addLayout({\n runCodegen: true,\n projectDir,\n dataSourceName: sourceName,\n schemas: [\n {\n layoutName: selectedLayout,\n schemaName,\n valueLists: valueListsValidated,\n },\n ],\n });\n\n p.outro(\n `Layout \"${selectedLayout}\" added to your project as \"${schemaName}\"`\n );\n};\n\nexport const makeAddSchemaCommand = () => {\n const addSchemaCommand = new Command(\"layout\")\n .alias(\"schema\")\n .description(\"Add a new layout to your fmschema file\")\n .action(async (opts: { settings: Settings }) => {\n const settings = opts.settings;\n\n await runAddSchemaAction({ settings });\n });\n\n return addSchemaCommand;\n};\n\nfunction getDefaultSchemaName(layout: string) {\n let schemaName = layout.replace(/[-\\s]/g, \"_\");\n for (const prefix of commonFileMakerLayoutPrefixes) {\n if (schemaName.startsWith(prefix)) {\n schemaName = schemaName.replace(prefix, \"\");\n }\n }\n return schemaName;\n}\n","import * as p from \"@clack/prompts\";\n\nimport {\n createDataAPIKeyWithCredentials,\n getDeploymentStatus,\n startDeployment,\n} from \"~/cli/ottofms.js\";\n\nexport const filename = \"ProofKitDemo.fmp12\";\n\nexport async function deployDemoFile({\n url,\n token,\n operation,\n}: {\n url: URL;\n token: string;\n operation: \"install\" | \"replace\";\n}): Promise<{ apiKey: string }> {\n const deploymentJSON = {\n scheduled: false,\n label: \"Install ProofKit Demo\",\n deployments: [\n {\n name: \"Install ProofKit Demo\",\n source: {\n type: \"url\",\n url: \"https://proofkit.dev/proofkit-demo/manifest.json\",\n },\n fileOperations: [\n {\n target: {\n fileName: filename,\n },\n operation,\n source: {\n fileName: \"ProofKitDemo.fmp12\",\n },\n location: {\n folder: \"default\",\n subFolder: \"\",\n },\n },\n ],\n concurrency: 1,\n options: {\n closeFilesAfterBuild: false,\n keepFilesClosedAfterComplete: false,\n transferContainerData: false,\n },\n },\n ],\n abortRemaining: false,\n };\n\n const spinner = p.spinner();\n spinner.start(\"Deploying ProofKit Demo file...\");\n\n const {\n response: { subDeploymentIds },\n } = await startDeployment({\n payload: deploymentJSON,\n url,\n token,\n });\n\n const deploymentId = subDeploymentIds[0]!;\n\n while (true) {\n // wait 2.5 seconds, then poll the status again\n await new Promise((resolve) => setTimeout(resolve, 2500));\n\n const {\n response: { status, running },\n } = await getDeploymentStatus({\n url,\n token,\n deploymentId,\n });\n if (!running) {\n if (status !== \"complete\") throw new Error(\"Deployment didn't complete\");\n break;\n }\n }\n\n const { apiKey } = await createDataAPIKeyWithCredentials({\n filename,\n username: \"admin\",\n password: \"admin\",\n url,\n });\n\n spinner.stop();\n\n return { apiKey };\n}\n","import * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { SemVer } from \"semver\";\nimport { type z } from \"zod/v4\";\n\nimport {\n createDataAPIKey,\n getOttoFMSToken,\n listAPIKeys,\n listFiles,\n} from \"~/cli/ottofms.js\";\nimport { abortIfCancel } from \"~/cli/utils.js\";\nimport { addToFmschemaConfig } from \"~/generators/fmdapi.js\";\nimport { fetchServerVersions } from \"~/helpers/version-fetcher.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { addToEnv } from \"~/utils/addToEnvs.js\";\nimport {\n getSettings,\n setSettings,\n type dataSourceSchema,\n} from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { validateAppName } from \"~/utils/validateAppName.js\";\nimport { runAddSchemaAction } from \"../fmschema.js\";\nimport { deployDemoFile, filename } from \"./deploy-demo-file.js\";\n\nexport async function promptForFileMakerDataSource({\n projectDir,\n ...opts\n}: {\n projectDir: string;\n name?: string;\n server?: string;\n adminApiKey?: string;\n fileName?: string;\n dataApiKey?: string;\n layoutName?: string;\n schemaName?: string;\n}) {\n const settings = getSettings();\n\n const existingFmDataSourceNames = settings.dataSources\n .filter((ds) => ds.type === \"fm\")\n .map((ds) => ds.name);\n\n const server = await getValidFileMakerServerUrl(opts.server);\n\n const canDoBrowserLogin =\n server.ottoVersion && server.ottoVersion.compare(new SemVer(\"4.7.0\")) > 0;\n\n if (!canDoBrowserLogin && !opts.adminApiKey) {\n return p.cancel(\n \"OttoFMS 4.7.0 or later is required to auto-login with this CLI. Please install/upgrade OttoFMS on your server, or pass an Admin API key with the --adminApiKey flag then try again\"\n );\n }\n\n const token =\n opts.adminApiKey || (await getOttoFMSToken({ url: server.url })).token;\n\n const fileList = await listFiles({ url: server.url, token });\n const demoFileExists = fileList\n .map((f) => f.filename.replace(\".fmp12\", \"\"))\n .includes(filename.replace(\".fmp12\", \"\"));\n let fmFile = opts.fileName;\n while (true) {\n fmFile =\n opts.fileName ||\n abortIfCancel(\n await p.select({\n message: `Which file would you like to connect to? ${chalk.dim(`(TIP: Select the file where your data is stored)`)}`,\n maxItems: 10,\n options: [\n {\n value: \"$deployDemoFile\",\n label: \"Deploy NEW ProofKit Demo File\",\n hint: \"Use OttoFMS to deploy a new file for testing\",\n },\n ...fileList\n .sort((a, b) => a.filename.localeCompare(b.filename))\n .map((file) => ({\n value: file.filename,\n label: file.filename,\n })),\n ],\n })\n );\n\n if (fmFile !== \"$deployDemoFile\") break;\n\n if (demoFileExists) {\n const replace = abortIfCancel(\n await p.confirm({\n message:\n \"The demo file already exists, do you want to replace it with a fresh copy?\",\n active: \"Yes, replace\",\n inactive: \"No, select another file\",\n initialValue: false,\n })\n );\n if (replace) break;\n } else {\n break;\n }\n }\n\n if (!fmFile) throw new Error(\"No file selected\");\n\n let dataApiKey = opts.dataApiKey;\n if (fmFile === \"$deployDemoFile\") {\n const { apiKey } = await deployDemoFile({\n url: server.url,\n token,\n operation: demoFileExists ? \"replace\" : \"install\",\n });\n dataApiKey = apiKey;\n fmFile = filename;\n opts.layoutName = opts.layoutName ?? \"API_Contacts\";\n opts.schemaName = opts.schemaName ?? \"Contacts\";\n } else {\n const allApiKeys = await listAPIKeys({ url: server.url, token });\n const thisFileApiKeys = allApiKeys.filter((key) => key.database === fmFile);\n\n if (!dataApiKey && thisFileApiKeys.length > 0) {\n const selectedKey = abortIfCancel(\n await p.select({\n message: `Which OttoFMS Data API key would you like to use? ${chalk.dim(`(This determines the access that you'll have to the data in this file)`)}`,\n options: [\n ...thisFileApiKeys.map((key) => ({\n value: key.key,\n label: `${chalk.bold(key.label)} - ${key.user}`,\n hint: `${key.key.slice(0, 5)}...${key.key.slice(-4)}`,\n })),\n {\n value: \"create\",\n label: \"Create a new API key\",\n hint: \"Requires FileMaker credentials for this file\",\n },\n ],\n })\n );\n if (typeof selectedKey !== \"string\") throw new Error(\"Invalid key\");\n if (selectedKey !== \"create\") dataApiKey = selectedKey;\n }\n\n if (!dataApiKey) {\n // data api was not provided, prompt to create a new one\n const resp = await createDataAPIKey({\n filename: fmFile,\n url: server.url,\n });\n dataApiKey = resp.apiKey;\n }\n }\n if (!dataApiKey) throw new Error(\"No API key\");\n\n const name =\n existingFmDataSourceNames.length === 0\n ? \"filemaker\"\n : (opts.name ??\n abortIfCancel(\n await p.text({\n message: \"What do you want to call this data source?\",\n validate: (value) => {\n if (value === \"filemaker\") return \"That name is reserved\";\n\n // require name to be unique\n if (existingFmDataSourceNames?.includes(value))\n return \"That name is already in use in this project, pick something unique\";\n\n // require name to be alphanumeric, lowercase, etc\n return validateAppName(value);\n },\n })\n ));\n\n const newDataSource: z.infer<typeof dataSourceSchema> = {\n type: \"fm\",\n name,\n envNames:\n name === \"filemaker\"\n ? {\n database: \"FM_DATABASE\",\n server: \"FM_SERVER\",\n apiKey: \"OTTO_API_KEY\",\n }\n : {\n database: `${name.toUpperCase()}_FM_DATABASE`,\n server: `${name.toUpperCase()}_FM_SERVER`,\n apiKey: `${name.toUpperCase()}_OTTO_API_KEY`,\n },\n };\n\n const project = getNewProject(projectDir);\n\n const schemaFile = await addToEnv({\n projectDir,\n project,\n envs: [\n {\n name: newDataSource.envNames.database,\n zodValue: `z.string().endsWith(\".fmp12\")`,\n defaultValue: fmFile,\n type: \"server\",\n },\n {\n name: newDataSource.envNames.server,\n zodValue: `z.string().url()`,\n type: \"server\",\n defaultValue: server.url.origin,\n },\n {\n name: newDataSource.envNames.apiKey,\n zodValue: `z.string().startsWith(\"dk_\") as z.ZodType<OttoAPIKey>`,\n type: \"server\",\n defaultValue: dataApiKey,\n },\n ],\n });\n\n const fmdapiImport = schemaFile.getImportDeclaration(\n (imp) => imp.getModuleSpecifierValue() === \"@proofkit/fmdapi\"\n );\n if (fmdapiImport) {\n fmdapiImport\n .getNamedImports()\n .find((imp) => imp.getName() === \"OttoAPIKey\")\n ?.remove();\n fmdapiImport.addNamedImport({ name: \"OttoAPIKey\", isTypeOnly: true });\n } else {\n schemaFile.addImportDeclaration({\n namedImports: [{ name: \"OttoAPIKey\", isTypeOnly: true }],\n moduleSpecifier: \"@proofkit/fmdapi\",\n });\n }\n\n addPackageDependency({\n projectDir,\n dependencies: [\"@proofkit/fmdapi\"],\n devMode: false,\n });\n\n settings.dataSources.push(newDataSource);\n setSettings(settings);\n\n addToFmschemaConfig({\n dataSourceName: name,\n envNames: name === \"filemaker\" ? undefined : newDataSource.envNames,\n });\n\n await formatAndSaveSourceFiles(project);\n\n // now prompt for layout\n await runAddSchemaAction({\n settings,\n sourceName: name,\n projectDir,\n layoutName: opts.layoutName,\n schemaName: opts.schemaName,\n valueLists: \"allowEmpty\",\n });\n}\n\nasync function getValidFileMakerServerUrl(\n defaultServerUrl?: string | undefined\n): Promise<{\n url: URL;\n fmsVersion: SemVer;\n ottoVersion: SemVer | null;\n}> {\n const spinner = p.spinner();\n let url: URL | null = null;\n let fmsVersion: SemVer | null = null;\n let ottoVersion: SemVer | null = null;\n\n while (fmsVersion === null) {\n const serverUrl =\n defaultServerUrl ??\n abortIfCancel(\n await p.text({\n message: `What is the URL of your FileMaker Server?\\n${chalk.cyan(\"TIP: You can copy any valid path on the server and paste it here.\")}`,\n validate: (value) => {\n try {\n // try to make sure the url is https\n if (!value.startsWith(\"https://\")) {\n if (value.startsWith(\"http://\")) {\n value = value.replace(\"http://\", \"https://\");\n } else {\n value = `https://${value}`;\n }\n }\n\n // try to make sure the url is valid\n new URL(value);\n return;\n } catch {\n return \"Please enter a valid URL\";\n }\n },\n })\n );\n\n try {\n url = new URL(serverUrl);\n } catch {\n p.log.error(`Invalid URL: ${serverUrl.toString()}`);\n continue;\n }\n\n spinner.start(\"Validating Server URL...\");\n\n // check for FileMaker and Otto versions\n const { fmsInfo, ottoInfo } = await fetchServerVersions({\n url: url.origin,\n });\n\n spinner.stop();\n\n fmsVersion = new SemVer(fmsInfo.ServerVersion.split(\" \")[0]!) ?? null;\n ottoVersion = new SemVer(ottoInfo?.Otto.version ?? \"\") ?? null;\n defaultServerUrl = undefined;\n }\n\n if (url === null) throw new Error(\"Unable to get FileMaker Server URL\");\n\n p.note(`🎉 FileMaker Server version ${fmsVersion} detected \\n\n ${!!ottoVersion ? `🎉 OttoFMS version ${ottoVersion} detected` : \"❌ OttoFMS not detected\"}`);\n\n return { url, ottoVersion, fmsVersion };\n}\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { execa } from \"execa\";\nimport fs from \"fs-extra\";\nimport { type PackageJson } from \"type-fest\";\n\nimport { DEFAULT_APP_NAME } from \"~/consts.js\";\nimport { addAuth } from \"~/generators/auth.js\";\nimport { runCodegenCommand } from \"~/generators/fmdapi.js\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { createBareProject } from \"~/helpers/createProject.js\";\nimport { initializeGit } from \"~/helpers/git.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { logNextSteps } from \"~/helpers/logNextSteps.js\";\nimport { setImportAlias } from \"~/helpers/setImportAlias.js\";\nimport { getRegistryUrl, shadcnInstall } from \"~/helpers/shadcn-cli.js\";\nimport { buildPkgInstallerMap } from \"~/installers/index.js\";\nimport { ensureWebViewerAddonInstalled } from \"~/installers/proofkit-webviewer.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\nimport { getVersion } from \"~/utils/getProofKitVersion.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { parseNameAndPath } from \"~/utils/parseNameAndPath.js\";\nimport {\n getSettings,\n setSettings,\n type Settings,\n} from \"~/utils/parseSettings.js\";\nimport { validateAppName } from \"~/utils/validateAppName.js\";\nimport { promptForFileMakerDataSource } from \"./add/data-source/filemaker.js\";\nimport { abortIfCancel } from \"./utils.js\";\n\ninterface CliFlags {\n noGit: boolean;\n noInstall: boolean;\n default: boolean;\n importAlias: string;\n server?: string;\n adminApiKey?: string;\n fileName: string;\n layoutName: string;\n schemaName: string;\n dataApiKey: string;\n fmServerURL: string;\n auth: \"none\" | \"next-auth\" | \"clerk\";\n dataSource?: \"filemaker\" | \"none\" | \"supabase\";\n /** @internal UI library selection; hidden flag */\n ui?: \"shadcn\" | \"mantine\";\n /** @internal Used in CI. */\n CI: boolean;\n /** @internal Used in CI. */\n tailwind: boolean;\n /** @internal Used in CI. */\n trpc: boolean;\n /** @internal Used in CI. */\n prisma: boolean;\n /** @internal Used in CI. */\n drizzle: boolean;\n /** @internal Used in CI. */\n appRouter: boolean;\n}\n\nconst defaultOptions: CliFlags = {\n noGit: false,\n noInstall: false,\n default: false,\n CI: false,\n tailwind: false,\n trpc: false,\n prisma: false,\n drizzle: false,\n importAlias: \"~/\",\n appRouter: false,\n auth: \"none\",\n server: undefined,\n fileName: \"\",\n layoutName: \"\",\n schemaName: \"\",\n dataApiKey: \"\",\n fmServerURL: \"\",\n dataSource: undefined,\n ui: \"shadcn\",\n};\n\nexport const makeInitCommand = () => {\n const initCommand = new Command(\"init\")\n .description(\"Create a new project with ProofKit\")\n .argument(\n \"[dir]\",\n \"The name of the application, as well as the name of the directory to create\"\n )\n .option(\"--appType [type]\", \"The type of app to create\", undefined)\n // hidden UI selector; default is shadcn; pass --ui mantine to opt-in legacy Mantine templates\n .option(\"--ui [ui]\", undefined, undefined)\n .option(\"--server [url]\", \"The URL of your FileMaker Server\", undefined)\n .option(\n \"--adminApiKey [key]\",\n \"Admin API key for OttoFMS. If provided, will skip login prompt\",\n undefined\n )\n .option(\n \"--fileName [name]\",\n \"The name of the FileMaker file to use for the web app\",\n undefined\n )\n .option(\n \"--layoutName [name]\",\n \"The name of the FileMaker layout to use for the web app\",\n undefined\n )\n .option(\n \"--schemaName [name]\",\n \"The name for the generated layout client in your schemas\",\n undefined\n )\n .option(\n \"--dataApiKey [key]\",\n \"The API key to use for the FileMaker Data API\",\n undefined\n )\n .option(\n \"--auth [type]\",\n \"The authentication provider to use for the web app\",\n undefined\n )\n .option(\n \"--dataSource [type]\",\n \"The data source to use for the web app (filemaker or none)\",\n undefined\n )\n .option(\n \"--noGit\",\n \"Explicitly tell the CLI to not initialize a new git repo in the project\",\n false\n )\n .option(\n \"--noInstall\",\n \"Explicitly tell the CLI to not run the package manager's install command\",\n false\n )\n .addOption(ciOption)\n .addOption(debugOption)\n .action(runInit);\n\n initCommand.hook(\"preAction\", (cmd) => {\n initProgramState(cmd.opts());\n state.baseCommand = \"init\";\n });\n\n return initCommand;\n};\n\nasync function askForAuth({ projectDir }: { projectDir: string }) {\n const authType = \"none\" as \"none\" | \"clerk\" | \"fmaddon\";\n if (authType === \"clerk\") {\n await addAuth({\n options: { type: \"clerk\" },\n projectDir,\n noInstall: true,\n });\n } else if (authType === \"fmaddon\") {\n await addAuth({\n options: { type: \"fmaddon\" },\n projectDir,\n noInstall: true,\n });\n }\n}\n\ntype ProofKitPackageJSON = PackageJson & {\n proofkitMetadata?: {\n initVersion: string;\n };\n};\n\nexport const runInit = async (name?: string, opts?: CliFlags) => {\n const pkgManager = getUserPkgManager();\n const cliOptions = opts ?? defaultOptions;\n // capture ui choice early into state\n state.ui = (cliOptions.ui ?? \"shadcn\") as \"shadcn\" | \"mantine\";\n\n const projectName =\n name ||\n abortIfCancel(\n await p.text({\n message: \"What will your project be called?\",\n defaultValue: DEFAULT_APP_NAME,\n validate: validateAppName,\n })\n ).toString();\n\n if (!state.appType) {\n state.appType = state.ci\n ? \"browser\"\n : (abortIfCancel(\n await p.select({\n message: \"What kind of app do you want to build?\",\n options: [\n {\n value: \"browser\",\n label: \"Web App for Browsers\",\n hint: \"Uses Next.js, will require hosting\",\n },\n {\n value: \"webviewer\",\n label: \"FileMaker Web Viewer (beta)\",\n hint: \"Uses Vite, can be embedded in FileMaker or hosted\",\n },\n ],\n })\n ) as \"browser\" | \"webviewer\");\n }\n\n const usePackages = buildPkgInstallerMap();\n\n // e.g. dir/@mono/app returns [\"@mono/app\", \"dir/app\"]\n const [scopedAppName, appDir] = parseNameAndPath(projectName);\n\n const projectDir = await createBareProject({\n projectName: appDir,\n scopedAppName,\n packages: usePackages,\n noInstall: cliOptions.noInstall,\n appRouter: cliOptions.appRouter,\n });\n setImportAlias(projectDir, \"@/\");\n\n // Write name to package.json\n const pkgJson = fs.readJSONSync(\n path.join(projectDir, \"package.json\")\n ) as ProofKitPackageJSON;\n pkgJson.name = scopedAppName;\n pkgJson.proofkitMetadata = { initVersion: getVersion() };\n\n // ? Bun doesn't support this field (yet)\n if (pkgManager !== \"bun\") {\n const { stdout } = await execa(pkgManager, [\"-v\"], {\n cwd: projectDir,\n });\n pkgJson.packageManager = `${pkgManager}@${stdout.trim()}`;\n }\n\n fs.writeJSONSync(path.join(projectDir, \"package.json\"), pkgJson, {\n spaces: 2,\n });\n\n // Ensure proofkit.json exists with initial settings including ui\n const initialSettings: Settings =\n state.ui === \"mantine\"\n ? {\n appType: state.appType ?? \"browser\",\n ui: \"mantine\",\n auth: { type: \"none\" },\n envFile: \".env\",\n dataSources: [],\n tanstackQuery: false,\n replacedMainPage: false,\n appliedUpgrades: [\"cursorRules\"],\n reactEmail: false,\n reactEmailServer: false,\n registryTemplates: [],\n }\n : {\n appType: state.appType ?? \"browser\",\n ui: \"shadcn\",\n envFile: \".env\",\n dataSources: [],\n replacedMainPage: false,\n registryTemplates: [],\n };\n const { registryUrl } = setSettings(initialSettings);\n\n // for webviewer apps FM is required, so don't ask\n let dataSource =\n state.appType === \"webviewer\" ? \"filemaker\" : cliOptions.dataSource;\n if (!dataSource) {\n dataSource = abortIfCancel(\n await p.select({\n message: \"Do you want to connect to a FileMaker Database now?\",\n options: [\n {\n value: \"filemaker\",\n label: \"Yes\",\n hint: \"Requires OttoFMS and Admin Server credentials\",\n },\n // { value: \"supabase\", label: \"Supabase\" },\n {\n value: \"none\",\n label: \"No\",\n hint: \"You'll be able to add a new data source later\",\n },\n ],\n })\n ) as \"filemaker\" | \"none\" | \"supabase\";\n }\n\n if (dataSource === \"filemaker\") {\n // later will split this flow to ask for which kind of data souce, but for now it's just FM\n await promptForFileMakerDataSource({\n projectDir,\n name: \"filemaker\",\n adminApiKey: cliOptions.adminApiKey,\n dataApiKey: cliOptions.dataApiKey,\n server: cliOptions.server,\n fileName: cliOptions.fileName,\n layoutName: cliOptions.layoutName,\n schemaName: cliOptions.schemaName,\n });\n\n // Now that we have the data source set up, check for webviewer layouts if needed\n if (state.appType === \"webviewer\") {\n await ensureWebViewerAddonInstalled();\n }\n } else if (dataSource === \"supabase\") {\n // TODO: add supabase\n }\n\n await askForAuth({ projectDir });\n\n await installDependencies({ projectDir });\n\n if (state.ui === \"shadcn\") {\n await shadcnInstall([\n `${getRegistryUrl()}/r/components/mode-toggle`,\n \"sonner\",\n \"button\",\n ]);\n }\n\n await runCodegenCommand();\n\n if (!cliOptions.noGit) {\n await initializeGit(projectDir);\n }\n\n logNextSteps({\n projectName: appDir,\n noInstall: cliOptions.noInstall,\n });\n};\n","import gradient from \"gradient-string\";\n\nimport { TITLE_TEXT } from \"~/consts.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\n\nconst proofTheme = {\n purple: \"#89216B\",\n lightPurple: \"#D15ABB\",\n orange: \"#FF595E\",\n};\n\nexport const proofGradient = gradient(Object.values(proofTheme));\nexport const renderTitle = () => {\n // resolves weird behavior where the ascii is offset\n const pkgManager = getUserPkgManager();\n if (pkgManager === \"yarn\" || pkgManager === \"pnpm\") {\n console.log(\"\");\n }\n console.log(proofGradient.multiline(TITLE_TEXT));\n};\n","import * as p from \"@clack/prompts\";\nimport { Command, Option } from \"commander\";\n\nimport { installReactEmail } from \"~/installers/react-email.js\";\n\nexport const runAddReactEmailCommand = async ({\n noInstall,\n installServerFiles,\n}: { noInstall?: boolean; installServerFiles?: boolean } = {}) => {\n const spinner = p.spinner();\n spinner.start(\"Adding React Email\");\n await installReactEmail({ noInstall, installServerFiles });\n spinner.stop(\"React Email added\");\n};\n\nexport const makeAddReactEmailCommand = () => {\n const addReactEmailCommand = new Command(\"react-email\")\n .description(\"Add React Email scaffolding to your project\")\n .addOption(\n new Option(\n \"--noInstall\",\n \"Do not run your package manager install command\"\n ).default(false)\n )\n .option(\n \"--installServerFiles\",\n \"Also scaffold provider-specific server email files\",\n false\n )\n .action((args: { noInstall?: boolean; installServerFiles?: boolean }) =>\n runAddReactEmailCommand(args)\n );\n\n return addReactEmailCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\n\nimport { injectTanstackQuery } from \"~/generators/tanstack-query.js\";\n\nexport const runAddTanstackQueryCommand = async () => {\n const spinner = p.spinner();\n spinner.start(\"Adding Tanstack Query\");\n await injectTanstackQuery();\n spinner.stop(\"Tanstack Query added\");\n};\n\nexport const makeAddTanstackQueryCommand = () => {\n const addTanstackQueryCommand = new Command(\"tanstack-query\")\n .description(\"Add Tanstack Query to your project\")\n .action(runAddTanstackQueryCommand);\n\n return addTanstackQueryCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { z } from \"zod/v4\";\n\nimport { addAuth } from \"~/generators/auth.js\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { abortIfCancel } from \"../utils.js\";\n\nexport async function runAddAuthAction() {\n const settings = getSettings();\n if (settings.appType !== \"browser\") {\n return p.cancel(`Auth is not supported for your app type.`);\n }\n if (settings.ui === \"shadcn\") {\n return p.cancel(\n \"Adding auth is not yet supported for shadcn-based projects.\"\n );\n }\n\n const authType =\n state.authType ??\n abortIfCancel(\n await p.select({\n message: \"What auth provider do you want to use?\",\n options: [\n {\n value: \"fmaddon\",\n label: \"FM Add-on Auth\",\n hint: \"Self-hosted auth with email/password\",\n },\n {\n value: \"clerk\",\n label: \"Clerk\",\n hint: \"Hosted auth service with many providers\",\n },\n ],\n })\n );\n\n const type = z.enum([\"clerk\", \"fmaddon\"]).parse(authType);\n state.authType = type;\n\n if (type === \"fmaddon\") {\n const emailProviderAnswer =\n (state.emailProvider\n ? state.emailProvider\n : state.ci\n ? \"none\"\n : undefined) ??\n abortIfCancel(\n await p.select({\n message: `What email provider do you want to use?\\n${chalk.dim(\n \"Used to send email verification codes. If you skip this, the codes will be displayed here in your terminal.\"\n )}`,\n options: [\n {\n label: \"Resend\",\n value: \"resend\",\n hint: \"Great dev experience\",\n },\n {\n label: \"Plunk\",\n value: \"plunk\",\n hint: \"Cheapest for <20k emails/mo, self-hostable\",\n },\n { label: \"Other / I'll do it myself later\", value: \"none\" },\n ],\n })\n );\n\n const emailProvider = z\n .enum([\"plunk\", \"resend\", \"none\"])\n .parse(emailProviderAnswer);\n\n state.emailProvider = emailProvider;\n\n await addAuth({\n options: {\n type,\n emailProvider: emailProvider === \"none\" ? undefined : emailProvider,\n },\n });\n } else {\n await addAuth({ options: { type } });\n }\n}\n\nexport const makeAddAuthCommand = () => {\n const addAuthCommand = new Command(\"auth\")\n .description(\"Add authentication to your project\")\n .option(\"--authType <authType>\", \"Type of auth provider to use\")\n .option(\n \"--emailProvider <emailProvider>\",\n \"Email provider to use (only for FM Add-on Auth)\"\n )\n .option(\n \"--apiKey <apiKey>\",\n \"API key to use for the email provider (only for FM Add-on Auth)\"\n )\n .addOption(ciOption)\n .addOption(debugOption)\n\n .action(async () => {\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n throw new Error(\"Shadcn projects should add auth using the template registry\");\n }\n if (settings.auth.type !== \"none\") {\n throw new Error(\"Auth already exists\");\n }\n await runAddAuthAction();\n });\n\n addAuthCommand.hook(\"preAction\", (thisCommand) => {\n initProgramState(thisCommand.opts());\n });\n\n return addAuthCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { z } from \"zod/v4\";\n\nimport { ensureProofKitProject } from \"~/cli/utils.js\";\nimport { promptForFileMakerDataSource } from \"./filemaker.js\";\n\nconst dataSourceType = z.enum([\"fm\", \"supabase\"]);\nexport const runAddDataSourceCommand = async () => {\n const dataSource = dataSourceType.parse(\n await p.select({\n message: \"Which data souce do you want to add?\",\n options: [\n { label: \"FileMaker\", value: \"fm\" },\n { label: \"Supabase\", value: \"supabase\" },\n ],\n })\n );\n\n if (dataSource === \"supabase\") {\n throw new Error(\"Not implemented\");\n } else if (dataSource === \"fm\") {\n await promptForFileMakerDataSource({ projectDir: process.cwd() });\n } else {\n throw new Error(\"Invalid data source\");\n }\n};\n\nexport const makeAddDataSourceCommand = () => {\n const addDataSourceCommand = new Command(\"data\");\n addDataSourceCommand.description(\"Add a new data source to your project\");\n\n addDataSourceCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n const settings = ensureProofKitProject({ commandName: \"add\" });\n actionCommand.setOptionValue(\"settings\", settings);\n });\n\n // addDataSourceCommand.action();\n return addDataSourceCommand;\n};\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport { SyntaxKind } from \"ts-morph\";\n\nimport {\n getClientSuffix,\n getFieldNamesForSchema,\n} from \"~/generators/fmdapi.js\";\nimport { injectTanstackQuery } from \"~/generators/tanstack-query.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { type TPostInstallFn } from \"../types.js\";\n\nexport const postInstallTable: TPostInstallFn = async ({\n projectDir,\n pageDir,\n dataSource,\n schemaName,\n}) => {\n if (!dataSource) {\n throw new Error(\"DataSource is required for table page\");\n } else if (!schemaName) {\n throw new Error(\"SchemaName is required for table page\");\n } else if (dataSource.type !== \"fm\") {\n throw new Error(\"FileMaker DataSource is required for table page\");\n }\n\n const clientSuffix = getClientSuffix({\n projectDir,\n dataSourceName: dataSource.name,\n });\n\n const allFieldNames = getFieldNamesForSchema({\n schemaName,\n dataSourceName: dataSource.name,\n });\n\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return;\n }\n const auth = settings.auth;\n\n const substitutions = {\n __SOURCE_NAME__: dataSource.name,\n __TYPE_NAME__: `T${schemaName}`,\n __ZOD_TYPE_NAME__: `Z${schemaName}`,\n __CLIENT_NAME__: `${schemaName}${clientSuffix}`,\n __SCHEMA_NAME__: schemaName,\n __ACTION_CLIENT__:\n auth.type === \"none\" ? \"actionClient\" : \"authedActionClient\",\n __FIRST_FIELD_NAME__: allFieldNames[0] ?? \"NO_FIELDS_ON_YOUR_LAYOUT\",\n };\n\n // read all files in pageDir and loop over them\n const files = await fs.readdir(pageDir);\n for await (const file of files) {\n const filePath = path.join(pageDir, file);\n let fileContent = await fs.readFile(filePath, \"utf8\");\n\n Object.entries(substitutions).forEach(([key, value]) => {\n fileContent = fileContent.replace(new RegExp(key, \"g\"), value);\n });\n\n await fs.writeFile(filePath, fileContent, \"utf8\");\n }\n\n // add the schemas to the columns array\n const project = getNewProject(projectDir);\n const sourceFile = project.addSourceFileAtPath(\n path.join(pageDir, state.appType === \"browser\" ? \"table.tsx\" : \"index.tsx\")\n );\n const columns = sourceFile\n .getVariableDeclaration(\"columns\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression);\n\n const fieldNames = filterOutCommonFieldNames(\n allFieldNames.filter(Boolean) as string[]\n );\n\n for await (const fieldName of fieldNames) {\n columns?.addElement((writer) =>\n writer\n .inlineBlock(() => {\n if (needsBracketNotation(fieldName)) {\n writer.write(`accessorFn: (row) => row[\"${fieldName}\"],`);\n } else {\n writer.write(`accessorFn: (row) => row.${fieldName},`);\n }\n writer.write(`header: \"${fieldName}\",`);\n })\n .write(\",\")\n .newLine()\n );\n }\n\n if (state.appType === \"webviewer\") {\n const didInject = await injectTanstackQuery({ project });\n if (didInject) await installDependencies();\n }\n\n await formatAndSaveSourceFiles(project);\n};\n\n// Function to check if a field name needs bracket notation\nfunction needsBracketNotation(fieldName: string): boolean {\n // Check if it's a valid JavaScript identifier\n return !/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(fieldName);\n}\n\nconst commonFieldNamesToExclude = [\n \"id\",\n \"pk\",\n \"createdat\",\n \"updatedat\",\n \"primarykey\",\n \"createdby\",\n \"modifiedby\",\n \"creationtimestamp\",\n \"modificationtimestamp\",\n];\n\nfunction filterOutCommonFieldNames(fieldNames: string[]): string[] {\n return fieldNames.filter(\n (fieldName) =>\n !commonFieldNamesToExclude.includes(fieldName.toLowerCase()) ||\n fieldName.startsWith(\"_\")\n );\n}\n","import { injectTanstackQuery } from \"~/generators/tanstack-query.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { type TPostInstallFn } from \"../types.js\";\nimport { postInstallTable } from \"./table.js\";\n\nexport const postInstallTableInfinite: TPostInstallFn = async (args) => {\n await postInstallTable(args);\n const didInject = await injectTanstackQuery();\n if (didInject) {\n await installDependencies();\n }\n};\n","import { postInstallTableInfinite } from \"./post-install/table-infinite.js\";\nimport { postInstallTable } from \"./post-install/table.js\";\nimport { type TPostInstallFn } from \"./types.js\";\n\nexport interface Template {\n requireData: boolean;\n label: string;\n hint?: string;\n templatePath: string;\n screenshot?: string;\n tags?: string[];\n postIntallFn?: TPostInstallFn;\n}\n\nexport const nextjsTemplates: Record<string, Template> = {\n blank: {\n requireData: false,\n label: \"Blank\",\n templatePath: \"nextjs/blank\",\n },\n table: {\n requireData: true,\n label: \"Basic Table\",\n hint: \"Use to load and show multiple records\",\n templatePath: \"nextjs/table\",\n postIntallFn: postInstallTable,\n },\n tableEdit: {\n requireData: true,\n label: \"Basic Table (editable)\",\n hint: \"Use to load and show multiple records with inline edit functionality\",\n templatePath: \"nextjs/table-edit\",\n postIntallFn: postInstallTable,\n },\n tableInfinite: {\n requireData: true,\n label: \"Infinite Table\",\n hint: \"Automatically load more records when the user scrolls to the bottom\",\n templatePath: \"nextjs/table-infinite\",\n postIntallFn: postInstallTableInfinite,\n },\n tableInfiniteEdit: {\n requireData: true,\n label: \"Infinite Table (editable)\",\n hint: \"Automatically load more records when the user scrolls to the bottom with inline edit functionality\",\n templatePath: \"nextjs/table-infinite-edit\",\n postIntallFn: postInstallTableInfinite,\n },\n};\n\nexport const wvTemplates: Record<string, Template> = {\n blank: {\n requireData: false,\n label: \"Blank\",\n templatePath: \"vite-wv/blank\",\n },\n table: {\n requireData: true,\n label: \"Basic Table\",\n hint: \"Use to load and show multiple records\",\n templatePath: \"vite-wv/table\",\n postIntallFn: postInstallTable,\n },\n tableEdit: {\n requireData: true,\n label: \"Basic Table (editable)\",\n hint: \"Use to load and show multiple records with inline edit functionality\",\n templatePath: \"vite-wv/table-edit\",\n postIntallFn: postInstallTable,\n },\n // tableInfinite: {\n // requireData: true,\n // label: \"Infinite Table\",\n // hint: \"Automatically load more records when the user scrolls to the bottom\",\n // templatePath: \"vite-wv/table-infinite\",\n // postIntallFn: postInstallTableInfinite,\n // },\n // tableInfiniteEdit: {\n // requireData: true,\n // label: \"Infinite Table (editable)\",\n // hint: \"Automatically load more records when the user scrolls to the bottom with inline edit functionality\",\n // templatePath: \"vite-wv/table-infinite-edit\",\n // postIntallFn: postInstallTableInfinite,\n // },\n};\n","import path from \"path\";\nimport fs from \"fs-extra\";\nimport { type RouteLink } from \"index.js\";\nimport { SyntaxKind } from \"ts-morph\";\n\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\n\nexport async function addRouteToNav({\n projectDir,\n navType,\n ...route\n}: Omit<RouteLink, \"type\"> & {\n projectDir: string;\n navType: \"primary\" | \"secondary\";\n}) {\n const navFilePath = path.join(projectDir, \"src/app/navigation.tsx\");\n\n // If the navigation file doesn't exist (e.g., WebViewer apps), skip adding to nav\n if (!fs.existsSync(navFilePath)) return;\n\n const project = getNewProject(projectDir);\n const sourceFile = project.addSourceFileAtPath(navFilePath);\n sourceFile\n .getVariableDeclaration(\n navType === \"primary\" ? \"primaryRoutes\" : \"secondaryRoutes\"\n )\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression)\n ?.addElement((writer) =>\n writer\n .block(() => {\n writer.write(`\n label: \"${route.label}\",\n type: \"link\",\n href: \"${route.href}\",`);\n })\n .write(\",\")\n );\n\n await formatAndSaveSourceFiles(project);\n}\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { capitalize } from \"es-toolkit\";\nimport fs from \"fs-extra\";\n\nimport { nextjsTemplates, wvTemplates } from \"~/cli/add/page/templates.js\";\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { getExistingSchemas } from \"~/generators/fmdapi.js\";\nimport { addRouteToNav } from \"~/generators/route.js\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport {\n getSettings,\n mergeSettings,\n type DataSource,\n} from \"~/utils/parseSettings.js\";\nimport { abortIfCancel, ensureProofKitProject } from \"../../utils.js\";\n\nexport const runAddPageAction = async (opts?: {\n routeName?: string;\n pageName?: string;\n dataSourceName?: string;\n schemaName?: string;\n template?: string;\n}) => {\n const projectDir = state.projectDir;\n\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return p.cancel(\n \"Adding pages is not yet supported for shadcn-based projects.\"\n );\n }\n\n const templates =\n state.appType === \"browser\"\n ? Object.entries(nextjsTemplates)\n : Object.entries(wvTemplates);\n\n if (templates.length === 0) {\n return p.cancel(`No templates found for your app type. Check back soon!`);\n }\n\n let routeName = opts?.routeName;\n let replacedMainPage = settings.replacedMainPage;\n\n if (\n state.appType === \"webviewer\" &&\n !replacedMainPage &&\n !state.ci &&\n !routeName\n ) {\n const replaceMainPage = abortIfCancel(\n await p.select({\n message: \"Do you want to replace the default page?\",\n options: [\n { label: \"Yes\", value: \"yes\" },\n { label: \"No, maybe later\", value: \"no\" },\n { label: \"No, don't ask again\", value: \"never\" },\n ],\n })\n );\n if (replaceMainPage === \"never\" || replaceMainPage === \"yes\") {\n replacedMainPage = true;\n }\n\n if (replaceMainPage === \"yes\") {\n routeName = \"/\";\n }\n }\n\n if (!routeName) {\n routeName = abortIfCancel(\n await p.text({\n message: `Enter the URL PATH for your new page`,\n placeholder: \"/my-page\",\n validate: (value) => {\n if (value.length === 0) {\n return \"URL path is required\";\n }\n return;\n },\n })\n );\n }\n\n if (!routeName.startsWith(\"/\")) {\n routeName = `/${routeName}`;\n }\n\n const pageName = capitalize(routeName.replace(\"/\", \"\").trim());\n\n const template =\n opts?.template ??\n abortIfCancel(\n await p.select({\n message: \"What template should be used for this page?\",\n options: templates.map(([key, value]) => ({\n value: key,\n label: `${value.label}`,\n hint: value.hint,\n })),\n })\n );\n\n const pageTemplate = templates.find(([key]) => key === template)?.[1];\n if (!pageTemplate) return p.cancel(`Page template ${template} not found`);\n\n let dataSource: DataSource | undefined;\n let schemaName: string | undefined;\n if (pageTemplate.requireData) {\n if (settings.dataSources.length === 0)\n return p.cancel(\n \"This template requires a data source, but you don't have any. Add a data source first, or choose another page template\"\n );\n\n const dataSourceName =\n opts?.dataSourceName ??\n (settings.dataSources.length > 1\n ? abortIfCancel(\n await p.select({\n message: \"Which data source should be used for this page?\",\n options: settings.dataSources.map((dataSource) => ({\n value: dataSource.name,\n label: dataSource.name,\n })),\n })\n )\n : settings.dataSources[0]?.name);\n\n dataSource = settings.dataSources.find(\n (dataSource) => dataSource.name === dataSourceName\n );\n if (!dataSource) return p.cancel(`Data source ${dataSourceName} not found`);\n\n schemaName = await promptForSchemaFromDataSource({\n projectDir,\n dataSource,\n });\n }\n\n const spinner = p.spinner();\n spinner.start(\"Adding page from template\");\n\n // copy template files\n const templatePath = path.join(\n PKG_ROOT,\n \"template/pages\",\n pageTemplate.templatePath\n );\n\n const destPath =\n state.appType === \"browser\"\n ? path.join(projectDir, \"src/app/(main)\", routeName)\n : path.join(projectDir, \"src/routes\", routeName);\n\n await fs.copy(templatePath, destPath);\n\n if (state.appType === \"browser\") {\n if (pageName && pageName !== \"\") {\n await addRouteToNav({\n projectDir: process.cwd(),\n navType: \"primary\",\n label: pageName,\n href: routeName,\n });\n }\n } else if (state.appType === \"webviewer\") {\n // TODO: implement\n }\n // call post-install function\n await pageTemplate.postIntallFn?.({\n projectDir,\n pageDir: destPath,\n dataSource,\n schemaName,\n });\n\n if (replacedMainPage !== settings.replacedMainPage) {\n // avoid changing this until the end since the user could cancel early\n mergeSettings({ replacedMainPage });\n }\n\n spinner.stop(\"Added page!\");\n const pkgManager = getUserPkgManager();\n\n console.log(\n `\\n${chalk.green(\"Next steps:\")}\\nTo preview this page, restart your dev server using the ${chalk.cyan(`${pkgManager === \"npm\" ? \"npm run\" : pkgManager} dev`)} command\\n`\n );\n};\n\nexport const makeAddPageCommand = () => {\n const addPageCommand = new Command(\"page\")\n .description(\"Add a new page to your project\")\n .action(async () => {\n await runAddPageAction();\n });\n\n addPageCommand.addOption(ciOption);\n addPageCommand.addOption(debugOption);\n\n addPageCommand.hook(\"preAction\", () => {\n initProgramState(addPageCommand.opts());\n state.baseCommand = \"add\";\n ensureProofKitProject({ commandName: \"add\" });\n });\n\n return addPageCommand;\n};\n\nasync function promptForSchemaFromDataSource({\n projectDir = process.cwd(),\n dataSource,\n}: {\n projectDir?: string;\n dataSource: DataSource;\n}) {\n if (dataSource.type === \"supabase\") {\n throw new Error(\"Not implemented\");\n } else {\n const schemas = getExistingSchemas({\n projectDir,\n dataSourceName: dataSource.name,\n })\n .map((s) => s.schemaName)\n .filter(Boolean);\n\n if (schemas.length === 0) {\n p.cancel(\"This data source doesn't have any schemas to load data from\");\n return undefined;\n }\n\n if (schemas.length === 1) return schemas[0];\n\n const schemaName = abortIfCancel(\n await p.select({\n message: \"Which schema should this page load data from?\",\n options: schemas.map((o) => ({ label: o, value: o ?? \"\" })),\n })\n );\n return schemaName;\n }\n}\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\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 });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","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 // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\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 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","import { z } from \"zod/v3\";\nimport { registryItemSchema } from \"shadcn/registry\";\nimport fsSync, { promises } from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport createJiti from \"jiti\";\n\n//#region lib/types.ts\nconst registryTypeSchema = z.enum([\n\t\"registry:lib\",\n\t\"registry:block\",\n\t\"registry:component\",\n\t\"registry:ui\",\n\t\"registry:hook\",\n\t\"registry:page\",\n\t\"registry:file\",\n\t\"registry:theme\",\n\t\"registry:style\",\n\t\"registry:item\",\n\t\"registry:example\",\n\t\"registry:internal\"\n]).describe(\"The type property is used to specify the type of your registry item. This is used to determine the type and target path of the item when resolved for a project.\");\nconst templateFileSchema = z.discriminatedUnion(\"type\", [z.object({\n\tsourceFileName: z.string(),\n\tdestinationPath: z.string().optional(),\n\ttype: registryTypeSchema.extract([\"registry:file\", \"registry:page\"]),\n\thandlebars: z.boolean().optional()\n}), z.object({\n\tsourceFileName: z.string(),\n\tdestinationPath: z.string().optional(),\n\ttype: registryTypeSchema.exclude([\"registry:file\", \"registry:page\"]),\n\thandlebars: z.boolean().optional()\n})]);\nconst buildPostInstallStepsSchema = (action, dataSchema) => {\n\treturn z.object({\n\t\taction: z.literal(action),\n\t\tdata: dataSchema,\n\t\t_from: z.string().optional()\n\t});\n};\nconst postInstallStepsSchema = z.discriminatedUnion(\"action\", [\n\tbuildPostInstallStepsSchema(\"next-steps\", z.object({ message: z.string() })),\n\tbuildPostInstallStepsSchema(\"package.json script\", z.object({\n\t\tscriptName: z.string(),\n\t\tscriptCommand: z.string()\n\t})),\n\tbuildPostInstallStepsSchema(\"env\", z.object({ envs: z.object({\n\t\tname: z.string(),\n\t\tzodValue: z.string(),\n\t\tdefaultValue: z.string().optional().describe(\"This value will be added to the .env file, unless `addToRuntimeEnv` is set to `false`.\"),\n\t\ttype: z.enum([\"server\", \"client\"]),\n\t\taddToRuntimeEnv: z.boolean().optional().describe(\"Whether to add the env to the runtime env.\")\n\t}).array() })),\n\tbuildPostInstallStepsSchema(\"wrap provider\", z.object({\n\t\tproviderOpenTag: z.string().describe(\"The opening tag to use for the provider. This is used to wrap the provider in the correct location.\"),\n\t\tproviderCloseTag: z.string().describe(\"The closing tag to use for the provider.\"),\n\t\timports: z.array(z.object({\n\t\t\tmoduleSpecifier: z.string().describe(\"The module to import from (e.g., '@/config/query-provider')\"),\n\t\t\tdefaultImport: z.string().optional().describe(\"The default import name (e.g., 'QueryProvider')\"),\n\t\t\tnamedImports: z.array(z.string()).optional().describe(\"Array of named imports (e.g., ['QueryProvider', 'useQuery'])\")\n\t\t})).describe(\"Array of import configurations for the provider. Each import should have either defaultImport or namedImports.\"),\n\t\tparentTag: z.array(z.string()).optional().describe(\"If set, the provider will attempt to go inside of the parent tag. The first found tag will be used as the parent. If not set or none of the tags are found, the provider will be wrapped at the very top level.\")\n\t}))\n]);\nconst categorySchema = z.enum([\n\t\"component\",\n\t\"page\",\n\t\"utility\",\n\t\"hook\",\n\t\"email\"\n]);\nconst frameworkSchema = z.enum([\n\t\"next-pages\",\n\t\"next-app\",\n\t\"manual\"\n]);\nconst templateMetadataSchema = registryItemSchema.omit({\n\tname: true,\n\ttype: true,\n\tfiles: true,\n\tdocs: true\n}).extend({\n\ttitle: z.string(),\n\tdescription: z.string().optional(),\n\tcategory: categorySchema,\n\tfiles: z.array(templateFileSchema),\n\tregistryType: registryTypeSchema,\n\tpostInstall: z.array(postInstallStepsSchema).optional().describe(\"Steps that should be run by the ProofKit CLI after shadcn CLI is done\"),\n\tminimumProofKitVersion: z.string().describe(\"The minimum version of ProofKit required to use this template\").optional(),\n\tallowedFrameworks: z.array(frameworkSchema).optional(),\n\tschemaRequired: z.boolean().optional().describe(\"Whether this template requires a database schema to be selected\")\n});\nconst registryIndexSchema = templateMetadataSchema.pick({\n\ttitle: true,\n\tcategory: true,\n\tdescription: true\n}).extend({ name: z.string() }).array();\n\n//#endregion\n//#region lib/utils.ts\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nconst defaultTemplatesPath = path.resolve(__dirname, \"../templates\");\n/**\n* Scans the templates directory and returns all template directories with _meta.ts files\n*/\nfunction getTemplateDirs$1(root, prefix = \"\") {\n\tconst entries = fsSync.readdirSync(root, { withFileTypes: true });\n\tconst result = [];\n\tfor (const entry of entries) {\n\t\tif (!entry.isDirectory()) continue;\n\t\tconst dirPath = path.join(root, entry.name);\n\t\tconst rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n\t\tconst files = fsSync.readdirSync(dirPath);\n\t\tif (files.includes(\"_meta.ts\") || files.includes(\"_meta.js\")) result.push(rel);\n\t\tconst nested = getTemplateDirs$1(dirPath, rel);\n\t\tresult.push(...nested);\n\t}\n\treturn result;\n}\n/**\n* Loads template metadata using jiti\n*/\nfunction loadTemplateMeta(templatePath, templatesPath = defaultTemplatesPath) {\n\tconst jiti = createJiti(__filename, {\n\t\tinteropDefault: true,\n\t\trequireCache: false\n\t});\n\tconst templateDir = path.join(templatesPath, templatePath);\n\tconst files = fsSync.readdirSync(templateDir);\n\tconst metaFile = files.includes(\"_meta.ts\") ? \"_meta.ts\" : \"_meta.js\";\n\tconst metaPath = path.join(templateDir, metaFile);\n\tconst metaModule = jiti(metaPath);\n\tconst meta = metaModule.meta || metaModule.default?.meta || metaModule.default;\n\tif (!meta) throw new Error(`Template ${templatePath}: ${metaFile} must export a 'meta' object`);\n\treturn {\n\t\t...meta,\n\t\tregistryPath: templatePath\n\t};\n}\nasync function getRegistryIndex(templatesPath = defaultTemplatesPath) {\n\tconst templateDirs = getTemplateDirs$1(templatesPath);\n\tconst index = templateDirs.map((templatePath) => {\n\t\tconst meta = loadTemplateMeta(templatePath, templatesPath);\n\t\tconst item = {\n\t\t\tname: templatePath,\n\t\t\tcategory: meta.category,\n\t\t\ttitle: meta.title,\n\t\t\tdescription: meta.description\n\t\t};\n\t\treturn item;\n\t});\n\treturn index;\n}\nfunction getNormalizedPath(namePath) {\n\treturn namePath.replace(/^\\/+|\\/+$/g, \"\");\n}\nfunction getOtherProofKitDependencies(meta) {\n\treturn (meta.registryDependencies ?? []).filter((x) => x.startsWith(\"{proofkit}/r/\")).map((x) => x.replace(\"{proofkit}/r/\", \"\")).map(getNormalizedPath);\n}\nasync function getComponentMetaInternal(namePath, visited = /* @__PURE__ */ new Set(), templatesPath = defaultTemplatesPath) {\n\tconst normalized = getNormalizedPath(namePath);\n\tif (visited.has(normalized)) {\n\t\tconst meta$1 = loadTemplateMeta(normalized, templatesPath);\n\t\treturn {\n\t\t\t...meta$1,\n\t\t\tpostInstall: meta$1.postInstall ?? []\n\t\t};\n\t}\n\tconst templateDirs = getTemplateDirs$1(templatesPath);\n\tif (!templateDirs.includes(normalized)) throw new Error(`Template \"${normalized}\" not found`);\n\tvisited.add(normalized);\n\tconst meta = loadTemplateMeta(normalized, templatesPath);\n\tconst otherProofKitDependencies = getOtherProofKitDependencies(meta).filter((name) => !visited.has(name));\n\tconst otherProofKitDependenciesMeta = await Promise.all(otherProofKitDependencies.map(async (name) => {\n\t\tconst meta$1 = await getComponentMetaInternal(name, visited, templatesPath);\n\t\treturn {\n\t\t\t...meta$1,\n\t\t\tname\n\t\t};\n\t}));\n\treturn {\n\t\t...meta,\n\t\tpostInstall: [...meta.postInstall ?? [], ...otherProofKitDependenciesMeta.flatMap((x) => (x.postInstall ?? []).map((step) => ({\n\t\t\t...step,\n\t\t\t_from: x.name\n\t\t})))]\n\t};\n}\nasync function getComponentMeta(namePath, templatesPath = defaultTemplatesPath) {\n\treturn getComponentMetaInternal(namePath, /* @__PURE__ */ new Set(), templatesPath);\n}\nasync function getStaticComponent(namePath, options) {\n\tconst normalized = getNormalizedPath(namePath);\n\tconst templatesPath = options?.templatesPath ?? defaultTemplatesPath;\n\tconst meta = await getComponentMeta(namePath, templatesPath);\n\tconst files = await Promise.all(meta.files.map(async (file) => {\n\t\tconst sourceFile = file.handlebars ? file.sourceFileName.replace(/\\.[^/.]+$/, \".hbs\") : file.sourceFileName;\n\t\tconst contentPath = path.join(templatesPath, normalized, sourceFile);\n\t\tconst content = await promises.readFile(contentPath, \"utf-8\");\n\t\tconst routeName = options?.routeName ?? namePath;\n\t\tconst destinationPath = file.destinationPath ? file.destinationPath?.replace(\"__PATH__\", routeName) : void 0;\n\t\tconst shadcnFile = file.type === \"registry:file\" || file.type === \"registry:page\" ? {\n\t\t\tpath: file.sourceFileName,\n\t\t\ttype: file.type,\n\t\t\tcontent,\n\t\t\ttarget: destinationPath ?? file.sourceFileName\n\t\t} : {\n\t\t\tpath: file.sourceFileName,\n\t\t\ttype: file.type,\n\t\t\tcontent,\n\t\t\t...destinationPath ? { target: destinationPath } : {}\n\t\t};\n\t\treturn shadcnFile;\n\t}));\n\treturn {\n\t\t...meta,\n\t\tname: normalized,\n\t\ttype: meta.registryType,\n\t\tfiles\n\t};\n}\n/**\n* Template transformation utilities for handling handlebars syntax in shadcn CLI\n*/\n/**\n* Mapping of handlebars expressions to TypeScript-safe placeholder tokens\n*/\nconst HANDLEBARS_PLACEHOLDERS = {\n\t\"{{schema.schemaName}}\": \"__HB_SCHEMA_NAME__\",\n\t\"{{schema.sourceName}}\": \"__HB_SOURCE_NAME__\",\n\t\"{{schema.clientSuffix}}\": \"__HB_CLIENT_SUFFIX__\"\n};\n/**\n* Converts handlebars expressions in template content to TypeScript-safe placeholder tokens\n* This allows the shadcn CLI to process the templates without TypeScript parsing errors\n*/\nfunction encodeHandlebarsForShadcn(content) {\n\tlet result = content;\n\tfor (const [handlebars, placeholder] of Object.entries(HANDLEBARS_PLACEHOLDERS)) result = result.replace(new RegExp(escapeRegExp(handlebars), \"g\"), placeholder);\n\treturn result;\n}\n/**\n* Converts placeholder tokens back to handlebars expressions\n* This is used by the CLI after shadcn has processed the templates\n*/\nfunction decodeHandlebarsFromShadcn(content) {\n\tlet result = content;\n\tfor (const [handlebars, placeholder] of Object.entries(HANDLEBARS_PLACEHOLDERS)) result = result.replace(new RegExp(escapeRegExp(placeholder), \"g\"), handlebars);\n\treturn result;\n}\n/**\n* Escapes special regex characters in a string\n*/\nfunction escapeRegExp(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n/**\n* Enhanced version of getStaticComponent that applies handlebars encoding for shadcn compatibility\n*/\nasync function getStaticComponentForShadcn(namePath, options) {\n\tconst component = await getStaticComponent(namePath, options);\n\tconst encodedFiles = component.files?.map((file) => {\n\t\tif (file.path.endsWith(\".hbs\") || file.path.endsWith(\".tsx\") || file.path.endsWith(\".ts\")) return {\n\t\t\t...file,\n\t\t\tcontent: encodeHandlebarsForShadcn(file.content ?? \"\")\n\t\t};\n\t\treturn file;\n\t});\n\treturn {\n\t\t...component,\n\t\tfiles: encodedFiles\n\t};\n}\n\n//#endregion\n//#region lib/validator.ts\n/**\n* Check if a registry template path is valid\n*/\nfunction isValidRegistryTemplate(templatePath, templatesPath) {\n\tconst fullTemplatePath = path.join(templatesPath, templatePath);\n\tconst metaPath = path.join(fullTemplatePath, \"_meta.ts\");\n\treturn fsSync.existsSync(metaPath);\n}\n/**\n* Validate a single template metadata object\n*/\nfunction validateTemplateMetadata(meta, context) {\n\tconst validationResult = templateMetadataSchema.safeParse(meta);\n\tif (!validationResult.success) throw new Error(`Template ${context.templateName}: Invalid metadata structure:\\n${validationResult.error.issues.map((issue) => ` - ${issue.path.join(\".\")}: ${issue.message}`).join(\"\\n\")}`);\n\tconst validatedMeta = validationResult.data;\n\tconst declaredFiles = validatedMeta.files.map((f) => {\n\t\tif (f.handlebars) return f.sourceFileName.replace(/\\.[^/.]+$/, \".hbs\");\n\t\treturn f.sourceFileName;\n\t});\n\tfor (const declaredFile of declaredFiles) {\n\t\tconst filePath = path.resolve(context.templateDir, declaredFile);\n\t\tif (!fsSync.existsSync(filePath)) throw new Error(`Template ${context.templateName}: Declared file '${declaredFile}' does not exist at path '${filePath}'`);\n\t}\n\tconst actualFiles = fsSync.readdirSync(context.templateDir).filter((f) => f !== \"_meta.ts\");\n\tif (declaredFiles.length > 0 && actualFiles.length === 0) throw new Error(`Template ${context.templateName} declares files but has no content files`);\n\tif (validatedMeta.registryDependencies) {\n\t\tfor (const registryRef of validatedMeta.registryDependencies) if (registryRef.startsWith(\"{proofkit}/r/\")) {\n\t\t\tconst templatePath = registryRef.replace(\"{proofkit}/r/\", \"\");\n\t\t\tif (!isValidRegistryTemplate(templatePath, context.templatesPath)) throw new Error(`Template ${context.templateName}: Invalid registryDependencies reference '${registryRef}' - template does not exist in the registry`);\n\t\t}\n\t}\n}\nfunction getTemplateDirs(root, prefix = \"\") {\n\tconst entries = fsSync.readdirSync(root, { withFileTypes: true });\n\tconst result = [];\n\tfor (const entry of entries) {\n\t\tif (!entry.isDirectory()) continue;\n\t\tconst dirPath = path.join(root, entry.name);\n\t\tconst rel = prefix ? `${prefix}/${entry.name}` : entry.name;\n\t\tconst files = fsSync.readdirSync(dirPath);\n\t\tif (files.includes(\"_meta.ts\")) result.push(rel);\n\t\tconst nested = getTemplateDirs(dirPath, rel);\n\t\tresult.push(...nested);\n\t}\n\treturn result;\n}\nfunction validateRegistry() {\n\tconst __filename$1 = fileURLToPath(import.meta.url);\n\tconst __dirname$1 = path.dirname(__filename$1);\n\tconst templatesPath = path.resolve(__dirname$1, \"../templates\");\n\tconst jiti = createJiti(__filename$1, {\n\t\tinteropDefault: true,\n\t\trequireCache: false\n\t});\n\ttry {\n\t\tconst templateDirs = getTemplateDirs(templatesPath);\n\t\tfor (const rel of templateDirs) {\n\t\t\tconst metaPath = path.join(templatesPath, rel, \"_meta.ts\");\n\t\t\tif (!fsSync.existsSync(metaPath)) throw new Error(`Template ${rel} is missing _meta.ts file`);\n\t\t\ttry {\n\t\t\t\tconst metaModule = jiti(metaPath);\n\t\t\t\tconst meta = metaModule.meta || metaModule.default?.meta || metaModule.default;\n\t\t\t\tif (!meta) throw new Error(`Template ${rel}: _meta.ts must export a 'meta' object`);\n\t\t\t\tconst context = {\n\t\t\t\t\ttemplatesPath,\n\t\t\t\t\ttemplateName: rel,\n\t\t\t\t\ttemplateDir: path.join(templatesPath, rel)\n\t\t\t\t};\n\t\t\t\tvalidateTemplateMetadata(meta, context);\n\t\t\t} catch (loadError) {\n\t\t\t\tif (loadError instanceof Error && loadError.message.includes(\"Template\")) throw loadError;\n\t\t\t\tthrow new Error(`Template ${rel}: Failed to load _meta.ts - ${loadError}`);\n\t\t\t}\n\t\t}\n\t\tconsole.log(`✅ Registry validation passed for ${templateDirs.length} templates`);\n\t} catch (err) {\n\t\tconsole.error(\"Registry validation failed:\", err);\n\t\tthrow err;\n\t}\n}\n\n//#endregion\nexport { decodeHandlebarsFromShadcn, encodeHandlebarsForShadcn, frameworkSchema, getComponentMeta, getOtherProofKitDependencies, getRegistryIndex, getStaticComponent, getStaticComponentForShadcn, isValidRegistryTemplate, postInstallStepsSchema, registryIndexSchema, templateFileSchema, templateMetadataSchema, validateRegistry, validateTemplateMetadata };\n//# sourceMappingURL=index.js.map","import { createFetch, createSchema } from \"@better-fetch/fetch\";\nimport {\n registryIndexSchema,\n templateMetadataSchema,\n} from \"@proofkit/registry\";\nimport { z } from \"zod/v4\";\n\nimport { getRegistryUrl } from \"~/helpers/shadcn-cli.js\";\n\nconst schema = createSchema({\n \"@get/meta/:name\": {\n output: templateMetadataSchema,\n },\n \"@get/\": {\n output: registryIndexSchema,\n },\n});\n\nexport const registryFetch = createFetch({\n baseURL: `${getRegistryUrl()}/r`,\n schema,\n});\n","import path from \"path\";\nimport fg from \"fast-glob\";\nimport fs from \"fs-extra\";\n\nimport { state } from \"~/state.js\";\nimport { registryFetch } from \"./http.js\";\n\nexport async function getMetaFromRegistry(name: string) {\n try {\n const result = await registryFetch(\"@get/meta/:name\", {\n params: { name },\n });\n\n if (result.error) {\n if (result.error.status === 404) return null;\n throw new Error(result.error.message);\n }\n\n return result.data;\n } catch (error) {\n throw error;\n }\n}\n\nconst PROJECT_SHARED_IGNORE = [\n \"**/node_modules/**\",\n \".next\",\n \"public\",\n \"dist\",\n \"build\",\n];\n\nexport async function getProjectInfo() {\n const cwd = state.projectDir || process.cwd();\n const [configFiles, isSrcDir] = await Promise.all([\n fg.glob(\n \"**/{next,vite,astro,app}.config.*|gatsby-config.*|composer.json|react-router.config.*\",\n {\n cwd,\n deep: 3,\n ignore: PROJECT_SHARED_IGNORE,\n }\n ),\n fs.pathExists(path.resolve(cwd, \"src\")),\n ]);\n\n const isUsingAppDir = await fs.pathExists(\n path.resolve(cwd, `${isSrcDir ? \"src/\" : \"\"}app`)\n );\n\n // Next.js.\n if (configFiles.find((file) => file.startsWith(\"next.config.\"))?.length) {\n return isUsingAppDir ? \"next-app\" : \"next-pages\";\n }\n\n return \"manual\";\n}\n","import path from \"path\";\nimport { TemplateFile, decodeHandlebarsFromShadcn } from \"@proofkit/registry\";\nimport fs from \"fs-extra\";\nimport handlebars from \"handlebars\";\n\nimport { getShadcnConfig } from \"~/helpers/shadcn-cli.js\";\nimport { state } from \"~/state.js\";\nimport { DataSource, getSettings } from \"~/utils/parseSettings.js\";\nimport { getClientSuffix, getFieldNamesForSchema } from \"~/generators/fmdapi.js\";\n\n// Register handlebars helpers\nhandlebars.registerHelper(\"eq\", function (a, b) {\n return a === b;\n});\n\nhandlebars.registerHelper(\n \"findFirst\",\n function (this: any, array, predicate, options) {\n if (!array || !Array.isArray(array)) return options.inverse(this);\n\n for (let i = 0; i < array.length; i++) {\n const item = array[i];\n if (predicate === \"fm\" && item.type === \"fm\") {\n return options.fn(item);\n }\n }\n return options.inverse(this);\n }\n);\n\ntype DataSourceForTemplate = {\n dataSource: DataSource;\n schemaName: string;\n}\n\nconst commonFieldNamesToExclude = [\n \"id\",\n \"pk\",\n \"createdat\",\n \"updatedat\",\n \"primarykey\",\n \"createdby\",\n \"modifiedby\",\n \"creationtimestamp\",\n \"modificationtimestamp\",\n];\n\nfunction filterOutCommonFieldNames(fieldNames: string[]): string[] {\n return fieldNames.filter(\n (fieldName) =>\n !commonFieldNamesToExclude.includes(fieldName.toLowerCase()) ||\n fieldName.startsWith(\"_\")\n );\n}\n\n\nfunction buildDataSourceData(args: DataSourceForTemplate) {\n const { dataSource, schemaName } = args;\n\n const clientSuffix = getClientSuffix({\n projectDir: state.projectDir??process.cwd(),\n dataSourceName: dataSource.name,\n });\n\n const allFieldNames = getFieldNamesForSchema({\n schemaName,\n dataSourceName: dataSource.name,\n }).filter(Boolean) as string[];\n\n return {\n sourceName: dataSource.name,\n schemaName,\n clientSuffix,\n allFieldNames,\n fieldNames: filterOutCommonFieldNames(allFieldNames)\n }\n}\n\nexport function buildHandlebarsData(args?: DataSourceForTemplate) {\n const proofkit = getSettings();\n const shadcn = getShadcnConfig();\n\n return {\n proofkit,\n shadcn,\n schema: args ? buildDataSourceData(args) : {\n sourceName: \"UnknownDataSource\",\n schemaName: \"UnknownSchema\",\n clientSuffix: \"UnknownClientSuffix\",\n allFieldNames: [\"UnknownFieldName\"],\n fieldNames: [\"UnknownFieldName\"],\n },\n };\n}\n\nexport async function randerHandlebarsToFile(\n file: TemplateFile,\n data: ReturnType<typeof buildHandlebarsData>\n) {\n const inputPath = getFilePath(file, data);\n let rawTemplate = await fs.readFile(inputPath, \"utf8\");\n \n // Decode placeholder tokens back to handlebars syntax\n // This uses the centralized decoding function from the registry package\n rawTemplate = decodeHandlebarsFromShadcn(rawTemplate);\n \n const template = handlebars.compile(rawTemplate);\n const rendered = template(data);\n await fs.writeFile(inputPath, rendered);\n}\n\nexport function getFilePath(\n file: TemplateFile,\n data: ReturnType<typeof buildHandlebarsData>\n): string {\n const thePath = file.sourceFileName;\n\n if (file.destinationPath) return file.destinationPath;\n\n const cwd = state.projectDir ?? process.cwd();\n const { shadcn } = data;\n\n // Create a mapping between registry types and their corresponding shadcn config aliases\n const typeToAliasMap: Record<string, string | undefined> = {\n \"registry:lib\": shadcn?.aliases?.lib || shadcn?.aliases?.utils,\n \"registry:component\": shadcn?.aliases?.components,\n \"registry:ui\": shadcn?.aliases?.ui || shadcn?.aliases?.components,\n \"registry:hook\": shadcn?.aliases?.hooks,\n // These types don't have direct aliases, so we use fallback paths\n \"registry:file\": \"src\",\n \"registry:page\": \"src/app\",\n \"registry:block\": shadcn?.aliases?.components\n ? shadcn.aliases.components.startsWith(\"@/\")\n ? `${shadcn.aliases.components.replace(\"@/\", \"src/\")}/blocks`\n : `src/${shadcn.aliases.components}/blocks`\n : \"src/components/blocks\",\n \"registry:theme\": \"src/theme\",\n \"registry:style\": \"src/styles\",\n };\n\n const aliasPath = typeToAliasMap[file.type];\n\n if (aliasPath) {\n // Handle @/ prefix which represents the src directory\n if (aliasPath.startsWith(\"@/\")) {\n const resolvedPath = aliasPath.replace(\"@/\", \"src/\");\n return path.join(cwd, resolvedPath, thePath);\n }\n // If the alias starts with a path separator or contains src/, treat it as a relative path from cwd\n else if (aliasPath.startsWith(\"/\") || aliasPath.includes(\"src/\")) {\n return path.join(cwd, aliasPath, thePath);\n }\n // Otherwise, treat it as an alias that should be resolved relative to src/\n else {\n return path.join(cwd, \"src\", aliasPath, thePath);\n }\n }\n\n // Fallback to hardcoded paths for unsupported types\n switch (file.type) {\n case \"registry:lib\":\n return path.join(cwd, \"src\", \"lib\", thePath);\n case \"registry:file\":\n return path.join(cwd, \"src\", thePath);\n case \"registry:page\":\n // For page templates, use the route name if available in template data\n const routeName = (data as any).routeName;\n if (routeName) {\n // Add /(main) prefix for Next.js app router structure\n const pageRoute = routeName === \"/\" ? \"\" : routeName;\n return path.join(cwd, \"src\", \"app\", \"(main)\", pageRoute, thePath);\n }\n return path.join(cwd, \"src\", \"app\", thePath);\n case \"registry:block\":\n return path.join(cwd, \"src\", \"components\", \"blocks\", thePath);\n case \"registry:component\":\n return path.join(cwd, \"src\", \"components\", thePath);\n case \"registry:ui\":\n return path.join(cwd, \"src\", \"components\", thePath);\n case \"registry:hook\":\n return path.join(cwd, \"src\", \"hooks\", thePath);\n case \"registry:theme\":\n return path.join(cwd, \"src\", \"theme\", thePath);\n case \"registry:style\":\n return path.join(cwd, \"src\", \"styles\", thePath);\n default:\n // default to source file name\n return thePath;\n }\n}\n","import fs from \"fs\";\nimport path from \"path\";\nimport { PostInstallStep } from \"@proofkit/registry\";\n\nimport { state } from \"~/state.js\";\n\nexport function addScriptToPackageJson(\n step: Extract<PostInstallStep, { action: \"package.json script\" }>\n) {\n const packageJsonPath = path.join(state.projectDir, \"package.json\");\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\"));\n packageJson.scripts[step.data.scriptName] = step.data.scriptCommand;\n fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n}\n","import path from \"path\";\nimport { PostInstallStep } from \"@proofkit/registry\";\nimport {\n ImportDeclarationStructure,\n StructureKind,\n SyntaxKind,\n} from \"ts-morph\";\n\nimport { getShadcnConfig } from \"~/helpers/shadcn-cli.js\";\nimport { state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\n\nexport async function wrapProvider(step: Extract<PostInstallStep, { action: \"wrap provider\" }>) { \n const {\n parentTag,\n imports: importConfigs,\n providerCloseTag,\n providerOpenTag,\n } = step.data;\n\n try {\n const projectDir = state.projectDir;\n const project = getNewProject(projectDir);\n const shadcnConfig = getShadcnConfig();\n\n // Resolve the components alias to a filesystem path\n // @/components -> src/components, ./components -> components, etc.\n const resolveAlias = (alias: string): string => {\n if (alias.startsWith(\"@/\")) {\n return alias.replace(\"@/\", \"src/\");\n }\n if (alias.startsWith(\"./\")) {\n return alias.substring(2);\n }\n return alias;\n };\n\n // Look for providers.tsx in the components directory\n const componentsDir = resolveAlias(shadcnConfig.aliases.components);\n const providersPath = path.join(projectDir, componentsDir, \"providers.tsx\");\n\n const providersFile = project.addSourceFileAtPath(providersPath);\n\n // Add all import statements\n for (const importConfig of importConfigs) {\n const importDeclaration: ImportDeclarationStructure = {\n moduleSpecifier: importConfig.moduleSpecifier,\n kind: StructureKind.ImportDeclaration,\n };\n\n if (importConfig.defaultImport) {\n importDeclaration.defaultImport = importConfig.defaultImport;\n }\n\n if (importConfig.namedImports && importConfig.namedImports.length > 0) {\n importDeclaration.namedImports = importConfig.namedImports;\n }\n\n providersFile.addImportDeclaration(importDeclaration);\n }\n\n // Handle providers.tsx file - look for the default export function\n const exportDefault = providersFile.getFunction((dec) =>\n dec.isDefaultExport()\n );\n\n if (!exportDefault) {\n logger.warn(`No default export function found in ${providersPath}`);\n return;\n }\n\n const returnStatement = exportDefault\n ?.getBody()\n ?.getFirstDescendantByKind(SyntaxKind.ReturnStatement);\n\n if (!returnStatement) {\n logger.warn(`No return statement found in default export function`);\n return;\n }\n\n let targetElement;\n\n // Try to find the parent tag if specified\n if (parentTag && parentTag.length > 0) {\n for (const tag of parentTag) {\n targetElement = returnStatement\n ?.getDescendantsOfKind(SyntaxKind.JsxOpeningElement)\n .find(\n (openingElement) =>\n openingElement.getTagNameNode().getText() === tag\n )\n ?.getParentIfKind(SyntaxKind.JsxElement);\n\n if (targetElement) break;\n }\n }\n\n if (targetElement) {\n // If we found a parent tag, wrap its children\n const childrenText = targetElement\n ?.getJsxChildren()\n .map((child) => child.getText())\n .filter(Boolean)\n .join(\"\\n\");\n\n const newContent = `${providerOpenTag}\n ${childrenText}\n ${providerCloseTag}`;\n\n targetElement.getChildSyntaxList()?.replaceWithText(newContent);\n } else {\n // If no parent tag found or specified, wrap the entire return statement\n const returnExpression = returnStatement?.getExpression();\n if (returnExpression) {\n // Check if the expression is a ParenthesizedExpression\n const isParenthesized = returnExpression.getKind() === SyntaxKind.ParenthesizedExpression;\n \n let innerExpressionText: string;\n if (isParenthesized) {\n // Get the inner expression from the parenthesized expression\n const parenthesizedExpr = returnExpression.asKindOrThrow(SyntaxKind.ParenthesizedExpression);\n innerExpressionText = parenthesizedExpr.getExpression().getText();\n } else {\n innerExpressionText = returnExpression.getText();\n }\n \n const newReturnContent = `return (\n ${providerOpenTag}\n ${innerExpressionText}\n ${providerCloseTag}\n );`;\n\n returnStatement?.replaceWithText(newReturnContent);\n } else {\n logger.warn(`No return expression found to wrap`);\n }\n }\n\n await formatAndSaveSourceFiles(project);\n logger.success(`Successfully wrapped provider in ${providersPath}`);\n } catch (error) {\n logger.error(`Failed to wrap provider: ${error}`);\n throw error;\n }\n}\n","import type { PostInstallStep } from \"@proofkit/registry\";\n\nimport { addToEnv } from \"~/utils/addToEnvs.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { addScriptToPackageJson } from \"./package-script.js\";\nimport { wrapProvider } from \"./wrap-provider.js\";\n\nexport async function processPostInstallStep(step: PostInstallStep) {\n if (step.action === \"package.json script\") {\n addScriptToPackageJson(step);\n } else if (step.action === \"wrap provider\") {\n await wrapProvider(step);\n } else if (step.action === \"next-steps\") {\n logger.info(step.data.message);\n } else if (step.action === \"env\") {\n await addToEnv({\n envs: step.data.envs,\n });\n } else {\n logger.error(`Unknown post-install step: ${step}`);\n }\n}\n","import fs from \"fs-extra\";\n\nimport {\n defaultSettings,\n setSettings,\n validateAndSetEnvFile,\n} from \"~/utils/parseSettings.js\";\n\n/**\n * Used to add a proofkit.json file to an existing project\n */\nexport async function stealthInit() {\n // check if proofkit.json exists\n const proofkitJson = await fs.pathExists(\"proofkit.json\");\n if (proofkitJson) {\n return;\n }\n\n // create proofkit.json with default settings\n setSettings(defaultSettings);\n\n // validate and set envFile only if it exists\n validateAndSetEnvFile();\n}\n","import path from \"path\";\nimport fs from \"fs-extra\";\n\nimport { stealthInit } from \"~/helpers/stealth-init.js\";\nimport { state } from \"~/state.js\";\n\nexport async function preflightAddCommand() {\n const cwd = state.projectDir ?? process.cwd();\n // make sure shadcn is installed, throw if not\n const shadcnInstalled = await fs.pathExists(\n path.join(cwd, \"components.json\")\n );\n if (!shadcnInstalled) {\n throw new Error(\n \"Shadcn is not installed. Please run `pnpm dlx shadcn@latest init` to install it.\"\n );\n }\n\n // if proofkit is not inited, try to stealth init\n await stealthInit();\n}\n","import * as p from \"@clack/prompts\";\nimport { getOtherProofKitDependencies } from \"@proofkit/registry\";\nimport { capitalize, uniq } from \"es-toolkit\";\nimport ora from \"ora\";\nimport semver from \"semver\";\n\nimport { abortIfCancel } from \"~/cli/utils.js\";\nimport { getExistingSchemas } from \"~/generators/fmdapi.js\";\nimport { addRouteToNav } from \"~/generators/route.js\";\nimport { getRegistryUrl, shadcnInstall } from \"~/helpers/shadcn-cli.js\";\nimport { state } from \"~/state.js\";\nimport { getVersion } from \"~/utils/getProofKitVersion.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport {\n getSettings,\n mergeSettings,\n type DataSource,\n} from \"~/utils/parseSettings.js\";\nimport { getMetaFromRegistry } from \"./getOptions.js\";\nimport {\n buildHandlebarsData,\n getFilePath,\n randerHandlebarsToFile,\n} from \"./postInstall/handlebars.js\";\nimport { processPostInstallStep } from \"./postInstall/index.js\";\nimport { preflightAddCommand } from \"./preflight.js\";\n\nasync function promptForSchemaFromDataSource({\n projectDir = process.cwd(),\n dataSource,\n}: {\n projectDir?: string;\n dataSource: DataSource;\n}) {\n if (dataSource.type === \"supabase\") {\n throw new Error(\"Not implemented\");\n } else {\n const schemas = getExistingSchemas({\n projectDir,\n dataSourceName: dataSource.name,\n })\n .map((s) => s.schemaName)\n .filter(Boolean);\n\n if (schemas.length === 0) {\n p.cancel(\"This data source doesn't have any schemas to load data from\");\n return undefined;\n }\n\n if (schemas.length === 1) return schemas[0];\n\n const schemaName = abortIfCancel(\n await p.select({\n message: \"Which schema should this template use?\",\n options: schemas.map((o) => ({ label: o, value: o ?? \"\" })),\n })\n );\n return schemaName;\n }\n}\n\nexport async function installFromRegistry(name: string) {\n const spinner = ora(\"Validating template\").start();\n\n try {\n await preflightAddCommand();\n const meta = await getMetaFromRegistry(name);\n if (!meta) {\n spinner.fail(`Template ${name} not found in the ProofKit registry`);\n return;\n }\n\n if (\n meta.minimumProofKitVersion &&\n semver.gt(meta.minimumProofKitVersion, getVersion())\n ) {\n logger.error(\n `Template ${name} requires ProofKit version ${meta.minimumProofKitVersion}, but you are using version ${getVersion()}`\n );\n spinner.fail(\"Template is not compatible with your ProofKit version\");\n return;\n }\n spinner.succeed();\n\n const otherProofKitDependencies = getOtherProofKitDependencies(meta);\n let previouslyInstalledTemplates = getSettings().registryTemplates;\n\n // Handle schema requirement if template needs it\n let dataSource: DataSource | undefined;\n let schemaName: string | undefined;\n let routeName: string | undefined;\n let pageName: string | undefined;\n\n if (meta.schemaRequired) {\n const settings = getSettings();\n\n if (settings.dataSources.length === 0) {\n spinner.fail(\n \"This template requires a data source, but you don't have any. Add a data source first.\"\n );\n return;\n }\n\n const dataSourceName =\n settings.dataSources.length > 1\n ? abortIfCancel(\n await p.select({\n message: \"Which data source should be used for this template?\",\n options: settings.dataSources.map((ds) => ({\n value: ds.name,\n label: ds.name,\n })),\n })\n )\n : settings.dataSources[0]?.name;\n\n dataSource = settings.dataSources.find(\n (ds) => ds.name === dataSourceName\n );\n\n if (!dataSource) {\n spinner.fail(`Data source ${dataSourceName} not found`);\n return;\n }\n\n schemaName = await promptForSchemaFromDataSource({\n projectDir: state.projectDir,\n dataSource,\n });\n\n if (!schemaName) {\n spinner.fail(\"Schema selection was cancelled\");\n return;\n }\n }\n\n if (meta.category === \"page\") {\n // Prompt user for the URL path of the page\n routeName = abortIfCancel(\n await p.text({\n message: `Enter the URL PATH for your new page`,\n placeholder: \"/my-page\",\n validate: (value) => {\n if (value.length === 0) {\n return \"URL path is required\";\n }\n return;\n },\n })\n );\n\n if (routeName.startsWith(\"/\")) {\n routeName = routeName.slice(1);\n }\n\n pageName = capitalize(routeName.replace(\"/\", \"\").trim());\n }\n\n let url = new URL(`${getRegistryUrl()}/r/${name}`);\n if (meta.category === \"page\") {\n url.searchParams.set(\"routeName\", `/(main)/${routeName ?? name}`);\n }\n\n // a (hopefully) temporary workaround because the shadcn command installs the env file in the wrong place if it's a dependency\n if (\n name === \"fmdapi\" &&\n !previouslyInstalledTemplates.includes(\"utils/t3-env\") &&\n // this last guard will allow this workaroudn to be bypassed if the registry server updates to start serving the dependency again\n meta.registryDependencies?.find((d) => d.includes(\"utils/t3-env\")) ===\n undefined\n ) {\n // install the t3-env template manually first\n await installFromRegistry(\"utils/t3-env\");\n previouslyInstalledTemplates = getSettings().registryTemplates;\n }\n\n // now install the template using shadcn-install\n await shadcnInstall([url.toString()], meta.title);\n\n const handlebarsFiles = meta.files.filter((file) => file.handlebars);\n\n if (handlebarsFiles.length > 0) {\n // Build template data with schema information if available\n const templateData =\n dataSource && schemaName\n ? buildHandlebarsData({\n dataSource,\n schemaName,\n })\n : buildHandlebarsData();\n\n // Add page information to template data if available\n if (routeName) {\n (templateData as any).routeName = routeName;\n }\n if (pageName) {\n (templateData as any).pageName = pageName;\n }\n\n // Resolve __PATH__ placeholders in file paths before handlebars processing\n const resolvedFiles = handlebarsFiles.map((file) => ({\n ...file,\n destinationPath: file.destinationPath?.replace(\n \"__PATH__\",\n `/(main)/${routeName ?? name}`\n ),\n }));\n\n for (const file of resolvedFiles) {\n await randerHandlebarsToFile(file, templateData);\n }\n }\n\n // Add route to navigation if this is a page template\n if (meta.category === \"page\" && routeName && pageName) {\n await addRouteToNav({\n projectDir: state.projectDir,\n navType: \"primary\",\n label: pageName,\n href: `/${routeName}`,\n });\n }\n\n // if post-install steps, process those\n if (meta.postInstall) {\n for (const step of meta.postInstall) {\n if (step._from && previouslyInstalledTemplates.includes(step._from)) {\n // don't re-run post-install steps for templates that have already been installed\n continue;\n }\n await processPostInstallStep(step);\n }\n }\n\n // update the settings\n mergeSettings({\n registryTemplates: uniq([\n ...previouslyInstalledTemplates,\n name,\n ...otherProofKitDependencies,\n ]),\n });\n } catch (error) {\n spinner.fail(\"Failed to fetch template metadata.\");\n logger.error(error);\n }\n}\n","import { registryFetch } from \"./http.js\";\n\nexport async function listItems() {\n const { data: items, error } = await registryFetch(\"@get/\");\n if (error) {\n throw new Error(`Failed to fetch items from registry: ${error.message}`);\n }\n return items;\n}\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { capitalize, groupBy, uniq } from \"es-toolkit\";\nimport ora from \"ora\";\n\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { getSettings, Settings } from \"~/utils/parseSettings.js\";\nimport { runAddReactEmailCommand } from \"../react-email.js\";\nimport { runAddTanstackQueryCommand } from \"../tanstack-query.js\";\nimport { abortIfCancel, ensureProofKitProject } from \"../utils.js\";\nimport { makeAddAuthCommand, runAddAuthAction } from \"./auth.js\";\nimport {\n makeAddDataSourceCommand,\n runAddDataSourceCommand,\n} from \"./data-source/index.js\";\nimport { makeAddSchemaCommand, runAddSchemaAction } from \"./fmschema.js\";\nimport { makeAddPageCommand, runAddPageAction } from \"./page/index.js\";\nimport { installFromRegistry } from \"./registry/install.js\";\nimport { listItems } from \"./registry/listItems.js\";\nimport { preflightAddCommand } from \"./registry/preflight.js\";\n\nconst runAddFromRegistry = async (options?: { noInstall?: boolean }) => {\n const settings = getSettings();\n\n const spinner = ora(\"Loading available components...\").start();\n let items;\n try {\n items = await listItems();\n } catch (error) {\n spinner.fail(\"Failed to load registry components\");\n logger.error(error);\n return;\n }\n\n const itemsNotInstalled = items.filter(\n (item) => !settings.registryTemplates.includes(item.name)\n );\n\n const groupedByCategory = groupBy(itemsNotInstalled, (item) => item.category);\n const categories = uniq(itemsNotInstalled.map((item) => item.category));\n\n spinner.succeed();\n\n const addType = abortIfCancel(\n await p.select({\n message: \"What do you want to add to your project?\",\n options: [\n // if there are pages available to install, show them first\n ...(categories.includes(\"page\")\n ? [{ label: \"Page\", value: \"page\" }]\n : []),\n\n // only show schema option if there is at least one data source\n ...(settings.dataSources.length > 0\n ? [\n {\n label: \"Schema\",\n value: \"schema\",\n hint: \"load data from a new table or layout from an existing data source\",\n },\n ]\n : []),\n\n {\n label: \"Data Source\",\n value: \"data\",\n hint: \"to connect to a new database or FileMaker file\",\n },\n\n // show the rest of the categories\n ...categories\n .filter((category) => category !== \"page\")\n .map((category) => ({\n label: capitalize(category),\n value: category,\n })),\n ],\n })\n );\n\n if (addType === \"schema\") {\n await runAddSchemaAction();\n } else if (addType === \"data\") {\n await runAddDataSourceCommand();\n } else if (categories.includes(addType as any)) {\n // one of the categories\n const itemsFromCategory =\n groupedByCategory[addType as keyof typeof groupedByCategory];\n\n const itemName = abortIfCancel(\n await p.select({\n message: `Select a ${addType} to add to your project`,\n options: itemsFromCategory.map((item) => ({\n label: item.title,\n hint: item.description,\n value: item.name,\n })),\n })\n );\n\n await installFromRegistry(itemName);\n } else {\n logger.error(\n `Could not find any available components in the category \"${addType}\"`\n );\n }\n};\n\nexport const runAdd = async (\n name: string | undefined,\n options?: { noInstall?: boolean }\n) => {\n if (name === \"tanstack-query\") {\n return await runAddTanstackQueryCommand();\n } else if (name !== undefined) {\n // an arbitrary name was provided, so we'll try to install from the registry\n return await installFromRegistry(name);\n }\n\n let settings: Settings;\n try {\n settings = getSettings();\n } catch {\n await preflightAddCommand();\n return await runAddFromRegistry(options);\n }\n\n if (settings.ui === \"shadcn\") {\n return await runAddFromRegistry(options);\n }\n ensureProofKitProject({ commandName: \"add\" });\n\n const addType = abortIfCancel(\n await p.select({\n message: \"What do you want to add to your project?\",\n options: [\n { label: \"Page\", value: \"page\" },\n // only show schema option if there is at least one data source\n ...(settings.dataSources.length > 0\n ? [\n {\n label: \"Schema\",\n value: \"schema\",\n hint: \"load data from a new table or layout from an existing data source\",\n },\n ]\n : []),\n { label: \"React Email\", value: \"react-email\" },\n {\n label: \"Data Source\",\n value: \"data\",\n hint: \"to connect to a new database or FileMaker file\",\n },\n ...(settings.auth.type === \"none\" && settings.appType === \"browser\"\n ? [{ label: \"Auth\", value: \"auth\" }]\n : []),\n ],\n })\n );\n\n if (addType === \"auth\") {\n await runAddAuthAction();\n } else if (addType === \"data\") {\n await runAddDataSourceCommand();\n } else if (addType === \"page\") {\n await runAddPageAction();\n } else if (addType === \"schema\") {\n await runAddSchemaAction();\n } else if (addType === \"react-email\") {\n await runAddReactEmailCommand({ noInstall: options?.noInstall });\n }\n};\n\nexport const makeAddCommand = () => {\n const addCommand = new Command(\"add\")\n .description(\"Add a new component to your project\")\n .argument(\"[name]\", \"Type of component to add\")\n .addOption(ciOption)\n .addOption(debugOption)\n .option(\n \"--noInstall\",\n \"Do not run your package manager install command\",\n false\n )\n .action(async (name, options) => {\n await runAdd(name, options);\n });\n\n addCommand.hook(\"preAction\", (_thisCommand, _actionCommand) => {\n // console.log(\"preAction\", _actionCommand.opts());\n initProgramState(_actionCommand.opts());\n state.baseCommand = \"add\";\n });\n addCommand.hook(\"preSubcommand\", (_thisCommand, _subCommand) => {\n // console.log(\"preSubcommand\", _subCommand.opts());\n initProgramState(_subCommand.opts());\n state.baseCommand = \"add\";\n });\n\n addCommand.addCommand(makeAddAuthCommand());\n addCommand.addCommand(makeAddPageCommand());\n addCommand.addCommand(makeAddSchemaCommand());\n addCommand.addCommand(makeAddDataSourceCommand());\n return addCommand;\n};\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { Command, Option } from \"commander\";\nimport { execa } from \"execa\";\nimport fs from \"fs-extra\";\nimport { type PackageJson } from \"type-fest\";\n\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getUserPkgManager } from \"~/utils/getUserPkgManager.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\n\nasync function checkVercelCLI(): Promise<boolean> {\n try {\n await execa(\"vercel\", [\"--version\"]);\n return true;\n } catch (error) {\n return false;\n }\n}\n\nasync function installVercelCLI() {\n const pkgManager = getUserPkgManager();\n const spinner = p.spinner();\n spinner.start(\"Installing Vercel CLI...\");\n\n try {\n const installCmd = pkgManager === \"npm\" ? \"install\" : \"add\";\n await execa(pkgManager, [installCmd, \"-g\", \"vercel\"]);\n spinner.stop(\"Vercel CLI installed successfully\");\n return true;\n } catch (error) {\n spinner.stop(\"Failed to install Vercel CLI\");\n console.error(chalk.red(\"Error installing Vercel CLI:\"), error);\n return false;\n }\n}\n\nasync function checkVercelProject(): Promise<boolean> {\n try {\n // Try to read the .vercel/project.json file which exists when a project is linked\n const projectConfig = (await fs.readJSON(\n \".vercel/project.json\"\n )) as VercelProjectConfig;\n return Boolean(projectConfig.projectId);\n } catch (error) {\n if (state.debug) {\n console.log(\"\\nDebug: No Vercel project configuration found\");\n }\n return false;\n }\n}\n\nasync function getVercelTeams(): Promise<{ slug: string; name: string }[]> {\n try {\n if (state.debug) {\n console.log(\"\\nDebug: Running vercel teams list command...\");\n }\n\n const result = await execa(\"vercel\", [\"teams\", \"list\"], {\n all: true,\n });\n\n if (state.debug) {\n console.log(\"\\nDebug: Command output:\", result.all);\n }\n\n const lines = (result.all ?? \"\").split(\"\\n\").filter(Boolean);\n\n // Find the index of the header line\n const headerIndex = lines.findIndex((line) => line.includes(\"id\"));\n if (headerIndex === -1) {\n return [];\n }\n\n // Get only the lines after the header\n const teamLines = lines.slice(headerIndex + 1);\n\n if (state.debug) {\n console.log(\"\\nDebug: Team lines:\");\n teamLines.forEach((line) => console.log(`\"${line}\"`));\n }\n\n const teams = teamLines\n .map((line) => {\n // Remove any leading symbols (✔ or spaces) and trim\n const cleanLine = line.replace(/^[✔\\s]+/, \"\").trim();\n // Split on multiple spaces and take the first part as slug, rest as name\n const [slug, ...nameParts] = cleanLine.split(/\\s{2,}/);\n if (!slug || nameParts.length === 0) return null;\n\n return {\n slug,\n name: nameParts.join(\" \").trim(),\n };\n })\n .filter((team): team is { slug: string; name: string } => team !== null);\n\n if (state.debug) {\n console.log(\"\\nDebug: Parsed teams:\", teams);\n }\n\n return teams;\n } catch (error) {\n if (state.debug) {\n console.error(\"Error getting Vercel teams:\", error);\n }\n return [];\n }\n}\n\nasync function setupVercelProject() {\n const spinner = p.spinner();\n\n try {\n // Get project name from package.json\n const pkgJson = (await fs.readJSON(\"package.json\")) as PackageJson;\n const projectName = pkgJson.name;\n\n // Get available teams\n const teams = await getVercelTeams();\n\n let teamFlag = \"\";\n if (teams.length > 1) {\n const teamChoice = await p.select({\n message: \"Select a team to deploy under:\",\n options: [\n ...teams.map((team) => ({\n value: team.slug,\n label: team.name,\n })),\n ],\n });\n\n if (p.isCancel(teamChoice)) {\n console.log(chalk.yellow(\"\\nOperation cancelled\"));\n return false;\n }\n\n if (teamChoice && typeof teamChoice === \"string\") {\n teamFlag = `--scope=${teamChoice}`;\n }\n }\n\n spinner.start(\"Creating Vercel project...\");\n\n // Create project with default settings\n await execa(\"vercel\", [\"link\", \"--yes\", ...(teamFlag ? [teamFlag] : [])], {\n env: {\n VERCEL_PROJECT_NAME: projectName,\n },\n });\n\n // Pull project settings\n spinner.message(\"Pulling project settings...\");\n await execa(\"vercel\", [\"pull\", \"--yes\"], {\n stdio: \"inherit\",\n });\n\n spinner.stop(\"Vercel project created successfully\");\n return true;\n } catch (error) {\n spinner.stop(\"Failed to set up Vercel project\");\n console.error(chalk.red(\"Error setting up Vercel project:\"), error);\n return false;\n }\n}\n\nasync function pushEnvironmentVariables() {\n const spinner = p.spinner();\n spinner.start(\"Pushing environment variables to Vercel...\");\n\n try {\n const settings = getSettings();\n const envFile = path.join(process.cwd(), settings.envFile);\n\n if (!fs.existsSync(envFile)) {\n spinner.stop(\"No environment file found\");\n return true;\n }\n\n const envContent = await fs.readFile(envFile, \"utf-8\");\n const envVars = envContent\n .split(\"\\n\")\n .filter((line) => line.trim() && !line.startsWith(\"#\"))\n .map((line) => {\n const [key, ...valueParts] = line.split(\"=\");\n if (!key) return null;\n const value = valueParts.join(\"=\"); // Rejoin in case value contains =\n return { key: key.trim(), value: value.trim() };\n })\n .filter((item): item is { key: string; value: string } => item !== null);\n\n if (state.debug) {\n spinner.stop();\n console.log(\"\\nDebug: Parsed environment variables:\");\n envVars.forEach(({ key, value }) => {\n console.log(` ${key}=${value.substring(0, 3)}...`);\n });\n spinner.start(\"Pushing environment variables to Vercel...\");\n }\n\n let failed = 0;\n const total = envVars.length;\n\n for (let i = 0; i < total; i++) {\n const { key, value } = envVars[i]!;\n spinner.message(\n `Pushing environment variables to Vercel... (${i + 1}/${total})`\n );\n\n try {\n if (state.debug) {\n console.log(`\\nDebug: Attempting to add ${key} to Vercel...`);\n }\n\n const result = await execa(\n \"vercel\",\n [\"env\", \"add\", key, \"production\"],\n {\n input: value,\n stdio: \"pipe\",\n reject: false,\n }\n );\n\n if (state.debug) {\n console.log(`Debug: Command exit code: ${result.exitCode}`);\n if (result.stdout) console.log(\"Debug: stdout:\", result.stdout);\n if (result.stderr) console.log(\"Debug: stderr:\", result.stderr);\n }\n\n if (result.exitCode !== 0) {\n throw new Error(`Command failed with exit code ${result.exitCode}`);\n }\n } catch (error) {\n failed++;\n if (state.debug) {\n console.error(chalk.yellow(`\\nDebug: Failed to add ${key}`));\n console.error(\"Debug: Full error:\", error);\n }\n }\n }\n\n if (failed > 0) {\n spinner.stop(\n chalk.yellow(`Environment variables pushed with ${failed} failures`)\n );\n } else {\n spinner.stop(\"Environment variables pushed successfully\");\n }\n return failed < total;\n } catch (error) {\n spinner.stop(\"Failed to push environment variables\");\n if (state.debug) {\n console.error(\"\\nDebug: Top-level error in pushEnvironmentVariables:\");\n console.error(error);\n }\n return false;\n }\n}\n\ninterface VercelProjectConfig {\n projectId: string;\n settings?: {\n nodeVersion?: string;\n };\n [key: string]: unknown;\n}\n\nasync function ensureCorrectNodeVersion() {\n const nodeVersion = process.version.replace(/^v/, \"\");\n const majorVersion = nodeVersion.split(\".\")[0];\n\n try {\n const projectJsonPath = \".vercel/project.json\";\n if (!fs.existsSync(projectJsonPath)) {\n if (state.debug) {\n console.log(\"Debug: No project.json found\");\n }\n return false;\n }\n\n const projectConfig = (await fs.readJSON(\n projectJsonPath\n )) as VercelProjectConfig;\n if (state.debug) {\n console.log(\"Debug: Current project config:\", projectConfig);\n }\n\n // Update the Node.js version\n projectConfig.settings = {\n ...projectConfig.settings,\n nodeVersion: `${majorVersion}.x`,\n };\n\n await fs.writeJSON(projectJsonPath, projectConfig, { spaces: 2 });\n if (state.debug) {\n console.log(`Debug: Updated Node.js version to ${majorVersion}.x`);\n }\n return true;\n } catch (error) {\n if (state.debug) {\n console.error(\"Debug: Failed to update Node.js version:\", error);\n }\n return false;\n }\n}\n\nasync function checkVercelLogin(): Promise<boolean> {\n try {\n const result = await execa(\"vercel\", [\"whoami\"], {\n stdio: \"pipe\",\n reject: false,\n });\n\n if (state.debug) {\n console.log(\"\\nDebug: Vercel whoami result:\", result);\n }\n\n return result.exitCode === 0;\n } catch (error) {\n if (state.debug) {\n console.error(\"Debug: Error checking Vercel login status:\", error);\n }\n return false;\n }\n}\n\nasync function loginToVercel(): Promise<boolean> {\n console.log(chalk.blue(\"\\nYou need to log in to Vercel first.\"));\n\n try {\n await execa(\"vercel\", [\"login\"], {\n stdio: \"inherit\",\n });\n return true;\n } catch (error) {\n console.error(chalk.red(\"\\nFailed to log in to Vercel:\"), error);\n return false;\n }\n}\n\nexport async function runDeploy() {\n if (state.debug) console.log(\"Running deploy...\");\n\n // Check if Vercel CLI is installed\n const hasVercelCLI = await checkVercelCLI();\n\n if (!hasVercelCLI) {\n const installed = await installVercelCLI();\n if (!installed) {\n console.log(\n chalk.red(\n \"\\nFailed to install Vercel CLI. Please install it manually using:\"\n )\n );\n console.log(chalk.blue(\"\\n npm install -g vercel\"));\n return;\n }\n }\n\n // Check if user is logged in\n const isLoggedIn = await checkVercelLogin();\n if (!isLoggedIn) {\n const loginSuccessful = await loginToVercel();\n if (!loginSuccessful) {\n console.log(chalk.red(\"\\nFailed to log in to Vercel. Please try again.\"));\n return;\n }\n }\n\n // Check if project is set up with Vercel\n const hasVercelProject = await checkVercelProject();\n\n if (!hasVercelProject) {\n console.log(chalk.blue(\"\\nSetting up new Vercel project...\"));\n const setup = await setupVercelProject();\n if (!setup) {\n console.log(\n chalk.red(\"\\nFailed to set up Vercel project automatically.\")\n );\n return;\n }\n\n const envPushed = await pushEnvironmentVariables();\n if (!envPushed) {\n console.log(\n chalk.red(\n \"\\nFailed to push environment variables. Aborting deployment.\"\n )\n );\n return;\n }\n }\n\n // Pull latest project settings\n console.log(chalk.blue(\"\\nPulling latest project settings...\"));\n try {\n await execa(\"vercel\", [\"pull\", \"--yes\"], {\n stdio: \"inherit\",\n });\n } catch (error) {\n console.error(chalk.red(\"\\nFailed to pull project settings:\"), error);\n return;\n }\n\n // Ensure correct Node.js version is set\n if (!(await ensureCorrectNodeVersion())) {\n console.error(\n chalk.red(\"\\nFailed to set Node.js version. Continuing anyway...\")\n );\n }\n\n if (state.localBuild) {\n // Build locally for Vercel\n console.log(chalk.blue(\"\\nPreparing local build for Vercel...\"));\n try {\n const result = await execa(\"vercel\", [\"build\"], {\n stdio: \"inherit\",\n reject: false,\n });\n if (result.exitCode === 0) {\n console.log(chalk.green(\"\\n✓ Local build successful!\"));\n } else {\n console.error(chalk.red(\"\\n✖ Local build failed\"));\n console.log(chalk.yellow(\"Fix the errors above and then try again.\"));\n return;\n }\n } catch (error) {\n console.error(chalk.red(\"\\nVercel build failed:\"), error);\n return;\n }\n\n // Deploy the pre-built project\n console.log(chalk.blue(\"\\nDeploying to Vercel...\"));\n\n const result = await execa(\"vercel\", [\"deploy\", \"--prebuilt\", \"--yes\"], {\n stdio: \"inherit\",\n reject: false,\n });\n if (result.exitCode === 0) {\n console.log(chalk.green(\"\\n✓ Deployment successful!\"));\n }\n } else {\n // Deploy and build on Vercel\n console.log(chalk.blue(\"\\nDeploying to Vercel...\"));\n try {\n const result = await execa(\"vercel\", [\"deploy\", \"--yes\"], {\n stdio: \"inherit\",\n reject: false,\n });\n if (result.exitCode === 0) {\n console.log(chalk.green(\"\\n✓ Deployment successful!\"));\n } else {\n const pkgManager = getUserPkgManager();\n const runCmd = pkgManager === \"npm\" ? \"npm run\" : pkgManager;\n console.error(chalk.red(\"\\n✖ Deployment failed\"));\n\n console.log(chalk.yellow(\"\\nTroubleshooting Tips:\"));\n console.log(\n chalk.dim(\n \"You can check for most errors before deploying for a faster iteration cycle\"\n )\n );\n console.log(\n chalk.dim(\"Run\") +\n ` ${runCmd} tsc ` +\n chalk.dim(\n \"to check for TypeScript errors (most common build errors)\"\n )\n );\n console.log(\n chalk.dim(\"Run\") +\n ` ${runCmd} build ` +\n chalk.dim(\"to run the full production build locally\")\n );\n }\n } catch {\n // This catch block should rarely be hit since we're using reject: false\n return;\n }\n }\n}\n\nexport const makeDeployCommand = () => {\n const deployCommand = new Command(\"deploy\")\n .description(\"Deploy your ProofKit application to Vercel\")\n .addOption(ciOption)\n .addOption(debugOption)\n .addOption(new Option(\"--local-build\", \"Build locally before deploying\"))\n .action(runDeploy);\n\n deployCommand.hook(\"preAction\", (thisCommand) => {\n initProgramState(thisCommand.opts());\n state.baseCommand = \"deploy\";\n ensureProofKitProject({ commandName: \"deploy\" });\n });\n\n return deployCommand;\n};\n","import path from \"path\";\nimport fs from \"fs-extra\";\n\nimport { PKG_ROOT } from \"~/consts.js\";\nimport { installDependencies } from \"~/helpers/installDependencies.js\";\nimport { type AvailableDependencies } from \"~/installers/dependencyVersionMap.js\";\nimport { state } from \"~/state.js\";\nimport { addPackageDependency } from \"~/utils/addPackageDependency.js\";\n\nconst BASE_DEPS = [\n \"@radix-ui/react-slot\",\n \"@tailwindcss/postcss\",\n \"class-variance-authority\",\n \"clsx\",\n \"lucide-react\",\n \"tailwind-merge\",\n \"tailwindcss\",\n \"tw-animate-css\",\n] as AvailableDependencies[];\nconst BASE_DEV_DEPS = [\n \"prettier\",\n \"prettier-plugin-tailwindcss\",\n] as AvailableDependencies[];\n\nexport async function addShadcn() {\n const projectDir = state.projectDir;\n\n const TEMPLATE_ROOT = path.join(PKG_ROOT, \"template/nextjs\");\n\n // 1. Add dependencies\n addPackageDependency({\n dependencies: BASE_DEPS,\n devMode: false,\n projectDir,\n });\n addPackageDependency({\n dependencies: BASE_DEV_DEPS,\n devMode: true,\n projectDir,\n });\n\n // 2. Copy config and utility files\n fs.copySync(\n path.join(TEMPLATE_ROOT, \"components.json\"),\n path.join(projectDir, \"components.json\")\n );\n fs.copySync(\n path.join(TEMPLATE_ROOT, \".prettierrc\"),\n path.join(projectDir, \".prettierrc\")\n );\n fs.copySync(\n path.join(TEMPLATE_ROOT, \"postcss.config.cjs\"),\n path.join(projectDir, \"postcss.config.cjs\")\n );\n fs.copySync(\n path.join(TEMPLATE_ROOT, \"src/utils/styles.ts\"),\n path.join(projectDir, \"src/utils/styles.ts\")\n );\n fs.copySync(\n path.join(TEMPLATE_ROOT, \"src/config/theme/globals.css\"),\n path.join(projectDir, \"src/config/theme/globals.css\")\n );\n\n // 3. Install dependencies\n await installDependencies();\n\n // 4. Success message\n console.log(\"\\n✅ shadcn/ui + Tailwind v4 upgrade complete!\\n\");\n}\n","import { appTypes, getSettings, mergeSettings } from \"~/utils/parseSettings.js\";\nimport { copyCursorRules } from \"./cursorRules.js\";\nimport { addShadcn } from \"./shadcn.js\";\n\ntype Upgrade = {\n key: string;\n title: string;\n description: string;\n appType: (typeof appTypes)[number][];\n function: () => Promise<void>;\n};\n\nconst availableUpgrades: Upgrade[] = [\n {\n key: \"cursorRules\",\n title: \"Upgrade Cursor Rules\",\n description:\n \"Upgrade the .cursor rules in your project to the latest version.\",\n appType: [\"browser\"],\n function: copyCursorRules,\n },\n {\n key: \"shadcn\",\n title: \"Add Shadcn\",\n description:\n \"Add Shadcn to your project, to support easily adding new components from a variety of component registries.\",\n appType: [\"browser\", \"webviewer\"],\n function: addShadcn,\n },\n];\n\nexport type UpgradeKeys = (typeof availableUpgrades)[number][\"key\"];\n\nexport function checkForAvailableUpgrades() {\n const settings = getSettings();\n if (settings.ui === \"shadcn\") {\n return [];\n }\n\n const appliedUpgrades = settings.appliedUpgrades;\n\n const neededUpgrades = availableUpgrades.filter(\n (upgrade) =>\n !appliedUpgrades.includes(upgrade.key) &&\n upgrade.appType.includes(settings.appType)\n );\n\n return neededUpgrades.map(({ key, title, description }) => ({\n key,\n title,\n description,\n }));\n}\n\nexport async function runAllAvailableUpgrades() {\n const upgrades = checkForAvailableUpgrades();\n const settings = getSettings();\n if (settings.ui === \"shadcn\") return \n \n for (const upgrade of upgrades) {\n const upgradeFunction = availableUpgrades.find(\n (u) => u.key === upgrade.key\n )?.function;\n if (upgradeFunction) {\n await upgradeFunction();\n const appliedUpgrades = settings.appliedUpgrades;\n mergeSettings({\n appliedUpgrades: [...appliedUpgrades, upgrade.key],\n });\n }\n }\n}\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport dotenv from \"dotenv\";\nimport fs from \"fs-extra\";\nimport { z } from \"zod/v4\";\n\nimport {\n removeFromFmschemaConfig,\n runCodegenCommand,\n} from \"~/generators/fmdapi.js\";\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport {\n getSettings,\n setSettings,\n type DataSource,\n} from \"~/utils/parseSettings.js\";\nimport { getNewProject } from \"~/utils/ts-morph.js\";\nimport {\n abortIfCancel,\n ensureProofKitProject,\n UserAbortedError,\n} from \"../utils.js\";\n\nfunction getDataSourceInfo(source: DataSource) {\n if (source.type !== \"fm\") {\n return source.type;\n }\n\n const envFile = path.join(state.projectDir, \".env\");\n if (fs.existsSync(envFile)) {\n dotenv.config({ path: envFile });\n }\n\n const server = process.env[source.envNames.server] || \"unknown server\";\n const database = process.env[source.envNames.database] || \"unknown database\";\n\n try {\n // Format the server URL to be more readable\n const serverUrl = new URL(server);\n const formattedServer = serverUrl.hostname;\n return `${formattedServer}/${database}`;\n } catch (error) {\n if (state.debug) {\n console.error(\"Error parsing server URL:\", error);\n }\n return `${server}/${database}`;\n }\n}\n\nexport const runRemoveDataSourceCommand = async (name?: string) => {\n const settings = getSettings();\n\n if (settings.dataSources.length === 0) {\n p.note(\"No data sources found in your project.\");\n return;\n }\n\n let dataSourceName = name;\n\n // If no name provided, prompt for selection\n if (!dataSourceName) {\n dataSourceName = abortIfCancel(\n await p.select({\n message: \"Which data source do you want to remove?\",\n options: settings.dataSources.map((source) => {\n let info = \"\";\n try {\n info = getDataSourceInfo(source);\n } catch (error) {\n if (state.debug) {\n console.error(\"Error getting data source info:\", error);\n }\n info = \"unknown connection\";\n }\n return {\n label: `${source.name} (${info})`,\n value: source.name,\n };\n }),\n })\n );\n } else {\n // Validate that the provided name exists\n const dataSourceExists = settings.dataSources.some(\n (source) => source.name === dataSourceName\n );\n if (!dataSourceExists) {\n throw new Error(\n `Data source \"${dataSourceName}\" not found in your project.`\n );\n }\n }\n\n let confirmed = true;\n if (!state.ci) {\n confirmed = abortIfCancel(\n await p.confirm({\n message: `Are you sure you want to remove the data source \"${dataSourceName}\"? This will only remove it from your configuration, not replace any possible usage, which may cause TypeScript errors.`,\n })\n );\n\n if (!confirmed) throw new UserAbortedError();\n }\n\n // Get the data source before removing it\n const dataSource = settings.dataSources.find(\n (source) => source.name === dataSourceName\n );\n\n // Remove the data source from settings\n settings.dataSources = settings.dataSources.filter(\n (source) => source.name !== dataSourceName\n );\n\n // Save the updated settings\n setSettings(settings);\n\n if (dataSource?.type === \"fm\") {\n // For FileMaker data sources, remove from fmschema.config.mjs\n removeFromFmschemaConfig({\n dataSourceName,\n });\n\n if (state.debug) {\n p.note(`Removed schemas from fmschema.config.mjs`);\n }\n\n // Remove the schema folder for this data source\n const schemaFolderPath = path.join(\n state.projectDir,\n \"src\",\n \"config\",\n \"schemas\",\n dataSourceName\n );\n if (fs.existsSync(schemaFolderPath)) {\n fs.removeSync(schemaFolderPath);\n if (state.debug) {\n p.note(`Removed schema folder at ${schemaFolderPath}`);\n }\n }\n\n // Run typegen to regenerate types\n await runCodegenCommand();\n if (state.debug) {\n p.note(\"Successfully regenerated types\");\n }\n }\n\n p.note(`Successfully removed data source \"${dataSourceName}\"`);\n};\n\nexport const makeRemoveDataSourceCommand = () => {\n const removeDataSourceCommand = new Command(\"data\")\n .description(\"Remove a data source from your project\")\n .option(\"--name <name>\", \"Name of the data source to remove\")\n .addOption(ciOption)\n .addOption(debugOption)\n .action(async (options) => {\n const schema = z.object({\n name: z.string().optional(),\n });\n const validated = schema.parse(options);\n await runRemoveDataSourceCommand(validated.name);\n });\n\n removeDataSourceCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n initProgramState(actionCommand.opts());\n state.baseCommand = \"remove\";\n ensureProofKitProject({ commandName: \"remove\" });\n });\n\n return removeDataSourceCommand;\n};\n","import path from \"path\";\nimport * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport fs from \"fs-extra\";\nimport {\n Node,\n SyntaxKind,\n type Project,\n type PropertyAssignment,\n} from \"ts-morph\";\n\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { formatAndSaveSourceFiles, getNewProject } from \"~/utils/ts-morph.js\";\nimport { abortIfCancel, ensureProofKitProject } from \"../utils.js\";\n\nconst getExistingRoutes = (\n project: Project\n): { label: string; href: string }[] => {\n const navFilePath = path.join(state.projectDir, \"src/app/navigation.tsx\");\n\n // If navigation file doesn't exist (e.g., webviewer apps), there are no nav routes to remove\n if (!fs.existsSync(navFilePath)) return [];\n\n const sourceFile = project.addSourceFileAtPath(navFilePath);\n\n const routes: { label: string; href: string }[] = [];\n\n // Get primary routes\n const primaryRoutes = sourceFile\n .getVariableDeclaration(\"primaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression)\n ?.getElements();\n\n primaryRoutes?.forEach((element) => {\n if (Node.isObjectLiteralExpression(element)) {\n const labelProp = element\n .getProperties()\n .find(\n (prop): prop is PropertyAssignment =>\n Node.isPropertyAssignment(prop) && prop.getName() === \"label\"\n );\n const hrefProp = element\n .getProperties()\n .find(\n (prop): prop is PropertyAssignment =>\n Node.isPropertyAssignment(prop) && prop.getName() === \"href\"\n );\n\n const label = labelProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n const href = hrefProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n\n if (label && href) {\n routes.push({ label, href });\n }\n }\n });\n\n // Get secondary routes\n const secondaryRoutes = sourceFile\n .getVariableDeclaration(\"secondaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression)\n ?.getElements();\n\n secondaryRoutes?.forEach((element) => {\n if (Node.isObjectLiteralExpression(element)) {\n const labelProp = element\n .getProperties()\n .find(\n (prop): prop is PropertyAssignment =>\n Node.isPropertyAssignment(prop) && prop.getName() === \"label\"\n );\n const hrefProp = element\n .getProperties()\n .find(\n (prop): prop is PropertyAssignment =>\n Node.isPropertyAssignment(prop) && prop.getName() === \"href\"\n );\n\n const label = labelProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n const href = hrefProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n\n if (label && href) {\n routes.push({ label, href });\n }\n }\n });\n\n return routes;\n};\n\nconst removeRouteFromNav = async (project: Project, routeToRemove: string) => {\n const navFilePath = path.join(state.projectDir, \"src/app/navigation.tsx\");\n\n // Skip if there is no navigation file\n if (!fs.existsSync(navFilePath)) return;\n\n const sourceFile = project.addSourceFileAtPath(navFilePath);\n\n // Remove from primary routes\n const primaryRoutes = sourceFile\n .getVariableDeclaration(\"primaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression);\n\n if (primaryRoutes) {\n const elements = primaryRoutes.getElements();\n for (let i = elements.length - 1; i >= 0; i--) {\n const element = elements[i];\n if (Node.isObjectLiteralExpression(element)) {\n const hrefProp = element\n .getProperties()\n .find(\n (prop): prop is PropertyAssignment =>\n Node.isPropertyAssignment(prop) && prop.getName() === \"href\"\n );\n\n const href = hrefProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n\n if (href === routeToRemove) {\n primaryRoutes.removeElement(i);\n }\n }\n }\n }\n\n // Remove from secondary routes\n const secondaryRoutes = sourceFile\n .getVariableDeclaration(\"secondaryRoutes\")\n ?.getInitializerIfKind(SyntaxKind.ArrayLiteralExpression);\n\n if (secondaryRoutes) {\n const elements = secondaryRoutes.getElements();\n for (let i = elements.length - 1; i >= 0; i--) {\n const element = elements[i];\n if (Node.isObjectLiteralExpression(element)) {\n const hrefProp = element\n .getProperties()\n .find(\n (prop): prop is PropertyAssignment =>\n Node.isPropertyAssignment(prop) && prop.getName() === \"href\"\n );\n\n const href = hrefProp?.getInitializer()?.getText().replace(/['\"]/g, \"\");\n\n if (href === routeToRemove) {\n secondaryRoutes.removeElement(i);\n }\n }\n }\n }\n\n await formatAndSaveSourceFiles(project);\n};\n\nexport const runRemovePageAction = async (routeName?: string) => {\n const settings = getSettings();\n const projectDir = state.projectDir;\n const project = getNewProject(projectDir);\n\n // Get existing routes\n const routes = getExistingRoutes(project);\n\n if (routes.length === 0) {\n return p.cancel(\"No pages found in the navigation.\");\n }\n\n if (!routeName) {\n routeName = abortIfCancel(\n await p.select({\n message: \"Select the page to remove\",\n options: routes.map((route) => ({\n label: `${route.label} (${route.href})`,\n value: route.href,\n })),\n })\n );\n }\n\n if (!routeName.startsWith(\"/\")) {\n routeName = `/${routeName}`;\n }\n\n const pagePath =\n state.appType === \"browser\"\n ? path.join(projectDir, \"src/app/(main)\", routeName)\n : path.join(projectDir, \"src/routes\", routeName);\n\n const spinner = p.spinner();\n spinner.start(\"Removing page\");\n\n try {\n // Check if directory exists\n if (!fs.existsSync(pagePath)) {\n spinner.stop(\"Page not found!\");\n return p.cancel(`Page at ${routeName} does not exist`);\n }\n\n // Remove from navigation first (if present)\n await removeRouteFromNav(project, routeName);\n\n // Remove the page directory\n await fs.remove(pagePath);\n\n spinner.stop(\"Page removed successfully!\");\n } catch (error) {\n spinner.stop(\"Failed to remove page!\");\n console.error(\"Error removing page:\", error);\n process.exit(1);\n }\n};\n\nexport const makeRemovePageCommand = () => {\n const removePageCommand = new Command(\"page\")\n .description(\"Remove a page from your project\")\n .argument(\"[route]\", \"The route of the page to remove\")\n .addOption(ciOption)\n .addOption(debugOption)\n .action(async (route: string) => {\n await runRemovePageAction(route);\n });\n\n removePageCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n initProgramState(actionCommand.opts());\n state.baseCommand = \"remove\";\n ensureProofKitProject({ commandName: \"remove\" });\n });\n\n return removePageCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { z } from \"zod/v4\";\n\nimport { getExistingSchemas, removeLayout } from \"~/generators/fmdapi.js\";\nimport { state } from \"~/state.js\";\nimport { getSettings, type Settings } from \"~/utils/parseSettings.js\";\nimport { abortIfCancel } from \"../utils.js\";\n\nexport const runRemoveSchemaAction = async (opts?: {\n projectDir?: string;\n settings?: Settings;\n sourceName?: string;\n schemaName?: string;\n}) => {\n const settings = opts?.settings ?? getSettings();\n const projectDir = opts?.projectDir ?? state.projectDir;\n let sourceName = opts?.sourceName;\n\n // If there is more than one fm data source, prompt for which one to remove from\n if (\n !sourceName &&\n settings.dataSources.filter((s) => s.type === \"fm\").length > 1\n ) {\n const dataSourceName = await p.select({\n message:\n \"Which FileMaker data source do you want to remove a layout from?\",\n options: settings.dataSources\n .filter((s) => s.type === \"fm\")\n .map((s) => ({ label: s.name, value: s.name })),\n });\n if (p.isCancel(dataSourceName)) {\n p.cancel();\n process.exit(0);\n }\n sourceName = z.string().parse(dataSourceName);\n }\n\n if (!sourceName) sourceName = \"filemaker\";\n\n const dataSource = settings.dataSources\n .filter((s) => s.type === \"fm\")\n .find((s) => s.name === sourceName);\n if (!dataSource) {\n throw new Error(\n `FileMaker data source ${sourceName} not found in your ProofKit config`\n );\n }\n\n // Get existing schemas for this data source\n const existingSchemas = getExistingSchemas({\n projectDir,\n dataSourceName: sourceName,\n });\n\n if (existingSchemas.length === 0) {\n p.note(\n `No layouts found in data source \"${sourceName}\"`,\n \"Nothing to remove\"\n );\n return;\n }\n\n // Show existing schemas and let user pick one to remove\n const schemaToRemove =\n opts?.schemaName ??\n abortIfCancel(\n await p.select({\n message: \"Select a layout to remove\",\n options: existingSchemas\n .map((schema) => ({\n label: `${schema.layout} (${schema.schemaName})`,\n value: schema.schemaName ?? \"\",\n }))\n .filter((opt) => opt.value !== \"\"),\n })\n );\n\n // Confirm removal\n const confirmRemoval = await p.confirm({\n message: `Are you sure you want to remove the layout \"${schemaToRemove}\"?`,\n initialValue: false,\n });\n\n if (p.isCancel(confirmRemoval) || !confirmRemoval) {\n p.cancel(\"Operation cancelled\");\n process.exit(0);\n }\n\n // Remove the schema\n await removeLayout({\n projectDir,\n dataSourceName: sourceName,\n schemaName: schemaToRemove,\n runCodegen: true,\n });\n\n p.outro(`Layout \"${schemaToRemove}\" has been removed from your project`);\n};\n\nexport const makeRemoveSchemaCommand = () => {\n const removeSchemaCommand = new Command(\"layout\")\n .alias(\"schema\")\n .description(\"Remove a layout from your fmschema file\")\n .action(async (opts: { settings: Settings }) => {\n const settings = opts.settings;\n await runRemoveSchemaAction({ settings });\n });\n\n return removeSchemaCommand;\n};\n","import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\n\nimport { ciOption, debugOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { abortIfCancel, ensureProofKitProject } from \"../utils.js\";\nimport {\n makeRemoveDataSourceCommand,\n runRemoveDataSourceCommand,\n} from \"./data-source.js\";\nimport { makeRemovePageCommand, runRemovePageAction } from \"./page.js\";\nimport { makeRemoveSchemaCommand, runRemoveSchemaAction } from \"./schema.js\";\n\nexport const runRemove = async (name: string | undefined) => {\n const settings = getSettings();\n\n const removeType = abortIfCancel(\n await p.select({\n message: \"What do you want to remove from your project?\",\n options: [\n { label: \"Page\", value: \"page\" },\n {\n label: \"Schema\",\n value: \"schema\",\n hint: \"remove a table or layout schema\",\n },\n ...(settings.appType === \"browser\"\n ? [\n {\n label: \"Data Source\",\n value: \"data\",\n hint: \"remove a database or FileMaker connection\",\n },\n ]\n : []),\n ],\n })\n );\n\n if (removeType === \"data\") {\n await runRemoveDataSourceCommand();\n } else if (removeType === \"page\") {\n await runRemovePageAction();\n } else if (removeType === \"schema\") {\n await runRemoveSchemaAction();\n }\n};\n\nexport function makeRemoveCommand() {\n const removeCommand = new Command(\"remove\")\n .description(\"Remove a component from your project\")\n .argument(\"[name]\", \"Type of component to remove\")\n .addOption(ciOption)\n .addOption(debugOption)\n .action(runRemove);\n\n removeCommand.hook(\"preAction\", (_thisCommand, _actionCommand) => {\n initProgramState(_actionCommand.opts());\n state.baseCommand = \"remove\";\n ensureProofKitProject({ commandName: \"remove\" });\n });\n removeCommand.hook(\"preSubcommand\", (_thisCommand, _subCommand) => {\n initProgramState(_subCommand.opts());\n state.baseCommand = \"remove\";\n ensureProofKitProject({ commandName: \"remove\" });\n });\n\n // Add subcommands\n removeCommand.addCommand(makeRemoveDataSourceCommand());\n removeCommand.addCommand(makeRemovePageCommand());\n removeCommand.addCommand(makeRemoveSchemaCommand());\n\n return removeCommand;\n}\n","import { Command } from \"commander\";\n\nimport { runCodegenCommand } from \"~/generators/fmdapi.js\";\nimport { type Settings } from \"~/utils/parseSettings.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\n\nexport async function runTypegen(opts: { settings: Settings }) {\n const dataSources = opts.settings.dataSources;\n let generateFmTypes = false;\n for await (const db of dataSources) {\n if (db.type === \"supabase\") {\n throw new Error(\"Supabase is not supported yet\");\n } else if (db.type === \"fm\") {\n console.log(\n `Detected FileMaker database, generating types for ${db.name}...`\n );\n generateFmTypes = true;\n } else {\n throw new Error(\"Unable to generate types for unknown database type\");\n }\n }\n\n if (generateFmTypes) {\n await runCodegenCommand();\n }\n}\n\nexport const makeTypegenCommand = () => {\n const typegenCommand = new Command(\"typegen\")\n .description(\"Generate types for your project\")\n .action(runTypegen);\n\n typegenCommand.hook(\"preAction\", (_thisCommand, actionCommand) => {\n const settings = ensureProofKitProject({ commandName: \"typegen\" });\n actionCommand.setOptionValue(\"settings\", settings);\n });\n\n return typegenCommand;\n};\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\n\nimport { initProgramState, state } from \"~/state.js\";\nimport { runAllAvailableUpgrades } from \"~/upgrades/index.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\n\nexport const runUpgrade = async () => {\n initProgramState({});\n state.baseCommand = \"upgrade\";\n ensureProofKitProject({ commandName: \"upgrade\" });\n\n logger.info(\"\\nUpgrading ProofKit components...\\n\");\n\n try {\n await runAllAvailableUpgrades();\n logger.info(chalk.green(`✔ Successfully upgraded components\\n`));\n } catch (error) {\n logger.error(\"Failed to upgrade components:\", error);\n process.exit(1);\n }\n};\n\nexport const upgrade = new Command()\n .name(\"upgrade\")\n .description(\"Upgrade ProofKit components in your project\")\n .action(runUpgrade);\n","import * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport open from \"open\";\n\nimport { DOCS_URL } from \"~/consts.js\";\nimport {\n checkForAvailableUpgrades,\n runAllAvailableUpgrades,\n} from \"~/upgrades/index.js\";\nimport { getSettings } from \"~/utils/parseSettings.js\";\nimport { runAdd } from \"./add/index.js\";\nimport { runDeploy } from \"./deploy/index.js\";\nimport { runRemove } from \"./remove/index.js\";\nimport { runTypegen } from \"./typegen/index.js\";\nimport { runUpgrade } from \"./update/index.js\";\nimport { abortIfCancel } from \"./utils.js\";\n\nexport const runMenu = async () => {\n const settings = getSettings();\n const upgrades = checkForAvailableUpgrades();\n\n if (upgrades.length > 0) {\n p.log.info(\n `${chalk.yellow(\"There are upgrades available for your ProofKit project\")}\\n${upgrades\n .map((upgrade) => `- ${upgrade.title}`)\n .join(\"\\n\")}`\n );\n\n const shouldRunUpgrades = abortIfCancel(\n await p.confirm({\n message: \"Would you like to run them now?\",\n initialValue: true,\n })\n );\n\n if (shouldRunUpgrades) {\n await runAllAvailableUpgrades();\n p.log.success(chalk.green(\"Successfully ran all upgrades\"));\n } else {\n p.log.info(\n `You can apply the upgrades later by running ${chalk.cyan(\n \"proofkit upgrade\"\n )}`\n );\n }\n }\n\n const menuChoice = abortIfCancel(\n await p.select({\n message: \"What would you like to do?\",\n options: [\n {\n label: \"Add Components\",\n value: \"add\",\n hint: \"Add new pages, schemas, data sources, etc.\",\n },\n {\n label: \"Remove Components\",\n value: \"remove\",\n hint: \"Remove pages, schemas, data sources, etc.\",\n },\n {\n label: \"Generate Types\",\n value: \"typegen\",\n hint: \"Update field definitions from your data sources\",\n },\n {\n label: \"Deploy\",\n value: \"deploy\",\n hint: \"Deploy your app to Vercel\",\n },\n {\n label: \"Upgrade Components\",\n value: \"upgrade\",\n hint: \"Update ProofKit components to latest version\",\n },\n {\n label: \"View Documentation\",\n value: \"docs\",\n hint: \"Open ProofKit documentation\",\n },\n ],\n })\n );\n\n switch (menuChoice) {\n case \"add\":\n await runAdd(undefined);\n break;\n case \"remove\":\n await runRemove(undefined);\n break;\n case \"docs\":\n p.log.info(`Opening ${chalk.cyan(DOCS_URL)} in your browser...`);\n await open(DOCS_URL);\n break;\n case \"typegen\":\n await runTypegen({ settings });\n break;\n case \"deploy\":\n await runDeploy();\n break;\n case \"upgrade\":\n await runUpgrade();\n break;\n }\n};\n","import { Command } from \"commander\";\n\nimport { ciOption } from \"~/globalOptions.js\";\nimport { initProgramState, state } from \"~/state.js\";\nimport { ensureProofKitProject } from \"../utils.js\";\nimport { runUpgrade } from \"./index.js\";\n\nexport const makeUpgradeCommand = () => {\n const upgradeCommand = new Command(\"upgrade\")\n .description(\"Upgrade ProofKit components in your project\")\n .addOption(ciOption)\n .action(async (args) => {\n initProgramState(args);\n\n await runUpgrade();\n });\n\n upgradeCommand.hook(\"preAction\", (_thisCommand, _actionCommand) => {\n initProgramState(_actionCommand.opts());\n state.baseCommand = \"upgrade\";\n ensureProofKitProject({ commandName: \"upgrade\" });\n });\n\n return upgradeCommand;\n};\n","import { execSync } from \"child_process\";\nimport https from \"https\";\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport * as semver from \"semver\";\n\nimport { cliName, npmName } from \"~/consts.js\";\nimport { getVersion } from \"./getProofKitVersion.js\";\nimport { getUserPkgManager } from \"./getUserPkgManager.js\";\nimport { logger } from \"./logger.js\";\n\nexport const renderVersionWarning = (npmVersion: string) => {\n const currentVersion = getVersion();\n\n // Check if current version is a pre-release (beta, alpha, etc.)\n if (semver.prerelease(currentVersion)) {\n logger.warn(` You are using a pre-release version of ${cliName}.`);\n logger.warn(\" Please report any bugs you encounter.\");\n } else if (semver.valid(currentVersion) && semver.valid(npmVersion) && semver.lt(currentVersion, npmVersion)) {\n logger.warn(` You are using an outdated version of ${cliName}.`);\n logger.warn(\n \" Your version:\",\n currentVersion + \".\",\n \"Latest version in the npm registry:\",\n npmVersion\n );\n logger.warn(\" Please run the CLI with @latest to get the latest updates.\");\n }\n console.log(\"\");\n};\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the LICENSE file in the root\n * directory of this source tree.\n * https://github.com/facebook/create-react-app/blob/main/packages/create-react-app/LICENSE\n */\ninterface DistTagsBody {\n latest: string;\n}\n\nfunction checkForLatestVersion(): Promise<string> {\n return new Promise((resolve, reject) => {\n https\n .get(\n \"https://registry.npmjs.org/-/package/@proofkit/cli/dist-tags\",\n (res) => {\n if (res.statusCode === 200) {\n let body = \"\";\n res.on(\"data\", (data) => (body += data));\n res.on(\"end\", () => {\n resolve((JSON.parse(body) as DistTagsBody).latest);\n });\n } else {\n reject();\n }\n }\n )\n .on(\"error\", () => {\n // logger.error(\"Unable to check for latest version.\");\n reject();\n });\n });\n}\n\nexport const getNpmVersion = async () =>\n // `fetch` to the registry is faster than `npm view` so we try that first\n checkForLatestVersion().catch(() => {\n try {\n return execSync(\"npm view proofkit version\").toString().trim();\n } catch {\n return null;\n }\n });\n\nexport const checkAndRenderVersionWarning = async () => {\n const npmVersion = await getNpmVersion();\n const currentVersion = getVersion();\n \n // Only show warning if current version is valid, npm version is valid, and current is actually older\n if (\n npmVersion && \n semver.valid(currentVersion) && \n semver.valid(npmVersion) && \n semver.lt(currentVersion, npmVersion)\n ) {\n const pkgManager = getUserPkgManager();\n p.log.warn(\n `${chalk.yellow(\n `You are using an outdated version of ${cliName}.`\n )} Your version: ${currentVersion}. Latest version: ${npmVersion}.\n Run ${chalk.magenta.bold(`${pkgManager} install ${npmName}@latest`)} to get the latest updates.`\n );\n }\n return { npmVersion, currentVersion };\n};\n","#!/usr/bin/env node --no-warnings\nimport * as p from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\n\nimport { makeInitCommand, runInit } from \"~/cli/init.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport { proofGradient, renderTitle } from \"~/utils/renderTitle.js\";\nimport { makeAddCommand, runAdd } from \"./cli/add/index.js\";\nimport { makeDeployCommand } from \"./cli/deploy/index.js\";\nimport { runMenu } from \"./cli/menu.js\";\nimport { makeRemoveCommand } from \"./cli/remove/index.js\";\nimport { makeTypegenCommand } from \"./cli/typegen/index.js\";\nimport { makeUpgradeCommand } from \"./cli/update/makeUpgradeCommand.js\";\nimport { UserAbortedError } from \"./cli/utils.js\";\nimport { npmName } from \"./consts.js\";\nimport { ciOption } from \"./globalOptions.js\";\nimport { initProgramState, state } from \"./state.js\";\nimport { getVersion } from \"./utils/getProofKitVersion.js\";\nimport { getSettings, type Settings } from \"./utils/parseSettings.js\";\nimport { checkAndRenderVersionWarning } from \"./utils/renderVersionWarning.js\";\n\nconst version = getVersion();\n\nconst main = async () => {\n const program = new Command();\n renderTitle();\n await checkAndRenderVersionWarning();\n\n program\n .name(npmName)\n .version(version)\n .command(\"default\", { hidden: true, isDefault: true })\n .addOption(ciOption)\n .action(async (args) => {\n initProgramState(args);\n\n let settings: Settings | undefined;\n try {\n settings = getSettings();\n } catch {}\n\n if (state.ci) {\n logger.warn(\"Running in CI mode\");\n }\n\n if (settings) {\n p.intro(`Found ${proofGradient(\"ProofKit\")} project`);\n await runMenu();\n } else {\n p.intro(\n `No ${proofGradient(\"ProofKit\")} project found, running \\`init\\``\n );\n await runInit();\n }\n })\n .addHelpText(\n \"afterAll\",\n `\\n The ProofKit CLI was inspired by the ${chalk\n .hex(\"#E8DCFF\")\n .bold(\"t3 stack\")}\\n`\n );\n\n program.addCommand(makeInitCommand());\n program.addCommand(makeAddCommand());\n program.addCommand(makeRemoveCommand());\n program.addCommand(makeTypegenCommand());\n program.addCommand(makeDeployCommand());\n program.addCommand(makeUpgradeCommand());\n\n await program.parseAsync(process.argv);\n process.exit(0);\n};\n\nmain().catch((err) => {\n if (err instanceof UserAbortedError) {\n process.exit(0);\n } else if (err instanceof Error) {\n logger.error(\"Aborting installation...\");\n logger.error(err);\n } else {\n logger.error(\n \"An unknown error has occurred. Please open an issue on github with the below:\"\n );\n console.log(err);\n }\n process.exit(1);\n});\n"],"x_google_ignoreList":[2,3,4,5,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,104,105,106,107,108,109,110,111,112,113,114,115,131,132,133,134,135,136,137],"mappings":";60CAMA,MAAa,OAAmB,CAC9B,IAAM,EAAkB,EAAK,KAAK,EAAU,gBAEtC,EAAqB,EAAG,aAAa,GAE3C,OAAO,EAAmB,SAAW,SAG1B,OACX,eAGW,OAA4B,CAEvC,GAAI,CACF,OAAO,QAAQ,SAAS,KAAK,MAAM,KAAK,IAAM,UACxC,CACN,MAAO,OAIE,OACX,QCtBIA,GAAa,EAAc,OAAO,KAAK,KACvC,GAAW,EAAK,QAAQA,IACjB,EAAW,EAAK,KAAK,GAAU,OAE/B,GAAU,gBACV,GAAW,uBAElBsX,GAAU,KACV,GAAoBA,GAAQ,OAGrB,GAAa;;;;;;;EAOxB,IAAI,OAAO,GAAK,IAAmB,GAAGA,GAAQ;EAEnC,GAAmB,kBAMnB,GAAA,uBChCb,SAAyC,EAAa,EAAM,EAAa,EAAQ,CAC7E,SAAS,EAAK,EAAM,EAAK,CACrB,IAAI,EASJ,IAAK,IAAM,KARX,OAAO,eAAe,EAAM,OAAQ,CAChC,MAAO,EAAK,MAAQ,GACpB,WAAY,MAEf,EAAK,EAAK,MAAM,SAAW,EAAG,OAAS,IAAI,KAC5C,EAAK,KAAK,OAAO,IAAI,GACrB,EAAY,EAAM,GAEF,EAAE,UACR,KAAK,GACP,OAAO,eAAe,EAAM,EAAG,CAAE,MAAO,EAAE,UAAU,GAAG,KAAK,KAEpE,EAAK,KAAK,OAAS,EACnB,EAAK,KAAK,IAAM,EAGpB,IAAM,EAAS,GAAQ,QAAU,OACjC,MAAM,UAAmB,CAAO,EAEhC,OAAO,eAAe,EAAY,OAAQ,CAAE,MAAO,IACnD,SAAS,EAAE,EAAK,CACZ,IAAI,EACJ,IAAM,EAAO,GAAQ,OAAS,IAAI,EAAe,KACjD,EAAK,EAAM,IACV,EAAK,EAAK,MAAM,WAAa,EAAG,SAAW,IAC5C,IAAK,IAAM,KAAM,EAAK,KAAK,SACvB,IAEJ,OAAO,EAWX,OATA,OAAO,eAAe,EAAG,OAAQ,CAAE,MAAO,IAC1C,OAAO,eAAe,EAAG,OAAO,YAAa,CACzC,MAAQ,GACA,GAAQ,QAAU,aAAgB,EAAO,OAClC,GACJ,GAAM,MAAM,QAAQ,IAAI,KAGvC,OAAO,eAAe,EAAG,OAAQ,CAAE,MAAO,IACnC,EAGX,MAAa,GAAS,OAAO,aAC7B,IAAa,GAAb,cAAoC,KAAM,CACtC,aAAc,CACV,MAAM,8EAGd,MAAa,GAAe,GAC5B,SAAgBhD,EAAO,EAAW,CAG9B,OAFI,GACA,OAAO,OAAO,GAAc,GACzB,s8BCtDX,SAAgB,GAAY,EAAK,CAC7B,OAAO,EAEX,SAAgB,GAAe,EAAK,CAChC,OAAO,EAEX,SAAgB,GAAS,EAAM,EAC/B,SAAgB,GAAY,EAAI,CAC5B,MAAU,QAEd,SAAgB,GAAO,EAAG,EAC1B,SAAgB,GAAc,EAAS,CACnC,IAAM,EAAgB,OAAO,OAAO,GAAS,OAAQ,GAAM,OAAO,GAAM,UAClE,EAAS,OAAO,QAAQ,GACzB,QAAQ,CAAC,EAAG,KAAO,EAAc,QAAQ,CAAC,KAAO,IACjD,KAAK,CAAC,EAAG,KAAO,GACrB,OAAO,EAEX,SAAgB,EAAW,EAAO,EAAY,IAAK,CAC/C,OAAOgE,EAAM,IAAK,GAAQ,EAAmB,IAAM,KAAK,GAE5D,SAAgB,GAAsB,EAAG,EAAO,CAG5C,OAFI,OAAO,GAAU,SACV,EAAM,WACV,EAEX,SAAgB,GAAO,EAAQ,CAE3B,MAAO,CACH,IAAI,OAAQ,CACE,CACN,IAAM,EAAQ,IAEd,OADA,OAAO,eAAe,KAAM,QAAS,CAAE,UAChC,EAEX,MAAU,MAAM,8BAI5B,SAAgBlY,GAAQ,EAAO,CAC3B,OAAO,GAAU,KAErB,SAAgB,GAAW,EAAQ,CAC/B,IAAM,EAAQ,EAAO,WAAW,KAAO,EAAI,EACrC,EAAM,EAAO,SAAS,KAAO,EAAO,OAAS,EAAI,EAAO,OAC9D,OAAO,EAAO,MAAM,EAAO,GAE/B,SAAgBC,GAAmB,EAAK,EAAM,CAC1C,IAAM,GAAe,EAAI,WAAW,MAAM,KAAK,IAAM,IAAI,OACnD,GAAgB,EAAK,WAAW,MAAM,KAAK,IAAM,IAAI,OACrD,EAAW,EAAc,EAAe,EAAc,EACtD,EAAS,OAAO,SAAS,EAAI,QAAQ,GAAU,QAAQ,IAAK,KAC5D,EAAU,OAAO,SAAS,EAAK,QAAQ,GAAU,QAAQ,IAAK,KACpE,OAAQ,EAAS,EAAW,IAAM,EAEtC,SAAgB,EAAW,EAAQ,EAAK,EAAQ,CAE5C,OAAO,eAAekW,EAAQ,EAAK,CAC/B,KAAM,CACQ,CACN,IAAM,EAAQ,IAEd,MADA,GAAO,GAAO,EACP,EAEX,MAAU,MAAM,6BAEpB,IAAI,EAAG,CACH,OAAO,eAAeA,EAAQ,EAAK,CAC/B,MAAO,KAKf,aAAc,KAGtB,SAAgB,GAAW,EAAQ,EAAM,EAAO,CAC5C,OAAO,eAAe,EAAQ,EAAM,CAChC,QACA,SAAU,GACV,WAAY,GACZ,aAAc,KAGtB,SAAgB,GAAiB,EAAK,EAAM,CAGxC,OAFKW,EAEEA,EAAK,QAAQ,EAAK,IAAQ,IAAM,GAAM,GADlC,EAGf,SAAgB,GAAiB,EAAa,CAC1C,IAAM,EAAO,OAAO,KAAK,GACnB,EAAW,EAAK,IAAK,GAAQ,EAAY,IAC/C,OAAO,QAAQ,IAAI,GAAU,KAAM,GAAY,CAC3C,IAAM,EAAc,GACpB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC7B,EAAY,EAAK,IAAM,EAAQ,GAEnC,OAAO,IAGf,SAAgB,GAAa,EAAS,GAAI,CACtC,IACI,EAAM,GACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,IACxB,GAAO,6BAAM,KAAK,MAAM,KAAK,SAAW,KAE5C,OAAO,EAEX,SAAgB,GAAI,EAAK,CACrB,OAAO,KAAK,UAAU,GAE1B,MAAa,GAAoB,MAAM,kBACjC,MAAM,mBACL,GAAG,IAAU,GACpB,SAAgB7S,GAAS,EAAM,CAC3B,OAAO,OAAO,GAAS,YAAY,GAAiB,CAAC,MAAM,QAAQ,GAEvE,MAAa,GAAa,OAAa,CACnC,GAAI,OAAO,UAAc,KAAe,WAAW,WAAW,SAAS,cACnE,MAAO,GAEX,GAAI,CACA,IAAM,EAAI,SAEV,OADA,IAAI,EAAE,IACC,QAED,CACN,MAAO,MAMf,SAAgB,GAAc,EAAG,CAC7B,GAAIA,GAAS,KAAO,GAChB,MAAO,GAEX,IAAM,EAAO,EAAE,YACf,GAAI,IAAS,IAAA,GACT,MAAO,GAEX,IAAM,EAAO,EAAK,UAOlB,MAHA,EAHIA,GAAS,KAAU,IAGnB,OAAO,UAAU,eAAe,KAAK,EAAM,mBAAqB,IAKxE,SAAgB,GAAQ,EAAM,CAC1B,IAAI,EAAW,EACf,IAAK,IAAM,KAAO,EACV,OAAO,UAAU,eAAe,KAAK,EAAM,IAC3C,IAGR,OAAO,EAEX,MAAa5D,GAAiB,GAAS,CACnC,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,YACD,MAAO,YACX,IAAK,SACD,MAAO,SACX,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SACxC,IAAK,UACD,MAAO,UACX,IAAK,WACD,MAAO,WACX,IAAK,SACD,MAAO,SACX,IAAK,SACD,MAAO,SACX,IAAK,SAsBD,OArBI,MAAM,QAAQ,GACP,QAEP,IAAS,KACF,OAEP,EAAK,MAAQ,OAAO,EAAK,MAAS,YAAc,EAAK,OAAS,OAAO,EAAK,OAAU,WAC7E,UAEP,OAAO,IAAQ,KAAe,aAAgB,IACvC,MAEP,OAAO,IAAQ,KAAe,aAAgB,IACvC,MAEP,OAAO,KAAS,KAAe,aAAgB,KACxC,OAEP,OAAO,KAAS,KAAe,aAAgB,KACxC,OAEJ,SACX,QACI,MAAU,MAAM,sBAAsB,OAGrC,GAAmB,IAAI,IAAI,CAAC,SAAU,SAAU,WAChD,GAAiB,IAAI,IAAI,CAAC,SAAU,SAAU,SAAU,UAAW,SAAU,cAC1F,SAAgB,GAAY,EAAK,CAC7B,OAAO,EAAI,QAAQ,sBAAuB,QAG9C,SAAgB,GAAM,EAAM,EAAK,EAAQ,CACrC,IAAM,EAAK,IAAI,EAAK,KAAK,OAAO,GAAO,EAAK,KAAK,KAGjD,OAFI,CAAC,GAAO,GAAQ,UAChB,EAAG,KAAK,OAAS,GACd,EAEX,SAAgB,EAAgB,EAAS,CACrC,IAAM,EAAS,EACf,GAAI,CAAC,EACD,MAAO,GACX,GAAI,OAAO,GAAW,SAClB,MAAO,CAAE,UAAa,GAC1B,GAAI,GAAQ,UAAY,IAAA,GAAW,CAC/B,GAAI,GAAQ,QAAU,IAAA,GAClB,MAAU,MAAM,oDACpB,EAAO,MAAQ,EAAO,QAK1B,OAHA,OAAO,EAAO,QACV,OAAO,EAAO,OAAU,SACjB,CAAE,GAAG,EAAQ,UAAa,EAAO,OACrC,EAEX,SAAgB,GAAuB,EAAQ,CAC3C,IAAI,EACJ,OAAO,IAAI,MAAM,GAAI,CACjB,IAAI,EAAG,EAAM,EAAU,CAEnB,MADA,CAAW,IAAS,IACb,QAAQ,IAAI,EAAQ,EAAM,IAErC,IAAI,EAAG,EAAM,EAAO,EAAU,CAE1B,MADA,CAAW,IAAS,IACb,QAAQ,IAAI,EAAQ,EAAM,EAAO,IAE5C,IAAI,EAAG,EAAM,CAET,MADA,CAAW,IAAS,IACb,QAAQ,IAAI,EAAQ,IAE/B,eAAe,EAAG,EAAM,CAEpB,MADA,CAAW,IAAS,IACb,QAAQ,eAAe,EAAQ,IAE1C,QAAQ,EAAG,CAEP,MADA,CAAW,IAAS,IACb,QAAQ,QAAQ,IAE3B,yBAAyB,EAAG,EAAM,CAE9B,MADA,CAAW,IAAS,IACb,QAAQ,yBAAyB,EAAQ,IAEpD,eAAe,EAAG,EAAM,EAAY,CAEhC,MADA,CAAW,IAAS,IACb,QAAQ,eAAe,EAAQ,EAAM,MAIxD,SAAgB,EAAmB,EAAO,CAKtC,OAJI,OAAO,GAAU,SACV,EAAM,WAAa,IAC1B,OAAO,GAAU,SACV,IAAI,EAAM,GACd,GAAG,IAEd,SAAgB,GAAa,EAAO,CAChC,OAAO,OAAO,KAAK,GAAO,OAAQ,GACvB,EAAM,GAAG,KAAK,QAAU,YAAc,EAAM,GAAG,KAAK,SAAW,YAG9E,MAAa,GAAuB,CAChC,QAAS,CAAC,oBACV,MAAO,CAAC,YAAa,YACrB,OAAQ,CAAC,EAAG,YACZ,QAAS,CAAC,sBAAwB,sBAClC,QAAS,CAAC,CAAC,OAAO,UAAW,OAAO,YAE3B,GAAuB,CAChC,MAAO,CAAgB,OAAO,wBAAwC,OAAO,wBAC7E,OAAQ,CAAgB,OAAO,GAAmB,OAAO,0BAE7D,SAAgB,GAAK,EAAQ,EAAM,CAC/B,IAAM,EAAW,GACX,EAAU4Z,EAAO,KAAK,IAC5B,IAAK,IAAM,KAAO,EAAM,CACpB,GAAI,EAAE,KAAO,EAAQ,OACjB,MAAU,MAAM,sBAAsB,EAAI,IAE9C,GAAI,CAAC,EAAK,GACN,SAEJ,EAAS,GAAO,EAAQ,MAAM,GAElC,OAAO,GAAMA,EAAQ,CACjB,GAAGA,EAAO,KAAK,IACf,MAAO,EACP,OAAQ,KAGhB,SAAgB,GAAK,EAAQ,EAAM,CAC/B,IAAM,EAAW,CAAE,GAAGA,EAAO,KAAK,IAAI,OAChC,EAAUA,EAAO,KAAK,IAC5B,IAAK,IAAM,KAAO,EAAM,CACpB,GAAI,EAAE,KAAO,EAAQ,OACjB,MAAU,MAAM,sBAAsB,EAAI,IAE9C,GAAI,CAAC,EAAK,GACN,SACJ,OAAO,EAAS,GAEpB,OAAO,GAAMA,EAAQ,CACjB,GAAGA,EAAO,KAAK,IACf,MAAO,EACP,OAAQ,KAGhB,SAAgB,GAAO,EAAQ,EAAO,CAClC,IAAM,EAAM,CACR,GAAGA,EAAO,KAAK,IACf,IAAI,OAAQ,CACR,IAAM,EAAS,CAAE,GAAGA,EAAO,KAAK,IAAI,MAAO,GAAG,GAE9C,OADA,GAAW,KAAM,QAAS,GACnB,GAEX,OAAQ,IAEZ,OAAO,GAAMA,EAAQ,GAEzB,SAAgB,GAAM,EAAG,EAAG,CACxB,OAAO,GAAM,EAAG,CACZ,GAAG,EAAE,KAAK,IACV,IAAI,OAAQ,CACR,IAAM,EAAS,CAAE,GAAG,EAAE,KAAK,IAAI,MAAO,GAAG,EAAE,KAAK,IAAI,OAEpD,OADA,GAAW,KAAM,QAAS,GACnB,GAEX,SAAU,EAAE,KAAK,IAAI,SACrB,OAAQ,KAGhB,SAAgB,GAAQ,EAAO,EAAQ,EAAM,CACzC,IAAM,EAAWA,EAAO,KAAK,IAAI,MAC3B,EAAQ,CAAE,GAAG,GACnB,GAAI,EACA,IAAK,IAAM,KAAO,EAAM,CACpB,GAAI,EAAE,KAAO,GACT,MAAU,MAAM,sBAAsB,EAAI,IAE9C,GAAI,CAAC,EAAK,GACN,SACJ,EAAM,GAAO/N,EACP,IAAIA,EAAM,CACR,KAAM,WACN,UAAW,EAAS,KAEtB,EAAS,QAInB,IAAK,IAAM,KAAO,EACd,EAAM,GAAOA,EACP,IAAIA,EAAM,CACR,KAAM,WACN,UAAW,EAAS,KAEtB,EAAS,GAGvB,OAAO,GAAM+N,EAAQ,CACjB,GAAGA,EAAO,KAAK,IACf,QACA,OAAQ,KAGhB,SAAgB,GAAS,EAAO,EAAQ,EAAM,CAC1C,IAAM,EAAWA,EAAO,KAAK,IAAI,MAC3B,EAAQ,CAAE,GAAG,GACnB,GAAI,EACA,IAAK,IAAM,KAAO,EAAM,CACpB,GAAI,EAAE,KAAO,GACT,MAAU,MAAM,sBAAsB,EAAI,IAE9C,GAAI,CAAC,EAAK,GACN,SAEJ,EAAM,GAAO,IAAI/N,EAAM,CACnB,KAAM,cACN,UAAW,EAAS,UAK5B,IAAK,IAAM,KAAO,EAEd,EAAM,GAAO,IAAIA,EAAM,CACnB,KAAM,cACN,UAAW,EAAS,KAIhC,OAAO,GAAM+N,EAAQ,CACjB,GAAGA,EAAO,KAAK,IACf,QAEA,OAAQ,KAGhB,SAAgB,GAAQ,EAAG,EAAa,EAAG,CACvC,IAAK,IAAI,EAAI,EAAY,EAAI,EAAE,OAAO,OAAQ,IAC1C,GAAI,EAAE,OAAO,GAAG,WAAa,GACzB,MAAO,GAEf,MAAO,GAEX,SAAgB,GAAa,EAAM,EAAQ,CACvC,OAAO,EAAO,IAAK,GAAQ,CACvB,IAAI,EAGJ,OAFC,EAAK,GAAK,OAAS,EAAG,KAAO,IAC9B,EAAI,KAAK,QAAQnD,GACV,IAGf,SAAgB,GAAc,EAAS,CACnC,OAAO,OAAO,GAAY,SAAW,EAAU,GAAS,QAE5D,SAAgB,GAAc,EAAK,EAAK,EAAQ,CAC5C,IAAM,EAAO,CAAE,GAAG,EAAK,KAAM,EAAI,MAAQ,IAEzC,GAAI,CAAC,EAAI,QAAS,CACd,IAAM,EAAU,GAAc,EAAI,MAAM,KAAK,KAAK,QAAQ,KACtD,GAAc,GAAK,QAAQ,KAC3B,GAAc5C,EAAO,cAAc,KACnC,GAAcA,EAAO,cAAc,KACnC,gBACJ,EAAK,QAAU,EAQnB,OALA,OAAO,EAAK,KACZ,OAAO,EAAK,SACP,GAAK,aACN,OAAO,EAAK,MAET,EAEX,SAAgB,GAAiB,EAAO,CAOpC,OANI,aAAiB,IACV,MACP,aAAiB,IACV,MACP,aAAiB,KACV,OACJ,UAEX,SAAgB,GAAoB,EAAO,CAKvC,OAJI,MAAM,QAAQ,GACP,QACP,OAAO,GAAU,SACV,SACJ,UAEX,SAAgB,GAAM,GAAG,EAAM,CAC3B,GAAM,CAAC,EAAK,EAAO,GAAQ,EAS3B,OARI,OAAO,GAAQ,SACR,CACH,QAAS,EACT,KAAM,SACN,QACA,QAGD,CAAE,GAAG,GAEhB,SAAgB,GAAU,EAAK,CAC3B,OAAO,OAAO,QAAQ,GACjB,QAAQ,CAAC,EAAG,KAEN,OAAO,MAAM,OAAO,SAAS,EAAG,MAEtC,IAAK,GAAO,EAAG,IAGxB,IAAa,GAAb,KAAmB,CACf,YAAY,GAAG,EAAO,ICve1B,MAAMzT,IAAe,EAAM,IAAQ,CAC/B,EAAK,KAAO,YACZ,OAAO,eAAe,EAAM,OAAQ,CAChC,MAAO,EAAK,KACZ,WAAY,KAEhB,OAAO,eAAe,EAAM,SAAU,CAClC,MAAO,EACP,WAAY,KAEhB,OAAO,eAAe,EAAM,UAAW,CACnC,KAAM,CACF,OAAO,KAAK,UAAU,EAAA,GAAiC,IAE3D,WAAY,MAIP,GAAY,EAAa,YAAaA,IACtC,GAAgB,EAAa,YAAaA,GAAa,CAAE,OAAQ,QAC9E,SAAgB,GAAa,EAAO,EAAU,GAAUgX,EAAM,QAAS,CACnE,IAAM,EAAc,GACd,EAAa,GACnB,IAAK,IAAM,KAAO2C,EAAM,OAChB,EAAI,KAAK,OAAS,GAClB,EAAY,EAAI,KAAK,IAAM,EAAY,EAAI,KAAK,KAAO,GACvD,EAAY,EAAI,KAAK,IAAI,KAAK,EAAO,KAGrC,EAAW,KAAK,EAAO,IAG/B,MAAO,CAAE,aAAY,eAEzB,SAAgB,GAAY,EAAO,EAAS,CACxC,IAAM,EAAS,GACX,SAAU,EAAO,CACb,OAAO3C,EAAM,SAEf,EAAc,CAAE,QAAS,IACzB,EAAgB,GAAU,CAC5B,IAAK,IAAMA,KAAS2C,EAAM,OACtB,GAAI3C,EAAM,OAAS,iBAAmBA,EAAM,OAAO,OAC/C,EAAM,OAAO,IAAK,GAAW,EAAa,CAAE,oBAEvCA,EAAM,OAAS,cACpB,EAAa,CAAE,OAAQA,EAAM,iBAExBA,EAAM,OAAS,kBACpB,EAAa,CAAE,OAAQA,EAAM,iBAExBA,EAAM,KAAK,SAAW,EAC3B,EAAY,QAAQ,KAAK,EAAOA,QAE/B,CACD,IAAI,EAAO,EACP,EAAI,EACR,KAAO,EAAIA,EAAM,KAAK,QAAQ,CAC1B,IAAM,EAAKA,EAAM,KAAK,GAChB,EAAW,IAAMA,EAAM,KAAK,OAAS,EACtC,GAID,EAAK,GAAM,EAAK,IAAO,CAAE,QAAS,IAClC,EAAK,GAAI,QAAQ,KAAK,EAAOA,KAJ7B,EAAK,GAAM,EAAK,IAAO,CAAE,QAAS,IAMtC,EAAO,EAAK,GACZ,OAMhB,OADA,EAAa2C,GACN,EAEX,SAAgB,GAAa,EAAO,EAAS,CACzC,IAAM,EAAS,GACX,SAAU,EAAO,CACb,OAAO3C,EAAM,SAEf,EAAS,CAAE,OAAQ,IACnB,GAAgB,EAAO,EAAO,KAAO,CACvC,IAAI,EAAI,EACR,IAAK,IAAMA,KAAS2C,EAAM,OACtB,GAAI3C,EAAM,OAAS,iBAAmBA,EAAM,OAAO,OAE/C,EAAM,OAAO,IAAK,GAAW,EAAa,CAAE,UAAUA,EAAM,eAEvDA,EAAM,OAAS,cACpB,EAAa,CAAE,OAAQA,EAAM,QAAUA,EAAM,cAExCA,EAAM,OAAS,kBACpB,EAAa,CAAE,OAAQA,EAAM,QAAUA,EAAM,UAE5C,CACD,IAAM,EAAW,CAAC,GAAGX,EAAM,GAAGW,EAAM,MACpC,GAAI,EAAS,SAAW,EAAG,CACvB,EAAO,OAAO,KAAK,EAAOA,IAC1B,SAEJ,IAAI,EAAO,EACP,EAAI,EACR,KAAO,EAAI,EAAS,QAAQ,CACxB,IAAM,EAAK,EAAS,GACd,EAAW,IAAM,EAAS,OAAS,EACrC,OAAO,GAAO,UACd,AAAoB,EAAK,aAAa,IACrC,EAAK,EAAK,YAAY,KAAQ,EAAG,GAAM,CAAE,OAAQ,KAClD,EAAO,EAAK,WAAW,KAGvB,AAAe,EAAK,QAAQ,IAC3B,EAAK,EAAK,OAAO,KAAQ,EAAG,GAAM,CAAE,OAAQ,KAC7C,EAAO,EAAK,MAAM,IAElB,GACA,EAAK,OAAO,KAAK,EAAOA,IAE5B,OAMhB,OADA,EAAa2C,GACN,EAkCX,SAAgB,GAAU,EAAM,CAC5B,IAAM,EAAO,GACb,IAAK,IAAM,KAAOtD,EACV,OAAO,GAAQ,SACf,EAAK,KAAK,IAAI,EAAI,IACb,OAAO,GAAQ,SACpB,EAAK,KAAK,IAAI,KAAK,UAAU,OAAO,IAAM,IACrC,SAAS,KAAK,GACnB,EAAK,KAAK,IAAI,KAAK,UAAU,GAAK,KAE9B,EAAK,QACL,EAAK,KAAK,KACd,EAAK,KAAK,IAGlB,OAAO,EAAK,KAAK,IAErB,SAAgB,GAAc,EAAO,CACjC,IAAM,EAAQ,GAER,EAAS,CAAC,GAAGsD,EAAM,QAAQ,MAAM,EAAG,IAAM,EAAE,KAAK,OAAS,EAAE,KAAK,QAEvE,IAAK,IAAM3C,KAAS,EAChB,EAAM,KAAK,KAAKA,EAAM,WAClBA,EAAM,MAAM,QACZ,EAAM,KAAK,UAAU,GAAUA,EAAM,SAG7C,OAAO,EAAM,KAAK;GC1LtB,MAAa,GAAU,IAAU,EAAQ,EAAO,EAAM,IAAY,CAC9D,IAAM,EAAM,EAAO,OAAO,OAAO,EAAM,CAAE,MAAO,KAAW,CAAE,MAAO,IAC9D,EAASwC,EAAO,KAAK,IAAI,CAAE,QAAO,OAAQ,IAAM,GACtD,GAAI,aAAkB,QAClB,MAAM,IAAA,GAEV,GAAI,EAAO,OAAO,OAAQ,CACtB,IAAM,EAAI,IAAK,GAAS,KAAO,GAAM,EAAO,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,OAExF,MADA,GAAuB,EAAG,GAAS,QAC7B,EAEV,OAAO,EAAO,OAELrG,GAAuB,GAAA,IACvB,GAAe,GAAS,MAAO,EAAQ,EAAO,EAAM,IAAW,CACxE,IAAM,EAAM,EAAO,OAAO,OAAO,EAAM,CAAE,MAAO,KAAU,CAAE,MAAO,IAC/D,EAASqG,EAAO,KAAK,IAAI,CAAE,QAAO,OAAQ,IAAM,GAGpD,GAFI,aAAkB,UAClB,EAAS,MAAM,GACf,EAAO,OAAO,OAAQ,CACtB,IAAM,EAAI,IAAK,GAAQ,KAAO,GAAM,EAAO,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,OAEvF,MADA,GAAuB,EAAG,GAAQ,QAC5B,EAEV,OAAO,EAAO,OAELtN,GAA4B,GAAA,IAC5B,GAAc,IAAU,EAAQ,EAAO,IAAS,CACzD,IAAM,EAAM,EAAO,CAAE,GAAG,EAAM,MAAO,IAAU,CAAE,MAAO,IAClD,EAASsN,EAAO,KAAK,IAAI,CAAE,QAAO,OAAQ,IAAM,GACtD,GAAI,aAAkB,QAClB,MAAM,IAAA,GAEV,OAAO,EAAO,OAAO,OACf,CACE,QAAS,GACT,MAAO,IAAK,GAAA,IAA0B,EAAO,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,QAE3F,CAAE,QAAS,GAAM,KAAM,EAAO,QAE3B1W,GAA2B,GAAA,IAC3B,GAAmB,GAAS,MAAO,EAAQ,EAAO,IAAS,CACpE,IAAM,EAAM,EAAO,OAAO,OAAO,EAAM,CAAE,MAAO,KAAU,CAAE,MAAO,IAC/D,EAAS0W,EAAO,KAAK,IAAI,CAAE,QAAO,OAAQ,IAAM,GAGpD,OAFI,aAAkB,UAClB,EAAS,MAAM,GACZ,EAAO,OAAO,OACf,CACE,QAAS,GACT,MAAO,IAAI,EAAK,EAAO,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,QAErE,CAAE,QAAS,GAAM,KAAM,EAAO,QAE3BzW,GAAgC,GAAA,2mBCxD7C,MAAatC,GAAO,mBACPC,GAAQ,cACRC,GAAO,wCACPC,GAAM,oBACNC,GAAQ,oBACRC,GAAS,sBAETC,GAAW,gGAEX,GAAmB,2SAEnBC,GAAO,kFAIPC,GAAQ,GACZwV,EAEM,OAAO,mCAAmCA,EAAQ,0DADlD,oIAGF,GAAsB,GAAK,GAC3B,GAAsB,GAAK,GAC3B,GAAsB,GAAK,GAE3BtV,GAAQ,mGAER,GAAa,uIAEb,GAAe,yJAEf,GAAe,iCACf,GAAe,uIAEfC,GAAS,uDACtB,SAAgBC,IAAQ,CACpB,OAAO,IAAI,OAAOD,GAAQ,KAE9B,MAAaE,GAAO,sHACPC,GAAO,+FACPC,GAAS,2IACTC,GAAS,iIAETkV,GAAS,8EACThV,GAAY,mBAIZ,GAAW,oCACX,GAAS,mEAETC,GAAO,2BAEd,GAAa,sNACNsM,GAAyB,OAAO,IAAI,GAAW,IAC5D,SAAS,GAAW,EAAM,CACtB,IAAM,EAAO,8BACP,EAAQ,OAAO,EAAK,WAAc,SAClC,EAAK,YAAc,GACf,GAAG,IACH,EAAK,YAAc,EACf,GAAG,EAAK,WACR,GAAG,EAAK,kBAAkB,EAAK,UAAU,GACjD,GAAG,EAAK,4BACd,OAAO,EAEX,SAAgBpM,GAAK,EAAM,CACvB,OAAW,OAAO,IAAI,GAAW,GAAM,IAG3C,SAAgBC,GAAS,EAAM,CAC3B,IAAMD,EAAO,GAAW,CAAE,UAAW,EAAK,YACpC,EAAO,CAAC,KACV,EAAK,OACL,EAAK,KAAK,IACV,EAAK,QACL,EAAK,KAAK,uBACd,IAAME,EAAY,GAAGF,EAAK,KAAK,EAAK,KAAK,KAAK,GAC9C,OAAW,OAAO,IAAI,GAAW,MAAME,EAAU,KAErD,MAAauV,GAAU,GAAW,CAC9B,IAAM,EAAQ,EAAS,YAAY,GAAQ,SAAW,EAAE,GAAG,GAAQ,SAAW,GAAG,GAAK,YACtF,OAAW,OAAO,IAAI,EAAM,KAEnB9J,GAAS,UACT,GAAU,QACVJ,GAAS,oBACTE,GAAU,cACjB5B,GAAQ,QAERD,GAAa,aAGN,GAAY,YAEZ,GAAY,YC1FZ,EAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,IAAI,EACJ,AAAc,EAAK,OAAO,GAC1B,EAAK,KAAK,IAAM,GACf,EAAK,EAAK,MAAM,WAAa,EAAG,SAAW,MAE1C,GAAmB,CACrB,OAAQ,SACR,OAAQ,SACR,OAAQ,QAEC,GAAkC,EAAkB,qBAAsB,EAAM,IAAQ,CACjG,EAAU,KAAK,EAAM,GACrB,IAAM,EAAS,GAAiB,OAAO,EAAI,OAC3C,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMvI,EAAK,KAAK,IAChB,GAAQ,EAAI,UAAY,EAAI,QAAU,EAAI,mBAAqB,IACjE,EAAI,MAAQ,IACR,EAAI,UACJ,EAAI,QAAU,EAAI,MAElB,EAAI,iBAAmB,EAAI,SAGvC,EAAK,KAAK,MAAS,GAAY,EACvB,EAAI,UAAY,EAAQ,OAAS,EAAI,MAAQ,EAAQ,MAAQ,EAAI,QAGrE,EAAQ,OAAO,KAAK,CAChB,SACA,KAAM,UACN,QAAS,EAAI,MACb,MAAO,EAAQ,MACf,UAAW,EAAI,UACf,OACA,SAAU,CAAC,EAAI,WAId,GAAqC,EAAkB,wBAAyB,EAAM,IAAQ,CACvG,EAAU,KAAK,EAAM,GACrB,IAAM,EAAS,GAAiB,OAAO,EAAI,OAC3C,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IAChB,GAAQ,EAAI,UAAY,EAAI,QAAU,EAAI,mBAAqB,KACjE,EAAI,MAAQ,IACR,EAAI,UACJ,EAAI,QAAU,EAAI,MAElB,EAAI,iBAAmB,EAAI,SAGvC,EAAK,KAAK,MAAS,GAAY,EACvB,EAAI,UAAY,EAAQ,OAAS,EAAI,MAAQ,EAAQ,MAAQ,EAAI,QAGrE,EAAQ,OAAO,KAAK,CACR,SACR,KAAM,YACN,QAAS,EAAI,MACb,MAAO,EAAQ,MACf,UAAW,EAAI,UACf,OACA,SAAU,CAAC,EAAI,WAId,GACC,EAAkB,uBAAwB,EAAM,IAAQ,CAClE,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAI,GACH,EAAKA,EAAK,KAAK,KAAK,aAAe,EAAG,WAAa,EAAI,SAE5D,EAAK,KAAK,MAAS,GAAY,CAC3B,GAAI,OAAO,EAAQ,OAAU,OAAO,EAAI,MACpC,MAAU,MAAM,sDACpB,IAAM,EAAa,OAAO,EAAQ,OAAU,SACtC,EAAQ,MAAQ,EAAI,QAAU,OAAO,GAAA,GACb,EAAQ,MAAO,EAAI,SAAW,EACxD,GAEJ,EAAQ,OAAO,KAAK,CAChB,OAAQ,OAAO,EAAQ,MACvB,KAAM,kBACN,QAAS,EAAI,MACb,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAId,GAAsC,EAAkB,yBAA0B,EAAM,IAAQ,CACzG,EAAU,KAAK,EAAM,GACrB,EAAI,OAAS,EAAI,QAAU,UAC3B,IAAM,EAAQ,EAAI,QAAQ,SAAS,OAC7B,EAAS,EAAQ,MAAQ,SACzB,CAAC,EAAS,GAAA,GAAqC,EAAI,QACzD,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,EAAI,OAAS,EAAI,OACjB,EAAI,QAAU,EACd,EAAI,QAAU,EACV,IACA,EAAI,QAAA,MAEZ,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MACtB,GAAI,EAAO,CACP,GAAI,CAAC,OAAO,UAAU,GAAQ,CAU1B,EAAQ,OAAO,KAAK,CAChB,SAAU,EACV,OAAQ,EAAI,OACZ,KAAM,eACN,QACA,SAEJ,OAUJ,GAAI,CAAC,OAAO,cAAc,GAAQ,CAC1B,EAAQ,EAER,EAAQ,OAAO,KAAK,CAChB,QACA,KAAM,UACN,gBACA,KAAM,kDACN,OACA,SACA,SAAU,CAAC,EAAI,QAKnB,EAAQ,OAAO,KAAK,CAChB,QACA,KAAM,YACN,QAAS,WACT,KAAM,kDACN,OACA,SACA,SAAU,CAAC,EAAI,QAGvB,QAGJ,EAAQ,GACR,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,QACA,KAAM,YACN,UACA,UAAW,GACX,OACA,SAAU,CAAC,EAAI,QAGnB,EAAQ,GACR,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,QACA,KAAM,UACN,UACA,YAKH,GAAsC,EAAkB,yBAA0B,EAAM,IAAQ,CACzG,EAAU,KAAK,EAAM,GACrB,GAAM,CAAC,EAAS,GAAA,GAAqC,EAAI,QACzD,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,EAAI,OAAS,EAAI,OACjB,EAAI,QAAU,EACd,EAAI,QAAU,IAElB,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MAClB,EAAQ,GACR,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,QACA,KAAM,YACG,UACT,UAAW,GACX,OACA,SAAU,CAAC,EAAI,QAGnB,EAAQ,GACR,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,QACA,KAAM,UACN,UACA,YAKH,GAAiC,EAAkB,oBAAqB,EAAM,IAAQ,CAC/F,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,KAAQ,GAAY,CAC1B,IAAM,EAAM,EAAQ,MACpB,MAAO,CAAA,GAAc,IAAQ,EAAI,OAAS,IAAA,IAE9C,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAQA,EAAK,KAAK,IAAI,SAAW,IACnC,EAAI,QAAU,IACd,EAAK,KAAK,IAAI,QAAU,EAAI,WAEpC,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MAChB,EAAO,EAAM,KACf,GAAQ,EAAI,SAEhB,EAAQ,OAAO,KAAK,CAChB,OAAA,GAA8B,GAC9B,KAAM,UACN,QAAS,EAAI,QACb,QACA,OACA,SAAU,CAAC,EAAI,WAId,GAAiC,EAAkB,oBAAqB,EAAM,IAAQ,CAC/F,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,KAAQ,GAAY,CAC1B,IAAM,EAAM,EAAQ,MACpB,MAAO,CAAA,GAAc,IAAQ,EAAI,OAAS,IAAA,IAE9C,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAQA,EAAK,KAAK,IAAI,SAAW,KACnC,EAAI,QAAU,IACd,EAAK,KAAK,IAAI,QAAU,EAAI,WAEpC,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MAChB,EAAO,EAAM,KACf,GAAQ,EAAI,SAEhB,EAAQ,OAAO,KAAK,CAChB,OAAA,GAA8B,GAC9B,KAAM,YACN,QAAS,EAAI,QACb,QACA,OACA,SAAU,CAAC,EAAI,WAId,GAAoC,EAAkB,uBAAwB,EAAM,IAAQ,CACrG,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,KAAQ,GAAY,CAC1B,IAAM,EAAM,EAAQ,MACpB,MAAO,CAAA,GAAc,IAAQ,EAAI,OAAS,IAAA,IAE9C,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,EAAI,QAAU,EAAI,KAClB,EAAI,QAAU,EAAI,KAClB,EAAI,KAAO,EAAI,OAEnB,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MAChB,EAAO,EAAM,KACnB,GAAI,IAAS,EAAI,KACb,OACJ,IAAM,EAAS,EAAO,EAAI,KAC1B,EAAQ,OAAO,KAAK,CAChB,OAAA,GAA8B,GAC9B,GAAI,EAAS,CAAE,KAAM,UAAW,QAAS,EAAI,MAAS,CAAE,KAAM,YAAa,QAAS,EAAI,MACxF,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAId,GAAmC,EAAkB,sBAAuB,EAAM,IAAQ,CACnG,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,KAAQ,GAAY,CAC1B,IAAM,EAAM,EAAQ,MACpB,MAAO,CAAA,GAAc,IAAQ,EAAI,SAAW,IAAA,IAEhD,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAQA,EAAK,KAAK,IAAI,SAAW,IACnC,EAAI,QAAU,IACd,EAAK,KAAK,IAAI,QAAU,EAAI,WAEpC,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MAChB,EAAS,EAAM,OACrB,GAAI,GAAU,EAAI,QACd,OACJ,IAAM,EAAA,GAAkC,GACxC,EAAQ,OAAO,KAAK,CAChB,SACA,KAAM,UACN,QAAS,EAAI,QACb,UAAW,GACX,QACA,OACA,SAAU,CAAC,EAAI,WAId,GAAmC,EAAkB,sBAAuB,EAAM,IAAQ,CACnG,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,KAAQ,GAAY,CAC1B,IAAM,EAAM,EAAQ,MACpB,MAAO,CAAA,GAAc,IAAQ,EAAI,SAAW,IAAA,IAEhD,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAQA,EAAK,KAAK,IAAI,SAAW,KACnC,EAAI,QAAU,IACd,EAAK,KAAK,IAAI,QAAU,EAAI,WAEpC,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MAChB,EAAS,EAAM,OACrB,GAAI,GAAU,EAAI,QACd,OACJ,IAAM,EAAA,GAAkC,GACxC,EAAQ,OAAO,KAAK,CAChB,SACA,KAAM,YACN,QAAS,EAAI,QACb,UAAW,GACX,QACA,OACA,SAAU,CAAC,EAAI,WAId,GAAsC,EAAkB,yBAA0B,EAAM,IAAQ,CACzG,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,KAAQ,GAAY,CAC1B,IAAM,EAAM,EAAQ,MACpB,MAAO,CAAA,GAAc,IAAQ,EAAI,SAAW,IAAA,IAEhD,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,EAAI,QAAU,EAAI,OAClB,EAAI,QAAU,EAAI,OAClB,EAAI,OAAS,EAAI,SAErB,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MAChB,EAAS,EAAM,OACrB,GAAI,IAAW,EAAI,OACf,OACJ,IAAM,EAAA,GAAkC,GAClC,EAAS,EAAS,EAAI,OAC5B,EAAQ,OAAO,KAAK,CAChB,SACA,GAAI,EAAS,CAAE,KAAM,UAAW,QAAS,EAAI,QAAW,CAAE,KAAM,YAAa,QAAS,EAAI,QAC1F,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAId,GAAsC,EAAkB,yBAA0B,EAAM,IAAQ,CACzG,IAAI,EACJ,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,EAAI,OAAS,EAAI,OACb,EAAI,UACJ,AAAiB,EAAI,WAAW,IAAI,IACpC,EAAI,SAAS,IAAI,EAAI,aAG5B,EAAK,EAAK,MAAM,QAAU,EAAG,MAAS,GAAY,CAC/C,GAAI,CAAC,EAAI,QACL,MAAU,MAAM,oBACpB,EAAI,QAAQ,UAAY,EACpB,GAAI,QAAQ,KAAK,EAAQ,QAE7B,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,EAAI,OACZ,MAAO,EAAQ,MACf,GAAI,EAAI,QAAU,CAAE,QAAS,EAAI,QAAQ,YAAe,GACxD,OACA,SAAU,CAAC,EAAI,YAId,GAA+B,EAAkB,kBAAmB,EAAM,IAAQ,CAC3F,GAAsB,KAAK,EAAM,GACjC,EAAK,KAAK,MAAS,GAAY,CAC3B,EAAI,QAAQ,UAAY,EACpB,GAAI,QAAQ,KAAK,EAAQ,QAE7B,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,QACR,MAAO,EAAQ,MACf,QAAS,EAAI,QAAQ,WACrB,OACA,SAAU,CAAC,EAAI,WAId,GAAmC,EAAkB,sBAAuB,EAAM,IAAQ,CACnG,AAAgB,EAAI,UAAA,GACpB,GAAsB,KAAK,EAAM,KAExB,GAAmC,EAAkB,sBAAuB,EAAM,IAAQ,CACnG,AAAgB,EAAI,UAAA,GACpB,GAAsB,KAAK,EAAM,KAExB,GAAkC,EAAkB,qBAAsB,EAAM,IAAQ,CACjG,EAAU,KAAK,EAAM,GACrB,IAAM,EAAA,GAAgC,EAAI,UACpC,EAAU,IAAI,OAAO,OAAO,EAAI,UAAa,SAAW,MAAM,EAAI,SAAS,GAAG,IAAiB,GACrG,EAAI,QAAU,EACd,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,AAAiB,EAAI,WAAW,IAAI,IACpC,EAAI,SAAS,IAAI,KAErB,EAAK,KAAK,MAAS,GAAY,CACvB,EAAQ,MAAM,SAAS,EAAI,SAAU,EAAI,WAE7C,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,WACR,SAAU,EAAI,SACd,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAId,GAAoC,EAAkB,uBAAwB,EAAM,IAAQ,CACrG,EAAU,KAAK,EAAM,GACrB,IAAM,EAAc,OAAO,IAAA,GAAqB,EAAI,QAAQ,KAC5D,AAAgB,EAAI,UAAU,EAC9B,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,AAAiB,EAAI,WAAW,IAAI,IACpC,EAAI,SAAS,IAAI,KAErB,EAAK,KAAK,MAAS,GAAY,CACvB,EAAQ,MAAM,WAAW,EAAI,SAEjC,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,cACR,OAAQ,EAAI,OACZ,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAId,GAAkC,EAAkB,qBAAsB,EAAM,IAAQ,CACjG,EAAU,KAAK,EAAM,GACrB,IAAM,EAAc,OAAO,KAAA,GAAsB,EAAI,QAAQ,IAC7D,AAAgB,EAAI,UAAU,EAC9B,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,AAAiB,EAAI,WAAW,IAAI,IACpC,EAAI,SAAS,IAAI,KAErB,EAAK,KAAK,MAAS,GAAY,CACvB,EAAQ,MAAM,SAAS,EAAI,SAE/B,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,iBACN,OAAQ,YACR,OAAQ,EAAI,OACZ,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAO3B,SAAS,GAA0B,EAAQ,EAAS,EAAU,CACtD,EAAO,OAAO,QACd,EAAQ,OAAO,KAAK,GAAA,GAAqB,EAAU,EAAO,SAGlE,MAAa,GAAkC,EAAkB,qBAAsB,EAAM,IAAQ,CACjG,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAS,EAAI,OAAO,KAAK,IAAI,CAC/B,MAAO,EAAQ,MAAM,EAAI,UACzB,OAAQ,IACT,IACH,GAAI,aAAkB,QAClB,OAAO,EAAO,KAAM,GAAW,GAA0B2V,EAAQ,EAAS,EAAI,WAElF,GAA0B,EAAQ,EAAS,EAAI,aAI1C,GAAkC,EAAkB,qBAAsB,EAAM,IAAQ,CACjG,EAAU,KAAK,EAAM,GACrB,IAAM,EAAU,IAAI,IAAI,EAAI,MAC5B,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,EAAK,KAAK,IAAI,KAAO,EAAI,OAE7B,EAAK,KAAK,MAAS,GAAY,CACvB,EAAQ,IAAI,EAAQ,MAAM,OAE9B,EAAQ,OAAO,KAAK,CAChB,KAAM,gBACN,OAAQ,EAAI,KACZ,MAAO,EAAQ,MAAM,KACrB,YAIC,GAAmC,EAAkB,sBAAuB,EAAM,IAAQ,CACnG,EAAU,KAAK,EAAM,GACrB,EAAK,KAAK,MAAS,GAAY,CAC3B,EAAQ,MAAQ,EAAI,GAAG,EAAQ,UCviBvC,IAAa,GAAb,KAAiB,CACb,YAAY,EAAO,GAAI,CACnB,KAAK,QAAU,GACf,KAAK,OAAS,EACV,OACA,KAAK,KAAO,GAEpB,SAAS,EAAI,CACT,KAAK,QAAU,EACf,EAAG,MACH,OAAK,OAET,MAAM,EAAK,CACP,GAAI,OAAO,GAAQ,WAAY,CAC3B,EAAI,KAAM,CAAE,UAAW,SACvB,EAAI,KAAM,CAAE,UAAW,UACvB,OAEJ,IAAM,EAAU,EACV,EAAQ,EAAQ,MAAM;GAAM,OAAQ,GAAM,GAC1C,EAAY,KAAK,IAAI,GAAG,EAAM,IAAK,GAAM,EAAE,OAAS,EAAE,YAAY,SAClE,EAAW,EAAM,IAAK,GAAM,EAAE,MAAM,IAAY,IAAK,GAAM,IAAI,OAAO,KAAK,OAAS,GAAK,GAC/F,IAAK,IAAM,KAAQ,EACf,KAAK,QAAQ,KAAK,GAG1B,SAAU,CACN,IAAM,EAAI,SACJ,EAAO,MAAM,KACb,EAAU,MAAM,SAAW,CAAC,IAC5B,EAAQ,CAAC,GAAG,EAAQ,IAAK,GAAM,KAAK,MAE1C,OAAO,IAAI,EAAE,GAAG,EAAM,EAAM,KAAK;MChCzC,MAAarC,GAAU,CACnB,MAAO,EACP,MAAO,EACP,MAAO,GCIE,EAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,IAAI,EACJ,AAAS,IAAO,GAEhB,EAAgB,EAAK,KAAM,SAAY,EAAI,KAAO,IAAA,GAAwB,KAC1E,EAAK,KAAK,IAAM,EAChB,EAAK,KAAK,IAAM,EAAK,KAAK,KAAO,GACjC,EAAK,KAAK,QAAUA,GACpB,IAAM,EAAS,CAAC,GAAI,EAAK,KAAK,IAAI,QAAU,IAExC,EAAK,KAAK,OAAO,IAAI,cACrB,EAAO,QAAQ,GAGnB,IAAK,IAAM,KAAM,EACb,IAAK,IAAM,KAAM,EAAG,KAAK,SACrB,EAAG,GAGX,GAAI,EAAO,SAAW,GAGjB,EAAK,EAAK,MAAM,WAAa,EAAG,SAAW,IAC5C,EAAK,KAAK,UAAU,SAAW,CAC3B,EAAK,KAAK,IAAM,EAAK,KAAK,YAG7B,CACD,IAAM,GAAa,EAAS,EAAQ,IAAQ,CACxC,IAAI9T,EAAAA,GAAyB,GACzB,EACJ,IAAK,IAAM,KAAMC,EAAQ,CACrB,GAAI,EAAG,KAAK,KAAM,CACd,IAAM,EAAY,EAAG,KAAK,KAAK,GAC/B,GAAI,CAAC,EACD,iBAECD,EACL,SAEJ,IAAM,EAAU,EAAQ,OAAO,OACzB,EAAI,EAAG,KAAK,MAAM,GACxB,GAAI,aAAa,SAAW,GAAK,QAAU,GACvC,MAAM,IAAA,GAEV,GAAI,GAAe,aAAa,QAC5B,GAAe,GAAe,QAAQ,WAAW,KAAK,SAAY,CAC9D,MAAM,EACN,IAAM,EAAU,EAAQ,OAAO,OAC3B,IAAY,IAEhB,AACI,IAAA,GAAyB,EAAS,UAGzC,CACD,IAAM,EAAU,EAAQ,OAAO,OAC/B,GAAI,IAAY,EACZ,SACJ,AACI,IAAA,GAAyB,EAAS,IAQ9C,OALI,EACO,EAAY,SACR,GAGR,GAEX,EAAK,KAAK,KAAO,EAAS,IAAQ,CAC9B,IAAM,EAAS,EAAK,KAAK,MAAM,EAAS,GACxC,GAAI,aAAkB,QAAS,CAC3B,GAAI,EAAI,QAAU,GACd,MAAM,IAAA,GACV,OAAO,EAAO,KAAM,GAAW,EAAUmW,EAAQ,EAAQ,IAE7D,OAAO,EAAU,EAAQ,EAAQ,IAGzC,EAAK,aAAe,CAChB,SAAW,GAAU,CACjB,GAAI,CACA,IAAM,EAAIhW,GAAU,EAAM,GAC1B,OAAO,EAAE,QAAU,CAAE,MAAO,EAAE,MAAS,CAAE,OAAQ,EAAE,OAAO,aAEpD,CACN,OAAOC,GAAe,EAAM,GAAO,KAAM,GAAO,EAAE,QAAU,CAAE,MAAO,EAAE,MAAS,CAAE,OAAQ,EAAE,OAAO,WAG3G,OAAQ,MACR,QAAS,KAIJ,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,QAAU,CAAC,GAAI,GAAM,KAAK,KAAK,UAAY,IAAK,OAAA,GAAwB,EAAK,KAAK,KAC5F,EAAK,KAAK,OAAS,EAAS,IAAM,CAC9B,GAAI,EAAI,OACJ,GAAI,CACA,EAAQ,MAAQ,OAAO,EAAQ,YAEzB,EASd,OARI,OAAO,EAAQ,OAAU,UAE7B,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,MAAO,EAAQ,MACf,SALO,KAUN,EAAiC,EAAkB,oBAAqB,EAAM,IAAQ,CAE/F,GAAA,KAAkC,EAAM,GACxC,GAAW,KAAK,EAAM,KAEb,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,GAAI,EAAI,QAAS,CACb,IAAM,EAAa,CACf,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,GAEF,EAAI,EAAW,EAAI,SACzB,GAAI,IAAM,IAAA,GACN,MAAU,MAAM,0BAA0B,EAAI,QAAQ,IAC1D,AAAgB,EAAI,UAAA,GAAuB,QAG3C,AAAgB,EAAI,UAAA,KACxB,EAAiB,KAAK,EAAM,KAEnB,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,EAAiB,KAAK,EAAM,GAC5B,EAAK,KAAK,MAAS,GAAY,CAC3B,GAAI,CACA,IAAMsV,EAAM,IAAI,IAAI,EAAQ,OACxB,EAAI,WACJ,EAAI,SAAS,UAAY,EACpB,EAAI,SAAS,KAAKA,EAAI,WACvB,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,KAAM,mBACN,QAAA,GAASnV,OACT,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,SAIvB,EAAI,WACJ,EAAI,SAAS,UAAY,EACpB,EAAI,SAAS,KAAKmV,EAAI,SAAS,SAAS,KAAOA,EAAI,SAAS,MAAM,EAAG,IAAMA,EAAI,WAChF,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,KAAM,mBACN,QAAS,EAAI,SAAS,OACtB,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,SAI3B,YAEM,CACN,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,YAKlB,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,AAAgB,EAAI,UAAA,KACpB,EAAiB,KAAK,EAAM,KAEnB,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAAgC,EAAkB,mBAAoB,EAAM,IAAQ,CAC7F,AAAgB,EAAI,UAAA,GAA2B,GAC/C,EAAiB,KAAK,EAAM,GACb,EAAK,KAAK,QAEhB,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,AAAgB,EAAI,UAAA,GAAuB,GAC3C,EAAiB,KAAK,EAAM,GACb,EAAK,KAAK,QAEhB,GAAgC,EAAkB,mBAAoB,EAAM,IAAQ,CAC7F,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,GAC5B,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMlV,EAAK,KAAK,IACtB,EAAI,OAAS,WAGR,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,GAC5B,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,IAAM,EAAMA,EAAK,KAAK,IACtB,EAAI,OAAS,SAEjB,EAAK,KAAK,MAAS,GAAY,CAC3B,GAAI,CACA,IAAI,IAAI,WAAW,EAAQ,MAAM,SAG/B,CACF,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,OACR,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,YAKlB,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAEnB,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,GAC5B,EAAK,KAAK,MAAS,GAAY,CAC3B,GAAM,CAAC,EAAS,GAAU,EAAQ,MAAM,MAAM,KAC9C,GAAI,CACA,GAAI,CAAC,EACD,MAAU,QACd,IAAM,EAAY,OAAO,GAGzB,GAFI,GAAG,MAAgB,GAEnB,EAAY,GAAK,EAAY,IAC7B,MAAU,QACd,IAAI,IAAI,WAAW,EAAQ,SAEzB,CACF,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,SACR,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,YAM/B,SAAgB,GAAc,EAAM,CAChC,GAAI,IAAS,GACT,MAAO,GACX,GAAI,EAAK,OAAS,GAAM,EACpB,MAAO,GACX,GAAI,CAEA,OADA,KAAK,GACE,QAEL,CACF,MAAO,IAGf,MAAa,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,GAC5B,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,EAAK,KAAK,IAAI,gBAAkB,WAEpC,EAAK,KAAK,MAAS,GAAY,CACvB,GAAc,EAAQ,QAE1B,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,SACR,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAK3B,SAAgB,GAAiB,EAAM,CACnC,GAAI,CAAA,GAACC,KAAuB,GACxB,MAAO,GACX,IAAMuT,EAAS,EAAK,QAAQ,QAAU,GAAO,IAAM,IAAM,IAAM,KACzD,EAASA,EAAO,OAAO,KAAK,KAAKA,EAAO,OAAS,GAAK,EAAG,KAC/D,OAAO,GAAc,GAEzB,MAAa,GAA8B,EAAkB,iBAAkB,EAAM,IAAQ,CACzF,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,GAC5B,EAAK,KAAK,SAAS,KAAM,GAAS,CAC9B,EAAK,KAAK,IAAI,gBAAkB,cAEpC,EAAK,KAAK,MAAS,GAAY,CACvB,GAAiB,EAAQ,QAE7B,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,YACR,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAId,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,AAAgB,EAAI,UAAA,GACpB,EAAiB,KAAK,EAAM,KAGhC,SAAgBrT,GAAW,EAAO,EAAY,KAAM,CAChD,GAAI,CACA,IAAM,EAAc,EAAM,MAAM,KAChC,GAAI,EAAY,SAAW,EACvB,MAAO,GACX,GAAM,CAAC,GAAU,EACX,EAAe,KAAK,MAAM,KAAK,IAOrC,MAFA,EAJI,QAAS,GAAgB,GAAc,MAAQ,OAE/C,CAAC,EAAa,KAEd,IAAc,EAAE,QAAS,IAAiB,EAAa,MAAQ,SAIjE,CACF,MAAO,IAGf,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,EAAiB,KAAK,EAAM,GAC5B,EAAK,KAAK,MAAS,GAAY,CACvBA,GAAW,EAAQ,MAAO,EAAI,MAElC,EAAQ,OAAO,KAAK,CAChB,KAAM,iBACN,OAAQ,MACR,MAAO,EAAQ,MACf,OACA,SAAU,CAAC,EAAI,WAId,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,QAAU,EAAK,KAAK,IAAI,SAAA,GAClC,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,GAAI,EAAI,OACJ,GAAI,CACA,EAAQ,MAAQ,OAAO,EAAQ,YAEzB,EACd,IAAM,EAAQ,EAAQ,MACtB,GAAI,OAAO,GAAU,UAAY,CAAC,OAAO,MAAM,IAAU,OAAO,SAAS,GACrE,OAAO,EAEX,IAAM,EAAW,OAAO,GAAU,SAC5B,OAAO,MAAM,GACT,MACC,OAAO,SAAS,GAEb,IAAA,GADA,WAER,IAAA,GAQN,OAPA,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,QACA,OACA,GAAI,EAAW,CAAE,YAAa,KAE3B,KAGF,GAAiC,EAAkB,cAAe,EAAM,IAAQ,CACzF,GAAA,KAAkC,EAAM,GACxC,GAAW,KAAK,EAAM,KAEb,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,QAAA,GACV,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,GAAI,EAAI,OACJ,GAAI,CACA,EAAQ,MAAQ,EAAQ,EAAQ,WAE1B,EACd,IAAM,EAAQ,EAAQ,MAStB,OARI,OAAO,GAAU,WAErB,EAAQ,OAAO,KAAK,CAChB,SAAU,UACV,KAAM,eACN,QACA,SALO,KAUN,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,QAAA,GACV,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,GAAI,EAAI,OACJ,GAAI,CACA,EAAQ,MAAQ,OAAO,EAAQ,YAEzB,EACd,GAAM,CAAE,MAAO,GAAU,EASzB,OARI,OAAO,GAAU,UAErB,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,QACA,SALO,KAUN,GAAiC,EAAkB,cAAe,EAAM,IAAQ,CACzF,GAAA,KAAkC,EAAM,GACxC,GAAW,KAAK,EAAM,KAEb,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,GAAM,CAAE,MAAO,GAAU,EASzB,OARI,OAAO,GAAU,UAErB,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,QACA,SALO,KAUN,GAA8B,EAAkB,iBAAkB,EAAM,IAAQ,CACzF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,QAAA,GACV,EAAK,KAAK,OAAS,IAAI,IAAI,CAAC,IAAA,KAC5B,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,GAAM,CAAE,MAAO,GAAU,EASzB,OARW,IAAU,QAErB,EAAQ,OAAO,KAAK,CAChB,SAAU,YACV,KAAM,eACN,QACA,SALO,KAUN,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,QAAA,GACV,EAAK,KAAK,OAAS,IAAI,IAAI,CAAC,OAC5B,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,GAAM,CAAE,MAAO,GAAU,EASzB,OARI,IAAU,MAEd,EAAQ,OAAO,KAAK,CAChB,SAAU,OACV,KAAM,eACN,QACA,SALO,KAUN,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,MAAS,GAAY,IAEtB,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,MAAS,GAAY,IAEtB,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,KACxB,EAAQ,OAAO,KAAK,CAChB,SAAU,QACV,KAAM,eACN,MAAO,EAAQ,MACf,SAEG,KAGF,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,GAAM,CAAE,MAAO,GAAU,EASzB,OARW,IAAU,QAErB,EAAQ,OAAO,KAAK,CAChB,SAAU,OACV,KAAM,eACN,QACA,SALO,KAUN,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,GAAI,EAAI,OACJ,GAAI,CACA,EAAQ,MAAQ,IAAI,KAAK,EAAQ,YAExB,EAEjB,IAAM,EAAQ,EAAQ,MAChB,EAAS,aAAiB,KAC1B,EAAc,GAAU,CAAC,OAAO,MAAM,EAAM,WAUlD,OATI,GAEJ,EAAQ,OAAO,KAAK,CAChB,SAAU,OACV,KAAM,eACN,QACA,GAAI,EAAS,CAAE,SAAU,gBAAmB,GAC5C,SANO,KAWnB,SAAS,GAAkB,EAAQ,EAAO,EAAO,CACzC,EAAO,OAAO,QACd,EAAM,OAAO,KAAK,GAAA,GAAqB,EAAO,EAAO,SAEzD,EAAM,MAAM,GAAS,EAAO,MAEhC,MAAa,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAQ,EAAQ,MACtB,GAAI,CAAC,MAAM,QAAQ,GAOf,OANA,EAAQ,OAAO,KAAK,CAChB,SAAU,QACV,KAAM,eACN,QACA,SAEG,EAEX,EAAQ,MAAQ,MAAM,EAAM,QAC5B,IAAM,EAAQ,GACd,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACnC,IAAM,EAAO,EAAM,GACb,EAAS,EAAI,QAAQ,KAAK,IAAI,CAChC,MAAO,EACP,OAAQ,IACT,GACC,aAAkB,QAClB,EAAM,KAAK,EAAO,KAAM,GAAW,GAAkBwV,EAAQ,EAAS,KAGtE,GAAkB,EAAQ,EAAS,GAM3C,OAHI,EAAM,OACC,QAAQ,IAAI,GAAO,SAAW,GAElC,KAGf,SAAS,GAAmB,EAAQ,EAAO,EAAK,CAExC,EAAO,OAAO,QACd,EAAM,OAAO,KAAK,GAAA,GAAqB,EAAK,EAAO,SAEvD,EAAM,MAAM,GAAO,EAAO,MAE9B,SAAS,GAA2B,EAAQ,EAAO,EAAK,EAAO,CACvD,EAAO,OAAO,OAEV,EAAM,KAAS,IAAA,GAEX,KAAO,EACP,EAAM,MAAM,GAAO,IAAA,GAGnB,EAAM,MAAM,GAAO,EAAO,MAI9B,EAAM,OAAO,KAAK,GAAA,GAAqB,EAAK,EAAO,SAGlD,EAAO,QAAU,IAAA,GAElB,KAAO,IACP,EAAM,MAAM,GAAO,IAAA,IAIvB,EAAM,MAAM,GAAO,EAAO,MAGlC,MAAa,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CAEnF,EAAS,KAAK,EAAM,GACpB,IAAM,EAAA,OAAgC,CAClC,IAAM,EAAO,OAAO,KAAK,EAAI,OAC7B,IAAK,IAAM,KAAK,EACZ,GAAI,EAAE,EAAI,MAAM,aAAc,GAC1B,MAAU,MAAM,2BAA2B,EAAE,2BAGrD,IAAM,EAAA,GAA0B,EAAI,OACpC,MAAO,CACH,MAAO,EAAI,MACX,OACA,OAAQ,IAAI,IAAI,GAChB,QAAS,EAAK,OACd,aAAc,IAAI,IAAI,MAG9B,EAAgB,EAAK,KAAM,iBAAoB,CAC3C,IAAM,EAAQ,EAAI,MACZ,EAAa,GACnB,IAAK,IAAM,KAAO,EAAO,CACrB,IAAM,EAAQ,EAAM,GAAK,KACzB,GAAI,EAAM,OAAQ,CACd,EAAW,KAAS,EAAW,GAAO,IAAI,KAC1C,IAAK,IAAM,KAAK,EAAM,OAClB,EAAW,GAAK,IAAI,IAGhC,OAAO,IAEX,IAAM,EAAoB,GAAU,CAChC,IAAM,EAAM,IAAI,GAAI,CAAC,QAAS,UAAW,QACnC,CAAE,OAAM,aAAA,GAAiB,EAAY,MACrC,EAAY,GAAQ,CACtB,IAAM,EAAA,GAAa,GACnB,MAAO,SAAS,EAAE,4BAA4B,EAAE,wBAEpD,EAAI,MAAM,gCACV,IAAM,EAAM,OAAO,OAAO,MAC1B,IAAK,IAAM,KAAO,EACd,EAAI,GAAA,GAAyB,IAGjC,EAAI,MAAM,wBACV,IAAK,IAAM,KAAO,EACd,GAAIvV,EAAa,IAAI,GAAM,CACvB,IAAM,EAAK,EAAI,GACf,EAAI,MAAM,SAAS,EAAG,KAAK,EAAS,GAAK,IACzC,IAAM,EAAA,GAAa,GACnB,EAAI,MAAM;cACZ,EAAG;sBACK,EAAE;kBACN,EAAE;0BACM,EAAE;;;;gBAIZ,EAAG;;oCAEiB,EAAE,oBAAoB,EAAE;;;;qBAIvC,EAAG;gBACR,EAAE,uBAAuB,EAAE;;sBAErB,EAAE,MAAM,EAAG;;eAIhB,CACD,IAAM,EAAK,EAAI,GAEf,EAAI,MAAM,SAAS,EAAG,KAAK,EAAS,GAAK,IACzC,EAAI,MAAM;gBACV,EAAG,yDAAyD,EAAG;;mCAEtC,GAAK,oBAAA,GAA6B,GAAK;kBAEhE,EAAI,MAAM,aAAA,GAAsB,GAAK,MAAM,EAAG,SAGtD,EAAI,MAAM,8BACV,EAAI,MAAM,mBACV,IAAM,EAAK,EAAI,UACf,OAAQ,EAAS,IAAQ,EAAG,EAAO,EAAS,IAE5C,EACEC,EAAAA,GACA,EAAM,CAAA,GAACC,QACPC,EAAAA,GACA,EAAc,GAAOA,EAAW,MAChC,CAAE,YAAa,EACjB,EACJ,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,AAAU,IAAQ,EAAY,MAC9B,IAAM,EAAQ,EAAQ,MACtB,GAAI,CAACF,EAAS,GAOV,OANA,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,QACA,SAEG,EAEX,IAAM,EAAQ,GACd,GAAI,GAAO,GAAe,GAAK,QAAU,IAAS,EAAI,UAAY,GAE9D,AACI,IAAW,EAAiB,EAAI,OACpC,EAAU,EAAS,EAAS,OAE3B,CACD,EAAQ,MAAQ,GAChB,IAAM,EAAQ,EAAM,MACpB,IAAK,IAAM,KAAO,EAAM,KAAM,CAC1B,IAAM,EAAK,EAAM,GAaX,EAAI,EAAG,KAAK,IAAI,CAAE,MAAO,EAAM,GAAM,OAAQ,IAAM,GACnD,EAAa,EAAG,KAAK,QAAU,YAAc,EAAG,KAAK,SAAW,WAClE,aAAa,QACb,EAAM,KAAK,EAAE,KAAM,GAAM,EAAa,GAA2BG,EAAG,EAAS,EAAK,GAAS,GAAmBA,EAAG,EAAS,KAErH,EACL,GAA2B,EAAG,EAAS,EAAK,GAG5C,GAAmB,EAAG,EAAS,IAI3C,GAAI,CAAC,EAED,OAAO,EAAM,OAAS,QAAQ,IAAI,GAAO,SAAW,GAAW,EAEnE,IAAM,EAAe,GAEf,EAAS,EAAM,OACf,EAAY,EAAS,KACrB,GAAI,EAAU,IAAI,KACxB,IAAK,IAAM,KAAO,OAAO,KAAK,GAAQ,CAClC,GAAI,EAAO,IAAI,GACX,SACJ,GAAI,KAAM,QAAS,CACf,EAAa,KAAK,GAClB,SAEJ,IAAM,EAAI,EAAU,IAAI,CAAE,MAAO,EAAM,GAAM,OAAQ,IAAM,GACvD,aAAa,QACb,EAAM,KAAK,EAAE,KAAM,GAAM,GAAmBA,EAAG,EAAS,KAGxD,GAAmB,EAAG,EAAS,GAavC,OAVI,EAAa,QACb,EAAQ,OAAO,KAAK,CAChB,KAAM,oBACN,KAAM,EACN,QACA,SAGH,EAAM,OAEJ,QAAQ,IAAI,GAAO,SACf,GAFA,KAMnB,SAAS,GAAmB,EAAS,EAAO,EAAM,EAAK,CACnD,IAAK,IAAM,KAAU,EACjB,GAAI,EAAO,OAAO,SAAW,EAEzB,MADA,GAAM,MAAQ,EAAO,MACd,EASf,OANA,EAAM,OAAO,KAAK,CACd,KAAM,gBACN,MAAO,EAAM,MACb,OACA,OAAQ,EAAQ,IAAK,GAAW,EAAO,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,SAEhF,EAEX,MAAa,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,EAAS,KAAK,EAAM,GACpB,EAAgB,EAAK,KAAM,aAAgB,CACvC,GAAI,EAAI,QAAQ,MAAO,GAAM,EAAE,KAAK,QAChC,OAAO,IAAI,IAAI,EAAI,QAAQ,QAAS,GAAW,MAAM,KAAK,EAAO,KAAK,YAI9E,EAAgB,EAAK,KAAM,cAAiB,CACxC,GAAI,EAAI,QAAQ,MAAO,GAAM,EAAE,KAAK,SAAU,CAC1C,IAAM,EAAW,EAAI,QAAQ,IAAK,GAAM,EAAE,KAAK,SAC/C,OAAW,OAAO,KAAK,EAAS,IAAK,GAAA,GAAsBiP,EAAE,SAAS,KAAK,KAAK,QAIxF,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAI,EAAQ,GACN,EAAU,GAChB,IAAK,IAAM,KAAU,EAAI,QAAS,CAC9B,IAAM,EAAS,EAAO,KAAK,IAAI,CAC3B,MAAO,EAAQ,MACf,OAAQ,IACT,GACH,GAAI,aAAkB,QAClB,EAAQ,KAAK,GACb,EAAQ,OAEP,CACD,GAAI,EAAO,OAAO,SAAW,EACzB,OAAO,EACX,EAAQ,KAAK,IAKrB,OAFK,EAEE,QAAQ,IAAI,GAAS,KAAM,GACvB,GAAmB/O,EAAS,EAAS,EAAM,IAF3C,GAAmB,EAAS,EAAS,EAAM,MAMjD,GAEb,EAAkB,0BAA2B,EAAM,IAAQ,CACvD,GAAU,KAAK,EAAM,GACrB,IAAM,EAAS,EAAK,KAAK,MACzB,EAAgB,EAAK,KAAM,iBAAoB,CAC3C,IAAM,EAAa,GACnB,IAAK,IAAM,KAAU,EAAI,QAAS,CAC9B,IAAM,EAAK,EAAO,KAAK,WACvB,GAAI,CAAC,GAAM,OAAO,KAAK,GAAI,SAAW,EAClC,MAAU,MAAM,gDAAgD,EAAI,QAAQ,QAAQ,GAAQ,IAChG,IAAK,GAAM,CAAC,EAAG,KAAM,OAAO,QAAQ,GAAK,CAChC,EAAW,KACZ,EAAW,GAAK,IAAI,KACxB,IAAK,IAAM,KAAO,EACd,EAAW,GAAG,IAAI,IAI9B,OAAO,IAEX,IAAM,EAAA,OAAyB,CAC3B,IAAM,EAAO,EAAI,QACXqS,EAAM,IAAI,IAChB,IAAK,IAAM,KAAK,EAAM,CAClB,IAAM,EAAS,EAAE,KAAK,WAAW,EAAI,eACrC,GAAI,CAAC,GAAU,EAAO,OAAS,EAC3B,MAAU,MAAM,gDAAgD,EAAI,QAAQ,QAAQ,GAAG,IAC3F,IAAK,IAAM,KAAK,EAAQ,CACpB,GAAIA,EAAI,IAAI,GACR,MAAU,MAAM,kCAAkC,OAAO,GAAG,IAEhE,EAAI,IAAI,EAAG,IAGnB,OAAOA,IAEX,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAQ,EAAQ,MACtB,GAAI,CAAA,GAAe,GAOf,OANA,EAAQ,OAAO,KAAK,CAChB,KAAM,eACN,SAAU,SACV,QACA,SAEG,EAEX,IAAM,EAAM,EAAK,MAAM,IAAI,IAAQ,EAAI,gBAgBvC,OAfI,EACO,EAAI,KAAK,IAAI,EAAS,GAE7B,EAAI,cACG,EAAO,EAAS,IAG3B,EAAQ,OAAO,KAAK,CAChB,KAAM,gBACN,OAAQ,GACR,KAAM,4BACN,QACA,KAAM,CAAC,EAAI,eACX,SAEG,MAGF,GAAiC,EAAkB,oBAAqB,EAAM,IAAQ,CAC/F,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,GAAM,CAAE,MAAO,GAAU,EACnB,EAAO,EAAI,KAAK,KAAK,IAAI,CAAE,MAAO,EAAO,OAAQ,IAAM,GACvD,EAAQ,EAAI,MAAM,KAAK,IAAI,CAAE,MAAO,EAAO,OAAQ,IAAM,GACzD,EAAQ,aAAgB,SAAW,aAAiB,QAM1D,OALI,EACO,QAAQ,IAAI,CAAC,EAAM,IAAQ,MAAM,CAACnS,EAAMC,KACpC,GAA0B,EAASD,EAAMC,IAGjD,GAA0B,EAAS,EAAM,MAGxD,SAASC,GAAY,EAAG,EAAG,CAMvB,GAHI,IAAM,GAGN,aAAa,MAAQ,aAAa,MAAQ,CAAC,GAAM,CAAC,EAClD,MAAO,CAAE,MAAO,GAAM,KAAM,GAEhC,GAAA,GAAuB,IAAA,GAAyB,GAAI,CAChD,IAAM,EAAQ,OAAO,KAAK,GACpB,EAAa,OAAO,KAAK,GAAG,OAAQ,GAAQ,EAAM,QAAQ,KAAS,IACnE,EAAS,CAAE,GAAG,EAAG,GAAG,GAC1B,IAAK,IAAM,KAAO,EAAY,CAC1B,IAAM,EAAcA,GAAY,EAAE,GAAM,EAAE,IAC1C,GAAI,CAAC,EAAY,MACb,MAAO,CACH,MAAO,GACP,eAAgB,CAAC,EAAK,GAAG,EAAY,iBAG7C,EAAO,GAAO,EAAY,KAE9B,MAAO,CAAE,MAAO,GAAM,KAAM,GAEhC,GAAI,MAAM,QAAQ,IAAM,MAAM,QAAQ,GAAI,CACtC,GAAI,EAAE,SAAW,EAAE,OACf,MAAO,CAAE,MAAO,GAAO,eAAgB,IAE3C,IAAM,EAAW,GACjB,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAE,OAAQ,IAAS,CAC3C,IAAM,EAAQ,EAAE,GACV,EAAQ,EAAE,GACV,EAAcA,GAAY,EAAO,GACvC,GAAI,CAAC,EAAY,MACb,MAAO,CACH,MAAO,GACP,eAAgB,CAAC,EAAO,GAAG,EAAY,iBAG/C,EAAS,KAAK,EAAY,MAE9B,MAAO,CAAE,MAAO,GAAM,KAAM,GAEhC,MAAO,CAAE,MAAO,GAAO,eAAgB,IAE3C,SAAS,GAA0B,EAAQ,EAAM,EAAO,CAOpD,GANI,EAAK,OAAO,QACZ,EAAO,OAAO,KAAK,GAAG,EAAK,QAE3B,EAAM,OAAO,QACb,EAAO,OAAO,KAAK,GAAG,EAAM,QAEhC,GAAiB,GACb,OAAO,EACX,IAAM,EAASA,GAAY,EAAK,MAAO,EAAM,OAC7C,GAAI,CAAC,EAAO,MACR,MAAU,MAAM,wCAA6C,KAAK,UAAU,EAAO,mBAGvF,MADA,GAAO,MAAQ,EAAO,KACf,EAEX,MAAa,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,EAAS,KAAK,EAAM,GACpB,IAAM,EAAQ,EAAI,MACZ,EAAW,EAAM,OAAS,CAAC,GAAG,GAAO,UAAU,UAAW,GAAS,EAAK,KAAK,QAAU,YAC7F,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAQ,EAAQ,MACtB,GAAI,CAAC,MAAM,QAAQ,GAOf,OANA,EAAQ,OAAO,KAAK,CAChB,QACA,OACA,SAAU,QACV,KAAM,iBAEH,EAEX,EAAQ,MAAQ,GAChB,IAAM,EAAQ,GACd,GAAI,CAAC,EAAI,KAAM,CACX,IAAM,EAAS,EAAM,OAAS,EAAM,OAC9B,EAAW,EAAM,OAAS,EAAW,EAC3C,GAAI,GAAU,EAOV,OANA,EAAQ,OAAO,KAAK,CAChB,QACA,OACA,OAAQ,QACR,GAAI,EAAS,CAAE,KAAM,UAAW,QAAS,EAAM,QAAW,CAAE,KAAM,YAAa,QAAS,EAAM,UAE3F,EAGf,IAAI,EAAI,GACR,IAAK,IAAM,KAAQ,EAAO,CAEtB,GADA,IACI,GAAK,EAAM,QACP,GAAK,EACL,SACR,IAAM,EAAS,EAAK,KAAK,IAAI,CACzB,MAAO,EAAM,GACb,OAAQ,IACT,GACC,aAAkB,QAClB,EAAM,KAAK,EAAO,KAAM,GAAW,GAAkB6U,EAAQ,EAAS,KAGtE,GAAkB,EAAQ,EAAS,GAG3C,GAAI,EAAI,KAAM,CACV,IAAM,EAAO,EAAM,MAAM,EAAM,QAC/B,IAAK,IAAM,KAAM,EAAM,CACnB,IACA,IAAM,EAAS,EAAI,KAAK,KAAK,IAAI,CAC7B,MAAO,EACP,OAAQ,IACT,GACC,aAAkB,QAClB,EAAM,KAAK,EAAO,KAAM,GAAW,GAAkBA,EAAQ,EAAS,KAGtE,GAAkB,EAAQ,EAAS,IAM/C,OAFI,EAAM,OACC,QAAQ,IAAI,GAAO,SAAW,GAClC,KAGf,SAAS,GAAkB,EAAQ,EAAO,EAAO,CACzC,EAAO,OAAO,QACd,EAAM,OAAO,KAAK,GAAA,GAAqB,EAAO,EAAO,SAEzD,EAAM,MAAM,GAAS,EAAO,MAEhC,MAAa,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAQ,EAAQ,MACtB,GAAI,CAAA,GAAoB,GAOpB,OANA,EAAQ,OAAO,KAAK,CAChB,SAAU,SACV,KAAM,eACN,QACA,SAEG,EAEX,IAAM,EAAQ,GACd,GAAI,EAAI,QAAQ,KAAK,OAAQ,CACzB,IAAM,EAAS,EAAI,QAAQ,KAAK,OAChC,EAAQ,MAAQ,GAChB,IAAK,IAAM,KAAO,EACd,GAAI,OAAO,GAAQ,UAAY,OAAO,GAAQ,UAAY,OAAO,GAAQ,SAAU,CAC/E,IAAM,EAAS,EAAI,UAAU,KAAK,IAAI,CAAE,MAAO,EAAM,GAAM,OAAQ,IAAM,GACrE,aAAkB,QAClB,EAAM,KAAK,EAAO,KAAM,GAAW,CAC3BA,EAAO,OAAO,QACd,EAAQ,OAAO,KAAK,GAAA,GAAqB,EAAKA,EAAO,SAEzD,EAAQ,MAAM,GAAOA,EAAO,UAI5B,EAAO,OAAO,QACd,EAAQ,OAAO,KAAK,GAAA,GAAqB,EAAK,EAAO,SAEzD,EAAQ,MAAM,GAAO,EAAO,OAIxC,IAAI,EACJ,IAAK,IAAM,KAAO,EACT,EAAO,IAAI,KACZ,IAA+B,GAC/B,EAAa,KAAK,IAGtB,GAAgB,EAAa,OAAS,GACtC,EAAQ,OAAO,KAAK,CAChB,KAAM,oBACN,QACA,OACA,KAAM,QAIb,CACD,EAAQ,MAAQ,GAChB,IAAK,IAAM,KAAO,QAAQ,QAAQ,GAAQ,CACtC,GAAI,IAAQ,YACR,SACJ,IAAM,EAAY,EAAI,QAAQ,KAAK,IAAI,CAAE,MAAO,EAAK,OAAQ,IAAM,GACnE,GAAI,aAAqB,QACrB,MAAU,MAAM,wDAEpB,GAAI,EAAU,OAAO,OAAQ,CACzB,EAAQ,OAAO,KAAK,CAChB,OAAQ,SACR,KAAM,cACN,OAAQ,EAAU,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,MAC9D,MAAO,EACP,KAAM,CAAC,GACP,SAEJ,EAAQ,MAAM,EAAU,OAAS,EAAU,MAC3C,SAEJ,IAAM,EAAS,EAAI,UAAU,KAAK,IAAI,CAAE,MAAO,EAAM,GAAM,OAAQ,IAAM,GACrE,aAAkB,QAClB,EAAM,KAAK,EAAO,KAAM,GAAW,CAC3BA,EAAO,OAAO,QACd,EAAQ,OAAO,KAAK,GAAA,GAAqB,EAAKA,EAAO,SAEzD,EAAQ,MAAM,EAAU,OAASA,EAAO,UAIxC,EAAO,OAAO,QACd,EAAQ,OAAO,KAAK,GAAA,GAAqB,EAAK,EAAO,SAEzD,EAAQ,MAAM,EAAU,OAAS,EAAO,QAOpD,OAHI,EAAM,OACC,QAAQ,IAAI,GAAO,SAAW,GAElC,KAGF,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAQ,EAAQ,MACtB,GAAI,EAAE,aAAiB,KAOnB,OANA,EAAQ,OAAO,KAAK,CAChB,SAAU,MACV,KAAM,eACN,QACA,SAEG,EAEX,IAAM,EAAQ,GACd,EAAQ,MAAQ,IAAI,IACpB,IAAK,GAAM,CAAC,EAAK,KAAU,EAAO,CAC9B,IAAM,EAAY,EAAI,QAAQ,KAAK,IAAI,CAAE,MAAO,EAAK,OAAQ,IAAM,GAC7D,EAAc,EAAI,UAAU,KAAK,IAAI,CAAS,QAAO,OAAQ,IAAM,GACrE,aAAqB,SAAW,aAAuB,QACvD,EAAM,KAAK,QAAQ,IAAI,CAAC,EAAW,IAAc,MAAM,CAAC5U,EAAWC,KAAiB,CAChF,GAAgBD,EAAWC,EAAa,EAAS,EAAK,EAAO,EAAM,MAIvE,GAAgB,EAAW,EAAa,EAAS,EAAK,EAAO,EAAM,GAK3E,OAFI,EAAM,OACC,QAAQ,IAAI,GAAO,SAAW,GAClC,KAGf,SAAS,GAAgB,EAAW,EAAa,EAAO,EAAK,EAAO,EAAM,EAAK,CACvE,EAAU,OAAO,SACjB,GAAIC,IAA0B,OAAO,GACjC,EAAM,OAAO,KAAK,GAAA,GAAqB,EAAK,EAAU,SAGtD,EAAM,OAAO,KAAK,CACd,OAAQ,MACR,KAAM,cACN,QACA,OACA,OAAQ,EAAU,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,SAItE,EAAY,OAAO,SACnB,GAAIA,IAA0B,OAAO,GACjC,EAAM,OAAO,KAAK,GAAA,GAAqB,EAAK,EAAY,SAGxD,EAAM,OAAO,KAAK,CACd,OAAQ,MACR,KAAM,kBACN,QACA,OACK,MACL,OAAQ,EAAY,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,SAI5E,EAAM,MAAM,IAAI,EAAU,MAAO,EAAY,OAEjD,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAQ,EAAQ,MACtB,GAAI,EAAE,aAAiB,KAOnB,OANA,EAAQ,OAAO,KAAK,CAChB,QACA,OACA,SAAU,MACV,KAAM,iBAEH,EAEX,IAAM,EAAQ,GACd,EAAQ,MAAQ,IAAI,IACpB,IAAK,IAAM,KAAQ,EAAO,CACtB,IAAM,EAAS,EAAI,UAAU,KAAK,IAAI,CAAE,MAAO,EAAM,OAAQ,IAAM,GAC/D,aAAkB,QAClB,EAAM,KAAK,EAAO,KAAM,GAAW,GAAgB0U,EAAQ,KAG3D,GAAgB,EAAQ,GAIhC,OAFI,EAAM,OACC,QAAQ,IAAI,GAAO,SAAW,GAClC,KAGf,SAAS,GAAgB,EAAQ,EAAO,CAChC,EAAO,OAAO,QACd,EAAM,OAAO,KAAK,GAAG,EAAO,QAEhC,EAAM,MAAM,IAAI,EAAO,OAE3B,MAAa,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,EAAS,KAAK,EAAM,GACpB,IAAM,EAAA,GAA4B,EAAI,SACtC,EAAK,KAAK,OAAS,IAAI,IAAI,GAC3B,EAAK,KAAK,QAAc,OAAO,KAAK,EAC/B,OAAQ,GAAA,GAAM1U,IAA0B,OAAO,IAC/C,IAAK,GAAO,OAAO,GAAM,SAAA,GAA4B,GAAK,EAAE,YAC5D,KAAK,KAAK,KACf,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,IAAM,EAAQ,EAAQ,MAUtB,OATI,EAAK,KAAK,OAAO,IAAI,IAGzB,EAAQ,OAAO,KAAK,CAChB,KAAM,gBACN,SACA,QACA,SANO,KAWN,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,IAAI,IAAI,EAAI,QAC/B,EAAK,KAAK,QAAc,OAAO,KAAK,EAAI,OACnC,IAAK,GAAO,OAAO,GAAM,SAAA,GAA4B,GAAK,EAAI,EAAE,WAAa,OAAO,IACpF,KAAK,KAAK,KACf,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,IAAM,EAAQ,EAAQ,MAUtB,OATI,EAAK,KAAK,OAAO,IAAI,IAGzB,EAAQ,OAAO,KAAK,CAChB,KAAM,gBACN,OAAQ,EAAI,OACZ,QACA,SANO,KAWN,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,IAAM,EAAQ,EAAQ,MAStB,OARI,aAAiB,MAErB,EAAQ,OAAO,KAAK,CAChB,SAAU,OACV,KAAM,eACN,QACA,SALO,KAUN,GAA8B,EAAkB,iBAAkB,EAAM,IAAQ,CACzF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,IAAM,EAAO,EAAI,UAAU,EAAQ,MAAO,GAC1C,GAAI,EAAK,MAAO,CACZ,IAAM,EAAS,aAAgB,QAAU,EAAO,QAAQ,QAAQ,GAChE,OAAO,EAAO,KAAM,IAChB,EAAQ,MAAQ6K,EACT,IAGf,GAAI,aAAgB,QAChB,MAAM,IAAA,GAGV,MADA,GAAQ,MAAQ,EACT,KAGF,GAA6B,EAAkB,gBAAiB,EAAM,IAAQ,CACvF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,MAAQ,WAClB,EAAK,KAAK,OAAS,WACnB,EAAgB,EAAK,KAAM,aAChB,EAAI,UAAU,KAAK,OAAS,IAAI,IAAI,CAAC,GAAG,EAAI,UAAU,KAAK,OAAQ,IAAA,KAAc,IAAA,IAE5F,EAAgB,EAAK,KAAM,cAAiB,CACxC,IAAM,EAAU,EAAI,UAAU,KAAK,QACnC,OAAO,EAAc,OAAO,KAAA,GAAqB,EAAQ,QAAQ,MAAQ,IAAA,KAE7E,EAAK,KAAK,OAAS,EAAS,IACpB,EAAQ,QAAU,IAAA,GACX,EAEJ,EAAI,UAAU,KAAK,IAAI,EAAS,KAGlC,GAA6B,EAAkB,gBAAiB,EAAM,IAAQ,CACvF,EAAS,KAAK,EAAM,GACpB,EAAgB,EAAK,KAAM,YAAe,EAAI,UAAU,KAAK,OAC7D,EAAgB,EAAK,KAAM,aAAgB,EAAI,UAAU,KAAK,QAC9D,EAAgB,EAAK,KAAM,cAAiB,CACxC,IAAM,EAAU,EAAI,UAAU,KAAK,QACnC,OAAO,EAAc,OAAO,KAAA,GAAqB,EAAQ,QAAQ,UAAY,IAAA,KAEjF,EAAgB,EAAK,KAAM,aAChB,EAAI,UAAU,KAAK,OAAS,IAAI,IAAI,CAAC,GAAG,EAAI,UAAU,KAAK,OAAQ,OAAS,IAAA,IAEvF,EAAK,KAAK,OAAS,EAAS,IACpB,EAAQ,QAAU,KACX,EACJ,EAAI,UAAU,KAAK,IAAI,EAAS,KAGlC,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,EAAS,KAAK,EAAM,GAEpB,EAAK,KAAK,MAAQ,WAClB,EAAgB,EAAK,KAAM,aAAgB,EAAI,UAAU,KAAK,QAC9D,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,GAAI,EAAQ,QAAU,IAAA,GAKlB,MAJA,GAAQ,MAAQ,EAAI,aAIb,EAEX,IAAM,EAAS,EAAI,UAAU,KAAK,IAAI,EAAS,GAI/C,OAHI,aAAkB,QACX,EAAO,KAAM,GAAW,GAAoB6J,EAAQ,IAExD,GAAoB,EAAQ,MAG3C,SAAS,GAAoB,EAAS,EAAK,CAIvC,OAHI,EAAQ,QAAU,IAAA,KAClB,EAAQ,MAAQ,EAAI,cAEjB,EAEX,MAAa,GAA6B,EAAkB,gBAAiB,EAAM,IAAQ,CACvF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,MAAQ,WAClB,EAAgB,EAAK,KAAM,aAAgB,EAAI,UAAU,KAAK,QAC9D,EAAK,KAAK,OAAS,EAAS,KACpB,EAAQ,QAAU,IAAA,KAClB,EAAQ,MAAQ,EAAI,cAEjB,EAAI,UAAU,KAAK,IAAI,EAAS,MAGlC,GAAgC,EAAkB,mBAAoB,EAAM,IAAQ,CAC7F,EAAS,KAAK,EAAM,GACpB,EAAgB,EAAK,KAAM,aAAgB,CACvC,IAAM,EAAI,EAAI,UAAU,KAAK,OAC7B,OAAO,EAAI,IAAI,IAAI,CAAC,GAAG,GAAG,OAAQ,GAAM,IAAM,IAAA,KAAc,IAAA,KAEhE,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAS,EAAI,UAAU,KAAK,IAAI,EAAS,GAI/C,OAHI,aAAkB,QACX,EAAO,KAAM,GAAW,GAAwBA,EAAQ,IAE5D,GAAwB,EAAQ,MAG/C,SAAS,GAAwB,EAAS,EAAM,CAS5C,MARI,CAAC,EAAQ,OAAO,QAAU,EAAQ,QAAU,IAAA,IAC5C,EAAQ,OAAO,KAAK,CAChB,KAAM,eACN,SAAU,cACV,MAAO,EAAQ,MACf,SAGD,EAEX,MAAa,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAS,EAAI,UAAU,KAAK,IAAI,EAAS,GAQ/C,OAPI,aAAkB,QACX,EAAO,KAAM,IAChB,EAAQ,MAAQA,EAAO,OAAO,SAAW,EAClC,KAGf,EAAQ,MAAQ,EAAO,OAAO,SAAW,EAClC,MAGF,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,EAAS,KAAK,EAAM,GACpB,EAAgB,EAAK,KAAM,YAAe,EAAI,UAAU,KAAK,OAC7D,EAAgB,EAAK,KAAM,aAAgB,EAAI,UAAU,KAAK,QAC9D,EAAgB,EAAK,KAAM,aAAgB,EAAI,UAAU,KAAK,QAC9D,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAS,EAAI,UAAU,KAAK,IAAI,EAAS,GA4B/C,OA3BI,aAAkB,QACX,EAAO,KAAM,IAChB,EAAQ,MAAQA,EAAO,MACnBA,EAAO,OAAO,SACd,EAAQ,MAAQ,EAAI,WAAW,CAC3B,GAAG,EACH,MAAO,CACH,OAAQA,EAAO,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,OAE/D,MAAO,EAAQ,QAEnB,EAAQ,OAAS,IAEd,KAGf,EAAQ,MAAQ,EAAO,MACnB,EAAO,OAAO,SACd,EAAQ,MAAQ,EAAI,WAAW,CAC3B,GAAG,EACH,MAAO,CACH,OAAQ,EAAO,OAAO,IAAK,GAAA,GAA2B,EAAK,EAAA,OAE/D,MAAO,EAAQ,QAEnB,EAAQ,OAAS,IAEd,MAGF,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,MACpB,OAAO,EAAQ,OAAU,UAAY,CAAC,OAAO,MAAM,EAAQ,SAC3D,EAAQ,OAAO,KAAK,CAChB,MAAO,EAAQ,MACf,OACA,SAAU,MACV,KAAM,iBAIP,KAGF,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,EAAS,KAAK,EAAM,GACpB,EAAgB,EAAK,KAAM,aAAgB,EAAI,GAAG,KAAK,QACvD,EAAgB,EAAK,KAAM,YAAe,EAAI,GAAG,KAAK,OACtD,EAAgB,EAAK,KAAM,aAAgB,EAAI,IAAI,KAAK,QACxD,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAO,EAAI,GAAG,KAAK,IAAI,EAAS,GAItC,OAHI,aAAgB,QACT,EAAK,KAAM,GAAS,GAAiB/U,EAAM,EAAK,IAEpD,GAAiB,EAAM,EAAK,MAG3C,SAAS,GAAiB,EAAM,EAAK,EAAK,CAItC,OAHA,GAAiB,GACN,EAEJ,EAAI,IAAI,KAAK,IAAI,CAAE,MAAO,EAAK,MAAO,OAAQ,EAAK,QAAU,GAExE,MAAa,GAA6B,EAAkB,gBAAiB,EAAM,IAAQ,CACvF,EAAS,KAAK,EAAM,GACpB,EAAgB,EAAK,KAAM,iBAAoB,EAAI,UAAU,KAAK,YAClE,EAAgB,EAAK,KAAM,YAAe,EAAI,UAAU,KAAK,OAC7D,EAAgB,EAAK,KAAM,aAAgB,EAAI,UAAU,KAAK,QAC9D,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAS,EAAI,UAAU,KAAK,IAAI,EAAS,GAI/C,OAHI,aAAkB,QACX,EAAO,KAAK,IAEhB,GAAqB,MAGpC,SAAS,GAAqB,EAAS,CAEnC,MADA,GAAQ,MAAQ,OAAO,OAAO,EAAQ,OAC/B,EAEX,MAAa,GAAoC,EAAkB,uBAAwB,EAAM,IAAQ,CACrG,EAAS,KAAK,EAAM,GACpB,IAAM,EAAa,GACnB,IAAK,IAAM,KAAQ,EAAI,MACnB,GAAI,aAAgB,EAAU,CAC1B,GAAI,CAAC,EAAK,KAAK,QAEX,MAAU,MAAM,oDAAoD,CAAC,GAAG,EAAK,KAAK,QAAQ,WAE9F,IAAM,EAAS,EAAK,KAAK,mBAAmB,OAAS,EAAK,KAAK,QAAQ,OAAS,EAAK,KAAK,QAC1F,GAAI,CAAC,EACD,MAAU,MAAM,kCAAkC,EAAK,KAAK,UAChE,IAAM,EAAQ,EAAO,WAAW,KAAO,EAAI,EACrC,EAAM,EAAO,SAAS,KAAO,EAAO,OAAS,EAAI,EAAO,OAC9D,EAAW,KAAK,EAAO,MAAM,EAAO,YAE/B,IAAS,MAAA,GAAQO,IAAwB,OAAO,GACrD,EAAW,KAAA,GAAsB,GAAG,WAGpC,MAAU,MAAM,kCAAkC,KAG1D,EAAK,KAAK,QAAc,OAAO,IAAI,EAAW,KAAK,IAAI,IACvD,EAAK,KAAK,OAAS,EAAS,IACpB,OAAO,EAAQ,OAAU,UAS7B,EAAK,KAAK,QAAQ,UAAY,EACzB,EAAK,KAAK,QAAQ,KAAK,EAAQ,QAChC,EAAQ,OAAO,KAAK,CAChB,MAAO,EAAQ,MACf,OACA,KAAM,iBACN,OAAQ,mBACR,QAAS,EAAK,KAAK,QAAQ,SAI5B,IAnBH,EAAQ,OAAO,KAAK,CAChB,MAAO,EAAQ,MACf,OACA,SAAU,mBACV,KAAM,iBAEH,KAgBN,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IACjB,QAAQ,QAAQ,EAAQ,OAAO,KAAM,GAAU,EAAI,UAAU,KAAK,IAAI,CAAE,MAAO,EAAO,OAAQ,IAAM,MAGtG,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,EAAS,KAAK,EAAM,GACpB,EAAgB,EAAK,KAAM,gBAAmB,EAAI,UAClD,EAAgB,EAAK,KAAM,cAAiB,EAAK,KAAK,UAAU,KAAK,SACrE,EAAgB,EAAK,KAAM,iBAAoB,EAAK,KAAK,UAAU,KAAK,YACxE,EAAgB,EAAK,KAAM,YAAe,EAAK,KAAK,UAAU,KAAK,OACnE,EAAgB,EAAK,KAAM,aAAgB,EAAK,KAAK,UAAU,KAAK,QACpE,EAAK,KAAK,OAAS,EAAS,IAAQ,CAChC,IAAM,EAAQ,EAAK,KAAK,UACxB,OAAO,EAAM,KAAK,IAAI,EAAS,MAG1B,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,EAAA,KAAsB,EAAM,GAC5B,EAAS,KAAK,EAAM,GACpB,EAAK,KAAK,OAAS,EAAS,IACjB,EAEX,EAAK,KAAK,MAAS,GAAY,CAC3B,IAAM,EAAQ,EAAQ,MAChB,EAAI,EAAI,GAAG,GACjB,GAAI,aAAa,QACb,OAAO,EAAE,KAAM,GAAM,GAAmBX,EAAG,EAAS,EAAO,IAE/D,GAAmB,EAAG,EAAS,EAAO,MAI9C,SAAS,GAAmB,EAAQ,EAAS,EAAO,EAAM,CACtD,GAAI,CAAC,EAAQ,CACT,IAAM,EAAO,CACT,KAAM,SACN,QACA,OACA,KAAM,CAAC,GAAI,EAAK,KAAK,IAAI,MAAQ,IACjC,SAAU,CAAC,EAAK,KAAK,IAAI,OAGzB,EAAK,KAAK,IAAI,SACd,EAAK,OAAS,EAAK,KAAK,IAAI,QAChC,EAAQ,OAAO,KAAA,GAAgB,KCppDvC,MAAMgW,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,MAAO,KAAM,WAC7B,KAAM,CAAE,KAAM,OAAQ,KAAM,WAC5B,MAAO,CAAE,KAAM,OAAQ,KAAM,WAC7B,IAAK,CAAE,KAAM,OAAQ,KAAM,YAE/B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,OACP,MAAO,gBACP,IAAK,OACL,MAAO,SACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,wBACV,KAAM,mBACN,KAAM,iBACN,SAAU,iBACV,KAAM,aACN,KAAM,aACN,OAAQ,wBACR,OAAQ,wBACR,OAAQ,4BACR,UAAW,+BACX,YAAa,oBACb,KAAM,wBACN,IAAK,MACL,iBAAkB,QAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,kCAAkCA,EAAM,SAAS,kBAAkBJ,EAAWI,EAAM,SAC/F,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,kCAAA,EAA0DA,EAAM,OAAO,MAC3E,oDAAA,EAAoEA,EAAM,OAAQ,OAC7F,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,kCAAkCA,EAAM,QAAU,SAAS,GAAG,EAAI,GAAGA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,SACpH,iCAAiCA,EAAM,QAAU,SAAS,GAAG,EAAI,GAAGA,EAAM,QAAQ,aAE7F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,4BAA4BA,EAAM,OAAO,WAAW,EAAI,GAAGA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAElG,4BAA4BA,EAAM,OAAO,WAAW,EAAI,GAAGA,EAAM,QAAQ,aAEpF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,kCAAkCA,EAAM,OAAO,GACtD,EAAO,SAAW,YACX,mCAAmC,EAAO,OAAO,GACxD,EAAO,SAAW,WACX,kCAAkC,EAAO,SAAS,GACzD,EAAO,SAAW,QACX,qCAAqC,EAAO,UAChD,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,YAEnD,IAAK,kBACD,MAAO,yCAAyCA,EAAM,UAC1D,IAAK,oBACD,MAAO,OAAOA,EAAM,KAAK,OAAS,EAAI,KAAO,GAAG,OAAOA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QAC5H,IAAK,cACD,MAAO,qBAAqBA,EAAM,SACtC,IAAK,gBACD,MAAO,iBACX,IAAK,kBACD,MAAO,qBAAqBA,EAAM,SACtC,QACI,MAAO,oBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,SAAU,KAAM,aAChC,KAAM,CAAE,KAAM,OAAQ,KAAM,aAC5B,MAAO,CAAE,KAAM,UAAW,KAAM,aAChC,IAAK,CAAE,KAAM,UAAW,KAAM,cAElC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,gBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,eACV,KAAM,WACN,KAAM,WACN,SAAU,eACV,KAAM,eACN,KAAM,eACN,OAAQ,aACR,OAAQ,aACR,OAAQ,wBACR,UAAW,2BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,4BAA4BA,EAAM,SAAS,eAAeJ,EAAWI,EAAM,SACtF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,4BAAA,EAAoDA,EAAM,OAAO,MACrE,iDAAA,EAAiEA,EAAM,OAAQ,OAC1F,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,yBAAyBA,EAAM,QAAU,QAAQ,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,YACzG,yBAAyBA,EAAM,QAAU,QAAQ,GAAG,IAAMA,EAAM,QAAQ,aAEnF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,yBAAyBA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OACtF,yBAAyBA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,aAExE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,iBAAiB,EAAO,OAAO,oBACtC,EAAO,SAAW,YACX,iBAAiB,EAAO,OAAO,kBACtC,EAAO,SAAW,WACX,iBAAiB,EAAO,SAAS,mBACxC,EAAO,SAAW,QACX,gBAAgB,EAAO,QAAQ,4BACnC,UAAU,EAAM,EAAO,SAAWA,EAAM,SAEnD,IAAK,kBACD,MAAO,gBAAgBA,EAAM,QAAQ,6BACzC,IAAK,oBACD,MAAO,kBAAkBA,EAAM,KAAK,OAAS,EAAI,MAAQ,GAAG,IAAA,EAAoBA,EAAM,KAAM,QAChG,IAAK,cACD,MAAO,GAAGA,EAAM,OAAO,wBAC3B,IAAK,gBACD,MAAO,eACX,IAAK,kBACD,MAAO,GAAGA,EAAM,OAAO,yBAC3B,QACI,MAAO,kBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MC/GrB,SAAS,GAAoB,EAAO,EAAK,EAAK,EAAM,CAChD,IAAM,EAAW,KAAK,IAAI,GACpB,EAAY,EAAW,GACvB,EAAgB,EAAW,IAUjC,OATI,GAAiB,IAAM,GAAiB,GACjC,EAEP,IAAc,EACP,EAEP,GAAa,GAAK,GAAa,EACxB,EAEJ,EAEX,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CACJ,KAAM,CACF,IAAK,SACL,IAAK,UACL,KAAM,YAEV,KAAM,QAEV,MAAO,CACH,KAAM,CACF,IAAK,UACL,IAAK,WACL,KAAM,aAEV,KAAM,QAEV,IAAK,CACD,KAAM,CACF,IAAK,UACL,IAAK,WACL,KAAM,aAEV,KAAM,QAEV,KAAM,CACF,KAAM,CACF,IAAK,OACL,IAAK,QACL,KAAM,UAEV,KAAM,SAGd,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,MAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,OACP,MAAO,cACP,IAAK,MACL,MAAO,SACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,iBACV,KAAM,WACN,KAAM,UACN,SAAU,kBACV,KAAM,aACN,KAAM,aACN,OAAQ,gBACR,OAAQ,gBACR,OAAQ,yBACR,UAAW,4BACX,YAAa,aACb,KAAM,cACN,IAAK,MACL,iBAAkB,QAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,6BAA6BA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SACrF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,8BAAA,EAAsDA,EAAM,OAAO,MACvE,wCAAA,EAAwDA,EAAM,OAAQ,OACjF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAC/B,GAAI,EAAQ,CACR,IAAM,EAAW,OAAOA,EAAM,SACxB,EAAO,GAAoB,EAAU,EAAO,KAAK,IAAK,EAAO,KAAK,IAAK,EAAO,KAAK,MACzF,MAAO,iCAAiCA,EAAM,QAAU,WAAW,WAAW,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,IAEnI,MAAO,iCAAiCA,EAAM,QAAU,WAAW,gBAAgB,IAAMA,EAAM,QAAQ,aAE3G,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAC/B,GAAI,EAAQ,CACR,IAAM,EAAW,OAAOA,EAAM,SACxB,EAAO,GAAoB,EAAU,EAAO,KAAK,IAAK,EAAO,KAAK,IAAK,EAAO,KAAK,MACzF,MAAO,+BAA+BA,EAAM,OAAO,WAAW,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,IAEnH,MAAO,+BAA+BA,EAAM,OAAO,gBAAgB,IAAMA,EAAM,QAAQ,aAE3F,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,2CAA2C,EAAO,OAAO,GAChE,EAAO,SAAW,YACX,8CAA8C,EAAO,OAAO,GACnE,EAAO,SAAW,WACX,wCAAwC,EAAO,SAAS,GAC/D,EAAO,SAAW,QACX,iDAAiD,EAAO,UAC5D,eAAe,EAAM,EAAO,SAAWA,EAAM,SAExD,IAAK,kBACD,MAAO,yCAAyCA,EAAM,UAC1D,IAAK,oBACD,MAAO,gBAAgBA,EAAM,KAAK,OAAS,EAAI,QAAU,OAAO,IAAA,EAAoBA,EAAM,KAAM,QACpG,IAAK,cACD,MAAO,sBAAsBA,EAAM,SACvC,IAAK,gBACD,MAAO,mBACX,IAAK,kBACD,MAAO,2BAA2BA,EAAM,SAC5C,QACI,MAAO,sBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChKrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,YAAa,KAAM,YACnC,KAAM,CAAE,KAAM,QAAS,KAAM,YAC7B,MAAO,CAAE,KAAM,WAAY,KAAM,YACjC,IAAK,CAAE,KAAM,WAAY,KAAM,aAEnC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,UACP,MAAO,qBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,kBACV,KAAM,WACN,KAAM,WACN,SAAU,aACV,KAAM,cACN,KAAM,cACN,OAAQ,YACR,OAAQ,YACR,OAAQ,8BACR,UAAW,iCACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,WAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,6BAA6BA,EAAM,SAAS,eAAeJ,EAAWI,EAAM,SAEvF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,6BAAA,EAAqDA,EAAM,OAAO,MACtE,qCAAA,EAAqDA,EAAM,OAAQ,SAC9E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,cAAgB,WACxC,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,8BAA8BA,EAAM,QAAU,WAAW,cAAc,EAAI,GAAGA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,aAC7H,8BAA8BA,EAAM,QAAU,WAAW,OAAO,EAAI,GAAGA,EAAM,QAAQ,aAEhG,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,cAAgB,SACxC,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,+BAA+BA,EAAM,OAAO,cAAc,EAAI,GAAGA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAExG,+BAA+BA,EAAM,OAAO,OAAO,EAAI,GAAGA,EAAM,QAAQ,aAEnF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,uCAAuC,EAAO,OAAO,GAE5D,EAAO,SAAW,YACX,oCAAoC,EAAO,OAAO,GACzD,EAAO,SAAW,WACX,kCAAkC,EAAO,SAAS,GACzD,EAAO,SAAW,QACX,gDAAgD,EAAO,UAC3D,wBAAwB,EAAM,EAAO,SAAWA,EAAM,SAEjE,IAAK,kBACD,MAAO,yCAAyCA,EAAM,UAC1D,IAAK,oBACD,MAAO,OAAOA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,gBAAgBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACpI,IAAK,cACD,MAAO,mBAAmBA,EAAM,SACpC,IAAK,gBACD,MAAO,mBACX,IAAK,kBACD,MAAO,qBAAqBA,EAAM,SACtC,QACI,MAAO,sBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MClHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,QAAS,KAAM,OAC/B,KAAM,CAAE,KAAM,QAAS,KAAM,OAC7B,MAAO,CAAE,KAAM,QAAS,KAAM,OAC9B,IAAK,CAAE,KAAM,QAAS,KAAM,QAEhC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,QAExC,IAAK,SACD,MAAO,UAEX,IAAK,UACD,MAAO,UAEX,IAAK,SACD,MAAO,SAEX,IAAK,WACD,MAAO,SAEX,IAAK,SACD,MAAO,SAEX,IAAK,YACD,MAAO,YAEX,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,OAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,kBACP,MAAO,mBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,6BACV,KAAM,uBACN,KAAM,qBACN,SAAU,kBACV,KAAM,cACN,KAAM,cACN,OAAQ,cACR,OAAQ,cACR,OAAQ,uCACR,UAAW,0CACX,YAAa,0BACb,KAAM,cACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,6BAA6BA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SACrF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,6BAAA,EAAqDA,EAAM,OAAO,MACtE,8CAAA,EAA8DA,EAAM,OAAQ,OACvF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,4BAA4BA,EAAM,QAAU,UAAU,YAAY,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,UAEvH,4BAA4BA,EAAM,QAAU,UAAU,YAAY,IAAMA,EAAM,QAAQ,aAEjG,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,2BAA2BA,EAAM,QAAU,UAAU,YAAY,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,UAEtH,2BAA2BA,EAAM,QAAU,UAAU,YAAY,IAAMA,EAAM,QAAQ,aAEhG,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,sCAAsC,EAAO,OAAO,GAC3D,EAAO,SAAW,YACX,qCAAqC,EAAO,OAAO,GAC1D,EAAO,SAAW,WACX,qCAAqC,EAAO,SAAS,GAC5D,EAAO,SAAW,QACX,0CAA0C,EAAO,UACrD,mBAAmB,EAAM,EAAO,SAAWA,EAAM,SAE5D,IAAK,kBACD,MAAO,qCAAqCA,EAAM,UACtD,IAAK,oBACD,MAAO,kBAAA,EAAkCA,EAAM,KAAM,QACzD,IAAK,cACD,MAAO,mBAAmBA,EAAM,SACpC,IAAK,gBACD,MAAO,iBACX,IAAK,kBACD,MAAO,sBAAsBA,EAAM,SACvC,QACI,MAAO,oBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCnIrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,UAAW,KAAM,YACjC,KAAM,CAAE,KAAM,QAAS,KAAM,YAC7B,MAAO,CAAE,KAAM,WAAY,KAAM,YACjC,IAAK,CAAE,KAAM,WAAY,KAAM,aAEnC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,OAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,UACP,MAAO,iBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,yBACV,KAAM,YACN,KAAM,cACN,SAAU,YACV,KAAM,eACN,KAAM,eACN,OAAQ,eACR,OAAQ,eACR,OAAQ,0BACR,UAAW,8BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,WAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,+BAA+BA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SACvF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,+BAAA,EAAuDA,EAAM,OAAO,MACxE,uCAAA,EAAuDA,EAAM,OAAQ,OAChF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,2BAA2BA,EAAM,QAAU,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,WAAW,MACrH,2BAA2BA,EAAM,QAAU,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,MAE/F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,4BAA4BA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,KAAK,MAE9F,4BAA4BA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,MAEtF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,gCAAgC,EAAO,OAAO,YACrD,EAAO,SAAW,YACX,gCAAgC,EAAO,OAAO,SACrD,EAAO,SAAW,WACX,4BAA4B,EAAO,SAAS,aACnD,EAAO,SAAW,QACX,sCAAsC,EAAO,QAAQ,cACzD,aAAa,EAAM,EAAO,SAAWA,EAAM,SAEtD,IAAK,kBACD,MAAO,2CAA2CA,EAAM,QAAQ,OACpE,IAAK,oBACD,MAAO,GAAGA,EAAM,KAAK,OAAS,EAAI,uBAAyB,wBAAwB,IAAA,EAAoBA,EAAM,KAAM,QACvH,IAAK,cACD,MAAO,2BAA2BA,EAAM,SAC5C,IAAK,gBACD,MAAO,oBACX,IAAK,kBACD,MAAO,sBAAsBA,EAAM,SACvC,QACI,MAAO,uBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,MAAa/C,GAAc,GAAS,CAChC,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL+C,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,aAAc,KAAM,WACpC,KAAM,CAAE,KAAM,QAAS,KAAM,WAC7B,MAAO,CAAE,KAAM,QAAS,KAAM,WAC9B,IAAK,CAAE,KAAM,QAAS,KAAM,YAEhC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM,EAAQ,CACV,MAAO,QACP,MAAO,gBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,eACV,KAAM,WACN,KAAM,WACN,SAAU,eACV,KAAM,eACN,KAAM,eACN,OAAQ,aACR,OAAQ,aACR,OAAQ,wBACR,UAAW,2BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQ3C,EAAM,KAAd,CACI,IAAK,eACD,MAAO,2BAA2BA,EAAM,SAAS,aAAaJ,GAAWI,EAAM,SACnF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,2BAAA,EAAmDA,EAAM,OAAO,MACpE,mCAAA,EAAmDA,EAAM,OAAQ,OAC5E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,qBAAqBA,EAAM,QAAU,QAAQ,WAAW,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,aAC7G,qBAAqBA,EAAM,QAAU,QAAQ,SAAS,IAAMA,EAAM,QAAQ,aAErF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,uBAAuBA,EAAM,OAAO,WAAW,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAE5F,uBAAuBA,EAAM,OAAO,SAAS,IAAMA,EAAM,QAAQ,aAE5E,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,oCAAoC,EAAO,OAAO,GAEzD,EAAO,SAAW,YACX,kCAAkC,EAAO,OAAO,GACvD,EAAO,SAAW,WACX,iCAAiC,EAAO,SAAS,GACxD,EAAO,SAAW,QACX,sCAAsC,EAAO,UACjD,WAAW,EAAM,EAAO,SAAWA,EAAM,SAEpD,IAAK,kBACD,MAAO,yCAAyCA,EAAM,UAC1D,IAAK,oBACD,MAAO,mBAAmBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QAC/F,IAAK,cACD,MAAO,kBAAkBA,EAAM,SACnC,IAAK,gBACD,MAAO,gBACX,IAAK,kBACD,MAAO,oBAAoBA,EAAM,SACrC,QACI,MAAO,mBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,aAAc,KAAM,SACpC,KAAM,CAAE,KAAM,QAAS,KAAM,SAC7B,MAAO,CAAE,KAAM,YAAa,KAAM,SAClC,IAAK,CAAE,KAAM,YAAa,KAAM,UAEpC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,UAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,UACvC,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,UACP,MAAO,kCACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,mBACV,KAAM,YACN,KAAM,WACN,SAAU,eACV,KAAM,iBACN,KAAM,iBACN,OAAQ,aACR,OAAQ,aACR,OAAQ,8BACR,UAAW,2BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,WAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,iCAAiCA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SAEzF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,iCAAA,EAAyDA,EAAM,OAAO,MAC1E,uCAAA,EAAuDA,EAAM,OAAQ,OAChF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,qCAAqCA,EAAM,QAAU,QAAQ,WAAW,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,cAC7H,qCAAqCA,EAAM,QAAU,QAAQ,SAAS,IAAMA,EAAM,QAAQ,aAErG,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,sCAAsCA,EAAM,OAAO,WAAW,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAE3G,sCAAsCA,EAAM,OAAO,SAAS,IAAMA,EAAM,QAAQ,aAE3F,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,uCAAuC,EAAO,OAAO,GAC5D,EAAO,SAAW,YACX,sCAAsC,EAAO,OAAO,GAC3D,EAAO,SAAW,WACX,kCAAkC,EAAO,SAAS,GACzD,EAAO,SAAW,QACX,iDAAiD,EAAO,UAC5D,YAAY,EAAM,EAAO,SAAWA,EAAM,SAErD,IAAK,kBACD,MAAO,yCAAyCA,EAAM,UAC1D,IAAK,oBACD,MAAO,QAAQA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,cAAcA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACnI,IAAK,cACD,MAAO,qBAAqBA,EAAM,SACtC,IAAK,gBACD,MAAO,mBACX,IAAK,kBACD,MAAO,qBAAqBA,EAAM,SACtC,QACI,MAAO,sBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,UAAW,KAAM,cACjC,KAAM,CAAE,KAAM,OAAQ,KAAM,cAC5B,MAAO,CAAE,KAAM,OAAQ,KAAM,cAC7B,IAAK,CAAE,KAAM,OAAQ,KAAM,eAE/B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,MAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,aACP,IAAK,MACL,MAAO,SACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,oBACV,KAAM,aACN,KAAM,YACN,SAAU,gBACV,KAAM,YACN,KAAM,YACN,OAAQ,aACR,OAAQ,aACR,OAAQ,sBACR,UAAW,yBACX,YAAa,YACb,KAAM,YACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,2BAA2BA,EAAM,SAAS,WAAWJ,EAAWI,EAAM,OAAO,YACxF,IAAK,gBAID,OAHIA,EAAM,OAAO,SAAW,EACjB,2BAAA,EAAmDA,EAAM,OAAO,IAAI,SAExE,kCAAA,EAAkDA,EAAM,OAAQ,KAAK,SAChF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,cAAcA,EAAM,QAAU,QAAQ,QAAQ,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,OAAO,OAE1G,cAAcA,EAAM,QAAU,QAAQ,QAAQ,IAAMA,EAAM,QAAQ,WAAW,OAExF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,cAAcA,EAAM,OAAO,QAAQ,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,KAAK,OAErF,cAAcA,EAAM,OAAO,QAAQ,IAAMA,EAAM,QAAQ,WAAW,OAE7E,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAaf,OAZI,EAAO,SAAW,cACX,0BAA0B,EAAO,OAAO,YAE/C,EAAO,SAAW,YACX,0BAA0B,EAAO,OAAO,YAE/C,EAAO,SAAW,WACX,4BAA4B,EAAO,SAAS,QAEnD,EAAO,SAAW,QACX,+BAA+B,EAAO,QAAQ,oBAElD,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,UAEnD,IAAK,kBACD,MAAO,0BAA0BA,EAAM,QAAQ,OACnD,IAAK,oBACD,MAAO,OAAOA,EAAM,KAAK,OAAS,EAAI,MAAQ,GAAG,WAAA,EAA2BA,EAAM,KAAM,QAC5F,IAAK,cACD,MAAO,kBAAkBA,EAAM,SACnC,IAAK,gBACD,MAAO,gBACX,IAAK,kBACD,MAAO,oBAAoBA,EAAM,SACrC,QACI,MAAO,mBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCtHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,UAAW,QAAS,eACpC,KAAM,CAAE,KAAM,QAAS,QAAS,aAChC,MAAO,CAAE,KAAM,UAAW,QAAS,UACnC,IAAK,CAAE,KAAM,UAAW,QAAS,UACjC,OAAQ,CAAE,KAAM,GAAI,QAAS,SAC7B,OAAQ,CAAE,KAAM,GAAI,QAAS,wBAC7B,IAAK,CAAE,KAAM,GAAI,QAAS,iBAC1B,KAAM,CAAE,KAAM,GAAI,QAAS,gBAE/B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,uBACP,MAAO,mBACP,IAAK,aACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,gBACV,KAAM,iBACN,KAAM,WACN,SAAU,YACV,KAAM,cACN,KAAM,cACN,OAAQ,YACR,OAAQ,YACR,OAAQ,6BACR,UAAW,gCACX,YAAa,kBACb,KAAM,aACN,IAAK,MACL,iBAAkB,wBAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,mCAAmCA,EAAM,SAAS,QAAQJ,EAAWI,EAAM,SACtF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,mCAAA,EAA2DA,EAAM,OAAO,MAC5E,uDAAA,EAAuEA,EAAM,OAAQ,OAChG,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,gBAAgB,EAAO,QAAQ,eAAe,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAAO,OAElG,kCAAkC,IAAMA,EAAM,QAAQ,aAEjE,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,gBAAgB,EAAO,QAAQ,eAAe,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAAO,OAElG,kCAAkC,IAAMA,EAAM,QAAQ,aAEjE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,qCAAqC,EAAO,OAAO,GAC1D,EAAO,SAAW,YACX,sCAAsC,EAAO,OAAO,GAC3D,EAAO,SAAW,WACX,wCAAwC,EAAO,SAAS,GAC/D,EAAO,SAAW,QACX,8DAA8D,EAAO,UAEzE,gBAAgB,EAAM,EAAO,SAAWA,EAAM,SAEzD,IAAK,kBACD,MAAO,wCAAwCA,EAAM,QAAQ,YACjE,IAAK,oBACD,MAAO,GAAGA,EAAM,KAAK,OAAS,EAAI,wBAA0B,mBAAmB,IAAA,EAAoBA,EAAM,KAAM,QACnH,IAAK,cACD,MAAO,gCACX,IAAK,gBACD,MAAO,sBACX,IAAK,kBACD,MAAO,6BACX,QACI,MAAO,wBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCtHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,aAAc,KAAM,SACpC,KAAM,CAAE,KAAM,SAAU,KAAM,SAC9B,MAAO,CAAE,KAAM,WAAY,KAAM,SACjC,IAAK,CAAE,KAAM,WAAY,KAAM,UAEnC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,UAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,SACP,MAAO,iBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,oBACV,KAAM,WACN,KAAM,YACN,SAAU,YACV,KAAM,eACN,KAAM,eACN,OAAQ,aACR,OAAQ,aACR,OAAQ,2BACR,UAAW,8BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,UAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,qBAAqBA,EAAM,SAAS,YAAYJ,EAAWI,EAAM,OAAO,OACnF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,qBAAA,EAA6CA,EAAM,OAAO,IAAI,UAClE,sCAAA,EAAsDA,EAAM,OAAQ,KAAK,WACpF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,gBAAgBA,EAAM,QAAU,SAAS,QAAQ,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,eACrH,gBAAgBA,EAAM,QAAU,SAAS,aAAa,IAAMA,EAAM,QAAQ,aAErF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,gBAAgBA,EAAM,OAAO,QAAQ,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEjG,gBAAgBA,EAAM,OAAO,aAAa,IAAMA,EAAM,QAAQ,aAEzE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,yCAAyC,EAAO,OAAO,GAC9D,EAAO,SAAW,YACX,2CAA2C,EAAO,OAAO,GAChE,EAAO,SAAW,WACX,mCAAmC,EAAO,SAAS,GAC1D,EAAO,SAAW,QACX,iDAAiD,EAAO,UAC5D,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,WAEnD,IAAK,kBACD,MAAO,8CAA8CA,EAAM,UAC/D,IAAK,oBACD,MAAO,MAAMA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,eAAeA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,KAAA,EAAqBA,EAAM,KAAM,QACnI,IAAK,cACD,MAAO,qBAAqBA,EAAM,SACtC,IAAK,gBACD,MAAO,kBACX,IAAK,kBACD,MAAO,wBAAwBA,EAAM,SACzC,QACI,MAAO,qBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,aAAc,KAAM,SACpC,KAAM,CAAE,KAAM,SAAU,KAAM,SAC9B,MAAO,CAAE,KAAM,WAAY,KAAM,SACjC,IAAK,CAAE,KAAM,WAAY,KAAM,UAEnC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,SACP,MAAO,mBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,iBACV,KAAM,WACN,KAAM,YACN,SAAU,YACV,KAAM,eACN,KAAM,eACN,OAAQ,aACR,OAAQ,aACR,OAAQ,2BACR,UAAW,8BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,UAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,6BAA6BA,EAAM,SAAS,SAASJ,EAAWI,EAAM,SACjF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,6BAAA,EAAqDA,EAAM,OAAO,MACtE,yDAAA,EAAyEA,EAAM,OAAQ,OAClG,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,IAAM,IAC9B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,4BAA4BA,EAAM,QAAU,YAAY,OAAO,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAC5G,4BAA4BA,EAAM,QAAU,YAAY,QAAQ,IAAMA,EAAM,QAAQ,aAE/F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,IAAM,IAC9B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,4BAA4BA,EAAM,OAAO,OAAO,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAE7F,4BAA4BA,EAAM,OAAO,QAAQ,IAAMA,EAAM,QAAQ,aAEhF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,yCAAyC,EAAO,OAAO,GAE9D,EAAO,SAAW,YACX,2CAA2C,EAAO,OAAO,GAChE,EAAO,SAAW,WACX,mCAAmC,EAAO,SAAS,GAC1D,EAAO,SAAW,QACX,gDAAgD,EAAO,UAC3D,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,WAEnD,IAAK,kBACD,MAAO,8CAA8CA,EAAM,UAC/D,IAAK,oBACD,MAAO,MAAMA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,eAAeA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,KAAA,EAAqBA,EAAM,KAAM,QACnI,IAAK,cACD,MAAO,qBAAqBA,EAAM,SACtC,IAAK,gBACD,MAAO,kBACX,IAAK,kBACD,MAAO,wBAAwBA,EAAM,SACzC,QACI,MAAO,qBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,SAAU,KAAM,SAChC,KAAM,CAAE,KAAM,SAAU,KAAM,SAC9B,MAAO,CAAE,KAAM,SAAU,KAAM,SAC/B,IAAK,CAAE,KAAM,SAAU,KAAM,UAEjC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,MACP,MAAO,eACP,IAAK,YACL,MAAO,UACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,iBACV,KAAM,YACN,KAAM,UACN,SAAU,cACV,KAAM,aACN,KAAM,aACN,OAAQ,YACR,OAAQ,YACR,OAAQ,kBACR,UAAW,8BACX,YAAa,cACb,KAAM,aACN,IAAK,MACL,iBAAkB,OAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,qBAAqBA,EAAM,SAAS,UAAUJ,EAAWI,EAAM,SAE1E,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,qBAAA,EAA6CA,EAAM,OAAO,MAC9D,qCAAA,EAAqDA,EAAM,OAAQ,OAC9E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,aAAaA,EAAM,QAAU,QAAQ,cAAc,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,aACxG,aAAaA,EAAM,QAAU,QAAQ,cAAc,IAAMA,EAAM,QAAQ,aAElF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,YAAYA,EAAM,OAAO,cAAc,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEpF,YAAYA,EAAM,OAAO,cAAc,IAAMA,EAAM,QAAQ,aAEtE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,mCAAmC,EAAO,OAAO,GACxD,EAAO,SAAW,YACX,qCAAqC,EAAO,OAAO,GAC1D,EAAO,SAAW,WACX,iCAAiC,EAAO,SAAS,GACxD,EAAO,SAAW,QACX,wCAAwC,EAAO,UACnD,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,UAEnD,IAAK,kBACD,MAAO,qCAAqCA,EAAM,UACtD,IAAK,oBACD,MAAO,OAAOA,EAAM,KAAK,OAAS,EAAI,KAAO,GAAG,UAAUA,EAAM,KAAK,OAAS,EAAI,KAAO,IAAI,IAAA,EAAoBA,EAAM,KAAM,QACjI,IAAK,cACD,MAAO,iBAAiBA,EAAM,SAClC,IAAK,gBACD,MAAO,cACX,IAAK,kBACD,MAAO,gBAAgBA,EAAM,SACjC,QACI,MAAO,iBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,WAAY,KAAM,UAClC,KAAM,CAAE,KAAM,OAAQ,KAAM,UAC5B,MAAO,CAAE,KAAM,OAAQ,KAAM,UAC7B,IAAK,CAAE,KAAM,OAAQ,KAAM,WAE/B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,OAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,OAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,UACP,MAAO,YACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,gBACV,KAAM,YACN,KAAM,UACN,SAAU,qBACV,KAAM,WACN,KAAM,WACN,OAAQ,iBACR,OAAQ,iBACR,OAAQ,uBACR,UAAW,0BACX,YAAa,cACb,KAAM,aACN,IAAK,MACL,iBAAkB,WAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,qCAAqCA,EAAM,SAAS,mBAAmBJ,EAAWI,EAAM,SAEnG,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,qCAAA,EAA6DA,EAAM,OAAO,MAC9E,4CAAA,EAA4DA,EAAM,OAAQ,OACrF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,aAAaA,EAAM,QAAU,QAAQ,mBAAmB,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,SAC7G,8BAA8BA,EAAM,QAAU,QAAQ,aAAa,IAAMA,EAAM,QAAQ,aAElG,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,+BAA+BA,EAAM,OAAO,oBAAoB,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAE7G,+BAA+BA,EAAM,OAAO,aAAa,IAAMA,EAAM,QAAQ,aAExF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,wBAAwB,EAAO,OAAO,2BAC7C,EAAO,SAAW,YACX,wBAAwB,EAAO,OAAO,2BAC7C,EAAO,SAAW,WACX,wBAAwB,EAAO,SAAS,6BAC/C,EAAO,SAAW,QACX,uBAAuB,EAAO,QAAQ,4BAC1C,eAAe,EAAM,EAAO,SAAWA,EAAM,SAExD,IAAK,kBACD,MAAO,qBAAqBA,EAAM,QAAQ,6BAC9C,IAAK,oBACD,MAAO,mBAAmBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QAC/F,IAAK,cACD,MAAO,qBAAqBA,EAAM,SACtC,IAAK,gBACD,MAAO,sBACX,IAAK,kBACD,MAAO,sBAAsBA,EAAM,SACvC,QACI,MAAO,yBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,WAAY,KAAM,YAClC,KAAM,CAAE,KAAM,OAAQ,KAAM,YAC5B,MAAO,CAAE,KAAM,OAAQ,KAAM,YAC7B,IAAK,CAAE,KAAM,OAAQ,KAAM,aAE/B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,eACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,+BACV,KAAM,qBACN,KAAM,iBACN,SAAU,oBACV,KAAM,cACN,KAAM,cACN,OAAQ,sBACR,OAAQ,sBACR,OAAQ,8BACR,UAAW,iCACX,YAAa,cACb,KAAM,cACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,iCAAiCA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SACzF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,iCAAA,EAAyDA,EAAM,OAAO,MAC1E,mDAAA,EAAmEA,EAAM,OAAQ,OAC5F,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,6BAA6BA,EAAM,QAAU,QAAQ,YAAY,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,WACtH,6BAA6BA,EAAM,QAAU,QAAQ,WAAW,IAAMA,EAAM,QAAQ,aAE/F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,6BAA6BA,EAAM,OAAO,YAAY,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEnG,6BAA6BA,EAAM,OAAO,WAAW,IAAMA,EAAM,QAAQ,aAEpF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,6CAA6C,EAAO,OAAO,GAClE,EAAO,SAAW,YACX,8CAA8C,EAAO,OAAO,GACnE,EAAO,SAAW,WACX,0CAA0C,EAAO,SAAS,GACjE,EAAO,SAAW,QACX,yCAAyC,EAAO,UACpD,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,cAEnD,IAAK,kBACD,MAAO,2CAA2CA,EAAM,UAC5D,IAAK,oBACD,MAAO,wBAAwBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACpG,IAAK,cACD,MAAO,wBAAwBA,EAAM,SACzC,IAAK,gBACD,MAAO,oBACX,IAAK,kBACD,MAAO,wBAAwBA,EAAM,SACzC,QACI,MAAO,uBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,YAAa,KAAM,SACnC,KAAM,CAAE,KAAM,OAAQ,KAAM,SAC5B,MAAO,CAAE,KAAM,WAAY,KAAM,SACjC,IAAK,CAAE,KAAM,WAAY,KAAM,UAEnC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,UAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,kBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,iBACV,KAAM,WACN,KAAM,UACN,SAAU,aACV,KAAM,iBACN,KAAM,iBACN,OAAQ,kBACR,OAAQ,kBACR,OAAQ,+BACR,UAAW,2BACX,YAAa,eACb,KAAM,eACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,4BAA4BA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SAEpF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,4BAAA,EAAoDA,EAAM,OAAO,MACrE,sCAAA,EAAsDA,EAAM,OAAQ,OAC/E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,kBAAkBA,EAAM,QAAU,SAAS,cAAc,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,aAC9G,kBAAkBA,EAAM,QAAU,SAAS,eAAe,IAAMA,EAAM,QAAQ,aAEzF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,mBAAmBA,EAAM,OAAO,cAAc,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAE3F,mBAAmBA,EAAM,OAAO,eAAe,IAAMA,EAAM,QAAQ,aAE9E,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,0CAA0C,EAAO,OAAO,GAC/D,EAAO,SAAW,YACX,2CAA2C,EAAO,OAAO,GAChE,EAAO,SAAW,WACX,uCAAuC,EAAO,SAAS,GAC9D,EAAO,SAAW,QACX,qDAAqD,EAAO,UAChE,WAAW,EAAM,EAAO,SAAWA,EAAM,SAEpD,IAAK,kBACD,MAAO,iDAAiDA,EAAM,UAClE,IAAK,oBACD,MAAO,QAAQA,EAAM,KAAK,OAAS,EAAI,IAAM,IAAI,kBAAkBA,EAAM,KAAK,OAAS,EAAI,IAAM,IAAI,IAAA,EAAoBA,EAAM,KAAM,QACzI,IAAK,cACD,MAAO,wBAAwBA,EAAM,SACzC,IAAK,gBACD,MAAO,mBACX,IAAK,kBACD,MAAO,wBAAwBA,EAAM,SACzC,QACI,MAAO,sBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,KAAM,KAAM,OAC5B,KAAM,CAAE,KAAM,MAAO,KAAM,OAC3B,MAAO,CAAE,KAAM,KAAM,KAAM,OAC3B,IAAK,CAAE,KAAM,KAAM,KAAM,QAE7B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,KAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,KAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,MACP,MAAO,UACP,IAAK,MACL,MAAO,MACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,QACV,KAAM,QACN,KAAM,QACN,SAAU,QACV,KAAM,WACN,KAAM,WACN,OAAQ,SACR,OAAQ,SACR,OAAQ,iBACR,UAAW,oBACX,YAAa,UACb,KAAM,UACN,IAAK,MACL,iBAAkB,OAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,UAAUA,EAAM,SAAS,YAAYJ,EAAWI,EAAM,OAAO,UACxE,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,UAAA,EAAkCA,EAAM,OAAO,IAAI,UACvD,UAAA,EAA0BA,EAAM,OAAQ,KAAK,iBACxD,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,QAAU,QAClC,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,WAAWA,EAAM,QAAU,IAAI,GAAGA,EAAM,QAAQ,aAAa,EAAO,MAAQ,OAAO,EAAI,SAC3F,WAAWA,EAAM,QAAU,IAAI,GAAGA,EAAM,QAAQ,aAAa,EAAI,SAE5E,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,QAAU,QAClC,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,WAAWA,EAAM,OAAO,GAAGA,EAAM,QAAQ,aAAa,EAAO,OAAO,EAAI,SAC5E,WAAWA,EAAM,OAAO,GAAGA,EAAM,QAAQ,aAAa,EAAI,SAErE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,YAAY,EAAO,OAAO,cACjC,EAAO,SAAW,YACX,YAAY,EAAO,OAAO,cACjC,EAAO,SAAW,WACX,YAAY,EAAO,SAAS,aACnC,EAAO,SAAW,QACX,eAAe,EAAO,QAAQ,cAClC,MAAM,EAAM,EAAO,SAAWA,EAAM,SAE/C,IAAK,kBACD,MAAO,UAAUA,EAAM,QAAQ,eACnC,IAAK,oBACD,MAAO,aAAaA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,OACzF,IAAK,cACD,MAAO,GAAGA,EAAM,OAAO,SAC3B,IAAK,gBACD,MAAO,QACX,IAAK,kBACD,MAAO,GAAGA,EAAM,OAAO,QAC3B,QACI,MAAO,WAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MC/GrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,UAAW,KAAM,UACjC,KAAM,CAAE,KAAM,KAAM,KAAM,UAC1B,MAAO,CAAE,KAAM,OAAQ,KAAM,UAC7B,IAAK,CAAE,KAAM,OAAQ,KAAM,WAE/B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,oBAAsB,MAEtD,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,eAEX,GAAI,IAAS,KACT,MAAO,oBAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,iBACP,MAAO,kBACP,IAAK,MACL,MAAO,gBACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,0BACV,KAAM,kBACN,KAAM,WACN,SAAU,aACV,KAAM,iBACN,KAAM,iBACN,OAAQ,oBACR,OAAQ,oBACR,OAAQ,yBACR,UAAW,4BACX,YAAa,iBACb,KAAM,YACN,IAAK,MACL,iBAAkB,kBAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,yCAAyCA,EAAM,SAAS,kBAAkBJ,EAAWI,EAAM,SACtG,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,yCAAA,EAAiEA,EAAM,OAAO,MAClF,6CAAA,EAA6DA,EAAM,OAAQ,OACtF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,mBAAmBA,EAAM,QAAU,QAAQ,GAAG,EAAI,GAAGA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,SACpG,mBAAmBA,EAAM,QAAU,QAAQ,GAAG,EAAI,GAAGA,EAAM,QAAQ,aAE9E,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,oBAAoBA,EAAM,OAAO,GAAG,EAAI,GAAGA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAElF,oBAAoBA,EAAM,OAAO,GAAG,EAAI,GAAGA,EAAM,QAAQ,aAEpE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,8CAA8C,EAAO,OAAO,GAEnE,EAAO,SAAW,YACX,2CAA2C,EAAO,OAAO,GAChE,EAAO,SAAW,WACX,qCAAqC,EAAO,SAAS,GAC5D,EAAO,SAAW,QACX,+DAA+D,EAAO,UAC1E,kBAAkB,EAAM,EAAO,SAAWA,EAAM,SAE3D,IAAK,kBACD,MAAO,uCAAuCA,EAAM,UACxD,IAAK,oBACD,MAAO,qBAAA,EAAqCA,EAAM,KAAM,QAC5D,IAAK,cACD,MAAO,0BAA0BA,EAAM,SAC3C,IAAK,gBACD,MAAO,wBACX,IAAK,kBACD,MAAO,gCAAgCA,EAAM,SACjD,QACI,MAAO,2BAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,KAAM,KAAM,WAC5B,KAAM,CAAE,KAAM,MAAO,KAAM,WAC3B,MAAO,CAAE,KAAM,IAAK,KAAM,WAC1B,IAAK,CAAE,KAAM,IAAK,KAAM,YAE5B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,KACP,MAAO,SACP,IAAK,MACL,MAAO,MACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,WACV,KAAM,SACN,KAAM,SACN,SAAU,SACV,KAAM,UACN,KAAM,UACN,OAAQ,UACR,OAAQ,UACR,OAAQ,iBACR,UAAW,oBACX,YAAa,WACb,KAAM,WACN,IAAK,MACL,iBAAkB,MAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,kBAAkBA,EAAM,SAAS,WAAWJ,EAAWI,EAAM,OAAO,KAC/E,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,cAAA,EAAsCA,EAAM,OAAO,IAAI,UAC3D,WAAA,EAA2BA,EAAM,OAAQ,OAAO,aAC3D,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,KAC/B,EAAS,IAAQ,KAAO,UAAY,SACpC,EAAS,EAAUA,EAAM,QACzB,EAAO,GAAQ,MAAQ,KAG7B,OAFI,EACO,GAAGA,EAAM,QAAU,IAAI,YAAYA,EAAM,QAAQ,aAAa,EAAK,GAAG,IAAM,IAChF,GAAGA,EAAM,QAAU,IAAI,YAAYA,EAAM,QAAQ,WAAW,GAAG,IAAM,IAEhF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,KAC/B,EAAS,IAAQ,KAAO,UAAY,SACpC,EAAS,EAAUA,EAAM,QACzB,EAAO,GAAQ,MAAQ,KAI7B,OAHI,EACO,GAAGA,EAAM,QAAU,IAAI,aAAaA,EAAM,QAAQ,aAAa,EAAK,GAAG,IAAM,IAEjF,GAAGA,EAAM,QAAU,IAAI,aAAaA,EAAM,QAAQ,WAAW,GAAG,IAAM,IAEjF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,aAAa,EAAO,OAAO,gBAElC,EAAO,SAAW,YACX,aAAa,EAAO,OAAO,eAClC,EAAO,SAAW,WACX,aAAa,EAAO,SAAS,gBACpC,EAAO,SAAW,QACX,gBAAgB,EAAO,QAAQ,eACnC,OAAO,EAAM,EAAO,SAAWA,EAAM,SAEhD,IAAK,kBACD,MAAO,WAAWA,EAAM,QAAQ,YACpC,IAAK,oBACD,MAAO,eAAA,EAA+BA,EAAM,KAAM,QACtD,IAAK,cACD,MAAO,UAAUA,EAAM,SAC3B,IAAK,gBACD,MAAO,SACX,IAAK,kBACD,MAAO,UAAUA,EAAM,SAC3B,QACI,MAAO,YAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCrHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,QAAS,KAAM,YAC/B,KAAM,CAAE,KAAM,QAAS,KAAM,YAC7B,MAAO,CAAE,KAAM,SAAU,KAAM,YAC/B,IAAK,CAAE,KAAM,SAAU,KAAM,aAEjC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,OAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,OAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,OACP,MAAO,oBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,oBACV,KAAM,YACN,KAAM,YACN,SAAU,kBACV,KAAM,cACN,KAAM,cACN,OAAQ,aACR,OAAQ,aACR,OAAQ,yBACR,UAAW,4BACX,YAAa,YACb,KAAM,aACN,IAAK,MACL,iBAAkB,QAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,2BAA2BA,EAAM,SAAS,YAAYJ,EAAWI,EAAM,SAElF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,2BAAA,EAAmDA,EAAM,OAAO,MACpE,mCAAA,EAAmDA,EAAM,OAAQ,OAC5E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,8BAA8BA,EAAM,QAAU,YAAY,UAAU,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,aACzH,8BAA8BA,EAAM,QAAU,YAAY,WAAW,IAAMA,EAAM,QAAQ,aAEpG,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,4BAA4BA,EAAM,OAAO,UAAU,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEhG,4BAA4BA,EAAM,OAAO,WAAW,IAAMA,EAAM,QAAQ,aAEnF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,yCAAyC,EAAO,OAAO,GAE9D,EAAO,SAAW,YACX,wCAAwC,EAAO,OAAO,GAC7D,EAAO,SAAW,WACX,qCAAqC,EAAO,SAAS,GAC5D,EAAO,SAAW,QACX,+CAA+C,EAAO,UAC1D,WAAW,EAAM,EAAO,SAAWA,EAAM,SAEpD,IAAK,kBACD,MAAO,sCAAsCA,EAAM,UACvD,IAAK,oBACD,MAAO,GAAGA,EAAM,KAAK,OAAS,EAAI,wBAA0B,oBAAoB,IAAA,EAAoBA,EAAM,KAAM,QACpH,IAAK,cACD,MAAO,kBAAkBA,EAAM,SACnC,IAAK,gBACD,MAAO,cACX,IAAK,kBACD,MAAO,sBAAsBA,EAAM,SACvC,QACI,MAAO,iBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MClHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,SAAU,KAAM,aAChC,KAAM,CAAE,KAAM,OAAQ,KAAM,aAC5B,MAAO,CAAE,KAAM,SAAU,KAAM,aAC/B,IAAK,CAAE,KAAM,SAAU,KAAM,cAEjC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,eACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,kBACV,KAAM,aACN,KAAM,WACN,SAAU,aACV,KAAM,cACN,KAAM,cACN,OAAQ,aACR,OAAQ,aACR,OAAQ,yBACR,UAAW,4BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,6BAA6BA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SACrF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,6BAAA,EAAqDA,EAAM,OAAO,MACtE,mDAAA,EAAmEA,EAAM,OAAQ,OAC5F,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,2BAA2BA,EAAM,QAAU,QAAQ,GAAG,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,WAC1H,2BAA2BA,EAAM,QAAU,QAAQ,UAAU,IAAMA,EAAM,QAAQ,aAE5F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,2BAA2BA,EAAM,OAAO,GAAG,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEvG,2BAA2BA,EAAM,OAAO,UAAU,IAAMA,EAAM,QAAQ,aAEjF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,2CAA2C,EAAO,OAAO,GAChE,EAAO,SAAW,YACX,4CAA4C,EAAO,OAAO,GACjE,EAAO,SAAW,WACX,wCAAwC,EAAO,SAAS,GAC/D,EAAO,SAAW,QACX,gDAAgD,EAAO,UAC3D,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,YAEnD,IAAK,kBACD,MAAO,mCAAmCA,EAAM,UACpD,IAAK,oBACD,MAAO,yBAAA,EAAyCA,EAAM,KAAM,QAChE,IAAK,cACD,MAAO,yBAAyBA,EAAM,SAC1C,IAAK,gBACD,MAAO,kBACX,IAAK,kBACD,MAAO,yBAAyBA,EAAM,SAC1C,QACI,MAAO,qBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,UAChB,KAAM,CAAE,KAAM,SACd,MAAO,CAAE,KAAM,aACf,IAAK,CAAE,KAAM,cAEjB,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,QAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,SACP,MAAO,aACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,oBACV,KAAM,YACN,KAAM,WACN,SAAU,WACV,KAAM,aACN,KAAM,aACN,OAAQ,cACR,OAAQ,cACR,OAAQ,0BACR,UAAW,8BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,UAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,8BAA8BA,EAAM,SAAS,YAAYJ,EAAWI,EAAM,SACrF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,8BAAA,EAAsDA,EAAM,OAAO,MACvE,qCAAA,EAAqDA,EAAM,OAAQ,OAC9E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,yBAAyBA,EAAM,QAAU,SAAS,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,YAAY,QACtH,yBAAyBA,EAAM,QAAU,SAAS,GAAG,IAAMA,EAAM,QAAQ,WAAW,KAE/F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,yBAAyBA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,KAAK,QAE3F,yBAAyBA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,KAEnF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,8BAA8B,EAAO,OAAO,YAEnD,EAAO,SAAW,YACX,6BAA6B,EAAO,OAAO,YAClD,EAAO,SAAW,WACX,0BAA0B,EAAO,SAAS,YACjD,EAAO,SAAW,QACX,kDAAkD,EAAO,UAC7D,aAAa,EAAM,EAAO,SAAWA,EAAM,SAEtD,IAAK,kBACD,MAAO,yCAAyCA,EAAM,QAAQ,OAClE,IAAK,oBACD,MAAO,gBAAgBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QAC5F,IAAK,cACD,MAAO,oBAAoBA,EAAM,SACrC,IAAK,gBACD,MAAO,mBACX,IAAK,kBACD,MAAO,uBAAuBA,EAAM,SACxC,QACI,MAAO,sBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,OAAQ,KAAM,QAC9B,KAAM,CAAE,KAAM,QAAS,KAAM,QAC7B,MAAO,CAAE,KAAM,YAAa,KAAM,eAClC,IAAK,CAAE,KAAM,YAAa,KAAM,gBAEpC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,OAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,gBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,2BACV,KAAM,WACN,KAAM,kBACN,SAAU,eACV,KAAM,cACN,KAAM,cACN,OAAQ,eACR,OAAQ,eACR,OAAQ,wBACR,UAAW,2BACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,4BAA4BA,EAAM,SAAS,SAASJ,EAAWI,EAAM,SAChF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,4BAAA,EAAoDA,EAAM,OAAO,MACrE,iCAAA,EAAiDA,EAAM,OAAQ,OAC1E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,0BAA0BA,EAAM,QAAU,QAAQ,YAAY,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,cACnH,0BAA0BA,EAAM,QAAU,QAAQ,YAAY,IAAMA,EAAM,QAAQ,aAE7F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,0BAA0BA,EAAM,OAAO,YAAY,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEhG,0BAA0BA,EAAM,OAAO,YAAY,IAAMA,EAAM,QAAQ,aAElF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,kCAAkC,EAAO,OAAO,GACvD,EAAO,SAAW,YACX,gCAAgC,EAAO,OAAO,GACrD,EAAO,SAAW,WACX,iCAAiC,EAAO,SAAS,GACxD,EAAO,SAAW,QACX,uCAAuC,EAAO,UAClD,WAAW,EAAM,EAAO,SAAWA,EAAM,SAEpD,IAAK,kBACD,MAAO,yCAAyCA,EAAM,UAC1D,IAAK,oBACD,MAAO,GAAGA,EAAM,KAAK,OAAS,EAAI,iBAAmB,gBAAgB,IAAA,EAAoBA,EAAM,KAAM,QACzG,IAAK,cACD,MAAO,oBAAoBA,EAAM,SACrC,IAAK,gBACD,MAAO,gBACX,IAAK,kBACD,MAAO,mBAAmBA,EAAM,SACpC,QACI,MAAO,mBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,OAAQ,KAAM,aAC9B,KAAM,CAAE,KAAM,OAAQ,KAAM,aAC5B,MAAO,CAAE,KAAM,QAAS,KAAM,aAC9B,IAAK,CAAE,KAAM,QAAS,KAAM,cAEhC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,MAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,YACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,cACV,KAAM,aACN,KAAM,aACN,SAAU,cACV,KAAM,cACN,KAAM,cACN,OAAQ,eACR,OAAQ,eACR,OAAQ,uBACR,UAAW,0BACX,YAAa,aACb,KAAM,eACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,uBAAuBA,EAAM,SAAS,WAAWJ,EAAWI,EAAM,SAE7E,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,uBAAA,EAA+CA,EAAM,OAAO,MAChE,4BAAA,EAA4CA,EAAM,OAAQ,OACrE,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,gBAAgBA,EAAM,QAAU,QAAQ,IAAI,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,WAAW,mBAC5G,gBAAgBA,EAAM,QAAU,QAAQ,IAAI,IAAMA,EAAM,QAAQ,WAAW,aAEtF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,gBAAgBA,EAAM,OAAO,IAAI,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,KAAK,mBAEnF,gBAAgBA,EAAM,OAAO,IAAI,IAAMA,EAAM,QAAQ,WAAW,aAE3E,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,iBAAiB,EAAO,OAAO,kBACtC,EAAO,SAAW,YACX,iBAAiB,EAAO,OAAO,gBACtC,EAAO,SAAW,WACX,iBAAiB,EAAO,SAAS,kBACxC,EAAO,SAAW,QACX,gBAAgB,EAAO,QAAQ,kBACnC,SAAS,EAAM,EAAO,SAAWA,EAAM,SAElD,IAAK,kBACD,MAAO,eAAeA,EAAM,QAAQ,kBACxC,IAAK,oBACD,MAAO,sBAAsBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QAClG,IAAK,cACD,MAAO,GAAGA,EAAM,OAAO,+BAC3B,IAAK,gBACD,MAAO,oBACX,IAAK,kBACD,MAAO,GAAGA,EAAM,OAAO,8BAC3B,QACI,MAAO,wBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,OAAQ,KAAM,QAC9B,KAAM,CAAE,KAAM,QAAS,KAAM,QAC7B,MAAO,CAAE,KAAM,OAAQ,KAAM,QAC7B,IAAK,CAAE,KAAM,OAAQ,KAAM,SAE/B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,MAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,MAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,YACP,IAAK,WACL,MAAO,SACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,cACV,KAAM,OACN,KAAM,MACN,SAAU,OACV,KAAM,aACN,KAAM,aACN,OAAQ,cACR,OAAQ,cACR,OAAQ,qBACR,UAAW,wBACX,YAAa,WACb,KAAM,gBACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,oBAAoBA,EAAM,SAAS,YAAYJ,EAAWI,EAAM,OAAO,YAClF,IAAK,gBAID,OAHIA,EAAM,OAAO,SAAW,EACjB,oBAAA,EAA4CA,EAAM,OAAO,IAAI,MAEjE,2BAAA,EAA2CA,EAAM,OAAQ,KAAK,UACzE,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,YAAYA,EAAM,QAAU,QAAQ,QAAQ,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,UAAU,OAE3G,YAAYA,EAAM,QAAU,QAAQ,QAAQ,IAAMA,EAAM,QAAQ,WAAW,KAEtF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,cAAcA,EAAM,OAAO,QAAQ,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,KAAK,OAErF,cAAcA,EAAM,OAAO,QAAQ,IAAMA,EAAM,QAAQ,WAAW,KAE7E,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAaf,OAZI,EAAO,SAAW,cACX,qBAAqB,EAAO,OAAO,cAE1C,EAAO,SAAW,YACX,qBAAqB,EAAO,OAAO,qBAE1C,EAAO,SAAW,WACX,mBAAmB,EAAO,SAAS,QAE1C,EAAO,SAAW,QACX,oBAAoB,EAAO,QAAQ,kBAEvC,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,UAEnD,IAAK,kBACD,MAAO,oBAAoBA,EAAM,QAAQ,UAC7C,IAAK,oBACD,MAAO,QAAQA,EAAM,KAAK,OAAS,EAAI,UAAY,OAAO,IAAA,EAAoBA,EAAM,KAAM,QAC9F,IAAK,cACD,MAAO,gBAAgBA,EAAM,OAAO,KACxC,IAAK,gBACD,MAAO,cACX,IAAK,kBACD,MAAO,gBAAgBA,EAAM,OAAO,KACxC,QACI,MAAO,iBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCtHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,SAAU,KAAM,QAChC,KAAM,CAAE,KAAM,SAAU,KAAM,QAC9B,MAAO,CAAE,KAAM,YAAa,KAAM,QAClC,IAAK,CAAE,KAAM,YAAa,KAAM,SAEpC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,UAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,YACP,MAAO,cACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,gCACV,KAAM,sBACN,KAAM,yBACN,SAAU,mBACV,KAAM,aACN,KAAM,aACN,OAAQ,cACR,OAAQ,cACR,OAAQ,2CACR,UAAW,8CACX,YAAa,8BACb,KAAM,eACN,IAAK,MACL,iBAAkB,WAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,4CAA4CA,EAAM,SAAS,cAAcJ,EAAWI,EAAM,SACrG,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,4CAAA,EAAoEA,EAAM,OAAO,MACrF,qDAAA,EAAqEA,EAAM,OAAQ,OAC9F,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,mCAAmCA,EAAM,QAAU,UAAU,eAAe,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,cAEjI,mCAAmCA,EAAM,QAAU,UAAU,kBAAkB,IAAMA,EAAM,QAAQ,aAE9G,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,mCAAmCA,EAAM,QAAU,UAAU,eAAe,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,cAEjI,mCAAmCA,EAAM,QAAU,UAAU,kBAAkB,IAAMA,EAAM,QAAQ,aAE9G,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,oDAAoD,EAAO,OAAO,GACzE,EAAO,SAAW,YACX,mDAAmD,EAAO,OAAO,GACxE,EAAO,SAAW,WACX,6CAA6C,EAAO,SAAS,GACpE,EAAO,SAAW,QACX,uDAAuD,EAAO,UAClE,uBAAuB,EAAM,EAAO,SAAWA,EAAM,SAEhE,IAAK,kBACD,MAAO,kDAAkDA,EAAM,UACnE,IAAK,oBACD,MAAO,uBAAuBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACnG,IAAK,cACD,MAAO,yBAAyBA,EAAM,SAC1C,IAAK,gBACD,MAAO,+BACX,IAAK,kBACD,MAAO,2BAA2BA,EAAM,SAC5C,QACI,MAAO,kCAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,aAAc,KAAM,OACpC,KAAM,CAAE,KAAM,QAAS,KAAM,OAC7B,MAAO,CAAE,KAAM,QAAS,KAAM,OAC9B,IAAK,CAAE,KAAM,QAAS,KAAM,QAEhC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,SACP,MAAO,qBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,kBACV,KAAM,WACN,KAAM,WACN,SAAU,cACV,KAAM,gBACN,KAAM,gBACN,OAAQ,gBACR,OAAQ,gBACR,OAAQ,6BACR,UAAW,2BACX,YAAa,aACb,KAAM,eACN,IAAK,MACL,iBAAkB,WAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,2BAA2BA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SACnF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,8BAAA,EAAsDA,EAAM,OAAO,MACvE,oCAAA,EAAoDA,EAAM,OAAQ,OAC7E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,8BAA8BA,EAAM,QAAU,QAAQ,WAAW,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,cACtH,8BAA8BA,EAAM,QAAU,QAAQ,SAAS,IAAMA,EAAM,QAAQ,aAE9F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,+BAA+BA,EAAM,OAAO,WAAW,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEpG,+BAA+BA,EAAM,OAAO,SAAS,IAAMA,EAAM,QAAQ,aAEpF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,qCAAqC,EAAO,OAAO,GAC1D,EAAO,SAAW,YACX,sCAAsC,EAAO,OAAO,GAC3D,EAAO,SAAW,WACX,iCAAiC,EAAO,SAAS,GACxD,EAAO,SAAW,QACX,+CAA+C,EAAO,UAC1D,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,WAEnD,IAAK,kBACD,MAAO,yCAAyCA,EAAM,UAC1D,IAAK,oBACD,MAAO,QAAQA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,eAAeA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACpI,IAAK,cACD,MAAO,qBAAqBA,EAAM,SACtC,IAAK,gBACD,MAAO,mBACX,IAAK,kBACD,MAAO,qBAAqBA,EAAM,SACtC,QACI,MAAO,oBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,SAAS,GAAiB,EAAO,EAAK,EAAK,EAAM,CAC7C,IAAM,EAAW,KAAK,IAAI,GACpB,EAAY,EAAW,GACvB,EAAgB,EAAW,IAUjC,OATI,GAAiB,IAAM,GAAiB,GACjC,EAEP,IAAc,EACP,EAEP,GAAa,GAAK,GAAa,EACxB,EAEJ,EAEX,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CACJ,KAAM,CACF,IAAK,SACL,IAAK,UACL,KAAM,YAEV,KAAM,SAEV,KAAM,CACF,KAAM,CACF,IAAK,OACL,IAAK,QACL,KAAM,QAEV,KAAM,SAEV,MAAO,CACH,KAAM,CACF,IAAK,UACL,IAAK,WACL,KAAM,aAEV,KAAM,SAEV,IAAK,CACD,KAAM,CACF,IAAK,UACL,IAAK,WACL,KAAM,aAEV,KAAM,UAGd,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,QAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,SAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,OACP,MAAO,cACP,IAAK,MACL,MAAO,SACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,mBACV,KAAM,WACN,KAAM,YACN,SAAU,mBACV,KAAM,aACN,KAAM,aACN,OAAQ,gBACR,OAAQ,gBACR,OAAQ,0BACR,UAAW,6BACX,YAAa,cACb,KAAM,cACN,IAAK,MACL,iBAAkB,QAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,4BAA4BA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SACpF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,4BAAA,EAAoDA,EAAM,OAAO,MACrE,uCAAA,EAAuDA,EAAM,OAAQ,OAChF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAC/B,GAAI,EAAQ,CACR,IAAM,EAAW,OAAOA,EAAM,SACxB,EAAO,GAAiB,EAAU,EAAO,KAAK,IAAK,EAAO,KAAK,IAAK,EAAO,KAAK,MACtF,MAAO,4CAA4CA,EAAM,QAAU,WAAW,eAAe,IAAMA,EAAM,QAAQ,WAAW,GAAG,IAEnI,MAAO,4CAA4CA,EAAM,QAAU,WAAW,SAAS,IAAMA,EAAM,QAAQ,aAE/G,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAC/B,GAAI,EAAQ,CACR,IAAM,EAAW,OAAOA,EAAM,SACxB,EAAO,GAAiB,EAAU,EAAO,KAAK,IAAK,EAAO,KAAK,IAAK,EAAO,KAAK,MACtF,MAAO,8CAA8CA,EAAM,OAAO,eAAe,IAAMA,EAAM,QAAQ,WAAW,GAAG,IAEvH,MAAO,8CAA8CA,EAAM,OAAO,SAAS,IAAMA,EAAM,QAAQ,aAEnG,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,yCAAyC,EAAO,OAAO,GAC9D,EAAO,SAAW,YACX,6CAA6C,EAAO,OAAO,GAClE,EAAO,SAAW,WACX,sCAAsC,EAAO,SAAS,GAC7D,EAAO,SAAW,QACX,mDAAmD,EAAO,UAC9D,YAAY,EAAM,EAAO,SAAWA,EAAM,SAErD,IAAK,kBACD,MAAO,uCAAuCA,EAAM,UACxD,IAAK,oBACD,MAAO,eAAeA,EAAM,KAAK,OAAS,EAAI,KAAO,KAAK,OAAOA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACtI,IAAK,cACD,MAAO,mBAAmBA,EAAM,SACpC,IAAK,gBACD,MAAO,0BACX,IAAK,kBACD,MAAO,uBAAuBA,EAAM,SACxC,QACI,MAAO,6BAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChKrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,SAAU,KAAM,SAChC,KAAM,CAAE,KAAM,SAAU,KAAM,SAC9B,MAAO,CAAE,KAAM,YAAa,KAAM,SAClC,IAAK,CAAE,KAAM,YAAa,KAAM,UAEpC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,UAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,SAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,OACP,MAAO,kBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,mBACV,KAAM,YACN,KAAM,UACN,SAAU,eACV,KAAM,cACN,KAAM,cACN,OAAQ,aACR,OAAQ,aACR,OAAQ,qBACR,UAAW,wBACX,YAAa,WACb,KAAM,iBACN,IAAK,MACL,iBAAkB,QAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,gCAAgCA,EAAM,SAAS,YAAYJ,EAAWI,EAAM,SACvF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,gCAAA,EAAwDA,EAAM,OAAO,MACzE,6CAAA,EAA6DA,EAAM,OAAQ,OACtF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,iCAAiCA,EAAM,QAAU,WAAW,SAAS,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,cAC1H,iCAAiCA,EAAM,QAAU,WAAW,GAAG,IAAMA,EAAM,QAAQ,aAE9F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,iCAAiCA,EAAM,OAAO,SAAS,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEpG,iCAAiCA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,aAEhF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,qCAAqC,EAAO,OAAO,GAE1D,EAAO,SAAW,YACX,sCAAsC,EAAO,OAAO,GAC3D,EAAO,SAAW,WACX,mCAAmC,EAAO,SAAS,GAC1D,EAAO,SAAW,QACX,yCAAyC,EAAO,UACpD,cAAc,EAAM,EAAO,SAAWA,EAAM,SAEvD,IAAK,kBACD,MAAO,4CAA4CA,EAAM,UAC7D,IAAK,oBACD,MAAO,cAAcA,EAAM,KAAK,OAAS,EAAI,WAAa,SAAS,IAAA,EAAoBA,EAAM,KAAM,QACvG,IAAK,cACD,MAAO,sBAAsBA,EAAM,SACvC,IAAK,gBACD,MAAO,kBACX,IAAK,kBACD,MAAO,yBAAyBA,EAAM,SAC1C,QACI,MAAO,qBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,SAAU,KAAM,UAChC,KAAM,CAAE,KAAM,QAAS,KAAM,UAC7B,MAAO,CAAE,KAAM,SAAU,KAAM,iBAC/B,IAAK,CAAE,KAAM,SAAU,KAAM,kBAEjC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,QAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,oBACP,MAAO,eACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,oBACV,KAAM,YACN,KAAM,UACN,SAAU,kBACV,KAAM,iBACN,KAAM,iBACN,OAAQ,gBACR,OAAQ,gBACR,OAAQ,sBACR,UAAW,yBACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,gBAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,gCAAgCA,EAAM,SAAS,SAASJ,EAAWI,EAAM,SACpF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,gCAAA,EAAwDA,EAAM,OAAO,MACzE,kCAAA,EAAkDA,EAAM,OAAQ,OAC3E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,2BAA2BA,EAAM,QAAU,SAAS,UAAU,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,YAEnH,0BAA0BA,EAAM,QAAU,SAAS,UAAU,IAAMA,EAAM,QAAQ,aAE5F,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,2BAA2BA,EAAM,QAAU,SAAS,UAAU,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAE3G,2BAA2BA,EAAM,QAAU,SAAS,UAAU,IAAMA,EAAM,QAAQ,aAE7F,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,oCAAoC,EAAO,OAAO,GAEzD,EAAO,SAAW,YACX,oCAAoC,EAAO,OAAO,GACzD,EAAO,SAAW,WACX,oCAAoC,EAAO,SAAS,GAC3D,EAAO,SAAW,QACX,0CAA0C,EAAO,QAAQ,GAC7D,cAAc,EAAM,EAAO,SAAWA,EAAM,SAEvD,IAAK,kBACD,MAAO,2CAA2CA,EAAM,UAC5D,IAAK,oBACD,MAAO,GAAGA,EAAM,KAAK,OAAS,EAAI,iBAAmB,eAAe,IAAA,EAAoBA,EAAM,KAAM,QACxG,IAAK,cACD,MAAO,oBAAoBA,EAAM,QAAU,WAC/C,IAAK,gBACD,MAAO,gBACX,IAAK,kBACD,MAAO,oBAAoBA,EAAM,QAAU,WAC/C,QACI,MAAO,mBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MClHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,eAAgB,KAAM,wBACtC,KAAM,CAAE,KAAM,YAAa,KAAM,wBACjC,MAAO,CAAE,KAAM,aAAc,KAAM,wBACnC,IAAK,CAAE,KAAM,aAAc,KAAM,yBAErC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,eAAiB,MAEjD,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,MAEX,GAAI,IAAS,KACT,MAAO,SAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,UACP,MAAO,oBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,iBACV,KAAM,WACN,KAAM,YACN,SAAU,eACV,KAAM,cACN,KAAM,cACN,OAAQ,cACR,OAAQ,cACR,OAAQ,sBACR,UAAW,yBACX,YAAa,YACb,KAAM,YACN,IAAK,MACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,uCAAuCA,EAAM,SAAS,gBAAgBJ,EAAWI,EAAM,SAClG,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,uCAAA,EAA+DA,EAAM,OAAO,MAChF,yCAAA,EAAyDA,EAAM,OAAQ,KAAK,YACvF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,qCAAqCA,EAAM,QAAU,UAAU,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,aAAa,qBAEpI,qCAAqCA,EAAM,QAAU,UAAU,GAAG,IAAMA,EAAM,QAAQ,WAAW,qBAE5G,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,uCAAuCA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,KAAK,qBAEzG,uCAAuCA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,qBAEjG,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,gBAAgB,EAAO,OAAO,uBACrC,EAAO,SAAW,YACX,gBAAgB,EAAO,OAAO,yBACrC,EAAO,SAAW,WACX,gBAAgB,EAAO,SAAS,uBACvC,EAAO,SAAW,QACX,eAAe,EAAO,QAAQ,iCAClC,SAAS,EAAM,EAAO,SAAWA,EAAM,SAElD,IAAK,kBACD,MAAO,cAAcA,EAAM,QAAQ,4BACvC,IAAK,oBACD,MAAO,wBAAwBA,EAAM,KAAK,OAAS,EAAI,MAAQ,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACtG,IAAK,cACD,MAAO,GAAGA,EAAM,OAAO,iBAC3B,IAAK,gBACD,MAAO,gBACX,IAAK,kBACD,MAAO,GAAGA,EAAM,OAAO,oBAC3B,QACI,MAAO,mBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,WAAY,KAAM,SAClC,KAAM,CAAE,KAAM,OAAQ,KAAM,SAC5B,MAAO,CAAE,KAAM,SAAU,KAAM,SAC/B,IAAK,CAAE,KAAM,SAAU,KAAM,UAEjC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,qBAAuB,SAEvD,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,mBAEX,GAAI,IAAS,KACT,MAAO,kBAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,gBACP,MAAO,eACP,IAAK,MACL,MAAO,SACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,oBACV,KAAM,gBACN,KAAM,cACN,SAAU,kBACV,KAAM,eACN,KAAM,eACN,OAAQ,mBACR,OAAQ,mBACR,OAAQ,oBACR,UAAW,+BACX,YAAa,kBACb,KAAM,qCACN,IAAK,YACL,iBAAkB,iBAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,mCAAmCA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SAC3F,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,0BAAA,EAAkDA,EAAM,OAAO,MACnE,sCAAA,EAAsDA,EAAM,OAAQ,OAC/E,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,UAAY,WACpC,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,cAAcA,EAAM,QAAU,MAAM,QAAQ,EAAI,GAAGA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,WAClG,cAAcA,EAAM,QAAU,MAAM,QAAQ,EAAI,GAAGA,EAAM,QAAQ,aAE5E,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,YAAc,UACtC,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,kBAAkBA,EAAM,OAAO,QAAQ,EAAI,GAAGA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAErF,kBAAkBA,EAAM,OAAO,QAAQ,EAAI,GAAGA,EAAM,QAAQ,aAEvE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,6CAA6C,EAAO,OAAO,GAElE,EAAO,SAAW,YACX,4CAA4C,EAAO,OAAO,GACjE,EAAO,SAAW,WACX,oCAAoC,EAAO,SAAS,iBAC3D,EAAO,SAAW,QACX,8CAA8C,EAAO,UACzD,qBAAqB,EAAM,EAAO,SAAWA,EAAM,SAE9D,IAAK,kBACD,MAAO,6CAA6CA,EAAM,QAAQ,WACtE,IAAK,oBACD,MAAO,uBAAA,EAAuCA,EAAM,KAAM,QAC9D,IAAK,cACD,MAAO,oBAAoBA,EAAM,SACrC,IAAK,gBACD,MAAO,sDACX,IAAK,kBACD,MAAO,sBAAsBA,EAAM,SACvC,QACI,MAAO,sBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAa,GAAc,GAAS,CAChC,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAELA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,WAAY,KAAM,UAClC,KAAM,CAAE,KAAM,OAAQ,KAAM,UAC5B,MAAO,CAAE,KAAM,MAAO,KAAM,UAC5B,IAAK,CAAE,KAAM,MAAO,KAAM,WAE9B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM,EAAQ,CACV,MAAO,QACP,MAAO,iBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,oBACV,KAAM,YACN,KAAM,WACN,SAAU,WACV,KAAM,cACN,KAAM,cACN,OAAQ,eACR,OAAQ,eACR,OAAQ,+BACR,UAAW,kCACX,YAAa,cACb,KAAM,eACN,IAAK,MACL,iBAAkB,iBAEtB,MAAQ,IAAU,CACd,OAAQ3C,EAAM,KAAd,CACI,IAAK,eACD,MAAO,4BAA4BA,EAAM,SAAS,WAAW,GAAWA,EAAM,SAClF,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,4BAAA,EAAoDA,EAAM,OAAO,MACrE,kDAAA,EAAkEA,EAAM,OAAQ,OAC3F,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,uBAAuBA,EAAM,QAAU,QAAQ,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,QACvG,uBAAuBA,EAAM,QAAU,QAAQ,GAAG,IAAMA,EAAM,QAAQ,aAEjF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,uBAAuBA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OACpF,uBAAuBA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,aAEtE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,oBAAoB,EAAO,OAAO,iBACzC,EAAO,SAAW,YACX,oBAAoB,EAAO,OAAO,eACzC,EAAO,SAAW,WACX,oBAAoB,EAAO,SAAS,YAC3C,EAAO,SAAW,QACX,mBAAmB,EAAO,QAAQ,kBACtC,YAAY,EAAM,EAAO,SAAWA,EAAM,SAErD,IAAK,kBACD,MAAO,kBAAkBA,EAAM,QAAQ,wBAC3C,IAAK,oBACD,MAAO,qBAAqBA,EAAM,KAAK,OAAS,EAAI,MAAQ,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACnG,IAAK,cACD,MAAO,GAAGA,EAAM,OAAO,0BAC3B,IAAK,gBACD,MAAO,iBACX,IAAK,kBACD,MAAO,GAAGA,EAAM,OAAO,wBAC3B,QACI,MAAO,oBAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MC/GrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,WAAY,KAAM,UAClC,KAAM,CAAE,KAAM,SAAU,KAAM,UAC9B,MAAO,CAAE,KAAM,YAAa,KAAM,UAClC,IAAK,CAAE,KAAM,YAAa,KAAM,WAEpC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,QAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,cACP,MAAO,2BACP,IAAK,MACL,MAAO,SACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,kBACV,KAAM,WACN,KAAM,UACN,SAAU,iBACV,KAAM,cACN,KAAM,cACN,OAAQ,gBACR,OAAQ,gBACR,OAAQ,2BACR,UAAW,8BACX,YAAa,aACb,KAAM,cACN,IAAK,MACL,iBAAkB,eAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,uCAAuCA,EAAM,SAAS,aAAaJ,EAAWI,EAAM,SAE/F,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,uCAAA,EAA+DA,EAAM,OAAO,MAChF,wCAAA,EAAwDA,EAAM,OAAQ,OACjF,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,kCAAkCA,EAAM,QAAU,WAAW,GAAG,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,cACpI,kCAAkCA,EAAM,QAAU,WAAW,QAAQ,IAAMA,EAAM,QAAQ,aAEpG,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,gCAAgCA,EAAM,OAAO,GAAG,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAE5G,gCAAgCA,EAAM,OAAO,QAAQ,IAAMA,EAAM,QAAQ,aAEpF,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,6CAA6C,EAAO,OAAO,GAClE,EAAO,SAAW,YACX,iDAAiD,EAAO,OAAO,GACtE,EAAO,SAAW,WACX,wCAAwC,EAAO,SAAS,GAC/D,EAAO,SAAW,QACX,mDAAmD,EAAO,UAC9D,gBAAgB,EAAM,EAAO,SAAWA,EAAM,SAEzD,IAAK,kBACD,MAAO,2CAA2CA,EAAM,UAC5D,IAAK,oBACD,MAAO,qBAAqBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QACjG,IAAK,cACD,MAAO,uBAAuBA,EAAM,SACxC,IAAK,gBACD,MAAO,0BACX,IAAK,kBACD,MAAO,0BAA0BA,EAAM,SAC3C,QACI,MAAO,6BAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,OAAQ,KAAM,QAC9B,KAAM,CAAE,KAAM,QAAS,KAAM,QAC7B,MAAO,CAAE,KAAM,QAAS,KAAM,QAC9B,IAAK,CAAE,KAAM,QAAS,KAAM,SAEhC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,OAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,MAEX,GAAI,IAAS,KACT,MAAO,KAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,QACP,MAAO,gBACP,IAAK,YACL,MAAO,SACP,KAAM,eACN,OAAQ,oBACR,OAAQ,oBACR,OAAQ,cACR,KAAM,eACN,KAAM,eACN,MAAO,iBACP,KAAM,gBACN,IAAK,cACL,MAAO,mBACP,SAAU,sBACV,KAAM,mBACN,KAAM,iBACN,SAAU,iBACV,KAAM,qBACN,KAAM,qBACN,OAAQ,mBACR,OAAQ,mBACR,OAAQ,uBACR,UAAW,iCACX,YAAa,sBACb,KAAM,cACN,IAAK,cACL,iBAAkB,SAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,cAAcA,EAAM,SAAS,cAAcJ,EAAWI,EAAM,OAAO,YAC9E,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,cAAA,EAAsCA,EAAM,OAAO,IAAI,YAC3D,aAAA,EAA6BA,EAAM,OAAQ,KAAK,uBAC3D,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,YAAYA,EAAM,QAAU,QAAQ,MAAM,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,QAAQ,iBACvG,YAAYA,EAAM,QAAU,QAAQ,MAAM,IAAMA,EAAM,QAAQ,WAAW,iBAEpF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,cAAcA,EAAM,OAAO,MAAM,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,KAAK,iBAEnF,cAAcA,EAAM,OAAO,MAAM,IAAMA,EAAM,QAAQ,WAAW,iBAE3E,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,eAAe,EAAO,OAAO,sBAEpC,EAAO,SAAW,YACX,eAAe,EAAO,OAAO,qBACpC,EAAO,SAAW,WACX,eAAe,EAAO,SAAS,mBACtC,EAAO,SAAW,QACX,oBAAoB,EAAO,QAAQ,oBACvC,OAAO,EAAM,EAAO,SAAWA,EAAM,SAEhD,IAAK,kBACD,MAAO,aAAaA,EAAM,QAAQ,sBACtC,IAAK,oBACD,MAAO,mBAAmBA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,IAAA,EAAoBA,EAAM,KAAM,QAC/F,IAAK,cACD,MAAO,GAAGA,EAAM,OAAO,aAC3B,IAAK,gBACD,MAAO,YACX,IAAK,kBACD,MAAO,GAAGA,EAAM,OAAO,gBAC3B,QACI,MAAO,eAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MCjHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,QAAS,KAAM,MAC/B,KAAM,CAAE,KAAM,OAAQ,KAAM,MAC5B,MAAO,CAAE,KAAM,UAAW,KAAM,MAChC,IAAK,CAAE,KAAM,UAAW,KAAM,OAElC,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,KAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,OAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,UACP,MAAO,gBACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,eACV,KAAM,WACN,KAAM,UACN,SAAU,uBACV,KAAM,eACN,KAAM,eACN,OAAQ,WACR,OAAQ,WACR,OAAQ,sBACR,UAAW,yBACX,YAAa,aACb,KAAM,WACN,IAAK,MACL,iBAAkB,WAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,kCAAkCA,EAAM,SAAS,cAAcJ,EAAWI,EAAM,SAC3F,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,kCAAA,EAA0DA,EAAM,OAAO,MAC3E,yDAAA,EAAyEA,EAAM,OAAQ,OAClG,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,qBAAqBA,EAAM,QAAU,UAAU,GAAG,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,YACtH,qBAAqBA,EAAM,QAAU,UAAU,GAAG,IAAMA,EAAM,QAAQ,aAEjF,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,qBAAqBA,EAAM,OAAO,GAAG,EAAO,KAAK,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAEjG,qBAAqBA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,aAEpE,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,0CAA0C,EAAO,OAAO,GAC/D,EAAO,SAAW,YACX,2CAA2C,EAAO,OAAO,GAChE,EAAO,SAAW,WACX,qCAAqC,EAAO,SAAS,GAC5D,EAAO,SAAW,QACX,yCAAyC,EAAO,UACpD,GAAG,EAAM,EAAO,SAAWA,EAAM,OAAO,eAEnD,IAAK,kBACD,MAAO,uCAAuCA,EAAM,UACxD,IAAK,oBACD,MAAO,8BAAA,EAA8CA,EAAM,KAAM,QACrE,IAAK,cACD,MAAO,2BAA2BA,EAAM,SAC5C,IAAK,gBACD,MAAO,uBACX,IAAK,kBACD,MAAO,8BAA8BA,EAAM,SAC/C,QACI,MAAO,0BAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,MAAMA,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,KAAM,KAAM,MAC5B,KAAM,CAAE,KAAM,KAAM,KAAM,MAC1B,MAAO,CAAE,KAAM,IAAK,KAAM,MAC1B,IAAK,CAAE,KAAM,IAAK,KAAM,OAE5B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,WAAa,KAE7C,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,KAEX,GAAI,IAAS,KACT,MAAO,WAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,KACP,MAAO,OACP,IAAK,MACL,MAAO,OACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,UACV,KAAM,QACN,KAAM,QACN,SAAU,QACV,KAAM,SACN,KAAM,SACN,OAAQ,SACR,OAAQ,SACR,OAAQ,cACR,UAAW,iBACX,YAAa,UACb,KAAM,UACN,IAAK,MACL,iBAAkB,MAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,WAAWA,EAAM,SAAS,QAAQJ,EAAWI,EAAM,SAC9D,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,WAAA,EAAmCA,EAAM,OAAO,MACpD,eAAA,EAA+BA,EAAM,OAAQ,OACxD,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,WAAWA,EAAM,QAAU,IAAI,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,QACvF,WAAWA,EAAM,QAAU,IAAI,GAAG,IAAMA,EAAM,QAAQ,aAEjE,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,WAAWA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAExE,WAAWA,EAAM,OAAO,GAAG,IAAMA,EAAM,QAAQ,aAE1D,IAAK,iBAAkB,CACnB,IAAM,EAASA,EASf,OARI,EAAO,SAAW,cACX,cAAc,EAAO,OAAO,MACnC,EAAO,SAAW,YACX,cAAc,EAAO,OAAO,MACnC,EAAO,SAAW,WACX,eAAe,EAAO,SAAS,GACtC,EAAO,SAAW,QACX,mBAAmB,EAAO,UAC9B,KAAK,EAAM,EAAO,SAAWA,EAAM,SAE9C,IAAK,kBACD,MAAO,YAAYA,EAAM,QAAQ,MACrC,IAAK,oBACD,MAAO,gBAAA,EAAgCA,EAAM,KAAM,QACvD,IAAK,cACD,MAAO,GAAGA,EAAM,OAAO,aAC3B,IAAK,gBACD,MAAO,OACX,IAAK,kBACD,MAAO,GAAGA,EAAM,OAAO,gBAC3B,QACI,MAAO,UAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa2C,MChHrB,MAAM,OAAc,CAChB,IAAM,EAAU,CACZ,OAAQ,CAAE,KAAM,KAAM,KAAM,MAC5B,KAAM,CAAE,KAAM,MAAO,KAAM,MAC3B,MAAO,CAAE,KAAM,KAAM,KAAM,MAC3B,IAAK,CAAE,KAAM,KAAM,KAAM,OAE7B,SAAS,EAAU,EAAQ,CACvB,OAAO,EAAQ,IAAW,KAE9B,IAAM/C,EAAc,GAAS,CACzB,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,MAAQ,SAExC,IAAK,SACD,GAAI,MAAM,QAAQ,GACd,MAAO,QAEX,GAAI,IAAS,KACT,MAAO,OAEX,GAAI,OAAO,eAAe,KAAU,OAAO,WAAa,EAAK,YACzD,OAAO,EAAK,YAAY,KAIpC,OAAO,GAEL,EAAQ,CACV,MAAO,KACP,MAAO,OACP,IAAK,MACL,MAAO,QACP,KAAM,OACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,KAAM,OACN,KAAM,OACN,MAAO,QACP,KAAM,OACN,IAAK,MACL,MAAO,QACP,SAAU,WACV,KAAM,SACN,KAAM,SACN,SAAU,SACV,KAAM,UACN,KAAM,UACN,OAAQ,UACR,OAAQ,UACR,OAAQ,cACR,UAAW,iBACX,YAAa,UACb,KAAM,WACN,IAAK,MACL,iBAAkB,MAEtB,MAAQ,IAAU,CACd,OAAQI,EAAM,KAAd,CACI,IAAK,eACD,MAAO,cAAcA,EAAM,SAAS,OAAOJ,EAAWI,EAAM,SAChE,IAAK,gBAGD,OAFIA,EAAM,OAAO,SAAW,EACjB,cAAA,EAAsCA,EAAM,OAAO,MACvD,mBAAA,EAAmCA,EAAM,OAAQ,OAC5D,IAAK,UAAW,CACZ,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAG/B,OAFI,EACO,WAAWA,EAAM,QAAU,IAAI,MAAM,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,MAAQ,QAC1F,WAAWA,EAAM,QAAU,IAAI,MAAM,IAAMA,EAAM,QAAQ,aAEpE,IAAK,YAAa,CACd,IAAM,EAAMA,EAAM,UAAY,KAAO,IAC/B,EAAS,EAAUA,EAAM,QAI/B,OAHI,EACO,WAAWA,EAAM,OAAO,MAAM,IAAMA,EAAM,QAAQ,WAAW,GAAG,EAAO,OAE3E,WAAWA,EAAM,OAAO,MAAM,IAAMA,EAAM,QAAQ,aAE7D,IAAK,iBAAkB,CACnB,IAAM,EAASA,EAUf,OATI,EAAO,SAAW,cACX,cAAc,EAAO,OAAO,MAEnC,EAAO,SAAW,YACX,cAAc,EAAO,OAAO,MACnC,EAAO,SAAW,WACX,eAAe,EAAO,SAAS,GACtC,EAAO,SAAW,QACX,gBAAgB,EAAO,UAC3B,OAAO,EAAM,EAAO,SAAWA,EAAM,SAEhD,IAAK,kBACD,MAAO,aAAaA,EAAM,QAAQ,MACtC,IAAK,oBACD,MAAO,UAAUA,EAAM,KAAK,OAAS,EAAI,IAAM,GAAG,GAAA,EAAmBA,EAAM,KAAM,OACrF,IAAK,cACD,MAAO,GAAGA,EAAM,OAAO,UAC3B,IAAK,gBACD,MAAO,SACX,IAAK,kBACD,MAAO,GAAGA,EAAM,OAAO,SAC3B,QACI,MAAO,YAIvB,SAAA,IAA2B,CACvB,MAAO,CACH,YAAa,4ZElHrB,MAAa,GAAU,OAAO,aACjB,GAAS,OAAO,YAC7B,IAAa,GAAb,KAA0B,CACtB,aAAc,CACV,KAAK,KAAO,IAAI,QAChB,KAAK,OAAS,IAAI,IAEtB,IAAI,EAAQ,GAAG,EAAO,CAClB,IAAM,EAAO,EAAM,GAEnB,GADA,KAAK,KAAK,IAAIwC,EAAQ,GAClB,GAAQ,OAAO,GAAS,UAAY,OAAQ,EAAM,CAClD,GAAI,KAAK,OAAO,IAAI,EAAK,IACrB,MAAU,MAAM,MAAM,EAAK,GAAG,kCAElC,KAAK,OAAO,IAAI,EAAK,GAAIA,GAE7B,OAAO,KAEX,OAAO,EAAQ,CAEX,OADA,KAAK,KAAK,OAAOA,GACV,KAEX,IAAI,EAAQ,CAGR,IAAM5G,EAAI4G,EAAO,KAAK,OACtB,GAAI5G,EAAG,CACH,IAAM,EAAK,CAAE,GAAI,KAAK,IAAIA,IAAM,IAEhC,OADA,OAAO,EAAG,GACH,CAAE,GAAG,EAAI,GAAG,KAAK,KAAK,IAAI4G,IAErC,OAAO,KAAK,KAAK,IAAIA,GAEzB,IAAI,EAAQ,CACR,OAAO,KAAK,KAAK,IAAIA,KAI7B,SAAgB,IAAW,CACvB,OAAO,IAAI,GAEf,MAAa,GAA+B,KCtC5C,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAI/N,EAAM,CACb,KAAM,SACN,GAAA,EAAwB,KAGhC,SAAgB,GAAe,EAAO,EAAQ,CAC1C,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,GACR,GAAA,EAAwB,KAGhC,SAAgB,GAAO,EAAO,EAAQ,CAClC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,QAAS,KACT,GAAA,EAAwB,KAGhC,SAAgB,GAAK,EAAO,EAAQ,CAChC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAO,EAAO,EAAQ,CAClC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAO,EAAO,EAAQ,CAClC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAK,EAAO,EAAQ,CAChC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAO,EAAO,EAAQ,CAClC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,QACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,SACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAW,EAAO,EAAQ,CACtC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,YACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,SAAgB,GAAK,EAAO,EAAQ,CAChC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,MACR,MAAO,gBACP,MAAO,GACP,GAAA,EAAwB,KAGhC,MAAa,GAAgB,CACzB,IAAK,KACL,OAAQ,GACR,OAAQ,EACR,YAAa,EACb,YAAa,GAEjB,SAAgB,GAAa,EAAO,EAAQ,CACxC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,WACR,MAAO,gBACP,OAAQ,GACR,MAAO,GACP,UAAW,KACX,GAAA,EAAwB,KAGhC,SAAgB,GAAS,EAAO,EAAQ,CACpC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,GAAA,EAAwB,KAGhC,SAAgB,GAAS,EAAO,EAAQ,CACpC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,OACR,MAAO,gBACP,UAAW,KACX,GAAA,EAAwB,KAGhC,SAAgB,GAAa,EAAO,EAAQ,CACxC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,WACR,MAAO,gBACP,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,GACR,GAAA,EAAwB,KAGhC,SAAgB,GAAe,EAAO,EAAQ,CAC1C,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,GACR,OAAQ,GACR,GAAA,EAAwB,KAGhC,SAAgB,GAAK,EAAO,EAAQ,CAChC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,UACR,GAAA,EAAwB,KAGhC,SAAgB,GAAS,EAAO,EAAQ,CACpC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,UACR,GAAA,EAAwB,KAGhC,SAAgB,GAAS,EAAO,EAAQ,CACpC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,UACR,GAAA,EAAwB,KAGhC,SAAgB,GAAO,EAAO,EAAQ,CAClC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,QACR,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,SACR,GAAA,EAAwB,KAGhC,SAAgB,GAAS,EAAO,EAAQ,CACpC,OAAO,IAAIA,EAAM,CACb,KAAM,UACN,GAAA,EAAwB,KAGhC,SAAgB,GAAgB,EAAO,EAAQ,CAC3C,OAAO,IAAIA,EAAM,CACb,KAAM,UACN,OAAQ,GACR,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,GAAA,EAAwB,KAGhC,SAAgB,GAAe,EAAO,EAAQ,CAC1C,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,OAAQ,GACR,GAAA,EAAwB,KAGhC,SAAgB,GAAO,EAAO,EAAQ,CAClC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,QACR,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,MAAO,gBACP,MAAO,GACP,OAAQ,SACR,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,GAAA,EAAwB,KAGhC,SAAgBC,GAAW,EAAO,EAAQ,CACtC,OAAO,IAAID,EAAM,CACb,KAAM,YACN,GAAA,EAAwB,KAGhC,SAAgBE,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIF,EAAM,CACb,KAAM,OACN,GAAA,EAAwB,KAGhC,SAAgB,GAAK,EAAO,CACxB,OAAO,IAAIA,EAAM,CACb,KAAM,QAGd,SAAgB,GAAS,EAAO,CAC5B,OAAO,IAAIA,EAAM,CACb,KAAM,YAGd,SAAgB,GAAO,EAAO,EAAQ,CAClC,OAAO,IAAIA,EAAM,CACb,KAAM,QACN,GAAA,EAAwB,KAGhC,SAAgBG,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIH,EAAM,CACb,KAAM,OACN,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,OACN,GAAA,EAAwB,KAGhC,SAAgB,GAAa,EAAO,EAAQ,CACxC,OAAO,IAAIA,EAAM,CACb,KAAM,OACN,OAAQ,GACR,GAAA,EAAwB,KAGhC,SAAgB,GAAK,EAAO,EAAQ,CAChC,OAAO,IAAIA,EAAM,CACb,KAAM,MACN,GAAA,EAAwB,KAGhC,SAAgB,GAAI,EAAO,EAAQ,CAC/B,OAAO,IAAA,GAA6B,CAChC,MAAO,YACP,GAAA,EAAwB,GACxB,QACA,UAAW,KAGnB,SAAgB,GAAK,EAAO,EAAQ,CAChC,OAAO,IAAA,GAA6B,CAChC,MAAO,YACP,GAAA,EAAwB,GACxB,QACA,UAAW,KAMnB,SAAgB,GAAI,EAAO,EAAQ,CAC/B,OAAO,IAAA,GAAgC,CACnC,MAAO,eACP,GAAA,EAAwB,GACxB,QACA,UAAW,KAGnB,SAAgB,EAAK,EAAO,EAAQ,CAChC,OAAO,IAAA,GAAgC,CACnC,MAAO,eACP,GAAA,EAAwB,GACxB,QACA,UAAW,KAMnB,SAAgB,GAAU,EAAQ,CAC9B,OAAO,GAAI,EAAG,GAGlB,SAAgB,GAAU,EAAQ,CAC9B,OAAO,GAAI,EAAG,GAGlB,SAAgB,GAAa,EAAQ,CACjC,OAAO,GAAK,EAAG,GAGnB,SAAgB,GAAa,EAAQ,CACjC,OAAO,EAAK,EAAG,GAEnB,SAAgB,GAAY,EAAO,EAAQ,CACvC,OAAO,IAAA,GAA+B,CAClC,MAAO,cACP,GAAA,EAAwB,GACxB,UAGR,SAAgB,GAAS,EAAS,EAAQ,CACtC,OAAO,IAAA,GAA4B,CAC/B,MAAO,WACP,GAAA,EAAwB,GACxB,YAGR,SAAgB,GAAS,EAAS,EAAQ,CACtC,OAAO,IAAA,GAA4B,CAC/B,MAAO,WACP,GAAA,EAAwB,GACxB,YAGR,SAAgB,GAAM,EAAM,EAAQ,CAChC,OAAO,IAAA,GAA+B,CAClC,MAAO,cACP,GAAA,EAAwB,GACxB,SAGR,SAAgB,GAAW,EAAS,EAAQ,CACxC,IAAM,EAAK,IAAA,GAA8B,CACrC,MAAO,aACP,GAAA,EAAwB,GACxB,YAEJ,OAAO,EAEX,SAAgB,GAAW,EAAS,EAAQ,CACxC,OAAO,IAAA,GAA8B,CACjC,MAAO,aACP,GAAA,EAAwB,GACxB,YAGR,SAAgB,GAAQ,EAAQ,EAAQ,CACpC,OAAO,IAAA,GAAiC,CACpC,MAAO,gBACP,GAAA,EAAwB,GACxB,WAGR,SAAgB,GAAO,EAAS,EAAQ,CACpC,OAAO,IAAA,GAA0B,CAC7B,MAAO,gBACP,OAAQ,QACR,GAAA,EAAwB,GACxB,YAGR,SAAgB,GAAW,EAAQ,CAC/B,OAAO,IAAA,GAA8B,CACjC,MAAO,gBACP,OAAQ,YACR,GAAA,EAAwB,KAGhC,SAAgB,GAAW,EAAQ,CAC/B,OAAO,IAAA,GAA8B,CACjC,MAAO,gBACP,OAAQ,YACR,GAAA,EAAwB,KAGhC,SAAgB,GAAU,EAAU,EAAQ,CACxC,OAAO,IAAA,GAA6B,CAChC,MAAO,gBACP,OAAQ,WACR,GAAA,EAAwB,GACxB,aAGR,SAAgB,GAAY,EAAQ,EAAQ,CACxC,OAAO,IAAA,GAA+B,CAClC,MAAO,gBACP,OAAQ,cACR,GAAA,EAAwB,GACxB,WAGR,SAAgB,GAAU,EAAQ,EAAQ,CACtC,OAAO,IAAA,GAA6B,CAChC,MAAO,gBACP,OAAQ,YACR,GAAA,EAAwB,GACxB,WAGR,SAAgB,GAAU,EAAU,EAAQ,EAAQ,CAChD,OAAO,IAAA,GAA6B,CAChC,MAAO,WACP,WACA,OAAA,EACA,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAA,GAA6B,CAChC,MAAO,YACP,KAAM,EACN,GAAA,EAAwB,KAGhC,SAAgB,GAAW,EAAI,CAC3B,OAAO,IAAA,GAA8B,CACjC,MAAO,YACP,OAIR,SAAgB,GAAW,EAAM,CAC7B,OAAO,GAAY,GAAU,EAAM,UAAU,IAGjD,SAAgB,IAAQ,CACpB,OAAO,GAAY,GAAU,EAAM,QAGvC,SAAgB,IAAe,CAC3B,OAAO,GAAY,GAAU,EAAM,eAGvC,SAAgB,IAAe,CAC3B,OAAO,GAAY,GAAU,EAAM,eAEvC,SAAgB,GAAO,EAAO,EAAS,EAAQ,CAC3C,OAAO,IAAIA,EAAM,CACb,KAAM,QACN,UAIA,GAAA,EAAwB,KAGhC,SAAgB,GAAO,EAAO,EAAS,EAAQ,CAC3C,OAAO,IAAIA,EAAM,CACb,KAAM,QACN,UACA,GAAA,EAAwB,KAGhC,SAAgB,GAAoB,EAAO,EAAe,EAAS,EAAQ,CACvE,OAAO,IAAIA,EAAM,CACb,KAAM,QACN,UACA,gBACA,GAAA,EAAwB,KAGhC,SAAgB,GAAc,EAAO,EAAM,EAAO,CAC9C,OAAO,IAAIA,EAAM,CACb,KAAM,eACN,OACA,UAQR,SAAgB,GAAO,EAAO,EAAO,EAAe,EAAS,CACzD,IAAM,EAAU,aAAA,EACV,EAAS,EAAU,EAAU,EAC7B,EAAO,EAAU,EAAgB,KACvC,OAAO,IAAIA,EAAM,CACb,KAAM,QACN,QACA,OACA,GAAA,EAAwB,KAGhC,SAAgB,GAAQ,EAAO,EAAS,EAAW,EAAQ,CACvD,OAAO,IAAIA,EAAM,CACb,KAAM,SACN,UACA,YACA,GAAA,EAAwB,KAGhC,SAAgB,GAAK,EAAO,EAAS,EAAW,EAAQ,CACpD,OAAO,IAAIA,EAAM,CACb,KAAM,MACN,UACA,YACA,GAAA,EAAwB,KAGhC,SAAgB,GAAK,EAAO,EAAW,EAAQ,CAC3C,OAAO,IAAIA,EAAM,CACb,KAAM,MACN,YACA,GAAA,EAAwB,KAGhC,SAAgBI,GAAM,EAAO,EAAQ,EAAQ,CACzC,IAAM,EAAU,MAAM,QAAQ,GAAU,OAAO,YAAY,EAAO,IAAK,GAAM,CAAC,EAAG,KAAO,EAYxF,OAAO,IAAIJ,EAAM,CACb,KAAM,OACN,UACA,GAAA,EAAwB,KAUhC,SAAgB,GAAY,EAAO,EAAS,EAAQ,CAChD,OAAO,IAAIA,EAAM,CACb,KAAM,OACN,UACA,GAAA,EAAwB,KAGhC,SAAgB,GAAS,EAAO,EAAO,EAAQ,CAC3C,OAAO,IAAIA,EAAM,CACb,KAAM,UACN,OAAQ,MAAM,QAAQ,GAAS,EAAQ,CAAC,GACxC,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,OACN,GAAA,EAAwB,KAGhC,SAAgB,GAAW,EAAO,EAAI,CAClC,OAAO,IAAIA,EAAM,CACb,KAAM,YACN,UAAW,IAGnB,SAAgB,GAAU,EAAO,EAAW,CACxC,OAAO,IAAIA,EAAM,CACb,KAAM,WACN,cAGR,SAAgB,GAAU,EAAO,EAAW,CACxC,OAAO,IAAIA,EAAM,CACb,KAAM,WACN,cAGR,SAAgBK,GAAS,EAAO,EAAW,EAAc,CACrD,OAAO,IAAIL,EAAM,CACb,KAAM,UACN,YACA,IAAI,cAAe,CACf,OAAO,OAAO,GAAiB,WAAa,IAAiB,KAIzE,SAAgB,GAAa,EAAO,EAAW,EAAQ,CACnD,OAAO,IAAIA,EAAM,CACb,KAAM,cACN,YACA,GAAA,EAAwB,KAGhC,SAAgB,GAAS,EAAO,EAAW,CACvC,OAAO,IAAIA,EAAM,CACb,KAAM,UACN,cAGR,SAAgBM,GAAO,EAAO,EAAW,EAAY,CACjD,OAAO,IAAIN,EAAM,CACb,KAAM,QACN,YACA,WAAa,OAAO,GAAe,WAAa,MAAmB,IAG3E,SAAgB,GAAM,EAAO,EAAK,EAAK,CACnC,OAAO,IAAIA,EAAM,CACb,KAAM,OACN,GAAI,EACJ,QAGR,SAAgB,GAAU,EAAO,EAAW,CACxC,OAAO,IAAIA,EAAM,CACb,KAAM,WACN,cAGR,SAAgB,GAAiB,EAAO,EAAO,EAAQ,CACnD,OAAO,IAAIA,EAAM,CACb,KAAM,mBACN,QACA,GAAA,EAAwB,KAGhC,SAAgB,GAAM,EAAO,EAAQ,CACjC,OAAO,IAAIA,EAAM,CACb,KAAM,OACN,WAGR,SAAgB,GAAS,EAAO,EAAW,CACvC,OAAO,IAAIA,EAAM,CACb,KAAM,UACN,cAGR,SAAgB,GAAQ,EAAO,EAAI,EAAS,CACxC,IAAM,EAAA,EAA4B,GAClC,AAAe,EAAK,QAAQ,GAC5B,IAAM+N,EAAS,IAAI/N,EAAM,CACrB,KAAM,SACN,MAAO,SACH,KACJ,GAAG,IAEP,OAAO+N,EAUX,SAAgB,GAAQ,EAAO,EAAI,EAAS,CACxC,IAAMA,EAAS,IAAI/N,EAAM,CACrB,KAAM,SACN,MAAO,SACH,KACJ,GAAA,EAAwB,KAE5B,OAAO+N,EAEX,SAAgB,GAAY,EAAS,EAAS,CAC1C,GAAM,CAAE,KAAM,EAAO,MAAA,EAAO,SAAQ,SAAA,EAA+B,GAC/D,EAAc,GAAU,CAAC,OAAQ,IAAK,MAAO,KAAM,IAAK,WACxD,EAAa,GAAS,CAAC,QAAS,IAAK,KAAM,MAAO,IAAK,YACvD,IAAU,cACV,EAAc,EAAY,IAAK,GAAO,OAAO,GAAM,SAAW,EAAE,cAAgB,GAChF,EAAa,EAAW,IAAK,GAAO,OAAO,GAAM,SAAW,EAAE,cAAgB,IAElF,IAAM,EAAY,IAAI,IAAI,GACpB,EAAW,IAAI,IAAI,GACnB,EAAQ,EAAQ,MAAA,GAChB,EAAW,EAAQ,SAAA,GACnB,EAAU,EAAQ,QAAA,GAClB,EAAa,EAAQ,WAAA,GACrB,EAAK,IAAI,EAAW,CACtB,KAAM,YACN,WAAY,EAAO,IAAY,CAC3B,IAAI,EAAO,EAiBP,OAhBA,IAAU,cACV,EAAO,EAAK,eACZ,EAAU,IAAI,GACP,GAEF,EAAS,IAAI,GACX,IAGP,EAAQ,OAAO,KAAK,CAChB,KAAM,gBACN,SAAU,aACV,OAAQ,CAAC,GAAG,EAAW,GAAG,GAC1B,MAAO,EAAQ,MACf,KAAM,IAEH,KAGf,MAAA,IAEE,EAAY,IAAI,EAAM,CACxB,KAAM,OACN,GAAI,IAAI,EAAQ,CAAE,KAAM,SAAU,MAAA,IAClC,IAAK,EACL,MAAA,IAEE,EAAY,IAAI,EAAM,CACxB,KAAM,OACN,GAAI,EACJ,IAAK,IAAI,EAAS,CACd,KAAM,UACN,MAAA,IAEJ,MAAA,IAEJ,OAAO,ECn3BX,IAAa,GAAb,KAA0B,CACtB,YAAY,EAAK,CACb,KAAK,KAAO,EACZ,KAAK,IAAM,EAEf,UAAU,EAAM,CACZ,GAAI,OAAO,GAAS,WAChB,MAAU,MAAM,8CAEpB,IAAM,IAAS,GAAG,IAAS,CACvB,IAAM,EAAa,KAAK,KAAK,MAAQrG,GAAM,KAAK,KAAK,MAAO,EAAM,IAAA,GAAW,CAAE,OAAQ,IAAU,EACjG,GAAI,CAAC,MAAM,QAAQ,GACf,MAAU,MAAM,2DAEpB,IAAM,EAAS,EAAK,GAAG,GACvB,OAAO,KAAK,KAAK,OAASA,GAAM,KAAK,KAAK,OAAQ,EAAQ,IAAA,GAAW,CAAE,OAAQ,IAAU,IAE7F,OAAO,EAEX,eAAe,EAAM,CACjB,GAAI,OAAO,GAAS,WAChB,MAAU,MAAM,8CAEpB,IAAM,GAAQ,MAAO,GAAG,IAAS,CAC7B,IAAM,EAAa,KAAK,KAAK,MAAQ,MAAMjH,GAAW,KAAK,KAAK,MAAO,EAAM,IAAA,GAAW,CAAE,OAAQ,IAAU,EAC5G,GAAI,CAAC,MAAM,QAAQ,GACf,MAAU,MAAM,2DAEpB,IAAM,EAAS,MAAM,EAAK,GAAG,GAC7B,OAAO,KAAK,KAAK,OAASA,GAAW,KAAK,KAAK,OAAQ,EAAQ,IAAA,GAAW,CAAE,OAAQ,IAAU,IAElG,OAAO,EAEX,MAAM,GAAG,EAAM,CACX,IAAM,EAAI,KAAK,YAYf,OAXI,MAAM,QAAQ,EAAK,IACZ,IAAI,EAAE,CACT,KAAM,WACN,MAAO,IAAI,GAAU,CACjB,KAAM,QACN,MAAO,EAAK,GACZ,KAAM,EAAK,KAEf,OAAQ,KAAK,KAAK,SAGnB,IAAI,EAAE,CACT,KAAM,WACN,MAAO,EAAK,GACZ,OAAQ,KAAK,KAAK,SAG1B,OAAO,EAAQ,CACX,IAAM,EAAI,KAAK,YACf,OAAO,IAAI,EAAE,CACT,KAAM,WACN,MAAO,KAAK,KAAK,MACjB,aAIZ,SAAS,GAAU,EAAQ,CACvB,OAAO,IAAI,GAAa,CACpB,KAAM,WACN,MAAO,MAAM,QAAQ,GAAQ,OACvB,GAAA,GAA0B,GAAQ,OACjC,GAAQ,OAAS,GAAA,GAA0B,GAAA,KAClD,OAAQ,GAAQ,QAAU,GAAA,MCrElC,IAAa,GAAb,KAAiC,CAC7B,YAAY,EAAQ,CAChB,KAAK,QAAU,EACf,KAAK,iBAAmB,GAAQ,UAAY,GAC5C,KAAK,OAAS,GAAQ,QAAU,gBAChC,KAAK,gBAAkB,GAAQ,iBAAmB,QAClD,KAAK,SAAW,GAAQ,eAAmB,IAC3C,KAAK,GAAK,GAAQ,IAAM,SACxB,KAAK,KAAO,IAAI,IAEpB,QAAQ,EAAQ,EAAU,CAAE,KAAM,GAAI,WAAY,IAAM,CACpD,IAAI,EACJ,IAAM,EAAMsN,EAAO,KAAK,IAClB,EAAY,CACd,KAAM,OACN,IAAK,MACL,SAAU,YACV,YAAa,cACb,MAAO,IAGL,EAAO,KAAK,KAAK,IAAIA,GAC3B,GAAI,EAAM,CACN,EAAK,QAEL,IAAM,EAAU,EAAQ,WAAW,SAASA,GAI5C,OAHI,IACA,EAAK,MAAQ,EAAQ,MAElB,EAAK,OAGhB,IAAM,EAAS,CAAE,OAAQ,GAAI,MAAO,EAAG,MAAO,IAAA,IAC9C,KAAK,KAAK,IAAIA,EAAQ,GAEtB,IAAM,EAAiBA,EAAO,KAAK,iBACnC,GAAI,EACA,EAAO,OAAS,MAEf,CACD,IAAM,EAAS,CACX,GAAG,EACH,WAAY,CAAC,GAAG,EAAQ,WAAYA,GACpC,KAAM,EAAQ,MAEZ,EAASA,EAAO,KAAK,OAC3B,GAAI,EAEA,EAAO,IAAM,EACb,KAAK,QAAQ,EAAQ,GACrB,KAAK,KAAK,IAAI,GAAQ,SAAW,OAEhC,CACD,IAAM,EAAQ,EAAO,OACrB,OAAQ,EAAI,KAAZ,CACI,IAAK,SAAU,CACX,IAAMpN,EAAO,EACb,EAAK,KAAO,SACZ,GAAM,CAAE,UAAS,UAAS,OAAA,EAAQ,WAAU,mBAAoBoN,EAAO,KAClE,IAaL,GAZI,OAAO,GAAY,WACnB,EAAK,UAAY,GACjB,OAAO,GAAY,WACnB,EAAK,UAAY,GAEjBnN,IACA,EAAK,OAAS,EAAUA,IAAWA,EAC/BD,EAAK,SAAW,IAChB,OAAOA,EAAK,QAEhB,IACA,EAAK,gBAAkB,GACvB,GAAY,EAAS,KAAO,EAAG,CAC/B,IAAM,EAAU,CAAC,GAAG,GAChB,EAAQ,SAAW,EACnB,EAAK,QAAU,EAAQ,GAAG,OACrB,EAAQ,OAAS,IACtB,EAAO,OAAO,MAAQ,CAClB,GAAG,EAAQ,IAAK,IAAW,CACvB,GAAI,KAAK,SAAW,UAAY,CAAE,KAAM,UAAa,GACrD,QAAS,EAAM,YAK/B,MAEJ,IAAK,SAAU,CACX,IAAMA,EAAO,EACP,CAAE,UAAS,UAAS,OAAA,EAAQ,aAAY,mBAAkB,oBAAqBoN,EAAO,KAAK,IAC7F,OAAOnN,GAAW,UAAYA,EAAO,SAAS,OAC9C,EAAK,KAAO,UAEZ,EAAK,KAAO,SACZ,OAAO,GAAqB,WAC5B,EAAK,iBAAmB,GACxB,OAAO,GAAY,WACnB,EAAK,QAAU,EACX,OAAO,GAAqB,WACxB,GAAoB,EACpB,OAAOD,EAAK,QAEZ,OAAOA,EAAK,mBAGpB,OAAO,GAAqB,WAC5B,EAAK,iBAAmB,GACxB,OAAO,GAAY,WACnB,EAAK,QAAU,EACX,OAAO,GAAqB,WACxB,GAAoB,EACpB,OAAOA,EAAK,QAEZ,OAAOA,EAAK,mBAGpB,OAAO,GAAe,WACtB,EAAK,WAAa,GACtB,MAEJ,IAAK,UAAW,CACZ,IAAMA,EAAO,EACb,EAAK,KAAO,UACZ,MAEJ,IAAK,SACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,+CAEpB,MAEJ,IAAK,SACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,gDAEpB,MAEJ,IAAK,YAAa,CACd,IAAMA,EAAO,EACb,EAAK,KAAO,OACZ,MAEJ,IAAK,OACD,EAAM,KAAO,OACb,MAEJ,IAAK,MACD,MAEJ,IAAK,UACD,MAEJ,IAAK,QACD,EAAM,IAAM,GACZ,MAEJ,IAAK,OACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,6CAEpB,MAEJ,IAAK,OACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,6CAEpB,MAEJ,IAAK,QAAS,CACV,IAAMA,EAAO,EACP,CAAE,UAAS,WAAYoN,EAAO,KAAK,IACrC,OAAO,GAAY,WACnB,EAAK,SAAW,GAChB,OAAO,GAAY,WACnB,EAAK,SAAW,GACpB,EAAK,KAAO,QACZ,EAAK,MAAQ,KAAK,QAAQ,EAAI,QAAS,CAAE,GAAG,EAAQ,KAAM,CAAC,GAAG,EAAO,KAAM,WAC3E,MAEJ,IAAK,SAAU,CACX,IAAMpN,EAAO,EACb,EAAK,KAAO,SACZ,EAAK,WAAa,GAClB,IAAM,EAAQ,EAAI,MAClB,IAAK,IAAM,KAAO,EACd,EAAK,WAAW,GAAO,KAAK,QAAQ,EAAM,GAAM,CAC5C,GAAG,EACH,KAAM,CAAC,GAAG,EAAO,KAAM,aAAc,KAI7C,IAAM,EAAU,IAAI,IAAI,OAAO,KAAK,IAE9B,EAAe,IAAI,IAAI,CAAC,GAAG,GAAS,OAAQ,GAAQ,CACtD,IAAM,EAAI,EAAI,MAAM,GAAK,KAKrB,OAJA,KAAK,KAAO,QACL,EAAE,QAAU,IAAA,GAGZ,EAAE,SAAW,IAAA,MAGxB,EAAa,KAAO,IACpB,EAAK,SAAW,MAAM,KAAK,IAG3B,EAAI,UAAU,KAAK,IAAI,OAAS,QAEhC,EAAK,qBAAuB,GAEtB,EAAI,SAKL,EAAI,WACT,EAAK,qBAAuB,KAAK,QAAQ,EAAI,SAAU,CACnD,GAAG,EACH,KAAM,CAAC,GAAG,EAAO,KAAM,2BANvB,KAAK,KAAO,WACZ,EAAK,qBAAuB,IAQpC,MAEJ,IAAK,QAAS,CACV,IAAMA,EAAO,EACb,EAAK,MAAQ,EAAI,QAAQ,KAAK,EAAG,IAAM,KAAK,QAAQ,EAAG,CACnD,GAAG,EACH,KAAM,CAAC,GAAG,EAAO,KAAM,QAAS,MAEpC,MAEJ,IAAK,eAAgB,CACjB,IAAMA,EAAO,EACP,EAAI,KAAK,QAAQ,EAAI,KAAM,CAC7B,GAAG,EACH,KAAM,CAAC,GAAG,EAAO,KAAM,QAAS,KAE9B,EAAI,KAAK,QAAQ,EAAI,MAAO,CAC9B,GAAG,EACH,KAAM,CAAC,GAAG,EAAO,KAAM,QAAS,KAE9B,EAAwB,GAAQ,UAAW,GAAO,OAAO,KAAK,GAAK,SAAW,EAC9E,EAAQ,CACV,GAAI,EAAqB,GAAK,EAAE,MAAQ,CAAC,GACzC,GAAI,EAAqB,GAAK,EAAE,MAAQ,CAAC,IAE7C,EAAK,MAAQ,EACb,MAEJ,IAAK,QAAS,CACV,IAAMA,EAAO,EACb,EAAK,KAAO,QACZ,IAAM,EAAc,EAAI,MAAM,KAAK,EAAG,IAAM,KAAK,QAAQ,EAAG,CAAE,GAAG,EAAQ,KAAM,CAAC,GAAG,EAAO,KAAM,cAAe,MAO/G,GANI,KAAK,SAAW,gBAChB,EAAK,YAAc,EAGnB,EAAK,MAAQ,EAEb,EAAI,KAAM,CACV,IAAM,EAAO,KAAK,QAAQ,EAAI,KAAM,CAChC,GAAG,EACH,KAAM,CAAC,GAAG,EAAO,KAAM,WAEvB,KAAK,SAAW,gBAChB,EAAK,MAAQ,EAGb,EAAK,gBAAkB,EAI3B,EAAI,OACJ,EAAK,MAAQ,KAAK,QAAQ,EAAI,KAAM,CAChC,GAAG,EACH,KAAM,CAAC,GAAG,EAAO,KAAM,YAI/B,GAAM,CAAE,UAAS,WAAYoN,EAAO,KAAK,IACrC,OAAO,GAAY,WACnB,EAAK,SAAW,GAChB,OAAO,GAAY,WACnB,EAAK,SAAW,GACpB,MAEJ,IAAK,SAAU,CACX,IAAMpN,EAAO,EACb,EAAK,KAAO,SACZ,EAAK,cAAgB,KAAK,QAAQ,EAAI,QAAS,CAAE,GAAG,EAAQ,KAAM,CAAC,GAAG,EAAO,KAAM,mBACnF,EAAK,qBAAuB,KAAK,QAAQ,EAAI,UAAW,CACpD,GAAG,EACH,KAAM,CAAC,GAAG,EAAO,KAAM,0BAE3B,MAEJ,IAAK,MACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,4CAEpB,MAEJ,IAAK,MACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,4CAEpB,MAEJ,IAAK,OAAQ,CACT,IAAMA,EAAO,EACP,EAAS,GAAc,EAAI,SAE7B,EAAO,MAAO,GAAM,OAAO,GAAM,YACjC,EAAK,KAAO,UACZ,EAAO,MAAO,GAAM,OAAO,GAAM,YACjC,EAAK,KAAO,UAChB,EAAK,KAAO,EACZ,MAEJ,IAAK,UAAW,CACZ,IAAMA,EAAO,EACP,EAAO,GACb,IAAK,IAAM,KAAO,EAAI,OAClB,GAAI,IAAQ,IAAA,OACJ,KAAK,kBAAoB,QACzB,MAAU,MAAM,oEAMf,OAAO,GAAQ,SACpB,IAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,wDAGhB,EAAK,KAAK,OAAO,SAIrB,EAAK,KAAK,GAGlB,GAAI,EAAK,SAAW,EAAG,GAGd,EAAK,SAAW,EAAG,CACxB,IAAM,EAAM,EAAK,GACjB,EAAK,KAAO,IAAQ,KAAO,OAAS,OAAO,EAC3C,EAAK,MAAQ,OAGT,EAAK,MAAO,GAAM,OAAO,GAAM,YAC/B,EAAK,KAAO,UACZ,EAAK,MAAO,GAAM,OAAO,GAAM,YAC/B,EAAK,KAAO,UACZ,EAAK,MAAO,GAAM,OAAO,GAAM,aAC/B,EAAK,KAAO,UACZ,EAAK,MAAO,GAAM,IAAM,QACxB,EAAK,KAAO,QAChB,EAAK,KAAO,EAEhB,MAEJ,IAAK,OAAQ,CACT,IAAMA,EAAO,EACPkM,EAAO,CACT,KAAM,SACN,OAAQ,SACR,gBAAiB,UAEf,CAAE,UAAS,UAAS,QAASkB,EAAO,KAAK,IAC3C,IAAY,IAAA,KACZ,EAAK,UAAY,GACjB,IAAY,IAAA,KACZ,EAAK,UAAY,GACjB,EACI,EAAK,SAAW,GAChB,EAAK,iBAAmB,EAAK,GAC7B,OAAO,OAAOpN,EAAMkM,IAGpB,EAAK,MAAQ,EAAK,IAAK,GAAM,CACzB,IAAM,EAAQ,CAAE,GAAGA,EAAM,iBAAkB,GAC3C,OAAO,IAKf,OAAO,OAAOlM,EAAMkM,GAKxB,MAEJ,IAAK,YACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,mDAEpB,MAEJ,IAAK,WAAY,CACb,IAAM,EAAQ,KAAK,QAAQ,EAAI,UAAW,GAC1C,EAAM,MAAQ,CAAC,EAAO,CAAE,KAAM,SAC9B,MAEJ,IAAK,cACD,KAAK,QAAQ,EAAI,UAAW,GAC5B,EAAO,IAAM,EAAI,UACjB,MAEJ,IAAK,UAAW,CACZ,IAAMlM,EAAO,EACb,EAAK,KAAO,UACZ,MAEJ,IAAK,UACD,KAAK,QAAQ,EAAI,UAAW,GAC5B,EAAO,IAAM,EAAI,UACjB,EAAM,QAAU,KAAK,MAAM,KAAK,UAAU,EAAI,eAC9C,MAEJ,IAAK,WACD,KAAK,QAAQ,EAAI,UAAW,GAC5B,EAAO,IAAM,EAAI,UACb,KAAK,KAAO,UACZ,EAAM,UAAY,KAAK,MAAM,KAAK,UAAU,EAAI,gBACpD,MAEJ,IAAK,QAAS,CAEV,KAAK,QAAQ,EAAI,UAAW,GAC5B,EAAO,IAAM,EAAI,UACjB,IAAI,EACJ,GAAI,CACA,EAAa,EAAI,WAAW,IAAA,SAE1B,CACF,MAAU,MAAM,yDAEpB,EAAM,QAAU,EAChB,MAEJ,IAAK,MACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,4CAEpB,MAEJ,IAAK,mBAAoB,CACrB,IAAMA,EAAO,EACP,EAAUoN,EAAO,KAAK,QAC5B,GAAI,CAAC,EACD,MAAU,MAAM,yCACpB,EAAK,KAAO,SACZ,EAAK,QAAU,EAAQ,OACvB,MAEJ,IAAK,OAAQ,CACT,IAAM,EAAY,KAAK,KAAO,QAAW,EAAI,GAAG,KAAK,IAAI,OAAS,YAAc,EAAI,IAAM,EAAI,GAAM,EAAI,IACxG,KAAK,QAAQ,EAAW,GACxB,EAAO,IAAM,EACb,MAEJ,IAAK,WACD,KAAK,QAAQ,EAAI,UAAW,GAC5B,EAAO,IAAM,EAAI,UACjB,EAAM,SAAW,GACjB,MAGJ,IAAK,UACD,KAAK,QAAQ,EAAI,UAAW,GAC5B,EAAO,IAAM,EAAI,UACjB,MAEJ,IAAK,WACD,KAAK,QAAQ,EAAI,UAAW,GAC5B,EAAO,IAAM,EAAI,UACjB,MAEJ,IAAK,OAAQ,CACT,IAAM,EAAYA,EAAO,KAAK,UAC9B,KAAK,QAAQ,EAAW,GACxB,EAAO,IAAM,EACb,MAEJ,IAAK,SACD,GAAI,KAAK,kBAAoB,QACzB,MAAU,MAAM,qDAEpB,MAEJ,WAOZ,IAAM,EAAO,KAAK,iBAAiB,IAAIA,GACnC,GACA,OAAO,OAAO,EAAO,OAAQ,GAC7B,KAAK,KAAO,SAAW,EAAeA,KAEtC,OAAO,EAAO,OAAO,SACrB,OAAO,EAAO,OAAO,SAGrB,KAAK,KAAO,SAAW,EAAO,OAAO,aACpC,EAAK,EAAO,QAAQ,UAAY,EAAG,QAAU,EAAO,OAAO,YAChE,OAAO,EAAO,OAAO,UAErB,IAAM,EAAU,KAAK,KAAK,IAAIA,GAC9B,OAAO,EAAQ,OAEnB,KAAK,EAAQ,EAAS,CAClB,IAAM,EAAS,CACX,OAAQ,GAAS,QAAU,MAC3B,OAAQ,GAAS,QAAU,SAG3B,SAAU,GAAS,UAAY,IAAA,IAG7B,EAAO,KAAK,KAAK,IAAIA,GAC3B,GAAI,CAAC,EACD,MAAU,MAAM,6CAGpB,IAAM,EAAW,GAAU,CAKvB,IAAM,EAAc,KAAK,SAAW,gBAAkB,QAAU,cAChE,GAAI,EAAO,SAAU,CACjB,IAAM,EAAa,EAAO,SAAS,SAAS,IAAI,EAAM,KAAK,GAE3D,GAAI,EACA,MAAO,CAAE,IAAK,EAAO,SAAS,IAAI,IAEtC,IAAM,EAAK,EAAM,GAAG,OAAS,EAAM,GAAG,OAAO,IAAM,SAAS,KAAK,YAEjE,MADA,GAAM,GAAG,MAAQ,EACV,CAAE,MAAO,EAAI,IAAK,GAAG,EAAO,SAAS,IAAI,YAAY,IAAI,EAAY,GAAG,KAEnF,GAAI,EAAM,KAAO,EACb,MAAO,CAAE,IAAK,KAGlB,IACM,EAAe,KAAgB,EAAY,GAC3C,EAAQ,EAAM,GAAG,OAAO,IAAM,WAAW,KAAK,YACpD,MAAO,CAAE,QAAO,IAAK,EAAe,IAIlC,EAAgB,GAAU,CAC5B,GAAI,EAAM,GAAG,OAAO,KAChB,OAEJ,IAAM,EAAO,EAAM,GACb,CAAE,MAAK,SAAU,EAAQ,GAC/B,EAAK,IAAM,CAAE,GAAG,EAAK,QAEjB,IACA,EAAK,MAAQ,GAEjB,IAAMA,EAAS,EAAK,OACpB,IAAK,IAAM,KAAOA,EACd,OAAOA,EAAO,GAElB,EAAO,KAAO,GAGlB,IAAK,IAAM,KAAS,KAAK,KAAK,UAAW,CACrC,IAAM,EAAO,EAAM,GAGnB,GAAIA,IAAW,EAAM,GAAI,CAErB,EAAa,GACb,SAGJ,GAAI,EAAO,SAAU,CACjB,IAAM,EAAM,EAAO,SAAS,SAAS,IAAI,EAAM,KAAK,GACpD,GAAIA,IAAW,EAAM,IAAM,EAAK,CAC5B,EAAa,GACb,UAIR,IAAM,EAAK,KAAK,iBAAiB,IAAI,EAAM,KAAK,GAChD,GAAI,EAAI,CACJ,EAAa,GACb,SAGJ,GAAI,EAAK,MAAO,CACZ,GAAI,EAAO,SAAW,QAClB,MAAU,MAAM,qBACP,EAAK,OAAO,KAAK,KAAK;;mFAG1B,EAAO,SAAW,OACvB,EAAa,GAEjB,SAGJ,GAAI,EAAK,MAAQ,GACT,EAAO,SAAW,MAAO,CACzB,EAAa,GAEb,UAKZ,IAAM,GAAc,EAAW,IAAW,CACtC,IAAM,EAAO,KAAK,KAAK,IAAI,GACrBA,EAAS,EAAK,KAAO,EAAK,OAC1B,EAAU,CAAE,GAAGA,GAErB,GAAI,EAAK,MAAQ,KACb,OAGJ,IAAM,EAAM,EAAK,IAEjB,GADA,EAAK,IAAM,KACP,EAAK,CACL,EAAW,EAAKjN,GAEhB,IAAM,EAAY,KAAK,KAAK,IAAI,GAAK,OACjC,EAAU,MAAQA,EAAO,SAAW,WACpC,EAAO,MAAQiN,EAAO,OAAS,GAC/B,EAAO,MAAM,KAAK,KAGlB,OAAO,OAAOA,EAAQ,GACtB,OAAO,OAAOA,EAAQ,IAIzB,EAAK,UACN,KAAK,SAAS,CACC,YACX,WAAYA,KAGxB,IAAK,IAAM,IAAS,CAAC,GAAG,KAAK,KAAK,WAAW,UACzC,EAAW,EAAM,GAAI,CAAE,OAAQ,KAAK,SAExC,IAAM,EAAS,GACX,KAAK,SAAW,gBAChB,EAAO,QAAU,+CAEZ,KAAK,SAAW,UACrB,EAAO,QAAU,0CAGjB,QAAQ,KAAK,mBAAmB,KAAK,UAEzC,OAAO,OAAO,EAAQ,EAAK,KAE3B,IAAM,EAAO,EAAO,UAAU,MAAQ,GACtC,IAAK,IAAM,KAAS,KAAK,KAAK,UAAW,CACrC,IAAM,EAAO,EAAM,GACf,EAAK,KAAO,EAAK,QACjB,EAAK,EAAK,OAAS,EAAK,KAI5B,CAAC,EAAO,UAAY,OAAO,KAAK,GAAM,OAAS,IAC3C,KAAK,SAAW,gBAChB,EAAO,MAAQ,EAGf,EAAO,YAAc,GAG7B,GAAI,CAIA,OAAO,KAAK,MAAM,KAAK,UAAU,SAExB,CACT,MAAU,MAAM,uCAI5B,SAAgB,GAAa,EAAO,EAAS,CACzC,GAAI,aAAiB,GAAc,CAC/B,IAAMhN,EAAM,IAAI,GAAoB,GAC9B,EAAO,GACb,IAAK,IAAM,KAAS,EAAM,OAAO,UAAW,CACxC,GAAM,CAAC,EAAGgN,GAAU,EACpB,EAAI,QAAQA,GAEhB,IAAM,EAAU,GACV,EAAW,CACb,SAAU,EACV,IAAK,GAAS,MAAS,GAAO,GAC9B,QAEJ,IAAK,IAAM,KAAS,EAAM,OAAO,UAAW,CACxC,GAAM,CAAC,EAAKA,GAAU,EACtB,EAAQ,GAAOhN,EAAI,KAAKgN,EAAQ,CAC5B,GAAG,EACH,aAGR,GAAI,OAAO,KAAK,GAAM,OAAS,EAAG,CAC9B,IAAM,EAAchN,EAAI,SAAW,gBAAkB,QAAU,cAC/D,EAAQ,SAAW,EACd,GAAc,GAGvB,MAAO,CAAE,WAEb,IAAM,EAAM,IAAI,GAAoB,GAEpC,OADA,EAAI,QAAQ,GACL,EAAI,KAAK,EAAO,GAE3B,SAAS,EAAe,EAAS,EAAM,CACnC,IAAM,EAAM,GAAQ,CAAE,KAAM,IAAI,KAChC,GAAI,EAAI,KAAK,IAAI,GACb,MAAO,GACX,EAAI,KAAK,IAAI,GACb,IAAMgN,EAAS,EACT,EAAMA,EAAO,KAAK,IACxB,OAAQ,EAAI,KAAZ,CACI,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,UACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,OACL,IAAK,MACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,UACL,IAAK,OACL,IAAK,MACL,IAAK,OACL,IAAK,mBACD,MAAO,GACX,IAAK,QACD,OAAO,EAAe,EAAI,QAAS,GAEvC,IAAK,SACD,IAAK,IAAM,KAAO,EAAI,MAClB,GAAI,EAAe,EAAI,MAAM,GAAM,GAC/B,MAAO,GAEf,MAAO,GAEX,IAAK,QACD,IAAK,IAAM,KAAU,EAAI,QACrB,GAAI,EAAe,EAAQ,GACvB,MAAO,GAEf,MAAO,GAEX,IAAK,eACD,OAAO,EAAe,EAAI,KAAM,IAAQ,EAAe,EAAI,MAAO,GAEtE,IAAK,QACD,IAAK,IAAM,KAAQ,EAAI,MACnB,GAAI,EAAe,EAAM,GACrB,MAAO,GAIf,MAFA,GAAI,EAAI,MAAQ,EAAe,EAAI,KAAM,IAI7C,IAAK,SACD,OAAO,EAAe,EAAI,QAAS,IAAQ,EAAe,EAAI,UAAW,GAE7E,IAAK,MACD,OAAO,EAAe,EAAI,QAAS,IAAQ,EAAe,EAAI,UAAW,GAE7E,IAAK,MACD,OAAO,EAAe,EAAI,UAAW,GAGzC,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,WACD,OAAO,EAAe,EAAI,UAAW,GACzC,IAAK,OACD,OAAO,EAAe,EAAI,SAAU,GACxC,IAAK,UACD,OAAO,EAAe,EAAI,UAAW,GAEzC,IAAK,WACD,OAAO,EAAe,EAAI,UAAW,GAEzC,IAAK,SACD,MAAO,GAEX,IAAK,YACD,MAAO,GAEX,IAAK,OACD,OAAO,EAAe,EAAI,GAAI,IAAQ,EAAe,EAAI,IAAK,GAElE,IAAK,UACD,MAAO,GAEX,IAAK,QACD,MAAO,GAEX,SAGJ,MAAU,MAAM,wBAAwB,EAAI,4xIGxzBhD,MAAa,GAA+B,EAAkB,kBAAmB,EAAM,IAAQ,CAC3F,GAAA,KAA0B,EAAM,GAChC,EAAA,KAA6B,EAAM,KAEvC,SAAgB,GAAS,EAAQ,CAC7B,OAAA,GAAyB,GAAgB,GAE7C,MAAa,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAsB,EAAM,GAC5B,EAAA,KAA6B,EAAM,KAEvC,SAAgBtL,GAAK,EAAQ,CACzB,OAAA,GAAqB,GAAY,GAErC,MAAa,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAsB,EAAM,GAC5B,EAAA,KAA6B,EAAM,KAEvC,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAqB,GAAY,GAErC,MAAa,GAA+B,EAAkB,kBAAmB,EAAM,IAAQ,CAC3F,GAAA,KAA0B,EAAM,GAChC,EAAA,KAA6B,EAAM,KAEvC,SAAgB,GAAS,EAAQ,CAC7B,OAAA,GAAyB,GAAgB,GC1B7C,MAAM,IAAe,EAAM,IAAW,CAClC,GAAU,KAAK,EAAM,GACrB,EAAK,KAAO,WACZ,OAAO,iBAAiB,EAAM,CAC1B,OAAQ,CACJ,MAAQ,GAAA,GAA4B,EAAM,IAG9C,QAAS,CACL,MAAQ,GAAA,GAA6B,EAAM,IAG/C,SAAU,CACN,MAAQ,GAAU,EAAK,OAAO,KAAK8I,IAGvC,UAAW,CACP,MAAQ,GAAW,EAAK,OAAO,KAAK,GAAGC,IAG3C,QAAS,CACL,KAAM,CACF,OAAO,EAAK,OAAO,SAAW,OAWjCnG,GAAAA,EAA6B,WAAY,IACzC,GAAA,EAAiC,WAAY,GAAa,CACnE,OAAQ,QCnCCqC,GAAwB,GAAY,IACpC,GAA6B,GAAiB,IAC9C,GAA4B,GAAgB,IAC5C,GAAiC,GAAqB,ICAtDrG,EAAwB,EAAkB,WAAY,EAAM,KACrE,EAAA,KAAmB,EAAM,GACzB,EAAK,IAAM,EACX,OAAO,eAAe,EAAM,OAAQ,CAAE,MAAO,IAE7C,EAAK,OAAS,GAAG,IACN,EAAK,MAAM,CACd,GAAG,EACH,OAAQ,CACJ,GAAI,EAAI,QAAU,GAClB,GAAG,EAAO,IAAK,GAAO,OAAO,GAAO,WAAa,CAAE,KAAM,CAAE,MAAO,EAAI,IAAK,CAAE,MAAO,UAAY,SAAU,KAAS,MAM/H,EAAK,OAAS,EAAK,IAAA,GAAsB,EAAMC,EAAK,GACpD,EAAK,UAAc,EACnB,EAAK,WAAa,EAAK,KACnB,EAAI,IAAI,EAAM,GACP,IAGX,EAAK,OAAS,EAAM,IAAA,GAAuB,EAAM,EAAM,EAAQ,CAAE,OAAQ,EAAK,QAC9E,EAAK,WAAa,EAAM,IAAA,GAA2B,EAAM,EAAM,GAC/D,EAAK,WAAa,MAAO,EAAM,IAAA,GAA4B,EAAM,EAAM,EAAQ,CAAE,OAAQ,EAAK,aAC9F,EAAK,eAAiB,MAAO,EAAM,IAAA,GAAgC,EAAM,EAAM,GAC/E,EAAK,IAAM,EAAK,eAEhB,EAAK,QAAU,EAAO,IAAW,EAAK,MAAM,GAAOyJ,EAAO,IAC1D,EAAK,YAAe,GAAe,EAAK,MAAM,GAAY,IAC1D,EAAK,UAAa,GAAO,EAAK,MAAA,GAAuB,IAErD,EAAK,aAAiB,GAAS,GAC/B,EAAK,aAAiB,GAAS,GAC/B,EAAK,YAAgB,GAAS,GAAS,IACvC,EAAK,YAAe,GAAW,GAAY,EAAM,GACjD,EAAK,UAAc,GAAM,GACzB,EAAK,GAAM,GAAQ,GAAM,CAAC,EAAM,IAChC,EAAK,IAAO,GAAQ,GAAa,EAAM,GACvC,EAAK,UAAa,GAAO,GAAK,EAAM,GAAU,IAC9C,EAAK,QAAW,GAAQ,GAAS,EAAMzJ,GACvC,EAAK,SAAY,GAAQ,GAAS,EAAMA,GAExC,EAAK,MAAS,GAAW,GAAO,EAAM,GACtC,EAAK,KAAQ,GAAW,GAAK,EAAM,GACnC,EAAK,aAAiB,GAAS,GAE/B,EAAK,SAAY,GAAgB,CAC7B,IAAM,EAAK,EAAK,QAEhB,OADA,GAAA,IAAwB,EAAI,CAAE,gBACvB,GAEX,OAAO,eAAe,EAAM,cAAe,CACvC,KAAM,CACF,OAAA,GAAOE,IAAwB,IAAO,aAE1C,aAAc,KAElB,EAAK,MAAQ,GAAG,IAAS,CACrB,GAAI,EAAK,SAAW,EAChB,OAAA,GAAOA,IAAwB,GAEnC,IAAM,EAAK,EAAK,QAEhB,OADA,GAAA,IAAwB,EAAI,EAAK,IAC1B,GAGX,EAAK,eAAmB,EAAK,UAAU,IAAA,IAAW,QAClD,EAAK,eAAmB,EAAK,UAAU,MAAM,QACtC,IAGE,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAqB,EAAM,GAC3B,EAAQ,KAAK,EAAM,GACnB,IAAM,EAAM,EAAK,KAAK,IACtB,EAAK,OAAS,EAAI,QAAU,KAC5B,EAAK,UAAY,EAAI,SAAW,KAChC,EAAK,UAAY,EAAI,SAAW,KAEhC,EAAK,OAAS,GAAG,IAAS,EAAK,MAAA,GAAmB,GAAG,IACrD,EAAK,UAAY,GAAG,IAAS,EAAK,MAAA,GAAsB,GAAG,IAC3D,EAAK,YAAc,GAAG,IAAS,EAAK,MAAA,GAAwB,GAAG,IAC/D,EAAK,UAAY,GAAG,IAAS,EAAK,MAAA,GAAsB,GAAG,IAC3D,EAAK,KAAO,GAAG,IAAS,EAAK,MAAA,GAAuB,GAAG,IACvD,EAAK,KAAO,GAAG,IAAS,EAAK,MAAA,GAAuB,GAAG,IACvD,EAAK,QAAU,GAAG,IAAS,EAAK,MAAA,GAAoB,GAAG,IACvD,EAAK,UAAY,GAAG,IAAS,EAAK,MAAA,GAAuB,EAAG,GAAG,IAC/D,EAAK,UAAa,GAAW,EAAK,MAAA,GAAuB,IACzD,EAAK,UAAa,GAAW,EAAK,MAAA,GAAuB,IAEzD,EAAK,SAAa,EAAK,MAAA,MACvB,EAAK,WAAa,GAAG,IAAS,EAAK,MAAA,GAAuB,GAAG,IAC7D,EAAK,gBAAoB,EAAK,MAAA,MAC9B,EAAK,gBAAoB,EAAK,MAAA,QAErBC,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,GAAW,KAAK,EAAM,GACtB,EAAK,MAAS,GAAW,EAAK,MAAA,GAAkB,GAAU,IAC1D,EAAK,IAAO,GAAW,EAAK,MAAA,GAAgB,GAAQ,IACpD,EAAK,IAAO,GAAW,EAAK,MAAA,GAAgB,GAAQ,IACpD,EAAK,MAAS,GAAW,EAAK,MAAA,GAAkB,GAAU,IAC1D,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAiB,GAAS,IACvD,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAiB,GAAS,IACvD,EAAK,OAAU,GAAW,EAAK,MAAA,GAAmB,GAAS,IAC3D,EAAK,OAAU,GAAW,EAAK,MAAA,GAAmB,GAAS,IAC3D,EAAK,OAAU,GAAW,EAAK,MAAA,GAAmB,GAAS,IAC3D,EAAK,OAAU,GAAW,EAAK,MAAA,GAAmB,GAAW,IAC7D,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAiB,GAAS,IACvD,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAiB,GAAS,IACvD,EAAK,MAAS,GAAW,EAAK,MAAA,GAAkB,GAAU,IAC1D,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAiB,GAAS,IACvD,EAAK,OAAU,GAAW,EAAK,MAAA,GAAmB,GAAW,IAC7D,EAAK,UAAa,GAAW,EAAK,MAAA,GAAsB,GAAc,IACtE,EAAK,IAAO,GAAW,EAAK,MAAA,GAAgB,GAAQ,IACpD,EAAK,MAAS,GAAW,EAAK,MAAA,GAAkB,GAAU,IAC1D,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAiB,GAAS,IACvD,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAiB,GAAS,IACvD,EAAK,OAAU,GAAW,EAAK,MAAA,GAAmB,GAAW,IAC7D,EAAK,OAAU,GAAW,EAAK,MAAA,GAAmB,GAAW,IAC7D,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAiB,GAAS,IAEvD,EAAK,SAAY,GAAW,EAAK,MAAA,GAAmB,IACpD,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAe,IAC5C,EAAK,KAAQ,GAAW,EAAK,MAAA,GAAe,IAC5C,EAAK,SAAY,GAAW,EAAK,MAAA,GAAmB,MAExD,SAAgBqK,EAAO,EAAQ,CAC3B,OAAA,GAAoBrK,GAAW,GAEnC,MAAa,EAAgC,EAAkB,mBAAoB,EAAM,IAAQ,CAC7F,EAAA,KAA2B,EAAM,GACjC,GAAW,KAAK,EAAM,KAEb,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAE/E,GAAA,KAAoB,EAAM,GAC1B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAM,EAAQ,CAC1B,OAAA,GAAmB,GAAU,GAEjC,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAE7E,GAAA,KAAmB,EAAM,GACzB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAkB,GAAS,GAE/B,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAE7E,GAAA,KAAmB,EAAM,GACzB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAkB,GAAS,GAE/B,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAS,GAGjC,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAS,GAGjC,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAS,GAEjC,MAAa,GAAuB,EAAkB,UAAW,EAAM,IAAQ,CAE3E,GAAA,KAAkB,EAAM,GACxB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAI,EAAQ,CACxB,OAAA,GAAiB,GAAQ,GAE7B,MAAa,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAE/E,GAAA,KAAoB,EAAM,GAC1B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAM,EAAQ,CAC1B,OAAA,GAAmB,GAAU,GAEjC,MAAa,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CAEjF,GAAA,KAAqB,EAAM,GAC3B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAW,GAEnC,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAE7E,GAAA,KAAmB,EAAM,GACzB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAkB,GAAS,GAE/B,MAAa,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAE/E,GAAA,KAAoB,EAAM,GAC1B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAM,EAAQ,CAC1B,OAAA,GAAmB,GAAU,GAEjC,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAE7E,GAAA,KAAmB,EAAM,GACzB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAkB,GAAS,GAE/B,MAAa,GAAuB,EAAkB,UAAW,EAAM,IAAQ,CAE3E,GAAA,KAAkB,EAAM,GACxB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAI,EAAQ,CACxB,OAAA,GAAiB,GAAQ,GAE7B,MAAa,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAE/E,GAAA,KAAoB,EAAM,GAC1B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAM,EAAQ,CAC1B,OAAA,GAAmB,GAAU,GAEjC,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAE7E,GAAA,KAAmB,EAAM,GACzB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAkB,GAAS,GAE/B,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAE7E,GAAA,KAAmB,EAAM,GACzB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAkB,GAAS,GAE/B,MAAa,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAW,GAEnC,MAAa,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAW,GAEnC,MAAa,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CAEjF,GAAA,KAAqB,EAAM,GAC3B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAW,GAEnC,MAAa,GAA6B,EAAkB,gBAAiB,EAAM,IAAQ,CAEvF,GAAA,KAAwB,EAAM,GAC9B,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAU,EAAQ,CAC9B,OAAA,GAAuB,GAAc,GAEzC,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAE7E,GAAA,KAAmB,EAAM,GACzB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAkB,GAAS,GAE/B,MAAa,GAAuB,EAAkB,UAAW,EAAM,IAAQ,CAE3E,GAAA,KAAkB,EAAM,GACxB,EAAgB,KAAK,EAAM,KAE/B,SAAgB,GAAI,EAAQ,CACxB,OAAA,GAAiB,GAAQ,GAE7B,MAAaE,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,EAAQ,KAAK,EAAM,GACnB,EAAK,IAAM,EAAO,IAAW,EAAK,MAAA,GAAgB,EAAO,IACzD,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,EAAiB,EAAO,IAC3D,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,EAAiB,EAAO,IAC3D,EAAK,IAAM,EAAO,IAAW,EAAK,MAAA,GAAgB,EAAO,IACzD,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,GAAiB,EAAO,IAC3D,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,GAAiB,EAAO,IAC3D,EAAK,IAAO,GAAW,EAAK,MAAM,GAAI,IACtC,EAAK,KAAQ,GAAW,EAAK,MAAM,GAAI,IACvC,EAAK,SAAY,GAAW,EAAK,MAAA,GAAgB,EAAG,IACpD,EAAK,YAAe,GAAW,EAAK,MAAA,EAAiB,EAAG,IACxD,EAAK,SAAY,GAAW,EAAK,MAAA,GAAgB,EAAG,IACpD,EAAK,YAAe,GAAW,EAAK,MAAA,GAAiB,EAAG,IACxD,EAAK,YAAc,EAAO,IAAW,EAAK,MAAA,GAAwB,EAAO,IACzE,EAAK,MAAQ,EAAO,IAAW,EAAK,MAAA,GAAwB,EAAO,IAEnE,EAAK,WAAe,EACpB,IAAM,EAAM,EAAK,KAAK,IACtB,EAAK,SACD,KAAK,IAAI,EAAI,SAAW,KAA0B,EAAI,kBAAoB,OAA6B,KAC3G,EAAK,SACD,KAAK,IAAI,EAAI,SAAW,IAA0B,EAAI,kBAAoB,MAA6B,KAC3G,EAAK,OAAS,EAAI,QAAU,IAAI,SAAS,QAAU,OAAO,cAAc,EAAI,YAAc,IAC1F,EAAK,SAAW,GAChB,EAAK,OAAS,EAAI,QAAU,OAEhC,SAAgBC,GAAO,EAAQ,CAC3B,OAAA,GAAoBD,GAAW,GAEnC,MAAa,GAAgC,EAAkB,mBAAoB,EAAM,IAAQ,CAC7F,GAAA,KAA2B,EAAM,GACjC,GAAU,KAAK,EAAM,KAEzB,SAAgB,GAAI,EAAQ,CACxB,OAAA,GAAiB,GAAiB,GAEtC,SAAgB,GAAQ,EAAQ,CAC5B,OAAA,GAAqB,GAAiB,GAE1C,SAAgB,GAAQ,EAAQ,CAC5B,OAAA,GAAqB,GAAiB,GAE1C,SAAgB,GAAM,EAAQ,CAC1B,OAAA,GAAmB,GAAiB,GAExC,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAiB,GAEzC,MAAaE,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAsB,EAAM,GAC5B,EAAQ,KAAK,EAAM,KAEvB,SAAgBC,GAAQ,EAAQ,CAC5B,OAAA,GAAqBD,GAAY,GAErC,MAAaE,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,EAAQ,KAAK,EAAM,GACnB,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,EAAiB,EAAO,IAC3D,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,EAAiB,EAAO,IAC3D,EAAK,IAAM,EAAO,IAAW,EAAK,MAAA,GAAgB,EAAO,IACzD,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,EAAiB,EAAO,IAC3D,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,EAAiB,EAAO,IAC3D,EAAK,IAAM,EAAO,IAAW,EAAK,MAAA,GAAgB,EAAO,IACzD,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,GAAiB,EAAO,IAC3D,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,GAAiB,EAAO,IAC3D,EAAK,SAAY,GAAW,EAAK,MAAA,GAAgB,OAAO,GAAI,IAC5D,EAAK,SAAY,GAAW,EAAK,MAAA,GAAgB,OAAO,GAAI,IAC5D,EAAK,YAAe,GAAW,EAAK,MAAA,GAAiB,OAAO,GAAI,IAChE,EAAK,YAAe,GAAW,EAAK,MAAA,EAAiB,OAAO,GAAI,IAChE,EAAK,YAAc,EAAO,IAAW,EAAK,MAAA,GAAwB,EAAO,IACzE,IAAM,EAAM,EAAK,KAAK,IACtB,EAAK,SAAW,EAAI,SAAW,KAC/B,EAAK,SAAW,EAAI,SAAW,KAC/B,EAAK,OAAS,EAAI,QAAU,OAEhC,SAAgBC,GAAO,EAAQ,CAC3B,OAAA,GAAoBD,GAAW,GAEnC,MAAa,GAAgC,EAAkB,mBAAoB,EAAM,IAAQ,CAC7F,GAAA,KAA2B,EAAM,GACjC,GAAU,KAAK,EAAM,KAGzB,SAAgB,GAAM,EAAQ,CAC1B,OAAA,GAAmB,GAAiB,GAGxC,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoB,GAAiB,GAEzC,MAAaE,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,EAAQ,KAAK,EAAM,KAEvB,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAoBA,GAAW,GAEnC,MAAaC,GAA6B,EAAkB,gBAAiB,EAAM,IAAQ,CACvF,GAAA,KAAwB,EAAM,GAC9B,EAAQ,KAAK,EAAM,KAEvB,SAAS,GAAW,EAAQ,CACxB,OAAA,GAAuBA,GAAc,GAGzC,MAAaC,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,GAAA,KAAmB,EAAM,GACzB,EAAQ,KAAK,EAAM,KAEvB,SAAS,GAAM,EAAQ,CACnB,OAAA,GAAkBA,GAAS,GAG/B,MAAaC,GAAuB,EAAkB,UAAW,EAAM,IAAQ,CAC3E,GAAA,KAAkB,EAAM,GACxB,EAAQ,KAAK,EAAM,KAEvB,SAAgB,IAAM,CAClB,OAAA,GAAiBA,IAErB,MAAaC,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAsB,EAAM,GAC5B,EAAQ,KAAK,EAAM,KAEvB,SAAgB,IAAU,CACtB,OAAA,GAAqBA,IAEzB,MAAaC,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,GAAA,KAAoB,EAAM,GAC1B,EAAQ,KAAK,EAAM,KAEvB,SAAgB,GAAM,EAAQ,CAC1B,OAAA,GAAmBA,GAAU,GAEjC,MAAaC,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,GAAA,KAAmB,EAAM,GACzB,EAAQ,KAAK,EAAM,KAEvB,SAAS,GAAM,EAAQ,CACnB,OAAA,GAAkBA,GAAS,GAG/B,MAAaC,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,GAAA,KAAmB,EAAM,GACzB,EAAQ,KAAK,EAAM,GACnB,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,EAAiB,EAAO,IAC3D,EAAK,KAAO,EAAO,IAAW,EAAK,MAAA,GAAiB,EAAO,IAC3D,IAAM,EAAI,EAAK,KAAK,IACpB,EAAK,QAAU,EAAE,QAAU,IAAI,KAAK,EAAE,SAAW,KACjD,EAAK,QAAU,EAAE,QAAU,IAAI,KAAK,EAAE,SAAW,OAErD,SAAgBC,GAAK,EAAQ,CACzB,OAAA,GAAkBD,GAAS,GAE/B,MAAaE,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,GAAA,KAAoB,EAAM,GAC1B,EAAQ,KAAK,EAAM,GACnB,EAAK,QAAU,EAAI,QACnB,EAAK,KAAO,EAAW,IAAW,EAAK,MAAA,GAAuB,EAAW,IACzE,EAAK,SAAY,GAAW,EAAK,MAAA,GAAuB,EAAG,IAC3D,EAAK,KAAO,EAAW,IAAW,EAAK,MAAA,GAAuB,EAAW,IACzE,EAAK,QAAU,EAAK,IAAW,EAAK,MAAA,GAAoB,EAAK,IAC7D,EAAK,WAAe,EAAK,UAE7B,SAAgB,GAAM,EAAS,EAAQ,CACnC,OAAA,GAAmBA,GAAU,EAAS,GAG1C,SAAgB,GAAM,EAAQ,CAC1B,IAAM,EAAQqL,EAAO,KAAK,IAAI,MAC9B,OAAO,GAAQ,OAAO,KAAK,IAE/B,MAAanL,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,EAAQ,KAAK,EAAM,GACnB,EAAgB,EAAM,YACX,OAAO,YAAY,OAAO,QAAQ,EAAK,KAAK,IAAI,SAE3D,EAAK,UAAc,EAAM,OAAO,KAAK,EAAK,KAAK,IAAI,QACnD,EAAK,SAAY,GAAa,EAAK,MAAM,CAAE,GAAG,EAAK,KAAK,IAAe,aACvE,EAAK,gBAAoB,EAAK,MAAM,CAAE,GAAG,EAAK,KAAK,IAAK,SAAU,OAElE,EAAK,UAAc,EAAK,MAAM,CAAE,GAAG,EAAK,KAAK,IAAK,SAAU,OAC5D,EAAK,WAAe,EAAK,MAAM,CAAE,GAAG,EAAK,KAAK,IAAK,SAAU,OAC7D,EAAK,UAAc,EAAK,MAAM,CAAE,GAAG,EAAK,KAAK,IAAK,SAAU,IAAA,KAC5D,EAAK,OAAU,GACX,GAAmB,EAAM,GAE7B,EAAK,MAAS,GAAA,GAAqB,EAAM,GACzC,EAAK,KAAQ,GAAA,GAAmB,EAAM,GACtC,EAAK,KAAQ,GAAA,GAAmB,EAAM,GACtC,EAAK,SAAW,GAAG,IAAA,GAAsBC,GAAa,EAAM,EAAK,IACjE,EAAK,UAAY,GAAG,IAAA,GAAuB,GAAgB,EAAM,EAAK,MAE1E,SAAgB,EAAO,EAAO,EAAQ,CAClC,IAAM,EAAM,CACR,KAAM,SACN,IAAI,OAAQ,CAER,OADA,GAAgB,KAAM,QAAS,CAAE,GAAG,IAC7B,KAAK,OAEhB,GAAA,EAAwB,IAE5B,OAAO,IAAID,GAAU,GAGzB,SAAgB,GAAa,EAAO,EAAQ,CACxC,OAAO,IAAIA,GAAU,CACjB,KAAM,SACN,IAAI,OAAQ,CAER,OADA,GAAgB,KAAM,QAAS,CAAE,GAAG,IAC7B,KAAK,OAEhB,SAAU,KACV,GAAA,EAAwB,KAIhC,SAAgB,GAAY,EAAO,EAAQ,CACvC,OAAO,IAAIA,GAAU,CACjB,KAAM,SACN,IAAI,OAAQ,CAER,OADA,GAAgB,KAAM,QAAS,CAAE,GAAG,IAC7B,KAAK,OAEhB,SAAU,KACV,GAAA,EAAwB,KAGhC,MAAaE,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,GAAA,KAAoB,EAAM,GAC1B,EAAQ,KAAK,EAAM,GACnB,EAAK,QAAU,EAAI,UAEvB,SAAgB,GAAM,EAAS,EAAQ,CACnC,OAAO,IAAIA,GAAS,CAChB,KAAM,QACG,UACT,GAAA,EAAwB,KAGhC,MAAaC,GAAsC,EAAkB,yBAA0B,EAAM,IAAQ,CACzG,GAAS,KAAK,EAAM,GACpB,GAAA,KAAiC,EAAM,KAE3C,SAAgB,GAAmB,EAAe,EAAS,EAAQ,CAE/D,OAAO,IAAIA,GAAsB,CAC7B,KAAM,QACN,UACA,gBACA,GAAA,EAAwB,KAGhC,MAAaC,GAAgC,EAAkB,mBAAoB,EAAM,IAAQ,CAC7F,GAAA,KAA2B,EAAM,GACjC,EAAQ,KAAK,EAAM,KAEvB,SAAgB,GAAa,EAAM,EAAO,CACtC,OAAO,IAAIA,GAAgB,CACvB,KAAM,eACA,OACC,UAGf,MAAaC,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,GAAA,KAAoB,EAAM,GAC1B,EAAQ,KAAK,EAAM,GACnB,EAAK,KAAQ,GAAS,EAAK,MAAM,CAC7B,GAAG,EAAK,KAAK,IACP,WAGd,SAAgB,GAAM,EAAO,EAAe,EAAS,CACjD,IAAM,EAAU,aAAA,EACV,EAAS,EAAU,EAAU,EAC7B,EAAO,EAAU,EAAgB,KACvC,OAAO,IAAIA,GAAS,CAChB,KAAM,QACC,QACP,OACA,GAAA,EAAwB,KAGhC,MAAaC,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,EAAQ,KAAK,EAAM,GACnB,EAAK,QAAU,EAAI,QACnB,EAAK,UAAY,EAAI,YAEzB,SAAgB,GAAO,EAAS,EAAW,EAAQ,CAC/C,OAAO,IAAIA,GAAU,CACjB,KAAM,SACN,UACW,YACX,GAAA,EAAwB,KAIhC,SAAgB,GAAc,EAAS,EAAW,EAAQ,CACtD,OAAO,IAAIA,GAAU,CACjB,KAAM,SACN,QAAS,GAAM,CAAC,EAAS,OACd,YACX,GAAA,EAAwB,KAGhC,MAAaC,GAAuB,EAAkB,UAAW,EAAM,IAAQ,CAC3E,GAAA,KAAkB,EAAM,GACxB,EAAQ,KAAK,EAAM,GACnB,EAAK,QAAU,EAAI,QACnB,EAAK,UAAY,EAAI,YAEzB,SAAgB,GAAI,EAAS,EAAW,EAAQ,CAC5C,OAAO,IAAIA,GAAO,CACd,KAAM,MACG,UACE,YACX,GAAA,EAAwB,KAGhC,MAAaC,GAAuB,EAAkB,UAAW,EAAM,IAAQ,CAC3E,GAAA,KAAkB,EAAM,GACxB,EAAQ,KAAK,EAAM,GACnB,EAAK,KAAO,GAAG,IAAS,EAAK,MAAA,GAAoB,GAAG,IACpD,EAAK,SAAY,GAAW,EAAK,MAAA,GAAoB,EAAG,IACxD,EAAK,KAAO,GAAG,IAAS,EAAK,MAAA,GAAoB,GAAG,IACpD,EAAK,MAAQ,GAAG,IAAS,EAAK,MAAA,GAAiB,GAAG,MAEtD,SAAgB,GAAI,EAAW,EAAQ,CACnC,OAAO,IAAIA,GAAO,CACd,KAAM,MACK,YACX,GAAA,EAAwB,KAGhC,MAAaC,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,GAAA,KAAmB,EAAM,GACzB,EAAQ,KAAK,EAAM,GACnB,EAAK,KAAO,EAAI,QAChB,EAAK,QAAU,OAAO,OAAO,EAAI,SACjC,IAAM,EAAO,IAAI,IAAI,OAAO,KAAK,EAAI,UACrC,EAAK,SAAW,EAAQ,IAAW,CAC/B,IAAM,EAAa,GACnB,IAAK,IAAM,KAAS,EAChB,GAAI,EAAK,IAAI,GACT,EAAW,GAAS,EAAI,QAAQ,QAGhC,MAAU,MAAM,OAAO,EAAM,qBAErC,OAAO,IAAIA,GAAQ,CACf,GAAG,EACH,OAAQ,GACR,GAAA,EAAwB,GACxB,QAAS,KAGjB,EAAK,SAAW,EAAQ,IAAW,CAC/B,IAAM,EAAa,CAAE,GAAG,EAAI,SAC5B,IAAK,IAAM,KAAS,EAChB,GAAI,EAAK,IAAI,GACT,OAAO,EAAW,QAGlB,MAAU,MAAM,OAAO,EAAM,qBAErC,OAAO,IAAIA,GAAQ,CACf,GAAG,EACH,OAAQ,GACR,GAAA,EAAwB,GACxB,QAAS,OAIrB,SAAS,EAAM,EAAQ,EAAQ,CAC3B,IAAM,EAAU,MAAM,QAAQ,GAAU,OAAO,YAAY,EAAO,IAAK,GAAM,CAAC,EAAG,KAAO,EACxF,OAAO,IAAIA,GAAQ,CACf,KAAM,OACN,UACA,GAAA,EAAwB,KAWhC,SAAgB,GAAW,EAAS,EAAQ,CACxC,OAAO,IAAIA,GAAQ,CACf,KAAM,OACN,UACA,GAAA,EAAwB,KAGhC,MAAaC,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAsB,EAAM,GAC5B,EAAQ,KAAK,EAAM,GACnB,EAAK,OAAS,IAAI,IAAI,EAAI,QAC1B,OAAO,eAAe,EAAM,QAAS,CACjC,KAAM,CACF,GAAI,EAAI,OAAO,OAAS,EACpB,MAAU,MAAM,8EAEpB,OAAO,EAAI,OAAO,QAI9B,SAAgB,GAAQ,EAAO,EAAQ,CACnC,OAAO,IAAIA,GAAW,CAClB,KAAM,UACN,OAAQ,MAAM,QAAQ,GAAS,EAAQ,CAAC,GACxC,GAAA,EAAwB,KAGhC,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,GAAA,KAAmB,EAAM,GACzB,EAAQ,KAAK,EAAM,GACnB,EAAK,KAAO,EAAM,IAAW,EAAK,MAAA,GAAoB,EAAM,IAC5D,EAAK,KAAO,EAAM,IAAW,EAAK,MAAA,GAAoB,EAAM,IAC5D,EAAK,MAAQ,EAAO,IAAW,EAAK,MAAA,GAAiB,MAAM,QAAQ,GAAS,EAAQ,CAAC,GAAQ,MAEjG,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAkB,GAAS,GAE/B,MAAa,GAA6B,EAAkB,gBAAiB,EAAM,IAAQ,CACvF,GAAA,KAAwB,EAAM,GAC9B,EAAQ,KAAK,EAAM,GACnB,EAAK,KAAK,OAAS,EAAS,IAAS,CACjC,EAAQ,SAAY,GAAU,CAC1B,GAAI,OAAOiI,GAAU,SACjB,EAAQ,OAAO,KAAA,GAAgBA,EAAO,EAAQ,MAAO,QAEpD,CAED,IAAM,EAASA,EACX,EAAO,QACP,EAAO,SAAW,IACtB,AAAgB,EAAO,OAAO,SAC9B,AAAiB,EAAO,QAAQ,EAAQ,MACxC,AAAgB,EAAO,OAAO,EAC9B,AAAoB,EAAO,WAAW,GACtC,EAAQ,OAAO,KAAA,GAAgB,MAGvC,IAAM,EAAS,EAAI,UAAU,EAAQ,MAAO,GAQ5C,OAPI,aAAkB,QACX,EAAO,KAAM,IAChB,EAAQ,MAAQ/H,EACT,KAGf,EAAQ,MAAQ,EACT,MAGf,SAAgB,GAAU,EAAI,CAC1B,OAAO,IAAI,GAAa,CACpB,KAAM,YACN,UAAW,IAGnB,MAAaX,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,GAAA,KAAuB,EAAM,GAC7B,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,YAEtC,SAAgB,GAAS,EAAW,CAChC,OAAO,IAAIA,GAAY,CACnB,KAAM,WACK,cAGnB,MAAaY,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,GAAA,KAAuB,EAAM,GAC7B,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,YAEtC,SAAgB,GAAS,EAAW,CAChC,OAAO,IAAIA,GAAY,CACnB,KAAM,WACK,cAInB,SAAgB,GAAQ,EAAW,CAC/B,OAAO,GAAS,GAAS,IAE7B,MAAaC,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAsB,EAAM,GAC5B,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,UAClC,EAAK,cAAgB,EAAK,SAE9B,SAAgB,GAAS,EAAW,EAAc,CAC9C,OAAO,IAAIA,GAAW,CAClB,KAAM,UACK,YACX,IAAI,cAAe,CACf,OAAO,OAAO,GAAiB,WAAa,IAAiB,KAIzE,MAAa,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,GAAA,KAAuB,EAAM,GAC7B,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,YAEtC,SAAgB,GAAS,EAAW,EAAc,CAC9C,OAAO,IAAI,GAAY,CACnB,KAAM,WACK,YACX,IAAI,cAAe,CACf,OAAO,OAAO,GAAiB,WAAa,IAAiB,KAIzE,MAAa,GAA+B,EAAkB,kBAAmB,EAAM,IAAQ,CAC3F,GAAA,KAA0B,EAAM,GAChC,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,YAEtC,SAAgB,GAAY,EAAW,EAAQ,CAC3C,OAAO,IAAI,GAAe,CACtB,KAAM,cACK,YACX,GAAA,EAAwB,KAGhC,MAAa,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAsB,EAAM,GAC5B,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,YAEtC,SAAgB,GAAQ,EAAW,CAC/B,OAAO,IAAI,GAAW,CAClB,KAAM,UACK,cAGnB,MAAaC,GAAyB,EAAkB,YAAa,EAAM,IAAQ,CAC/E,GAAA,KAAoB,EAAM,GAC1B,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,UAClC,EAAK,YAAc,EAAK,SAE5B,SAAS,GAAO,EAAW,EAAY,CACnC,OAAO,IAAIA,GAAS,CAChB,KAAM,QACK,YACX,WAAa,OAAO,GAAe,WAAa,MAAmB,IAI3E,MAAaC,GAAuB,EAAkB,UAAW,EAAM,IAAQ,CAC3E,GAAA,KAAkB,EAAM,GACxB,EAAQ,KAAK,EAAM,KAEvB,SAAgB,GAAI,EAAQ,CACxB,OAAA,GAAiBA,GAAQ,GAE7B,MAAa,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,GAAA,KAAmB,EAAM,GACzB,EAAQ,KAAK,EAAM,GACnB,EAAK,GAAK,EAAI,GACd,EAAK,IAAM,EAAI,MAEnB,SAAgB,GAAK,EAAK,EAAK,CAC3B,OAAO,IAAI,GAAQ,CACf,KAAM,OACN,GAAI,EACC,QAIb,MAAaC,GAA4B,EAAkB,eAAgB,EAAM,IAAQ,CACrF,GAAA,KAAuB,EAAM,GAC7B,EAAQ,KAAK,EAAM,KAEvB,SAAgB,GAAS,EAAW,CAChC,OAAO,IAAIA,GAAY,CACnB,KAAM,WACK,cAGnB,MAAa,GAAmC,EAAkB,sBAAuB,EAAM,IAAQ,CACnG,GAAA,KAA8B,EAAM,GACpC,EAAQ,KAAK,EAAM,KAEvB,SAAgB,GAAgB,EAAO,EAAQ,CAC3C,OAAO,IAAI,GAAmB,CAC1B,KAAM,mBACN,QACA,GAAA,EAAwB,KAGhC,MAAaC,GAAwB,EAAkB,WAAY,EAAM,IAAQ,CAC7E,GAAA,KAAmB,EAAM,GACzB,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,WAEtC,SAAgB,GAAK,EAAQ,CACzB,OAAO,IAAIA,GAAQ,CACf,KAAM,OACE,WAGhB,MAAaC,GAA2B,EAAkB,cAAe,EAAM,IAAQ,CACnF,GAAA,KAAsB,EAAM,GAC5B,EAAQ,KAAK,EAAM,GACnB,EAAK,WAAe,EAAK,KAAK,IAAI,YAEtC,SAAgB,GAAQ,EAAW,CAC/B,OAAO,IAAIA,GAAW,CAClB,KAAM,UACK,cAGnB,MAAa,GAA0B,EAAkB,aAAc,EAAM,IAAQ,CACjF,GAAA,KAAqB,EAAM,GAC3B,EAAQ,KAAK,EAAM,KAGvB,SAAgB,GAAM,EAAI,EAAQ,CAC9B,IAAM,EAAK,IAAA,EAAmB,CAC1B,MAAO,SACP,GAAA,EAAwB,KAG5B,MADA,GAAG,KAAK,MAAQ,EACT,EAEX,SAAgB,GAAO,EAAI,EAAS,CAChC,OAAA,GAAoB,GAAW,QAAa,IAAO,GAEvD,SAAgB,GAAO,EAAI,EAAU,GAAI,CACrC,OAAA,GAAoB,GAAW,EAAI,GAGvC,SAAgB,GAAY,EAAI,EAAQ,CACpC,IAAM,EAAK,GAAO,IACd,EAAQ,SAAY,GAAU,CAC1B,GAAI,OAAOwH,GAAU,SACjB,EAAQ,OAAO,KAAA,GAAgBA,EAAO,EAAQ,MAAO,EAAG,KAAK,UAE5D,CAED,IAAM,EAASA,EACX,EAAO,QACP,EAAO,SAAW,IACtB,AAAgB,EAAO,OAAO,SAC9B,AAAiB,EAAO,QAAQ,EAAQ,MACxC,AAAgB,EAAO,OAAO,EAC9B,AAAoB,EAAO,WAAW,CAAC,EAAG,KAAK,IAAI,MACnD,EAAQ,OAAO,KAAA,GAAgB,MAGhC,EAAG,EAAQ,MAAO,IAC1B,GACH,OAAO,EAEX,SAAS,GAAY,EAAK,EAAS,CAC/B,MAAO,yBAAyB,EAAI,QACrC,CACC,IAAM,EAAO,IAAI,GAAU,CACvB,KAAM,SACN,MAAO,SACP,GAAK,GAAS,aAAgB,EAC9B,MAAO,GACP,GAAA,EAAwB,KAG5B,MADA,GAAK,KAAK,IAAI,MAAQ,EACf,EAIX,MAAa,IAAc,GAAG,IAAA,GAA0B,CACpD,KAAM,GACN,QAAS1J,GACT,OAAQJ,GACR,UAAW,IACZ,GAAG,GACN,SAAgB,GAAK,EAAQ,CACzB,IAAM,EAAa,OACR,GAAM,CAACqK,EAAO,GAASlK,KAAUE,KAAW,KAAS,GAAM,GAAa,GAAOgK,IAAU,MAEpG,OAAO,EAIX,SAAgB,GAAW,EAAI,EAAQ,CACnC,OAAO,GAAK,GAAU,GAAKiC,GCn+B/B,MAAa/J,GAAe,CACxB,aAAc,eACd,QAAS,UACT,UAAW,YACX,eAAgB,iBAChB,gBAAiB,kBACjB,kBAAmB,oBACnB,cAAe,gBACf,YAAa,cACb,gBAAiB,kBACjB,cAAe,gBACf,OAAQ,UAGNC,GAAU,OAAO,OAAO,CAC1B,OAAQ,YAGC,GAAQA,GAGrB,SAAgB,GAAY,EAAK,CAC7B,EAAY,CACR,YAAawG,IAIrB,SAAgBtG,IAAc,CAC1B,OAAA,IAAqB,oGC7BzB,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAA,GAA8C,GAElD,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAA,GAA8C,GAElD,SAAgB,GAAQ,EAAQ,CAC5B,OAAA,GAAA,GAAgD,GAEpD,SAAgB,GAAO,EAAQ,CAC3B,OAAA,GAAA,GAA8C,GAElD,SAAgB,GAAK,EAAQ,CACzB,OAAA,GAAA,GAA0C,+rGCN9C6D,EAAO3D,MCNP,IAAA,GAAe6D,GCDf,EAAe3D,GCAf,MAAMwJ,GAAAA,EACI,CACN,GAAA,KAAgB,QAAQ,IACxB,MAAA,KAAmB,QAAQ,IAC3B,WAAA,KAAwB,QAAQ,IAChC,YAAA,EACQ,CAAC,MAAO,OAAQ,SAAU,UAAW,WAC1C,WACA,MAAM,IAAA,IACT,QAAA,EAAgB,CAAC,UAAW,cAAc,WAAW,MAAM,IAAA,IAC3D,GAAA,EAAW,CAAC,SAAU,YAAY,WAAW,MAAM,WACnD,WAAA,IAAuB,QAAQ,QAAQ,OACvC,SAAA,EAAiB,CAAC,QAAS,YAAY,WACvC,cAAA,EAAsB,CAAC,QAAS,SAAU,SAAS,WACnD,WAAA,EAAmB,CAAC,YAAa,SAAS,aAE3C,cAGH,IAAWtJ,EAAsBsJ,GAAO,MAAM,IAE9C,SAAgB,EAAiB,EAAe,CAC9C,IAAM,EAASA,GAAO,UAAU,GAC5B,EAAO,UACT,EAAQ,CAAE,GAAG,EAAO,GAAG,EAAO,OCxBlC,MAAarJ,OAAgD,CAE3D,IAAM,EAAY,QAAQ,IAAI,sBAc5B,OAZE,EACE,EAAU,WAAW,QAChB,OACE,EAAU,WAAW,QACvB,OACE,EAAU,WAAW,OACvB,MAEA,MAIF,QChBE,EAAS,CACpB,MAAM,GAAG,EAAiB,CACxB,QAAQ,IAAI,EAAM,IAAI,GAAG,KAE3B,KAAK,GAAG,EAAiB,CACvB,QAAQ,IAAI,EAAM,OAAO,GAAG,KAE9B,KAAK,GAAG,EAAiB,CACvB,QAAQ,IAAI,EAAM,KAAK,GAAG,KAE5B,QAAQ,GAAG,EAAiB,CAC1B,QAAQ,IAAI,EAAM,MAAM,GAAG,KAE7B,IAAI,GAAG,EAAiB,CACtB,QAAQ,IAAI,EAAM,IAAI,GAAG,MCLvB,GAAkB,MACtB,EACA,EACA,IAMG,CACH,GAAM,CAAE,eAAc,OAAO,CAAC,WAAY,SAAS,QAAW,EAE1D,QAAQ,IAAI,eAAiB,eAC/B,EAAK,KAAK,oBAGZ,IAAM,EAAU,EACd,EAAQ,gBAAkB,WAAW,EAAW,GAAG,EAAK,KAAK,KAAK,OAClE,QACI,EAAa,EAAM,EAAY,EAAM,CACzC,IAAK,EACL,SACA,OAAQ,SA4CV,OAzCA,MAAM,IAAI,SAAe,EAAK,IAAQ,CACpC,IAAI,EAAe,GACf,EAAe,GAEf,EACF,EAAW,QAAQ,GAAG,OAAQ,EAAa,IAG3C,EAAW,QAAQ,GAAG,OAAS,GAAS,CACtC,GAAgB,EAAK,aAKzB,EAAW,QAAQ,GAAG,OAAS,GAAS,CACtC,GAAgB,EAAK,aAGlB,EAAW,GAAG,QAAU,GAAM,EAAI,IAClC,EAAW,GAAG,QAAU,GAAS,CACpC,GAAI,IAAS,EACX,QACK,CAEL,IAAM,EAAiB,CAAC,EAAc,GACnC,OAAQ,GAAW,EAAO,QAC1B,KAAK;GACL,OAEA,QAAQ,4BAA6B,IACrC,QAAQ,UAAW,IACnB,OAEG,EACJ,GACA,iCAAiC,EAAK,IAAI,EAAW,GAAG,EAAK,KAAK,OACpE,EAAQ,MAAM,SAKb,GAGH,GAAoB,MACxB,EACA,IACwB,CACxB,OAAQ,EAAR,CAEE,IAAK,MAMH,OALA,MAAM,EAAM,EAAY,CAAC,WAAY,CACnC,IAAK,EACL,OAAQ,YAGH,KAET,IAAK,OACH,OAAO,GAAgB,EAAY,EAAY,CAC7C,aAAe,GAAa,GAAS,CACnC,IAAM,EAAO,EAAK,WAEd,EAAK,SAAS,cAChB,EAAQ,KAAO,EAAK,SAAS,KACxB,EAAK,MAAM,OAAO,IAAM,GACzB,MAIZ,IAAK,OACH,OAAO,GAAgB,EAAY,EAAY,CAC7C,aAAe,GAAa,GAAS,CACnC,EAAQ,KAAO,EAAK,cAI1B,IAAK,MACH,OAAO,GAAgB,EAAY,EAAY,CAAE,OAAQ,aAIlD,GAAsB,KAAO,IAAmC,CAC3E,GAAM,CAAE,aAAa,EAAM,YAAe,GAAQ,GAClD,EAAO,KAAK,8BACZ,IAAM,EAAa,KAEb,EAAiB,MAAM,GAAkB,EAAY,IAI1D,GAAkB,KAAO,QACxB,EAAM,MAAM;KCrHH,GAAuB,CAElC,YAAa,OACb,8BAA+B,OAE/B,uBAAwB,SACxB,wBAAyB,SAGzB,OAAQ,UACR,iBAAkB,UAClB,8BAA+B,UAG/B,cAAe,WACf,cAAe,UACf,wBAAyB,SACzB,OAAQ,SACR,wBAAyB,UACzB,SAAU,SACV,iBAAkB,SAGlB,YAAa,UACb,QAAS,UACT,SAAU,SACV,8BAA+B,UAC/B,uBAAwB,UACxB,2BAA4B,SAC5B,KAAM,SACN,iBAAkB,SAClB,iBAAkB,SAGlB,eAAgB,iBAChB,eAAgB,iBAChB,oBAAqB,iBACrB,aAAc,iBACd,UAAW,SACX,cAAe,SAGf,gBAAiB,SACjB,gBAAiB,UAGjB,mBAAoB,IAAI,OAGxB,gBAAiB,IAAI,OAGrB,wBAAyB,UACzB,iCAAkC,UAClC,gCAAiC,UAGjC,kBAAmB,SACnB,iBAAkB,SAClB,iBAAkB,SAClB,mBAAoB,SACpB,YAAa,SACb,mBAAoB,SAGpB,0BAA2B,SAC3B,sBAAuB,QACvB,8BAA+B,SAC/B,cAAe,SACf,cAAe,SACf,OAAQ,SACR,iBAAkB,SAGlB,cAAe,IAAI,OAGnB,uBAAwB,SAGxB,eAAgB,WAGhB,cAAe,SACf,wBAAyB,GAAG,OAC5B,6BAA8B,SAG9B,gBAAiB,UACjB,iBAAkB,UAClB,iBAAkB,UAClB,kBAAmB,UACnB,yBAA0B,UAC1B,sBAAuB,SAGvB,cAAe,SAGf,IAAO,MCnGI,EAAwB,GAI/B,CACJ,GAAM,CAAE,eAAc,UAAS,aAAa,EAAM,YAAe,EAE3D,EAAU,EAAG,aACjB,EAAK,KAAK,EAAY,iBAGxB,EAAa,QAAS,GAAY,CAChC,IAAMsG,EAAU,GAAqB,GAEjC,GAAW,EAAQ,gBACrB,EAAQ,gBAAgB,GAAWA,EAC1B,EAAQ,eACjB,EAAQ,aAAa,GAAWA,KAGpC,IAAM,EAAgB,GAAgB,GAEtC,EAAG,cAAc,EAAK,KAAK,EAAY,gBAAiB,EAAe,CACrE,OAAQ,KCvBCpG,OAA+B,CAC1C,IAAM,EAAc,GAAc,KAAU,sBAEtC,EAAa;iEAC4C,EAAY;;;EAIxE,OACA,OAAO;GAEJ,EAAU,EAAK,KAAK,EAAM,WAAY,QAE5C,EAAG,cAAc,EAAS,EAAY,UAMxC,SAAgB,GAAc,EAA0C,CACtE,IAAM,EAAgB,CACpB,oBACA,iBACA,aACA,aACA,SACA,iBAGF,IAAK,IAAM,KAAY,EAAe,CACpC,IAAM,EAAW,EAAK,KAAK,EAAM,WAAY,GAC7C,GAAI,EAAG,WAAW,GAChB,OAAO,EAIX,GAAI,IAAoB,GACtB,OAAO,KAMT,MAHA,EAAO,KACL,oFAEQ,MAAM,yBC7ClB,eAAsB,GAAyB,EAAkB,CAC/D,EAAQ,WACR,GAAI,CACF,IAAM,EAAQ,EAAQ,iBAEtB,UAAW,IAAMiI,KAAQ,EAAO,CAC9B,IAAM,EAAWA,EAAK,cAChB,EAAW,MAAM,GAAY,GAEnC,GAAI,EAAS,QAAS,SAEtB,IAAM,EAAY,MAAM,GAAOA,EAAK,cAAe,CACjD,SAAU,IAEZ,EAAK,gBAAgB,UAEhBqB,EAAO,CACV,EAAM,QACR,QAAQ,IAAI,0BACZ,QAAQ,MAAMA,WAER,CACR,MAAM,EAAQ,QC1BlB,SAAgB,GACd,EACA,CACA,IAAM,EACJ,GACI,oBAAoB,EAAW,0BAC/B,iBAAmB,GAAiB,gBAO1C,OALI,GAAY,OAAO,EAAW,cAIlC,GAAiB,gBAAgB,YAAY,EAAW,OAH/C,EAOX,SAAgB,GAAc,EAAqB,CACjD,IAAM,EAAU,IAAI,EAAQ,CAC1B,iBAAkB,EAAK,KAAK,GAAc,QAAQ,MAAO,mBAG3D,OAAO,ECRT,eAAsB,GAAS,CAC7B,aAAa,EAAM,WACnB,OACA,qBACA,GAAG,GAMF,CACD,IAAM,EAAgB,KAEhB,EAAU,EAAK,SAAW,GAAc,GACxC,EAAa,EAAQ,oBAAoB,GAE/C,GAAI,CAAC,EAAY,MAAU,MAAM,yBAGjC,IAAM,EAAgB,EACnB,qBAAqB,EAAW,gBAChC,KAAM,GAAa,EAAS,gBAAgB,YAAc,aAE7D,GAAI,CAAC,EACH,MAAU,MACR,8GAKJ,IAAM,EAAO,EAAc,eAAe,GAC1C,GAAI,CAAC,EACH,MAAU,MAAM,8CAGlB,IAAM,EAAiB,EACpB,qBAAqB,EAAW,oBAChC,KAAM,GAAS,EAAK,YAAc,WACjC,yBAAyB,EAAW,yBAElC,EAAiB,EACpB,qBAAqB,EAAW,oBAChC,KAAM,GAAS,EAAK,YAAc,WACjC,yBAAyB,EAAW,yBAElC,EAAqB,EACxB,qBAAqB,EAAW,oBAChC,KAAM,GAAS,EAAK,YAAc,6BACjC,yBAAyB,EAAW,yBAElC,EAAa,EAAK,OAAQ,GAAQ,EAAI,OAAS,UAC/C,EAAa,EAAK,OAAQ,GAAQ,EAAI,OAAS,UAErD,IAAK,IAAM,KAAO,EAChB,GAAgB,sBAAsB,CACpC,KAAM,EAAI,KACV,YAAa,EAAI,WAIrB,IAAK,IAAM,KAAO,EAChB,GAAgB,sBAAsB,CACpC,KAAM,EAAI,KACV,YAAa,EAAI,WAGnB,GAAoB,sBAAsB,CACxC,KAAM,EAAI,KACV,YAAa,eAAe,EAAI,SAIpC,IAAM,EAAa,EAChB,OAAQ,GAAQ,EAAI,iBAAmB,IACvC,IAAK,GAAQ,GAAG,EAAI,KAAK,GAAG,EAAI,cAAgB,MAChD,KAAK;GAEF,GAAa,EAAK,KAAK,EAAY,QAGzC,GAAI,EAAG,WAAW,IAAa,CAC7B,IAAM,EAAc,EAAG,aAAa,GAAY,SAG1C,EAAgB,EAAK,KAAK,EAAY,cAC5C,GAAI,CACF,IAAI,EAAmB,GACnB,EAAG,WAAW,KAChB,EAAmB,EAAG,aAAa,EAAe,UAG/C,EAAiB,SAAS,SAC7B,GAAS,mBAAmB,EAAc,GAAI,CAAE,IAAK,SAEzC,EAIhB,IAAM,EAAa,GAAG,EAAY;EACpC,EAAqB,KAAK,EAAmB,IAAI,IAAe,EAAW;MAGzE,EAAG,cAAc,GAAY,GAO/B,OAJK,EAAK,SACR,MAAM,GAAyB,GAG1B,EC3HT,SAAgB,GACd,EACA,EACA,CACA,EAAe,qBAAqB,CAClC,cAAe,WACf,gBAAiB,IAInB,IAAM,EAAoB,EAAe,qBACtC,GAAQ,EAAI,4BAA8B,iBAE7C,GAAI,CAAC,EACH,EAAe,qBAAqB,CAClC,aAAc,CAAC,CAAE,KAAM,UACvB,gBAAiB,sBAEd,CACL,IAAM,EAAc,EACjB,kBACA,KAAM,GAAQ,EAAI,YAAc,SAE9B,GACH,EAAkB,eAAe,CAAE,KAAM,UAI7C,IAAM,EAAkB,GACtB,EACG,YAAa,GAAQ,EAAI,oBACxB,WACA,yBAAyB,EAAW,kBAGpC,EAAmB,GACrB,yBAAyB,EAAW,qBACpC,gBAAgB,EAAW,cAC3B,yBAAyB,EAAW,aACpC,UAEJ,GAAI,CAAC,EAAkB,CACrB,QAAQ,IACN,wCAAwC,EAAe,iBAEzD,OAGF,GAAiB,gBACf,oBAAoB,EAAiB,2BAEvC,GAAiB,aACjB,EAAe,WC7CjB,MAAa,GAAiB,MAAO,CACnC,gBAGI,CACJ,EAAqB,CACnB,aACA,aAAc,CAAC,gBAAiB,iBAChC,QAAS,KAKX,IAAM,EAAY,EAAK,KAAK,EAAU,mBAEhC,EAAiB,EAAK,KAAK,EAAY,qBAC7C,GAAK,EAAG,WAAW,GAKjB,QAAQ,IACN,EAAM,OACJ,2MAP8B,CAClC,IAAM,EAAgB,EAAK,KAAK,EAAW,2BAC3C,EAAG,SAAS,EAAe,GAW7B,EAAG,SACD,EAAK,KAAK,EAAW,sBACrB,EAAK,KAAK,EAAY,iBAIxB,EAAG,SACD,EAAK,KAAK,EAAW,6BACrB,EAAK,KAAK,EAAY,8BAIxB,IAAM,EAAa,EAAK,KAAK,EAAY,sBACnC,EAAU,GAAc,GAC9B,GAAiB,EAAQ,oBAAoB,IAG7C,GACE,EAAQ,oBACN,EAAK,KAAK,EAAY,kDAExB,qCAEF,GACE,EAAQ,oBACN,EAAK,KACH,EACA,2DAGJ,4CAGF,GACE,EAAQ,4BACN,EAAK,KAAK,EAAY,+BAK1B,MAAM,GAAS,CACb,aACA,UACA,KAAM,CACJ,CACE,KAAM,gCACN,SAAU,aACV,aAAc,eACd,KAAM,UAER,CACE,KAAM,gCACN,SAAU,aACV,aAAc,eACd,KAAM,UAER,CACE,KAAM,mBACN,SAAU;;;UAIV,KAAM,UAER,CACE,KAAM,oCACN,SAAU;;;UAIV,KAAM,WAGV,mBACE,0GAGJ,MAAM,GAAyB,IAGjC,SAAgB,GAAiB,EAAwB,CACvD,EAAW,qBAAqB,CAC9B,aAAc,CAAC,CAAE,KAAM,sBACvB,gBAAiB,2CAInB,IAAM,EAAgB,EAAW,YAAa,GAAQ,EAAI,mBAGpD,EAAkB,GACpB,WACA,yBAAyB,EAAW,kBACpC,qBAAqB,EAAW,mBACjC,KACE,GACC,EAAe,iBAAiB,YAAc,oBAEhD,gBAAgB,EAAW,YAEzB,EAAe,GACjB,iBACD,IAAK,GAAU,EAAM,WACrB,OAAO,SACP,KAAK;GAER,GAAiB,sBAAsB,gBACrC;QACI,EAAa;2BAKrB,SAASlJ,GAAsB,EAAyB,CACtD,GAAI,CAAC,EAAY,CACf,QAAQ,IACN,EAAM,OACJ,oFAGJ,OAGF,EAAW,qBAAqB,CAC9B,aAAc,CAAC,CAAE,KAAM,OAAQ,MAAO,YACtC,gBAAiB,yBAInB,EAAW,cAAe,GACxB,EAAO,UAAU;;;;;;;;ICpKrB,eAAsB,GAAW,CAC/B,aACA,SACA,UAKC,CACD,IAAM,EAAa,GAAQ,CACzB,QAAS,IAAI,GAAY,CACvB,KAAM,CAAE,OAAQ,GAChB,GAAI,EACJ,WAEF,OAAQ,KAGJ,EAAc,MAAM,EAAW,UAE/B,EAAU,GAAoB,EAAY,SAEhD,OAAO,EAGT,SAAS,GAAkB,EAA8C,CAIvE,MAHI,aAAc,GACR,EAAO,mBAAqB,IAAI,QAAQ,IAE3C,CAAC,EAAO,MAGjB,MAAa,GAAgC,CAAC,OAAQ,OAAQ,QAAS,QAEvE,SAAgB,GACd,EACU,CACV,IAAM,EAAW,EAAQ,QAAQ,IAI3B,EAAa,EAAS,MAAM,EAAG,IAAM,CACzC,IAAM,EAAU,GAA8B,KAAM,GAClD,EAAE,WAAW,IAET,EAAU,GAA8B,KAAM,GAClD,EAAE,WAAW,IAWf,OATI,GAAW,EACN,EAAE,cAAc,GAErB,EACK,GAEL,EACK,EAEF,EAAE,cAAc,KAEzB,OAAO,EC1DT,MAAM,GAAA,GACgB,OAAQ,GACjB,CACP,KAAA,GAAgB,aAET,CACP,KAAA,GAAgB,iBAET,CACP,KAAA,GAAgB,YAAY,cAAgB,eAErC,CACP,KAAA,GAAgB,eAET,CACP,KAAA,GAAgB,mBAET,CACP,KAAA,GAAgB,YAGnB,QAAQ,CAAE,KAAM,SAEN,GAAA,EAA0B,CACrC,SAAA,IAAqB,QAAQ,eAC7B,OAAA,IAAmB,QAAQ,aAC3B,OAAA,IAAmB,QAAQ,kBAEhB,GAAA,GAAwC,OAAQ,CAAA,EAClD,CACP,KAAA,GAAgB,MAChB,KAAA,IACA,SAAU,OAEH,CACP,KAAA,GAAgB,YAChB,KAAA,QAKS,GAAW,CAAC,UAAW,aAK9B,GAAA,GAAsC,KAAM,CAAA,EACvC,CACP,GAAA,GAAc,WACd,QAAA,EAAgB,IAAU,QAAQ,WAClC,KAAM,GACN,QAAA,IAAoB,WACpB,YAAA,GAAqB,IAAkB,QAAQ,IAC/C,cAAA,KAA2B,MAAM,IACjC,iBAAA,KAA8B,MAAM,IAEpC,WAAA,KAAwB,MAAM,IAE9B,iBAAA,KAA8B,MAAM,IACpC,gBAAA,GAAA,KAAqC,QAAQ,IAC7C,YAAA,KAAqB,WACrB,kBAAA,GAAA,KAAuC,QAAQ,QAExC,CACP,GAAA,GAAc,UACd,QAAA,EAAgB,IAAU,QAAQ,WAClC,QAAA,IAAoB,WACpB,YAAA,GAAqB,IAAkB,QAAQ,IAC/C,iBAAA,KAA8B,MAAM,IACpC,YAAA,KAAqB,WACrB,kBAAA,GAAA,KAAuC,QAAQ,QAItC,GAAkB,GAAe,MAAM,CAClD,KAAM,CAAE,KAAM,QACd,GAAI,SACJ,QAAS,UACT,YAAa,GACb,iBAAkB,GAClB,kBAAmB,KAGrB,IAAIsJ,GACJ,MAAa,MAAoB,CAC/B,GAAI,GAAU,OAAO,GAErB,IAAM,EAAe,EAAK,KAAK,EAAM,WAAY,iBAGjD,GAAI,CAAC,EAAG,WAAW,GACjB,MAAU,MAAM,wCAAwC,KAG1D,IAAIpJ,EAAwB,EAAG,aAAa,GAG1C,OAAO,GAAiB,UACxB,GACA,EAAE,OAAQ,KAEV,EAAe,CAAE,GAAG,EAAc,GAAI,YAGxC,IAAM,EAAS,GAAe,MAAM,GAGpC,MADA,GAAM,QAAU,EAAO,QAChB,GAKT,SAAgB,GAAc,EAA8B,CAC1D,IAAMqJ,EAAW,IACX,EAAS,CAAE,GAAGA,EAAU,GAAG,GAC3B,EAAY,GAAe,MAAM,GACvC,GAAY,GAGd,SAAgB,GAAY,EAAqB,CAK/C,OAJA,EAAG,cAAc,EAAK,KAAK,EAAM,WAAY,iBAAkB,EAAW,CACxE,OAAQ,IAEV,GAAW,EACJ,GAOT,SAAgB,GAAsB,EAAc,OAAQ,CAC1D,IAAMA,EAAW,IACX,EAAc,EAAK,KAAK,EAAM,WAAY,GAEhD,GAAI,EAAG,WAAW,GAAc,CAC9B,IAAM,EAAkB,CAAE,GAAGA,EAAU,QAAS,GAEhD,OADA,GAAY,GACL,EAIT,GAAIA,EAAS,QAAS,CACpB,GAAM,CAAE,UAAS,GAAG,GAA2BA,EAC/C,GAAY,ICzIhB,MAAa,IAAyB,CACpC,iBAGI,CACJ,IAAM,EAAiB,EAAG,WACxB,EAAK,KAAK,QAAQ,MAAO,kBAEtB,IACH,QAAQ,IACN,EAAM,OACJ,QAAQ,EAAY;eACb,GAAQ,2EAGnB,QAAQ,KAAK,IAGf,GAAI,CACF,OAAO,UACAL,EAAO,CACd,QAAQ,IAAI,EAAM,IAAI,0CAClBA,aAAiB7I,GACnB,QAAQ,IAAI6C,EAAE,cAAcgG,IAE5B,QAAQ,IAAIA,GAGd,QAAQ,KAAK,KAIjB,IAAa,GAAb,cAAsC,KAAM,GAG5C,SAAgB,EACd,EACG,CACH,GAAI,EAAS,GAEX,MADA,IACM,IAAI,GAEZ,OAAO,ECpBT,eAAe,GACb,EAC6C,CAC7C,GAAI,CAAC,EAAG,WAAW,GACjB,OAAO,KAET,GAAI,CACF,IAAM,EAAc,MAAM,EAAG,SAAS,EAAY,QAC5C,EAAS3I,GAAW,GAC1B,OAAO,QACA2I,EAAO,CAMd,OALA,QAAQ,MACN,4CAA4C,EAAW,GACvDA,GAGK,CACL,QAAS,kDACT,OAAQ,KAKd,eAAe,GACb,EACA,EACA,CAEA,GAAI,EAAG,WAAW,GAAa,CAC7B,IAAM,EAAe,MAAM,EAAG,SAAS,EAAY,QAE7C,EAAQ,GAAO,EAAc,CAAC,UAAW,EAAY,OAAQ,CACjE,kBAAmB,CACjB,QAAS,EACT,aAAc,GACd,IAAK;KAGH,EAAe,GAAW,EAAc,GAC9C,MAAM,EAAG,UAAU,EAAY,EAAc,aAG7C,MAAM,EAAG,UAAU,EAAY,EAAa,CAAE,OAAQ,IAI1D,eAAsB,GAAU,CAC9B,aAAa,QAAQ,MACrB,UACA,aAAa,GACb,kBAMC,CACD,IAAM,EAAiB,EAAK,KAAK,EAAY,iCACzC,EAAc,MAAM,GAAmB,GAE3C,AACE,IAAc,CACZ,QAAS,kDACT,OAAQ,IAKZ,IAAI,EAAiB,EAAY,OAE7BzI,EACA,MAAM,QAAQ,GAChB,EAAc,GAEd,EAAc,CAAC,GACf,EAAY,OAAS,GAGvB,IAAMC,EAAuC,EAAQ,IAAK,IAAY,CACpE,WAAYqI,EAAO,WACnB,WAAYA,EAAO,WACnB,WAAYA,EAAO,WACnB,eAAgBA,EAAO,eACvB,cAAeA,EAAO,iBAGpBnI,EAAyD,EAAY,KACtE,GACC,EAAG,MAAM,SAAS,IAClB,EAAG,MAAM,SAAS,EAAiB,MACnC,EAAG,OAAS,GAGX,EAQH,EAAiB,QAAU,EAAiB,SAAW,IAPvD,EAAmB,CACjB,QAAS,GACT,KAAM,wBAAwB,KAGhC,EAAY,KAAK,IAKnB,EAAiB,QAAQ,KAAK,GAAG,GAGjC,MAAM,GAAoB,EAAgB,GAEtC,GACF,MAAM,KAIV,eAAsB,GAAU,CAC9B,OAAA,EACA,aACA,aAAa,IAKZ,CACD,IAAM,EAAiB,EAAK,KAAK,EAAY,iCACzC,EAAc,MAAM,GAAmB,GAErC,EAAe,MAAM,QAAQoC,GAAUA,EAAS,CAACA,GAElD,EAMC,MAAM,QAAQ,EAAY,QAC5B,EAAY,OAAO,KAAK,GAAG,GAE3B,EAAY,OAAS,CAAC,EAAY,OAAQ,GAAG,GAR/C,EAAc,CACZ,QAAS,kDACT,OAAQ,GAUZ,MAAM,GAAoB,EAAgB,GAEtC,GACF,MAAM,KAIV,eAAsB,IAAoB,CACxC,IAAM,EAAa,EAAM,WACnBuG,EAAW,IACjB,GAAIA,EAAS,YAAY,SAAW,EAAG,CACrC,QAAQ,IAAI,2CACZ,OAGF,IAAM,EAA0BA,EAAS,YAAY,KAClD,GAAO,EAAG,OAAS,MAGtB,GAAI,EAAyB,CAC3B,IAAMvG,EAAS,MAAM,GACnB,EAAK,KAAK,EAAY,kCAExB,GAAI,CAACA,EACH,MAAU,MAAM,2CAIlB,GAAa,CAAE,KAAM,EAAK,KAAK,EAAY,UAC3C,MAAM,GAAqBA,EAAO,OAAQ,CAAE,IAAK,KAIrD,SAAgB,GAAgB,CAC9B,aAAa,QAAQ,MACrB,kBAIS,CACT,IAAM,EAAiB,EAAK,KAAK,EAAY,iCAC7C,GAAI,CAAC,EAAG,WAAW,GACjB,MAAO,SAET,GAAI,CACF,IAAM,EAAc,EAAG,aAAa,EAAgB,QAC9C,EAASzC,GAAW,GAEtBK,EAEE,EAAiB,MAAM,QAAQ,EAAO,QACxC,EAAO,OACP,CAAC,EAAO,QAQZ,MANA,GAAmB,EAAe,KAC/B,GACC,EAAG,MAAM,SAAS,IAClB,EAAG,MAAM,SAAS,EAAiB,MACnC,EAAG,OAAS,GAET,GAAkB,cAAgB,eAClCsI,EAAO,CAKd,OAJA,QAAQ,MACN,8DAA8D,IAC9DA,GAEK,UAIX,SAAgB,GAAmB,CACjC,aAAa,QAAQ,MACrB,kBAI6C,CAC7C,IAAM,EAAiB,EAAK,KAAK,EAAY,iCAC7C,GAAI,CAAC,EAAG,WAAW,GACjB,MAAO,GAET,GAAI,CACF,IAAM,EAAc,EAAG,aAAa,EAAgB,QAC9C,EAAS3I,GAAW,GACtBK,EAEE,EAAiB,MAAM,QAAQ,EAAO,QACxC,EAAO,OACP,CAAC,EAAO,QAeZ,MAbA,GAAmB,EAAe,KAC/B,GACC,EAAG,MAAM,SAAS,IAClB,EAAG,MAAM,SAAS,EAAiB,MACnC,EAAG,OAAS,GAGZ,GAAkB,QACb,EAAiB,QAAQ,IAAK,IAAY,CAC/C,OAAQ,EAAO,WACf,WAAY,EAAO,cAGhB,SACAsI,EAAO,CAKd,OAJA,QAAQ,MACN,iEAAiE,IACjEA,GAEK,IAIX,eAAsB,GAAoB,CACxC,iBACA,YAIC,CACD,IAAM,EAAa,EAAM,WACnB,EAAiB,EAAK,KAAK,EAAY,iCACzC,EAAc,MAAM,GAAmB,GAErCnI,EAA0C,CAC9C,QAAS,GACT,KAAM,wBAAwB,IAC9B,cAAe,GACf,aAAc,UAchB,GAXI,IACF,EAAc,SAAW,CACvB,OAAQ,EAAS,OACjB,GAAI,EAAS,SACb,KAAM,CAAE,OAAQ,EAAS,UAGzB,EAAM,UAAY,cACpB,EAAc,oBAAsB,kBAGlC,CAAC,EACH,EAAc,CACZ,QAAS,kDACT,OAAQ,CAAC,QAEN,CACL,IAAIN,EACA,MAAM,QAAQ,EAAY,QAC5B,EAAc,EAAY,QAE1B,EAAc,CAAC,EAAY,QAC3B,EAAY,OAAS,GAGvB,IAAM,EAAkB,EAAY,UACjC,GAAO,EAAG,OAAS,EAAc,MAEhC,IAAoB,GACtB,EAAY,KAAK,GAEjB,EAAY,GAAmB,CAC7B,GAAG,EAAY,GACf,GAAG,EACH,QACE,EAAc,QAAQ,OAAS,EAC3B,EAAc,QACd,EAAY,IAAkB,SAAW,IAIrD,MAAM,GAAoB,EAAgB,GAG5C,SAAgB,GAAuB,CACrC,aACA,kBAIC,CACD,IAAM,EAAa,EAAM,WACnB,EAAU,GAAc,GACxB,EAAiB,EAAK,KAC1B,EACA,sBAAsB,EAAe,aAAa,EAAW,MAGzD,EAA4B,EAAK,KACrC,EACA,sBAAsB,EAAe,GAAG,EAAW,MAGjD,EAAY,EAChB,GAAI,CAAC,EAAG,WAAW,GACjB,GAAI,EAAG,WAAW,GAChB,EAAY,OAEZ,MAAO,GAGX,IAAM,EAAa,EAAQ,oBAAoB,GAEzC,EAAY,EAAW,uBAAuB,IAAI,KACxD,GAAI,EAAW,CACb,IAAM,EAAa,EAChB,kBACC,yBAAyB,EAAW,0BACpC,gBACJ,OACE,GACI,IAAK,GACL,EAAG,OAAO,EAAW,qBAAqB,WAAW,QAAQ,KAAM,KAEpE,OAAO,UAAY,OAEnB,CACL,IAAM,EAAY,EAAW,aAAa,IAAI,KACxC,EAAa,GACf,yBAAyB,EAAW,cACpC,gBACJ,OACE,GACI,IAAK,GACL,EAAG,OAAO,EAAW,oBAAoB,WAAW,QAAQ,KAAM,KAEnE,OAAO,UAAY,IAK5B,eAAsB,GAAyB,CAC7C,kBAGC,CACD,IAAM,EAAa,EAAM,WACnB,EAAiB,EAAK,KAAK,EAAY,iCACzC,EAAc,MAAM,GAAmB,GAE3C,GAAI,CAAC,EACH,OAGF,IAAM,EAAe,wBAAwB,IAE7C,GAAI,MAAM,QAAQ,EAAY,QAC5B,EAAY,OAAS,EAAY,OAAO,OACrC,GAAO,EAAG,OAAS,OAEjB,CACL,IAAM,EAAgB,EAAY,OAC9B,EAAc,OAAS,IACzB,EAAY,OAAS,IAGzB,MAAM,GAAoB,EAAgB,GAG5C,eAAsB,GAAa,CACjC,aAAa,EAAM,WACnB,aACA,iBACA,aAAa,IAMZ,CACD,IAAM,EAAiB,EAAK,KAAK,EAAY,iCACzC,EAAc,MAAM,GAAmB,GAE3C,GAAI,CAAC,EACH,MAAU,MACR,kEAIJ,IAAI,EAAqB,GACnB,EAAe,wBAAwB,IAEzCA,EACA,MAAM,QAAQ,EAAY,QAC5B,EAAc,EAAY,QAE1B,EAAc,CAAC,EAAY,QAC3B,EAAY,OAAS,GAGvB,IAAM,EAAmB,EAAY,KAAM,GAAO,EAAG,OAAS,GAE9D,GAAI,GAAkB,QAAS,CAC7B,IAAM,EAAe,EAAiB,QAAQ,OAC9C,EAAiB,QAAU,EAAiB,QAAQ,OACjD,GAAW,EAAO,aAAe,GAEhC,EAAiB,QAAQ,OAAS,IACpC,EAAqB,IAIrB,GACF,MAAM,GAAoB,EAAgB,GAG5C,IAAM,EAAiB,EAAK,KAC1B,EACA,MACA,SACA,UACA,EACA,GAAG,EAAW,MAEZ,EAAG,WAAW,IAChB,EAAG,WAAW,GAGZ,GAAc,GAChB,MAAM,KCveV,eAAsB,GAAoB,EAA8B,CACtE,IAAM,EAAa,EAAM,WACnB8I,EAAW,IAEjB,GADIA,EAAS,KAAO,UAChBA,EAAS,cAAe,MAAO,GAEnC,EAAqB,CACnB,aACA,aAAc,CAAC,yBACf,QAAS,KAEX,EAAqB,CACnB,aACA,aAAc,CACZ,iCACA,iCAEF,QAAS,KAEX,IAAM,EAAY,EAAK,KAAK,EAAU,WAAY,UAE9C,EAAM,UAAY,WACpB,EAAG,SACD,EAAK,KAAK,EAAW,SAAU,uBAC/B,EAAK,KAAK,EAAY,mCAExB,EAAG,SACD,EAAK,KAAK,EAAW,SAAU,sBAC/B,EAAK,KAAK,EAAY,mCAEf,EAAM,UAAY,aAC3B,EAAG,SACD,EAAK,KAAK,EAAW,SAAU,2BAC/B,EAAK,KAAK,EAAY,kCAK1B,IAAM,EAAU,GAAM,SAAW,GAAc,GACzC,EAAa,EAAQ,oBACzB,EAAK,KACH,EACA,EAAM,UAAY,UAAY,qBAAuB,iBAQzD,GALA,EAAW,qBAAqB,CAC9B,gBAAiB,0BACjB,cAAe,kBAGb,EAAM,UAAY,UAAW,CAC/B,IAAM,EAAgB,EAAW,YAAa,GAC5C,EAAI,mBAEA,EAAc,GAChB,WACA,yBAAyB,EAAW,kBACpC,qBAAqB,EAAW,mBACjC,KACE,GAAmB,EAAe,iBAAiB,YAAc,SAElE,gBAAgB,EAAW,YAEzB,EAAe,GACjB,iBACD,IAAK,GAAU,EAAM,WACrB,OAAO,SACP,KAAK;GAER,GAAa,sBAAsB,gBACjC;QACE,EAAa;+BAGR,EAAM,UAAY,YAAa,CACxC,IAAM,EAAkB,EACrB,qBAAqB,EAAW,YAChC,KACE,GACC,EAAQ,oBAAoB,iBAAiB,YAC7C,mBAGN,GAAiB,gBACf;QACE,EAAgB,UAAU;uBAUhC,OALK,GAAM,SACT,MAAM,GAAyB,GAGjC,GAAY,CAAE,GAAGA,EAAU,cAAe,KACnC,GCjGT,eAAsB,GAAe,CACnC,aAGC,CACD,IAAM,EACJ,IAAc,OAAS,iBAAmB,qBAExCtI,EAA2B,KAqB/B,GApBI,QAAQ,WAAa,QACvB,EAAY,EAAK,KACf,GAAG,UACH,UACA,QACA,YACA,aACA,gBAEO,QAAQ,WAAa,WAC9B,EAAY,EAAK,KACf,GAAG,UACH,UACA,sBACA,YACA,aACA,iBAIA,CAAC,EAAW,CACd,EAAO,KACL,yBAAyB,EAAiB,6CAE5C,OAGF,IAAM,EAAW,IAAc,OAAS,eAAiB,aAEzD,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,qBAAqB,KACzC,EAAK,KAAK,EAAW,GACrB,CAAE,UAAW,KAGf,QAAQ,IAAI,IACZ,QAAQ,IAAI,EAAM,SAAS,uBACvB,IAAc,OAChB,QAAQ,IACN,GAAG,EAAM,aACP,0EACA,GAAG,EAAM,IAAI,uDAGjB,QAAQ,IACN,GAAG,EAAM,aACP,qFACA,GAAG,EAAM,IAAI,mDAGnB,IAAM,EAAQ,CACZ,oDACA,gEAAgE,EAAiB,oBACjF,+CAEF,EAAM,SAAS,EAAM,IAAU,CAC7B,QAAQ,IAAI,GAAG,EAAQ,EAAE,IAAI,OCxDjC,eAAsB,GAAkB,CACtC,GAAG,GAKF,CACD,IAAM,EAAa,EAAM,WAGnBsI,EAAW,IAEjB,GADIA,EAAS,KAAO,UAChBA,EAAS,WAAY,MAAO,GAGhC,EAAG,cAAc,EAAK,KAAK,EAAY,eACvC,EAAqB,CACnB,aAAc,CAAC,0BAA2B,uBAC1C,QAAS,GACT,eAEF,EAAqB,CACnB,aAAc,CAAC,cAAe,+BAC9B,QAAS,GACT,eAIF,IAAM,EAAU,EAAG,aACjB,EAAK,KAAK,EAAY,iBAExB,EAAQ,QAAS,iBAAmB,yCACpC,EAAG,cAAc,EAAK,KAAK,EAAY,gBAAiB,EAAS,CAC/D,OAAQ,IAGV,IAAM,EAAU,EAAK,SAAW,GAAc,GAE9C,GAAI,EAAK,mBAAoB,CAC3B,IAAM,EAAgB,EAAM,cACxB,IAAkB,QACpB,MAAM,GAAa,CAAE,YACZ,IAAkB,SAC3B,MAAM,GAAc,CAAE,YAEtB,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,iDACpB,EAAK,KAAK,EAAY,8BAiC5B,OA3BA,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,8CACpB,EAAK,KAAK,EAAY,2BAEpB,EAAK,oBACP,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,gDACpB,EAAK,KAAK,EAAY,6BAIrB,EAAK,SACR,MAAM,GAAyB,GAIjC,GAAY,CACV,GAAGA,EACH,WAAY,GACZ,iBACE,EAAQ,EAAK,oBAAuBA,EAAS,mBAI5C,EAAK,WACR,MAAM,GAAoB,CAAE,eAEvB,GAGT,eAAsB,GAAa,CAAE,WAAkC,CACrE,IAAM,EAAa,EAAM,WACzB,EAAqB,CACnB,aAAc,CAAC,eACf,QAAS,GACT,eAGF,IAAM,EACJ,OAAO,EAAM,QAAW,SACpB,EAAM,OACN,EAAM,GACJ,GACA,EACE,MAAM,EAAE,KAAK,CACX,QAAS,6BAA6B,EAAM,IAC1C,0EAEF,YAAa,wCAIpB,GACH,EAAO,KACL,0FAIJ,QAAQ,IAAI,IAEZ,MAAM,GAAS,CACb,aACA,UACA,KAAM,CACJ,CACE,KAAM,gBACN,SAAU,+BACV,KAAM,SACN,aAAc,MAKpB,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,mDACpB,EAAK,KAAK,EAAY,iCAGxB,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,kDACpB,EAAK,KAAK,EAAY,8BAI1B,eAAsB,GAAc,CAAE,WAAkC,CACtE,IAAM,EAAa,EAAM,WACzB,EAAqB,CACnB,aAAc,CAAC,UACf,QAAS,GACT,eAGF,IAAM,EACJ,OAAO,EAAM,QAAW,SACpB,EAAM,OACN,EAAM,GACJ,GACA,EACE,MAAM,EAAE,KAAK,CACX,QAAS,8BAA8B,EAAM,IAC3C,4EAEF,YAAa,wCAIpB,GACH,EAAO,KACL,2FAIJ,QAAQ,IAAI,IAEZ,MAAM,GAAS,CACb,aACA,UACA,KAAM,CACJ,CACE,KAAM,iBACN,SAAU,+BACV,KAAM,SACN,aAAc,MAKpB,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,oDACpB,EAAK,KAAK,EAAY,kCAGxB,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,mDACpB,EAAK,KAAK,EAAY,8BCtL1B,MAAa,GAAwB,SAAY,CAC/C,IAAM,EAAU,EAAI,gCAAgC,QAE9C,EAAa,EAAM,WACzB,EAAqB,CACnB,aACA,aAAc,CACZ,kBACA,iBACA,iBACA,mBACA,aAEF,QAAS,KAGX,EAAqB,CACnB,aACA,aAAc,CAAC,oBACf,QAAS,KAIX,MAAM,EAAG,KACP,EAAK,KAAK,EAAU,gCACpB,EAAK,KAAK,EAAY,QAGxB,IAAM,EAAU,GAAc,GAG9B,MAAM,GAAoB,CAAE,YAG5B,GACE,EAAQ,oBACN,EAAK,KAAK,EAAY,kDAExB,+BAYF,GACE,EAAQ,4BACN,EAAK,KAAK,EAAY,+BAI1B,MAAM,GAAU,CACd,OAAQ,CACN,aAAc,SACd,QAAS,CACP,CACE,WAAY,yBACZ,WAAY,WACZ,cAAe,IAEjB,CACE,WAAY,sBACZ,WAAY,QACZ,cAAe,IAEjB,CACE,WAAY,mCACZ,WAAY,oBACZ,cAAe,IAEjB,CACE,WAAY,+BACZ,WAAY,gBACZ,cAAe,KAGnB,cAAe,GACf,UAAW,GACX,KAAM,wBAER,aACA,WAAY,KAId,MAAM,GAAkB,CAAE,UAAS,mBAAoB,KAEvD,GACE,EAAQ,oBACN,EAAK,KAAK,EAAY,+BAI1B,MAAM,GAAyB,GAE/B,IAAI,EAAqB,GACzB,KAAO,CAAC,GAGN,GAFA,EAAqB,MAAM,GAAwB,EAAY,GAE1D,EAaH,EAAQ,KACN,yEAdqB,CACvB,IAAM,EAAiB,EACrB,MAAM,EAAE,QAAQ,CACd,QACE,8DACF,aAAc,GACd,OAAQ,WACR,SAAU,WAId,GAAI,CAAC,EAAgB,MAAM,IAAI,GAMnC,MAAM,KAEN,EAAQ,QAAQ,gCAGlB,SAAS,GAAsB,EAAyB,CACtD,GAAI,CAAC,EAAY,CACf,QAAQ,IACN,EAAM,OACJ,oFAGJ,OAGF,EAAW,qBAAqB,CAC9B,aAAc,CAAC,CAAE,KAAM,sBACvB,gBAAiB,yBAInB,EAAW,cAAe,GACxB,EAAO,UAAU;;;;;;;;IAYrB,SAAS,GAAkB,EAAwB,CACjD,EAAW,qBAAqB,CAC9B,cAAe,UACf,gBAAiB,8BAKnB,IAAM,EAAgB,EAAW,YAAa,GAAQ,EAAI,mBACpD,EAAc,GAChB,WACA,yBAAyB,EAAW,kBACpC,yBAAyB,EAAW,YAExC,GAAa,gBACX;QACI,GAAa,UAAU;iBAK/B,eAAe,GACb,EACA,EACkB,CAClB,IAAMA,EAAW,IAEX,EAAaA,EAAS,YACzB,OAAQ,GAAM,EAAE,OAAS,MACzB,KAAM,GAAM,EAAE,OAAS,aAE1B,GAAI,CAAC,EAAY,MAAO,GACpBA,EAAS,SACX,GAAO,OAAO,CACZ,KAAM,EAAK,KAAK,EAAYA,EAAS,WAGzC,IAAM,EAAa,QAAQ,IAAI,EAAW,SAAS,QAC7C,EAAS,QAAQ,IAAI,EAAW,SAAS,UACzC,EAAS,QAAQ,IAAI,EAAW,SAAS,QAEzC,EAAkB,MAAM,GAAW,CACvC,aACA,SACA,WAEI,EAAsB,CAC1B,yBACA,sBACA,mCACA,gCAGI,EAA8B,EAAoB,MAAO,GAC7D,EAAgB,KAAM,GAAM,IAAM,IAQpC,OALI,EAAoC,IAExC,EAAQ,KAAK,8BACb,MAAM,GAAe,CAAE,UAAW,SAE3B,ICpOT,eAAsB,GAAQ,CAC5B,UACA,YAAY,GACZ,aAAa,QAAQ,OAYpB,CACD,IAAMA,EAAW,IACjB,GAAIA,EAAS,KAAO,SAClB,MAAU,MAAM,+DAElB,GAAIA,EAAS,KAAK,OAAS,OACzB,MAAU,MAAM,0BAEhB,CAACA,EAAS,YAAY,KAAM,GAAM,EAAE,OAAS,OAC7C,EAAQ,OAAS,UAEjB,MAAU,MACR,oEAGF,CAACA,EAAS,YAAY,KAAM,GAAM,EAAE,OAAS,OAC7C,EAAQ,OAAS,cAEjB,MAAU,MACR,8DAIA,EAAQ,OAAS,QACnB,MAAM,GAAa,CAAE,eACZ,EAAQ,OAAS,WAC1B,MAAM,KAIR,MAAM,KAED,GACH,MAAM,GAAoB,CAAE,eAIhC,eAAe,GAAa,CAC1B,aAAa,QAAQ,OAGpB,CACD,MAAM,GAAe,CAAE,eACvB,GAAc,CAAE,KAAM,CAAE,KAAM,WAGhC,eAAe,IAAiB,CAC9B,MAAM,KACN,GAAc,CAAE,KAAM,CAAE,KAAM,aAGhC,eAAe,IAAgC,CAC7C,IAAM,EAAa,EAAM,WACnB,EAAc,MAAM,EAAK,+BAAgC,CAC7D,IAAK,IAGP,IAAK,IAAM1B,KAAQ,EAAa,CAC9B,IAAM,EAAW,EAAK,KAAK,EAAYA,GACjC,EAAU,EAAa,EAAU,SACjC,EAAiB,EAAQ,QAC7B,gBACA,sBAEF,EAAc,EAAU,ICxF5B,MAAa,GAAW,IAAI,EAAO,OAAQ,kBAAkB,QAAQ,IACxD,GAAc,IAAI,EAAO,UAAW,qBAAqB,QACpE,ICSW,GAAmB,GAAoC,CAClE,GAAM,CAAE,YAAa,EACrB,EAAO,KAAK,yBAEZ,IAAK,GAAM,CAAC,EAAM,KAAY,OAAO,QAAQ,GACvC,EAAQ,OAEV,EAAQ,UAAU,GAStB,EAAO,KAAK,KCtBd,eAAsB,IAAkB,CACtC,IAAM,EAAa,EAAM,WACnB,EAAY,EAAK,KAAK,EAAU,mBAChC,EAAoB,EAAK,KAAK,EAAW,iBACzC,EAAqB,EAAK,KAAK,EAAY,iBAEjD,GAAI,CAAC,EAAG,WAAW,GAAoB,OAEvC,IAAM,EAAa,KACnB,MAAM,EAAG,UAAU,GACnB,MAAM,EAAG,KAAK,EAAmB,GAGjC,IAAM,EAAsB,EAAK,KAAK,EAAW,6BAE3C,EAAsB,CAC1B,KAAM,WACN,IAAK,UACL,KAAM,YAGF,EACJ,EAAoB,GAEtB,GAAI,EAAc,CAChB,IAAM,EAAU,EAAK,KAAK,EAAqB,GACzC,EAAW,EAAK,KAAK,EAAoB,uBAE3C,EAAG,WAAW,IAChB,MAAM,EAAG,KAAK,EAAS,EAAU,CAAE,UAAW,MCvBpD,MAAa,GAAkB,MAAO,CACpC,cACA,aACA,eACsB,CACtB,IAAM,EAAa,EAAM,WAEnB,EAAS,EAAK,KAClB,EACA,EAAM,UAAY,UACd,YAAY,EAAM,KAAO,UAAY,iBAAmB,kBACxD,oBAGD,EAGH,EAAO,KAAK,IAFZ,EAAO,KAAK,YAAY,EAAM,KAAK,KAAK,GAAY,KAKtD,IAAM,EAAU,EAAI,mBAAmB,EAAW,QAAQ,QAE1D,GAAI,EAAG,WAAW,GAChB,GAAI,EAAG,YAAY,GAAY,SAAW,EACpC,IAAgB,KAClB,EAAQ,KACN,GAAG,EAAM,KAAK,KAAK,GAAa,4CAE/B,CACL,EAAQ,iBACR,IAAM,EAAe,MAAM,EAAE,OAAO,CAClC,QAAS,GAAG,EAAM,UAAU,KAAK,YAAY,GAAG,EAAM,KAAK,KACzD,GACA,iEACF,QAAS,CACP,CACE,MAAO,mCACP,MAAO,SAET,CACE,MAAO,gDACP,MAAO,SAET,CACE,MAAO,wDACP,MAAO,cAGX,aAAc,UAEZ,IAAiB,UACnB,EAAQ,KAAK,4BACb,QAAQ,KAAK,IAGf,IAAM,EACJ,IAAiB,QACb,sBACA,8BAEA,EAAsB,MAAM,EAAE,QAAQ,CAC1C,QAAS,4BAA4B,EAAgB,GACrD,aAAc,KAGX,IACH,EAAQ,KAAK,4BACb,QAAQ,KAAK,IAGX,IAAiB,UACnB,EAAQ,KACN,YAAY,EAAM,KAAK,KAAK,GAAa,qCAE3C,EAAG,aAAa,IAKtB,EAAQ,QAGR,EAAG,SAAS,EAAQ,GAGpB,KAGA,EAAG,WACD,EAAK,KAAK,EAAY,cACtB,EAAK,KAAK,EAAY,eAGxB,IAAM,EACJ,IAAgB,IAAM,MAAQ,EAAM,KAAK,KAAK,GAEhD,EAAQ,QACN,GAAG,EAAe,GAAG,EAAM,MAAM,4BAA4B,MC3GjE,SAAgB,GACd,EACA,EACA,EACM,CACN,IAAM,EAAQV,EAAG,YAAY,GAE7B,EAAM,QAAS,GAAS,CACtB,IAAM,EAAW,EAAK,KAAK,EAAeU,GAC1C,GAAIV,EAAG,SAAS,GAAU,cACxB,GAAmB,EAAU,EAAQ,OAChC,CACL,IAAM,EAAOA,EAAG,aAAa,EAAU,QACjC,EAAc,EAAK,QAAQ,IAAI,OAAO,EAAQ,KAAM,GAC1D,EAAG,cAAc,EAAU,EAAa,WCG9C,MAAa,GAAoB,MAAO,CACtC,cACA,gBACA,WACA,eAC0B,CAC1B,IAAM,EAAa,KACnB,EAAM,WAAa,EAAK,QAAQ,QAAQ,MAAO,GAG/C,MAAM,GAAgB,CACpB,cACA,aACA,gBACA,cAGF,EAAqB,CACnB,aAAc,CAAC,gBAAiB,eAChC,QAAS,KAKX,IAAM,EAAmB,CACvB,uBACA,uBACA,2BACA,OACA,eACA,iBACA,cACA,iBACA,eAEI,EAAuB,CAC3B,WACA,+BAGI,EAAe,CACnB,gBACA,iBACA,iBACA,kBACA,yBACA,uBAEI,EAAmB,CACvB,UACA,yBACA,uBAGF,GAAI,EAAM,KAAO,UACf,EAAqB,CACnB,aAAc,EACd,QAAS,KAEX,EAAqB,CACnB,aAAc,EACd,QAAS,aAEF,EAAM,KAAO,SACtB,EAAqB,CACnB,aAAc,EACd,QAAS,KAEX,EAAqB,CACnB,aAAc,EACd,QAAS,KAEX,EAAqB,CACnB,aAAc,CAAC,OACf,QAAS,UAGX,MAAU,MAAM,2BAA2B,EAAM,MAwBnD,OApBA,GAAgB,CACd,cACA,gBACA,aACA,WACA,cAGF,GACE,EAAM,WACN,mBACA,IAAe,OACX,OACA,IAAe,MACb,MACA,IAAe,OACb,OACA,WAGH,EAAM,YC/GT,GAAkB,GAAyB,CAC/C,GAAI,CAEF,OADA,GAAS,gBAAiB,CAAE,IAAK,IAC1B,QACI,CACX,MAAO,KAKE,GAAiB,GACrB,EAAG,WAAW,EAAK,KAAK,EAAK,SAIzB,GAAkB,KAAO,IAAkC,CACtE,GAAI,CAMF,OAJA,MAAM,EAAM,MAAO,CAAC,YAAa,yBAA0B,CACzD,IAAK,EACL,OAAQ,WAEH,QACI,CAEX,MAAO,KAIL,OAAsB,CAC1B,IAAM,EAAS,GAAS,iBAAiB,WAAW,OAC9C,EAAgB,EAAO,MAAM,KAAK,GAClC,EAAQ,GAAe,MAAM,KAAK,GAClC,EAAQ,GAAe,MAAM,KAAK,GACxC,MAAO,CAAE,MAAO,OAAO,GAAQ,MAAO,OAAO,KAIzC,OAAyB,CAC7B,IAAM,EAAS,GAAS,uDACrB,WACA,OAEH,OAAO,GAII,GAAgB,KAAO,IAAuB,CAGzD,GAFA,EAAO,KAAK,uBAER,CAAC,GAAe,GAAa,CAC/B,EAAO,KAAK,sDACZ,OAGF,IAAM,EAAU,EAAI;GAAgC,QAE9C,EAAS,GAAc,GACvB,EAAW,MAAM,GAAgB,GACjC,EAAU,EAAK,MAAM,GAAY,KAEvC,GAAI,GAAY,EAAQ,CAEtB,EAAQ,OACR,IAAM,EAAe,MAAM,EAAE,QAAQ,CACnC,QAAS,GAAG,EAAM,UAAU,KAC1B,YACA,kCAAkC,EAAQ,6GAC5C,aAAc,KAGhB,GAAI,CAAC,EAAc,CACjB,EAAQ,KAAK,gCACb,OAGF,EAAG,WAAW,EAAK,KAAK,EAAY,iBAC3B,GAAY,CAAC,EAAQ,CAE9B,EAAQ,OACR,IAAM,EAAyB,MAAM,EAAE,QAAQ,CAC7C,QAAS,GAAG,EAAM,UAAU,KAC1B,YACA,IAAI,EAAQ,4GACd,aAAc,KAEhB,GAAI,CAAC,EAAwB,CAC3B,EAAQ,KAAK,gCACb,QAKJ,GAAI,CACF,IAAM,EAAa,KAGb,CAAE,QAAO,SAAU,KACrB,EAAQ,GAAM,GAAS,GAAK,EAAQ,IACtC,MAAM,EAAM,MAAO,CAAC,QAAS,CAAE,IAAK,IAIpC,MAAM,EAAM,MAAO,CAAC,eAAgB,OAAQ,cAAc,KAAe,CACvE,IAAK,KAGP,MAAM,EAAM,MAAO,CAAC,OAAQ,oBAAoB,KAAe,CAC7D,IAAK,IAGT,MAAM,EAAM,MAAO,CAAC,MAAO,KAAM,CAAE,IAAK,IACxC,MAAM,EAAM,MAAO,CAAC,SAAU,KAAM,kBAAmB,CACrD,IAAK,IAEP,EAAQ,QACN,GAAG,EAAM,MAAM,uCAAuC,GAAG,EAAM,MAAM,KACnE,OACA,UAEU,CAEd,EAAQ,KACN,GAAG,EAAM,KAAK,IACZ,WACA,mEC/HK,IAAgB,CAC3B,cAAc,GACd,eACyD,CACzD,IAAM,EAAa,KAEnB,EAAO,KAAK,EAAM,KAAK,gBACvB,EAAO,IAAI;qCACX,IAAgB,KAAO,EAAO,KAAK,QAAQ,KAC3C,EAAO,IACL,gFAGE,IACF,EAAO,IAAI;wBAEP,IAAe,OACjB,EAAO,KAAK,KAAK,KAEjB,EAAO,KAAK,KAAK,EAAW,YAIhC,EAAO,IAAI;sDACP,CAAC,MAAO,OAAO,SAAS,GAC1B,EAAO,KAAK,KAAK,EAAW,WAE5B,EAAO,KAAK,KAAK,EAAW,OAG9B,EAAO,IACL;kEAEE,CAAC,MAAO,OAAO,SAAS,GAC1B,EAAO,KAAK,KAAK,EAAW,gBAE5B,EAAO,KAAK,KAAK,EAAW,YAE9B,EAAO,IAAI,2CC5CA,IAAkB,EAAoB,IAAwB,CACzE,IAAM,EAAwB,EAC3B,QAAQ,MAAO,IACf,QAAQ,SAAU,OAGrB,GAAmB,EAAY,KAAM,ICEvC,eAAsB,GACpB,EACA,EACA,CACA,IAAM,EAAkB,MAAM,QAAQ,GAAc,EAAa,CAAC,GAC5D,EAAU,CAAC,gBAAiB,MAAO,GAAG,GAG5C,GAAI,CACF,MAAM,EAAM,OAAQ,CAAC,MAAO,GAAG,GAAU,CACvC,MAAO,UACP,IAAK,EAAM,YAAc,QAAQ,cAE5B+B,EAAO,CAEd,MADA,EAAO,MAAM,6BAA6BA,KACpCA,GAIV,SAAgB,IAAyB,CACvC,IAAIxH,EACJ,GAAI,CACF,EAAM,IAAc,aAAe,QAC7B,CAGN,EAAM,GAER,OAAOkG,EAAI,SAAS,KAAOA,EAAI,MAAM,EAAG,IAAMA,EAyChD,SAAgB,IAAkB,CAChC,IAAM,EAAqB,EAAK,KAAK,EAAM,WAAY,mBACjD,EAAiB,KAAK,MAC1BT,EAAG,aAAa,EAAoB,SAEtC,OAAO,ECnFT,MAAa,GAAiB,CAC5B,OAAQ,4BACR,cAAe,CAAE,QAAS,IAC1B,QAAS,CAAC,sBACV,QAAS,CACP,uBACA,qDACA,oDAEF,MAAO,CACL,gCAAiC,MACjC,iDAAkD,MAClD,6CAA8C,CAC5C,OACA,CAAE,OAAQ,eAAgB,SAAU,wBAEtC,oCAAqC,CAAC,OAAQ,CAAE,kBAAmB,OACnE,mCAAoC,MACpC,qCAAsC,OACtC,yCAA0C,CACxC,QACA,CAAE,iBAAkB,CAAE,WAAY,MAEpC,0CAA2C,SCjBlCtF,OAA0C,CAErD,IAAM,EAAuB,CAC3B,gDACA,kBAAkB,KAAK,UAAUC,GAAc,KAAM,KACrD,4BACA,KAAK;GAED,EAAmB,EAAK,KAAK,EAAM,WAAY,iBACrD,EAAG,cAAc,EAAkB,EAAsB,UCkB9C,QAA+C,CAC1D,aAAc,CACZ,MAAO,GACP,UAAW,IAEb,OAAQ,CACN,MAAO,GACP,UAAW,MC7Bf,eAAsB,IAA6C,CACjE,IAAMyH,EAAW,IAEX,EAAaA,EAAS,YACzB,OAAQ,GAAwB,EAAE,OAAS,MAC3C,KAAM,GAAsC,EAAE,OAAS,aAQ1D,GAAI,CAAC,EAAY,MAAO,GACpBA,EAAS,SACX,GAAO,OAAO,CACZ,KAAM,EAAK,KAAK,EAAM,WAAYA,EAAS,WAG/C,IAAM,EAAa,QAAQ,IAAI,EAAW,SAAS,QAC7C,EAAS,QAAQ,IAAI,EAAW,SAAS,UACzC,EAAS,QAAQ,IAAI,EAAW,SAAS,QAEzC,EAAkB,MAAM,GAAW,CACvC,aACA,SACA,WAEI,EAAmB,CAAC,cAEpB,EAA2B,EAAiB,MAAO,GACvD,EAAgB,KAAM,GAAc,IAAM,IAc5C,OAXI,GACF,QAAQ,IACN,EAAM,MACJ,8FAGG,KAGT,MAAM,GAAe,CAAE,UAAW,OAE3B,IAGT,eAAsB,IAAgC,CACpD,IAAI,EAAsB,GAC1B,KAAO,CAAC,GAGN,GAFA,EAAsB,MAAM,KAExB,CAAC,EAAqB,CACxB,IAAM,EAAiB,EACrB,MAAM,EAAE,QAAQ,CACd,QACE,8DACF,aAAc,GACd,OAAQ,WACR,SAAU,WAId,GAAI,CAAC,EAAgB,MAAM,IAAI,IC5ErC,MAAa,GAAuB,IAC9B,EAAM,OAAS,GAAK,EAAM,SAAS,OACrC,EAAQ,EAAM,MAAM,EAAG,KAGlB,GCcI,GAAoB,GAAqB,CACpD,IAAM,EAAQ,GAAoB,GAE5B,EAAQ,EAAM,MAAM,KAEtB,EAAU,EAAM,EAAM,OAAS,GAGnC,GAAI,IAAY,IAAK,CACnB,IAAM,EAAYvH,EAAW,QAAQ,QAAQ,OAC7C,EAAUA,EAAW,SAAS,GAIhC,IAAM,EAAmB,EAAM,UAAW,GAAMG,EAAE,WAAW,MACzD,EAAM,UAAW,GAAMA,EAAE,WAAW,QAAU,KAChD,EAAU,EAAM,MAAM,GAAkB,KAAK,MAG/C,IAAMyD,EAAO,EAAM,OAAQ,GAAM,CAACzD,EAAE,WAAW,MAAM,KAAK,KAE1D,MAAO,CAAC,EAASyD,ICtCb,GACJ,6DAGW,GAAmB,GAAqB,CACnD,IAAM,EAAQ,GAAoB,GAC5B,EAAQ,EAAM,MAAM,KAGpB,EAAmB,EAAM,UAAW,GAAMzD,EAAE,WAAW,MAEzD,EAAU,EAAM,EAAM,OAAS,GACnC,GAAI,EAAM,UAAW,GAAMA,EAAE,WAAW,QAAU,KAChD,EAAU,EAAM,MAAM,GAAkB,KAAK,MAG3C,MAAU,KAAO,GAAiB,KAAK,GAAW,KAGpD,MAAO,6ECTX,eAAsB,GAAgB,CACpC,IAAA,GAG6B,CAE7B,IAAM,EAAO,GAAa,SAAS,CAAE,OAAQ,GAAI,QAAS,iBAEpD,EAAW,IAAI,IAAI,gBAAgB,IAAQyF,EAAI,QAE/C,EAAY,EAAS,WAC3B,EAAM,IAAI,KACR,GAAG,EAAM,KACP,sHACA,MAAM,EAAM,KAAK,MAGhB,GAAK,EAAS,YAEnB,IAAM,EAAevF,EAAM,UAE3B,EAAa,MAAM,kDAEnB,IAAM,EAAO,MAAM,IAAI,QAAyB,GAAY,CAC1D,IAAM,EAAkB,gBAAkB,CACxC,GACG,IACC,GAAGuF,EAAI,OAAO,0BAA0B,IACxC,CACE,QAAS,CACP,kBAAmB,aAIxB,KAAM,GAAW,CAChB,EAAQ,EAAO,KAAK,UACpB,aAAa,GACb,cAAc,GACT,GAAM,OAAO,GAAGA,EAAI,OAAO,0BAA0B,IAAQ,CAChE,QAAS,CACP,kBAAmB,eAIxB,UAAY,KAGd,KAEG,EAAU,eAAiB,CAC/B,cAAc,GACd,EAAa,KACX,gEAED,QAML,OAFA,EAAa,KAAK,mBAEX,EAoBT,eAAsB,GAAU,CAAE,IAAA,EAAK,SAAsC,CAC3E,IAAM,EAAW,MAAM,GAAM,IAC3B,GAAGA,EAAI,OAAO,kCACd,CACE,QAAS,CACP,cAAe,UAAU,OAK/B,OAAO,EAAS,KAAK,SAAS,UAkBhC,eAAsB,GAAY,CAAE,IAAA,EAAK,SAAsC,CAC7E,IAAM,EAAW,MAAM,GAAM,IAC3B,GAAGA,EAAI,OAAO,mBACd,CACE,QAAS,CACP,cAAe,UAAU,OAK/B,OAAO,EAAS,KAAK,SAAS,YAShC,eAAsB,GAAiB,CACrC,IAAA,EACA,SAAA,GAIC,CAKD,IAJA,EAAM,IAAI,KACR,GAAG,EAAM,KAAK,2BAA2B,oCAAoC,EAAM,KAAKtF,GAAU,KAAK,EAAM,IAAI,qEAGtG,CACX,IAAM,EAAW,EACf,MAAMD,EAAM,KAAK,CACf,QAAS,8BAA8B,EAAM,KAAKC,QAIhD,EAAW,EACf,MAAMD,EAAM,SAAS,CACnB,QAAS,0BAA0B,EAAM,KAAK,QAIlD,GAAI,CACF,IAAM,EAAW,MAAM,GAAgC,CACrD,IAAA,EACA,SAAA,EACA,WACA,aAGF,OAAO,QACA6G,EAAO,CACd,GAAI,EAAEA,aAAiB,IACrB,EAAM,IAAI,MACR,GAAG,EAAM,IAAI,gCAAgC,qBAE1C,CACL,IAAM,EACJA,EAAM,UAAU,MAAQ,aAAcA,EAAM,SAAS,KAChDA,EAAM,SAAS,KACb,WAAW,IAAI,KAClB,IAAA,GAEN,EAAM,IAAI,MACR,GAAG,EAAM,IAAI,gCAAgC,GAC3C,GAAW,cAAcA,EAAM,UAAU,SAC1C;EACT,EAAM,IACNA,EAAM,UAAU,SAAW,KACzB;;;;;EAKFtB,EAAI,OAAO,qBACX;WAII,IAAM,EAAW,EACf,MAAMvF,EAAM,QAAQ,CAClB,QAAS,kDACT,OAAQ,iBACR,SAAU,eAGd,GAAI,CAAC,EACH,MAAU,MAAM,oBAMxB,eAAsB,GAAgC,CACpD,IAAA,EACA,SAAA,EACA,WACA,YAMC,CACD,IAAM,EAAW,MAAM,GAAM,KAC3B,GAAGuF,EAAI,OAAO,+BACd,CACE,SAAUtF,EACV,MAAO,iBACP,KAAM,EACN,KAAM,IAIV,MAAO,CAAE,OAAQ,EAAS,KAAK,SAAS,KAG1C,eAAsB,GAAgB,CACpC,UACA,IAAA,EACA,SAKC,CACD,IAAM,EAAA,EAA0B,CAC9B,SAAA,EAAmB,CACjB,QAAA,KACA,QAAA,KACA,iBAAA,GAAA,QAEF,SAAA,GAAA,EAA2B,CAAE,KAAA,KAAkB,KAAA,SAG3C,EAAW,MAAM,GACpB,KAAK,GAAGsF,EAAI,OAAO,sBAAuB,EAAS,CAClD,QAAS,CACP,cAAe,UAAU,OAG5B,MAAO,GAAU,CAEhB,MADA,QAAQ,MAAMsB,EAAM,SAAS,MACvBA,IAGV,OAAO,EAAe,MAAM,EAAS,MAGvC,eAAsB,GAAoB,CACxC,IAAA,EACA,QACA,gBAKC,CACD,IAAMH,EAAAA,EAAkB,CACtB,SAAA,EAAmB,CACjB,GAAA,KACA,OAAA,EAAe,CACb,SACA,UACA,YACA,WACA,UACA,YAEF,QAAA,KACA,WAAA,IACA,WAAA,IACA,WAAA,MAEF,SAAA,GAAA,EAA2B,CAAE,KAAA,KAAkB,KAAA,SAG3C,EAAW,MAAM,GAAM,IAC3B,GAAGnB,EAAI,OAAO,uBAAuB,IACrC,CACE,QAAS,CACP,cAAe,UAAU,OAK/B,OAAOmB,EAAO,MAAM,EAAS,MCnT/B,MAAM,OAAW,GAGjB,SAAS,GAAiB,EAAU,EAAM,EAAO,CAC7C,OAAO,IAAI,MAAM,GAAM,CACnB,IAAK,EAAM,EAAK,CACR,YAAO,GAAQ,UAAY,IAAQ,QAKvC,OAAO,GAAiB,EAAU,CAC9B,GAAGnD,EACH,KAGR,MAAO,EAAI,EAAI,EAAM,CACjB,IAAM,EAAaA,EAAKA,EAAK,OAAS,GAClC,EAAO,CACP,OACA,KAAA,GAgBJ,OAbI,IAAe,OACf,EAAO,CACH,KAAM,EAAK,QAAU,EAAI,CACrB,EAAK,IACL,GACJ,KAAMA,EAAK,MAAM,EAAG,KAEjB,IAAe,UACtB,EAAO,CACH,KAAM,EAAK,QAAU,EAAI,EAAK,GAAK,GACnC,KAAMA,EAAK,MAAM,EAAG,MAGrB,EAAS,MAQxB,MAAM,GAAwB,GAAW,GAAiB,EAAU,ICxCpE,SAAS,GAAsB,EAAM,GAAG,EAAM,CAC9C,IAAM,EAAS,OAAO,OAAO,OAAO,OAAO,MAAO,GAClD,IAAK,IAAM,KAAa,EACpB,IAAI,IAAM,KAAO,EAAU,CACvB,GAAI,KAAO,GAAU,EAAO,KAAS,EAAU,GAC3C,MAAU,MAAM,iBAAiB,KAErC,EAAO,GAAO,EAAU,GAGhC,OAAO,EAKP,SAAS,GAAS,EAAO,CACzB,MAAO,CAAC,CAAC,GAAS,CAAC,MAAM,QAAQ,IAAU,OAAO,GAAU,SAEhE,SAAS,GAAW,EAAI,CACpB,OAAO,OAAO,GAAO,WAKrB,SAAS,GAAc,EAAK,CAC5B,OAAO,OAAO,OAAO,OAAO,OAAO,MAAO,GC3B9C,IAAM,GAAN,cAAgC,KAAM,GAEtC,SAAS,GAAoB,EAAO,CAChC,GAAI,aAAiB,MACjB,OAAO,EAEX,IAAM,EAAO,OAAO,EAChB,SAAS,aAAe,IAAS,YAAc,IAAU,MAI7D,IAAI,IAAS,SACT,OAAW,MAAM,OAAO,IAG5B,GAAI,GAAS,GAAQ,CACjB,IAAM,EAAM,IAAI,GAChB,IAAI,IAAM,KAAO,EACb,EAAI,GAAO,EAAM,GAErB,OAAO,IAIf,SAAS,GAAwB,EAAO,CAIpC,GAHI,aAAiB,IAGjB,aAAiB,OAAS,EAAM,OAAS,YAEzC,OAAO,EAEX,IAAM,EAAY,IAAI,GAAU,CAC5B,KAAM,wBACN,UAMJ,OAHI,aAAiB,OAAS,EAAM,QAChC,EAAU,MAAQ,EAAM,OAErB,EAEX,IAAM,GAAN,cAAwB,KAAM,CAC1B,YAAY,EAAK,CACb,IAAM,EAAQ,GAAoB,EAAK,OACjC,EAAU,EAAK,SAAW,GAAO,SAAW,EAAK,KAGvD,MAAM,EAAS,CACX,UAEJ,KAAK,KAAO,EAAK,KACjB,KAAK,KAAO,YACZ,AAEI,KAAK,QAAQ,IErDrB,SAAS,GAAmB,EAAa,CAIzC,MAHI,UAAW,EACJ,EAEJ,CACH,MAAO,EACP,OAAQ,GAKZ,MAAM,GAAqB,CAC3B,MAAO,CACH,UAAY,GAAM,EAClB,YAAc,GAAM,GAExB,OAAQ,CACJ,UAAY,GAAM,EAClB,YAAc,GAAM,ICtBtB,IAAoB,CAAE,WACjB,ECEY,GAAmB,mBAGtC,SAAS,IAA0B,CACnC,SAAS,EAAsB,EAAa,CACxC,MAAO,CACH,aAAc,EACd,cAAe,EAAuB,CAClC,IAAM,EAAkB,iBAAkB,EAAwB,EAAsB,aAAe,CACnG,GAEJ,OAAO,EAAsB,CACzB,GAAG,EACH,GAAG,MAKnB,SAAS,EAAiB,EAAI,CAC1B,OAAO,EAAsB,CACzB,IAGR,OAAO,EAYP,SAAS,GAAsB,EAAO,CACtC,IAAM,EAAkB,eAAwC,EAAM,CAClE,IAAI,EACE,EAAW,MAAM,EAAK,cAC5B,GAAI,CACA,EAAc,MAAMlD,EAAM,SACrB,EAAO,CACZ,MAAM,IAAI,GAAU,CAChB,KAAM,cACN,UAIR,IAAM,EAAgB,GAAS,EAAK,QAAU,GAAS,GAAe,CAClE,GAAG,EAAK,MACR,GAAG,GACH,EACJ,OAAO,EAAK,KAAK,CACb,MAAO,KAIf,MADA,GAAgB,MAAQ,QACjB,EAIP,SAAS,GAAuB,EAAO,CACvC,IAAM,EAAmB,eAAyC,CAAE,QAAS,CACzE,IAAM,EAAS,MAAM,IACrB,GAAI,CAAC,EAAO,GAER,OAAO,EAEX,GAAI,CACA,IAAM,EAAO,MAAMA,EAAM,EAAO,MAChC,MAAO,CACH,GAAG,EACH,cAEC,EAAO,CACZ,MAAM,IAAI,GAAU,CAChB,QAAS,2BACT,KAAM,wBACN,YAKZ,MADA,GAAiB,MAAQ,SAClB,ECrFX,SAAS,GAAW,EAAiB,CACjC,IAAM,EAAS,EACf,GAAI,OAAO,GAAW,WAGlB,OAAO,EAEX,GAAI,OAAO,EAAO,YAAe,WAE7B,OAAO,EAAO,WAAW,KAAK,GAElC,GAAI,OAAO,EAAO,OAAU,WAGxB,OAAO,EAAO,MAAM,KAAK,GAE7B,GAAI,OAAO,EAAO,cAAiB,WAE/B,OAAO,EAAO,aAAa,KAAK,GAEpC,GAAI,OAAO,EAAO,QAAW,WAEzB,OAAO,EAAO,OAAO,KAAK,GAE9B,GAAI,OAAO,EAAO,QAAW,WAEzB,MAAQ,KACJ,EAAO,OAAO,GACP,GAGf,MAAU,MAAM,iCC3BpB,SAAS,GAAiB,EAAM,EAAM,CAClC,GAAM,CAAE,cAAa,GAAK,SAAS,OAAO,GAAG,GAAS,EAEtD,OAAO,GAAc,CACjB,GAAG,GAAsB,EAAM,GAC/B,OAAQ,CACJ,GAAG,EAAK,OACR,GAAG,GAAU,IAEjB,YAAa,CACT,GAAG,EAAK,YACR,GAAG,GAEP,KAAM,EAAK,MAAQ,EAAO,CACtB,GAAG,EAAK,KACR,GAAG,GACH,GAAQ,EAAK,OAGzB,SAAS,GAAc,EAAU,GAAI,CACjC,IAAM,EAAO,CACT,UAAW,GACX,OAAQ,GACR,YAAa,GACb,GAAG,GAED,EAAU,CACZ,OACA,MAAO,EAAO,CACV,IAAM,EAAS,GAAW,GAC1B,OAAO,GAAiB,EAAM,CAC1B,OAAQ,CACJ,GAEJ,YAAa,CACT,GAAsB,OAIlC,OAAQ,EAAQ,CACZ,IAAM,EAAS,GAAW,GAC1B,OAAO,GAAiB,EAAM,CAC1B,SACA,YAAa,CACT,GAAuB,OAInC,KAAM,EAAM,CACR,OAAO,GAAiB,EAAM,CAC1B,UAGR,IAAK,EAAuB,CAExB,IAAM,EAAc,iBAAkB,EAAwB,EAAsB,aAAe,CAC/F,GAEJ,OAAO,GAAiB,EAAM,CACb,iBAGrB,gBAAiB,EAAS,CACtB,OAAO,GAAiB,EAAMC,EAAQ,OAE1C,MAAO,EAAU,CACb,OAAO,GAAe,CAClB,GAAG,EACH,KAAM,SACP,IAEP,SAAU,EAAU,CAChB,OAAO,GAAe,CAClB,GAAG,EACH,KAAM,YACP,IAEP,aAAc,EAAU,CACpB,OAAO,GAAe,CAClB,GAAG,EACH,KAAM,gBACP,IAEP,oBAAqB,EAAQ,CACzB,OAAO,GAAiB,EAAM,CAC1B,aAIZ,OAAO,EAEX,SAAS,GAAe,EAAQ,EAAU,CACtC,IAAM,EAAe,GAAiB,EAAQ,CAC1C,WACA,YAAa,CACT,eAAiC,EAAM,CACnC,IAAM,EAAO,MAAM,EAAS,GAC5B,MAAO,CACH,OAAQ,GACR,GAAI,GACJ,OACA,IAAK,EAAK,SAKpB,EAAO,CACT,GAAG,EAAa,KAChB,KAAM,EAAO,KACb,oBAAqB,EAAQ,EAAa,KAAK,OAC/C,KAAM,EAAa,KAAK,KACxB,OAAQ,MAEN,EAAS,GAAsB,EAAa,MAC5C,EAAiB,EAAa,KAAK,OACzC,GAAI,CAAC,EACD,OAAO,EAEX,IAAM,EAAgB,MAAO,GAAG,IACrB,MAAM,EAAe,CACxB,OACA,SACM,SAId,MADA,GAAc,KAAO,EACd,EAMX,SAAS,GAAsB,EAAM,CACjC,eAAe,EAAU,EAAM,CAE3B,GAAI,CAAC,GAAQ,EAAE,gBAAiB,GAC5B,MAAU,MAAM;yGAGpB,eAAe,EAAc,EAAW,CACpC,MAAO,EACP,IAAK,EAAK,KACX,CACC,GAAI,CAEA,IAAM,EAAa,EAAK,YAAY,EAAS,OACvC0F,EAAS,MAAM,EAAW,CAC5B,IAAK,EAAS,IACd,KAAM,EAAK,KACX,KAAM,EAAK,KACX,YAAa,EAAS,aAAe,EAAK,YAC1C,KAAM,EAAK,KACX,MAAO,EAAS,MAChB,KAAM,EAAW,CACb,IAAM,EAAW,EACjB,OAAO,EAAc,CACjB,MAAO,EAAS,MAAQ,EACxB,IAAK,GAAY,QAAS,EAAW,CACjC,GAAG,EAAS,IACZ,GAAG,EAAS,KACZ,EAAS,IACb,MAAO,GAAY,UAAW,EAAW,EAAS,MAAQ,EAAS,MACnE,YAAa,GAAY,gBAAiB,EAAW,EAAS,YAAc,EAAS,iBAIjG,OAAOA,QACF,EAAO,CACZ,MAAO,CACH,GAAI,GACJ,MAAO,GAAwB,GAC/B,OAAQ,KAKpB,IAAM,EAAS,MAAM,IACrB,GAAI,CAAC,EACD,MAAM,IAAI,GAAU,CAChB,KAAM,wBACN,QAAS,oEAGjB,GAAI,CAAC,EAAO,GAER,MAAM,EAAO,MAEjB,OAAO,EAAO,KAIlB,MAFA,GAAU,KAAO,EAEV,EClMP,MAAM,GAAkB,OAAO,OAAW,KAAe,SAAU,QACvE,WAAW,SAAS,KAAM,WAAgB,QAAU,CAAC,CAAC,WAAW,SAAS,KAAM,gBAAqB,CAAC,CAAC,WAAW,SAAS,KAAM,iBCGjI,SAAS,GAAS,EAAmB,CACjC,OAAO,EAAkB,MAAQ,WAAY,EAAkB,KAEnE,MAAM,GAAc,CAChB,KAAM,KACN,YAAa,KACb,MAAO,KACP,QAAS,GACT,UAAW,GACX,cAAe,GACf,eAAgB,GAChB,YAAa,IAIP,GAAgB,CAIpB,OAGA,OACF,SAIA,SAAS,GAAoB,EAAQ,CACrC,SAAS,EAAkB,EAAO,CAC9B,IAAM,EAAoB,IAAI,IAAI,OAAO,KAAK,GAAO,OAAQ,GAAI,GAAc,SAAS,KACxF,GAAI,EAAkB,KAAO,EACzB,MAAU,MAAM,6CAA+C,MAAM,KAAK,GAAmB,KAAK,OAEtG,IAAM,EAAa,GAAc,IACjC,SAAS,EAAK,EAAM,EAAO,GAAI,CAC3B,IAAM,EAAY,GAAc,IAChC,IAAK,GAAM,CAAC,EAAK,KAAS,OAAO,QAAQ,GAAQ,IAAI,CACjD,GAAI,GAAS,GAAO,CAChB,EAAU,GAAO,EAAK,EAAK,KAAK,OAAQ,CACpC,GAAGzC,EACH,IAEJ,SAEJ,GAAI,CAAC,GAAY,GAAO,CAEpB,EAAU,GAAO,EAAK,EAAM,CACxB,GAAGA,EACH,IAEJ,SAEJ,IAAM,EAAU,CACZ,GAAGA,EACH,GACF,KAAK,KACP,GAAI,EAAW,GACX,MAAU,MAAM,kBAAkB,KAEtC,EAAW,GAAW,EACtB,EAAU,GAAO,EAErB,OAAO,EAEX,IAAM9C,EAAS,EAAK,GACd,EAAO,CACT,QAASE,EACT,OAAQ,GACR,aACA,GAAG,GACH,OAAA,GAEJ,MAAO,CACH,GAAGF,EACH,OACA,aAAc,KAAsB,CAChC,UAIZ,OAAO,EAEX,SAAS,GAAY,EAAmB,CACpC,OAAO,OAAO,GAAsB,WAqBxC,SAAS,IAAsB,CAC3B,OAAO,SAA2B,EAAQ,CACtC,IAAM,EAAO,EAAO,KACpB,OAAO,SAAsB,EAAe,EAAS,CACjD,OAAO,GAAqB,MAAO,CAAE,KAAA,EAAO,UAAU,CAClD,IAAM,EAAW8C,EAAK,KAAK,KAC3B,GAAIA,EAAK,SAAW,GAAKA,EAAK,KAAO,OACjC,OAAO,EAEX,IAAM,EAAY,EAAK,WAAW,GAC9B,EACJ,GAAI,CAEA,MADA,GAAM,GAAW,GAAiB,MAAM,QAAQ,QAAQ,KAAmB,EACpE,MAAM,EAAU,CACnB,KAAM,EACN,YAAa,SAAU,EAAK,GAC5B,MACA,KAAM,EAAU,KAAK,aAEpB,EAAO,CAQZ,MAPA,GAAS,UAAU,CACf,MACA,MAAO,GAAwB,GAC/B,MAAO,EAAK,GACZ,KAAM,EACN,KAAM,EAAU,KAAK,OAEnB,OAM1B,SAAS,GAAa,GAAG,EAAY,CACjC,IAAM9C,EAAS,GAAsB,GAAI,GAAG,EAAW,IAAK,GAAI,EAAE,KAAK,SACjE,EAAiB,EAAW,QAAQ,EAAuB,IAAa,CAC1E,GAAI,EAAW,KAAK,QAAQ,gBAAkB,EAAW,KAAK,QAAQ,iBAAmB,GAAkB,CACvG,GAAI,IAA0B,IAAoB,IAA0B,EAAW,KAAK,QAAQ,eAChG,MAAU,MAAM,6CAEpB,OAAO,EAAW,KAAK,QAAQ,eAEnC,OAAO,GACR,IACG,EAAc,EAAW,QAAQ,EAAM,IAAU,CACnD,GAAI,EAAQ,KAAK,QAAQ,aAAe,EAAQ,KAAK,QAAQ,cAAgB,GAAoB,CAC7F,GAAI,IAAS,IAAsB,IAAS,EAAQ,KAAK,QAAQ,YAC7D,MAAU,MAAM,yCAEpB,OAAO,EAAQ,KAAK,QAAQ,YAEhC,OAAO,GACR,IACG,EAAS,GAAoB,CAC/B,iBACA,cACA,MAAO,EAAW,MAAO,GAAI,EAAE,KAAK,QAAQ,OAC5C,qBAAsB,EAAW,MAAO,GAAI,EAAE,KAAK,QAAQ,sBAC3D,SAAU,EAAW,MAAO,GAAI,EAAE,KAAK,QAAQ,UAC/C,OAAQ,EAAW,IAAI,KAAK,QAAQ,SACrCA,GACH,OAAO,ECpKX,IAAM,GAAN,MAAM,CAAY,CAIZ,SAAU,CACR,OAAO,IAAI,EAKb,MAAO,CACL,OAAO,IAAI,EAKb,OAAO,EAAM,CACX,IAAME,EAAS,CACX,YAAa,GAAmB,GAAM,aAAe,IACrD,MAAO,GAAM,OACb,WAAW,SAAS,IAAI,WAAgB,aACxC,qBAAsB,GAAM,sBAAwB,GACpD,eAAgB,GAAM,gBAAkB,GACxC,SAAU,GAAM,UAAY,GAI9B,OAAQ,KACN,aAAc,GAAM,cAAgB,IAExC,CAEI,IAAM,EAAW,GAAM,UAAY,GACnC,GAAI,CAAC,GAAY,GAAM,uBAAyB,GAC5C,MAAU,MAAM,oGAGxB,MAAO,CAIL,QAASA,EAIT,UAAW,GAAc,CACnB,KAAM,GAAM,cAKlB,WAAY,KAIZ,OAAQ,GAAoBA,GAI5B,gBAIA,oBAAqB,QAOV,IAAI,GCvEzB,eAAsB,GAAoB,CACxC,IAAA,EACA,WAAW,MAIV,CACD,IAAM,EAAU,MAAM,GAAoB4E,GACpC,EAAW,MAAM,GAAiB,CAAE,IAAA,EAAK,aAC/C,MAAO,CAAE,UAAS,YAGpB,MAAM,GAAgB1E,EAAE,OAAO,CAC7B,KAAMA,EAAE,OAAO,CACb,WAAYA,EAAE,SAAS,WACvB,kBAAmBA,EAAE,UAAU,WAC/B,gBAAiBA,EAAE,UAAU,WAC7B,kBAAmBA,EAAE,UAAU,WAC/B,eAAgBA,EAAE,SAAS,WAC3B,0BAA2BA,EAAE,UAAU,WACvC,kBAAmBA,EAAE,UAAU,WAC/B,sBAAuBA,EAAE,SAAS,WAClC,SAAUA,EAAE,SAAS,WACrB,gBAAiBA,EAAE,UAAU,WAC7B,MAAOA,EAAE,UAAU,WACnB,aAAcA,EAAE,SAAS,WACzB,eAAgBA,EAAE,SAAS,WAC3B,UAAWA,EAAE,SAAS,WACtB,oBAAqBA,EAAE,UAAU,WACjC,SAAUA,EAAE,SAAS,WACrB,cAAeA,EAAE,WAEnB,OAAQA,EAAE,WAGZ,eAAsB,GAAoB,EAAa,CACrD,IAAM,EAAS,IAAI,IAAI0E,GACvB,EAAO,SAAW,mBAElB,IAAM,EAAgB,MAAM,GAAgB,EAAO,YAAY,KAAM,GACnE,GAAc,UAAU,EAAE,OAE5B,GAAI,CAAC,EAAc,QAEjB,MADA,QAAQ,MAAM,sBAAuB,EAAc,MAAM,QACnD,IAAI,GAAU,CAClB,KAAM,cACN,QAAS,iCAGb,OAAO,EAAc,KAAK,KAG5B,MAAM,GAAiB1E,EAAE,OAAO,CAC9B,KAAMA,EAAE,OAAO,CACb,QAASA,EAAE,SACX,eAAgBA,EAAE,SAAS,QAAQ,IACnC,eAAgBA,EAAE,UAAU,aAE9B,gBAAiBA,EAAE,SAAS,WAC5B,gBAAiBA,EAAE,OAAO,CACxB,QAASA,EAAE,OAAO,CAChB,KAAMA,EAAE,SACR,MAAOA,EAAE,WAEX,QAASA,EAAE,UAAU,aAEvB,MAAOA,EAAE,UAAU,WACnB,SAAUA,EAAE,SAAS,WACrB,KAAMA,EAAE,SAAS,aAGb,GAAyBA,EAAE,OAAO,CACtC,SAAU,KAGZ,eAAsB,GAAiB,CACrC,IAAA,EACA,WAAW,MAIsC,CACjD,IAAI,EAAW,MAAM,GAAkB0E,GAEvC,MADA,CAAe,IAAW,MAAM,GAAkBA,EAAK,GAChD,EAGT,eAAe,GAAkB,EAAa,CAC5C,GAAI,CACF,IAAM,EAAW,IAAI,IAAIA,GACzB,EAAS,SAAW,iBACpB,IAAM,EAAY,MAAM,GAAgB,EAAS,YAAY,KAAM,GAC1D,GAAuB,MAAM,EAAE,MAAM,UAE9C,OAAO,OACO,CAEd,OADA,QAAQ,IAAI,4CACL,MAIX,eAAe,GAAkB,EAAa,EAAyB,CACrE,GAAI,CACF,IAAM,EAAW,IAAI,IAAIA,GACzB,EAAS,KAAO,EAAW,EAAS,WAAa,OACjD,EAAS,SAAW,iBACpB,IAAM,EAAW,MAAM,GAAgB,EAAS,YAAY,KAAM,GACzD,GAAe,MAAM,EAAI,OAElC,OAAO,QACAsB,EAAO,CAId,OAHIA,aAAiB,OACnB,QAAQ,MAAM,oBAAqBA,EAAM,SAEpC,MAIX,eAAe,GAAgB,EAAa,CAC1C,IAAM,EAAQ,IAAI,GAAM,MAAM,CAC5B,mBAAoB,KAGhB,EAAS,MAAM,GAAM,IAAItB,EAAK,CAClC,eAAgB,KAChB,QAAS,CAAE,WAAY,SACvB,WAAY,EACZ,QAAS,MAGX,OAAO,ECzHT,MAAa,GAAqB,KAAO,IAOnC,CACJ,IAAM2B,EAAW,IACX,EAAa,EAAM,WACrB,EAAa,GAAM,WACvB,GAAK,EAgBH,EAAa,GAAM,mBAdfA,EAAS,YAAY,OAAQ,GAAM,EAAE,OAAS,MAAM,OAAS,EAAG,CAClE,IAAM,EAAiB,MAAM,EAAE,OAAO,CACpC,QAAS,8DACT,QAASA,EAAS,YACf,OAAQ,GAAM,EAAE,OAAS,MACzB,IAAK,IAAO,CAAE,MAAO,EAAE,KAAM,MAAO,EAAE,UAEvC,EAAE,SAAS,KACb,EAAE,SACF,QAAQ,KAAK,IAEf,EAAA,IAAwB,MAAM,GAMlC,AAAiB,IAAa,YAE9B,IAAM,EAAaA,EAAS,YACzB,OAAQ,GAAM,EAAE,OAAS,MACzB,KAAM,GAAM,EAAE,OAAS,GAC1B,GAAI,CAAC,EACH,MAAU,MACR,yBAAyB,EAAW,qCAGxC,IAAM,EAAU,EAAE,UAClB,EAAQ,MAAM,+CACVA,EAAS,SACX,GAAO,OAAO,CACZ,KAAM,EAAK,KAAK,EAAYA,EAAS,WAIzC,IAAM,EAAa,QAAQ,IAAI,EAAW,SAAS,QAC7C,EAAS,QAAQ,IAAI,EAAW,SAAS,UACzC,EAAS,QAAQ,IAAI,EAAW,SAAS,QAEzC,EAAU,MAAM,GAAW,CAC/B,aACA,SACA,WAGI,EAAwB,GAAmB,CAC/C,aACA,eAAgB,IAGZ,EAAkB,EACrB,IAAK,GAAM,EAAE,QACb,OAAO,SAEJ,EAAkB,EACrB,IAAK,GAAM,EAAE,YACb,OAAO,SAEV,EAAQ,KAAK,2CAET,EAAgB,OAAS,GAC3B,EAAE,KACA,EAAgB,KAAK;GACrB,6CAKJ,EAAgB,KAAK,KAErB,IAAIlG,EAAyC,GAAM,YAEjD,IAAuB,IACvB,CAAC,EAAQ,SAAS,GAAsB,OAExC,EAAqB,IAAA,IAGvB,IAAM,GACJ,GACA,EACE,MAAM,EAAE,OAAO,CACb,QAAS,wCACT,SAAU,GACV,QAAS,EACN,OAAQ,GAAW,CAAC,EAAgB,SAAS,IAC7C,IAAK,IAAY,CAChB,MAAO,EACP,MAAO,QAKX,EAAoB,GAAqB,IACzC,GACJ,GAAM,YACN,EACE,MAAM,EAAE,KAAK,CACX,QAAS,8CAA8C,EAAM,IAAI,2EAEjE,aAAc,EACd,YAAa,EACb,SAAW,GAAU,CACf,OAAU,GAEd,IAAI,CAAC,6BAA6B,KAAK,GACrC,MAAO,2FAET,GAAI,EAAgB,SAAS,GAC3B,MAAO,kCAKb,WAGE,GACJ,GAAM,YACJ,MAAM,EAAE,OAAO,CACf,QAAS,8CAA8C,EAAM,IAC3D,wIAEF,QAAS,CACP,CACE,MAAO,8BACP,MAAO,aACP,KAAM,+FAER,CACE,MAAO,2CACP,MAAO,SACP,KAAM,wFAER,CACE,MAAO,yBACP,MAAO,SACP,KAAM,2CAKR,GAAA,EACE,CAAC,SAAU,aAAc,WAC9B,MAAM,UACN,MAAM,IAET,MAAM,GAAU,CACd,WAAY,GACZ,aACA,eAAgB,EAChB,QAAS,CACP,CACE,WAAY,GACZ,cACA,WAAY,OAKlB,EAAE,MACA,WAAW,GAAe,8BAA8B,GAAW,KAI1D,OAA6B,CACxC,IAAM,EAAmB,IAAI,EAAQ,UAClC,MAAM,UACN,YAAY,0CACZ,OAAO,KAAO,IAAiC,CAC9C,IAAMkG,EAAW,EAAK,SAEtB,MAAM,GAAmB,CAAE,SAAA,MAG/B,OAAO,GAGT,SAAS,GAAqB,EAAgB,CAC5C,IAAI,EAAa,EAAO,QAAQ,SAAU,KAC1C,IAAK,IAAM,KAAU,GACf,EAAW,WAAW,KACxB,EAAa,EAAW,QAAQ,EAAQ,KAG5C,OAAO,EC7MT,MAAa,GAAW,qBAExB,eAAsB,GAAe,CACnC,IAAA,EACA,QACA,aAK8B,CAC9B,IAAM,EAAiB,CACrB,UAAW,GACX,MAAO,wBACP,YAAa,CACX,CACE,KAAM,wBACN,OAAQ,CACN,KAAM,MACN,IAAK,oDAEP,eAAgB,CACd,CACE,OAAQ,CACN,SAAU,IAEZ,YACA,OAAQ,CACN,SAAU,sBAEZ,SAAU,CACR,OAAQ,UACR,UAAW,MAIjB,YAAa,EACb,QAAS,CACP,qBAAsB,GACtB,6BAA8B,GAC9B,sBAAuB,MAI7B,eAAgB,IAGZ,EAAU,EAAE,UAClB,EAAQ,MAAM,mCAEd,GAAM,CACJ,SAAU,CAAE,qBACV,MAAM,GAAgB,CACxB,QAAS,EACT,IAAA,EACA,UAGI,EAAe,EAAiB,GAEtC,OAAa,CAEX,MAAM,IAAI,QAAS,GAAY,WAAW,EAAS,OAEnD,GAAM,CACJ,SAAU,CAAE,SAAQ,YAClB,MAAM,GAAoB,CAC5B,IAAA,EACA,QACA,iBAEF,GAAI,CAAC,EAAS,CACZ,GAAI,IAAW,WAAY,MAAU,MAAM,8BAC3C,OAIJ,GAAM,CAAE,UAAW,MAAM,GAAgC,CACvD,YACA,SAAU,QACV,SAAU,QACV,IAAA,IAKF,OAFA,EAAQ,OAED,CAAE,UCpEX,eAAsB,GAA6B,CACjD,aACA,GAAG,GAUF,CACD,IAAMA,EAAW,IAEX,EAA4BA,EAAS,YACxC,OAAQ,GAAO,EAAG,OAAS,MAC3B,IAAK,GAAO,EAAG,MAEZ,EAAS,MAAM,GAA2B,EAAK,QAE/C,EACJ,EAAO,aAAe,EAAO,YAAY,QAAQ,IAAI,GAAO,UAAY,EAE1E,GAAI,CAAC,GAAqB,CAAC,EAAK,YAC9B,OAAO,EAAE,OACP,sLAIJ,IAAM,EACJ,EAAK,cAAgB,MAAM,GAAgB,CAAE,IAAK,EAAO,OAAQ,MAE7D,EAAW,MAAM,GAAU,CAAE,IAAK,EAAO,IAAK,UAC9C,EAAiB,EACpB,IAAK,GAAM,EAAE,SAAS,QAAQ,SAAU,KACxC,SAAS,GAAS,QAAQ,SAAU,KACnC,EAAS,EAAK,SAClB,MACE,EACE,EAAK,UACL,EACE,MAAM,EAAE,OAAO,CACb,QAAS,4CAA4C,EAAM,IAAI,sDAC/D,SAAU,GACV,QAAS,CACP,CACE,MAAO,kBACP,MAAO,gCACP,KAAM,gDAER,GAAG,EACA,MAAM,EAAG,IAAM,EAAE,SAAS,cAAc,EAAE,WAC1C,IAAK,IAAU,CACd,MAAO1B,EAAK,SACZ,MAAOA,EAAK,gBAMpB,IAAW,oBAEX,GAAgB,CAClB,IAAM,EAAU,EACd,MAAM,EAAE,QAAQ,CACd,QACE,6EACF,OAAQ,eACR,SAAU,0BACV,aAAc,MAGlB,GAAI,EAAS,MAMjB,GAAI,CAAC,EAAQ,MAAU,MAAM,oBAE7B,IAAI,EAAa,EAAK,WACtB,GAAI,IAAW,kBAAmB,CAChC,GAAM,CAAE,UAAW,MAAM,GAAe,CACtC,IAAK,EAAO,IACZ,QACA,UAAW,EAAiB,UAAY,YAE1C,EAAa,EACb,EAAS,GACT,EAAK,WAAa,EAAK,YAAc,eACrC,EAAK,WAAa,EAAK,YAAc,eAChC,CACL,IAAM,EAAa,MAAM,GAAY,CAAE,IAAK,EAAO,IAAK,UAClD,EAAkB,EAAW,OAAQ,GAAQ,EAAI,WAAa,GAEpE,GAAI,CAAC,GAAc,EAAgB,OAAS,EAAG,CAC7C,IAAM,EAAc,EAClB,MAAM,EAAE,OAAO,CACb,QAAS,qDAAqD,EAAM,IAAI,4EACxE,QAAS,CACP,GAAG,EAAgB,IAAK,IAAS,CAC/B,MAAO,EAAI,IACX,MAAO,GAAG,EAAM,KAAK,EAAI,OAAO,KAAK,EAAI,OACzC,KAAM,GAAG,EAAI,IAAI,MAAM,EAAG,GAAG,KAAK,EAAI,IAAI,MAAM,SAElD,CACE,MAAO,SACP,MAAO,uBACP,KAAM,oDAKd,GAAI,OAAO,GAAgB,SAAU,MAAU,MAAM,eACjD,IAAgB,WAAU,EAAa,GAG7C,GAAI,CAAC,EAAY,CAEf,IAAM,EAAO,MAAM,GAAiB,CAClC,SAAU,EACV,IAAK,EAAO,MAEd,EAAa,EAAK,QAGtB,GAAI,CAAC,EAAY,MAAU,MAAM,cAEjC,IAAM,EACJ,EAA0B,SAAW,EACjC,YACC,EAAK,MACN,EACE,MAAM,EAAE,KAAK,CACX,QAAS,6CACT,SAAW,GACL,IAAU,YAAoB,wBAG9B,GAA2B,SAAS,GAC/B,qEAGF,GAAgB,MAK7BrE,EAAkD,CACtD,KAAM,KACN,OACA,SACE,IAAS,YACL,CACE,SAAU,cACV,OAAQ,YACR,OAAQ,gBAEV,CACE,SAAU,GAAG,EAAK,cAAc,cAChC,OAAQ,GAAG,EAAK,cAAc,YAC9B,OAAQ,GAAG,EAAK,cAAc,iBAIlC,EAAU,GAAc,GAExB,EAAa,MAAM,GAAS,CAChC,aACA,UACA,KAAM,CACJ,CACE,KAAM,EAAc,SAAS,SAC7B,SAAU,gCACV,aAAc,EACd,KAAM,UAER,CACE,KAAM,EAAc,SAAS,OAC7B,SAAU,mBACV,KAAM,SACN,aAAc,EAAO,IAAI,QAE3B,CACE,KAAM,EAAc,SAAS,OAC7B,SAAU,wDACV,KAAM,SACN,aAAc,MAKd,GAAe,EAAW,qBAC7B,GAAQ,EAAI,4BAA8B,oBAEzC,IACF,GACG,kBACA,KAAM,GAAQ,EAAI,YAAc,eAC/B,SACJ,GAAa,eAAe,CAAE,KAAM,aAAc,WAAY,MAE9D,EAAW,qBAAqB,CAC9B,aAAc,CAAC,CAAE,KAAM,aAAc,WAAY,KACjD,gBAAiB,qBAIrB,EAAqB,CACnB,aACA,aAAc,CAAC,oBACf,QAAS,KAGX,EAAS,YAAY,KAAK,GAC1B,GAAY+F,GAEZ,GAAoB,CAClB,eAAgB,EAChB,SAAU,IAAS,YAAc,IAAA,GAAY,EAAc,WAG7D,MAAM,GAAyB,GAG/B,MAAM,GAAmB,CACvB,SAAA,EACA,WAAY,EACZ,aACA,WAAY,EAAK,WACjB,WAAY,EAAK,WACjB,WAAY,eAIhB,eAAe,GACb,EAKC,CACD,IAAM,EAAU,EAAE,UACd9F,EAAkB,KAClBC,EAA4B,KAC5BC,EAA6B,KAEjC,KAAO,IAAe,MAAM,CAC1B,IAAM,EACJ,GACA,EACE,MAAM,EAAE,KAAK,CACX,QAAS,8CAA8C,EAAM,KAAK,uEAClE,SAAW,GAAU,CACnB,GAAI,CAEG,EAAM,WAAW,cACpB,AAGE,EAHE,EAAM,WAAW,WACX,EAAM,QAAQ,UAAW,YAEzB,WAAW,KAKvB,IAAI,IAAI,GACR,YACM,CACN,MAAO,gCAMjB,GAAI,CACF,EAAM,IAAI,IAAI,QACR,CACN,EAAE,IAAI,MAAM,gBAAgB,EAAU,cACtC,SAGF,EAAQ,MAAM,4BAGd,GAAM,CAAE,UAAS,YAAa,MAAM,GAAoB,CACtD,IAAKiE,EAAI,SAGX,EAAQ,OAER,EAAa,IAAI,GAAO,EAAQ,cAAc,MAAM,KAAK,KAAQ,KACjE,EAAc,IAAI,GAAO,GAAU,KAAK,SAAW,KAAO,KAC1D,EAAmB,IAAA,GAGrB,GAAIA,IAAQ,KAAM,MAAU,MAAM,sCAKlC,OAHA,EAAE,KAAK,+BAA+B,EAAW;MAC3C,EAAc,sBAAsB,EAAY,WAAa,4BAE5D,CAAE,IAAA,EAAK,cAAa,cCxQ7B,MAAM/D,GAA2B,CAC/B,MAAO,GACP,UAAW,GACX,QAAS,GACT,GAAI,GACJ,SAAU,GACV,KAAM,GACN,OAAQ,GACR,QAAS,GACT,YAAa,KACb,UAAW,GACX,KAAM,OACN,OAAQ,IAAA,GACR,SAAU,GACV,WAAY,GACZ,WAAY,GACZ,WAAY,GACZ,YAAa,GACb,WAAY,IAAA,GACZ,GAAI,UAGO,OAAwB,CACnC,IAAM,EAAc,IAAI,EAAQ,QAC7B,YAAY,sCACZ,SACC,QACA,+EAED,OAAO,mBAAoB,4BAA6B,IAAA,IAExD,OAAO,YAAa,IAAA,GAAW,IAAA,IAC/B,OAAO,iBAAkB,mCAAoC,IAAA,IAC7D,OACC,sBACA,iEACA,IAAA,IAED,OACC,oBACA,wDACA,IAAA,IAED,OACC,sBACA,0DACA,IAAA,IAED,OACC,sBACA,2DACA,IAAA,IAED,OACC,qBACA,gDACA,IAAA,IAED,OACC,gBACA,qDACA,IAAA,IAED,OACC,sBACA,6DACA,IAAA,IAED,OACC,UACA,0EACA,IAED,OACC,cACA,2EACA,IAED,UAAU,IACV,UAAU,IACV,OAAO,IAOV,OALA,EAAY,KAAK,YAAc,GAAQ,CACrC,EAAiB,EAAI,QACrB,EAAM,YAAc,SAGf,GAGT,eAAe,GAAW,CAAE,cAAsC,CAChE,IAAM,EAAW,OACb,IAAa,QACf,MAAM,GAAQ,CACZ,QAAS,CAAE,KAAM,SACjB,aACA,UAAW,KAEJ,IAAa,WACtB,MAAM,GAAQ,CACZ,QAAS,CAAE,KAAM,WACjB,aACA,UAAW,KAWjB,MAAa,GAAU,MAAO,EAAe,IAAoB,CAC/D,IAAM,EAAa,KACb,EAAa,GAAQ,GAE3B,EAAM,GAAM,EAAW,IAAM,SAE7B,IAAM,EACJ,GACA,EACE,MAAM,EAAE,KAAK,CACX,QAAS,oCACT,aAAc,GACd,SAAU,MAEZ,WAEJ,AACE,EAAM,UAAU,EAAM,GAClB,UACC,EACC,MAAM,EAAE,OAAO,CACb,QAAS,yCACT,QAAS,CACP,CACE,MAAO,UACP,MAAO,uBACP,KAAM,sCAER,CACE,MAAO,YACP,MAAO,8BACP,KAAM,yDAOpB,IAAM,EAAc,KAGd,CAAC,EAAe,GAAU,GAAiB,GAE3C,EAAa,MAAM,GAAkB,CACzC,YAAa,EACb,gBACA,SAAU,EACV,UAAW,EAAW,UACtB,UAAW,EAAW,YAExB,GAAe,EAAY,MAG3B,IAAM,EAAU,EAAG,aACjB,EAAK,KAAK,EAAY,iBAMxB,GAJA,EAAQ,KAAO,EACf,EAAQ,iBAAmB,CAAE,YAAa,MAGtC,IAAe,MAAO,CACxB,GAAM,CAAE,UAAW,MAAM,EAAM,EAAY,CAAC,MAAO,CACjD,IAAK,IAEP,EAAQ,eAAiB,GAAG,EAAW,GAAG,EAAO,SAGnD,EAAG,cAAc,EAAK,KAAK,EAAY,gBAAiB,EAAS,CAC/D,OAAQ,IAIV,IAAMC,EACJ,EAAM,KAAO,UACT,CACE,QAAS,EAAM,SAAW,UAC1B,GAAI,UACJ,KAAM,CAAE,KAAM,QACd,QAAS,OACT,YAAa,GACb,cAAe,GACf,iBAAkB,GAClB,gBAAiB,CAAC,eAClB,WAAY,GACZ,iBAAkB,GAClB,kBAAmB,IAErB,CACE,QAAS,EAAM,SAAW,UAC1B,GAAI,SACJ,QAAS,OACT,YAAa,GACb,iBAAkB,GAClB,kBAAmB,IAErB,CAAE,eAAgB,GAAY,GAGhC,EACF,EAAM,UAAY,YAAc,YAAc,EAAW,WAC3D,AACE,IAAa,EACX,MAAM,EAAE,OAAO,CACb,QAAS,sDACT,QAAS,CACP,CACE,MAAO,YACP,MAAO,MACP,KAAM,iDAGR,CACE,MAAO,OACP,MAAO,KACP,KAAM,qDAOZ,IAAe,cAEjB,MAAM,GAA6B,CACjC,aACA,KAAM,YACN,YAAa,EAAW,YACxB,WAAY,EAAW,WACvB,OAAQ,EAAW,OACnB,SAAU,EAAW,SACrB,WAAY,EAAW,WACvB,WAAY,EAAW,aAIrB,EAAM,UAAY,aACpB,MAAM,MAMV,MAAM,GAAW,CAAE,eAEnB,MAAM,GAAoB,CAAE,eAExB,EAAM,KAAO,UACf,MAAM,GAAc,CAClB,GAAG,KAAiB,2BACpB,SACA,WAIJ,MAAM,KAED,EAAW,OACd,MAAM,GAAc,GAGtB,GAAa,CACX,YAAa,EACb,UAAW,EAAW,aC7UpB,GAAa,CACjB,OAAQ,UACR,YAAa,UACb,OAAQ,WAGG,GAAgB,GAAS,OAAO,OAAO,KACvC,OAAoB,CAE/B,IAAM,EAAa,MACf,IAAe,QAAU,IAAe,SAC1C,QAAQ,IAAI,IAEd,QAAQ,IAAI,GAAc,UAAU,MCbzB,GAA0B,MAAO,CAC5C,YACA,sBACyD,KAAO,CAChE,IAAM,EAAU,EAAE,UAClB,EAAQ,MAAM,sBACd,MAAM,GAAkB,CAAE,YAAW,uBACrC,EAAQ,KAAK,sBCPF,GAA6B,SAAY,CACpD,IAAM,EAAU,EAAE,UAClB,EAAQ,MAAM,yBACd,MAAM,KACN,EAAQ,KAAK,yBCEf,eAAsB,IAAmB,CACvC,IAAMyF,EAAW,IACjB,GAAIA,EAAS,UAAY,UACvB,OAAO,EAAE,OAAO,4CAElB,GAAIA,EAAS,KAAO,SAClB,OAAO,EAAE,OACP,+DAIJ,IAAM,EACJ,EAAM,UACN,EACE,MAAM,EAAE,OAAO,CACb,QAAS,yCACT,QAAS,CACP,CACE,MAAO,UACP,MAAO,iBACP,KAAM,wCAER,CACE,MAAO,QACP,MAAO,QACP,KAAM,+CAMV,EAAA,EAAc,CAAC,QAAS,YAAY,MAAM,GAGhD,GAFA,EAAM,SAAW,EAEb,IAAS,UAAW,CACtB,IAAM,GACH,EAAM,cACH,EAAM,cACN,EAAM,GACJ,OACA,IAAA,KACN,EACE,MAAM,EAAE,OAAO,CACb,QAAS,4CAA4C,EAAM,IACzD,iHAEF,QAAS,CACP,CACE,MAAO,SACP,MAAO,SACP,KAAM,wBAER,CACE,MAAO,QACP,MAAO,QACP,KAAM,8CAER,CAAE,MAAO,kCAAmC,MAAO,YAKrD,EAAA,EACE,CAAC,QAAS,SAAU,SACzB,MAAM,GAET,EAAM,cAAgB,EAEtB,MAAM,GAAQ,CACZ,QAAS,CACP,OACA,cAAe,IAAkB,OAAS,IAAA,GAAY,UAI1D,MAAM,GAAQ,CAAE,QAAS,CAAE,UAI/B,MAAa,OAA2B,CACtC,IAAM,EAAiB,IAAI,EAAQ,QAChC,YAAY,sCACZ,OAAO,wBAAyB,gCAChC,OACC,kCACA,mDAED,OACC,oBACA,mEAED,UAAU,IACV,UAAU,IAEV,OAAO,SAAY,CAClB,IAAMA,EAAW,IACjB,GAAIA,EAAS,KAAO,SAClB,MAAU,MAAM,+DAElB,GAAIA,EAAS,KAAK,OAAS,OACzB,MAAU,MAAM,uBAElB,MAAM,OAOV,OAJA,EAAe,KAAK,YAAc,GAAgB,CAChD,EAAiB,EAAY,UAGxB,GCjHH,GAAA,EAAwB,CAAC,KAAM,aACxB,GAA0B,SAAY,CACjD,IAAM,EAAa,GAAe,MAChC,MAAM,EAAE,OAAO,CACb,QAAS,uCACT,QAAS,CACP,CAAE,MAAO,YAAa,MAAO,MAC7B,CAAE,MAAO,WAAY,MAAO,gBAKlC,GAAI,IAAe,WACjB,MAAU,MAAM,sBACP,IAAe,KACxB,MAAM,GAA6B,CAAE,WAAY,QAAQ,aAEzD,MAAU,MAAM,wBAIP,OAAiC,CAC5C,IAAM,EAAuB,IAAI,EAAQ,QASzC,OARA,EAAqB,YAAY,yCAEjC,EAAqB,KAAK,aAAc,EAAc,IAAkB,CACtE,IAAMA,EAAW,GAAsB,CAAE,YAAa,QACtD,EAAc,eAAe,WAAYA,KAIpC,GCvBItF,GAAmC,MAAO,CACrD,aACA,UACA,aACA,gBACI,CACJ,GAAK,KAEO,MAED,EAAW,OAAS,KAC7B,MAAU,MAAM,wDAFhB,MAAU,MAAM,8CAFhB,MAAU,MAAM,yCAOlB,IAAM,EAAe,GAAgB,CACnC,aACA,eAAgB,EAAW,OAGvB,EAAgB,GAAuB,CAC3C,aACA,eAAgB,EAAW,OAGvBsF,EAAW,IACjB,GAAIA,EAAS,KAAO,SAClB,OAEF,IAAM,EAAOA,EAAS,KAEhB,EAAgB,CACpB,gBAAiB,EAAW,KAC5B,cAAe,IAAI,IACnB,kBAAmB,IAAI,IACvB,gBAAiB,GAAG,IAAa,IACjC,gBAAiB,EACjB,kBACE,EAAK,OAAS,OAAS,eAAiB,qBAC1C,qBAAsB,EAAc,IAAM,4BAItC,EAAQ,MAAM,EAAG,QAAQ,GAC/B,UAAW,IAAM1B,KAAQ,EAAO,CAC9B,IAAM,EAAW,EAAK,KAAK,EAASA,GAChC,EAAc,MAAM,EAAG,SAAS,EAAU,QAE9C,OAAO,QAAQ,GAAe,SAAS,CAAC,EAAK,KAAW,CACtD,EAAc,EAAY,QAAQ,IAAI,OAAO,EAAK,KAAM,KAG1D,MAAM,EAAG,UAAU,EAAU,EAAa,QAI5C,IAAM,EAAU,GAAc,GACxB,EAAa,EAAQ,oBACzB,EAAK,KAAK,EAAS,EAAM,UAAY,UAAY,YAAc,cAE3D,EAAU,EACb,uBAAuB,YACtB,qBAAqB,EAAW,wBAE9B,EAAazD,GACjB,EAAc,OAAO,UAGvB,UAAW,IAAM,KAAa,EAC5B,GAAS,WAAY,GACnB,EACG,gBAAkB,CACb,GAAqB,GACvB,EAAO,MAAM,6BAA6B,EAAU,MAEpD,EAAO,MAAM,4BAA4B,EAAU,IAErD,EAAO,MAAM,YAAY,EAAU,OAEpC,MAAM,KACN,WAIP,GAAI,EAAM,UAAY,YAAa,CACjC,IAAM,EAAY,MAAM,GAAoB,CAAE,YAC1C,GAAW,MAAM,KAGvB,MAAM,GAAyB,IAIjC,SAAS,GAAqB,EAA4B,CAExD,MAAO,CAAC,6BAA6B,KAAK,GAG5C,MAAMC,GAA4B,CAChC,KACA,KACA,YACA,YACA,aACA,YACA,aACA,oBACA,yBAGF,SAASD,GAA0B,EAAgC,CACjE,OAAO,EAAW,OACf,GACC,CAACC,GAA0B,SAAS,EAAU,gBAC9C,EAAU,WAAW,MC3H3B,MAAaC,GAA2C,KAAO,IAAS,CACtE,MAAM,GAAiB,GACvB,IAAM,EAAY,MAAM,KACpB,GACF,MAAM,MCKGC,GAA4C,CACvD,MAAO,CACL,YAAa,GACb,MAAO,QACP,aAAc,gBAEhB,MAAO,CACL,YAAa,GACb,MAAO,cACP,KAAM,wCACN,aAAc,eACd,aAAc,IAEhB,UAAW,CACT,YAAa,GACb,MAAO,yBACP,KAAM,uEACN,aAAc,oBACd,aAAc,IAEhB,cAAe,CACb,YAAa,GACb,MAAO,iBACP,KAAM,sEACN,aAAc,wBACd,aAAc,IAEhB,kBAAmB,CACjB,YAAa,GACb,MAAO,4BACP,KAAM,qGACN,aAAc,6BACd,aAAc,KAILC,GAAwC,CACnD,MAAO,CACL,YAAa,GACb,MAAO,QACP,aAAc,iBAEhB,MAAO,CACL,YAAa,GACb,MAAO,cACP,KAAM,wCACN,aAAc,gBACd,aAAc,IAEhB,UAAW,CACT,YAAa,GACb,MAAO,yBACP,KAAM,uEACN,aAAc,qBACd,aAAc,KC7DlB,eAAsB,GAAc,CAClC,aACA,UACA,GAAG,GAIF,CACD,IAAM,EAAc,EAAK,KAAK,EAAY,0BAG1C,GAAI,CAAC,EAAG,WAAW,GAAc,OAEjC,IAAM,EAAU,GAAc,GACxB,EAAa,EAAQ,oBAAoB,GAC/C,EACG,uBACC,IAAY,UAAY,gBAAkB,oBAE1C,qBAAqB,EAAW,yBAChC,WAAY,GACZ,EACG,UAAY,CACX,EAAO,MAAM;oBACH,EAAM,MAAM;;mBAEb,EAAM,KAAK,OAErB,MAAM,MAGb,MAAM,GAAyB,GCjBjC,MAAa,GAAmB,KAAO,IAMjC,CACJ,IAAM,EAAa,EAAM,WAEnB+E,EAAW,IACjB,GAAIA,EAAS,KAAO,SAClB,OAAO,EAAE,OACP,gEAIJ,IAAM,EACJ,EAAM,UAAY,UACd,OAAO,QAAQ,IACf,OAAO,QAAQ,IAErB,GAAI,EAAU,SAAW,EACvB,OAAO,EAAE,OAAO,0DAGlB,IAAI,EAAY,GAAM,UAClB,EAAmBA,EAAS,iBAEhC,GACE,EAAM,UAAY,aAClB,CAAC,GACD,CAAC,EAAM,IACP,CAAC,EACD,CACA,IAAM,EAAkB,EACtB,MAAM,EAAE,OAAO,CACb,QAAS,2CACT,QAAS,CACP,CAAE,MAAO,MAAO,MAAO,OACvB,CAAE,MAAO,kBAAmB,MAAO,MACnC,CAAE,MAAO,sBAAuB,MAAO,cAIzC,IAAoB,SAAW,IAAoB,SACrD,EAAmB,IAGjB,IAAoB,QACtB,EAAY,KAIhB,AACE,IAAY,EACV,MAAM,EAAE,KAAK,CACX,QAAS,uCACT,YAAa,WACb,SAAW,GAAU,CACnB,GAAI,EAAM,SAAW,EACnB,MAAO,2BAQZ,EAAU,WAAW,OACxB,EAAY,IAAI,KAGlB,IAAM,EAAW,GAAW,EAAU,QAAQ,IAAK,IAAI,QAEjD,EACJ,GAAM,UACN,EACE,MAAM,EAAE,OAAO,CACb,QAAS,8CACT,QAAS,EAAU,KAAK,CAAC,EAAK,MAAY,CACxC,MAAO,EACP,MAAO,GAAG,EAAM,QAChB,KAAM,EAAM,WAKd,EAAe,EAAU,MAAM,CAAC,KAAS,IAAQ,KAAY,GACnE,GAAI,CAAC,EAAc,OAAO,EAAE,OAAO,iBAAiB,EAAS,aAE7D,IAAIhC,EACAC,EACJ,GAAI,EAAa,YAAa,CAC5B,GAAI+B,EAAS,YAAY,SAAW,EAClC,OAAO,EAAE,OACP,0HAGJ,IAAM,EACJ,GAAM,iBACLA,EAAS,YAAY,OAAS,EAC3B,EACE,MAAM,EAAE,OAAO,CACb,QAAS,kDACT,QAASA,EAAS,YAAY,IAAK,IAAgB,CACjD,MAAO3E,EAAW,KAClB,MAAOA,EAAW,WAIxB2E,EAAS,YAAY,IAAI,MAK/B,GAHA,EAAaA,EAAS,YAAY,KAC/B,GAAe3E,EAAW,OAAS,GAElC,CAAC,EAAY,OAAO,EAAE,OAAO,eAAe,EAAe,aAE/D,EAAa,MAAMC,GAA8B,CAC/C,aACA,eAIJ,IAAM,EAAU,EAAE,UAClB,EAAQ,MAAM,6BAGd,IAAM,EAAe,EAAK,KACxB,EACA,iBACA,EAAa,cAGT,GACJ,EAAM,UAAY,UACd,EAAK,KAAK,EAAY,iBAAkB,GACxC,EAAK,KAAK,EAAY,aAAc,GAE1C,MAAM,EAAG,KAAK,EAAc,IAExB,EAAM,UAAY,UAChB,GAAY,IAAa,IAC3B,MAAM,GAAc,CAClB,WAAY,QAAQ,MACpB,QAAS,UACT,MAAO,EACP,KAAM,IAGD,EAAM,QAIjB,MAAM,EAAa,eAAe,CAChC,aACA,QAAS,GACT,aACA,eAGE,IAAqB0E,EAAS,kBAEhC,GAAc,CAAE,qBAGlB,EAAQ,KAAK,eACb,IAAM,EAAa,KAEnB,QAAQ,IACN,KAAK,EAAM,MAAM,eAAe,4DAA4D,EAAM,KAAK,GAAG,IAAe,MAAQ,UAAY,EAAW,OAAO,cAItJ,OAA2B,CACtC,IAAM,EAAiB,IAAI,EAAQ,QAChC,YAAY,kCACZ,OAAO,SAAY,CAClB,MAAM,OAYV,OATA,EAAe,UAAU,IACzB,EAAe,UAAU,IAEzB,EAAe,KAAK,gBAAmB,CACrC,EAAiB,EAAe,QAChC,EAAM,YAAc,MACpB,GAAsB,CAAE,YAAa,UAGhC,GAGT,eAAe1E,GAA8B,CAC3C,aAAa,QAAQ,MACrB,cAIC,CACD,GAAI,EAAW,OAAS,WACtB,MAAU,MAAM,mBACX,CACL,IAAM,EAAU,GAAmB,CACjC,aACA,eAAgB,EAAW,OAE1B,IAAK,GAAM,EAAE,YACb,OAAO,SAEV,GAAI,EAAQ,SAAW,EAAG,CACxB,EAAE,OAAO,+DACT,OAGF,GAAI,EAAQ,SAAW,EAAG,OAAO,EAAQ,GAEzC,IAAM,EAAa,EACjB,MAAM,EAAE,OAAO,CACb,QAAS,gDACT,QAAS,EAAQ,IAAK,IAAO,CAAE,MAAO,EAAG,MAAO,GAAK,SAGzD,OAAO,GCnPX,IAAW,GACV,SAAU,EAAM,CACb,EAAK,YAAe,GAAM,GAC1B,SAASC,EAAS,EAAM,EACxB,EAAK,SAAWA,EAChB,SAASC,EAAY,EAAI,CACrB,MAAU,QAEd,EAAK,YAAcA,EACnB,EAAK,YAAe,GAAU,CAC1B,IAAM,EAAM,GACZ,IAAK,IAAM,KAAQ,EACf,EAAI,GAAQ,EAEhB,OAAO,GAEX,EAAK,mBAAsB,GAAQ,CAC/B,IAAM,EAAYC,EAAK,WAAW,GAAK,OAAQ,GAAM,OAAO,EAAI,EAAI,KAAQ,UACtE,EAAW,GACjB,IAAK,IAAM,KAAK,EACZ,EAAS,GAAK,EAAI,GAEtB,OAAOA,EAAK,aAAa,IAE7B,EAAK,aAAgB,GACVA,EAAK,WAAW,GAAK,IAAI,SAAU,EAAG,CACzC,OAAO,EAAI,KAGnB,EAAK,WAAa,OAAO,OAAO,MAAS,WAClC,GAAQ,OAAO,KAAK,GACpB,GAAW,CACV,IAAM,EAAO,GACb,IAAK,IAAM,KAAOC,EACV,OAAO,UAAU,eAAe,KAAKA,EAAQ,IAC7C,EAAK,KAAK,GAGlB,OAAO,GAEf,EAAK,MAAQ,EAAK,IAAY,CAC1B,IAAK,IAAM,KAAQ,EACf,GAAI,EAAQ,GACR,OAAO,GAInB,EAAK,UAAY,OAAO,OAAO,WAAc,WACtC,GAAQ,OAAO,UAAU,GACzB,GAAQ,OAAO,GAAQ,UAAY,OAAO,SAAS,IAAQ,KAAK,MAAM,KAAS,EACtF,SAASC,EAAW,EAAO,EAAY,MAAO,CAC1C,OAAO8B,EAAM,IAAK,GAAS,OAAO,GAAQ,SAAW,IAAI,EAAI,GAAK,GAAM,KAAK,GAEjF,EAAK,WAAa9B,EAClB,EAAK,uBAAyB,EAAG,IACzB,OAAO,GAAU,SACV,EAAM,WAEV,IAEZ,AAAS,IAAO,IACnB,IAAW,IACV,SAAU,EAAY,CACnB,EAAW,aAAe,EAAO,KACtB,CACH,GAAG,EACH,GAAG,MAGZ,AAAe,KAAa,IAC/B,MAAa,EAAgB,EAAK,YAAY,CAC1C,SACA,MACA,SACA,UACA,QACA,UACA,OACA,SACA,SACA,WACA,YACA,OACA,QACA,SACA,UACA,UACA,OACA,QACA,MACA,QAES,GAAiB,GAAS,CACnC,IAAM,EAAI,OAAO,EACjB,OAAQ,EAAR,CACI,IAAK,YACD,OAAO,EAAc,UACzB,IAAK,SACD,OAAO,EAAc,OACzB,IAAK,SACD,OAAO,OAAO,MAAM,GAAQ,EAAc,IAAM,EAAc,OAClE,IAAK,UACD,OAAO,EAAc,QACzB,IAAK,WACD,OAAO,EAAc,SACzB,IAAK,SACD,OAAO,EAAc,OACzB,IAAK,SACD,OAAO,EAAc,OACzB,IAAK,SAmBD,OAlBI,MAAM,QAAQ,GACP,EAAc,MAErB,IAAS,KACF,EAAc,KAErB,EAAK,MAAQ,OAAO,EAAK,MAAS,YAAc,EAAK,OAAS,OAAO,EAAK,OAAU,WAC7E,EAAc,QAErB,OAAO,IAAQ,KAAe,aAAgB,IACvC,EAAc,IAErB,OAAO,IAAQ,KAAe,aAAgB,IACvC,EAAc,IAErB,OAAO,KAAS,KAAe,aAAgB,KACxC,EAAc,KAElB,EAAc,OACzB,QACI,OAAO,EAAc,UCjIpB,EAAe,EAAK,YAAY,CACzC,eACA,kBACA,SACA,gBACA,8BACA,qBACA,oBACA,oBACA,sBACA,eACA,iBACA,YACA,UACA,6BACA,kBACA,eAMJ,IAAa,GAAb,MAAa,UAAiB,KAAM,CAChC,IAAI,QAAS,CACT,OAAO,KAAK,OAEhB,YAAY,EAAQ,CAChB,QACA,KAAK,OAAS,GACd,KAAK,SAAY,GAAQ,CACrB,KAAK,OAAS,CAAC,GAAG,KAAK,OAAQ,IAEnC,KAAK,WAAa,EAAO,KAAO,CAC5B,KAAK,OAAS,CAAC,GAAG,KAAK,OAAQ,GAAG,IAEtC,IAAM,EAAc,IAAI,OAAO,UAC3B,OAAO,eAEP,OAAO,eAAe,KAAM,GAG5B,KAAK,UAAY,EAErB,KAAK,KAAO,WACZ,KAAK,OAAS,EAElB,OAAO,EAAS,CACZ,IAAM,EAAS,GACX,SAAU,EAAO,CACb,OAAOqB,EAAM,SAEf,EAAc,CAAE,QAAS,IACzB,EAAgB,GAAU,CAC5B,IAAK,IAAMA,KAAS2C,EAAM,OACtB,GAAI3C,EAAM,OAAS,gBACf,EAAM,YAAY,IAAI,WAEjBA,EAAM,OAAS,sBACpB,EAAaA,EAAM,yBAEdA,EAAM,OAAS,oBACpB,EAAaA,EAAM,wBAEdA,EAAM,KAAK,SAAW,EAC3B,EAAY,QAAQ,KAAK,EAAOA,QAE/B,CACD,IAAI,EAAO,EACP,EAAI,EACR,KAAO,EAAIA,EAAM,KAAK,QAAQ,CAC1B,IAAM,EAAKA,EAAM,KAAK,GAChB,EAAW,IAAMA,EAAM,KAAK,OAAS,EACtC,GAWD,EAAK,GAAM,EAAK,IAAO,CAAE,QAAS,IAClC,EAAK,GAAI,QAAQ,KAAK,EAAOA,KAX7B,EAAK,GAAM,EAAK,IAAO,CAAE,QAAS,IAatC,EAAO,EAAK,GACZ,OAMhB,OADA,EAAa,MACN,EAEX,OAAO,OAAO,EAAO,CACjB,GAAI,EAAE,aAAiB,GACnB,MAAU,MAAM,mBAAmB,KAG3C,UAAW,CACP,OAAO,KAAK,QAEhB,IAAI,SAAU,CACV,OAAO,KAAK,UAAU,KAAK,OAAQ,EAAK,sBAAuB,GAEnE,IAAI,SAAU,CACV,OAAO,KAAK,OAAO,SAAW,EAElC,QAAQ,EAAU,GAAUA,EAAM,QAAS,CACvC,IAAM,EAAc,GACd,EAAa,GACnB,IAAK,IAAM,KAAO,KAAK,OACf,EAAI,KAAK,OAAS,GAClB,EAAY,EAAI,KAAK,IAAM,EAAY,EAAI,KAAK,KAAO,GACvD,EAAY,EAAI,KAAK,IAAI,KAAK,EAAO,KAGrC,EAAW,KAAK,EAAO,IAG/B,MAAO,CAAE,aAAY,eAEzB,IAAI,YAAa,CACb,OAAO,KAAK,YAGpB,GAAS,OAAU,GAAW,CAC1B,IAAM2C,EAAQ,IAAI,GAAS,GAC3B,OAAOA,GChIX,MAAM,IAAY,EAAO,IAAS,CAC9B,IAAI,EACJ,OAAQ3C,EAAM,KAAd,CACI,KAAK,EAAa,aACd,AAII,EAJAA,EAAM,WAAa,EAAc,UACvB,WAGA,YAAYA,EAAM,SAAS,aAAaA,EAAM,WAE5D,MACJ,KAAK,EAAa,gBACd,EAAU,mCAAmC,KAAK,UAAUA,EAAM,SAAU,EAAK,yBACjF,MACJ,KAAK,EAAa,kBACd,EAAU,kCAAkC,EAAK,WAAWA,EAAM,KAAM,QACxE,MACJ,KAAK,EAAa,cACd,EAAU,gBACV,MACJ,KAAK,EAAa,4BACd,EAAU,yCAAyC,EAAK,WAAWA,EAAM,WACzE,MACJ,KAAK,EAAa,mBACd,EAAU,gCAAgC,EAAK,WAAWA,EAAM,SAAS,cAAcA,EAAM,SAAS,GACtG,MACJ,KAAK,EAAa,kBACd,EAAU,6BACV,MACJ,KAAK,EAAa,oBACd,EAAU,+BACV,MACJ,KAAK,EAAa,aACd,EAAU,eACV,MACJ,KAAK,EAAa,eACV,OAAOA,EAAM,YAAe,SACxB,aAAcA,EAAM,YACpB,EAAU,gCAAgCA,EAAM,WAAW,SAAS,GAChE,OAAOA,EAAM,WAAW,UAAa,WACrC,EAAU,GAAG,EAAQ,qDAAqDA,EAAM,WAAW,aAG1F,eAAgBA,EAAM,WAC3B,EAAU,mCAAmCA,EAAM,WAAW,WAAW,GAEpE,aAAcA,EAAM,WACzB,EAAU,iCAAiCA,EAAM,WAAW,SAAS,GAGrE,EAAK,YAAYA,EAAM,YAI3B,EADKA,EAAM,aAAe,QAIhB,UAHA,WAAWA,EAAM,aAK/B,MACJ,KAAK,EAAa,UACd,AASI,EATAA,EAAM,OAAS,QACL,sBAAsBA,EAAM,MAAQ,UAAYA,EAAM,UAAY,WAAa,YAAY,GAAGA,EAAM,QAAQ,aACjHA,EAAM,OAAS,SACV,uBAAuBA,EAAM,MAAQ,UAAYA,EAAM,UAAY,WAAa,OAAO,GAAGA,EAAM,QAAQ,eAC7GA,EAAM,OAAS,SACV,kBAAkBA,EAAM,MAAQ,oBAAsBA,EAAM,UAAY,4BAA8B,kBAAkBA,EAAM,UACnIA,EAAM,OAAS,OACV,gBAAgBA,EAAM,MAAQ,oBAAsBA,EAAM,UAAY,4BAA8B,kBAAkB,IAAI,KAAK,OAAOA,EAAM,YAE5I,gBACd,MACJ,KAAK,EAAa,QACd,AAWI,EAXAA,EAAM,OAAS,QACL,sBAAsBA,EAAM,MAAQ,UAAYA,EAAM,UAAY,UAAY,YAAY,GAAGA,EAAM,QAAQ,aAChHA,EAAM,OAAS,SACV,uBAAuBA,EAAM,MAAQ,UAAYA,EAAM,UAAY,UAAY,QAAQ,GAAGA,EAAM,QAAQ,eAC7GA,EAAM,OAAS,SACV,kBAAkBA,EAAM,MAAQ,UAAYA,EAAM,UAAY,wBAA0B,YAAY,GAAGA,EAAM,UAClHA,EAAM,OAAS,SACV,kBAAkBA,EAAM,MAAQ,UAAYA,EAAM,UAAY,wBAA0B,YAAY,GAAGA,EAAM,UAClHA,EAAM,OAAS,OACV,gBAAgBA,EAAM,MAAQ,UAAYA,EAAM,UAAY,2BAA6B,eAAe,GAAG,IAAI,KAAK,OAAOA,EAAM,YAEjI,gBACd,MACJ,KAAK,EAAa,OACd,EAAU,gBACV,MACJ,KAAK,EAAa,2BACd,EAAU,2CACV,MACJ,KAAK,EAAa,gBACd,EAAU,gCAAgCA,EAAM,aAChD,MACJ,KAAK,EAAa,WACd,EAAU,wBACV,MACJ,QACI,EAAU,EAAK,aACf,EAAK,YAAYA,GAEzB,MAAO,CAAE,YAEb,IAAA,GAAe,GCzGf,IAAI,GAAmBG,GAKvB,SAAgB,IAAc,CAC1B,OAAO,GCLX,MAAa,GAAa,GAAW,CACjC,GAAM,CAAE,OAAM,KAAA,EAAM,YAAW,aAAc,EACvC,EAAW,CAAC,GAAGd,EAAM,GAAI,EAAU,MAAQ,IAC3C,EAAY,CACd,GAAG,EACH,KAAM,GAEV,GAAI,EAAU,UAAY,IAAA,GACtB,MAAO,CACH,GAAG,EACH,KAAM,EACN,QAAS,EAAU,SAG3B,IAAI,EAAe,GACb,EAAO,EACR,OAAQ,GAAM,CAAC,CAAC,GAChB,QACA,UACL,IAAK,IAAMH,KAAO,EACd,EAAeA,EAAI,EAAW,CAAE,OAAM,aAAc,IAAgB,QAExE,MAAO,CACH,GAAG,EACH,KAAM,EACN,QAAS,IAIjB,SAAgB,EAAkB,EAAK,EAAW,CAC9C,IAAM,EAAc,KACdc,EAAQ,GAAU,CACT,YACX,KAAM,EAAI,KACV,KAAM,EAAI,KACV,UAAW,CACP,EAAI,OAAO,mBACX,EAAI,eACJ,EACA,IAAgBG,GAAkB,IAAA,GAAYA,IAChD,OAAQ,GAAM,CAAC,CAAC,KAEtB,EAAI,OAAO,OAAO,KAAKH,GAE3B,IAAa,EAAb,MAAa,CAAY,CACrB,aAAc,CACV,KAAK,MAAQ,QAEjB,OAAQ,CACA,KAAK,QAAU,UACf,KAAK,MAAQ,SAErB,OAAQ,CACA,KAAK,QAAU,YACf,KAAK,MAAQ,WAErB,OAAO,WAAW,EAAQ,EAAS,CAC/B,IAAM,EAAa,GACnB,IAAK,IAAM,KAAK,EAAS,CACrB,GAAI,EAAE,SAAW,UACb,OAAO,EACP,EAAE,SAAW,SACb,EAAO,QACX,EAAW,KAAK,EAAE,OAEtB,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,GAE1C,aAAa,iBAAiB,EAAQ,EAAO,CACzC,IAAM,EAAY,GAClB,IAAK,IAAM,KAAQ,EAAO,CACtB,IAAM,EAAM,MAAM,EAAK,IACjB,EAAQ,MAAM,EAAK,MACzB,EAAU,KAAK,CACX,MACA,UAGR,OAAO,EAAY,gBAAgB,EAAQ,GAE/C,OAAO,gBAAgB,EAAQ,EAAO,CAClC,IAAM,EAAc,GACpB,IAAK,IAAM,KAAQ,EAAO,CACtB,GAAM,CAAE,MAAK,SAAU,EAGvB,GAFI,EAAI,SAAW,WAEf,EAAM,SAAW,UACjB,OAAO,EACP,EAAI,SAAW,SACf,EAAO,QACP,EAAM,SAAW,SACjB,EAAO,QACP,EAAI,QAAU,cAAuB,EAAM,QAAU,QAAe,EAAK,aACzE,EAAY,EAAI,OAAS,EAAM,OAGvC,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,KAG9C,MAAa,EAAU,OAAO,OAAO,CACjC,OAAQ,YAEC,GAAS,IAAW,CAAE,OAAQ,QAAS,UACvC,EAAM,IAAW,CAAE,OAAQ,QAAS,UACpC,GAAa,GAAM,EAAE,SAAW,UAChC,GAAW,GAAM,EAAE,SAAW,QAC9B,GAAW,GAAM,EAAE,SAAW,QAC9B,GAAW,GAAM,OAAO,QAAY,KAAe,aAAa,QC5G7E,IAAW,GACV,SAAU,EAAW,CAClB,EAAU,SAAY,GAAY,OAAO,GAAY,SAAW,CAAE,WAAY,GAAW,GAEzF,EAAU,SAAY,GAAY,OAAO,GAAY,SAAW,EAAU,GAAS,UACpF,AAAc,IAAY,ICA7B,IAAM,GAAN,KAAyB,CACrB,YAAY,EAAQ,EAAO,EAAM,EAAK,CAClC,KAAK,YAAc,GACnB,KAAK,OAAS,EACd,KAAK,KAAO,EACZ,KAAK,MAAQX,EACb,KAAK,KAAO,EAEhB,IAAI,MAAO,CASP,OARK,KAAK,YAAY,SACd,MAAM,QAAQ,KAAK,MACnB,KAAK,YAAY,KAAK,GAAG,KAAK,MAAO,GAAG,KAAK,MAG7C,KAAK,YAAY,KAAK,GAAG,KAAK,MAAO,KAAK,OAG3C,KAAK,cAGpB,MAAM,IAAgB,EAAK,IAAW,CAClC,GAAI,GAAQ,GACR,MAAO,CAAE,QAAS,GAAM,KAAM,EAAO,OAGrC,GAAI,CAAC,EAAI,OAAO,OAAO,OACnB,MAAU,MAAM,6CAEpB,MAAO,CACH,QAAS,GACT,IAAI,OAAQ,CACR,GAAI,KAAK,OACL,OAAO,KAAK,OAChB,IAAMsD,EAAQ,IAAI,GAAS,EAAI,OAAO,QAEtC,MADA,MAAK,OAASA,EACP,KAAK,UAK5B,SAAS,EAAoB,EAAQ,CACjC,GAAI,CAAC,EACD,MAAO,GACX,GAAM,CAAE,SAAA,EAAU,qBAAoB,iBAAgB,eAAgB,EACtE,GAAIpD,IAAa,GAAsB,GACnC,MAAU,MAAM,4FAEpB,GAAIA,EACA,MAAO,CAAE,SAAUA,EAAU,eACjC,IAAM,GAAa,EAAK,IAAQ,CAC5B,GAAM,CAAE,WAAY,EASpB,OARI,EAAI,OAAS,qBACN,CAAE,QAAS,GAAW,EAAI,cAE1B,EAAI,OAAS,OACb,CAAE,QAAS,GAAW,GAAkB,EAAI,cAEnD,EAAI,OAAS,eAEV,CAAE,QAAS,GAAW,GAAsB,EAAI,cAD5C,CAAE,QAAS,EAAI,eAG9B,MAAO,CAAE,SAAU,EAAW,eAElC,IAAa,EAAb,KAAqB,CACjB,IAAI,aAAc,CACd,OAAO,KAAK,KAAK,YAErB,SAAS,EAAO,CACZ,OAAO,GAAc,EAAM,MAE/B,gBAAgB,EAAO,EAAK,CACxB,OAAQ,GAAO,CACX,OAAQ,EAAM,OAAO,OACrB,KAAM,EAAM,KACZ,WAAY,GAAc,EAAM,MAChC,eAAgB,KAAK,KAAK,SAC1B,KAAM,EAAM,KACZ,OAAQ,EAAM,QAGtB,oBAAoB,EAAO,CACvB,MAAO,CACH,OAAQ,IAAI,EACZ,IAAK,CACD,OAAQ,EAAM,OAAO,OACrB,KAAM,EAAM,KACZ,WAAY,GAAc,EAAM,MAChC,eAAgB,KAAK,KAAK,SAC1B,KAAM,EAAM,KACZ,OAAQ,EAAM,SAI1B,WAAW,EAAO,CACd,IAAM,EAAS,KAAK,OAAO,GAC3B,GAAI,GAAQ,GACR,MAAU,MAAM,0CAEpB,OAAO,EAEX,YAAY,EAAO,CACf,IAAM,EAAS,KAAK,OAAO,GAC3B,OAAO,QAAQ,QAAQ,GAE3B,MAAM,EAAM,EAAQ,CAChB,IAAM,EAAS,KAAK,UAAU,EAAM,GACpC,GAAI,EAAO,QACP,OAAO,EAAO,KAClB,MAAM,EAAO,MAEjB,UAAU,EAAM,EAAQ,CACpB,IAAM,EAAM,CACR,OAAQ,CACJ,OAAQ,GACR,MAAO,GAAQ,OAAS,GACxB,mBAAoB,GAAQ,UAEhC,KAAM,GAAQ,MAAQ,GACtB,eAAgB,KAAK,KAAK,SAC1B,OAAQ,KACR,OACA,WAAY,GAAc,IAExB,EAAS,KAAK,WAAW,CAAE,OAAM,KAAM,EAAI,KAAM,OAAQ,IAC/D,OAAO,GAAa,EAAK,GAE7B,YAAY,EAAM,CACd,IAAM,EAAM,CACR,OAAQ,CACJ,OAAQ,GACR,MAAO,CAAC,CAAC,KAAK,aAAa,OAE/B,KAAM,GACN,eAAgB,KAAK,KAAK,SAC1B,OAAQ,KACR,OACA,WAAY,GAAc,IAE9B,GAAI,CAAC,KAAK,aAAa,MACnB,GAAI,CACA,IAAM,EAAS,KAAK,WAAW,CAAE,OAAM,KAAM,GAAI,OAAQ,IACzD,OAAO,GAAQ,GACT,CACE,MAAO,EAAO,OAEhB,CACE,OAAQ,EAAI,OAAO,cAGxB,EAAK,CACJ,GAAK,SAAS,eAAe,SAAS,iBACtC,KAAK,aAAa,MAAQ,IAE9B,EAAI,OAAS,CACT,OAAQ,GACR,MAAO,IAInB,OAAO,KAAK,YAAY,CAAE,OAAM,KAAM,GAAI,OAAQ,IAAO,KAAM,GAAW,GAAQ,GAC5E,CACE,MAAO,EAAO,OAEhB,CACE,OAAQ,EAAI,OAAO,SAG/B,MAAM,WAAW,EAAM,EAAQ,CAC3B,IAAM,EAAS,MAAM,KAAK,eAAe,EAAM,GAC/C,GAAI,EAAO,QACP,OAAO,EAAO,KAClB,MAAM,EAAO,MAEjB,MAAM,eAAe,EAAM,EAAQ,CAC/B,IAAM,EAAM,CACR,OAAQ,CACJ,OAAQ,GACR,mBAAoB,GAAQ,SAC5B,MAAO,IAEX,KAAM,GAAQ,MAAQ,GACtB,eAAgB,KAAK,KAAK,SAC1B,OAAQ,KACR,OACA,WAAY,GAAc,IAExB,EAAmB,KAAK,OAAO,CAAE,OAAM,KAAM,EAAI,KAAM,OAAQ,IAC/D,EAAS,MAAO,GAAQ,GAAoB,EAAmB,QAAQ,QAAQ,IACrF,OAAO,GAAa,EAAK,GAE7B,OAAO,EAAO,EAAS,CACnB,IAAM,EAAsB,GACpB,OAAO,GAAY,UAAmB,IAAY,OAC3C,CAAE,WAEJ,OAAO,GAAY,WACjB,EAAQ,GAGR,EAGf,OAAO,KAAK,aAAa,EAAK,IAAQ,CAClC,IAAM,EAASC,EAAM,GACf,MAAiB,EAAI,SAAS,CAChC,KAAM,EAAa,OACnB,GAAG,EAAmB,KAetB,OAbA,OAAO,QAAY,KAAe,aAAkB,QAC7C,EAAO,KAAM,GACX,EAKM,IAJP,IACO,KAOd,EAKM,IAJP,IACO,MAOnB,WAAW,EAAO,EAAgB,CAC9B,OAAO,KAAK,aAAa,EAAK,IACrBA,EAAM,GAKA,IAJP,EAAI,SAAS,OAAO,GAAmB,WAAa,EAAe,EAAK,GAAO,GACxE,KAOnB,YAAY,EAAY,CACpB,OAAO,IAAI,GAAW,CAClB,OAAQ,KACR,SAAU,EAAsB,WAChC,OAAQ,CAAE,KAAM,aAAc,gBAGtC,YAAY,EAAY,CACpB,OAAO,KAAK,YAAY,GAE5B,YAAY,EAAK,CAEb,KAAK,IAAM,KAAK,eAChB,KAAK,KAAO,EACZ,KAAK,MAAQ,KAAK,MAAM,KAAK,MAC7B,KAAK,UAAY,KAAK,UAAU,KAAK,MACrC,KAAK,WAAa,KAAK,WAAW,KAAK,MACvC,KAAK,eAAiB,KAAK,eAAe,KAAK,MAC/C,KAAK,IAAM,KAAK,IAAI,KAAK,MACzB,KAAK,OAAS,KAAK,OAAO,KAAK,MAC/B,KAAK,WAAa,KAAK,WAAW,KAAK,MACvC,KAAK,YAAc,KAAK,YAAY,KAAK,MACzC,KAAK,SAAW,KAAK,SAAS,KAAK,MACnC,KAAK,SAAW,KAAK,SAAS,KAAK,MACnC,KAAK,QAAU,KAAK,QAAQ,KAAK,MACjC,KAAK,MAAQ,KAAK,MAAM,KAAK,MAC7B,KAAK,QAAU,KAAK,QAAQ,KAAK,MACjC,KAAK,GAAK,KAAK,GAAG,KAAK,MACvB,KAAK,IAAM,KAAK,IAAI,KAAK,MACzB,KAAK,UAAY,KAAK,UAAU,KAAK,MACrC,KAAK,MAAQ,KAAK,MAAM,KAAK,MAC7B,KAAK,QAAU,KAAK,QAAQ,KAAK,MACjC,KAAK,MAAQ,KAAK,MAAM,KAAK,MAC7B,KAAK,SAAW,KAAK,SAAS,KAAK,MACnC,KAAK,KAAO,KAAK,KAAK,KAAK,MAC3B,KAAK,SAAW,KAAK,SAAS,KAAK,MACnC,KAAK,WAAa,KAAK,WAAW,KAAK,MACvC,KAAK,WAAa,KAAK,WAAW,KAAK,MACvC,KAAK,aAAe,CAChB,QAAS,EACT,OAAQ,MACR,SAAW,GAAS,KAAK,aAAa,IAG9C,UAAW,CACP,OAAO,GAAY,OAAO,KAAM,KAAK,MAEzC,UAAW,CACP,OAAO,GAAY,OAAO,KAAM,KAAK,MAEzC,SAAU,CACN,OAAO,KAAK,WAAW,WAE3B,OAAQ,CACJ,OAAO,GAAS,OAAO,MAE3B,SAAU,CACN,OAAO,GAAW,OAAO,KAAM,KAAK,MAExC,GAAG,EAAQ,CACP,OAAO,GAAS,OAAO,CAAC,KAAM,GAAS,KAAK,MAEhD,IAAI,EAAU,CACV,OAAO,GAAgB,OAAO,KAAM,EAAU,KAAK,MAEvD,UAAU,EAAW,CACjB,OAAO,IAAI,GAAW,CAClB,GAAG,EAAoB,KAAK,MAC5B,OAAQ,KACR,SAAU,EAAsB,WAChC,OAAQ,CAAE,KAAM,YAAa,UAAA,KAGrC,QAAQ,EAAK,CACT,IAAM,EAAmB,OAAO,GAAQ,WAAa,MAAY,EACjE,OAAO,IAAI,GAAW,CAClB,GAAG,EAAoB,KAAK,MAC5B,UAAW,KACX,aAAc,EACd,SAAU,EAAsB,aAGxC,OAAQ,CACJ,OAAO,IAAI,GAAW,CAClB,SAAU,EAAsB,WAChC,KAAM,KACN,GAAG,EAAoB,KAAK,QAGpC,MAAM,EAAK,CACP,IAAM,EAAiB,OAAO,GAAQ,WAAa,MAAY,EAC/D,OAAO,IAAI,GAAS,CAChB,GAAG,EAAoB,KAAK,MAC5B,UAAW,KACX,WAAY,EACZ,SAAU,EAAsB,WAGxC,SAAS,EAAa,CAClB,IAAM,EAAO,KAAK,YAClB,OAAO,IAAI,EAAK,CACZ,GAAG,KAAK,KACR,gBAGR,KAAK,EAAQ,CACT,OAAO,GAAY,OAAO,KAAM,GAEpC,UAAW,CACP,OAAO,GAAY,OAAO,MAE9B,YAAa,CACT,OAAO,KAAK,UAAU,IAAA,IAAW,QAErC,YAAa,CACT,OAAO,KAAK,UAAU,MAAM,UAGpC,MAAM,GAAY,iBACZ,GAAa,cACb,GAAY,4BAGZ,GAAY,yFACZ,GAAc,oBACd,GAAW,mDACX,GAAgB,2SAahB,GAAa,qFAKnB,IAAI,GAEJ,MAAM,GAAY,sHACZ,GAAgB,2IAGhB,GAAY,wpBACZ,GAAgB,0rBAEhB,GAAc,mEAEd,GAAiB,yEAMjB,GAAkB,oMAClB,GAAgB,OAAO,IAAI,GAAgB,IACjD,SAAS,GAAgB,EAAM,CAC3B,IAAI,EAAqB,WACrB,EAAK,UACL,EAAqB,GAAG,EAAmB,SAAS,EAAK,UAAU,GAE9D,EAAK,YACV,EAAqB,GAAG,EAAmB,aAE/C,IAAM,EAAoB,EAAK,UAAY,IAAM,IACjD,MAAO,8BAA8B,EAAmB,GAAG,IAE/D,SAAS,GAAU,EAAM,CACrB,OAAW,OAAO,IAAI,GAAgB,GAAM,IAGhD,SAAgB,GAAc,EAAM,CAChC,IAAI,EAAQ,GAAG,GAAgB,GAAG,GAAgB,KAC5C,EAAO,GAKb,OAJA,EAAK,KAAK,EAAK,MAAQ,KAAO,KAC1B,EAAK,QACL,EAAK,KAAK,wBACd,EAAQ,GAAG,EAAM,GAAG,EAAK,KAAK,KAAK,GACxB,OAAO,IAAI,EAAM,IAEhC,SAAS,GAAU,EAAI,EAAS,CAO5B,MAHA,IAHKC,IAAY,MAAQ,CAACA,IAAY,GAAU,KAAK,KAGhDA,IAAY,MAAQ,CAACA,IAAY,GAAU,KAAK,IAKzD,SAAS,GAAW,EAAK,EAAK,CAC1B,GAAI,CAAC,GAAS,KAAKC,GACf,MAAO,GACX,GAAI,CACA,GAAM,CAAC,GAAUA,EAAI,MAAM,KAErBC,EAAS,EACV,QAAQ,KAAM,KACd,QAAQ,KAAM,KACd,OAAO,EAAO,QAAW,EAAK,EAAO,OAAS,GAAM,EAAI,KACvD,EAAU,KAAK,MAAM,KAAKA,IAShC,MAFA,EANI,OAAO,GAAY,WAAY,GAE/B,QAAS,GAAW,GAAS,MAAQ,OAErC,CAAC,EAAQ,KAET,GAAO,EAAQ,MAAQ,QAIzB,CACF,MAAO,IAGf,SAAS,GAAY,EAAI,EAAS,CAO9B,MAHA,IAHKF,IAAY,MAAQ,CAACA,IAAY,GAAc,KAAK,KAGpDA,IAAY,MAAQ,CAACA,IAAY,GAAc,KAAK,IAK7D,IAAa,GAAb,MAAa,UAAkB,CAAQ,CACnC,OAAO,EAAO,CACN,KAAK,KAAK,SACV,EAAM,KAAO,OAAO,EAAM,OAE9B,IAAMG,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,OAAQ,CACrC,IAAMC,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkBA,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,OACxB,SAAUA,EAAI,aAEX,EAEX,IAAM,EAAS,IAAI,EACf,EACJ,IAAK,IAAML,KAAS,KAAK,KAAK,OAC1B,GAAIA,EAAM,OAAS,MACX,EAAM,KAAK,OAASA,EAAM,QAC1B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,UACnB,QAASA,EAAM,MACf,KAAM,SACN,UAAW,GACX,MAAO,GACP,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,MAChB,EAAM,KAAK,OAASA,EAAM,QAC1B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,QACnB,QAASA,EAAM,MACf,KAAM,SACN,UAAW,GACX,MAAO,GACP,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,SAAU,CAC9B,IAAM,EAAS,EAAM,KAAK,OAASA,EAAM,MACnC,EAAW,EAAM,KAAK,OAASA,EAAM,OACvC,GAAU,KACV,EAAM,KAAK,gBAAgB,EAAO,GAC9B,EACA,EAAkB,EAAK,CACnB,KAAM,EAAa,QACnB,QAASA,EAAM,MACf,KAAM,SACN,UAAW,GACX,MAAO,GACP,QAASA,EAAM,UAGd,GACL,EAAkB,EAAK,CACnB,KAAM,EAAa,UACnB,QAASA,EAAM,MACf,KAAM,SACN,UAAW,GACX,MAAO,GACP,QAASA,EAAM,UAGvB,EAAO,iBAGNA,EAAM,OAAS,QACf,GAAW,KAAK,EAAM,QACvB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,QACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,QACpB,AACI,KAAiB,OAAO,uDAAa,KAEpC,GAAW,KAAK,EAAM,QACvB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,QACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,OACf,GAAU,KAAK,EAAM,QACtB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,OACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,SACf,GAAY,KAAK,EAAM,QACxB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,SACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,OACf,GAAU,KAAK,EAAM,QACtB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,OACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,QACf,GAAW,KAAK,EAAM,QACvB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,QACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,OACf,GAAU,KAAK,EAAM,QACtB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,OACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,MACpB,GAAI,CACA,IAAI,IAAI,EAAM,WAEZ,CACF,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,MACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,gBAGNA,EAAM,OAAS,QAAS,CAC7B,EAAM,MAAM,UAAY,EACxB,IAAM,EAAaA,EAAM,MAAM,KAAK,EAAM,MACrC,IACD,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,QACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,OACpB,EAAM,KAAO,EAAM,KAAK,eAEnBA,EAAM,OAAS,WACf,EAAM,KAAK,SAASA,EAAM,MAAOA,EAAM,YACxC,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,eACnB,WAAY,CAAE,SAAUA,EAAM,MAAO,SAAUA,EAAM,UACrD,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,cACpB,EAAM,KAAO,EAAM,KAAK,sBAEnBA,EAAM,OAAS,cACpB,EAAM,KAAO,EAAM,KAAK,sBAEnBA,EAAM,OAAS,aACf,EAAM,KAAK,WAAWA,EAAM,SAC7B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,eACnB,WAAY,CAAE,WAAYA,EAAM,OAChC,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,WACf,EAAM,KAAK,SAASA,EAAM,SAC3B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,eACnB,WAAY,CAAE,SAAUA,EAAM,OAC9B,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,WAAY,CAChC,IAAM,EAAQ,GAAcA,GACvB,EAAM,KAAK,EAAM,QAClB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,eACnB,WAAY,WACZ,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,OAAQ,CAC5B,IAAM,EAAQ,GACT,EAAM,KAAK,EAAM,QAClB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,eACnB,WAAY,OACZ,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,OAAQ,CAC5B,IAAM,EAAQ,GAAUA,GACnB,EAAM,KAAK,EAAM,QAClB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,eACnB,WAAY,OACZ,QAASA,EAAM,UAEnB,EAAO,cAGNA,EAAM,OAAS,WACf,GAAc,KAAK,EAAM,QAC1B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,WACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,SAGNA,EAAM,OAAS,KACf,GAAU,EAAM,KAAMA,EAAM,WAC7B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,KACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,SAGNA,EAAM,OAAS,MACf,GAAW,EAAM,KAAMA,EAAM,OAC9B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,MACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,SAGNA,EAAM,OAAS,OACf,GAAY,EAAM,KAAMA,EAAM,WAC/B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,OACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,SAGNA,EAAM,OAAS,SACf,GAAY,KAAK,EAAM,QACxB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,SACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,SAGNA,EAAM,OAAS,YACf,GAAe,KAAK,EAAM,QAC3B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,WAAY,YACZ,KAAM,EAAa,eACnB,QAASA,EAAM,UAEnB,EAAO,SAIX,EAAK,YAAYA,GAGzB,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,EAAM,MAEhD,OAAO,EAAO,EAAY,EAAS,CAC/B,OAAO,KAAK,WAAY,GAAS,EAAM,KAAK,GAAO,CAC/C,aACA,KAAM,EAAa,eACnB,GAAG,EAAU,SAAS,KAG9B,UAAU,EAAO,CACb,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,OAAQ,CAAC,GAAG,KAAK,KAAK,OAAQA,KAGtC,MAAM,EAAS,CACX,OAAO,KAAK,UAAU,CAAE,KAAM,QAAS,GAAG,EAAU,SAAS,KAEjE,IAAI,EAAS,CACT,OAAO,KAAK,UAAU,CAAE,KAAM,MAAO,GAAG,EAAU,SAAS,KAE/D,MAAM,EAAS,CACX,OAAO,KAAK,UAAU,CAAE,KAAM,QAAS,GAAG,EAAU,SAAS,KAEjE,KAAK,EAAS,CACV,OAAO,KAAK,UAAU,CAAE,KAAM,OAAQ,GAAG,EAAU,SAAS,KAEhE,OAAO,EAAS,CACZ,OAAO,KAAK,UAAU,CAAE,KAAM,SAAU,GAAG,EAAU,SAAS,KAElE,KAAK,EAAS,CACV,OAAO,KAAK,UAAU,CAAE,KAAM,OAAQ,GAAG,EAAU,SAAS,KAEhE,MAAM,EAAS,CACX,OAAO,KAAK,UAAU,CAAE,KAAM,QAAS,GAAG,EAAU,SAAS,KAEjE,KAAK,EAAS,CACV,OAAO,KAAK,UAAU,CAAE,KAAM,OAAQ,GAAG,EAAU,SAAS,KAEhE,OAAO,EAAS,CACZ,OAAO,KAAK,UAAU,CAAE,KAAM,SAAU,GAAG,EAAU,SAAS,KAElE,UAAU,EAAS,CAEf,OAAO,KAAK,UAAU,CAClB,KAAM,YACN,GAAG,EAAU,SAAS,KAG9B,IAAI,EAAS,CACT,OAAO,KAAK,UAAU,CAAE,KAAM,MAAO,GAAG,EAAU,SAAS,KAE/D,GAAG,EAAS,CACR,OAAO,KAAK,UAAU,CAAE,KAAM,KAAM,GAAG,EAAU,SAAS,KAE9D,KAAK,EAAS,CACV,OAAO,KAAK,UAAU,CAAE,KAAM,OAAQ,GAAG,EAAU,SAAS,KAEhE,SAAS,EAAS,CAUd,OATI,OAAO,GAAY,SACZ,KAAK,UAAU,CAClB,KAAM,WACN,UAAW,KACX,OAAQ,GACR,MAAO,GACP,QAAS,IAGV,KAAK,UAAU,CAClB,KAAM,WACN,UAAkB,GAAS,YAAc,OAAc,KAAO,GAAS,UACvE,OAAQ,GAAS,QAAU,GAC3B,MAAO,GAAS,OAAS,GACzB,GAAG,EAAU,SAAS,GAAS,WAGvC,KAAK,EAAS,CACV,OAAO,KAAK,UAAU,CAAE,KAAM,OAAQ,YAE1C,KAAK,EAAS,CAQV,OAPI,OAAO,GAAY,SACZ,KAAK,UAAU,CAClB,KAAM,OACN,UAAW,KACX,QAAS,IAGV,KAAK,UAAU,CAClB,KAAM,OACN,UAAkB,GAAS,YAAc,OAAc,KAAO,GAAS,UACvE,GAAG,EAAU,SAAS,GAAS,WAGvC,SAAS,EAAS,CACd,OAAO,KAAK,UAAU,CAAE,KAAM,WAAY,GAAG,EAAU,SAAS,KAEpE,MAAM,EAAO,EAAS,CAClB,OAAO,KAAK,UAAU,CAClB,KAAM,QACC,QACP,GAAG,EAAU,SAAS,KAG9B,SAAS,EAAO,EAAS,CACrB,OAAO,KAAK,UAAU,CAClB,KAAM,WACC,QACP,SAAU,GAAS,SACnB,GAAG,EAAU,SAAS,GAAS,WAGvC,WAAW,EAAO,EAAS,CACvB,OAAO,KAAK,UAAU,CAClB,KAAM,aACC,QACP,GAAG,EAAU,SAAS,KAG9B,SAAS,EAAO,EAAS,CACrB,OAAO,KAAK,UAAU,CAClB,KAAM,WACC,QACP,GAAG,EAAU,SAAS,KAG9B,IAAI,EAAW,EAAS,CACpB,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,EACP,GAAG,EAAU,SAAS,KAG9B,IAAI,EAAW,EAAS,CACpB,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,EACP,GAAG,EAAU,SAAS,KAG9B,OAAO,EAAK,EAAS,CACjB,OAAO,KAAK,UAAU,CAClB,KAAM,SACN,MAAO,EACP,GAAG,EAAU,SAAS,KAM9B,SAAS,EAAS,CACd,OAAO,KAAK,IAAI,EAAG,EAAU,SAAS,IAE1C,MAAO,CACH,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,OAAQ,CAAC,GAAG,KAAK,KAAK,OAAQ,CAAE,KAAM,WAG9C,aAAc,CACV,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,OAAQ,CAAC,GAAG,KAAK,KAAK,OAAQ,CAAE,KAAM,kBAG9C,aAAc,CACV,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,OAAQ,CAAC,GAAG,KAAK,KAAK,OAAQ,CAAE,KAAM,kBAG9C,IAAI,YAAa,CACb,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,YAEvD,IAAI,QAAS,CACT,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,QAEvD,IAAI,QAAS,CACT,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,QAEvD,IAAI,YAAa,CACb,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,YAEvD,IAAI,SAAU,CACV,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,SAEvD,IAAI,OAAQ,CACR,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,OAEvD,IAAI,SAAU,CACV,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,SAEvD,IAAI,QAAS,CACT,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,QAEvD,IAAI,UAAW,CACX,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,UAEvD,IAAI,QAAS,CACT,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,QAEvD,IAAI,SAAU,CACV,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,SAEvD,IAAI,QAAS,CACT,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,QAEvD,IAAI,MAAO,CACP,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,MAEvD,IAAI,QAAS,CACT,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,QAEvD,IAAI,UAAW,CACX,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,UAEvD,IAAI,aAAc,CAEd,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,aAEvD,IAAI,WAAY,CACZ,IAAI,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACnB,EAAG,OAAS,QACR,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,EAEX,IAAI,WAAY,CACZ,IAAI,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACnB,EAAG,OAAS,QACR,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,IAGf,GAAU,OAAU,GACT,IAAI,GAAU,CACjB,OAAQ,GACR,SAAU,EAAsB,UAChC,OAAQ,GAAQ,QAAU,GAC1B,GAAG,EAAoB,KAI/B,SAAS,GAAmB,EAAK,EAAM,CACnC,IAAM,GAAe,EAAI,WAAW,MAAM,KAAK,IAAM,IAAI,OACnD,GAAgB,EAAK,WAAW,MAAM,KAAK,IAAM,IAAI,OACrD,EAAW,EAAc,EAAe,EAAc,EACtD,EAAS,OAAO,SAAS,EAAI,QAAQ,GAAU,QAAQ,IAAK,KAC5D,EAAU,OAAO,SAAS,EAAK,QAAQ,GAAU,QAAQ,IAAK,KACpE,OAAQ,EAAS,EAAW,IAAM,EAEtC,IAAa,GAAb,MAAa,UAAkB,CAAQ,CACnC,aAAc,CACV,MAAM,GAAG,WACT,KAAK,IAAM,KAAK,IAChB,KAAK,IAAM,KAAK,IAChB,KAAK,KAAO,KAAK,WAErB,OAAO,EAAO,CACN,KAAK,KAAK,SACV,EAAM,KAAO,OAAO,EAAM,OAE9B,IAAMI,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,OAAQ,CACrC,IAAMC,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkBA,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,OACxB,SAAUA,EAAI,aAEX,EAEX,IAAI,EACE,EAAS,IAAI,EACnB,IAAK,IAAML,KAAS,KAAK,KAAK,OAC1B,GAAIA,EAAM,OAAS,MACV,EAAK,UAAU,EAAM,QACtB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,UACV,SAAU,QACV,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,MAAO,CAC3B,IAAM,EAAWA,EAAM,UAAY,EAAM,KAAOA,EAAM,MAAQ,EAAM,MAAQA,EAAM,MAC9E,IACA,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,UACnB,QAASA,EAAM,MACf,KAAM,SACN,UAAWA,EAAM,UACjB,MAAO,GACP,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,MAAO,CAC3B,IAAM,EAASA,EAAM,UAAY,EAAM,KAAOA,EAAM,MAAQ,EAAM,MAAQA,EAAM,MAC5E,IACA,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,QACnB,QAASA,EAAM,MACf,KAAM,SACN,UAAWA,EAAM,UACjB,MAAO,GACP,QAASA,EAAM,UAEnB,EAAO,cAGNA,EAAM,OAAS,aAChB,GAAmB,EAAM,KAAMA,EAAM,SAAW,IAChD,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,gBACnB,WAAYA,EAAM,MAClB,QAASA,EAAM,UAEnB,EAAO,SAGNA,EAAM,OAAS,SACf,OAAO,SAAS,EAAM,QACvB,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,WACnB,QAASA,EAAM,UAEnB,EAAO,SAIX,EAAK,YAAYA,GAGzB,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,EAAM,MAEhD,IAAI,EAAO,EAAS,CAChB,OAAO,KAAK,SAAS,MAAO,EAAO,GAAM,EAAU,SAAS,IAEhE,GAAG,EAAO,EAAS,CACf,OAAO,KAAK,SAAS,MAAO,EAAO,GAAO,EAAU,SAAS,IAEjE,IAAI,EAAO,EAAS,CAChB,OAAO,KAAK,SAAS,MAAO,EAAO,GAAM,EAAU,SAAS,IAEhE,GAAG,EAAO,EAAS,CACf,OAAO,KAAK,SAAS,MAAO,EAAO,GAAO,EAAU,SAAS,IAEjE,SAAS,EAAM,EAAO,EAAW,EAAS,CACtC,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,OAAQ,CACJ,GAAG,KAAK,KAAK,OACb,CACI,OACA,QACA,YACA,QAAS,EAAU,SAAS,OAK5C,UAAU,EAAO,CACb,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,OAAQ,CAAC,GAAG,KAAK,KAAK,OAAQA,KAGtC,IAAI,EAAS,CACT,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,QAAS,EAAU,SAAS,KAGpC,SAAS,EAAS,CACd,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,EACP,UAAW,GACX,QAAS,EAAU,SAAS,KAGpC,SAAS,EAAS,CACd,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,EACP,UAAW,GACX,QAAS,EAAU,SAAS,KAGpC,YAAY,EAAS,CACjB,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,EACP,UAAW,GACX,QAAS,EAAU,SAAS,KAGpC,YAAY,EAAS,CACjB,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,EACP,UAAW,GACX,QAAS,EAAU,SAAS,KAGpC,WAAW,EAAO,EAAS,CACvB,OAAO,KAAK,UAAU,CAClB,KAAM,aACC,QACP,QAAS,EAAU,SAAS,KAGpC,OAAO,EAAS,CACZ,OAAO,KAAK,UAAU,CAClB,KAAM,SACN,QAAS,EAAU,SAAS,KAGpC,KAAK,EAAS,CACV,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,UAAW,GACX,MAAO,WACP,QAAS,EAAU,SAAS,KAC7B,UAAU,CACT,KAAM,MACN,UAAW,GACX,cACA,QAAS,EAAU,SAAS,KAGpC,IAAI,UAAW,CACX,IAAI,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACnB,EAAG,OAAS,QACR,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,EAEX,IAAI,UAAW,CACX,IAAI,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACnB,EAAG,OAAS,QACR,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,EAEX,IAAI,OAAQ,CACR,MAAO,CAAC,CAAC,KAAK,KAAK,OAAO,KAAM,GAAO,EAAG,OAAS,OAAU,EAAG,OAAS,cAAgB,EAAK,UAAU,EAAG,QAE/G,IAAI,UAAW,CACX,IAAI,EAAM,KACN,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACvB,GAAI,EAAG,OAAS,UAAY,EAAG,OAAS,OAAS,EAAG,OAAS,aACzD,MAAO,QAEF,EAAG,OAAS,OACb,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAER,EAAG,OAAS,QACb,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,OAAO,SAAS,IAAQ,OAAO,SAAS,KAGvD,GAAU,OAAU,GACT,IAAI,GAAU,CACjB,OAAQ,GACR,SAAU,EAAsB,UAChC,OAAQ,GAAQ,QAAU,GAC1B,GAAG,EAAoB,KAG/B,IAAa,GAAb,MAAa,UAAkB,CAAQ,CACnC,aAAc,CACV,MAAM,GAAG,WACT,KAAK,IAAM,KAAK,IAChB,KAAK,IAAM,KAAK,IAEpB,OAAO,EAAO,CACV,GAAI,KAAK,KAAK,OACV,GAAI,CACA,EAAM,KAAO,OAAO,EAAM,WAExB,CACF,OAAO,KAAK,iBAAiB,GAGrC,IAAMI,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,OAC7B,OAAO,KAAK,iBAAiB,GAEjC,IAAI,EACE,EAAS,IAAI,EACnB,IAAK,IAAMJ,KAAS,KAAK,KAAK,OAC1B,GAAIA,EAAM,OAAS,MAAO,CACtB,IAAM,EAAWA,EAAM,UAAY,EAAM,KAAOA,EAAM,MAAQ,EAAM,MAAQA,EAAM,MAC9E,IACA,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,UACnB,KAAM,SACN,QAASA,EAAM,MACf,UAAWA,EAAM,UACjB,QAASA,EAAM,UAEnB,EAAO,iBAGNA,EAAM,OAAS,MAAO,CAC3B,IAAM,EAASA,EAAM,UAAY,EAAM,KAAOA,EAAM,MAAQ,EAAM,MAAQA,EAAM,MAC5E,IACA,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,QACnB,KAAM,SACN,QAASA,EAAM,MACf,UAAWA,EAAM,UACjB,QAASA,EAAM,UAEnB,EAAO,cAGNA,EAAM,OAAS,aAChB,EAAM,KAAOA,EAAM,QAAU,OAAO,KACpC,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,gBACnB,WAAYA,EAAM,MAClB,QAASA,EAAM,UAEnB,EAAO,SAIX,EAAK,YAAYA,GAGzB,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,EAAM,MAEhD,iBAAiB,EAAO,CACpB,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,OACxB,SAAU,EAAI,aAEX,EAEX,IAAI,EAAO,EAAS,CAChB,OAAO,KAAK,SAAS,MAAO,EAAO,GAAM,EAAU,SAAS,IAEhE,GAAG,EAAO,EAAS,CACf,OAAO,KAAK,SAAS,MAAO,EAAO,GAAO,EAAU,SAAS,IAEjE,IAAI,EAAO,EAAS,CAChB,OAAO,KAAK,SAAS,MAAO,EAAO,GAAM,EAAU,SAAS,IAEhE,GAAG,EAAO,EAAS,CACf,OAAO,KAAK,SAAS,MAAO,EAAO,GAAO,EAAU,SAAS,IAEjE,SAAS,EAAM,EAAO,EAAW,EAAS,CACtC,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,OAAQ,CACJ,GAAG,KAAK,KAAK,OACb,CACI,OACA,QACA,YACA,QAAS,EAAU,SAAS,OAK5C,UAAU,EAAO,CACb,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,OAAQ,CAAC,GAAG,KAAK,KAAK,OAAQA,KAGtC,SAAS,EAAS,CACd,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,OAAO,GACd,UAAW,GACX,QAAS,EAAU,SAAS,KAGpC,SAAS,EAAS,CACd,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,OAAO,GACd,UAAW,GACX,QAAS,EAAU,SAAS,KAGpC,YAAY,EAAS,CACjB,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,OAAO,GACd,UAAW,GACX,QAAS,EAAU,SAAS,KAGpC,YAAY,EAAS,CACjB,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,OAAO,GACd,UAAW,GACX,QAAS,EAAU,SAAS,KAGpC,WAAW,EAAO,EAAS,CACvB,OAAO,KAAK,UAAU,CAClB,KAAM,aACN,QACA,QAAS,EAAU,SAAS,KAGpC,IAAI,UAAW,CACX,IAAI,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACnB,EAAG,OAAS,QACR,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,EAEX,IAAI,UAAW,CACX,IAAI,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACnB,EAAG,OAAS,QACR,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,IAGf,GAAU,OAAU,GACT,IAAI,GAAU,CACjB,OAAQ,GACR,SAAU,EAAsB,UAChC,OAAQ,GAAQ,QAAU,GAC1B,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAAgC,CAAQ,CACpC,OAAO,EAAO,CACN,KAAK,KAAK,SACV,EAAM,KAAO,EAAQ,EAAM,MAE/B,IAAMI,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,QAAS,CACtC,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,QACxB,SAAU,EAAI,aAEX,EAEX,OAAO,EAAG,EAAM,QAGxB,GAAW,OAAU,GACV,IAAI,GAAW,CAClB,SAAU,EAAsB,WAChC,OAAQ,GAAQ,QAAU,GAC1B,GAAG,EAAoB,KAG/B,IAAa,GAAb,MAAa,UAAgB,CAAQ,CACjC,OAAO,EAAO,CACN,KAAK,KAAK,SACV,EAAM,KAAO,IAAI,KAAK,EAAM,OAEhC,IAAMA,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,KAAM,CACnC,IAAMC,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkBA,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,KACxB,SAAUA,EAAI,aAEX,EAEX,GAAI,OAAO,MAAM,EAAM,KAAK,WAAY,CACpC,IAAMA,EAAM,KAAK,gBAAgB,GAIjC,OAHA,EAAkBA,EAAK,CACnB,KAAM,EAAa,eAEhB,EAEX,IAAM,EAAS,IAAI,EACf,EACJ,IAAK,IAAML,KAAS,KAAK,KAAK,OACtBA,EAAM,OAAS,MACX,EAAM,KAAK,UAAYA,EAAM,QAC7B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,UACnB,QAASA,EAAM,QACf,UAAW,GACX,MAAO,GACP,QAASA,EAAM,MACf,KAAM,SAEV,EAAO,SAGNA,EAAM,OAAS,MAChB,EAAM,KAAK,UAAYA,EAAM,QAC7B,EAAM,KAAK,gBAAgB,EAAO,GAClC,EAAkB,EAAK,CACnB,KAAM,EAAa,QACnB,QAASA,EAAM,QACf,UAAW,GACX,MAAO,GACP,QAASA,EAAM,MACf,KAAM,SAEV,EAAO,SAIX,EAAK,YAAYA,GAGzB,MAAO,CACH,OAAQ,EAAO,MACf,MAAO,IAAI,KAAK,EAAM,KAAK,YAGnC,UAAU,EAAO,CACb,OAAO,IAAI,EAAQ,CACf,GAAG,KAAK,KACR,OAAQ,CAAC,GAAG,KAAK,KAAK,OAAQA,KAGtC,IAAI,EAAS,EAAS,CAClB,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,EAAQ,UACf,QAAS,EAAU,SAAS,KAGpC,IAAI,EAAS,EAAS,CAClB,OAAO,KAAK,UAAU,CAClB,KAAM,MACN,MAAO,EAAQ,UACf,QAAS,EAAU,SAAS,KAGpC,IAAI,SAAU,CACV,IAAI,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACnB,EAAG,OAAS,QACR,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,GAAO,KAAuB,KAAhB,IAAI,KAAK,GAElC,IAAI,SAAU,CACV,IAAI,EAAM,KACV,IAAK,IAAM,KAAM,KAAK,KAAK,OACnB,EAAG,OAAS,QACR,IAAQ,MAAQ,EAAG,MAAQ,KAC3B,EAAM,EAAG,OAGrB,OAAO,GAAO,KAAuB,KAAhB,IAAI,KAAK,KAGtC,GAAQ,OAAU,GACP,IAAI,GAAQ,CACf,OAAQ,GACR,OAAQ,GAAQ,QAAU,GAC1B,SAAU,EAAsB,QAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAA+B,CAAQ,CACnC,OAAO,EAAO,CACV,IAAMI,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,OAAQ,CACrC,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,OACxB,SAAU,EAAI,aAEX,EAEX,OAAO,EAAG,EAAM,QAGxB,GAAU,OAAU,GACT,IAAI,GAAU,CACjB,SAAU,EAAsB,UAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAAkC,CAAQ,CACtC,OAAO,EAAO,CACV,IAAMA,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,UAAW,CACxC,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,UACxB,SAAU,EAAI,aAEX,EAEX,OAAO,EAAG,EAAM,QAGxB,GAAa,OAAU,GACZ,IAAI,GAAa,CACpB,SAAU,EAAsB,aAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAA6B,CAAQ,CACjC,OAAO,EAAO,CACV,IAAMA,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,KAAM,CACnC,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,KACxB,SAAU,EAAI,aAEX,EAEX,OAAO,EAAG,EAAM,QAGxB,GAAQ,OAAU,GACP,IAAI,GAAQ,CACf,SAAU,EAAsB,QAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAA4B,CAAQ,CAChC,aAAc,CACV,MAAM,GAAG,WAET,KAAK,KAAO,GAEhB,OAAO,EAAO,CACV,OAAO,EAAG,EAAM,QAGxB,GAAO,OAAU,GACN,IAAI,GAAO,CACd,SAAU,EAAsB,OAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAAgC,CAAQ,CACpC,aAAc,CACV,MAAM,GAAG,WAET,KAAK,SAAW,GAEpB,OAAO,EAAO,CACV,OAAO,EAAG,EAAM,QAGxB,GAAW,OAAU,GACV,IAAI,GAAW,CAClB,SAAU,EAAsB,WAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAA8B,CAAQ,CAClC,OAAO,EAAO,CACV,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,MACxB,SAAU,EAAI,aAEX,IAGf,GAAS,OAAU,GACR,IAAI,GAAS,CAChB,SAAU,EAAsB,SAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAA6B,CAAQ,CACjC,OAAO,EAAO,CACV,IAAMA,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,UAAW,CACxC,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,KACxB,SAAU,EAAI,aAEX,EAEX,OAAO,EAAG,EAAM,QAGxB,GAAQ,OAAU,GACP,IAAI,GAAQ,CACf,SAAU,EAAsB,QAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,MAAa,UAAiB,CAAQ,CAClC,OAAO,EAAO,CACV,GAAM,CAAE,MAAK,UAAW,KAAK,oBAAoB,GAC3C,EAAM,KAAK,KACjB,GAAI,EAAI,aAAe,EAAc,MAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,MACxB,SAAU,EAAI,aAEX,EAEX,GAAI,EAAI,cAAgB,KAAM,CAC1B,IAAM,EAAS,EAAI,KAAK,OAAS,EAAI,YAAY,MAC3C,EAAW,EAAI,KAAK,OAAS,EAAI,YAAY,OAC/C,GAAU,KACV,EAAkB,EAAK,CACnB,KAAM,EAAS,EAAa,QAAU,EAAa,UACnD,QAAU,EAAW,EAAI,YAAY,MAAQ,IAAA,GAC7C,QAAU,EAAS,EAAI,YAAY,MAAQ,IAAA,GAC3C,KAAM,QACN,UAAW,GACX,MAAO,GACP,QAAS,EAAI,YAAY,UAE7B,EAAO,SA6Bf,GA1BI,EAAI,YAAc,MACd,EAAI,KAAK,OAAS,EAAI,UAAU,QAChC,EAAkB,EAAK,CACnB,KAAM,EAAa,UACnB,QAAS,EAAI,UAAU,MACvB,KAAM,QACN,UAAW,GACX,MAAO,GACP,QAAS,EAAI,UAAU,UAE3B,EAAO,SAGX,EAAI,YAAc,MACd,EAAI,KAAK,OAAS,EAAI,UAAU,QAChC,EAAkB,EAAK,CACnB,KAAM,EAAa,QACnB,QAAS,EAAI,UAAU,MACvB,KAAM,QACN,UAAW,GACX,MAAO,GACP,QAAS,EAAI,UAAU,UAE3B,EAAO,SAGX,EAAI,OAAO,MACX,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAI,MAAM,KAAK,EAAM,IACjC,EAAI,KAAK,YAAY,IAAI,GAAmB,EAAK,EAAM,EAAI,KAAM,MACxE,KAAM,GACC,EAAY,WAAW,EAAQkC,IAG9C,IAAM,EAAS,CAAC,GAAG,EAAI,MAAM,KAAK,EAAM,IAC7B,EAAI,KAAK,WAAW,IAAI,GAAmB,EAAK,EAAM,EAAI,KAAM,KAE3E,OAAO,EAAY,WAAW,EAAQ,GAE1C,IAAI,SAAU,CACV,OAAO,KAAK,KAAK,KAErB,IAAI,EAAW,EAAS,CACpB,OAAO,IAAI,EAAS,CAChB,GAAG,KAAK,KACR,UAAW,CAAE,MAAO,EAAW,QAAS,EAAU,SAAS,MAGnE,IAAI,EAAW,EAAS,CACpB,OAAO,IAAI,EAAS,CAChB,GAAG,KAAK,KACR,UAAW,CAAE,MAAO,EAAW,QAAS,EAAU,SAAS,MAGnE,OAAO,EAAK,EAAS,CACjB,OAAO,IAAI,EAAS,CAChB,GAAG,KAAK,KACR,YAAa,CAAE,MAAO,EAAK,QAAS,EAAU,SAAS,MAG/D,SAAS,EAAS,CACd,OAAO,KAAK,IAAI,EAAG,KAG3B,GAAS,QAAU,EAAQ,IAChB,IAAI,GAAS,CAChB,KAAMU,EACN,UAAW,KACX,UAAW,KACX,YAAa,KACb,SAAU,EAAsB,SAChC,GAAG,EAAoB,KAG/B,SAAS,GAAe,EAAQ,CAC5B,GAAIA,aAAkB,GAAW,CAC7B,IAAM,EAAW,GACjB,IAAK,IAAM,KAAOA,EAAO,MAAO,CAC5B,IAAM,EAAcA,EAAO,MAAM,GACjC,EAAS,GAAO,GAAY,OAAO,GAAe,IAEtD,OAAO,IAAI,GAAU,CACjB,GAAGA,EAAO,KACV,UAAa,YAGZA,aAAkB,GACvB,OAAO,IAAI,GAAS,CAChB,GAAGA,EAAO,KACV,KAAM,GAAeA,EAAO,mBAG3BA,aAAkB,GACvB,OAAO,GAAY,OAAO,GAAeA,EAAO,mBAE3CA,aAAkB,GACvB,OAAO,GAAY,OAAO,GAAeA,EAAO,mBAE3CA,aAAkB,GACvB,OAAO,GAAS,OAAOA,EAAO,MAAM,IAAK,GAAS,GAAe,UAGjE,OAAOA,EAGf,IAAa,GAAb,MAAa,UAAkB,CAAQ,CACnC,aAAc,CACV,MAAM,GAAG,WACT,KAAK,QAAU,KAKf,KAAK,UAAY,KAAK,YAqCtB,KAAK,QAAU,KAAK,OAExB,YAAa,CACT,GAAI,KAAK,UAAY,KACjB,OAAO,KAAK,QAChB,IAAM,EAAQ,KAAK,KAAK,QAClB,EAAO,EAAK,WAAW,GAE7B,MADA,MAAK,QAAU,CAAE,QAAO,QACjB,KAAK,QAEhB,OAAO,EAAO,CACV,IAAM5C,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,OAAQ,CACrC,IAAMC,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkBA,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,OACxB,SAAUA,EAAI,aAEX,EAEX,GAAM,CAAE,SAAQ,OAAQ,KAAK,oBAAoB,GAC3C,CAAE,QAAO,KAAM,GAAc,KAAK,aAClC,EAAY,GAClB,GAAI,EAAE,KAAK,KAAK,oBAAoB,IAAY,KAAK,KAAK,cAAgB,aACjE,IAAM,KAAO,EAAI,KACb,EAAU,SAAS,IACpB,EAAU,KAAK,GAI3B,IAAM,EAAQ,GACd,IAAK,IAAM,KAAO,EAAW,CACzB,IAAM,EAAe,EAAM,GACrB,EAAQ,EAAI,KAAK,GACvB,EAAM,KAAK,CACP,IAAK,CAAE,OAAQ,QAAS,MAAO,GAC/B,MAAO,EAAa,OAAO,IAAI,GAAmB,EAAK,EAAO,EAAI,KAAM,IACxE,UAAW,KAAO,EAAI,OAG9B,GAAI,KAAK,KAAK,oBAAoB,GAAU,CACxC,IAAM,EAAc,KAAK,KAAK,YAC9B,GAAI,IAAgB,cAChB,IAAK,IAAM,KAAO,EACd,EAAM,KAAK,CACP,IAAK,CAAE,OAAQ,QAAS,MAAO,GAC/B,MAAO,CAAE,OAAQ,QAAS,MAAO,EAAI,KAAK,cAI7C,IAAgB,SACjB,EAAU,OAAS,IACnB,EAAkB,EAAK,CACnB,KAAM,EAAa,kBACnB,KAAM,IAEV,EAAO,iBAGN,IAAgB,QAGrB,MAAU,MAAM,4DAGnB,CAED,IAAM,EAAW,KAAK,KAAK,SAC3B,IAAK,IAAM,KAAO,EAAW,CACzB,IAAM,EAAQ,EAAI,KAAK,GACvB,EAAM,KAAK,CACP,IAAK,CAAE,OAAQ,QAAS,MAAO,GAC/B,MAAO,EAAS,OAAO,IAAI,GAAmB,EAAK,EAAO,EAAI,KAAM,IAEpE,UAAW,KAAO,EAAI,QAwB9B,OApBA,EAAI,OAAO,MACJ,QAAQ,UACV,KAAK,SAAY,CAClB,IAAM,EAAY,GAClB,IAAK,IAAM,KAAQ,EAAO,CACtB,IAAM,EAAM,MAAM,EAAK,IACjB,EAAQ,MAAM,EAAK,MACzB,EAAU,KAAK,CACX,MACA,QACA,UAAW,EAAK,YAGxB,OAAO,IAEN,KAAM,GACA,EAAY,gBAAgB,EAAQ,IAIxC,EAAY,gBAAgB,EAAQ,GAGnD,IAAI,OAAQ,CACR,OAAO,KAAK,KAAK,QAErB,OAAO,EAAS,CAEZ,OADA,EAAU,SACH,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,YAAa,SACb,GAAI,IAAY,IAAA,GAaV,GAZA,CACE,UAAW,EAAO,IAAQ,CACtB,IAAM,EAAe,KAAK,KAAK,WAAWG,EAAO,GAAK,SAAW,EAAI,aAKrE,OAJIA,EAAM,OAAS,oBACR,CACH,QAAS,EAAU,SAAS,GAAS,SAAW,GAEjD,CACH,QAAS,OAOjC,OAAQ,CACJ,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,YAAa,UAGrB,aAAc,CACV,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,YAAa,gBAoBrB,OAAO,EAAc,CACjB,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,WAAc,CACV,GAAG,KAAK,KAAK,QACb,GAAG,MASf,MAAM,EAAS,CACX,IAAM,EAAS,IAAI,EAAU,CACzB,YAAa,EAAQ,KAAK,YAC1B,SAAU,EAAQ,KAAK,SACvB,WAAc,CACV,GAAG,KAAK,KAAK,QACb,GAAG,EAAQ,KAAK,UAEpB,SAAU,EAAsB,YAEpC,OAAO,EAqCX,OAAO,EAAK,EAAQ,CAChB,OAAO,KAAK,QAAQ,EAAG,GAAMwC,IAuBjC,SAAS,EAAO,CACZ,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,SAAU,IAGlB,KAAK,EAAM,CACP,IAAM,EAAQ,GACd,IAAK,IAAM,KAAO,EAAK,WAAW,GAC1B,EAAK,IAAQ,KAAK,MAAM,KACxB,EAAM,GAAO,KAAK,MAAM,IAGhC,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,UAAa,IAGrB,KAAK,EAAM,CACP,IAAM,EAAQ,GACd,IAAK,IAAM,KAAO,EAAK,WAAW,KAAK,OAC9B,EAAK,KACN,EAAM,GAAO,KAAK,MAAM,IAGhC,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,UAAa,IAMrB,aAAc,CACV,OAAO,GAAe,MAE1B,QAAQ,EAAM,CACV,IAAM,EAAW,GACjB,IAAK,IAAM,KAAO,EAAK,WAAW,KAAK,OAAQ,CAC3C,IAAM,EAAc,KAAK,MAAM,GAC3B,GAAQ,CAAC,EAAK,GACd,EAAS,GAAO,EAGhB,EAAS,GAAO,EAAY,WAGpC,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,UAAa,IAGrB,SAAS,EAAM,CACX,IAAM,EAAW,GACjB,IAAK,IAAM,KAAO,EAAK,WAAW,KAAK,OACnC,GAAI,GAAQ,CAAC,EAAK,GACd,EAAS,GAAO,KAAK,MAAM,OAE1B,CACD,IAAM,EAAc,KAAK,MAAM,GAC3B,EAAW,EACf,KAAO,aAAoB,IACvB,EAAW,EAAS,KAAK,UAE7B,EAAS,GAAO,EAGxB,OAAO,IAAI,EAAU,CACjB,GAAG,KAAK,KACR,UAAa,IAGrB,OAAQ,CACJ,OAAO,GAAc,EAAK,WAAW,KAAK,UAGlD,GAAU,QAAU,EAAO,IAChB,IAAI,GAAU,CACjB,UAAa,EACb,YAAa,QACb,SAAU,GAAS,SACnB,SAAU,EAAsB,UAChC,GAAG,EAAoB,KAG/B,GAAU,cAAgB,EAAO,IACtB,IAAI,GAAU,CACjB,UAAa,EACb,YAAa,SACb,SAAU,GAAS,SACnB,SAAU,EAAsB,UAChC,GAAG,EAAoB,KAG/B,GAAU,YAAc,EAAO,IACpB,IAAI,GAAU,CACjB,QACA,YAAa,QACb,SAAU,GAAS,SACnB,SAAU,EAAsB,UAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAA8B,CAAQ,CAClC,OAAO,EAAO,CACV,GAAM,CAAE,OAAQ,KAAK,oBAAoB,GACnC,EAAU,KAAK,KAAK,QAC1B,SAAS,EAAc,EAAS,CAE5B,IAAK,IAAM,KAAU,EACjB,GAAI,EAAO,OAAO,SAAW,QACzB,OAAO,EAAO,OAGtB,IAAK,IAAM,KAAU,EACjB,GAAI,EAAO,OAAO,SAAW,QAGzB,OADA,EAAI,OAAO,OAAO,KAAK,GAAG,EAAO,IAAI,OAAO,QACrC,EAAO,OAItB,IAAM,EAAc,EAAQ,IAAK,GAAW,IAAI,GAAS,EAAO,IAAI,OAAO,SAK3E,OAJA,EAAkB,EAAK,CACnB,KAAM,EAAa,cACnB,gBAEG,EAEX,GAAI,EAAI,OAAO,MACX,OAAO,QAAQ,IAAI,EAAQ,IAAI,KAAO,IAAW,CAC7C,IAAM,EAAW,CACb,GAAG,EACH,OAAQ,CACJ,GAAG,EAAI,OACP,OAAQ,IAEZ,OAAQ,MAEZ,MAAO,CACH,OAAQ,MAAM,EAAO,YAAY,CAC7B,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IAEZ,IAAK,MAET,KAAK,GAER,CACD,IAAI,EACE,EAAS,GACf,IAAK,IAAM,KAAU,EAAS,CAC1B,IAAM,EAAW,CACb,GAAG,EACH,OAAQ,CACJ,GAAG,EAAI,OACP,OAAQ,IAEZ,OAAQ,MAEN,EAAS,EAAO,WAAW,CAC7B,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IAEZ,GAAI,EAAO,SAAW,QAClB,OAAO,EAEF,EAAO,SAAW,SAAW,CAAC,IACnC,EAAQ,CAAE,SAAQ,IAAK,IAEvB,EAAS,OAAO,OAAO,QACvB,EAAO,KAAK,EAAS,OAAO,QAGpC,GAAI,EAEA,OADA,EAAI,OAAO,OAAO,KAAK,GAAG,EAAM,IAAI,OAAO,QACpC,EAAM,OAEjB,IAAM,EAAc,EAAO,IAAK,GAAW,IAAI,GAASvC,IAKxD,OAJA,EAAkB,EAAK,CACnB,KAAM,EAAa,cACnB,gBAEG,GAGf,IAAI,SAAU,CACV,OAAO,KAAK,KAAK,UAGzB,GAAS,QAAU,EAAO,IACf,IAAI,GAAS,CAChB,QAAS,EACT,SAAU,EAAsB,SAChC,GAAG,EAAoB,KAU/B,MAAM,GAAoB,GAClB,aAAgB,GACT,GAAiB,EAAK,QAExB,aAAgB,GACd,GAAiB,EAAK,aAExB,aAAgB,GACd,CAAC,EAAK,OAER,aAAgB,GACd,EAAK,QAEP,aAAgB,GAEd,EAAK,aAAa,EAAK,MAEzB,aAAgB,GACd,GAAiB,EAAK,KAAK,WAE7B,aAAgB,GACd,CAAC,IAAA,IAEH,aAAgB,GACd,CAAC,MAEH,aAAgB,GACd,CAAC,IAAA,GAAW,GAAG,GAAiB,EAAK,WAEvC,aAAgB,GACd,CAAC,KAAM,GAAG,GAAiB,EAAK,WAElC,aAAgB,IAGhB,aAAgB,GAFd,GAAiB,EAAK,UAKxB,aAAgB,GACd,GAAiB,EAAK,KAAK,WAG3B,GAGf,IAAa,GAAb,MAAa,UAA8B,CAAQ,CAC/C,OAAO,EAAO,CACV,GAAM,CAAE,OAAQ,KAAK,oBAAoB,GACzC,GAAI,EAAI,aAAe,EAAc,OAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,OACxB,SAAU,EAAI,aAEX,EAEX,IAAM,EAAgB,KAAK,cACrB,EAAqB,EAAI,KAAK,GAC9B,EAAS,KAAK,WAAW,IAAI,GAiB/B,OAhBC,EAQD,EAAI,OAAO,MACJ,EAAO,YAAY,CACtB,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IAIL,EAAO,WAAW,CACrB,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,KAlBZ,EAAkB,EAAK,CACnB,KAAM,EAAa,4BACnB,QAAS,MAAM,KAAK,KAAK,WAAW,QACpC,KAAM,CAAC,KAEJ,GAiBf,IAAI,eAAgB,CAChB,OAAO,KAAK,KAAK,cAErB,IAAI,SAAU,CACV,OAAO,KAAK,KAAK,QAErB,IAAI,YAAa,CACb,OAAO,KAAK,KAAK,WAUrB,OAAO,OAAO,EAAe,EAAS,EAAQ,CAE1C,IAAM,EAAa,IAAI,IAEvB,IAAK,IAAM,KAAQ,EAAS,CACxB,IAAM,EAAsB,GAAiB,EAAK,MAAM,IACxD,GAAI,CAAC,EAAoB,OACrB,MAAU,MAAM,mCAAmC,EAAc,oDAErE,IAAK,IAAM,KAAS,EAAqB,CACrC,GAAI,EAAW,IAAI,GACf,MAAU,MAAM,0BAA0B,OAAO,GAAe,uBAAuB,OAAO,MAElG,EAAW,IAAI,EAAO,IAG9B,OAAO,IAAI,EAAsB,CAC7B,SAAU,EAAsB,sBAChC,gBACA,UACA,aACA,GAAG,EAAoB,OAInC,SAAS,GAAY,EAAG,EAAG,CACvB,IAAM,EAAQ,GAAc,GACtB,EAAQ,GAAc,GAC5B,GAAI,IAAM,EACN,MAAO,CAAE,MAAO,GAAM,KAAM,MAEvB,IAAU,EAAc,QAAU,IAAU,EAAc,OAAQ,CACvE,IAAM,EAAQ,EAAK,WAAW,GACxB,EAAa,EAAK,WAAW,GAAG,OAAQ,GAAQ,EAAM,QAAQ,KAAS,IACvE,EAAS,CAAE,GAAG,EAAG,GAAG,GAC1B,IAAK,IAAM,KAAO,EAAY,CAC1B,IAAM,EAAc,GAAY,EAAE,GAAM,EAAE,IAC1C,GAAI,CAAC,EAAY,MACb,MAAO,CAAE,MAAO,IAEpB,EAAO,GAAO,EAAY,KAE9B,MAAO,CAAE,MAAO,GAAM,KAAM,WAEvB,IAAU,EAAc,OAAS,IAAU,EAAc,MAAO,CACrE,GAAI,EAAE,SAAW,EAAE,OACf,MAAO,CAAE,MAAO,IAEpB,IAAM,EAAW,GACjB,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAE,OAAQ,IAAS,CAC3C,IAAM,EAAQ,EAAE,GACV,EAAQ,EAAE,GACV,EAAc,GAAY,EAAO,GACvC,GAAI,CAAC,EAAY,MACb,MAAO,CAAE,MAAO,IAEpB,EAAS,KAAK,EAAY,MAE9B,MAAO,CAAE,MAAO,GAAM,KAAM,WAEvB,IAAU,EAAc,MAAQ,IAAU,EAAc,MAAQ,CAAC,GAAM,CAAC,EAC7E,MAAO,CAAE,MAAO,GAAM,KAAM,QAG5B,MAAO,CAAE,MAAO,IAGxB,IAAa,GAAb,cAAqC,CAAQ,CACzC,OAAO,EAAO,CACV,GAAM,CAAE,SAAQ,OAAQ,KAAK,oBAAoB,GAC3C,GAAgB,EAAY,IAAgB,CAC9C,GAAI,GAAU,IAAe,GAAU,GACnC,OAAO,EAEX,IAAM,EAAS,GAAY,EAAW,MAAO,EAAY,OAUzD,OATK,EAAO,QAMR,GAAQ,IAAe,GAAQ,KAC/B,EAAO,QAEJ,CAAE,OAAQ,EAAO,MAAO,MAAO,EAAO,QARzC,EAAkB,EAAK,CACnB,KAAM,EAAa,6BAEhB,IAsBX,OAfA,EAAI,OAAO,MACJ,QAAQ,IAAI,CACf,KAAK,KAAK,KAAK,YAAY,CACvB,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IAEZ,KAAK,KAAK,MAAM,YAAY,CACxB,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,MAEb,MAAM,CAAC,EAAM,KAAW,EAAa,EAAM,IAGvC,EAAa,KAAK,KAAK,KAAK,WAAW,CAC1C,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IACR,KAAK,KAAK,MAAM,WAAW,CAC3B,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,OAKxB,GAAgB,QAAU,EAAM,EAAO,IAC5B,IAAI,GAAgB,CACjB,OACC,QACP,SAAU,EAAsB,gBAChC,GAAG,EAAoB,KAI/B,IAAa,GAAb,MAAa,UAAiB,CAAQ,CAClC,OAAO,EAAO,CACV,GAAM,CAAE,SAAQ,OAAQ,KAAK,oBAAoB,GACjD,GAAI,EAAI,aAAe,EAAc,MAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,MACxB,SAAU,EAAI,aAEX,EAEX,GAAI,EAAI,KAAK,OAAS,KAAK,KAAK,MAAM,OAQlC,OAPA,EAAkB,EAAK,CACnB,KAAM,EAAa,UACnB,QAAS,KAAK,KAAK,MAAM,OACzB,UAAW,GACX,MAAO,GACP,KAAM,UAEH,EAEX,IAAM,EAAO,KAAK,KAAK,KACnB,CAAC,GAAQ,EAAI,KAAK,OAAS,KAAK,KAAK,MAAM,SAC3C,EAAkB,EAAK,CACnB,KAAM,EAAa,QACnB,QAAS,KAAK,KAAK,MAAM,OACzB,UAAW,GACX,MAAO,GACP,KAAM,UAEV,EAAO,SAEX,IAAM,EAAQ,CAAC,GAAG,EAAI,MACjB,KAAK,EAAM,IAAc,CAC1B,IAAMuC,EAAS,KAAK,KAAK,MAAM,IAAc,KAAK,KAAK,KAGvD,OAFKA,EAEEA,EAAO,OAAO,IAAI,GAAmB,EAAK,EAAM,EAAI,KAAM,IADtD,OAGV,OAAQ,GAAM,CAAC,CAAC,GAOjB,OANA,EAAI,OAAO,MACJ,QAAQ,IAAI,GAAO,KAAM,GACrB,EAAY,WAAW,EAAQ,IAInC,EAAY,WAAW,EAAQ,GAG9C,IAAI,OAAQ,CACR,OAAO,KAAK,KAAK,MAErB,KAAK,EAAM,CACP,OAAO,IAAI,EAAS,CAChB,GAAG,KAAK,KACR,WAIZ,GAAS,QAAU,EAAS,IAAW,CACnC,GAAI,CAAC,MAAM,QAAQ,GACf,MAAU,MAAM,yDAEpB,OAAO,IAAI,GAAS,CAChB,MAAO,EACP,SAAU,EAAsB,SAChC,KAAM,KACN,GAAG,EAAoB,MAG/B,IAAa,GAAb,MAAa,UAAkB,CAAQ,CACnC,IAAI,WAAY,CACZ,OAAO,KAAK,KAAK,QAErB,IAAI,aAAc,CACd,OAAO,KAAK,KAAK,UAErB,OAAO,EAAO,CACV,GAAM,CAAE,SAAQ,OAAQ,KAAK,oBAAoB,GACjD,GAAI,EAAI,aAAe,EAAc,OAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,OACxB,SAAU,EAAI,aAEX,EAEX,IAAM,EAAQ,GACR,EAAU,KAAK,KAAK,QACpB,EAAY,KAAK,KAAK,UAC5B,IAAK,IAAM,KAAO,EAAI,KAClB,EAAM,KAAK,CACP,IAAK,EAAQ,OAAO,IAAI,GAAmB,EAAK,EAAK,EAAI,KAAM,IAC/D,MAAO,EAAU,OAAO,IAAI,GAAmB,EAAK,EAAI,KAAK,GAAM,EAAI,KAAM,IAC7E,UAAW,KAAO,EAAI,OAO1B,OAJA,EAAI,OAAO,MACJ,EAAY,iBAAiB,EAAQ,GAGrC,EAAY,gBAAgB,EAAQ,GAGnD,IAAI,SAAU,CACV,OAAO,KAAK,KAAK,UAErB,OAAO,OAAO,EAAO,EAAQ,EAAO,CAShC,OARI,aAAkB,EACX,IAAI,EAAU,CACjB,QAAS,EACT,UAAW,EACX,SAAU,EAAsB,UAChC,GAAG,EAAoB,KAGxB,IAAI,EAAU,CACjB,QAAS,GAAU,SACnB,UAAW,EACX,SAAU,EAAsB,UAChC,GAAG,EAAoB,OAItB,GAAb,cAA4B,CAAQ,CAChC,IAAI,WAAY,CACZ,OAAO,KAAK,KAAK,QAErB,IAAI,aAAc,CACd,OAAO,KAAK,KAAK,UAErB,OAAO,EAAO,CACV,GAAM,CAAE,SAAQ,OAAQ,KAAK,oBAAoB,GACjD,GAAI,EAAI,aAAe,EAAc,IAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,IACxB,SAAU,EAAI,aAEX,EAEX,IAAM,EAAU,KAAK,KAAK,QACpB,EAAY,KAAK,KAAK,UACtB,EAAQ,CAAC,GAAG,EAAI,KAAK,WAAW,KAAK,CAAC,EAAK,GAAQ,KAC9C,CACH,IAAK,EAAQ,OAAO,IAAI,GAAmB,EAAK,EAAK,EAAI,KAAM,CAAC,EAAO,SACvE,MAAO,EAAU,OAAO,IAAI,GAAmB,EAAK,EAAO,EAAI,KAAM,CAAC,EAAO,cAGrF,GAAI,EAAI,OAAO,MAAO,CAClB,IAAM,EAAW,IAAI,IACrB,OAAO,QAAQ,UAAU,KAAK,SAAY,CACtC,IAAK,IAAM,KAAQ,EAAO,CACtB,IAAM,EAAM,MAAM,EAAK,IACjB,EAAQ,MAAM,EAAK,MACzB,GAAI,EAAI,SAAW,WAAa,EAAM,SAAW,UAC7C,OAAO,GAEP,EAAI,SAAW,SAAW,EAAM,SAAW,UAC3C,EAAO,QAEX,EAAS,IAAI,EAAI,MAAO,EAAM,OAElC,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,SAGzC,CACD,IAAM,EAAW,IAAI,IACrB,IAAK,IAAM,KAAQ,EAAO,CACtB,IAAM,EAAM,EAAK,IACX,EAAQ,EAAK,MACnB,GAAI,EAAI,SAAW,WAAa,EAAM,SAAW,UAC7C,OAAO,GAEP,EAAI,SAAW,SAAW,EAAM,SAAW,UAC3C,EAAO,QAEX,EAAS,IAAI,EAAI,MAAO,EAAM,OAElC,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,MAIlD,GAAO,QAAU,EAAS,EAAW,IAC1B,IAAI,GAAO,CACd,YACA,UACA,SAAU,EAAsB,OAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,MAAa,UAAe,CAAQ,CAChC,OAAO,EAAO,CACV,GAAM,CAAE,SAAQ,OAAQ,KAAK,oBAAoB,GACjD,GAAI,EAAI,aAAe,EAAc,IAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,IACxB,SAAU,EAAI,aAEX,EAEX,IAAM,EAAM,KAAK,KACb,EAAI,UAAY,MACZ,EAAI,KAAK,KAAO,EAAI,QAAQ,QAC5B,EAAkB,EAAK,CACnB,KAAM,EAAa,UACnB,QAAS,EAAI,QAAQ,MACrB,KAAM,MACN,UAAW,GACX,MAAO,GACP,QAAS,EAAI,QAAQ,UAEzB,EAAO,SAGX,EAAI,UAAY,MACZ,EAAI,KAAK,KAAO,EAAI,QAAQ,QAC5B,EAAkB,EAAK,CACnB,KAAM,EAAa,QACnB,QAAS,EAAI,QAAQ,MACrB,KAAM,MACN,UAAW,GACX,MAAO,GACP,QAAS,EAAI,QAAQ,UAEzB,EAAO,SAGf,IAAM,EAAY,KAAK,KAAK,UAC5B,SAAS,EAAY,EAAU,CAC3B,IAAM,EAAY,IAAI,IACtB,IAAK,IAAM,KAAWtC,EAAU,CAC5B,GAAI,EAAQ,SAAW,UACnB,OAAO,EACP,EAAQ,SAAW,SACnB,EAAO,QACX,EAAU,IAAI,EAAQ,OAE1B,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,GAE1C,IAAM,EAAW,CAAC,GAAG,EAAI,KAAK,UAAU,KAAK,EAAM,IAAM,EAAU,OAAO,IAAI,GAAmB,EAAK,EAAM,EAAI,KAAM,KAKlH,OAJA,EAAI,OAAO,MACJ,QAAQ,IAAI,GAAU,KAAM,GAAa,EAAYA,IAGrD,EAAY,GAG3B,IAAI,EAAS,EAAS,CAClB,OAAO,IAAI,EAAO,CACd,GAAG,KAAK,KACR,QAAS,CAAE,MAAO,EAAS,QAAS,EAAU,SAAS,MAG/D,IAAI,EAAS,EAAS,CAClB,OAAO,IAAI,EAAO,CACd,GAAG,KAAK,KACR,QAAS,CAAE,MAAO,EAAS,QAAS,EAAU,SAAS,MAG/D,KAAK,EAAM,EAAS,CAChB,OAAO,KAAK,IAAI,EAAM,GAAS,IAAI,EAAM,GAE7C,SAAS,EAAS,CACd,OAAO,KAAK,IAAI,EAAG,KAG3B,GAAO,QAAU,EAAW,IACjB,IAAI,GAAO,CACd,YACA,QAAS,KACT,QAAS,KACT,SAAU,EAAsB,OAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,MAAa,UAAoB,CAAQ,CACrC,aAAc,CACV,MAAM,GAAG,WACT,KAAK,SAAW,KAAK,UAEzB,OAAO,EAAO,CACV,GAAM,CAAE,OAAQ,KAAK,oBAAoB,GACzC,GAAI,EAAI,aAAe,EAAc,SAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,SACxB,SAAU,EAAI,aAEX,EAEX,SAAS,EAAc,EAAM,EAAO,CAChC,OAAO,GAAU,CACb,KAAM,EACN,KAAM,EAAI,KACV,UAAW,CAAC,EAAI,OAAO,mBAAoB,EAAI,eAAgB,KAAeC,IAAiB,OAAQ,GAAM,CAAC,CAAC,GAC/G,UAAW,CACP,KAAM,EAAa,kBACnB,eAAgBwC,KAI5B,SAAS,EAAiB,EAAS,EAAO,CACtC,OAAO,GAAU,CACb,KAAM,EACN,KAAM,EAAI,KACV,UAAW,CAAC,EAAI,OAAO,mBAAoB,EAAI,eAAgB,KAAexC,IAAiB,OAAQ,GAAM,CAAC,CAAC,GAC/G,UAAW,CACP,KAAM,EAAa,oBACnB,gBAAiBwC,KAI7B,IAAM,EAAS,CAAE,SAAU,EAAI,OAAO,oBAChC,EAAK,EAAI,KACf,GAAI,KAAK,KAAK,mBAAmB,GAAY,CAIzC,IAAM,EAAK,KACX,OAAO,EAAG,eAAgB,GAAG,EAAM,CAC/B,IAAMA,EAAQ,IAAI,GAAS,IACrB,EAAa,MAAM,EAAG,KAAK,KAAK,WAAW,EAAM,GAAQ,MAAO,GAAM,CAExE,MADA,EAAM,SAAS,EAAc,EAAM,IAC7BA,IAEJ,EAAS,MAAM,QAAQ,MAAM,EAAI,KAAM,GACvC,EAAgB,MAAM,EAAG,KAAK,QAAQ,KAAK,KAC5C,WAAW,EAAQ,GACnB,MAAO,GAAM,CAEd,MADA,EAAM,SAAS,EAAiB,EAAQ,IAClCA,IAEV,OAAO,QAGV,CAID,IAAM,EAAK,KACX,OAAO,EAAG,SAAU,GAAG,EAAM,CACzB,IAAM,EAAa,EAAG,KAAK,KAAK,UAAU,EAAM,GAChD,GAAI,CAAC,EAAW,QACZ,MAAM,IAAI,GAAS,CAAC,EAAc,EAAM,EAAW,SAEvD,IAAM,EAAS,QAAQ,MAAM,EAAI,KAAM,EAAW,MAC5C,EAAgB,EAAG,KAAK,QAAQ,UAAU,EAAQ,GACxD,GAAI,CAAC,EAAc,QACf,MAAM,IAAI,GAAS,CAAC,EAAiB,EAAQ,EAAc,SAE/D,OAAO,EAAc,QAIjC,YAAa,CACT,OAAO,KAAK,KAAK,KAErB,YAAa,CACT,OAAO,KAAK,KAAK,QAErB,KAAK,GAAG,EAAO,CACX,OAAO,IAAI,EAAY,CACnB,GAAG,KAAK,KACR,KAAM,GAAS,OAAO,GAAO,KAAK,GAAW,YAGrD,QAAQ,EAAY,CAChB,OAAO,IAAI,EAAY,CACnB,GAAG,KAAK,KACR,QAAS,IAGjB,UAAU,EAAM,CACZ,IAAM,EAAgB,KAAK,MAAM,GACjC,OAAO,EAEX,gBAAgB,EAAM,CAClB,IAAM,EAAgB,KAAK,MAAM,GACjC,OAAO,EAEX,OAAO,OAAO,EAAM,EAAS,EAAQ,CACjC,OAAO,IAAI,EAAY,CACnB,KAAO,GAAc,GAAS,OAAO,IAAI,KAAK,GAAW,UACzD,QAAS,GAAW,GAAW,SAC/B,SAAU,EAAsB,YAChC,GAAG,EAAoB,OAItB,GAAb,cAA6B,CAAQ,CACjC,IAAI,QAAS,CACT,OAAO,KAAK,KAAK,SAErB,OAAO,EAAO,CACV,GAAM,CAAE,OAAQ,KAAK,oBAAoB,GACnC,EAAa,KAAK,KAAK,SAC7B,OAAO,EAAW,OAAO,CAAE,KAAM,EAAI,KAAM,KAAM,EAAI,KAAM,OAAQ,MAG3E,GAAQ,QAAU,EAAQ,IACf,IAAI,GAAQ,CACP,SACR,SAAU,EAAsB,QAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAAgC,CAAQ,CACpC,OAAO,EAAO,CACV,GAAI,EAAM,OAAS,KAAK,KAAK,MAAO,CAChC,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,SAAU,EAAI,KACd,KAAM,EAAa,gBACnB,SAAU,KAAK,KAAK,QAEjB,EAEX,MAAO,CAAE,OAAQ,QAAS,MAAO,EAAM,MAE3C,IAAI,OAAQ,CACR,OAAO,KAAK,KAAK,QAGzB,GAAW,QAAU,EAAO,IACjB,IAAI,GAAW,CACX,QACP,SAAU,EAAsB,WAChC,GAAG,EAAoB,KAG/B,SAAS,GAAc,EAAQ,EAAQ,CACnC,OAAO,IAAI,GAAQ,CACf,SACA,SAAU,EAAsB,QAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,MAAa,UAAgB,CAAQ,CACjC,OAAO,EAAO,CACV,GAAI,OAAO,EAAM,MAAS,SAAU,CAChC,IAAM,EAAM,KAAK,gBAAgB,GAC3B,EAAiB,KAAK,KAAK,OAMjC,OALA,EAAkB,EAAK,CACnB,SAAU,EAAK,WAAW,GAC1B,SAAU,EAAI,WACd,KAAM,EAAa,eAEhB,EAKX,GAHA,AACI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,QAEhC,CAAC,KAAK,OAAO,IAAI,EAAM,MAAO,CAC9B,IAAM,EAAM,KAAK,gBAAgB,GAC3B,EAAiB,KAAK,KAAK,OAMjC,OALA,EAAkB,EAAK,CACnB,SAAU,EAAI,KACd,KAAM,EAAa,mBACnB,QAAS,IAEN,EAEX,OAAO,EAAG,EAAM,MAEpB,IAAI,SAAU,CACV,OAAO,KAAK,KAAK,OAErB,IAAI,MAAO,CACP,IAAM,EAAa,GACnB,IAAK,IAAM,KAAO,KAAK,KAAK,OACxB,EAAW,GAAO,EAEtB,OAAO,EAEX,IAAI,QAAS,CACT,IAAM,EAAa,GACnB,IAAK,IAAM,KAAO,KAAK,KAAK,OACxB,EAAW,GAAO,EAEtB,OAAO,EAEX,IAAI,MAAO,CACP,IAAM,EAAa,GACnB,IAAK,IAAM,KAAO,KAAK,KAAK,OACxB,EAAW,GAAO,EAEtB,OAAO,EAEX,QAAQ,EAAQ,EAAS,KAAK,KAAM,CAChC,OAAO,EAAQ,OAAO,EAAQ,CAC1B,GAAG,KAAK,KACR,GAAG,IAGX,QAAQ,EAAQ,EAAS,KAAK,KAAM,CAChC,OAAO,EAAQ,OAAO,KAAK,QAAQ,OAAQ,GAAQ,CAAC,EAAO,SAAS,IAAO,CACvE,GAAG,KAAK,KACR,GAAG,MAIf,GAAQ,OAAS,GACjB,IAAa,GAAb,cAAmC,CAAQ,CACvC,OAAO,EAAO,CACV,IAAM,EAAmB,EAAK,mBAAmB,KAAK,KAAK,QACrD,EAAM,KAAK,gBAAgB,GACjC,GAAI,EAAI,aAAe,EAAc,QAAU,EAAI,aAAe,EAAc,OAAQ,CACpF,IAAM,EAAiB,EAAK,aAAa,GAMzC,OALA,EAAkB,EAAK,CACnB,SAAU,EAAK,WAAW,GAC1B,SAAU,EAAI,WACd,KAAM,EAAa,eAEhB,EAKX,GAHA,AACI,KAAK,SAAS,IAAI,IAAI,EAAK,mBAAmB,KAAK,KAAK,SAExD,CAAC,KAAK,OAAO,IAAI,EAAM,MAAO,CAC9B,IAAM,EAAiB,EAAK,aAAa,GAMzC,OALA,EAAkB,EAAK,CACnB,SAAU,EAAI,KACd,KAAM,EAAa,mBACnB,QAAS,IAEN,EAEX,OAAO,EAAG,EAAM,MAEpB,IAAI,MAAO,CACP,OAAO,KAAK,KAAK,SAGzB,GAAc,QAAU,EAAQ,IACrB,IAAI,GAAc,CACb,SACR,SAAU,EAAsB,cAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAAgC,CAAQ,CACpC,QAAS,CACL,OAAO,KAAK,KAAK,KAErB,OAAO,EAAO,CACV,GAAM,CAAE,OAAQ,KAAK,oBAAoB,GACzC,GAAI,EAAI,aAAe,EAAc,SAAW,EAAI,OAAO,QAAU,GAMjE,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,QACxB,SAAU,EAAI,aAEX,EAEX,IAAM,EAAc,EAAI,aAAe,EAAc,QAAU,EAAI,KAAO,QAAQ,QAAQ,EAAI,MAC9F,OAAO,EAAG,EAAY,KAAM,GACjB,KAAK,KAAK,KAAK,WAAW,EAAM,CACnC,KAAM,EAAI,KACV,SAAU,EAAI,OAAO,yBAKrC,GAAW,QAAU,EAAQ,IAClB,IAAI,GAAW,CAClB,KAAMH,EACN,SAAU,EAAsB,WAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAAgC,CAAQ,CACpC,WAAY,CACR,OAAO,KAAK,KAAK,OAErB,YAAa,CACT,OAAO,KAAK,KAAK,OAAO,KAAK,WAAa,EAAsB,WAC1D,KAAK,KAAK,OAAO,aACjB,KAAK,KAAK,OAEpB,OAAO,EAAO,CACV,GAAM,CAAE,SAAQ,OAAQ,KAAK,oBAAoB,GAC3C,EAAS,KAAK,KAAK,QAAU,KAC7B,EAAW,CACb,SAAW,GAAQ,CACf,EAAkB,EAAK,GACnB,EAAI,MACJ,EAAO,QAGP,EAAO,SAGf,IAAI,MAAO,CACP,OAAO,EAAI,OAInB,GADA,EAAS,SAAW,EAAS,SAAS,KAAK,GACvC,EAAO,OAAS,aAAc,CAC9B,IAAM,EAAY,EAAO,UAAU,EAAI,KAAM,GAC7C,GAAI,EAAI,OAAO,MACX,OAAO,QAAQ,QAAQ,GAAW,KAAK,KAAO,IAAc,CACxD,GAAI,EAAO,QAAU,UACjB,OAAO,EACX,IAAM,EAAS,MAAM,KAAK,KAAK,OAAO,YAAY,CAC9C,KAAMpC,EACN,KAAM,EAAI,KACV,OAAQ,IAQZ,OANI,EAAO,SAAW,UACX,EACP,EAAO,SAAW,SAElB,EAAO,QAAU,QACV,GAAM,EAAO,OACjB,IAGV,CACD,GAAI,EAAO,QAAU,UACjB,OAAO,EACX,IAAM,EAAS,KAAK,KAAK,OAAO,WAAW,CACvC,KAAM,EACN,KAAM,EAAI,KACV,OAAQ,IAQZ,OANI,EAAO,SAAW,UACX,EACP,EAAO,SAAW,SAElB,EAAO,QAAU,QACV,GAAM,EAAO,OACjB,GAGf,GAAI,EAAO,OAAS,aAAc,CAC9B,IAAM,EAAqB,GAAQ,CAC/B,IAAM,EAAS,EAAO,WAAW,EAAK,GACtC,GAAI,EAAI,OAAO,MACX,OAAO,QAAQ,QAAQ,GAE3B,GAAI,aAAkB,QAClB,MAAU,MAAM,6FAEpB,OAAO,GAEX,GAAI,EAAI,OAAO,QAAU,GAAO,CAC5B,IAAM,EAAQ,KAAK,KAAK,OAAO,WAAW,CACtC,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IAQZ,OANI,EAAM,SAAW,UACV,GACP,EAAM,SAAW,SACjB,EAAO,QAEX,EAAkB,EAAM,OACjB,CAAE,OAAQ,EAAO,MAAO,MAAO,EAAM,aAG5C,OAAO,KAAK,KAAK,OAAO,YAAY,CAAE,KAAM,EAAI,KAAM,KAAM,EAAI,KAAM,OAAQ,IAAO,KAAM,GACnF,EAAM,SAAW,UACV,GACP,EAAM,SAAW,SACjB,EAAO,QACJ,EAAkB,EAAM,OAAO,UAC3B,CAAE,OAAQ,EAAO,MAAO,MAAO,EAAM,WAK5D,GAAI,EAAO,OAAS,YAChB,GAAI,EAAI,OAAO,QAAU,GAAO,CAC5B,IAAM,EAAO,KAAK,KAAK,OAAO,WAAW,CACrC,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IAEZ,GAAI,CAAC,GAAQ,GACT,OAAO,EACX,IAAM,EAAS,EAAO,UAAU,EAAK,MAAO,GAC5C,GAAI,aAAkB,QAClB,MAAU,MAAM,mGAEpB,MAAO,CAAE,OAAQ,EAAO,MAAO,MAAO,QAGtC,OAAO,KAAK,KAAK,OAAO,YAAY,CAAE,KAAM,EAAI,KAAM,KAAM,EAAI,KAAM,OAAQ,IAAO,KAAM,GAClF,GAAQ,GAEN,QAAQ,QAAQ,EAAO,UAAU,EAAK,MAAO,IAAW,KAAM,IAAY,CAC7E,OAAQ,EAAO,MACf,MAAO,KAHA,GAQvB,EAAK,YAAY,KAGzB,GAAW,QAAU,EAAQ,EAAQ,IAC1B,IAAI,GAAW,CAClB,OAAA,EACA,SAAU,EAAsB,WAChC,SACA,GAAG,EAAoB,KAG/B,GAAW,sBAAwB,EAAY,EAAQ,IAC5C,IAAI,GAAW,CAClB,OAAA,EACA,OAAQ,CAAE,KAAM,aAAc,UAAWC,GACzC,SAAU,EAAsB,WAChC,GAAG,EAAoB,KAI/B,IAAa,GAAb,cAAiC,CAAQ,CACrC,OAAO,EAAO,CACV,IAAMT,EAAa,KAAK,SAAS,GAIjC,OAHIA,IAAe,EAAc,UACtB,EAAG,IAAA,IAEP,KAAK,KAAK,UAAU,OAAO,GAEtC,QAAS,CACL,OAAO,KAAK,KAAK,YAGzB,GAAY,QAAU,EAAM,IACjB,IAAI,GAAY,CACnB,UAAW,EACX,SAAU,EAAsB,YAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAAiC,CAAQ,CACrC,OAAO,EAAO,CACV,IAAMA,EAAa,KAAK,SAAS,GAIjC,OAHIA,IAAe,EAAc,KACtB,EAAG,MAEP,KAAK,KAAK,UAAU,OAAO,GAEtC,QAAS,CACL,OAAO,KAAK,KAAK,YAGzB,GAAY,QAAU,EAAM,IACjB,IAAI,GAAY,CACnB,UAAW,EACX,SAAU,EAAsB,YAChC,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAAgC,CAAQ,CACpC,OAAO,EAAO,CACV,GAAM,CAAE,OAAQ,KAAK,oBAAoB,GACrC,EAAO,EAAI,KAIf,OAHI,EAAI,aAAe,EAAc,YACjC,EAAO,KAAK,KAAK,gBAEd,KAAK,KAAK,UAAU,OAAO,CAC9B,OACA,KAAM,EAAI,KACV,OAAQ,IAGhB,eAAgB,CACZ,OAAO,KAAK,KAAK,YAGzB,GAAW,QAAU,EAAM,IAChB,IAAI,GAAW,CAClB,UAAW,EACX,SAAU,EAAsB,WAChC,aAAc,OAAO,EAAO,SAAY,WAAa,EAAO,YAAgB,EAAO,QACnF,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAA8B,CAAQ,CAClC,OAAO,EAAO,CACV,GAAM,CAAE,OAAQ,KAAK,oBAAoB,GAEnC,EAAS,CACX,GAAG,EACH,OAAQ,CACJ,GAAG,EAAI,OACP,OAAQ,KAGV,EAAS,KAAK,KAAK,UAAU,OAAO,CACtC,KAAM,EAAO,KACb,KAAM,EAAO,KACb,OAAQ,CACJ,GAAG,KAmBP,OAhBA,GAAQ,GACD,EAAO,KAAM,IACT,CACH,OAAQ,QACR,MAAOkC,EAAO,SAAW,QACnBA,EAAO,MACP,KAAK,KAAK,WAAW,CACnB,IAAI,OAAQ,CACR,OAAO,IAAI,GAAS,EAAO,OAAO,SAEtC,MAAO,EAAO,UAMvB,CACH,OAAQ,QACR,MAAO,EAAO,SAAW,QACnB,EAAO,MACP,KAAK,KAAK,WAAW,CACnB,IAAI,OAAQ,CACR,OAAO,IAAI,GAAS,EAAO,OAAO,SAEtC,MAAO,EAAO,QAKlC,aAAc,CACV,OAAO,KAAK,KAAK,YAGzB,GAAS,QAAU,EAAM,IACd,IAAI,GAAS,CAChB,UAAW,EACX,SAAU,EAAsB,SAChC,WAAY,OAAO,EAAO,OAAU,WAAa,EAAO,UAAc,EAAO,MAC7E,GAAG,EAAoB,KAG/B,IAAa,GAAb,cAA4B,CAAQ,CAChC,OAAO,EAAO,CACV,IAAMlC,EAAa,KAAK,SAAS,GACjC,GAAIA,IAAe,EAAc,IAAK,CAClC,IAAM,EAAM,KAAK,gBAAgB,GAMjC,OALA,EAAkB,EAAK,CACnB,KAAM,EAAa,aACnB,SAAU,EAAc,IACxB,SAAU,EAAI,aAEX,EAEX,MAAO,CAAE,OAAQ,QAAS,MAAO,EAAM,QAG/C,GAAO,OAAU,GACN,IAAI,GAAO,CACd,SAAU,EAAsB,OAChC,GAAG,EAAoB,KAI/B,IAAa,GAAb,cAAgC,CAAQ,CACpC,OAAO,EAAO,CACV,GAAM,CAAE,OAAQ,KAAK,oBAAoB,GACnC,EAAO,EAAI,KACjB,OAAO,KAAK,KAAK,KAAK,OAAO,CACzB,OACA,KAAM,EAAI,KACV,OAAQ,IAGhB,QAAS,CACL,OAAO,KAAK,KAAK,OAGZ,GAAb,MAAa,UAAoB,CAAQ,CACrC,OAAO,EAAO,CACV,GAAM,CAAE,SAAQ,OAAQ,KAAK,oBAAoB,GACjD,GAAI,EAAI,OAAO,MAAO,CAClB,IAAM,EAAc,SAAY,CAC5B,IAAM,EAAW,MAAM,KAAK,KAAK,GAAG,YAAY,CAC5C,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IASR,OAPA,EAAS,SAAW,UACb,EACP,EAAS,SAAW,SACpB,EAAO,QACA,GAAM,EAAS,QAGf,KAAK,KAAK,IAAI,YAAY,CAC7B,KAAM,EAAS,MACf,KAAM,EAAI,KACV,OAAQ,KAIpB,OAAO,QAEN,CACD,IAAM,EAAW,KAAK,KAAK,GAAG,WAAW,CACrC,KAAM,EAAI,KACV,KAAM,EAAI,KACV,OAAQ,IAYR,OAVA,EAAS,SAAW,UACb,EACP,EAAS,SAAW,SACpB,EAAO,QACA,CACH,OAAQ,QACR,MAAO,EAAS,QAIb,KAAK,KAAK,IAAI,WAAW,CAC5B,KAAM,EAAS,MACf,KAAM,EAAI,KACV,OAAQ,KAKxB,OAAO,OAAO,EAAG,EAAG,CAChB,OAAO,IAAI,EAAY,CACnB,GAAI,EACJ,IAAK,EACL,SAAU,EAAsB,gBAI/B,GAAb,cAAiC,CAAQ,CACrC,OAAO,EAAO,CACV,IAAM,EAAS,KAAK,KAAK,UAAU,OAAO,GACpC,EAAU,IACR,GAAQ,KACR,EAAK,MAAQ,OAAO,OAAO,EAAK,QAE7B,GAEX,OAAO,GAAQ,GAAU,EAAO,KAAM,GAAS,EAAO,IAAS,EAAO,GAE1E,QAAS,CACL,OAAO,KAAK,KAAK,YAGzB,GAAY,QAAU,EAAM,IACjB,IAAI,GAAY,CACnB,UAAW,EACX,SAAU,EAAsB,YAChC,GAAG,EAAoB,KAkDnB,GAAU,WAEtB,IAAW,GACV,SAAU,EAAuB,CAC9B,EAAsB,UAAe,YACrC,EAAsB,UAAe,YACrC,EAAsB,OAAY,SAClC,EAAsB,UAAe,YACrC,EAAsB,WAAgB,aACtC,EAAsB,QAAa,UACnC,EAAsB,UAAe,YACrC,EAAsB,aAAkB,eACxC,EAAsB,QAAa,UACnC,EAAsB,OAAY,SAClC,EAAsB,WAAgB,aACtC,EAAsB,SAAc,WACpC,EAAsB,QAAa,UACnC,EAAsB,SAAc,WACpC,EAAsB,UAAe,YACrC,EAAsB,SAAc,WACpC,EAAsB,sBAA2B,wBACjD,EAAsB,gBAAqB,kBAC3C,EAAsB,SAAc,WACpC,EAAsB,UAAe,YACrC,EAAsB,OAAY,SAClC,EAAsB,OAAY,SAClC,EAAsB,YAAiB,cACvC,EAAsB,QAAa,UACnC,EAAsB,WAAgB,aACtC,EAAsB,QAAa,UACnC,EAAsB,WAAgB,aACtC,EAAsB,cAAmB,gBACzC,EAAsB,YAAiB,cACvC,EAAsB,YAAiB,cACvC,EAAsB,WAAgB,aACtC,EAAsB,SAAc,WACpC,EAAsB,WAAgB,aACtC,EAAsB,WAAgB,aACtC,EAAsB,YAAiB,cACvC,EAAsB,YAAiB,gBACxC,AAA0B,IAAwB,IAUrD,MAAM,EAAa,GAAU,OACV,GAAU,OACb,GAAO,OACJ,GAAU,OAC7B,MAAM,GAAc,GAAW,OACd,GAAQ,OACN,GAAU,OACP,GAAa,OAClB,GAAQ,OACT,GAAO,OACH,GAAW,OACb,GAAS,OACV,GAAQ,OACzB,MAAM,GAAY,GAAS,OACrB,GAAa,GAAU,OACJ,GAAU,aACjB,GAAS,OAC3B,MAAM,GAAyB,GAAsB,OAC5B,GAAgB,OACvB,GAAS,OACR,GAAU,OACb,GAAO,OACP,GAAO,OACF,GAAY,OAChB,GAAQ,OACzB,MAAM,GAAc,GAAW,OACzB,GAAW,GAAQ,OACF,GAAc,OACjB,GAAW,OACX,GAAW,OACV,GAAY,OACZ,GAAY,OACV,GAAW,qBACb,GAAY,OCnlHjC,MAAM,GAAA,GAA4B,CACjC,eACA,iBACA,qBACA,cACA,gBACA,gBACA,gBACA,iBACA,iBACA,gBACA,mBACA,sBACE,SAAS,oKACN,GAAA,GAA0C,OAAQ,CAAA,GAAU,CACjE,eAAA,IACA,gBAAA,IAA4B,WAC5B,KAAM,GAAmB,QAAQ,CAAC,gBAAiB,kBACnD,WAAA,KAAwB,gBACZ,CACZ,eAAA,IACA,gBAAA,IAA4B,WAC5B,KAAM,GAAmB,QAAQ,CAAC,gBAAiB,kBACnD,WAAA,KAAwB,eAEnB,IAA+B,EAAQ,IAC5C,GAAgB,CACf,OAAA,GAAkB,GAClB,KAAM,EACN,MAAA,IAAkB,aAGd,GAAA,GAA8C,SAAU,CAC7D,GAA4B,aAAA,GAAuB,CAAE,QAAA,OACrD,GAA4B,sBAAA,GAAgC,CAC3D,WAAA,IACA,cAAA,OAED,GAA4B,MAAA,GAAgB,CAAE,KAAA,GAAe,CAC5D,KAAA,IACA,SAAA,IACA,aAAA,IAAyB,WAAW,SAAS,0FAC7C,KAAA,GAAa,CAAC,SAAU,WACxB,gBAAA,KAA6B,WAAW,SAAS,gDAC/C,WACH,GAA4B,gBAAA,GAA0B,CACrD,gBAAA,IAA4B,SAAS,uGACrC,iBAAA,IAA6B,SAAS,4CACtC,QAAA,GAAA,GAA0B,CACzB,gBAAA,IAA4B,SAAS,+DACrC,cAAA,IAA0B,WAAW,SAAS,mDAC9C,aAAA,GAAA,KAAkC,WAAW,SAAS,mEACnD,SAAS,kHACb,UAAA,GAAA,KAA+B,WAAW,SAAS,wNAG/C,GAAA,GAAwB,CAC7B,YACA,OACA,UACA,OACA,UAEK,GAAA,GAAyB,CAC9B,aACA,WACA,WAEK,GAAyB,GAAmB,KAAK,CACtD,KAAM,GACN,KAAM,GACN,MAAO,GACP,KAAM,KACJ,OAAO,CACT,MAAA,IACA,YAAA,IAAwB,WACxB,SAAU,GACV,MAAA,GAAe,IACf,aAAc,GACd,YAAA,GAAqB,IAAwB,WAAW,SAAS,yEACjE,uBAAA,IAAmC,SAAS,iEAAiE,WAC7G,kBAAA,GAA2B,IAAiB,WAC5C,eAAA,KAA4B,WAAW,SAAS,qEAE3C,GAAsB,GAAuB,KAAK,CACvD,MAAO,GACP,SAAU,GACV,YAAa,KACX,OAAO,CAAE,KAAA,MAAoB,QAI1B,GAAa,EAAc,OAAO,KAAK,KACvC,GAAY,EAAK,QAAQ,IACF,EAAK,QAAQ,GAAW,gBAoDrD,SAAS,GAAkB,EAAU,CACpC,OAAO,EAAS,QAAQ,aAAc,IAEvC,SAAS,GAA6B,EAAM,CAC3C,OAAQ,EAAK,sBAAwB,IAAI,OAAQ,GAAM,EAAE,WAAW,kBAAkB,IAAK,GAAM,EAAE,QAAQ,gBAAiB,KAAK,IAAI,IAsEtI,MAAM,GAA0B,CAC/B,wBAAyB,qBACzB,wBAAyB,qBACzB,0BAA2B,wBAe5B,SAAS,GAA2B,EAAS,CAC5C,IAAI,EAAS,EACb,IAAK,GAAM,CAACU,EAAY,KAAgB,OAAO,QAAQ,IAA0B,EAAS,EAAO,QAAQ,IAAI,OAAO,GAAa,GAAc,KAAMA,GACrJ,OAAO,EAKR,SAAS,GAAa,EAAQ,CAC7B,OAAOC,EAAO,QAAQ,sBAAuB,QCtP9C,MAAM,GAAS,GAAa,CAC1B,kBAAmB,CACjB,OAAQ,IAEV,QAAS,CACP,OAAQ,MAIC,GAAgB,GAAY,CACvC,QAAS,GAAG,KAAiB,IAC7B,YCbF,eAAsB,GAAoB,EAAc,CACtD,GAAI,CACF,IAAM,EAAS,MAAM,GAAc,kBAAmB,CACpD,OAAQ,CAAE,UAGZ,GAAI,EAAO,MAAO,CAChB,GAAI,EAAO,MAAM,SAAW,IAAK,OAAO,KACxC,MAAU,MAAM,EAAO,MAAM,SAG/B,OAAO,EAAO,WACPoC,EAAO,CACd,MAAMA,GCTV,GAAW,eAAe,KAAM,SAAU,EAAG,EAAG,CAC9C,OAAO,IAAM,IAGf,GAAW,eACT,YACA,SAAqB,EAAO,EAAW,EAAS,CAC9C,GAAI,CAAClC,GAAS,CAAC,MAAM,QAAQA,GAAQ,OAAO,EAAQ,QAAQ,MAE5D,IAAK,IAAI,EAAI,EAAG,EAAIA,EAAM,OAAQ,IAAK,CACrC,IAAM,EAAOA,EAAM,GACnB,GAAI,IAAc,MAAQ,EAAK,OAAS,KACtC,OAAO,EAAQ,GAAG,GAGtB,OAAO,EAAQ,QAAQ,QAS3B,MAAM,GAA4B,CAChC,KACA,KACA,YACA,YACA,aACA,YACA,aACA,oBACA,yBAGF,SAAS,GAA0B,EAAgC,CACjE,OAAO,EAAW,OACf,GACC,CAAC,GAA0B,SAAS,EAAU,gBAC9C,EAAU,WAAW,MAK3B,SAAS,GAAoB,EAA6B,CACxD,GAAM,CAAE,aAAY,cAAe,EAE7B,EAAe,GAAgB,CACnC,WAAY,EAAM,YAAY,QAAQ,MACtC,eAAgB,EAAW,OAGvB,EAAgB,GAAuB,CAC3C,aACA,eAAgB,EAAW,OAC1B,OAAO,SAEV,MAAO,CACL,WAAY,EAAW,KACvB,aACA,eACA,gBACA,WAAY,GAA0B,IAI1C,SAAgB,GAAoB,EAA8B,CAChE,IAAM,EAAW,IACX,EAAS,KAEf,MAAO,CACL,WACA,SACA,OAAQ,EAAO,GAAoB,GAAQ,CACzC,WAAY,oBACZ,WAAY,gBACZ,aAAc,sBACd,cAAe,CAAC,oBAChB,WAAY,CAAC,sBAKnB,eAAsB,GACpB,EACA,EACA,CACA,IAAM,EAAY,GAAYa,EAAM,GAChC,EAAc,MAAM,EAAG,SAAS,EAAW,QAI/C,EAAc,GAA2B,GAEzC,IAAM,EAAW,GAAW,QAAQ,GAC9B,EAAW,EAAS,GAC1B,MAAM,EAAG,UAAU,EAAW,GAGhC,SAAgB,GACd,EACA,EACQ,CACR,IAAM,EAAUA,EAAK,eAErB,GAAIA,EAAK,gBAAiB,OAAOA,EAAK,gBAEtC,IAAM,EAAM,EAAM,YAAc,QAAQ,MAClC,CAAE,UAAW,EAGbX,EAAqD,CACzD,eAAgB,GAAQ,SAAS,KAAO,GAAQ,SAAS,MACzD,qBAAsB,GAAQ,SAAS,WACvC,cAAe,GAAQ,SAAS,IAAM,GAAQ,SAAS,WACvD,gBAAiB,GAAQ,SAAS,MAElC,gBAAiB,MACjB,gBAAiB,UACjB,iBAAkB,GAAQ,SAAS,WAC/B,EAAO,QAAQ,WAAW,WAAW,MACnC,GAAG,EAAO,QAAQ,WAAW,QAAQ,KAAM,QAAQ,SACnD,OAAO,EAAO,QAAQ,WAAW,SACnC,wBACJ,iBAAkB,YAClB,iBAAkB,cAGd,EAAY,EAAeW,EAAK,MAEtC,GAAI,EAEF,GAAI,EAAU,WAAW,MAAO,CAC9B,IAAM,EAAe,EAAU,QAAQ,KAAM,QAC7C,OAAO,EAAK,KAAK,EAAK,EAAc,WAG7B,EAAU,WAAW,MAAQ,EAAU,SAAS,QACvD,OAAO,EAAK,KAAK,EAAK,EAAW,QAIjC,OAAO,EAAK,KAAK,EAAK,MAAO,EAAW,GAK5C,OAAQA,EAAK,KAAb,CACE,IAAK,eACH,OAAO,EAAK,KAAK,EAAK,MAAO,MAAO,GACtC,IAAK,gBACH,OAAO,EAAK,KAAK,EAAK,MAAO,GAC/B,IAAK,gBAEH,IAAM,EAAa,EAAa,UAChC,GAAI,EAAW,CAEb,IAAM,EAAY,IAAc,IAAM,GAAK,EAC3C,OAAO,EAAK,KAAK,EAAK,MAAO,MAAO,SAAU,EAAW,GAE3D,OAAO,EAAK,KAAK,EAAK,MAAO,MAAO,GACtC,IAAK,iBACH,OAAO,EAAK,KAAK,EAAK,MAAO,aAAc,SAAU,GACvD,IAAK,qBACH,OAAO,EAAK,KAAK,EAAK,MAAO,aAAc,GAC7C,IAAK,cACH,OAAO,EAAK,KAAK,EAAK,MAAO,aAAc,GAC7C,IAAK,gBACH,OAAO,EAAK,KAAK,EAAK,MAAO,QAAS,GACxC,IAAK,iBACH,OAAO,EAAK,KAAK,EAAK,MAAO,QAAS,GACxC,IAAK,iBACH,OAAO,EAAK,KAAK,EAAK,MAAO,SAAU,GACzC,QAEE,OAAO,GCrLb,SAAgB,GACd,EACA,CACA,IAAM,EAAkB,EAAK,KAAK,EAAM,WAAY,gBAC9C,EAAc,KAAK,MAAMV,EAAG,aAAa,EAAiB,SAChE,EAAY,QAAQ,EAAK,KAAK,YAAc,EAAK,KAAK,cACtD,EAAG,cAAc,EAAiB,KAAK,UAAU,EAAa,KAAM,ICCtE,eAAsB,GAAa,EAA6D,CAC9F,GAAM,CACJ,YACA,QAAS,EACT,mBACA,mBACE,EAAK,KAET,GAAI,CACF,IAAM,EAAa,EAAM,WACnB,EAAU,GAAc,GACxB,EAAe,KAIf,EAAgB,GAChB,EAAM,WAAW,MACZ,EAAM,QAAQ,KAAM,QAEzB,EAAM,WAAW,MACZ,EAAM,UAAU,GAElB,EAIH,EAAgB,EAAa,EAAa,QAAQ,YAClD,EAAgB,EAAK,KAAK,EAAY,EAAe,iBAErD,EAAgB,EAAQ,oBAAoB,GAGlD,IAAK,IAAM,KAAgB,EAAe,CACxC,IAAMC,EAAgD,CACpD,gBAAiB,EAAa,gBAC9B,KAAM,GAAc,mBAGlB,EAAa,gBACf,EAAkB,cAAgB,EAAa,eAG7C,EAAa,cAAgB,EAAa,aAAa,OAAS,IAClE,EAAkB,aAAe,EAAa,cAGhD,EAAc,qBAAqB,GAIrC,IAAM,EAAgB,EAAc,YAAa,GAC/C,EAAI,mBAGN,GAAI,CAAC,EAAe,CAClB,EAAO,KAAK,uCAAuC,KACnD,OAGF,IAAM,EAAkB,GACpB,WACA,yBAAyB,EAAW,iBAExC,GAAI,CAAC,EAAiB,CACpB,EAAO,KAAK,wDACZ,OAGF,IAAI,EAGJ,GAAI,GAAa,EAAU,OAAS,EAClC,KAAK,IAAM,KAAO,EAShB,GARA,EAAgB,GACZ,qBAAqB,EAAW,mBACjC,KACE,GACC,EAAe,iBAAiB,YAAc,IAEhD,gBAAgB,EAAW,YAE3B,EAAe,MAIvB,GAAI,EAAe,CAEjB,IAAM,EAAe,GACjB,iBACD,IAAK,GAAU,EAAM,WACrB,OAAO,SACP,KAAK;GAEF,EAAa,GAAG,EAAgB;QACpC,EAAa;MACf,IAEA,EAAc,sBAAsB,gBAAgB,OAC/C,CAEL,IAAM,EAAmB,GAAiB,gBAC1C,GAAI,EAAkB,CAEpB,IAAM,EAAkB,EAAiB,YAAc,EAAW,wBAE9DC,EACJ,GAAI,EAAiB,CAEnB,IAAM,EAAoB,EAAiB,cAAc,EAAW,yBACpE,EAAsB,EAAkB,gBAAgB,eAExD,EAAsB,EAAiB,UAGzC,IAAM,EAAmB;MAC3B,EAAgB;QACd,EAAoB;MACtB,EAAiB;MAGf,GAAiB,gBAAgB,QAEjC,EAAO,KAAK,sCAIhB,MAAM,GAAyB,GAC/B,EAAO,QAAQ,oCAAoC,WAC5C6B,EAAO,CAEd,MADA,EAAO,MAAM,4BAA4BA,KACnCA,GCxIV,eAAsB,GAAuB,EAAuB,CAC9D,EAAK,SAAW,sBAClB,GAAuB,GACd,EAAK,SAAW,gBACzB,MAAM,GAAa,GACV,EAAK,SAAW,aACzB,EAAO,KAAK,EAAK,KAAK,SACb,EAAK,SAAW,MACzB,MAAM,GAAS,CACb,KAAM,EAAK,KAAK,OAGlB,EAAO,MAAM,8BAA8B,KCR/C,eAAsB,IAAc,CAElC,IAAM,EAAe,MAAM,EAAG,WAAW,iBACrC,IAKJ,GAAY,IAGZ,MChBF,eAAsB,IAAsB,CAC1C,IAAM,EAAM,EAAM,YAAc,QAAQ,MAElC,EAAkB,MAAM,EAAG,WAC/B,EAAK,KAAK,EAAK,oBAEjB,GAAI,CAAC,EACH,MAAU,MACR,oFAKJ,MAAM,KCQR,eAAe,GAA8B,CAC3C,aAAa,QAAQ,MACrB,cAIC,CACD,GAAI,EAAW,OAAS,WACtB,MAAU,MAAM,mBACX,CACL,IAAM,EAAU,GAAmB,CACjC,aACA,eAAgB,EAAW,OAE1B,IAAK,GAAM,EAAE,YACb,OAAO,SAEV,GAAI,EAAQ,SAAW,EAAG,CACxB,EAAE,OAAO,+DACT,OAGF,GAAI,EAAQ,SAAW,EAAG,OAAO,EAAQ,GAEzC,IAAM,EAAa,EACjB,MAAM,EAAE,OAAO,CACb,QAAS,yCACT,QAAS,EAAQ,IAAK,IAAO,CAAE,MAAO,EAAG,MAAO,GAAK,SAGzD,OAAO,GAIX,eAAsB,GAAoB,EAAc,CACtD,IAAM,EAAU,EAAI,uBAAuB,QAE3C,GAAI,CACF,MAAM,KACN,IAAM,EAAO,MAAM,GAAoB,GACvC,GAAI,CAAC,EAAM,CACT,EAAQ,KAAK,YAAY,EAAK,sCAC9B,OAGF,GACE,EAAK,wBACL,GAAO,GAAG,EAAK,uBAAwB,MACvC,CACA,EAAO,MACL,YAAY,EAAK,6BAA6B,EAAK,uBAAuB,8BAA8B,QAE1G,EAAQ,KAAK,yDACb,OAEF,EAAQ,UAER,IAAM,EAA4B,GAA6B,GAC3D,EAA+B,IAAc,kBAG7C3B,EACAC,EACAC,EACAC,EAEJ,GAAI,EAAK,eAAgB,CACvB,IAAM6B,EAAW,IAEjB,GAAIA,EAAS,YAAY,SAAW,EAAG,CACrC,EAAQ,KACN,0FAEF,OAGF,IAAM,EACJA,EAAS,YAAY,OAAS,EAC1B,EACE,MAAM,EAAE,OAAO,CACb,QAAS,sDACT,QAASA,EAAS,YAAY,IAAK,IAAQ,CACzC,MAAO,EAAG,KACV,MAAO,EAAG,WAIhBA,EAAS,YAAY,IAAI,KAM/B,GAJA,EAAaA,EAAS,YAAY,KAC/B,GAAO,EAAG,OAAS,GAGlB,CAAC,EAAY,CACf,EAAQ,KAAK,eAAe,EAAe,aAC3C,OAQF,GALA,EAAa,MAAM,GAA8B,CAC/C,WAAY,EAAM,WAClB,eAGE,CAAC,EAAY,CACf,EAAQ,KAAK,kCACb,QAIA,EAAK,WAAa,SAEpB,EAAY,EACV,MAAM,EAAE,KAAK,CACX,QAAS,uCACT,YAAa,WACb,SAAW,GAAU,CACnB,GAAI,EAAM,SAAW,EACnB,MAAO,2BAOX,EAAU,WAAW,OACvB,EAAY,EAAU,MAAM,IAG9B,EAAW,GAAW,EAAU,QAAQ,IAAK,IAAI,SAGnD,IAAI3B,EAAM,IAAI,IAAI,GAAG,KAAiB,KAAK,KACvC,EAAK,WAAa,QACpB,EAAI,aAAa,IAAI,YAAa,WAAW,GAAa,KAK1D,IAAS,UACT,CAAC,EAA6B,SAAS,iBAEvC,EAAK,sBAAsB,KAAM,GAAM,EAAE,SAAS,mBAChD,IAAA,KAGF,MAAM,GAAoB,gBAC1B,EAA+B,IAAc,mBAI/C,MAAM,GAAc,CAACA,EAAI,YAAa,EAAK,OAE3C,IAAM,EAAkB,EAAK,MAAM,OAAQ,GAASC,EAAK,YAEzD,GAAI,EAAgB,OAAS,EAAG,CAE9B,IAAM,EACJ,GAAc,EACV,GAAoB,CAClB,aACA,eAEF,KAGF,IACD,EAAqB,UAAY,GAEhC,IACD,EAAqB,SAAW,GAInC,IAAM,EAAgB,EAAgB,IAAK,IAAU,CACnD,GAAGA,EACH,gBAAiBA,EAAK,iBAAiB,QACrC,WACA,WAAW,GAAa,QAI5B,IAAK,IAAMA,KAAQ,EACjB,MAAM,GAAuBA,EAAM,GAevC,GAVI,EAAK,WAAa,QAAU,GAAa,GAC3C,MAAM,GAAc,CAClB,WAAY,EAAM,WAClB,QAAS,UACT,MAAO,EACP,KAAM,IAAI,MAKV,EAAK,YACP,IAAK,IAAM,KAAQ,EAAK,YAAa,CACnC,GAAI,EAAK,OAAS,EAA6B,SAAS,EAAK,OAE3D,SAEF,MAAM,GAAuB,GAKjC,GAAc,CACZ,kBAAmB,GAAK,CACtB,GAAG,EACH,EACA,GAAG,YAGAqB,EAAO,CACd,EAAQ,KAAK,sCACb,EAAO,MAAMA,IClPjB,eAAsB,IAAY,CAChC,GAAM,CAAE,KAAM,EAAO,MAAA,GAAU,MAAM,GAAc,SACnD,GAAIA,EACF,MAAU,MAAM,wCAAwCA,EAAM,WAEhE,OAAO,ECgBT,MAAM,GAAqB,KAAO,IAAsC,CACtE,IAAMK,EAAW,IAEX,EAAU,EAAI,mCAAmC,QACnD,EACJ,GAAI,CACF,EAAQ,MAAM,WACPL,EAAO,CACd,EAAQ,KAAK,sCACb,EAAO,MAAMA,GACb,OAGF,IAAM,EAAoB,EAAM,OAC7B,GAAS,CAACK,EAAS,kBAAkB,SAAS,EAAK,OAGhD,EAAoB,GAAQ,EAAoB,GAAS,EAAK,UAC9D,EAAa,GAAK,EAAkB,IAAK,GAAS,EAAK,WAE7D,EAAQ,UAER,IAAM,EAAU,EACd,MAAM,EAAE,OAAO,CACb,QAAS,2CACT,QAAS,CAEP,GAAI,EAAW,SAAS,QACpB,CAAC,CAAE,MAAO,OAAQ,MAAO,SACzB,GAGJ,GAAIA,EAAS,YAAY,OAAS,EAC9B,CACE,CACE,MAAO,SACP,MAAO,SACP,KAAM,sEAGV,GAEJ,CACE,MAAO,cACP,MAAO,OACP,KAAM,kDAIR,GAAG,EACA,OAAQ,GAAa,IAAa,QAClC,IAAK,IAAc,CAClB,MAAO,GAAW,GAClB,MAAO,SAMjB,GAAI,IAAY,SACd,MAAM,aACG,IAAY,OACrB,MAAM,aACG,EAAW,SAAS,GAAiB,CAE9C,IAAM,EACJ,EAAkB,GAEd,EAAW,EACf,MAAM,EAAE,OAAO,CACb,QAAS,YAAY,EAAQ,yBAC7B,QAAS,EAAkB,IAAK,IAAU,CACxC,MAAO,EAAK,MACZ,KAAM,EAAK,YACX,MAAO,EAAK,WAKlB,MAAM,GAAoB,QAE1B,EAAO,MACL,4DAA4D,EAAQ,KAK7D,GAAS,MACpB,EACA,IACG,CACH,GAAI,IAAS,iBACX,OAAO,MAAM,QACJ,IAAS,IAAA,GAElB,OAAO,MAAM,GAAoB,GAGnC,IAAIrB,EACJ,GAAI,CACF,EAAW,SACL,CAEN,OADA,MAAM,KACC,MAAM,GAAmB,GAGlC,GAAIqB,EAAS,KAAO,SAClB,OAAO,MAAM,GAAmB,GAElC,GAAsB,CAAE,YAAa,QAErC,IAAM,EAAU,EACd,MAAM,EAAE,OAAO,CACb,QAAS,2CACT,QAAS,CACP,CAAE,MAAO,OAAQ,MAAO,QAExB,GAAIA,EAAS,YAAY,OAAS,EAC9B,CACE,CACE,MAAO,SACP,MAAO,SACP,KAAM,sEAGV,GACJ,CAAE,MAAO,cAAe,MAAO,eAC/B,CACE,MAAO,cACP,MAAO,OACP,KAAM,kDAER,GAAIA,EAAS,KAAK,OAAS,QAAUA,EAAS,UAAY,UACtD,CAAC,CAAE,MAAO,OAAQ,MAAO,SACzB,OAKN,IAAY,OACd,MAAM,KACG,IAAY,OACrB,MAAM,KACG,IAAY,OACrB,MAAM,KACG,IAAY,SACrB,MAAM,KACG,IAAY,eACrB,MAAM,GAAwB,CAAE,UAAW,GAAS,aAI3C,OAAuB,CAClC,IAAM,EAAa,IAAI,EAAQ,OAC5B,YAAY,uCACZ,SAAS,SAAU,4BACnB,UAAU,IACV,UAAU,IACV,OACC,cACA,kDACA,IAED,OAAO,MAAO,EAAM,IAAY,CAC/B,MAAM,GAAO,EAAM,KAkBvB,OAfA,EAAW,KAAK,aAAc,EAAc,IAAmB,CAE7D,EAAiB,EAAe,QAChC,EAAM,YAAc,QAEtB,EAAW,KAAK,iBAAkB,EAAc,IAAgB,CAE9D,EAAiB,EAAY,QAC7B,EAAM,YAAc,QAGtB,EAAW,WAAW,MACtB,EAAW,WAAW,MACtB,EAAW,WAAW,MACtB,EAAW,WAAW,MACf,GC/LT,eAAe,IAAmC,CAChD,GAAI,CAEF,OADA,MAAM,EAAM,SAAU,CAAC,cAChB,QACO,CACd,MAAO,IAIX,eAAe,IAAmB,CAChC,IAAM,EAAa,KACb,EAAU,EAAE,UAClB,EAAQ,MAAM,4BAEd,GAAI,CACF,IAAM,EAAa,IAAe,MAAQ,UAAY,MAGtD,OAFA,MAAM,EAAM,EAAY,CAAC,EAAY,KAAM,WAC3C,EAAQ,KAAK,qCACN,SACAL,EAAO,CAGd,OAFA,EAAQ,KAAK,gCACb,QAAQ,MAAM,EAAM,IAAI,gCAAiCA,GAClD,IAIX,eAAe,IAAuC,CACpD,GAAI,CAEF,IAAM,EAAiB,MAAM,EAAG,SAC9B,wBAEF,MAAO,EAAQ,EAAc,eACf,CAId,OAHI,EAAM,OACR,QAAQ,IAAI;+CAEP,IAIX,eAAe,IAA4D,CACzE,GAAI,CACE,EAAM,OACR,QAAQ,IAAI;8CAGd,IAAM,EAAS,MAAM,EAAM,SAAU,CAAC,QAAS,QAAS,CACtD,IAAK,KAGH,EAAM,OACR,QAAQ,IAAI;wBAA4B,EAAO,KAGjD,IAAM,GAAS,EAAO,KAAO,IAAI,MAAM;GAAM,OAAO,SAG9C,EAAc,EAAM,UAAW,GAAS,EAAK,SAAS,OAC5D,GAAI,IAAgB,GAClB,MAAO,GAIT,IAAM,EAAY,EAAM,MAAM,EAAc,GAExC,EAAM,QACR,QAAQ,IAAI;qBACZ,EAAU,QAAS,GAAS,QAAQ,IAAI,IAAI,EAAK,MAGnD,IAAM,EAAQ,EACX,IAAK,GAAS,CAEb,IAAM,EAAY,EAAK,QAAQ,UAAW,IAAI,OAExC,CAAC,EAAM,GAAG,GAAa,EAAU,MAAM,UAG7C,MAFI,CAAC,GAAQ,EAAU,SAAW,EAAU,KAErC,CACL,OACA,KAAM,EAAU,KAAK,KAAK,UAG7B,OAAQ,GAAiD,IAAS,MAMrE,OAJI,EAAM,OACR,QAAQ,IAAI;sBAA0B,GAGjC,QACAA,EAAO,CAId,OAHI,EAAM,OACR,QAAQ,MAAM,8BAA+BA,GAExC,IAIX,eAAe,IAAqB,CAClC,IAAM,EAAU,EAAE,UAElB,GAAI,CAEF,IAAM,EAAW,MAAM,EAAG,SAAS,gBAC7B,EAAc,EAAQ,KAGtB,EAAQ,MAAM,KAEhB,EAAW,GACf,GAAI,EAAM,OAAS,EAAG,CACpB,IAAM,EAAa,MAAM,EAAE,OAAO,CAChC,QAAS,iCACT,QAAS,CACP,GAAG,EAAM,IAAK,IAAU,CACtB,MAAO,EAAK,KACZ,MAAO,EAAK,WAKlB,GAAI,EAAE,SAAS,GAEb,OADA,QAAQ,IAAI,EAAM,OAAO;uBAClB,GAGL,GAAc,OAAO,GAAe,WACtC,EAAW,WAAW,KAoB1B,OAhBA,EAAQ,MAAM,8BAGd,MAAM,EAAM,SAAU,CAAC,OAAQ,QAAS,GAAI,EAAW,CAAC,GAAY,IAAM,CACxE,IAAK,CACH,oBAAqB,KAKzB,EAAQ,QAAQ,+BAChB,MAAM,EAAM,SAAU,CAAC,OAAQ,SAAU,CACvC,MAAO,YAGT,EAAQ,KAAK,uCACN,SACAA,EAAO,CAGd,OAFA,EAAQ,KAAK,mCACb,QAAQ,MAAM,EAAM,IAAI,oCAAqCA,GACtD,IAIX,eAAe,IAA2B,CACxC,IAAM,EAAU,EAAE,UAClB,EAAQ,MAAM,8CAEd,GAAI,CACF,IAAMK,EAAW,IACX,EAAU,EAAK,KAAK,QAAQ,MAAOA,EAAS,SAElD,GAAI,CAAC,EAAG,WAAW,GAEjB,OADA,EAAQ,KAAK,6BACN,GAGT,IAAM,EAAa,MAAM,EAAG,SAAS,EAAS,SACxC,EAAU,EACb,MAAM;GACN,OAAQ,GAAS,EAAK,QAAU,CAAC,EAAK,WAAW,MACjD,IAAK,GAAS,CACb,GAAM,CAAC,EAAK,GAAG,GAAc,EAAK,MAAM,KACxC,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAQ,EAAW,KAAK,KAC9B,MAAO,CAAE,IAAK,EAAI,OAAQ,MAAO,EAAM,UAExC,OAAQ,GAAiD,IAAS,MAEjE,EAAM,QACR,EAAQ,OACR,QAAQ,IAAI;uCACZ,EAAQ,SAAS,CAAE,MAAK,WAAY,CAClC,QAAQ,IAAI,KAAK,EAAI,GAAG,EAAM,UAAU,EAAG,GAAG,QAEhD,EAAQ,MAAM,+CAGhB,IAAI,EAAS,EACP,EAAQ,EAAQ,OAEtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,CAAE,MAAK,SAAU,EAAQ,GAC/B,EAAQ,QACN,+CAA+C,EAAI,EAAE,GAAG,EAAM,IAGhE,GAAI,CACE,EAAM,OACR,QAAQ,IAAI,8BAA8B,EAAI,gBAGhD,IAAM,EAAS,MAAM,EACnB,SACA,CAAC,MAAO,MAAO,EAAK,cACpB,CACE,MAAO,EACP,MAAO,OACP,OAAQ,KAUZ,GANI,EAAM,QACR,QAAQ,IAAI,6BAA6B,EAAO,YAC5C,EAAO,QAAQ,QAAQ,IAAI,iBAAkB,EAAO,QACpD,EAAO,QAAQ,QAAQ,IAAI,iBAAkB,EAAO,SAGtD,EAAO,WAAa,EACtB,MAAU,MAAM,iCAAiC,EAAO,kBAEnDL,EAAO,CACd,IACI,EAAM,QACR,QAAQ,MAAM,EAAM,OAAO,0BAA0B,MACrD,QAAQ,MAAM,qBAAsBA,KAY1C,OAPI,EAAS,EACX,EAAQ,KACN,EAAM,OAAO,qCAAqC,EAAO,aAG3D,EAAQ,KAAK,6CAER,EAAS,QACTA,EAAO,CAMd,OALA,EAAQ,KAAK,wCACT,EAAM,QACR,QAAQ,MAAM;sDACd,QAAQ,MAAMA,IAET,IAYX,eAAe,IAA2B,CACxC,IAAM,EAAc,QAAQ,QAAQ,QAAQ,KAAM,IAC5C,EAAe,EAAY,MAAM,KAAK,GAE5C,GAAI,CACF,IAAM,EAAkB,uBACxB,GAAI,CAAC,EAAG,WAAW,GAIjB,OAHI,EAAM,OACR,QAAQ,IAAI,gCAEP,GAGT,IAAM,EAAiB,MAAM,EAAG,SAC9B,GAgBF,OAdI,EAAM,OACR,QAAQ,IAAI,iCAAkC,GAIhD,EAAc,SAAW,CACvB,GAAG,EAAc,SACjB,YAAa,GAAG,EAAa,KAG/B,MAAM,EAAG,UAAU,EAAiB,EAAe,CAAE,OAAQ,IACzD,EAAM,OACR,QAAQ,IAAI,qCAAqC,EAAa,KAEzD,SACAA,EAAO,CAId,OAHI,EAAM,OACR,QAAQ,MAAM,2CAA4CA,GAErD,IAIX,eAAe,IAAqC,CAClD,GAAI,CACF,IAAM,EAAS,MAAM,EAAM,SAAU,CAAC,UAAW,CAC/C,MAAO,OACP,OAAQ,KAOV,OAJI,EAAM,OACR,QAAQ,IAAI;8BAAkC,GAGzC,EAAO,WAAa,QACpBA,EAAO,CAId,OAHI,EAAM,OACR,QAAQ,MAAM,6CAA8CA,GAEvD,IAIX,eAAe,IAAkC,CAC/C,QAAQ,IAAI,EAAM,KAAK;uCAEvB,GAAI,CAIF,OAHA,MAAM,EAAM,SAAU,CAAC,SAAU,CAC/B,MAAO,YAEF,SACAA,EAAO,CAEd,OADA,QAAQ,MAAM,EAAM,IAAI;8BAAkCA,GACnD,IAIX,eAAsB,IAAY,CAC5B,EAAM,OAAO,QAAQ,IAAI,qBAG7B,IAAM,EAAe,MAAM,KAE3B,GAAI,CAAC,EAAc,CACjB,IAAM,EAAY,MAAM,KACxB,GAAI,CAAC,EAAW,CACd,QAAQ,IACN,EAAM,IACJ;mEAGJ,QAAQ,IAAI,EAAM,KAAK;2BACvB,QAKJ,IAAM,EAAa,MAAM,KACzB,GAAI,CAAC,EAAY,CACf,IAAM,EAAkB,MAAM,KAC9B,GAAI,CAAC,EAAiB,CACpB,QAAQ,IAAI,EAAM,IAAI;iDACtB,QAKJ,IAAM,EAAmB,MAAM,KAE/B,GAAI,CAAC,EAAkB,CACrB,QAAQ,IAAI,EAAM,KAAK;oCACvB,IAAM,EAAQ,MAAM,KACpB,GAAI,CAAC,EAAO,CACV,QAAQ,IACN,EAAM,IAAI;kDAEZ,OAGF,IAAM,EAAY,MAAM,KACxB,GAAI,CAAC,EAAW,CACd,QAAQ,IACN,EAAM,IACJ;8DAGJ,QAKJ,QAAQ,IAAI,EAAM,KAAK;sCACvB,GAAI,CACF,MAAM,EAAM,SAAU,CAAC,OAAQ,SAAU,CACvC,MAAO,kBAEFA,EAAO,CACd,QAAQ,MAAM,EAAM,IAAI;mCAAuCA,GAC/D,OAUF,GANM,MAAM,MACV,QAAQ,MACN,EAAM,IAAI;uDAIV,EAAM,WAAY,CAEpB,QAAQ,IAAI,EAAM,KAAK;uCACvB,GAAI,CACF,IAAMb,EAAS,MAAM,EAAM,SAAU,CAAC,SAAU,CAC9C,MAAO,UACP,OAAQ,KAEV,GAAIA,EAAO,WAAa,EACtB,QAAQ,IAAI,EAAM,MAAM;iCACnB,CACL,QAAQ,MAAM,EAAM,IAAI;wBACxB,QAAQ,IAAI,EAAM,OAAO,6CACzB,cAEKa,EAAO,CACd,QAAQ,MAAM,EAAM,IAAI;uBAA2BA,GACnD,OAIF,QAAQ,IAAI,EAAM,KAAK;0BAEvB,IAAM,EAAS,MAAM,EAAM,SAAU,CAAC,SAAU,aAAc,SAAU,CACtE,MAAO,UACP,OAAQ,KAEN,EAAO,WAAa,GACtB,QAAQ,IAAI,EAAM,MAAM;gCAErB,CAEL,QAAQ,IAAI,EAAM,KAAK;0BACvB,GAAI,CACF,IAAM,EAAS,MAAM,EAAM,SAAU,CAAC,SAAU,SAAU,CACxD,MAAO,UACP,OAAQ,KAEV,GAAI,EAAO,WAAa,EACtB,QAAQ,IAAI,EAAM,MAAM;gCACnB,CACL,IAAM,EAAa,KACb,EAAS,IAAe,MAAQ,UAAY,EAClD,QAAQ,MAAM,EAAM,IAAI;uBAExB,QAAQ,IAAI,EAAM,OAAO;yBACzB,QAAQ,IACN,EAAM,IACJ,gFAGJ,QAAQ,IACN,EAAM,IAAI,OACR,IAAI,EAAO,OACX,EAAM,IACJ,8DAGN,QAAQ,IACN,EAAM,IAAI,OACR,IAAI,EAAO,SACX,EAAM,IAAI,mDAGV,CAEN,SAKN,MAAa,OAA0B,CACrC,IAAM,EAAgB,IAAI,EAAQ,UAC/B,YAAY,8CACZ,UAAU,IACV,UAAU,IACV,UAAU,IAAI,EAAO,gBAAiB,mCACtC,OAAO,IAQV,OANA,EAAc,KAAK,YAAc,GAAgB,CAC/C,EAAiB,EAAY,QAC7B,EAAM,YAAc,SACpB,GAAsB,CAAE,YAAa,aAGhC,GC5eH,GAAY,CAChB,uBACA,uBACA,2BACA,OACA,eACA,iBACA,cACA,kBAEI,GAAgB,CACpB,WACA,+BAGF,eAAsB,IAAY,CAChC,IAAM,EAAa,EAAM,WAEnB,EAAgB,EAAK,KAAK,EAAU,mBAG1C,EAAqB,CACnB,aAAc,GACd,QAAS,GACT,eAEF,EAAqB,CACnB,aAAc,GACd,QAAS,GACT,eAIF,EAAG,SACD,EAAK,KAAK,EAAe,mBACzB,EAAK,KAAK,EAAY,oBAExB,EAAG,SACD,EAAK,KAAK,EAAe,eACzB,EAAK,KAAK,EAAY,gBAExB,EAAG,SACD,EAAK,KAAK,EAAe,sBACzB,EAAK,KAAK,EAAY,uBAExB,EAAG,SACD,EAAK,KAAK,EAAe,uBACzB,EAAK,KAAK,EAAY,wBAExB,EAAG,SACD,EAAK,KAAK,EAAe,gCACzB,EAAK,KAAK,EAAY,iCAIxB,MAAM,KAGN,QAAQ,IAAI;;GCvDd,MAAMZ,GAA+B,CACnC,CACE,IAAK,cACL,MAAO,uBACP,YACE,mEACF,QAAS,CAAC,WACV,SAAU,IAEZ,CACE,IAAK,SACL,MAAO,aACP,YACE,8GACF,QAAS,CAAC,UAAW,aACrB,SAAU,KAMd,SAAgB,IAA4B,CAC1C,IAAMiB,EAAW,IACjB,GAAIA,EAAS,KAAO,SAClB,MAAO,GAGT,IAAM,EAAkBA,EAAS,gBAE3B,EAAiB,GAAkB,OACtC,GACC,CAAC,EAAgB,SAASH,EAAQ,MAClCA,EAAQ,QAAQ,SAASG,EAAS,UAGtC,OAAO,EAAe,KAAK,CAAE,MAAK,QAAO,kBAAmB,CAC1D,MACA,QACA,iBAIJ,eAAsB,IAA0B,CAC9C,IAAM,EAAW,KACXA,EAAW,IACbA,KAAS,KAAO,SAEpB,IAAK,IAAMH,KAAW,EAAU,CAC9B,IAAM,EAAkB,GAAkB,KACvC,GAAM,EAAE,MAAQA,EAAQ,MACxB,SACH,GAAI,EAAiB,CACnB,MAAM,IACN,IAAM,EAAkBG,EAAS,gBACjC,GAAc,CACZ,gBAAiB,CAAC,GAAG,EAAiBH,EAAQ,SC1CtD,SAAS,GAAkB,EAAoB,CAC7C,GAAI,EAAO,OAAS,KAClB,OAAO,EAAO,KAGhB,IAAM,EAAU,EAAK,KAAK,EAAM,WAAY,QACxC,EAAG,WAAW,IAChB,GAAO,OAAO,CAAE,KAAM,IAGxB,IAAM,EAAS,QAAQ,IAAI,EAAO,SAAS,SAAW,iBAChD,EAAW,QAAQ,IAAI,EAAO,SAAS,WAAa,mBAE1D,GAAI,CAEF,IAAM,EAAY,IAAI,IAAI,GACpB,EAAkB,EAAU,SAClC,MAAO,GAAG,EAAgB,GAAG,UACtBF,EAAO,CAId,OAHI,EAAM,OACR,QAAQ,MAAM,4BAA6BA,GAEtC,GAAG,EAAO,GAAG,KAIxB,MAAa,GAA6B,KAAO,IAAkB,CACjE,IAAMK,EAAW,IAEjB,GAAIA,EAAS,YAAY,SAAW,EAAG,CACrC,EAAE,KAAK,0CACP,OAGF,IAAI,EAAiB,EAGrB,GAAI,CAAC,EACH,EAAiB,EACf,MAAM,EAAE,OAAO,CACb,QAAS,2CACT,QAASA,EAAS,YAAY,IAAK,GAAW,CAC5C,IAAI,EAAO,GACX,GAAI,CACF,EAAO,GAAkB,SAClBL,EAAO,CACV,EAAM,OACR,QAAQ,MAAM,kCAAmCA,GAEnD,EAAO,qBAET,MAAO,CACL,MAAO,GAAG,EAAO,KAAK,IAAI,EAAK,GAC/B,MAAO,EAAO,eAKjB,CAEL,IAAM,EAAmBK,EAAS,YAAY,KAC3C,GAAW,EAAO,OAAS,GAE9B,GAAI,CAAC,EACH,MAAU,MACR,gBAAgB,EAAe,+BAKrC,IAAI,EAAY,GAChB,GAAI,CAAC,EAAM,KACT,EAAY,EACV,MAAM,EAAE,QAAQ,CACd,QAAS,oDAAoD,EAAe,4HAI5E,CAAC,GAAW,MAAM,IAAI,GAI5B,IAAM,EAAaA,EAAS,YAAY,KACrC,GAAW,EAAO,OAAS,GAW9B,GAPA,EAAS,YAAcA,EAAS,YAAY,OACzC,GAAW,EAAO,OAAS,GAI9B,GAAYA,GAER,GAAY,OAAS,KAAM,CAE7B,GAAyB,CACvB,mBAGE,EAAM,OACR,EAAE,KAAK,4CAIT,IAAM,EAAmB,EAAK,KAC5B,EAAM,WACN,MACA,SACA,UACA,GAEE,EAAG,WAAW,KAChB,EAAG,WAAW,GACV,EAAM,OACR,EAAE,KAAK,4BAA4B,MAKvC,MAAM,KACF,EAAM,OACR,EAAE,KAAK,kCAIX,EAAE,KAAK,qCAAqC,EAAe,KAGhD,OAAoC,CAC/C,IAAM,EAA0B,IAAI,EAAQ,QACzC,YAAY,0CACZ,OAAO,gBAAiB,qCACxB,UAAU,IACV,UAAU,IACV,OAAO,KAAO,IAAY,CACzB,IAAMR,EAAAA,EAAkB,CACtB,KAAA,IAAiB,aAEb,EAAYA,EAAO,MAAM,GAC/B,MAAM,GAA2B,EAAU,QAS/C,OANA,EAAwB,KAAK,aAAc,EAAc,IAAkB,CACzE,EAAiB,EAAc,QAC/B,EAAM,YAAc,SACpB,GAAsB,CAAE,YAAa,aAGhC,GC7JH,GACJ,GACsC,CACtC,IAAM,EAAc,EAAK,KAAK,EAAM,WAAY,0BAGhD,GAAI,CAAC,EAAG,WAAW,GAAc,MAAO,GAExC,IAAM,EAAa,EAAQ,oBAAoB,GAEzCH,EAA4C,GAG5C,EAAgB,EACnB,uBAAuB,kBACtB,qBAAqB,EAAW,yBAChC,cAEJ,GAAe,QAAS,GAAY,CAClC,GAAI,EAAK,0BAA0B,GAAU,CAC3C,IAAM,EAAY,EACf,gBACA,KACE,GACC,EAAK,qBAAqB,IAAS,EAAK,YAAc,SAEtD,EAAW,EACd,gBACA,KACE,GACC,EAAK,qBAAqB,IAAS,EAAK,YAAc,QAGtD,EAAQ,GAAW,kBAAkB,UAAU,QAAQ,QAAS,IAChE,EAAO,GAAU,kBAAkB,UAAU,QAAQ,QAAS,IAEhE,GAAS,GACX,EAAO,KAAK,CAAE,QAAO,YAM3B,IAAM,EAAkB,EACrB,uBAAuB,oBACtB,qBAAqB,EAAW,yBAChC,cA0BJ,OAxBA,GAAiB,QAAS,GAAY,CACpC,GAAI,EAAK,0BAA0B,GAAU,CAC3C,IAAM,EAAY,EACf,gBACA,KACE,GACC,EAAK,qBAAqB,IAAS,EAAK,YAAc,SAEtD,EAAW,EACd,gBACA,KACE,GACC,EAAK,qBAAqB,IAAS,EAAK,YAAc,QAGtD,EAAQ,GAAW,kBAAkB,UAAU,QAAQ,QAAS,IAChE,EAAO,GAAU,kBAAkB,UAAU,QAAQ,QAAS,IAEhE,GAAS,GACX,EAAO,KAAK,CAAE,QAAO,YAKpB,GAGH,GAAqB,MAAO,EAAkB,IAA0B,CAC5E,IAAM,EAAc,EAAK,KAAK,EAAM,WAAY,0BAGhD,GAAI,CAAC,EAAG,WAAW,GAAc,OAEjC,IAAM,EAAa,EAAQ,oBAAoB,GAGzC,EAAgB,EACnB,uBAAuB,kBACtB,qBAAqB,EAAW,wBAEpC,GAAI,EAAe,CACjB,IAAM,EAAW,EAAc,cAC/B,IAAK,IAAI,EAAI,EAAS,OAAS,EAAG,GAAK,EAAG,IAAK,CAC7C,IAAM,EAAU,EAAS,GACzB,GAAI,EAAK,0BAA0B,GAAU,CAC3C,IAAM,EAAW,EACd,gBACA,KACE,GACC,EAAK,qBAAqB,IAAS,EAAK,YAAc,QAGtD,EAAO,GAAU,kBAAkB,UAAU,QAAQ,QAAS,IAEhE,IAAS,GACX,EAAc,cAAc,KAOpC,IAAM,EAAkB,EACrB,uBAAuB,oBACtB,qBAAqB,EAAW,wBAEpC,GAAI,EAAiB,CACnB,IAAM,EAAW,EAAgB,cACjC,IAAK,IAAI,EAAI,EAAS,OAAS,EAAG,GAAK,EAAG,IAAK,CAC7C,IAAM,EAAU,EAAS,GACzB,GAAI,EAAK,0BAA0B,GAAU,CAC3C,IAAM,EAAW,EACd,gBACA,KACE,GACC,EAAK,qBAAqB,IAAS,EAAK,YAAc,QAGtD,EAAO,GAAU,kBAAkB,UAAU,QAAQ,QAAS,IAEhE,IAAS,GACX,EAAgB,cAAc,KAMtC,MAAM,GAAyB,IAGpB,GAAsB,KAAO,IAAuB,CAC9C,IACjB,IAAM,EAAa,EAAM,WACnB,EAAU,GAAc,GAGxB,EAAS,GAAkB,GAEjC,GAAI,EAAO,SAAW,EACpB,OAAO,EAAE,OAAO,qCAGlB,AACE,IAAY,EACV,MAAM,EAAE,OAAO,CACb,QAAS,4BACT,QAAS,EAAO,IAAK,IAAW,CAC9B,MAAO,GAAG,EAAM,MAAM,IAAI,EAAM,KAAK,GACrC,MAAO,EAAM,WAMhB,EAAU,WAAW,OACxB,EAAY,IAAI,KAGlB,IAAM,EACJ,EAAM,UAAY,UACd,EAAK,KAAK,EAAY,iBAAkB,GACxC,EAAK,KAAK,EAAY,aAAc,GAEpC,EAAU,EAAE,UAClB,EAAQ,MAAM,iBAEd,GAAI,CAEF,GAAI,CAAC,EAAG,WAAW,GAEjB,OADA,EAAQ,KAAK,mBACN,EAAE,OAAO,WAAW,EAAU,kBAIvC,MAAM,GAAmB,EAAS,GAGlC,MAAM,EAAG,OAAO,GAEhB,EAAQ,KAAK,oCACNM,EAAO,CACd,EAAQ,KAAK,0BACb,QAAQ,MAAM,uBAAwBA,GACtC,QAAQ,KAAK,KAIJ,OAA8B,CACzC,IAAM,EAAoB,IAAI,EAAQ,QACnC,YAAY,mCACZ,SAAS,UAAW,mCACpB,UAAU,IACV,UAAU,IACV,OAAO,KAAO,IAAkB,CAC/B,MAAM,GAAoB,KAS9B,OANA,EAAkB,KAAK,aAAc,EAAc,IAAkB,CACnE,EAAiB,EAAc,QAC/B,EAAM,YAAc,SACpB,GAAsB,CAAE,YAAa,aAGhC,GC3NI,GAAwB,KAAO,IAKtC,CACJ,IAAMK,EAAW,GAAM,UAAY,IAC7B,EAAa,GAAM,YAAc,EAAM,WACzC,EAAa,GAAM,WAGvB,GACE,CAAC,GACDA,EAAS,YAAY,OAAQ,GAAM,EAAE,OAAS,MAAM,OAAS,EAC7D,CACA,IAAM,EAAiB,MAAM,EAAE,OAAO,CACpC,QACE,mEACF,QAASA,EAAS,YACf,OAAQ,GAAM,EAAE,OAAS,MACzB,IAAK,IAAO,CAAE,MAAO,EAAE,KAAM,MAAO,EAAE,UAEvC,EAAE,SAAS,KACb,EAAE,SACF,QAAQ,KAAK,IAEf,EAAA,IAAwB,MAAM,GAGhC,AAAiB,IAAa,YAE9B,IAAM,EAAaA,EAAS,YACzB,OAAQ,GAAM,EAAE,OAAS,MACzB,KAAM,GAAM,EAAE,OAAS,GAC1B,GAAI,CAAC,EACH,MAAU,MACR,yBAAyB,EAAW,qCAKxC,IAAM,EAAkB,GAAmB,CACzC,aACA,eAAgB,IAGlB,GAAI,EAAgB,SAAW,EAAG,CAChC,EAAE,KACA,oCAAoC,EAAW,GAC/C,qBAEF,OAIF,IAAM,EACJ,GAAM,YACN,EACE,MAAM,EAAE,OAAO,CACb,QAAS,4BACT,QAAS,EACN,IAAK,IAAY,CAChB,MAAO,GAAGR,EAAO,OAAO,IAAIA,EAAO,WAAW,GAC9C,MAAOA,EAAO,YAAc,MAE7B,OAAQ,GAAQ,EAAI,QAAU,OAKjC,EAAiB,MAAM,EAAE,QAAQ,CACrC,QAAS,+CAA+C,EAAe,IACvE,aAAc,MAGZ,EAAE,SAAS,IAAmB,CAAC,KACjC,EAAE,OAAO,uBACT,QAAQ,KAAK,IAIf,MAAM,GAAa,CACjB,aACA,eAAgB,EAChB,WAAY,EACZ,WAAY,KAGd,EAAE,MAAM,WAAW,EAAe,wCAGvB,OAAgC,CAC3C,IAAM,EAAsB,IAAI,EAAQ,UACrC,MAAM,UACN,YAAY,2CACZ,OAAO,KAAO,IAAiC,CAC9C,IAAMQ,EAAW,EAAK,SACtB,MAAM,GAAsB,CAAE,SAAA,MAGlC,OAAO,GC/FI,GAAY,KAAO,IAA6B,CAC3D,IAAMA,EAAW,IAEX,EAAa,EACjB,MAAM,EAAE,OAAO,CACb,QAAS,gDACT,QAAS,CACP,CAAE,MAAO,OAAQ,MAAO,QACxB,CACE,MAAO,SACP,MAAO,SACP,KAAM,mCAER,GAAIA,EAAS,UAAY,UACrB,CACE,CACE,MAAO,cACP,MAAO,OACP,KAAM,8CAGV,OAKN,IAAe,OACjB,MAAM,KACG,IAAe,OACxB,MAAM,KACG,IAAe,UACxB,MAAM,MAIV,SAAgB,IAAoB,CAClC,IAAM,EAAgB,IAAI,EAAQ,UAC/B,YAAY,wCACZ,SAAS,SAAU,+BACnB,UAAU,IACV,UAAU,IACV,OAAO,IAkBV,OAhBA,EAAc,KAAK,aAAc,EAAc,IAAmB,CAChE,EAAiB,EAAe,QAChC,EAAM,YAAc,SACpB,GAAsB,CAAE,YAAa,aAEvC,EAAc,KAAK,iBAAkB,EAAc,IAAgB,CACjE,EAAiB,EAAY,QAC7B,EAAM,YAAc,SACpB,GAAsB,CAAE,YAAa,aAIvC,EAAc,WAAW,MACzB,EAAc,WAAW,MACzB,EAAc,WAAW,MAElB,ECnET,eAAsB,GAAW,EAA8B,CAC7D,IAAM,EAAc,EAAK,SAAS,YAC9B,EAAkB,GACtB,UAAW,IAAM,KAAM,EACrB,GAAI,EAAG,OAAS,WACd,MAAU,MAAM,yCACP,EAAG,OAAS,KACrB,QAAQ,IACN,qDAAqD,EAAG,KAAK,MAE/D,EAAkB,QAElB,MAAU,MAAM,sDAIhB,GACF,MAAM,KAIV,MAAa,OAA2B,CACtC,IAAM,EAAiB,IAAI,EAAQ,WAChC,YAAY,mCACZ,OAAO,IAOV,OALA,EAAe,KAAK,aAAc,EAAc,IAAkB,CAChE,IAAMA,EAAW,GAAsB,CAAE,YAAa,YACtD,EAAc,eAAe,WAAYA,KAGpC,GC7BI,GAAa,SAAY,CACpC,EAAiB,IACjB,EAAM,YAAc,UACpB,GAAsB,CAAE,YAAa,YAErC,EAAO,KAAK;;GAEZ,GAAI,CACF,MAAM,KACN,EAAO,KAAK,EAAM,MAAM;UACjBL,EAAO,CACd,EAAO,MAAM,gCAAiCA,GAC9C,QAAQ,KAAK,KAIM,IAAI,IACxB,KAAK,WACL,YAAY,+CACZ,OAAO,ICVV,MAAa,GAAU,SAAY,CACjC,IAAMK,EAAW,IACX,EAAW,KAEjB,GAAI,EAAS,OAAS,EAAG,CACvB,EAAE,IAAI,KACJ,GAAG,EAAM,OAAO,0DAA0D,IAAI,EAC3E,IAAK,GAAY,KAAKH,EAAQ,SAC9B,KAAK;MAGV,IAAM,EAAoB,EACxB,MAAM,EAAE,QAAQ,CACd,QAAS,kCACT,aAAc,MAId,GACF,MAAM,KACN,EAAE,IAAI,QAAQ,EAAM,MAAM,mCAE1B,EAAE,IAAI,KACJ,+CAA+C,EAAM,KACnD,uBAMR,IAAM,EAAa,EACjB,MAAM,EAAE,OAAO,CACb,QAAS,6BACT,QAAS,CACP,CACE,MAAO,iBACP,MAAO,MACP,KAAM,8CAER,CACE,MAAO,oBACP,MAAO,SACP,KAAM,6CAER,CACE,MAAO,iBACP,MAAO,UACP,KAAM,mDAER,CACE,MAAO,SACP,MAAO,SACP,KAAM,6BAER,CACE,MAAO,qBACP,MAAO,UACP,KAAM,gDAER,CACE,MAAO,qBACP,MAAO,OACP,KAAM,mCAMd,OAAQ,EAAR,CACE,IAAK,MACH,MAAM,GAAO,IAAA,IACb,MACF,IAAK,SACH,MAAM,GAAU,IAAA,IAChB,MACF,IAAK,OACH,EAAE,IAAI,KAAK,WAAW,EAAM,KAAK,IAAU,sBAC3C,MAAM,GAAK,IACX,MACF,IAAK,UACH,MAAM,GAAW,CAAE,SAAA,IACnB,MACF,IAAK,SACH,MAAM,KACN,MACF,IAAK,UACH,MAAM,KACN,QCjGO,OAA2B,CACtC,IAAM,EAAiB,IAAI,EAAQ,WAChC,YAAY,+CACZ,UAAU,IACV,OAAO,KAAO,IAAS,CACtB,EAAiB,GAEjB,MAAM,OASV,OANA,EAAe,KAAK,aAAc,EAAc,IAAmB,CACjE,EAAiB,EAAe,QAChC,EAAM,YAAc,UACpB,GAAsB,CAAE,YAAa,cAGhC,GCmBT,SAAS,IAAyC,CAChD,OAAO,IAAI,SAAS,EAAS,IAAW,CACtC,GACG,IACC,+DACC,GAAQ,CACP,GAAI,EAAI,aAAe,IAAK,CAC1B,IAAI,EAAO,GACX,EAAI,GAAG,OAAS,GAAU,GAAQ,GAClC,EAAI,GAAG,UAAa,CAClB,EAAS,KAAK,MAAM,GAAuB,eAG7C,MAIL,GAAG,YAAe,CAEjB,QAKR,MAAa,GAAgB,SAE3B,KAAwB,UAAY,CAClC,GAAI,CACF,OAAO,GAAS,6BAA6B,WAAW,YAClD,CACN,OAAO,QAIA,GAA+B,SAAY,CACtD,IAAM,EAAa,MAAM,KACnB,EAAiB,KAGvB,GACE,GACAC,GAAO,MAAM,IACbA,GAAO,MAAM,IACbA,GAAO,GAAG,EAAgB,GAC1B,CACA,IAAM,EAAa,KACnB,EAAE,IAAI,KACJ,GAAG,EAAM,OACP,kDACA,iBAAiB,EAAe,oBAAoB,EAAW;YAC3D,EAAM,QAAQ,KAAK,GAAG,EAAW,WAAW,GAAQ,UAAU,8BAGxE,MAAO,CAAE,aAAY,mBCzEjB,GAAU,KAEV,GAAO,SAAY,CACvB,IAAM,EAAU,IAAI,EACpB,KACA,MAAM,KAEN,EACG,KAAK,IACL,QAAQ,IACR,QAAQ,UAAW,CAAE,OAAQ,GAAM,UAAW,KAC9C,UAAU,IACV,OAAO,KAAO,IAAS,CACtB,EAAiB,GAEjB,IAAIC,EACJ,GAAI,CACF,EAAW,SACL,EAEJ,EAAM,IACR,EAAO,KAAK,sBAGVC,GACF,EAAE,MAAM,SAAS,GAAc,YAAY,WAC3C,MAAM,OAEN,EAAE,MACA,MAAM,GAAc,YAAY,mCAElC,MAAM,QAGT,YACC,WACA,2CAA2C,EACxC,IAAI,WACJ,KAAK,YAAY,KAGxB,EAAQ,WAAW,MACnB,EAAQ,WAAW,MACnB,EAAQ,WAAW,MACnB,EAAQ,WAAW,MACnB,EAAQ,WAAW,MACnB,EAAQ,WAAW,MAEnB,MAAM,EAAQ,WAAW,QAAQ,MACjC,QAAQ,KAAK,IAGf,KAAO,MAAO,GAAQ,CAChB,aAAe,GACjB,QAAQ,KAAK,GACJ,aAAe,OACxB,EAAO,MAAM,4BACb,EAAO,MAAM,KAEb,EAAO,MACL,iFAEF,QAAQ,IAAI,IAEd,QAAQ,KAAK"}