@formhaus/core 0.13.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/{check-definition-DuLExofm.d.ts → check-definition-DyiWqhEV.d.ts} +3 -3
  2. package/dist/chunk-5WADJMJJ.js +2 -0
  3. package/dist/chunk-5WADJMJJ.js.map +1 -0
  4. package/dist/chunk-5YPOS62Y.js +3 -0
  5. package/dist/chunk-5YPOS62Y.js.map +1 -0
  6. package/dist/chunk-CW5ZWCSD.js +2 -0
  7. package/dist/chunk-CW5ZWCSD.js.map +1 -0
  8. package/dist/chunk-QMT7RJ4T.js +3 -0
  9. package/dist/chunk-QMT7RJ4T.js.map +1 -0
  10. package/dist/chunk-QVA6DLYS.js +2 -0
  11. package/dist/chunk-QVA6DLYS.js.map +1 -0
  12. package/dist/chunk-REIX6ART.js +2 -0
  13. package/dist/chunk-REIX6ART.js.map +1 -0
  14. package/dist/chunk-TMO47L42.js +5 -0
  15. package/dist/chunk-TMO47L42.js.map +1 -0
  16. package/dist/cloud.d.ts +3 -3
  17. package/dist/cloud.js +1 -1
  18. package/dist/{controller-Ds_kbXSU.d.ts → controller-BJVYkMHT.d.ts} +1 -1
  19. package/dist/default-messages-E-nZe4Tc.d.ts +10 -0
  20. package/dist/{definition-B4OIy_wH.d.ts → definition-o4Y0OY6y.d.ts} +53 -6
  21. package/dist/fix.d.ts +38 -0
  22. package/dist/fix.js +3 -0
  23. package/dist/fix.js.map +1 -0
  24. package/dist/i18n.d.ts +4 -3
  25. package/dist/i18n.js +1 -1
  26. package/dist/i18n.js.map +1 -1
  27. package/dist/{runtime-BN2PuKD7.d.ts → index-BNGgMIbC.d.ts} +20 -6
  28. package/dist/index.d.ts +67 -11
  29. package/dist/index.js +1 -1
  30. package/dist/internal.d.ts +27 -7
  31. package/dist/internal.js +1 -1
  32. package/dist/internal.js.map +1 -1
  33. package/dist/issues-Dua58e1J.d.ts +14 -0
  34. package/dist/server.d.ts +5 -5
  35. package/dist/server.iife.js +3 -3
  36. package/dist/server.iife.js.map +1 -1
  37. package/dist/server.js +1 -1
  38. package/dist/server.js.map +1 -1
  39. package/dist/{validate-field-ND_UxoJU.d.ts → validate-field-CRR6GQBA.d.ts} +2 -2
  40. package/fixtures/submissions/choices.json +6 -26
  41. package/fixtures/submissions/groups.json +649 -0
  42. package/fixtures/submissions/messages.json +4 -16
  43. package/fixtures/submissions/show-conditions.json +2 -7
  44. package/fixtures/submissions/skip-routes.json +1 -3
  45. package/fixtures/submissions/skip.json +3 -9
  46. package/fixtures/submissions/special-types.json +2 -6
  47. package/package.json +10 -6
  48. package/schema/form-definition.schema.json +380 -19
  49. package/schema/form-translation.schema.json +79 -1
  50. package/style.css +103 -82
  51. package/dist/chunk-35SAVPYL.js +0 -2
  52. package/dist/chunk-35SAVPYL.js.map +0 -1
  53. package/dist/chunk-4UCHIIVE.js +0 -2
  54. package/dist/chunk-4UCHIIVE.js.map +0 -1
  55. package/dist/chunk-76YV4J3Q.js +0 -3
  56. package/dist/chunk-76YV4J3Q.js.map +0 -1
  57. package/dist/chunk-J5TQSLO3.js +0 -3
  58. package/dist/chunk-J5TQSLO3.js.map +0 -1
  59. package/dist/chunk-PBTYUSZR.js +0 -2
  60. package/dist/chunk-PBTYUSZR.js.map +0 -1
  61. package/dist/chunk-RN5GQHKN.js +0 -5
  62. package/dist/chunk-RN5GQHKN.js.map +0 -1
  63. package/dist/default-messages-yS4QtrYi.d.ts +0 -23
@@ -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","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"]}
1
+ {"version":3,"sources":["../src/visibility/evaluate-condition.ts","../src/definition-validation/issues.ts","../src/definition-validation/conditions.ts","../src/validation/default-messages.ts","../src/validation/type-checks.ts","../src/visibility/is-visible.ts","../src/visibility/nodes.ts","../src/definition-validation/format.ts","../src/definition-validation/shape.ts","../src/definition-validation/context.ts","../src/definition-validation/fields.ts","../src/definition-validation/graph.ts","../src/engine/engine-utils.ts","../src/sources/index.ts","../src/definition-validation/sources.ts","../src/definition-validation/paths.ts","../src/definition-validation/structure.ts","../src/definition-validation/properties.ts","../src/definition-validation/warnings.ts","../src/definition-validation/check-definition.ts","../src/validation/validate-field.ts","../src/validation/validate-step.ts","../src/engine/validation-state.ts","../src/engine/step-routes.ts","../src/engine/write-value.ts","../src/engine/groups.ts","../src/engine/lifecycle-error.ts","../src/engine/pending-inputs.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","TESTS","operand","evaluateCondition","condition","values","operator","name","FormDefinitionError","issues","issue","sentence","text","create","severity","code","path","problem","hint","__spreadValues","error","warning","pointer","key","isError","oneOf","shown","distance","a","b","row","_","index","i","next","j","closest","candidates","lower","candidate","suggest","match","OPERATORS","operatorIssues","keys","unknown","count","missingTarget","context","group","_a","_b","inner","scopes","scope","keyList","referenceIssues","owner","step","target","sameStep","allowed","conditionErrors","entry","conditionIssues","DEFAULT_MESSAGES","formatText","template","params","hasOwn","resolveText","defaults","sources","source","messageResolver","field","namedResolver","resolve","message","BOOLEAN_TYPES","BUILT_IN_TYPES","MAX_STRING_LENGTH","MAX_HIDDEN_LENGTH","MAX_EMAIL_LENGTH","MAX_ITEMS","MAX_GROUP_ITEMS","EMAIL","DECIMAL","DATE","DATE_ONLY","HOURS","DATE_TIME","TIME","TEXT_TYPES","FORMATS","isCalendarDate","year","month","day","UNTRIMMED_TYPES","trimValue","normalizeValue","input","normalizeItems","parsed","item","result","staticOptions","isOption","options","option","lengthError","fail","_c","_d","max","multiselectError","stringError","formatError","format","primitiveError","isEmpty","groupError","typeError","clientTypeError","isVisible","matches","isEntry","isSection","node","isGroup","valueFields","nodes","topNodes","definition","conditionFields","shownFields","itemsOf","itemScope","cleanItems","itemPath","splitPath","rest","ids","lastId","itemId","id","keepId","from","to","FORMAT_VERSION","formatIssues","version","valid","nestable","KINDS","typed","rules","kind","missing","list","check","required","conditions","action","RULES","validation","dependencies","container","route","shapeIssues","SUBMIT","metaIssues","collect","createContext","validators","steps","visit","items","parent","position","at","entries","rangeIssue","min","low","high","patternIssue","pattern","e","ruleIssues","optionIssues","fieldIssues","nodeId","dependencyGraph","graph","link","owners","known","findCycles","visiting","cycles","start","stack","frame","neighbor","graphIssues","paths","cycle","shownError","errors","getAllFields","initialState","serverErrors","serverFormErrors","createValues","fields","initialValues","getChangedKeys","previous","SOURCE_NAMES","QUERY","sourceIssue","names","query","sourceIssues","sourceWarnings","conditional","successors","indexes","reachableSteps","seen","queue","RESERVED","stepIssues","first","later","keyIssues","reachable","exclusive","outer","groups","clash","other","prefix","nestingIssues","structureIssues","PROPERTIES","LABEL_HINT","absent","fix","misplaced","fieldWarnings","visible","empty","propertyWarnings","title","LIST_OPERATORS","COMPARISONS","expectedType","valueIssue","mismatch","operands","expected","wrong","conditionWarnings","slowPattern","closed","char","ruleWarnings","rule","numeric","ranges","sized","__spreadProps","routeWarnings","targets","sibling","exits","versionWarnings","major","minor","definitionWarnings","warnings","shape","definitionErrors","checkDefinition","parseDefinition","_options","boundError","size","patternError","sizeError","unit","validateFieldValue","allValues","messages","_e","matchMessage","typeIssue","validateItems","validateFields","errorKeys","fieldsErrors","engine","getSubmitValues","fieldError","itemError","applyValidationErrors","server","formErrors","state","previousErrors","bound","general","visibility","activeField","activeItem","structureChanged","moveToFirstError","notify","targetIndex","clearError","kept","dropServerErrors","dropped","clearResolvedMatchErrors","cleared","allFields","pruneOffPathErrors","pathFields","pruned","withoutSkipped","skipped","validateForm","navigate","validateOne","previousError","fieldKeys","conditionValues","resetEngine","previousValues","loadingFields","validationEpoch","operationEpoch","reconcileHidden","changedValues","changedFields","activeSteps","walkPath","available","addStepValues","reconcileStepIndex","previousStep","preserved","nextIds","before","predecessor","saved","had","createActivePath","active","refresh","writeValue","own","changed","previousSteps","valueChanged","stepId","clearedFields","valuesChanged","affectsStructure","markChanged","activeGroup","itemLimits","within","groupItems","itemFields","addItem","shift","removed","moved","errorKey","parts","removeItem","setItemValue","fieldKey","current","updated","FormLifecycleError","phase","cause","afterCommit","callback","activePath","watchCheckedInputs","checked","watchValues","resetValues","skipTarget","skipCurrentStep","owned","includeCurrentStep","skipStepAt","isRejection","applyRejection","sent","submitForm","submit","keepSkipped","lifecycle","dispatched","epoch","operation","latestOperation","inputsChanged","stale","skippedSteps","rejected","hasStepErrors","moveTo","skipStep","changeStep","outcome","skippedValues","edited","submitting","submitted","record","direction","reason","skipping","validating","validate","committed","toIndex","goToStepWithField","findStepIndex","listen","listeners","listener","createSubscriptions","structureVersion","structureListeners","fieldVersions","fieldListeners","set","developmentIssues","assertDefinition","warn","indexConditions","dependent","dependents","createVisibility","fieldsByKey","routeFields","fieldDependents","stepDependents","stepOfField","sectionOf","seeds","visibilityDirty","canGoNextDirty","cache","section","isMultiStep","onPath","parse","groupKey","stepIndex","reconcileItems","round","hidden","getCanGoNext","initial","queued","held","mark","clear","update","FormEngine","subscriptions","topLevelErrors","view","total","loading","advance","handler","BODY_MESSAGE","allow","internals","activeValues","settled","typeErrors","itemErrors","invalid","withoutRules","strip","ignoredValidators","given","isBody","applySkips","requested","rejectGroups","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\ntype Operands = Required<Omit<ShowCondition, 'field'>>;\n\nconst TESTS: { [K in keyof Operands]: (value: unknown, operand: Operands[K]) => boolean } = {\n eq: (value, operand) => value === operand,\n neq: (value, operand) => value !== operand,\n in: (value, operand) => operand.includes(value as string | number),\n notIn: (value, operand) => !operand.includes(value as string | number),\n notEmpty: (value, operand) => !operand || !isBlank(value),\n gt: (value, operand) => toNumber(value)! > operand,\n gte: (value, operand) => toNumber(value)! >= operand,\n lt: (value, operand) => toNumber(value)! < operand,\n lte: (value, operand) => toNumber(value)! <= operand,\n};\n\nexport function evaluateCondition(condition: ShowCondition, values: Record<string, unknown>): boolean {\n const value = values[condition.field];\n const operator = CONDITION_OPERATORS.find((name) => condition[name] !== undefined);\n return !!operator && (TESTS[operator] as (value: unknown, operand: unknown) => boolean)(value, condition[operator]);\n}\n","export type DefinitionIssueCode =\n | 'invalid-type'\n | 'missing-property'\n | 'unknown-property'\n | 'empty-label'\n | 'fields-and-steps'\n | 'duplicate-step-id'\n | 'duplicate-key'\n | 'duplicate-option-value'\n | 'reserved-key'\n | 'route-target'\n | 'unknown-field'\n | 'group-scope'\n | 'invalid-nesting'\n | 'outdated-format-version'\n | 'forward-reference'\n | 'condition-operator-count'\n | 'unknown-operator'\n | 'condition-value-mismatch'\n | 'condition-cycle'\n | 'invalid-pattern'\n | 'slow-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 | 'unknown-source'\n | 'source-not-applicable';\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\nconst sentence = (text: string) => (text.endsWith('?') ? text : `${text}.`);\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 ? ` ${sentence(hint)}` : ''}`,\n ...(hint && { hint: sentence(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\n .slice(0, 10)\n .map((value) => JSON.stringify(value))\n .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) =>\n error('unknown-operator', `${path}/${pointer(key)}`, `\"${key}\" is not a condition operator`, suggest(key, [...OPERATORS])),\n );\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\nexport function missingTarget(context: CheckContext, name: string, path: string, group?: string, key?: string): DefinitionIssue[] {\n if (context.target(name, group)) return [];\n const inner = [...context.scopes].find(([, scope]) => scope.has(name));\n if (inner)\n return [error('group-scope', path, `\"${name}\" is a field inside the group \"${inner[0]}\"`, 'Only fields of the same group can use it')];\n const candidates = [...(group !== undefined ? (context.scopes.get(group)?.keys() ?? []) : []), ...context.keyList].filter(\n (candidate) => candidate !== key,\n );\n return [error('unknown-field', path, `\"${name}\" is not a field key`, context.suggest(name, candidates))];\n}\n\nfunction referenceIssues(context: CheckContext, { condition, path, owner, step, key, group }: ConditionEntry): DefinitionIssue[] {\n const target = context.target(condition.field, group);\n if (!target) return missingTarget(context, condition.field, `${path}/field`, group, key);\n if (target.group || 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 [\n error(\n 'forward-reference',\n `${path}/field`,\n `\"${condition.field}\" belongs to ${sameStep}`,\n `${owner === 'route' ? 'Route' : owner === 'step' ? 'Step' : 'Field'} conditions can use fields of ${allowed}`,\n ),\n ];\n}\n\nexport function conditionErrors(context: CheckContext, entry: ConditionEntry): DefinitionIssue[] {\n const { condition, path } = entry;\n if (typeof condition.field !== 'string')\n return [error('missing-property', path, 'missing required property \"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 { FormField, MessageCatalog, MessageKey } from '../types';\nimport { hasOwn } from '../visibility/nodes';\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 time: 'Enter a valid 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 hidden: '{label}: {message}',\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) => (hasOwn(params, name) ? String(params[name]) : match));\n}\n\ntype TextSource<K extends string> =\n | Partial<Record<K, string>>\n | ((key: K, params: MessageParams, ...context: never[]) => string | undefined);\n\nexport function resolveText<K extends string>(\n defaults: Record<K, string>,\n key: K,\n params: MessageParams,\n sources: (TextSource<K> | undefined)[],\n ...context: unknown[]\n): 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 namedResolver(resolve: ResolveMessage): ResolveMessage {\n return (key, params, field) => {\n const message = resolve(key, params, field);\n return field.type === 'hidden' ? resolve('hidden', { label: field.label || field.key, message }, field) : message;\n };\n}\n\nexport function getDefaultMessage(rule: ValidationRule | MessageKey, params: Record<string, unknown> = {}): string {\n const template = hasOwn(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, FormGroup } from '../types';\nimport { type MessageKey, messageResolver, type ResolveMessage } from './default-messages';\nimport { hasOwn } from '../visibility/nodes';\nimport { isBlank } from '../visibility/evaluate-condition';\n\nexport const BOOLEAN_TYPES = ['checkbox', 'switch'];\nexport const BUILT_IN_TYPES = [\n 'text',\n 'email',\n 'phone',\n 'number',\n 'password',\n 'select',\n 'autocomplete',\n 'multiselect',\n 'checkbox',\n 'radio',\n 'switch',\n 'file',\n 'date',\n 'datetime',\n 'time',\n 'textarea',\n 'hidden',\n];\n\nexport const MAX_STRING_LENGTH = 10000;\nexport const MAX_HIDDEN_LENGTH = 2000;\nconst MAX_EMAIL_LENGTH = 254;\nconst MAX_ITEMS = 1000;\nconst MAX_GROUP_ITEMS = 100;\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 HOURS = '(?:[01]\\\\d|2[0-3]):[0-5]\\\\d';\nconst DATE_TIME = new RegExp(`^${DATE}T${HOURS}(?::[0-5]\\\\d(?:\\\\.\\\\d{1,3})?)?(?:Z|[+-]${HOURS})?$`);\nconst TIME = new RegExp(`^${HOURS}(?::[0-5]\\\\d)?$`);\nconst TEXT_TYPES = new Set(['text', 'phone', 'password', 'textarea', 'autocomplete', 'hidden']);\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 ['time', [TIME, 'time', 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 if (field.type === 'group') return normalizeItems(field as FormGroup, input);\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\nfunction normalizeItems(group: FormGroup, input: unknown): unknown {\n if (!Array.isArray(input) || input.length > (group.validation?.maxLength ?? MAX_GROUP_ITEMS)) return input;\n return input.map((item) => {\n if (!entry(item)) return item;\n const result: Record<string, unknown> = {};\n for (const field of group.fields) {\n const value = hasOwn(item, field.key) ? normalizeValue(field, item[field.key]) : undefined;\n if (value !== undefined) result[field.key] = value;\n }\n return result;\n });\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 ?? (field.type === 'hidden' ? MAX_HIDDEN_LENGTH : 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 (\n lengthError(field, value, fail) ??\n (value.length <= max && format.test(value) && (format === EMAIL || format === TIME || isCalendarDate(value)) ? null : fail(key))\n );\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 isEmpty(field: FormField, value: unknown): boolean {\n return isBlank(value) && (field.type === 'multiselect' || !Array.isArray(value));\n}\n\nconst entry = (item: unknown) => Object.prototype.toString.call(item) === '[object Object]';\n\nfunction groupError(field: FormField, value: unknown, fail: Fail): string | null {\n const max = field.validation?.maxLength;\n if (!Array.isArray(value)) return fail('value');\n if (max !== undefined && value.length > max) return field.validation?.maxLengthMessage ?? fail('maxItems', { max });\n return value.length > (max ?? MAX_GROUP_ITEMS) || !value.every(entry) ? fail('value') : null;\n}\n\nexport function typeError(field: FormField, value: unknown, resolve: ResolveMessage = messageResolver()): string | null {\n if (isEmpty(field, value)) return null;\n const fail: Fail = (key, params = {}) => resolve(key, params, field);\n if (field.type === 'group') return groupError(field, value, fail);\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')\n 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 (field.type === 'group') return ['value'];\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', ...(field.type === 'hidden' ? ['hidden' as const] : [])];\n}\n\nexport function clientTypeError(field: FormField, value: unknown, resolve?: ResolveMessage): string | null {\n if (field.type === 'file' || (!BUILT_IN_TYPES.includes(field.type) && field.type !== 'group')) return null;\n return typeError(field, value, resolve);\n}\n","import type { FormField, ShowCondition } from '../types';\nimport { evaluateCondition } from './evaluate-condition';\n\nexport function isVisible(field: Pick<FormField, 'show' | 'showAny'>, values: Record<string, unknown>): 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 { FormDefinition, FormField, FormGroup, FormNode, FormSection } from '../types';\nimport { trimValue } from '../validation/type-checks';\nimport { isVisible } from './is-visible';\n\ntype Values = Record<string, unknown>;\n\nexport const isEntry = (value: unknown): value is Values => typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const hasOwn = (value: object, key: PropertyKey): boolean => Object.prototype.hasOwnProperty.call(value, key);\n\nexport const isSection = (node: { type?: unknown }): node is FormSection => node.type === 'section';\nexport const isGroup = (node: { type?: unknown }): node is FormGroup => node.type === 'group';\n\nexport function valueFields(nodes: FormNode[]): FormField[] {\n return nodes.flatMap((node) => (isSection(node) ? node.fields : [node]));\n}\n\nexport function topNodes(definition: FormDefinition): FormNode[] {\n return definition.steps?.length ? definition.steps.flatMap((step) => step.fields) : (definition.fields ?? []);\n}\n\nexport function conditionFields(source: Pick<FormField, 'show' | 'showAny'>): string[] {\n return [...(source.show ?? []), ...(source.showAny ?? [])].map((condition) => condition.field);\n}\n\nexport function shownFields(nodes: FormNode[], values: Values): FormField[] {\n return nodes.flatMap((node) =>\n !isVisible(node, values) ? [] : isSection(node) ? node.fields.filter((field) => isVisible(field, values)) : [node],\n );\n}\n\nexport const itemsOf = (value: unknown): unknown[] => (Array.isArray(value) ? value : []);\n\nexport function itemScope(group: FormGroup, item: unknown, values: Values): Values {\n const scope = { ...values };\n const source = isEntry(item) ? item : {};\n for (const field of group.fields) scope[field.key] = trimValue(field, source[field.key]);\n return scope;\n}\n\nexport function cleanItems(group: FormGroup, value: unknown, values: Values): unknown {\n if (!Array.isArray(value)) return value;\n return value.map((item) => {\n const scope = itemScope(group, item, values);\n const result: Values = {};\n for (const field of group.fields) {\n if (scope[field.key] !== undefined && isVisible(field, scope)) result[field.key] = scope[field.key];\n }\n return result;\n });\n}\n\nexport function itemPath(group: string, index: number, field: string): string {\n return `${group}.${index}.${field}`;\n}\n\nexport function splitPath(group: string, key: string): [number, string] | undefined {\n if (!key.startsWith(`${group}.`)) return undefined;\n const rest = key.slice(group.length + 1);\n const match = /^(0|[1-9]\\d*)\\.(.+)$/.exec(rest);\n return match ? [Number(match[1]), match[2]] : undefined;\n}\n\nconst ids = new WeakMap<object, string>();\nlet lastId = 0;\n\nexport function itemId(item: unknown, index: number): string {\n if (!isEntry(item)) return `${index}`;\n let id = ids.get(item);\n if (id === undefined) ids.set(item, (id = `i${++lastId}`));\n return id;\n}\n\nexport function keepId<T extends object>(from: unknown, to: T): T {\n ids.set(to, itemId(from, 0));\n return to;\n}\n","import type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nexport const FORMAT_VERSION = '1.1';\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, 10) <= parseInt(FORMAT_VERSION, 10)) return [];\n return [\n 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}\n","import type { DefinitionIssue } from './issues';\nimport { formatIssues } from './format';\nimport { error, pointer } from './issues';\nimport { isEntry } from '../visibility/nodes';\n\nexport { isEntry };\n\nexport const nestable = (path: string) => path.split('/fields/').length <= 3;\n\ntype Entry = Record<string, unknown>;\ntype Check = (value: Entry, path: string) => DefinitionIssue[];\ntype Kind = 'string' | 'number' | 'boolean' | 'requirement' | 'scalar' | 'list';\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: [\n (value) => Array.isArray(value) && value.every((item) => ['string', 'number'].includes(typeof item)),\n 'an array of strings or numbers',\n ],\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])\n ? []\n : [error('invalid-type', `${path}/${pointer(key)}`, `\"${key}\" must be ${name}`)];\n });\n}\n\nexport function missing(path: string, key: string, hint?: string, create = error): DefinitionIssue {\n return create('missing-property', path, `missing required property \"${key}\"`, hint);\n}\n\nfunction list(value: unknown, path: string, name: string, check: Check, required = false): DefinitionIssue[] {\n if (value == null && !required) return [];\n if (value === undefined) return [missing(path.slice(0, path.lastIndexOf('/')), path.slice(path.lastIndexOf('/') + 1))];\n if (!Array.isArray(value))\n 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 if (value[key] === undefined) return [missing(path, key)];\n return typeof value[key] === 'string' ? [] : [error('invalid-type', `${path}/${pointer(key)}`, `\"${key}\" must be a string`)];\n}\n\nconst condition: Check = (value, path) =>\n typed(\n value,\n {\n field: 'string',\n eq: 'scalar',\n neq: 'scalar',\n in: 'list',\n notIn: 'list',\n notEmpty: 'boolean',\n gt: 'number',\n gte: 'number',\n lt: 'number',\n lte: 'number',\n },\n path,\n );\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',\n minLength: 'number',\n maxLength: 'number',\n min: 'number',\n max: 'number',\n pattern: 'string',\n matchField: 'string',\n validator: 'string',\n minLengthMessage: 'string',\n maxLengthMessage: 'string',\n minMessage: 'string',\n maxMessage: 'string',\n patternMessage: 'string',\n 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 const container = (value.type === 'section' || value.type === 'group') && nestable(path);\n return [\n ...text(value, 'key', path),\n ...text(value, 'type', path),\n ...typed(\n value,\n {\n label: 'string',\n placeholder: 'string',\n helperText: 'string',\n title: 'string',\n description: 'string',\n itemLabel: 'string',\n addLabel: 'string',\n removeLabel: 'string',\n defaultItems: 'number',\n },\n path,\n ),\n ...(container ? list(value.fields, `${path}/fields`, 'a field object', field, true) : []),\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};\n\nconst route: Check = (value, path) => [\n ...(value.to === undefined\n ? [missing(path, 'to')]\n : value.to === null || typeof value.to === 'string'\n ? []\n : [error('invalid-type', `${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\nconst SUBMIT = 'Add \"submit\": { \"label\": \"Submit\" }';\n\nexport function metaIssues(input: Entry): DefinitionIssue[] {\n return [\n ...text(input, 'id', ''),\n ...(input.submit === undefined\n ? [missing('', 'submit', SUBMIT)]\n : isEntry(input.submit)\n ? []\n : [error('invalid-type', '/submit', 'must be an action object', SUBMIT)]),\n ];\n}\n","import type { FormAction, FormDefinition, FormField, FormGroup, FormNode, ShowCondition } from '../types';\nimport { isGroup, isSection } from '../visibility/nodes';\nimport { nestable } from './shape';\n\nexport interface FieldEntry {\n field: FormField;\n path: string;\n step: number;\n group?: FormGroup;\n}\n\nexport interface NodeEntry {\n node: FormNode;\n path: string;\n step: number;\n group?: FormGroup;\n parent?: FormNode;\n}\n\nexport interface ConditionEntry {\n condition: ShowCondition;\n path: string;\n owner: 'field' | 'step' | 'route' | 'action';\n step: number;\n key?: string;\n group?: string;\n}\n\nexport interface CheckContext {\n definition: FormDefinition;\n nodes: NodeEntry[];\n entries: FieldEntry[];\n keys: Map<string, FieldEntry>;\n keyList: string[];\n scopes: Map<string, Map<string, FieldEntry>>;\n conditions: ConditionEntry[];\n validators?: Record<string, unknown>;\n suggest: (value: string, candidates: string[]) => string | undefined;\n target: (key: string, group?: string) => FieldEntry | undefined;\n}\n\ntype Owner = { show?: ShowCondition[]; showAny?: ShowCondition[] };\n\nfunction collect(\n target: ConditionEntry[],\n source: Owner | FormAction | false | undefined,\n path: string,\n owner: ConditionEntry['owner'],\n step: number,\n key?: string,\n group?: string,\n): void {\n for (const name of owner === 'action' ? (['disabled'] as const) : (['show', 'showAny'] as const)) {\n ((source || {}) as Record<typeof name, ShowCondition[] | undefined>)[name]?.forEach((condition, index) => {\n target.push({ condition, path: `${path}/${name}/${index}`, owner, step, key, group });\n });\n }\n}\n\nexport function createContext(\n definition: FormDefinition,\n validators?: Record<string, unknown>,\n suggest: CheckContext['suggest'] = () => undefined,\n): CheckContext {\n const steps = definition.steps ?? [];\n const nodes: NodeEntry[] = [];\n const visit = (items: FormNode[], path: string, step: number, parent?: FormNode, group?: FormGroup) =>\n items.forEach((node, position) => {\n const at = `${path}/${position}`;\n nodes.push({ node, path: at, step, group, parent });\n if ((isSection(node) || isGroup(node)) && nestable(at)) visit(node.fields, `${at}/fields`, step, node, isGroup(node) ? node : group);\n });\n if (steps.length) {\n steps.forEach((step, index) => {\n visit(step.fields, `/steps/${index}/fields`, index);\n });\n } else visit(definition.fields ?? [], '/fields', -1);\n const entries: FieldEntry[] = nodes.flatMap(({ node, path, step, group }) =>\n isSection(node) ? [] : [{ field: node, path, step, group }],\n );\n const keys = new Map<string, FieldEntry>();\n const scopes = new Map<string, Map<string, FieldEntry>>();\n for (const entry of entries) {\n const scope = entry.group ? (scopes.get(entry.group.key) ?? new Map<string, FieldEntry>()) : keys;\n if (entry.group) scopes.set(entry.group.key, scope);\n if (!scope.has(entry.field.key)) scope.set(entry.field.key, entry);\n }\n const conditions: ConditionEntry[] = [];\n for (const { node, path, step, group } of nodes) collect(conditions, node, path, 'field', step, node.key, group?.key);\n steps.forEach((step, index) => {\n collect(conditions, step, `/steps/${index}`, 'step', index);\n (step.routes ?? []).forEach((route, position) => {\n collect(conditions, route, `/steps/${index}/routes/${position}`, 'route', index);\n });\n for (const name of ['next', 'back', 'skip'] as const) collect(conditions, step[name], `/steps/${index}/${name}`, 'action', index);\n });\n collect(conditions, definition.submit, '/submit', 'action', -1);\n collect(conditions, definition.cancel, '/cancel', 'action', -1);\n return {\n definition,\n nodes,\n entries,\n keys,\n keyList: [...keys.keys()],\n scopes,\n conditions,\n validators,\n suggest,\n target: (key, group) => (group !== undefined && scopes.get(group)?.get(key)) || keys.get(key),\n };\n}\n","import type { FieldValidation } from '../types';\nimport { missingTarget } from './conditions';\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 [\n error('invalid-range', `${path}/validation/${min}`, `${min} (${low}) is greater than ${max} (${high})`, `Lower ${min} or raise ${max}`),\n ];\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 [\n error(\n 'invalid-pattern',\n `${path}/validation/pattern`,\n `${JSON.stringify(pattern)} is not a valid regular expression`,\n 'Fix the pattern or escape special characters with a backslash',\n ),\n ];\n }\n}\n\nfunction ruleIssues(context: CheckContext, { field, path, group }: FieldEntry): DefinitionIssue[] {\n const rules = field.validation ?? {};\n const match = rules.matchField;\n const items = field.type === 'group' ? (field as { defaultItems?: number }).defaultItems : undefined;\n return [\n ...rangeIssue(rules, path, 'minLength', 'maxLength'),\n ...rangeIssue(rules, path, 'min', 'max'),\n ...patternIssue(rules.pattern, path),\n ...(match === undefined ? [] : missingTarget(context, match, `${path}/validation/matchField`, group?.key)),\n ...(items !== undefined && rules.maxLength !== undefined && items > rules.maxLength\n ? [\n error(\n 'invalid-range',\n `${path}/defaultItems`,\n `defaultItems (${items}) is greater than maxLength (${rules.maxLength})`,\n 'Lower defaultItems or raise maxLength',\n ),\n ]\n : []),\n ];\n}\n\nfunction optionIssues({ field, path }: FieldEntry): DefinitionIssue[] {\n const values = (field.options ?? []).map((option) => option.value);\n return values.flatMap((value, index) =>\n values.indexOf(value) < index\n ? [error('duplicate-option-value', `${path}/options/${index}/value`, `\"${value}\" is already an option value`)]\n : [],\n );\n}\n\nexport function fieldIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => [...ruleIssues(context, entry), ...optionIssues(entry)]);\n}\n","import type { FormNode } from '../types';\nimport { conditionFields, isSection, valueFields } from '../visibility/nodes';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error } from './issues';\n\nconst nodeId = ({ field, group }: FieldEntry) => (group ? `${group.key}.${field.key}` : field.key);\n\nfunction dependencyGraph({ definition, entries, nodes, target }: CheckContext): Map<string, string[]> {\n const graph = new Map<string, string[]>();\n const link = (owners: string[], source: FormNode | { show?: { field: string }[]; showAny?: { field: string }[] }, group?: string) => {\n const known = conditionFields(source).flatMap((field) => {\n const entry = target(field, group);\n return entry ? [nodeId(entry)] : [];\n });\n if (known.length) for (const owner of owners) graph.set(owner, [...(graph.get(owner) ?? []), ...known]);\n };\n for (const entry of entries) link([nodeId(entry)], entry.field, entry.group?.key);\n for (const { node, group } of nodes)\n if (isSection(node) && !group)\n link(\n node.fields.map((field) => field.key),\n node,\n );\n for (const step of definition.steps ?? [])\n link(\n valueFields(step.fields).map((field) => field.key),\n step,\n );\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\nexport function graphIssues(context: CheckContext): DefinitionIssue[] {\n const paths = new Map(context.entries.map((entry) => [nodeId(entry), entry.path]));\n return findCycles(dependencyGraph(context)).map((cycle) =>\n error(\n 'condition-cycle',\n paths.get(cycle[0])!,\n `show conditions form a cycle: ${cycle.join(' -> ')}`,\n 'Remove one of the conditions in the cycle',\n ),\n );\n}\n","import type { FormDefinition, FormField } from '../types';\nimport type { EngineState } from './runtime-internals';\nimport { isGroup, topNodes, valueFields } from '../visibility/nodes';\n\nexport const shownError = (errors: Record<string, string>, field: FormField) => field.type !== 'hidden' && errors[field.key] !== undefined;\n\nexport function getAllFields(definition: FormDefinition): FormField[] {\n return valueFields(topNodes(definition));\n}\n\nexport const initialState = (values: Record<string, unknown>): EngineState => ({\n values,\n errors: {},\n topLevelErrors: [],\n serverErrors: {},\n serverFormErrors: [],\n currentStepIndex: 0,\n fieldLoading: {},\n stepValidating: false,\n submitting: false,\n});\n\nexport function createValues(fields: FormField[], initialValues?: Record<string, unknown>): 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 else if (isGroup(field) && field.defaultItems! > 0)\n values[field.key] = Array.from({ length: field.defaultItems! }, () => createValues(field.fields));\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(previous: Record<string, unknown>, next: Record<string, unknown>): 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","import { getAllFields } from '../engine/engine-utils';\nimport type { FieldSourceName, FormDefinition, FormField } from '../types';\nimport { MAX_HIDDEN_LENGTH, MAX_STRING_LENGTH } from '../validation/type-checks';\n\nexport const SOURCE_NAMES: readonly FieldSourceName[] = ['referrer', 'page', 'pageTitle', 'language', 'timezone', 'device', 'country'];\n\nexport type SourceContext = Partial<Record<Exclude<FieldSourceName, 'page'> | 'search' | 'href', string>>;\n\nfunction read({ source }: FormField, context: SourceContext): unknown {\n if (typeof source === 'object' && source !== null) {\n return typeof source.query === 'string' ? new URLSearchParams(context.search ?? '').get(source.query) : undefined;\n }\n if (source === 'page' || source === 'referrer') {\n const url = new URL((source === 'page' ? context.href : context.referrer) ?? '');\n return url.origin === 'null' ? undefined : url.origin + url.pathname;\n }\n return source !== undefined && SOURCE_NAMES.includes(source) ? context[source] : undefined;\n}\n\nfunction attempt(field: FormField, context: SourceContext): string | undefined {\n let value: unknown;\n try {\n value = read(field, context);\n } catch {\n return undefined;\n }\n if (typeof value !== 'string') return undefined;\n const limit = field.validation?.maxLength;\n const max = typeof limit === 'number' && limit > 0 ? Math.min(limit, MAX_STRING_LENGTH) : MAX_HIDDEN_LENGTH;\n return value.trim().slice(0, max).trim() || undefined;\n}\n\nexport function resolveSources(\n definition: FormDefinition,\n context: SourceContext,\n initialValues?: Record<string, unknown>,\n): Record<string, string> {\n const values: Record<string, string> = {};\n for (const field of getAllFields(definition)) {\n const { key } = field;\n if (\n field.type !== 'hidden' ||\n field.source === undefined ||\n (initialValues?.[key] ?? '') !== '' ||\n Object.prototype.hasOwnProperty.call(values, key)\n )\n continue;\n const value = attempt(field, context);\n if (value !== undefined) values[key] = value;\n }\n return values;\n}\n","import { SOURCE_NAMES } from '../sources';\nimport type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { error, oneOf, warning } from './issues';\nimport { isEntry } from './shape';\n\nconst QUERY = 'Use { \"query\": \"<parameter name>\" } for a URL parameter';\n\nfunction sourceIssue(context: CheckContext, { field, path }: FieldEntry): DefinitionIssue[] {\n const source: unknown = field.source;\n const at = `${path}/source`;\n const names = SOURCE_NAMES as string[];\n if (typeof source === 'string') {\n return names.includes(source)\n ? []\n : [\n error(\n 'unknown-source',\n at,\n `\"${source}\" is not a source`,\n source === 'query' ? QUERY : (context.suggest(source, names) ?? oneOf(names)),\n ),\n ];\n }\n const query = isEntry(source) && Object.keys(source).length === 1 ? source.query : undefined;\n return source === undefined || (typeof query === 'string' && query.trim())\n ? []\n : [error('invalid-type', at, 'must be a source name or a query object', QUERY)];\n}\n\nexport function sourceIssues(context: CheckContext): DefinitionIssue[] {\n return context.entries.flatMap((entry) => sourceIssue(context, entry));\n}\n\nexport function sourceWarnings({ field, path }: FieldEntry): DefinitionIssue[] {\n return field.source === undefined || field.type === 'hidden'\n ? []\n : [warning('source-not-applicable', `${path}/source`, `only hidden fields read \"source\"`, 'Set \"type\" to \"hidden\" or remove \"source\"')];\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 { isGroup, isSection } from '../visibility/nodes';\nimport type { CheckContext, NodeEntry } 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\n issues.push(\n error(\n 'duplicate-step-id',\n `/steps/${index}/id`,\n `step id \"${step.id}\" is already used by /steps/${first}`,\n 'Give each step a unique id',\n ),\n );\n });\n steps.forEach((step, index) => {\n (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 });\n return issues;\n}\n\nfunction keyIssues({ definition, nodes }: CheckContext): DefinitionIssue[] {\n const issues: DefinitionIssue[] = [];\n const reachable = reachableSteps(definition.steps ?? []);\n const exclusive = (a: NodeEntry, b: NodeEntry) => a.step !== b.step && !reachable[a.step]?.has(b.step);\n const outer = nodes.filter((entry) => !entry.group);\n const groups = outer.filter((entry) => isGroup(entry.node));\n nodes.forEach((entry, index) => {\n const {\n node: { key },\n path,\n group,\n } = entry;\n const clash = group\n ? (nodes.slice(0, index).find((other) => other.group === group && other.node.key === key) ??\n outer.find((other) => other.node.key === key))\n : outer.slice(0, outer.indexOf(entry)).find((other) => other.node.key === key && !exclusive(other, entry));\n const prefix = !group && groups.find((other) => key.startsWith(`${other.node.key}.`));\n if (RESERVED.has(key)) {\n issues.push(error('reserved-key', `${path}/key`, `\"${key}\" is a built-in object property name`, 'Rename the field key'));\n } else if (clash) {\n issues.push(\n error(\n 'duplicate-key',\n `${path}/key`,\n `key \"${key}\" is already used by ${clash.path}${group ? '' : ' on the same path'}`,\n group ? 'Rename the field' : 'Rename one of the fields, or move them to route branches that never meet',\n ),\n );\n } else if (prefix) {\n issues.push(\n error('duplicate-key', `${path}/key`, `key \"${key}\" starts with the group key \"${prefix.node.key}.\"`, 'Rename the field'),\n );\n }\n });\n return issues;\n}\n\nfunction nestingIssues({ nodes }: CheckContext): DefinitionIssue[] {\n return nodes.flatMap(({ node, path, group, parent }) =>\n (isSection(node) && parent) || (group && ['group', 'file', 'hidden'].includes(node.type))\n ? [error('invalid-nesting', `${path}/type`, `a ${node.type} cannot be inside a ${parent!.type}`, 'Move it to the fields of the step')]\n : [],\n );\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\n ? [\n error(\n 'fields-and-steps',\n '',\n 'the definition has both \"fields\" and \"steps\"',\n 'Move the top-level fields into a step, or remove \"steps\"',\n ),\n ]\n : []),\n ...stepIssues(context),\n ...keyIssues(context),\n ...nestingIssues(context),\n ];\n}\n","import type { CheckContext, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, pointer, warning } from './issues';\nimport { isEntry, missing } from './shape';\n\nexport const PROPERTIES = {\n form: '$schema formatVersion id lang title description messages labels i18n submit cancel fields steps',\n step: 'id title description fields show showAny routes next back skip i18n',\n field:\n 'key type label placeholder helperText autoAdvance defaultValue source show showAny validation options layout optionsFrom optionsDependsOn accept rows mask inputMode i18n',\n section: 'key type title description show showAny fields i18n',\n group: 'key type label helperText itemLabel addLabel removeLabel defaultItems show showAny validation fields i18n',\n option: 'value label i18n',\n action: 'label variant disabled i18n',\n route: 'to show showAny',\n validation:\n 'required minLength minLengthMessage maxLength maxLengthMessage min minMessage max maxMessage pattern patternMessage matchField matchFieldMessage validator i18n',\n};\n\nconst LABEL_HINT = 'Add a label so screen readers can name the input';\n\nfunction unknown(value: object, path: string, list: string, hint: (key: string) => string | undefined = () => undefined) {\n const known = list.split(' ');\n const absent = known.filter((key) => !(key in value));\n return Object.keys(value)\n .filter((key) => !known.includes(key))\n .map((key) => {\n const match = closest(key, absent);\n const fix = match === undefined ? hint(key) : `Did you mean \"${match}\"?`;\n return warning('unknown-property', `${path}/${pointer(key)}`, `unknown property \"${key}\"`, fix);\n });\n}\n\nfunction required(value: object, path: string, key: string, hint?: string): DefinitionIssue[] {\n return (value as Record<string, unknown>)[key] === undefined ? [missing(path, key, hint, warning)] : [];\n}\n\nfunction action(value: unknown, path: string): DefinitionIssue[] {\n return isEntry(value) ? [...required(value, path, 'label'), ...unknown(value, path, PROPERTIES.action)] : [];\n}\n\nconst misplaced = (key: string) =>\n key !== 'i18n' && PROPERTIES.validation.split(' ').includes(key) ? `Move \"${key}\" into \"validation\": { \"${key}\": ... }` : undefined;\n\nfunction fieldWarnings({ field, path }: FieldEntry): DefinitionIssue[] {\n const visible = field.type !== 'hidden';\n const empty = visible && typeof field.label === 'string' && !field.label.trim();\n return [\n ...required(field, path, 'label', visible ? LABEL_HINT : undefined),\n ...(empty ? [warning('empty-label', `${path}/label`, `the label of \"${field.key}\" is empty`, LABEL_HINT)] : []),\n ...unknown(field, path, field.type === 'group' ? PROPERTIES.group : PROPERTIES.field, misplaced),\n ...(field.options ?? []).flatMap((option, index) => [\n ...required(option, `${path}/options/${index}`, 'label'),\n ...unknown(option, `${path}/options/${index}`, PROPERTIES.option),\n ]),\n ...(isEntry(field.validation) ? unknown(field.validation, `${path}/validation`, PROPERTIES.validation) : []),\n ];\n}\n\nexport function propertyWarnings({ definition, entries, nodes }: CheckContext): DefinitionIssue[] {\n const { title } = definition as { title?: unknown };\n return [\n ...required(definition, '', 'title', 'Add a title for host UI and editors'),\n ...(title === undefined || typeof title === 'string' ? [] : [warning('invalid-type', '/title', '\"title\" must be a string')]),\n ...unknown(definition, '', PROPERTIES.form),\n ...action(definition.submit, '/submit'),\n ...action(definition.cancel, '/cancel'),\n ...(definition.steps ?? []).flatMap((step, index) => {\n const path = `/steps/${index}`;\n return [\n ...required(step, path, 'title'),\n ...unknown(step, path, PROPERTIES.step),\n ...(step.routes ?? []).flatMap((route, position) => unknown(route, `${path}/routes/${position}`, PROPERTIES.route)),\n ...(['next', 'back', 'skip'] as const).flatMap((name) => action(step[name], `${path}/${name}`)),\n ];\n }),\n ...nodes.flatMap(({ node, path }) =>\n node.type === 'section' ? [...required(node, path, 'title'), ...unknown(node, path, PROPERTIES.section)] : [],\n ),\n ...entries.flatMap(fieldWarnings),\n ];\n}\n","import type { FormField } from '../types';\nimport { hasOwn } from '../visibility/nodes';\nimport { BOOLEAN_TYPES, BUILT_IN_TYPES } from '../validation/type-checks';\nimport { conditionErrors, missingTarget, OPERATORS } from './conditions';\nimport type { CheckContext, ConditionEntry, FieldEntry } from './context';\nimport type { DefinitionIssue } from './issues';\nimport { closest, oneOf, suggest, warning } from './issues';\nimport { propertyWarnings } from './properties';\nimport { sourceWarnings } from './sources';\n\nconst LIST_OPERATORS = ['in', 'notIn'];\nconst COMPARISONS = ['gt', 'gte', 'lt', 'lte'];\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 BUILT_IN_TYPES.includes(field.type) && field.type !== 'multiselect' && field.type !== 'file' ? '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(\n `\"${target.key}\" is a ${target.type} field, so \"${operator}\" never matches it`,\n 'Compare a number, text, radio or select field',\n );\n }\n if (target.type === 'multiselect') {\n const result = operator === 'neq' || operator === 'notIn' ? 'always' : 'never';\n return mismatch(\n `\"${target.key}\" holds a list of values, so \"${operator}\" ${result} matches it`,\n 'Use notEmpty, or a select or radio field',\n );\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)\n return mismatch(`${JSON.stringify(wrong)} is a ${typeof wrong}, but \"${target.key}\" holds a ${expected}`, `Use a ${expected} value`);\n const options =\n 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(\n context.target(condition.field, entry.group)!.field,\n operator,\n condition[operator as keyof typeof condition],\n `${path}/${operator}`,\n );\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\n ? []\n : [\n warning(\n 'missing-options',\n `${path}/options`,\n `the ${field.type} field \"${field.key}\" has no options`,\n 'Add \"options\" or \"optionsFrom\"',\n ),\n ];\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 =\n field.defaultValue === undefined || !values.length || field.optionsFrom\n ? undefined\n : defaults.find((value) => !values.includes(value as string));\n if (missing === undefined) return [];\n return [\n warning(\n 'default-not-in-options',\n `${path}/defaultValue`,\n `${JSON.stringify(missing)} is not an option of \"${field.key}\"`,\n oneOf(values),\n ),\n ];\n}\n\nfunction slowPattern(pattern: string): boolean {\n const groups: boolean[] = [];\n let closed = false;\n for (let index = 0; index < pattern.length && pattern.length <= 1000; index++) {\n const char = pattern[index];\n if (closed && '*+{'.includes(char)) return true;\n closed = false;\n if (char === '\\\\') index++;\n else if (char === '[') {\n for (index++; index < pattern.length && pattern[index] !== ']'; index++) if (pattern[index] === '\\\\') index++;\n } else if (char === '(') {\n groups.push(false);\n if (pattern[index + 1] === '?') index++;\n } else if (char === ')') {\n closed = !!groups.pop();\n if (closed && groups.length) groups[groups.length - 1] = true;\n } else if (groups.length && '*+?|{'.includes(char)) groups[groups.length - 1] = true;\n }\n return false;\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 items = field.type === 'group';\n const known = items || 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 =\n known && ['number', 'checkbox', 'switch'].includes(field.type)\n ? (['minLength', 'maxLength'] as const).filter((name) => rules[name] !== undefined)\n : [];\n const issues = [\n ...ranges.map((name) =>\n rule(name, `\"${name}\" applies to number fields only`, `Use ${name}Length to limit ${items ? 'the number of items' : 'text length'}`),\n ),\n ...sized.map((name) =>\n rule(name, `\"${name}\" does not apply to ${field.type} fields`, numeric ? 'Use min and max for numbers' : `Remove ${name}`),\n ),\n ];\n if (typeof rules.pattern === 'string' && slowPattern(rules.pattern)) {\n issues.push(\n warning(\n 'slow-pattern',\n `${path}/validation/pattern`,\n `the pattern of \"${field.key}\" nests quantifiers and can be very slow`,\n 'Remove the inner or outer quantifier',\n ),\n );\n }\n const { validators } = context;\n if (rules.validator !== undefined && validators && !hasOwn(validators, rules.validator)) {\n issues.push(\n warning(\n 'unknown-validator',\n `${path}/validation/validator`,\n `the validator \"${rules.validator}\" is not registered`,\n 'Pass it in the \"validators\" option',\n ),\n );\n }\n return issues;\n}\n\nfunction fieldWarnings(context: CheckContext, entry: FieldEntry): DefinitionIssue[] {\n const { field, path } = entry;\n const match =\n BUILT_IN_TYPES.includes(field.type) || field.type === 'group'\n ? undefined\n : closest(field.type, [...BUILT_IN_TYPES, 'group', 'section']);\n return [\n ...(match === undefined\n ? []\n : [\n warning(\n 'unknown-field-type',\n `${path}/type`,\n `\"${field.type}\" is not a built-in field type`,\n `Use \"${match}\", or register a component for \"${field.type}\"`,\n ),\n ]),\n ...optionIssues(entry),\n ...ruleWarnings(context, entry),\n ...sourceWarnings(entry),\n ...(field.optionsDependsOn ?? []).flatMap((key, index) =>\n missingTarget(context, key, `${path}/optionsDependsOn/${index}`).map((issue) => ({ ...issue, severity: 'warning' as const })),\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(\n warning(\n 'route-fallthrough',\n `/steps/${position}`,\n `branch \"${target}\" from \"${step.id}\" continues into the sibling branch \"${sibling.id}\"`,\n `Add an unconditional route on \"${target}\" to the step where the branches meet`,\n ),\n );\n }\n if (step.skip && (step.next === false || !steps[1])) {\n issues.push(\n warning(\n 'skip-unreachable',\n `/steps/${index}/skip`,\n `step \"${step.id}\" has \"skip\" but no Continue button or later step`,\n 'Remove \"skip\", or remove \"next\": false',\n ),\n );\n }\n return issues;\n });\n}\n\nfunction versionWarnings({ definition, nodes }: CheckContext): DefinitionIssue[] {\n const [major, minor = 0] = String(definition.formatVersion ?? '1.0')\n .split('.')\n .map(Number);\n const container = nodes.find(({ node }) => node.type === 'section' || node.type === 'group');\n if (!container || major !== 1 || minor >= 1) return [];\n return [\n warning(\n 'outdated-format-version',\n '/formatVersion',\n `${container.path} is a ${container.node.type}, which needs format 1.1`,\n 'Set \"formatVersion\": \"1.1\", so that older versions of @formhaus/core reject the definition instead of skipping the fields inside',\n ),\n ];\n}\n\nexport function definitionWarnings(context: CheckContext): DefinitionIssue[] {\n return [\n ...versionWarnings(context),\n ...propertyWarnings(context),\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 { sourceIssues } from './sources';\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 ...sourceIssues(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 { FieldValidation, FormField } from '../types';\nimport { isBlank } from '../visibility';\nimport { messageResolver, namedResolver, type MessageSource, type ResolveMessage } from './default-messages';\nimport { BOOLEAN_TYPES, clientTypeError, MAX_STRING_LENGTH, trimValue } from './type-checks';\n\nexport type ValidatorFn = (value: unknown, allValues: Record<string, unknown>) => string | null;\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 const pattern = new RegExp(rules.pattern);\n const text = String(value);\n return text.length <= MAX_STRING_LENGTH && pattern.test(text) ? 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 = namedResolver(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 (\n (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)) ||\n null\n );\n}\n","import type { FormGroup, FormNode, FormStep } from '../types';\nimport { isGroup, isVisible } from '../visibility';\nimport { itemPath, itemsOf, itemScope, shownFields } from '../visibility/nodes';\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 validateItems(\n group: FormGroup,\n values: Record<string, unknown>,\n validators?: Record<string, ValidatorFn>,\n messages?: MessageSource,\n): Record<string, string> {\n const errors: Record<string, string> = {};\n itemsOf(values[group.key]).forEach((item, index) => {\n const scope = itemScope(group, item, values);\n for (const field of group.fields) {\n const error = isVisible(field, scope) && validateFieldValue(field, scope[field.key], scope, validators, messages);\n if (error) errors[itemPath(group.key, index, field.key)] = error;\n }\n });\n return errors;\n}\n\nexport function validateFields(\n fields: FormNode[],\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 shownFields(fields, values)) {\n const error = validateFieldValue(field, values[field.key], values, validators, messages);\n if (error) {\n errors[field.key] = error;\n }\n if (isGroup(field)) Object.assign(errors, validateItems(field, values, validators, messages));\n }\n\n return errors;\n}\n","import { validateFieldValue, validateFields } from '../validation';\nimport { createValues, getChangedKeys, initialState, shownError } from './engine-utils';\nimport type { FormField, FormNode } from '../types';\nimport { isGroup, itemPath, itemsOf, itemScope, valueFields } from '../visibility/nodes';\nimport type { EngineInternals } from './runtime-internals';\nimport type { ItemField } from './visibility-state';\n\nexport function errorKeys(nodes: FormNode[], errors: Record<string, string>, values: Record<string, unknown>): string[] {\n return valueFields(nodes).flatMap((field) => [\n ...(shownError(errors, field) ? [field.key] : []),\n ...(isGroup(field)\n ? itemsOf(values[field.key])\n .flatMap((_, index) => field.fields.map(({ key }) => itemPath(field.key, index, key)))\n .filter((key) => errors[key] !== undefined)\n : []),\n ]);\n}\n\nexport function fieldsErrors(engine: EngineInternals, nodes: FormNode[]): Record<string, string> {\n return validateFields(nodes, getSubmitValues(engine), engine.validators, engine.messages);\n}\n\nfunction fieldError(engine: EngineInternals, field: FormField, value: unknown, values = getSubmitValues(engine)): string | null {\n return validateFieldValue(field, value, values, engine.validators, engine.messages);\n}\n\nexport function itemError(engine: EngineInternals, { group, index, field }: ItemField): string | null {\n const values = getSubmitValues(engine);\n const scope = itemScope(group, itemsOf(values[group.key])[index], values);\n return fieldError(engine, field, scope[field.key], scope);\n}\n\nexport function applyValidationErrors(\n engine: EngineInternals,\n errors: Record<string, string>,\n server = false,\n formErrors: string[] = [],\n): 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) || engine.visibility.activeItem(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) => errorKeys(step.fields, errors, engine.values).length > 0);\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 const dropped = new Set(keys);\n const { serverErrors } = engine.state;\n for (const key of Object.keys(serverErrors)) if (dropped.has(key) || dropped.has(engine.visibility.owner(key))) delete serverErrors[key];\n}\n\nexport function clearResolvedMatchErrors(engine: EngineInternals, key: string, item?: ItemField): string[] {\n const cleared: string[] = [];\n const fields: [string, FormField][] = item\n ? item.group.fields.map((field) => [itemPath(item.group.key, item.index, field.key), field])\n : engine.visibility.allFields.map((field) => [field.key, field]);\n for (const [path, field] of fields) {\n if (field.validation?.matchField !== key || engine.errors[path] === undefined) continue;\n const error = item ? itemError(engine, { ...item, field }) : fieldError(engine, field, engine.values[field.key]);\n if (error) continue;\n clearError(engine, path);\n cleared.push(path);\n }\n if (!item) {\n for (const group of engine.visibility.groups) {\n if (\n engine.visibility.activeField(group.key, engine.values) !== group ||\n !group.fields.some((field) => field.validation?.matchField === key)\n )\n continue;\n itemsOf(engine.values[group.key]).forEach((_, index) => {\n cleared.push(...clearResolvedMatchErrors(engine, key, { group, index, field: group.fields[0] }));\n });\n }\n }\n return cleared;\n}\n\nexport function pruneOffPathErrors(engine: EngineInternals): string[] {\n const pathFields = new Set(engine.visibleSteps.flatMap((step) => valueFields(step.fields).map((field) => field.key)));\n const pruned = Object.keys(engine.errors).filter((key) => !pathFields.has(engine.visibility.owner(key)));\n for (const key of pruned) delete engine.errors[key];\n dropServerErrors(engine, pruned);\n return pruned;\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) if (!engine.skipped.has(step.id)) Object.assign(errors, fieldsErrors(engine, step.fields));\n } else {\n Object.assign(errors, fieldsErrors(engine, engine.definition.fields ?? []));\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 const item = !field && engine.visibility.activeItem(key, engine.values);\n if (!field && !item) return null;\n const previousError = engine.errors[key];\n const error = item ? itemError(engine, item) : fieldError(engine, field!, engine.values[key]);\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 return withoutSkipped(engine, { ...engine.visibility.conditionValues(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 Object.assign(engine.state, initialState(createValues(engine.visibility.allFields, values)));\n engine.skipped.clear();\n engine.visibility.reconcileHidden(engine.values, engine.errors, true);\n const changedValues = getChangedKeys(previousValues, engine.values);\n const changedFields = new Set([...changedValues, ...getChangedKeys(previousErrors, engine.errors), ...loadingFields]);\n engine.notify({\n fieldKeys: changedFields,\n structureChanged: true,\n valuesChanged: changedValues.size > 0,\n });\n}\n","import type { FormDefinition, FormNode, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport { cleanItems, hasOwn, isGroup, shownFields, valueFields } from '../visibility/nodes';\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)) {\n index++;\n continue;\n }\n result.push(step);\n addStepValues(step, values, available);\n const route = step.routes?.find(\n (route) =>\n isVisible(route, available) &&\n (route.to === null || ((indexes.get(route.to) ?? -1) > index && 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: FormNode[] }, values: Record<string, unknown>, target: Record<string, unknown>): void {\n const fields = valueFields(step.fields);\n const saved = fields.map(({ key }) => [key, hasOwn(target, key), target[key]] as const);\n for (const field of fields) target[field.key] = trimValue(field, values[field.key]);\n const shown = shownFields(step.fields, target)\n .filter((field) => values[field.key] !== undefined)\n .map(\n (field) => [field.key, isGroup(field) ? cleanItems(field, values[field.key], target) : trimValue(field, values[field.key])] as const,\n );\n for (const [key, had, value] of saved) {\n if (had) target[key] = value;\n else delete target[key];\n }\n for (const [key, value] of shown) target[key] = value;\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 {\n source = null;\n },\n steps(values: Record<string, unknown>): FormStep[] {\n refresh(values);\n return steps;\n },\n values(values: Record<string, unknown>): Record<string, unknown> {\n refresh(values);\n return active;\n },\n };\n}\n","import type { EngineInternals } from './runtime-internals';\nimport { reconcileStepIndex } from './step-routes';\nimport { clearError, clearResolvedMatchErrors, dropServerErrors, pruneOffPathErrors } from './validation-state';\n\nexport function writeValue(\n engine: EngineInternals,\n key: string,\n value: unknown,\n own = true,\n changed: () => Iterable<string> = () => [],\n): void {\n const { values, errors } = engine.state;\n const previousSteps = engine.isMultiStep ? engine.visibleSteps : null;\n const valueChanged = !Object.is(values[key], value);\n const previousError = errors[key];\n values[key] = value;\n if (own) clearError(engine, key, valueChanged);\n for (const [stepId, keys] of engine.skipped) if (valueChanged && keys.includes(key)) engine.skipped.delete(stepId);\n const clearedFields = engine.visibility.reconcileHidden(values, errors);\n dropServerErrors(engine, clearedFields);\n const changedFields = new Set([...clearedFields, ...clearResolvedMatchErrors(engine, key), ...changed()]);\n if (valueChanged || previousError !== errors[key]) changedFields.add(key);\n const valuesChanged = valueChanged || clearedFields.size > 0;\n const structureChanged = valuesChanged && engine.visibility.affectsStructure(key, clearedFields);\n if (previousSteps && structureChanged) {\n engine.visibility.markChanged(true, true);\n engine.state.currentStepIndex = reconcileStepIndex(previousSteps, engine.visibleSteps, engine.currentStepIndex);\n for (const pruned of pruneOffPathErrors(engine)) changedFields.add(pruned);\n }\n engine.notify({ fieldKeys: changedFields, structureChanged, valuesChanged });\n}\n","import type { FormField, FormGroup } from '../types';\nimport { isEntry, isGroup, itemId, itemPath, itemsOf, keepId, splitPath } from '../visibility/nodes';\nimport { createValues, getChangedKeys } from './engine-utils';\nimport type { EngineInternals } from './runtime-internals';\nimport { clearError, clearResolvedMatchErrors } from './validation-state';\nimport { writeValue } from './write-value';\n\nexport interface GroupItem {\n id: string;\n fields: FormField[];\n}\n\nfunction activeGroup(engine: EngineInternals, key: string): FormGroup | undefined {\n const field = engine.visibility.activeField(key, engine.values);\n return field && isGroup(field) ? field : undefined;\n}\n\nexport function itemLimits(group: FormGroup): [number, number] {\n const rules = group.validation ?? {};\n return [rules.minLength ?? (rules.required ? 1 : 0), rules.maxLength ?? 100];\n}\n\nconst within = (index: number, items: unknown[]) => Number.isInteger(index) && index >= 0 && index < items.length;\n\nexport function groupItems(engine: EngineInternals, key: string): GroupItem[] {\n const group = activeGroup(engine, key);\n if (!group) return [];\n return itemsOf(engine.values[key]).map((item, index) => ({\n id: itemId(item, index),\n fields: engine.visibility.itemFields(group, item, engine.values),\n }));\n}\n\nexport function addItem(engine: EngineInternals, key: string): boolean {\n const group = activeGroup(engine, key);\n const items = itemsOf(engine.values[key]);\n if (!group || items.length >= itemLimits(group)[1]) return false;\n writeValue(engine, key, [...items, createValues(group.fields)]);\n return true;\n}\n\nfunction shift(errors: Record<string, string>, key: string, removed: number): void {\n const moved: Record<string, string> = {};\n for (const errorKey of Object.keys(errors)) {\n const parts = splitPath(key, errorKey);\n if (!parts || parts[0] < removed) continue;\n if (parts[0] > removed) moved[itemPath(key, parts[0] - 1, parts[1])] = errors[errorKey];\n delete errors[errorKey];\n }\n Object.assign(errors, moved);\n}\n\nexport function removeItem(engine: EngineInternals, key: string, index: number): boolean {\n const group = activeGroup(engine, key);\n const items = itemsOf(engine.values[key]);\n if (!group || !within(index, items) || items.length <= itemLimits(group)[0]) return false;\n const previous = { ...engine.errors };\n shift(engine.state.errors, key, index);\n shift(engine.state.serverErrors, key, index);\n shift(engine.state.fieldLoading as unknown as Record<string, string>, key, index);\n writeValue(\n engine,\n key,\n items.filter((_, position) => position !== index),\n true,\n () => getChangedKeys(previous, engine.errors),\n );\n return true;\n}\n\nexport function setItemValue(engine: EngineInternals, key: string, index: number, fieldKey: string, value: unknown): void {\n const group = activeGroup(engine, key);\n const items = itemsOf(engine.values[key]);\n const field = group?.fields.find((candidate) => candidate.key === fieldKey);\n if (!group || !field || !within(index, items)) return;\n const current = items[index];\n const item = isEntry(current) ? current : {};\n const path = itemPath(key, index, fieldKey);\n const changed = !Object.is(item[fieldKey], value);\n const previousError = engine.errors[path];\n let next = items;\n if (changed) {\n const updated = keepId(current, { ...item, [fieldKey]: value });\n next = items.map((entry, position) => (position === index ? updated : entry));\n }\n clearError(engine, path, changed);\n writeValue(engine, key, next, false, () => [\n ...(changed || previousError !== engine.errors[path] ? [path] : []),\n ...clearResolvedMatchErrors(engine, fieldKey, { group, index, field }),\n ]);\n}\n","export class FormLifecycleError extends Error {\n readonly committed = true;\n readonly cause: unknown;\n\n constructor(\n readonly phase: 'afterStepChange' | 'afterSubmit',\n cause: unknown,\n ) {\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 {\n await callback();\n } catch (error) {\n throw new FormLifecycleError(phase, error);\n }\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)\n .filter((key) => checked[key] !== undefined)\n .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 { FormStep } from '../types';\nimport { valueFields } from '../visibility/nodes';\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 = valueFields(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 = valueFields(step.fields).map(({ key }) => key);\n engine.state.values = resetValues(engine);\n const owned = Object.keys(engine.errors).filter((key) => fieldKeys.includes(engine.visibility.owner(key)));\n for (const key of owned) 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, ...owned, ...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[engine.visibility.owner(key)], sent[engine.visibility.owner(key)]))\n 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 { applyValidationErrors, dropServerErrors, fieldsErrors, getSubmitValues, 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 = fieldsErrors(engine, step.fields);\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(\n engine,\n 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 },\n true,\n );\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 for (const record of [errors, serverErrors])\n for (const errorKey of Object.keys(record)) if (engine.visibility.owner(errorKey) === key) delete record[errorKey];\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(\n engine: EngineInternals,\n direction: 'next' | 'back',\n reason: StepChangeContext['reason'] = direction,\n): 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 = lifecycle.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: { ...getSubmitValues(engine) } };\n const epoch = engine.validationEpoch;\n const operation = (engine.latestOperation = ++engine.operationEpoch);\n const inputsChanged = watchCheckedInputs(engine, context.values);\n const stale = () =>\n epoch !== engine.validationEpoch || operation !== engine.operationEpoch || 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(fieldKey, engine.values, engine.currentStepIndex);\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, ShowCondition } from '../types';\nimport { conditionFields } from '../visibility/nodes';\n\ntype Conditional = { show?: ShowCondition[]; showAny?: ShowCondition[] };\n\nexport function indexConditions<T extends FormField | FormStep>(\n dependent: T,\n index: Map<string, Set<T>>,\n source: Conditional = dependent,\n): void {\n for (const field of conditionFields(source)) {\n const dependents = index.get(field) ?? new Set<T>();\n dependents.add(dependent);\n index.set(field, dependents);\n }\n}\n","import { createValues, getAllFields } from './engine-utils';\nimport { indexConditions } from './visibility-index';\nimport { createActivePath } from './step-routes';\nimport type { ValidatorFn } from '../validation';\nimport { validateFields } from '../validation';\nimport type { FormDefinition, FormField, FormGroup, FormNode, FormSection, FormStep } from '../types';\nimport { isVisible } from '../visibility';\nimport {\n conditionFields,\n isEntry,\n isGroup,\n isSection,\n itemPath,\n keepId,\n itemsOf,\n itemScope,\n shownFields,\n splitPath,\n topNodes,\n valueFields,\n} from '../visibility/nodes';\n\ninterface VisibilityCache {\n visibleSteps: FormStep[];\n currentStep: FormStep | null;\n visibleFields: FormField[];\n visibleNodes: FormNode[];\n canGoNext: boolean;\n}\n\ntype Values = Record<string, unknown>;\n\nexport interface ItemField {\n group: FormGroup;\n index: number;\n field: FormField;\n}\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 const sectionOf = new Map<FormField, FormSection>();\n const groups = allFields.filter(isGroup);\n let seeds: Values = {};\n let visibilityDirty = true;\n let canGoNextDirty = true;\n const cache: VisibilityCache = { visibleSteps: [], currentStep: null, visibleFields: [], visibleNodes: [], canGoNext: false };\n\n for (const node of topNodes(definition)) if (isSection(node)) for (const field of node.fields) sectionOf.set(field, node);\n for (const field of allFields) {\n fieldsByKey.set(field.key, [...(fieldsByKey.get(field.key) ?? []), field]);\n indexConditions(field, fieldDependents);\n const section = sectionOf.get(field);\n if (section) indexConditions(field, fieldDependents, section);\n if (isGroup(field)) for (const item of field.fields) indexConditions<FormField>(field, fieldDependents, item);\n }\n for (const step of definition.steps ?? []) {\n for (const field of valueFields(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;\n const visible = (source: FormField | FormStep, values: Values) => {\n const active = path.values(values);\n const section = sectionOf.get(source as FormField);\n return (!section || isVisible(section, active)) && isVisible(source, active);\n };\n const onPath = (field: FormField, values: Values) => {\n const step = stepOfField.get(field);\n return !step || path.steps(values).includes(step);\n };\n const activeField = (key: string, values: Values) =>\n fieldsByKey.get(key)?.find((field) => onPath(field, values) && visible(field, values));\n\n const parse = (key: string) => {\n if (fieldsByKey.has(key)) return undefined;\n for (const group of groups) {\n const parts = splitPath(group.key, key);\n if (parts) return [group.key, ...parts] as const;\n }\n return undefined;\n };\n const owner = (key: string) => parse(key)?.[0] ?? key;\n\n function itemFields(group: FormGroup, item: unknown, values: Values): FormField[] {\n const scope = itemScope(group, item, path.values(values));\n return group.fields.filter((field) => isVisible(field, scope));\n }\n\n function activeItem(key: string, values: Values): ItemField | undefined {\n const parts = parse(key);\n if (!parts) return undefined;\n const [groupKey, index, fieldKey] = parts;\n const group = activeField(groupKey, values);\n const items = itemsOf(values[groupKey]);\n if (!group || !isGroup(group) || index >= items.length) return undefined;\n const field = itemFields(group, items[index], values).find((candidate) => candidate.key === fieldKey);\n return field && { group, index, field };\n }\n\n function state(values: Values, stepIndex: number): VisibilityCache {\n if (!visibilityDirty) return cache;\n visibilityDirty = false;\n const steps = (cache.visibleSteps = isMultiStep() ? path.steps(values) : []);\n const current = (cache.currentStep = isMultiStep() ? (steps[stepIndex] ?? steps[steps.length - 1] ?? null) : null);\n const source = isMultiStep() ? (current?.fields ?? []) : (definition.fields ?? []);\n const active = path.values(values);\n cache.visibleFields = shownFields(source, active);\n cache.visibleNodes = source\n .filter((node) => isVisible(node, active))\n .map((node) => (isSection(node) ? { ...node, fields: node.fields.filter((field) => isVisible(field, active)) } : node));\n return cache;\n }\n\n function reconcileItems(values: Values, errors: Record<string, string>, cleared: Set<string>): void {\n for (const group of groups) {\n if (activeField(group.key, values) !== group) continue;\n const source = itemsOf(values[group.key]);\n const items = source.map((item, index) => {\n let result = item;\n for (let round = 0; isEntry(result) && round <= group.fields.length; round++) {\n const entry: Values = result;\n const shown = itemFields(group, entry, values);\n const hidden = group.fields.filter((field) => !shown.includes(field) && entry[field.key] !== undefined);\n if (!hidden.length) break;\n result = keepId(entry, { ...entry });\n for (const { key } of hidden) {\n delete (result as Values)[key];\n cleared.add(itemPath(group.key, index, key));\n }\n }\n return result;\n });\n if (items.some((item, index) => item !== source[index])) values[group.key] = items;\n for (const key of Object.keys(errors)) {\n const [index, field] = splitPath(group.key, key) ?? [];\n if (index === undefined || (index < items.length && itemFields(group, items[index], values).some((item) => item.key === field)))\n continue;\n delete errors[key];\n cleared.add(key);\n }\n }\n path.invalidate();\n }\n\n return {\n allFields,\n groups,\n conditionValues: path.values,\n state,\n activeField,\n activeItem,\n itemFields,\n owner,\n parse,\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 ? validateFields(step.fields, 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 key = owner(fieldKey);\n const target = state(values, stepIndex).visibleSteps.findIndex((step) => valueFields(step.fields).some((field) => field.key === key));\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 seed(values: Values): void {\n seeds = { ...seeds, ...values };\n },\n\n reconcileHidden(values: Values, errors: Record<string, string>, initial = false): Set<string> {\n if (initial) seeds = { ...values };\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 mark = (key: string) => {\n path.invalidate();\n cleared.add(key);\n if (queued.has(key)) return;\n queued.add(key);\n queue.push(key);\n };\n const clear = (key: string) => {\n delete values[key];\n delete errors[key];\n for (const errorKey of Object.keys(errors)) if (owner(errorKey) === key) delete errors[errorKey];\n mark(key);\n };\n const update = (field: FormField, shown: boolean) => {\n if (!shown) {\n if (held(field.key)) clear(field.key);\n } else if (field.type === 'hidden' && !held(field.key) && seeds[field.key] !== undefined && visible(field, values)) {\n values[field.key] = seeds[field.key];\n mark(field.key);\n } else if (isGroup(field) && field.defaultItems! > 0 && !held(field.key) && visible(field, values)) {\n values[field.key] = createValues([field])[field.key];\n mark(field.key);\n }\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) ?? []) if (onPath(field, values)) update(field, visible(field, values));\n for (const step of stepDependents.get(key) ?? []) {\n for (const field of valueFields(step.fields)) update(field, visible(step, values));\n }\n }\n if (groups.length) reconcileItems(values, errors, cleared);\n return cleared;\n },\n };\n}\n","import type { ValidatorFn } from '../validation';\nimport { messageResolver, type ResolveMessage } from '../validation/default-messages';\nimport type { FormDefinition, FormField, FormNode, FormStep } from '../types';\nimport type { FormEngineOptions, SubmitHandler } from './engine-options';\nimport { createValues, initialState } from './engine-utils';\nimport { addItem, groupItems, removeItem, setItemValue, type GroupItem } from './groups';\nimport { changeStep, goToStepWithField, skipStep } from './navigation';\nimport type { EngineState, RuntimeNotifyOptions } from './runtime-internals';\nimport { createSubscriptions } from './subscriptions';\nimport { applyValidationErrors, errorKeys, getSubmitValues, resetEngine, validateForm, validateOne } from './validation-state';\nimport { submitForm } from './submission';\nimport { assertDefinition } from './warnings';\nimport { writeValue } from './write-value';\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 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 = initialState(values);\n this.visibility.reconcileHidden(values, this.state.errors, true);\n }\n\n get values(): Readonly<Partial<TValues>> {\n return this.state.values as Partial<TValues>;\n }\n get errors(): Readonly<Record<string, string>> {\n return this.state.errors;\n }\n get topLevelErrors(): readonly string[] {\n const { errors, topLevelErrors, values } = this.state;\n return [\n ...topLevelErrors,\n ...this.visibility.allFields.flatMap(\n (field) =>\n (field.type === 'hidden' &&\n errors[field.key] &&\n (this.visibility.activeField(field.key, values) ?? field) === field &&\n errors[field.key]) ||\n [],\n ),\n ];\n }\n get currentStepIndex(): number {\n return this.state.currentStepIndex;\n }\n get fieldLoading(): Readonly<Record<string, boolean>> {\n return this.state.fieldLoading;\n }\n get stepValidating(): boolean {\n return this.state.stepValidating;\n }\n get submitting(): boolean {\n return this.state.submitting;\n }\n\n get isMultiStep(): boolean {\n return !!this.definition.steps?.length;\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 visibleNodes(): FormNode[] {\n return this.view.visibleNodes;\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 = errorKeys(step.fields, this.errors, this.state.values);\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 path = this.visibility.parse(key);\n if (path) setItemValue(this as never, ...path, value);\n else writeValue(this as never, key, value);\n }\n\n items(key: string): GroupItem[] {\n return groupItems(this as never, key);\n }\n addItem(key: string): boolean {\n return addItem(this as never, key);\n }\n removeItem(key: string, index: number): boolean {\n return removeItem(this as never, key, index);\n }\n setItemValue(key: string, index: number, field: string, value: unknown): void {\n setItemValue(this as never, key, index, field, value);\n }\n\n setErrors(errors: Record<string, string>): void {\n applyValidationErrors(this as never, 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> {\n return this.advance('next');\n }\n back(): Promise<boolean> {\n return changeStep(this as never, 'back');\n }\n skip(submit?: SubmitHandler): Promise<boolean> {\n return skipStep(this as never, submit);\n }\n submit(handler: SubmitHandler): Promise<boolean> {\n return submitForm(this as never, handler);\n }\n isStepSkipped(stepId: string): boolean {\n return this.skipped.has(stepId);\n }\n validate(): Record<string, string> {\n return validateForm(this as never);\n }\n validateField(key: string): string | null {\n return validateOne(this as never, key);\n }\n getSubmitValues(): Partial<TValues> {\n return getSubmitValues(this as never) as Partial<TValues>;\n }\n goToStepWithField(key: string): void {\n goToStepWithField(this as never, key);\n }\n reset(values?: Record<string, unknown>): void {\n resetEngine(this as never, values);\n }\n\n private advance(reason: 'next' | 'autoAdvance'): Promise<boolean> {\n return changeStep(this as never, 'next', reason);\n }\n\n private get view() {\n return this.visibility.state(this.state.values, this.currentStepIndex);\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, FormNode } from '../types';\nimport type { MessageSource, ValidatorFn } from '../validation';\nimport { messageResolver, namedResolver, 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 { writeValue } from '../engine/write-value';\nimport { normalizeValue, typeError } from '../validation/type-checks';\nimport { hasOwn, isEntry, isGroup, isSection, itemPath, itemsOf, keepId } from '../visibility/nodes';\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 internals = (engine: FormEngine) => engine as unknown as EngineInternals;\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 itemErrors(engine: FormEngine, invalid: Map<string, string>, resolve: ResolveMessage): Map<string, string> {\n const errors = new Map<string, string>();\n for (const group of internals(engine).visibility.groups) {\n if (invalid.has(group.key)) continue;\n const shown = engine.items(group.key);\n const items = itemsOf(engine.values[group.key]);\n const next = items.map((item, index) => {\n if (!isEntry(item)) return item;\n const cleared: Record<string, undefined> = {};\n for (const field of shown[index]?.fields ?? []) {\n const error = typeError(field, item[field.key], resolve);\n if (!error) continue;\n errors.set(itemPath(group.key, index, field.key), error);\n cleared[field.key] = undefined;\n }\n return Object.keys(cleared).length ? keepId(item, { ...item, ...cleared }) : item;\n });\n if (next.some((item, index) => item !== items[index])) writeValue(internals(engine), group.key, next, false);\n }\n return errors;\n}\n\nfunction withoutRules(definition: FormDefinition, invalid: Map<string, string>): FormDefinition {\n const strip = (fields: FormNode[]): FormNode[] =>\n fields.map((field) =>\n isSection(field)\n ? { ...field, fields: strip(field.fields) as FormField[] }\n : invalid.has(field.key)\n ? { ...field, validation: undefined }\n : field,\n );\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.flatMap((field) => (isGroup(field) ? [field, ...field.fields] : [field])))\n 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\nfunction rejectGroups(fields: FormField[], input: unknown, resolve: ResolveMessage) {\n const source = input !== null && typeof input === 'object' && !Array.isArray(input) ? { ...(input as Record<string, unknown>) } : {};\n const rejected = new Map<string, string>();\n for (const group of fields.filter(isGroup)) {\n const error = hasOwn(source, group.key) && !rejected.has(group.key) && typeError(group, source[group.key], resolve);\n if (!error) continue;\n rejected.set(group.key, error);\n delete source[group.key];\n }\n return { source, rejected };\n}\n\nexport function validateSubmission(definition: FormDefinition, values: unknown, options: SubmissionOptions = {}): SubmissionResult {\n parseDefinition(definition);\n const fields = getAllFields(definition);\n const messages = messageResolver(options.messages, definition.messages);\n const { source, rejected } = rejectGroups(fields, values, namedResolver(messages));\n const resolved = activeValues(definition, fields, source);\n const invalid = typeErrors(resolved, namedResolver(messages));\n const engineOptions = { validators: ignoredValidators(fields, options.validators), messages, onWarning: () => {} };\n const engine = new FormEngine(withoutRules(definition, invalid), resolved.values, engineOptions);\n const items = itemErrors(engine, invalid, namedResolver(messages));\n applySkips(engine, options.skippedSteps);\n const errors = engine.validate();\n const submitted: Record<string, unknown> = engine.getSubmitValues();\n const { visibility } = internals(engine);\n for (const [key, error] of invalid) {\n if (!hasOwn(submitted, key)) continue;\n errors[key] = error;\n submitted[key] = resolved.values[key];\n for (const path of Object.keys(errors)) if (path !== key && visibility.owner(path) === key) delete errors[path];\n }\n const skipped = new Set([...internals(engine).skipped.values()].flat());\n for (const [key, error] of rejected) {\n if (!visibility.activeField(key, engine.values) || skipped.has(key)) continue;\n errors[key] = error;\n delete submitted[key];\n for (const path of Object.keys(errors)) if (path !== key && visibility.owner(path) === key) delete errors[path];\n }\n for (const [key, error] of items)\n if (hasOwn(submitted, visibility.owner(key)) && visibility.activeItem(key, engine.values)) errors[key] = error;\n if (isBody(fields, values)) errors.values = BODY_MESSAGE;\n return { values: submitted, errors };\n}\n"]}