@formhaus/core 0.12.0 → 0.13.1
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/README.md +1 -0
- package/dist/{check-definition-B-YU_XN6.d.ts → check-definition-DuLExofm.d.ts} +2 -2
- package/dist/chunk-35SAVPYL.js +2 -0
- package/dist/chunk-35SAVPYL.js.map +1 -0
- package/dist/chunk-76YV4J3Q.js +3 -0
- package/dist/chunk-76YV4J3Q.js.map +1 -0
- package/dist/chunk-PBTYUSZR.js +2 -0
- package/dist/chunk-PBTYUSZR.js.map +1 -0
- package/dist/chunk-PZEBYRGE.js +2 -0
- package/dist/chunk-PZEBYRGE.js.map +1 -0
- package/dist/chunk-RN5GQHKN.js +5 -0
- package/dist/chunk-RN5GQHKN.js.map +1 -0
- package/dist/{chunk-KXLWZLOO.js → chunk-YTUVSJUF.js} +3 -3
- package/dist/{chunk-KXLWZLOO.js.map → chunk-YTUVSJUF.js.map} +1 -1
- package/dist/cloud.d.ts +3 -3
- package/dist/cloud.js +1 -1
- package/dist/{controller-DXb698eH.d.ts → controller-Ds_kbXSU.d.ts} +1 -1
- package/dist/default-messages-yS4QtrYi.d.ts +23 -0
- package/dist/{definition-PdtKhxBh.d.ts → definition-B4OIy_wH.d.ts} +44 -1
- package/dist/i18n.d.ts +60 -0
- package/dist/i18n.js +2 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +11 -12
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +24 -6
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/{runtime-Dn2_UIxt.d.ts → runtime-BN2PuKD7.d.ts} +6 -2
- package/dist/server.d.ts +6 -4
- package/dist/server.iife.js +4 -4
- package/dist/server.iife.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/validate-field-ND_UxoJU.d.ts +7 -0
- package/fixtures/submissions/choices.json +3 -8
- package/fixtures/submissions/messages.json +155 -0
- package/fixtures/submissions/single-step.json +3 -4
- package/package.json +6 -1
- package/schema/form-definition.schema.json +236 -0
- package/schema/form-translation.schema.json +222 -0
- package/dist/chunk-OBVVPPVA.js +0 -3
- package/dist/chunk-OBVVPPVA.js.map +0 -1
- package/dist/chunk-OZ352IOK.js +0 -5
- package/dist/chunk-OZ352IOK.js.map +0 -1
- package/dist/validate-field-dZd5yZAp.d.ts +0 -19
package/dist/server.iife.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/visibility/evaluate-condition.ts","../src/definition-validation/issues.ts","../src/definition-validation/conditions.ts","../src/definition-validation/context.ts","../src/definition-validation/fields.ts","../src/definition-validation/graph.ts","../src/definition-validation/format.ts","../src/definition-validation/shape.ts","../src/definition-validation/paths.ts","../src/definition-validation/structure.ts","../src/validation/default-messages.ts","../src/validation/type-checks.ts","../src/definition-validation/warnings.ts","../src/definition-validation/check-definition.ts","../src/engine/engine-utils.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.ts","../src/visibility/is-visible.ts","../src/validation/validate-field.ts","../src/validation/validate-step.ts","../src/engine/validation-state.ts","../src/engine/step-routes.ts","../src/engine/step-skip.ts","../src/engine/submission.ts","../src/engine/navigation.ts","../src/engine/subscriptions.ts","../src/engine/warnings.ts","../src/engine/visibility-index.ts","../src/engine/visibility-state.ts","../src/engine/runtime.ts","../src/server/validate-submission.ts"],"names":["CONDITION_OPERATORS","isBlank","value","toNumber","number","compare","operand","test","evaluateCondition","condition","values","a","b","FormDefinitionError","issues","issue","create","severity","code","path","problem","hint","__spreadValues","error","warning","pointer","key","isError","oneOf","shown","distance","row","_","index","i","next","j","closest","candidates","lower","candidate","suggest","match","OPERATORS","operatorIssues","keys","unknown","count","referenceIssues","context","owner","step","target","sameStep","allowed","conditionErrors","entry","conditionIssues","collect","source","_a","name","collectAction","action","createContext","definition","validators","_b","steps","entries","field","position","conditions","route","rangeIssue","rules","min","max","low","high","patternIssue","pattern","e","ruleIssues","fieldIssues","dependencyGraph","graph","link","owners","dependencies","known","fieldsOf","findCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","cycleIssues","cycle","graphIssues","FORMAT_VERSION","formatIssues","version","valid","isEntry","KINDS","item","typed","kind","list","check","required","text","option","RULES","validation","shapeIssues","input","format","metaIssues","conditional","successors","indexes","from","reachableSteps","seen","queue","RESERVED","stepIssues","first","later","keyIssues","reachable","exclusive","clash","other","structureIssues","TYPE_MESSAGES","getDefaultMessage","rule","params","BOOLEAN_TYPES","BUILT_IN_TYPES","MAX_STRING_LENGTH","MAX_EMAIL_LENGTH","MAX_ITEMS","EMAIL","DECIMAL","DATE","DATE_ONLY","DATE_TIME","TEXT_TYPES","FORMATS","isCalendarDate","year","month","day","UNTRIMMED_TYPES","trimValue","normalizeValue","parsed","staticOptions","isOption","options","lengthError","_c","_d","multiselectError","stringError","message","formatError","primitiveError","typeError","clientTypeError","LIST_OPERATORS","COMPARISONS","STRING_TYPES","expectedType","valueIssue","operator","mismatch","result","operands","expected","wrong","missing","conditionWarnings","optionIssues","defaults","ruleWarnings","numeric","ranges","sized","fieldWarnings","routeWarnings","targets","to","sibling","exits","definitionWarnings","warnings","shape","definitionErrors","checkDefinition","parseDefinition","errors","conditionFields","getAllFields","createValues","fields","initialValues","getChangedKeys","previous","FormLifecycleError","phase","cause","afterCommit","callback","activePath","engine","watchCheckedInputs","checked","isVisible","matches","isEmpty","boundError","size","unit","patternError","validateFieldValue","allValues","_e","matchMessage","typeIssue","sizeError","matchError","validateStep","validateFields","applyValidationErrors","server","formErrors","state","previousErrors","bound","general","structureChanged","moveToFirstError","targetIndex","clearError","kept","dropServerErrors","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","navigate","validateOne","previousError","fieldKeys","resetEngine","previousValues","loadingFields","changedValues","changedFields","activeSteps","available","stepValues","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","createActivePath","active","refresh","groups","resetValues","skipTarget","skipCurrentStep","includeCurrentStep","skipStepAt","isRejection","applyRejection","sent","submitForm","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","skippedSteps","serverErrors","rejected","hasStepErrors","moveTo","skipStep","changeStep","outcome","skippedValues","edited","submitted","skipped","direction","reason","skipping","validating","validate","committed","toIndex","goToStepWithField","fieldKey","listen","listeners","listener","createSubscriptions","structureVersion","structureListeners","fieldVersions","fieldListeners","set","developmentIssues","assertDefinition","warn","indexConditions","dependent","dependents","createVisibility","allFields","fieldsByKey","routeFields","fieldDependents","stepDependents","stepOfField","visibilityDirty","canGoNextDirty","cache","isMultiStep","visible","onPath","stepIndex","current","valuesChanged","clearedFields","queued","held","clear","FormEngine","total","previousSteps","valueChanged","stepId","revalidated","loading","handler","BODY_MESSAGE","allow","hasOwn","activeValues","visibility","round","settled","typeErrors","withoutRules","invalid","strip","__spreadProps","ignoredValidators","given","isBody","applySkips","requested","validateSubmission","resolved","engineOptions"],"mappings":"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","file":"server.iife.js","sourcesContent":["import type { ShowCondition } from '../types';\n\nexport const CONDITION_OPERATORS = ['eq', 'neq', 'in', 'notIn', 'notEmpty', 'gt', 'gte', 'lt', 'lte'] as const;\n\nexport function isBlank(value: unknown): boolean {\n return value == null || value === '' || (Array.isArray(value) && !value.length);\n}\n\nfunction toNumber(value: unknown): number | undefined {\n const number = typeof value === 'string' && value.trim() !== '' ? Number(value) : value;\n return typeof number === 'number' && Number.isFinite(number) ? number : undefined;\n}\n\nfunction compare(value: unknown, operand: number, test: (value: number, operand: number) => boolean): boolean {\n const number = toNumber(value);\n return number !== undefined && test(number, operand);\n}\n\nexport function evaluateCondition(\n condition: ShowCondition,\n values: Record<string, unknown>,\n): boolean {\n const value = values[condition.field];\n if (condition.eq !== undefined) return value === condition.eq;\n if (condition.neq !== undefined) return value !== condition.neq;\n if (condition.in !== undefined) return condition.in.includes(value as string | number);\n if (condition.notIn !== undefined) return !condition.notIn.includes(value as string | number);\n if (condition.notEmpty !== undefined) return !condition.notEmpty || !isBlank(value);\n if (condition.gt !== undefined) return compare(value, condition.gt, (a, b) => a > b);\n if (condition.gte !== undefined) return compare(value, condition.gte, (a, b) => a >= b);\n if (condition.lt !== undefined) return compare(value, condition.lt, (a, b) => a < b);\n if (condition.lte !== undefined) return compare(value, condition.lte, (a, b) => a <= b);\n return false;\n}\n","export type DefinitionIssueCode =\n | 'invalid-type'\n | 'missing-property'\n | 'fields-and-steps'\n | 'duplicate-step-id'\n | 'duplicate-key'\n | 'reserved-key'\n | 'route-target'\n | 'unknown-field'\n | 'forward-reference'\n | 'condition-operator-count'\n | 'unknown-operator'\n | 'condition-value-mismatch'\n | 'condition-cycle'\n | 'invalid-pattern'\n | 'invalid-range'\n | 'rule-not-applicable'\n | 'missing-options'\n | 'default-not-in-options'\n | 'unknown-field-type'\n | 'unknown-validator'\n | 'skip-unreachable'\n | 'route-fallthrough'\n | 'unsupported-format-version';\n\nexport interface DefinitionIssue {\n code: DefinitionIssueCode;\n severity: 'error' | 'warning';\n path: string;\n message: string;\n hint?: string;\n}\n\nexport class FormDefinitionError extends Error {\n readonly issues: DefinitionIssue[];\n\n constructor(issues: DefinitionIssue[]) {\n super(`Invalid form definition:\\n${issues.map((issue) => issue.message).join('\\n')}`);\n this.name = 'FormDefinitionError';\n this.issues = issues;\n }\n}\n\nfunction create(severity: DefinitionIssue['severity']) {\n return (code: DefinitionIssueCode, path: string, problem: string, hint?: string): DefinitionIssue => ({\n code,\n severity,\n path,\n message: `${path || '/'}: ${problem}.${hint ? ` ${hint}.` : ''}`,\n ...(hint && { hint: `${hint}.` }),\n });\n}\n\nexport const error = create('error');\nexport const warning = create('warning');\n\nexport function pointer(key: string): string {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\nexport function isError(issue: DefinitionIssue): boolean {\n return issue.severity === 'error';\n}\n\nexport function oneOf(values: string[]): string {\n if (values.length === 1) return `Use ${JSON.stringify(values[0])}`;\n const shown = values.slice(0, 10).map((value) => JSON.stringify(value)).join(', ');\n return values.length > 10 ? `Use one of: ${shown}, ...` : `Use one of: ${shown}`;\n}\n\nfunction distance(a: string, b: string): number {\n let row = Array.from({ length: b.length + 1 }, (_, index) => index);\n for (let i = 1; i <= a.length; i++) {\n const next = [i];\n for (let j = 1; j <= b.length; j++) {\n next[j] = Math.min(row[j] + 1, next[j - 1] + 1, row[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));\n }\n row = next;\n }\n return row[b.length];\n}\n\nexport function closest(value: string, candidates: string[]): string | undefined {\n const lower = value.toLowerCase();\n return candidates.find((candidate) => candidate !== value && distance(lower, candidate.toLowerCase()) <= (candidate.length > 4 ? 2 : 1));\n}\n\nexport function suggest(value: string, candidates: string[]): string | undefined {\n const match = closest(value, candidates);\n if (match !== undefined) return `Use ${JSON.stringify(match)}`;\n return candidates.length ? oneOf(candidates) : undefined;\n}\n","import { CONDITION_OPERATORS } from '../visibility/evaluate-condition';\nimport type { ShowCondition } from '../types';\nimport type { CheckContext, ConditionEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, pointer } from './issues';\n\nexport const OPERATORS: readonly string[] = CONDITION_OPERATORS;\n\nfunction operatorIssues({ suggest }: CheckContext, condition: ShowCondition, path: string): DefinitionIssue[] {\n const keys = Object.keys(condition).filter((key) => key !== 'field');\n const unknown = keys.filter((key) => !OPERATORS.includes(key));\n const issues = unknown.map((key) => error('unknown-operator', `${path}/${pointer(key)}`, `\"${key}\" is not a condition operator`, suggest(key, [...OPERATORS])));\n const count = keys.length - unknown.length;\n if (count !== 1 && !(count === 0 && unknown.length)) {\n const problem = count ? `the condition has ${count} operators` : 'the condition has no operator';\n issues.push(error('condition-operator-count', path, problem, `Use exactly one of: ${OPERATORS.join(', ')}`));\n }\n return issues;\n}\n\nfunction referenceIssues(context: CheckContext, { condition, path, owner, step, key }: ConditionEntry): DefinitionIssue[] {\n const target = context.keys.get(condition.field);\n if (!target) {\n const candidates = context.keyList.filter((candidate) => candidate !== key);\n return [error('unknown-field', `${path}/field`, `\"${condition.field}\" is not a field key`, context.suggest(condition.field, candidates))];\n }\n if (step < 0 || owner === 'action') return [];\n const sameStep = owner === 'step' ? 'this or a later step' : 'a later step';\n if (target.step < step || (owner !== 'step' && target.step === step)) return [];\n const allowed = owner === 'step' ? 'earlier steps' : 'this or an earlier step';\n return [error('forward-reference', `${path}/field`, `\"${condition.field}\" belongs to ${sameStep}`, `${owner === 'route' ? 'Route' : owner === 'step' ? 'Step' : 'Field'} conditions can use fields of ${allowed}`)];\n}\n\nexport function conditionErrors(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (typeof condition.field !== 'string') return [error('missing-property', `${path}/field`, 'the condition has no \"field\"', 'Add the key of the field to test')];\n return [...operatorIssues(context, condition, path), ...referenceIssues(context, entry)];\n}\n\nexport function conditionIssues(context: CheckContext): DefinitionIssue[] {\n return context.conditions.flatMap((entry) => conditionErrors(context, entry));\n}\n","import type { FormAction, FormDefinition, FormField, ShowCondition } from '../types';\n\nexport interface FieldEntry {\n field: FormField;\n path: string;\n step: number;\n}\n\nexport interface ConditionEntry {\n condition: ShowCondition;\n path: string;\n owner: 'field' | 'step' | 'route' | 'action';\n step: number;\n key?: string;\n}\n\nexport interface CheckContext {\n definition: FormDefinition;\n entries: FieldEntry[];\n keys: Map<string, FieldEntry>;\n keyList: string[];\n conditions: ConditionEntry[];\n validators?: Record<string, unknown>;\n suggest: (value: string, candidates: string[]) => string | undefined;\n}\n\ntype Owner = { show?: ShowCondition[]; showAny?: ShowCondition[] };\n\nfunction collect(target: ConditionEntry[], source: Owner, path: string, owner: ConditionEntry['owner'], step: number, key?: string): void {\n for (const name of ['show', 'showAny'] as const) {\n (source[name] ?? []).forEach((condition, index) => target.push({ condition, path: `${path}/${name}/${index}`, owner, step, key }));\n }\n}\n\nfunction collectAction(target: ConditionEntry[], action: FormAction | false | undefined, path: string, step: number): void {\n (action ? action.disabled ?? [] : []).forEach((condition, index) => (\n target.push({ condition, path: `${path}/disabled/${index}`, owner: 'action', step })\n ));\n}\n\nexport function createContext(definition: FormDefinition, validators?: Record<string, unknown>, suggest: CheckContext['suggest'] = () => undefined): CheckContext {\n const steps = definition.steps ?? [];\n const entries: FieldEntry[] = steps.length\n ? steps.flatMap((step, index) => step.fields.map((field, position) => ({ field, path: `/steps/${index}/fields/${position}`, step: index })))\n : (definition.fields ?? []).map((field, position) => ({ field, path: `/fields/${position}`, step: -1 }));\n const keys = new Map<string, FieldEntry>();\n for (const entry of entries) if (!keys.has(entry.field.key)) keys.set(entry.field.key, entry);\n const conditions: ConditionEntry[] = [];\n for (const entry of entries) collect(conditions, entry.field, entry.path, 'field', entry.step, entry.field.key);\n steps.forEach((step, index) => {\n collect(conditions, step, `/steps/${index}`, 'step', index);\n (step.routes ?? []).forEach((route, position) => collect(conditions, route, `/steps/${index}/routes/${position}`, 'route', index));\n for (const name of ['next', 'back', 'skip'] as const) collectAction(conditions, step[name], `/steps/${index}/${name}`, index);\n });\n collectAction(conditions, definition.submit, '/submit', -1);\n collectAction(conditions, definition.cancel, '/cancel', -1);\n return {\n definition,\n entries,\n keys,\n keyList: [...keys.keys()],\n conditions,\n validators,\n suggest,\n };\n}\n","import type { FieldValidation } from '../types';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nfunction rangeIssue(rules: FieldValidation, path: string, min: 'min' | 'minLength', max: 'max' | 'maxLength'): DefinitionIssue[] {\n const low = rules[min];\n const high = rules[max];\n if (low === undefined || high === undefined || low <= high) return [];\n return [error('invalid-range', `${path}/validation/${min}`, `${min} (${low}) is greater than ${max} (${high})`, `Lower ${min} or raise ${max}`)];\n}\n\nfunction patternIssue(pattern: string | undefined, path: string): DefinitionIssue[] {\n if (pattern === undefined) return [];\n try {\n new RegExp(pattern);\n return [];\n } catch {\n return [error('invalid-pattern', `${path}/validation/pattern`, `${JSON.stringify(pattern)} is not a valid regular expression`, 'Fix the pattern or escape special characters with a backslash')];\n }\n}\n\nfunction ruleIssues(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation;\n if (!rules) return [];\n const match = rules.matchField;\n return [\n ...rangeIssue(rules, path, 'minLength', 'maxLength'),\n ...rangeIssue(rules, path, 'min', 'max'),\n ...patternIssue(rules.pattern, path),\n ...(match === undefined || context.keys.has(match) ? [] : [error('unknown-field', `${path}/validation/matchField`, `\"${match}\" is not a field key`, context.suggest(match, context.keyList))]),\n ];\n}\n\nexport function fieldIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => ruleIssues(context, entry));\n}\n","import type { CheckContext } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nfunction dependencyGraph({ definition, entries, keys }: CheckContext): Map<string, string[]> {\n const graph = new Map<string, string[]>();\n const link = (owners: string[], dependencies: string[]) => {\n const known = dependencies.filter((key) => keys.has(key));\n if (known.length) for (const owner of owners) graph.set(owner, [...(graph.get(owner) ?? []), ...known]);\n };\n const fieldsOf = (source: { show?: { field: string }[]; showAny?: { field: string }[] }) => (\n [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field)\n );\n for (const { field } of entries) link([field.key], fieldsOf(field));\n for (const step of definition.steps ?? []) link(step.fields.map((field) => field.key), fieldsOf(step));\n return graph;\n}\n\nfunction findCycles(graph: Map<string, string[]>): string[][] {\n const visiting = new Map<string, boolean>();\n const cycles: string[][] = [];\n for (const start of graph.keys()) {\n if (visiting.has(start)) continue;\n visiting.set(start, true);\n const stack: [string, number][] = [[start, 0]];\n while (stack.length > 0) {\n const frame = stack[stack.length - 1];\n const neighbor = graph.get(frame[0])?.[frame[1]++];\n if (neighbor === undefined) {\n visiting.set(frame[0], false);\n stack.pop();\n } else if (visiting.get(neighbor)) {\n const nodes = stack.map(([node]) => node);\n cycles.push([...nodes.slice(nodes.indexOf(neighbor)), neighbor]);\n } else if (!visiting.has(neighbor)) {\n visiting.set(neighbor, true);\n stack.push([neighbor, 0]);\n }\n }\n }\n return cycles;\n}\n\nfunction cycleIssues(context: CheckContext): DefinitionIssue[] {\n return findCycles(dependencyGraph(context)).map((cycle) => (\n error('condition-cycle', context.keys.get(cycle[0])!.path, `show conditions form a cycle: ${cycle.join(' -> ')}`, 'Remove one of the conditions in the cycle')\n ));\n}\n\nexport function graphIssues(context: CheckContext): DefinitionIssue[] {\n return cycleIssues(context);\n}\n","import type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nexport const FORMAT_VERSION = '1.0';\n\nexport function formatIssues({ formatVersion: version }: Record<string, unknown>): DefinitionIssue[] {\n if (version === undefined) return [];\n const valid = typeof version === 'string' && /^[1-9]\\d*(\\.\\d+)?$/.test(version);\n if (valid && parseInt(version) <= parseInt(FORMAT_VERSION)) return [];\n return [valid\n ? error('unsupported-format-version', '/formatVersion', `format ${version} is not supported`, 'Upgrade @formhaus/core')\n : error('invalid-type', '/formatVersion', 'must be a version string', `Use \"${FORMAT_VERSION}\"`)];\n}\n","import type { DefinitionIssue } from './issues';\nimport { formatIssues } from './format';\nimport { error, pointer } from './issues';\n\ntype Entry = Record<string, unknown>;\ntype Check = (value: Entry, path: string) => DefinitionIssue[];\ntype Kind = 'string' | 'number' | 'boolean' | 'requirement' | 'scalar' | 'list';\n\nexport const isEntry = (value: unknown): value is Entry =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst KINDS: Record<Kind, [(value: unknown) => boolean, string]> = {\n string: [(value) => typeof value === 'string', 'a string'],\n number: [(value) => typeof value === 'number' && Number.isFinite(value), 'a number'],\n boolean: [(value) => typeof value === 'boolean', 'true or false'],\n requirement: [(value) => ['boolean', 'string'].includes(typeof value), 'true, false or a message string'],\n scalar: [(value) => ['string', 'number', 'boolean'].includes(typeof value), 'a string, number or boolean'],\n list: [(value) => Array.isArray(value) && value.every((item) => ['string', 'number'].includes(typeof item)), 'an array of strings or numbers'],\n};\n\nfunction typed(value: Entry, rules: Record<string, Kind>, path: string): DefinitionIssue[] {\n return Object.entries(rules).flatMap(([key, kind]) => {\n const [valid, name] = KINDS[kind];\n return value[key] === undefined || valid(value[key]) ? [] : [error('invalid-type', `${path}/${pointer(key)}`, `\"${key}\" must be ${name}`)];\n });\n}\n\nfunction list(value: unknown, path: string, name: string, check: Check, required = false): DefinitionIssue[] {\n if (value == null && !required) return [];\n if (!Array.isArray(value)) return [error('invalid-type', path, 'must be an array', required ? 'Use [] when there is nothing to list' : undefined)];\n return value.flatMap((item, index) => (\n isEntry(item) ? check(item, `${path}/${index}`) : [error('invalid-type', `${path}/${index}`, `must be ${name}`)]\n ));\n}\n\nfunction text(value: Entry, key: string, path: string): DefinitionIssue[] {\n return typeof value[key] === 'string' ? [] : [error('missing-property', `${path}/${key}`, `\"${key}\" must be a string`)];\n}\n\nconst condition: Check = (value, path) => typed(value, { field: 'string', eq: 'scalar', neq: 'scalar', in: 'list', notIn: 'list', notEmpty: 'boolean', gt: 'number', gte: 'number', lt: 'number', lte: 'number' }, path);\n\nfunction conditions(value: Entry, path: string): DefinitionIssue[] {\n return [\n ...list(value.show, `${path}/show`, 'a condition object', condition),\n ...list(value.showAny, `${path}/showAny`, 'a condition object', condition),\n ];\n}\n\nfunction action(value: unknown, path: string): DefinitionIssue[] {\n if (!isEntry(value)) return [];\n return [...typed(value, { label: 'string' }, path), ...list(value.disabled, `${path}/disabled`, 'a condition object', condition)];\n}\n\nconst option: Check = (value, path) => [...text(value, 'value', path), ...typed(value, { label: 'string' }, path)];\n\nconst RULES: Record<string, Kind> = {\n required: 'requirement', minLength: 'number', maxLength: 'number', min: 'number', max: 'number', pattern: 'string', matchField: 'string', validator: 'string',\n minLengthMessage: 'string', maxLengthMessage: 'string', minMessage: 'string', maxMessage: 'string', patternMessage: 'string', matchFieldMessage: 'string',\n};\n\nfunction validation(value: unknown, path: string): DefinitionIssue[] {\n if (value === undefined) return [];\n return isEntry(value) ? typed(value, RULES, path) : [error('invalid-type', path, 'must be an object of validation rules')];\n}\n\nfunction dependencies(value: unknown, path: string): DefinitionIssue[] {\n const valid = value === undefined || (Array.isArray(value) && value.every((key) => typeof key === 'string'));\n return valid ? [] : [error('invalid-type', path, 'must be an array of field keys')];\n}\n\nconst field: Check = (value, path) => [\n ...text(value, 'key', path),\n ...text(value, 'type', path),\n ...typed(value, { label: 'string', placeholder: 'string', helperText: 'string' }, path),\n ...conditions(value, path),\n ...list(value.options, `${path}/options`, 'an option object', option),\n ...validation(value.validation, `${path}/validation`),\n ...dependencies(value.optionsDependsOn, `${path}/optionsDependsOn`),\n];\n\nconst route: Check = (value, path) => [\n ...(value.to === null || typeof value.to === 'string' ? [] : [error('missing-property', `${path}/to`, '\"to\" must be a step id or null')]),\n ...conditions(value, path),\n];\n\nconst step: Check = (value, path) => [\n ...text(value, 'id', path),\n ...typed(value, { title: 'string', description: 'string' }, path),\n ...list(value.fields, `${path}/fields`, 'a field object', field, true),\n ...conditions(value, path),\n ...list(value.routes, `${path}/routes`, 'a route object', route),\n ...['next', 'back', 'skip'].flatMap((name) => action(value[name], `${path}/${name}`)),\n];\n\nexport function shapeIssues(input: unknown): DefinitionIssue[] {\n if (!isEntry(input)) return [error('invalid-type', '', 'the form definition must be an object')];\n const format = formatIssues(input);\n if (format.length) return format;\n return [\n ...list(input.fields, '/fields', 'a field object', field),\n ...list(input.steps, '/steps', 'a step object', step),\n ...action(input.submit, '/submit'),\n ...action(input.cancel, '/cancel'),\n ];\n}\n\nexport function metaIssues(input: Entry): DefinitionIssue[] {\n return [\n ...text(input, 'id', ''),\n ...(isEntry(input.submit) ? [] : [error('missing-property', '/submit', 'the submit action is missing', 'Add \"submit\": { \"label\": \"Submit\" }')]),\n ];\n}\n","import type { FormStep, StepRoute } from '../types';\n\nconst conditional = (source: Pick<StepRoute, 'show' | 'showAny'>) => !!(source.show?.length || source.showAny?.length);\n\nfunction successors(steps: FormStep[], indexes: Map<string, number>, from: number): number[] {\n const next: number[] = [];\n for (const route of steps[from].routes ?? []) {\n const target = route.to === null ? null : indexes.get(route.to);\n if (target === null && !conditional(route)) return next;\n if (target === null || target === undefined || target <= from) continue;\n next.push(target);\n if (!conditional(route) && !conditional(steps[target])) return next;\n }\n return from + 1 < steps.length ? [...next, from + 1] : next;\n}\n\nexport function reachableSteps(steps: FormStep[]): Set<number>[] {\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n return steps.map((_, start) => {\n const seen = new Set<number>();\n const queue = successors(steps, indexes, start);\n while (queue.length) {\n const index = queue.pop()!;\n if (seen.has(index)) continue;\n seen.add(index);\n queue.push(...successors(steps, indexes, index));\n if (conditional(steps[index]) && index + 1 < steps.length) queue.push(index + 1);\n }\n return seen;\n });\n}\n","import type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, oneOf } from './issues';\nimport { reachableSteps } from './paths';\n\nconst RESERVED = new Set([...Object.getOwnPropertyNames(Object.prototype), 'prototype']);\n\nfunction stepIssues({ definition }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const steps = definition.steps ?? [];\n const seen = new Map<string, number>();\n steps.forEach((step, index) => {\n const first = seen.get(step.id);\n if (first === undefined) seen.set(step.id, index);\n else issues.push(error('duplicate-step-id', `/steps/${index}/id`, `step id \"${step.id}\" is already used by /steps/${first}`, 'Give each step a unique id'));\n });\n steps.forEach((step, index) => (step.routes ?? []).forEach((route, position) => {\n if (route.to === null) return;\n const target = seen.get(route.to);\n if (target !== undefined && target > index) return;\n const later = steps.slice(index + 1).map((candidate) => candidate.id);\n const problem = target === undefined ? `\"${route.to}\" is not a step id` : `\"${route.to}\" is not a later step`;\n const hint = later.length ? `${oneOf(later)}, or null to end the form here` : 'Use null to end the form here';\n issues.push(error('route-target', `/steps/${index}/routes/${position}/to`, problem, hint));\n }));\n return issues;\n}\n\nfunction keyIssues({ definition, entries }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const reachable = reachableSteps(definition.steps ?? []);\n const exclusive = (a: FieldEntry, b: FieldEntry) => a.step !== b.step && !reachable[a.step]?.has(b.step);\n entries.forEach((entry, index) => {\n const { field, path } = entry;\n const clash = entries.slice(0, index).find((other) => other.field.key === field.key && !exclusive(other, entry));\n if (RESERVED.has(field.key)) {\n issues.push(error('reserved-key', `${path}/key`, `\"${field.key}\" is a built-in object property name`, 'Rename the field key'));\n } else if (clash) {\n issues.push(error('duplicate-key', `${path}/key`, `key \"${field.key}\" is already used by ${clash.path} on the same path`, 'Rename one of the fields, or move them to route branches that never meet'));\n }\n });\n return issues;\n}\n\nexport function structureIssues(context: CheckContext): DefinitionIssue[] {\n const { definition } = context;\n const both = !!definition.fields?.length && !!definition.steps?.length;\n return [\n ...(both ? [error('fields-and-steps', '', 'the definition has both \"fields\" and \"steps\"', 'Move the top-level fields into a step, or remove \"steps\"')] : []),\n ...stepIssues(context),\n ...keyIssues(context),\n ];\n}\n","export const TYPE_MESSAGES = {\n email: 'Enter a valid email',\n number: 'Enter a number',\n boolean: 'Must be true or false',\n option: 'Select one of the available options',\n options: 'Must be a list of available options',\n string: 'Must be text',\n date: 'Enter a valid date',\n datetime: 'Enter a valid date and time',\n file: 'Must be a file reference',\n value: 'Invalid value',\n};\n\nexport type ValidationRule = 'required' | 'minLength' | 'maxLength' | 'min' | 'max' | 'pattern' | 'matchField';\n\nexport function getDefaultMessage(rule: ValidationRule, params?: Record<string, unknown>): string {\n switch (rule) {\n case 'required':\n return 'This field is required';\n case 'minLength':\n return `Must be at least ${params?.min} ${params?.unit ?? 'characters'}`;\n case 'maxLength':\n return `Must be at most ${params?.max} ${params?.unit ?? 'characters'}`;\n case 'min':\n return `Must be at least ${params?.min}`;\n case 'max':\n return `Must be at most ${params?.max}`;\n case 'pattern':\n return 'Invalid format';\n case 'matchField':\n return 'Fields must match';\n default:\n return 'Invalid value';\n }\n}\n","import type { FormField } from '../types';\nimport { getDefaultMessage, TYPE_MESSAGES } from './default-messages';\n\nexport const BOOLEAN_TYPES = ['checkbox', 'switch'];\nexport const BUILT_IN_TYPES = ['text', 'email', 'phone', 'number', 'password', 'select', 'autocomplete', 'multiselect', 'checkbox', 'radio', 'switch', 'file', 'date', 'datetime', 'textarea'];\n\nexport const MAX_STRING_LENGTH = 10000;\nconst MAX_EMAIL_LENGTH = 254;\nconst MAX_ITEMS = 1000;\nconst EMAIL = /^[^\\s@]+@[^\\s@.]+(?:\\.[^\\s@.]+)+$/;\nconst DECIMAL = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/;\nconst DATE = '\\\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\\\d|3[01])';\nconst DATE_ONLY = new RegExp(`^${DATE}$`);\nconst DATE_TIME = new RegExp(`^${DATE}T(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d{1,3})?)?(?:Z|[+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)?$`);\nconst TEXT_TYPES = new Set(['text', 'phone', 'password', 'textarea', 'autocomplete']);\nconst FORMATS = new Map<string, [RegExp, string, number]>([\n ['email', [EMAIL, TYPE_MESSAGES.email, MAX_EMAIL_LENGTH]],\n ['date', [DATE_ONLY, TYPE_MESSAGES.date, MAX_STRING_LENGTH]],\n ['datetime', [DATE_TIME, TYPE_MESSAGES.datetime, MAX_STRING_LENGTH]],\n]);\n\nfunction isCalendarDate(value: string): boolean {\n const [year, month, day] = value.split(/\\D/).map(Number);\n return day <= new Date(new Date(0).setUTCFullYear(year, month, 0)).getUTCDate();\n}\n\nconst UNTRIMMED_TYPES = new Set(['password', 'number', 'select', 'radio', 'file']);\n\nexport function trimValue(field: FormField, value: unknown): unknown {\n return typeof value === 'string' && !UNTRIMMED_TYPES.has(field.type) ? value.trim() : value;\n}\n\nexport function normalizeValue(field: FormField, input: unknown): unknown {\n const value = trimValue(field, input);\n if (field.type !== 'number' || typeof value !== 'string' || !DECIMAL.test(value)) return value;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n}\n\nconst staticOptions = (field: FormField) => (field.optionsFrom ? undefined : field.options);\n\nfunction isOption(field: FormField, value: unknown): boolean {\n const options = staticOptions(field);\n return !options || options.some((option) => option.value === value);\n}\n\nfunction lengthError(field: FormField, value: string): string | null {\n const max = Math.min(MAX_STRING_LENGTH, field.validation?.maxLength ?? MAX_STRING_LENGTH);\n if (value.length <= max) return null;\n return field.validation?.maxLengthMessage ?? getDefaultMessage('maxLength', { max });\n}\n\nfunction multiselectError(field: FormField, value: unknown): string | null {\n if (!Array.isArray(value)) return TYPE_MESSAGES.options;\n if (value.length > (staticOptions(field)?.length ?? MAX_ITEMS)) return TYPE_MESSAGES.option;\n const valid = value.every((item) => typeof item === 'string' && item.length <= MAX_STRING_LENGTH && isOption(field, item));\n return valid ? null : TYPE_MESSAGES.option;\n}\n\nfunction stringError(field: FormField, value: unknown, message: string): string | null {\n return typeof value === 'string' ? lengthError(field, value) : message;\n}\n\nfunction formatError(field: FormField, value: unknown, [format, message, max]: [RegExp, string, number]): string | null {\n if (typeof value !== 'string') return message;\n return lengthError(field, value) ?? (value.length <= max && format.test(value) && (format === EMAIL || isCalendarDate(value)) ? null : message);\n}\n\nfunction primitiveError(field: FormField, value: unknown): string | null {\n if (typeof value === 'boolean' || (typeof value === 'number' && Number.isFinite(value))) return null;\n return stringError(field, value, TYPE_MESSAGES.value);\n}\n\nfunction isBlank(field: FormField, value: unknown): boolean {\n return value == null || value === '' || (field.type === 'multiselect' && Array.isArray(value) && !value.length);\n}\n\nexport function typeError(field: FormField, value: unknown): string | null {\n if (isBlank(field, value)) return null;\n if (BOOLEAN_TYPES.includes(field.type)) return typeof value === 'boolean' ? null : TYPE_MESSAGES.boolean;\n if (field.type === 'number') return typeof value === 'number' && Number.isFinite(value) ? null : TYPE_MESSAGES.number;\n if (field.type === 'multiselect') return multiselectError(field, value);\n if (field.type === 'file') return stringError(field, value, TYPE_MESSAGES.file);\n const format = FORMATS.get(field.type);\n if (format) return formatError(field, value, format);\n if (field.type === 'select' || field.type === 'radio') return stringError(field, value, TYPE_MESSAGES.option) ?? (isOption(field, value) ? null : TYPE_MESSAGES.option);\n return TEXT_TYPES.has(field.type) ? stringError(field, value, TYPE_MESSAGES.string) : primitiveError(field, value);\n}\n\nexport function clientTypeError(field: FormField, value: unknown): string | null {\n if (field.type === 'file' || !BUILT_IN_TYPES.includes(field.type)) return null;\n return typeError(field, value);\n}\n","import type { FormField } from '../types';\nimport { BOOLEAN_TYPES, BUILT_IN_TYPES } from '../validation/type-checks';\nimport { conditionErrors, OPERATORS } from './conditions';\nimport type { CheckContext, ConditionEntry, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, oneOf, suggest, warning } from './issues';\n\nconst LIST_OPERATORS = ['in', 'notIn'];\nconst COMPARISONS = ['gt', 'gte', 'lt', 'lte'];\nconst STRING_TYPES = ['text', 'email', 'phone', 'password', 'textarea', 'date', 'datetime', 'select', 'radio', 'autocomplete'];\n\nfunction expectedType(field: FormField): string | undefined {\n if (field.type === 'number') return 'number';\n if (BOOLEAN_TYPES.includes(field.type)) return 'boolean';\n return STRING_TYPES.includes(field.type) ? 'string' : undefined;\n}\n\nfunction valueIssue(target: FormField, operator: string, operand: unknown, path: string): DefinitionIssue[] {\n const mismatch = (problem: string, hint: string) => [warning('condition-value-mismatch', path, problem, hint)];\n if (operator === 'notEmpty') return [];\n if (COMPARISONS.includes(operator)) {\n if (target.type !== 'multiselect' && !BOOLEAN_TYPES.includes(target.type)) return [];\n return mismatch(`\"${target.key}\" is a ${target.type} field, so \"${operator}\" never matches it`, 'Compare a number, text, radio or select field');\n }\n if (target.type === 'multiselect') {\n const result = operator === 'neq' || operator === 'notIn' ? 'always' : 'never';\n return mismatch(`\"${target.key}\" holds a list of values, so \"${operator}\" ${result} matches it`, 'Use notEmpty, or a select or radio field');\n }\n const operands = LIST_OPERATORS.includes(operator) && Array.isArray(operand) ? operand : [operand];\n const expected = expectedType(target);\n const wrong = expected && operands.find((item) => typeof item !== expected);\n if (expected && wrong !== undefined) return mismatch(`${JSON.stringify(wrong)} is a ${typeof wrong}, but \"${target.key}\" holds a ${expected}`, `Use a ${expected} value`);\n const options = expected === 'string' && !target.optionsFrom && target.options?.length ? target.options.map((option) => option.value) : null;\n const missing = options && operands.find((item) => !options.includes(item as string));\n return options && missing !== undefined ? mismatch(`${JSON.stringify(missing)} is not an option of \"${target.key}\"`, oneOf(options)) : [];\n}\n\nfunction conditionWarnings(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (conditionErrors(context, entry).length) return [];\n const operator = OPERATORS.find((key) => key in condition)!;\n return valueIssue(context.keys.get(condition.field)!.field, operator, condition[operator as keyof typeof condition], `${path}/${operator}`);\n}\n\nfunction optionIssues({ field, path }: FieldEntry): DefinitionIssue[] {\n if (!['select', 'radio', 'multiselect'].includes(field.type)) return [];\n if (!Array.isArray(field.options)) {\n return field.optionsFrom ? [] : [warning('missing-options', `${path}/options`, `the ${field.type} field \"${field.key}\" has no options`, 'Add \"options\" or \"optionsFrom\"')];\n }\n const values = field.options.map((option) => option.value);\n const defaults = field.type === 'multiselect' && Array.isArray(field.defaultValue) ? field.defaultValue : [field.defaultValue];\n const missing = field.defaultValue === undefined || !values.length || field.optionsFrom ? undefined : defaults.find((value) => !values.includes(value as string));\n if (missing === undefined) return [];\n return [warning('default-not-in-options', `${path}/defaultValue`, `${JSON.stringify(missing)} is not an option of \"${field.key}\"`, oneOf(values))];\n}\n\nfunction ruleWarnings(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation ?? {};\n const rule = (name: string, problem: string, hint: string) => warning('rule-not-applicable', `${path}/validation/${name}`, problem, hint);\n const known = BUILT_IN_TYPES.includes(field.type);\n const numeric = field.type === 'number';\n const ranges = known && !numeric ? (['min', 'max'] as const).filter((name) => rules[name] !== undefined) : [];\n const sized = known && ['number', 'checkbox', 'switch'].includes(field.type) ? (['minLength', 'maxLength'] as const).filter((name) => rules[name] !== undefined) : [];\n const issues = [\n ...ranges.map((name) => rule(name, `\"${name}\" applies to number fields only`, `Use ${name}Length to limit text length`)),\n ...sized.map((name) => rule(name, `\"${name}\" does not apply to ${field.type} fields`, numeric ? 'Use min and max for numbers' : `Remove ${name}`)),\n ];\n const { validators } = context;\n if (rules.validator !== undefined && validators && !Object.prototype.hasOwnProperty.call(validators, rules.validator)) {\n issues.push(warning('unknown-validator', `${path}/validation/validator`, `the validator \"${rules.validator}\" is not registered`, 'Pass it in the \"validators\" option'));\n }\n return issues;\n}\n\nfunction fieldWarnings(context: CheckContext, entry: FieldEntry): DefinitionIssue[] {\n const { field, path } = entry;\n const match = BUILT_IN_TYPES.includes(field.type) ? undefined : closest(field.type, BUILT_IN_TYPES);\n return [\n ...(match === undefined ? [] : [warning('unknown-field-type', `${path}/type`, `\"${field.type}\" is not a built-in field type`, `Use \"${match}\", or register a component for \"${field.type}\"`)]),\n ...optionIssues(entry),\n ...ruleWarnings(context, entry),\n ...(field.optionsDependsOn ?? []).flatMap((key, index) => (\n context.keys.has(key) ? [] : [warning('unknown-field', `${path}/optionsDependsOn/${index}`, `\"${key}\" is not a field key`, suggest(key, context.keyList))]\n )),\n ];\n}\n\nfunction routeWarnings({ definition }: CheckContext): DefinitionIssue[] {\n const steps = definition.steps ?? [];\n return steps.flatMap((step, index) => {\n const issues: DefinitionIssue[] = [];\n const targets = new Set((step.routes ?? []).map((route) => route.to).filter((to) => to !== null));\n for (const target of targets) {\n const position = steps.findIndex((candidate) => candidate.id === target);\n const sibling = steps[position + 1];\n const exits = steps[position]?.routes?.some((route) => !route.show?.length && !route.showAny?.length);\n if (!sibling || !targets.has(sibling.id) || exits) continue;\n issues.push(warning('route-fallthrough', `/steps/${position}`, `branch \"${target}\" from \"${step.id}\" continues into the sibling branch \"${sibling.id}\"`, `Add an unconditional route on \"${target}\" to the step where the branches meet`));\n }\n if (step.skip && (step.next === false || !steps[1])) {\n issues.push(warning('skip-unreachable', `/steps/${index}/skip`, `step \"${step.id}\" has \"skip\" but no Continue button or later step`, 'Remove \"skip\", or remove \"next\": false'));\n }\n return issues;\n });\n}\n\nexport function definitionWarnings(context: CheckContext): DefinitionIssue[] {\n return [\n ...(typeof context.definition.title === 'string' ? [] : [warning('missing-property', '/title', '\"title\" must be a string', 'Add a title for host UI and editors')]),\n ...context.conditions.flatMap((entry) => conditionWarnings(context, entry)),\n ...context.entries.flatMap((entry) => fieldWarnings(context, entry)),\n ...routeWarnings(context),\n ];\n}\n","import type { FormDefinition } from '../types';\nimport { conditionIssues } from './conditions';\nimport { createContext, type CheckContext } from './context';\nimport { fieldIssues } from './fields';\nimport { graphIssues } from './graph';\nimport { FormDefinitionError, suggest, type DefinitionIssue } from './issues';\nimport { metaIssues, shapeIssues } from './shape';\nimport { structureIssues } from './structure';\nimport { definitionWarnings } from './warnings';\n\nexport interface CheckDefinitionOptions {\n validators?: Record<string, unknown>;\n}\n\ninterface Checks {\n validators?: Record<string, unknown>;\n suggest?: CheckContext['suggest'];\n warnings?: (context: CheckContext) => DefinitionIssue[];\n}\n\nfunction issues(input: unknown, { validators, suggest, warnings }: Checks = {}): DefinitionIssue[] {\n const shape = shapeIssues(input);\n if (shape.length) return shape;\n const context = createContext(input as FormDefinition, validators, suggest);\n return [\n ...metaIssues(input as Record<string, unknown>),\n ...structureIssues(context),\n ...conditionIssues(context),\n ...fieldIssues(context),\n ...graphIssues(context),\n ...(warnings ? warnings(context) : []),\n ];\n}\n\nexport function definitionErrors(input: unknown): DefinitionIssue[] {\n return issues(input);\n}\n\nexport function checkDefinition(input: unknown, options: CheckDefinitionOptions = {}): DefinitionIssue[] {\n return issues(input, { validators: options.validators, suggest, warnings: definitionWarnings });\n}\n\nexport function parseDefinition(input: unknown, options?: CheckDefinitionOptions): FormDefinition {\n const errors = issues(input, { suggest });\n if (errors.length) throw new FormDefinitionError(errors);\n return input as FormDefinition;\n}\n","import type { FormDefinition, FormField } from '../types';\n\nexport function conditionFields(source: Pick<FormField, 'show' | 'showAny'>): string[] {\n return [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field);\n}\n\nexport function getAllFields(definition: FormDefinition): FormField[] {\n return definition.steps?.length ? definition.steps.flatMap((step) => step.fields) : definition.fields ?? [];\n}\n\nexport function createValues(\n fields: FormField[],\n initialValues?: Record<string, unknown>,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (field.defaultValue !== undefined) values[field.key] = field.defaultValue;\n }\n const source = initialValues ?? {};\n for (const key of Object.keys(source)) {\n if (key !== '__proto__') values[key] = source[key];\n }\n return values;\n}\n\nexport function getChangedKeys(\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n): Set<string> {\n const keys = new Set([...Object.keys(previous), ...Object.keys(next)]);\n return new Set([...keys].filter((key) => !Object.is(previous[key], next[key])));\n}\n","export class FormLifecycleError extends Error {\n readonly committed = true;\n readonly cause: unknown;\n\n constructor(readonly phase: 'afterStepChange' | 'afterSubmit', cause: unknown) {\n super(`The action completed, but ${phase} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n this.name = 'FormLifecycleError';\n this.cause = cause;\n }\n}\n\nexport async function afterCommit(phase: 'afterStepChange' | 'afterSubmit', callback: () => void | Promise<void>): Promise<void> {\n try { await callback(); }\n catch (error) { throw new FormLifecycleError(phase, error); }\n}\n","import type { EngineInternals } from './runtime-internals';\n\nfunction activePath(engine: EngineInternals): string {\n return engine.visibleSteps.map((step) => step.id).join('\\n');\n}\n\nexport function watchCheckedInputs(engine: EngineInternals, checked: Record<string, unknown>): () => boolean {\n const path = activePath(engine);\n const seen = Object.keys(checked).filter((key) => checked[key] !== undefined).map((key) => [key, engine.values[key]] as const);\n return () => activePath(engine) !== path || seen.some(([key, value]) => !Object.is(engine.values[key], value));\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { evaluateCondition } from './evaluate-condition';\n\nexport function isVisible(\n field: Pick<FormField, 'show' | 'showAny'>,\n values: Record<string, unknown>,\n): boolean {\n const matches = (condition: ShowCondition) => evaluateCondition(condition, values);\n return (field.show ?? []).every(matches) && (!field.showAny?.length || field.showAny.some(matches));\n}\n","import type { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { getDefaultMessage } from './default-messages';\nimport { BOOLEAN_TYPES, clientTypeError, trimValue } from './type-checks';\n\nexport type ValidatorFn = (\n value: unknown,\n allValues: Record<string, unknown>,\n) => string | null;\n\n\nfunction isEmpty(value: unknown, field: FormField): boolean {\n return isBlank(value) || (value === false && BOOLEAN_TYPES.includes(field.type));\n}\n\nfunction boundError(\n size: number,\n rule: 'Length' | '',\n rules: FieldValidation,\n unit?: string,\n): string | undefined {\n const min = rules[`min${rule}`];\n const max = rules[`max${rule}`];\n if (min !== undefined && size < min) return rules[`min${rule}Message`] ?? getDefaultMessage(`min${rule}`, { min, unit });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? getDefaultMessage(`max${rule}`, { max, unit });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? getDefaultMessage('pattern');\n } catch {\n return undefined;\n }\n}\n\nexport function validateFieldValue(\n field: FormField,\n input: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): string | null {\n const value = trimValue(field, input);\n const rules = field.validation ?? {};\n const matchMessage = rules.matchFieldMessage ?? getDefaultMessage('matchField');\n if (isEmpty(value, field)) {\n if (rules.required) return typeof rules.required === 'string' ? rules.required : getDefaultMessage('required');\n return rules.matchField !== undefined && !isBlank(allValues[rules.matchField]) ? matchMessage : null;\n }\n const typeIssue = clientTypeError(field, value);\n if (typeIssue) return typeIssue;\n const sizeError = typeof value === 'string' || Array.isArray(value)\n ? boundError(value.length, 'Length', rules, Array.isArray(value) ? 'items' : undefined)\n : typeof value === 'number' ? boundError(value, '', rules) : undefined;\n const matchError = rules.matchField !== undefined && value !== allValues[rules.matchField] ? matchMessage : undefined;\n return (sizeError\n ?? patternError(value, rules)\n ?? matchError\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { type ValidatorFn, validateFieldValue } from './validate-field';\n\nexport function validateStep(\n step: FormStep,\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n return validateFields(step.fields, values, validators);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n): Record<string, string> {\n const errors: Record<string, string> = {};\n\n for (const field of fields) {\n if (!isVisible(field, values)) continue;\n\n const error = validateFieldValue(field, values[field.key], values, validators);\n if (error) {\n errors[field.key] = error;\n }\n }\n\n return errors;\n}\n","import { validateFieldValue, validateFields, validateStep } from '../validation';\nimport { createValues, getChangedKeys } from './engine-utils';\nimport { trimValue } from '../validation/type-checks';\nimport type { EngineInternals } from './runtime-internals';\n\nexport function applyValidationErrors(engine: EngineInternals, errors: Record<string, string>, server = false, formErrors: string[] = []): void {\n const { state } = engine;\n const previousErrors = engine.errors;\n const bound: Record<string, string> = {};\n const general = [...formErrors];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.activeField(key, engine.values)) bound[key] = message;\n else general.push(message);\n }\n if (server) {\n state.serverErrors = bound;\n state.serverFormErrors = general;\n }\n state.errors = { ...state.serverErrors, ...bound };\n state.topLevelErrors = server ? general : [...state.serverFormErrors, ...general];\n const structureChanged = server && moveToFirstError(engine, bound);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nfunction moveToFirstError(engine: EngineInternals, errors: Record<string, string>): boolean {\n const targetIndex = engine.visibleSteps.findIndex((step) => step.fields.some((field) => errors[field.key] !== undefined));\n if (targetIndex < 0 || targetIndex === engine.currentStepIndex) return false;\n engine.state.currentStepIndex = targetIndex;\n return true;\n}\n\nexport function clearError(engine: EngineInternals, key: string, server = false): void {\n if (server) delete engine.state.serverErrors[key];\n const kept = engine.state.serverErrors[key];\n if (kept === undefined) delete engine.errors[key];\n else engine.errors[key] = kept;\n}\n\nexport function dropServerErrors(engine: EngineInternals, keys: Iterable<string>): void {\n for (const key of keys) delete engine.state.serverErrors[key];\n}\n\nexport function clearResolvedMatchErrors(engine: EngineInternals, key: string): string[] {\n const cleared: string[] = [];\n for (const field of engine.visibility.allFields) {\n if (field.validation?.matchField !== key || engine.errors[field.key] === undefined) continue;\n if (validateFieldValue(field, engine.values[field.key], getValidationValues(engine), engine.validators)) continue;\n clearError(engine, field.key);\n cleared.push(field.key);\n }\n return cleared;\n}\n\nexport function pruneOffPathErrors(engine: EngineInternals): string[] {\n const pathFields = new Set(engine.visibleSteps.flatMap((step) => step.fields.map((field) => field.key)));\n const pruned = Object.keys(engine.errors).filter((key) => !pathFields.has(key));\n for (const key of pruned) delete engine.errors[key];\n dropServerErrors(engine, pruned);\n return pruned;\n}\n\nexport function getValidationValues(engine: EngineInternals): Record<string, unknown> {\n return getSubmitValues(engine);\n}\n\nfunction withoutSkipped(engine: EngineInternals, values: Record<string, unknown>): Record<string, unknown> {\n for (const key of [...engine.skipped.values()].flat()) delete values[key];\n return values;\n}\n\nexport function validateForm(engine: EngineInternals, navigate = false): Record<string, string> {\n const previousErrors = engine.errors;\n const errors: Record<string, string> = {};\n if (engine.isMultiStep) {\n for (const step of engine.visibleSteps) {\n if (engine.skipped.has(step.id)) continue;\n Object.assign(errors, validateStep(step, getValidationValues(engine), engine.validators));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], getValidationValues(engine), engine.validators),\n );\n }\n engine.state.errors = { ...engine.state.serverErrors, ...errors };\n const structureChanged = navigate && moveToFirstError(engine, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, errors), structureChanged });\n return errors;\n}\n\nexport function validateOne(engine: EngineInternals, key: string): string | null {\n const field = engine.visibility.activeField(key, engine.values);\n if (!field) return null;\n const previousError = engine.errors[key];\n const error = validateFieldValue(field, engine.values[key], getValidationValues(engine), engine.validators);\n if (error) engine.errors[key] = error;\n else clearError(engine, key, true);\n const fieldKeys = Object.is(previousError, engine.errors[key]) ? [] : [key];\n engine.notify({ fieldKeys });\n return error;\n}\n\nexport function getSubmitValues(engine: EngineInternals): Record<string, unknown> {\n const values = { ...engine.visibility.conditionValues(engine.values) };\n for (const key of Object.keys(values)) {\n const field = engine.visibility.activeField(key, engine.values);\n if (field) values[key] = trimValue(field, values[key]);\n }\n return withoutSkipped(engine, values);\n}\n\nexport function resetEngine(engine: EngineInternals, values?: Record<string, unknown>): void {\n const previousValues = engine.values;\n const previousErrors = engine.errors;\n const loadingFields = Object.keys(engine.fieldLoading);\n engine.validationEpoch++;\n engine.operationEpoch++;\n engine.state.submitting = false;\n engine.state.values = createValues(engine.visibility.allFields, values);\n engine.state.errors = {};\n engine.state.topLevelErrors = [];\n engine.state.serverErrors = {};\n engine.state.serverFormErrors = [];\n engine.state.fieldLoading = {};\n engine.state.stepValidating = false;\n engine.state.currentStepIndex = 0;\n engine.skipped.clear();\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n const changedValues = getChangedKeys(previousValues, engine.values);\n const changedFields = new Set([\n ...changedValues,\n ...getChangedKeys(previousErrors, engine.errors),\n ...loadingFields,\n ]);\n engine.notify({\n fieldKeys: changedFields,\n structureChanged: true,\n valuesChanged: changedValues.size > 0,\n });\n}\n","import type { FormDefinition, FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { trimValue } from '../validation/type-checks';\n\nexport function activeSteps(definition: FormDefinition, values: Record<string, unknown>): FormStep[] {\n const steps = definition.steps ?? [];\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n const result: FormStep[] = [];\n const available: Record<string, unknown> = {};\n for (let index = 0; index < steps.length;) {\n const step = steps[index];\n if (!isVisible(step, available)) { index++; continue; }\n result.push(step);\n Object.assign(available, stepValues(step, values, available));\n const route = step.routes?.find((route) => (\n isVisible(route, available) && (route.to === null || ((indexes.get(route.to) ?? -1) > index\n && isVisible(steps[indexes.get(route.to)!], available)))\n ));\n if (route?.to === null) break;\n index = route ? indexes.get(route.to)! : index + 1;\n }\n return result;\n}\n\nexport function reconcileStepIndex(previous: FormStep[], next: FormStep[], index: number): number {\n const previousStep = previous[index] ?? previous[previous.length - 1];\n const preserved = next.findIndex((step) => step.id === previousStep?.id);\n if (preserved !== -1) return preserved;\n const nextIds = new Map(next.map((step, index) => [step.id, index]));\n for (let before = Math.min(index - 1, previous.length - 1); before >= 0; before--) {\n const predecessor = nextIds.get(previous[before].id);\n if (predecessor !== undefined) return predecessor;\n }\n return 0;\n}\n\nfunction stepValues(step: { fields: FormField[] }, values: Record<string, unknown>, previous: Record<string, unknown>) {\n const candidates = { ...previous };\n for (const field of step.fields) candidates[field.key] = trimValue(field, values[field.key]);\n const result: Record<string, unknown> = {};\n for (const field of step.fields) {\n if (isVisible(field, candidates) && values[field.key] !== undefined) result[field.key] = trimValue(field, values[field.key]);\n }\n return result;\n}\n\nexport function createActivePath(definition: FormDefinition) {\n let source: Record<string, unknown> | null = null;\n let steps: FormStep[] = [];\n let active: Record<string, unknown> = {};\n const refresh = (values: Record<string, unknown>) => {\n if (source === values) return;\n source = values;\n steps = activeSteps(definition, values);\n const result: Record<string, unknown> = {};\n const groups = definition.steps?.length ? steps : [{ fields: definition.fields ?? [] }];\n for (const step of groups) Object.assign(result, stepValues(step, values, result));\n active = result;\n };\n return {\n invalidate(): void { source = null; },\n steps(values: Record<string, unknown>): FormStep[] { refresh(values); return steps; },\n values(values: Record<string, unknown>): Record<string, unknown> { refresh(values); return active; },\n };\n}\n","import type { FormStep } from '../types';\nimport { createValues } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\nimport { activeSteps } from './step-routes';\nimport { dropServerErrors, pruneOffPathErrors } from './validation-state';\n\nfunction resetValues(engine: EngineInternals): Record<string, unknown> {\n const fields = engine.currentStep?.fields ?? [];\n const values = { ...engine.values };\n for (const { key } of fields) delete values[key];\n return Object.assign(values, createValues(fields));\n}\n\nexport function skipTarget(engine: EngineInternals): FormStep | undefined {\n return activeSteps(engine.definition, resetValues(engine))[engine.currentStepIndex + 1];\n}\n\nexport function skipCurrentStep(engine: EngineInternals): string[] {\n const step = engine.currentStep!;\n const fieldKeys = step.fields.map(({ key }) => key);\n engine.state.values = resetValues(engine);\n for (const key of fieldKeys) delete engine.errors[key];\n dropServerErrors(engine, fieldKeys);\n engine.skipped.set(step.id, fieldKeys);\n dropServerErrors(engine, engine.visibility.reconcileHidden(engine.values, engine.errors));\n engine.visibility.markChanged(true, true);\n const pruned = pruneOffPathErrors(engine);\n engine.notify({ fieldKeys: [...fieldKeys, ...pruned], structureChanged: true, valuesChanged: true });\n return fieldKeys;\n}\n\nexport function includeCurrentStep(engine: EngineInternals): void {\n const step = engine.currentStep;\n if (step) engine.skipped.delete(step.id);\n}\n\nexport function skipStepAt(engine: EngineInternals, index: number): string[] {\n engine.state.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n return skipCurrentStep(engine);\n}\n","import { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport type { SubmitHandler, SubmitResult } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { applyValidationErrors, getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\ntype Rejection = Extract<SubmitResult, { ok: false }>;\n\nexport function isRejection(result: unknown): result is Rejection {\n return !!result && Object.getPrototypeOf(result) === Object.prototype && (result as SubmitResult).ok === false;\n}\n\nfunction applyRejection(engine: EngineInternals, result: Rejection, sent: Record<string, unknown>): void {\n const errors: Record<string, string> = {};\n const source = typeof result.errors === 'object' && result.errors ? result.errors : {};\n for (const [key, value] of Object.entries(source)) {\n const message: unknown = Array.isArray(value) ? value.join(' ') : value;\n if (typeof message === 'string' && Object.is(engine.values[key], sent[key])) errors[key] = message;\n }\n const formErrors = Array.isArray(result.formErrors) ? result.formErrors.filter((message) => typeof message === 'string') : [];\n applyValidationErrors(engine, errors, true, formErrors);\n}\n\nexport async function submitForm(engine: EngineInternals, submit: SubmitHandler, keepSkipped = false): Promise<boolean> {\n if (engine.submitting || engine.stepValidating) return false;\n if (!keepSkipped) includeCurrentStep(engine);\n const lifecycle = { ...engine.lifecycle };\n let dispatched = false;\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n let values = getSubmitValues(engine);\n const inputsChanged = watchCheckedInputs(engine, values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch || inputsChanged();\n engine.state.submitting = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n const allowed = await lifecycle.onBeforeSubmit(values);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n values = getSubmitValues(engine);\n }\n dispatched = true;\n const skippedSteps = [...engine.skipped.keys()];\n const sent = { ...engine.values };\n const serverErrors = engine.state.serverErrors;\n const result = await submit(values, [...skippedSteps]);\n const rejected = isRejection(result);\n if (operation !== engine.operationEpoch) return !rejected;\n if (rejected) {\n applyRejection(engine, result, sent);\n return false;\n }\n if (engine.state.serverErrors === serverErrors) applyValidationErrors(engine, {}, true);\n await afterCommit('afterSubmit', () => lifecycle.onAfterSubmit?.(values, skippedSteps));\n return true;\n } catch (error) {\n if (!dispatched && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.state.submitting = false;\n engine.notify();\n }\n }\n}\n","import { getChangedKeys } from './engine-utils';\nimport { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport { validateStep } from '../validation';\nimport { applyValidationErrors, getValidationValues } from './validation-state';\nimport { includeCurrentStep, skipCurrentStep, skipTarget } from './step-skip';\nimport { isRejection, submitForm } from './submission';\nimport type { StepChangeContext, SubmitHandler } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\n\nfunction hasStepErrors(engine: EngineInternals): boolean {\n const step = engine.currentStep;\n if (!step) return true;\n const errors = validateStep(step, getValidationValues(engine), engine.validators);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = engine.errors;\n engine.state.errors = { ...previousErrors, ...errors };\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors) });\n return true;\n}\n\nfunction moveTo(engine: EngineInternals, index: number): void {\n engine.validationEpoch++;\n engine.state.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n}\n\nexport async function skipStep(engine: EngineInternals, submit?: SubmitHandler): Promise<boolean> {\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting || !engine.currentStep?.skip) return false;\n if (skipTarget(engine)) return changeStep(engine, 'next', 'skip');\n const step = engine.currentStep;\n if (!submit || !step) return false;\n const values = engine.values;\n const errors = { ...engine.errors };\n const serverErrors = { ...engine.state.serverErrors };\n let outcome: boolean | undefined;\n const fieldKeys = skipCurrentStep(engine);\n const skippedValues = engine.values;\n const edited = watchCheckedInputs(engine, { ...skippedValues });\n try {\n return await submitForm(engine, async (submitted, skipped) => {\n const operation = engine.operationEpoch;\n const result = await submit(submitted, skipped);\n const rejected = isRejection(result);\n if (!rejected || operation === engine.operationEpoch) outcome = rejected;\n return result;\n }, true);\n } finally {\n if (outcome !== false && engine.values === skippedValues && !edited()) {\n engine.state.values = values;\n if (outcome === undefined) engine.state.serverErrors = serverErrors;\n engine.state.errors = { ...(outcome ? {} : errors), ...engine.errors };\n engine.skipped.delete(step.id);\n engine.notify({ fieldKeys, structureChanged: true, valuesChanged: true });\n }\n }\n}\n\nexport async function changeStep(engine: EngineInternals, direction: 'next' | 'back', reason: StepChangeContext['reason'] = direction): Promise<boolean> {\n const skipping = reason === 'skip';\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (!skipping && (direction === 'next' ? engine.isLastStep : engine.isFirstStep)) return false;\n const step = engine.currentStep!;\n const validating = direction === 'next' && !skipping;\n if (validating) includeCurrentStep(engine);\n if (validating && hasStepErrors(engine)) return false;\n const lifecycle = { ...engine.lifecycle };\n const validate = engine.onStepValidate;\n let committed = false;\n const fromIndex = engine.currentStepIndex;\n const toIndex = fromIndex + (direction === 'next' ? 1 : -1);\n const target = skipping ? skipTarget(engine) : engine.visibleSteps[toIndex];\n if (!target) return false;\n const context: StepChangeContext = { fromStepId: step.id, toStepId: target.id, reason, values: { ...getValidationValues(engine) } };\n const epoch = engine.validationEpoch;\n const operation = ++engine.operationEpoch;\n const inputsChanged = watchCheckedInputs(engine, context.values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch\n || engine.currentStep?.id !== step.id || inputsChanged();\n engine.state.stepValidating = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (validating && validate) {\n const result = await validate!(step.id, context.values);\n if (stale()) return false;\n if (result && Object.keys(result).length > 0) {\n applyValidationErrors(engine, result);\n return false;\n }\n }\n if (lifecycle.onBeforeStepChange) {\n const allowed = await lifecycle.onBeforeStepChange(context);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (validating && hasStepErrors(engine)) return false;\n committed = true;\n if (skipping) skipCurrentStep(engine);\n moveTo(engine, toIndex);\n await afterCommit('afterStepChange', () => lifecycle.onAfterStepChange?.(context));\n return true;\n } catch (error) {\n if (!committed && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.state.stepValidating = false;\n engine.notify();\n }\n }\n}\n\nexport function goToStepWithField(engine: EngineInternals, fieldKey: string): void {\n if (!engine.isMultiStep) return;\n const targetIndex = engine.visibility.findStepIndex(\n fieldKey,\n engine.values,\n engine.currentStepIndex,\n );\n if (targetIndex === engine.currentStepIndex) engine.notify();\n else if (targetIndex !== null) moveTo(engine, targetIndex);\n}\n","export interface NotifyOptions {\n fieldKeys?: Iterable<string>;\n structureChanged?: boolean;\n}\n\ntype Listener = () => void;\n\nfunction listen(listeners: Set<Listener>, listener: Listener): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\nexport function createSubscriptions() {\n let version = 0;\n let structureVersion = 0;\n const listeners = new Set<Listener>();\n const structureListeners = new Set<Listener>();\n const fieldVersions = new Map<string, number>();\n const fieldListeners = new Map<string, Set<Listener>>();\n\n return {\n subscribe: (listener: Listener) => listen(listeners, listener),\n getSnapshot: () => version,\n subscribeStructure: (listener: Listener) => listen(structureListeners, listener),\n getStructureSnapshot: () => structureVersion,\n getFieldSnapshot: (key: string) => fieldVersions.get(key) ?? 0,\n\n subscribeField(key: string, listener: Listener): () => void {\n const set = fieldListeners.get(key) ?? new Set();\n set.add(listener);\n fieldListeners.set(key, set);\n return () => {\n set.delete(listener);\n if (set.size === 0) fieldListeners.delete(key);\n };\n },\n\n notify({ fieldKeys = [], structureChanged = false }: NotifyOptions = {}): void {\n for (const key of new Set(fieldKeys)) {\n fieldVersions.set(key, (fieldVersions.get(key) ?? 0) + 1);\n for (const listener of fieldListeners.get(key) ?? []) listener();\n }\n if (structureChanged) {\n structureVersion++;\n for (const listener of structureListeners) listener();\n }\n version++;\n for (const listener of listeners) listener();\n },\n };\n}\n","import { checkDefinition, FormDefinitionError, type DefinitionIssue } from '../definition-validation';\nimport { definitionErrors } from '../definition-validation/check-definition';\nimport { isError } from '../definition-validation/issues';\nimport type { FormDefinition } from '../types';\nimport type { FormEngineOptions } from './engine-options';\n\nfunction developmentIssues(definition: FormDefinition, validators: Record<string, unknown>): DefinitionIssue[] | undefined {\n try {\n if (process.env.NODE_ENV !== 'production') return checkDefinition(definition, { validators });\n } catch (error) {\n if (!(error instanceof ReferenceError)) throw error;\n }\n return undefined;\n}\n\nexport function assertDefinition(definition: FormDefinition, options: FormEngineOptions, validators: Record<string, unknown>): void {\n const issues = developmentIssues(definition, validators) ?? definitionErrors(definition);\n const errors = issues.filter(isError);\n if (errors.length) throw new FormDefinitionError(errors);\n const warn = options.onWarning ?? ((issue: DefinitionIssue) => console.warn(`[formhaus] ${issue.message}`));\n for (const issue of issues) warn(issue);\n}\n","import type { FormField, FormStep } from '../types';\nimport { conditionFields } from './engine-utils';\n\nexport function indexConditions<T extends FormField | FormStep>(dependent: T, index: Map<string, Set<T>>): void {\n for (const field of conditionFields(dependent)) {\n const dependents = index.get(field) ?? new Set<T>();\n dependents.add(dependent);\n index.set(field, dependents);\n }\n}\n","import { conditionFields, getAllFields } from './engine-utils';\nimport { indexConditions } from './visibility-index';\nimport { createActivePath } from './step-routes';\nimport type { ValidatorFn } from '../validation';\nimport { validateStep } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\n\ninterface VisibilityCache {\n visibleSteps: FormStep[];\n currentStep: FormStep | null;\n visibleFields: FormField[];\n canGoNext: boolean;\n}\n\ntype Values = Record<string, unknown>;\n\nexport type VisibilityState = ReturnType<typeof createVisibility>;\n\nexport function createVisibility(definition: FormDefinition) {\n const allFields = getAllFields(definition);\n const fieldsByKey = new Map<string, FormField[]>();\n const routeFields = new Set<string>();\n const path = createActivePath(definition);\n const fieldDependents = new Map<string, Set<FormField>>();\n const stepDependents = new Map<string, Set<FormStep>>();\n const stepOfField = new Map<FormField, FormStep>();\n let visibilityDirty = true;\n let canGoNextDirty = true;\n const cache: VisibilityCache = { visibleSteps: [], currentStep: null, visibleFields: [], canGoNext: false };\n\n for (const field of allFields) {\n fieldsByKey.set(field.key, [...(fieldsByKey.get(field.key) ?? []), field]);\n indexConditions(field, fieldDependents);\n }\n for (const step of definition.steps ?? []) {\n for (const field of step.fields) stepOfField.set(field, step);\n indexConditions(step, stepDependents);\n for (const route of step.routes ?? []) for (const key of conditionFields(route)) routeFields.add(key);\n }\n\n const isMultiStep = () => (definition.steps ?? []).length > 0;\n const visible = (source: FormField | FormStep, values: Values) => isVisible(source, path.values(values));\n const onPath = (field: FormField, values: Values) => {\n const step = stepOfField.get(field);\n return !step || path.steps(values).includes(step);\n };\n\n function state(values: Values, stepIndex: number): VisibilityCache {\n if (!visibilityDirty) return cache;\n visibilityDirty = false;\n if (!isMultiStep()) {\n cache.visibleSteps = [];\n cache.currentStep = null;\n cache.visibleFields = (definition.fields ?? []).filter((field) => visible(field, values));\n return cache;\n }\n const steps = cache.visibleSteps = path.steps(values);\n const current = cache.currentStep = steps[stepIndex] ?? steps[steps.length - 1] ?? null;\n cache.visibleFields = current ? current.fields.filter((field) => visible(field, values)) : [];\n return cache;\n }\n\n return {\n allFields,\n conditionValues: path.values,\n state,\n\n markChanged(structureChanged: boolean, valuesChanged: boolean): void {\n if (structureChanged || valuesChanged) path.invalidate();\n if (structureChanged) visibilityDirty = true;\n if (structureChanged || valuesChanged) canGoNextDirty = true;\n },\n\n getCanGoNext(values: Values, stepIndex: number, validators: Record<string, ValidatorFn>): boolean {\n const step = state(values, stepIndex).currentStep;\n if (!canGoNextDirty) return cache.canGoNext;\n canGoNextDirty = false;\n const errors = step ? validateStep(step, path.values(values), validators) : {};\n return cache.canGoNext = isMultiStep() && Object.keys(errors).length === 0;\n },\n\n findStepIndex(fieldKey: string, values: Values, stepIndex: number): number | null {\n const target = state(values, stepIndex).visibleSteps.findIndex((step) => step.fields.some((field) => field.key === fieldKey));\n return target === -1 ? null : target;\n },\n\n affectsStructure(key: string, clearedFields: Set<string>): boolean {\n return routeFields.has(key) || fieldDependents.has(key) || stepDependents.has(key) || clearedFields.size > 0;\n },\n\n activeField(key: string, values: Values): FormField | undefined {\n return fieldsByKey.get(key)?.find((field) => onPath(field, values) && visible(field, values));\n },\n\n reconcileHidden(values: Values, errors: Record<string, string>): Set<string> {\n path.invalidate();\n const queue = [...new Set([...fieldDependents.keys(), ...stepDependents.keys()])];\n const queued = new Set(queue);\n const cleared = new Set<string>();\n const held = (key: string) => values[key] !== undefined || errors[key] !== undefined;\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n for (let index = 0; index < queue.length; index++) {\n const key = queue[index];\n queued.delete(key);\n for (const field of fieldDependents.get(key) ?? []) {\n if (onPath(field, values) && !visible(field, values) && held(field.key)) clear(field.key);\n }\n for (const step of stepDependents.get(key) ?? []) {\n if (!visible(step, values)) for (const field of step.fields) if (held(field.key)) clear(field.key);\n }\n }\n return cleared;\n },\n };\n}\n","import type { ValidatorFn } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport type { FormEngineOptions, StepValidateFn, SubmitHandler } from './engine-options';\nimport { createValues } from './engine-utils';\nimport { changeStep, goToStepWithField, skipStep } from './navigation';\nimport type { EngineInternals, EngineState, RuntimeNotifyOptions } from './runtime-internals';\nimport { createSubscriptions, type NotifyOptions } from './subscriptions';\nimport {\n applyValidationErrors,\n getSubmitValues,\n resetEngine,\n validateForm,\n validateOne,\n clearError,\n clearResolvedMatchErrors,\n dropServerErrors,\n pruneOffPathErrors,\n} from './validation-state';\nimport { submitForm } from './submission';\nimport { reconcileStepIndex } from './step-routes';\nimport { assertDefinition } from './warnings';\nimport { createVisibility, type VisibilityState } from './visibility-state';\n\nexport class FormEngine<TValues extends object = Record<string, unknown>> {\n private readonly state: EngineState;\n private readonly skipped = new Map<string, string[]>();\n private validationEpoch = 0;\n private operationEpoch = 0;\n private readonly lifecycle: FormEngineOptions;\n\n private readonly validators: Record<string, ValidatorFn>;\n private get onStepValidate(): StepValidateFn | undefined { return this.lifecycle.onStepValidate; }\n private readonly visibility: VisibilityState;\n private readonly subscriptions = createSubscriptions();\n\n constructor(\n readonly definition: FormDefinition,\n initialValues?: Partial<NoInfer<TValues>>,\n options?: FormEngineOptions,\n ) {\n this.lifecycle = options ?? {};\n this.validators = options?.validators ?? {};\n assertDefinition(definition, this.lifecycle, this.validators);\n this.visibility = createVisibility(definition);\n const values = createValues(this.visibility.allFields, initialValues as Record<string, unknown> | undefined);\n this.state = { values, errors: {}, topLevelErrors: [], serverErrors: {}, serverFormErrors: [], currentStepIndex: 0, fieldLoading: {}, stepValidating: false, submitting: false };\n this.visibility.reconcileHidden(values, this.state.errors);\n }\n\n get values(): Readonly<Partial<TValues>> { return this.state.values as Partial<TValues>; }\n get errors(): Readonly<Record<string, string>> { return this.state.errors; }\n get topLevelErrors(): readonly string[] { return this.state.topLevelErrors; }\n get currentStepIndex(): number { return this.state.currentStepIndex; }\n get fieldLoading(): Readonly<Record<string, boolean>> { return this.state.fieldLoading; }\n get stepValidating(): boolean { return this.state.stepValidating; }\n get submitting(): boolean { return this.state.submitting; }\n\n get isMultiStep(): boolean {\n return (this.definition.steps ?? []).length > 0;\n }\n\n get visibleSteps(): FormStep[] {\n return this.view.visibleSteps;\n }\n\n get currentStep(): FormStep | null {\n return this.view.currentStep;\n }\n\n get visibleFields(): FormField[] {\n return this.view.visibleFields;\n }\n\n get isFirstStep(): boolean {\n return this.currentStepIndex === 0;\n }\n\n get isLastStep(): boolean {\n return this.currentStepIndex >= this.visibleSteps.length - 1;\n }\n\n get canGoNext(): boolean {\n return this.visibility.getCanGoNext(this.state.values, this.currentStepIndex, this.validators);\n }\n\n get stepErrors(): Record<string, string[]> {\n const result: Record<string, string[]> = {};\n for (const step of this.visibleSteps) {\n const keys = step.fields.map((field) => field.key).filter((key) => this.errors[key] !== undefined);\n if (keys.length > 0) result[step.id] = keys;\n }\n return result;\n }\n\n get progress(): { current: number; total: number } {\n const total = this.visibleSteps.length;\n return { current: Math.min(this.currentStepIndex + 1, total), total };\n }\n\n subscribe(listener: () => void): () => void {\n return this.subscriptions.subscribe(listener);\n }\n\n getSnapshot(): number {\n return this.subscriptions.getSnapshot();\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n return this.subscriptions.subscribeField(key, listener);\n }\n\n getFieldSnapshot(key: string): number {\n return this.subscriptions.getFieldSnapshot(key);\n }\n\n subscribeStructure(listener: () => void): () => void {\n return this.subscriptions.subscribeStructure(listener);\n }\n\n getStructureSnapshot(): number {\n return this.subscriptions.getStructureSnapshot();\n }\n\n setValue(key: string, value: unknown): void {\n const { values, errors } = this.state;\n const previousSteps = this.isMultiStep ? this.visibleSteps : null;\n const valueChanged = !Object.is(values[key], value);\n const previousError = errors[key];\n values[key] = value;\n clearError(this.internals, key, valueChanged);\n for (const [stepId, keys] of this.skipped) if (valueChanged && keys.includes(key)) this.skipped.delete(stepId);\n const clearedFields = this.visibility.reconcileHidden(values, errors);\n dropServerErrors(this.internals, clearedFields);\n const revalidated = clearResolvedMatchErrors(this.internals, key);\n const changedFields = new Set([...clearedFields, ...revalidated]);\n if (valueChanged || previousError !== errors[key]) changedFields.add(key);\n const valuesChanged = valueChanged || clearedFields.size > 0;\n const structureChanged = valuesChanged && this.visibility.affectsStructure(key, clearedFields);\n if (previousSteps && structureChanged) {\n this.visibility.markChanged(true, true);\n this.state.currentStepIndex = reconcileStepIndex(previousSteps, this.visibleSteps, this.currentStepIndex);\n for (const pruned of pruneOffPathErrors(this.internals)) changedFields.add(pruned);\n }\n this.notify({ fieldKeys: changedFields, structureChanged, valuesChanged });\n }\n\n setErrors(errors: Record<string, string>): void {\n applyValidationErrors(this.internals, errors, true);\n }\n\n setFieldLoading(key: string, loading: boolean): void {\n const previous = this.state.fieldLoading[key] === true;\n if (loading) this.state.fieldLoading[key] = true;\n else delete this.state.fieldLoading[key];\n this.notify({ fieldKeys: previous === loading ? [] : [key] });\n }\n\n cancelPendingActions(): void {\n this.validationEpoch++;\n this.operationEpoch++;\n this.state.stepValidating = false;\n this.state.submitting = false;\n this.notify();\n }\n\n next(): Promise<boolean> { return changeStep(this.internals, 'next'); }\n back(): Promise<boolean> { return changeStep(this.internals, 'back'); }\n skip(submit?: SubmitHandler): Promise<boolean> { return skipStep(this.internals, submit); }\n submit(handler: SubmitHandler): Promise<boolean> { return submitForm(this.internals, handler); }\n isStepSkipped(stepId: string): boolean { return this.skipped.has(stepId); }\n validate(): Record<string, string> { return validateForm(this.internals); }\n validateField(key: string): string | null { return validateOne(this.internals, key); }\n getSubmitValues(): Partial<TValues> { return getSubmitValues(this.internals) as Partial<TValues>; }\n goToStepWithField(key: string): void { goToStepWithField(this.internals, key); }\n reset(values?: Record<string, unknown>): void { resetEngine(this.internals, values); }\n\n private get view() {\n return this.visibility.state(this.state.values, this.currentStepIndex);\n }\n\n private get internals(): EngineInternals {\n return this as unknown as EngineInternals;\n }\n\n private notify(options: RuntimeNotifyOptions = {}): void {\n this.visibility.markChanged(!!options.structureChanged, !!options.valuesChanged);\n this.subscriptions.notify(options);\n }\n}\n","import type { FormDefinition, FormField } from '../types';\nimport type { ValidatorFn } from '../validation';\nimport { parseDefinition } from '../definition-validation';\nimport { getAllFields } from '../engine/engine-utils';\nimport type { EngineInternals } from '../engine/runtime-internals';\nimport { FormEngine } from '../engine/runtime';\nimport { skipStepAt } from '../engine/step-skip';\nimport { createVisibility } from '../engine/visibility-state';\nimport { normalizeValue, typeError } from '../validation/type-checks';\n\nexport interface SubmissionOptions {\n skippedSteps?: string[];\n validators?: Record<string, ValidatorFn>;\n}\n\nconst BODY_MESSAGE = 'Pass the values object as the second argument, not the request body with \"values\" and \"skippedSteps\".';\n\nexport interface SubmissionResult {\n values: Record<string, unknown>;\n errors: Record<string, string>;\n}\n\nconst allow: ValidatorFn = () => null;\n\nconst hasOwn = (source: object, key: string) => Object.prototype.hasOwnProperty.call(source, key);\n\ninterface ActiveValues {\n values: Record<string, unknown>;\n active: Map<string, FormField>;\n}\n\nfunction activeValues(definition: FormDefinition, fields: FormField[], input: unknown): ActiveValues {\n const source = input !== null && typeof input === 'object' && !Array.isArray(input) ? input as Record<string, unknown> : {};\n const visibility = createVisibility(definition);\n const keys = [...new Set(fields.map(({ key }) => key))].filter((key) => hasOwn(source, key));\n let result: ActiveValues = { values: {}, active: new Map() };\n for (let round = 0; round <= fields.length; round++) {\n const values: Record<string, unknown> = {};\n for (const key of keys) values[key] = normalizeValue(result.active.get(key) ?? fields.find((field) => field.key === key)!, source[key]);\n const active = new Map<string, FormField>();\n for (const key of keys) {\n const field = visibility.activeField(key, values);\n if (field) active.set(key, field);\n }\n const settled = keys.every((key) => active.get(key) === result.active.get(key));\n result = { values, active };\n if (settled) break;\n }\n return result;\n}\n\nfunction typeErrors({ values, active }: ActiveValues): Map<string, string> {\n const errors = new Map<string, string>();\n for (const [key, field] of active) {\n const error = typeError(field, values[key]);\n if (error) errors.set(key, error);\n }\n return errors;\n}\n\nfunction withoutRules(definition: FormDefinition, invalid: Map<string, string>): FormDefinition {\n const strip = (fields: FormField[]) => fields.map((field) => (invalid.has(field.key) ? { ...field, validation: undefined } : field));\n const steps = definition.steps?.map((step) => ({ ...step, fields: strip(step.fields) }));\n return { ...definition, ...(definition.fields && { fields: strip(definition.fields) }), ...(steps && { steps }) };\n}\n\nfunction ignoredValidators(fields: FormField[], given: Record<string, ValidatorFn> = {}): Record<string, ValidatorFn> {\n const validators: Record<string, ValidatorFn> = {};\n for (const { validation } of fields) if (validation?.validator) validators[validation.validator] = allow;\n return { ...validators, ...given };\n}\n\nfunction isBody(fields: FormField[], input: unknown): boolean {\n if (input === null || typeof input !== 'object' || !hasOwn(input, 'values')) return false;\n return !fields.some((field) => field.key === 'values' || field.key === 'skippedSteps');\n}\n\nfunction applySkips(engine: FormEngine, skippedSteps: unknown): void {\n if (!Array.isArray(skippedSteps)) return;\n const requested = new Set(skippedSteps);\n for (let index = 0; index < engine.visibleSteps.length; index++) {\n const step = engine.visibleSteps[index];\n if (step.skip && requested.has(step.id)) skipStepAt(engine as unknown as EngineInternals, index);\n }\n}\n\nexport function validateSubmission(\n definition: FormDefinition,\n values: unknown,\n options: SubmissionOptions = {},\n): SubmissionResult {\n parseDefinition(definition);\n const fields = getAllFields(definition);\n const resolved = activeValues(definition, fields, values);\n const invalid = typeErrors(resolved);\n const engineOptions = { validators: ignoredValidators(fields, options.validators), onWarning: () => {} };\n const engine = new FormEngine(withoutRules(definition, invalid), resolved.values, engineOptions);\n applySkips(engine, options.skippedSteps);\n const errors = engine.validate();\n const submitted = engine.getSubmitValues();\n for (const [key, error] of invalid) if (hasOwn(submitted, key)) errors[key] = error;\n if (isBody(fields, values)) errors.values = BODY_MESSAGE;\n return { values: submitted, errors };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/visibility/evaluate-condition.ts","../src/definition-validation/issues.ts","../src/definition-validation/conditions.ts","../src/definition-validation/context.ts","../src/definition-validation/fields.ts","../src/definition-validation/graph.ts","../src/definition-validation/format.ts","../src/definition-validation/shape.ts","../src/definition-validation/paths.ts","../src/definition-validation/structure.ts","../src/validation/default-messages.ts","../src/validation/type-checks.ts","../src/definition-validation/warnings.ts","../src/definition-validation/check-definition.ts","../src/engine/engine-utils.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.ts","../src/visibility/is-visible.ts","../src/validation/validate-field.ts","../src/validation/validate-step.ts","../src/engine/validation-state.ts","../src/engine/step-routes.ts","../src/engine/step-skip.ts","../src/engine/submission.ts","../src/engine/navigation.ts","../src/engine/subscriptions.ts","../src/engine/warnings.ts","../src/engine/visibility-index.ts","../src/engine/visibility-state.ts","../src/engine/runtime.ts","../src/server/validate-submission.ts"],"names":["CONDITION_OPERATORS","isBlank","value","toNumber","number","compare","operand","test","evaluateCondition","condition","values","a","b","FormDefinitionError","issues","issue","create","severity","code","path","problem","hint","__spreadValues","error","warning","pointer","key","isError","oneOf","shown","distance","row","_","index","i","next","j","closest","candidates","lower","candidate","suggest","match","OPERATORS","operatorIssues","keys","unknown","count","referenceIssues","context","owner","step","target","sameStep","allowed","conditionErrors","entry","conditionIssues","collect","source","_a","name","collectAction","action","createContext","definition","validators","_b","steps","entries","field","position","conditions","route","rangeIssue","rules","min","max","low","high","patternIssue","pattern","e","ruleIssues","fieldIssues","dependencyGraph","graph","link","owners","dependencies","known","fieldsOf","findCycles","visiting","cycles","start","stack","frame","neighbor","nodes","node","cycleIssues","cycle","graphIssues","FORMAT_VERSION","formatIssues","version","valid","isEntry","KINDS","item","typed","kind","list","check","required","text","option","RULES","validation","shapeIssues","input","format","metaIssues","conditional","successors","indexes","from","reachableSteps","seen","queue","RESERVED","stepIssues","first","later","keyIssues","reachable","exclusive","clash","other","structureIssues","DEFAULT_MESSAGES","formatText","template","params","resolveText","defaults","sources","messageResolver","BOOLEAN_TYPES","BUILT_IN_TYPES","MAX_STRING_LENGTH","MAX_EMAIL_LENGTH","MAX_ITEMS","EMAIL","DECIMAL","DATE","DATE_ONLY","DATE_TIME","TEXT_TYPES","FORMATS","isCalendarDate","year","month","day","UNTRIMMED_TYPES","trimValue","normalizeValue","parsed","staticOptions","isOption","options","lengthError","fail","_c","_d","multiselectError","stringError","formatError","primitiveError","typeError","resolve","clientTypeError","LIST_OPERATORS","COMPARISONS","STRING_TYPES","expectedType","valueIssue","operator","mismatch","result","operands","expected","wrong","missing","conditionWarnings","optionIssues","ruleWarnings","rule","numeric","ranges","sized","fieldWarnings","routeWarnings","targets","to","sibling","exits","definitionWarnings","warnings","shape","definitionErrors","checkDefinition","parseDefinition","errors","conditionFields","getAllFields","createValues","fields","initialValues","getChangedKeys","previous","FormLifecycleError","phase","cause","afterCommit","callback","activePath","engine","watchCheckedInputs","checked","watchValues","isVisible","matches","isEmpty","boundError","size","message","patternError","sizeError","unit","validateFieldValue","allValues","messages","_e","matchMessage","typeIssue","validateStep","validateFields","applyValidationErrors","server","formErrors","state","previousErrors","bound","general","structureChanged","moveToFirstError","targetIndex","clearError","kept","dropServerErrors","clearResolvedMatchErrors","cleared","getValidationValues","pruneOffPathErrors","pathFields","pruned","getSubmitValues","withoutSkipped","validateForm","navigate","validateOne","previousError","fieldKeys","resetEngine","previousValues","loadingFields","changedValues","changedFields","activeSteps","walkPath","available","addStepValues","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","saved","had","createActivePath","active","refresh","resetValues","skipTarget","skipCurrentStep","includeCurrentStep","skipStepAt","isRejection","applyRejection","sent","submitForm","submit","keepSkipped","lifecycle","dispatched","epoch","operation","inputsChanged","stale","skippedSteps","serverErrors","rejected","hasStepErrors","moveTo","skipStep","changeStep","outcome","skippedValues","edited","submitting","submitted","skipped","current","direction","reason","skipping","validating","validate","committed","toIndex","goToStepWithField","fieldKey","listen","listeners","listener","createSubscriptions","structureVersion","structureListeners","fieldVersions","fieldListeners","set","developmentIssues","assertDefinition","warn","indexConditions","dependent","dependents","createVisibility","allFields","fieldsByKey","routeFields","fieldDependents","stepDependents","stepOfField","visibilityDirty","canGoNextDirty","cache","isMultiStep","visible","onPath","stepIndex","valuesChanged","clearedFields","queued","held","clear","FormEngine","total","previousSteps","valueChanged","stepId","revalidated","loading","handler","BODY_MESSAGE","allow","hasOwn","activeValues","visibility","round","settled","typeErrors","withoutRules","invalid","strip","__spreadProps","ignoredValidators","given","isBody","applySkips","requested","validateSubmission","resolved","engineOptions"],"mappings":";ocAEO,IAAMA,EAAAA,CAAsB,CAAC,IAAA,CAAM,KAAA,CAAO,KAAM,OAAA,CAAS,UAAA,CAAY,KAAM,KAAA,CAAO,IAAA,CAAM,KAAK,CAAA,CAE7F,SAASC,EAAQC,CAAAA,CAAyB,CAC/C,OAAOA,CAAAA,EAAS,IAAA,EAAQA,IAAU,EAAA,EAAO,KAAA,CAAM,QAAQA,CAAK,CAAA,EAAK,CAACA,CAAAA,CAAM,MAC1E,CAEA,SAASC,EAAAA,CAASD,EAAoC,CACpD,IAAME,EAAS,OAAOF,CAAAA,EAAU,UAAYA,CAAAA,CAAM,IAAA,KAAW,EAAA,CAAK,MAAA,CAAOA,CAAK,CAAA,CAAIA,CAAAA,CAClF,OAAO,OAAOE,CAAAA,EAAW,UAAY,MAAA,CAAO,QAAA,CAASA,CAAM,CAAA,CAAIA,CAAAA,CAAS,MAC1E,CAEA,SAASC,GAAQH,CAAAA,CAAgBI,CAAAA,CAAiBC,EAA4D,CAC5G,IAAMH,EAASD,EAAAA,CAASD,CAAK,EAC7B,OAAOE,CAAAA,GAAW,QAAaG,CAAAA,CAAKH,CAAAA,CAAQE,CAAO,CACrD,CAEO,SAASE,EAAAA,CACdC,CAAAA,CACAC,EACS,CACT,IAAMR,EAAQQ,CAAAA,CAAOD,CAAAA,CAAU,KAAK,CAAA,CACpC,OAAIA,EAAU,EAAA,GAAO,MAAA,CAAkBP,IAAUO,CAAAA,CAAU,EAAA,CACvDA,EAAU,GAAA,GAAQ,MAAA,CAAkBP,IAAUO,CAAAA,CAAU,GAAA,CACxDA,EAAU,EAAA,GAAO,MAAA,CAAkBA,EAAU,EAAA,CAAG,QAAA,CAASP,CAAwB,CAAA,CACjFO,CAAAA,CAAU,QAAU,MAAA,CAAkB,CAACA,EAAU,KAAA,CAAM,QAAA,CAASP,CAAwB,CAAA,CACxFO,CAAAA,CAAU,WAAa,MAAA,CAAkB,CAACA,EAAU,QAAA,EAAY,CAACR,EAAQC,CAAK,CAAA,CAC9EO,EAAU,EAAA,GAAO,MAAA,CAAkBJ,GAAQH,CAAAA,CAAOO,CAAAA,CAAU,GAAI,CAACE,CAAAA,CAAGC,IAAMD,CAAAA,CAAIC,CAAC,EAC/EH,CAAAA,CAAU,GAAA,GAAQ,OAAkBJ,EAAAA,CAAQH,CAAAA,CAAOO,EAAU,GAAA,CAAK,CAACE,EAAGC,CAAAA,GAAMD,CAAAA,EAAKC,CAAC,CAAA,CAClFH,CAAAA,CAAU,KAAO,MAAA,CAAkBJ,EAAAA,CAAQH,EAAOO,CAAAA,CAAU,EAAA,CAAI,CAACE,CAAAA,CAAGC,CAAAA,GAAMD,EAAIC,CAAC,CAAA,CAC/EH,EAAU,GAAA,GAAQ,MAAA,CAAkBJ,GAAQH,CAAAA,CAAOO,CAAAA,CAAU,IAAK,CAACE,CAAAA,CAAGC,IAAMD,CAAAA,EAAKC,CAAC,EAC/E,KACT,KCKaC,CAAAA,CAAN,cAAkC,KAAM,CAG7C,WAAA,CAAYC,CAAAA,CAA2B,CACrC,KAAA,CAAM,CAAA;AAAA,EAA6BA,EAAO,GAAA,CAAKC,CAAAA,EAAUA,CAAAA,CAAM,OAAO,EAAE,IAAA,CAAK;AAAA,CAAI,CAAC,CAAA,CAAE,CAAA,CACpF,IAAA,CAAK,IAAA,CAAO,qBAAA,CACZ,IAAA,CAAK,MAAA,CAASD,EAChB,CACF,EAEA,SAASE,GAAOC,CAAAA,CAAuC,CACrD,OAAO,CAACC,CAAAA,CAA2BC,CAAAA,CAAcC,CAAAA,CAAiBC,CAAAA,GAAoCC,EAAA,CACpG,IAAA,CAAAJ,CAAAA,CACA,QAAA,CAAAD,CAAAA,CACA,IAAA,CAAAE,CAAAA,CACA,OAAA,CAAS,GAAGA,CAAAA,EAAQ,GAAG,CAAA,EAAA,EAAKC,CAAO,CAAA,CAAA,EAAIC,CAAAA,CAAO,CAAA,CAAA,EAAIA,CAAI,CAAA,CAAA,CAAA,CAAM,EAAE,CAAA,CAAA,CAAA,CAC1DA,CAAAA,EAAQ,CAAE,IAAA,CAAM,CAAA,EAAGA,CAAI,GAAI,CAAA,CAEnC,CAEO,IAAME,CAAAA,CAAQP,EAAAA,CAAO,OAAO,CAAA,CACtBQ,CAAAA,CAAUR,GAAO,SAAS,CAAA,CAEhC,SAASS,EAAAA,CAAQC,CAAAA,CAAqB,CAC3C,OAAOA,CAAAA,CAAI,QAAQ,IAAA,CAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,KAAA,CAAO,IAAI,CACpD,CAEO,SAASC,EAAAA,CAAQZ,CAAAA,CAAiC,CACvD,OAAOA,CAAAA,CAAM,QAAA,GAAa,OAC5B,CAEO,SAASa,CAAAA,CAAMlB,CAAAA,CAA0B,CAC9C,GAAIA,CAAAA,CAAO,MAAA,GAAW,CAAA,CAAG,OAAO,CAAA,IAAA,EAAO,IAAA,CAAK,SAAA,CAAUA,CAAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CAAA,CAChE,IAAMmB,CAAAA,CAAQnB,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAAE,GAAA,CAAKR,CAAAA,EAAU,KAAK,SAAA,CAAUA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,CACjF,OAAOQ,EAAO,MAAA,CAAS,EAAA,CAAK,CAAA,YAAA,EAAemB,CAAK,CAAA,KAAA,CAAA,CAAU,CAAA,YAAA,EAAeA,CAAK,CAAA,CAChF,CAEA,SAASC,EAAAA,CAASnB,CAAAA,CAAWC,CAAAA,CAAmB,CAC9C,IAAImB,CAAAA,CAAM,KAAA,CAAM,KAAK,CAAE,MAAA,CAAQnB,CAAAA,CAAE,MAAA,CAAS,CAAE,CAAA,CAAG,CAACoB,CAAAA,CAAGC,CAAAA,GAAUA,CAAK,CAAA,CAClE,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAKvB,CAAAA,CAAE,OAAQuB,CAAAA,EAAAA,CAAK,CAClC,IAAMC,CAAAA,CAAO,CAACD,CAAC,CAAA,CACf,IAAA,IAASE,EAAI,CAAA,CAAGA,CAAAA,EAAKxB,CAAAA,CAAE,MAAA,CAAQwB,CAAAA,EAAAA,CAC7BD,CAAAA,CAAKC,CAAC,CAAA,CAAI,KAAK,GAAA,CAAIL,CAAAA,CAAIK,CAAC,CAAA,CAAI,CAAA,CAAGD,CAAAA,CAAKC,CAAAA,CAAI,CAAC,EAAI,CAAA,CAAGL,CAAAA,CAAIK,CAAAA,CAAI,CAAC,CAAA,EAAKzB,CAAAA,CAAEuB,CAAAA,CAAI,CAAC,IAAMtB,CAAAA,CAAEwB,CAAAA,CAAI,CAAC,CAAA,CAAI,CAAA,CAAI,CAAA,CAAE,CAAA,CAE9FL,CAAAA,CAAMI,EACR,CACA,OAAOJ,CAAAA,CAAInB,CAAAA,CAAE,MAAM,CACrB,CAEO,SAASyB,GAAQnC,CAAAA,CAAeoC,CAAAA,CAA0C,CAC/E,IAAMC,CAAAA,CAAQrC,CAAAA,CAAM,WAAA,EAAY,CAChC,OAAOoC,CAAAA,CAAW,IAAA,CAAME,CAAAA,EAAcA,CAAAA,GAActC,CAAAA,EAAS4B,EAAAA,CAASS,CAAAA,CAAOC,EAAU,WAAA,EAAa,CAAA,GAAMA,CAAAA,CAAU,MAAA,CAAS,CAAA,CAAI,CAAA,CAAI,CAAA,CAAE,CACzI,CAEO,SAASC,CAAAA,CAAQvC,CAAAA,CAAeoC,CAAAA,CAA0C,CAC/E,IAAMI,CAAAA,CAAQL,GAAQnC,CAAAA,CAAOoC,CAAU,CAAA,CACvC,OAAII,CAAAA,GAAU,MAAA,CAAkB,CAAA,IAAA,EAAO,IAAA,CAAK,UAAUA,CAAK,CAAC,CAAA,CAAA,CACrDJ,CAAAA,CAAW,MAAA,CAASV,CAAAA,CAAMU,CAAU,CAAA,CAAI,MACjD,CC1FO,IAAMK,CAAAA,CAA+B3C,EAAAA,CAE5C,SAAS4C,EAAAA,CAAe,CAAE,OAAA,CAAAH,CAAQ,CAAA,CAAiBhC,CAAAA,CAA0BU,CAAAA,CAAiC,CAC5G,IAAM0B,CAAAA,CAAO,MAAA,CAAO,IAAA,CAAKpC,CAAS,CAAA,CAAE,MAAA,CAAQiB,CAAAA,EAAQA,CAAAA,GAAQ,OAAO,CAAA,CAC7DoB,CAAAA,CAAUD,CAAAA,CAAK,MAAA,CAAQnB,CAAAA,EAAQ,CAACiB,CAAAA,CAAU,QAAA,CAASjB,CAAG,CAAC,CAAA,CACvDZ,EAASgC,CAAAA,CAAQ,GAAA,CAAKpB,CAAAA,EAAQH,CAAAA,CAAM,kBAAA,CAAoB,CAAA,EAAGJ,CAAI,CAAA,CAAA,EAAIM,GAAQC,CAAG,CAAC,CAAA,CAAA,CAAI,CAAA,CAAA,EAAIA,CAAG,CAAA,6BAAA,CAAA,CAAiCe,CAAAA,CAAQf,CAAAA,CAAK,CAAC,GAAGiB,CAAS,CAAC,CAAC,CAAC,CAAA,CACxJI,CAAAA,CAAQF,CAAAA,CAAK,OAASC,CAAAA,CAAQ,MAAA,CACpC,GAAIC,CAAAA,GAAU,CAAA,EAAK,EAAEA,CAAAA,GAAU,CAAA,EAAKD,EAAQ,MAAA,CAAA,CAAS,CACnD,IAAM1B,CAAAA,CAAU2B,CAAAA,CAAQ,CAAA,kBAAA,EAAqBA,CAAK,CAAA,UAAA,CAAA,CAAe,gCACjEjC,CAAAA,CAAO,IAAA,CAAKS,CAAAA,CAAM,0BAAA,CAA4BJ,CAAAA,CAAMC,CAAAA,CAAS,CAAA,oBAAA,EAAuBuB,CAAAA,CAAU,KAAK,IAAI,CAAC,CAAA,CAAE,CAAC,EAC7G,CACA,OAAO7B,CACT,CAEA,SAASkC,EAAAA,CAAgBC,CAAAA,CAAuB,CAAE,SAAA,CAAAxC,CAAAA,CAAW,IAAA,CAAAU,EAAM,KAAA,CAAA+B,CAAAA,CAAO,IAAA,CAAAC,CAAAA,CAAM,GAAA,CAAAzB,CAAI,CAAA,CAAsC,CACxH,IAAM0B,CAAAA,CAASH,CAAAA,CAAQ,IAAA,CAAK,GAAA,CAAIxC,CAAAA,CAAU,KAAK,CAAA,CAC/C,GAAI,CAAC2C,CAAAA,CAAQ,CACX,IAAMd,CAAAA,CAAaW,CAAAA,CAAQ,OAAA,CAAQ,MAAA,CAAQT,CAAAA,EAAcA,IAAcd,CAAG,CAAA,CAC1E,OAAO,CAACH,CAAAA,CAAM,eAAA,CAAiB,CAAA,EAAGJ,CAAI,SAAU,CAAA,CAAA,EAAIV,CAAAA,CAAU,KAAK,CAAA,oBAAA,CAAA,CAAwBwC,CAAAA,CAAQ,OAAA,CAAQxC,CAAAA,CAAU,KAAA,CAAO6B,CAAU,CAAC,CAAC,CAC1I,CACA,GAAIa,CAAAA,CAAO,CAAA,EAAKD,CAAAA,GAAU,SAAU,OAAO,EAAC,CAC5C,IAAMG,CAAAA,CAAWH,CAAAA,GAAU,MAAA,CAAS,sBAAA,CAAyB,cAAA,CAC7D,GAAIE,CAAAA,CAAO,IAAA,CAAOD,CAAAA,EAASD,CAAAA,GAAU,MAAA,EAAUE,CAAAA,CAAO,OAASD,CAAAA,CAAO,OAAO,EAAC,CAC9E,IAAMG,CAAAA,CAAUJ,CAAAA,GAAU,MAAA,CAAS,gBAAkB,yBAAA,CACrD,OAAO,CAAC3B,CAAAA,CAAM,mBAAA,CAAqB,CAAA,EAAGJ,CAAI,CAAA,MAAA,CAAA,CAAU,IAAIV,CAAAA,CAAU,KAAK,CAAA,aAAA,EAAgB4C,CAAQ,CAAA,CAAA,CAAI,CAAA,EAAGH,CAAAA,GAAU,OAAA,CAAU,QAAUA,CAAAA,GAAU,MAAA,CAAS,MAAA,CAAS,OAAO,CAAA,8BAAA,EAAiCI,CAAO,CAAA,CAAE,CAAC,CACpN,CAEO,SAASC,EAAAA,CAAgBN,CAAAA,CAAuBO,CAAAA,CAA0C,CAC/F,GAAM,CAAE,UAAA/C,CAAAA,CAAW,IAAA,CAAAU,CAAK,CAAA,CAAIqC,CAAAA,CAC5B,OAAI,OAAO/C,CAAAA,CAAU,OAAU,QAAA,CAAiB,CAACc,CAAAA,CAAM,kBAAA,CAAoB,CAAA,EAAGJ,CAAI,CAAA,MAAA,CAAA,CAAU,8BAAA,CAAgC,kCAAkC,CAAC,CAAA,CACxJ,CAAC,GAAGyB,EAAAA,CAAeK,CAAAA,CAASxC,CAAAA,CAAWU,CAAI,CAAA,CAAG,GAAG6B,EAAAA,CAAgBC,CAAAA,CAASO,CAAK,CAAC,CACzF,CAEO,SAASC,EAAAA,CAAgBR,CAAAA,CAA0C,CACxE,OAAOA,CAAAA,CAAQ,UAAA,CAAW,OAAA,CAASO,CAAAA,EAAUD,GAAgBN,CAAAA,CAASO,CAAK,CAAC,CAC9E,CCbA,SAASE,EAAAA,CAAQN,CAAAA,CAA0BO,EAAexC,CAAAA,CAAc+B,CAAAA,CAAgCC,CAAAA,CAAczB,CAAAA,CAAoB,CA5B1I,IAAAkC,CAAAA,CA6BE,IAAA,IAAWC,KAAQ,CAAC,MAAA,CAAQ,SAAS,CAAA,CAAA,CAAA,CAClCD,CAAAA,CAAAD,CAAAA,CAAOE,CAAI,CAAA,GAAX,KAAAD,CAAAA,CAAgB,EAAC,EAAG,OAAA,CAAQ,CAACnD,CAAAA,CAAWwB,CAAAA,GAAUmB,CAAAA,CAAO,KAAK,CAAE,SAAA,CAAA3C,CAAAA,CAAW,IAAA,CAAM,CAAA,EAAGU,CAAI,CAAA,CAAA,EAAI0C,CAAI,CAAA,CAAA,EAAI5B,CAAK,CAAA,CAAA,CAAI,KAAA,CAAAiB,CAAAA,CAAO,IAAA,CAAAC,CAAAA,CAAM,GAAA,CAAAzB,CAAI,CAAC,CAAC,EAErI,CAEA,SAASoC,EAAAA,CAAcV,CAAAA,CAA0BW,CAAAA,CAAwC5C,EAAcgC,CAAAA,CAAoB,CAlC3H,IAAAS,CAAAA,CAAAA,CAmCGG,CAAAA,CAAAA,CAASH,CAAAA,CAAAG,CAAAA,CAAO,QAAA,GAAP,KAAAH,CAAAA,CAAmB,EAAC,CAAI,EAAC,EAAG,OAAA,CAAQ,CAACnD,CAAAA,CAAWwB,IACxDmB,CAAAA,CAAO,IAAA,CAAK,CAAE,SAAA,CAAA3C,CAAAA,CAAW,IAAA,CAAM,CAAA,EAAGU,CAAI,aAAac,CAAK,CAAA,CAAA,CAAI,KAAA,CAAO,QAAA,CAAU,IAAA,CAAAkB,CAAK,CAAC,CACpF,EACH,CAEO,SAASa,EAAAA,CAAcC,CAAAA,CAA4BC,CAAAA,CAAsCzB,CAAAA,CAAmC,IAAG,CAAA,CAAA,CAA4B,CAxClK,IAAAmB,CAAAA,CAAAO,CAAAA,CAyCE,IAAMC,CAAAA,CAAAA,CAAQR,CAAAA,CAAAK,CAAAA,CAAW,KAAA,GAAX,IAAA,CAAAL,CAAAA,CAAoB,EAAC,CAC7BS,CAAAA,CAAwBD,CAAAA,CAAM,MAAA,CAChCA,CAAAA,CAAM,QAAQ,CAACjB,CAAAA,CAAMlB,CAAAA,GAAUkB,CAAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAACmB,CAAAA,CAAOC,KAAc,CAAE,KAAA,CAAAD,CAAAA,CAAO,IAAA,CAAM,CAAA,OAAA,EAAUrC,CAAK,CAAA,QAAA,EAAWsC,CAAQ,GAAI,IAAA,CAAMtC,CAAM,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,CACxIkC,CAAAA,CAAAF,CAAAA,CAAW,MAAA,GAAX,KAAAE,CAAAA,CAAqB,EAAC,EAAG,GAAA,CAAI,CAACG,CAAAA,CAAOC,CAAAA,IAAc,CAAE,MAAAD,CAAAA,CAAO,IAAA,CAAM,CAAA,QAAA,EAAWC,CAAQ,CAAA,CAAA,CAAI,IAAA,CAAM,EAAG,CAAA,CAAE,EACnG1B,CAAAA,CAAO,IAAI,GAAA,CACjB,IAAA,IAAWW,CAAAA,IAASa,CAAAA,CAAcxB,CAAAA,CAAK,GAAA,CAAIW,EAAM,KAAA,CAAM,GAAG,CAAA,EAAGX,CAAAA,CAAK,GAAA,CAAIW,CAAAA,CAAM,KAAA,CAAM,GAAA,CAAKA,CAAK,CAAA,CAC5F,IAAMgB,CAAAA,CAA+B,EAAC,CACtC,IAAA,IAAWhB,CAAAA,IAASa,EAASX,EAAAA,CAAQc,CAAAA,CAAYhB,CAAAA,CAAM,KAAA,CAAOA,CAAAA,CAAM,IAAA,CAAM,OAAA,CAASA,CAAAA,CAAM,KAAMA,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAC9G,OAAAY,CAAAA,CAAM,OAAA,CAAQ,CAACjB,EAAMlB,CAAAA,GAAU,CAjDjC,IAAA2B,CAAAA,CAkDIF,EAAAA,CAAQc,CAAAA,CAAYrB,CAAAA,CAAM,CAAA,OAAA,EAAUlB,CAAK,CAAA,CAAA,CAAI,MAAA,CAAQA,CAAK,CAAA,CAAA,CAAA,CACzD2B,CAAAA,CAAAT,CAAAA,CAAK,MAAA,GAAL,IAAA,CAAAS,EAAe,EAAC,EAAG,OAAA,CAAQ,CAACa,CAAAA,CAAOF,CAAAA,GAAab,EAAAA,CAAQc,CAAAA,CAAYC,EAAO,CAAA,OAAA,EAAUxC,CAAK,CAAA,QAAA,EAAWsC,CAAQ,CAAA,CAAA,CAAI,OAAA,CAAStC,CAAK,CAAC,EACjI,IAAA,IAAW4B,CAAAA,IAAQ,CAAC,MAAA,CAAQ,MAAA,CAAQ,MAAM,CAAA,CAAYC,EAAAA,CAAcU,CAAAA,CAAYrB,CAAAA,CAAKU,CAAI,CAAA,CAAG,CAAA,OAAA,EAAU5B,CAAK,CAAA,CAAA,EAAI4B,CAAI,GAAI5B,CAAK,EAC9H,CAAC,CAAA,CACD6B,EAAAA,CAAcU,CAAAA,CAAYP,CAAAA,CAAW,MAAA,CAAQ,UAAW,EAAE,CAAA,CAC1DH,EAAAA,CAAcU,CAAAA,CAAYP,CAAAA,CAAW,MAAA,CAAQ,SAAA,CAAW,EAAE,EACnD,CACL,UAAA,CAAAA,CAAAA,CACA,OAAA,CAAAI,CAAAA,CACA,IAAA,CAAAxB,CAAAA,CACA,OAAA,CAAS,CAAC,GAAGA,CAAAA,CAAK,IAAA,EAAM,CAAA,CACxB,UAAA,CAAA2B,CAAAA,CACA,UAAA,CAAAN,EACA,OAAA,CAAAzB,CACF,CACF,CC5DA,SAASiC,EAAAA,CAAWC,CAAAA,CAAwBxD,CAAAA,CAAcyD,EAA0BC,CAAAA,CAA6C,CAC/H,IAAMC,CAAAA,CAAMH,CAAAA,CAAMC,CAAG,CAAA,CACfG,CAAAA,CAAOJ,EAAME,CAAG,CAAA,CACtB,OAAIC,CAAAA,GAAQ,MAAA,EAAaC,CAAAA,GAAS,MAAA,EAAaD,CAAAA,EAAOC,CAAAA,CAAa,EAAC,CAC7D,CAACxD,CAAAA,CAAM,eAAA,CAAiB,CAAA,EAAGJ,CAAI,eAAeyD,CAAG,CAAA,CAAA,CAAI,CAAA,EAAGA,CAAG,CAAA,EAAA,EAAKE,CAAG,CAAA,kBAAA,EAAqBD,CAAG,KAAKE,CAAI,CAAA,CAAA,CAAA,CAAK,CAAA,MAAA,EAASH,CAAG,CAAA,UAAA,EAAaC,CAAG,CAAA,CAAE,CAAC,CACjJ,CAEA,SAASG,EAAAA,CAAaC,CAAAA,CAA6B9D,CAAAA,CAAiC,CAClF,GAAI8D,CAAAA,GAAY,OAAW,OAAO,EAAC,CACnC,GAAI,CACF,OAAA,IAAI,MAAA,CAAOA,CAAO,EACX,EACT,CAAA,MAAQC,CAAAA,CAAA,CACN,OAAO,CAAC3D,CAAAA,CAAM,kBAAmB,CAAA,EAAGJ,CAAI,CAAA,mBAAA,CAAA,CAAuB,CAAA,EAAG,IAAA,CAAK,SAAA,CAAU8D,CAAO,CAAC,qCAAsC,+DAA+D,CAAC,CACjM,CACF,CAEA,SAASE,EAAAA,CAAWlC,CAAAA,CAAuB,CAAE,KAAA,CAAAqB,CAAAA,CAAO,IAAA,CAAAnD,CAAK,CAAA,CAAkC,CACzF,IAAMwD,EAAQL,CAAAA,CAAM,UAAA,CACpB,GAAI,CAACK,CAAAA,CAAO,OAAO,EAAC,CACpB,IAAMjC,CAAAA,CAAQiC,CAAAA,CAAM,UAAA,CACpB,OAAO,CACL,GAAGD,EAAAA,CAAWC,CAAAA,CAAOxD,EAAM,WAAA,CAAa,WAAW,CAAA,CACnD,GAAGuD,EAAAA,CAAWC,CAAAA,CAAOxD,CAAAA,CAAM,KAAA,CAAO,KAAK,CAAA,CACvC,GAAG6D,EAAAA,CAAaL,CAAAA,CAAM,OAAA,CAASxD,CAAI,CAAA,CACnC,GAAIuB,IAAU,MAAA,EAAaO,CAAAA,CAAQ,IAAA,CAAK,GAAA,CAAIP,CAAK,CAAA,CAAI,EAAC,CAAI,CAACnB,CAAAA,CAAM,eAAA,CAAiB,CAAA,EAAGJ,CAAI,CAAA,sBAAA,CAAA,CAA0B,CAAA,CAAA,EAAIuB,CAAK,CAAA,oBAAA,CAAA,CAAwBO,EAAQ,OAAA,CAAQP,CAAAA,CAAOO,CAAAA,CAAQ,OAAO,CAAC,CAAC,CAC9L,CACF,CAEO,SAASmC,EAAAA,CAAYnC,CAAAA,CAA0C,CACpE,OAAOA,CAAAA,CAAQ,OAAA,CAAQ,QAASO,CAAAA,EAAU2B,EAAAA,CAAWlC,CAAAA,CAASO,CAAK,CAAC,CACtE,CChCA,SAAS6B,GAAgB,CAAE,UAAA,CAAApB,CAAAA,CAAY,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAxB,CAAK,CAAA,CAAwC,CAJ7F,IAAAe,CAAAA,CAKE,IAAM0B,CAAAA,CAAQ,IAAI,GAAA,CACZC,CAAAA,CAAO,CAACC,EAAkBC,CAAAA,GAA2B,CAN7D,IAAA7B,CAAAA,CAOI,IAAM8B,CAAAA,CAAQD,CAAAA,CAAa,MAAA,CAAQ/D,GAAQmB,CAAAA,CAAK,GAAA,CAAInB,CAAG,CAAC,CAAA,CACxD,GAAIgE,CAAAA,CAAM,MAAA,CAAQ,QAAWxC,CAAAA,IAASsC,CAAAA,CAAQF,CAAAA,CAAM,GAAA,CAAIpC,CAAAA,CAAO,CAAC,GAAA,CAAIU,CAAAA,CAAA0B,EAAM,GAAA,CAAIpC,CAAK,CAAA,GAAf,IAAA,CAAAU,CAAAA,CAAoB,EAAC,CAAI,GAAG8B,CAAK,CAAC,EACxG,CAAA,CACMC,CAAAA,CAAYhC,CAAAA,EAAuE,CAV3F,IAAAC,EAAAO,CAAAA,CAWI,OAAA,CAAC,GAAA,CAAIP,CAAAA,CAAAD,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAAC,CAAAA,CAAe,EAAC,CAAI,GAAA,CAAIO,CAAAA,CAAAR,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAAQ,CAAAA,CAAkB,EAAG,CAAA,CAAE,GAAA,CAAK1D,CAAAA,EAAcA,CAAAA,CAAU,KAAK,CAAA,CAAA,CAExF,IAAA,GAAW,CAAE,MAAA6D,CAAM,CAAA,GAAKD,CAAAA,CAASkB,CAAAA,CAAK,CAACjB,CAAAA,CAAM,GAAG,CAAA,CAAGqB,EAASrB,CAAK,CAAC,CAAA,CAClE,IAAA,IAAWnB,CAAAA,IAAAA,CAAQS,CAAAA,CAAAK,CAAAA,CAAW,KAAA,GAAX,KAAAL,CAAAA,CAAoB,EAAC,CAAG2B,CAAAA,CAAKpC,CAAAA,CAAK,MAAA,CAAO,GAAA,CAAKmB,CAAAA,EAAUA,EAAM,GAAG,CAAA,CAAGqB,CAAAA,CAASxC,CAAI,CAAC,CAAA,CACrG,OAAOmC,CACT,CAEA,SAASM,EAAAA,CAAWN,CAAAA,CAA0C,CAlB9D,IAAA1B,CAAAA,CAmBE,IAAMiC,EAAW,IAAI,GAAA,CACfC,CAAAA,CAAqB,EAAC,CAC5B,IAAA,IAAWC,CAAAA,IAAST,CAAAA,CAAM,MAAK,CAAG,CAChC,GAAIO,CAAAA,CAAS,GAAA,CAAIE,CAAK,CAAA,CAAG,SACzBF,EAAS,GAAA,CAAIE,CAAAA,CAAO,IAAI,CAAA,CACxB,IAAMC,CAAAA,CAA4B,CAAC,CAACD,CAAAA,CAAO,CAAC,CAAC,CAAA,CAC7C,KAAOC,CAAAA,CAAM,MAAA,CAAS,CAAA,EAAG,CACvB,IAAMC,CAAAA,CAAQD,CAAAA,CAAMA,CAAAA,CAAM,MAAA,CAAS,CAAC,CAAA,CAC9BE,CAAAA,CAAAA,CAAWtC,EAAA0B,CAAAA,CAAM,GAAA,CAAIW,CAAAA,CAAM,CAAC,CAAC,CAAA,GAAlB,IAAA,CAAA,MAAA,CAAArC,CAAAA,CAAsBqC,EAAM,CAAC,CAAA,EAAA,CAAA,CAC9C,GAAIC,CAAAA,GAAa,MAAA,CACfL,CAAAA,CAAS,GAAA,CAAII,CAAAA,CAAM,CAAC,CAAA,CAAG,KAAK,CAAA,CAC5BD,CAAAA,CAAM,GAAA,EAAI,CAAA,KAAA,GACDH,CAAAA,CAAS,IAAIK,CAAQ,CAAA,CAAG,CACjC,IAAMC,CAAAA,CAAQH,CAAAA,CAAM,GAAA,CAAI,CAAC,CAACI,CAAI,CAAA,GAAMA,CAAI,CAAA,CACxCN,CAAAA,CAAO,IAAA,CAAK,CAAC,GAAGK,EAAM,KAAA,CAAMA,CAAAA,CAAM,OAAA,CAAQD,CAAQ,CAAC,CAAA,CAAGA,CAAQ,CAAC,EACjE,CAAA,KAAYL,CAAAA,CAAS,GAAA,CAAIK,CAAQ,CAAA,GAC/BL,CAAAA,CAAS,GAAA,CAAIK,CAAAA,CAAU,IAAI,CAAA,CAC3BF,CAAAA,CAAM,IAAA,CAAK,CAACE,CAAAA,CAAU,CAAC,CAAC,CAAA,EAE5B,CACF,CACA,OAAOJ,CACT,CAEA,SAASO,EAAAA,CAAYpD,CAAAA,CAA0C,CAC7D,OAAO2C,EAAAA,CAAWP,EAAAA,CAAgBpC,CAAO,CAAC,CAAA,CAAE,GAAA,CAAKqD,CAAAA,EAC/C/E,CAAAA,CAAM,iBAAA,CAAmB0B,CAAAA,CAAQ,IAAA,CAAK,GAAA,CAAIqD,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAG,KAAM,CAAA,8BAAA,EAAiCA,CAAAA,CAAM,IAAA,CAAK,MAAM,CAAC,CAAA,CAAA,CAAI,2CAA2C,CAC9J,CACH,CAEO,SAASC,EAAAA,CAAYtD,CAAAA,CAA0C,CACpE,OAAOoD,EAAAA,CAAYpD,CAAO,CAC5B,CChDO,IAAMuD,EAAAA,CAAiB,KAAA,CAEvB,SAASC,EAAAA,CAAa,CAAE,aAAA,CAAeC,CAAQ,CAAA,CAA+C,CACnG,GAAIA,CAAAA,GAAY,MAAA,CAAW,OAAO,EAAC,CACnC,IAAMC,CAAAA,CAAQ,OAAOD,CAAAA,EAAY,QAAA,EAAY,oBAAA,CAAqB,IAAA,CAAKA,CAAO,CAAA,CAC9E,OAAIC,CAAAA,EAAS,QAAA,CAASD,CAAO,CAAA,EAAK,QAAA,CAASF,EAAc,CAAA,CAAU,GAC5D,CAACG,CAAAA,CACJpF,CAAAA,CAAM,4BAAA,CAA8B,gBAAA,CAAkB,CAAA,OAAA,EAAUmF,CAAO,CAAA,iBAAA,CAAA,CAAqB,wBAAwB,CAAA,CACpHnF,CAAAA,CAAM,cAAA,CAAgB,gBAAA,CAAkB,0BAAA,CAA4B,CAAA,KAAA,EAAQiF,EAAc,GAAG,CAAC,CACpG,CCJO,IAAMI,CAAAA,CAAW1G,CAAAA,EACtB,OAAOA,CAAAA,EAAU,UAAYA,CAAAA,GAAU,IAAA,EAAQ,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CAE/D2G,EAAAA,CAA6D,CACjE,MAAA,CAAQ,CAAE3G,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAA,CAAU,UAAU,CAAA,CACzD,OAAQ,CAAEA,CAAAA,EAAU,OAAOA,CAAAA,EAAU,QAAA,EAAY,MAAA,CAAO,QAAA,CAASA,CAAK,EAAG,UAAU,CAAA,CACnF,OAAA,CAAS,CAAEA,CAAAA,EAAU,OAAOA,CAAAA,EAAU,SAAA,CAAW,eAAe,CAAA,CAChE,WAAA,CAAa,CAAEA,CAAAA,EAAU,CAAC,SAAA,CAAW,QAAQ,CAAA,CAAE,SAAS,OAAOA,CAAK,CAAA,CAAG,iCAAiC,CAAA,CACxG,MAAA,CAAQ,CAAEA,CAAAA,EAAU,CAAC,QAAA,CAAU,QAAA,CAAU,SAAS,CAAA,CAAE,QAAA,CAAS,OAAOA,CAAK,EAAG,6BAA6B,CAAA,CACzG,IAAA,CAAM,CAAEA,CAAAA,EAAU,KAAA,CAAM,OAAA,CAAQA,CAAK,GAAKA,CAAAA,CAAM,KAAA,CAAO4G,CAAAA,EAAS,CAAC,QAAA,CAAU,QAAQ,CAAA,CAAE,QAAA,CAAS,OAAOA,CAAI,CAAC,CAAA,CAAG,gCAAgC,CAC/I,CAAA,CAEA,SAASC,CAAAA,CAAM7G,EAAcyE,CAAAA,CAA6BxD,CAAAA,CAAiC,CACzF,OAAO,MAAA,CAAO,OAAA,CAAQwD,CAAK,CAAA,CAAE,QAAQ,CAAC,CAACjD,CAAAA,CAAKsF,CAAI,CAAA,GAAM,CACpD,GAAM,CAACL,EAAO9C,CAAI,CAAA,CAAIgD,EAAAA,CAAMG,CAAI,CAAA,CAChC,OAAO9G,CAAAA,CAAMwB,CAAG,IAAM,MAAA,EAAaiF,CAAAA,CAAMzG,CAAAA,CAAMwB,CAAG,CAAC,CAAA,CAAI,EAAC,CAAI,CAACH,CAAAA,CAAM,cAAA,CAAgB,CAAA,EAAGJ,CAAI,CAAA,CAAA,EAAIM,EAAAA,CAAQC,CAAG,CAAC,CAAA,CAAA,CAAI,CAAA,CAAA,EAAIA,CAAG,CAAA,UAAA,EAAamC,CAAI,CAAA,CAAE,CAAC,CAC3I,CAAC,CACH,CAEA,SAASoD,CAAAA,CAAK/G,CAAAA,CAAgBiB,CAAAA,CAAc0C,CAAAA,CAAcqD,CAAAA,CAAcC,EAAW,KAAA,CAA0B,CAC3G,OAAIjH,CAAAA,EAAS,IAAA,EAAQ,CAACiH,CAAAA,CAAiB,GAClC,KAAA,CAAM,OAAA,CAAQjH,CAAK,CAAA,CACjBA,CAAAA,CAAM,OAAA,CAAQ,CAAC4G,CAAAA,CAAM7E,IAC1B2E,CAAAA,CAAQE,CAAI,CAAA,CAAII,CAAAA,CAAMJ,CAAAA,CAAM,CAAA,EAAG3F,CAAI,CAAA,CAAA,EAAIc,CAAK,CAAA,CAAE,CAAA,CAAI,CAACV,CAAAA,CAAM,cAAA,CAAgB,CAAA,EAAGJ,CAAI,CAAA,CAAA,EAAIc,CAAK,CAAA,CAAA,CAAI,CAAA,QAAA,EAAW4B,CAAI,CAAA,CAAE,CAAC,CAChH,CAAA,CAHiC,CAACtC,CAAAA,CAAM,cAAA,CAAgBJ,CAAAA,CAAM,kBAAA,CAAoBgG,CAAAA,CAAW,sCAAA,CAAyC,MAAS,CAAC,CAInJ,CAEA,SAASC,CAAAA,CAAKlH,CAAAA,CAAcwB,CAAAA,CAAaP,CAAAA,CAAiC,CACxE,OAAO,OAAOjB,CAAAA,CAAMwB,CAAG,CAAA,EAAM,QAAA,CAAW,EAAC,CAAI,CAACH,CAAAA,CAAM,mBAAoB,CAAA,EAAGJ,CAAI,CAAA,CAAA,EAAIO,CAAG,CAAA,CAAA,CAAI,CAAA,CAAA,EAAIA,CAAG,CAAA,kBAAA,CAAoB,CAAC,CACxH,CAEA,IAAMjB,EAAAA,CAAmB,CAACP,CAAAA,CAAOiB,CAAAA,GAAS4F,CAAAA,CAAM7G,EAAO,CAAE,KAAA,CAAO,QAAA,CAAU,EAAA,CAAI,QAAA,CAAU,GAAA,CAAK,QAAA,CAAU,EAAA,CAAI,OAAQ,KAAA,CAAO,MAAA,CAAQ,QAAA,CAAU,SAAA,CAAW,EAAA,CAAI,QAAA,CAAU,GAAA,CAAK,QAAA,CAAU,GAAI,QAAA,CAAU,GAAA,CAAK,QAAS,CAAA,CAAGiB,CAAI,CAAA,CAEvN,SAASqD,EAAAA,CAAWtE,CAAAA,CAAciB,CAAAA,CAAiC,CACjE,OAAO,CACL,GAAG8F,CAAAA,CAAK/G,CAAAA,CAAM,KAAM,CAAA,EAAGiB,CAAI,CAAA,KAAA,CAAA,CAAS,oBAAA,CAAsBV,EAAS,CAAA,CACnE,GAAGwG,CAAAA,CAAK/G,EAAM,OAAA,CAAS,CAAA,EAAGiB,CAAI,CAAA,QAAA,CAAA,CAAY,oBAAA,CAAsBV,EAAS,CAC3E,CACF,CAEA,SAASsD,EAAAA,CAAO7D,CAAAA,CAAgBiB,CAAAA,CAAiC,CAC/D,OAAKyF,CAAAA,CAAQ1G,CAAK,EACX,CAAC,GAAG6G,CAAAA,CAAM7G,CAAAA,CAAO,CAAE,KAAA,CAAO,QAAS,CAAA,CAAGiB,CAAI,CAAA,CAAG,GAAG8F,CAAAA,CAAK/G,CAAAA,CAAM,QAAA,CAAU,CAAA,EAAGiB,CAAI,CAAA,SAAA,CAAA,CAAa,qBAAsBV,EAAS,CAAC,CAAA,CADpG,EAE9B,CAEA,IAAM4G,EAAAA,CAAgB,CAACnH,CAAAA,CAAOiB,CAAAA,GAAS,CAAC,GAAGiG,CAAAA,CAAKlH,CAAAA,CAAO,OAAA,CAASiB,CAAI,CAAA,CAAG,GAAG4F,CAAAA,CAAM7G,CAAAA,CAAO,CAAE,KAAA,CAAO,QAAS,CAAA,CAAGiB,CAAI,CAAC,CAAA,CAE3GmG,EAAAA,CAA8B,CAClC,QAAA,CAAU,aAAA,CAAe,SAAA,CAAW,QAAA,CAAU,UAAW,QAAA,CAAU,GAAA,CAAK,QAAA,CAAU,GAAA,CAAK,QAAA,CAAU,OAAA,CAAS,QAAA,CAAU,UAAA,CAAY,SAAU,SAAA,CAAW,QAAA,CACrJ,gBAAA,CAAkB,QAAA,CAAU,gBAAA,CAAkB,QAAA,CAAU,UAAA,CAAY,QAAA,CAAU,WAAY,QAAA,CAAU,cAAA,CAAgB,QAAA,CAAU,iBAAA,CAAmB,QACnJ,CAAA,CAEA,SAASC,EAAAA,CAAWrH,EAAgBiB,CAAAA,CAAiC,CACnE,OAAIjB,CAAAA,GAAU,MAAA,CAAkB,EAAC,CAC1B0G,CAAAA,CAAQ1G,CAAK,CAAA,CAAI6G,CAAAA,CAAM7G,CAAAA,CAAOoH,EAAAA,CAAOnG,CAAI,CAAA,CAAI,CAACI,CAAAA,CAAM,eAAgBJ,CAAAA,CAAM,uCAAuC,CAAC,CAC3H,CAEA,SAASsE,EAAAA,CAAavF,CAAAA,CAAgBiB,CAAAA,CAAiC,CAErE,OADcjB,CAAAA,GAAU,MAAA,EAAc,KAAA,CAAM,OAAA,CAAQA,CAAK,GAAKA,CAAAA,CAAM,KAAA,CAAOwB,CAAAA,EAAQ,OAAOA,CAAAA,EAAQ,QAAQ,CAAA,CAC3F,GAAK,CAACH,CAAAA,CAAM,cAAA,CAAgBJ,CAAAA,CAAM,gCAAgC,CAAC,CACpF,CAEA,IAAMmD,EAAAA,CAAe,CAACpE,CAAAA,CAAOiB,CAAAA,GAAS,CACpC,GAAGiG,CAAAA,CAAKlH,CAAAA,CAAO,MAAOiB,CAAI,CAAA,CAC1B,GAAGiG,CAAAA,CAAKlH,CAAAA,CAAO,MAAA,CAAQiB,CAAI,CAAA,CAC3B,GAAG4F,CAAAA,CAAM7G,CAAAA,CAAO,CAAE,KAAA,CAAO,QAAA,CAAU,WAAA,CAAa,QAAA,CAAU,UAAA,CAAY,QAAS,CAAA,CAAGiB,CAAI,CAAA,CACtF,GAAGqD,EAAAA,CAAWtE,CAAAA,CAAOiB,CAAI,CAAA,CACzB,GAAG8F,CAAAA,CAAK/G,CAAAA,CAAM,OAAA,CAAS,CAAA,EAAGiB,CAAI,CAAA,QAAA,CAAA,CAAY,kBAAA,CAAoBkG,EAAM,CAAA,CACpE,GAAGE,EAAAA,CAAWrH,CAAAA,CAAM,UAAA,CAAY,CAAA,EAAGiB,CAAI,CAAA,WAAA,CAAa,EACpD,GAAGsE,EAAAA,CAAavF,CAAAA,CAAM,gBAAA,CAAkB,CAAA,EAAGiB,CAAI,CAAA,iBAAA,CAAmB,CACpE,EAEMsD,EAAAA,CAAe,CAACvE,CAAAA,CAAOiB,CAAAA,GAAS,CACpC,GAAIjB,CAAAA,CAAM,EAAA,GAAO,MAAQ,OAAOA,CAAAA,CAAM,EAAA,EAAO,QAAA,CAAW,EAAC,CAAI,CAACqB,CAAAA,CAAM,mBAAoB,CAAA,EAAGJ,CAAI,CAAA,GAAA,CAAA,CAAO,gCAAgC,CAAC,CAAA,CACvI,GAAGqD,EAAAA,CAAWtE,EAAOiB,CAAI,CAC3B,CAAA,CAEMgC,EAAAA,CAAc,CAACjD,CAAAA,CAAOiB,CAAAA,GAAS,CACnC,GAAGiG,CAAAA,CAAKlH,CAAAA,CAAO,IAAA,CAAMiB,CAAI,CAAA,CACzB,GAAG4F,CAAAA,CAAM7G,CAAAA,CAAO,CAAE,KAAA,CAAO,QAAA,CAAU,WAAA,CAAa,QAAS,CAAA,CAAGiB,CAAI,CAAA,CAChE,GAAG8F,CAAAA,CAAK/G,CAAAA,CAAM,MAAA,CAAQ,CAAA,EAAGiB,CAAI,CAAA,OAAA,CAAA,CAAW,gBAAA,CAAkBmD,EAAAA,CAAO,IAAI,CAAA,CACrE,GAAGE,EAAAA,CAAWtE,CAAAA,CAAOiB,CAAI,CAAA,CACzB,GAAG8F,CAAAA,CAAK/G,EAAM,MAAA,CAAQ,CAAA,EAAGiB,CAAI,CAAA,OAAA,CAAA,CAAW,gBAAA,CAAkBsD,EAAK,CAAA,CAC/D,GAAG,CAAC,MAAA,CAAQ,MAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAASZ,CAAAA,EAASE,EAAAA,CAAO7D,CAAAA,CAAM2D,CAAI,CAAA,CAAG,CAAA,EAAG1C,CAAI,CAAA,CAAA,EAAI0C,CAAI,CAAA,CAAE,CAAC,CACtF,EAEO,SAAS2D,EAAAA,CAAYC,CAAAA,CAAmC,CAC7D,GAAI,CAACb,CAAAA,CAAQa,CAAK,EAAG,OAAO,CAAClG,CAAAA,CAAM,cAAA,CAAgB,EAAA,CAAI,uCAAuC,CAAC,CAAA,CAC/F,IAAMmG,CAAAA,CAASjB,EAAAA,CAAagB,CAAK,CAAA,CACjC,OAAIC,CAAAA,CAAO,MAAA,CAAeA,CAAAA,CACnB,CACL,GAAGT,CAAAA,CAAKQ,CAAAA,CAAM,MAAA,CAAQ,SAAA,CAAW,gBAAA,CAAkBnD,EAAK,EACxD,GAAG2C,CAAAA,CAAKQ,CAAAA,CAAM,KAAA,CAAO,QAAA,CAAU,eAAA,CAAiBtE,EAAI,CAAA,CACpD,GAAGY,EAAAA,CAAO0D,CAAAA,CAAM,MAAA,CAAQ,SAAS,CAAA,CACjC,GAAG1D,EAAAA,CAAO0D,CAAAA,CAAM,OAAQ,SAAS,CACnC,CACF,CAEO,SAASE,EAAAA,CAAWF,CAAAA,CAAiC,CAC1D,OAAO,CACL,GAAGL,CAAAA,CAAKK,CAAAA,CAAO,IAAA,CAAM,EAAE,CAAA,CACvB,GAAIb,EAAQa,CAAAA,CAAM,MAAM,CAAA,CAAI,EAAC,CAAI,CAAClG,CAAAA,CAAM,kBAAA,CAAoB,UAAW,8BAAA,CAAgC,qCAAqC,CAAC,CAC/I,CACF,CC7GA,IAAMqG,EAAAA,CAAejE,GAA6C,CAFlE,IAAAC,CAAAA,CAAAO,CAAAA,CAEqE,OAAA,CAAC,EAAA,CAAEP,CAAAA,CAAAD,CAAAA,CAAO,IAAA,GAAP,IAAA,EAAAC,CAAAA,CAAa,MAAA,EAAA,CAAUO,CAAAA,CAAAR,CAAAA,CAAO,OAAA,GAAP,IAAA,EAAAQ,EAAgB,MAAA,CAAA,CAAA,CAE/G,SAAS0D,EAAAA,CAAWzD,CAAAA,CAAmB0D,CAAAA,CAA8BC,CAAAA,CAAwB,CAJ7F,IAAAnE,EAKE,IAAMzB,CAAAA,CAAiB,EAAC,CACxB,IAAA,IAAWsC,CAAAA,IAAAA,CAASb,CAAAA,CAAAQ,CAAAA,CAAM2D,CAAI,CAAA,CAAE,MAAA,GAAZ,IAAA,CAAAnE,CAAAA,CAAsB,EAAC,CAAG,CAC5C,IAAMR,EAASqB,CAAAA,CAAM,EAAA,GAAO,IAAA,CAAO,IAAA,CAAOqD,CAAAA,CAAQ,GAAA,CAAIrD,CAAAA,CAAM,EAAE,EAC9D,GAAIrB,CAAAA,GAAW,IAAA,EAAQ,CAACwE,EAAAA,CAAYnD,CAAK,CAAA,CAAG,OAAOtC,EACnD,GAAI,EAAAiB,CAAAA,EAAW,IAAA,EAAgCA,CAAAA,EAAU2E,CAAAA,CAAAA,GACzD5F,CAAAA,CAAK,IAAA,CAAKiB,CAAM,CAAA,CACZ,CAACwE,EAAAA,CAAYnD,CAAK,CAAA,EAAK,CAACmD,EAAAA,CAAYxD,CAAAA,CAAMhB,CAAM,CAAC,CAAA,CAAA,CAAG,OAAOjB,CACjE,CACA,OAAO4F,CAAAA,CAAO,EAAI3D,CAAAA,CAAM,MAAA,CAAS,CAAC,GAAGjC,CAAAA,CAAM4F,CAAAA,CAAO,CAAC,CAAA,CAAI5F,CACzD,CAEO,SAAS6F,EAAAA,CAAe5D,CAAAA,CAAkC,CAC/D,IAAM0D,CAAAA,CAAU,IAAI,IAAI1D,CAAAA,CAAM,GAAA,CAAI,CAACjB,CAAAA,CAAMlB,CAAAA,GAAU,CAACkB,CAAAA,CAAK,EAAA,CAAIlB,CAAK,CAAC,CAAC,CAAA,CACpE,OAAOmC,CAAAA,CAAM,GAAA,CAAI,CAACpC,CAAAA,CAAG+D,IAAU,CAC7B,IAAMkC,CAAAA,CAAO,IAAI,GAAA,CACXC,CAAAA,CAAQL,EAAAA,CAAWzD,CAAAA,CAAO0D,EAAS/B,CAAK,CAAA,CAC9C,KAAOmC,CAAAA,CAAM,MAAA,EAAQ,CACnB,IAAMjG,CAAAA,CAAQiG,EAAM,GAAA,EAAI,CACpBD,CAAAA,CAAK,GAAA,CAAIhG,CAAK,CAAA,GAClBgG,CAAAA,CAAK,GAAA,CAAIhG,CAAK,CAAA,CACdiG,CAAAA,CAAM,IAAA,CAAK,GAAGL,EAAAA,CAAWzD,CAAAA,CAAO0D,CAAAA,CAAS7F,CAAK,CAAC,CAAA,CAC3C2F,EAAAA,CAAYxD,CAAAA,CAAMnC,CAAK,CAAC,CAAA,EAAKA,CAAAA,CAAQ,EAAImC,CAAAA,CAAM,MAAA,EAAQ8D,CAAAA,CAAM,IAAA,CAAKjG,CAAAA,CAAQ,CAAC,CAAA,EACjF,CACA,OAAOgG,CACT,CAAC,CACH,CCzBA,IAAME,EAAAA,CAAW,IAAI,GAAA,CAAI,CAAC,GAAG,MAAA,CAAO,mBAAA,CAAoB,MAAA,CAAO,SAAS,CAAA,CAAG,WAAW,CAAC,EAEvF,SAASC,EAAAA,CAAW,CAAE,UAAA,CAAAnE,CAAW,CAAA,CAAoC,CAPrE,IAAAL,EAQE,IAAM9C,CAAAA,CAA4B,EAAC,CAC7BsD,CAAAA,CAAAA,CAAQR,CAAAA,CAAAK,CAAAA,CAAW,KAAA,GAAX,KAAAL,CAAAA,CAAoB,EAAC,CAC7BqE,CAAAA,CAAO,IAAI,GAAA,CACjB,OAAA7D,CAAAA,CAAM,OAAA,CAAQ,CAACjB,CAAAA,CAAMlB,CAAAA,GAAU,CAC7B,IAAMoG,CAAAA,CAAQJ,CAAAA,CAAK,IAAI9E,CAAAA,CAAK,EAAE,CAAA,CAC1BkF,CAAAA,GAAU,MAAA,CAAWJ,CAAAA,CAAK,GAAA,CAAI9E,CAAAA,CAAK,GAAIlB,CAAK,CAAA,CAC3CnB,CAAAA,CAAO,IAAA,CAAKS,CAAAA,CAAM,mBAAA,CAAqB,CAAA,OAAA,EAAUU,CAAK,MAAO,CAAA,SAAA,EAAYkB,CAAAA,CAAK,EAAE,CAAA,4BAAA,EAA+BkF,CAAK,CAAA,CAAA,CAAI,4BAA4B,CAAC,EAC5J,CAAC,CAAA,CACDjE,CAAAA,CAAM,OAAA,CAAQ,CAACjB,CAAAA,CAAMlB,CAAAA,GAAO,CAhB9B,IAAA2B,CAAAA,CAgBkC,OAAA,CAAA,CAAAA,CAAAA,CAAAT,CAAAA,CAAK,MAAA,GAAL,IAAA,CAAAS,CAAAA,CAAe,EAAC,EAAG,OAAA,CAAQ,CAACa,CAAAA,CAAOF,CAAAA,GAAa,CAC9E,GAAIE,CAAAA,CAAM,KAAO,IAAA,CAAM,OACvB,IAAMrB,CAAAA,CAAS6E,CAAAA,CAAK,GAAA,CAAIxD,CAAAA,CAAM,EAAE,CAAA,CAChC,GAAIrB,CAAAA,GAAW,MAAA,EAAaA,CAAAA,CAASnB,CAAAA,CAAO,OAC5C,IAAMqG,EAAQlE,CAAAA,CAAM,KAAA,CAAMnC,CAAAA,CAAQ,CAAC,CAAA,CAAE,GAAA,CAAKO,CAAAA,EAAcA,CAAAA,CAAU,EAAE,CAAA,CAC9DpB,CAAAA,CAAUgC,CAAAA,GAAW,MAAA,CAAY,CAAA,CAAA,EAAIqB,CAAAA,CAAM,EAAE,CAAA,kBAAA,CAAA,CAAuB,IAAIA,CAAAA,CAAM,EAAE,CAAA,qBAAA,CAAA,CAChFpD,CAAAA,CAAOiH,CAAAA,CAAM,MAAA,CAAS,CAAA,EAAG1G,CAAAA,CAAM0G,CAAK,CAAC,CAAA,8BAAA,CAAA,CAAmC,+BAAA,CAC9ExH,CAAAA,CAAO,IAAA,CAAKS,CAAAA,CAAM,cAAA,CAAgB,CAAA,OAAA,EAAUU,CAAK,CAAA,QAAA,EAAWsC,CAAQ,CAAA,GAAA,CAAA,CAAOnD,CAAAA,CAASC,CAAI,CAAC,EAC3F,CAAC,EAAC,CAAA,CACKP,CACT,CAEA,SAASyH,EAAAA,CAAU,CAAE,UAAA,CAAAtE,CAAAA,CAAY,QAAAI,CAAQ,CAAA,CAAoC,CA5B7E,IAAAT,CAAAA,CA6BE,IAAM9C,CAAAA,CAA4B,EAAC,CAC7B0H,CAAAA,CAAYR,EAAAA,CAAAA,CAAepE,CAAAA,CAAAK,CAAAA,CAAW,KAAA,GAAX,IAAA,CAAAL,CAAAA,CAAoB,EAAE,CAAA,CACjD6E,CAAAA,CAAY,CAAC9H,CAAAA,CAAeC,CAAAA,GAAe,CA/BnD,IAAAgD,EA+BsD,OAAAjD,CAAAA,CAAE,IAAA,GAASC,CAAAA,CAAE,IAAA,EAAQ,EAAA,CAACgD,CAAAA,CAAA4E,CAAAA,CAAU7H,EAAE,IAAI,CAAA,GAAhB,IAAA,EAAAiD,CAAAA,CAAmB,GAAA,CAAIhD,CAAAA,CAAE,IAAA,CAAA,CAAA,CAAA,CACnG,OAAAyD,EAAQ,OAAA,CAAQ,CAACb,CAAAA,CAAOvB,CAAAA,GAAU,CAChC,GAAM,CAAE,KAAA,CAAAqC,EAAO,IAAA,CAAAnD,CAAK,CAAA,CAAIqC,CAAAA,CAClBkF,CAAAA,CAAQrE,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAGpC,CAAK,CAAA,CAAE,IAAA,CAAM0G,CAAAA,EAAUA,CAAAA,CAAM,KAAA,CAAM,GAAA,GAAQrE,CAAAA,CAAM,GAAA,EAAO,CAACmE,CAAAA,CAAUE,CAAAA,CAAOnF,CAAK,CAAC,CAAA,CAC3G2E,EAAAA,CAAS,GAAA,CAAI7D,CAAAA,CAAM,GAAG,CAAA,CACxBxD,CAAAA,CAAO,IAAA,CAAKS,CAAAA,CAAM,cAAA,CAAgB,CAAA,EAAGJ,CAAI,OAAQ,CAAA,CAAA,EAAImD,CAAAA,CAAM,GAAG,CAAA,oCAAA,CAAA,CAAwC,sBAAsB,CAAC,CAAA,CACpHoE,CAAAA,EACT5H,EAAO,IAAA,CAAKS,CAAAA,CAAM,eAAA,CAAiB,CAAA,EAAGJ,CAAI,CAAA,IAAA,CAAA,CAAQ,CAAA,KAAA,EAAQmD,CAAAA,CAAM,GAAG,CAAA,qBAAA,EAAwBoE,CAAAA,CAAM,IAAI,CAAA,iBAAA,CAAA,CAAqB,0EAA0E,CAAC,EAEzM,CAAC,EACM5H,CACT,CAEO,SAAS8H,EAAAA,CAAgB3F,CAAAA,CAA0C,CA5C1E,IAAAW,CAAAA,CAAAO,EA6CE,GAAM,CAAE,UAAA,CAAAF,CAAW,CAAA,CAAIhB,CAAAA,CAEvB,OAAO,CACL,GAFW,CAAC,EAAA,CAACW,CAAAA,CAAAK,CAAAA,CAAW,MAAA,GAAX,IAAA,EAAAL,CAAAA,CAAmB,MAAA,CAAA,EAAU,CAAC,EAAA,CAACO,CAAAA,CAAAF,CAAAA,CAAW,KAAA,GAAX,IAAA,EAAAE,CAAAA,CAAkB,MAAA,CAAA,CAEnD,CAAC5C,CAAAA,CAAM,kBAAA,CAAoB,EAAA,CAAI,8CAAA,CAAgD,0DAA0D,CAAC,CAAA,CAAI,GACzJ,GAAG6G,EAAAA,CAAWnF,CAAO,CAAA,CACrB,GAAGsF,EAAAA,CAAUtF,CAAO,CACtB,CACF,CC5CO,IAAM4F,EAAAA,CAAyD,MAAA,CAAO,MAAA,CAAO,CAClF,QAAA,CAAU,wBAAA,CACV,UAAW,mCAAA,CACX,SAAA,CAAW,kCAAA,CACX,QAAA,CAAU,8BAAA,CACV,QAAA,CAAU,6BAAA,CACV,GAAA,CAAK,yBACL,GAAA,CAAK,uBAAA,CACL,OAAA,CAAS,gBAAA,CACT,UAAA,CAAY,mBAAA,CACZ,KAAA,CAAO,qBAAA,CACP,OAAQ,gBAAA,CACR,IAAA,CAAM,oBAAA,CACN,QAAA,CAAU,6BAAA,CACV,MAAA,CAAQ,qCAAA,CACR,OAAA,CAAS,sCACT,OAAA,CAAS,uBAAA,CACT,MAAA,CAAQ,cAAA,CACR,IAAA,CAAM,0BAAA,CACN,KAAA,CAAO,eACT,CAAC,CAAA,CAIM,SAASC,EAAAA,CAAWC,CAAAA,CAAkBC,CAAAA,CAAyC,CACpF,OAAOD,CAAAA,CAAS,OAAA,CAAQ,YAAA,CAAc,CAACrG,CAAAA,CAAOmB,CAAAA,GAAkB,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,KAAKmF,CAAAA,CAAQnF,CAAI,CAAA,CAAI,MAAA,CAAOmF,CAAAA,CAAOnF,CAAI,CAAC,CAAA,CAAInB,CAAM,CACpJ,CAIO,SAASuG,EAAAA,CAA8BC,CAAAA,CAA6BxH,CAAAA,CAAQsH,CAAAA,CAAuBG,CAAAA,CAAAA,GAA2ClG,EAA4B,CAC/K,IAAA,IAAWU,CAAAA,IAAUwF,CAAAA,CAAS,CAC5B,IAAM/B,CAAAA,CAAO,OAAOzD,GAAW,UAAA,CAAcA,CAAAA,CAA2CjC,CAAAA,CAAKsH,CAAAA,CAAQ,GAAG/F,CAAO,CAAA,CAAIU,CAAAA,EAAA,YAAAA,CAAAA,CAASjC,CAAAA,CAAAA,CAC5H,GAAI0F,CAAAA,EAAQ,OAAOA,CAAAA,EAAS,QAAA,CAAU,OAAO,OAAOzD,CAAAA,EAAW,UAAA,CAAayD,CAAAA,CAAO0B,EAAAA,CAAW1B,CAAAA,CAAM4B,CAAM,CAC5G,CACA,OAAOF,EAAAA,CAAWI,CAAAA,CAASxH,CAAG,CAAA,CAAGsH,CAAM,CACzC,CAEO,SAASI,CAAAA,CAAAA,GAAmBD,CAAAA,CAAwD,CACzF,OAAO,CAACzH,CAAAA,CAAKsH,CAAAA,CAAQ1E,CAAAA,GAAU2E,GAAYJ,EAAAA,CAAkBnH,CAAAA,CAAKsH,CAAAA,CAAQG,CAAAA,CAAS7E,CAAK,CAC1F,CC7CO,IAAM+E,EAAgB,CAAC,UAAA,CAAY,QAAQ,CAAA,CACrCC,CAAAA,CAAiB,CAAC,MAAA,CAAQ,OAAA,CAAS,QAAS,QAAA,CAAU,UAAA,CAAY,QAAA,CAAU,cAAA,CAAgB,aAAA,CAAe,UAAA,CAAY,OAAA,CAAS,QAAA,CAAU,OAAQ,MAAA,CAAQ,UAAA,CAAY,UAAU,CAAA,CAEhLC,EAAAA,CAAoB,GAAA,CAC3BC,EAAAA,CAAmB,GAAA,CACnBC,GAAY,GAAA,CACZC,EAAAA,CAAQ,mCAAA,CACRC,EAAAA,CAAU,iDAAA,CACVC,EAAAA,CAAO,mDAAA,CACPC,EAAAA,CAAY,IAAI,MAAA,CAAO,CAAA,CAAA,EAAID,EAAI,CAAA,CAAA,CAAG,CAAA,CAClCE,EAAAA,CAAY,IAAI,MAAA,CAAO,IAAIF,EAAI,CAAA,iGAAA,CAAmG,CAAA,CAClIG,EAAAA,CAAa,IAAI,GAAA,CAAI,CAAC,MAAA,CAAQ,OAAA,CAAS,UAAA,CAAY,UAAA,CAAY,cAAc,CAAC,CAAA,CAC9EC,EAAAA,CAAU,IAAI,IAA0C,CAC5D,CAAC,OAAA,CAAS,CAACN,EAAAA,CAAO,OAAA,CAASF,EAAgB,CAAC,EAC5C,CAAC,MAAA,CAAQ,CAACK,EAAAA,CAAW,MAAA,CAAQN,EAAiB,CAAC,CAAA,CAC/C,CAAC,UAAA,CAAY,CAACO,EAAAA,CAAW,UAAA,CAAYP,EAAiB,CAAC,CACzD,CAAC,EAID,SAASU,EAAAA,CAAe/J,CAAAA,CAAwB,CAC9C,GAAM,CAACgK,CAAAA,CAAMC,CAAAA,CAAOC,CAAG,CAAA,CAAIlK,CAAAA,CAAM,KAAA,CAAM,IAAI,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA,CACvD,OAAOkK,CAAAA,EAAO,IAAI,IAAA,CAAK,IAAI,IAAA,CAAK,CAAC,CAAA,CAAE,cAAA,CAAeF,EAAMC,CAAAA,CAAO,CAAC,CAAC,CAAA,CAAE,UAAA,EACrE,CAEA,IAAME,EAAAA,CAAkB,IAAI,GAAA,CAAI,CAAC,UAAA,CAAY,QAAA,CAAU,QAAA,CAAU,OAAA,CAAS,MAAM,CAAC,CAAA,CAE1E,SAASC,CAAAA,CAAUhG,CAAAA,CAAkBpE,CAAAA,CAAyB,CACnE,OAAO,OAAOA,CAAAA,EAAU,QAAA,EAAY,CAACmK,EAAAA,CAAgB,GAAA,CAAI/F,CAAAA,CAAM,IAAI,CAAA,CAAIpE,EAAM,IAAA,EAAK,CAAIA,CACxF,CAEO,SAASqK,EAAAA,CAAejG,CAAAA,CAAkBmD,CAAAA,CAAyB,CACxE,GAAI,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,EAAKA,CAAAA,CAAM,MAAA,GAAW,CAAA,EAAKnD,EAAM,IAAA,GAAS,aAAA,EAAiBgF,CAAAA,CAAe,QAAA,CAAShF,CAAAA,CAAM,IAAI,CAAA,CAAG,OACvH,IAAMpE,CAAAA,CAAQoK,CAAAA,CAAUhG,CAAAA,CAAOmD,CAAK,CAAA,CACpC,GAAInD,CAAAA,CAAM,IAAA,GAAS,UAAY,OAAOpE,CAAAA,EAAU,QAAA,EAAY,CAACyJ,EAAAA,CAAQ,IAAA,CAAKzJ,CAAK,CAAA,CAAG,OAAOA,CAAAA,CACzF,IAAMsK,CAAAA,CAAS,MAAA,CAAOtK,CAAK,CAAA,CAC3B,OAAO,OAAO,QAAA,CAASsK,CAAM,CAAA,CAAIA,CAAAA,CAAStK,CAC5C,CAEA,IAAMuK,EAAAA,CAAiBnG,GAAsBA,CAAAA,CAAM,WAAA,CAAc,MAAA,CAAYA,CAAAA,CAAM,OAAA,CAEnF,SAASoG,EAAAA,CAASpG,CAAAA,CAAkBpE,EAAyB,CAC3D,IAAMyK,CAAAA,CAAUF,EAAAA,CAAcnG,CAAK,CAAA,CACnC,OAAO,CAACqG,GAAWA,CAAAA,CAAQ,IAAA,CAAMtD,CAAAA,EAAWA,CAAAA,CAAO,KAAA,GAAUnH,CAAK,CACpE,CAEA,SAAS0K,EAAAA,CAAYtG,CAAAA,CAAkBpE,CAAAA,CAAe2K,CAAAA,CAA2B,CAjDjF,IAAAjH,CAAAA,CAAAO,CAAAA,CAAA2G,EAAAC,CAAAA,CAkDE,IAAMlG,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAI0E,EAAAA,CAAAA,CAAmBpF,CAAAA,CAAAA,CAAAP,CAAAA,CAAAU,EAAM,UAAA,GAAN,IAAA,CAAA,MAAA,CAAAV,CAAAA,CAAkB,SAAA,GAAlB,IAAA,CAAAO,CAAAA,CAA+BoF,EAAiB,CAAA,CACxF,OAAIrJ,CAAAA,CAAM,MAAA,EAAU2E,CAAAA,CAAY,IAAA,CAAA,CACzBkG,CAAAA,CAAAA,CAAAD,CAAAA,CAAAxG,CAAAA,CAAM,aAAN,IAAA,CAAA,MAAA,CAAAwG,CAAAA,CAAkB,gBAAA,GAAlB,IAAA,CAAAC,CAAAA,CAAsCF,CAAAA,CAAK,WAAA,CAAa,CAAE,IAAAhG,CAAI,CAAC,CACxE,CAEA,SAASmG,EAAAA,CAAiB1G,CAAAA,CAAkBpE,CAAAA,CAAgB2K,EAA2B,CAvDvF,IAAAjH,CAAAA,CAAAO,CAAAA,CAwDE,OAAK,KAAA,CAAM,OAAA,CAAQjE,CAAK,EACpBA,CAAAA,CAAM,MAAA,EAAA,CAAUiE,CAAAA,CAAAA,CAAAP,CAAAA,CAAA6G,EAAAA,CAAcnG,CAAK,CAAA,GAAnB,IAAA,CAAA,MAAA,CAAAV,EAAsB,MAAA,GAAtB,IAAA,CAAAO,CAAAA,CAAgCsF,EAAAA,CAAAA,CAAmBoB,CAAAA,CAAK,QAAQ,CAAA,CACtE3K,CAAAA,CAAM,MAAO4G,CAAAA,EAAS,OAAOA,CAAAA,EAAS,QAAA,EAAYA,CAAAA,CAAK,MAAA,EAAUyC,EAAAA,EAAqBmB,EAAAA,CAASpG,EAAOwC,CAAI,CAAC,CAAA,CAC1G,IAAA,CAAO+D,CAAAA,CAAK,QAAQ,CAAA,CAHDA,CAAAA,CAAK,SAAS,CAIlD,CAEA,SAASI,EAAAA,CAAY3G,CAAAA,CAAkBpE,CAAAA,CAAgBwB,CAAAA,CAAiBmJ,EAA2B,CACjG,OAAO,OAAO3K,CAAAA,EAAU,QAAA,CAAW0K,EAAAA,CAAYtG,CAAAA,CAAOpE,CAAAA,CAAO2K,CAAI,CAAA,CAAIA,CAAAA,CAAKnJ,CAAG,CAC/E,CAEA,SAASwJ,EAAAA,CAAY5G,CAAAA,CAAkBpE,EAAgB,CAACwH,CAAAA,CAAQhG,CAAAA,CAAKmD,CAAG,CAAA,CAAiCgG,CAAAA,CAA2B,CAlEpI,IAAAjH,EAmEE,OAAI,OAAO1D,CAAAA,EAAU,QAAA,CAAiB2K,CAAAA,CAAKnJ,CAAG,CAAA,CAAA,CACvCkC,CAAAA,CAAAgH,GAAYtG,CAAAA,CAAOpE,CAAAA,CAAO2K,CAAI,CAAA,GAA9B,IAAA,CAAAjH,CAAAA,CAAoC1D,CAAAA,CAAM,MAAA,EAAU2E,GAAO6C,CAAAA,CAAO,IAAA,CAAKxH,CAAK,CAAA,GAAMwH,CAAAA,GAAWgC,EAAAA,EAASO,EAAAA,CAAe/J,CAAK,GAAK,IAAA,CAAO2K,CAAAA,CAAKnJ,CAAG,CACvJ,CAEA,SAASyJ,EAAAA,CAAe7G,CAAAA,CAAkBpE,CAAAA,CAAgB2K,CAAAA,CAA2B,CACnF,OAAI,OAAO3K,CAAAA,EAAU,SAAA,EAAc,OAAOA,GAAU,QAAA,EAAY,MAAA,CAAO,QAAA,CAASA,CAAK,CAAA,CAAW,IAAA,CACzF+K,EAAAA,CAAY3G,CAAAA,CAAOpE,EAAO,OAAA,CAAS2K,CAAI,CAChD,CAEA,SAAS5K,EAAAA,CAAQqE,CAAAA,CAAkBpE,CAAAA,CAAyB,CAC1D,OAAOA,CAAAA,EAAS,IAAA,EAAQA,CAAAA,GAAU,EAAA,EAAOoE,CAAAA,CAAM,IAAA,GAAS,aAAA,EAAiB,MAAM,OAAA,CAAQpE,CAAK,CAAA,EAAK,CAACA,CAAAA,CAAM,MAC1G,CAEO,SAASkL,GAAU9G,CAAAA,CAAkBpE,CAAAA,CAAgBmL,CAAAA,CAA0BjC,CAAAA,EAAgB,CAAkB,CAhFxH,IAAAxF,CAAAA,CAiFE,GAAI3D,EAAAA,CAAQqE,CAAAA,CAAOpE,CAAK,CAAA,CAAG,OAAO,IAAA,CAClC,IAAM2K,CAAAA,CAAa,CAACnJ,CAAAA,CAAKsH,CAAAA,CAAS,EAAC,GAAMqC,CAAAA,CAAQ3J,CAAAA,CAAKsH,CAAAA,CAAQ1E,CAAK,CAAA,CACnE,GAAI+E,CAAAA,CAAc,QAAA,CAAS/E,CAAAA,CAAM,IAAI,CAAA,CAAG,OAAO,OAAOpE,CAAAA,EAAU,SAAA,CAAY,IAAA,CAAO2K,CAAAA,CAAK,SAAS,CAAA,CACjG,GAAIvG,CAAAA,CAAM,OAAS,QAAA,CAAU,OAAO,OAAOpE,CAAAA,EAAU,QAAA,EAAY,MAAA,CAAO,QAAA,CAASA,CAAK,EAAI,IAAA,CAAO2K,CAAAA,CAAK,QAAQ,CAAA,CAC9G,GAAIvG,CAAAA,CAAM,IAAA,GAAS,aAAA,CAAe,OAAO0G,EAAAA,CAAiB1G,CAAAA,CAAOpE,CAAAA,CAAO2K,CAAI,CAAA,CAC5E,GAAIvG,CAAAA,CAAM,IAAA,GAAS,OAAQ,OAAO2G,EAAAA,CAAY3G,CAAAA,CAAOpE,CAAAA,CAAO,MAAA,CAAQ2K,CAAI,CAAA,CACxE,IAAMnD,EAASsC,EAAAA,CAAQ,GAAA,CAAI1F,CAAAA,CAAM,IAAI,CAAA,CACrC,OAAIoD,CAAAA,CAAewD,EAAAA,CAAY5G,EAAOpE,CAAAA,CAAOwH,CAAAA,CAAQmD,CAAI,CAAA,CACrDvG,CAAAA,CAAM,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,OAAA,CAAA,CAAgBV,CAAAA,CAAAqH,EAAAA,CAAY3G,CAAAA,CAAOpE,CAAAA,CAAO,QAAA,CAAU2K,CAAI,IAAxC,IAAA,CAAAjH,CAAAA,CAA8C8G,EAAAA,CAASpG,CAAAA,CAAOpE,CAAK,CAAA,CAAI,IAAA,CAAO2K,CAAAA,CAAK,QAAQ,CAAA,CAClJd,EAAAA,CAAW,GAAA,CAAIzF,CAAAA,CAAM,IAAI,CAAA,CAAI2G,EAAAA,CAAY3G,CAAAA,CAAOpE,EAAO,QAAA,CAAU2K,CAAI,CAAA,CAAIM,EAAAA,CAAe7G,CAAAA,CAAOpE,CAAAA,CAAO2K,CAAI,CACnH,CAaO,SAASS,EAAAA,CAAgBhH,CAAAA,CAAkBpE,CAAAA,CAAgBmL,CAAAA,CAAyC,CACzG,OAAI/G,CAAAA,CAAM,OAAS,MAAA,EAAU,CAACgF,CAAAA,CAAe,QAAA,CAAShF,CAAAA,CAAM,IAAI,CAAA,CAAU,IAAA,CACnE8G,GAAU9G,CAAAA,CAAOpE,CAAAA,CAAOmL,CAAO,CACxC,CCpGA,IAAME,EAAAA,CAAiB,CAAC,KAAM,OAAO,CAAA,CAC/BC,EAAAA,CAAc,CAAC,IAAA,CAAM,KAAA,CAAO,IAAA,CAAM,KAAK,CAAA,CACvCC,EAAAA,CAAe,CAAC,MAAA,CAAQ,OAAA,CAAS,OAAA,CAAS,UAAA,CAAY,UAAA,CAAY,OAAQ,UAAA,CAAY,QAAA,CAAU,OAAA,CAAS,cAAc,CAAA,CAE7H,SAASC,EAAAA,CAAapH,CAAAA,CAAsC,CAC1D,OAAIA,CAAAA,CAAM,IAAA,GAAS,QAAA,CAAiB,QAAA,CAChC+E,CAAAA,CAAc,QAAA,CAAS/E,CAAAA,CAAM,IAAI,CAAA,CAAU,SAAA,CACxCmH,EAAAA,CAAa,QAAA,CAASnH,CAAAA,CAAM,IAAI,CAAA,CAAI,QAAA,CAAW,MACxD,CAEA,SAASqH,EAAAA,CAAWvI,CAAAA,CAAmBwI,CAAAA,CAAkBtL,CAAAA,CAAkBa,CAAAA,CAAiC,CAjB5G,IAAAyC,CAAAA,CAkBE,IAAMiI,CAAAA,CAAW,CAACzK,CAAAA,CAAiBC,CAAAA,GAAiB,CAACG,CAAAA,CAAQ,2BAA4BL,CAAAA,CAAMC,CAAAA,CAASC,CAAI,CAAC,CAAA,CAC7G,GAAIuK,CAAAA,GAAa,UAAA,CAAY,OAAO,EAAC,CACrC,GAAIJ,EAAAA,CAAY,QAAA,CAASI,CAAQ,CAAA,CAC/B,OAAIxI,CAAAA,CAAO,IAAA,GAAS,aAAA,EAAiB,CAACiG,CAAAA,CAAc,QAAA,CAASjG,CAAAA,CAAO,IAAI,EAAU,EAAC,CAC5EyI,CAAAA,CAAS,CAAA,CAAA,EAAIzI,CAAAA,CAAO,GAAG,CAAA,OAAA,EAAUA,CAAAA,CAAO,IAAI,CAAA,YAAA,EAAewI,CAAQ,CAAA,kBAAA,CAAA,CAAsB,+CAA+C,CAAA,CAEjJ,GAAIxI,CAAAA,CAAO,IAAA,GAAS,cAAe,CACjC,IAAM0I,CAAAA,CAASF,CAAAA,GAAa,KAAA,EAASA,CAAAA,GAAa,OAAA,CAAU,QAAA,CAAW,OAAA,CACvE,OAAOC,CAAAA,CAAS,CAAA,CAAA,EAAIzI,CAAAA,CAAO,GAAG,CAAA,8BAAA,EAAiCwI,CAAQ,KAAKE,CAAM,CAAA,WAAA,CAAA,CAAe,0CAA0C,CAC7I,CACA,IAAMC,CAAAA,CAAWR,EAAAA,CAAe,SAASK,CAAQ,CAAA,EAAK,KAAA,CAAM,OAAA,CAAQtL,CAAO,CAAA,CAAIA,CAAAA,CAAU,CAACA,CAAO,CAAA,CAC3F0L,CAAAA,CAAWN,EAAAA,CAAatI,CAAM,CAAA,CAC9B6I,CAAAA,CAAQD,CAAAA,EAAYD,CAAAA,CAAS,IAAA,CAAMjF,CAAAA,EAAS,OAAOA,CAAAA,GAASkF,CAAQ,CAAA,CAC1E,GAAIA,CAAAA,EAAYC,IAAU,MAAA,CAAW,OAAOJ,CAAAA,CAAS,CAAA,EAAG,IAAA,CAAK,SAAA,CAAUI,CAAK,CAAC,SAAS,OAAOA,CAAK,CAAA,OAAA,EAAU7I,CAAAA,CAAO,GAAG,CAAA,UAAA,EAAa4I,CAAQ,CAAA,CAAA,CAAI,SAASA,CAAQ,CAAA,MAAA,CAAQ,CAAA,CACxK,IAAMrB,CAAAA,CAAUqB,CAAAA,GAAa,QAAA,EAAY,CAAC5I,EAAO,WAAA,GAAA,CAAeQ,CAAAA,CAAAR,CAAAA,CAAO,OAAA,GAAP,IAAA,EAAAQ,CAAAA,CAAgB,MAAA,CAAA,CAASR,CAAAA,CAAO,QAAQ,GAAA,CAAKiE,CAAAA,EAAWA,CAAAA,CAAO,KAAK,CAAA,CAAI,IAAA,CAClI6E,CAAAA,CAAUvB,CAAAA,EAAWoB,EAAS,IAAA,CAAMjF,CAAAA,EAAS,CAAC6D,CAAAA,CAAQ,QAAA,CAAS7D,CAAc,CAAC,CAAA,CACpF,OAAO6D,CAAAA,EAAWuB,CAAAA,GAAY,MAAA,CAAYL,CAAAA,CAAS,CAAA,EAAG,IAAA,CAAK,SAAA,CAAUK,CAAO,CAAC,CAAA,sBAAA,EAAyB9I,CAAAA,CAAO,GAAG,CAAA,CAAA,CAAA,CAAKxB,CAAAA,CAAM+I,CAAO,CAAC,EAAI,EACzI,CAEA,SAASwB,EAAAA,CAAkBlJ,CAAAA,CAAuBO,CAAAA,CAA0C,CAC1F,GAAM,CAAE,SAAA,CAAA/C,CAAAA,CAAW,IAAA,CAAAU,CAAK,CAAA,CAAIqC,CAAAA,CAC5B,GAAID,GAAgBN,CAAAA,CAASO,CAAK,CAAA,CAAE,MAAA,CAAQ,OAAO,EAAC,CACpD,IAAMoI,EAAWjJ,CAAAA,CAAU,IAAA,CAAMjB,CAAAA,EAAQA,CAAAA,IAAOjB,CAAS,CAAA,CACzD,OAAOkL,EAAAA,CAAW1I,EAAQ,IAAA,CAAK,GAAA,CAAIxC,CAAAA,CAAU,KAAK,CAAA,CAAG,KAAA,CAAOmL,CAAAA,CAAUnL,CAAAA,CAAUmL,CAAkC,CAAA,CAAG,CAAA,EAAGzK,CAAI,CAAA,CAAA,EAAIyK,CAAQ,CAAA,CAAE,CAC5I,CAEA,SAASQ,EAAAA,CAAa,CAAE,KAAA,CAAA9H,CAAAA,CAAO,IAAA,CAAAnD,CAAK,CAAA,CAAkC,CACpE,GAAI,CAAC,CAAC,QAAA,CAAU,OAAA,CAAS,aAAa,CAAA,CAAE,QAAA,CAASmD,EAAM,IAAI,CAAA,CAAG,OAAO,EAAC,CACtE,GAAI,CAAC,KAAA,CAAM,QAAQA,CAAAA,CAAM,OAAO,CAAA,CAC9B,OAAOA,CAAAA,CAAM,WAAA,CAAc,EAAC,CAAI,CAAC9C,CAAAA,CAAQ,iBAAA,CAAmB,CAAA,EAAGL,CAAI,CAAA,QAAA,CAAA,CAAY,CAAA,IAAA,EAAOmD,CAAAA,CAAM,IAAI,WAAWA,CAAAA,CAAM,GAAG,CAAA,gBAAA,CAAA,CAAoB,gCAAgC,CAAC,CAAA,CAE3K,IAAM5D,CAAAA,CAAS4D,EAAM,OAAA,CAAQ,GAAA,CAAK+C,CAAAA,EAAWA,CAAAA,CAAO,KAAK,CAAA,CACnD6B,CAAAA,CAAW5E,CAAAA,CAAM,OAAS,aAAA,EAAiB,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAM,YAAY,CAAA,CAAIA,CAAAA,CAAM,YAAA,CAAe,CAACA,CAAAA,CAAM,YAAY,CAAA,CACvH4H,CAAAA,CAAU5H,CAAAA,CAAM,YAAA,GAAiB,MAAA,EAAa,CAAC5D,CAAAA,CAAO,MAAA,EAAU4D,CAAAA,CAAM,WAAA,CAAc,MAAA,CAAY4E,CAAAA,CAAS,IAAA,CAAMhJ,CAAAA,EAAU,CAACQ,CAAAA,CAAO,QAAA,CAASR,CAAe,CAAC,CAAA,CAChK,OAAIgM,CAAAA,GAAY,MAAA,CAAkB,EAAC,CAC5B,CAAC1K,CAAAA,CAAQ,wBAAA,CAA0B,CAAA,EAAGL,CAAI,CAAA,aAAA,CAAA,CAAiB,CAAA,EAAG,KAAK,SAAA,CAAU+K,CAAO,CAAC,CAAA,sBAAA,EAAyB5H,CAAAA,CAAM,GAAG,CAAA,CAAA,CAAA,CAAK1C,CAAAA,CAAMlB,CAAM,CAAC,CAAC,CACnJ,CAEA,SAAS2L,EAAAA,CAAapJ,CAAAA,CAAuB,CAAE,MAAAqB,CAAAA,CAAO,IAAA,CAAAnD,CAAK,CAAA,CAAkC,CAxD7F,IAAAyC,CAAAA,CAyDE,IAAMe,GAAQf,CAAAA,CAAAU,CAAAA,CAAM,UAAA,GAAN,IAAA,CAAAV,CAAAA,CAAoB,EAAC,CAC7B0I,CAAAA,CAAO,CAACzI,CAAAA,CAAczC,CAAAA,CAAiBC,CAAAA,GAAiBG,CAAAA,CAAQ,qBAAA,CAAuB,CAAA,EAAGL,CAAI,CAAA,YAAA,EAAe0C,CAAI,CAAA,CAAA,CAAIzC,CAAAA,CAASC,CAAI,CAAA,CAClIqE,CAAAA,CAAQ4D,CAAAA,CAAe,QAAA,CAAShF,EAAM,IAAI,CAAA,CAC1CiI,CAAAA,CAAUjI,CAAAA,CAAM,IAAA,GAAS,QAAA,CACzBkI,CAAAA,CAAS9G,CAAAA,EAAS,CAAC6G,CAAAA,CAAW,CAAC,KAAA,CAAO,KAAK,CAAA,CAAY,MAAA,CAAQ1I,CAAAA,EAASc,CAAAA,CAAMd,CAAI,CAAA,GAAM,MAAS,CAAA,CAAI,EAAC,CACtG4I,CAAAA,CAAQ/G,CAAAA,EAAS,CAAC,SAAU,UAAA,CAAY,QAAQ,CAAA,CAAE,QAAA,CAASpB,CAAAA,CAAM,IAAI,CAAA,CAAK,CAAC,YAAa,WAAW,CAAA,CAAY,MAAA,CAAQT,CAAAA,EAASc,CAAAA,CAAMd,CAAI,CAAA,GAAM,MAAS,EAAI,EAAC,CAC9J/C,CAAAA,CAAS,CACb,GAAG0L,CAAAA,CAAO,GAAA,CAAK3I,CAAAA,EAASyI,EAAKzI,CAAAA,CAAM,CAAA,CAAA,EAAIA,CAAI,CAAA,+BAAA,CAAA,CAAmC,CAAA,IAAA,EAAOA,CAAI,CAAA,2BAAA,CAA6B,CAAC,CAAA,CACvH,GAAG4I,CAAAA,CAAM,GAAA,CAAK5I,CAAAA,EAASyI,CAAAA,CAAKzI,CAAAA,CAAM,CAAA,CAAA,EAAIA,CAAI,CAAA,oBAAA,EAAuBS,CAAAA,CAAM,IAAI,CAAA,OAAA,CAAA,CAAWiI,CAAAA,CAAU,6BAAA,CAAgC,CAAA,OAAA,EAAU1I,CAAI,EAAE,CAAC,CACnJ,CAAA,CACM,CAAE,UAAA,CAAAK,CAAW,CAAA,CAAIjB,CAAAA,CACvB,OAAI0B,CAAAA,CAAM,SAAA,GAAc,MAAA,EAAaT,CAAAA,EAAc,CAAC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,KAAKA,CAAAA,CAAYS,CAAAA,CAAM,SAAS,CAAA,EAClH7D,CAAAA,CAAO,IAAA,CAAKU,CAAAA,CAAQ,mBAAA,CAAqB,GAAGL,CAAI,CAAA,qBAAA,CAAA,CAAyB,CAAA,eAAA,EAAkBwD,CAAAA,CAAM,SAAS,CAAA,mBAAA,CAAA,CAAuB,oCAAoC,CAAC,EAEjK7D,CACT,CAEA,SAAS4L,EAAAA,CAAczJ,CAAAA,CAAuBO,CAAAA,CAAsC,CA1EpF,IAAAI,EA2EE,GAAM,CAAE,KAAA,CAAAU,CAAAA,CAAO,IAAA,CAAAnD,CAAK,CAAA,CAAIqC,CAAAA,CAClBd,CAAAA,CAAQ4G,CAAAA,CAAe,QAAA,CAAShF,CAAAA,CAAM,IAAI,CAAA,CAAI,MAAA,CAAYjC,EAAAA,CAAQiC,EAAM,IAAA,CAAMgF,CAAc,CAAA,CAClG,OAAO,CACL,GAAI5G,CAAAA,GAAU,MAAA,CAAY,EAAC,CAAI,CAAClB,CAAAA,CAAQ,oBAAA,CAAsB,CAAA,EAAGL,CAAI,CAAA,KAAA,CAAA,CAAS,CAAA,CAAA,EAAImD,EAAM,IAAI,CAAA,8BAAA,CAAA,CAAkC,CAAA,KAAA,EAAQ5B,CAAK,CAAA,gCAAA,EAAmC4B,CAAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAC,CAAA,CAC5L,GAAG8H,EAAAA,CAAa5I,CAAK,CAAA,CACrB,GAAG6I,EAAAA,CAAapJ,CAAAA,CAASO,CAAK,CAAA,CAC9B,GAAA,CAAA,CAAII,CAAAA,CAAAU,CAAAA,CAAM,gBAAA,GAAN,IAAA,CAAAV,CAAAA,CAA0B,IAAI,OAAA,CAAQ,CAAClC,CAAAA,CAAKO,CAAAA,GAC9CgB,CAAAA,CAAQ,IAAA,CAAK,GAAA,CAAIvB,CAAG,EAAI,EAAC,CAAI,CAACF,CAAAA,CAAQ,eAAA,CAAiB,CAAA,EAAGL,CAAI,CAAA,kBAAA,EAAqBc,CAAK,CAAA,CAAA,CAAI,CAAA,CAAA,EAAIP,CAAG,CAAA,oBAAA,CAAA,CAAwBe,CAAAA,CAAQf,CAAAA,CAAKuB,CAAAA,CAAQ,OAAO,CAAC,CAAC,CAC1J,CACH,CACF,CAEA,SAAS0J,EAAAA,CAAc,CAAE,UAAA,CAAA1I,CAAW,CAAA,CAAoC,CAvFxE,IAAAL,CAAAA,CAwFE,IAAMQ,CAAAA,CAAAA,CAAQR,EAAAK,CAAAA,CAAW,KAAA,GAAX,IAAA,CAAAL,CAAAA,CAAoB,EAAC,CACnC,OAAOQ,CAAAA,CAAM,QAAQ,CAACjB,CAAAA,CAAMlB,CAAAA,GAAU,CAzFxC,IAAA2B,CAAAA,CAAAO,CAAAA,CAAA2G,CAAAA,CA0FI,IAAMhK,CAAAA,CAA4B,EAAC,CAC7B8L,CAAAA,CAAU,IAAI,GAAA,CAAA,CAAA,CAAKhJ,CAAAA,CAAAT,CAAAA,CAAK,SAAL,IAAA,CAAAS,CAAAA,CAAe,EAAC,EAAG,GAAA,CAAKa,CAAAA,EAAUA,CAAAA,CAAM,EAAE,EAAE,MAAA,CAAQoI,CAAAA,EAAOA,CAAAA,GAAO,IAAI,CAAC,CAAA,CAChG,IAAA,IAAWzJ,CAAAA,IAAUwJ,CAAAA,CAAS,CAC5B,IAAMrI,CAAAA,CAAWH,CAAAA,CAAM,SAAA,CAAW5B,CAAAA,EAAcA,CAAAA,CAAU,KAAOY,CAAM,CAAA,CACjE0J,CAAAA,CAAU1I,CAAAA,CAAMG,CAAAA,CAAW,CAAC,CAAA,CAC5BwI,CAAAA,CAAAA,CAAQjC,GAAA3G,CAAAA,CAAAC,CAAAA,CAAMG,CAAQ,CAAA,GAAd,IAAA,CAAA,MAAA,CAAAJ,CAAAA,CAAiB,MAAA,GAAjB,IAAA,CAAA,MAAA,CAAA2G,EAAyB,IAAA,CAAMrG,CAAAA,EAAO,CA/F1D,IAAAb,CAAAA,CAAAO,CAAAA,CA+F6D,OAAA,EAAA,CAACP,CAAAA,CAAAa,EAAM,IAAA,GAAN,IAAA,EAAAb,CAAAA,CAAY,MAAA,CAAA,EAAU,EAAA,CAACO,CAAAA,CAAAM,CAAAA,CAAM,OAAA,GAAN,MAAAN,CAAAA,CAAe,MAAA,CAAA,CAAA,CAAA,CAC1F,CAAC2I,CAAAA,EAAW,CAACF,CAAAA,CAAQ,GAAA,CAAIE,CAAAA,CAAQ,EAAE,CAAA,EAAKC,CAAAA,EAC5CjM,CAAAA,CAAO,IAAA,CAAKU,CAAAA,CAAQ,mBAAA,CAAqB,CAAA,OAAA,EAAU+C,CAAQ,GAAI,CAAA,QAAA,EAAWnB,CAAM,CAAA,QAAA,EAAWD,CAAAA,CAAK,EAAE,CAAA,qCAAA,EAAwC2J,CAAAA,CAAQ,EAAE,CAAA,CAAA,CAAA,CAAK,CAAA,+BAAA,EAAkC1J,CAAM,CAAA,qCAAA,CAAuC,CAAC,EAC3O,CACA,OAAID,EAAK,IAAA,GAASA,CAAAA,CAAK,IAAA,GAAS,KAAA,EAAS,CAACiB,CAAAA,CAAM,CAAC,CAAA,CAAA,EAC/CtD,EAAO,IAAA,CAAKU,CAAAA,CAAQ,kBAAA,CAAoB,CAAA,OAAA,EAAUS,CAAK,CAAA,KAAA,CAAA,CAAS,CAAA,MAAA,EAASkB,CAAAA,CAAK,EAAE,CAAA,iDAAA,CAAA,CAAqD,wCAAwC,CAAC,CAAA,CAEzKrC,CACT,CAAC,CACH,CAEO,SAASkM,EAAAA,CAAmB/J,CAAAA,CAA0C,CAC3E,OAAO,CACL,GAAI,OAAOA,CAAAA,CAAQ,WAAW,KAAA,EAAU,QAAA,CAAW,EAAC,CAAI,CAACzB,CAAAA,CAAQ,kBAAA,CAAoB,QAAA,CAAU,2BAA4B,qCAAqC,CAAC,CAAA,CACjK,GAAGyB,CAAAA,CAAQ,UAAA,CAAW,OAAA,CAASO,CAAAA,EAAU2I,GAAkBlJ,CAAAA,CAASO,CAAK,CAAC,CAAA,CAC1E,GAAGP,CAAAA,CAAQ,OAAA,CAAQ,OAAA,CAASO,CAAAA,EAAUkJ,EAAAA,CAAczJ,CAAAA,CAASO,CAAK,CAAC,CAAA,CACnE,GAAGmJ,EAAAA,CAAc1J,CAAO,CAC1B,CACF,CC7FA,SAASnC,EAAAA,CAAO2G,CAAAA,CAAgB,CAAE,UAAA,CAAAvD,EAAY,OAAA,CAAAzB,CAAAA,CAAS,QAAA,CAAAwK,CAAS,CAAA,CAAY,EAAC,CAAsB,CACjG,IAAMC,CAAAA,CAAQ1F,EAAAA,CAAYC,CAAK,CAAA,CAC/B,GAAIyF,CAAAA,CAAM,MAAA,CAAQ,OAAOA,EACzB,IAAMjK,CAAAA,CAAUe,EAAAA,CAAcyD,CAAAA,CAAyBvD,CAAAA,CAAYzB,CAAO,CAAA,CAC1E,OAAO,CACL,GAAGkF,EAAAA,CAAWF,CAAgC,CAAA,CAC9C,GAAGmB,EAAAA,CAAgB3F,CAAO,CAAA,CAC1B,GAAGQ,EAAAA,CAAgBR,CAAO,CAAA,CAC1B,GAAGmC,EAAAA,CAAYnC,CAAO,CAAA,CACtB,GAAGsD,GAAYtD,CAAO,CAAA,CACtB,GAAIgK,CAAAA,CAAWA,CAAAA,CAAShK,CAAO,CAAA,CAAI,EACrC,CACF,CAEO,SAASkK,EAAAA,CAAiB1F,CAAAA,CAAmC,CAClE,OAAO3G,GAAO2G,CAAK,CACrB,CAEO,SAAS2F,EAAAA,CAAgB3F,CAAAA,CAAgBkD,CAAAA,CAAkC,GAAuB,CACvG,OAAO7J,EAAAA,CAAO2G,CAAAA,CAAO,CAAE,UAAA,CAAYkD,CAAAA,CAAQ,UAAA,CAAY,QAAAlI,CAAAA,CAAS,QAAA,CAAUuK,EAAmB,CAAC,CAChG,CAEO,SAASK,EAAAA,CAAgB5F,EAAgBkD,CAAAA,CAAkD,CAChG,IAAM2C,CAAAA,CAASxM,EAAAA,CAAO2G,CAAAA,CAAO,CAAE,OAAA,CAAAhF,CAAQ,CAAC,CAAA,CACxC,GAAI6K,CAAAA,CAAO,MAAA,CAAQ,MAAM,IAAIzM,CAAAA,CAAoByM,CAAM,CAAA,CACvD,OAAO7F,CACT,CC5CO,SAAS8F,EAAAA,CAAgB5J,CAAAA,CAAuD,CAFvF,IAAAC,CAAAA,CAAAO,CAAAA,CAGE,OAAO,CAAC,GAAA,CAAIP,CAAAA,CAAAD,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAAC,CAAAA,CAAe,EAAC,CAAI,GAAA,CAAIO,CAAAA,CAAAR,CAAAA,CAAO,OAAA,GAAP,KAAAQ,CAAAA,CAAkB,EAAG,CAAA,CAAE,GAAA,CAAK1D,CAAAA,EAAcA,CAAAA,CAAU,KAAK,CAC/F,CAEO,SAAS+M,EAAAA,CAAavJ,CAAAA,CAAyC,CANtE,IAAAL,CAAAA,CAAAO,CAAAA,CAOE,QAAOP,CAAAA,CAAAK,CAAAA,CAAW,KAAA,GAAX,IAAA,EAAAL,CAAAA,CAAkB,MAAA,CAASK,CAAAA,CAAW,KAAA,CAAM,QAASd,CAAAA,EAASA,CAAAA,CAAK,MAAM,CAAA,CAAA,CAAIgB,CAAAA,CAAAF,CAAAA,CAAW,MAAA,GAAX,IAAA,CAAAE,EAAqB,EAC3G,CAEO,SAASsJ,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACyB,CACzB,IAAMjN,CAAAA,CAAkC,EAAC,CACzC,IAAA,IAAW4D,CAAAA,IAASoJ,CAAAA,CACdpJ,CAAAA,CAAM,YAAA,GAAiB,SAAW5D,CAAAA,CAAO4D,CAAAA,CAAM,GAAG,CAAA,CAAIA,CAAAA,CAAM,YAAA,CAAA,CAElE,IAAMX,CAAAA,CAASgK,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAiB,EAAC,CACjC,IAAA,IAAWjM,CAAAA,IAAO,MAAA,CAAO,KAAKiC,CAAM,CAAA,CAC9BjC,CAAAA,GAAQ,WAAA,GAAahB,CAAAA,CAAOgB,CAAG,CAAA,CAAIiC,CAAAA,CAAOjC,CAAG,CAAA,CAAA,CAEnD,OAAOhB,CACT,CAEO,SAASkN,CAAAA,CACdC,CAAAA,CACA1L,CAAAA,CACa,CACb,IAAMU,CAAAA,CAAO,IAAI,GAAA,CAAI,CAAC,GAAG,MAAA,CAAO,IAAA,CAAKgL,CAAQ,CAAA,CAAG,GAAG,MAAA,CAAO,IAAA,CAAK1L,CAAI,CAAC,CAAC,CAAA,CACrE,OAAO,IAAI,GAAA,CAAI,CAAC,GAAGU,CAAI,CAAA,CAAE,MAAA,CAAQnB,CAAAA,EAAQ,CAAC,MAAA,CAAO,EAAA,CAAGmM,CAAAA,CAASnM,CAAG,CAAA,CAAGS,CAAAA,CAAKT,CAAG,CAAC,CAAC,CAAC,CAChF,CC/BO,IAAMoM,EAAAA,CAAN,cAAiC,KAAM,CAI5C,WAAA,CAAqBC,CAAAA,CAA0CC,CAAAA,CAAgB,CAC7E,KAAA,CAAM,CAAA,0BAAA,EAA6BD,CAAK,CAAA,SAAA,EAAYC,aAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,MAAA,CAAOA,CAAK,CAAC,CAAA,CAAE,CAAA,CADzF,WAAAD,CAAAA,CAHrB,IAAA,CAAS,SAAA,CAAY,IAAA,CAKnB,IAAA,CAAK,IAAA,CAAO,oBAAA,CACZ,IAAA,CAAK,MAAQC,EACf,CACF,CAAA,CAEA,eAAsBC,EAAAA,CAAYF,CAAAA,CAA0CG,CAAAA,CAAqD,CAC/H,GAAI,CAAE,MAAMA,CAAAA,GAAY,CAAA,MACjB3M,CAAAA,CAAO,CAAE,MAAM,IAAIuM,EAAAA,CAAmBC,CAAAA,CAAOxM,CAAK,CAAG,CAC9D,CCXA,SAAS4M,EAAAA,CAAWC,EAAiC,CACnD,OAAOA,CAAAA,CAAO,YAAA,CAAa,GAAA,CAAKjL,CAAAA,EAASA,CAAAA,CAAK,EAAE,EAAE,IAAA,CAAK;AAAA,CAAI,CAC7D,CAEO,SAASkL,EAAAA,CAAmBD,EAAyBE,CAAAA,CAAiD,CAC3G,IAAMnN,CAAAA,CAAOgN,EAAAA,CAAWC,CAAM,CAAA,CACxBnG,CAAAA,CAAO,OAAO,IAAA,CAAKqG,CAAO,CAAA,CAAE,MAAA,CAAQ5M,CAAAA,EAAQ4M,CAAAA,CAAQ5M,CAAG,CAAA,GAAM,MAAS,CAAA,CAAE,GAAA,CAAKA,CAAAA,EAAQ,CAACA,EAAK0M,CAAAA,CAAO,MAAA,CAAO1M,CAAG,CAAC,CAAU,CAAA,CAC7H,OAAO,IAAMyM,EAAAA,CAAWC,CAAM,CAAA,GAAMjN,CAAAA,EAAQ8G,CAAAA,CAAK,KAAK,CAAC,CAACvG,CAAAA,CAAKxB,CAAK,CAAA,GAAM,CAAC,MAAA,CAAO,EAAA,CAAGkO,EAAO,MAAA,CAAO1M,CAAG,CAAA,CAAGxB,CAAK,CAAC,CAC/G,CAEO,SAASqO,GAAYH,CAAAA,CAAyB1N,CAAAA,CAAoD,CACvG,IAAMuH,EAAO3G,CAAAA,CAAA,EAAA,CAAKZ,CAAAA,CAAAA,CAClB,OAAO,IAAMkN,CAAAA,CAAe3F,CAAAA,CAAMmG,CAAAA,CAAO,MAAM,CACjD,CCbO,SAASI,CAAAA,CACdlK,EACA5D,CAAAA,CACS,CANX,IAAAkD,CAAAA,CAAAO,CAAAA,CAOE,IAAMsK,CAAAA,CAAWhO,CAAAA,EAA6BD,GAAkBC,CAAAA,CAAWC,CAAM,CAAA,CACjF,OAAA,CAAA,CAAQkD,CAAAA,CAAAU,CAAAA,CAAM,IAAA,GAAN,IAAA,CAAAV,EAAc,EAAC,EAAG,KAAA,CAAM6K,CAAO,IAAM,EAAA,CAACtK,CAAAA,CAAAG,CAAAA,CAAM,OAAA,GAAN,MAAAH,CAAAA,CAAe,MAAA,CAAA,EAAUG,CAAAA,CAAM,OAAA,CAAQ,IAAA,CAAKmK,CAAO,CAAA,CACnG,CCEA,SAASC,EAAAA,CAAQxO,CAAAA,CAAgBoE,CAAAA,CAA2B,CAC1D,OAAOrE,CAAAA,CAAQC,CAAK,CAAA,EAAMA,IAAU,KAAA,EAASmJ,CAAAA,CAAc,QAAA,CAAS/E,CAAAA,CAAM,IAAI,CAChF,CAEA,SAASqK,GACPC,CAAAA,CACAtC,CAAAA,CACA3H,CAAAA,CACAkK,CAAAA,CACoB,CApBtB,IAAAjL,CAAAA,CAAAO,CAAAA,CAqBE,IAAMS,EAAMD,CAAAA,CAAM,CAAA,GAAA,EAAM2H,CAAI,CAAA,CAAE,CAAA,CACxBzH,CAAAA,CAAMF,CAAAA,CAAM,CAAA,GAAA,EAAM2H,CAAI,CAAA,CAAE,CAAA,CAC9B,GAAI1H,CAAAA,GAAQ,MAAA,EAAagK,CAAAA,CAAOhK,CAAAA,CAAK,OAAA,CAAOhB,EAAAe,CAAAA,CAAM,CAAA,GAAA,EAAM2H,CAAI,CAAA,OAAA,CAAS,CAAA,GAAzB,IAAA,CAAA1I,CAAAA,CAA8BiL,CAAAA,CAAQ,MAAO,CAAE,GAAA,CAAAjK,CAAI,CAAC,EAChG,GAAIC,CAAAA,GAAQ,MAAA,EAAa+J,CAAAA,CAAO/J,EAAK,OAAA,CAAOV,CAAAA,CAAAQ,CAAAA,CAAM,CAAA,GAAA,EAAM2H,CAAI,CAAA,OAAA,CAAS,CAAA,GAAzB,IAAA,CAAAnI,EAA8B0K,CAAAA,CAAQ,KAAA,CAAO,CAAE,GAAA,CAAAhK,CAAI,CAAC,CAElG,CAEA,SAASiK,EAAAA,CAAa5O,CAAAA,CAAgByE,CAAAA,CAAwBkK,CAAAA,CAA2C,CA5BzG,IAAAjL,CAAAA,CA6BE,GAAIe,EAAM,OAAA,GAAY,MAAA,CACtB,GAAI,CACF,OAAO,IAAI,MAAA,CAAOA,CAAAA,CAAM,OAAO,EAAE,IAAA,CAAK,MAAA,CAAOzE,CAAK,CAAC,CAAA,CAAI,KAAA,CAAA,CAAA,CAAY0D,CAAAA,CAAAe,CAAAA,CAAM,iBAAN,IAAA,CAAAf,CAAAA,CAAwBiL,CAAAA,EAC7F,CAAA,MAAQ3J,CAAAA,CAAA,CACN,MACF,CACF,CAEA,SAAS6J,EAAAA,CAAU7O,CAAAA,CAAgByE,CAAAA,CAAwBL,CAAAA,CAAkB+G,CAAAA,CAA6C,CACxH,GAAI,OAAOnL,CAAAA,EAAU,QAAA,CAAU,OAAOyO,GAAWzO,CAAAA,CAAO,EAAA,CAAIyE,CAAAA,CAAO,CAACjD,EAAKsH,CAAAA,GAAWqC,CAAAA,CAAQ3J,CAAAA,CAAKsH,CAAAA,CAAQ1E,CAAK,CAAC,CAAA,CAC/G,GAAI,OAAOpE,CAAAA,EAAU,QAAA,EAAY,CAAC,KAAA,CAAM,QAAQA,CAAK,CAAA,CAAG,OACxD,IAAM8O,EAAO,KAAA,CAAM,OAAA,CAAQ9O,CAAK,CAAA,CAAI,OAAA,CAAU,QAAA,CAC9C,OAAOyO,EAAAA,CAAWzO,EAAM,MAAA,CAAQ,QAAA,CAAUyE,CAAAA,CAAO,CAACjD,EAAKsH,CAAAA,GAAWqC,CAAAA,CAAQ,CAAA,EAAG3J,CAAG,GAAGsN,CAAI,CAAA,CAAA,CAAIhG,CAAAA,CAAQ1E,CAAK,CAAC,CAC3G,CAEO,SAAS2K,EACd3K,CAAAA,CACAmD,CAAAA,CACAyH,CAAAA,CACAhL,CAAAA,CACAiL,CAAAA,CACe,CAlDjB,IAAAvL,CAAAA,CAAAO,EAAA2G,CAAAA,CAAAC,CAAAA,CAAAqE,CAAAA,CAmDE,IAAMlP,CAAAA,CAAQoK,CAAAA,CAAUhG,CAAAA,CAAOmD,CAAK,EAC9B9C,CAAAA,CAAAA,CAAQf,CAAAA,CAAAU,CAAAA,CAAM,UAAA,GAAN,KAAAV,CAAAA,CAAoB,EAAC,CAC7ByH,CAAAA,CAAUjC,EAAgB+F,CAAQ,CAAA,CAClCE,CAAAA,CAAe,IAAG,CAtD1B,IAAAzL,CAAAA,CAsD6B,OAAA,CAAAA,EAAAe,CAAAA,CAAM,iBAAA,GAAN,IAAA,CAAAf,CAAAA,CAA2ByH,CAAAA,CAAQ,YAAA,CAAc,EAAC,CAAG/G,CAAK,CAAA,CAAA,CACrF,GAAIoK,EAAAA,CAAQxO,CAAAA,CAAOoE,CAAK,CAAA,CACtB,OAAIK,CAAAA,CAAM,SAAiB,OAAOA,CAAAA,CAAM,QAAA,EAAa,QAAA,CAAWA,EAAM,QAAA,CAAW0G,CAAAA,CAAQ,UAAA,CAAY,GAAI/G,CAAK,CAAA,CACvGK,CAAAA,CAAM,UAAA,GAAe,MAAA,EAAa,CAAC1E,CAAAA,CAAQiP,CAAAA,CAAUvK,EAAM,UAAU,CAAC,CAAA,CAAI0K,CAAAA,EAAa,CAAI,IAAA,CAEpG,IAAMC,CAAAA,CAAYhE,GAAgBhH,CAAAA,CAAOpE,CAAAA,CAAOmL,CAAO,CAAA,CACvD,OAAIiE,CAAAA,GAAAA,CACIF,CAAAA,CAAAA,CAAAtE,CAAAA,CAAAA,CAAA3G,EAAA4K,EAAAA,CAAU7O,CAAAA,CAAOyE,CAAAA,CAAOL,CAAAA,CAAO+G,CAAO,CAAA,GAAtC,IAAA,CAAAlH,CAAAA,CACH2K,EAAAA,CAAa5O,EAAOyE,CAAAA,CAAO,IAAM0G,CAAAA,CAAQ,SAAA,CAAW,EAAC,CAAG/G,CAAK,CAAC,IAD3D,IAAA,CAAAwG,CAAAA,CAEFnG,CAAAA,CAAM,UAAA,GAAe,QAAazE,CAAAA,GAAUgP,CAAAA,CAAUvK,CAAAA,CAAM,UAAU,EAAI0K,CAAAA,EAAa,CAAI,MAAA,GAFzF,IAAA,CAAAD,CAAAA,CAGFzK,CAAAA,CAAM,SAAA,CAAA,CAAYoG,CAAAA,CAAA7G,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAaS,CAAAA,CAAM,SAAA,CAAA,GAAnB,YAAAoG,CAAAA,CAAA,IAAA,CAAA7G,CAAAA,CAAgChE,CAAAA,CAAOgP,GAAa,MAAA,CAAA,EAAe,IAC7F,CC5DO,SAASK,CAAAA,CACdpM,CAAAA,CACAzC,CAAAA,CACAwD,CAAAA,CACAiL,EACwB,CACxB,OAAOK,EAAAA,CAAerM,CAAAA,CAAK,MAAA,CAAQzC,CAAAA,CAAQwD,CAAAA,CAAYiL,CAAQ,CACjE,CAEO,SAASK,EAAAA,CACd9B,CAAAA,CACAhN,CAAAA,CACAwD,CAAAA,CACAiL,CAAAA,CACwB,CACxB,IAAM7B,CAAAA,CAAiC,EAAC,CAExC,IAAA,IAAWhJ,KAASoJ,CAAAA,CAAQ,CAC1B,GAAI,CAACc,EAAUlK,CAAAA,CAAO5D,CAAM,CAAA,CAAG,SAE/B,IAAMa,CAAAA,CAAQ0N,CAAAA,CAAmB3K,CAAAA,CAAO5D,EAAO4D,CAAAA,CAAM,GAAG,CAAA,CAAG5D,CAAAA,CAAQwD,CAAAA,CAAYiL,CAAQ,CAAA,CACnF5N,CAAAA,GACF+L,EAAOhJ,CAAAA,CAAM,GAAG,CAAA,CAAI/C,CAAAA,EAExB,CAEA,OAAO+L,CACT,CC3BO,SAASmC,CAAAA,CAAsBrB,CAAAA,CAAyBd,CAAAA,CAAgCoC,CAAAA,CAAS,MAAOC,CAAAA,CAAuB,EAAC,CAAS,CAC9I,GAAM,CAAE,KAAA,CAAAC,CAAM,CAAA,CAAIxB,CAAAA,CACZyB,CAAAA,CAAiBzB,CAAAA,CAAO,MAAA,CACxB0B,EAAgC,EAAC,CACjCC,CAAAA,CAAU,CAAC,GAAGJ,CAAU,CAAA,CAC9B,IAAA,GAAW,CAACjO,CAAAA,CAAKmN,CAAO,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQvB,CAAM,CAAA,CAC5Cc,CAAAA,CAAO,WAAW,WAAA,CAAY1M,CAAAA,CAAK0M,CAAAA,CAAO,MAAM,EAAG0B,CAAAA,CAAMpO,CAAG,CAAA,CAAImN,CAAAA,CAC/DkB,EAAQ,IAAA,CAAKlB,CAAO,CAAA,CAEvBa,CAAAA,GACFE,CAAAA,CAAM,YAAA,CAAeE,CAAAA,CACrBF,CAAAA,CAAM,iBAAmBG,CAAAA,CAAAA,CAE3BH,CAAAA,CAAM,MAAA,CAAStO,CAAAA,CAAAA,CAAAA,CAAA,GAAKsO,CAAAA,CAAM,YAAA,CAAA,CAAiBE,CAAAA,CAAAA,CAC3CF,CAAAA,CAAM,eAAiBF,CAAAA,CAASK,CAAAA,CAAU,CAAC,GAAGH,CAAAA,CAAM,gBAAA,CAAkB,GAAGG,CAAO,EAChF,IAAMC,CAAAA,CAAmBN,CAAAA,EAAUO,EAAAA,CAAiB7B,EAAQ0B,CAAK,CAAA,CACjE1B,CAAAA,CAAO,MAAA,CAAO,CAAE,SAAA,CAAWR,CAAAA,CAAeiC,CAAAA,CAAgBzB,CAAAA,CAAO,MAAM,CAAA,CAAG,gBAAA,CAAA4B,CAAiB,CAAC,EAC9F,CAEA,SAASC,EAAAA,CAAiB7B,CAAAA,CAAyBd,CAAAA,CAAyC,CAC1F,IAAM4C,EAAc9B,CAAAA,CAAO,YAAA,CAAa,SAAA,CAAWjL,CAAAA,EAASA,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAMmB,CAAAA,EAAUgJ,EAAOhJ,CAAAA,CAAM,GAAG,CAAA,GAAM,MAAS,CAAC,CAAA,CACxH,OAAI4L,CAAAA,CAAc,CAAA,EAAKA,IAAgB9B,CAAAA,CAAO,gBAAA,CAAyB,KAAA,EACvEA,CAAAA,CAAO,KAAA,CAAM,gBAAA,CAAmB8B,CAAAA,CACzB,IAAA,CACT,CAEO,SAASC,EAAAA,CAAW/B,CAAAA,CAAyB1M,CAAAA,CAAagO,CAAAA,CAAS,KAAA,CAAa,CACjFA,CAAAA,EAAQ,OAAOtB,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAa1M,CAAG,CAAA,CAChD,IAAM0O,CAAAA,CAAOhC,CAAAA,CAAO,MAAM,YAAA,CAAa1M,CAAG,CAAA,CACtC0O,CAAAA,GAAS,OAAW,OAAOhC,CAAAA,CAAO,MAAA,CAAO1M,CAAG,EAC3C0M,CAAAA,CAAO,MAAA,CAAO1M,CAAG,CAAA,CAAI0O,EAC5B,CAEO,SAASC,CAAAA,CAAiBjC,EAAyBvL,CAAAA,CAA8B,CACtF,IAAA,IAAWnB,CAAAA,IAAOmB,CAAAA,CAAM,OAAOuL,CAAAA,CAAO,KAAA,CAAM,aAAa1M,CAAG,EAC9D,CAEO,SAAS4O,EAAAA,CAAyBlC,CAAAA,CAAyB1M,CAAAA,CAAuB,CA1CzF,IAAAkC,CAAAA,CA2CE,IAAM2M,CAAAA,CAAoB,GAC1B,IAAA,IAAWjM,CAAAA,IAAS8J,CAAAA,CAAO,UAAA,CAAW,YAChCxK,CAAAA,CAAAU,CAAAA,CAAM,UAAA,GAAN,IAAA,CAAA,MAAA,CAAAV,CAAAA,CAAkB,UAAA,IAAelC,CAAAA,EAAO0M,CAAAA,CAAO,OAAO9J,CAAAA,CAAM,GAAG,CAAA,GAAM,MAAA,EACrE2K,EAAmB3K,CAAAA,CAAO8J,CAAAA,CAAO,MAAA,CAAO9J,CAAAA,CAAM,GAAG,CAAA,CAAGkM,CAAAA,CAAoBpC,CAAM,CAAA,CAAGA,CAAAA,CAAO,UAAA,CAAYA,CAAAA,CAAO,QAAQ,IACvH+B,EAAAA,CAAW/B,CAAAA,CAAQ9J,CAAAA,CAAM,GAAG,EAC5BiM,CAAAA,CAAQ,IAAA,CAAKjM,CAAAA,CAAM,GAAG,GAExB,OAAOiM,CACT,CAEO,SAASE,CAAAA,CAAmBrC,CAAAA,CAAmC,CACpE,IAAMsC,EAAa,IAAI,GAAA,CAAItC,CAAAA,CAAO,YAAA,CAAa,OAAA,CAASjL,CAAAA,EAASA,CAAAA,CAAK,MAAA,CAAO,IAAKmB,CAAAA,EAAUA,CAAAA,CAAM,GAAG,CAAC,CAAC,CAAA,CACjGqM,CAAAA,CAAS,MAAA,CAAO,KAAKvC,CAAAA,CAAO,MAAM,CAAA,CAAE,MAAA,CAAQ1M,GAAQ,CAACgP,CAAAA,CAAW,GAAA,CAAIhP,CAAG,CAAC,CAAA,CAC9E,IAAA,IAAWA,CAAAA,IAAOiP,CAAAA,CAAQ,OAAOvC,CAAAA,CAAO,MAAA,CAAO1M,CAAG,EAClD,OAAA2O,CAAAA,CAAiBjC,CAAAA,CAAQuC,CAAM,CAAA,CACxBA,CACT,CAEO,SAASH,EAAoBpC,CAAAA,CAAkD,CACpF,OAAOwC,CAAAA,CAAgBxC,CAAM,CAC/B,CAEA,SAASyC,GAAezC,CAAAA,CAAyB1N,CAAAA,CAA0D,CACzG,IAAA,IAAWgB,KAAO,CAAC,GAAG0M,CAAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,CAAE,IAAA,EAAK,CAAG,OAAO1N,CAAAA,CAAOgB,CAAG,CAAA,CACxE,OAAOhB,CACT,CAEO,SAASoQ,EAAAA,CAAa1C,CAAAA,CAAyB2C,CAAAA,CAAW,KAAA,CAA+B,CAtEhG,IAAAnN,CAAAA,CAuEE,IAAMiM,CAAAA,CAAiBzB,CAAAA,CAAO,MAAA,CACxBd,CAAAA,CAAiC,EAAC,CACxC,GAAIc,CAAAA,CAAO,WAAA,CACT,IAAA,IAAWjL,CAAAA,IAAQiL,EAAO,YAAA,CACpBA,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAIjL,EAAK,EAAE,CAAA,EAC9B,MAAA,CAAO,MAAA,CAAOmK,CAAAA,CAAQiC,CAAAA,CAAapM,CAAAA,CAAMqN,CAAAA,CAAoBpC,CAAM,CAAA,CAAGA,CAAAA,CAAO,UAAA,CAAYA,CAAAA,CAAO,QAAQ,CAAC,CAAA,CAAA,KAG3G,MAAA,CAAO,MAAA,CACLd,EACAkC,EAAAA,CAAAA,CAAe5L,CAAAA,CAAAwK,CAAAA,CAAO,UAAA,CAAW,MAAA,GAAlB,IAAA,CAAAxK,CAAAA,CAA4B,GAAI4M,CAAAA,CAAoBpC,CAAM,CAAA,CAAGA,CAAAA,CAAO,WAAYA,CAAAA,CAAO,QAAQ,CAChH,CAAA,CAEFA,EAAO,KAAA,CAAM,MAAA,CAAS9M,CAAAA,CAAAA,CAAAA,CAAA,EAAA,CAAK8M,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAA,CAAiBd,CAAAA,CAAAA,CACzD,IAAM0C,CAAAA,CAAmBe,CAAAA,EAAYd,EAAAA,CAAiB7B,CAAAA,CAAQd,CAAM,CAAA,CACpE,OAAAc,CAAAA,CAAO,OAAO,CAAE,SAAA,CAAWR,CAAAA,CAAeiC,CAAAA,CAAgBvC,CAAM,CAAA,CAAG,gBAAA,CAAA0C,CAAiB,CAAC,CAAA,CAC9E1C,CACT,CAEO,SAAS0D,GAAY5C,CAAAA,CAAyB1M,CAAAA,CAA4B,CAC/E,IAAM4C,EAAQ8J,CAAAA,CAAO,UAAA,CAAW,WAAA,CAAY1M,CAAAA,CAAK0M,CAAAA,CAAO,MAAM,CAAA,CAC9D,GAAI,CAAC9J,CAAAA,CAAO,OAAO,IAAA,CACnB,IAAM2M,CAAAA,CAAgB7C,CAAAA,CAAO,MAAA,CAAO1M,CAAG,EACjCH,CAAAA,CAAQ0N,CAAAA,CAAmB3K,CAAAA,CAAO8J,CAAAA,CAAO,MAAA,CAAO1M,CAAG,CAAA,CAAG8O,CAAAA,CAAoBpC,CAAM,CAAA,CAAGA,CAAAA,CAAO,UAAA,CAAYA,CAAAA,CAAO,QAAQ,CAAA,CACvH7M,CAAAA,CAAO6M,CAAAA,CAAO,MAAA,CAAO1M,CAAG,CAAA,CAAIH,CAAAA,CAC3B4O,EAAAA,CAAW/B,CAAAA,CAAQ1M,CAAAA,CAAK,IAAI,CAAA,CACjC,IAAMwP,EAAY,MAAA,CAAO,EAAA,CAAGD,CAAAA,CAAe7C,CAAAA,CAAO,MAAA,CAAO1M,CAAG,CAAC,CAAA,CAAI,EAAC,CAAI,CAACA,CAAG,CAAA,CAC1E,OAAA0M,CAAAA,CAAO,MAAA,CAAO,CAAE,UAAA8C,CAAU,CAAC,CAAA,CACpB3P,CACT,CAEO,SAASqP,CAAAA,CAAgBxC,CAAAA,CAAkD,CAChF,IAAM1N,CAAAA,CAASY,CAAAA,CAAA,EAAA,CAAK8M,CAAAA,CAAO,UAAA,CAAW,eAAA,CAAgBA,CAAAA,CAAO,MAAM,GACnE,IAAA,IAAW1M,CAAAA,IAAO,MAAA,CAAO,IAAA,CAAKhB,CAAM,CAAA,CAAG,CACrC,IAAM4D,CAAAA,CAAQ8J,EAAO,UAAA,CAAW,WAAA,CAAY1M,CAAAA,CAAK0M,CAAAA,CAAO,MAAM,CAAA,CAC1D9J,CAAAA,GAAO5D,CAAAA,CAAOgB,CAAG,CAAA,CAAI4I,CAAAA,CAAUhG,CAAAA,CAAO5D,CAAAA,CAAOgB,CAAG,CAAC,CAAA,EACvD,CACA,OAAOmP,GAAezC,CAAAA,CAAQ1N,CAAM,CACtC,CAEO,SAASyQ,EAAAA,CAAY/C,CAAAA,CAAyB1N,CAAAA,CAAwC,CAC3F,IAAM0Q,CAAAA,CAAiBhD,CAAAA,CAAO,MAAA,CACxByB,CAAAA,CAAiBzB,CAAAA,CAAO,MAAA,CACxBiD,CAAAA,CAAgB,OAAO,IAAA,CAAKjD,CAAAA,CAAO,YAAY,CAAA,CACrDA,CAAAA,CAAO,eAAA,EAAA,CACPA,CAAAA,CAAO,cAAA,EAAA,CACPA,EAAO,KAAA,CAAM,UAAA,CAAa,KAAA,CAC1BA,CAAAA,CAAO,MAAM,MAAA,CAASX,CAAAA,CAAaW,CAAAA,CAAO,UAAA,CAAW,UAAW1N,CAAM,CAAA,CACtE0N,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS,EAAC,CACvBA,CAAAA,CAAO,MAAM,cAAA,CAAiB,EAAC,CAC/BA,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAe,EAAC,CAC7BA,EAAO,KAAA,CAAM,gBAAA,CAAmB,EAAC,CACjCA,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAe,GAC5BA,CAAAA,CAAO,KAAA,CAAM,cAAA,CAAiB,KAAA,CAC9BA,EAAO,KAAA,CAAM,gBAAA,CAAmB,CAAA,CAChCA,CAAAA,CAAO,QAAQ,KAAA,EAAM,CACrBA,CAAAA,CAAO,UAAA,CAAW,eAAA,CAAgBA,CAAAA,CAAO,MAAA,CAAQA,CAAAA,CAAO,MAAM,CAAA,CAC9D,IAAMkD,CAAAA,CAAgB1D,CAAAA,CAAewD,CAAAA,CAAgBhD,CAAAA,CAAO,MAAM,CAAA,CAC5DmD,EAAgB,IAAI,GAAA,CAAI,CAC5B,GAAGD,CAAAA,CACH,GAAG1D,CAAAA,CAAeiC,CAAAA,CAAgBzB,EAAO,MAAM,CAAA,CAC/C,GAAGiD,CACL,CAAC,CAAA,CACDjD,CAAAA,CAAO,MAAA,CAAO,CACZ,UAAWmD,CAAAA,CACX,gBAAA,CAAkB,IAAA,CAClB,aAAA,CAAeD,CAAAA,CAAc,IAAA,CAAO,CACtC,CAAC,EACH,CCvIO,SAASE,EAAAA,CAAYvN,CAAAA,CAA4BvD,EAA6C,CACnG,OAAO+Q,EAAAA,CAASxN,CAAAA,CAAYvD,CAAM,CAAA,CAAE,KACtC,CAEA,SAAS+Q,EAAAA,CAASxN,CAAAA,CAA4BvD,CAAAA,CAAiC,CAR/E,IAAAkD,CAAAA,CAAAO,CAAAA,CAAA2G,CAAAA,CASE,IAAM1G,GAAQR,CAAAA,CAAAK,CAAAA,CAAW,KAAA,GAAX,IAAA,CAAAL,EAAoB,EAAC,CAC7BkE,CAAAA,CAAU,IAAI,GAAA,CAAI1D,CAAAA,CAAM,GAAA,CAAI,CAACjB,EAAMlB,CAAAA,GAAU,CAACkB,CAAAA,CAAK,EAAA,CAAIlB,CAAK,CAAC,CAAC,CAAA,CAC9D6J,EAAqB,EAAC,CACtB4F,CAAAA,CAAqC,EAAC,CACvCtN,CAAAA,CAAM,MAAA,EAAQuN,EAAAA,CAAc,CAAE,MAAA,CAAA,CAAQxN,CAAAA,CAAAF,CAAAA,CAAW,MAAA,GAAX,KAAAE,CAAAA,CAAqB,EAAG,CAAA,CAAGzD,EAAQgR,CAAS,CAAA,CACvF,IAAA,IAASzP,CAAAA,CAAQ,CAAA,CAAGA,CAAAA,CAAQmC,CAAAA,CAAM,MAAA,EAAS,CACzC,IAAMjB,CAAAA,CAAOiB,CAAAA,CAAMnC,CAAK,CAAA,CACxB,GAAI,CAACuM,CAAAA,CAAUrL,EAAMuO,CAAS,CAAA,CAAG,CAAEzP,CAAAA,EAAAA,CAAS,QAAU,CACtD6J,CAAAA,CAAO,IAAA,CAAK3I,CAAI,CAAA,CAChBwO,EAAAA,CAAcxO,CAAAA,CAAMzC,CAAAA,CAAQgR,CAAS,CAAA,CACrC,IAAMjN,CAAAA,CAAAA,CAAQqG,CAAAA,CAAA3H,EAAK,MAAA,GAAL,IAAA,CAAA,MAAA,CAAA2H,CAAAA,CAAa,IAAA,CAAMrG,CAAAA,EAAO,CAnB5C,IAAAb,CAAAA,CAoBM,OAAA4K,CAAAA,CAAU/J,CAAAA,CAAOiN,CAAS,CAAA,GAAMjN,CAAAA,CAAM,EAAA,GAAO,IAAA,EAAA,CAAA,CAAUb,CAAAA,CAAAkE,EAAQ,GAAA,CAAIrD,CAAAA,CAAM,EAAE,CAAA,GAApB,IAAA,CAAAb,CAAAA,CAAyB,EAAA,EAAM3B,CAAAA,EACjFuM,EAAUpK,CAAAA,CAAM0D,CAAAA,CAAQ,GAAA,CAAIrD,CAAAA,CAAM,EAAE,CAAE,CAAA,CAAGiN,CAAS,CAAA,CAAA,CAAA,CAAA,CAEzD,IAAIjN,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,EAAA,IAAO,IAAA,CAAM,MACxBxC,CAAAA,CAAQwC,CAAAA,CAAQqD,EAAQ,GAAA,CAAIrD,CAAAA,CAAM,EAAE,CAAA,CAAKxC,CAAAA,CAAQ,EACnD,CACA,OAAO,CAAE,KAAA,CAAO6J,CAAAA,CAAQ,MAAA,CAAQ4F,CAAU,CAC5C,CAEO,SAASE,EAAAA,CAAmB/D,EAAsB1L,CAAAA,CAAkBF,CAAAA,CAAuB,CA7BlG,IAAA2B,EA8BE,IAAMiO,CAAAA,CAAAA,CAAejO,CAAAA,CAAAiK,CAAAA,CAAS5L,CAAK,CAAA,GAAd,IAAA,CAAA2B,CAAAA,CAAmBiK,CAAAA,CAASA,CAAAA,CAAS,MAAA,CAAS,CAAC,CAAA,CAC9DiE,EAAY3P,CAAAA,CAAK,SAAA,CAAWgB,CAAAA,EAASA,CAAAA,CAAK,EAAA,IAAO0O,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAc,GAAE,CAAA,CACvE,GAAIC,CAAAA,GAAc,EAAA,CAAI,OAAOA,CAAAA,CAC7B,IAAMC,CAAAA,CAAU,IAAI,GAAA,CAAI5P,CAAAA,CAAK,GAAA,CAAI,CAACgB,EAAMlB,CAAAA,GAAU,CAACkB,CAAAA,CAAK,EAAA,CAAIlB,CAAK,CAAC,CAAC,CAAA,CACnE,IAAA,IAAS+P,CAAAA,CAAS,IAAA,CAAK,GAAA,CAAI/P,CAAAA,CAAQ,EAAG4L,CAAAA,CAAS,MAAA,CAAS,CAAC,CAAA,CAAGmE,CAAAA,EAAU,CAAA,CAAGA,CAAAA,EAAAA,CAAU,CACjF,IAAMC,CAAAA,CAAcF,CAAAA,CAAQ,GAAA,CAAIlE,CAAAA,CAASmE,CAAM,CAAA,CAAE,EAAE,CAAA,CACnD,GAAIC,CAAAA,GAAgB,MAAA,CAAW,OAAOA,CACxC,CACA,OAAO,CACT,CAEA,SAASN,GAAcxO,CAAAA,CAA+BzC,CAAAA,CAAiC0C,CAAAA,CAAuC,CAC5H,IAAM8O,CAAAA,CAAQ/O,CAAAA,CAAK,MAAA,CAAO,IAAI,CAAC,CAAE,GAAA,CAAAzB,CAAI,CAAA,GAAM,CAACA,CAAAA,CAAK,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK0B,CAAAA,CAAQ1B,CAAG,CAAA,CAAG0B,CAAAA,CAAO1B,CAAG,CAAC,CAAU,CAAA,CACzH,IAAA,IAAW4C,CAAAA,IAASnB,CAAAA,CAAK,OAAQC,CAAAA,CAAOkB,CAAAA,CAAM,GAAG,CAAA,CAAIgG,EAAUhG,CAAAA,CAAO5D,CAAAA,CAAO4D,CAAAA,CAAM,GAAG,CAAC,CAAA,CACvF,IAAMzC,CAAAA,CAAQsB,EAAK,MAAA,CAAO,MAAA,CAAQmB,CAAAA,EAAUkK,CAAAA,CAAUlK,EAAOlB,CAAM,CAAA,EAAK1C,CAAAA,CAAO4D,CAAAA,CAAM,GAAG,CAAA,GAAM,MAAS,CAAA,CACvG,IAAA,GAAW,CAAC5C,CAAAA,CAAKyQ,CAAAA,CAAKjS,CAAK,IAAKgS,CAAAA,CAC1BC,CAAAA,CAAK/O,CAAAA,CAAO1B,CAAG,EAAIxB,CAAAA,CAClB,OAAOkD,CAAAA,CAAO1B,CAAG,EAExB,IAAA,IAAW4C,CAAAA,IAASzC,CAAAA,CAAOuB,CAAAA,CAAOkB,CAAAA,CAAM,GAAG,CAAA,CAAIgG,CAAAA,CAAUhG,EAAO5D,CAAAA,CAAO4D,CAAAA,CAAM,GAAG,CAAC,EACnF,CAEO,SAAS8N,EAAAA,CAAiBnO,EAA4B,CAC3D,IAAIN,CAAAA,CAAyC,IAAA,CACzCS,CAAAA,CAAoB,EAAC,CACrBiO,CAAAA,CAAkC,EAAC,CACjCC,CAAAA,CAAW5R,CAAAA,EAAoC,CAC/CiD,IAAWjD,CAAAA,GACfiD,CAAAA,CAASjD,CAAAA,CACR,CAAE,MAAA0D,CAAAA,CAAO,MAAA,CAAQiO,CAAO,CAAA,CAAIZ,EAAAA,CAASxN,CAAAA,CAAYvD,CAAM,CAAA,EAC1D,EACA,OAAO,CACL,UAAA,EAAmB,CAAEiD,CAAAA,CAAS,KAAM,CAAA,CACpC,KAAA,CAAMjD,EAA6C,CAAE,OAAA4R,CAAAA,CAAQ5R,CAAM,CAAA,CAAU0D,CAAO,CAAA,CACpF,MAAA,CAAO1D,EAA0D,CAAE,OAAA4R,CAAAA,CAAQ5R,CAAM,EAAU2R,CAAQ,CACrG,CACF,CC5DA,SAASE,EAAAA,CAAYnE,CAAAA,CAAkD,CANvE,IAAAxK,CAAAA,CAAAO,CAAAA,CAOE,IAAMuJ,CAAAA,CAAAA,CAASvJ,GAAAP,CAAAA,CAAAwK,CAAAA,CAAO,WAAA,GAAP,IAAA,CAAA,MAAA,CAAAxK,CAAAA,CAAoB,MAAA,GAApB,IAAA,CAAAO,CAAAA,CAA8B,EAAC,CACxCzD,CAAAA,CAASY,CAAAA,CAAA,EAAA,CAAK8M,CAAAA,CAAO,MAAA,CAAA,CAC3B,IAAA,GAAW,CAAE,IAAA1M,CAAI,CAAA,GAAKgM,CAAAA,CAAQ,OAAOhN,EAAOgB,CAAG,CAAA,CAC/C,OAAO,MAAA,CAAO,OAAOhB,CAAAA,CAAQ+M,CAAAA,CAAaC,CAAM,CAAC,CACnD,CAEO,SAAS8E,EAAAA,CAAWpE,EAA+C,CACxE,OAAOoD,EAAAA,CAAYpD,CAAAA,CAAO,WAAYmE,EAAAA,CAAYnE,CAAM,CAAC,CAAA,CAAEA,EAAO,gBAAA,CAAmB,CAAC,CACxF,CAEO,SAASqE,EAAAA,CAAgBrE,CAAAA,CAAmC,CACjE,IAAMjL,CAAAA,CAAOiL,CAAAA,CAAO,WAAA,CACd8C,CAAAA,CAAY/N,EAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAE,IAAAzB,CAAI,CAAA,GAAMA,CAAG,CAAA,CAClD0M,CAAAA,CAAO,KAAA,CAAM,MAAA,CAASmE,EAAAA,CAAYnE,CAAM,CAAA,CACxC,IAAA,IAAW1M,CAAAA,IAAOwP,CAAAA,CAAW,OAAO9C,CAAAA,CAAO,MAAA,CAAO1M,CAAG,EACrD2O,CAAAA,CAAiBjC,CAAAA,CAAQ8C,CAAS,CAAA,CAClC9C,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAIjL,CAAAA,CAAK,GAAI+N,CAAS,CAAA,CACrCb,CAAAA,CAAiBjC,CAAAA,CAAQA,EAAO,UAAA,CAAW,eAAA,CAAgBA,CAAAA,CAAO,MAAA,CAAQA,EAAO,MAAM,CAAC,CAAA,CACxFA,CAAAA,CAAO,UAAA,CAAW,WAAA,CAAY,IAAA,CAAM,IAAI,EACxC,IAAMuC,CAAAA,CAASF,CAAAA,CAAmBrC,CAAM,CAAA,CACxC,OAAAA,CAAAA,CAAO,MAAA,CAAO,CAAE,SAAA,CAAW,CAAC,GAAG8C,CAAAA,CAAW,GAAGP,CAAM,CAAA,CAAG,gBAAA,CAAkB,KAAM,aAAA,CAAe,IAAK,CAAC,CAAA,CAC5FO,CACT,CAEO,SAASwB,EAAAA,CAAmBtE,CAAAA,CAA+B,CAChE,IAAMjL,CAAAA,CAAOiL,CAAAA,CAAO,WAAA,CAChBjL,CAAAA,EAAMiL,CAAAA,CAAO,OAAA,CAAQ,MAAA,CAAOjL,EAAK,EAAE,EACzC,CAEO,SAASwP,EAAAA,CAAWvE,CAAAA,CAAyBnM,CAAAA,CAAyB,CAC3E,OAAAmM,CAAAA,CAAO,KAAA,CAAM,gBAAA,CAAmBnM,CAAAA,CAChCmM,CAAAA,CAAO,MAAA,CAAO,CAAE,gBAAA,CAAkB,IAAK,CAAC,CAAA,CACjCqE,EAAAA,CAAgBrE,CAAM,CAC/B,CC/BO,SAASwE,EAAAA,CAAY9G,CAAAA,CAAsC,CAChE,OAAO,CAAC,CAACA,CAAAA,EAAU,MAAA,CAAO,cAAA,CAAeA,CAAM,CAAA,GAAM,OAAO,SAAA,EAAcA,CAAAA,CAAwB,EAAA,GAAO,KAC3G,CAEA,SAAS+G,EAAAA,CAAezE,CAAAA,CAAyBtC,CAAAA,CAAmBgH,EAAqC,CACvG,IAAMxF,CAAAA,CAAiC,EAAC,CAClC3J,CAAAA,CAAS,OAAOmI,CAAAA,CAAO,QAAW,QAAA,EAAYA,CAAAA,CAAO,MAAA,CAASA,CAAAA,CAAO,OAAS,EAAC,CACrF,IAAA,GAAW,CAACpK,EAAKxB,CAAK,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQyD,CAAM,CAAA,CAAG,CACjD,IAAMkL,EAAmB,KAAA,CAAM,OAAA,CAAQ3O,CAAK,CAAA,CAAIA,CAAAA,CAAM,IAAA,CAAK,GAAG,CAAA,CAAIA,EAC9D,OAAO2O,CAAAA,EAAY,QAAA,EAAY,MAAA,CAAO,EAAA,CAAGT,CAAAA,CAAO,MAAA,CAAO1M,CAAG,EAAGoR,CAAAA,CAAKpR,CAAG,CAAC,CAAA,GAAG4L,EAAO5L,CAAG,CAAA,CAAImN,CAAAA,EAC7F,CACA,IAAMc,CAAAA,CAAa,KAAA,CAAM,OAAA,CAAQ7D,CAAAA,CAAO,UAAU,CAAA,CAAIA,CAAAA,CAAO,UAAA,CAAW,OAAQ+C,CAAAA,EAAY,OAAOA,CAAAA,EAAY,QAAQ,CAAA,CAAI,EAAC,CAC5HY,CAAAA,CAAsBrB,EAAQd,CAAAA,CAAQ,IAAA,CAAMqC,CAAU,EACxD,CAEA,eAAsBoD,EAAAA,CAAW3E,CAAAA,CAAyB4E,EAAuBC,CAAAA,CAAc,KAAA,CAAyB,CACtH,GAAI7E,EAAO,UAAA,EAAcA,CAAAA,CAAO,cAAA,CAAgB,OAAO,OAClD6E,CAAAA,EAAaP,EAAAA,CAAmBtE,CAAM,CAAA,CAC3C,IAAM8E,CAAAA,CAAY5R,CAAAA,CAAA,EAAA,CAAK8M,EAAO,SAAA,CAAA,CAC1B+E,CAAAA,CAAa,KAAA,CACXC,CAAAA,CAAQhF,CAAAA,CAAO,eAAA,CACfiF,CAAAA,CAAYjF,CAAAA,CAAO,gBAAkB,EAAEA,CAAAA,CAAO,cAAA,CAChD1N,CAAAA,CAASkQ,CAAAA,CAAgBxC,CAAM,CAAA,CAC7BkF,CAAAA,CAAgBjF,GAAmBD,CAAAA,CAAQ1N,CAAM,CAAA,CACjD6S,CAAAA,CAAQ,IAAMH,CAAAA,GAAUhF,CAAAA,CAAO,eAAA,EAAmBiF,CAAAA,GAAcjF,EAAO,cAAA,EAAkBkF,CAAAA,EAAc,CAC7GlF,CAAAA,CAAO,KAAA,CAAM,UAAA,CAAa,IAAA,CAC1BA,CAAAA,CAAO,QAAO,CACd,GAAI,CAEF,GADImF,GAAM,EACN,MAAA,CAAO,IAAA,CAAKzC,EAAAA,CAAa1C,EAAQ,CAAA,CAAI,CAAC,CAAA,CAAE,MAAA,CAAS,CAAA,EAAKmF,CAAAA,EAAM,CAAG,OAAO,GAC1E,GAAIL,CAAAA,CAAU,cAAA,CAAgB,CAC5B,IAAM5P,CAAAA,CAAU,MAAM4P,CAAAA,CAAU,cAAA,CAAexS,CAAM,CAAA,CACrD,GAAI6S,CAAAA,EAAM,EAAKjQ,CAAAA,GAAY,CAAA,CAAA,CAAO,OAAO,CAAA,CAC3C,CACA,GAAIiQ,CAAAA,EAAM,CAAG,OAAO,CAAA,CAAA,CACpB,GAAIL,CAAAA,CAAU,cAAA,CAAgB,CAC5B,GAAI,MAAA,CAAO,IAAA,CAAKpC,EAAAA,CAAa1C,CAAAA,CAAQ,CAAA,CAAI,CAAC,CAAA,CAAE,OAAS,CAAA,EAAKmF,CAAAA,EAAM,CAAG,OAAO,GAC1E7S,CAAAA,CAASkQ,CAAAA,CAAgBxC,CAAM,EACjC,CACA+E,CAAAA,CAAa,CAAA,CAAA,CACb,IAAMK,CAAAA,CAAe,CAAC,GAAGpF,CAAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CACxC0E,CAAAA,CAAOxR,CAAAA,CAAA,EAAA,CAAK8M,CAAAA,CAAO,MAAA,CAAA,CACnBqF,CAAAA,CAAerF,EAAO,KAAA,CAAM,YAAA,CAC5BtC,CAAAA,CAAS,MAAMkH,CAAAA,CAAOtS,CAAAA,CAAQ,CAAC,GAAG8S,CAAY,CAAC,CAAA,CAC/CE,CAAAA,CAAWd,EAAAA,CAAY9G,CAAM,CAAA,CACnC,OAAIuH,CAAAA,GAAcjF,CAAAA,CAAO,eAAuB,CAACsF,CAAAA,CAC7CA,CAAAA,EACFb,EAAAA,CAAezE,CAAAA,CAAQtC,CAAAA,CAAQgH,CAAI,CAAA,CAC5B,KAEL1E,CAAAA,CAAO,KAAA,CAAM,YAAA,GAAiBqF,CAAAA,EAAchE,CAAAA,CAAsBrB,CAAAA,CAAQ,EAAC,CAAG,EAAI,CAAA,CACtF,MAAMH,EAAAA,CAAY,aAAA,CAAe,IAAG,CA5DxC,IAAArK,CAAAA,CA4D2C,QAAAA,CAAAA,CAAAsP,CAAAA,CAAU,aAAA,GAAV,IAAA,CAAA,KAAA,CAAA,CAAAtP,EAAA,IAAA,CAAAsP,CAAAA,CAA0BxS,CAAAA,CAAQ8S,CAAAA,CAAAA,CAAa,EAC/E,CAAA,CAAA,CACT,CAAA,MAASjS,CAAAA,CAAO,CACd,GAAI,CAAC4R,CAAAA,EAAcI,CAAAA,GAAS,OAAO,MAAA,CACnC,MAAMhS,CACR,QAAE,CACI8R,CAAAA,GAAcjF,CAAAA,CAAO,cAAA,GACvBA,EAAO,KAAA,CAAM,UAAA,CAAa,KAAA,CAC1BA,CAAAA,CAAO,MAAA,EAAO,EAElB,CACF,CC5DA,SAASuF,EAAAA,CAAcvF,CAAAA,CAAkC,CACvD,IAAMjL,EAAOiL,CAAAA,CAAO,WAAA,CACpB,GAAI,CAACjL,EAAM,OAAO,KAAA,CAClB,IAAMmK,CAAAA,CAASiC,CAAAA,CAAapM,CAAAA,CAAMqN,CAAAA,CAAoBpC,CAAM,EAAGA,CAAAA,CAAO,UAAA,CAAYA,CAAAA,CAAO,QAAQ,CAAA,CACjG,GAAI,MAAA,CAAO,IAAA,CAAKd,CAAM,CAAA,CAAE,MAAA,GAAW,CAAA,CAAG,OAAO,MAAA,CAC7C,IAAMuC,CAAAA,CAAiBzB,CAAAA,CAAO,OAC9B,OAAAA,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS9M,IAAA,EAAA,CAAKuO,CAAAA,CAAAA,CAAmBvC,CAAAA,CAAAA,CAC9Cc,CAAAA,CAAO,OAAO,CAAE,SAAA,CAAWR,CAAAA,CAAeiC,CAAAA,CAAgBzB,CAAAA,CAAO,MAAM,CAAE,CAAC,EACnE,IACT,CAEA,SAASwF,EAAAA,CAAOxF,CAAAA,CAAyBnM,CAAAA,CAAqB,CAC5DmM,CAAAA,CAAO,kBACPA,CAAAA,CAAO,KAAA,CAAM,gBAAA,CAAmBnM,CAAAA,CAChCmM,CAAAA,CAAO,MAAA,CAAO,CAAE,gBAAA,CAAkB,IAAK,CAAC,EAC1C,CAEA,eAAsByF,GAASzF,CAAAA,CAAyB4E,CAAAA,CAA0C,CA5BlG,IAAApP,EA6BE,GAAI,CAACwK,CAAAA,CAAO,WAAA,EAAeA,CAAAA,CAAO,cAAA,EAAkBA,CAAAA,CAAO,UAAA,EAAc,GAACxK,CAAAA,CAAAwK,CAAAA,CAAO,WAAA,GAAP,IAAA,EAAAxK,CAAAA,CAAoB,IAAA,CAAA,CAAM,OAAO,MAAA,CAC3G,GAAI4O,EAAAA,CAAWpE,CAAM,CAAA,CAAG,OAAO0F,EAAAA,CAAW1F,CAAAA,CAAQ,MAAA,CAAQ,MAAM,EAChE,IAAMjL,CAAAA,CAAOiL,CAAAA,CAAO,WAAA,CACpB,GAAI,CAAC4E,CAAAA,EAAU,CAAC7P,CAAAA,CAAM,OAAO,MAAA,CAC7B,IAAMzC,CAAAA,CAAS0N,CAAAA,CAAO,MAAA,CAChBd,CAAAA,CAAShM,CAAAA,CAAA,EAAA,CAAK8M,EAAO,MAAA,CAAA,CACrBqF,CAAAA,CAAenS,CAAAA,CAAA,EAAA,CAAK8M,EAAO,KAAA,CAAM,YAAA,CAAA,CACnC2F,CAAAA,CACJtB,EAAAA,CAAgBrE,CAAM,CAAA,CACtB,IAAM4F,CAAAA,CAAgB5F,CAAAA,CAAO,MAAA,CACvB6F,CAAAA,CAAS1F,EAAAA,CAAYH,CAAAA,CAAQ4F,CAAa,CAAA,CAC1CE,CAAAA,CAAanB,EAAAA,CAAW3E,CAAAA,CAAQ,MAAO+F,CAAAA,CAAWC,CAAAA,GAAY,CAClE,IAAMtI,EAAS,MAAMkH,CAAAA,CAAOmB,CAAAA,CAAWC,CAAO,CAAA,CACxCV,CAAAA,CAAWd,EAAAA,CAAY9G,CAAM,EACnC,OAAA,CAAI,CAAC4H,CAAAA,EAAYL,CAAAA,GAAcjF,CAAAA,CAAO,cAAA,IAAgB2F,CAAAA,CAAUL,CAAAA,CAAAA,CACzD5H,CACT,CAAA,CAAG,IAAI,CAAA,CACDuH,CAAAA,CAAYjF,CAAAA,CAAO,eAAA,CACzB,GAAI,CACF,OAAO,MAAM8F,CACf,CAAA,OAAE,CACA,GAAIH,CAAAA,GAAY,KAAA,EAASV,CAAAA,GAAcjF,CAAAA,CAAO,iBAAmBA,CAAAA,CAAO,MAAA,GAAW4F,CAAAA,CAAe,CAChG,IAAM5P,CAAAA,CAAQgK,CAAAA,CAAO,YAAA,CACfgC,EAAO6D,CAAAA,EAAO,CACdI,CAAAA,CAAUjG,CAAAA,CAAO,MAAA,CACvBA,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS9M,EAAA,EAAA,CAAKZ,CAAAA,CAAAA,CAC3B,IAAA,IAAWgB,CAAAA,IAAO0O,CAAAA,CAChB,OAAOhC,CAAAA,CAAO,MAAA,CAAO1M,CAAG,CAAA,CACxB,OAAO4L,CAAAA,CAAO5L,CAAG,EACjB,OAAO+R,CAAAA,CAAa/R,CAAG,CAAA,CACnBA,KAAO2S,CAAAA,GAASjG,CAAAA,CAAO,MAAA,CAAO1M,CAAG,CAAA,CAAI2S,CAAAA,CAAQ3S,CAAG,CAAA,CAAA,CAElDqS,IAAY,MAAA,GAAW3F,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAeqF,CAAAA,CAAAA,CACvDrF,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS9M,IAAA,EAAA,CAAMyS,CAAAA,CAAU,EAAC,CAAIzG,CAAAA,CAAAA,CAAYc,CAAAA,CAAO,MAAA,CAAA,CAC9DA,CAAAA,CAAO,QAAQ,MAAA,CAAOjL,CAAAA,CAAK,EAAE,CAAA,CAC7BkN,EAAiBjC,CAAAA,CAAQA,CAAAA,CAAO,UAAA,CAAW,eAAA,CAAgBA,EAAO,MAAA,CAAQA,CAAAA,CAAO,MAAM,CAAC,CAAA,CACxFA,CAAAA,CAAO,UAAA,CAAW,WAAA,CAAY,KAAM,IAAI,CAAA,CACxCA,CAAAA,CAAO,KAAA,CAAM,iBAAmBwD,EAAAA,CAAmBxN,CAAAA,CAAOgK,CAAAA,CAAO,YAAA,CAAcA,EAAO,gBAAgB,CAAA,CACtGqC,CAAAA,CAAmBrC,CAAM,CAAA,CACzBA,CAAAA,CAAO,MAAA,CAAO,CAAE,UAAW,MAAA,CAAO,IAAA,CAAK9M,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,EAAA,CAAKZ,GAAW2T,CAAAA,CAAAA,CAAY/G,CAAAA,CAAQ,CAAA,CAAG,gBAAA,CAAkB,KAAM,aAAA,CAAe,IAAK,CAAC,EAC7H,CACF,CACF,CAEA,eAAsBwG,GAAW1F,CAAAA,CAAyBkG,CAAAA,CAA4BC,CAAAA,CAAsCD,CAAAA,CAA6B,CACvJ,IAAME,CAAAA,CAAWD,CAAAA,GAAW,OAE5B,GADI,CAACnG,CAAAA,CAAO,WAAA,EAAeA,CAAAA,CAAO,cAAA,EAAkBA,CAAAA,CAAO,UAAA,EACvD,CAACoG,CAAAA,GAAaF,CAAAA,GAAc,MAAA,CAASlG,CAAAA,CAAO,WAAaA,CAAAA,CAAO,WAAA,CAAA,CAAc,OAAO,MAAA,CACzF,IAAMjL,CAAAA,CAAOiL,CAAAA,CAAO,WAAA,CACdqG,CAAAA,CAAaH,CAAAA,GAAc,MAAA,EAAU,CAACE,CAAAA,CAE5C,GADIC,CAAAA,EAAY/B,EAAAA,CAAmBtE,CAAM,CAAA,CACrCqG,CAAAA,EAAcd,EAAAA,CAAcvF,CAAM,CAAA,CAAG,OAAO,MAAA,CAChD,IAAM8E,CAAAA,CAAY5R,CAAAA,CAAA,EAAA,CAAK8M,CAAAA,CAAO,SAAA,CAAA,CACxBsG,CAAAA,CAAWtG,EAAO,cAAA,CACpBuG,CAAAA,CAAY,KAAA,CAEVC,CAAAA,CADYxG,EAAO,gBAAA,EACIkG,CAAAA,GAAc,MAAA,CAAS,CAAA,CAAI,IAClDlR,CAAAA,CAASoR,CAAAA,CAAWhC,EAAAA,CAAWpE,CAAM,CAAA,CAAIA,CAAAA,CAAO,YAAA,CAAawG,CAAO,EAC1E,GAAI,CAACxR,CAAAA,CAAQ,OAAO,MAAA,CACpB,IAAMH,CAAAA,CAA6B,CAAE,WAAYE,CAAAA,CAAK,EAAA,CAAI,QAAA,CAAUC,CAAAA,CAAO,EAAA,CAAI,MAAA,CAAAmR,CAAAA,CAAQ,MAAA,CAAQjT,EAAA,EAAA,CAAKkP,CAAAA,CAAoBpC,CAAM,CAAA,CAAI,EAC5HgF,CAAAA,CAAQhF,CAAAA,CAAO,eAAA,CACfiF,CAAAA,CAAYjF,EAAO,eAAA,CAAkB,EAAEA,CAAAA,CAAO,cAAA,CAC9CkF,CAAAA,CAAgBjF,EAAAA,CAAmBD,CAAAA,CAAQnL,CAAAA,CAAQ,MAAM,CAAA,CACzDsQ,CAAAA,CAAQ,IAAG,CA5FnB,IAAA3P,CAAAA,CA4FsB,OAAAwP,CAAAA,GAAUhF,EAAO,eAAA,EAAmBiF,CAAAA,GAAcjF,CAAAA,CAAO,cAAA,EAAA,CAAA,CACxExK,CAAAA,CAAAwK,CAAAA,CAAO,WAAA,GAAP,IAAA,CAAA,MAAA,CAAAxK,EAAoB,EAAA,IAAOT,CAAAA,CAAK,EAAA,EAAMmQ,CAAAA,IAC3ClF,CAAAA,CAAO,KAAA,CAAM,cAAA,CAAiB,IAAA,CAC9BA,EAAO,MAAA,EAAO,CACd,GAAI,CACF,GAAImF,CAAAA,EAAM,CAAG,OAAO,GACpB,GAAIkB,CAAAA,EAAcC,CAAAA,CAAU,CAC1B,IAAM5I,CAAAA,CAAS,MAAM4I,CAAAA,CAAUvR,EAAK,EAAA,CAAIF,CAAAA,CAAQ,MAAM,CAAA,CACtD,GAAIsQ,CAAAA,EAAM,CAAG,OAAO,GACpB,GAAIzH,CAAAA,EAAU,MAAA,CAAO,IAAA,CAAKA,CAAM,CAAA,CAAE,MAAA,CAAS,CAAA,CACzC,OAAA2D,EAAsBrB,CAAAA,CAAQtC,CAAM,CAAA,CAC7B,CAAA,CAEX,CACA,GAAIoH,CAAAA,CAAU,kBAAA,CAAoB,CAChC,IAAM5P,CAAAA,CAAU,MAAM4P,CAAAA,CAAU,kBAAA,CAAmBjQ,CAAO,CAAA,CAC1D,GAAIsQ,GAAM,EAAKjQ,CAAAA,GAAY,CAAA,CAAA,CAAO,OAAO,CAAA,CAC3C,CAEA,OADIiQ,CAAAA,IACAkB,CAAAA,EAAcd,EAAAA,CAAcvF,CAAM,CAAA,CAAU,IAChDuG,CAAAA,CAAY,CAAA,CAAA,CACRH,CAAAA,EAAU/B,EAAAA,CAAgBrE,CAAM,CAAA,CACpCwF,EAAAA,CAAOxF,CAAAA,CAAQwG,CAAO,CAAA,CACtB,MAAM3G,EAAAA,CAAY,iBAAA,CAAmB,IAAG,CAnH5C,IAAArK,CAAAA,CAmH+C,OAAA,CAAAA,CAAAA,CAAAsP,CAAAA,CAAU,iBAAA,GAAV,IAAA,CAAA,KAAA,CAAA,CAAAtP,EAAA,IAAA,CAAAsP,CAAAA,CAA8BjQ,CAAAA,CAAAA,CAAQ,CAAA,CAC1E,CAAA,CAAA,CACT,CAAA,MAAS1B,CAAAA,CAAO,CACd,GAAI,CAACoT,CAAAA,EAAapB,CAAAA,EAAM,CAAG,OAAO,MAAA,CAClC,MAAMhS,CACR,CAAA,OAAE,CACI8R,CAAAA,GAAcjF,CAAAA,CAAO,cAAA,GACvBA,CAAAA,CAAO,KAAA,CAAM,cAAA,CAAiB,KAAA,CAC9BA,CAAAA,CAAO,QAAO,EAElB,CACF,CAEO,SAASyG,GAAkBzG,CAAAA,CAAyB0G,CAAAA,CAAwB,CACjF,GAAI,CAAC1G,CAAAA,CAAO,WAAA,CAAa,OACzB,IAAM8B,CAAAA,CAAc9B,CAAAA,CAAO,UAAA,CAAW,aAAA,CACpC0G,EACA1G,CAAAA,CAAO,MAAA,CACPA,CAAAA,CAAO,gBACT,EACI8B,CAAAA,GAAgB9B,CAAAA,CAAO,gBAAA,CAAkBA,CAAAA,CAAO,QAAO,CAClD8B,CAAAA,GAAgB,IAAA,EAAM0D,EAAAA,CAAOxF,CAAAA,CAAQ8B,CAAW,EAC3D,CClIA,SAAS6E,EAAAA,CAAOC,CAAAA,CAA0BC,CAAAA,CAAgC,CACxE,OAAAD,CAAAA,CAAU,GAAA,CAAIC,CAAQ,EACf,IAAMD,CAAAA,CAAU,MAAA,CAAOC,CAAQ,CACxC,CAEO,SAASC,EAAAA,EAAsB,CACpC,IAAIxO,CAAAA,CAAU,CAAA,CACVyO,CAAAA,CAAmB,EACjBH,CAAAA,CAAY,IAAI,GAAA,CAChBI,CAAAA,CAAqB,IAAI,GAAA,CACzBC,CAAAA,CAAgB,IAAI,GAAA,CACpBC,CAAAA,CAAiB,IAAI,GAAA,CAE3B,OAAO,CACL,SAAA,CAAYL,CAAAA,EAAuBF,EAAAA,CAAOC,CAAAA,CAAWC,CAAQ,CAAA,CAC7D,WAAA,CAAa,IAAMvO,EACnB,kBAAA,CAAqBuO,CAAAA,EAAuBF,EAAAA,CAAOK,CAAAA,CAAoBH,CAAQ,CAAA,CAC/E,oBAAA,CAAsB,IAAME,EAC5B,gBAAA,CAAmBzT,CAAAA,EAAa,CAzBpC,IAAAkC,EAyBuC,OAAA,CAAAA,CAAAA,CAAAyR,CAAAA,CAAc,GAAA,CAAI3T,CAAG,CAAA,GAArB,IAAA,CAAAkC,CAAAA,CAA0B,CAAA,CAAA,CAE7D,cAAA,CAAelC,CAAAA,CAAauT,CAAAA,CAAgC,CA3BhE,IAAArR,CAAAA,CA4BM,IAAM2R,CAAAA,CAAAA,CAAM3R,CAAAA,CAAA0R,CAAAA,CAAe,GAAA,CAAI5T,CAAG,CAAA,GAAtB,KAAAkC,CAAAA,CAA2B,IAAI,GAAA,CAC3C,OAAA2R,CAAAA,CAAI,GAAA,CAAIN,CAAQ,CAAA,CAChBK,EAAe,GAAA,CAAI5T,CAAAA,CAAK6T,CAAG,CAAA,CACpB,IAAM,CACXA,CAAAA,CAAI,MAAA,CAAON,CAAQ,EACfM,CAAAA,CAAI,IAAA,GAAS,CAAA,EAAGD,CAAAA,CAAe,MAAA,CAAO5T,CAAG,EAC/C,CACF,EAEA,MAAA,CAAO,CAAE,SAAA,CAAAwP,CAAAA,CAAY,EAAC,CAAG,gBAAA,CAAAlB,CAAAA,CAAmB,KAAM,EAAmB,EAAC,CAAS,CArCnF,IAAApM,CAAAA,CAAAO,CAAAA,CAsCM,IAAA,IAAWzC,CAAAA,IAAO,IAAI,GAAA,CAAIwP,CAAS,CAAA,CAAG,CACpCmE,EAAc,GAAA,CAAI3T,CAAAA,CAAAA,CAAAA,CAAMkC,CAAAA,CAAAyR,CAAAA,CAAc,IAAI3T,CAAG,CAAA,GAArB,IAAA,CAAAkC,CAAAA,CAA0B,CAAA,EAAK,CAAC,CAAA,CACxD,IAAA,IAAWqR,MAAY9Q,CAAAA,CAAAmR,CAAAA,CAAe,GAAA,CAAI5T,CAAG,CAAA,GAAtB,IAAA,CAAAyC,CAAAA,CAA2B,GAAI8Q,CAAAA,GACxD,CACA,GAAIjF,CAAAA,CAAkB,CACpBmF,CAAAA,EAAAA,CACA,IAAA,IAAWF,KAAYG,CAAAA,CAAoBH,CAAAA,GAC7C,CACAvO,IACA,IAAA,IAAWuO,CAAAA,IAAYD,CAAAA,CAAWC,CAAAA,GACpC,CACF,CACF,CC5CA,SAASO,EAAAA,CAAkBvR,CAAAA,CAA4BC,CAAAA,CAAoE,CACzH,GAAI,CACF,GAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,GAAa,YAAA,CAAc,OAAOkJ,EAAAA,CAAgBnJ,EAAY,CAAE,UAAA,CAAAC,CAAW,CAAC,CAC9F,CAAA,MAAS3C,CAAAA,CAAO,CACd,GAAI,EAAEA,CAAAA,YAAiB,cAAA,CAAA,CAAiB,MAAMA,CAChD,CAEF,CAEO,SAASkU,EAAAA,CAAiBxR,EAA4B0G,CAAAA,CAA4BzG,CAAAA,CAA2C,CAfpI,IAAAN,CAAAA,CAAAO,CAAAA,CAgBE,IAAMrD,CAAAA,CAAAA,CAAS8C,EAAA4R,EAAAA,CAAkBvR,CAAAA,CAAYC,CAAU,CAAA,GAAxC,IAAA,CAAAN,CAAAA,CAA6CuJ,EAAAA,CAAiBlJ,CAAU,EACjFqJ,CAAAA,CAASxM,CAAAA,CAAO,MAAA,CAAOa,EAAO,CAAA,CACpC,GAAI2L,CAAAA,CAAO,MAAA,CAAQ,MAAM,IAAIzM,CAAAA,CAAoByM,CAAM,CAAA,CACvD,IAAMoI,CAAAA,CAAAA,CAAOvR,CAAAA,CAAAwG,CAAAA,CAAQ,SAAA,GAAR,KAAAxG,CAAAA,EAAuBpD,CAAAA,EAA2B,OAAA,CAAQ,IAAA,CAAK,CAAA,WAAA,EAAcA,CAAAA,CAAM,OAAO,CAAA,CAAE,GACzG,IAAA,IAAWA,CAAAA,IAASD,CAAAA,CAAQ4U,CAAAA,CAAK3U,CAAK,EACxC,CClBO,SAAS4U,EAAAA,CAAgDC,EAAc3T,CAAAA,CAAkC,CAHhH,IAAA2B,CAAAA,CAIE,IAAA,IAAWU,CAAAA,IAASiJ,EAAAA,CAAgBqI,CAAS,EAAG,CAC9C,IAAMC,CAAAA,CAAAA,CAAajS,CAAAA,CAAA3B,EAAM,GAAA,CAAIqC,CAAK,CAAA,GAAf,IAAA,CAAAV,EAAoB,IAAI,GAAA,CAC3CiS,CAAAA,CAAW,GAAA,CAAID,CAAS,CAAA,CACxB3T,CAAAA,CAAM,GAAA,CAAIqC,EAAOuR,CAAU,EAC7B,CACF,CCUO,SAASC,EAAAA,CAAiB7R,CAAAA,CAA4B,CAnB7D,IAAAL,CAAAA,CAAAO,CAAAA,CAAA2G,CAAAA,CAoBE,IAAMiL,CAAAA,CAAYvI,EAAAA,CAAavJ,CAAU,CAAA,CACnC+R,EAAc,IAAI,GAAA,CAClBC,CAAAA,CAAc,IAAI,IAClB9U,CAAAA,CAAOiR,EAAAA,CAAiBnO,CAAU,CAAA,CAClCiS,EAAkB,IAAI,GAAA,CACtBC,CAAAA,CAAiB,IAAI,GAAA,CACrBC,CAAAA,CAAc,IAAI,GAAA,CACpBC,EAAkB,IAAA,CAClBC,CAAAA,CAAiB,IAAA,CACfC,CAAAA,CAAyB,CAAE,YAAA,CAAc,EAAC,CAAG,YAAa,IAAA,CAAM,aAAA,CAAe,EAAC,CAAG,SAAA,CAAW,KAAM,CAAA,CAE1G,IAAA,IAAWjS,KAASyR,CAAAA,CAClBC,CAAAA,CAAY,GAAA,CAAI1R,CAAAA,CAAM,IAAK,CAAC,GAAA,CAAIV,CAAAA,CAAAoS,CAAAA,CAAY,IAAI1R,CAAAA,CAAM,GAAG,CAAA,GAAzB,IAAA,CAAAV,CAAAA,CAA8B,EAAC,CAAIU,CAAK,CAAC,CAAA,CACzEqR,EAAAA,CAAgBrR,CAAAA,CAAO4R,CAAe,CAAA,CAExC,IAAA,IAAW/S,CAAAA,IAAAA,CAAQgB,CAAAA,CAAAF,EAAW,KAAA,GAAX,IAAA,CAAAE,CAAAA,CAAoB,EAAC,CAAG,CACzC,IAAA,IAAWG,CAAAA,IAASnB,EAAK,MAAA,CAAQiT,CAAAA,CAAY,GAAA,CAAI9R,CAAAA,CAAOnB,CAAI,CAAA,CAC5DwS,EAAAA,CAAgBxS,CAAAA,CAAMgT,CAAc,EACpC,IAAA,IAAW1R,CAAAA,IAAAA,CAASqG,CAAAA,CAAA3H,CAAAA,CAAK,MAAA,GAAL,IAAA,CAAA2H,CAAAA,CAAe,GAAI,IAAA,IAAWpJ,CAAAA,IAAO6L,EAAAA,CAAgB9I,CAAK,EAAGwR,CAAAA,CAAY,GAAA,CAAIvU,CAAG,EACtG,CAEA,IAAM8U,CAAAA,CAAc,IAAG,CAzCzB,IAAA5S,CAAAA,CAyC6B,OAAA,CAAA,CAAAA,CAAAA,CAAAK,EAAW,KAAA,GAAX,IAAA,CAAAL,CAAAA,CAAoB,IAAI,MAAA,CAAS,CAAA,CAAA,CACtD6S,CAAAA,CAAU,CAAC9S,EAA8BjD,CAAAA,GAAmB8N,CAAAA,CAAU7K,CAAAA,CAAQxC,CAAAA,CAAK,MAAA,CAAOT,CAAM,CAAC,CAAA,CACjGgW,EAAS,CAACpS,CAAAA,CAAkB5D,CAAAA,GAAmB,CACnD,IAAMyC,CAAAA,CAAOiT,CAAAA,CAAY,GAAA,CAAI9R,CAAK,CAAA,CAClC,OAAO,CAACnB,CAAAA,EAAQhC,CAAAA,CAAK,KAAA,CAAMT,CAAM,CAAA,CAAE,SAASyC,CAAI,CAClD,CAAA,CAEA,SAASyM,EAAMlP,CAAAA,CAAgBiW,CAAAA,CAAoC,CAhDrE,IAAA/S,EAAAO,CAAAA,CAAA2G,CAAAA,CAiDI,GAAI,CAACuL,CAAAA,CAAiB,OAAOE,CAAAA,CAE7B,GADAF,EAAkB,KAAA,CACd,CAACG,CAAAA,EAAY,CACf,OAAAD,CAAAA,CAAM,YAAA,CAAe,GACrBA,CAAAA,CAAM,WAAA,CAAc,IAAA,CACpBA,CAAAA,CAAM,aAAA,CAAA,CAAA,CAAiB3S,CAAAA,CAAAK,CAAAA,CAAW,MAAA,GAAX,KAAAL,CAAAA,CAAqB,EAAC,EAAG,MAAA,CAAQU,GAAUmS,CAAAA,CAAQnS,CAAAA,CAAO5D,CAAM,CAAC,EACjF6V,CAAAA,CAET,IAAMnS,CAAAA,CAAQmS,CAAAA,CAAM,YAAA,CAAepV,CAAAA,CAAK,KAAA,CAAMT,CAAM,EAC9C2T,CAAAA,CAAUkC,CAAAA,CAAM,WAAA,CAAA,CAAczL,CAAAA,CAAAA,CAAA3G,CAAAA,CAAAC,CAAAA,CAAMuS,CAAS,CAAA,GAAf,KAAAxS,CAAAA,CAAoBC,CAAAA,CAAMA,CAAAA,CAAM,MAAA,CAAS,CAAC,CAAA,GAA1C,IAAA,CAAA0G,CAAAA,CAA+C,KACnF,OAAAyL,CAAAA,CAAM,aAAA,CAAgBlC,CAAAA,CAAUA,EAAQ,MAAA,CAAO,MAAA,CAAQ/P,CAAAA,EAAUmS,CAAAA,CAAQnS,EAAO5D,CAAM,CAAC,CAAA,CAAI,EAAC,CACrF6V,CACT,CAEA,OAAO,CACL,SAAA,CAAAR,CAAAA,CACA,eAAA,CAAiB5U,CAAAA,CAAK,OACtB,KAAA,CAAAyO,CAAAA,CAEA,WAAA,CAAYI,CAAAA,CAA2B4G,EAA8B,CAC/D5G,CAAAA,GAAkBqG,CAAAA,CAAkB,IAAA,CAAA,CAAA,CACpCrG,CAAAA,EAAoB4G,CAAAA,IAAeN,CAAAA,CAAiB,IAAA,EAC1D,EAEA,YAAA,CAAa5V,CAAAA,CAAgBiW,CAAAA,CAAmBzS,CAAAA,CAAkD,CAChG,IAAMf,CAAAA,CAAOyM,CAAAA,CAAMlP,CAAAA,CAAQiW,CAAS,CAAA,CAAE,WAAA,CACtC,GAAI,CAACL,CAAAA,CAAgB,OAAOC,CAAAA,CAAM,SAAA,CAClCD,EAAiB,KAAA,CACjB,IAAMhJ,CAAAA,CAASnK,CAAAA,CAAOoM,CAAAA,CAAapM,CAAAA,CAAMhC,CAAAA,CAAK,MAAA,CAAOT,CAAM,CAAA,CAAGwD,CAAU,CAAA,CAAI,EAAC,CAC7E,OAAOqS,CAAAA,CAAM,SAAA,CAAYC,GAAY,EAAK,MAAA,CAAO,IAAA,CAAKlJ,CAAM,EAAE,MAAA,GAAW,CAC3E,CAAA,CAEA,aAAA,CAAcwH,EAAkBpU,CAAAA,CAAgBiW,CAAAA,CAAkC,CAChF,IAAMvT,CAAAA,CAASwM,CAAAA,CAAMlP,CAAAA,CAAQiW,CAAS,EAAE,YAAA,CAAa,SAAA,CAAWxT,CAAAA,EAASA,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAMmB,CAAAA,EAAUA,CAAAA,CAAM,MAAQwQ,CAAQ,CAAC,CAAA,CAC5H,OAAO1R,CAAAA,GAAW,EAAA,CAAK,IAAA,CAAOA,CAChC,EAEA,gBAAA,CAAiB1B,CAAAA,CAAamV,CAAAA,CAAqC,CACjE,OAAOZ,CAAAA,CAAY,GAAA,CAAIvU,CAAG,CAAA,EAAKwU,EAAgB,GAAA,CAAIxU,CAAG,CAAA,EAAKyU,CAAAA,CAAe,GAAA,CAAIzU,CAAG,CAAA,EAAKmV,CAAAA,CAAc,KAAO,CAC7G,CAAA,CAEA,WAAA,CAAYnV,CAAAA,CAAahB,CAAAA,CAAuC,CA1FpE,IAAAkD,CAAAA,CA2FM,QAAOA,CAAAA,CAAAoS,CAAAA,CAAY,GAAA,CAAItU,CAAG,CAAA,GAAnB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAsB,IAAA,CAAMU,GAAUoS,CAAAA,CAAOpS,CAAAA,CAAO5D,CAAM,CAAA,EAAK+V,EAAQnS,CAAAA,CAAO5D,CAAM,CAAA,CAC7F,CAAA,CAEA,gBAAgBA,CAAAA,CAAgB4M,CAAAA,CAA6C,CA9FjF,IAAA1J,CAAAA,CAAAO,EAAAA,CA+FMhD,CAAAA,CAAK,UAAA,GACL,IAAM+G,CAAAA,CAAQ,CAAC,GAAG,IAAI,GAAA,CAAI,CAAC,GAAGgO,CAAAA,CAAgB,MAAK,CAAG,GAAGC,CAAAA,CAAe,IAAA,EAAM,CAAC,CAAC,CAAA,CAC1EW,EAAS,IAAI,GAAA,CAAI5O,CAAK,CAAA,CACtBqI,EAAU,IAAI,GAAA,CACdwG,CAAAA,CAAQrV,CAAAA,EAAgBhB,EAAOgB,CAAG,CAAA,GAAM,MAAA,EAAa4L,CAAAA,CAAO5L,CAAG,CAAA,GAAM,MAAA,CACrEsV,CAAAA,CAAStV,GAAgB,CAC7B,OAAOhB,CAAAA,CAAOgB,CAAG,CAAA,CACjB,OAAO4L,CAAAA,CAAO5L,CAAG,EACjBP,CAAAA,CAAK,UAAA,EAAW,CAChBoP,CAAAA,CAAQ,GAAA,CAAI7O,CAAG,CAAA,CACX,CAAAoV,EAAO,GAAA,CAAIpV,CAAG,CAAA,GAClBoV,CAAAA,CAAO,IAAIpV,CAAG,CAAA,CACdwG,CAAAA,CAAM,IAAA,CAAKxG,CAAG,CAAA,EAChB,CAAA,CACA,IAAA,IAASO,CAAAA,CAAQ,CAAA,CAAGA,CAAAA,CAAQiG,CAAAA,CAAM,MAAA,CAAQjG,IAAS,CACjD,IAAMP,EAAAA,CAAMwG,CAAAA,CAAMjG,CAAK,CAAA,CACvB6U,CAAAA,CAAO,MAAA,CAAOpV,EAAG,CAAA,CACjB,IAAA,IAAW4C,CAAAA,IAAAA,CAASV,CAAAA,CAAAsS,CAAAA,CAAgB,GAAA,CAAIxU,EAAG,CAAA,GAAvB,KAAAkC,CAAAA,CAA4B,EAAC,CAC3C8S,CAAAA,CAAOpS,EAAO5D,CAAM,CAAA,EAAK,CAAC+V,CAAAA,CAAQnS,EAAO5D,CAAM,CAAA,EAAKqW,CAAAA,CAAKzS,CAAAA,CAAM,GAAG,CAAA,EAAG0S,CAAAA,CAAM1S,CAAAA,CAAM,GAAG,CAAA,CAE1F,IAAA,IAAWnB,CAAAA,IAAAA,CAAQgB,EAAAA,CAAAgS,CAAAA,CAAe,GAAA,CAAIzU,EAAG,CAAA,GAAtB,KAAAyC,EAAAA,CAA2B,EAAC,CAC7C,GAAI,CAACsS,CAAAA,CAAQtT,CAAAA,CAAMzC,CAAM,EAAG,IAAA,IAAW4D,EAAAA,IAASnB,CAAAA,CAAK,MAAA,CAAY4T,EAAKzS,EAAAA,CAAM,GAAG,CAAA,EAAG0S,CAAAA,CAAM1S,GAAM,GAAG,EAErG,CACA,OAAOiM,CACT,CACF,CACF,CClGO,IAAM0G,EAAAA,CAAN,KAAmE,CAcxE,WAAA,CACWhT,EACT0J,CAAAA,CACAhD,CAAAA,CACA,CAHS,IAAA,CAAA,UAAA,CAAA1G,EAbX,IAAA,CAAiB,OAAA,CAAU,IAAI,GAAA,CAC/B,IAAA,CAAQ,eAAA,CAAkB,CAAA,CAC1B,IAAA,CAAQ,eAAiB,CAAA,CACzB,IAAA,CAAQ,eAAA,CAAkB,CAAA,CAO1B,KAAiB,aAAA,CAAgBiR,EAAAA,EAAoB,CApCvD,IAAAtR,EA2CI,IAAA,CAAK,SAAA,CAAY+G,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAW,EAAC,CAC7B,IAAA,CAAK,YAAa/G,CAAAA,CAAA+G,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,GAAT,IAAA,CAAA/G,CAAAA,CAAuB,GACzC6R,EAAAA,CAAiBxR,CAAAA,CAAY,IAAA,CAAK,SAAA,CAAW,IAAA,CAAK,UAAU,CAAA,CAC5D,IAAA,CAAK,SAAWmF,CAAAA,CAAgBuB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,SAAU1G,CAAAA,CAAW,QAAQ,CAAA,CACtE,IAAA,CAAK,WAAa6R,EAAAA,CAAiB7R,CAAU,CAAA,CAC7C,IAAMvD,CAAAA,CAAS+M,CAAAA,CAAa,IAAA,CAAK,UAAA,CAAW,UAAWE,CAAoD,CAAA,CAC3G,IAAA,CAAK,KAAA,CAAQ,CAAE,MAAA,CAAAjN,CAAAA,CAAQ,MAAA,CAAQ,EAAC,CAAG,cAAA,CAAgB,EAAC,CAAG,YAAA,CAAc,EAAC,CAAG,gBAAA,CAAkB,EAAC,CAAG,gBAAA,CAAkB,CAAA,CAAG,YAAA,CAAc,EAAC,CAAG,cAAA,CAAgB,KAAA,CAAO,UAAA,CAAY,KAAM,CAAA,CAC/K,IAAA,CAAK,UAAA,CAAW,eAAA,CAAgBA,CAAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,MAAM,EAC3D,CAjBA,IAAY,cAAA,EAA6C,CAAE,OAAO,IAAA,CAAK,SAAA,CAAU,cAAgB,CAmBjG,IAAI,MAAA,EAAqC,CAAE,OAAO,IAAA,CAAK,KAAA,CAAM,MAA4B,CACzF,IAAI,MAAA,EAA2C,CAAE,OAAO,IAAA,CAAK,MAAM,MAAQ,CAC3E,IAAI,cAAA,EAAoC,CAAE,OAAO,IAAA,CAAK,KAAA,CAAM,cAAgB,CAC5E,IAAI,gBAAA,EAA2B,CAAE,OAAO,IAAA,CAAK,KAAA,CAAM,gBAAkB,CACrE,IAAI,YAAA,EAAkD,CAAE,OAAO,KAAK,KAAA,CAAM,YAAc,CACxF,IAAI,cAAA,EAA0B,CAAE,OAAO,IAAA,CAAK,MAAM,cAAgB,CAClE,IAAI,UAAA,EAAsB,CAAE,OAAO,IAAA,CAAK,KAAA,CAAM,UAAY,CAE1D,IAAI,WAAA,EAAuB,CA7D7B,IAAAkD,CAAAA,CA8DI,OAAA,CAAA,CAAQA,CAAAA,CAAA,IAAA,CAAK,WAAW,KAAA,GAAhB,IAAA,CAAAA,CAAAA,CAAyB,EAAC,EAAG,MAAA,CAAS,CAChD,CAEA,IAAI,YAAA,EAA2B,CAC7B,OAAO,IAAA,CAAK,IAAA,CAAK,YACnB,CAEA,IAAI,aAA+B,CACjC,OAAO,IAAA,CAAK,IAAA,CAAK,WACnB,CAEA,IAAI,aAAA,EAA6B,CAC/B,OAAO,IAAA,CAAK,IAAA,CAAK,aACnB,CAEA,IAAI,WAAA,EAAuB,CACzB,OAAO,KAAK,gBAAA,GAAqB,CACnC,CAEA,IAAI,UAAA,EAAsB,CACxB,OAAO,IAAA,CAAK,kBAAoB,IAAA,CAAK,YAAA,CAAa,MAAA,CAAS,CAC7D,CAEA,IAAI,SAAA,EAAqB,CACvB,OAAO,IAAA,CAAK,UAAA,CAAW,YAAA,CAAa,IAAA,CAAK,MAAM,MAAA,CAAQ,IAAA,CAAK,gBAAA,CAAkB,IAAA,CAAK,UAAU,CAC/F,CAEA,IAAI,UAAA,EAAuC,CACzC,IAAMkI,CAAAA,CAAmC,MAAA,CAAO,OAAO,IAAI,CAAA,CAC3D,IAAA,IAAW3I,CAAAA,IAAQ,IAAA,CAAK,YAAA,CAAc,CACpC,IAAMN,EAAOM,CAAAA,CAAK,MAAA,CAAO,GAAA,CAAKmB,CAAAA,EAAUA,CAAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAQ5C,GAAQ,IAAA,CAAK,MAAA,CAAOA,CAAG,CAAA,GAAM,MAAS,CAAA,CAC7FmB,CAAAA,CAAK,MAAA,CAAS,CAAA,GAAGiJ,EAAO3I,CAAAA,CAAK,EAAE,CAAA,CAAIN,CAAAA,EACzC,CACA,OAAOiJ,CACT,CAEA,IAAI,QAAA,EAA+C,CACjD,IAAMoL,CAAAA,CAAQ,KAAK,YAAA,CAAa,MAAA,CAChC,OAAO,CAAE,QAAS,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,gBAAA,CAAmB,CAAA,CAAGA,CAAK,CAAA,CAAG,KAAA,CAAAA,CAAM,CACtE,CAEA,SAAA,CAAUjC,CAAAA,CAAkC,CAC1C,OAAO,IAAA,CAAK,aAAA,CAAc,SAAA,CAAUA,CAAQ,CAC9C,CAEA,WAAA,EAAsB,CACpB,OAAO,IAAA,CAAK,aAAA,CAAc,WAAA,EAC5B,CAEA,cAAA,CAAevT,CAAAA,CAAauT,CAAAA,CAAkC,CAC5D,OAAO,IAAA,CAAK,aAAA,CAAc,eAAevT,CAAAA,CAAKuT,CAAQ,CACxD,CAEA,gBAAA,CAAiBvT,CAAAA,CAAqB,CACpC,OAAO,KAAK,aAAA,CAAc,gBAAA,CAAiBA,CAAG,CAChD,CAEA,kBAAA,CAAmBuT,CAAAA,CAAkC,CACnD,OAAO,KAAK,aAAA,CAAc,kBAAA,CAAmBA,CAAQ,CACvD,CAEA,oBAAA,EAA+B,CAC7B,OAAO,KAAK,aAAA,CAAc,oBAAA,EAC5B,CAEA,QAAA,CAASvT,CAAAA,CAAaxB,CAAAA,CAAsB,CAC1C,GAAM,CAAE,MAAA,CAAAQ,CAAAA,CAAQ,MAAA,CAAA4M,CAAO,CAAA,CAAI,IAAA,CAAK,KAAA,CAC1B6J,EAAgB,IAAA,CAAK,WAAA,CAAc,IAAA,CAAK,YAAA,CAAe,KACvDC,CAAAA,CAAe,CAAC,MAAA,CAAO,EAAA,CAAG1W,EAAOgB,CAAG,CAAA,CAAGxB,CAAK,CAAA,CAC5C+Q,CAAAA,CAAgB3D,CAAAA,CAAO5L,CAAG,CAAA,CAChChB,EAAOgB,CAAG,CAAA,CAAIxB,CAAAA,CACdiQ,EAAAA,CAAW,IAAA,CAAK,SAAA,CAAWzO,CAAAA,CAAK0V,CAAY,EAC5C,IAAA,GAAW,CAACC,CAAAA,CAAQxU,CAAI,CAAA,GAAK,IAAA,CAAK,OAAA,CAAauU,CAAAA,EAAgBvU,EAAK,QAAA,CAASnB,CAAG,CAAA,EAAG,IAAA,CAAK,QAAQ,MAAA,CAAO2V,CAAM,CAAA,CAC7G,IAAMR,EAAgB,IAAA,CAAK,UAAA,CAAW,eAAA,CAAgBnW,CAAAA,CAAQ4M,CAAM,CAAA,CACpE+C,CAAAA,CAAiB,IAAA,CAAK,UAAWwG,CAAa,CAAA,CAC9C,IAAMS,CAAAA,CAAchH,GAAyB,IAAA,CAAK,SAAA,CAAW5O,CAAG,CAAA,CAC1D6P,EAAgB,IAAI,GAAA,CAAI,CAAC,GAAGsF,CAAAA,CAAe,GAAGS,CAAW,CAAC,GAC5DF,CAAAA,EAAgBnG,CAAAA,GAAkB3D,CAAAA,CAAO5L,CAAG,IAAG6P,CAAAA,CAAc,GAAA,CAAI7P,CAAG,CAAA,CACxE,IAAMkV,CAAAA,CAAgBQ,CAAAA,EAAgBP,CAAAA,CAAc,IAAA,CAAO,CAAA,CACrD7G,CAAAA,CAAmB4G,CAAAA,EAAiB,IAAA,CAAK,WAAW,gBAAA,CAAiBlV,CAAAA,CAAKmV,CAAa,CAAA,CAC7F,GAAIM,CAAAA,EAAiBnH,CAAAA,CAAkB,CACrC,KAAK,UAAA,CAAW,WAAA,CAAY,IAAA,CAAM,IAAI,CAAA,CACtC,IAAA,CAAK,KAAA,CAAM,gBAAA,CAAmB4B,GAAmBuF,CAAAA,CAAe,IAAA,CAAK,YAAA,CAAc,IAAA,CAAK,gBAAgB,CAAA,CACxG,IAAA,IAAWxG,CAAAA,IAAUF,CAAAA,CAAmB,KAAK,SAAS,CAAA,CAAGc,CAAAA,CAAc,GAAA,CAAIZ,CAAM,EACnF,CACA,IAAA,CAAK,OAAO,CAAE,SAAA,CAAWY,CAAAA,CAAe,gBAAA,CAAAvB,CAAAA,CAAkB,aAAA,CAAA4G,CAAc,CAAC,EAC3E,CAEA,SAAA,CAAUtJ,CAAAA,CAAsC,CAC9CmC,CAAAA,CAAsB,IAAA,CAAK,SAAA,CAAWnC,CAAAA,CAAQ,IAAI,EACpD,CAEA,eAAA,CAAgB5L,CAAAA,CAAa6V,EAAwB,CACnD,IAAM1J,CAAAA,CAAW,IAAA,CAAK,MAAM,YAAA,CAAanM,CAAG,CAAA,GAAM,IAAA,CAC9C6V,CAAAA,CAAS,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa7V,CAAG,CAAA,CAAI,IAAA,CACvC,OAAO,IAAA,CAAK,KAAA,CAAM,YAAA,CAAaA,CAAG,CAAA,CACvC,KAAK,MAAA,CAAO,CAAE,SAAA,CAAWmM,CAAAA,GAAa0J,CAAAA,CAAU,EAAC,CAAI,CAAC7V,CAAG,CAAE,CAAC,EAC9D,CAEA,sBAA6B,CAC3B,IAAA,CAAK,eAAA,EAAA,CACL,IAAA,CAAK,iBACL,IAAA,CAAK,KAAA,CAAM,cAAA,CAAiB,KAAA,CAC5B,IAAA,CAAK,KAAA,CAAM,UAAA,CAAa,KAAA,CACxB,KAAK,MAAA,GACP,CAEA,IAAA,EAAyB,CAAE,OAAOoS,EAAAA,CAAW,IAAA,CAAK,SAAA,CAAW,MAAM,CAAG,CACtE,IAAA,EAAyB,CAAE,OAAOA,EAAAA,CAAW,IAAA,CAAK,SAAA,CAAW,MAAM,CAAG,CACtE,IAAA,CAAKd,CAAAA,CAA0C,CAAE,OAAOa,EAAAA,CAAS,IAAA,CAAK,SAAA,CAAWb,CAAM,CAAG,CAC1F,MAAA,CAAOwE,CAAAA,CAA0C,CAAE,OAAOzE,EAAAA,CAAW,IAAA,CAAK,UAAWyE,CAAO,CAAG,CAC/F,aAAA,CAAcH,CAAAA,CAAyB,CAAE,OAAO,IAAA,CAAK,QAAQ,GAAA,CAAIA,CAAM,CAAG,CAC1E,QAAA,EAAmC,CAAE,OAAOvG,EAAAA,CAAa,KAAK,SAAS,CAAG,CAC1E,aAAA,CAAcpP,EAA4B,CAAE,OAAOsP,EAAAA,CAAY,IAAA,CAAK,UAAWtP,CAAG,CAAG,CACrF,eAAA,EAAoC,CAAE,OAAOkP,CAAAA,CAAgB,IAAA,CAAK,SAAS,CAAuB,CAClG,iBAAA,CAAkBlP,CAAAA,CAAmB,CAAEmT,EAAAA,CAAkB,IAAA,CAAK,SAAA,CAAWnT,CAAG,EAAG,CAC/E,KAAA,CAAMhB,CAAAA,CAAwC,CAAEyQ,EAAAA,CAAY,IAAA,CAAK,SAAA,CAAWzQ,CAAM,EAAG,CAErF,IAAY,IAAA,EAAO,CACjB,OAAO,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,KAAK,KAAA,CAAM,MAAA,CAAQ,IAAA,CAAK,gBAAgB,CACvE,CAEA,IAAY,SAAA,EAA6B,CACvC,OAAO,IACT,CAEQ,MAAA,CAAOiK,CAAAA,CAAgC,EAAC,CAAS,CACvD,KAAK,UAAA,CAAW,WAAA,CAAY,CAAC,CAACA,CAAAA,CAAQ,gBAAA,CAAkB,CAAC,CAACA,EAAQ,aAAa,CAAA,CAC/E,IAAA,CAAK,aAAA,CAAc,OAAOA,CAAO,EACnC,CACF,CAAA,CC/KA,IAAM8M,EAAAA,CAAe,uGAAA,CAOfC,EAAAA,CAAqB,IAAM,IAAA,CAE3BC,EAAAA,CAAS,CAAChU,CAAAA,CAAgBjC,IAAgB,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKiC,EAAQjC,CAAG,CAAA,CAOhG,SAASkW,EAAAA,CAAa3T,EAA4ByJ,CAAAA,CAAqBjG,CAAAA,CAA8B,CAjCrG,IAAA7D,CAAAA,CAkCE,IAAMD,CAAAA,CAAS8D,CAAAA,GAAU,MAAQ,OAAOA,CAAAA,EAAU,QAAA,EAAY,CAAC,MAAM,OAAA,CAAQA,CAAK,CAAA,CAAIA,CAAAA,CAAmC,EAAC,CACpHoQ,CAAAA,CAAa/B,EAAAA,CAAiB7R,CAAU,CAAA,CACxCpB,CAAAA,CAAO,CAAC,GAAG,IAAI,GAAA,CAAI6K,CAAAA,CAAO,GAAA,CAAI,CAAC,CAAE,GAAA,CAAAhM,CAAI,CAAA,GAAMA,CAAG,CAAC,CAAC,CAAA,CAAE,MAAA,CAAQA,CAAAA,EAAQiW,EAAAA,CAAOhU,CAAAA,CAAQjC,CAAG,CAAC,CAAA,CACvFoK,CAAAA,CAAuB,CAAE,MAAA,CAAQ,EAAC,CAAG,MAAA,CAAQ,IAAI,GAAM,EAC3D,IAAA,IAASgM,CAAAA,CAAQ,CAAA,CAAGA,CAAAA,EAASpK,CAAAA,CAAO,MAAA,CAAQoK,CAAAA,EAAAA,CAAS,CACnD,IAAMpX,CAAAA,CAAkC,EAAC,CACzC,IAAA,IAAWgB,CAAAA,IAAOmB,CAAAA,CAAM,CACtB,IAAM3C,EAAQqK,EAAAA,CAAAA,CAAe3G,CAAAA,CAAAkI,CAAAA,CAAO,MAAA,CAAO,GAAA,CAAIpK,CAAG,CAAA,GAArB,IAAA,CAAAkC,EAA0B8J,CAAAA,CAAO,IAAA,CAAMpJ,CAAAA,EAAUA,CAAAA,CAAM,MAAQ5C,CAAG,CAAA,CAAIiC,CAAAA,CAAOjC,CAAG,CAAC,CAAA,CAC1GxB,CAAAA,GAAU,MAAA,GAAWQ,CAAAA,CAAOgB,CAAG,CAAA,CAAIxB,CAAAA,EACzC,CACA,IAAMmS,CAAAA,CAAS,IAAI,GAAA,CACnB,IAAA,IAAW3Q,CAAAA,IAAOmB,CAAAA,CAAM,CACtB,IAAMyB,EAAQuT,CAAAA,CAAW,WAAA,CAAYnW,CAAAA,CAAKhB,CAAM,CAAA,CAC5C4D,CAAAA,EAAO+N,CAAAA,CAAO,GAAA,CAAI3Q,EAAK4C,CAAK,EAClC,CACA,IAAMyT,EAAUlV,CAAAA,CAAK,KAAA,CAAOnB,CAAAA,EAAQ2Q,CAAAA,CAAO,IAAI3Q,CAAG,CAAA,GAAMoK,CAAAA,CAAO,MAAA,CAAO,GAAA,CAAIpK,CAAG,CAAC,CAAA,CAE9E,GADAoK,CAAAA,CAAS,CAAE,MAAA,CAAApL,CAAAA,CAAQ,OAAA2R,CAAO,CAAA,CACtB0F,CAAAA,CAAS,KACf,CACA,OAAOjM,CACT,CAEA,SAASkM,EAAAA,CAAW,CAAE,MAAA,CAAAtX,CAAAA,CAAQ,OAAA2R,CAAO,CAAA,CAAiBhH,CAAAA,CAA8C,CAClG,IAAMiC,CAAAA,CAAS,IAAI,GAAA,CACnB,IAAA,GAAW,CAAC5L,CAAAA,CAAK4C,CAAK,CAAA,GAAK+N,CAAAA,CAAQ,CACjC,IAAM9Q,CAAAA,CAAQ6J,EAAAA,CAAU9G,EAAO5D,CAAAA,CAAOgB,CAAG,CAAA,CAAG2J,CAAO,CAAA,CAC/C9J,CAAAA,EAAO+L,CAAAA,CAAO,GAAA,CAAI5L,EAAKH,CAAK,EAClC,CACA,OAAO+L,CACT,CAEA,SAAS2K,EAAAA,CAAahU,EAA4BiU,CAAAA,CAA8C,CAjEhG,IAAAtU,CAAAA,CAkEE,IAAMuU,CAAAA,CAASzK,CAAAA,EAAwBA,CAAAA,CAAO,GAAA,CAAKpJ,GAAW4T,CAAAA,CAAQ,GAAA,CAAI5T,CAAAA,CAAM,GAAG,CAAA,CAAI8T,EAAAA,CAAA9W,CAAAA,CAAA,EAAA,CAAKgD,GAAL,CAAY,UAAA,CAAY,MAAU,CAAA,CAAA,CAAIA,CAAM,CAAA,CAC7HF,CAAAA,CAAAA,CAAQR,CAAAA,CAAAK,EAAW,KAAA,GAAX,IAAA,CAAA,MAAA,CAAAL,CAAAA,CAAkB,GAAA,CAAKT,CAAAA,EAAUiV,EAAAA,CAAA9W,CAAAA,CAAA,EAAA,CAAK6B,GAAL,CAAW,MAAA,CAAQgV,CAAAA,CAAMhV,CAAAA,CAAK,MAAM,CAAE,CAAA,CAAA,CAAA,CACrF,OAAO7B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,GAAK2C,CAAAA,CAAAA,CAAgBA,CAAAA,CAAW,MAAA,EAAU,CAAE,MAAA,CAAQkU,CAAAA,CAAMlU,CAAAA,CAAW,MAAM,CAAE,CAAA,CAAA,CAAQG,CAAAA,EAAS,CAAE,KAAA,CAAAA,CAAM,CAAA,CAC/G,CAEA,SAASiU,GAAkB3K,CAAAA,CAAqB4K,CAAAA,CAAqC,EAAC,CAAgC,CACpH,IAAMpU,CAAAA,CAA0C,GAChD,IAAA,GAAW,CAAE,UAAA,CAAAqD,CAAW,IAAKmG,CAAAA,CAAYnG,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAY,YAAWrD,CAAAA,CAAWqD,CAAAA,CAAW,SAAS,CAAA,CAAImQ,EAAAA,CAAAA,CACnG,OAAOpW,CAAAA,CAAAA,CAAAA,CAAA,EAAA,CAAK4C,GAAeoU,CAAAA,CAC7B,CAEA,SAASC,EAAAA,CAAO7K,EAAqBjG,CAAAA,CAAyB,CAC5D,OAAIA,CAAAA,GAAU,MAAQ,OAAOA,CAAAA,EAAU,QAAA,EAAY,CAACkQ,EAAAA,CAAOlQ,CAAAA,CAAO,QAAQ,CAAA,CAAU,MAC7E,CAACiG,CAAAA,CAAO,IAAA,CAAMpJ,CAAAA,EAAUA,EAAM,GAAA,GAAQ,QAAA,EAAYA,CAAAA,CAAM,GAAA,GAAQ,cAAc,CACvF,CAEA,SAASkU,EAAAA,CAAWpK,CAAAA,CAAoBoF,CAAAA,CAA6B,CACnE,GAAI,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAY,CAAA,CAAG,OAClC,IAAMiF,CAAAA,CAAY,IAAI,IAAIjF,CAAY,CAAA,CACtC,IAAA,IAASvR,CAAAA,CAAQ,CAAA,CAAGA,CAAAA,CAAQmM,CAAAA,CAAO,YAAA,CAAa,OAAQnM,CAAAA,EAAAA,CAAS,CAC/D,IAAMkB,CAAAA,CAAOiL,EAAO,YAAA,CAAanM,CAAK,CAAA,CAClCkB,CAAAA,CAAK,MAAQsV,CAAAA,CAAU,GAAA,CAAItV,CAAAA,CAAK,EAAE,CAAA,EAAGwP,EAAAA,CAAWvE,CAAAA,CAAsCnM,CAAK,EACjG,CACF,CAEO,SAASyW,EAAAA,CACdzU,CAAAA,CACAvD,CAAAA,CACAiK,CAAAA,CAA6B,GACX,CAClB0C,EAAAA,CAAgBpJ,CAAU,CAAA,CAC1B,IAAMyJ,CAAAA,CAASF,EAAAA,CAAavJ,CAAU,EAChC0U,CAAAA,CAAWf,EAAAA,CAAa3T,CAAAA,CAAYyJ,CAAAA,CAAQhN,CAAM,CAAA,CAClDyO,CAAAA,CAAW/F,CAAAA,CAAgBuB,CAAAA,CAAQ,SAAU1G,CAAAA,CAAW,QAAQ,CAAA,CAChEiU,CAAAA,CAAUF,EAAAA,CAAWW,CAAAA,CAAUxJ,CAAQ,CAAA,CACvCyJ,EAAgB,CAAE,UAAA,CAAYP,EAAAA,CAAkB3K,CAAAA,CAAQ/C,CAAAA,CAAQ,UAAU,CAAA,CAAG,QAAA,CAAAwE,EAAU,SAAA,CAAW,IAAM,CAAC,CAAE,CAAA,CAC3Gf,CAAAA,CAAS,IAAI6I,EAAAA,CAAWgB,GAAahU,CAAAA,CAAYiU,CAAO,CAAA,CAAGS,CAAAA,CAAS,OAAQC,CAAa,CAAA,CAC/FJ,EAAAA,CAAWpK,CAAAA,CAAQzD,EAAQ,YAAY,CAAA,CACvC,IAAM2C,CAAAA,CAASc,CAAAA,CAAO,QAAA,EAAS,CACzB+F,CAAAA,CAAY/F,EAAO,eAAA,EAAgB,CACzC,IAAA,GAAW,CAAC1M,EAAKH,CAAK,CAAA,GAAK2W,CAAAA,CAAaP,EAAAA,CAAOxD,EAAWzS,CAAG,CAAA,GAAG4L,CAAAA,CAAO5L,CAAG,CAAA,CAAIH,CAAAA,CAAAA,CAC9E,OAAIgX,EAAAA,CAAO7K,EAAQhN,CAAM,CAAA,GAAG4M,CAAAA,CAAO,MAAA,CAASmK,IACrC,CAAE,MAAA,CAAQtD,CAAAA,CAAW,MAAA,CAAA7G,CAAO,CACrC","file":"server.iife.js","sourcesContent":["import type { ShowCondition } from '../types';\n\nexport const CONDITION_OPERATORS = ['eq', 'neq', 'in', 'notIn', 'notEmpty', 'gt', 'gte', 'lt', 'lte'] as const;\n\nexport function isBlank(value: unknown): boolean {\n return value == null || value === '' || (Array.isArray(value) && !value.length);\n}\n\nfunction toNumber(value: unknown): number | undefined {\n const number = typeof value === 'string' && value.trim() !== '' ? Number(value) : value;\n return typeof number === 'number' && Number.isFinite(number) ? number : undefined;\n}\n\nfunction compare(value: unknown, operand: number, test: (value: number, operand: number) => boolean): boolean {\n const number = toNumber(value);\n return number !== undefined && test(number, operand);\n}\n\nexport function evaluateCondition(\n condition: ShowCondition,\n values: Record<string, unknown>,\n): boolean {\n const value = values[condition.field];\n if (condition.eq !== undefined) return value === condition.eq;\n if (condition.neq !== undefined) return value !== condition.neq;\n if (condition.in !== undefined) return condition.in.includes(value as string | number);\n if (condition.notIn !== undefined) return !condition.notIn.includes(value as string | number);\n if (condition.notEmpty !== undefined) return !condition.notEmpty || !isBlank(value);\n if (condition.gt !== undefined) return compare(value, condition.gt, (a, b) => a > b);\n if (condition.gte !== undefined) return compare(value, condition.gte, (a, b) => a >= b);\n if (condition.lt !== undefined) return compare(value, condition.lt, (a, b) => a < b);\n if (condition.lte !== undefined) return compare(value, condition.lte, (a, b) => a <= b);\n return false;\n}\n","export type DefinitionIssueCode =\n | 'invalid-type'\n | 'missing-property'\n | 'fields-and-steps'\n | 'duplicate-step-id'\n | 'duplicate-key'\n | 'reserved-key'\n | 'route-target'\n | 'unknown-field'\n | 'forward-reference'\n | 'condition-operator-count'\n | 'unknown-operator'\n | 'condition-value-mismatch'\n | 'condition-cycle'\n | 'invalid-pattern'\n | 'invalid-range'\n | 'rule-not-applicable'\n | 'missing-options'\n | 'default-not-in-options'\n | 'unknown-field-type'\n | 'unknown-validator'\n | 'skip-unreachable'\n | 'route-fallthrough'\n | 'unsupported-format-version'\n | 'i18n-unbound-slot'\n | 'unknown-i18n-slot'\n | 'unknown-message-key'\n | 'unknown-label-key'\n | 'i18n-unsafe-identifier';\n\nexport interface DefinitionIssue {\n code: DefinitionIssueCode;\n severity: 'error' | 'warning';\n path: string;\n message: string;\n hint?: string;\n}\n\nexport class FormDefinitionError extends Error {\n readonly issues: DefinitionIssue[];\n\n constructor(issues: DefinitionIssue[]) {\n super(`Invalid form definition:\\n${issues.map((issue) => issue.message).join('\\n')}`);\n this.name = 'FormDefinitionError';\n this.issues = issues;\n }\n}\n\nfunction create(severity: DefinitionIssue['severity']) {\n return (code: DefinitionIssueCode, path: string, problem: string, hint?: string): DefinitionIssue => ({\n code,\n severity,\n path,\n message: `${path || '/'}: ${problem}.${hint ? ` ${hint}.` : ''}`,\n ...(hint && { hint: `${hint}.` }),\n });\n}\n\nexport const error = create('error');\nexport const warning = create('warning');\n\nexport function pointer(key: string): string {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\nexport function isError(issue: DefinitionIssue): boolean {\n return issue.severity === 'error';\n}\n\nexport function oneOf(values: string[]): string {\n if (values.length === 1) return `Use ${JSON.stringify(values[0])}`;\n const shown = values.slice(0, 10).map((value) => JSON.stringify(value)).join(', ');\n return values.length > 10 ? `Use one of: ${shown}, ...` : `Use one of: ${shown}`;\n}\n\nfunction distance(a: string, b: string): number {\n let row = Array.from({ length: b.length + 1 }, (_, index) => index);\n for (let i = 1; i <= a.length; i++) {\n const next = [i];\n for (let j = 1; j <= b.length; j++) {\n next[j] = Math.min(row[j] + 1, next[j - 1] + 1, row[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));\n }\n row = next;\n }\n return row[b.length];\n}\n\nexport function closest(value: string, candidates: string[]): string | undefined {\n const lower = value.toLowerCase();\n return candidates.find((candidate) => candidate !== value && distance(lower, candidate.toLowerCase()) <= (candidate.length > 4 ? 2 : 1));\n}\n\nexport function suggest(value: string, candidates: string[]): string | undefined {\n const match = closest(value, candidates);\n if (match !== undefined) return `Use ${JSON.stringify(match)}`;\n return candidates.length ? oneOf(candidates) : undefined;\n}\n","import { CONDITION_OPERATORS } from '../visibility/evaluate-condition';\nimport type { ShowCondition } from '../types';\nimport type { CheckContext, ConditionEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, pointer } from './issues';\n\nexport const OPERATORS: readonly string[] = CONDITION_OPERATORS;\n\nfunction operatorIssues({ suggest }: CheckContext, condition: ShowCondition, path: string): DefinitionIssue[] {\n const keys = Object.keys(condition).filter((key) => key !== 'field');\n const unknown = keys.filter((key) => !OPERATORS.includes(key));\n const issues = unknown.map((key) => error('unknown-operator', `${path}/${pointer(key)}`, `\"${key}\" is not a condition operator`, suggest(key, [...OPERATORS])));\n const count = keys.length - unknown.length;\n if (count !== 1 && !(count === 0 && unknown.length)) {\n const problem = count ? `the condition has ${count} operators` : 'the condition has no operator';\n issues.push(error('condition-operator-count', path, problem, `Use exactly one of: ${OPERATORS.join(', ')}`));\n }\n return issues;\n}\n\nfunction referenceIssues(context: CheckContext, { condition, path, owner, step, key }: ConditionEntry): DefinitionIssue[] {\n const target = context.keys.get(condition.field);\n if (!target) {\n const candidates = context.keyList.filter((candidate) => candidate !== key);\n return [error('unknown-field', `${path}/field`, `\"${condition.field}\" is not a field key`, context.suggest(condition.field, candidates))];\n }\n if (step < 0 || owner === 'action') return [];\n const sameStep = owner === 'step' ? 'this or a later step' : 'a later step';\n if (target.step < step || (owner !== 'step' && target.step === step)) return [];\n const allowed = owner === 'step' ? 'earlier steps' : 'this or an earlier step';\n return [error('forward-reference', `${path}/field`, `\"${condition.field}\" belongs to ${sameStep}`, `${owner === 'route' ? 'Route' : owner === 'step' ? 'Step' : 'Field'} conditions can use fields of ${allowed}`)];\n}\n\nexport function conditionErrors(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (typeof condition.field !== 'string') return [error('missing-property', `${path}/field`, 'the condition has no \"field\"', 'Add the key of the field to test')];\n return [...operatorIssues(context, condition, path), ...referenceIssues(context, entry)];\n}\n\nexport function conditionIssues(context: CheckContext): DefinitionIssue[] {\n return context.conditions.flatMap((entry) => conditionErrors(context, entry));\n}\n","import type { FormAction, FormDefinition, FormField, ShowCondition } from '../types';\n\nexport interface FieldEntry {\n field: FormField;\n path: string;\n step: number;\n}\n\nexport interface ConditionEntry {\n condition: ShowCondition;\n path: string;\n owner: 'field' | 'step' | 'route' | 'action';\n step: number;\n key?: string;\n}\n\nexport interface CheckContext {\n definition: FormDefinition;\n entries: FieldEntry[];\n keys: Map<string, FieldEntry>;\n keyList: string[];\n conditions: ConditionEntry[];\n validators?: Record<string, unknown>;\n suggest: (value: string, candidates: string[]) => string | undefined;\n}\n\ntype Owner = { show?: ShowCondition[]; showAny?: ShowCondition[] };\n\nfunction collect(target: ConditionEntry[], source: Owner, path: string, owner: ConditionEntry['owner'], step: number, key?: string): void {\n for (const name of ['show', 'showAny'] as const) {\n (source[name] ?? []).forEach((condition, index) => target.push({ condition, path: `${path}/${name}/${index}`, owner, step, key }));\n }\n}\n\nfunction collectAction(target: ConditionEntry[], action: FormAction | false | undefined, path: string, step: number): void {\n (action ? action.disabled ?? [] : []).forEach((condition, index) => (\n target.push({ condition, path: `${path}/disabled/${index}`, owner: 'action', step })\n ));\n}\n\nexport function createContext(definition: FormDefinition, validators?: Record<string, unknown>, suggest: CheckContext['suggest'] = () => undefined): CheckContext {\n const steps = definition.steps ?? [];\n const entries: FieldEntry[] = steps.length\n ? steps.flatMap((step, index) => step.fields.map((field, position) => ({ field, path: `/steps/${index}/fields/${position}`, step: index })))\n : (definition.fields ?? []).map((field, position) => ({ field, path: `/fields/${position}`, step: -1 }));\n const keys = new Map<string, FieldEntry>();\n for (const entry of entries) if (!keys.has(entry.field.key)) keys.set(entry.field.key, entry);\n const conditions: ConditionEntry[] = [];\n for (const entry of entries) collect(conditions, entry.field, entry.path, 'field', entry.step, entry.field.key);\n steps.forEach((step, index) => {\n collect(conditions, step, `/steps/${index}`, 'step', index);\n (step.routes ?? []).forEach((route, position) => collect(conditions, route, `/steps/${index}/routes/${position}`, 'route', index));\n for (const name of ['next', 'back', 'skip'] as const) collectAction(conditions, step[name], `/steps/${index}/${name}`, index);\n });\n collectAction(conditions, definition.submit, '/submit', -1);\n collectAction(conditions, definition.cancel, '/cancel', -1);\n return {\n definition,\n entries,\n keys,\n keyList: [...keys.keys()],\n conditions,\n validators,\n suggest,\n };\n}\n","import type { FieldValidation } from '../types';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nfunction rangeIssue(rules: FieldValidation, path: string, min: 'min' | 'minLength', max: 'max' | 'maxLength'): DefinitionIssue[] {\n const low = rules[min];\n const high = rules[max];\n if (low === undefined || high === undefined || low <= high) return [];\n return [error('invalid-range', `${path}/validation/${min}`, `${min} (${low}) is greater than ${max} (${high})`, `Lower ${min} or raise ${max}`)];\n}\n\nfunction patternIssue(pattern: string | undefined, path: string): DefinitionIssue[] {\n if (pattern === undefined) return [];\n try {\n new RegExp(pattern);\n return [];\n } catch {\n return [error('invalid-pattern', `${path}/validation/pattern`, `${JSON.stringify(pattern)} is not a valid regular expression`, 'Fix the pattern or escape special characters with a backslash')];\n }\n}\n\nfunction ruleIssues(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation;\n if (!rules) return [];\n const match = rules.matchField;\n return [\n ...rangeIssue(rules, path, 'minLength', 'maxLength'),\n ...rangeIssue(rules, path, 'min', 'max'),\n ...patternIssue(rules.pattern, path),\n ...(match === undefined || context.keys.has(match) ? [] : [error('unknown-field', `${path}/validation/matchField`, `\"${match}\" is not a field key`, context.suggest(match, context.keyList))]),\n ];\n}\n\nexport function fieldIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => ruleIssues(context, entry));\n}\n","import type { CheckContext } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nfunction dependencyGraph({ definition, entries, keys }: CheckContext): Map<string, string[]> {\n const graph = new Map<string, string[]>();\n const link = (owners: string[], dependencies: string[]) => {\n const known = dependencies.filter((key) => keys.has(key));\n if (known.length) for (const owner of owners) graph.set(owner, [...(graph.get(owner) ?? []), ...known]);\n };\n const fieldsOf = (source: { show?: { field: string }[]; showAny?: { field: string }[] }) => (\n [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field)\n );\n for (const { field } of entries) link([field.key], fieldsOf(field));\n for (const step of definition.steps ?? []) link(step.fields.map((field) => field.key), fieldsOf(step));\n return graph;\n}\n\nfunction findCycles(graph: Map<string, string[]>): string[][] {\n const visiting = new Map<string, boolean>();\n const cycles: string[][] = [];\n for (const start of graph.keys()) {\n if (visiting.has(start)) continue;\n visiting.set(start, true);\n const stack: [string, number][] = [[start, 0]];\n while (stack.length > 0) {\n const frame = stack[stack.length - 1];\n const neighbor = graph.get(frame[0])?.[frame[1]++];\n if (neighbor === undefined) {\n visiting.set(frame[0], false);\n stack.pop();\n } else if (visiting.get(neighbor)) {\n const nodes = stack.map(([node]) => node);\n cycles.push([...nodes.slice(nodes.indexOf(neighbor)), neighbor]);\n } else if (!visiting.has(neighbor)) {\n visiting.set(neighbor, true);\n stack.push([neighbor, 0]);\n }\n }\n }\n return cycles;\n}\n\nfunction cycleIssues(context: CheckContext): DefinitionIssue[] {\n return findCycles(dependencyGraph(context)).map((cycle) => (\n error('condition-cycle', context.keys.get(cycle[0])!.path, `show conditions form a cycle: ${cycle.join(' -> ')}`, 'Remove one of the conditions in the cycle')\n ));\n}\n\nexport function graphIssues(context: CheckContext): DefinitionIssue[] {\n return cycleIssues(context);\n}\n","import type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nexport const FORMAT_VERSION = '1.0';\n\nexport function formatIssues({ formatVersion: version }: Record<string, unknown>): DefinitionIssue[] {\n if (version === undefined) return [];\n const valid = typeof version === 'string' && /^[1-9]\\d*(\\.\\d+)?$/.test(version);\n if (valid && parseInt(version) <= parseInt(FORMAT_VERSION)) return [];\n return [valid\n ? error('unsupported-format-version', '/formatVersion', `format ${version} is not supported`, 'Upgrade @formhaus/core')\n : error('invalid-type', '/formatVersion', 'must be a version string', `Use \"${FORMAT_VERSION}\"`)];\n}\n","import type { DefinitionIssue } from './issues';\nimport { formatIssues } from './format';\nimport { error, pointer } from './issues';\n\ntype Entry = Record<string, unknown>;\ntype Check = (value: Entry, path: string) => DefinitionIssue[];\ntype Kind = 'string' | 'number' | 'boolean' | 'requirement' | 'scalar' | 'list';\n\nexport const isEntry = (value: unknown): value is Entry =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst KINDS: Record<Kind, [(value: unknown) => boolean, string]> = {\n string: [(value) => typeof value === 'string', 'a string'],\n number: [(value) => typeof value === 'number' && Number.isFinite(value), 'a number'],\n boolean: [(value) => typeof value === 'boolean', 'true or false'],\n requirement: [(value) => ['boolean', 'string'].includes(typeof value), 'true, false or a message string'],\n scalar: [(value) => ['string', 'number', 'boolean'].includes(typeof value), 'a string, number or boolean'],\n list: [(value) => Array.isArray(value) && value.every((item) => ['string', 'number'].includes(typeof item)), 'an array of strings or numbers'],\n};\n\nfunction typed(value: Entry, rules: Record<string, Kind>, path: string): DefinitionIssue[] {\n return Object.entries(rules).flatMap(([key, kind]) => {\n const [valid, name] = KINDS[kind];\n return value[key] === undefined || valid(value[key]) ? [] : [error('invalid-type', `${path}/${pointer(key)}`, `\"${key}\" must be ${name}`)];\n });\n}\n\nfunction list(value: unknown, path: string, name: string, check: Check, required = false): DefinitionIssue[] {\n if (value == null && !required) return [];\n if (!Array.isArray(value)) return [error('invalid-type', path, 'must be an array', required ? 'Use [] when there is nothing to list' : undefined)];\n return value.flatMap((item, index) => (\n isEntry(item) ? check(item, `${path}/${index}`) : [error('invalid-type', `${path}/${index}`, `must be ${name}`)]\n ));\n}\n\nfunction text(value: Entry, key: string, path: string): DefinitionIssue[] {\n return typeof value[key] === 'string' ? [] : [error('missing-property', `${path}/${key}`, `\"${key}\" must be a string`)];\n}\n\nconst condition: Check = (value, path) => typed(value, { field: 'string', eq: 'scalar', neq: 'scalar', in: 'list', notIn: 'list', notEmpty: 'boolean', gt: 'number', gte: 'number', lt: 'number', lte: 'number' }, path);\n\nfunction conditions(value: Entry, path: string): DefinitionIssue[] {\n return [\n ...list(value.show, `${path}/show`, 'a condition object', condition),\n ...list(value.showAny, `${path}/showAny`, 'a condition object', condition),\n ];\n}\n\nfunction action(value: unknown, path: string): DefinitionIssue[] {\n if (!isEntry(value)) return [];\n return [...typed(value, { label: 'string' }, path), ...list(value.disabled, `${path}/disabled`, 'a condition object', condition)];\n}\n\nconst option: Check = (value, path) => [...text(value, 'value', path), ...typed(value, { label: 'string' }, path)];\n\nconst RULES: Record<string, Kind> = {\n required: 'requirement', minLength: 'number', maxLength: 'number', min: 'number', max: 'number', pattern: 'string', matchField: 'string', validator: 'string',\n minLengthMessage: 'string', maxLengthMessage: 'string', minMessage: 'string', maxMessage: 'string', patternMessage: 'string', matchFieldMessage: 'string',\n};\n\nfunction validation(value: unknown, path: string): DefinitionIssue[] {\n if (value === undefined) return [];\n return isEntry(value) ? typed(value, RULES, path) : [error('invalid-type', path, 'must be an object of validation rules')];\n}\n\nfunction dependencies(value: unknown, path: string): DefinitionIssue[] {\n const valid = value === undefined || (Array.isArray(value) && value.every((key) => typeof key === 'string'));\n return valid ? [] : [error('invalid-type', path, 'must be an array of field keys')];\n}\n\nconst field: Check = (value, path) => [\n ...text(value, 'key', path),\n ...text(value, 'type', path),\n ...typed(value, { label: 'string', placeholder: 'string', helperText: 'string' }, path),\n ...conditions(value, path),\n ...list(value.options, `${path}/options`, 'an option object', option),\n ...validation(value.validation, `${path}/validation`),\n ...dependencies(value.optionsDependsOn, `${path}/optionsDependsOn`),\n];\n\nconst route: Check = (value, path) => [\n ...(value.to === null || typeof value.to === 'string' ? [] : [error('missing-property', `${path}/to`, '\"to\" must be a step id or null')]),\n ...conditions(value, path),\n];\n\nconst step: Check = (value, path) => [\n ...text(value, 'id', path),\n ...typed(value, { title: 'string', description: 'string' }, path),\n ...list(value.fields, `${path}/fields`, 'a field object', field, true),\n ...conditions(value, path),\n ...list(value.routes, `${path}/routes`, 'a route object', route),\n ...['next', 'back', 'skip'].flatMap((name) => action(value[name], `${path}/${name}`)),\n];\n\nexport function shapeIssues(input: unknown): DefinitionIssue[] {\n if (!isEntry(input)) return [error('invalid-type', '', 'the form definition must be an object')];\n const format = formatIssues(input);\n if (format.length) return format;\n return [\n ...list(input.fields, '/fields', 'a field object', field),\n ...list(input.steps, '/steps', 'a step object', step),\n ...action(input.submit, '/submit'),\n ...action(input.cancel, '/cancel'),\n ];\n}\n\nexport function metaIssues(input: Entry): DefinitionIssue[] {\n return [\n ...text(input, 'id', ''),\n ...(isEntry(input.submit) ? [] : [error('missing-property', '/submit', 'the submit action is missing', 'Add \"submit\": { \"label\": \"Submit\" }')]),\n ];\n}\n","import type { FormStep, StepRoute } from '../types';\n\nconst conditional = (source: Pick<StepRoute, 'show' | 'showAny'>) => !!(source.show?.length || source.showAny?.length);\n\nfunction successors(steps: FormStep[], indexes: Map<string, number>, from: number): number[] {\n const next: number[] = [];\n for (const route of steps[from].routes ?? []) {\n const target = route.to === null ? null : indexes.get(route.to);\n if (target === null && !conditional(route)) return next;\n if (target === null || target === undefined || target <= from) continue;\n next.push(target);\n if (!conditional(route) && !conditional(steps[target])) return next;\n }\n return from + 1 < steps.length ? [...next, from + 1] : next;\n}\n\nexport function reachableSteps(steps: FormStep[]): Set<number>[] {\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n return steps.map((_, start) => {\n const seen = new Set<number>();\n const queue = successors(steps, indexes, start);\n while (queue.length) {\n const index = queue.pop()!;\n if (seen.has(index)) continue;\n seen.add(index);\n queue.push(...successors(steps, indexes, index));\n if (conditional(steps[index]) && index + 1 < steps.length) queue.push(index + 1);\n }\n return seen;\n });\n}\n","import type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, oneOf } from './issues';\nimport { reachableSteps } from './paths';\n\nconst RESERVED = new Set([...Object.getOwnPropertyNames(Object.prototype), 'prototype']);\n\nfunction stepIssues({ definition }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const steps = definition.steps ?? [];\n const seen = new Map<string, number>();\n steps.forEach((step, index) => {\n const first = seen.get(step.id);\n if (first === undefined) seen.set(step.id, index);\n else issues.push(error('duplicate-step-id', `/steps/${index}/id`, `step id \"${step.id}\" is already used by /steps/${first}`, 'Give each step a unique id'));\n });\n steps.forEach((step, index) => (step.routes ?? []).forEach((route, position) => {\n if (route.to === null) return;\n const target = seen.get(route.to);\n if (target !== undefined && target > index) return;\n const later = steps.slice(index + 1).map((candidate) => candidate.id);\n const problem = target === undefined ? `\"${route.to}\" is not a step id` : `\"${route.to}\" is not a later step`;\n const hint = later.length ? `${oneOf(later)}, or null to end the form here` : 'Use null to end the form here';\n issues.push(error('route-target', `/steps/${index}/routes/${position}/to`, problem, hint));\n }));\n return issues;\n}\n\nfunction keyIssues({ definition, entries }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const reachable = reachableSteps(definition.steps ?? []);\n const exclusive = (a: FieldEntry, b: FieldEntry) => a.step !== b.step && !reachable[a.step]?.has(b.step);\n entries.forEach((entry, index) => {\n const { field, path } = entry;\n const clash = entries.slice(0, index).find((other) => other.field.key === field.key && !exclusive(other, entry));\n if (RESERVED.has(field.key)) {\n issues.push(error('reserved-key', `${path}/key`, `\"${field.key}\" is a built-in object property name`, 'Rename the field key'));\n } else if (clash) {\n issues.push(error('duplicate-key', `${path}/key`, `key \"${field.key}\" is already used by ${clash.path} on the same path`, 'Rename one of the fields, or move them to route branches that never meet'));\n }\n });\n return issues;\n}\n\nexport function structureIssues(context: CheckContext): DefinitionIssue[] {\n const { definition } = context;\n const both = !!definition.fields?.length && !!definition.steps?.length;\n return [\n ...(both ? [error('fields-and-steps', '', 'the definition has both \"fields\" and \"steps\"', 'Move the top-level fields into a step, or remove \"steps\"')] : []),\n ...stepIssues(context),\n ...keyIssues(context),\n ];\n}\n","import type { FormField, MessageCatalog, MessageKey } from '../types';\n\nexport type { MessageCatalog, MessageKey };\nexport type MessageParams = Record<string, unknown>;\nexport type MessageFn = (key: MessageKey, params: MessageParams, field: FormField) => string | undefined;\nexport type MessageSource = MessageCatalog | MessageFn;\nexport type ResolveMessage = (key: MessageKey, params: MessageParams, field: FormField) => string;\n\nexport const DEFAULT_MESSAGES: Readonly<Record<MessageKey, string>> = Object.freeze({\n required: 'This field is required',\n minLength: 'Must be at least {min} characters',\n maxLength: 'Must be at most {max} characters',\n minItems: 'Must be at least {min} items',\n maxItems: 'Must be at most {max} items',\n min: 'Must be at least {min}',\n max: 'Must be at most {max}',\n pattern: 'Invalid format',\n matchField: 'Fields must match',\n email: 'Enter a valid email',\n number: 'Enter a number',\n date: 'Enter a valid date',\n datetime: 'Enter a valid date and time',\n option: 'Select one of the available options',\n options: 'Must be a list of available options',\n boolean: 'Must be true or false',\n string: 'Must be text',\n file: 'Must be a file reference',\n value: 'Invalid value',\n});\n\nexport type ValidationRule = 'required' | 'minLength' | 'maxLength' | 'min' | 'max' | 'pattern' | 'matchField';\n\nexport function formatText(template: string, params: Record<string, unknown>): string {\n return template.replace(/\\{(\\w+)\\}/g, (match, name: string) => (Object.prototype.hasOwnProperty.call(params, name) ? String(params[name]) : match));\n}\n\ntype TextSource<K extends string> = Partial<Record<K, string>> | ((key: K, params: MessageParams, ...context: never[]) => string | undefined);\n\nexport function resolveText<K extends string>(defaults: Record<K, string>, key: K, params: MessageParams, sources: (TextSource<K> | undefined)[], ...context: unknown[]): string {\n for (const source of sources) {\n const text = typeof source === 'function' ? (source as (...args: unknown[]) => unknown)(key, params, ...context) : source?.[key];\n if (text && typeof text === 'string') return typeof source === 'function' ? text : formatText(text, params);\n }\n return formatText(defaults[key], params);\n}\n\nexport function messageResolver(...sources: (MessageSource | undefined)[]): ResolveMessage {\n return (key, params, field) => resolveText(DEFAULT_MESSAGES, key, params, sources, field);\n}\n\nexport function getDefaultMessage(rule: ValidationRule | MessageKey, params: Record<string, unknown> = {}): string {\n const template = Object.prototype.hasOwnProperty.call(DEFAULT_MESSAGES, rule) ? DEFAULT_MESSAGES[rule] : DEFAULT_MESSAGES.value;\n const custom = params.unit !== undefined && (rule === 'minLength' || rule === 'maxLength');\n return formatText(custom ? template.replace('characters', '{unit}') : template, params);\n}\n","import type { FormField } from '../types';\nimport { type MessageKey, messageResolver, type ResolveMessage } from './default-messages';\n\nexport const BOOLEAN_TYPES = ['checkbox', 'switch'];\nexport const BUILT_IN_TYPES = ['text', 'email', 'phone', 'number', 'password', 'select', 'autocomplete', 'multiselect', 'checkbox', 'radio', 'switch', 'file', 'date', 'datetime', 'textarea'];\n\nexport const MAX_STRING_LENGTH = 10000;\nconst MAX_EMAIL_LENGTH = 254;\nconst MAX_ITEMS = 1000;\nconst EMAIL = /^[^\\s@]+@[^\\s@.]+(?:\\.[^\\s@.]+)+$/;\nconst DECIMAL = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/;\nconst DATE = '\\\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\\\d|3[01])';\nconst DATE_ONLY = new RegExp(`^${DATE}$`);\nconst DATE_TIME = new RegExp(`^${DATE}T(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d{1,3})?)?(?:Z|[+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)?$`);\nconst TEXT_TYPES = new Set(['text', 'phone', 'password', 'textarea', 'autocomplete']);\nconst FORMATS = new Map<string, [RegExp, MessageKey, number]>([\n ['email', [EMAIL, 'email', MAX_EMAIL_LENGTH]],\n ['date', [DATE_ONLY, 'date', MAX_STRING_LENGTH]],\n ['datetime', [DATE_TIME, 'datetime', MAX_STRING_LENGTH]],\n]);\n\ntype Fail = (key: MessageKey, params?: Record<string, unknown>) => string;\n\nfunction isCalendarDate(value: string): boolean {\n const [year, month, day] = value.split(/\\D/).map(Number);\n return day <= new Date(new Date(0).setUTCFullYear(year, month, 0)).getUTCDate();\n}\n\nconst UNTRIMMED_TYPES = new Set(['password', 'number', 'select', 'radio', 'file']);\n\nexport function trimValue(field: FormField, value: unknown): unknown {\n return typeof value === 'string' && !UNTRIMMED_TYPES.has(field.type) ? value.trim() : value;\n}\n\nexport function normalizeValue(field: FormField, input: unknown): unknown {\n if (Array.isArray(input) && input.length === 0 && field.type !== 'multiselect' && BUILT_IN_TYPES.includes(field.type)) return undefined;\n const value = trimValue(field, input);\n if (field.type !== 'number' || typeof value !== 'string' || !DECIMAL.test(value)) return value;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n}\n\nconst staticOptions = (field: FormField) => (field.optionsFrom ? undefined : field.options);\n\nfunction isOption(field: FormField, value: unknown): boolean {\n const options = staticOptions(field);\n return !options || options.some((option) => option.value === value);\n}\n\nfunction lengthError(field: FormField, value: string, fail: Fail): string | null {\n const max = Math.min(MAX_STRING_LENGTH, field.validation?.maxLength ?? MAX_STRING_LENGTH);\n if (value.length <= max) return null;\n return field.validation?.maxLengthMessage ?? fail('maxLength', { max });\n}\n\nfunction multiselectError(field: FormField, value: unknown, fail: Fail): string | null {\n if (!Array.isArray(value)) return fail('options');\n if (value.length > (staticOptions(field)?.length ?? MAX_ITEMS)) return fail('option');\n const valid = value.every((item) => typeof item === 'string' && item.length <= MAX_STRING_LENGTH && isOption(field, item));\n return valid ? null : fail('option');\n}\n\nfunction stringError(field: FormField, value: unknown, key: MessageKey, fail: Fail): string | null {\n return typeof value === 'string' ? lengthError(field, value, fail) : fail(key);\n}\n\nfunction formatError(field: FormField, value: unknown, [format, key, max]: [RegExp, MessageKey, number], fail: Fail): string | null {\n if (typeof value !== 'string') return fail(key);\n return lengthError(field, value, fail) ?? (value.length <= max && format.test(value) && (format === EMAIL || isCalendarDate(value)) ? null : fail(key));\n}\n\nfunction primitiveError(field: FormField, value: unknown, fail: Fail): string | null {\n if (typeof value === 'boolean' || (typeof value === 'number' && Number.isFinite(value))) return null;\n return stringError(field, value, 'value', fail);\n}\n\nfunction isBlank(field: FormField, value: unknown): boolean {\n return value == null || value === '' || (field.type === 'multiselect' && Array.isArray(value) && !value.length);\n}\n\nexport function typeError(field: FormField, value: unknown, resolve: ResolveMessage = messageResolver()): string | null {\n if (isBlank(field, value)) return null;\n const fail: Fail = (key, params = {}) => resolve(key, params, field);\n if (BOOLEAN_TYPES.includes(field.type)) return typeof value === 'boolean' ? null : fail('boolean');\n if (field.type === 'number') return typeof value === 'number' && Number.isFinite(value) ? null : fail('number');\n if (field.type === 'multiselect') return multiselectError(field, value, fail);\n if (field.type === 'file') return stringError(field, value, 'file', fail);\n const format = FORMATS.get(field.type);\n if (format) return formatError(field, value, format, fail);\n if (field.type === 'select' || field.type === 'radio') return stringError(field, value, 'option', fail) ?? (isOption(field, value) ? null : fail('option'));\n return TEXT_TYPES.has(field.type) ? stringError(field, value, 'string', fail) : primitiveError(field, value, fail);\n}\n\nexport function typeMessageKeys(field: FormField): MessageKey[] {\n if (BOOLEAN_TYPES.includes(field.type)) return ['boolean'];\n if (field.type === 'number') return ['number'];\n if (field.type === 'multiselect') return ['options', 'option'];\n const format = FORMATS.get(field.type)?.[1];\n if (format) return [format, 'maxLength'];\n if (field.type === 'file') return ['file', 'maxLength'];\n if (field.type === 'select' || field.type === 'radio') return ['option', 'maxLength'];\n return [TEXT_TYPES.has(field.type) ? 'string' : 'value', 'maxLength'];\n}\n\nexport function clientTypeError(field: FormField, value: unknown, resolve?: ResolveMessage): string | null {\n if (field.type === 'file' || !BUILT_IN_TYPES.includes(field.type)) return null;\n return typeError(field, value, resolve);\n}\n","import type { FormField } from '../types';\nimport { BOOLEAN_TYPES, BUILT_IN_TYPES } from '../validation/type-checks';\nimport { conditionErrors, OPERATORS } from './conditions';\nimport type { CheckContext, ConditionEntry, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, oneOf, suggest, warning } from './issues';\n\nconst LIST_OPERATORS = ['in', 'notIn'];\nconst COMPARISONS = ['gt', 'gte', 'lt', 'lte'];\nconst STRING_TYPES = ['text', 'email', 'phone', 'password', 'textarea', 'date', 'datetime', 'select', 'radio', 'autocomplete'];\n\nfunction expectedType(field: FormField): string | undefined {\n if (field.type === 'number') return 'number';\n if (BOOLEAN_TYPES.includes(field.type)) return 'boolean';\n return STRING_TYPES.includes(field.type) ? 'string' : undefined;\n}\n\nfunction valueIssue(target: FormField, operator: string, operand: unknown, path: string): DefinitionIssue[] {\n const mismatch = (problem: string, hint: string) => [warning('condition-value-mismatch', path, problem, hint)];\n if (operator === 'notEmpty') return [];\n if (COMPARISONS.includes(operator)) {\n if (target.type !== 'multiselect' && !BOOLEAN_TYPES.includes(target.type)) return [];\n return mismatch(`\"${target.key}\" is a ${target.type} field, so \"${operator}\" never matches it`, 'Compare a number, text, radio or select field');\n }\n if (target.type === 'multiselect') {\n const result = operator === 'neq' || operator === 'notIn' ? 'always' : 'never';\n return mismatch(`\"${target.key}\" holds a list of values, so \"${operator}\" ${result} matches it`, 'Use notEmpty, or a select or radio field');\n }\n const operands = LIST_OPERATORS.includes(operator) && Array.isArray(operand) ? operand : [operand];\n const expected = expectedType(target);\n const wrong = expected && operands.find((item) => typeof item !== expected);\n if (expected && wrong !== undefined) return mismatch(`${JSON.stringify(wrong)} is a ${typeof wrong}, but \"${target.key}\" holds a ${expected}`, `Use a ${expected} value`);\n const options = expected === 'string' && !target.optionsFrom && target.options?.length ? target.options.map((option) => option.value) : null;\n const missing = options && operands.find((item) => !options.includes(item as string));\n return options && missing !== undefined ? mismatch(`${JSON.stringify(missing)} is not an option of \"${target.key}\"`, oneOf(options)) : [];\n}\n\nfunction conditionWarnings(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (conditionErrors(context, entry).length) return [];\n const operator = OPERATORS.find((key) => key in condition)!;\n return valueIssue(context.keys.get(condition.field)!.field, operator, condition[operator as keyof typeof condition], `${path}/${operator}`);\n}\n\nfunction optionIssues({ field, path }: FieldEntry): DefinitionIssue[] {\n if (!['select', 'radio', 'multiselect'].includes(field.type)) return [];\n if (!Array.isArray(field.options)) {\n return field.optionsFrom ? [] : [warning('missing-options', `${path}/options`, `the ${field.type} field \"${field.key}\" has no options`, 'Add \"options\" or \"optionsFrom\"')];\n }\n const values = field.options.map((option) => option.value);\n const defaults = field.type === 'multiselect' && Array.isArray(field.defaultValue) ? field.defaultValue : [field.defaultValue];\n const missing = field.defaultValue === undefined || !values.length || field.optionsFrom ? undefined : defaults.find((value) => !values.includes(value as string));\n if (missing === undefined) return [];\n return [warning('default-not-in-options', `${path}/defaultValue`, `${JSON.stringify(missing)} is not an option of \"${field.key}\"`, oneOf(values))];\n}\n\nfunction ruleWarnings(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation ?? {};\n const rule = (name: string, problem: string, hint: string) => warning('rule-not-applicable', `${path}/validation/${name}`, problem, hint);\n const known = BUILT_IN_TYPES.includes(field.type);\n const numeric = field.type === 'number';\n const ranges = known && !numeric ? (['min', 'max'] as const).filter((name) => rules[name] !== undefined) : [];\n const sized = known && ['number', 'checkbox', 'switch'].includes(field.type) ? (['minLength', 'maxLength'] as const).filter((name) => rules[name] !== undefined) : [];\n const issues = [\n ...ranges.map((name) => rule(name, `\"${name}\" applies to number fields only`, `Use ${name}Length to limit text length`)),\n ...sized.map((name) => rule(name, `\"${name}\" does not apply to ${field.type} fields`, numeric ? 'Use min and max for numbers' : `Remove ${name}`)),\n ];\n const { validators } = context;\n if (rules.validator !== undefined && validators && !Object.prototype.hasOwnProperty.call(validators, rules.validator)) {\n issues.push(warning('unknown-validator', `${path}/validation/validator`, `the validator \"${rules.validator}\" is not registered`, 'Pass it in the \"validators\" option'));\n }\n return issues;\n}\n\nfunction fieldWarnings(context: CheckContext, entry: FieldEntry): DefinitionIssue[] {\n const { field, path } = entry;\n const match = BUILT_IN_TYPES.includes(field.type) ? undefined : closest(field.type, BUILT_IN_TYPES);\n return [\n ...(match === undefined ? [] : [warning('unknown-field-type', `${path}/type`, `\"${field.type}\" is not a built-in field type`, `Use \"${match}\", or register a component for \"${field.type}\"`)]),\n ...optionIssues(entry),\n ...ruleWarnings(context, entry),\n ...(field.optionsDependsOn ?? []).flatMap((key, index) => (\n context.keys.has(key) ? [] : [warning('unknown-field', `${path}/optionsDependsOn/${index}`, `\"${key}\" is not a field key`, suggest(key, context.keyList))]\n )),\n ];\n}\n\nfunction routeWarnings({ definition }: CheckContext): DefinitionIssue[] {\n const steps = definition.steps ?? [];\n return steps.flatMap((step, index) => {\n const issues: DefinitionIssue[] = [];\n const targets = new Set((step.routes ?? []).map((route) => route.to).filter((to) => to !== null));\n for (const target of targets) {\n const position = steps.findIndex((candidate) => candidate.id === target);\n const sibling = steps[position + 1];\n const exits = steps[position]?.routes?.some((route) => !route.show?.length && !route.showAny?.length);\n if (!sibling || !targets.has(sibling.id) || exits) continue;\n issues.push(warning('route-fallthrough', `/steps/${position}`, `branch \"${target}\" from \"${step.id}\" continues into the sibling branch \"${sibling.id}\"`, `Add an unconditional route on \"${target}\" to the step where the branches meet`));\n }\n if (step.skip && (step.next === false || !steps[1])) {\n issues.push(warning('skip-unreachable', `/steps/${index}/skip`, `step \"${step.id}\" has \"skip\" but no Continue button or later step`, 'Remove \"skip\", or remove \"next\": false'));\n }\n return issues;\n });\n}\n\nexport function definitionWarnings(context: CheckContext): DefinitionIssue[] {\n return [\n ...(typeof context.definition.title === 'string' ? [] : [warning('missing-property', '/title', '\"title\" must be a string', 'Add a title for host UI and editors')]),\n ...context.conditions.flatMap((entry) => conditionWarnings(context, entry)),\n ...context.entries.flatMap((entry) => fieldWarnings(context, entry)),\n ...routeWarnings(context),\n ];\n}\n","import type { FormDefinition } from '../types';\nimport { conditionIssues } from './conditions';\nimport { createContext, type CheckContext } from './context';\nimport { fieldIssues } from './fields';\nimport { graphIssues } from './graph';\nimport { FormDefinitionError, suggest, type DefinitionIssue } from './issues';\nimport { metaIssues, shapeIssues } from './shape';\nimport { structureIssues } from './structure';\nimport { definitionWarnings } from './warnings';\n\nexport interface CheckDefinitionOptions {\n validators?: Record<string, unknown>;\n}\n\ninterface Checks {\n validators?: Record<string, unknown>;\n suggest?: CheckContext['suggest'];\n warnings?: (context: CheckContext) => DefinitionIssue[];\n}\n\nfunction issues(input: unknown, { validators, suggest, warnings }: Checks = {}): DefinitionIssue[] {\n const shape = shapeIssues(input);\n if (shape.length) return shape;\n const context = createContext(input as FormDefinition, validators, suggest);\n return [\n ...metaIssues(input as Record<string, unknown>),\n ...structureIssues(context),\n ...conditionIssues(context),\n ...fieldIssues(context),\n ...graphIssues(context),\n ...(warnings ? warnings(context) : []),\n ];\n}\n\nexport function definitionErrors(input: unknown): DefinitionIssue[] {\n return issues(input);\n}\n\nexport function checkDefinition(input: unknown, options: CheckDefinitionOptions = {}): DefinitionIssue[] {\n return issues(input, { validators: options.validators, suggest, warnings: definitionWarnings });\n}\n\nexport function parseDefinition(input: unknown, options?: CheckDefinitionOptions): FormDefinition {\n const errors = issues(input, { suggest });\n if (errors.length) throw new FormDefinitionError(errors);\n return input as FormDefinition;\n}\n","import type { FormDefinition, FormField } from '../types';\n\nexport function conditionFields(source: Pick<FormField, 'show' | 'showAny'>): string[] {\n return [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field);\n}\n\nexport function getAllFields(definition: FormDefinition): FormField[] {\n return definition.steps?.length ? definition.steps.flatMap((step) => step.fields) : definition.fields ?? [];\n}\n\nexport function createValues(\n fields: FormField[],\n initialValues?: Record<string, unknown>,\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n for (const field of fields) {\n if (field.defaultValue !== undefined) values[field.key] = field.defaultValue;\n }\n const source = initialValues ?? {};\n for (const key of Object.keys(source)) {\n if (key !== '__proto__') values[key] = source[key];\n }\n return values;\n}\n\nexport function getChangedKeys(\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n): Set<string> {\n const keys = new Set([...Object.keys(previous), ...Object.keys(next)]);\n return new Set([...keys].filter((key) => !Object.is(previous[key], next[key])));\n}\n","export class FormLifecycleError extends Error {\n readonly committed = true;\n readonly cause: unknown;\n\n constructor(readonly phase: 'afterStepChange' | 'afterSubmit', cause: unknown) {\n super(`The action completed, but ${phase} failed: ${cause instanceof Error ? cause.message : String(cause)}`);\n this.name = 'FormLifecycleError';\n this.cause = cause;\n }\n}\n\nexport async function afterCommit(phase: 'afterStepChange' | 'afterSubmit', callback: () => void | Promise<void>): Promise<void> {\n try { await callback(); }\n catch (error) { throw new FormLifecycleError(phase, error); }\n}\n","import { getChangedKeys } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\n\nfunction activePath(engine: EngineInternals): string {\n return engine.visibleSteps.map((step) => step.id).join('\\n');\n}\n\nexport function watchCheckedInputs(engine: EngineInternals, checked: Record<string, unknown>): () => boolean {\n const path = activePath(engine);\n const seen = Object.keys(checked).filter((key) => checked[key] !== undefined).map((key) => [key, engine.values[key]] as const);\n return () => activePath(engine) !== path || seen.some(([key, value]) => !Object.is(engine.values[key], value));\n}\n\nexport function watchValues(engine: EngineInternals, values: Record<string, unknown>): () => Set<string> {\n const seen = { ...values };\n return () => getChangedKeys(seen, engine.values);\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { evaluateCondition } from './evaluate-condition';\n\nexport function isVisible(\n field: Pick<FormField, 'show' | 'showAny'>,\n values: Record<string, unknown>,\n): boolean {\n const matches = (condition: ShowCondition) => evaluateCondition(condition, values);\n return (field.show ?? []).every(matches) && (!field.showAny?.length || field.showAny.some(matches));\n}\n","import type { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { messageResolver, type MessageSource, type ResolveMessage } from './default-messages';\nimport { BOOLEAN_TYPES, clientTypeError, trimValue } from './type-checks';\n\nexport type ValidatorFn = (\n value: unknown,\n allValues: Record<string, unknown>,\n) => string | null;\n\n\nfunction isEmpty(value: unknown, field: FormField): boolean {\n return isBlank(value) || (value === false && BOOLEAN_TYPES.includes(field.type));\n}\n\nfunction boundError(\n size: number,\n rule: 'Length' | '',\n rules: FieldValidation,\n message: (key: 'min' | 'max', params: Record<string, number>) => string,\n): string | undefined {\n const min = rules[`min${rule}`];\n const max = rules[`max${rule}`];\n if (min !== undefined && size < min) return rules[`min${rule}Message`] ?? message('min', { min });\n if (max !== undefined && size > max) return rules[`max${rule}Message`] ?? message('max', { max });\n return undefined;\n}\n\nfunction patternError(value: unknown, rules: FieldValidation, message: () => string): string | undefined {\n if (rules.pattern === undefined) return undefined;\n try {\n return new RegExp(rules.pattern).test(String(value)) ? undefined : rules.patternMessage ?? message();\n } catch {\n return undefined;\n }\n}\n\nfunction sizeError(value: unknown, rules: FieldValidation, field: FormField, resolve: ResolveMessage): string | undefined {\n if (typeof value === 'number') return boundError(value, '', rules, (key, params) => resolve(key, params, field));\n if (typeof value !== 'string' && !Array.isArray(value)) return undefined;\n const unit = Array.isArray(value) ? 'Items' : 'Length';\n return boundError(value.length, 'Length', rules, (key, params) => resolve(`${key}${unit}`, params, field));\n}\n\nexport function validateFieldValue(\n field: FormField,\n input: unknown,\n allValues: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n messages?: MessageSource,\n): string | null {\n const value = trimValue(field, input);\n const rules = field.validation ?? {};\n const resolve = messageResolver(messages);\n const matchMessage = () => rules.matchFieldMessage ?? resolve('matchField', {}, field);\n if (isEmpty(value, field)) {\n if (rules.required) return typeof rules.required === 'string' ? rules.required : resolve('required', {}, field);\n return rules.matchField !== undefined && !isBlank(allValues[rules.matchField]) ? matchMessage() : null;\n }\n const typeIssue = clientTypeError(field, value, resolve);\n if (typeIssue) return typeIssue;\n return (sizeError(value, rules, field, resolve)\n ?? patternError(value, rules, () => resolve('pattern', {}, field))\n ?? (rules.matchField !== undefined && value !== allValues[rules.matchField] ? matchMessage() : undefined)\n ?? (rules.validator ? validators?.[rules.validator]?.(value, allValues) : undefined)) || null;\n}\n","import type { FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport type { MessageSource } from './default-messages';\nimport { type ValidatorFn, validateFieldValue } from './validate-field';\n\nexport function validateStep(\n step: FormStep,\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n messages?: MessageSource,\n): Record<string, string> {\n return validateFields(step.fields, values, validators, messages);\n}\n\nexport function validateFields(\n fields: FormField[],\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n messages?: MessageSource,\n): Record<string, string> {\n const errors: Record<string, string> = {};\n\n for (const field of fields) {\n if (!isVisible(field, values)) continue;\n\n const error = validateFieldValue(field, values[field.key], values, validators, messages);\n if (error) {\n errors[field.key] = error;\n }\n }\n\n return errors;\n}\n","import { validateFieldValue, validateFields, validateStep } from '../validation';\nimport { createValues, getChangedKeys } from './engine-utils';\nimport { trimValue } from '../validation/type-checks';\nimport type { EngineInternals } from './runtime-internals';\n\nexport function applyValidationErrors(engine: EngineInternals, errors: Record<string, string>, server = false, formErrors: string[] = []): void {\n const { state } = engine;\n const previousErrors = engine.errors;\n const bound: Record<string, string> = {};\n const general = [...formErrors];\n for (const [key, message] of Object.entries(errors)) {\n if (engine.visibility.activeField(key, engine.values)) bound[key] = message;\n else general.push(message);\n }\n if (server) {\n state.serverErrors = bound;\n state.serverFormErrors = general;\n }\n state.errors = { ...state.serverErrors, ...bound };\n state.topLevelErrors = server ? general : [...state.serverFormErrors, ...general];\n const structureChanged = server && moveToFirstError(engine, bound);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors), structureChanged });\n}\n\nfunction moveToFirstError(engine: EngineInternals, errors: Record<string, string>): boolean {\n const targetIndex = engine.visibleSteps.findIndex((step) => step.fields.some((field) => errors[field.key] !== undefined));\n if (targetIndex < 0 || targetIndex === engine.currentStepIndex) return false;\n engine.state.currentStepIndex = targetIndex;\n return true;\n}\n\nexport function clearError(engine: EngineInternals, key: string, server = false): void {\n if (server) delete engine.state.serverErrors[key];\n const kept = engine.state.serverErrors[key];\n if (kept === undefined) delete engine.errors[key];\n else engine.errors[key] = kept;\n}\n\nexport function dropServerErrors(engine: EngineInternals, keys: Iterable<string>): void {\n for (const key of keys) delete engine.state.serverErrors[key];\n}\n\nexport function clearResolvedMatchErrors(engine: EngineInternals, key: string): string[] {\n const cleared: string[] = [];\n for (const field of engine.visibility.allFields) {\n if (field.validation?.matchField !== key || engine.errors[field.key] === undefined) continue;\n if (validateFieldValue(field, engine.values[field.key], getValidationValues(engine), engine.validators, engine.messages)) continue;\n clearError(engine, field.key);\n cleared.push(field.key);\n }\n return cleared;\n}\n\nexport function pruneOffPathErrors(engine: EngineInternals): string[] {\n const pathFields = new Set(engine.visibleSteps.flatMap((step) => step.fields.map((field) => field.key)));\n const pruned = Object.keys(engine.errors).filter((key) => !pathFields.has(key));\n for (const key of pruned) delete engine.errors[key];\n dropServerErrors(engine, pruned);\n return pruned;\n}\n\nexport function getValidationValues(engine: EngineInternals): Record<string, unknown> {\n return getSubmitValues(engine);\n}\n\nfunction withoutSkipped(engine: EngineInternals, values: Record<string, unknown>): Record<string, unknown> {\n for (const key of [...engine.skipped.values()].flat()) delete values[key];\n return values;\n}\n\nexport function validateForm(engine: EngineInternals, navigate = false): Record<string, string> {\n const previousErrors = engine.errors;\n const errors: Record<string, string> = {};\n if (engine.isMultiStep) {\n for (const step of engine.visibleSteps) {\n if (engine.skipped.has(step.id)) continue;\n Object.assign(errors, validateStep(step, getValidationValues(engine), engine.validators, engine.messages));\n }\n } else {\n Object.assign(\n errors,\n validateFields(engine.definition.fields ?? [], getValidationValues(engine), engine.validators, engine.messages),\n );\n }\n engine.state.errors = { ...engine.state.serverErrors, ...errors };\n const structureChanged = navigate && moveToFirstError(engine, errors);\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, errors), structureChanged });\n return errors;\n}\n\nexport function validateOne(engine: EngineInternals, key: string): string | null {\n const field = engine.visibility.activeField(key, engine.values);\n if (!field) return null;\n const previousError = engine.errors[key];\n const error = validateFieldValue(field, engine.values[key], getValidationValues(engine), engine.validators, engine.messages);\n if (error) engine.errors[key] = error;\n else clearError(engine, key, true);\n const fieldKeys = Object.is(previousError, engine.errors[key]) ? [] : [key];\n engine.notify({ fieldKeys });\n return error;\n}\n\nexport function getSubmitValues(engine: EngineInternals): Record<string, unknown> {\n const values = { ...engine.visibility.conditionValues(engine.values) };\n for (const key of Object.keys(values)) {\n const field = engine.visibility.activeField(key, engine.values);\n if (field) values[key] = trimValue(field, values[key]);\n }\n return withoutSkipped(engine, values);\n}\n\nexport function resetEngine(engine: EngineInternals, values?: Record<string, unknown>): void {\n const previousValues = engine.values;\n const previousErrors = engine.errors;\n const loadingFields = Object.keys(engine.fieldLoading);\n engine.validationEpoch++;\n engine.operationEpoch++;\n engine.state.submitting = false;\n engine.state.values = createValues(engine.visibility.allFields, values);\n engine.state.errors = {};\n engine.state.topLevelErrors = [];\n engine.state.serverErrors = {};\n engine.state.serverFormErrors = [];\n engine.state.fieldLoading = {};\n engine.state.stepValidating = false;\n engine.state.currentStepIndex = 0;\n engine.skipped.clear();\n engine.visibility.reconcileHidden(engine.values, engine.errors);\n const changedValues = getChangedKeys(previousValues, engine.values);\n const changedFields = new Set([\n ...changedValues,\n ...getChangedKeys(previousErrors, engine.errors),\n ...loadingFields,\n ]);\n engine.notify({\n fieldKeys: changedFields,\n structureChanged: true,\n valuesChanged: changedValues.size > 0,\n });\n}\n","import type { FormDefinition, FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { trimValue } from '../validation/type-checks';\n\nexport function activeSteps(definition: FormDefinition, values: Record<string, unknown>): FormStep[] {\n return walkPath(definition, values).steps;\n}\n\nfunction walkPath(definition: FormDefinition, values: Record<string, unknown>) {\n const steps = definition.steps ?? [];\n const indexes = new Map(steps.map((step, index) => [step.id, index]));\n const result: FormStep[] = [];\n const available: Record<string, unknown> = {};\n if (!steps.length) addStepValues({ fields: definition.fields ?? [] }, values, available);\n for (let index = 0; index < steps.length;) {\n const step = steps[index];\n if (!isVisible(step, available)) { index++; continue; }\n result.push(step);\n addStepValues(step, values, available);\n const route = step.routes?.find((route) => (\n isVisible(route, available) && (route.to === null || ((indexes.get(route.to) ?? -1) > index\n && isVisible(steps[indexes.get(route.to)!], available)))\n ));\n if (route?.to === null) break;\n index = route ? indexes.get(route.to)! : index + 1;\n }\n return { steps: result, values: available };\n}\n\nexport function reconcileStepIndex(previous: FormStep[], next: FormStep[], index: number): number {\n const previousStep = previous[index] ?? previous[previous.length - 1];\n const preserved = next.findIndex((step) => step.id === previousStep?.id);\n if (preserved !== -1) return preserved;\n const nextIds = new Map(next.map((step, index) => [step.id, index]));\n for (let before = Math.min(index - 1, previous.length - 1); before >= 0; before--) {\n const predecessor = nextIds.get(previous[before].id);\n if (predecessor !== undefined) return predecessor;\n }\n return 0;\n}\n\nfunction addStepValues(step: { fields: FormField[] }, values: Record<string, unknown>, target: Record<string, unknown>): void {\n const saved = step.fields.map(({ key }) => [key, Object.prototype.hasOwnProperty.call(target, key), target[key]] as const);\n for (const field of step.fields) target[field.key] = trimValue(field, values[field.key]);\n const shown = step.fields.filter((field) => isVisible(field, target) && values[field.key] !== undefined);\n for (const [key, had, value] of saved) {\n if (had) target[key] = value;\n else delete target[key];\n }\n for (const field of shown) target[field.key] = trimValue(field, values[field.key]);\n}\n\nexport function createActivePath(definition: FormDefinition) {\n let source: Record<string, unknown> | null = null;\n let steps: FormStep[] = [];\n let active: Record<string, unknown> = {};\n const refresh = (values: Record<string, unknown>) => {\n if (source === values) return;\n source = values;\n ({ steps, values: active } = walkPath(definition, values));\n };\n return {\n invalidate(): void { source = null; },\n steps(values: Record<string, unknown>): FormStep[] { refresh(values); return steps; },\n values(values: Record<string, unknown>): Record<string, unknown> { refresh(values); return active; },\n };\n}\n","import type { FormStep } from '../types';\nimport { createValues } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\nimport { activeSteps } from './step-routes';\nimport { dropServerErrors, pruneOffPathErrors } from './validation-state';\n\nfunction resetValues(engine: EngineInternals): Record<string, unknown> {\n const fields = engine.currentStep?.fields ?? [];\n const values = { ...engine.values };\n for (const { key } of fields) delete values[key];\n return Object.assign(values, createValues(fields));\n}\n\nexport function skipTarget(engine: EngineInternals): FormStep | undefined {\n return activeSteps(engine.definition, resetValues(engine))[engine.currentStepIndex + 1];\n}\n\nexport function skipCurrentStep(engine: EngineInternals): string[] {\n const step = engine.currentStep!;\n const fieldKeys = step.fields.map(({ key }) => key);\n engine.state.values = resetValues(engine);\n for (const key of fieldKeys) delete engine.errors[key];\n dropServerErrors(engine, fieldKeys);\n engine.skipped.set(step.id, fieldKeys);\n dropServerErrors(engine, engine.visibility.reconcileHidden(engine.values, engine.errors));\n engine.visibility.markChanged(true, true);\n const pruned = pruneOffPathErrors(engine);\n engine.notify({ fieldKeys: [...fieldKeys, ...pruned], structureChanged: true, valuesChanged: true });\n return fieldKeys;\n}\n\nexport function includeCurrentStep(engine: EngineInternals): void {\n const step = engine.currentStep;\n if (step) engine.skipped.delete(step.id);\n}\n\nexport function skipStepAt(engine: EngineInternals, index: number): string[] {\n engine.state.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n return skipCurrentStep(engine);\n}\n","import { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs } from './pending-inputs';\nimport type { SubmitHandler, SubmitResult } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\nimport { applyValidationErrors, getSubmitValues, validateForm } from './validation-state';\nimport { includeCurrentStep } from './step-skip';\n\ntype Rejection = Extract<SubmitResult, { ok: false }>;\n\nexport function isRejection(result: unknown): result is Rejection {\n return !!result && Object.getPrototypeOf(result) === Object.prototype && (result as SubmitResult).ok === false;\n}\n\nfunction applyRejection(engine: EngineInternals, result: Rejection, sent: Record<string, unknown>): void {\n const errors: Record<string, string> = {};\n const source = typeof result.errors === 'object' && result.errors ? result.errors : {};\n for (const [key, value] of Object.entries(source)) {\n const message: unknown = Array.isArray(value) ? value.join(' ') : value;\n if (typeof message === 'string' && Object.is(engine.values[key], sent[key])) errors[key] = message;\n }\n const formErrors = Array.isArray(result.formErrors) ? result.formErrors.filter((message) => typeof message === 'string') : [];\n applyValidationErrors(engine, errors, true, formErrors);\n}\n\nexport async function submitForm(engine: EngineInternals, submit: SubmitHandler, keepSkipped = false): Promise<boolean> {\n if (engine.submitting || engine.stepValidating) return false;\n if (!keepSkipped) includeCurrentStep(engine);\n const lifecycle = { ...engine.lifecycle };\n let dispatched = false;\n const epoch = engine.validationEpoch;\n const operation = engine.latestOperation = ++engine.operationEpoch;\n let values = getSubmitValues(engine);\n const inputsChanged = watchCheckedInputs(engine, values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch || inputsChanged();\n engine.state.submitting = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n const allowed = await lifecycle.onBeforeSubmit(values);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (lifecycle.onBeforeSubmit) {\n if (Object.keys(validateForm(engine, true)).length > 0 || stale()) return false;\n values = getSubmitValues(engine);\n }\n dispatched = true;\n const skippedSteps = [...engine.skipped.keys()];\n const sent = { ...engine.values };\n const serverErrors = engine.state.serverErrors;\n const result = await submit(values, [...skippedSteps]);\n const rejected = isRejection(result);\n if (operation !== engine.operationEpoch) return !rejected;\n if (rejected) {\n applyRejection(engine, result, sent);\n return false;\n }\n if (engine.state.serverErrors === serverErrors) applyValidationErrors(engine, {}, true);\n await afterCommit('afterSubmit', () => lifecycle.onAfterSubmit?.(values, skippedSteps));\n return true;\n } catch (error) {\n if (!dispatched && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.state.submitting = false;\n engine.notify();\n }\n }\n}\n","import { getChangedKeys } from './engine-utils';\nimport { afterCommit } from './lifecycle-error';\nimport { watchCheckedInputs, watchValues } from './pending-inputs';\nimport { validateStep } from '../validation';\nimport { applyValidationErrors, dropServerErrors, getValidationValues, pruneOffPathErrors } from './validation-state';\nimport { includeCurrentStep, skipCurrentStep, skipTarget } from './step-skip';\nimport { reconcileStepIndex } from './step-routes';\nimport { isRejection, submitForm } from './submission';\nimport type { StepChangeContext, SubmitHandler } from './engine-options';\nimport type { EngineInternals } from './runtime-internals';\n\nfunction hasStepErrors(engine: EngineInternals): boolean {\n const step = engine.currentStep;\n if (!step) return true;\n const errors = validateStep(step, getValidationValues(engine), engine.validators, engine.messages);\n if (Object.keys(errors).length === 0) return false;\n const previousErrors = engine.errors;\n engine.state.errors = { ...previousErrors, ...errors };\n engine.notify({ fieldKeys: getChangedKeys(previousErrors, engine.errors) });\n return true;\n}\n\nfunction moveTo(engine: EngineInternals, index: number): void {\n engine.validationEpoch++;\n engine.state.currentStepIndex = index;\n engine.notify({ structureChanged: true });\n}\n\nexport async function skipStep(engine: EngineInternals, submit?: SubmitHandler): Promise<boolean> {\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting || !engine.currentStep?.skip) return false;\n if (skipTarget(engine)) return changeStep(engine, 'next', 'skip');\n const step = engine.currentStep;\n if (!submit || !step) return false;\n const values = engine.values;\n const errors = { ...engine.errors };\n const serverErrors = { ...engine.state.serverErrors };\n let outcome: boolean | undefined;\n skipCurrentStep(engine);\n const skippedValues = engine.values;\n const edited = watchValues(engine, skippedValues);\n const submitting = submitForm(engine, async (submitted, skipped) => {\n const result = await submit(submitted, skipped);\n const rejected = isRejection(result);\n if (!rejected || operation === engine.operationEpoch) outcome = rejected;\n return result;\n }, true);\n const operation = engine.latestOperation;\n try {\n return await submitting;\n } finally {\n if (outcome !== false && operation === engine.latestOperation && engine.values === skippedValues) {\n const steps = engine.visibleSteps;\n const kept = edited();\n const current = engine.values;\n engine.state.values = { ...values };\n for (const key of kept) {\n delete engine.values[key];\n delete errors[key];\n delete serverErrors[key];\n if (key in current) engine.values[key] = current[key];\n }\n if (outcome === undefined) engine.state.serverErrors = serverErrors;\n engine.state.errors = { ...(outcome ? {} : errors), ...engine.errors };\n engine.skipped.delete(step.id);\n dropServerErrors(engine, engine.visibility.reconcileHidden(engine.values, engine.errors));\n engine.visibility.markChanged(true, true);\n engine.state.currentStepIndex = reconcileStepIndex(steps, engine.visibleSteps, engine.currentStepIndex);\n pruneOffPathErrors(engine);\n engine.notify({ fieldKeys: Object.keys({ ...values, ...current, ...errors }), structureChanged: true, valuesChanged: true });\n }\n }\n}\n\nexport async function changeStep(engine: EngineInternals, direction: 'next' | 'back', reason: StepChangeContext['reason'] = direction): Promise<boolean> {\n const skipping = reason === 'skip';\n if (!engine.isMultiStep || engine.stepValidating || engine.submitting) return false;\n if (!skipping && (direction === 'next' ? engine.isLastStep : engine.isFirstStep)) return false;\n const step = engine.currentStep!;\n const validating = direction === 'next' && !skipping;\n if (validating) includeCurrentStep(engine);\n if (validating && hasStepErrors(engine)) return false;\n const lifecycle = { ...engine.lifecycle };\n const validate = engine.onStepValidate;\n let committed = false;\n const fromIndex = engine.currentStepIndex;\n const toIndex = fromIndex + (direction === 'next' ? 1 : -1);\n const target = skipping ? skipTarget(engine) : engine.visibleSteps[toIndex];\n if (!target) return false;\n const context: StepChangeContext = { fromStepId: step.id, toStepId: target.id, reason, values: { ...getValidationValues(engine) } };\n const epoch = engine.validationEpoch;\n const operation = engine.latestOperation = ++engine.operationEpoch;\n const inputsChanged = watchCheckedInputs(engine, context.values);\n const stale = () => epoch !== engine.validationEpoch || operation !== engine.operationEpoch\n || engine.currentStep?.id !== step.id || inputsChanged();\n engine.state.stepValidating = true;\n engine.notify();\n try {\n if (stale()) return false;\n if (validating && validate) {\n const result = await validate!(step.id, context.values);\n if (stale()) return false;\n if (result && Object.keys(result).length > 0) {\n applyValidationErrors(engine, result);\n return false;\n }\n }\n if (lifecycle.onBeforeStepChange) {\n const allowed = await lifecycle.onBeforeStepChange(context);\n if (stale() || allowed === false) return false;\n }\n if (stale()) return false;\n if (validating && hasStepErrors(engine)) return false;\n committed = true;\n if (skipping) skipCurrentStep(engine);\n moveTo(engine, toIndex);\n await afterCommit('afterStepChange', () => lifecycle.onAfterStepChange?.(context));\n return true;\n } catch (error) {\n if (!committed && stale()) return false;\n throw error;\n } finally {\n if (operation === engine.operationEpoch) {\n engine.state.stepValidating = false;\n engine.notify();\n }\n }\n}\n\nexport function goToStepWithField(engine: EngineInternals, fieldKey: string): void {\n if (!engine.isMultiStep) return;\n const targetIndex = engine.visibility.findStepIndex(\n fieldKey,\n engine.values,\n engine.currentStepIndex,\n );\n if (targetIndex === engine.currentStepIndex) engine.notify();\n else if (targetIndex !== null) moveTo(engine, targetIndex);\n}\n","export interface NotifyOptions {\n fieldKeys?: Iterable<string>;\n structureChanged?: boolean;\n}\n\ntype Listener = () => void;\n\nfunction listen(listeners: Set<Listener>, listener: Listener): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\nexport function createSubscriptions() {\n let version = 0;\n let structureVersion = 0;\n const listeners = new Set<Listener>();\n const structureListeners = new Set<Listener>();\n const fieldVersions = new Map<string, number>();\n const fieldListeners = new Map<string, Set<Listener>>();\n\n return {\n subscribe: (listener: Listener) => listen(listeners, listener),\n getSnapshot: () => version,\n subscribeStructure: (listener: Listener) => listen(structureListeners, listener),\n getStructureSnapshot: () => structureVersion,\n getFieldSnapshot: (key: string) => fieldVersions.get(key) ?? 0,\n\n subscribeField(key: string, listener: Listener): () => void {\n const set = fieldListeners.get(key) ?? new Set();\n set.add(listener);\n fieldListeners.set(key, set);\n return () => {\n set.delete(listener);\n if (set.size === 0) fieldListeners.delete(key);\n };\n },\n\n notify({ fieldKeys = [], structureChanged = false }: NotifyOptions = {}): void {\n for (const key of new Set(fieldKeys)) {\n fieldVersions.set(key, (fieldVersions.get(key) ?? 0) + 1);\n for (const listener of fieldListeners.get(key) ?? []) listener();\n }\n if (structureChanged) {\n structureVersion++;\n for (const listener of structureListeners) listener();\n }\n version++;\n for (const listener of listeners) listener();\n },\n };\n}\n","import { checkDefinition, FormDefinitionError, type DefinitionIssue } from '../definition-validation';\nimport { definitionErrors } from '../definition-validation/check-definition';\nimport { isError } from '../definition-validation/issues';\nimport type { FormDefinition } from '../types';\nimport type { FormEngineOptions } from './engine-options';\n\nfunction developmentIssues(definition: FormDefinition, validators: Record<string, unknown>): DefinitionIssue[] | undefined {\n try {\n if (process.env.NODE_ENV !== 'production') return checkDefinition(definition, { validators });\n } catch (error) {\n if (!(error instanceof ReferenceError)) throw error;\n }\n return undefined;\n}\n\nexport function assertDefinition(definition: FormDefinition, options: FormEngineOptions, validators: Record<string, unknown>): void {\n const issues = developmentIssues(definition, validators) ?? definitionErrors(definition);\n const errors = issues.filter(isError);\n if (errors.length) throw new FormDefinitionError(errors);\n const warn = options.onWarning ?? ((issue: DefinitionIssue) => console.warn(`[formhaus] ${issue.message}`));\n for (const issue of issues) warn(issue);\n}\n","import type { FormField, FormStep } from '../types';\nimport { conditionFields } from './engine-utils';\n\nexport function indexConditions<T extends FormField | FormStep>(dependent: T, index: Map<string, Set<T>>): void {\n for (const field of conditionFields(dependent)) {\n const dependents = index.get(field) ?? new Set<T>();\n dependents.add(dependent);\n index.set(field, dependents);\n }\n}\n","import { conditionFields, getAllFields } from './engine-utils';\nimport { indexConditions } from './visibility-index';\nimport { createActivePath } from './step-routes';\nimport type { ValidatorFn } from '../validation';\nimport { validateStep } from '../validation';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport { isVisible } from '../visibility';\n\ninterface VisibilityCache {\n visibleSteps: FormStep[];\n currentStep: FormStep | null;\n visibleFields: FormField[];\n canGoNext: boolean;\n}\n\ntype Values = Record<string, unknown>;\n\nexport type VisibilityState = ReturnType<typeof createVisibility>;\n\nexport function createVisibility(definition: FormDefinition) {\n const allFields = getAllFields(definition);\n const fieldsByKey = new Map<string, FormField[]>();\n const routeFields = new Set<string>();\n const path = createActivePath(definition);\n const fieldDependents = new Map<string, Set<FormField>>();\n const stepDependents = new Map<string, Set<FormStep>>();\n const stepOfField = new Map<FormField, FormStep>();\n let visibilityDirty = true;\n let canGoNextDirty = true;\n const cache: VisibilityCache = { visibleSteps: [], currentStep: null, visibleFields: [], canGoNext: false };\n\n for (const field of allFields) {\n fieldsByKey.set(field.key, [...(fieldsByKey.get(field.key) ?? []), field]);\n indexConditions(field, fieldDependents);\n }\n for (const step of definition.steps ?? []) {\n for (const field of step.fields) stepOfField.set(field, step);\n indexConditions(step, stepDependents);\n for (const route of step.routes ?? []) for (const key of conditionFields(route)) routeFields.add(key);\n }\n\n const isMultiStep = () => (definition.steps ?? []).length > 0;\n const visible = (source: FormField | FormStep, values: Values) => isVisible(source, path.values(values));\n const onPath = (field: FormField, values: Values) => {\n const step = stepOfField.get(field);\n return !step || path.steps(values).includes(step);\n };\n\n function state(values: Values, stepIndex: number): VisibilityCache {\n if (!visibilityDirty) return cache;\n visibilityDirty = false;\n if (!isMultiStep()) {\n cache.visibleSteps = [];\n cache.currentStep = null;\n cache.visibleFields = (definition.fields ?? []).filter((field) => visible(field, values));\n return cache;\n }\n const steps = cache.visibleSteps = path.steps(values);\n const current = cache.currentStep = steps[stepIndex] ?? steps[steps.length - 1] ?? null;\n cache.visibleFields = current ? current.fields.filter((field) => visible(field, values)) : [];\n return cache;\n }\n\n return {\n allFields,\n conditionValues: path.values,\n state,\n\n markChanged(structureChanged: boolean, valuesChanged: boolean): void {\n if (structureChanged) visibilityDirty = true;\n if (structureChanged || valuesChanged) canGoNextDirty = true;\n },\n\n getCanGoNext(values: Values, stepIndex: number, validators: Record<string, ValidatorFn>): boolean {\n const step = state(values, stepIndex).currentStep;\n if (!canGoNextDirty) return cache.canGoNext;\n canGoNextDirty = false;\n const errors = step ? validateStep(step, path.values(values), validators) : {};\n return cache.canGoNext = isMultiStep() && Object.keys(errors).length === 0;\n },\n\n findStepIndex(fieldKey: string, values: Values, stepIndex: number): number | null {\n const target = state(values, stepIndex).visibleSteps.findIndex((step) => step.fields.some((field) => field.key === fieldKey));\n return target === -1 ? null : target;\n },\n\n affectsStructure(key: string, clearedFields: Set<string>): boolean {\n return routeFields.has(key) || fieldDependents.has(key) || stepDependents.has(key) || clearedFields.size > 0;\n },\n\n activeField(key: string, values: Values): FormField | undefined {\n return fieldsByKey.get(key)?.find((field) => onPath(field, values) && visible(field, values));\n },\n\n reconcileHidden(values: Values, errors: Record<string, string>): Set<string> {\n path.invalidate();\n const queue = [...new Set([...fieldDependents.keys(), ...stepDependents.keys()])];\n const queued = new Set(queue);\n const cleared = new Set<string>();\n const held = (key: string) => values[key] !== undefined || errors[key] !== undefined;\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n for (let index = 0; index < queue.length; index++) {\n const key = queue[index];\n queued.delete(key);\n for (const field of fieldDependents.get(key) ?? []) {\n if (onPath(field, values) && !visible(field, values) && held(field.key)) clear(field.key);\n }\n for (const step of stepDependents.get(key) ?? []) {\n if (!visible(step, values)) for (const field of step.fields) if (held(field.key)) clear(field.key);\n }\n }\n return cleared;\n },\n };\n}\n","import type { ValidatorFn } from '../validation';\nimport { messageResolver, type ResolveMessage } from '../validation/default-messages';\nimport type { FormDefinition, FormField, FormStep } from '../types';\nimport type { FormEngineOptions, StepValidateFn, SubmitHandler } from './engine-options';\nimport { createValues } from './engine-utils';\nimport { changeStep, goToStepWithField, skipStep } from './navigation';\nimport type { EngineInternals, EngineState, RuntimeNotifyOptions } from './runtime-internals';\nimport { createSubscriptions, type NotifyOptions } from './subscriptions';\nimport {\n applyValidationErrors,\n getSubmitValues,\n resetEngine,\n validateForm,\n validateOne,\n clearError,\n clearResolvedMatchErrors,\n dropServerErrors,\n pruneOffPathErrors,\n} from './validation-state';\nimport { submitForm } from './submission';\nimport { reconcileStepIndex } from './step-routes';\nimport { assertDefinition } from './warnings';\nimport { createVisibility, type VisibilityState } from './visibility-state';\n\nexport class FormEngine<TValues extends object = Record<string, unknown>> {\n private readonly state: EngineState;\n private readonly skipped = new Map<string, string[]>();\n private validationEpoch = 0;\n private operationEpoch = 0;\n private latestOperation = 0;\n private readonly lifecycle: FormEngineOptions;\n\n private readonly validators: Record<string, ValidatorFn>;\n private readonly messages: ResolveMessage;\n private get onStepValidate(): StepValidateFn | undefined { return this.lifecycle.onStepValidate; }\n private readonly visibility: VisibilityState;\n private readonly subscriptions = createSubscriptions();\n\n constructor(\n readonly definition: FormDefinition,\n initialValues?: Partial<NoInfer<TValues>>,\n options?: FormEngineOptions,\n ) {\n this.lifecycle = options ?? {};\n this.validators = options?.validators ?? {};\n assertDefinition(definition, this.lifecycle, this.validators);\n this.messages = messageResolver(options?.messages, definition.messages);\n this.visibility = createVisibility(definition);\n const values = createValues(this.visibility.allFields, initialValues as Record<string, unknown> | undefined);\n this.state = { values, errors: {}, topLevelErrors: [], serverErrors: {}, serverFormErrors: [], currentStepIndex: 0, fieldLoading: {}, stepValidating: false, submitting: false };\n this.visibility.reconcileHidden(values, this.state.errors);\n }\n\n get values(): Readonly<Partial<TValues>> { return this.state.values as Partial<TValues>; }\n get errors(): Readonly<Record<string, string>> { return this.state.errors; }\n get topLevelErrors(): readonly string[] { return this.state.topLevelErrors; }\n get currentStepIndex(): number { return this.state.currentStepIndex; }\n get fieldLoading(): Readonly<Record<string, boolean>> { return this.state.fieldLoading; }\n get stepValidating(): boolean { return this.state.stepValidating; }\n get submitting(): boolean { return this.state.submitting; }\n\n get isMultiStep(): boolean {\n return (this.definition.steps ?? []).length > 0;\n }\n\n get visibleSteps(): FormStep[] {\n return this.view.visibleSteps;\n }\n\n get currentStep(): FormStep | null {\n return this.view.currentStep;\n }\n\n get visibleFields(): FormField[] {\n return this.view.visibleFields;\n }\n\n get isFirstStep(): boolean {\n return this.currentStepIndex === 0;\n }\n\n get isLastStep(): boolean {\n return this.currentStepIndex >= this.visibleSteps.length - 1;\n }\n\n get canGoNext(): boolean {\n return this.visibility.getCanGoNext(this.state.values, this.currentStepIndex, this.validators);\n }\n\n get stepErrors(): Record<string, string[]> {\n const result: Record<string, string[]> = Object.create(null);\n for (const step of this.visibleSteps) {\n const keys = step.fields.map((field) => field.key).filter((key) => this.errors[key] !== undefined);\n if (keys.length > 0) result[step.id] = keys;\n }\n return result;\n }\n\n get progress(): { current: number; total: number } {\n const total = this.visibleSteps.length;\n return { current: Math.min(this.currentStepIndex + 1, total), total };\n }\n\n subscribe(listener: () => void): () => void {\n return this.subscriptions.subscribe(listener);\n }\n\n getSnapshot(): number {\n return this.subscriptions.getSnapshot();\n }\n\n subscribeField(key: string, listener: () => void): () => void {\n return this.subscriptions.subscribeField(key, listener);\n }\n\n getFieldSnapshot(key: string): number {\n return this.subscriptions.getFieldSnapshot(key);\n }\n\n subscribeStructure(listener: () => void): () => void {\n return this.subscriptions.subscribeStructure(listener);\n }\n\n getStructureSnapshot(): number {\n return this.subscriptions.getStructureSnapshot();\n }\n\n setValue(key: string, value: unknown): void {\n const { values, errors } = this.state;\n const previousSteps = this.isMultiStep ? this.visibleSteps : null;\n const valueChanged = !Object.is(values[key], value);\n const previousError = errors[key];\n values[key] = value;\n clearError(this.internals, key, valueChanged);\n for (const [stepId, keys] of this.skipped) if (valueChanged && keys.includes(key)) this.skipped.delete(stepId);\n const clearedFields = this.visibility.reconcileHidden(values, errors);\n dropServerErrors(this.internals, clearedFields);\n const revalidated = clearResolvedMatchErrors(this.internals, key);\n const changedFields = new Set([...clearedFields, ...revalidated]);\n if (valueChanged || previousError !== errors[key]) changedFields.add(key);\n const valuesChanged = valueChanged || clearedFields.size > 0;\n const structureChanged = valuesChanged && this.visibility.affectsStructure(key, clearedFields);\n if (previousSteps && structureChanged) {\n this.visibility.markChanged(true, true);\n this.state.currentStepIndex = reconcileStepIndex(previousSteps, this.visibleSteps, this.currentStepIndex);\n for (const pruned of pruneOffPathErrors(this.internals)) changedFields.add(pruned);\n }\n this.notify({ fieldKeys: changedFields, structureChanged, valuesChanged });\n }\n\n setErrors(errors: Record<string, string>): void {\n applyValidationErrors(this.internals, errors, true);\n }\n\n setFieldLoading(key: string, loading: boolean): void {\n const previous = this.state.fieldLoading[key] === true;\n if (loading) this.state.fieldLoading[key] = true;\n else delete this.state.fieldLoading[key];\n this.notify({ fieldKeys: previous === loading ? [] : [key] });\n }\n\n cancelPendingActions(): void {\n this.validationEpoch++;\n this.operationEpoch++;\n this.state.stepValidating = false;\n this.state.submitting = false;\n this.notify();\n }\n\n next(): Promise<boolean> { return changeStep(this.internals, 'next'); }\n back(): Promise<boolean> { return changeStep(this.internals, 'back'); }\n skip(submit?: SubmitHandler): Promise<boolean> { return skipStep(this.internals, submit); }\n submit(handler: SubmitHandler): Promise<boolean> { return submitForm(this.internals, handler); }\n isStepSkipped(stepId: string): boolean { return this.skipped.has(stepId); }\n validate(): Record<string, string> { return validateForm(this.internals); }\n validateField(key: string): string | null { return validateOne(this.internals, key); }\n getSubmitValues(): Partial<TValues> { return getSubmitValues(this.internals) as Partial<TValues>; }\n goToStepWithField(key: string): void { goToStepWithField(this.internals, key); }\n reset(values?: Record<string, unknown>): void { resetEngine(this.internals, values); }\n\n private get view() {\n return this.visibility.state(this.state.values, this.currentStepIndex);\n }\n\n private get internals(): EngineInternals {\n return this as unknown as EngineInternals;\n }\n\n private notify(options: RuntimeNotifyOptions = {}): void {\n this.visibility.markChanged(!!options.structureChanged, !!options.valuesChanged);\n this.subscriptions.notify(options);\n }\n}\n","import type { FormDefinition, FormField } from '../types';\nimport type { MessageSource, ValidatorFn } from '../validation';\nimport { messageResolver, type ResolveMessage } from '../validation/default-messages';\nimport { parseDefinition } from '../definition-validation';\nimport { getAllFields } from '../engine/engine-utils';\nimport type { EngineInternals } from '../engine/runtime-internals';\nimport { FormEngine } from '../engine/runtime';\nimport { skipStepAt } from '../engine/step-skip';\nimport { createVisibility } from '../engine/visibility-state';\nimport { normalizeValue, typeError } from '../validation/type-checks';\n\nexport interface SubmissionOptions {\n skippedSteps?: string[];\n validators?: Record<string, ValidatorFn>;\n messages?: MessageSource;\n}\n\nconst BODY_MESSAGE = 'Pass the values object as the second argument, not the request body with \"values\" and \"skippedSteps\".';\n\nexport interface SubmissionResult {\n values: Record<string, unknown>;\n errors: Record<string, string>;\n}\n\nconst allow: ValidatorFn = () => null;\n\nconst hasOwn = (source: object, key: string) => Object.prototype.hasOwnProperty.call(source, key);\n\ninterface ActiveValues {\n values: Record<string, unknown>;\n active: Map<string, FormField>;\n}\n\nfunction activeValues(definition: FormDefinition, fields: FormField[], input: unknown): ActiveValues {\n const source = input !== null && typeof input === 'object' && !Array.isArray(input) ? input as Record<string, unknown> : {};\n const visibility = createVisibility(definition);\n const keys = [...new Set(fields.map(({ key }) => key))].filter((key) => hasOwn(source, key));\n let result: ActiveValues = { values: {}, active: new Map() };\n for (let round = 0; round <= fields.length; round++) {\n const values: Record<string, unknown> = {};\n for (const key of keys) {\n const value = normalizeValue(result.active.get(key) ?? fields.find((field) => field.key === key)!, source[key]);\n if (value !== undefined) values[key] = value;\n }\n const active = new Map<string, FormField>();\n for (const key of keys) {\n const field = visibility.activeField(key, values);\n if (field) active.set(key, field);\n }\n const settled = keys.every((key) => active.get(key) === result.active.get(key));\n result = { values, active };\n if (settled) break;\n }\n return result;\n}\n\nfunction typeErrors({ values, active }: ActiveValues, resolve: ResolveMessage): Map<string, string> {\n const errors = new Map<string, string>();\n for (const [key, field] of active) {\n const error = typeError(field, values[key], resolve);\n if (error) errors.set(key, error);\n }\n return errors;\n}\n\nfunction withoutRules(definition: FormDefinition, invalid: Map<string, string>): FormDefinition {\n const strip = (fields: FormField[]) => fields.map((field) => (invalid.has(field.key) ? { ...field, validation: undefined } : field));\n const steps = definition.steps?.map((step) => ({ ...step, fields: strip(step.fields) }));\n return { ...definition, ...(definition.fields && { fields: strip(definition.fields) }), ...(steps && { steps }) };\n}\n\nfunction ignoredValidators(fields: FormField[], given: Record<string, ValidatorFn> = {}): Record<string, ValidatorFn> {\n const validators: Record<string, ValidatorFn> = {};\n for (const { validation } of fields) if (validation?.validator) validators[validation.validator] = allow;\n return { ...validators, ...given };\n}\n\nfunction isBody(fields: FormField[], input: unknown): boolean {\n if (input === null || typeof input !== 'object' || !hasOwn(input, 'values')) return false;\n return !fields.some((field) => field.key === 'values' || field.key === 'skippedSteps');\n}\n\nfunction applySkips(engine: FormEngine, skippedSteps: unknown): void {\n if (!Array.isArray(skippedSteps)) return;\n const requested = new Set(skippedSteps);\n for (let index = 0; index < engine.visibleSteps.length; index++) {\n const step = engine.visibleSteps[index];\n if (step.skip && requested.has(step.id)) skipStepAt(engine as unknown as EngineInternals, index);\n }\n}\n\nexport function validateSubmission(\n definition: FormDefinition,\n values: unknown,\n options: SubmissionOptions = {},\n): SubmissionResult {\n parseDefinition(definition);\n const fields = getAllFields(definition);\n const resolved = activeValues(definition, fields, values);\n const messages = messageResolver(options.messages, definition.messages);\n const invalid = typeErrors(resolved, messages);\n const engineOptions = { validators: ignoredValidators(fields, options.validators), messages, onWarning: () => {} };\n const engine = new FormEngine(withoutRules(definition, invalid), resolved.values, engineOptions);\n applySkips(engine, options.skippedSteps);\n const errors = engine.validate();\n const submitted = engine.getSubmitValues();\n for (const [key, error] of invalid) if (hasOwn(submitted, key)) errors[key] = error;\n if (isBody(fields, values)) errors.values = BODY_MESSAGE;\n return { values: submitted, errors };\n}\n"]}
|