@forgeax/engine-pack 0.1.6 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/build.d.ts +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.mjs +100 -51
- package/dist/build.mjs.map +1 -1
- package/dist/catalog-builder.d.ts +12 -0
- package/dist/catalog-builder.d.ts.map +1 -1
- package/dist/cli-asset.mjs +1 -1
- package/dist/cli-asset.mjs.map +1 -1
- package/dist/evidence/material-cook.d.ts +28 -6
- package/dist/evidence/material-cook.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +97 -42
- package/dist/index.mjs.map +1 -1
- package/dist/material-cook.d.ts +1 -1
- package/dist/material-cook.d.ts.map +1 -1
- package/dist/material-cook.mjs +96 -41
- package/dist/material-cook.mjs.map +1 -1
- package/dist/scanner.mjs +1 -1
- package/dist/scanner.mjs.map +1 -1
- package/dist/scriptable-pack-node.d.ts.map +1 -1
- package/dist/scriptable-pack-node.mjs +1 -1
- package/dist/scriptable-pack-node.mjs.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/material-cook-dependencies.unit.test.ts +111 -0
- package/src/__tests__/material-cook-receipt.unit.test.ts +77 -20
- package/src/__tests__/material-cook-schema.unit.test.ts +64 -10
- package/src/__tests__/pack-v2-fixture-migration.test.ts +24 -1
- package/src/build.ts +1 -0
- package/src/catalog-builder.ts +42 -5
- package/src/evidence/material-cook.ts +133 -54
- package/src/index.ts +4 -0
- package/src/material-cook.ts +2 -0
- package/src/schema/material-cook.schema.json +48 -8
- package/src/scriptable-pack-node.ts +4 -1
package/dist/build.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/util.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/names.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/errors.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/rules.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.json","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/core.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/ajv.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/formats.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/limit.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/index.ts","../src/artifact-path.ts","../src/errors.ts","../src/guid.ts","../src/scriptable-pack.ts","../src/catalog-projection.ts","../src/config.ts","../src/deriveAssetName.ts","../src/resolve-asset-source.ts","../src/producer-contract.ts","../src/schema-compiled.ts","../schema/meta.schema.json","../schema/pack.schema.json","../src/scriptable-pack-node.ts","../src/scanner.ts","../src/catalog-builder.ts","../src/topology.ts","../src/catalog-delta.ts","../src/evidence/material-cook.ts","../src/evidence/offline-evidence.ts","../src/mesh-bin-contract.ts","../src/package-finalizer.ts","../src/runtime.ts","../src/runtime-publication.ts"],"names":["UsedValueState","Type","err","DataType","ts","_a","resolve","relative","Ajv","invalid","DiscrError","ajv","addFormats","sourceKey","ok","packageUrl","resultOk","resultErr","isRecord","actual","dirname","failure","readFile","PACK_ERROR_HINTS","join","stat","createHash","digest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAA,IAAsB,cAAtB,MAAiC;;AAAjC,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAOa,IAAA,OAAA,CAAA,UAAA,GAAa,uBAAA;AAE1B,IAAA,IAAa,IAAA,GAAb,cAA0B,WAAA,CAAW;AAEnC,MAAA,WAAA,CAAY,CAAA,EAAS;AACnB,QAAA,KAAA,EAAK;AACL,QAAA,IAAI,CAAC,OAAA,CAAA,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA;AAAG,UAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AACnF,QAAA,IAAA,CAAK,GAAA,GAAM,CAAA;AACb,MAAA;MAEA,QAAA,GAAQ;AACN,QAAA,OAAO,IAAA,CAAK,GAAA;AACd,MAAA;MAEA,QAAA,GAAQ;AACN,QAAA,OAAO,KAAA;AACT,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,OAAO,EAAC,CAAC,IAAA,CAAK,GAAG,GAAG,CAAA,EAAC;AACvB,MAAA;;AAlBF,IAAA,OAAA,CAAA,IAAA,GAAA,IAAA;AAqBA,IAAA,IAAa,KAAA,GAAb,cAA2B,WAAA,CAAW;AAKpC,MAAA,WAAA,CAAY,IAAA,EAAkC;AAC5C,QAAA,KAAA,EAAK;AACL,QAAA,IAAA,CAAK,SAAS,OAAO,IAAA,KAAS,QAAA,GAAW,CAAC,IAAI,CAAA,GAAI,IAAA;AACpD,MAAA;MAEA,QAAA,GAAQ;AACN,QAAA,OAAO,IAAA,CAAK,GAAA;AACd,MAAA;MAEA,QAAA,GAAQ;AACN,QAAA,IAAI,IAAA,CAAK,OAAO,MAAA,GAAS,CAAA;AAAG,UAAA,OAAO,KAAA;AACnC,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAC1B,QAAA,OAAO,IAAA,KAAS,MAAM,IAAA,KAAS,IAAA;AACjC,MAAA;AAEA,MAAA,IAAI,GAAA,GAAG;;AACL,QAAA,OAAA,CAAO,EAAA,GAAC,KAAK,IAAA,MAAI,IAAA,IAAA,OAAA,MAAA,GAAA,EAAA,GAAT,KAAK,IAAA,GAAS,IAAA,CAAK,OAAO,MAAA,CAAO,CAAC,GAAW,CAAA,KAAgB,CAAA,EAAG,CAAC,CAAA,EAAG,CAAC,IAAI,EAAE,CAAA;AACrF,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;;AACP,QAAA,OAAA,CAAO,EAAA,GAAC,IAAA,CAAK,MAAA,MAAM,IAAA,IAAA,OAAA,MAAA,GAAA,EAAA,GAAX,IAAA,CAAK,MAAA,GAAW,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,CAAC,OAAkB,CAAA,KAAK;AACjE,UAAA,IAAI,CAAA,YAAa,IAAA;AAAM,YAAA,KAAA,CAAM,EAAE,GAAG,CAAA,GAAA,CAAK,MAAM,CAAA,CAAE,GAAG,KAAK,CAAA,IAAK,CAAA;AAC5D,UAAA,OAAO,KAAA;AACT,QAAA,CAAA,EAAG,EAAE,CAAA;AACP,MAAA;;AA7BF,IAAA,OAAA,CAAA,KAAA,GAAA,KAAA;AAwCa,IAAA,OAAA,CAAA,GAAA,GAAM,IAAI,KAAA,CAAM,EAAE,CAAA;AAI/B,IAAA,SAAgB,CAAA,CAAE,SAA+B,IAAA,EAAe;AAC9D,MAAA,MAAM,IAAA,GAAmB,CAAC,IAAA,CAAK,CAAC,CAAC,CAAA;AACjC,MAAA,IAAI,CAAA,GAAI,CAAA;AACR,MAAA,OAAO,CAAA,GAAI,KAAK,MAAA,EAAQ;AACtB,QAAA,UAAA,CAAW,IAAA,EAAM,IAAA,CAAK,CAAC,CAAC,CAAA;AACxB,QAAA,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AACrB,MAAA;AACA,MAAA,OAAO,IAAI,MAAM,IAAI,CAAA;AACvB,IAAA;AARA,IAAA,OAAA,CAAA,CAAA,GAAA,CAAA;AAUA,IAAA,IAAM,IAAA,GAAO,IAAI,KAAA,CAAM,GAAG,CAAA;AAE1B,IAAA,SAAgB,GAAA,CAAI,SAA+B,IAAA,EAA4B;AAC7E,MAAA,MAAM,OAAmB,CAAC,aAAA,CAAc,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA;AAChD,MAAA,IAAI,CAAA,GAAI,CAAA;AACR,MAAA,OAAO,CAAA,GAAI,KAAK,MAAA,EAAQ;AACtB,QAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AACd,QAAA,UAAA,CAAW,IAAA,EAAM,IAAA,CAAK,CAAC,CAAC,CAAA;AACxB,QAAA,IAAA,CAAK,KAAK,IAAA,EAAM,aAAA,CAAc,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;AAC1C,MAAA;AACA,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,OAAO,IAAI,MAAM,IAAI,CAAA;AACvB,IAAA;AAVA,IAAA,OAAA,CAAA,GAAA,GAAA,GAAA;AAYA,IAAA,SAAgB,UAAA,CAAW,MAAkB,GAAA,EAAuB;AAClE,MAAA,IAAI,GAAA,YAAe,KAAA;AAAO,QAAA,IAAA,CAAK,IAAA,CAAK,GAAG,GAAA,CAAI,MAAM,CAAA;eACxC,GAAA,YAAe,IAAA;AAAM,QAAA,IAAA,CAAK,KAAK,GAAG,CAAA;;AACtC,QAAA,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,GAAG,CAAC,CAAA;AACjC,IAAA;AAJA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAMA,IAAA,SAAS,SAAS,IAAA,EAAgB;AAChC,MAAA,IAAI,CAAA,GAAI,CAAA;AACR,MAAA,OAAO,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC1B,QAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,IAAA,EAAM;AACpB,UAAA,MAAM,GAAA,GAAM,eAAe,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA,EAAG,IAAA,CAAK,CAAA,GAAI,CAAC,CAAC,CAAA;AACnD,UAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,YAAA,IAAA,CAAK,MAAA,CAAO,CAAA,GAAI,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AACzB,YAAA;AACF,UAAA;AACA,UAAA,IAAA,CAAK,GAAG,CAAA,GAAI,GAAA;AACd,QAAA;AACA,QAAA,CAAA,EAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,cAAA,CAAe,GAAa,CAAA,EAAW;AAC9C,MAAA,IAAI,CAAA,KAAM,IAAA;AAAM,QAAA,OAAO,CAAA;AACvB,MAAA,IAAI,CAAA,KAAM,IAAA;AAAM,QAAA,OAAO,CAAA;AACvB,MAAA,IAAI,OAAO,KAAK,QAAA,EAAU;AACxB,QAAA,IAAI,aAAa,IAAA,IAAQ,CAAA,CAAE,CAAA,CAAE,MAAA,GAAS,CAAC,CAAA,KAAM,GAAA;AAAK,UAAA;AAClD,QAAA,IAAI,OAAO,CAAA,IAAK,QAAA;AAAU,UAAA,OAAO,GAAG,CAAA,CAAE,KAAA,CAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA,CAAA,CAAA;AACtD,QAAA,IAAI,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA;AAAK,UAAA,OAAO,EAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,CAAA,CAAE,MAAM,CAAC,CAAA;AACnD,QAAA;AACF,MAAA;AACA,MAAA,IAAI,OAAO,KAAK,QAAA,IAAY,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA,IAAO,EAAE,CAAA,YAAa,IAAA,CAAA;AAAO,QAAA,OAAO,IAAI,CAAC,CAAA,EAAG,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAC3F,MAAA;AACF,IAAA;AAEA,IAAA,SAAgB,SAAA,CAAU,IAAU,EAAA,EAAQ;AAC1C,MAAA,OAAO,EAAA,CAAG,QAAA,EAAQ,GAAK,EAAA,GAAK,EAAA,CAAG,QAAA,EAAQ,GAAK,EAAA,GAAK,GAAA,CAAA,EAAM,EAAE,CAAA,EAAG,EAAE,CAAA,CAAA;AAChE,IAAA;AAFA,IAAA,OAAA,CAAA,SAAA,GAAA,SAAA;AAKA,IAAA,SAAS,YAAY,CAAA,EAA+C;AAClE,MAAA,OAAO,OAAO,CAAA,IAAK,QAAA,IAAY,OAAO,CAAA,IAAK,SAAA,IAAa,MAAM,IAAA,GAC1D,CAAA,GACA,aAAA,CAAc,KAAA,CAAM,QAAQ,CAAC,CAAA,GAAI,EAAE,IAAA,CAAK,GAAG,IAAI,CAAC,CAAA;AACtD,IAAA;AAEA,IAAA,SAAgB,UAAU,CAAA,EAAU;AAClC,MAAA,OAAO,IAAI,KAAA,CAAM,aAAA,CAAc,CAAC,CAAC,CAAA;AACnC,IAAA;AAFA,IAAA,OAAA,CAAA,SAAA,GAAA,SAAA;AAIA,IAAA,SAAgB,cAAc,CAAA,EAAU;AACtC,MAAA,OAAO,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,CACpB,OAAA,CAAQ,WAAW,SAAS,CAAA,CAC5B,OAAA,CAAQ,SAAA,EAAW,SAAS,CAAA;AACjC,IAAA;AAJA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AAMA,IAAA,SAAgB,YAAY,GAAA,EAA2B;AACrD,MAAA,OAAO,OAAO,GAAA,IAAO,QAAA,IAAY,OAAA,CAAA,WAAW,IAAA,CAAK,GAAG,CAAA,GAAI,IAAI,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA,GAAI,KAAK,GAAG,CAAA,CAAA,CAAA;AACzF,IAAA;AAFA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAKA,IAAA,SAAgB,iBAAiB,GAAA,EAA2B;AAC1D,MAAA,IAAI,OAAO,GAAA,IAAO,QAAA,IAAY,QAAA,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA,EAAG;AAClD,QAAA,OAAO,IAAI,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,CAAE,CAAA;AAC3B,MAAA;AACA,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,GAAG,CAAA,+BAAA,CAAiC,CAAA;AACvF,IAAA;AALA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAOA,IAAA,SAAgB,WAAW,EAAA,EAAU;AACnC,MAAA,OAAO,IAAI,KAAA,CAAM,EAAA,CAAG,QAAA,EAAU,CAAA;AAChC,IAAA;AAFA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;;;;;;;;;ACtKA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAeA,IAAA,IAAM,UAAA,GAAN,cAAyB,KAAA,CAAK;AAE5B,MAAA,WAAA,CAAY,IAAA,EAAoB;AAC9B,QAAA,KAAA,CAAM,CAAA,oBAAA,EAAuB,IAAI,CAAA,YAAA,CAAc,CAAA;AAC/C,QAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA;AACpB,MAAA;;AAwBF,IAAA,IAAY,cAAA;AAAZ,IAAA,CAAA,SAAYA,eAAAA,EAAc;AACxB,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,eAAAA,CAAAA,eAAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA;AACF,IAAA,CAAA,EAHY,cAAA,KAAc,OAAA,CAAA,cAAA,GAAd,cAAA,GAAc,EAAA,CAAA,CAAA;AASb,IAAA,OAAA,CAAA,QAAA,GAAW;MACtB,KAAA,EAAO,IAAI,MAAA,CAAA,IAAA,CAAK,OAAO,CAAA;MACvB,GAAA,EAAK,IAAI,MAAA,CAAA,IAAA,CAAK,KAAK,CAAA;MACnB,GAAA,EAAK,IAAI,MAAA,CAAA,IAAA,CAAK,KAAK;;AAGrB,IAAA,IAAa,QAAb,MAAkB;AAKhB,MAAA,WAAA,CAAY,EAAC,QAAA,EAAU,MAAA,EAAM,GAAkB,EAAA,EAAE;AAJ9B,QAAA,IAAA,CAAA,SAA2C,EAAA;AAK5D,QAAA,IAAA,CAAK,SAAA,GAAY,QAAA;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACjB,MAAA;AAEA,MAAA,MAAA,CAAO,YAAA,EAA2B;AAChC,QAAA,OAAO,wBAAwB,MAAA,CAAA,IAAA,GAAO,YAAA,GAAe,IAAA,CAAK,KAAK,YAAY,CAAA;AAC7E,MAAA;AAEA,MAAA,IAAA,CAAK,MAAA,EAAc;AACjB,QAAA,OAAO,IAAI,MAAA,CAAA,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,MAAM,CAAC,CAAA;AACvC,MAAA;AAEU,MAAA,QAAA,CAAS,MAAA,EAAc;AAC/B,QAAA,MAAM,KAAK,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,IAAK,IAAA,CAAK,WAAW,MAAM,CAAA;AACxD,QAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,EAAA,CAAG,KAAA,EAAO,CAAA,CAAA;AAC/B,MAAA;AAEQ,MAAA,UAAA,CAAW,MAAA,EAAc;;AAC/B,QAAA,IAAA,CAAA,CAAI,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,MAAO,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAA,MAAS,IAAA,IAAA,EAAA,KAAA,SAAA,MAAA,GAAA,EAAA,CAAE,GAAA,CAAI,MAAM,CAAA,KAAM,IAAA,CAAK,SAAA,IAAa,CAAC,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA,EAAI;AAC3F,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,MAAM,CAAA,8BAAA,CAAgC,CAAA;AAC5E,QAAA;AACA,QAAA,OAAQ,KAAK,MAAA,CAAO,MAAM,IAAI,EAAC,MAAA,EAAQ,OAAO,CAAA,EAAC;AACjD,MAAA;;AA5BF,IAAA,OAAA,CAAA,KAAA,GAAA,KAAA;AAoCA,IAAA,IAAa,cAAA,GAAb,cAAoC,MAAA,CAAA,IAAA,CAAI;AAKtC,MAAA,WAAA,CAAY,QAAgB,OAAA,EAAe;AACzC,QAAA,KAAA,CAAM,OAAO,CAAA;AACb,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAChB,MAAA;AAEA,MAAA,QAAA,CAAS,KAAA,EAAkB,EAAC,QAAA,EAAU,SAAA,EAAS,EAAY;AACzD,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,SAAA,GAAA,IAAY,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,IAAI,OAAA,IAAA,CAAK,QAAQ,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAA;AACvD,MAAA;;AAbF,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AAoBA,IAAA,IAAM,IAAA,GAAA,IAAO,MAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAEb,IAAA,IAAa,UAAA,GAAb,cAAgC,KAAA,CAAK;AAKnC,MAAA,WAAA,CAAY,IAAA,EAAuB;AACjC,QAAA,KAAA,CAAM,IAAI,CAAA;AALO,QAAA,IAAA,CAAA,UAAuB,EAAA;AAMxC,QAAA,IAAA,CAAK,SAAS,IAAA,CAAK,KAAA;AACnB,QAAA,IAAA,CAAK,IAAA,GAAO,EAAC,GAAG,IAAA,EAAM,IAAI,IAAA,CAAK,KAAA,GAAQ,IAAA,GAAO,MAAA,CAAA,GAAA,EAAG;AACnD,MAAA;MAEA,GAAA,GAAG;AACD,QAAA,OAAO,IAAA,CAAK,MAAA;AACd,MAAA;AAEA,MAAA,IAAA,CAAK,MAAA,EAAc;AACjB,QAAA,OAAO,IAAI,cAAA,CAAe,MAAA,EAAQ,IAAA,CAAK,QAAA,CAAS,MAAM,CAAC,CAAA;AACzD,MAAA;AAEA,MAAA,KAAA,CAAM,cAAuC,KAAA,EAAgB;;AAC3D,QAAA,IAAI,MAAM,GAAA,KAAQ,MAAA;AAAW,UAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AACnF,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,YAAY,CAAA;AACrC,QAAA,MAAM,EAAC,QAAM,GAAI,IAAA;AACjB,QAAA,MAAM,QAAA,GAAA,CAAW,KAAA,KAAA,CAAM,GAAA,MAAG,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,KAAA,CAAM,GAAA;AACpC,QAAA,IAAI,EAAA,GAAK,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA;AAC5B,QAAA,IAAI,EAAA,EAAI;AACN,UAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,GAAA,CAAI,QAAQ,CAAA;AAC7B,UAAA,IAAI,KAAA;AAAO,YAAA,OAAO,KAAA;QACpB,CAAA,MAAO;AACL,UAAA,EAAA,GAAK,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,uBAAQ,GAAA,EAAG;AACrC,QAAA;AACA,QAAA,EAAA,CAAG,GAAA,CAAI,UAAU,IAAI,CAAA;AAErB,QAAA,MAAM,CAAA,GAAI,KAAK,MAAA,CAAO,MAAM,MAAM,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,GAAI,EAAA,CAAA;AACxD,QAAA,MAAM,YAAY,CAAA,CAAE,MAAA;AACpB,QAAA,CAAA,CAAE,SAAS,IAAI,KAAA,CAAM,GAAA;AACrB,QAAA,IAAA,CAAK,SAAS,KAAA,EAAO,EAAC,QAAA,EAAU,MAAA,EAAQ,WAAU,CAAA;AAClD,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,QAAA,CAAS,QAAgB,QAAA,EAAiB;AACxC,QAAA,MAAM,EAAA,GAAK,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA;AAC9B,QAAA,IAAI,CAAC,EAAA;AAAI,UAAA;AACT,QAAA,OAAO,EAAA,CAAG,IAAI,QAAQ,CAAA;AACxB,MAAA;MAEA,SAAA,CAAU,SAAA,EAAiB,MAAA,GAAuC,IAAA,CAAK,OAAA,EAAO;AAC5E,QAAA,OAAO,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,CAAC,IAAA,KAAwB;AACzD,UAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AAAW,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,IAAI,CAAA,cAAA,CAAgB,CAAA;AACxF,UAAA,OAAA,IAAO,MAAA,CAAA,CAAA,CAAA,CAAA,EAAI,SAAS,CAAA,EAAG,KAAK,SAAS,CAAA,CAAA;QACvC,CAAC,CAAA;AACH,MAAA;AAEA,MAAA,SAAA,CACE,MAAA,GAAuC,IAAA,CAAK,OAAA,EAC5C,UAAA,EACA,OAAA,EAAiD;AAEjD,QAAA,OAAO,IAAA,CAAK,aAAA,CACV,MAAA,EACA,CAAC,IAAA,KAAwB;AACvB,UAAA,IAAI,KAAK,KAAA,KAAU,MAAA;AAAW,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,IAAI,CAAA,cAAA,CAAgB,CAAA;AACpF,UAAA,OAAO,KAAK,KAAA,CAAM,IAAA;AACpB,QAAA,CAAA,EACA,YACA,OAAO,CAAA;AAEX,MAAA;AAEQ,MAAA,aAAA,CACN,MAAA,EACA,SAAA,EACA,UAAA,GAA8B,IAC9B,OAAA,EAAiD;AAEjD,QAAA,IAAI,OAAa,MAAA,CAAA,GAAA;AACjB,QAAA,KAAA,MAAW,UAAU,MAAA,EAAQ;AAC3B,UAAA,MAAM,EAAA,GAAK,OAAO,MAAM,CAAA;AACxB,UAAA,IAAI,CAAC,EAAA;AAAI,YAAA;AACT,UAAA,MAAM,OAAA,GAAW,WAAW,MAAM,CAAA,GAAI,WAAW,MAAM,CAAA,wBAAS,GAAA,EAAG;AACnE,UAAA,EAAA,CAAG,OAAA,CAAQ,CAAC,IAAA,KAAwB;AAClC,YAAA,IAAI,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAG,cAAA;AACvB,YAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,cAAA,CAAe,OAAO,CAAA;AACxC,YAAA,IAAI,CAAA,GAAI,UAAU,IAAI,CAAA;AACtB,YAAA,IAAI,CAAA,EAAG;AACL,cAAA,MAAM,GAAA,GAAM,KAAK,IAAA,CAAK,GAAA,GAAM,QAAA,QAAA,CAAS,GAAA,GAAM,QAAA,QAAA,CAAS,KAAA;AACpD,cAAA,IAAA,GAAA,IAAO,MAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,GAAA,EAAM,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,EAAE,CAAA,CAAA;YACtD,CAAA,MAAA,IAAY,CAAA,GAAI,YAAO,IAAA,IAAP,OAAA,KAAO,SAAA,MAAA,GAAP,OAAA,CAAU,IAAI,CAAA,EAAI;AAChC,cAAA,IAAA,GAAA,IAAO,OAAA,CAAA,CAAA,CAAA,EAAI,IAAI,GAAG,CAAC,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,CAAA;YACpC,CAAA,MAAO;AACL,cAAA,MAAM,IAAI,WAAW,IAAI,CAAA;AAC3B,YAAA;AACA,YAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,cAAA,CAAe,SAAS,CAAA;UAC5C,CAAC,CAAA;AACH,QAAA;AACA,QAAA,OAAO,IAAA;AACT,MAAA;;AAhGF,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;;;;;;;;;ACpHA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAEA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,MAAA,CAAA,CAAA;AAAC,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,MAAA,CAAA,GAAA;AAAG,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,MAAA,CAAA,SAAA;AAAS,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,MAAA,CAAA,GAAA;AAAG,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,MAAA,CAAA,WAAA;AAAW,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,MAAA,CAAA,SAAA;AAAS,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,MAAA,CAAA,UAAA;AAAU,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,MAAA,CAAA,IAAA;AAAI,IAAA,CAAA,EAAA,CAAA;AACxE,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,OAAA,CAAA,KAAA;AAAK,IAAA,CAAA,EAAA,CAAA;AAAc,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,OAAA,CAAA,UAAA;AAAU,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,OAAA,CAAA,cAAA;AAAc,IAAA,CAAA,EAAA,CAAA;AAAkB,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,OAAA,CAAA,QAAA;AAAQ,IAAA,CAAA,EAAA,CAAA;AAQlE,IAAA,OAAA,CAAA,SAAA,GAAY;MACvB,EAAA,EAAI,IAAI,MAAA,CAAA,KAAA,CAAM,GAAG,CAAA;MACjB,GAAA,EAAK,IAAI,MAAA,CAAA,KAAA,CAAM,IAAI,CAAA;MACnB,EAAA,EAAI,IAAI,MAAA,CAAA,KAAA,CAAM,GAAG,CAAA;MACjB,GAAA,EAAK,IAAI,MAAA,CAAA,KAAA,CAAM,IAAI,CAAA;MACnB,EAAA,EAAI,IAAI,MAAA,CAAA,KAAA,CAAM,KAAK,CAAA;MACnB,GAAA,EAAK,IAAI,MAAA,CAAA,KAAA,CAAM,KAAK,CAAA;MACpB,GAAA,EAAK,IAAI,MAAA,CAAA,KAAA,CAAM,GAAG,CAAA;MAClB,EAAA,EAAI,IAAI,MAAA,CAAA,KAAA,CAAM,IAAI,CAAA;MAClB,GAAA,EAAK,IAAI,MAAA,CAAA,KAAA,CAAM,IAAI,CAAA;MACnB,GAAA,EAAK,IAAI,MAAA,CAAA,KAAA,CAAM,GAAG;;AAGpB,IAAA,IAAe,OAAf,MAAmB;MAGjB,aAAA,GAAa;AACX,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,aAAA,CAAc,QAAmB,UAAA,EAAqB;AACpD,QAAA,OAAO,IAAA;AACT,MAAA;;AAOF,IAAA,IAAM,GAAA,GAAN,cAAkB,IAAA,CAAI;MACpB,WAAA,CACmB,OAAA,EACA,MACT,GAAA,EAAc;AAEtB,QAAA,KAAA,EAAK;AAJY,QAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACT,QAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AAGV,MAAA;MAEA,MAAA,CAAO,EAAC,GAAA,EAAK,EAAA,EAAE,EAAY;AACzB,QAAA,MAAM,OAAA,GAAU,GAAA,GAAM,OAAA,CAAA,QAAA,CAAS,MAAM,IAAA,CAAK,OAAA;AAC1C,QAAA,MAAM,MAAM,IAAA,CAAK,GAAA,KAAQ,SAAY,EAAA,GAAK,CAAA,GAAA,EAAM,KAAK,GAAG,CAAA,CAAA;AACxD,QAAA,OAAO,GAAG,OAAO,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA,GAAM,EAAA;AAC5C,MAAA;AAEA,MAAA,aAAA,CAAc,OAAkB,SAAA,EAAoB;AAClD,QAAA,IAAI,CAAC,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAAG,UAAA;AAC3B,QAAA,IAAI,IAAA,CAAK,GAAA;AAAK,UAAA,IAAA,CAAK,GAAA,GAAM,YAAA,CAAa,IAAA,CAAK,GAAA,EAAK,OAAO,SAAS,CAAA;AAChE,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,OAAO,KAAK,GAAA,YAAe,MAAA,CAAA,cAAc,IAAA,CAAK,GAAA,CAAI,QAAQ,EAAA;AAC5D,MAAA;;AAGF,IAAA,IAAM,MAAA,GAAN,cAAqB,IAAA,CAAI;MACvB,WAAA,CACW,GAAA,EACF,KACU,WAAA,EAAqB;AAEtC,QAAA,KAAA,EAAK;AAJI,QAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AACF,QAAA,IAAA,CAAA,GAAA,GAAA,GAAA;AACU,QAAA,IAAA,CAAA,WAAA,GAAA,WAAA;AAGnB,MAAA;MAEA,MAAA,CAAO,EAAC,IAAE,EAAY;AACpB,QAAA,OAAO,GAAG,IAAA,CAAK,GAAG,CAAA,GAAA,EAAM,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,GAAM,EAAA;AACxC,MAAA;AAEA,MAAA,aAAA,CAAc,OAAkB,SAAA,EAAoB;AAClD,QAAA,IAAI,IAAA,CAAK,GAAA,YAAe,MAAA,CAAA,IAAA,IAAQ,CAAC,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,IAAK,CAAC,IAAA,CAAK,WAAA;AAAa,UAAA;AAC3E,QAAA,IAAA,CAAK,GAAA,GAAM,YAAA,CAAa,IAAA,CAAK,GAAA,EAAK,OAAO,SAAS,CAAA;AAClD,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,YAAe,MAAA,CAAA,IAAA,GAAO,EAAA,GAAK,EAAC,GAAG,IAAA,CAAK,GAAA,CAAI,KAAA,EAAK;AAChE,QAAA,OAAO,YAAA,CAAa,KAAA,EAAO,IAAA,CAAK,GAAG,CAAA;AACrC,MAAA;;AAGF,IAAA,IAAM,QAAA,GAAN,cAAuB,MAAA,CAAM;MAC3B,WAAA,CACE,GAAA,EACiB,EAAA,EACjB,GAAA,EACA,WAAA,EAAqB;AAErB,QAAA,KAAA,CAAM,GAAA,EAAK,KAAK,WAAW,CAAA;AAJV,QAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAKnB,MAAA;MAEA,MAAA,CAAO,EAAC,IAAE,EAAY;AACpB,QAAA,OAAO,CAAA,EAAG,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,EAAE,CAAA,EAAA,EAAK,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,GAAM,EAAA;AAClD,MAAA;;AAGF,IAAA,IAAM,KAAA,GAAN,cAAoB,IAAA,CAAI;AAEtB,MAAA,WAAA,CAAqB,KAAA,EAAW;AAC9B,QAAA,KAAA,EAAK;AADc,QAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AADZ,QAAA,IAAA,CAAA,QAAmB,EAAA;AAG5B,MAAA;MAEA,MAAA,CAAO,EAAC,IAAE,EAAY;AACpB,QAAA,OAAO,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,CAAA,CAAA,GAAM,EAAA;AAC5B,MAAA;;AAGF,IAAA,IAAM,KAAA,GAAN,cAAoB,IAAA,CAAI;AAEtB,MAAA,WAAA,CAAqB,KAAA,EAAY;AAC/B,QAAA,KAAA,EAAK;AADc,QAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AADZ,QAAA,IAAA,CAAA,QAAmB,EAAA;AAG5B,MAAA;MAEA,MAAA,CAAO,EAAC,IAAE,EAAY;AACpB,QAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,GAAQ,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA,GAAK,EAAA;AAC9C,QAAA,OAAO,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAA,CAAA,GAAM,EAAA;AAC5B,MAAA;;AAGF,IAAA,IAAM,KAAA,GAAN,cAAoB,IAAA,CAAI;AACtB,MAAA,WAAA,CAAqB,KAAA,EAAW;AAC9B,QAAA,KAAA,EAAK;AADc,QAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAErB,MAAA;MAEA,MAAA,CAAO,EAAC,IAAE,EAAY;AACpB,QAAA,OAAO,CAAA,MAAA,EAAS,IAAA,CAAK,KAAK,CAAA,CAAA,CAAA,GAAM,EAAA;AAClC,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,OAAO,KAAK,KAAA,CAAM,KAAA;AACpB,MAAA;;AAGF,IAAA,IAAM,OAAA,GAAN,cAAsB,IAAA,CAAI;AACxB,MAAA,WAAA,CAAoB,IAAA,EAAc;AAChC,QAAA,KAAA,EAAK;AADa,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAEpB,MAAA;MAEA,MAAA,CAAO,EAAC,IAAE,EAAY;AACpB,QAAA,OAAO,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,CAAA,CAAA,GAAM,EAAA;AAC3B,MAAA;MAEA,aAAA,GAAa;AACX,QAAA,OAAO,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,CAAA,GAAK,IAAA,GAAO,MAAA;AACjC,MAAA;AAEA,MAAA,aAAA,CAAc,OAAkB,SAAA,EAAoB;AAClD,QAAA,IAAA,CAAK,IAAA,GAAO,YAAA,CAAa,IAAA,CAAK,IAAA,EAAM,OAAO,SAAS,CAAA;AACpD,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,OAAO,KAAK,IAAA,YAAgB,MAAA,CAAA,cAAc,IAAA,CAAK,IAAA,CAAK,QAAQ,EAAA;AAC9D,MAAA;;AAGF,IAAA,IAAe,UAAA,GAAf,cAAkC,IAAA,CAAI;MACpC,WAAA,CAAqB,KAAA,GAAqB,EAAA,EAAE;AAC1C,QAAA,KAAA,EAAK;AADc,QAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAErB,MAAA;AAEA,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,EAAM,CAAA,KAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,IAAI,CAAA,EAAG,EAAE,CAAA;AACjE,MAAA;MAEA,aAAA,GAAa;AACX,QAAA,MAAM,EAAC,OAAK,GAAI,IAAA;AAChB,QAAA,IAAI,IAAI,KAAA,CAAM,MAAA;AACd,QAAA,OAAO,CAAA,EAAA,EAAK;AACV,UAAA,MAAM,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA,CAAE,aAAA,EAAa;AAChC,UAAA,IAAI,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAG,YAAA,KAAA,CAAM,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AACpC,eAAA,IAAA,CAAA;AAAG,YAAA,KAAA,CAAM,CAAC,CAAA,GAAI,CAAA;;AAClB,YAAA,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA;AACxB,QAAA;AACA,QAAA,OAAO,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,IAAA,GAAO,MAAA;AACnC,MAAA;AAEA,MAAA,aAAA,CAAc,OAAkB,SAAA,EAAoB;AAClD,QAAA,MAAM,EAAC,OAAK,GAAI,IAAA;AAChB,QAAA,IAAI,IAAI,KAAA,CAAM,MAAA;AACd,QAAA,OAAO,CAAA,EAAA,EAAK;AAEV,UAAA,MAAM,CAAA,GAAI,MAAM,CAAC,CAAA;AACjB,UAAA,IAAI,CAAA,CAAE,aAAA,CAAc,KAAA,EAAO,SAAS,CAAA;AAAG,YAAA;AACvC,UAAA,aAAA,CAAc,KAAA,EAAO,EAAE,KAAK,CAAA;AAC5B,UAAA,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA;AACnB,QAAA;AACA,QAAA,OAAO,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,IAAA,GAAO,MAAA;AACnC,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,KAAA,EAAkB,CAAA,KAAM,QAAA,CAAS,KAAA,EAAO,CAAA,CAAE,KAAK,CAAA,EAAG,EAAE,CAAA;AAChF,MAAA;;AAOF,IAAA,IAAe,SAAA,GAAf,cAAiC,UAAA,CAAU;AACzC,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,OAAO,GAAA,GAAM,KAAK,EAAA,GAAK,KAAA,CAAM,OAAO,IAAI,CAAA,GAAI,MAAM,IAAA,CAAK,EAAA;AACzD,MAAA;;AAGF,IAAA,IAAM,IAAA,GAAN,cAAmB,UAAA,CAAU;;AAE7B,IAAA,IAAM,IAAA,GAAN,cAAmB,SAAA,CAAS;;AACV,IAAA,IAAA,CAAA,IAAA,GAAO,MAAA;AAGzB,IAAA,IAAM,EAAA,GAAN,MAAM,GAAA,SAAW,SAAA,CAAS;AAGxB,MAAA,WAAA,CACU,WACR,KAAA,EAAmB;AAEnB,QAAA,KAAA,CAAM,KAAK,CAAA;AAHH,QAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAIV,MAAA;AAEA,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,IAAI,OAAO,CAAA,GAAA,EAAM,IAAA,CAAK,SAAS,CAAA,CAAA,CAAA,GAAM,KAAA,CAAM,OAAO,IAAI,CAAA;AACtD,QAAA,IAAI,IAAA,CAAK,IAAA;AAAM,UAAA,IAAA,IAAQ,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,IAAI,CAAA;AACtD,QAAA,OAAO,IAAA;AACT,MAAA;MAEA,aAAA,GAAa;AACX,QAAA,KAAA,CAAM,aAAA,EAAa;AACnB,QAAA,MAAM,OAAO,IAAA,CAAK,SAAA;AAClB,QAAA,IAAI,IAAA,KAAS,IAAA;AAAM,UAAA,OAAO,IAAA,CAAK,KAAA;AAC/B,QAAA,IAAI,IAAI,IAAA,CAAK,IAAA;AACb,QAAA,IAAI,CAAA,EAAG;AACL,UAAA,MAAM,EAAA,GAAK,EAAE,aAAA,EAAa;AAC1B,UAAA,CAAA,GAAI,IAAA,CAAK,OAAO,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA,GAAI,IAAI,IAAA,CAAK,EAAE,CAAA,GAAK,EAAA;AACtD,QAAA;AACA,QAAA,IAAI,CAAA,EAAG;AACL,UAAA,IAAI,IAAA,KAAS,KAAA;AAAO,YAAA,OAAO,CAAA,YAAa,GAAA,GAAK,CAAA,GAAI,CAAA,CAAE,KAAA;AACnD,UAAA,IAAI,KAAK,KAAA,CAAM,MAAA;AAAQ,YAAA,OAAO,IAAA;AAC9B,UAAA,OAAO,IAAI,GAAA,CAAG,GAAA,CAAI,IAAI,CAAA,EAAG,CAAA,YAAa,GAAA,GAAK,CAAC,CAAC,CAAA,GAAI,CAAA,CAAE,KAAK,CAAA;AAC1D,QAAA;AACA,QAAA,IAAI,IAAA,KAAS,KAAA,IAAS,CAAC,IAAA,CAAK,KAAA,CAAM,MAAA;AAAQ,UAAA,OAAO,MAAA;AACjD,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,aAAA,CAAc,OAAkB,SAAA,EAAoB;;AAClD,QAAA,IAAA,CAAK,IAAA,GAAA,CAAO,EAAA,GAAA,IAAA,CAAK,IAAA,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,aAAA,CAAc,KAAA,EAAO,SAAS,CAAA;AACrD,QAAA,IAAI,EAAE,KAAA,CAAM,aAAA,CAAc,KAAA,EAAO,SAAS,KAAK,IAAA,CAAK,IAAA,CAAA;AAAO,UAAA;AAC3D,QAAA,IAAA,CAAK,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,SAAA,EAAW,OAAO,SAAS,CAAA;AAC9D,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,QAAA,YAAA,CAAa,KAAA,EAAO,KAAK,SAAS,CAAA;AAClC,QAAA,IAAI,IAAA,CAAK,IAAA;AAAM,UAAA,QAAA,CAAS,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAC9C,QAAA,OAAO,KAAA;AACT,MAAA;;AA7CgB,IAAA,EAAA,CAAA,IAAA,GAAO,IAAA;AAoDzB,IAAA,IAAe,GAAA,GAAf,cAA2B,SAAA,CAAS;;AAClB,IAAA,GAAA,CAAA,IAAA,GAAO,KAAA;AAGzB,IAAA,IAAM,OAAA,GAAN,cAAsB,GAAA,CAAG;AACvB,MAAA,WAAA,CAAoB,SAAA,EAAe;AACjC,QAAA,KAAA,EAAK;AADa,QAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAEpB,MAAA;AAEA,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,OAAO,OAAO,IAAA,CAAK,SAAS,CAAA,CAAA,CAAA,GAAM,KAAA,CAAM,OAAO,IAAI,CAAA;AACrD,MAAA;AAEA,MAAA,aAAA,CAAc,OAAkB,SAAA,EAAoB;AAClD,QAAA,IAAI,CAAC,KAAA,CAAM,aAAA,CAAc,KAAA,EAAO,SAAS,CAAA;AAAG,UAAA;AAC5C,QAAA,IAAA,CAAK,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,SAAA,EAAW,OAAO,SAAS,CAAA;AAC9D,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,OAAO,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AACnD,MAAA;;AAGF,IAAA,IAAM,QAAA,GAAN,cAAuB,GAAA,CAAG;MACxB,WAAA,CACmB,OAAA,EACA,IAAA,EACA,IAAA,EACA,EAAA,EAAY;AAE7B,QAAA,KAAA,EAAK;AALY,QAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,QAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAGnB,MAAA;AAEA,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,MAAM,UAAU,IAAA,CAAK,GAAA,GAAM,OAAA,CAAA,QAAA,CAAS,MAAM,IAAA,CAAK,OAAA;AAC/C,QAAA,MAAM,EAAC,IAAA,EAAM,IAAA,EAAM,EAAA,EAAE,GAAI,IAAA;AACzB,QAAA,OAAO,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,EAAI,IAAI,IAAI,IAAI,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,EAAI,EAAE,CAAA,EAAA,EAAK,IAAI,CAAA,GAAA,CAAA,GAAQ,KAAA,CAAM,OAAO,IAAI,CAAA;AACxF,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,KAAA,EAAO,KAAK,IAAI,CAAA;AACjD,QAAA,OAAO,YAAA,CAAa,KAAA,EAAO,IAAA,CAAK,EAAE,CAAA;AACpC,MAAA;;AAGF,IAAA,IAAM,OAAA,GAAN,cAAsB,GAAA,CAAG;MACvB,WAAA,CACmB,IAAA,EACA,OAAA,EACA,IAAA,EACT,QAAA,EAAc;AAEtB,QAAA,KAAA,EAAK;AALY,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,QAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AACA,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACT,QAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAGV,MAAA;AAEA,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,OAAO,CAAA,IAAA,EAAO,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,IAAI,IAAA,CAAK,QAAQ,CAAA,CAAA,CAAA,GAAM,KAAA,CAAM,OAAO,IAAI,CAAA;AAC9F,MAAA;AAEA,MAAA,aAAA,CAAc,OAAkB,SAAA,EAAoB;AAClD,QAAA,IAAI,CAAC,KAAA,CAAM,aAAA,CAAc,KAAA,EAAO,SAAS,CAAA;AAAG,UAAA;AAC5C,QAAA,IAAA,CAAK,QAAA,GAAW,YAAA,CAAa,IAAA,CAAK,QAAA,EAAU,OAAO,SAAS,CAAA;AAC5D,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,OAAO,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO,IAAA,CAAK,SAAS,KAAK,CAAA;AAClD,MAAA;;AAGF,IAAA,IAAM,IAAA,GAAN,cAAmB,SAAA,CAAS;MAE1B,WAAA,CACS,IAAA,EACA,MACA,KAAA,EAAe;AAEtB,QAAA,KAAA,EAAK;AAJE,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,QAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,QAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAGT,MAAA;AAEA,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,GAAQ,QAAA,GAAW,EAAA;AACvC,QAAA,OAAO,CAAA,EAAG,MAAM,CAAA,SAAA,EAAY,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,CAAA,CAAA,GAAM,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAC3E,MAAA;;AAZgB,IAAA,IAAA,CAAA,IAAA,GAAO,MAAA;AAezB,IAAA,IAAM,MAAA,GAAN,cAAqB,UAAA,CAAU;AAG7B,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,OAAO,SAAA,GAAY,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AACtC,MAAA;;AAJgB,IAAA,MAAA,CAAA,IAAA,GAAO,QAAA;AAOzB,IAAA,IAAM,GAAA,GAAN,cAAkB,SAAA,CAAS;AAIzB,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,IAAI,IAAA,GAAO,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AACpC,QAAA,IAAI,IAAA,CAAK,KAAA;AAAO,UAAA,IAAA,IAAQ,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAC9C,QAAA,IAAI,IAAA,CAAK,OAAA;AAAS,UAAA,IAAA,IAAQ,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA;AAClD,QAAA,OAAO,IAAA;AACT,MAAA;MAEA,aAAA,GAAa;;AACX,QAAA,KAAA,CAAM,aAAA,EAAa;AACnB,QAAA,CAAA,EAAA,GAAA,KAAK,KAAA,MAAK,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,GAAE,aAAA,EAAa;AACzB,QAAA,CAAA,EAAA,GAAA,KAAK,OAAA,MAAO,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,GAAE,aAAA,EAAa;AAC3B,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,aAAA,CAAc,OAAkB,SAAA,EAAoB;;AAClD,QAAA,KAAA,CAAM,aAAA,CAAc,OAAO,SAAS,CAAA;AACpC,QAAA,CAAA,EAAA,GAAA,IAAA,CAAK,KAAA,MAAK,IAAA,IAAA,EAAA,KAAA,SAAA,MAAA,GAAA,EAAA,CAAE,aAAA,CAAc,KAAA,EAAO,SAAS,CAAA;AAC1C,QAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAA,MAAO,IAAA,IAAA,EAAA,KAAA,SAAA,MAAA,GAAA,EAAA,CAAE,aAAA,CAAc,KAAA,EAAO,SAAS,CAAA;AAC5C,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,IAAI,KAAA,GAAK;AACP,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,QAAA,IAAI,IAAA,CAAK,KAAA;AAAO,UAAA,QAAA,CAAS,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAChD,QAAA,IAAI,IAAA,CAAK,OAAA;AAAS,UAAA,QAAA,CAAS,KAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA;AACpD,QAAA,OAAO,KAAA;AACT,MAAA;;AAOF,IAAA,IAAM,KAAA,GAAN,cAAoB,SAAA,CAAS;AAE3B,MAAA,WAAA,CAAqB,KAAA,EAAW;AAC9B,QAAA,KAAA,EAAK;AADc,QAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAErB,MAAA;AAEA,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,OAAO,SAAS,IAAA,CAAK,KAAK,CAAA,CAAA,CAAA,GAAM,KAAA,CAAM,OAAO,IAAI,CAAA;AACnD,MAAA;;AAPgB,IAAA,KAAA,CAAA,IAAA,GAAO,OAAA;AAUzB,IAAA,IAAM,OAAA,GAAN,cAAsB,SAAA,CAAS;AAE7B,MAAA,MAAA,CAAO,IAAA,EAAe;AACpB,QAAA,OAAO,SAAA,GAAY,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AACtC,MAAA;;AAHgB,IAAA,OAAA,CAAA,IAAA,GAAO,SAAA;AAiCzB,IAAA,IAAa,UAAb,MAAoB;MASlB,WAAA,CAAY,QAAA,EAAsB,IAAA,GAAuB,EAAA,EAAE;AANlD,QAAA,IAAA,CAAA,UAA0B,EAAA;AAElB,QAAA,IAAA,CAAA,eAAyB,EAAA;AACzB,QAAA,IAAA,CAAA,aAAwB,EAAA;AAIvC,QAAA,IAAA,CAAK,IAAA,GAAO,EAAC,GAAG,IAAA,EAAM,IAAI,IAAA,CAAK,KAAA,GAAQ,OAAO,EAAA,EAAE;AAChD,QAAA,IAAA,CAAK,SAAA,GAAY,QAAA;AACjB,QAAA,IAAA,CAAK,SAAS,IAAI,OAAA,CAAA,MAAM,EAAC,MAAA,EAAQ,UAAS,CAAA;AAC1C,QAAA,IAAA,CAAK,MAAA,GAAS,CAAC,IAAI,IAAA,EAAM,CAAA;AAC3B,MAAA;MAEA,QAAA,GAAQ;AACN,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AACpC,MAAA;;AAGA,MAAA,IAAA,CAAK,MAAA,EAAc;AACjB,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAChC,MAAA;;AAGA,MAAA,SAAA,CAAU,MAAA,EAAc;AACtB,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,MAAM,CAAA;AACnC,MAAA;;AAGA,MAAA,UAAA,CAAW,cAAuC,KAAA,EAAgB;AAChE,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,cAAc,KAAK,CAAA;AACrD,QAAA,MAAM,EAAA,GAAK,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,KAAM,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,mBAAI,IAAI,GAAA,EAAG,CAAA;AAC5E,QAAA,EAAA,CAAG,IAAI,IAAI,CAAA;AACX,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,aAAA,CAAc,QAAgB,QAAA,EAAiB;AAC7C,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,MAAA,EAAQ,QAAQ,CAAA;AACjD,MAAA;;;AAIA,MAAA,SAAA,CAAU,SAAA,EAAe;AACvB,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,SAAA,CAAU,SAAA,EAAW,KAAK,OAAO,CAAA;AACzD,MAAA;MAEA,SAAA,GAAS;AACP,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA;AAC9C,MAAA;MAEQ,IAAA,CACN,OAAA,EACA,YAAA,EACA,GAAA,EACA,QAAA,EAAkB;AAElB,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAC5C,QAAA,IAAI,QAAQ,MAAA,IAAa,QAAA;AAAU,UAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA,GAAI,GAAA;AAC/D,QAAA,IAAA,CAAK,UAAU,IAAI,GAAA,CAAI,OAAA,EAAS,IAAA,EAAM,GAAG,CAAC,CAAA;AAC1C,QAAA,OAAO,IAAA;AACT,MAAA;;MAGA,KAAA,CAAM,YAAA,EAA6B,KAAe,SAAA,EAAmB;AACnE,QAAA,OAAO,KAAK,IAAA,CAAK,OAAA,CAAA,SAAS,KAAA,EAAO,YAAA,EAAc,KAAK,SAAS,CAAA;AAC/D,MAAA;;MAGA,GAAA,CAAI,YAAA,EAA6B,KAAgB,SAAA,EAAmB;AAClE,QAAA,OAAO,KAAK,IAAA,CAAK,OAAA,CAAA,SAAS,GAAA,EAAK,YAAA,EAAc,KAAK,SAAS,CAAA;AAC7D,MAAA;;MAGA,GAAA,CAAI,YAAA,EAA6B,KAAgB,SAAA,EAAmB;AAClE,QAAA,OAAO,KAAK,IAAA,CAAK,OAAA,CAAA,SAAS,GAAA,EAAK,YAAA,EAAc,KAAK,SAAS,CAAA;AAC7D,MAAA;;MAGA,MAAA,CAAO,GAAA,EAAW,KAAe,WAAA,EAAqB;AACpD,QAAA,OAAO,KAAK,SAAA,CAAU,IAAI,OAAO,GAAA,EAAK,GAAA,EAAK,WAAW,CAAC,CAAA;AACzD,MAAA;;AAGA,MAAA,GAAA,CAAI,KAAW,GAAA,EAAa;AAC1B,QAAA,OAAO,IAAA,CAAK,UAAU,IAAI,QAAA,CAAS,KAAK,OAAA,CAAA,SAAA,CAAU,GAAA,EAAK,GAAG,CAAC,CAAA;AAC7D,MAAA;;AAGA,MAAA,IAAA,CAAK,CAAA,EAAmB;AACtB,QAAA,IAAI,OAAO,CAAA,IAAK,UAAA;AAAY,UAAA,CAAA,EAAC;AACpB,aAAA,IAAA,CAAA,KAAM,MAAA,CAAA,GAAA;AAAK,UAAA,IAAA,CAAK,SAAA,CAAU,IAAI,OAAA,CAAQ,CAAC,CAAC,CAAA;AACjD,QAAA,OAAO,IAAA;AACT,MAAA;;AAGA,MAAA,MAAA,CAAA,GAAU,SAAA,EAA+C;AACvD,QAAA,MAAM,IAAA,GAAmB,CAAC,GAAG,CAAA;AAC7B,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,SAAA,EAAW;AACpC,UAAA,IAAI,KAAK,MAAA,GAAS,CAAA;AAAG,YAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AAClC,UAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,UAAA,IAAI,GAAA,KAAQ,KAAA,IAAS,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK;AAClC,YAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,YAAA,IAAA,MAAA,CAAA,UAAA,EAAW,IAAA,EAAM,KAAK,CAAA;AACxB,UAAA;AACF,QAAA;AACA,QAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,QAAA,OAAO,IAAI,MAAA,CAAA,KAAA,CAAM,IAAI,CAAA;AACvB,MAAA;;MAGA,EAAA,CAAG,SAAA,EAA2B,UAAkB,QAAA,EAAgB;AAC9D,QAAA,IAAA,CAAK,UAAA,CAAW,IAAI,EAAA,CAAG,SAAS,CAAC,CAAA;AAEjC,QAAA,IAAI,YAAY,QAAA,EAAU;AACxB,UAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,CAAE,IAAA,GAAO,IAAA,CAAK,QAAQ,EAAE,KAAA,EAAK;AACjD,QAAA,CAAA,MAAA,IAAW,QAAA,EAAU;AACnB,UAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,CAAE,KAAA,EAAK;AAC3B,QAAA,CAAA,MAAA,IAAW,QAAA,EAAU;AACnB,UAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAC5D,QAAA;AACA,QAAA,OAAO,IAAA;AACT,MAAA;;AAGA,MAAA,MAAA,CAAO,SAAA,EAAyB;AAC9B,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAI,EAAA,CAAG,SAAS,CAAC,CAAA;AACzC,MAAA;;MAGA,IAAA,GAAI;AACF,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAI,IAAA,EAAM,CAAA;AAClC,MAAA;;MAGA,KAAA,GAAK;AACH,QAAA,OAAO,IAAA,CAAK,aAAA,CAAc,EAAA,EAAI,IAAI,CAAA;AACpC,MAAA;AAEQ,MAAA,IAAA,CAAK,MAAW,OAAA,EAAe;AACrC,QAAA,IAAA,CAAK,WAAW,IAAI,CAAA;AACpB,QAAA,IAAI,OAAA;AAAS,UAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,EAAM;AACtC,QAAA,OAAO,IAAA;AACT,MAAA;;AAGA,MAAA,GAAA,CAAI,WAAiB,OAAA,EAAe;AAClC,QAAA,OAAO,KAAK,IAAA,CAAK,IAAI,OAAA,CAAQ,SAAS,GAAG,OAAO,CAAA;AAClD,MAAA;;AAGA,MAAA,QAAA,CACE,YAAA,EACA,IAAA,EACA,EAAA,EACA,OAAA,EACA,OAAA,GAAgB,IAAA,CAAK,IAAA,CAAK,GAAA,GAAM,OAAA,CAAA,QAAA,CAAS,GAAA,GAAM,OAAA,CAAA,SAAS,GAAA,EAAG;AAE3D,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAC5C,QAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAI,QAAA,CAAS,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,EAAE,CAAA,EAAG,MAAM,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC7E,MAAA;;AAGA,MAAA,KAAA,CACE,cACA,QAAA,EACA,OAAA,EACA,OAAA,GAAgB,OAAA,CAAA,SAAS,KAAA,EAAK;AAE9B,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAC5C,QAAA,IAAI,IAAA,CAAK,KAAK,GAAA,EAAK;AACjB,UAAA,MAAM,GAAA,GAAM,oBAAoB,MAAA,CAAA,IAAA,GAAO,WAAW,IAAA,CAAK,GAAA,CAAI,QAAQ,QAAQ,CAAA;AAC3E,UAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,CAAA,EAAA,IAAG,OAAA,CAAA,CAAA,CAAA,EAAI,GAAG,CAAA,OAAA,CAAA,EAAW,CAAC,CAAA,KAAK;AACpD,YAAA,IAAA,CAAK,GAAA,CAAI,UAAM,MAAA,CAAA,KAAI,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAA;AAC9B,YAAA,OAAA,CAAQ,IAAI,CAAA;UACd,CAAC,CAAA;AACH,QAAA;AACA,QAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAI,OAAA,CAAQ,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,QAAQ,CAAA,EAAG,MAAM,OAAA,CAAQ,IAAI,CAAC,CAAA;AAClF,MAAA;;;AAIA,MAAA,KAAA,CACE,YAAA,EACA,GAAA,EACA,OAAA,EACA,OAAA,GAAgB,IAAA,CAAK,IAAA,CAAK,GAAA,GAAM,OAAA,CAAA,QAAA,CAAS,GAAA,GAAM,OAAA,CAAA,QAAA,CAAS,KAAA,EAAK;AAE7D,QAAA,IAAI,IAAA,CAAK,KAAK,aAAA,EAAe;AAC3B,UAAA,OAAO,IAAA,CAAK,MAAM,YAAA,EAAA,IAAc,OAAA,CAAA,CAAA,CAAA,YAAA,EAAgB,GAAG,KAAK,OAAO,CAAA;AACjE,QAAA;AACA,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,YAAY,CAAA;AAC5C,QAAA,OAAO,IAAA,CAAK,IAAA,CAAK,IAAI,OAAA,CAAQ,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,GAAG,CAAA,EAAG,MAAM,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC7E,MAAA;;MAGA,MAAA,GAAM;AACJ,QAAA,OAAO,IAAA,CAAK,cAAc,GAAG,CAAA;AAC/B,MAAA;;AAGA,MAAA,KAAA,CAAM,KAAA,EAAW;AACf,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAI,KAAA,CAAM,KAAK,CAAC,CAAA;AACxC,MAAA;;AAGA,MAAA,KAAA,CAAM,KAAA,EAAY;AAChB,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAI,KAAA,CAAM,KAAK,CAAC,CAAA;AACxC,MAAA;;AAGA,MAAA,MAAA,CAAO,KAAA,EAAuB;AAC5B,QAAA,MAAM,IAAA,GAAO,IAAI,MAAA,EAAM;AACvB,QAAA,IAAA,CAAK,WAAW,IAAI,CAAA;AACpB,QAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACf,QAAA,IAAI,IAAA,CAAK,MAAM,MAAA,KAAW,CAAA;AAAG,UAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AACrF,QAAA,OAAO,IAAA,CAAK,cAAc,MAAM,CAAA;AAClC,MAAA;;MAGA,GAAA,CAAI,OAAA,EAAgB,WAA+B,WAAA,EAAmB;AACpE,QAAA,IAAI,CAAC,aAAa,CAAC,WAAA;AAAa,UAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAC9F,QAAA,MAAM,IAAA,GAAO,IAAI,GAAA,EAAG;AACpB,QAAA,IAAA,CAAK,WAAW,IAAI,CAAA;AACpB,QAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AACjB,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAC3B,UAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,KAAA,GAAQ,IAAI,MAAM,KAAK,CAAA;AAC7C,UAAA,SAAA,CAAU,KAAK,CAAA;AACjB,QAAA;AACA,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,OAAA,GAAU,IAAI,OAAA,EAAO;AAC3C,UAAA,IAAA,CAAK,KAAK,WAAW,CAAA;AACvB,QAAA;AACA,QAAA,OAAO,IAAA,CAAK,aAAA,CAAc,KAAA,EAAO,OAAO,CAAA;AAC1C,MAAA;;AAGA,MAAA,KAAA,CAAM,KAAA,EAAW;AACf,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAI,KAAA,CAAM,KAAK,CAAC,CAAA;AACxC,MAAA;;AAGA,MAAA,KAAA,CAAM,MAAc,SAAA,EAAkB;AACpC,QAAA,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AACzC,QAAA,IAAI,IAAA;AAAM,UAAA,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,CAAE,QAAA,CAAS,SAAS,CAAA;AAC5C,QAAA,OAAO,IAAA;AACT,MAAA;;AAGA,MAAA,QAAA,CAAS,SAAA,EAAkB;AACzB,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,YAAA,CAAa,GAAA,EAAG;AACjC,QAAA,IAAI,GAAA,KAAQ,MAAA;AAAW,UAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAC7E,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,GAAA;AACrC,QAAA,IAAI,OAAA,GAAU,CAAA,IAAM,SAAA,KAAc,MAAA,IAAa,YAAY,SAAA,EAAY;AACrE,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,OAAO,CAAA,IAAA,EAAO,SAAS,CAAA,SAAA,CAAW,CAAA;AACvF,QAAA;AACA,QAAA,IAAA,CAAK,OAAO,MAAA,GAAS,GAAA;AACrB,QAAA,OAAO,IAAA;AACT,MAAA;;AAGA,MAAA,IAAA,CAAK,IAAA,EAAY,IAAA,GAAa,MAAA,CAAA,GAAA,EAAK,OAAiB,QAAA,EAAgB;AAClE,QAAA,IAAA,CAAK,WAAW,IAAI,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,KAAK,CAAC,CAAA;AAC3C,QAAA,IAAI,QAAA;AAAU,UAAA,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,CAAE,OAAA,EAAO;AACzC,QAAA,OAAO,IAAA;AACT,MAAA;;MAGA,OAAA,GAAO;AACL,QAAA,OAAO,IAAA,CAAK,cAAc,IAAI,CAAA;AAChC,MAAA;AAEA,MAAA,QAAA,CAAS,IAAI,CAAA,EAAC;AACZ,QAAA,OAAO,MAAM,CAAA,EAAG;AACd,UAAA,IAAA,CAAK,MAAM,aAAA,EAAa;AACxB,UAAA,IAAA,CAAK,MAAM,aAAA,CAAc,IAAA,CAAK,KAAA,CAAM,KAAA,EAAO,KAAK,UAAU,CAAA;AAC5D,QAAA;AACF,MAAA;AAEQ,MAAA,SAAA,CAAU,IAAA,EAAc;AAC9B,QAAA,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAC9B,QAAA,OAAO,IAAA;AACT,MAAA;AAEQ,MAAA,UAAA,CAAW,IAAA,EAAoB;AACrC,QAAA,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAC9B,QAAA,IAAA,CAAK,MAAA,CAAO,KAAK,IAAI,CAAA;AACvB,MAAA;AAEQ,MAAA,aAAA,CAAc,IAAsB,EAAA,EAAqB;AAC/D,QAAA,MAAM,IAAI,IAAA,CAAK,SAAA;AACf,QAAA,IAAI,CAAA,YAAa,EAAA,IAAO,EAAA,IAAM,CAAA,YAAa,EAAA,EAAK;AAC9C,UAAA,IAAA,CAAK,OAAO,GAAA,EAAG;AACf,UAAA,OAAO,IAAA;AACT,QAAA;AACA,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,EAAA,GAAK,CAAA,EAAG,EAAA,CAAG,IAAI,CAAA,CAAA,EAAI,EAAA,CAAG,IAAI,CAAA,CAAA,GAAK,EAAA,CAAG,IAAI,CAAA,CAAA,CAAG,CAAA;AACrF,MAAA;AAEQ,MAAA,SAAA,CAAU,IAAA,EAAe;AAC/B,QAAA,MAAM,IAAI,IAAA,CAAK,SAAA;AACf,QAAA,IAAI,EAAE,aAAa,EAAA,CAAA,EAAK;AACtB,UAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAChD,QAAA;AACA,QAAA,IAAA,CAAK,SAAA,GAAY,EAAE,IAAA,GAAO,IAAA;AAC1B,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,IAAY,KAAA,GAAK;AACf,QAAA,OAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AACtB,MAAA;AAEA,MAAA,IAAY,SAAA,GAAS;AACnB,QAAA,MAAM,KAAK,IAAA,CAAK,MAAA;AAChB,QAAA,OAAO,EAAA,CAAG,EAAA,CAAG,MAAA,GAAS,CAAC,CAAA;AACzB,MAAA;AAEA,MAAA,IAAY,UAAU,IAAA,EAAgB;AACpC,QAAA,MAAM,KAAK,IAAA,CAAK,MAAA;AAChB,QAAA,EAAA,CAAG,EAAA,CAAG,MAAA,GAAS,CAAC,CAAA,GAAI,IAAA;AACtB,MAAA;;AAjUF,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAwUA,IAAA,SAAS,QAAA,CAAS,OAAkB,IAAA,EAAe;AACjD,MAAA,KAAA,MAAW,CAAA,IAAK,IAAA;AAAM,QAAA,KAAA,CAAM,CAAC,KAAK,KAAA,CAAM,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,CAAC,CAAA,IAAK,CAAA,CAAA;AAC/D,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,SAAS,YAAA,CAAa,OAAkB,IAAA,EAAc;AACpD,MAAA,OAAO,gBAAgB,MAAA,CAAA,WAAA,GAAc,SAAS,KAAA,EAAO,IAAA,CAAK,KAAK,CAAA,GAAI,KAAA;AACrE,IAAA;AAGA,IAAA,SAAS,YAAA,CAAa,IAAA,EAAgB,KAAA,EAAkB,SAAA,EAAoB;AAC1E,MAAA,IAAI,gBAAgB,MAAA,CAAA,IAAA;AAAM,QAAA,OAAO,YAAY,IAAI,CAAA;AACjD,MAAA,IAAI,CAAC,YAAY,IAAI,CAAA;AAAG,QAAA,OAAO,IAAA;AAC/B,MAAA,OAAO,IAAI,OAAA,KAAA,CACT,IAAA,CAAK,OAAO,MAAA,CAAO,CAAC,OAAmB,CAAA,KAAwB;AAC7D,QAAA,IAAI,aAAa,MAAA,CAAA,IAAA;AAAM,UAAA,CAAA,GAAI,YAAY,CAAC,CAAA;AACxC,QAAA,IAAI,aAAa,MAAA,CAAA,KAAA;AAAO,UAAA,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,CAAE,MAAM,CAAA;;AACzC,UAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACjB,QAAA,OAAO,KAAA;MACT,CAAA,EAAG,EAAE,CAAC,CAAA;AAGR,MAAA,SAAS,YAAY,CAAA,EAAO;AAC1B,QAAA,MAAM,CAAA,GAAI,SAAA,CAAU,CAAA,CAAE,GAAG,CAAA;AACzB,QAAA,IAAI,CAAA,KAAM,MAAA,IAAa,KAAA,CAAM,CAAA,CAAE,GAAG,CAAA,KAAM,CAAA;AAAG,UAAA,OAAO,CAAA;AAClD,QAAA,OAAO,KAAA,CAAM,EAAE,GAAG,CAAA;AAClB,QAAA,OAAO,CAAA;AACT,MAAA;AAEA,MAAA,SAAS,YAAY,CAAA,EAAW;AAC9B,QAAA,OACE,CAAA,YAAa,OAAA,KAAA,IACb,CAAA,CAAE,OAAO,IAAA,CACP,CAAC,MAAM,CAAA,YAAa,MAAA,CAAA,QAAQ,KAAA,CAAM,CAAA,CAAE,GAAG,CAAA,KAAM,CAAA,IAAK,UAAU,CAAA,CAAE,GAAG,MAAM,MAAS,CAAA;AAGtF,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,aAAA,CAAc,OAAkB,IAAA,EAAe;AACtD,MAAA,KAAA,MAAW,CAAA,IAAK,IAAA;AAAM,QAAA,KAAA,CAAM,CAAC,KAAK,KAAA,CAAM,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,CAAC,CAAA,IAAK,CAAA,CAAA;AACjE,IAAA;AAGA,IAAA,SAAgB,IAAI,CAAA,EAAkB;AACpC,MAAA,OAAO,OAAO,CAAA,IAAK,SAAA,IAAa,OAAO,KAAK,QAAA,IAAY,CAAA,KAAM,IAAA,GAAO,CAAC,QAAI,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AACvF,IAAA;AAFA,IAAA,OAAA,CAAA,GAAA,GAAA,GAAA;AAIA,IAAA,IAAM,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAA,SAAA,CAAU,GAAG,CAAA;AAGrC,IAAA,SAAgB,OAAO,IAAA,EAAY;AACjC,MAAA,OAAO,IAAA,CAAK,OAAO,OAAO,CAAA;AAC5B,IAAA;AAFA,IAAA,OAAA,CAAA,GAAA,GAAA,GAAA;AAIA,IAAA,IAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAA,SAAA,CAAU,EAAE,CAAA;AAGnC,IAAA,SAAgB,MAAM,IAAA,EAAY;AAChC,MAAA,OAAO,IAAA,CAAK,OAAO,MAAM,CAAA;AAC3B,IAAA;AAFA,IAAA,OAAA,CAAA,EAAA,GAAA,EAAA;AAMA,IAAA,SAAS,QAAQ,EAAA,EAAQ;AACvB,MAAA,OAAO,CAAC,GAAG,CAAA,KAAO,CAAA,KAAM,OAAA,GAAA,GAAM,CAAA,GAAI,CAAA,KAAM,MAAA,CAAA,GAAA,GAAM,CAAA,GAAA,IAAI,MAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA,CAAA,EAAI,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AAC9E,IAAA;AAEA,IAAA,SAAS,IAAI,CAAA,EAAO;AAClB,MAAA,OAAO,aAAa,MAAA,CAAA,IAAA,GAAO,QAAI,MAAA,CAAA,MAAK,CAAC,CAAA,CAAA,CAAA;AACvC,IAAA;;;;;;;;;ACj1BA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAIA,IAAA,SAAgB,OAAkC,GAAA,EAAQ;AACxD,MAAA,MAAM,OAA0B,EAAA;AAChC,MAAA,KAAA,MAAW,IAAA,IAAQ,GAAA;AAAK,QAAA,IAAA,CAAK,IAAI,CAAA,GAAI,IAAA;AACrC,MAAA,OAAO,IAAA;AACT,IAAA;AAJA,IAAA,OAAA,CAAA,MAAA,GAAA,MAAA;AAMA,IAAA,SAAgB,iBAAA,CAAkB,IAAe,MAAA,EAAiB;AAChE,MAAA,IAAI,OAAO,MAAA,IAAU,SAAA;AAAW,QAAA,OAAO,MAAA;AACvC,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,KAAW,CAAA;AAAG,QAAA,OAAO,IAAA;AAC7C,MAAA,iBAAA,CAAkB,IAAI,MAAM,CAAA;AAC5B,MAAA,OAAO,CAAC,cAAA,CAAe,MAAA,EAAQ,EAAA,CAAG,IAAA,CAAK,MAAM,GAAG,CAAA;AAClD,IAAA;AALA,IAAA,OAAA,CAAA,iBAAA,GAAA,iBAAA;AAOA,IAAA,SAAgB,iBAAA,CAAkB,EAAA,EAAe,MAAA,GAAoB,EAAA,CAAG,MAAA,EAAM;AAC5E,MAAA,MAAM,EAAC,IAAA,EAAM,IAAA,EAAI,GAAI,EAAA;AACrB,MAAA,IAAI,CAAC,IAAA,CAAK,YAAA;AAAc,QAAA;AACxB,MAAA,IAAI,OAAO,MAAA,KAAW,SAAA;AAAW,QAAA;AACjC,MAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,CAAM,QAAA;AACzB,MAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAA;AAAG,UAAA,eAAA,CAAgB,EAAA,EAAI,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAA,CAAG,CAAA;AAClE,MAAA;AACF,IAAA;AARA,IAAA,OAAA,CAAA,iBAAA,GAAA,iBAAA;AAUA,IAAA,SAAgB,cAAA,CACd,QACA,KAAA,EAAyC;AAEzC,MAAA,IAAI,OAAO,MAAA,IAAU,SAAA;AAAW,QAAA,OAAO,CAAC,MAAA;AACxC,MAAA,KAAA,MAAW,GAAA,IAAO,MAAA;AAAQ,QAAA,IAAI,MAAM,GAAG,CAAA;AAAG,UAAA,OAAO,IAAA;AACjD,MAAA,OAAO,KAAA;AACT,IAAA;AAPA,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AASA,IAAA,SAAgB,oBAAA,CAAqB,QAAmB,KAAA,EAAsB;AAC5E,MAAA,IAAI,OAAO,MAAA,IAAU,SAAA;AAAW,QAAA,OAAO,CAAC,MAAA;AACxC,MAAA,KAAA,MAAW,GAAA,IAAO,MAAA;AAAQ,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAAG,UAAA,OAAO,IAAA;AACvE,MAAA,OAAO,KAAA;AACT,IAAA;AAJA,IAAA,OAAA,CAAA,oBAAA,GAAA,oBAAA;AAMA,IAAA,SAAgB,eACd,EAAC,YAAA,EAAc,YAAU,EACzB,MAAA,EACA,SACA,KAAA,EAAsB;AAEtB,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,IAAI,OAAO,MAAA,IAAU,QAAA,IAAY,OAAO,MAAA,IAAU,SAAA;AAAW,UAAA,OAAO,MAAA;AACpE,QAAA,IAAI,OAAO,MAAA,IAAU,QAAA;AAAU,UAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAClD,MAAA;AACA,MAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,YAAY,CAAA,EAAG,UAAU,CAAA,EAAA,IAAG,SAAA,CAAA,WAAA,EAAY,OAAO,CAAC,CAAA,CAAA;AAC7D,IAAA;AAXA,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AAaA,IAAA,SAAgB,iBAAiB,GAAA,EAAW;AAC1C,MAAA,OAAO,mBAAA,CAAoB,kBAAA,CAAmB,GAAG,CAAC,CAAA;AACpD,IAAA;AAFA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAIA,IAAA,SAAgB,eAAe,GAAA,EAAoB;AACjD,MAAA,OAAO,kBAAA,CAAmB,iBAAA,CAAkB,GAAG,CAAC,CAAA;AAClD,IAAA;AAFA,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AAIA,IAAA,SAAgB,kBAAkB,GAAA,EAAoB;AACpD,MAAA,IAAI,OAAO,GAAA,IAAO,QAAA;AAAU,QAAA,OAAO,GAAG,GAAG,CAAA,CAAA;AACzC,MAAA,OAAO,IAAI,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,OAAO,IAAI,CAAA;AACpD,IAAA;AAHA,IAAA,OAAA,CAAA,iBAAA,GAAA,iBAAA;AAKA,IAAA,SAAgB,oBAAoB,GAAA,EAAW;AAC7C,MAAA,OAAO,IAAI,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA,CAAE,OAAA,CAAQ,OAAO,GAAG,CAAA;AACnD,IAAA;AAFA,IAAA,OAAA,CAAA,mBAAA,GAAA,mBAAA;AAIA,IAAA,SAAgB,QAAA,CAAY,IAAa,CAAA,EAAiB;AACxD,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA,EAAG;AACrB,QAAA,KAAA,MAAW,CAAA,IAAK,EAAA;AAAI,UAAA,CAAA,CAAE,CAAC,CAAA;MACzB,CAAA,MAAO;AACL,QAAA,CAAA,CAAE,EAAE,CAAA;AACN,MAAA;AACF,IAAA;AANA,IAAA,OAAA,CAAA,QAAA,GAAA,QAAA;AAwBA,IAAA,SAAS,mBAA4C,EACnD,UAAA,EACA,WAAA,EACA,WAAA,EACA,cAAY,EACS;AACrB,MAAA,OAAO,CAAC,GAAA,EAAK,IAAA,EAAM,EAAA,EAAI,MAAA,KAAU;AAC/B,QAAA,MAAM,GAAA,GACJ,EAAA,KAAO,MAAA,GACH,IAAA,GACA,cAAc,SAAA,CAAA,IAAA,IACb,IAAA,YAAgB,SAAA,CAAA,IAAA,GAAO,UAAA,CAAW,GAAA,EAAK,IAAA,EAAM,EAAE,CAAA,GAAI,WAAA,CAAY,GAAA,EAAK,IAAA,EAAM,EAAE,CAAA,EAAG,EAAA,IAChF,IAAA,YAAgB,UAAA,IAAA,IACf,WAAA,CAAY,GAAA,EAAK,EAAA,EAAI,IAAI,CAAA,EAAG,IAAA,IAC7B,WAAA,CAAY,MAAM,EAAE,CAAA;AAC1B,QAAA,OAAO,MAAA,KAAW,SAAA,CAAA,IAAA,IAAQ,EAAE,GAAA,YAAe,UAAA,IAAA,CAAA,GAAQ,YAAA,CAAa,GAAA,EAAK,GAAG,CAAA,GAAI,GAAA;AAC9E,MAAA,CAAA;AACF,IAAA;AAOa,IAAA,OAAA,CAAA,cAAA,GAAiC;AAC5C,MAAA,KAAA,EAAO,kBAAA,CAAmB;AACxB,QAAA,UAAA,EAAY,CAAC,GAAA,EAAK,IAAA,EAAM,EAAA,KACtB,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAE,CAAA,aAAA,EAAgB,IAAI,kBAAkB,MAAK;AACtD,UAAA,GAAA,CAAI,EAAA,CAAA,IACF,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,SAAA,CAAA,EACR,MAAM,GAAA,CAAI,MAAA,CAAO,EAAA,EAAI,IAAI,CAAA,EACzB,MAAM,GAAA,CAAI,MAAA,CAAO,EAAA,EAAA,IAAI,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAE,CAAA,MAAA,CAAQ,CAAA,CAAE,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,cAAA,EAAkB,EAAE,CAAA,EAAA,EAAK,IAAI,GAAG,CAAC,CAAA;QAE/E,CAAC,CAAA;QACH,WAAA,EAAa,CAAC,GAAA,EAAK,IAAA,EAAM,EAAA,KACvB,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAE,CAAA,SAAA,CAAA,EAAa,MAAK;AAC7B,UAAA,IAAI,SAAS,IAAA,EAAM;AACjB,YAAA,GAAA,CAAI,MAAA,CAAO,IAAI,IAAI,CAAA;UACrB,CAAA,MAAO;AACL,YAAA,GAAA,CAAI,OAAO,EAAA,EAAA,IAAI,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAE,CAAA,MAAA,CAAQ,CAAA;AAC7B,YAAA,YAAA,CAAa,GAAA,EAAK,IAAI,IAAI,CAAA;AAC5B,UAAA;QACF,CAAC,CAAA;QACH,WAAA,EAAa,CAAC,IAAA,EAAM,EAAA,KAAQ,IAAA,KAAS,IAAA,GAAO,OAAO,EAAC,GAAG,IAAA,EAAM,GAAG,EAAA,EAAE;QAClE,YAAA,EAAc;AACf,OAAA,CAAA;AACD,MAAA,KAAA,EAAO,kBAAA,CAAmB;AACxB,QAAA,UAAA,EAAY,CAAC,GAAA,EAAK,IAAA,EAAM,EAAA,KACtB,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAE,CAAA,aAAA,EAAgB,IAAI,kBAAkB,MACjD,GAAA,CAAI,MAAA,CAAO,EAAA,EAAA,IAAI,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,mBAAA,EAAsB,EAAE,CAAA,GAAA,EAAM,IAAI,CAAA,GAAA,EAAM,EAAE,CAAA,GAAA,EAAM,IAAI,EAAE,CAAC,CAAA;AAElF,QAAA,WAAA,EAAa,CAAC,GAAA,EAAK,IAAA,EAAM,EAAA,KACvB,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAE,CAAA,SAAA,CAAA,EAAa,MACxB,GAAA,CAAI,MAAA,CAAO,EAAA,EAAI,IAAA,KAAS,IAAA,GAAO,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAE,CAAA,GAAA,EAAM,IAAI,CAAA,GAAA,EAAM,EAAE,CAAA,GAAA,EAAM,IAAI,EAAE,CAAC,CAAA;QAE/E,WAAA,EAAa,CAAC,MAAM,EAAA,KAAQ,IAAA,KAAS,OAAO,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,EAAE,CAAA;AACpE,QAAA,YAAA,EAAc,CAAC,GAAA,EAAK,KAAA,KAAU,GAAA,CAAI,GAAA,CAAI,SAAS,KAAK;AACrD,OAAA;;AAGH,IAAA,SAAgB,oBAAA,CAAqB,KAAc,EAAA,EAAwB;AACzE,MAAA,IAAI,EAAA,KAAO,IAAA;AAAM,QAAA,OAAO,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AAC7C,MAAA,MAAM,QAAQ,GAAA,CAAI,GAAA,CAAI,OAAA,EAAA,IAAS,UAAA,CAAA,CAAA,CAAA,EAAA,CAAK,CAAA;AACpC,MAAA,IAAI,EAAA,KAAO,MAAA;AAAW,QAAA,YAAA,CAAa,GAAA,EAAK,OAAO,EAAE,CAAA;AACjD,MAAA,OAAO,KAAA;AACT,IAAA;AALA,IAAA,OAAA,CAAA,oBAAA,GAAA,oBAAA;AAOA,IAAA,SAAgB,YAAA,CAAa,GAAA,EAAc,KAAA,EAAa,EAAA,EAA0B;AAChF,MAAA,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM,GAAA,CAAI,WAAO,SAAA,CAAA,KAAI,KAAK,CAAA,EAAA,IAAG,SAAA,CAAA,WAAA,EAAY,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,CAAA;AAC/E,IAAA;AAFA,IAAA,OAAA,CAAA,YAAA,GAAA,YAAA;AAIA,IAAA,IAAM,WAAoC,EAAA;AAE1C,IAAA,SAAgB,OAAA,CAAQ,KAAc,CAAA,EAAiB;AACrD,MAAA,OAAO,GAAA,CAAI,WAAW,MAAA,EAAQ;QAC5B,GAAA,EAAK,CAAA;AACL,QAAA,IAAA,EAAM,QAAA,CAAS,CAAA,CAAE,IAAI,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,IAAI,CAAA,GAAI,IAAI,MAAA,CAAA,KAAA,CAAM,CAAA,CAAE,IAAI,CAAA;AAC/D,OAAA,CAAA;AACH,IAAA;AALA,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAOA,IAAA,IAAY,IAAA;AAAZ,IAAA,CAAA,SAAYC,KAAAA,EAAI;AACd,MAAAA,KAAAA,CAAAA,KAAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,MAAAA,KAAAA,CAAAA,KAAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACF,IAAA,CAAA,EAHY,IAAA,KAAI,OAAA,CAAA,IAAA,GAAJ,IAAA,GAAI,EAAA,CAAA,CAAA;AAKhB,IAAA,SAAgB,YAAA,CACd,QAAA,EACA,YAAA,EACA,gBAAA,EAA0B;AAG1B,MAAA,IAAI,QAAA,YAAoB,UAAA,IAAA,EAAM;AAC5B,QAAA,MAAM,QAAA,GAAW,iBAAiB,IAAA,CAAK,GAAA;AACvC,QAAA,OAAO,gBAAA,GACH,eACE,SAAA,CAAA,WAAU,QAAQ,CAAA,MAAA,CAAA,GAAA,IAClB,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,QAAQ,CAAA,OAAA,CAAA,GACrB,QAAA,GAAA,IACA,SAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAU,QAAQ,CAAA,CAAA,GAAA,IAClB,SAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAU,QAAQ,CAAA,0CAAA,CAAA;AACxB,MAAA;AACA,MAAA,OAAO,gBAAA,GAAA,IAAmB,SAAA,CAAA,WAAA,EAAY,QAAQ,EAAE,QAAA,EAAQ,GAAK,GAAA,GAAM,iBAAA,CAAkB,QAAQ,CAAA;AAC/F,IAAA;AAjBA,IAAA,OAAA,CAAA,YAAA,GAAA,YAAA;AAmBA,IAAA,SAAgB,gBACd,EAAA,EACA,GAAA,EACA,IAAA,GAAwB,EAAA,CAAG,KAAK,YAAA,EAAY;AAE5C,MAAA,IAAI,CAAC,IAAA;AAAM,QAAA;AACX,MAAA,GAAA,GAAM,gBAAgB,GAAG,CAAA,CAAA;AACzB,MAAA,IAAI,IAAA,KAAS,IAAA;AAAM,QAAA,MAAM,IAAI,MAAM,GAAG,CAAA;AACtC,MAAA,EAAA,CAAG,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA;AACzB,IAAA;AATA,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;;;;;;;;AC3MA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ;;MAEZ,IAAA,EAAM,IAAI,SAAA,CAAA,IAAA,CAAK,MAAM,CAAA;;;MAErB,MAAA,EAAQ,IAAI,SAAA,CAAA,IAAA,CAAK,QAAQ,CAAA;;MACzB,YAAA,EAAc,IAAI,SAAA,CAAA,IAAA,CAAK,cAAc,CAAA;MACrC,UAAA,EAAY,IAAI,SAAA,CAAA,IAAA,CAAK,YAAY,CAAA;MACjC,kBAAA,EAAoB,IAAI,SAAA,CAAA,IAAA,CAAK,oBAAoB,CAAA;MACjD,QAAA,EAAU,IAAI,SAAA,CAAA,IAAA,CAAK,UAAU,CAAA;;MAC7B,cAAA,EAAgB,IAAI,SAAA,CAAA,IAAA,CAAK,gBAAgB,CAAA;;;MAEzC,OAAA,EAAS,IAAI,SAAA,CAAA,IAAA,CAAK,SAAS,CAAA;;MAC3B,MAAA,EAAQ,IAAI,SAAA,CAAA,IAAA,CAAK,QAAQ,CAAA;;MACzB,IAAA,EAAM,IAAI,SAAA,CAAA,IAAA,CAAK,MAAM,CAAA;;MAErB,IAAA,EAAM,IAAI,SAAA,CAAA,IAAA,CAAK,MAAM,CAAA;MACrB,KAAA,EAAO,IAAI,SAAA,CAAA,IAAA,CAAK,OAAO,CAAA;;MAEvB,IAAA,EAAM,IAAI,SAAA,CAAA,IAAA,CAAK,MAAM,CAAA;MACrB,OAAA,EAAS,IAAI,SAAA,CAAA,IAAA,CAAK,SAAS,CAAA;MAC3B,OAAA,EAAS,IAAI,SAAA,CAAA,IAAA,CAAK,SAAS,CAAA;MAC3B,QAAA,EAAU,IAAI,SAAA,CAAA,IAAA,CAAK,UAAU;;AAG/B,IAAA,OAAA,CAAA,OAAA,GAAe,KAAA;;;;;;;;;ACxBf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAEA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAEa,IAAA,OAAA,CAAA,YAAA,GAAuC;AAClD,MAAA,OAAA,EAAS,CAAC,EAAC,OAAA,WAAa,SAAA,CAAA,kBAAiB,OAAO,CAAA,oBAAA;;AAGrC,IAAA,OAAA,CAAA,iBAAA,GAA4C;AACvD,MAAA,OAAA,EAAS,CAAC,EAAC,OAAA,EAAS,UAAA,EAAU,KAC5B,iBACI,SAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAO,OAAO,qBAAqB,UAAU,CAAA,QAAA,CAAA,GAAA,IAC7C,SAAA,CAAA,QAAO,OAAO,CAAA,4BAAA;;AAStB,IAAA,SAAgB,YACd,GAAA,EACA,KAAA,GAAgC,OAAA,CAAA,YAAA,EAChC,YACA,iBAAA,EAA2B;AAE3B,MAAA,MAAM,EAAC,IAAE,GAAI,GAAA;AACb,MAAA,MAAM,EAAC,GAAA,EAAK,aAAA,EAAe,SAAA,EAAS,GAAI,EAAA;AACxC,MAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,GAAA,EAAK,KAAA,EAAO,UAAU,CAAA;AACrD,MAAA,IAAI,sBAAiB,IAAA,IAAjB,iBAAA,KAAiB,MAAA,GAAjB,iBAAA,GAAsB,iBAAiB,SAAA,EAAY;AACrD,QAAA,QAAA,CAAS,KAAK,MAAM,CAAA;MACtB,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,EAAA,EAAA,IAAI,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,MAAM,CAAA,CAAA,CAAG,CAAA;AACjC,MAAA;AACF,IAAA;AAdA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAgBA,IAAA,SAAgB,gBAAA,CACd,GAAA,EACA,KAAA,GAAgC,OAAA,CAAA,cAChC,UAAA,EAAuB;AAEvB,MAAA,MAAM,EAAC,IAAE,GAAI,GAAA;AACb,MAAA,MAAM,EAAC,GAAA,EAAK,aAAA,EAAe,SAAA,EAAS,GAAI,EAAA;AACxC,MAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,GAAA,EAAK,KAAA,EAAO,UAAU,CAAA;AACrD,MAAA,QAAA,CAAS,KAAK,MAAM,CAAA;AACpB,MAAA,IAAI,EAAE,iBAAiB,SAAA,CAAA,EAAY;AACjC,QAAA,YAAA,CAAa,EAAA,EAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA;AAC5B,MAAA;AACF,IAAA;AAZA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAcA,IAAA,SAAgB,gBAAA,CAAiB,KAAc,SAAA,EAAe;AAC5D,MAAA,GAAA,CAAI,MAAA,CAAO,OAAA,CAAA,OAAA,CAAE,MAAA,EAAQ,SAAS,CAAA;AAC9B,MAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAA,OAAA,CAAE,OAAO,CAAA,SAAA,CAAA,EAAa,MAC/B,GAAA,CAAI,EAAA,CACF,SAAA,EACA,MAAM,IAAI,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,OAAA,CAAA,EAAW,SAAS,CAAA,EAClD,MAAM,GAAA,CAAI,MAAA,CAAO,OAAA,CAAA,OAAA,CAAE,OAAA,EAAS,IAAI,CAAC,CAClC,CAAA;AAEL,IAAA;AATA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAWA,IAAA,SAAgB,YAAA,CAAa,EAC3B,GAAA,EACA,OAAA,EACA,aACA,IAAA,EACA,SAAA,EACA,IAAE,EACc;AAEhB,MAAA,IAAI,SAAA,KAAc,MAAA;AAAW,QAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AACvE,MAAA,MAAMC,IAAAA,GAAM,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA;AAC1B,MAAA,GAAA,CAAI,SAAS,GAAA,EAAK,SAAA,EAAW,QAAA,OAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,KAAK;AAC3C,QAAA,GAAA,CAAI,KAAA,CAAMA,IAAAA,EAAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAA,OAAA,CAAE,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAA;AACpC,QAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAIA,IAAG,CAAA,2BAAA,CAAA,EAA+B,MAC3C,GAAA,CAAI,MAAA,CAAA,IAAO,SAAA,CAAA,KAAIA,IAAG,CAAA,aAAA,CAAA,EAAA,IAAiB,SAAA,CAAA,SAAA,EAAU,OAAA,CAAA,QAAE,YAAA,EAAc,EAAA,CAAG,SAAS,CAAC,CAAC,CAAA;AAE7E,QAAA,GAAA,CAAI,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAIA,IAAG,CAAA,WAAA,CAAA,EAAA,IAAe,SAAA,CAAA,GAAA,CAAA,CAAA,EAAM,EAAA,CAAG,aAAa,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AACpE,QAAA,IAAI,EAAA,CAAG,KAAK,OAAA,EAAS;AACnB,UAAA,GAAA,CAAI,WAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAIA,IAAG,WAAW,WAAW,CAAA;AACxC,UAAA,GAAA,CAAI,WAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAIA,IAAG,SAAS,IAAI,CAAA;AACjC,QAAA;MACF,CAAC,CAAA;AACH,IAAA;AAtBA,IAAA,OAAA,CAAA,YAAA,GAAA,YAAA;AAwBA,IAAA,SAAS,QAAA,CAAS,KAAc,MAAA,EAAY;AAC1C,MAAA,MAAMA,IAAAA,GAAM,GAAA,CAAI,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA;AACnC,MAAA,GAAA,CAAI,EAAA,CAAA,IACF,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,SAAA,CAAA,EACb,MAAM,GAAA,CAAI,MAAA,CAAO,OAAA,CAAA,OAAA,CAAE,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAKA,IAAG,CAAA,CAAA,CAAG,CAAA,EAAA,IACvC,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,MAAA,EAASA,IAAG,CAAA,CAAA,CAAG,CAAA;AAE9B,MAAA,GAAA,CAAI,SAAK,SAAA,CAAA,KAAI,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,EAAA,CAAI,CAAA;AAC3B,IAAA;AAEA,IAAA,SAAS,YAAA,CAAa,IAAe,IAAA,EAAU;AAC7C,MAAA,MAAM,EAAC,GAAA,EAAK,YAAA,EAAc,SAAA,EAAS,GAAI,EAAA;AACvC,MAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,QAAA,GAAA,CAAI,KAAA,CAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAQ,GAAG,eAAuB,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAG,CAAA;MACzD,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,WAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,YAAY,WAAW,IAAI,CAAA;AAC1C,QAAA,GAAA,CAAI,OAAO,KAAK,CAAA;AAClB,MAAA;AACF,IAAA;AAEA,IAAA,IAAM,CAAA,GAAI;MACR,OAAA,EAAS,IAAI,SAAA,CAAA,IAAA,CAAK,SAAS,CAAA;MAC3B,UAAA,EAAY,IAAI,SAAA,CAAA,IAAA,CAAK,YAAY,CAAA;;MACjC,MAAA,EAAQ,IAAI,SAAA,CAAA,IAAA,CAAK,QAAQ,CAAA;MACzB,YAAA,EAAc,IAAI,SAAA,CAAA,IAAA,CAAK,cAAc,CAAA;MACrC,OAAA,EAAS,IAAI,SAAA,CAAA,IAAA,CAAK,SAAS,CAAA;MAC3B,MAAA,EAAQ,IAAI,SAAA,CAAA,IAAA,CAAK,QAAQ,CAAA;MACzB,YAAA,EAAc,IAAI,SAAA,CAAA,IAAA,CAAK,cAAc;;AAGvC,IAAA,SAAS,eAAA,CACP,GAAA,EACA,KAAA,EACA,UAAA,EAAuB;AAEvB,MAAA,MAAM,EAAC,YAAA,EAAY,GAAI,GAAA,CAAI,EAAA;AAC3B,MAAA,IAAI,YAAA,KAAiB,KAAA;AAAO,QAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AACnC,MAAA,OAAO,WAAA,CAAY,GAAA,EAAK,KAAA,EAAO,UAAU,CAAA;AAC3C,IAAA;AAEA,IAAA,SAAS,WAAA,CACP,GAAA,EACA,KAAA,EACA,UAAA,GAAyB,EAAA,EAAE;AAE3B,MAAA,MAAM,EAAC,GAAA,EAAK,EAAA,EAAE,GAAI,GAAA;AAClB,MAAA,MAAM,SAAA,GAAyC;AAC7C,QAAA,iBAAA,CAAkB,IAAI,UAAU,CAAA;AAChC,QAAA,eAAA,CAAgB,KAAK,UAAU;;AAEjC,MAAA,eAAA,CAAgB,GAAA,EAAK,OAAO,SAAS,CAAA;AACrC,MAAA,OAAO,GAAA,CAAI,MAAA,CAAO,GAAG,SAAS,CAAA;AAChC,IAAA;AAEA,IAAA,SAAS,kBAAkB,EAAC,SAAA,EAAS,EAAc,EAAC,cAAY,EAAa;AAC3E,MAAA,MAAM,QAAA,GAAW,YAAA,GAAA,IACb,SAAA,CAAA,OAAM,SAAS,CAAA,EAAA,IAAG,MAAA,CAAA,cAAa,YAAA,EAAc,MAAA,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACtD,SAAA;AACJ,MAAA,OAAO,CAAC,OAAA,CAAA,OAAA,CAAE,YAAA,EAAA,IAAc,SAAA,CAAA,SAAA,EAAU,OAAA,CAAA,OAAA,CAAE,YAAA,EAAc,QAAQ,CAAC,CAAA;AAC7D,IAAA;AAEA,IAAA,SAAS,eAAA,CACP,EAAC,OAAA,EAAS,EAAA,EAAI,EAAC,aAAA,EAAa,EAAC,EAC7B,EAAC,UAAA,EAAY,YAAA,EAAY,EAAa;AAEtC,MAAA,IAAI,OAAA,GAAU,eAAe,aAAA,GAAA,IAAgB,UAAA,GAAA,CAAA,CAAA,EAAM,aAAa,IAAI,OAAO,CAAA,CAAA;AAC3E,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,OAAA,GAAA,IAAU,SAAA,CAAA,GAAA,CAAA,CAAA,EAAM,OAAO,CAAA,EAAA,IAAG,MAAA,CAAA,YAAA,EAAa,UAAA,EAAY,MAAA,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAC9D,MAAA;AACA,MAAA,OAAO,CAAC,CAAA,CAAE,UAAA,EAAY,OAAO,CAAA;AAC/B,IAAA;AAEA,IAAA,SAAS,gBACP,GAAA,EACA,EAAC,MAAA,EAAQ,OAAA,IACT,SAAA,EAAsC;AAEtC,MAAA,MAAM,EAAC,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa,IAAE,GAAI,GAAA;AACzC,MAAA,MAAM,EAAC,IAAA,EAAM,YAAA,EAAc,YAAA,EAAc,YAAU,GAAI,EAAA;AACvD,MAAA,SAAA,CAAU,KACR,CAAC,CAAA,CAAE,SAAS,OAAO,CAAA,EACnB,CAAC,CAAA,CAAE,MAAA,EAAQ,OAAO,MAAA,IAAU,UAAA,GAAa,OAAO,GAAG,CAAA,GAAI,cAAU,SAAA,CAAA,MAAK,CAAC,CAAA;AAEzE,MAAA,IAAI,KAAK,QAAA,EAAU;AACjB,QAAA,SAAA,CAAU,IAAA,CAAK,CAAC,CAAA,CAAE,OAAA,EAAS,OAAO,OAAA,IAAW,UAAA,GAAa,OAAA,CAAQ,GAAG,CAAA,GAAI,OAAO,CAAC,CAAA;AACnF,MAAA;AACA,MAAA,IAAI,KAAK,OAAA,EAAS;AAChB,QAAA,SAAA,CAAU,IAAA,CACR,CAAC,CAAA,CAAE,MAAA,EAAQ,WAAW,CAAA,EACtB,CAAC,CAAA,CAAE,YAAA,EAAA,IAAc,SAAA,CAAA,KAAI,YAAY,CAAA,EAAG,UAAU,CAAA,CAAE,CAAA,EAChD,CAAC,OAAA,CAAA,OAAA,CAAE,IAAA,EAAM,IAAI,CAAC,CAAA;AAElB,MAAA;AACA,MAAA,IAAI,YAAA;AAAc,QAAA,SAAA,CAAU,IAAA,CAAK,CAAC,CAAA,CAAE,YAAA,EAAc,YAAY,CAAC,CAAA;AACjE,IAAA;;;;;;;;;ACrLA,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAEA,IAAA,IAAM,SAAA,GAAoC;MACxC,OAAA,EAAS;;AAGX,IAAA,SAAgB,qBAAqB,EAAA,EAAa;AAChD,MAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAY,GAAI,EAAA;AACpC,MAAA,IAAI,WAAW,KAAA,EAAO;AACpB,QAAA,gBAAA,CAAiB,IAAI,KAAK,CAAA;AAC5B,MAAA,CAAA,MAAA,IAAW,OAAO,MAAA,IAAU,QAAA,IAAY,MAAA,CAAO,WAAW,IAAA,EAAM;AAC9D,QAAA,GAAA,CAAI,MAAA,CAAO,OAAA,CAAA,OAAA,CAAE,IAAI,CAAA;MACnB,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,WAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,YAAY,WAAW,IAAI,CAAA;AAC1C,QAAA,GAAA,CAAI,OAAO,IAAI,CAAA;AACjB,MAAA;AACF,IAAA;AAVA,IAAA,OAAA,CAAA,oBAAA,GAAA,oBAAA;AAYA,IAAA,SAAgB,iBAAA,CAAkB,IAAe,KAAA,EAAW;AAC1D,MAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAM,GAAI,EAAA;AACtB,MAAA,IAAI,WAAW,KAAA,EAAO;AACpB,QAAA,GAAA,CAAI,GAAA,CAAI,OAAO,KAAK,CAAA;AACpB,QAAA,gBAAA,CAAiB,EAAE,CAAA;MACrB,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,GAAA,CAAI,OAAO,IAAI,CAAA;AACrB,MAAA;AACF,IAAA;AARA,IAAA,OAAA,CAAA,iBAAA,GAAA,iBAAA;AAUA,IAAA,SAAS,gBAAA,CAAiB,IAAe,iBAAA,EAA2B;AAClE,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAI,GAAI,EAAA;AAEpB,MAAA,MAAM,GAAA,GAAuB;AAC3B,QAAA,GAAA;QACA,OAAA,EAAS,cAAA;AACT,QAAA,IAAA;QACA,MAAA,EAAQ,KAAA;QACR,UAAA,EAAY,KAAA;QACZ,WAAA,EAAa,KAAA;AACb,QAAA,MAAA,EAAQ,EAAA;AACR,QAAA;;AAEF,MAAA,IAAA,QAAA,CAAA,WAAA,EAAY,GAAA,EAAK,SAAA,EAAW,QAAW,iBAAiB,CAAA;AAC1D,IAAA;;;;;;;;;AC5CA,IAAA,IAAM,UAAA,GAAa,CAAC,QAAA,EAAU,QAAA,EAAU,WAAW,SAAA,EAAW,MAAA,EAAQ,UAAU,OAAO,CAAA;AAIvF,IAAA,IAAM,SAAA,GAAyB,IAAI,GAAA,CAAI,UAAU,CAAA;AAEjD,IAAA,SAAgB,WAAW,CAAA,EAAU;AACnC,MAAA,OAAO,OAAO,CAAA,IAAK,QAAA,IAAY,SAAA,CAAU,IAAI,CAAC,CAAA;AAChD,IAAA;AAFA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AA2BA,IAAA,SAAgB,QAAA,GAAQ;AACtB,MAAA,MAAM,MAAA,GAAsE;AAC1E,QAAA,MAAA,EAAQ,EAAC,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,EAAA,EAAE;AAClC,QAAA,MAAA,EAAQ,EAAC,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,EAAA,EAAE;AAClC,QAAA,KAAA,EAAO,EAAC,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,EAAA,EAAE;AAChC,QAAA,MAAA,EAAQ,EAAC,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,EAAA;;AAElC,MAAA,OAAO;QACL,KAAA,EAAO,EAAC,GAAG,MAAA,EAAQ,OAAA,EAAS,MAAM,OAAA,EAAS,IAAA,EAAM,MAAM,IAAA,EAAI;AAC3D,QAAA,KAAA,EAAO,CAAC,EAAC,KAAA,EAAO,EAAA,EAAE,EAAG,MAAA,CAAO,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,MAAA,CAAO,KAAA,EAAO,OAAO,MAAM,CAAA;QAC9E,IAAA,EAAM,EAAC,KAAA,EAAO,EAAA,EAAE;AAChB,QAAA,GAAA,EAAK,EAAA;AACL,QAAA,QAAA,EAAU;;AAEd,IAAA;AAdA,IAAA,OAAA,CAAA,QAAA,GAAA,QAAA;;;;;;;;;AC/BA,IAAA,SAAgB,qBAAA,CACd,EAAC,MAAA,EAAQ,IAAA,IACT,IAAA,EAAc;AAEd,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AACnC,MAAA,OAAO,KAAA,IAAS,KAAA,KAAU,IAAA,IAAQ,cAAA,CAAe,QAAQ,KAAK,CAAA;AAChE,IAAA;AANA,IAAA,OAAA,CAAA,qBAAA,GAAA,qBAAA;AAQA,IAAA,SAAgB,cAAA,CAAe,QAAyB,KAAA,EAAgB;AACtE,MAAA,OAAO,KAAA,CAAM,MAAM,IAAA,CAAK,CAAC,SAAS,aAAA,CAAc,MAAA,EAAQ,IAAI,CAAC,CAAA;AAC/D,IAAA;AAFA,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AAIA,IAAA,SAAgB,aAAA,CAAc,QAAyB,IAAA,EAAU;;AAC/D,MAAA,OACE,MAAA,CAAO,KAAK,OAAO,CAAA,KAAM,YACzB,EAAA,GAAA,IAAA,CAAK,WAAW,UAAA,MAAU,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,GAAE,IAAA,CAAK,CAAC,QAAQ,MAAA,CAAO,GAAG,MAAM,MAAS,CAAA,CAAA;AAEvE,IAAA;AALA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;;;;;;;;;ACTA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,eAAA,GAAA,qBAAA,EAAA;AACA,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAEA,IAAA,IAAY,QAAA;AAAZ,IAAA,CAAA,SAAYC,SAAAA,EAAQ;AAClB,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA;AACA,MAAAA,SAAAA,CAAAA,SAAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA;AACF,IAAA,CAAA,EAHY,QAAA,KAAQ,OAAA,CAAA,QAAA,GAAR,QAAA,GAAQ,EAAA,CAAA,CAAA;AAKpB,IAAA,SAAgB,eAAe,MAAA,EAAuB;AACpD,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,MAAA,CAAO,IAAI,CAAA;AACtC,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA;AACrC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,IAAI,OAAO,QAAA,KAAa,KAAA;AAAO,UAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;MACzF,CAAA,MAAO;AACL,QAAA,IAAI,CAAC,KAAA,CAAM,MAAA,IAAU,MAAA,CAAO,aAAa,MAAA,EAAW;AAClD,UAAA,MAAM,IAAI,MAAM,0CAA0C,CAAA;AAC5D,QAAA;AACA,QAAA,IAAI,OAAO,QAAA,KAAa,IAAA;AAAM,UAAA,KAAA,CAAM,KAAK,MAAM,CAAA;AACjD,MAAA;AACA,MAAA,OAAO,KAAA;AACT,IAAA;AAZA,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AAeA,IAAA,SAAgB,aAAaC,GAAAA,EAAuB;AAClD,MAAA,MAAM,KAAA,GAAmB,KAAA,CAAM,OAAA,CAAQA,GAAE,CAAA,GAAIA,MAAKA,GAAAA,GAAK,CAACA,GAAE,CAAA,GAAI,EAAA;AAC9D,MAAA,IAAI,KAAA,CAAM,KAAA,CAAM,OAAA,CAAA,UAAU,CAAA;AAAG,QAAA,OAAO,KAAA;AACpC,MAAA,MAAM,IAAI,KAAA,CAAM,uCAAA,GAA0C,KAAA,CAAM,IAAA,CAAK,GAAG,CAAC,CAAA;AAC3E,IAAA;AAJA,IAAA,OAAA,CAAA,YAAA,GAAA,YAAA;AAMA,IAAA,SAAgB,sBAAA,CAAuB,IAAkB,KAAA,EAAiB;AACxE,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,IAAA,EAAI,GAAI,EAAA;AAC1B,MAAA,MAAM,QAAA,GAAW,aAAA,CAAc,KAAA,EAAO,IAAA,CAAK,WAAW,CAAA;AACtD,MAAA,MAAM,aACJ,KAAA,CAAM,MAAA,GAAS,CAAA,IACf,EAAE,SAAS,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,MAAA,KAAW,SAAK,eAAA,CAAA,uBAAsB,EAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACrF,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,MAAM,YAAY,cAAA,CAAe,KAAA,EAAO,MAAM,IAAA,CAAK,aAAA,EAAe,SAAS,KAAK,CAAA;AAChF,QAAA,GAAA,CAAI,EAAA,CAAG,WAAW,MAAK;AACrB,UAAA,IAAI,QAAA,CAAS,MAAA;AAAQ,YAAA,UAAA,CAAW,EAAA,EAAI,OAAO,QAAQ,CAAA;;AAC9C,YAAA,eAAA,CAAgB,EAAE,CAAA;QACzB,CAAC,CAAA;AACH,MAAA;AACA,MAAA,OAAO,UAAA;AACT,IAAA;AAdA,IAAA,OAAA,CAAA,sBAAA,GAAA,sBAAA;AAgBA,IAAA,IAAM,SAAA,uBAA+B,GAAA,CAAI,CAAC,UAAU,QAAA,EAAU,SAAA,EAAW,SAAA,EAAW,MAAM,CAAC,CAAA;AAC3F,IAAA,SAAS,aAAA,CAAc,OAAmB,WAAA,EAA+B;AACvE,MAAA,OAAO,WAAA,GACH,KAAA,CAAM,MAAA,CAAO,CAAC,MAAM,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,IAAM,WAAA,KAAgB,OAAA,IAAW,CAAA,KAAM,OAAQ,IAClF,EAAA;AACN,IAAA;AAEA,IAAA,SAAS,UAAA,CAAW,EAAA,EAAkB,KAAA,EAAmB,QAAA,EAAoB;AAC3E,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,IAAA,EAAI,GAAI,EAAA;AAC1B,MAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,UAAA,EAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,IAAI,CAAA,CAAE,CAAA;AACtD,MAAA,MAAM,UAAU,GAAA,CAAI,GAAA,CAAI,SAAA,EAAA,IAAW,UAAA,CAAA,CAAA,CAAA,SAAA,CAAY,CAAA;AAC/C,MAAA,IAAI,IAAA,CAAK,gBAAgB,OAAA,EAAS;AAChC,QAAA,GAAA,CAAI,OAAG,SAAA,CAAA,KAAI,QAAQ,CAAA,8BAAA,EAAiC,IAAI,CAAA,KAAA,EAAQ,IAAI,CAAA,YAAA,CAAA,EAAgB,MAClF,IACG,MAAA,CAAO,IAAA,EAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,GAAA,CAAK,CAAA,CAC1B,MAAA,CAAO,QAAA,EAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,IAAI,CAAA,CAAE,CAAA,CAClC,GAAG,cAAA,CAAe,KAAA,EAAO,MAAM,IAAA,CAAK,aAAa,GAAG,MAAM,GAAA,CAAI,OAAO,OAAA,EAAS,IAAI,CAAC,CAAC,CAAA;AAE3F,MAAA;AACA,MAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAO,CAAA,cAAA,CAAgB,CAAA;AAClC,MAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,QAAA,IAAI,SAAA,CAAU,IAAI,CAAC,CAAA,IAAM,MAAM,OAAA,IAAW,IAAA,CAAK,gBAAgB,OAAA,EAAU;AACvE,UAAA,kBAAA,CAAmB,CAAC,CAAA;AACtB,QAAA;AACF,MAAA;AACA,MAAA,GAAA,CAAI,IAAA,EAAI;AACR,MAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,MAAA,GAAA,CAAI,KAAA,EAAK;AAET,MAAA,GAAA,CAAI,OAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAO,kBAAkB,MAAK;AACvC,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,OAAO,CAAA;AACxB,QAAA,gBAAA,CAAiB,IAAI,OAAO,CAAA;MAC9B,CAAC,CAAA;AAED,MAAA,SAAS,mBAAmB,CAAA,EAAS;AACnC,QAAA,QAAQ,CAAA;UACN,KAAK,QAAA;AACH,YAAA,GAAA,CACG,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,gBAAA,EAAmB,QAAQ,CAAA,aAAA,CAAe,CAAA,CAC7D,MAAA,CAAO,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAS,IAAI,CAAA,CAAE,CAAA,CAC/B,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,SAAA,CAAW,CAAA,CAC1B,MAAA,CAAO,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAK,CAAA;AACxB,YAAA;UACF,KAAK,QAAA;AACH,YAAA,GAAA,CACG,WACC,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAQ,oBAAoB,IAAI,CAAA;AAC5B,kBAAA,EAAA,QAAQ,CAAA,gBAAA,EAAmB,IAAI,CAAA,IAAA,EAAO,IAAI,QAAQ,IAAI,CAAA,CAAA,CAAG,CAAA,CAElE,MAAA,CAAO,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAC9B,YAAA;UACF,KAAK,SAAA;AACH,YAAA,GAAA,CACG,WACC,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAQ,qBAAqB,IAAI,CAAA;AAC7B,kBAAA,EAAA,QAAQ,oBAAoB,IAAI,CAAA,IAAA,EAAO,IAAI,CAAA,KAAA,EAAQ,IAAI,CAAA,MAAA,EAAS,IAAI,CAAA,MAAA,CAAQ,CAAA,CAErF,OAAO,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAC9B,YAAA;UACF,KAAK,SAAA;AACH,YAAA,GAAA,CACG,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,gBAAA,EAAmB,IAAI,CAAA,UAAA,EAAa,IAAI,CAAA,SAAA,CAAW,CAAA,CAClE,MAAA,CAAO,OAAA,EAAS,KAAK,CAAA,CACrB,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,eAAA,EAAkB,IAAI,CAAA,MAAA,CAAQ,CAAA,CAC7C,MAAA,CAAO,OAAA,EAAS,IAAI,CAAA;AACvB,YAAA;UACF,KAAK,MAAA;AACH,YAAA,GAAA,CAAI,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,WAAA,EAAc,IAAI,CAAA,UAAA,EAAa,IAAI,CAAA,UAAA,CAAY,CAAA;AAClE,YAAA,GAAA,CAAI,MAAA,CAAO,SAAS,IAAI,CAAA;AACxB,YAAA;UAEF,KAAK,OAAA;AACH,YAAA,GAAA,CACG,WACC,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAQ,oBAAoB,QAAQ,CAAA;mBACjC,QAAQ,CAAA,kBAAA,EAAqB,IAAI,CAAA,SAAA,CAAW,CAAA,CAEpD,MAAA,CAAO,aAAS,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,IAAI,CAAA,CAAA,CAAG,CAAA;AACnC;AACF,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,iBAAiB,EAAC,GAAA,EAAK,UAAA,EAAY,kBAAA,IAAmC,IAAA,EAAU;AAEvF,MAAA,GAAA,CAAI,OAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,UAAU,kBAAkB,MACrC,GAAA,CAAI,MAAA,CAAA,IAAO,UAAA,CAAA,CAAA,CAAA,EAAI,UAAU,IAAI,kBAAkB,CAAA,CAAA,CAAA,EAAK,IAAI,CAAC,CAAA;AAE7D,IAAA;AAEA,IAAA,SAAgB,cACd,QAAA,EACA,IAAA,EACA,UAAA,EACA,OAAA,GAAU,SAAS,OAAA,EAAO;AAE1B,MAAA,MAAM,EAAA,GAAK,YAAY,QAAA,CAAS,OAAA,GAAU,UAAA,SAAA,CAAU,EAAA,GAAK,UAAA,SAAA,CAAU,GAAA;AACnE,MAAA,IAAI,IAAA;AACJ,MAAA,QAAQ,QAAA;QACN,KAAK,MAAA;AACH,UAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,IAAI,EAAE,CAAA,KAAA,CAAA;QACvB,KAAK,OAAA;AACH,UAAA,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,cAAA,EAAkB,IAAI,CAAA,CAAA,CAAA;AAC7B,UAAA;QACF,KAAK,QAAA;AACH,UAAA,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,WAAA,EAAc,IAAI,kCAAkC,IAAI,CAAA,CAAA,CAAA;AACvE,UAAA;QACF,KAAK,SAAA;AACH,UAAA,IAAA,GAAO,YAAQ,SAAA,CAAA,OAAM,IAAI,CAAA,gBAAA,EAAmB,IAAI,CAAA,CAAA,CAAG,CAAA;AACnD,UAAA;QACF,KAAK,QAAA;AACH,UAAA,IAAA,GAAO,OAAA,EAAO;AACd,UAAA;AACF,QAAA;AACE,UAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,IAAI,CAAA,CAAA,EAAI,EAAE,IAAI,QAAQ,CAAA,CAAA;AAC5C;AACA,MAAA,OAAO,YAAY,QAAA,CAAS,OAAA,GAAU,WAAO,SAAA,CAAA,KAAI,IAAI,CAAA;AAErD,MAAA,SAAS,OAAA,CAAQ,KAAA,GAAc,SAAA,CAAA,GAAA,EAAG;AAChC,QAAA,OAAA,IAAO,SAAA,CAAA,GAAA,EAAA,IAAI,SAAA,CAAA,YAAW,IAAI,CAAA,YAAA,CAAA,EAAgB,KAAA,EAAO,UAAA,GAAA,IAAa,SAAA,CAAA,CAAA,CAAA,CAAA,SAAA,EAAa,IAAI,CAAA,CAAA,CAAA,GAAM,UAAA,GAAG,CAAA;AAC1F,MAAA;AACF,IAAA;AA/BA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AAiCA,IAAA,SAAgB,cAAA,CACd,SAAA,EACA,IAAA,EACA,UAAA,EACA,OAAA,EAAkB;AAElB,MAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,QAAA,OAAO,cAAc,SAAA,CAAU,CAAC,CAAA,EAAG,IAAA,EAAM,YAAY,OAAO,CAAA;AAC9D,MAAA;AACA,MAAA,IAAI,IAAA;AACJ,MAAA,MAAM,KAAA,GAAA,IAAQ,MAAA,CAAA,MAAA,EAAO,SAAS,CAAA;AAC9B,MAAA,IAAI,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,MAAA,EAAQ;AAC/B,QAAA,MAAM,MAAA,GAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,IAAI,CAAA,YAAA,CAAA;AAC9B,QAAA,IAAA,GAAO,KAAA,CAAM,OAAO,MAAA,GAAA,IAAS,UAAA,CAAA,CAAA,CAAA,CAAA,EAAK,IAAI,OAAO,MAAM,CAAA,CAAA;AACnD,QAAA,OAAO,KAAA,CAAM,IAAA;AACb,QAAA,OAAO,KAAA,CAAM,KAAA;AACb,QAAA,OAAO,KAAA,CAAM,MAAA;MACf,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,SAAA,CAAA,GAAA;AACT,MAAA;AACA,MAAA,IAAI,KAAA,CAAM,MAAA;AAAQ,QAAA,OAAO,KAAA,CAAM,OAAA;AAC/B,MAAA,KAAA,MAAW,CAAA,IAAK,KAAA;AAAO,QAAA,IAAA,GAAA,IAAO,UAAA,GAAA,EAAI,IAAA,EAAM,cAAc,CAAA,EAAe,IAAA,EAAM,UAAA,EAAY,OAAO,CAAC,CAAA;AAC/F,MAAA,OAAO,IAAA;AACT,IAAA;AAvBA,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AA2BA,IAAA,IAAM,SAAA,GAAoC;AACxC,MAAA,OAAA,EAAS,CAAC,EAAC,MAAA,EAAM,KAAM,WAAW,MAAM,CAAA,CAAA;AACxC,MAAA,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAQ,WAAA,EAAW,KAC3B,OAAO,MAAA,IAAU,QAAA,GAAA,IAAW,SAAA,CAAA,YAAW,MAAM,CAAA,CAAA,CAAA,GAAA,IAAM,SAAA,CAAA,YAAW,WAAW,CAAA,CAAA;;AAG7E,IAAA,SAAgB,gBAAgB,EAAA,EAAgB;AAC9C,MAAA,MAAM,GAAA,GAAM,oBAAoB,EAAE,CAAA;AAClC,MAAA,IAAA,QAAA,CAAA,WAAA,EAAY,GAAA,EAAK,SAAS,CAAA;AAC5B,IAAA;AAHA,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;AAKA,IAAA,SAAS,oBAAoB,EAAA,EAAgB;AAC3C,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,MAAA,EAAM,GAAI,EAAA;AAC5B,MAAA,MAAM,iBAAa,MAAA,CAAA,cAAA,EAAe,EAAA,EAAI,QAAQ,MAAM,CAAA;AACpD,MAAA,OAAO;AACL,QAAA,GAAA;QACA,OAAA,EAAS,MAAA;AACT,QAAA,IAAA;AACA,QAAA,MAAA,EAAQ,MAAA,CAAO,IAAA;AACf,QAAA,UAAA;QACA,WAAA,EAAa,UAAA;QACb,YAAA,EAAc,MAAA;AACd,QAAA,MAAA,EAAQ,EAAA;AACR,QAAA;;AAEJ,IAAA;;;;;;;;;ACpOA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAEA,IAAA,SAAgB,cAAA,CAAe,IAAkB,EAAA,EAAW;AAC1D,MAAA,MAAM,EAAC,UAAA,EAAY,KAAA,EAAK,GAAI,EAAA,CAAG,MAAA;AAC/B,MAAA,IAAI,EAAA,KAAO,YAAY,UAAA,EAAY;AACjC,QAAA,KAAA,MAAW,OAAO,UAAA,EAAY;AAC5B,UAAA,aAAA,CAAc,EAAA,EAAI,GAAA,EAAK,UAAA,CAAW,GAAG,EAAE,OAAO,CAAA;AAChD,QAAA;AACF,MAAA,CAAA,MAAA,IAAW,EAAA,KAAO,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACjD,QAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,GAAA,EAAK,CAAA,KAAc,cAAc,EAAA,EAAI,CAAA,EAAG,GAAA,CAAI,OAAO,CAAC,CAAA;AACrE,MAAA;AACF,IAAA;AATA,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AAWA,IAAA,SAAS,aAAA,CAAc,EAAA,EAAkB,IAAA,EAAuB,YAAA,EAAqB;AACnF,MAAA,MAAM,EAAC,GAAA,EAAK,aAAA,EAAe,IAAA,EAAM,MAAI,GAAI,EAAA;AACzC,MAAA,IAAI,YAAA,KAAiB,MAAA;AAAW,QAAA;AAChC,MAAA,MAAM,SAAA,GAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,OAAG,SAAA,CAAA,WAAA,EAAY,IAAI,CAAC,CAAA,CAAA;AAC9C,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,EAAA,EAAI,CAAA,wBAAA,EAA2B,SAAS,CAAA,CAAE,CAAA;AAC1D,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,SAAA,GAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,SAAS,CAAA,cAAA,CAAA;AAC7B,MAAA,IAAI,IAAA,CAAK,gBAAgB,OAAA,EAAS;AAChC,QAAA,SAAA,GAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,SAAS,CAAA,IAAA,EAAO,SAAS,gBAAgB,SAAS,CAAA,OAAA,CAAA;AACpE,MAAA;AAGA,MAAA,GAAA,CAAI,EAAA,CAAG,SAAA,EAAA,IAAW,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,SAAS,CAAA,GAAA,EAAA,IAAM,SAAA,CAAA,SAAA,EAAU,YAAY,CAAC,CAAA,CAAE,CAAA;AAChE,IAAA;;;;;;;;;AC5BA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,SAAgB,sBAAA,CAAuB,KAAiB,IAAA,EAAY;AAClE,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,EAAA,EAAE,GAAI,GAAA;AACxB,MAAA,GAAA,CAAI,EAAA,CAAG,iBAAiB,GAAA,EAAK,IAAA,EAAM,MAAM,EAAA,CAAG,IAAA,CAAK,aAAa,CAAA,EAAG,MAAK;AACpE,QAAA,GAAA,CAAI,SAAA,CAAU,EAAC,eAAA,EAAA,IAAiB,UAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAE,EAAG,IAAI,CAAA;AACjD,QAAA,GAAA,CAAI,KAAA,EAAK;MACX,CAAC,CAAA;AACH,IAAA;AANA,IAAA,OAAA,CAAA,sBAAA,GAAA,sBAAA;AAQA,IAAA,SAAgB,gBAAA,CACd,EAAC,GAAA,EAAK,IAAA,EAAM,EAAA,EAAI,EAAC,IAAA,EAAI,EAAC,EACtB,UAAA,EACA,OAAA,EAAa;AAEb,MAAA,OAAA,IAAO,SAAA,CAAA,EAAA,EACL,GAAG,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAA,IACjB,SAAA,CAAA,GAAA,EAAI,gBAAA,CAAiB,GAAA,EAAK,MAAM,IAAA,EAAM,IAAA,CAAK,aAAa,CAAA,EAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAO,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,CAAC,CACpF,CAAA;AAEL,IAAA;AAVA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAYA,IAAA,SAAgB,iBAAA,CAAkB,KAAiB,OAAA,EAAa;AAC9D,MAAA,GAAA,CAAI,SAAA,CAAU,EAAC,eAAA,EAAiB,OAAA,IAAU,IAAI,CAAA;AAC9C,MAAA,GAAA,CAAI,KAAA,EAAK;AACX,IAAA;AAHA,IAAA,OAAA,CAAA,iBAAA,GAAA,iBAAA;AAKA,IAAA,SAAgB,YAAY,GAAA,EAAY;AACtC,MAAA,OAAO,GAAA,CAAI,WAAW,MAAA,EAAQ;;AAE5B,QAAA,GAAA,EAAK,OAAO,SAAA,CAAU,cAAA;AACtB,QAAA,IAAA,EAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,+BAAA;AACP,OAAA,CAAA;AACH,IAAA;AANA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAQA,IAAA,SAAgB,aAAA,CAAc,GAAA,EAAc,IAAA,EAAY,QAAA,EAAuB;AAC7E,MAAA,OAAA,IAAO,UAAA,CAAA,CAAA,CAAA,EAAI,WAAA,CAAY,GAAG,CAAC,CAAA,MAAA,EAAS,IAAI,CAAA,EAAA,EAAK,QAAQ,CAAA,CAAA,CAAA;AACvD,IAAA;AAFA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AAIA,IAAA,SAAgB,cAAA,CACd,GAAA,EACA,IAAA,EACA,QAAA,EACA,aAAA,EAAuB;AAEvB,MAAA,MAAM,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,OAAG,SAAA,CAAA,WAAA,EAAY,QAAQ,CAAC,CAAA,cAAA,CAAA;AAC7C,MAAA,OAAO,aAAA,GAAA,IAAgB,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,IAAA,EAAO,aAAA,CAAc,GAAA,EAAK,IAAA,EAAM,QAAQ,CAAC,CAAA,CAAA,GAAK,IAAA;AAC/E,IAAA;AARA,IAAA,OAAA,CAAA,cAAA,GAAA,cAAA;AAUA,IAAA,SAAgB,gBAAA,CACd,GAAA,EACA,IAAA,EACA,QAAA,EACA,aAAA,EAAuB;AAEvB,MAAA,MAAM,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,OAAG,SAAA,CAAA,WAAA,EAAY,QAAQ,CAAC,CAAA,cAAA,CAAA;AAC7C,MAAA,OAAO,aAAA,GAAA,IAAgB,SAAA,CAAA,EAAA,EAAG,UAAM,SAAA,CAAA,GAAA,EAAI,aAAA,CAAc,GAAA,EAAK,IAAA,EAAM,QAAQ,CAAC,CAAC,CAAA,GAAI,IAAA;AAC7E,IAAA;AARA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAUA,IAAA,SAAgB,oBAAoB,SAAA,EAAqB;AACvD,MAAA,OAAO,SAAA,GAAY,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,WAAW,CAAA,GAAI,EAAA;AAC/E,IAAA;AAFA,IAAA,OAAA,CAAA,mBAAA,GAAA,mBAAA;AAIA,IAAA,SAAgB,gBAAA,CAAiB,IAAe,SAAA,EAAoB;AAClE,MAAA,OAAO,mBAAA,CAAoB,SAAS,CAAA,CAAE,MAAA,CACpC,CAAC,CAAA,KAAM,CAAA,IAAC,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,SAAA,CAAU,CAAC,CAAc,CAAC,CAAA;AAE5D,IAAA;AAJA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAMA,IAAA,SAAgB,gBAAA,CACd,EAAC,UAAA,EAAY,IAAA,EAAM,IAAI,EAAC,GAAA,EAAK,YAAA,EAAc,UAAA,EAAY,WAAS,EAAG,EAAA,EAAE,EACrE,IAAA,EACA,SACA,UAAA,EAAoB;AAEpB,MAAA,MAAM,aAAA,GAAgB,UAAA,GAAA,IAAa,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,UAAU,CAAA,EAAA,EAAK,IAAI,CAAA,EAAA,EAAK,YAAY,CAAA,EAAG,UAAU,CAAA,CAAA,GAAK,IAAA;AAC7F,MAAA,MAAM,MAAA,GAAkC;QACtC,CAAC,OAAA,CAAA,OAAA,CAAE,YAAA,EAAA,IAAc,SAAA,CAAA,WAAU,OAAA,CAAA,OAAA,CAAE,YAAA,EAAc,SAAS,CAAC,CAAA;AACrD,QAAA,CAAC,OAAA,CAAA,OAAA,CAAE,UAAA,EAAY,EAAA,CAAG,UAAU,CAAA;AAC5B,QAAA,CAAC,OAAA,CAAA,OAAA,CAAE,kBAAA,EAAoB,EAAA,CAAG,kBAAkB,CAAA;AAC5C,QAAA,CAAC,OAAA,CAAA,OAAA,CAAE,QAAA,EAAU,OAAA,CAAA,QAAE,QAAQ;;AAEzB,MAAA,IAAI,GAAG,IAAA,CAAK,UAAA;AAAY,QAAA,MAAA,CAAO,IAAA,CAAK,CAAC,OAAA,CAAA,OAAA,CAAE,gBAAgB,OAAA,CAAA,OAAA,CAAE,cAAc,CAAC,CAAA;AACxE,MAAA,MAAM,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,aAAa,KAAK,GAAA,CAAI,MAAA,CAAO,GAAG,MAAM,CAAC,CAAA,CAAA;AACxD,MAAA,OAAO,YAAY,SAAA,CAAA,GAAA,GAAA,IAAM,SAAA,CAAA,KAAI,IAAI,CAAA,MAAA,EAAS,OAAO,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAA,GAAA,IAAM,UAAA,CAAA,CAAA,CAAA,EAAI,IAAI,IAAI,IAAI,CAAA,CAAA,CAAA;AAClF,IAAA;AAhBA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAkBA,IAAA,IAAM,SAAA,GAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA;AAElB,IAAA,SAAgB,UAAA,CAAW,EAAC,GAAA,EAAK,EAAA,EAAI,EAAC,IAAA,EAAI,IAAgB,OAAA,EAAe;AACvE,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,aAAA,GAAgB,GAAA,GAAM,EAAA;AACrC,MAAA,MAAM,EAAC,MAAA,EAAM,GAAI,IAAA,CAAK,IAAA;AACtB,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,OAAA,EAAS,CAAC,CAAA;AAE5B,MAAA,OAAO,GAAA,CAAI,WAAW,SAAA,EAAW;AAC/B,QAAA,GAAA,EAAK,GAAG,QAAA,EAAQ;QAChB,GAAA,EAAK,EAAA;AACL,QAAA,IAAA,EAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAA,CAAO,IAAA,KAAS,eAAe,SAAA,GAAA,IAAY,MAAA,CAAA,OAAA,EAAQ,KAAK,MAAM,CAAC,CAAA,CAAA,EAAI,OAAO,KAAK,CAAC,CAAA,CAAA;AAC3F,OAAA,CAAA;AACH,IAAA;AAVA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAYA,IAAA,SAAgB,cAAc,GAAA,EAAe;AAC3C,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,IAAE,GAAI,GAAA;AACjC,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,MAAA,IAAI,GAAG,SAAA,EAAW;AAChB,QAAA,MAAM,QAAA,GAAW,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AACtC,QAAA,aAAA,CAAc,MAAM,GAAA,CAAI,MAAA,CAAO,QAAA,EAAU,KAAK,CAAC,CAAA;AAC/C,QAAA,OAAO,QAAA;AACT,MAAA;AACA,MAAA,GAAA,CAAI,GAAA,CAAI,OAAO,IAAI,CAAA;AACnB,MAAA,aAAA,CAAc,MAAM,GAAA,CAAI,KAAA,EAAO,CAAA;AAC/B,MAAA,OAAO,KAAA;AAEP,MAAA,SAAS,cAAc,QAAA,EAAoB;AACzC,QAAA,MAAM,GAAA,GAAM,IAAI,KAAA,CAAM,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAS,CAAA;AAC9C,QAAA,GAAA,CAAI,QAAA,CAAS,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA,KAAK;AAC9B,UAAA,GAAA,CAAI,SAAA,CACF;AACE,YAAA,OAAA;YACA,QAAA,EAAU,CAAA;AACV,YAAA,YAAA,EAAc,OAAA,IAAA,CAAK;aAErB,KAAK,CAAA;AAEP,UAAA,GAAA,CAAI,OAAG,SAAA,CAAA,GAAA,EAAI,KAAK,GAAG,QAAQ,CAAA;QAC7B,CAAC,CAAA;AACH,MAAA;AACF,IAAA;AA1BA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AA4BA,IAAA,SAAgB,cAAc,GAAA,EAAe;AAC3C,MAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,OAAA,EAAS,IAAE,GAAI,GAAA;AAEnC,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA;AAAG,QAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AACtE,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,CAAC,GAAA,KAAA,IAAmB,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,GAAG,CAAC,CAAA;AAC9E,MAAA,IAAI,WAAA,IAAe,CAAC,EAAA,CAAG,IAAA,CAAK,WAAA;AAAa,QAAA;AAEzC,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,KAAK,CAAA;AACpC,MAAA,MAAM,QAAA,GAAW,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA;AAElC,MAAA,GAAA,CAAI,MAAM,MACR,MAAA,CAAO,OAAA,CAAQ,CAAC,MAAiB,CAAA,KAAa;AAC5C,QAAA,MAAM,MAAA,GAAS,IAAI,SAAA,CACjB;AACE,UAAA,OAAA;UACA,UAAA,EAAY,CAAA;UACZ,aAAA,EAAe;WAEjB,QAAQ,CAAA;AAEV,QAAA,GAAA,CAAI,MAAA,CAAO,WAAO,SAAA,CAAA,KAAI,KAAK,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAE,CAAA;AAC5C,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,mBAAA,CAAoB,MAAA,EAAQ,QAAQ,CAAA;AAGvD,QAAA,IAAI,CAAC,MAAA;AAAQ,UAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,GAAA,EAAI,KAAK,CAAC,CAAA;AAChC,MAAA,CAAC,CAAC,CAAA;AAGJ,MAAA,GAAA,CAAI,MAAA,CACF,KAAA,EACA,MAAM,GAAA,CAAI,KAAA,IACV,MAAM,GAAA,CAAI,KAAA,CAAM,IAAI,CAAC,CAAA;AAEzB,IAAA;AAjCA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;;;;;;;;;AC5HA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAEA,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AAIA,IAAA,SAAgB,gBAAA,CAAiB,KAAiB,GAAA,EAA2B;AAC3E,MAAA,MAAM,EAAC,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,YAAA,EAAc,IAAE,GAAI,GAAA;AACjD,MAAA,MAAM,WAAA,GAAc,IAAI,KAAA,CAAM,IAAA,CAAK,GAAG,IAAA,EAAM,MAAA,EAAQ,cAAc,EAAE,CAAA;AACpE,MAAA,MAAM,SAAA,GAAY,UAAA,CAAW,GAAA,EAAK,OAAA,EAAS,WAAW,CAAA;AACtD,MAAA,IAAI,EAAA,CAAG,KAAK,cAAA,KAAmB,KAAA;AAAO,QAAA,EAAA,CAAG,IAAA,CAAK,cAAA,CAAe,WAAA,EAAa,IAAI,CAAA;AAE9E,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,MAAA,GAAA,CAAI,SAAA,CACF;QACE,MAAA,EAAQ,WAAA;AACR,QAAA,UAAA,EAAY,SAAA,CAAA,GAAA;AACZ,QAAA,aAAA,EAAe,CAAA,EAAG,EAAA,CAAG,aAAa,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA;QAC7C,YAAA,EAAc,SAAA;QACd,aAAA,EAAe;SAEjB,KAAK,CAAA;AAEP,MAAA,GAAA,CAAI,KAAK,KAAA,EAAO,MAAM,GAAA,CAAI,KAAA,CAAM,IAAI,CAAC,CAAA;AACvC,IAAA;AAlBA,IAAA,OAAA,CAAA,gBAAA,GAAA,gBAAA;AAoBA,IAAA,SAAgB,eAAA,CAAgB,KAAiB,GAAA,EAA0B;;AACzE,MAAA,MAAM,EAAC,GAAA,EAAK,OAAA,EAAS,QAAQ,YAAA,EAAc,KAAA,EAAO,IAAE,GAAI,GAAA;AACxD,MAAA,iBAAA,CAAkB,IAAI,GAAG,CAAA;AACzB,MAAA,MAAM,QAAA,GACJ,CAAC,KAAA,IAAS,GAAA,CAAI,UAAU,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,MAAA,EAAQ,YAAA,EAAc,EAAE,IAAI,GAAA,CAAI,QAAA;AACpF,MAAA,MAAM,WAAA,GAAc,UAAA,CAAW,GAAA,EAAK,OAAA,EAAS,QAAQ,CAAA;AACrD,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AAC7B,MAAA,GAAA,CAAI,UAAA,CAAW,OAAO,eAAe,CAAA;AACrC,MAAA,GAAA,CAAI,EAAA,CAAA,CAAG,KAAA,GAAA,CAAI,KAAA,MAAK,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,KAAK,CAAA;AAEzB,MAAA,SAAS,eAAA,GAAe;AACtB,QAAA,IAAI,GAAA,CAAI,WAAW,KAAA,EAAO;AACxB,UAAA,WAAA,EAAW;AACX,UAAA,IAAI,GAAA,CAAI,SAAA;AAAW,YAAA,UAAA,CAAW,GAAG,CAAA;AACjC,UAAA,UAAA,CAAW,MAAM,GAAA,CAAI,KAAA,EAAO,CAAA;QAC9B,CAAA,MAAO;AACL,UAAA,MAAM,QAAA,GAAW,GAAA,CAAI,KAAA,GAAQ,aAAA,KAAkB,YAAA,EAAY;AAC3D,UAAA,IAAI,GAAA,CAAI,SAAA;AAAW,YAAA,UAAA,CAAW,GAAG,CAAA;AACjC,UAAA,UAAA,CAAW,MAAM,OAAA,CAAQ,GAAA,EAAK,QAAQ,CAAC,CAAA;AACzC,QAAA;AACF,MAAA;AAEA,MAAA,SAAS,aAAA,GAAa;AACpB,QAAA,MAAM,QAAA,GAAW,GAAA,CAAI,GAAA,CAAI,UAAA,EAAY,IAAI,CAAA;AACzC,QAAA,GAAA,CAAI,IACF,MAAM,WAAA,CAAA,IAAY,SAAA,CAAA,UAAS,CAAA,EAC3B,CAAC,CAAA,KACC,GAAA,CAAI,OAAO,KAAA,EAAO,KAAK,EAAE,EAAA,CAAA,IACvB,UAAA,CAAA,CAAA,CAAA,EAAI,CAAC,CAAA,YAAA,EAAe,EAAA,CAAG,eAAuB,CAAA,CAAA,EAC9C,MAAM,GAAA,CAAI,MAAA,CAAO,cAAU,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,CAAC,SAAS,CAAA,EACzC,MAAM,IAAI,KAAA,CAAM,CAAC,CAAC,CACnB,CAAA;AAEL,QAAA,OAAO,QAAA;AACT,MAAA;AAEA,MAAA,SAAS,YAAA,GAAY;AACnB,QAAA,MAAM,YAAA,GAAA,IAAe,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,WAAW,CAAA,OAAA,CAAA;AACpC,QAAA,GAAA,CAAI,MAAA,CAAO,cAAc,IAAI,CAAA;AAC7B,QAAA,WAAA,CAAY,UAAA,GAAG,CAAA;AACf,QAAA,OAAO,YAAA;AACT,MAAA;AAEA,MAAA,SAAS,WAAA,CAAY,SAAe,GAAA,CAAI,KAAA,GAAA,IAAQ,SAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,GAAY,UAAA,GAAA,EAAG;AAC7D,QAAA,MAAM,OAAA,GAAU,GAAG,IAAA,CAAK,WAAA,GAAc,QAAA,OAAA,CAAE,IAAA,GAAO,QAAA,OAAA,CAAE,IAAA;AACjD,QAAA,MAAM,aAAa,EAAG,SAAA,IAAa,OAAO,CAAC,KAAA,IAAU,IAAI,MAAA,KAAW,KAAA,CAAA;AACpE,QAAA,GAAA,CAAI,OACF,KAAA,EAAA,IACA,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAM,CAAA,EAAA,IAAG,MAAA,CAAA,gBAAA,EAAiB,KAAK,WAAA,EAAa,OAAA,EAAS,UAAU,CAAC,CAAA,CAAA,EACpE,IAAI,SAAS,CAAA;AAEjB,MAAA;AAEA,MAAA,SAAS,WAAW,MAAA,EAAkB;;AACpC,QAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,GAAA,EAAA,CAAIC,GAAAA,GAAA,GAAA,CAAI,KAAA,MAAK,IAAA,IAAAA,GAAAA,KAAA,MAAA,GAAAA,GAAAA,GAAI,KAAK,GAAG,MAAM,CAAA;AACxC,MAAA;AACF,IAAA;AAxDA,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;AA0DA,IAAA,SAAS,WAAW,GAAA,EAAe;AACjC,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,EAAA,EAAE,GAAI,GAAA;AACxB,MAAA,GAAA,CAAI,GAAG,EAAA,CAAG,UAAA,EAAY,MAAM,GAAA,CAAI,OAAO,IAAA,EAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,UAAU,CAAA,CAAA,EAAI,EAAA,CAAG,kBAAkB,GAAG,CAAC,CAAA;AAC7F,IAAA;AAEA,IAAA,SAAS,OAAA,CAAQ,KAAiB,IAAA,EAAU;AAC1C,MAAA,MAAM,EAAC,KAAG,GAAI,GAAA;AACd,MAAA,GAAA,CAAI,OACF,SAAA,CAAA,CAAA,CAAA,CAAA,cAAA,EAAkB,IAAI,KACtB,MAAK;AACH,QAAA,GAAA,CACG,MAAA,CAAO,OAAA,CAAA,OAAA,CAAE,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,YAAA,EAAe,IAAI,MAAM,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,CAAG,CAAA,CACnF,MAAA,CAAO,OAAA,CAAA,OAAA,CAAE,MAAA,EAAA,IAAQ,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,OAAA,CAAS,CAAA;AAC1C,QAAA,IAAA,QAAA,CAAA,YAAA,EAAa,GAAG,CAAA;MAClB,CAAA,EACA,MAAM,GAAA,CAAI,KAAA,EAAO,CAAA;AAErB,IAAA;AAEA,IAAA,SAAS,iBAAA,CAAkB,EAAC,SAAA,EAAS,EAAiB,GAAA,EAA0B;AAC9E,MAAA,IAAI,GAAA,CAAI,KAAA,IAAS,CAAC,SAAA,CAAU,MAAA;AAAQ,QAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AACpF,IAAA;AAEA,IAAA,SAAS,UAAA,CAAW,GAAA,EAAc,OAAA,EAAiB,MAAA,EAAiC;AAClF,MAAA,IAAI,MAAA,KAAW,MAAA;AAAW,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,SAAA,EAAY,OAAO,CAAA,mBAAA,CAAqB,CAAA;AAClF,MAAA,OAAO,IAAI,UAAA,CACT,SAAA,EACA,OAAO,MAAA,IAAU,UAAA,GAAa,EAAC,GAAA,EAAK,MAAA,KAAU,EAAC,GAAA,EAAK,QAAQ,IAAA,EAAA,IAAM,UAAA,SAAA,EAAU,MAAM,GAAE,CAAA;AAExF,IAAA;AAEA,IAAA,SAAgB,eAAA,CACd,MAAA,EACA,UAAA,EACA,cAAA,GAAiB,KAAA,EAAK;AAGtB,MAAA,OACE,CAAC,UAAA,CAAW,MAAA,IACZ,UAAA,CAAW,IAAA,CAAK,CAAC,EAAA,KACf,EAAA,KAAO,OAAA,GACH,KAAA,CAAM,OAAA,CAAQ,MAAM,IACpB,EAAA,KAAO,QAAA,GACP,MAAA,IAAU,OAAO,MAAA,IAAU,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,GAC5D,OAAO,MAAA,IAAU,EAAA,IAAO,cAAA,IAAkB,OAAO,UAAU,WAAY,CAAA;AAGjF,IAAA;AAhBA,IAAA,OAAA,CAAA,eAAA,GAAA,eAAA;AAkBA,IAAA,SAAgB,oBAAA,CACd,EAAC,MAAA,EAAQ,IAAA,EAAM,MAAM,aAAA,EAAa,EAClC,KACA,OAAA,EAAe;AAGf,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,GAAI,CAAC,GAAA,CAAI,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAA,GAAI,GAAA,CAAI,YAAY,OAAA,EAAS;AACzF,QAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAC5C,MAAA;AAEA,MAAA,MAAM,OAAO,GAAA,CAAI,YAAA;AACjB,MAAA,IAAI,SAAI,IAAA,IAAJ,IAAA,KAAI,MAAA,GAAA,MAAA,GAAJ,KAAM,IAAA,CAAK,CAAC,GAAA,KAAQ,CAAC,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,MAAA,EAAQ,GAAG,CAAC,CAAA,EAAG;AAC3E,QAAA,MAAM,IAAI,MAAM,CAAA,wCAAA,EAA2C,OAAO,KAAK,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,CAAE,CAAA;AACzF,MAAA;AAEA,MAAA,IAAI,IAAI,cAAA,EAAgB;AACtB,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,cAAA,CAAe,MAAA,CAAO,OAAO,CAAC,CAAA;AAChD,QAAA,IAAI,CAAC,KAAA,EAAO;AACV,UAAA,MAAM,GAAA,GACJ,CAAA,SAAA,EAAY,OAAO,CAAA,4BAAA,EAA+B,aAAa,QAC/D,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI,cAAA,CAAe,MAAM,CAAA;AAC3C,UAAA,IAAI,KAAK,cAAA,KAAmB,KAAA;AAAO,YAAA,IAAA,CAAK,MAAA,CAAO,MAAM,GAAG,CAAA;;AACnD,YAAA,MAAM,IAAI,MAAM,GAAG,CAAA;AAC1B,QAAA;AACF,MAAA;AACF,IAAA;AAzBA,IAAA,OAAA,CAAA,oBAAA,GAAA,oBAAA;;;;;;;;;AC/IA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AA6CA,IAAA,SAAgB,YAAA,CACd,IACA,EAAC,OAAA,EAAS,YAAY,MAAA,EAAQ,UAAA,EAAY,aAAA,EAAe,YAAA,EAAY,EAAgB;AAErF,MAAA,IAAI,OAAA,KAAY,MAAA,IAAa,MAAA,KAAW,MAAA,EAAW;AACjD,QAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AACxE,MAAA;AAEA,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,MAAM,GAAA,GAAM,EAAA,CAAG,MAAA,CAAO,OAAO,CAAA;AAC7B,QAAA,OAAO,eAAe,MAAA,GAClB;UACE,MAAA,EAAQ,GAAA;UACR,UAAA,EAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAA,CAAG,UAAU,OAAG,SAAA,CAAA,WAAA,EAAY,OAAO,CAAC,CAAA,CAAA;AACpD,UAAA,aAAA,EAAe,CAAA,EAAG,EAAA,CAAG,aAAa,CAAA,CAAA,EAAI,OAAO,CAAA;AAE/C,SAAA,GAAA;AACE,UAAA,MAAA,EAAQ,IAAI,UAAU,CAAA;AACtB,UAAA,UAAA,EAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,EAAA,CAAG,UAAU,OAAG,SAAA,CAAA,WAAA,EAAY,OAAO,CAAC,CAAA,EAAA,IAAG,SAAA,CAAA,WAAA,EAAY,UAAU,CAAC,CAAA,CAAA;UAC9E,aAAA,EAAe,CAAA,EAAG,EAAA,CAAG,aAAa,CAAA,CAAA,EAAI,OAAO,QAAI,MAAA,CAAA,cAAA,EAAe,UAAU,CAAC,CAAA;;AAEnF,MAAA;AAEA,MAAA,IAAI,WAAW,MAAA,EAAW;AACxB,QAAA,IAAI,UAAA,KAAe,MAAA,IAAa,aAAA,KAAkB,MAAA,IAAa,iBAAiB,MAAA,EAAW;AACzF,UAAA,MAAM,IAAI,MAAM,6EAA6E,CAAA;AAC/F,QAAA;AACA,QAAA,OAAO;AACL,UAAA,MAAA;AACA,UAAA,UAAA;AACA,UAAA,YAAA;AACA,UAAA;;AAEJ,MAAA;AAEA,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAC/D,IAAA;AApCA,IAAA,OAAA,CAAA,YAAA,GAAA,YAAA;AAsCA,IAAA,SAAgB,mBAAA,CACd,SAAA,EACA,EAAA,EACA,EAAC,QAAA,EAAU,cAAc,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,YAAA,EAAY,EAAgB;AAE9E,MAAA,IAAI,IAAA,KAAS,MAAA,IAAa,QAAA,KAAa,MAAA,EAAW;AAChD,QAAA,MAAM,IAAI,MAAM,qDAAqD,CAAA;AACvE,MAAA;AAEA,MAAA,MAAM,EAAC,KAAG,GAAI,EAAA;AAEd,MAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,QAAA,MAAM,EAAC,SAAA,EAAW,WAAA,EAAa,IAAA,EAAI,GAAI,EAAA;AACvC,QAAA,MAAM,WAAW,GAAA,CAAI,GAAA,CAAI,MAAA,EAAA,IAAQ,UAAA,CAAA,CAAA,CAAA,EAAI,EAAA,CAAG,IAAI,CAAA,EAAA,IAAG,SAAA,CAAA,WAAA,EAAY,QAAQ,CAAC,IAAI,IAAI,CAAA;AAC5E,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AACzB,QAAA,SAAA,CAAU,SAAA,GAAA,IAAY,SAAA,CAAA,GAAA,CAAA,CAAA,EAAM,SAAS,CAAA,EAAA,IAAG,MAAA,CAAA,YAAA,EAAa,QAAA,EAAU,MAAA,EAAQ,IAAA,CAAK,gBAAgB,CAAC,CAAA,CAAA;AAC7F,QAAA,SAAA,CAAU,kBAAA,GAAA,IAAqB,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAC3C,QAAA,SAAA,CAAU,WAAA,GAAc,CAAC,GAAG,WAAA,EAAa,UAAU,kBAAkB,CAAA;AACvE,MAAA;AAEA,MAAA,IAAI,SAAS,MAAA,EAAW;AACtB,QAAA,MAAM,QAAA,GAAW,gBAAgB,SAAA,CAAA,IAAA,GAAO,OAAO,GAAA,CAAI,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,IAAI,CAAA;AACzE,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AACzB,QAAA,IAAI,YAAA,KAAiB,MAAA;AAAW,UAAA,SAAA,CAAU,YAAA,GAAe,YAAA;AAE3D,MAAA;AAEA,MAAA,IAAI,SAAA;AAAW,QAAA,SAAA,CAAU,SAAA,GAAY,SAAA;AAErC,MAAA,SAAS,iBAAiB,SAAA,EAAe;AACvC,QAAA,SAAA,CAAU,IAAA,GAAO,SAAA;AACjB,QAAA,SAAA,CAAU,SAAA,GAAY,GAAG,SAAA,GAAY,CAAA;AACrC,QAAA,SAAA,CAAU,YAAY,EAAA;AACtB,QAAA,EAAA,CAAG,iBAAA,uBAAwB,GAAA,EAAG;AAC9B,QAAA,SAAA,CAAU,aAAa,EAAA,CAAG,IAAA;AAC1B,QAAA,SAAA,CAAU,SAAA,GAAY,CAAC,GAAG,EAAA,CAAG,WAAW,SAAS,CAAA;AACnD,MAAA;AACF,IAAA;AArCA,IAAA,OAAA,CAAA,mBAAA,GAAA,mBAAA;AAuCA,IAAA,SAAgB,mBAAA,CACd,WACA,EAAC,gBAAA,EAAkB,aAAa,aAAA,EAAe,YAAA,EAAc,WAAS,EAAgB;AAEtF,MAAA,IAAI,aAAA,KAAkB,MAAA;AAAW,QAAA,SAAA,CAAU,aAAA,GAAgB,aAAA;AAC3D,MAAA,IAAI,YAAA,KAAiB,MAAA;AAAW,QAAA,SAAA,CAAU,YAAA,GAAe,YAAA;AACzD,MAAA,IAAI,SAAA,KAAc,MAAA;AAAW,QAAA,SAAA,CAAU,SAAA,GAAY,SAAA;AACnD,MAAA,SAAA,CAAU,gBAAA,GAAmB,gBAAA;AAC7B,MAAA,SAAA,CAAU,WAAA,GAAc,WAAA;AAC1B,IAAA;AATA,IAAA,OAAA,CAAA,mBAAA,GAAA,mBAAA;;;;;AC7HA,IAAA,uBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAMA,IAAA,MAAA,CAAO,OAAA,GAAU,SAAS,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG;AACpC,MAAA,IAAI,CAAA,KAAM,GAAG,OAAO,IAAA;AAEpB,MAAA,IAAI,KAAK,CAAA,IAAK,OAAO,KAAK,QAAA,IAAY,OAAO,KAAK,QAAA,EAAU;AAC1D,QAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,CAAA,CAAE,WAAA,EAAa,OAAO,KAAA;AAE5C,QAAA,IAAI,QAAQ,CAAA,EAAG,IAAA;AACf,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACpB,UAAA,MAAA,GAAS,CAAA,CAAE,MAAA;AACX,UAAA,IAAI,MAAA,IAAU,CAAA,CAAE,MAAA,EAAQ,OAAO,KAAA;AAC/B,UAAA,KAAK,CAAA,GAAI,QAAQ,CAAA,EAAA,KAAQ,CAAA;AACvB,YAAA,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG,OAAO,KAAA;AACjC,UAAA,OAAO,IAAA;AAAA,QACT;AAIA,QAAA,IAAI,CAAA,CAAE,WAAA,KAAgB,MAAA,EAAQ,OAAO,CAAA,CAAE,WAAW,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,KAAA,KAAU,CAAA,CAAE,KAAA;AAC5E,QAAA,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,CAAO,SAAA,CAAU,OAAA,SAAgB,CAAA,CAAE,OAAA,EAAQ,KAAM,CAAA,CAAE,OAAA,EAAQ;AAC7E,QAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,CAAO,SAAA,CAAU,QAAA,SAAiB,CAAA,CAAE,QAAA,EAAS,KAAM,CAAA,CAAE,QAAA,EAAS;AAEjF,QAAA,IAAA,GAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACpB,QAAA,MAAA,GAAS,IAAA,CAAK,MAAA;AACd,QAAA,IAAI,WAAW,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,CAAE,QAAQ,OAAO,KAAA;AAE7C,QAAA,KAAK,CAAA,GAAI,QAAQ,CAAA,EAAA,KAAQ,CAAA;AACvB,UAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,GAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAO,KAAA;AAEhE,QAAA,KAAK,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,KAAQ,CAAA,IAAI;AAC3B,UAAA,IAAI,GAAA,GAAM,KAAK,CAAC,CAAA;AAEhB,UAAA,IAAI,CAAC,MAAM,CAAA,CAAE,GAAG,GAAG,CAAA,CAAE,GAAG,CAAC,CAAA,EAAG,OAAO,KAAA;AAAA,QACrC;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,OAAO,CAAA,KAAI,KAAK,CAAA,KAAI,CAAA;AAAA,IACtB,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7CA,IAAA,4BAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gGAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAI,WAAW,MAAA,CAAO,OAAA,GAAU,SAAU,MAAA,EAAQ,MAAM,EAAA,EAAI;AAE1D,MAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,QAAA,EAAA,GAAK,IAAA;AACL,QAAA,IAAA,GAAO,EAAC;AAAA,MACV;AAEA,MAAA,EAAA,GAAK,KAAK,EAAA,IAAM,EAAA;AAChB,MAAA,IAAI,MAAO,OAAO,EAAA,IAAM,aAAc,EAAA,GAAK,EAAA,CAAG,OAAO,WAAW;AAAA,MAAC,CAAA;AACjE,MAAA,IAAI,IAAA,GAAO,EAAA,CAAG,IAAA,IAAQ,WAAW;AAAA,MAAC,CAAA;AAElC,MAAA,SAAA,CAAU,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,MAAA,EAAQ,IAAI,MAAM,CAAA;AAAA,IAC/C,CAAA;AAGA,IAAA,QAAA,CAAS,QAAA,GAAW;AAAA,MAClB,eAAA,EAAiB,IAAA;AAAA,MACjB,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,IAAA;AAAA,MACV,oBAAA,EAAsB,IAAA;AAAA,MACtB,aAAA,EAAe,IAAA;AAAA,MACf,GAAA,EAAK,IAAA;AAAA,MACL,EAAA,EAAI,IAAA;AAAA,MACJ,IAAA,EAAM,IAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAEA,IAAA,QAAA,CAAS,aAAA,GAAgB;AAAA,MACvB,KAAA,EAAO,IAAA;AAAA,MACP,KAAA,EAAO,IAAA;AAAA,MACP,KAAA,EAAO,IAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACT;AAEA,IAAA,QAAA,CAAS,aAAA,GAAgB;AAAA,MACvB,KAAA,EAAO,IAAA;AAAA,MACP,WAAA,EAAa,IAAA;AAAA,MACb,UAAA,EAAY,IAAA;AAAA,MACZ,iBAAA,EAAmB,IAAA;AAAA,MACnB,YAAA,EAAc;AAAA,KAChB;AAEA,IAAA,QAAA,CAAS,YAAA,GAAe;AAAA,MACtB,OAAA,EAAS,IAAA;AAAA,MACT,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,IAAA;AAAA,MACV,OAAA,EAAS,IAAA;AAAA,MACT,OAAA,EAAS,IAAA;AAAA,MACT,gBAAA,EAAkB,IAAA;AAAA,MAClB,gBAAA,EAAkB,IAAA;AAAA,MAClB,UAAA,EAAY,IAAA;AAAA,MACZ,SAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,IAAA;AAAA,MACX,OAAA,EAAS,IAAA;AAAA,MACT,MAAA,EAAQ,IAAA;AAAA,MACR,QAAA,EAAU,IAAA;AAAA,MACV,QAAA,EAAU,IAAA;AAAA,MACV,WAAA,EAAa,IAAA;AAAA,MACb,aAAA,EAAe,IAAA;AAAA,MACf,aAAA,EAAe;AAAA,KACjB;AAGA,IAAA,SAAS,SAAA,CAAU,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,MAAA,EAAQ,SAAS,UAAA,EAAY,aAAA,EAAe,aAAA,EAAe,YAAA,EAAc,QAAA,EAAU;AACrH,MAAA,IAAI,MAAA,IAAU,OAAO,MAAA,IAAU,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACjE,QAAA,GAAA,CAAI,QAAQ,OAAA,EAAS,UAAA,EAAY,aAAA,EAAe,aAAA,EAAe,cAAc,QAAQ,CAAA;AACrF,QAAA,KAAA,IAAS,OAAO,MAAA,EAAQ;AACtB,UAAA,IAAI,GAAA,GAAM,OAAO,GAAG,CAAA;AACpB,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,YAAA,IAAI,GAAA,IAAO,SAAS,aAAA,EAAe;AACjC,cAAA,KAAA,IAAS,CAAA,GAAE,CAAA,EAAG,CAAA,GAAE,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAA;AAC1B,gBAAA,SAAA,CAAU,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,CAAI,CAAC,CAAA,EAAG,OAAA,GAAU,GAAA,GAAM,GAAA,GAAM,MAAM,CAAA,EAAG,UAAA,EAAY,OAAA,EAAS,GAAA,EAAK,QAAQ,CAAC,CAAA;AAAA,YACzG;AAAA,UACF,CAAA,MAAA,IAAW,GAAA,IAAO,QAAA,CAAS,aAAA,EAAe;AACxC,YAAA,IAAI,GAAA,IAAO,OAAO,GAAA,IAAO,QAAA,EAAU;AACjC,cAAA,KAAA,IAAS,IAAA,IAAQ,GAAA;AACf,gBAAA,SAAA,CAAU,MAAM,GAAA,EAAK,IAAA,EAAM,GAAA,CAAI,IAAI,GAAG,OAAA,GAAU,GAAA,GAAM,GAAA,GAAM,GAAA,GAAM,cAAc,IAAI,CAAA,EAAG,YAAY,OAAA,EAAS,GAAA,EAAK,QAAQ,IAAI,CAAA;AAAA,YACjI;AAAA,UACF,CAAA,MAAA,IAAW,OAAO,QAAA,CAAS,QAAA,IAAa,KAAK,OAAA,IAAW,EAAE,GAAA,IAAO,QAAA,CAAS,YAAA,CAAA,EAAgB;AACxF,YAAA,SAAA,CAAU,IAAA,EAAM,GAAA,EAAK,IAAA,EAAM,GAAA,EAAK,OAAA,GAAU,MAAM,GAAA,EAAK,UAAA,EAAY,OAAA,EAAS,GAAA,EAAK,MAAM,CAAA;AAAA,UACvF;AAAA,QACF;AACA,QAAA,IAAA,CAAK,QAAQ,OAAA,EAAS,UAAA,EAAY,aAAA,EAAe,aAAA,EAAe,cAAc,QAAQ,CAAA;AAAA,MACxF;AAAA,IACF;AAGA,IAAA,SAAS,cAAc,GAAA,EAAK;AAC1B,MAAA,OAAO,IAAI,OAAA,CAAQ,IAAA,EAAM,IAAI,CAAA,CAAE,OAAA,CAAQ,OAAO,IAAI,CAAA;AAAA,IACpD;AAAA,EAAA;AAAA,CAAA,CAAA;;;;;;;ACzFA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,KAAA,GAAA,uBAAA,EAAA;AACA,IAAA,IAAA,QAAA,GAAA,4BAAA,EAAA;AAMA,IAAA,IAAM,cAAA,uBAAqB,GAAA,CAAI;AAC7B,MAAA,MAAA;AACA,MAAA,QAAA;AACA,MAAA,SAAA;AACA,MAAA,WAAA;AACA,MAAA,WAAA;AACA,MAAA,eAAA;AACA,MAAA,eAAA;AACA,MAAA,UAAA;AACA,MAAA,UAAA;AACA,MAAA,SAAA;AACA,MAAA,SAAA;AACA,MAAA,aAAA;AACA,MAAA,YAAA;AACA,MAAA,UAAA;AACA,MAAA,MAAA;AACA,MAAA;AACD,KAAA,CAAA;AAED,IAAA,SAAgB,SAAA,CAAU,MAAA,EAAmB,KAAA,GAA0B,IAAA,EAAI;AACzE,MAAA,IAAI,OAAO,MAAA,IAAU,SAAA;AAAW,QAAA,OAAO,IAAA;AACvC,MAAA,IAAI,KAAA,KAAU,IAAA;AAAM,QAAA,OAAO,CAAC,OAAO,MAAM,CAAA;AACzC,MAAA,IAAI,CAAC,KAAA;AAAO,QAAA,OAAO,KAAA;AACnB,MAAA,OAAO,SAAA,CAAU,MAAM,CAAA,IAAK,KAAA;AAC9B,IAAA;AALA,IAAA,OAAA,CAAA,SAAA,GAAA,SAAA;AAOA,IAAA,IAAM,YAAA,uBAAmB,GAAA,CAAI;AAC3B,MAAA,MAAA;AACA,MAAA,eAAA;AACA,MAAA,kBAAA;AACA,MAAA,aAAA;AACA,MAAA;AACD,KAAA,CAAA;AAED,IAAA,SAAS,OAAO,MAAA,EAAuB;AACrC,MAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACxB,QAAA,IAAI,YAAA,CAAa,IAAI,GAAG,CAAA;AAAG,UAAA,OAAO,IAAA;AAClC,QAAA,MAAM,GAAA,GAAM,OAAO,GAAG,CAAA;AACtB,QAAA,IAAI,MAAM,OAAA,CAAQ,GAAG,CAAA,IAAK,GAAA,CAAI,KAAK,MAAM,CAAA;AAAG,UAAA,OAAO,IAAA;AACnD,QAAA,IAAI,OAAO,GAAA,IAAO,QAAA,IAAY,MAAA,CAAO,GAAG,CAAA;AAAG,UAAA,OAAO,IAAA;AACpD,MAAA;AACA,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,SAAS,UAAU,MAAA,EAAuB;AACxC,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACxB,QAAA,IAAI,GAAA,KAAQ,MAAA;AAAQ,UAAA,OAAO,QAAA;AAC3B,QAAA,KAAA,EAAA;AACA,QAAA,IAAI,cAAA,CAAe,IAAI,GAAG,CAAA;AAAG,UAAA;AAC7B,QAAA,IAAI,OAAO,MAAA,CAAO,GAAG,CAAA,IAAK,QAAA,EAAU;AAClC,UAAA,IAAA,MAAA,CAAA,QAAA,EAAS,MAAA,CAAO,GAAG,CAAA,EAAG,CAAC,GAAA,KAAS,KAAA,IAAS,SAAA,CAAU,GAAG,CAAE,CAAA;AAC1D,QAAA;AACA,QAAA,IAAI,KAAA,KAAU,QAAA;AAAU,UAAA,OAAO,QAAA;AACjC,MAAA;AACA,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,SAAgB,WAAA,CAAY,QAAA,EAAuB,EAAA,GAAK,EAAA,EAAI,SAAA,EAAmB;AAC7E,MAAA,IAAI,SAAA,KAAc,KAAA;AAAO,QAAA,EAAA,GAAK,YAAY,EAAE,CAAA;AAC5C,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,KAAA,CAAM,EAAE,CAAA;AAC3B,MAAA,OAAO,YAAA,CAAa,UAAU,CAAC,CAAA;AACjC,IAAA;AAJA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAMA,IAAA,SAAgB,YAAA,CAAa,UAAuB,CAAA,EAAe;AACjE,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,SAAA,CAAU,CAAC,CAAA;AACvC,MAAA,OAAO,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,GAAI,GAAA;AACpC,IAAA;AAHA,IAAA,OAAA,CAAA,YAAA,GAAA,YAAA;AAKA,IAAA,IAAM,mBAAA,GAAsB,OAAA;AAC5B,IAAA,SAAgB,YAAY,EAAA,EAAsB;AAChD,MAAA,OAAO,EAAA,GAAK,EAAA,CAAG,OAAA,CAAQ,mBAAA,EAAqB,EAAE,CAAA,GAAI,EAAA;AACpD,IAAA;AAFA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAIA,IAAA,SAAgB,UAAA,CAAW,QAAA,EAAuB,MAAA,EAAgB,EAAA,EAAU;AAC1E,MAAA,EAAA,GAAK,YAAY,EAAE,CAAA;AACnB,MAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AACpC,IAAA;AAHA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAKA,IAAA,IAAM,MAAA,GAAS,uBAAA;AAEf,IAAA,SAAgB,aAAA,CAAyB,QAAmB,MAAA,EAAc;AACxE,MAAA,IAAI,OAAO,MAAA,IAAU,SAAA;AAAW,QAAA,OAAO,EAAA;AACvC,MAAA,MAAM,EAAC,QAAA,EAAU,WAAA,EAAW,GAAI,IAAA,CAAK,IAAA;AACrC,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,MAAA,CAAO,QAAQ,KAAK,MAAM,CAAA;AACpD,MAAA,MAAM,OAAA,GAA0C,EAAC,EAAA,EAAI,KAAA,EAAK;AAC1D,MAAA,MAAM,UAAA,GAAa,WAAA,CAAY,WAAA,EAAa,KAAA,EAAO,KAAK,CAAA;AACxD,MAAA,MAAM,YAAuB,EAAA;AAC7B,MAAA,MAAM,UAAA,uBAA8B,GAAA,EAAG;AAEvC,MAAA,QAAA,CAAS,MAAA,EAAQ,EAAC,OAAA,EAAS,IAAA,IAAO,CAAC,GAAA,EAAK,OAAA,EAAS,CAAA,EAAG,aAAA,KAAiB;AACnE,QAAA,IAAI,aAAA,KAAkB,MAAA;AAAW,UAAA;AACjC,QAAA,MAAM,WAAW,UAAA,GAAa,OAAA;AAC9B,QAAA,IAAI,WAAA,GAAc,QAAQ,aAAa,CAAA;AACvC,QAAA,IAAI,OAAO,GAAA,CAAI,QAAQ,CAAA,IAAK,QAAA;AAAU,UAAA,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,GAAA,CAAI,QAAQ,CAAC,CAAA;AACnF,QAAA,SAAA,CAAU,IAAA,CAAK,IAAA,EAAM,GAAA,CAAI,OAAO,CAAA;AAChC,QAAA,SAAA,CAAU,IAAA,CAAK,IAAA,EAAM,GAAA,CAAI,cAAc,CAAA;AACvC,QAAA,OAAA,CAAQ,OAAO,CAAA,GAAI,WAAA;AAEnB,QAAA,SAAS,OAAkB,GAAA,EAAW;AAEpC,UAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,OAAA;AACvC,UAAA,GAAA,GAAM,YAAY,WAAA,GAAc,QAAA,CAAS,WAAA,EAAa,GAAG,IAAI,GAAG,CAAA;AAChE,UAAA,IAAI,UAAA,CAAW,IAAI,GAAG,CAAA;AAAG,YAAA,MAAM,SAAS,GAAG,CAAA;AAC3C,UAAA,UAAA,CAAW,IAAI,GAAG,CAAA;AAClB,UAAA,IAAI,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAC5B,UAAA,IAAI,OAAO,QAAA,IAAY,QAAA;AAAU,YAAA,QAAA,GAAW,IAAA,CAAK,KAAK,QAAQ,CAAA;AAC9D,UAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,YAAA,gBAAA,CAAiB,GAAA,EAAK,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;UAC5C,CAAA,MAAA,IAAW,GAAA,KAAQ,WAAA,CAAY,QAAQ,CAAA,EAAG;AACxC,YAAA,IAAI,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,EAAK;AAClB,cAAA,gBAAA,CAAiB,GAAA,EAAK,SAAA,CAAU,GAAG,CAAA,EAAG,GAAG,CAAA;AACzC,cAAA,SAAA,CAAU,GAAG,CAAA,GAAI,GAAA;YACnB,CAAA,MAAO;AACL,cAAA,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,GAAI,QAAA;AACnB,YAAA;AACF,UAAA;AACA,UAAA,OAAO,GAAA;AACT,QAAA;AAEA,QAAA,SAAS,UAAqB,MAAA,EAAe;AAC3C,UAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,YAAA,IAAI,CAAC,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AAAG,cAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAA,CAAG,CAAA;AACtE,YAAA,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAA;AAChC,UAAA;AACF,QAAA;MACF,CAAC,CAAA;AAED,MAAA,OAAO,SAAA;AAEP,MAAA,SAAS,gBAAA,CAAiB,IAAA,EAAiB,IAAA,EAA6B,GAAA,EAAW;AACjF,QAAA,IAAI,IAAA,KAAS,MAAA,IAAa,CAAC,KAAA,CAAM,MAAM,IAAI,CAAA;AAAG,UAAA,MAAM,SAAS,GAAG,CAAA;AAClE,MAAA;AAEA,MAAA,SAAS,SAAS,GAAA,EAAW;AAC3B,QAAA,OAAO,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,GAAG,CAAA,kCAAA,CAAoC,CAAA;AACxE,MAAA;AACF,IAAA;AAxDA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;;;;;;;;;ACnFA,IAAA,IAAA,YAAA,GAAA,kBAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AACA,IAAA,IAAA,eAAA,GAAA,qBAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AASA,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AASA,IAAA,SAAgB,qBAAqB,EAAA,EAAa;AAChD,MAAA,IAAI,WAAA,CAAY,EAAE,CAAA,EAAG;AACnB,QAAA,aAAA,CAAc,EAAE,CAAA;AAChB,QAAA,IAAI,iBAAA,CAAkB,EAAE,CAAA,EAAG;AACzB,UAAA,gBAAA,CAAiB,EAAE,CAAA;AACnB,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA,gBAAA,CAAiB,IAAI,MAAA,IAAM,YAAA,CAAA,oBAAA,EAAqB,EAAE,CAAC,CAAA;AACrD,IAAA;AATA,IAAA,OAAA,CAAA,oBAAA,GAAA,oBAAA;AAWA,IAAA,SAAS,gBAAA,CACP,EAAC,GAAA,EAAK,YAAA,EAAc,QAAQ,SAAA,EAAW,IAAA,IACvC,IAAA,EAAW;AAEX,MAAA,IAAI,IAAA,CAAK,KAAK,GAAA,EAAK;AACjB,QAAA,GAAA,CAAI,IAAA,CAAK,YAAA,EAAA,IAAc,SAAA,CAAA,KAAI,OAAA,CAAA,OAAA,CAAE,IAAI,CAAA,EAAA,EAAK,QAAA,OAAA,CAAE,MAAM,CAAA,CAAA,EAAI,SAAA,CAAU,QAAQ,MAAK;AACvE,UAAA,GAAA,CAAI,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,cAAA,EAAkB,cAAc,MAAA,EAAQ,IAAI,CAAC,CAAA,CAAE,CAAA;AACxD,UAAA,oBAAA,CAAqB,KAAK,IAAI,CAAA;AAC9B,UAAA,GAAA,CAAI,KAAK,IAAI,CAAA;QACf,CAAC,CAAA;MACH,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,IAAA,CAAK,YAAA,EAAA,IAAc,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAA,OAAA,CAAE,IAAI,CAAA,EAAA,EAAK,iBAAA,CAAkB,IAAI,CAAC,IAAI,SAAA,CAAU,MAAA,EAAQ,MACjF,GAAA,CAAI,IAAA,CAAK,aAAA,CAAc,MAAA,EAAQ,IAAI,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAEpD,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,kBAAkB,IAAA,EAAqB;AAC9C,MAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,OAAA,CAAA,QAAE,YAAY,CAAA,KAAA,EAAQ,OAAA,CAAA,OAAA,CAAE,UAAU,CAAA,EAAA,EAAK,OAAA,CAAA,OAAA,CAAE,kBAAkB,CAAA,EAAA,EAAK,OAAA,CAAA,OAAA,CAAE,QAAQ,CAAA,CAAA,EACpF,OAAA,CAAA,OAAA,CAAE,IACJ,GAAG,IAAA,CAAK,UAAA,GAAA,IAAa,SAAA,CAAA,OAAM,OAAA,CAAA,OAAA,CAAE,cAAc,CAAA,GAAA,CAAA,GAAQ,UAAA,GAAG,CAAA,IAAA,CAAA;AACxD,IAAA;AAEA,IAAA,SAAS,oBAAA,CAAqB,KAAc,IAAA,EAAqB;AAC/D,MAAA,GAAA,CAAI,EAAA,CACF,OAAA,CAAA,OAAA,CAAE,MAAA,EACF,MAAK;AACH,QAAA,GAAA,CAAI,GAAA,CAAI,OAAA,CAAA,OAAA,CAAE,YAAA,EAAA,IAAc,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,YAAY,CAAA,CAAE,CAAA;AACxD,QAAA,GAAA,CAAI,GAAA,CAAI,OAAA,CAAA,OAAA,CAAE,UAAA,EAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,UAAU,CAAA,CAAE,CAAA;AACpD,QAAA,GAAA,CAAI,GAAA,CAAI,OAAA,CAAA,OAAA,CAAE,kBAAA,EAAA,IAAoB,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,kBAAkB,CAAA,CAAE,CAAA;AACpE,QAAA,GAAA,CAAI,GAAA,CAAI,OAAA,CAAA,OAAA,CAAE,QAAA,EAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,QAAQ,CAAA,CAAE,CAAA;AAChD,QAAA,IAAI,IAAA,CAAK,UAAA;AAAY,UAAA,GAAA,CAAI,GAAA,CAAI,OAAA,CAAA,OAAA,CAAE,cAAA,EAAA,IAAgB,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,cAAc,CAAA,CAAE,CAAA;AACnF,MAAA,CAAA,EACA,MAAK;AACH,QAAA,GAAA,CAAI,IAAI,OAAA,CAAA,OAAA,CAAE,YAAA,EAAA,IAAc,UAAA,CAAA,CAAA,CAAA,EAAA,CAAK,CAAA;AAC7B,QAAA,GAAA,CAAI,IAAI,OAAA,CAAA,OAAA,CAAE,UAAA,EAAA,IAAY,UAAA,CAAA,CAAA,CAAA,SAAA,CAAY,CAAA;AAClC,QAAA,GAAA,CAAI,IAAI,OAAA,CAAA,OAAA,CAAE,kBAAA,EAAA,IAAoB,UAAA,CAAA,CAAA,CAAA,SAAA,CAAY,CAAA;AAC1C,QAAA,GAAA,CAAI,IAAI,OAAA,CAAA,OAAA,CAAE,QAAA,EAAU,OAAA,CAAA,QAAE,IAAI,CAAA;AAC1B,QAAA,IAAI,IAAA,CAAK,UAAA;AAAY,UAAA,GAAA,CAAI,IAAI,OAAA,CAAA,OAAA,CAAE,cAAA,EAAA,IAAgB,UAAA,CAAA,CAAA,CAAA,EAAA,CAAK,CAAA;MACtD,CAAC,CAAA;AAEL,IAAA;AAEA,IAAA,SAAS,iBAAiB,EAAA,EAAgB;AACxC,MAAA,MAAM,EAAC,MAAA,EAAQ,IAAA,EAAM,GAAA,EAAG,GAAI,EAAA;AAC5B,MAAA,gBAAA,CAAiB,IAAI,MAAK;AACxB,QAAA,IAAI,IAAA,CAAK,YAAY,MAAA,CAAO,QAAA;AAAU,UAAA,cAAA,CAAe,EAAE,CAAA;AACvD,QAAA,cAAA,CAAe,EAAE,CAAA;AACjB,QAAA,GAAA,CAAI,GAAA,CAAI,OAAA,CAAA,OAAA,CAAE,OAAA,EAAS,IAAI,CAAA;AACvB,QAAA,GAAA,CAAI,GAAA,CAAI,OAAA,CAAA,OAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AACnB,QAAA,IAAI,IAAA,CAAK,WAAA;AAAa,UAAA,cAAA,CAAe,EAAE,CAAA;AACvC,QAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,QAAA,aAAA,CAAc,EAAE,CAAA;MAClB,CAAC,CAAA;AACD,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,eAAe,EAAA,EAAgB;AAEtC,MAAA,MAAM,EAAC,GAAA,EAAK,YAAA,EAAY,GAAI,EAAA;AAC5B,MAAA,EAAA,CAAG,SAAA,GAAY,IAAI,KAAA,CAAM,WAAA,EAAA,IAAa,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,YAAY,CAAA,UAAA,CAAY,CAAA;AAClE,MAAA,GAAA,CAAI,OAAG,SAAA,CAAA,KAAI,EAAA,CAAG,SAAS,iBAAiB,MAAM,GAAA,CAAI,WAAO,SAAA,CAAA,KAAI,EAAA,CAAG,SAAS,cAAU,SAAA,CAAA,aAAY,CAAC,CAAA;AAChG,MAAA,GAAA,CAAI,OAAG,SAAA,CAAA,KAAI,EAAA,CAAG,SAAS,iBAAiB,MAAM,GAAA,CAAI,WAAO,SAAA,CAAA,KAAI,EAAA,CAAG,SAAS,cAAU,SAAA,CAAA,aAAY,CAAC,CAAA;AAClG,IAAA;AAEA,IAAA,SAAS,aAAA,CAAc,QAAmB,IAAA,EAAqB;AAC7D,MAAA,MAAM,QAAQ,OAAO,MAAA,IAAU,QAAA,IAAY,MAAA,CAAO,KAAK,QAAQ,CAAA;AAC/D,MAAA,OAAO,KAAA,KAAU,IAAA,CAAK,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,IAAA,CAAK,OAAA,CAAA,GAAA,IAAW,SAAA,CAAA,CAAA,CAAA,CAAA,cAAA,EAAkB,KAAK,CAAA,GAAA,CAAA,GAAQ,SAAA,CAAA,GAAA;AAC3F,IAAA;AAGA,IAAA,SAAS,aAAA,CAAc,IAAe,KAAA,EAAW;AAC/C,MAAA,IAAI,WAAA,CAAY,EAAE,CAAA,EAAG;AACnB,QAAA,aAAA,CAAc,EAAE,CAAA;AAChB,QAAA,IAAI,iBAAA,CAAkB,EAAE,CAAA,EAAG;AACzB,UAAA,gBAAA,CAAiB,IAAI,KAAK,CAAA;AAC1B,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA,IAAA,YAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,KAAK,CAAA;AAC7B,IAAA;AAEA,IAAA,SAAS,iBAAA,CAAkB,EAAC,MAAA,EAAQ,IAAA,EAAI,EAAY;AAClD,MAAA,IAAI,OAAO,MAAA,IAAU,SAAA;AAAW,QAAA,OAAO,CAAC,MAAA;AACxC,MAAA,KAAA,MAAW,GAAA,IAAO,MAAA;AAAQ,QAAA,IAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAAG,UAAA,OAAO,IAAA;AAC1D,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,SAAS,YAAY,EAAA,EAAa;AAChC,MAAA,OAAO,OAAO,GAAG,MAAA,IAAU,SAAA;AAC7B,IAAA;AAEA,IAAA,SAAS,gBAAA,CAAiB,IAAkB,KAAA,EAAW;AACrD,MAAA,MAAM,EAAC,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAI,GAAI,EAAA;AAC5B,MAAA,IAAI,IAAA,CAAK,YAAY,MAAA,CAAO,QAAA;AAAU,QAAA,cAAA,CAAe,EAAE,CAAA;AACvD,MAAA,aAAA,CAAc,EAAE,CAAA;AAChB,MAAA,gBAAA,CAAiB,EAAE,CAAA;AACnB,MAAA,MAAM,YAAY,GAAA,CAAI,KAAA,CAAM,OAAA,EAAS,OAAA,CAAA,QAAE,MAAM,CAAA;AAC7C,MAAA,eAAA,CAAgB,IAAI,SAAS,CAAA;AAE7B,MAAA,GAAA,CAAI,GAAA,CAAI,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,SAAS,CAAA,KAAA,EAAQ,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,CAAE,CAAA;AAChD,IAAA;AAEA,IAAA,SAAS,cAAc,EAAA,EAAgB;AACrC,MAAA,IAAA,MAAA,CAAA,iBAAA,EAAkB,EAAE,CAAA;AACpB,MAAA,oBAAA,CAAqB,EAAE,CAAA;AACzB,IAAA;AAEA,IAAA,SAAS,eAAA,CAAgB,IAAkB,SAAA,EAAgB;AACzD,MAAA,IAAI,GAAG,IAAA,CAAK,GAAA;AAAK,QAAA,OAAO,cAAA,CAAe,EAAA,EAAI,EAAA,EAAI,OAAO,SAAS,CAAA;AAC/D,MAAA,MAAM,KAAA,GAAA,IAAQ,UAAA,CAAA,cAAA,EAAe,GAAG,MAAM,CAAA;AACtC,MAAA,MAAM,YAAA,GAAA,IAAe,UAAA,CAAA,sBAAA,EAAuB,IAAI,KAAK,CAAA;AACrD,MAAA,cAAA,CAAe,EAAA,EAAI,KAAA,EAAO,CAAC,YAAA,EAAc,SAAS,CAAA;AACpD,IAAA;AAEA,IAAA,SAAS,qBAAqB,EAAA,EAAgB;AAC5C,MAAA,MAAM,EAAC,MAAA,EAAQ,aAAA,EAAe,IAAA,EAAM,MAAI,GAAI,EAAA;AAC5C,MAAA,IAAI,MAAA,CAAO,IAAA,IAAQ,IAAA,CAAK,qBAAA,IAAA,IAAyB,OAAA,oBAAA,EAAqB,MAAA,EAAQ,IAAA,CAAK,KAAK,CAAA,EAAG;AACzF,QAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,0CAAA,EAA6C,aAAa,CAAA,CAAA,CAAG,CAAA;AAChF,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,eAAe,EAAA,EAAgB;AACtC,MAAA,MAAM,EAAC,MAAA,EAAQ,IAAA,EAAI,GAAI,EAAA;AACvB,MAAA,IAAI,OAAO,OAAA,KAAY,MAAA,IAAa,IAAA,CAAK,WAAA,IAAe,KAAK,YAAA,EAAc;AACzE,QAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,EAAA,EAAI,uCAAuC,CAAA;AAC7D,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,cAAc,EAAA,EAAgB;AACrC,MAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,MAAA,CAAO,EAAA,CAAG,KAAK,QAAQ,CAAA;AACxC,MAAA,IAAI,KAAA;AAAO,QAAA,EAAA,CAAG,MAAA,GAAA,IAAS,SAAA,CAAA,UAAA,EAAW,GAAG,IAAA,CAAK,WAAA,EAAa,EAAA,CAAG,MAAA,EAAQ,KAAK,CAAA;AACzE,IAAA;AAEA,IAAA,SAAS,iBAAiB,EAAA,EAAgB;AACxC,MAAA,IAAI,EAAA,CAAG,MAAA,CAAO,MAAA,IAAU,CAAC,GAAG,SAAA,CAAU,MAAA;AAAQ,QAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AAC7F,IAAA;AAEA,IAAA,SAAS,eAAe,EAAC,GAAA,EAAK,WAAW,MAAA,EAAQ,aAAA,EAAe,MAAI,EAAe;AACjF,MAAA,MAAM,MAAM,MAAA,CAAO,QAAA;AACnB,MAAA,IAAI,IAAA,CAAK,aAAa,IAAA,EAAM;AAC1B,QAAA,GAAA,CAAI,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAA,OAAA,CAAE,IAAI,CAAA,YAAA,EAAe,GAAG,CAAA,CAAA,CAAG,CAAA;MAC1C,CAAA,MAAA,IAAW,OAAO,IAAA,CAAK,QAAA,IAAY,UAAA,EAAY;AAC7C,QAAA,MAAM,UAAA,GAAA,IAAa,SAAA,CAAA,GAAA,CAAA,CAAA,EAAM,aAAa,CAAA,SAAA,CAAA;AACtC,QAAA,MAAM,QAAA,GAAW,IAAI,UAAA,CAAW,MAAA,EAAQ,EAAC,GAAA,EAAK,SAAA,CAAU,MAAK,CAAA;AAC7D,QAAA,GAAA,CAAI,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,IAAI,CAAA,eAAA,EAAkB,GAAG,CAAA,EAAA,EAAK,UAAU,CAAA,EAAA,EAAK,QAAQ,CAAA,QAAA,CAAU,CAAA;AAChF,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,cAAc,EAAA,EAAa;AAClC,MAAA,MAAM,EAAC,GAAA,EAAK,SAAA,EAAW,YAAA,EAAc,eAAA,EAAiB,MAAI,GAAI,EAAA;AAC9D,MAAA,IAAI,UAAU,MAAA,EAAQ;AAEpB,QAAA,GAAA,CAAI,EAAA,CAAA,IACF,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,MAAA,CAAA,EACZ,MAAM,GAAA,CAAI,MAAA,CAAO,OAAA,CAAA,OAAA,CAAE,IAAI,CAAA,EACvB,MAAM,GAAA,CAAI,KAAA,CAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAQ,eAAuB,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,CAAA,CAAG,CAAC,CAAA;MAEpE,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,YAAY,CAAA,OAAA,CAAA,EAAW,OAAA,CAAA,QAAE,OAAO,CAAA;AAC/C,QAAA,IAAI,IAAA,CAAK,WAAA;AAAa,UAAA,eAAA,CAAgB,EAAE,CAAA;AACxC,QAAA,GAAA,CAAI,WAAO,SAAA,CAAA,KAAI,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,MAAA,CAAQ,CAAA;AACjC,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,gBAAgB,EAAC,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,OAAK,EAAY;AAChE,MAAA,IAAI,iBAAiB,SAAA,CAAA,IAAA;AAAM,QAAA,GAAA,CAAI,WAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,SAAS,UAAU,KAAK,CAAA;AAClE,MAAA,IAAI,iBAAiB,SAAA,CAAA,IAAA;AAAM,QAAA,GAAA,CAAI,WAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,SAAS,UAAU,KAAK,CAAA;AACpE,IAAA;AAEA,IAAA,SAAS,cAAA,CACP,EAAA,EACA,KAAA,EACA,UAAA,EACA,SAAA,EAAgB;AAEhB,MAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,MAAM,SAAA,EAAW,IAAA,EAAM,MAAI,GAAI,EAAA;AACnD,MAAA,MAAM,EAAC,OAAK,GAAI,IAAA;AAChB,MAAA,IAAI,MAAA,CAAO,IAAA,KAAS,IAAA,CAAK,qBAAA,IAAyB,CAAA,IAAC,MAAA,CAAA,oBAAA,EAAqB,MAAA,EAAQ,KAAK,CAAA,CAAA,EAAI;AACvF,QAAA,GAAA,CAAI,KAAA,CAAM,MAAM,WAAA,CAAY,EAAA,EAAI,QAAS,KAAA,CAAM,GAAA,CAAI,IAAA,CAAc,UAAU,CAAC,CAAA;AAC5E,QAAA;AACF,MAAA;AACA,MAAA,IAAI,CAAC,IAAA,CAAK,GAAA;AAAK,QAAA,gBAAA,CAAiB,IAAI,KAAK,CAAA;AACzC,MAAA,GAAA,CAAI,MAAM,MAAK;AACb,QAAA,KAAA,MAAW,SAAS,KAAA,CAAM,KAAA;AAAO,UAAA,aAAA,CAAc,KAAK,CAAA;AACpD,QAAA,aAAA,CAAc,MAAM,IAAI,CAAA;MAC1B,CAAC,CAAA;AAED,MAAA,SAAS,cAAc,KAAA,EAAgB;AACrC,QAAA,IAAI,CAAA,IAAC,eAAA,CAAA,cAAA,EAAe,QAAQ,KAAK,CAAA;AAAG,UAAA;AACpC,QAAA,IAAI,MAAM,IAAA,EAAM;AACd,UAAA,GAAA,CAAI,EAAA,CAAA,IAAG,UAAA,CAAA,aAAA,EAAc,MAAM,IAAA,EAAM,IAAA,EAAM,IAAA,CAAK,aAAa,CAAC,CAAA;AAC1D,UAAA,eAAA,CAAgB,IAAI,KAAK,CAAA;AACzB,UAAA,IAAI,KAAA,CAAM,WAAW,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,KAAM,KAAA,CAAM,QAAQ,UAAA,EAAY;AAC/D,YAAA,GAAA,CAAI,IAAA,EAAI;AACR,YAAA,IAAA,UAAA,CAAA,eAAA,EAAgB,EAAE,CAAA;AACpB,UAAA;AACA,UAAA,GAAA,CAAI,KAAA,EAAK;QACX,CAAA,MAAO;AACL,UAAA,eAAA,CAAgB,IAAI,KAAK,CAAA;AAC3B,QAAA;AAEA,QAAA,IAAI,CAAC,SAAA;AAAW,UAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,QAAE,MAAM,CAAA,KAAA,EAAQ,SAAA,IAAa,CAAC,CAAA,CAAE,CAAA;AAC7D,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,eAAA,CAAgB,IAAkB,KAAA,EAAgB;AACzD,MAAA,MAAM,EACJ,GAAA,EACA,MAAA,EACA,MAAM,EAAC,WAAA,IAAY,GACjB,EAAA;AACJ,MAAA,IAAI,WAAA;AAAa,QAAA,IAAA,UAAA,CAAA,cAAA,EAAe,EAAA,EAAI,MAAM,IAAI,CAAA;AAC9C,MAAA,GAAA,CAAI,MAAM,MAAK;AACb,QAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC9B,UAAA,IAAA,IAAI,eAAA,CAAA,aAAA,EAAc,MAAA,EAAQ,IAAI,CAAA,EAAG;AAC/B,YAAA,WAAA,CAAY,IAAI,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,UAAA,EAAY,MAAM,IAAI,CAAA;AAC3D,UAAA;AACF,QAAA;MACF,CAAC,CAAA;AACH,IAAA;AAEA,IAAA,SAAS,gBAAA,CAAiB,IAAkB,KAAA,EAAiB;AAC3D,MAAA,IAAI,EAAA,CAAG,SAAA,CAAU,IAAA,IAAQ,CAAC,GAAG,IAAA,CAAK,WAAA;AAAa,QAAA;AAC/C,MAAA,iBAAA,CAAkB,IAAI,KAAK,CAAA;AAC3B,MAAA,IAAI,CAAC,GAAG,IAAA,CAAK,eAAA;AAAiB,QAAA,kBAAA,CAAmB,IAAI,KAAK,CAAA;AAC1D,MAAA,iBAAA,CAAkB,EAAA,EAAI,GAAG,SAAS,CAAA;AACpC,IAAA;AAEA,IAAA,SAAS,iBAAA,CAAkB,IAAkB,KAAA,EAAiB;AAC5D,MAAA,IAAI,CAAC,KAAA,CAAM,MAAA;AAAQ,QAAA;AACnB,MAAA,IAAI,CAAC,EAAA,CAAG,SAAA,CAAU,MAAA,EAAQ;AACxB,QAAA,EAAA,CAAG,SAAA,GAAY,KAAA;AACf,QAAA;AACF,MAAA;AACA,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,KAAK;AAClB,QAAA,IAAI,CAAC,YAAA,CAAa,EAAA,CAAG,SAAA,EAAW,CAAC,CAAA,EAAG;AAClC,UAAA,gBAAA,CAAiB,EAAA,EAAI,SAAS,CAAC,CAAA,0BAAA,EAA6B,GAAG,SAAA,CAAU,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAA;AACvF,QAAA;MACF,CAAC,CAAA;AACD,MAAA,iBAAA,CAAkB,IAAI,KAAK,CAAA;AAC7B,IAAA;AAEA,IAAA,SAAS,kBAAA,CAAmB,IAAkBD,GAAAA,EAAc;AAC1D,MAAA,IAAIA,GAAAA,CAAG,MAAA,GAAS,CAAA,IAAK,EAAEA,GAAAA,CAAG,WAAW,CAAA,IAAKA,GAAAA,CAAG,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI;AAC9D,QAAA,gBAAA,CAAiB,IAAI,iDAAiD,CAAA;AACxE,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,iBAAA,CAAkB,IAAkBA,GAAAA,EAAc;AACzD,MAAA,MAAM,KAAA,GAAQ,EAAA,CAAG,IAAA,CAAK,KAAA,CAAM,GAAA;AAC5B,MAAA,KAAA,MAAW,WAAW,KAAA,EAAO;AAC3B,QAAA,MAAM,IAAA,GAAO,MAAM,OAAO,CAAA;AAC1B,QAAA,IAAI,OAAO,QAAQ,QAAA,IAAA,IAAY,gBAAA,aAAA,EAAc,EAAA,CAAG,MAAA,EAAQ,IAAI,CAAA,EAAG;AAC7D,UAAA,MAAM,EAAC,IAAA,EAAI,GAAI,IAAA,CAAK,UAAA;AACpB,UAAA,IAAI,IAAA,CAAK,MAAA,IAAU,CAAC,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,KAAM,iBAAA,CAAkBA,GAAAA,EAAI,CAAC,CAAC,CAAA,EAAG;AAC9D,YAAA,gBAAA,CAAiB,EAAA,EAAI,iBAAiB,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,eAAA,EAAkB,OAAO,CAAA,CAAA,CAAG,CAAA;AAClF,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,iBAAA,CAAkB,OAAmB,IAAA,EAAc;AAC1D,MAAA,OAAO,KAAA,CAAM,SAAS,IAAI,CAAA,IAAM,SAAS,QAAA,IAAY,KAAA,CAAM,SAAS,SAAS,CAAA;AAC/E,IAAA;AAEA,IAAA,SAAS,YAAA,CAAaA,KAAgB,CAAA,EAAW;AAC/C,MAAA,OAAOA,GAAAA,CAAG,SAAS,CAAC,CAAA,IAAM,MAAM,SAAA,IAAaA,GAAAA,CAAG,SAAS,QAAQ,CAAA;AACnE,IAAA;AAEA,IAAA,SAAS,iBAAA,CAAkB,IAAkB,SAAA,EAAqB;AAChE,MAAA,MAAMA,MAAiB,EAAA;AACvB,MAAA,KAAA,MAAW,CAAA,IAAK,GAAG,SAAA,EAAW;AAC5B,QAAA,IAAI,YAAA,CAAa,WAAW,CAAC,CAAA;AAAG,UAAAA,GAAAA,CAAG,KAAK,CAAC,CAAA;iBAChC,SAAA,CAAU,QAAA,CAAS,SAAS,CAAA,IAAK,CAAA,KAAM,QAAA;AAAU,UAAAA,GAAAA,CAAG,KAAK,SAAS,CAAA;AAC7E,MAAA;AACA,MAAA,EAAA,CAAG,SAAA,GAAYA,GAAAA;AACjB,IAAA;AAEA,IAAA,SAAS,gBAAA,CAAiB,IAAkB,GAAA,EAAW;AACrD,MAAA,MAAM,UAAA,GAAa,EAAA,CAAG,SAAA,CAAU,MAAA,GAAS,EAAA,CAAG,aAAA;AAC5C,MAAA,GAAA,IAAO,QAAQ,UAAU,CAAA,eAAA,CAAA;AACzB,MAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,IAAI,GAAA,EAAK,EAAA,CAAG,KAAK,WAAW,CAAA;AAC9C,IAAA;AAEA,IAAA,IAAa,aAAb,MAAuB;MAiBrB,WAAA,CAAY,EAAA,EAAkB,KAA6B,OAAA,EAAe;AACxE,QAAA,IAAA,SAAA,CAAA,oBAAA,EAAqB,EAAA,EAAI,KAAK,OAAO,CAAA;AACrC,QAAA,IAAA,CAAK,MAAM,EAAA,CAAG,GAAA;AACd,QAAA,IAAA,CAAK,YAAY,EAAA,CAAG,SAAA;AACpB,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,OAAO,EAAA,CAAG,IAAA;AACf,QAAA,IAAA,CAAK,MAAA,GAAS,EAAA,CAAG,MAAA,CAAO,OAAO,CAAA;AAC/B,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,KAAA,IAAS,EAAA,CAAG,KAAK,KAAA,IAAS,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,MAAA,CAAO,KAAA;AACtE,QAAA,IAAA,CAAK,WAAA,GAAA,IAAc,MAAA,CAAA,cAAA,EAAe,IAAI,IAAA,CAAK,MAAA,EAAQ,OAAA,EAAS,IAAA,CAAK,KAAK,CAAA;AACtE,QAAA,IAAA,CAAK,aAAa,GAAA,CAAI,UAAA;AACtB,QAAA,IAAA,CAAK,eAAe,EAAA,CAAG,MAAA;AACvB,QAAA,IAAA,CAAK,SAAS,EAAA;AACd,QAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,QAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AAEX,QAAA,IAAI,KAAK,KAAA,EAAO;AACd,UAAA,IAAA,CAAK,UAAA,GAAa,GAAG,GAAA,CAAI,KAAA,CAAM,WAAW,OAAA,CAAQ,IAAA,CAAK,KAAA,EAAO,EAAE,CAAC,CAAA;QACnE,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,aAAa,IAAA,CAAK,WAAA;AACvB,UAAA,IAAI,CAAA,IAAC,SAAA,CAAA,eAAA,EAAgB,IAAA,CAAK,QAAQ,GAAA,CAAI,UAAA,EAAY,GAAA,CAAI,cAAc,CAAA,EAAG;AACrE,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,eAAA,EAAkB,KAAK,SAAA,CAAU,GAAA,CAAI,UAAU,CAAC,CAAA,CAAE,CAAA;AAC9E,UAAA;AACF,QAAA;AAEA,QAAA,IAAI,UAAU,GAAA,GAAM,GAAA,CAAI,WAAA,GAAc,GAAA,CAAI,WAAW,KAAA,EAAO;AAC1D,UAAA,IAAA,CAAK,YAAY,EAAA,CAAG,GAAA,CAAI,MAAM,OAAA,EAAS,OAAA,CAAA,QAAE,MAAM,CAAA;AACjD,QAAA;AACF,MAAA;MAEA,MAAA,CAAO,SAAA,EAAiB,eAA4B,UAAA,EAAuB;AACzE,QAAA,IAAA,CAAK,eAAW,SAAA,CAAA,KAAI,SAAS,CAAA,EAAG,eAAe,UAAU,CAAA;AAC3D,MAAA;MAEA,UAAA,CAAW,SAAA,EAAiB,eAA4B,UAAA,EAAuB;AAC7E,QAAA,IAAA,CAAK,GAAA,CAAI,GAAG,SAAS,CAAA;AACrB,QAAA,IAAI,UAAA;AAAY,UAAA,UAAA,EAAU;;AACrB,UAAA,IAAA,CAAK,KAAA,EAAK;AACf,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,IAAA,CAAK,IAAI,IAAA,EAAI;AACb,UAAA,aAAA,EAAa;AACb,UAAA,IAAI,IAAA,CAAK,SAAA;AAAW,YAAA,IAAA,CAAK,IAAI,KAAA,EAAK;QACpC,CAAA,MAAO;AACL,UAAA,IAAI,IAAA,CAAK,SAAA;AAAW,YAAA,IAAA,CAAK,IAAI,KAAA,EAAK;;AAC7B,YAAA,IAAA,CAAK,IAAI,IAAA,EAAI;AACpB,QAAA;AACF,MAAA;AAEA,MAAA,IAAA,CAAK,WAAiB,UAAA,EAAuB;AAC3C,QAAA,IAAA,CAAK,eAAW,SAAA,CAAA,KAAI,SAAS,CAAA,EAAG,QAAW,UAAU,CAAA;AACvD,MAAA;AAEA,MAAA,IAAA,CAAK,SAAA,EAAgB;AACnB,QAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,UAAA,IAAA,CAAK,KAAA,EAAK;AACV,UAAA,IAAI,CAAC,IAAA,CAAK,SAAA;AAAW,YAAA,IAAA,CAAK,GAAA,CAAI,GAAG,KAAK,CAAA;AACtC,UAAA;AACF,QAAA;AACA,QAAA,IAAA,CAAK,GAAA,CAAI,GAAG,SAAS,CAAA;AACrB,QAAA,IAAA,CAAK,KAAA,EAAK;AACV,QAAA,IAAI,IAAA,CAAK,SAAA;AAAW,UAAA,IAAA,CAAK,IAAI,KAAA,EAAK;;AAC7B,UAAA,IAAA,CAAK,IAAI,IAAA,EAAI;AACpB,MAAA;AAEA,MAAA,SAAA,CAAU,SAAA,EAAe;AACvB,QAAA,IAAI,CAAC,IAAA,CAAK,KAAA;AAAO,UAAA,OAAO,IAAA,CAAK,KAAK,SAAS,CAAA;AAC3C,QAAA,MAAM,EAAC,YAAU,GAAI,IAAA;AACrB,QAAA,IAAA,CAAK,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,UAAU,CAAA,mBAAA,EAAA,IAAsB,SAAA,CAAA,EAAA,EAAG,IAAA,CAAK,YAAA,EAAY,EAAI,SAAS,CAAC,CAAA,CAAA,CAAG,CAAA;AACrF,MAAA;MAEA,KAAA,CAAM,MAAA,EAAkB,aAAgC,UAAA,EAAuB;AAC7E,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,IAAA,CAAK,UAAU,WAAW,CAAA;AAC1B,UAAA,IAAA,CAAK,MAAA,CAAO,QAAQ,UAAU,CAAA;AAC9B,UAAA,IAAA,CAAK,SAAA,CAAU,EAAE,CAAA;AACjB,UAAA;AACF,QAAA;AACA,QAAA,IAAA,CAAK,MAAA,CAAO,QAAQ,UAAU,CAAA;AAChC,MAAA;AAEQ,MAAA,MAAA,CAAO,QAAkB,UAAA,EAAuB;AACrD,QAAA,CAAC,MAAA,GAAS,SAAA,gBAAA,GAAmB,QAAA,CAAA,aAAa,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,UAAU,CAAA;AAC7E,MAAA;MAEA,UAAA,GAAU;AACR,QAAA,IAAA,SAAA,WAAA,EAAY,IAAA,EAAM,KAAK,GAAA,CAAI,UAAA,IAAc,SAAA,iBAAiB,CAAA;AAC5D,MAAA;MAEA,KAAA,GAAK;AACH,QAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AAAW,UAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAC3F,QAAA,IAAA,QAAA,CAAA,gBAAA,EAAiB,IAAA,CAAK,GAAA,EAAK,KAAK,SAAS,CAAA;AAC3C,MAAA;AAEA,MAAA,EAAA,CAAG,IAAA,EAAoB;AACrB,QAAA,IAAI,CAAC,IAAA,CAAK,SAAA;AAAW,UAAA,IAAA,CAAK,GAAA,CAAI,GAAG,IAAI,CAAA;AACvC,MAAA;AAEA,MAAA,SAAA,CAAU,KAAuB,MAAA,EAAa;AAC5C,QAAA,IAAI,MAAA;AAAQ,UAAA,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA;;AACrC,UAAA,IAAA,CAAK,MAAA,GAAS,GAAA;AACrB,MAAA;AAEA,MAAA,UAAA,CAAW,KAAA,EAAa,SAAA,EAAuB,UAAA,GAAmB,SAAA,CAAA,GAAA,EAAG;AACnE,QAAA,IAAA,CAAK,GAAA,CAAI,MAAM,MAAK;AAClB,UAAA,IAAA,CAAK,UAAA,CAAW,OAAO,UAAU,CAAA;AACjC,UAAA,SAAA,EAAS;QACX,CAAC,CAAA;AACH,MAAA;AAEA,MAAA,UAAA,CAAW,KAAA,GAAc,SAAA,CAAA,GAAA,EAAK,UAAA,GAAmB,UAAA,GAAA,EAAG;AAClD,QAAA,IAAI,CAAC,IAAA,CAAK,KAAA;AAAO,UAAA;AACjB,QAAA,MAAM,EAAC,GAAA,EAAK,UAAA,EAAY,UAAA,EAAY,KAAG,GAAI,IAAA;AAC3C,QAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,EAAA,EAAA,IAAG,UAAA,CAAA,CAAA,CAAA,EAAI,UAAU,CAAA,cAAA,CAAA,EAAkB,UAAU,CAAC,CAAA;AACrD,QAAA,IAAI,UAAU,SAAA,CAAA,GAAA;AAAK,UAAA,GAAA,CAAI,MAAA,CAAO,OAAO,IAAI,CAAA;AACzC,QAAA,IAAI,UAAA,CAAW,MAAA,IAAU,GAAA,CAAI,cAAA,EAAgB;AAC3C,UAAA,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,CAAA;AAC9B,UAAA,IAAA,CAAK,UAAA,EAAU;AACf,UAAA,IAAI,UAAU,SAAA,CAAA,GAAA;AAAK,YAAA,GAAA,CAAI,MAAA,CAAO,OAAO,KAAK,CAAA;AAC5C,QAAA;AACA,QAAA,GAAA,CAAI,IAAA,EAAI;AACV,MAAA;MAEA,YAAA,GAAY;AACV,QAAA,MAAM,EAAC,GAAA,EAAK,UAAA,EAAY,UAAA,EAAY,GAAA,EAAK,IAAE,GAAI,IAAA;AAC/C,QAAA,OAAA,IAAO,SAAA,CAAA,EAAA,EAAG,cAAA,EAAc,EAAI,oBAAoB,CAAA;AAEhD,QAAA,SAAS,cAAA,GAAc;AACrB,UAAA,IAAI,WAAW,MAAA,EAAQ;AAErB,YAAA,IAAI,EAAE,sBAAsB,SAAA,CAAA,IAAA,CAAA;AAAO,cAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAC7E,YAAA,MAAM,KAAK,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,GAAI,UAAA,GAAa,CAAC,UAAU,CAAA;AAC/D,YAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAI,WAAA,cAAA,EAAe,EAAA,EAAI,UAAA,EAAY,EAAA,CAAG,IAAA,CAAK,aAAA,EAAe,UAAA,CAAA,QAAA,CAAS,KAAK,CAAC,CAAA,CAAA;AAClF,UAAA;AACA,UAAA,OAAO,SAAA,CAAA,GAAA;AACT,QAAA;AAEA,QAAA,SAAS,kBAAA,GAAkB;AACzB,UAAA,IAAI,IAAI,cAAA,EAAgB;AACtB,YAAA,MAAM,iBAAA,GAAoB,IAAI,UAAA,CAAW,eAAA,EAAiB,EAAC,GAAA,EAAK,GAAA,CAAI,gBAAe,CAAA;AACnF,YAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,iBAAiB,IAAI,UAAU,CAAA,CAAA,CAAA;AAC7C,UAAA;AACA,UAAA,OAAO,SAAA,CAAA,GAAA;AACT,QAAA;AACF,MAAA;AAEA,MAAA,SAAA,CAAU,MAAqB,KAAA,EAAW;AACxC,QAAA,MAAM,gBAAY,WAAA,CAAA,YAAA,EAAa,IAAA,CAAK,IAAI,IAAI,CAAA;AAC5C,QAAA,IAAA,WAAA,CAAA,mBAAA,EAAoB,SAAA,EAAW,IAAA,CAAK,IAAI,IAAI,CAAA;AAC5C,QAAA,IAAA,WAAA,CAAA,mBAAA,EAAoB,SAAA,EAAW,IAAI,CAAA;AACnC,QAAA,MAAM,WAAA,GAAc,EAAC,GAAG,IAAA,CAAK,EAAA,EAAI,GAAG,SAAA,EAAW,KAAA,EAAO,MAAA,EAAW,KAAA,EAAO,MAAA,EAAS;AACjF,QAAA,aAAA,CAAc,aAAa,KAAK,CAAA;AAChC,QAAA,OAAO,WAAA;AACT,MAAA;AAEA,MAAA,cAAA,CAAe,WAAsB,MAAA,EAAoB;AACvD,QAAA,MAAM,EAAC,EAAA,EAAI,GAAA,EAAG,GAAI,IAAA;AAClB,QAAA,IAAI,CAAC,GAAG,IAAA,CAAK,WAAA;AAAa,UAAA;AAC1B,QAAA,IAAI,EAAA,CAAG,KAAA,KAAU,IAAA,IAAQ,SAAA,CAAU,UAAU,MAAA,EAAW;AACtD,UAAA,EAAA,CAAG,KAAA,GAAQ,OAAA,cAAA,CAAe,KAAA,CAAM,KAAK,SAAA,CAAU,KAAA,EAAO,EAAA,CAAG,KAAA,EAAO,MAAM,CAAA;AACxE,QAAA;AACA,QAAA,IAAI,EAAA,CAAG,KAAA,KAAU,IAAA,IAAQ,SAAA,CAAU,UAAU,MAAA,EAAW;AACtD,UAAA,EAAA,CAAG,KAAA,GAAQ,OAAA,cAAA,CAAe,KAAA,CAAM,KAAK,SAAA,CAAU,KAAA,EAAO,EAAA,CAAG,KAAA,EAAO,MAAM,CAAA;AACxE,QAAA;AACF,MAAA;AAEA,MAAA,mBAAA,CAAoB,WAAsB,KAAA,EAAW;AACnD,QAAA,MAAM,EAAC,EAAA,EAAI,GAAA,EAAG,GAAI,IAAA;AAClB,QAAA,IAAI,EAAA,CAAG,KAAK,WAAA,KAAgB,EAAA,CAAG,UAAU,IAAA,IAAQ,EAAA,CAAG,UAAU,IAAA,CAAA,EAAO;AACnE,UAAA,GAAA,CAAI,EAAA,CAAG,OAAO,MAAM,IAAA,CAAK,eAAe,SAAA,EAAW,SAAA,CAAA,IAAI,CAAC,CAAA;AACxD,UAAA,OAAO,IAAA;AACT,QAAA;AACF,MAAA;;AA3LF,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AA8LA,IAAA,SAAS,WAAA,CACP,EAAA,EACA,OAAA,EACA,GAAA,EACA,QAAA,EAAmB;AAEnB,MAAA,MAAM,GAAA,GAAM,IAAI,UAAA,CAAW,EAAA,EAAI,KAAK,OAAO,CAAA;AAC3C,MAAA,IAAI,UAAU,GAAA,EAAK;AACjB,QAAA,GAAA,CAAI,IAAA,CAAK,KAAK,QAAQ,CAAA;MACxB,CAAA,MAAA,IAAW,GAAA,CAAI,KAAA,IAAS,GAAA,CAAI,QAAA,EAAU;AACpC,QAAA,IAAA,SAAA,CAAA,eAAA,EAAgB,GAAA,EAAK,GAAG,CAAA;AAC1B,MAAA,CAAA,MAAA,IAAW,WAAW,GAAA,EAAK;AACzB,QAAA,IAAA,SAAA,CAAA,gBAAA,EAAiB,GAAA,EAAK,GAAG,CAAA;MAC3B,CAAA,MAAA,IAAW,GAAA,CAAI,OAAA,IAAW,GAAA,CAAI,QAAA,EAAU;AACtC,QAAA,IAAA,SAAA,CAAA,eAAA,EAAgB,GAAA,EAAK,GAAG,CAAA;AAC1B,MAAA;AACF,IAAA;AAEA,IAAA,IAAM,YAAA,GAAe,qBAAA;AACrB,IAAA,IAAM,qBAAA,GAAwB,kCAAA;AAC9B,IAAA,SAAgB,QACd,KAAA,EACA,EAAC,SAAA,EAAW,SAAA,EAAW,aAAW,EAAY;AAE9C,MAAA,IAAI,WAAA;AACJ,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,KAAA,KAAU,EAAA;AAAI,QAAA,OAAO,QAAA,OAAA,CAAE,QAAA;AAC3B,MAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,QAAA,IAAI,CAAC,YAAA,CAAa,IAAA,CAAK,KAAK,CAAA;AAAG,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,KAAK,CAAA,CAAE,CAAA;AAC/E,QAAA,WAAA,GAAc,KAAA;AACd,QAAA,IAAA,GAAO,QAAA,OAAA,CAAE,QAAA;MACX,CAAA,MAAO;AACL,QAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,IAAA,CAAK,KAAK,CAAA;AAChD,QAAA,IAAI,CAAC,OAAA;AAAS,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,KAAK,CAAA,CAAE,CAAA;AAC9D,QAAA,MAAM,EAAA,GAAa,CAAC,OAAA,CAAQ,CAAC,CAAA;AAC7B,QAAA,WAAA,GAAc,QAAQ,CAAC,CAAA;AACvB,QAAA,IAAI,gBAAgB,GAAA,EAAK;AACvB,UAAA,IAAI,EAAA,IAAM,SAAA;AAAW,YAAA,MAAM,IAAI,KAAA,CAAM,QAAA,CAAS,gBAAA,EAAkB,EAAE,CAAC,CAAA;AACnE,UAAA,OAAO,WAAA,CAAY,YAAY,EAAE,CAAA;AACnC,QAAA;AACA,QAAA,IAAI,EAAA,GAAK,SAAA;AAAW,UAAA,MAAM,IAAI,KAAA,CAAM,QAAA,CAAS,MAAA,EAAQ,EAAE,CAAC,CAAA;AACxD,QAAA,IAAA,GAAO,SAAA,CAAU,YAAY,EAAE,CAAA;AAC/B,QAAA,IAAI,CAAC,WAAA;AAAa,UAAA,OAAO,IAAA;AAC3B,MAAA;AAEA,MAAA,IAAI,IAAA,GAAO,IAAA;AACX,MAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,CAAM,GAAG,CAAA;AACtC,MAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,IAAG,SAAA,CAAA,WAAA,EAAA,IAAY,MAAA,CAAA,mBAAA,EAAoB,OAAO,CAAC,CAAC,CAAA,CAAA;AAC3D,UAAA,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,OAAO,IAAI,CAAA,CAAA;AAC5B,QAAA;AACF,MAAA;AACA,MAAA,OAAO,IAAA;AAEP,MAAA,SAAS,QAAA,CAAS,aAAqB,EAAA,EAAU;AAC/C,QAAA,OAAO,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAA,EAAI,EAAE,gCAAgC,SAAS,CAAA,CAAA;AACpF,MAAA;AACF,IAAA;AAtCA,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;;;;;;;;AC7hBA,IAAA,IAAqB,eAAA,GAArB,cAA6C,KAAA,CAAK;AAKhD,MAAA,WAAA,CAAY,MAAA,EAA8B;AACxC,QAAA,KAAA,CAAM,mBAAmB,CAAA;AACzB,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,QAAA,IAAA,CAAK,GAAA,GAAM,KAAK,UAAA,GAAa,IAAA;AAC/B,MAAA;;AATF,IAAA,OAAA,CAAA,OAAA,GAAA,eAAA;;;;;;;;ACFA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAGA,IAAA,IAAqB,eAAA,GAArB,cAA6C,KAAA,CAAK;MAIhD,WAAA,CAAY,QAAA,EAAuB,MAAA,EAAgB,GAAA,EAAa,GAAA,EAAY;AAC1E,QAAA,KAAA,CAAM,GAAA,IAAO,CAAA,wBAAA,EAA2B,GAAG,CAAA,SAAA,EAAY,MAAM,CAAA,CAAE,CAAA;AAC/D,QAAA,IAAA,CAAK,iBAAa,SAAA,CAAA,UAAA,EAAW,QAAA,EAAU,QAAQ,GAAG,CAAA;AAClD,QAAA,IAAA,CAAK,aAAA,GAAA,IAAgB,SAAA,CAAA,WAAA,EAAA,IAAY,UAAA,WAAA,EAAY,QAAA,EAAU,IAAA,CAAK,UAAU,CAAC,CAAA;AACzE,MAAA;;AARF,IAAA,OAAA,CAAA,OAAA,GAAA,eAAA;;;;;;;;;ACOA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,kBAAA,GAAA,wBAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AA0DA,IAAA,IAAa,YAAb,MAAsB;AAkBpB,MAAA,WAAA,CAAY,GAAA,EAAkB;;AATrB,QAAA,IAAA,CAAA,OAAmB,EAAA;AACnB,QAAA,IAAA,CAAA,iBAA2C,EAAA;AASlD,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI,OAAO,IAAI,MAAA,IAAU,QAAA;AAAU,UAAA,MAAA,GAAS,GAAA,CAAI,MAAA;AAChD,QAAA,IAAA,CAAK,SAAS,GAAA,CAAI,MAAA;AAClB,QAAA,IAAA,CAAK,WAAW,GAAA,CAAI,QAAA;AACpB,QAAA,IAAA,CAAK,IAAA,GAAO,IAAI,IAAA,IAAQ,IAAA;AACxB,QAAA,IAAA,CAAK,MAAA,GAAA,CAAS,KAAA,GAAA,CAAI,MAAA,MAAM,QAAA,EAAA,KAAA,MAAA,GAAA,SAAI,SAAA,CAAA,aAAY,MAAA,KAAM,IAAA,IAAN,WAAM,MAAA,GAAA,MAAA,GAAN,OAAS,GAAA,CAAI,QAAA,IAAY,KAAK,CAAC,CAAA;AACvE,QAAA,IAAA,CAAK,aAAa,GAAA,CAAI,UAAA;AACtB,QAAA,IAAA,CAAK,YAAY,GAAA,CAAI,SAAA;AACrB,QAAA,IAAA,CAAK,OAAO,GAAA,CAAI,IAAA;AAChB,QAAA,IAAA,CAAK,SAAS,MAAA,KAAM,IAAA,IAAN,MAAA,KAAM,MAAA,GAAA,SAAN,MAAA,CAAQ,MAAA;AACtB,QAAA,IAAA,CAAK,OAAO,EAAA;AACd,MAAA;;AA9BF,IAAA,OAAA,CAAA,SAAA,GAAA,SAAA;AAqCA,IAAA,SAAgB,cAAyB,GAAA,EAAc;AAErD,MAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,GAAG,CAAA;AAC9C,MAAA,IAAI,IAAA;AAAM,QAAA,OAAO,IAAA;AACjB,MAAA,MAAM,MAAA,GAAA,IAAS,SAAA,CAAA,WAAA,EAAY,KAAK,IAAA,CAAK,WAAA,EAAa,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA;AACjE,MAAA,MAAM,EAAC,GAAA,EAAK,KAAA,EAAK,GAAI,KAAK,IAAA,CAAK,IAAA;AAC/B,MAAA,MAAM,EAAC,aAAA,EAAa,GAAI,IAAA,CAAK,IAAA;AAC7B,MAAA,MAAM,GAAA,GAAM,IAAI,SAAA,CAAA,OAAA,CAAQ,IAAA,CAAK,OAAO,EAAC,GAAA,EAAK,KAAA,EAAO,aAAA,EAAc,CAAA;AAC/D,MAAA,IAAI,gBAAA;AACJ,MAAA,IAAI,IAAI,MAAA,EAAQ;AACd,QAAA,gBAAA,GAAmB,GAAA,CAAI,WAAW,OAAA,EAAS;AACzC,UAAA,GAAA,EAAK,kBAAA,CAAA,OAAA;AACL,UAAA,IAAA,EAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,oDAAA;AACP,SAAA,CAAA;AACH,MAAA;AAEA,MAAA,MAAM,YAAA,GAAe,GAAA,CAAI,SAAA,CAAU,UAAU,CAAA;AAC7C,MAAA,GAAA,CAAI,YAAA,GAAe,YAAA;AAEnB,MAAA,MAAM,SAAA,GAAuB;AAC3B,QAAA,GAAA;AACA,QAAA,SAAA,EAAW,KAAK,IAAA,CAAK,SAAA;AACrB,QAAA,IAAA,EAAM,QAAA,OAAA,CAAE,IAAA;AACR,QAAA,UAAA,EAAY,QAAA,OAAA,CAAE,UAAA;AACd,QAAA,kBAAA,EAAoB,QAAA,OAAA,CAAE,kBAAA;QACtB,SAAA,EAAW,CAAC,OAAA,CAAA,OAAA,CAAE,IAAI,CAAA;QAClB,WAAA,EAAa,CAAC,UAAA,GAAG,CAAA;;QACjB,SAAA,EAAW,CAAA;AACX,QAAA,SAAA,EAAW,EAAA;AACX,QAAA,iBAAA,sBAAuB,GAAA,EAAG;QAC1B,YAAA,EAAc,GAAA,CAAI,UAAA,CAChB,QAAA,EACA,IAAA,CAAK,IAAA,CAAK,KAAK,MAAA,KAAW,IAAA,GACtB,EAAC,GAAA,EAAK,GAAA,CAAI,MAAA,EAAQ,UAAM,SAAA,CAAA,SAAA,EAAU,GAAA,CAAI,MAAM,CAAA,KAC5C,EAAC,GAAA,EAAK,GAAA,CAAI,MAAA,EAAO,CAAA;AAEvB,QAAA,YAAA;QACA,eAAA,EAAiB,gBAAA;AACjB,QAAA,MAAA,EAAQ,GAAA,CAAI,MAAA;QACZ,SAAA,EAAW,GAAA;AACX,QAAA,MAAA;AACA,QAAA,MAAA,EAAQ,IAAI,MAAA,IAAU,MAAA;AACtB,QAAA,UAAA,EAAY,SAAA,CAAA,GAAA;AACZ,QAAA,aAAA,EAAe,GAAA,CAAI,UAAA,KAAe,IAAA,CAAK,IAAA,CAAK,MAAM,EAAA,GAAK,GAAA,CAAA;AACvD,QAAA,SAAA,EAAA,IAAW,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AACX,QAAA,IAAA,EAAM,IAAA,CAAK,IAAA;QACX,IAAA,EAAM;;AAGR,MAAA,IAAI,UAAA;AACJ,MAAA,IAAI;AACF,QAAA,IAAA,CAAK,aAAA,CAAc,IAAI,GAAG,CAAA;AAC1B,QAAA,CAAA,CAAA,EAAA,UAAA,CAAA,oBAAA,EAAqB,SAAS,CAAA;AAC9B,QAAA,GAAA,CAAI,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA;AAEpC,QAAA,MAAM,YAAA,GAAe,IAAI,QAAA,EAAQ;AACjC,QAAA,UAAA,GAAa,CAAA,EAAG,IAAI,SAAA,CAAU,OAAA,CAAA,QAAE,KAAK,CAAC,UAAU,YAAY,CAAA,CAAA;AAE5D,QAAA,IAAI,IAAA,CAAK,KAAK,IAAA,CAAK,OAAA;AAAS,UAAA,UAAA,GAAa,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,YAAY,GAAG,CAAA;AAE/E,QAAA,MAAM,YAAA,GAAe,IAAI,QAAA,CAAS,CAAA,EAAG,OAAA,CAAA,OAAA,CAAE,IAAI,CAAA,CAAA,EAAI,CAAA,EAAG,OAAA,CAAA,OAAA,CAAE,KAAK,IAAI,UAAU,CAAA;AACvE,QAAA,MAAM,WAAgC,YAAA,CAAa,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACzE,QAAA,IAAA,CAAK,MAAM,KAAA,CAAM,YAAA,EAAc,EAAC,GAAA,EAAK,UAAS,CAAA;AAE9C,QAAA,QAAA,CAAS,MAAA,GAAS,IAAA;AAClB,QAAA,QAAA,CAAS,SAAS,GAAA,CAAI,MAAA;AACtB,QAAA,QAAA,CAAS,SAAA,GAAY,GAAA;AACrB,QAAA,IAAI,GAAA,CAAI,MAAA;AAAS,UAAA,QAAA,CAAmC,MAAA,GAAS,IAAA;AAC7D,QAAA,IAAI,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,IAAA,EAAM;AAClC,UAAA,QAAA,CAAS,SAAS,EAAC,YAAA,EAAc,YAAA,EAAc,WAAA,EAAa,IAAI,OAAA,EAAO;AACzE,QAAA;AACA,QAAA,IAAI,IAAA,CAAK,KAAK,WAAA,EAAa;AACzB,UAAA,MAAM,EAAC,KAAA,EAAO,KAAA,EAAK,GAAI,SAAA;AACvB,UAAA,QAAA,CAAS,SAAA,GAAY;YACnB,KAAA,EAAO,KAAA,YAAiB,SAAA,CAAA,IAAA,GAAO,KAAA,CAAA,GAAY,KAAA;YAC3C,KAAA,EAAO,KAAA,YAAiB,SAAA,CAAA,IAAA,GAAO,KAAA,CAAA,GAAY,KAAA;AAC3C,YAAA,YAAA,EAAc,iBAAiB,SAAA,CAAA,IAAA;AAC/B,YAAA,YAAA,EAAc,iBAAiB,SAAA,CAAA;;AAEjC,UAAA,IAAI,QAAA,CAAS,MAAA;AAAQ,YAAA,QAAA,CAAS,OAAO,SAAA,GAAA,CAAY,CAAA,EAAA,SAAA,CAAA,SAAA,EAAU,SAAS,SAAS,CAAA;AAC/E,QAAA;AACA,QAAA,GAAA,CAAI,QAAA,GAAW,QAAA;AACf,QAAA,OAAO,GAAA;AACT,MAAA,CAAA,CAAA,OAAS,CAAA,EAAG;AACV,QAAA,OAAO,GAAA,CAAI,QAAA;AACX,QAAA,OAAO,GAAA,CAAI,YAAA;AACX,QAAA,IAAI,UAAA;AAAY,UAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,wCAAA,EAA0C,UAAU,CAAA;AAEtF,QAAA,MAAM,CAAA;AACR,MAAA,CAAA,SAAA;AACE,QAAA,IAAA,CAAK,aAAA,CAAc,OAAO,GAAG,CAAA;AAC/B,MAAA;AACF,IAAA;AA5FA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AA8FA,IAAA,SAAgB,UAAA,CAEd,IAAA,EACA,MAAA,EACA,GAAA,EAAW;;AAEX,MAAA,GAAA,GAAA,IAAM,SAAA,CAAA,UAAA,EAAW,KAAK,IAAA,CAAK,WAAA,EAAa,QAAQ,GAAG,CAAA;AACnD,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAC/B,MAAA,IAAI,SAAA;AAAW,QAAA,OAAO,SAAA;AAEtB,MAAA,IAAI,IAAA,GAAOE,QAAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,MAAM,GAAG,CAAA;AACvC,MAAA,IAAI,SAAS,MAAA,EAAW;AACtB,QAAA,MAAM,MAAA,GAAA,CAAS,KAAA,IAAA,CAAK,SAAA,MAAS,QAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAG,GAAG,CAAA;AACnC,QAAA,MAAM,EAAC,QAAA,EAAQ,GAAI,IAAA,CAAK,IAAA;AACxB,QAAA,IAAI,MAAA;AAAQ,UAAA,IAAA,GAAO,IAAI,SAAA,CAAU,EAAC,QAAQ,QAAA,EAAU,IAAA,EAAM,QAAO,CAAA;AACnE,MAAA;AAEA,MAAA,IAAI,IAAA,KAAS,MAAA;AAAW,QAAA;AACxB,MAAA,OAAQ,KAAK,IAAA,CAAK,GAAG,IAAI,eAAA,CAAgB,IAAA,CAAK,MAAM,IAAI,CAAA;AAC1D,IAAA;AAnBA,IAAA,OAAA,CAAA,UAAA,GAAA,UAAA;AAqBA,IAAA,SAAS,gBAA2B,GAAA,EAAc;AAChD,MAAA,IAAA,IAAI,SAAA,CAAA,SAAA,EAAU,IAAI,MAAA,EAAQ,IAAA,CAAK,KAAK,UAAU,CAAA;AAAG,QAAA,OAAO,GAAA,CAAI,MAAA;AAC5D,MAAA,OAAO,IAAI,QAAA,GAAW,GAAA,GAAM,aAAA,CAAc,IAAA,CAAK,MAAM,GAAG,CAAA;AAC1D,IAAA;AAGA,IAAA,SAAgB,mBAA8B,MAAA,EAAiB;AAC7D,MAAA,KAAA,MAAW,GAAA,IAAO,KAAK,aAAA,EAAe;AACpC,QAAA,IAAI,aAAA,CAAc,KAAK,MAAM,CAAA;AAAG,UAAA,OAAO,GAAA;AACzC,MAAA;AACF,IAAA;AAJA,IAAA,OAAA,CAAA,kBAAA,GAAA,kBAAA;AAMA,IAAA,SAAS,aAAA,CAAc,IAAe,EAAA,EAAa;AACjD,MAAA,OAAO,EAAA,CAAG,MAAA,KAAW,EAAA,CAAG,MAAA,IAAU,EAAA,CAAG,SAAS,EAAA,CAAG,IAAA,IAAQ,EAAA,CAAG,MAAA,KAAW,EAAA,CAAG,MAAA;AAC5E,IAAA;AAIA,IAAA,SAASA,SAEP,IAAA,EACA,GAAA,EAAA;AAEA,MAAA,IAAI,GAAA;AACJ,MAAA,OAAO,QAAQ,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,CAAA,IAAM,QAAA;AAAU,QAAA,GAAA,GAAM,GAAA;AACxD,MAAA,OAAO,GAAA,IAAO,KAAK,OAAA,CAAQ,GAAG,KAAK,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,GAAG,CAAA;AACvE,IAAA;AAGA,IAAA,SAAgB,cAEd,IAAA,EACA,GAAA,EAAA;AAEA,MAAA,MAAM,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,MAAM,GAAG,CAAA;AACzC,MAAA,MAAM,cAAU,SAAA,CAAA,cAAa,IAAA,CAAK,IAAA,CAAK,aAAa,CAAC,CAAA;AACrD,MAAA,IAAI,MAAA,GAAA,IAAS,SAAA,CAAA,WAAA,EAAY,KAAK,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,MAAA,EAAQ,MAAS,CAAA;AAEtE,MAAA,IAAI,MAAA,CAAO,KAAK,IAAA,CAAK,MAAM,EAAE,MAAA,GAAS,CAAA,IAAK,YAAY,MAAA,EAAQ;AAC7D,QAAA,OAAO,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,IAAI,CAAA;AAC1C,MAAA;AAEA,MAAA,MAAM,EAAA,GAAA,IAAK,SAAA,CAAA,WAAA,EAAY,OAAO,CAAA;AAC9B,MAAA,MAAM,WAAW,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,IAAK,IAAA,CAAK,QAAQ,EAAE,CAAA;AACjD,MAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,QAAA,MAAM,GAAA,GAAM,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,MAAM,QAAQ,CAAA;AACnD,QAAA,IAAI,QAAO,GAAA,KAAG,IAAA,IAAH,QAAG,MAAA,GAAA,MAAA,GAAH,IAAK,MAAA,CAAA,KAAW,QAAA;AAAU,UAAA;AACrC,QAAA,OAAO,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,GAAG,CAAA;AACzC,MAAA;AAEA,MAAA,IAAI,QAAO,QAAA,KAAQ,IAAA,IAAR,aAAQ,MAAA,GAAA,MAAA,GAAR,SAAU,MAAA,CAAA,KAAW,QAAA;AAAU,QAAA;AAC1C,MAAA,IAAI,CAAC,QAAA,CAAS,QAAA;AAAU,QAAA,aAAA,CAAc,IAAA,CAAK,MAAM,QAAQ,CAAA;AACzD,MAAA,IAAI,EAAA,KAAA,IAAO,SAAA,CAAA,WAAA,EAAY,GAAG,CAAA,EAAG;AAC3B,QAAA,MAAM,EAAC,QAAM,GAAI,QAAA;AACjB,QAAA,MAAM,EAAC,QAAA,EAAQ,GAAI,IAAA,CAAK,IAAA;AACxB,QAAA,MAAM,KAAA,GAAQ,OAAO,QAAQ,CAAA;AAC7B,QAAA,IAAI,KAAA;AAAO,UAAA,MAAA,GAAA,IAAS,SAAA,CAAA,UAAA,EAAW,KAAK,IAAA,CAAK,WAAA,EAAa,QAAQ,KAAK,CAAA;AACnE,QAAA,OAAO,IAAI,SAAA,CAAU,EAAC,QAAQ,QAAA,EAAU,IAAA,EAAM,QAAO,CAAA;AACvD,MAAA;AACA,MAAA,OAAO,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAA;AAC9C,IAAA;AA/BA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AAiCA,IAAA,IAAM,oBAAA,uBAA2B,GAAA,CAAI;AACnC,MAAA,YAAA;AACA,MAAA,mBAAA;AACA,MAAA,MAAA;AACA,MAAA,cAAA;AACA,MAAA;AACD,KAAA,CAAA;AAED,IAAA,SAAS,eAEP,SAAA,EACA,EAAC,MAAA,EAAQ,MAAA,EAAQ,MAAI,EAAY;;AAEjC,MAAA,IAAA,CAAA,CAAI,EAAA,GAAA,UAAU,QAAA,MAAQ,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAG,CAAC,CAAA,MAAM,GAAA;AAAK,QAAA;AACrC,MAAA,KAAA,MAAW,IAAA,IAAQ,UAAU,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,EAAG;AACzD,QAAA,IAAI,OAAO,MAAA,KAAW,SAAA;AAAW,UAAA;AACjC,QAAA,MAAM,aAAa,MAAA,CAAA,IAAO,MAAA,CAAA,gBAAA,EAAiB,IAAI,CAAC,CAAA;AAChD,QAAA,IAAI,UAAA,KAAe,MAAA;AAAW,UAAA;AAC9B,QAAA,MAAA,GAAS,UAAA;AAET,QAAA,MAAM,QAAQ,OAAO,MAAA,KAAW,YAAY,MAAA,CAAO,IAAA,CAAK,KAAK,QAAQ,CAAA;AACrE,QAAA,IAAI,CAAC,oBAAA,CAAqB,GAAA,CAAI,IAAI,KAAK,KAAA,EAAO;AAC5C,UAAA,MAAA,GAAA,IAAS,SAAA,CAAA,UAAA,EAAW,KAAK,IAAA,CAAK,WAAA,EAAa,QAAQ,KAAK,CAAA;AAC1D,QAAA;AACF,MAAA;AACA,MAAA,IAAI,GAAA;AACJ,MAAA,IAAI,OAAO,MAAA,IAAU,SAAA,IAAa,MAAA,CAAO,IAAA,IAAQ,CAAA,IAAC,MAAA,CAAA,oBAAA,EAAqB,MAAA,EAAQ,IAAA,CAAK,KAAK,CAAA,EAAG;AAC1F,QAAA,MAAM,IAAA,GAAA,IAAO,SAAA,CAAA,UAAA,EAAW,KAAK,IAAA,CAAK,WAAA,EAAa,MAAA,EAAQ,MAAA,CAAO,IAAI,CAAA;AAClE,QAAA,GAAA,GAAM,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAC3C,MAAA;AAGA,MAAA,MAAM,EAAC,QAAA,EAAQ,GAAI,IAAA,CAAK,IAAA;AACxB,MAAA,GAAA,GAAM,GAAA,IAAO,IAAI,SAAA,CAAU,EAAC,QAAQ,QAAA,EAAU,IAAA,EAAM,QAAO,CAAA;AAC3D,MAAA,IAAI,GAAA,CAAI,MAAA,KAAW,GAAA,CAAI,IAAA,CAAK,MAAA;AAAQ,QAAA,OAAO,GAAA;AAC3C,MAAA,OAAO,MAAA;AACT,IAAA;;;;;ACnUA,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAA,MAAA,CAAA,OAAA,GAAA;AAAA,MACE,GAAA,EAAO,gFAAA;AAAA,MACP,WAAA,EAAe,qEAAA;AAAA,MACf,IAAA,EAAQ,QAAA;AAAA,MACR,QAAA,EAAY,CAAC,OAAO,CAAA;AAAA,MACpB,UAAA,EAAc;AAAA,QACZ,KAAA,EAAS;AAAA,UACP,IAAA,EAAQ,QAAA;AAAA,UACR,KAAA,EAAS,CAAC,EAAC,MAAA,EAAU,yBAAuB,EAAG,EAAC,MAAA,EAAU,cAAA,EAAe;AAAA;AAC3E,OACF;AAAA,MACA,oBAAA,EAAwB;AAAA,KAC1B;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACZA,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAGA,IAAA,IAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,KAAK,6DAA6D,CAAA;AAGvG,IAAA,IAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,KAAK,0FAA0F,CAAA;AAGpI,IAAA,IAAM,SAAA,GAAY,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,KAAK,gBAAgB,CAAA;AAG7D,IAAA,IAAM,YAAA,GAAe,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,KAAK,kBAAkB,CAAA;AAGlE,IAAA,IAAM,eAAA,GAAkB,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,KAAK,gCAAgC,CAAA;AAMnF,IAAA,SAAS,yBAA0B,KAAA,EAAO;AACxC,MAAA,IAAI,GAAA,GAAM,EAAA;AACV,MAAA,IAAI,IAAA,GAAO,CAAA;AACX,MAAA,IAAI,CAAA,GAAI,CAAA;AAER,MAAA,KAAK,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACjC,QAAA,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,CAAE,UAAA,CAAW,CAAC,CAAA;AAC5B,QAAA,IAAI,SAAS,EAAA,EAAI;AACf,UAAA;AAAA,QACF;AACA,QAAA,IAAI,EAAG,IAAA,IAAQ,EAAA,IAAM,IAAA,IAAQ,EAAA,IAAQ,IAAA,IAAQ,EAAA,IAAM,IAAA,IAAQ,EAAA,IAAQ,IAAA,IAAQ,EAAA,IAAM,IAAA,IAAQ,GAAA,CAAA,EAAO;AAC9F,UAAA,OAAO,EAAA;AAAA,QACT;AACA,QAAA,GAAA,IAAO,MAAM,CAAC,CAAA;AACd,QAAA;AAAA,MACF;AAEA,MAAA,KAAK,CAAA,IAAK,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AAClC,QAAA,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,CAAE,UAAA,CAAW,CAAC,CAAA;AAC5B,QAAA,IAAI,EAAG,IAAA,IAAQ,EAAA,IAAM,IAAA,IAAQ,EAAA,IAAQ,IAAA,IAAQ,EAAA,IAAM,IAAA,IAAQ,EAAA,IAAQ,IAAA,IAAQ,EAAA,IAAM,IAAA,IAAQ,GAAA,CAAA,EAAO;AAC9F,UAAA,OAAO,EAAA;AAAA,QACT;AACA,QAAA,GAAA,IAAO,MAAM,CAAC,CAAA;AAAA,MAChB;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAaA,IAAA,IAAM,eAAA,GAAkB,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,KAAK,6BAA6B,CAAA;AAMhF,IAAA,SAAS,cAAe,MAAA,EAAQ;AAC9B,MAAA,MAAA,CAAO,MAAA,GAAS,CAAA;AAChB,MAAA,OAAO,IAAA;AAAA,IACT;AAQA,IAAA,SAAS,cAAA,CAAgB,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ;AAChD,MAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,QAAA,MAAM,GAAA,GAAM,yBAAyB,MAAM,CAAA;AAC3C,QAAA,IAAI,QAAQ,EAAA,EAAI;AACd,UAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,QAClB,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AACf,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,MAAA,CAAO,MAAA,GAAS,CAAA;AAAA,MAClB;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAMA,IAAA,SAAS,QAAS,KAAA,EAAO;AACvB,MAAA,IAAI,UAAA,GAAa,CAAA;AACjB,MAAA,MAAM,SAAS,EAAE,KAAA,EAAO,OAAO,OAAA,EAAS,EAAA,EAAI,MAAM,EAAA,EAAG;AAErD,MAAA,MAAM,UAAU,EAAC;AAEjB,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,IAAI,kBAAA,GAAqB,KAAA;AACzB,MAAA,IAAI,OAAA,GAAU,KAAA;AAEd,MAAA,IAAI,OAAA,GAAU,cAAA;AAEd,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,MAAM,MAAA,GAAS,MAAM,CAAC,CAAA;AACtB,QAAA,IAAI,MAAA,KAAW,GAAA,IAAO,MAAA,KAAW,GAAA,EAAK;AAAE,UAAA;AAAA,QAAS;AACjD,QAAA,IAAI,WAAW,GAAA,EAAK;AAClB,UAAA,IAAI,uBAAuB,IAAA,EAAM;AAC/B,YAAA,OAAA,GAAU,IAAA;AAAA,UACZ;AACA,UAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA,EAAG;AAAE,YAAA;AAAA,UAAM;AAC/C,UAAA,IAAI,EAAE,aAAa,CAAA,EAAG;AAEpB,YAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AACf,YAAA;AAAA,UACF;AACA,UAAA,IAAI,IAAI,CAAA,IAAK,KAAA,CAAM,CAAA,GAAI,CAAC,MAAM,GAAA,EAAK;AACjC,YAAA,kBAAA,GAAqB,IAAA;AAAA,UACvB;AACA,UAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAChB,UAAA;AAAA,QACF,CAAA,MAAA,IAAW,WAAW,GAAA,EAAK;AACzB,UAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA,EAAG;AAAE,YAAA;AAAA,UAAM;AAE/C,UAAA,OAAA,GAAU,aAAA;AAAA,QACZ,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,KAAK,MAAM,CAAA;AAClB,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,QAAA,IAAI,YAAY,aAAA,EAAe;AAC7B,UAAA,MAAA,CAAO,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AAAA,QAC9B,WAAW,OAAA,EAAS;AAClB,UAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,QAC9B,CAAA,MAAO;AACL,UAAA,OAAA,CAAQ,IAAA,CAAK,wBAAA,CAAyB,MAAM,CAAC,CAAA;AAAA,QAC/C;AAAA,MACF;AACA,MAAA,MAAA,CAAO,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,EAAE,CAAA;AAChC,MAAA,OAAO,MAAA;AAAA,IACT;AAaA,IAAA,SAAS,cAAe,IAAA,EAAM;AAC5B,MAAA,IAAI,SAAA,CAAU,IAAA,EAAM,GAAG,CAAA,GAAI,CAAA,EAAG;AAAE,QAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAM;AAAA,MAAE;AAC/D,MAAA,MAAM,IAAA,GAAO,QAAQ,IAAI,CAAA;AAEzB,MAAA,IAAI,CAAC,KAAK,KAAA,EAAO;AACf,QAAA,IAAI,UAAU,IAAA,CAAK,OAAA;AACnB,QAAA,IAAI,cAAc,IAAA,CAAK,OAAA;AACvB,QAAA,IAAI,KAAK,IAAA,EAAM;AACb,UAAA,OAAA,IAAW,MAAM,IAAA,CAAK,IAAA;AACtB,UAAA,WAAA,IAAe,QAAQ,IAAA,CAAK,IAAA;AAAA,QAC9B;AACA,QAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,MAAM,WAAA,EAAY;AAAA,MACpD,CAAA,MAAO;AACL,QAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAM;AAAA,MAC/B;AAAA,IACF;AAOA,IAAA,SAAS,SAAA,CAAW,KAAK,KAAA,EAAO;AAC9B,MAAA,IAAI,GAAA,GAAM,CAAA;AACV,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,QAAA,IAAI,GAAA,CAAI,CAAC,CAAA,KAAM,KAAA,EAAO,GAAA,EAAA;AAAA,MACxB;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAQA,IAAA,SAAS,kBAAmB,IAAA,EAAM;AAChC,MAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,IAAI,SAAA,GAAY,EAAA;AAChB,MAAA,IAAI,GAAA,GAAM,CAAA;AAGV,MAAA,OAAO,GAAA,GAAM,MAAM,MAAA,EAAQ;AACzB,QAAA,IAAI,QAAQ,CAAA,EAAG;AACb,UAAA,IAAI,UAAU,GAAA,EAAK;AACjB,YAAA;AAAA,UACF,CAAA,MAAA,IAAW,UAAU,GAAA,EAAK;AACxB,YAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AACf,YAAA;AAAA,UACF,CAAA,MAAO;AACL,YAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACjB,YAAA;AAAA,UACF;AAAA,QACF,CAAA,MAAA,IAAW,QAAQ,CAAA,EAAG;AACpB,UAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,YAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,cAAA;AAAA,YACF,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AAC3B,cAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,CAAC,CAAA;AACrB,cAAA;AAAA,YACF;AAAA,UACF,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AAC3B,YAAA,IAAI,MAAM,CAAC,CAAA,KAAM,OAAO,KAAA,CAAM,CAAC,MAAM,GAAA,EAAK;AACxC,cAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AACf,cAAA;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAA,MAAA,IAAW,QAAQ,CAAA,EAAG;AACpB,UAAA,IAAI,UAAU,KAAA,EAAO;AACnB,YAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,cAAA,MAAA,CAAO,GAAA,EAAI;AAAA,YACb;AACA,YAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AACf,YAAA;AAAA,UACF;AAAA,QACF;AACA,QAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,UAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,YAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,cAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,CAAC,CAAA;AACrB,cAAA;AAAA,YACF;AAAA,UACF,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AAC3B,YAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,CAAC,CAAA;AACrB,YAAA;AAAA,UACF;AAAA,QACF,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AAC3B,UAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,YAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,cAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,CAAC,CAAA;AACrB,cAAA;AAAA,YACF,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AAC3B,cAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACpB,gBAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,CAAC,CAAA;AACrB,gBAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,kBAAA,MAAA,CAAO,GAAA,EAAI;AAAA,gBACb;AACA,gBAAA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAGA,QAAA,IAAA,CAAK,YAAY,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,OAAO,EAAA,EAAI;AAC9C,UAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACjB,UAAA;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,SAAS,CAAC,CAAA;AACrC,UAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,SAAS,CAAA;AAAA,QAC/B;AAAA,MACF;AAEA,MAAA,OAAO,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA,IACvB;AAYA,IAAA,IAAM,WAAA,GAAc,EAAE,GAAA,EAAK,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM;AACjF,IAAA,IAAM,aAAA,GAAgB,UAAA;AACtB,IAAA,IAAM,sBAAA,GAAyB,SAAA;AAE/B,IAAA,SAAS,sBAAA,CAAwB,MAAM,IAAA,EAAM;AAC3C,MAAA,MAAM,EAAA,GAAK,OAAO,sBAAA,GAAyB,aAAA;AAC3C,MAAA,EAAA,CAAG,SAAA,GAAY,CAAA;AACf,MAAA,OAAO,KAAK,OAAA,CAAQ,EAAA,EAAI,CAAC,EAAA,KAAO,WAAA,CAAY,EAAE,CAAC,CAAA;AAAA,IACjD;AAUA,IAAA,SAAS,wBAAA,CAA0B,KAAA,EAAO,gBAAA,GAAmB,KAAA,EAAO;AAClE,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,KAAM,EAAA,EAAI;AAC7B,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,IAAI,MAAA,GAAS,EAAA;AAEb,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,IAAI,MAAM,CAAC,CAAA,KAAM,OAAO,CAAA,GAAI,CAAA,GAAI,MAAM,MAAA,EAAQ;AAC5C,UAAA,MAAM,MAAM,KAAA,CAAM,KAAA,CAAM,CAAA,GAAI,CAAA,EAAG,IAAI,CAAC,CAAA;AACpC,UAAA,IAAI,SAAA,CAAU,GAAG,CAAA,EAAG;AAClB,YAAA,MAAM,aAAA,GAAgB,IAAI,WAAA,EAAY;AACtC,YAAA,MAAM,UAAU,MAAA,CAAO,YAAA,CAAa,QAAA,CAAS,aAAA,EAAe,EAAE,CAAC,CAAA;AAE/D,YAAA,IAAI,gBAAA,IAAoB,YAAA,CAAa,OAAO,CAAA,EAAG;AAC7C,cAAA,MAAA,IAAU,OAAA;AAAA,YACZ,CAAA,MAAO;AACL,cAAA,MAAA,IAAU,GAAA,GAAM,aAAA;AAAA,YAClB;AAEA,YAAA,CAAA,IAAK,CAAA;AACL,YAAA;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAA,IAAU,MAAM,CAAC,CAAA;AAAA,MACnB;AAEA,MAAA,OAAO,MAAA;AAAA,IACT;AAUA,IAAA,SAAS,sBAAuB,KAAA,EAAO;AACrC,MAAA,IAAI,MAAA,GAAS,EAAA;AAEb,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,IAAI,MAAM,CAAC,CAAA,KAAM,OAAO,CAAA,GAAI,CAAA,GAAI,MAAM,MAAA,EAAQ;AAC5C,UAAA,MAAM,MAAM,KAAA,CAAM,KAAA,CAAM,CAAA,GAAI,CAAA,EAAG,IAAI,CAAC,CAAA;AACpC,UAAA,IAAI,SAAA,CAAU,GAAG,CAAA,EAAG;AAClB,YAAA,MAAM,aAAA,GAAgB,IAAI,WAAA,EAAY;AACtC,YAAA,MAAM,UAAU,MAAA,CAAO,YAAA,CAAa,QAAA,CAAS,aAAA,EAAe,EAAE,CAAC,CAAA;AAE/D,YAAA,IAAI,OAAA,KAAY,GAAA,IAAO,YAAA,CAAa,OAAO,CAAA,EAAG;AAC5C,cAAA,MAAA,IAAU,OAAA;AAAA,YACZ,CAAA,MAAO;AACL,cAAA,MAAA,IAAU,GAAA,GAAM,aAAA;AAAA,YAClB;AAEA,YAAA,CAAA,IAAK,CAAA;AACL,YAAA;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,eAAA,CAAgB,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG;AAC7B,UAAA,MAAA,IAAU,MAAM,CAAC,CAAA;AAAA,QACnB,CAAA,MAAO;AACL,UAAA,MAAA,IAAU,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,QAC3B;AAAA,MACF;AAEA,MAAA,OAAO,MAAA;AAAA,IACT;AAQA,IAAA,SAAS,wBAAyB,KAAA,EAAO;AACvC,MAAA,IAAI,MAAA,GAAS,EAAA;AAEb,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,IAAI,MAAM,CAAC,CAAA,KAAM,OAAO,CAAA,GAAI,CAAA,GAAI,MAAM,MAAA,EAAQ;AAC5C,UAAA,MAAM,MAAM,KAAA,CAAM,KAAA,CAAM,CAAA,GAAI,CAAA,EAAG,IAAI,CAAC,CAAA;AACpC,UAAA,IAAI,SAAA,CAAU,GAAG,CAAA,EAAG;AAClB,YAAA,MAAA,IAAU,GAAA,GAAM,IAAI,WAAA,EAAY;AAChC,YAAA,CAAA,IAAK,CAAA;AACL,YAAA;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAA,IAAU,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,MAC3B;AAEA,MAAA,OAAO,MAAA;AAAA,IACT;AAMA,IAAA,SAAS,mBAAoB,SAAA,EAAW;AACtC,MAAA,MAAM,YAAY,EAAC;AAEnB,MAAA,IAAI,SAAA,CAAU,aAAa,MAAA,EAAW;AACpC,QAAA,SAAA,CAAU,IAAA,CAAK,UAAU,QAAQ,CAAA;AACjC,QAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AAAA,MACpB;AAEA,MAAA,IAAI,SAAA,CAAU,SAAS,MAAA,EAAW;AAChC,QAAA,IAAI,IAAA,GAAO,QAAA,CAAS,SAAA,CAAU,IAAI,CAAA;AAClC,QAAA,IAAI,CAAC,MAAA,CAAO,IAAI,CAAA,EAAG;AACjB,UAAA,MAAM,OAAA,GAAU,cAAc,IAAI,CAAA;AAClC,UAAA,IAAI,OAAA,CAAQ,WAAW,IAAA,EAAM;AAC3B,YAAA,IAAA,GAAO,CAAA,CAAA,EAAI,QAAQ,WAAW,CAAA,CAAA,CAAA;AAAA,UAChC,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,sBAAA,CAAuB,MAAM,KAAK,CAAA;AAAA,UAC3C;AAAA,QACF;AACA,QAAA,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,MACrB;AAEA,MAAA,IAAI,OAAO,SAAA,CAAU,IAAA,KAAS,YAAY,OAAO,SAAA,CAAU,SAAS,QAAA,EAAU;AAC5E,QAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AAClB,QAAA,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,MACvC;AAEA,MAAA,OAAO,SAAA,CAAU,MAAA,GAAS,SAAA,CAAU,IAAA,CAAK,EAAE,CAAA,GAAI,MAAA;AAAA,IACjD;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,eAAA;AAAA,MACA,kBAAA;AAAA,MACA,sBAAA;AAAA,MACA,wBAAA;AAAA,MACA,qBAAA;AAAA,MACA,uBAAA;AAAA,MACA,iBAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1bA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,EAAE,QAAO,GAAI,aAAA,EAAA;AACnB,IAAA,IAAM,OAAA,GAAU,mEAAA;AAEhB,IAAA,IAAM,oBAAA;AAAA;AAAA,MAA6C;AAAA,QAAC,MAAA;AAAA,QAAQ,OAAA;AAAA,QAAS,IAAA;AAAA,QACnE,KAAA;AAAA,QAAO,KAAA;AAAA,QAAO;AAAA;AAAU,KAAA;AAQ1B,IAAA,SAAS,kBAAmB,IAAA,EAAM;AAChC,MAAA,OAAO,oBAAA,CAAqB,OAAA;AAAA;AAAA,QAA0B;AAAA,OAAK,KAAM,EAAA;AAAA,IACnE;AAwBA,IAAA,SAAS,WAAY,WAAA,EAAa;AAChC,MAAA,IAAI,WAAA,CAAY,WAAW,IAAA,EAAM;AAC/B,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,KAAW,KAAA,EAAO;AACvC,QAAA,OAAO,KAAA;AAAA,MACT,CAAA,MAAA,IAAW,YAAY,MAAA,EAAQ;AAC7B,QAAA,OACE,WAAA,CAAY,MAAA,CAAO,MAAA,KAAW,CAAA,KAC7B,YAAY,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,IAAO,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,SAC3D,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,IAAO,WAAA,CAAY,MAAA,CAAO,CAAC,MAAM,GAAA,CAAA,KAC3D,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,IAAO,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,CAAA;AAAA,MAEhE,CAAA,MAAO;AACL,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF;AAGA,IAAA,SAAS,UAAW,SAAA,EAAW;AAC7B,MAAA,IAAI,CAAC,UAAU,IAAA,EAAM;AACnB,QAAA,SAAA,CAAU,KAAA,GAAQ,UAAU,KAAA,IAAS,6BAAA;AAAA,MACvC;AAEA,MAAA,OAAO,SAAA;AAAA,IACT;AAGA,IAAA,SAAS,cAAe,SAAA,EAAW;AACjC,MAAA,MAAM,SAAS,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA,CAAE,aAAY,KAAM,OAAA;AAG1D,MAAA,IAAI,UAAU,IAAA,MAAU,MAAA,GAAS,MAAM,EAAA,CAAA,IAAO,SAAA,CAAU,SAAS,EAAA,EAAI;AACnE,QAAA,SAAA,CAAU,IAAA,GAAO,MAAA;AAAA,MACnB;AAGA,MAAA,IAAI,CAAC,UAAU,IAAA,EAAM;AACnB,QAAA,SAAA,CAAU,IAAA,GAAO,GAAA;AAAA,MACnB;AAMA,MAAA,OAAO,SAAA;AAAA,IACT;AAGA,IAAA,SAAS,QAAS,WAAA,EAAa;AAE7B,MAAA,WAAA,CAAY,MAAA,GAAS,WAAW,WAAW,CAAA;AAG3C,MAAA,WAAA,CAAY,YAAA,GAAA,CAAgB,YAAY,IAAA,IAAQ,GAAA,KAAQ,YAAY,KAAA,GAAQ,GAAA,GAAM,YAAY,KAAA,GAAQ,EAAA,CAAA;AACtG,MAAA,WAAA,CAAY,IAAA,GAAO,MAAA;AACnB,MAAA,WAAA,CAAY,KAAA,GAAQ,MAAA;AAEpB,MAAA,OAAO,WAAA;AAAA,IACT;AAGA,IAAA,SAAS,YAAa,WAAA,EAAa;AAEjC,MAAA,IAAI,WAAA,CAAY,UAAU,UAAA,CAAW,WAAW,IAAI,GAAA,GAAM,EAAA,CAAA,IAAO,WAAA,CAAY,IAAA,KAAS,EAAA,EAAI;AACxF,QAAA,WAAA,CAAY,IAAA,GAAO,MAAA;AAAA,MACrB;AAGA,MAAA,IAAI,OAAO,WAAA,CAAY,MAAA,KAAW,SAAA,EAAW;AAC3C,QAAA,WAAA,CAAY,MAAA,GAAU,WAAA,CAAY,MAAA,GAAS,KAAA,GAAQ,IAAA;AACnD,QAAA,WAAA,CAAY,MAAA,GAAS,MAAA;AAAA,MACvB;AAGA,MAAA,IAAI,YAAY,YAAA,EAAc;AAC5B,QAAA,MAAM,CAAC,IAAA,EAAM,KAAK,IAAI,WAAA,CAAY,YAAA,CAAa,MAAM,GAAG,CAAA;AACxD,QAAA,WAAA,CAAY,IAAA,GAAQ,IAAA,IAAQ,IAAA,KAAS,GAAA,GAAM,IAAA,GAAO,MAAA;AAClD,QAAA,WAAA,CAAY,KAAA,GAAQ,KAAA;AACpB,QAAA,WAAA,CAAY,YAAA,GAAe,MAAA;AAAA,MAC7B;AAGA,MAAA,WAAA,CAAY,QAAA,GAAW,MAAA;AAEvB,MAAA,OAAO,WAAA;AAAA,IACT;AAGA,IAAA,SAAS,QAAA,CAAU,cAAc,OAAA,EAAS;AACxC,MAAA,IAAI,CAAC,aAAa,IAAA,EAAM;AACtB,QAAA,YAAA,CAAa,KAAA,GAAQ,uBAAA;AACrB,QAAA,OAAO,YAAA;AAAA,MACT;AACA,MAAA,MAAM,OAAA,GAAU,YAAA,CAAa,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAC/C,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,YAAA,CAAa,MAAA,IAAU,KAAA;AACxD,QAAA,YAAA,CAAa,GAAA,GAAM,OAAA,CAAQ,CAAC,CAAA,CAAE,WAAA,EAAY;AAC1C,QAAA,YAAA,CAAa,GAAA,GAAM,QAAQ,CAAC,CAAA;AAC5B,QAAA,MAAM,YAAY,CAAA,EAAG,MAAM,IAAI,OAAA,CAAQ,GAAA,IAAO,aAAa,GAAG,CAAA,CAAA;AAC9D,QAAA,MAAM,aAAA,GAAgB,iBAAiB,SAAS,CAAA;AAChD,QAAA,YAAA,CAAa,IAAA,GAAO,MAAA;AAEpB,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,YAAA,GAAe,aAAA,CAAc,KAAA,CAAM,YAAA,EAAc,OAAO,CAAA;AAAA,QAC1D;AAAA,MACF,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,KAAA,GAAQ,aAAa,KAAA,IAAS,wBAAA;AAAA,MAC7C;AAEA,MAAA,OAAO,YAAA;AAAA,IACT;AAGA,IAAA,SAAS,YAAA,CAAc,cAAc,OAAA,EAAS;AAC5C,MAAA,IAAI,YAAA,CAAa,QAAQ,MAAA,EAAW;AAClC,QAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,MACxD;AACA,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,YAAA,CAAa,MAAA,IAAU,KAAA;AACxD,MAAA,MAAM,GAAA,GAAM,YAAA,CAAa,GAAA,CAAI,WAAA,EAAY;AACzC,MAAA,MAAM,YAAY,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,OAAA,CAAQ,OAAO,GAAG,CAAA,CAAA;AACjD,MAAA,MAAM,aAAA,GAAgB,iBAAiB,SAAS,CAAA;AAEhD,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,YAAA,GAAe,aAAA,CAAc,SAAA,CAAU,YAAA,EAAc,OAAO,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,YAAA,GAAe,YAAA;AACrB,MAAA,MAAM,MAAM,YAAA,CAAa,GAAA;AACzB,MAAA,YAAA,CAAa,OAAO,CAAA,EAAG,GAAA,IAAO,OAAA,CAAQ,GAAG,IAAI,GAAG,CAAA,CAAA;AAEhD,MAAA,OAAA,CAAQ,UAAA,GAAa,IAAA;AACrB,MAAA,OAAO,YAAA;AAAA,IACT;AAGA,IAAA,SAAS,YAAA,CAAc,cAAc,OAAA,EAAS;AAC5C,MAAA,MAAM,aAAA,GAAgB,YAAA;AACtB,MAAA,aAAA,CAAc,OAAO,aAAA,CAAc,GAAA;AACnC,MAAA,aAAA,CAAc,GAAA,GAAM,MAAA;AAEpB,MAAA,IAAI,CAAC,OAAA,CAAQ,QAAA,KAAa,CAAC,aAAA,CAAc,QAAQ,CAAC,MAAA,CAAO,aAAA,CAAc,IAAI,CAAA,CAAA,EAAI;AAC7E,QAAA,aAAA,CAAc,KAAA,GAAQ,cAAc,KAAA,IAAS,oBAAA;AAAA,MAC/C;AAEA,MAAA,OAAO,aAAA;AAAA,IACT;AAGA,IAAA,SAAS,iBAAkB,aAAA,EAAe;AACxC,MAAA,MAAM,YAAA,GAAe,aAAA;AAErB,MAAA,YAAA,CAAa,GAAA,GAAA,CAAO,aAAA,CAAc,IAAA,IAAQ,EAAA,EAAI,WAAA,EAAY;AAC1D,MAAA,OAAO,YAAA;AAAA,IACT;AAEA,IAAA,IAAM,IAAA;AAAA;AAAA,MAAqC;AAAA,QACzC,MAAA,EAAQ,MAAA;AAAA,QACR,UAAA,EAAY,IAAA;AAAA,QACZ,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KAAA;AAEA,IAAA,IAAM,KAAA;AAAA;AAAA,MAAsC;AAAA,QAC1C,MAAA,EAAQ,OAAA;AAAA,QACR,YAAY,IAAA,CAAK,UAAA;AAAA,QACjB,KAAA,EAAO,SAAA;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KAAA;AAEA,IAAA,IAAM,EAAA;AAAA;AAAA,MAAmC;AAAA,QACvC,MAAA,EAAQ,IAAA;AAAA,QACR,UAAA,EAAY,IAAA;AAAA,QACZ,KAAA,EAAO,OAAA;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KAAA;AAEA,IAAA,IAAM,GAAA;AAAA;AAAA,MAAoC;AAAA,QACxC,MAAA,EAAQ,KAAA;AAAA,QACR,YAAY,EAAA,CAAG,UAAA;AAAA,QACf,OAAO,EAAA,CAAG,KAAA;AAAA,QACV,WAAW,EAAA,CAAG;AAAA;AAChB,KAAA;AAEA,IAAA,IAAM,GAAA;AAAA;AAAA,MAAoC;AAAA,QACxC,MAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAO,QAAA;AAAA,QACP,SAAA,EAAW,YAAA;AAAA,QACX,aAAA,EAAe;AAAA;AACjB,KAAA;AAEA,IAAA,IAAM,OAAA;AAAA;AAAA,MAAwC;AAAA,QAC5C,MAAA,EAAQ,UAAA;AAAA,QACR,KAAA,EAAO,YAAA;AAAA,QACP,SAAA,EAAW,gBAAA;AAAA,QACX,aAAA,EAAe;AAAA;AACjB,KAAA;AAEA,IAAA,IAAM,OAAA;AAAA;AAAA,MAA4D;AAAA,QAChE,IAAA;AAAA,QACA,KAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,UAAA,EAAY;AAAA;AACd,KAAA;AAEA,IAAA,MAAA,CAAO,cAAA,CAAe,SAAS,IAAI,CAAA;AAMnC,IAAA,SAAS,iBAAkB,MAAA,EAAQ;AACjC,MAAA,OACE,MAAA,KACE,OAAA;AAAA;AAAA,QAAmC;AAAA,OAAO,IAC1C,OAAA;AAAA;AAAA,QAAkC,OAAO,WAAA;AAAY,OAAE,CAAA,IAEzD,MAAA;AAAA,IACJ;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,UAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1QA,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,EAAE,aAAA,EAAe,iBAAA,EAAmB,kBAAA,EAAoB,wBAAA,EAA0B,uBAAuB,uBAAA,EAAyB,sBAAA,EAAwB,MAAA,EAAQ,eAAA,EAAgB,GAAI,aAAA,EAAA;AAC5L,IAAA,IAAM,EAAE,OAAA,EAAS,gBAAA,EAAiB,GAAI,eAAA,EAAA;AAQtC,IAAA,SAAS,SAAA,CAAW,KAAK,OAAA,EAAS;AAChC,MAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,QAAA,GAAA;AAAA,QAAwB,eAAA,CAAgB,KAAK,OAAO,CAAA;AAAA,MACtD,CAAA,MAAA,IAAW,OAAO,GAAA,KAAQ,QAAA,EAAU;AAClC,QAAA,GAAA;AAAA,QAAwB,KAAA,CAAM,SAAA,CAAU,GAAA,EAAK,OAAO,GAAG,OAAO,CAAA;AAAA,MAChE;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAQA,IAAA,SAASA,QAAAA,CAAS,OAAA,EAAS,WAAA,EAAa,OAAA,EAAS;AAC/C,MAAA,MAAM,iBAAA,GAAoB,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,EAAE,MAAA,EAAQ,MAAA,EAAO,EAAG,OAAO,CAAA,GAAI,EAAE,MAAA,EAAQ,MAAA,EAAO;AAClG,MAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,CAAM,OAAA,EAAS,iBAAiB,CAAA,EAAG,KAAA,CAAM,WAAA,EAAa,iBAAiB,CAAA,EAAG,iBAAA,EAAmB,IAAI,CAAA;AACnI,MAAA,iBAAA,CAAkB,UAAA,GAAa,IAAA;AAC/B,MAAA,OAAO,SAAA,CAAU,UAAU,iBAAiB,CAAA;AAAA,IAC9C;AASA,IAAA,SAAS,gBAAA,CAAkB,IAAA,EAAMC,SAAAA,EAAU,OAAA,EAAS,iBAAA,EAAmB;AAErE,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,QAAA,IAAA,GAAO,KAAA,CAAM,SAAA,CAAU,IAAA,EAAM,OAAO,GAAG,OAAO,CAAA;AAC9C,QAAAA,YAAW,KAAA,CAAM,SAAA,CAAUA,SAAAA,EAAU,OAAO,GAAG,OAAO,CAAA;AAAA,MACxD;AACA,MAAA,OAAA,GAAU,WAAW,EAAC;AAEtB,MAAA,IAAI,CAAC,OAAA,CAAQ,QAAA,IAAYA,SAAAA,CAAS,MAAA,EAAQ;AACxC,QAAA,MAAA,CAAO,SAASA,SAAAA,CAAS,MAAA;AAEzB,QAAA,MAAA,CAAO,WAAWA,SAAAA,CAAS,QAAA;AAC3B,QAAA,MAAA,CAAO,OAAOA,SAAAA,CAAS,IAAA;AACvB,QAAA,MAAA,CAAO,OAAOA,SAAAA,CAAS,IAAA;AACvB,QAAA,MAAA,CAAO,IAAA,GAAO,iBAAA,CAAkBA,SAAAA,CAAS,IAAA,IAAQ,EAAE,CAAA;AACnD,QAAA,MAAA,CAAO,QAAQA,SAAAA,CAAS,KAAA;AAAA,MAC1B,CAAA,MAAO;AACL,QAAA,IAAIA,SAAAA,CAAS,aAAa,MAAA,IAAaA,SAAAA,CAAS,SAAS,MAAA,IAAaA,SAAAA,CAAS,SAAS,MAAA,EAAW;AAEjG,UAAA,MAAA,CAAO,WAAWA,SAAAA,CAAS,QAAA;AAC3B,UAAA,MAAA,CAAO,OAAOA,SAAAA,CAAS,IAAA;AACvB,UAAA,MAAA,CAAO,OAAOA,SAAAA,CAAS,IAAA;AACvB,UAAA,MAAA,CAAO,IAAA,GAAO,iBAAA,CAAkBA,SAAAA,CAAS,IAAA,IAAQ,EAAE,CAAA;AACnD,UAAA,MAAA,CAAO,QAAQA,SAAAA,CAAS,KAAA;AAAA,QAC1B,CAAA,MAAO;AACL,UAAA,IAAI,CAACA,UAAS,IAAA,EAAM;AAClB,YAAA,MAAA,CAAO,OAAO,IAAA,CAAK,IAAA;AACnB,YAAA,IAAIA,SAAAA,CAAS,UAAU,MAAA,EAAW;AAChC,cAAA,MAAA,CAAO,QAAQA,SAAAA,CAAS,KAAA;AAAA,YAC1B,CAAA,MAAO;AACL,cAAA,MAAA,CAAO,QAAQ,IAAA,CAAK,KAAA;AAAA,YACtB;AAAA,UACF,CAAA,MAAO;AACL,YAAA,IAAIA,SAAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,EAAK;AAC5B,cAAA,MAAA,CAAO,IAAA,GAAO,iBAAA,CAAkBA,SAAAA,CAAS,IAAI,CAAA;AAAA,YAC/C,CAAA,MAAO;AACL,cAAA,IAAA,CAAK,IAAA,CAAK,QAAA,KAAa,MAAA,IAAa,IAAA,CAAK,IAAA,KAAS,MAAA,IAAa,IAAA,CAAK,IAAA,KAAS,MAAA,KAAc,CAAC,IAAA,CAAK,IAAA,EAAM;AACrG,gBAAA,MAAA,CAAO,IAAA,GAAO,MAAMA,SAAAA,CAAS,IAAA;AAAA,cAC/B,CAAA,MAAA,IAAW,CAAC,IAAA,CAAK,IAAA,EAAM;AACrB,gBAAA,MAAA,CAAO,OAAOA,SAAAA,CAAS,IAAA;AAAA,cACzB,CAAA,MAAO;AACL,gBAAA,MAAA,CAAO,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,GAAG,CAAA,GAAI,CAAC,CAAA,GAAIA,SAAAA,CAAS,IAAA;AAAA,cAC9E;AACA,cAAA,MAAA,CAAO,IAAA,GAAO,iBAAA,CAAkB,MAAA,CAAO,IAAI,CAAA;AAAA,YAC7C;AACA,YAAA,MAAA,CAAO,QAAQA,SAAAA,CAAS,KAAA;AAAA,UAC1B;AAEA,UAAA,MAAA,CAAO,WAAW,IAAA,CAAK,QAAA;AACvB,UAAA,MAAA,CAAO,OAAO,IAAA,CAAK,IAAA;AACnB,UAAA,MAAA,CAAO,OAAO,IAAA,CAAK,IAAA;AAAA,QACrB;AACA,QAAA,MAAA,CAAO,SAAS,IAAA,CAAK,MAAA;AAAA,MACvB;AAEA,MAAA,MAAA,CAAO,WAAWA,SAAAA,CAAS,QAAA;AAE3B,MAAA,OAAO,MAAA;AAAA,IACT;AAQA,IAAA,SAAS,KAAA,CAAO,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS;AACnC,MAAA,MAAM,WAAA,GAAc,sBAAA,CAAuB,IAAA,EAAM,OAAO,CAAA;AACxD,MAAA,MAAM,WAAA,GAAc,sBAAA,CAAuB,IAAA,EAAM,OAAO,CAAA;AAExD,MAAA,OAAO,WAAA,KAAgB,UAAa,WAAA,KAAgB,MAAA,IAAa,YAAY,WAAA,EAAY,KAAM,YAAY,WAAA,EAAY;AAAA,IACzH;AAOA,IAAA,SAAS,SAAA,CAAW,OAAO,IAAA,EAAM;AAC/B,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,WAAW,KAAA,CAAM,SAAA;AAAA,QACjB,cAAc,KAAA,CAAM,YAAA;AAAA,QACpB,QAAQ,KAAA,CAAM,MAAA;AAAA,QACd,KAAA,EAAO;AAAA,OACT;AACA,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,IAAI,IAAI,CAAA;AACtC,MAAA,MAAM,YAAY,EAAC;AAGnB,MAAA,MAAM,aAAA,GAAgB,gBAAA,CAAiB,OAAA,CAAQ,MAAA,IAAU,UAAU,MAAM,CAAA;AAGzE,MAAA,IAAI,iBAAiB,aAAA,CAAc,SAAA,EAAW,aAAA,CAAc,SAAA,CAAU,WAAW,OAAO,CAAA;AAExF,MAAA,IAAI,SAAA,CAAU,SAAS,MAAA,EAAW;AAChC,QAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,UAAA,SAAA,CAAU,IAAA,GAAO,uBAAA,CAAwB,SAAA,CAAU,IAAI,CAAA;AAEvD,UAAA,IAAI,SAAA,CAAU,WAAW,MAAA,EAAW;AAClC,YAAA,SAAA,CAAU,OAAO,SAAA,CAAU,IAAA,CAAK,MAAM,KAAK,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,UACvD;AAAA,QACF,CAAA,MAAO;AACL,UAAA,SAAA,CAAU,IAAA,GAAO,wBAAA,CAAyB,SAAA,CAAU,IAAI,CAAA;AAAA,QAC1D;AAAA,MACF;AAEA,MAAA,IAAI,OAAA,CAAQ,SAAA,KAAc,QAAA,IAAY,SAAA,CAAU,MAAA,EAAQ;AACtD,QAAA,SAAA,CAAU,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,GAAG,CAAA;AAAA,MACtC;AAEA,MAAA,MAAM,SAAA,GAAY,mBAAmB,SAAS,CAAA;AAC9C,MAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,QAAA,IAAI,OAAA,CAAQ,cAAc,QAAA,EAAU;AAClC,UAAA,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,QACrB;AAEA,QAAA,SAAA,CAAU,KAAK,SAAS,CAAA;AAExB,QAAA,IAAI,UAAU,IAAA,IAAQ,SAAA,CAAU,IAAA,CAAK,CAAC,MAAM,GAAA,EAAK;AAC/C,UAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AAAA,QACpB;AAAA,MACF;AACA,MAAA,IAAI,SAAA,CAAU,SAAS,MAAA,EAAW;AAChC,QAAA,IAAI,IAAI,SAAA,CAAU,IAAA;AAElB,QAAA,IAAI,CAAC,OAAA,CAAQ,YAAA,KAAiB,CAAC,aAAA,IAAiB,CAAC,cAAc,YAAA,CAAA,EAAe;AAC5E,UAAA,CAAA,GAAI,kBAAkB,CAAC,CAAA;AAAA,QACzB;AAEA,QAAA,IACE,SAAA,KAAc,UACd,CAAA,CAAE,CAAC,MAAM,GAAA,IACT,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA,EACT;AAEA,UAAA,CAAA,GAAI,MAAA,GAAS,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA;AAAA,QACxB;AAEA,QAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAAA,MAClB;AAEA,MAAA,IAAI,SAAA,CAAU,UAAU,MAAA,EAAW;AACjC,QAAA,SAAA,CAAU,IAAA,CAAK,GAAA,EAAK,SAAA,CAAU,KAAK,CAAA;AAAA,MACrC;AAEA,MAAA,IAAI,SAAA,CAAU,aAAa,MAAA,EAAW;AACpC,QAAA,SAAA,CAAU,IAAA,CAAK,GAAA,EAAK,SAAA,CAAU,QAAQ,CAAA;AAAA,MACxC;AACA,MAAA,OAAO,SAAA,CAAU,KAAK,EAAE,CAAA;AAAA,IAC1B;AAEA,IAAA,IAAM,SAAA,GAAY,6HAAA;AAOlB,IAAA,SAAS,aAAA,CAAe,QAAQ,OAAA,EAAS;AACvC,MAAA,IAAI,OAAA,CAAQ,CAAC,CAAA,KAAM,MAAA,IAAa,MAAA,CAAO,QAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,EAAK;AACrE,QAAA,OAAO,yDAAA;AAAA,MACT;AAEA,MAAA,IAAI,OAAO,OAAO,IAAA,KAAS,QAAA,KAAa,OAAO,IAAA,GAAO,CAAA,IAAK,MAAA,CAAO,IAAA,GAAO,KAAA,CAAA,EAAQ;AAC/E,QAAA,OAAO,wBAAA;AAAA,MACT;AAEA,MAAA,OAAO,MAAA;AAAA,IACT;AAOA,IAAA,SAAS,eAAA,CAAiB,KAAK,IAAA,EAAM;AACnC,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,IAAI,IAAI,CAAA;AAEtC,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,MAAA,EAAQ,MAAA;AAAA,QACR,QAAA,EAAU,MAAA;AAAA,QACV,IAAA,EAAM,EAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,EAAA;AAAA,QACN,KAAA,EAAO,MAAA;AAAA,QACP,QAAA,EAAU;AAAA,OACZ;AAEA,MAAA,IAAI,wBAAA,GAA2B,KAAA;AAE/B,MAAA,IAAI,IAAA,GAAO,KAAA;AACX,MAAA,IAAI,OAAA,CAAQ,cAAc,QAAA,EAAU;AAClC,QAAA,IAAI,QAAQ,MAAA,EAAQ;AAClB,UAAA,GAAA,GAAM,OAAA,CAAQ,SAAS,GAAA,GAAM,GAAA;AAAA,QAC/B,CAAA,MAAO;AACL,UAAA,GAAA,GAAM,IAAA,GAAO,GAAA;AAAA,QACf;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA;AAEnC,MAAA,IAAI,OAAA,EAAS;AAEX,QAAA,MAAA,CAAO,MAAA,GAAS,QAAQ,CAAC,CAAA;AACzB,QAAA,MAAA,CAAO,QAAA,GAAW,QAAQ,CAAC,CAAA;AAC3B,QAAA,MAAA,CAAO,IAAA,GAAO,QAAQ,CAAC,CAAA;AACvB,QAAA,MAAA,CAAO,IAAA,GAAO,QAAA,CAAS,OAAA,CAAQ,CAAC,GAAG,EAAE,CAAA;AACrC,QAAA,MAAA,CAAO,IAAA,GAAO,OAAA,CAAQ,CAAC,CAAA,IAAK,EAAA;AAC5B,QAAA,MAAA,CAAO,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACxB,QAAA,MAAA,CAAO,QAAA,GAAW,QAAQ,CAAC,CAAA;AAG3B,QAAA,IAAI,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA,EAAG;AACtB,UAAA,MAAA,CAAO,IAAA,GAAO,QAAQ,CAAC,CAAA;AAAA,QACzB;AAEA,QAAA,MAAM,UAAA,GAAa,aAAA,CAAc,MAAA,EAAQ,OAAO,CAAA;AAChD,QAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,UAAA,MAAA,CAAO,KAAA,GAAQ,OAAO,KAAA,IAAS,UAAA;AAC/B,UAAA,wBAAA,GAA2B,IAAA;AAAA,QAC7B;AAEA,QAAA,IAAI,OAAO,IAAA,EAAM;AACf,UAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AACrC,UAAA,IAAI,eAAe,KAAA,EAAO;AACxB,YAAA,MAAM,UAAA,GAAa,aAAA,CAAc,MAAA,CAAO,IAAI,CAAA;AAC5C,YAAA,MAAA,CAAO,IAAA,GAAO,UAAA,CAAW,IAAA,CAAK,WAAA,EAAY;AAC1C,YAAA,IAAA,GAAO,UAAA,CAAW,MAAA;AAAA,UACpB,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,IAAA;AAAA,UACT;AAAA,QACF;AACA,QAAA,IAAI,OAAO,MAAA,KAAW,MAAA,IAAa,MAAA,CAAO,QAAA,KAAa,UAAa,MAAA,CAAO,IAAA,KAAS,MAAA,IAAa,MAAA,CAAO,SAAS,MAAA,IAAa,MAAA,CAAO,UAAU,MAAA,IAAa,CAAC,OAAO,IAAA,EAAM;AACxK,UAAA,MAAA,CAAO,SAAA,GAAY,eAAA;AAAA,QACrB,CAAA,MAAA,IAAW,MAAA,CAAO,MAAA,KAAW,MAAA,EAAW;AACtC,UAAA,MAAA,CAAO,SAAA,GAAY,UAAA;AAAA,QACrB,CAAA,MAAA,IAAW,MAAA,CAAO,QAAA,KAAa,MAAA,EAAW;AACxC,UAAA,MAAA,CAAO,SAAA,GAAY,UAAA;AAAA,QACrB,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,SAAA,GAAY,KAAA;AAAA,QACrB;AAGA,QAAA,IAAI,OAAA,CAAQ,aAAa,OAAA,CAAQ,SAAA,KAAc,YAAY,OAAA,CAAQ,SAAA,KAAc,OAAO,SAAA,EAAW;AACjG,UAAA,MAAA,CAAO,KAAA,GAAQ,MAAA,CAAO,KAAA,IAAS,eAAA,GAAkB,QAAQ,SAAA,GAAY,aAAA;AAAA,QACvE;AAGA,QAAA,MAAM,aAAA,GAAgB,gBAAA,CAAiB,OAAA,CAAQ,MAAA,IAAU,OAAO,MAAM,CAAA;AAGtE,QAAA,IAAI,CAAC,OAAA,CAAQ,cAAA,KAAmB,CAAC,aAAA,IAAiB,CAAC,cAAc,cAAA,CAAA,EAAiB;AAEhF,UAAA,IAAI,MAAA,CAAO,IAAA,KAAS,OAAA,CAAQ,UAAA,IAAe,aAAA,IAAiB,aAAA,CAAc,UAAA,CAAA,IAAgB,IAAA,KAAS,KAAA,IAAS,eAAA,CAAgB,MAAA,CAAO,IAAI,CAAA,EAAG;AAExI,YAAA,IAAI;AACF,cAAA,MAAA,CAAO,OAAO,GAAA,CAAI,aAAA,CAAc,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA;AAAA,YAC3D,SAAS,CAAA,EAAG;AACV,cAAA,MAAA,CAAO,KAAA,GAAQ,MAAA,CAAO,KAAA,IAAS,oDAAA,GAAuD,CAAA;AAAA,YACxF;AAAA,UACF;AAAA,QAEF;AAEA,QAAA,IAAI,CAAC,aAAA,IAAkB,aAAA,IAAiB,CAAC,cAAc,aAAA,EAAgB;AACrE,UAAA,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAG,CAAA,KAAM,EAAA,EAAI;AAC3B,YAAA,IAAI,MAAA,CAAO,WAAW,MAAA,EAAW;AAC/B,cAAA,MAAA,CAAO,MAAA,GAAS,QAAA,CAAS,MAAA,CAAO,MAAM,CAAA;AAAA,YACxC;AACA,YAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAW;AAC7B,cAAA,MAAA,CAAO,OAAO,sBAAA,CAAuB,QAAA,CAAS,MAAA,CAAO,IAAI,GAAG,IAAI,CAAA;AAAA,YAClE;AAAA,UACF;AACA,UAAA,IAAI,OAAO,IAAA,EAAM;AACf,YAAA,MAAA,CAAO,IAAA,GAAO,qBAAA,CAAsB,MAAA,CAAO,IAAI,CAAA;AAAA,UACjD;AACA,UAAA,IAAI,OAAO,QAAA,EAAU;AACnB,YAAA,IAAI;AACF,cAAA,MAAA,CAAO,QAAA,GAAW,SAAA,CAAU,kBAAA,CAAmB,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,YACjE,CAAA,CAAA,MAAQ;AACN,cAAA,MAAA,CAAO,KAAA,GAAQ,OAAO,KAAA,IAAS,eAAA;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAGA,QAAA,IAAI,aAAA,IAAiB,cAAc,KAAA,EAAO;AACxC,UAAA,aAAA,CAAc,KAAA,CAAM,QAAQ,OAAO,CAAA;AAAA,QACrC;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,KAAA,GAAQ,OAAO,KAAA,IAAS,wBAAA;AAAA,MACjC;AACA,MAAA,OAAO,EAAE,QAAQ,wBAAA,EAAyB;AAAA,IAC5C;AAOA,IAAA,SAAS,KAAA,CAAO,KAAK,IAAA,EAAM;AACzB,MAAA,OAAO,eAAA,CAAgB,GAAA,EAAK,IAAI,CAAA,CAAE,MAAA;AAAA,IACpC;AAOA,IAAA,SAAS,eAAA,CAAiB,KAAK,IAAA,EAAM;AACnC,MAAA,OAAO,yBAAA,CAA0B,GAAA,EAAK,IAAI,CAAA,CAAE,UAAA;AAAA,IAC9C;AAOA,IAAA,SAAS,yBAAA,CAA2B,KAAK,IAAA,EAAM;AAC7C,MAAA,MAAM,EAAE,MAAA,EAAQ,wBAAA,EAAyB,GAAI,eAAA,CAAgB,KAAK,IAAI,CAAA;AACtE,MAAA,OAAO;AAAA,QACL,UAAA,EAAY,wBAAA,GAA2B,GAAA,GAAM,SAAA,CAAU,QAAQ,IAAI,CAAA;AAAA,QACnE;AAAA,OACF;AAAA,IACF;AAOA,IAAA,SAAS,sBAAA,CAAwB,KAAK,IAAA,EAAM;AAC1C,MAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,QAAA,MAAM,EAAE,UAAA,EAAY,wBAAA,EAAyB,GAAI,yBAAA,CAA0B,KAAK,IAAI,CAAA;AACpF,QAAA,OAAO,2BAA2B,MAAA,GAAY,UAAA;AAAA,MAChD;AAEA,MAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,QAAA,OAAO,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,MAC5B;AAAA,IACF;AAEA,IAAA,IAAM,OAAA,GAAU;AAAA,MACd,OAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA,EAAAD,QAAAA;AAAA,MACA,gBAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,OAAA;AACjB,IAAA,MAAA,CAAO,QAAQ,OAAA,GAAU,OAAA;AACzB,IAAA,MAAA,CAAO,QAAQ,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;;;;ACrZzB,IAAA,IAAA,GAAA,GAAA,gBAAA,EAAA;AAGE,IAAA,GAAA,CAAY,IAAA,GAAO,yCAAA;AAErB,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;;ACuBf,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,UAAA,CAAA,UAAA;AAAU,IAAA,CAAA,EAAA,CAAA;AAKlB,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,CAAA;AAAC,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,GAAA;AAAG,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,SAAA;AAAS,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,GAAA;AAAG,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,IAAA;AAAI,IAAA,CAAA,EAAA,CAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,OAAA;AAAO,IAAA,CAAA,EAAA,CAAA;AAsBnD,IAAA,IAAA,kBAAA,GAAA,wBAAA,EAAA;AACA,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,cAAA,GAAA,YAAA,EAAA;AAEA,IAAA,IAAA,KAAA,GAAA,WAAA,EAAA;AAEA,IAAA,IAAM,gBAA8B,CAAC,GAAA,EAAK,UAAU,IAAI,MAAA,CAAO,KAAK,KAAK,CAAA;AACzE,IAAA,aAAA,CAAc,IAAA,GAAO,YAAA;AAErB,IAAA,IAAM,mBAAA,GAAyC,CAAC,kBAAA,EAAoB,aAAA,EAAe,aAAa,CAAA;AAChG,IAAA,IAAM,eAAA,uBAAsB,GAAA,CAAI;AAC9B,MAAA,UAAA;AACA,MAAA,WAAA;AACA,MAAA,OAAA;AACA,MAAA,SAAA;AACA,MAAA,MAAA;AACA,MAAA,QAAA;AACA,MAAA,SAAA;AACA,MAAA,SAAA;AACA,MAAA,SAAA;AACA,MAAA,eAAA;AACA,MAAA,MAAA;AACA,MAAA,KAAA;AACA,MAAA;AACD,KAAA,CAAA;AA0GD,IAAA,IAAM,cAAA,GAA8C;MAClD,aAAA,EAAe,EAAA;MACf,MAAA,EAAQ,+CAAA;MACR,QAAA,EAAU,6CAAA;MACV,YAAA,EAAc,kDAAA;MACd,UAAA,EAAY,uDAAA;MACZ,WAAA,EAAa,qEAAA;MACb,WAAA,EAAa,mEAAA;MACb,UAAA,EAAY,mCAAA;MACZ,cAAA,EAAgB,yCAAA;MAChB,cAAA,EAAgB,yCAAA;MAChB,WAAA,EAAa,4CAAA;MACb,cAAA,EAAgB,8EAAA;MAChB,KAAA,EAAO,6CAAA;MACP,SAAA,EAAW,6CAAA;MACX,SAAA,EAAW;;AAGb,IAAA,IAAM,iBAAA,GAAoD;MACxD,qBAAA,EAAuB,EAAA;MACvB,gBAAA,EAAkB,EAAA;MAClB,OAAA,EAAS;;AA0BX,IAAA,IAAM,cAAA,GAAiB,GAAA;AAGvB,IAAA,SAAS,gBAAgB,CAAA,EAAU;;AACjC,MAAA,MAAM,IAAI,CAAA,CAAE,MAAA;AACZ,MAAA,MAAM,KAAA,GAAA,CAAQ,KAAA,CAAA,CAAE,IAAA,MAAI,QAAA,EAAA,KAAA,MAAA,GAAA,SAAA,EAAA,CAAE,QAAA;AACtB,MAAA,MAAM,WAAW,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,GAAY,IAAI,KAAA,IAAS,CAAA;AACtE,MAAA,MAAM,MAAA,GAAA,CAAS,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,UAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAA,MAAM,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,aAAA;AACjC,MAAA,MAAM,WAAA,GAAA,CAAc,KAAA,CAAA,CAAE,WAAA,MAAW,QAAA,EAAA,KAAA,MAAA,GAAA,KAAI,KAAA,CAAA,OAAA;AACrC,MAAA,OAAO;AACL,QAAA,YAAA,EAAA,CAAc,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,YAAA,MAAY,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAA,MAAC,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAA;AACrC,QAAA,aAAA,EAAA,CAAe,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,aAAA,MAAa,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAA,MAAC,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAA;AACvC,QAAA,WAAA,EAAA,CAAa,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,WAAA,MAAW,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAA,MAAC,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAA;AACnC,QAAA,YAAA,EAAA,CAAc,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,YAAA,MAAY,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAA,MAAC,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAA;AACrC,QAAA,cAAA,EAAA,CAAgB,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,cAAA,MAAc,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAA,MAAC,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAA;QACzC,IAAA,EAAM,CAAA,CAAE,IAAA,GAAO,EAAC,GAAG,CAAA,CAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAM,GAAI,EAAC,QAAA,EAAU,MAAA,EAAM;AAChE,QAAA,YAAA,EAAA,CAAc,KAAA,CAAA,CAAE,YAAA,MAAY,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,cAAA;AAChC,QAAA,QAAA,EAAA,CAAU,KAAA,CAAA,CAAE,QAAA,MAAQ,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,cAAA;AACxB,QAAA,IAAA,EAAA,CAAM,KAAA,CAAA,CAAE,IAAA,MAAI,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,IAAA;AAChB,QAAA,QAAA,EAAA,CAAU,KAAA,CAAA,CAAE,QAAA,MAAQ,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,IAAA;AACxB,QAAA,UAAA,EAAA,CAAY,KAAA,CAAA,CAAE,UAAA,MAAU,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,IAAA;AAC5B,QAAA,QAAA,EAAA,CAAU,KAAA,CAAA,CAAE,QAAA,MAAQ,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,KAAA;AACxB,QAAA,aAAA,EAAA,CAAe,KAAA,CAAA,CAAE,aAAA,MAAa,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,IAAA;AAClC,QAAA,cAAA,EAAA,CAAgB,KAAA,CAAA,CAAE,cAAA,MAAc,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,IAAA;AACpC,QAAA,eAAA,EAAA,CAAiB,KAAA,CAAA,CAAE,eAAA,MAAe,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,IAAA;AACtC,QAAA,aAAA,EAAA,CAAe,KAAA,CAAA,CAAE,aAAA,MAAa,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,IAAA;AAClC,QAAA,UAAA,EAAA,CAAY,KAAA,CAAA,CAAE,UAAA,MAAU,IAAA,IAAA,EAAA,KAAA,SAAA,EAAA,GAAI,IAAA;AAC5B,QAAA;;AAEJ,IAAA;AAQA,IAAA,IAAqBE,OAArB,MAAwB;MAkBtB,WAAA,CAAY,IAAA,GAAgB,EAAA,EAAE;AAZrB,QAAA,IAAA,CAAA,UAAyC,EAAA;AACzC,QAAA,IAAA,CAAA,OAA+C,EAAA;AAC/C,QAAA,IAAA,CAAA,OAAA,mBAA4C,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAE9D,QAAA,IAAA,CAAA,aAAA,uBAAoC,GAAA,EAAG;AAC/B,QAAA,IAAA,CAAA,WAAyD,EAAA;AACzD,QAAA,IAAA,CAAA,MAAA,uBAAwC,GAAA,EAAG;AAO1D,QAAA,IAAA,GAAO,IAAA,CAAK,OAAO,EAAC,GAAG,MAAM,GAAG,eAAA,CAAgB,IAAI,CAAA,EAAC;AACrD,QAAA,MAAM,EAAC,GAAA,EAAK,KAAA,EAAK,GAAI,KAAK,IAAA,CAAK,IAAA;AAE/B,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,SAAA,CAAA,UAAA,CAAW,EAAC,KAAA,EAAO,EAAA,EAAI,QAAA,EAAU,eAAA,EAAiB,GAAA,EAAK,KAAA,EAAM,CAAA;AAC9E,QAAA,IAAA,CAAK,MAAA,GAAS,SAAA,CAAU,IAAA,CAAK,MAAM,CAAA;AACnC,QAAA,MAAM,YAAY,IAAA,CAAK,eAAA;AACvB,QAAA,IAAA,CAAK,eAAA,GAAkB,KAAA;AAEvB,QAAA,IAAA,CAAK,KAAA,GAAA,IAAQ,OAAA,CAAA,QAAA,GAAQ;AACrB,QAAA,YAAA,CAAa,IAAA,CAAK,IAAA,EAAM,cAAA,EAAgB,IAAA,EAAM,eAAe,CAAA;AAC7D,QAAA,YAAA,CAAa,IAAA,CAAK,IAAA,EAAM,iBAAA,EAAmB,IAAA,EAAM,cAAc,MAAM,CAAA;AACrE,QAAA,IAAA,CAAK,SAAA,GAAY,oBAAA,CAAqB,IAAA,CAAK,IAAI,CAAA;AAE/C,QAAA,IAAI,IAAA,CAAK,OAAA;AAAS,UAAA,iBAAA,CAAkB,KAAK,IAAI,CAAA;AAC7C,QAAA,IAAA,CAAK,gBAAA,EAAgB;AACrB,QAAA,IAAA,CAAK,qBAAA,EAAqB;AAC1B,QAAA,IAAI,IAAA,CAAK,QAAA;AAAU,UAAA,kBAAA,CAAmB,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,QAAQ,CAAA;AAC9D,QAAA,IAAI,OAAO,KAAK,IAAA,IAAQ,QAAA;AAAU,UAAA,IAAA,CAAK,aAAA,CAAc,KAAK,IAAI,CAAA;AAC9D,QAAA,iBAAA,CAAkB,KAAK,IAAI,CAAA;AAC3B,QAAA,IAAA,CAAK,eAAA,GAAkB,SAAA;AACzB,MAAA;MAEA,gBAAA,GAAgB;AACd,QAAA,IAAA,CAAK,WAAW,QAAQ,CAAA;AAC1B,MAAA;MAEA,qBAAA,GAAqB;AACnB,QAAA,MAAM,EAAC,KAAA,EAAO,IAAA,EAAM,QAAA,KAAY,IAAA,CAAK,IAAA;AACrC,QAAA,IAAI,cAAA,GAA+B,cAAA;AACnC,QAAA,IAAI,aAAa,IAAA,EAAM;AACrB,UAAA,cAAA,GAAiB,EAAC,GAAG,cAAA,EAAc;AACnC,UAAA,cAAA,CAAe,KAAK,cAAA,CAAe,GAAA;AACnC,UAAA,OAAO,cAAA,CAAe,GAAA;AACxB,QAAA;AACA,QAAA,IAAI,IAAA,IAAQ,KAAA;AAAO,UAAA,IAAA,CAAK,aAAA,CAAc,cAAA,EAAgB,cAAA,CAAe,QAAQ,GAAG,KAAK,CAAA;AACvF,MAAA;MAEA,WAAA,GAAW;AACT,QAAA,MAAM,EAAC,IAAA,EAAM,QAAA,EAAQ,GAAI,IAAA,CAAK,IAAA;AAC9B,QAAA,OAAQ,IAAA,CAAK,KAAK,WAAA,GAAc,OAAO,QAAQ,QAAA,GAAW,IAAA,CAAK,QAAQ,CAAA,IAAK,IAAA,GAAO,MAAA;AACrF,MAAA;AAoBA,MAAA,QAAA,CACE,YAAA,EAEA,IAAA,EAAA;AAEA,QAAA,IAAI,CAAA;AACJ,QAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU;AACnC,UAAA,CAAA,GAAI,IAAA,CAAK,UAAa,YAAY,CAAA;AAClC,UAAA,IAAI,CAAC,CAAA;AAAG,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,YAAY,CAAA,CAAA,CAAG,CAAA;QACvE,CAAA,MAAO;AACL,UAAA,CAAA,GAAI,IAAA,CAAK,QAAW,YAAY,CAAA;AAClC,QAAA;AAEA,QAAA,MAAM,KAAA,GAAQ,EAAE,IAAI,CAAA;AACpB,QAAA,IAAI,EAAE,QAAA,IAAY,CAAA,CAAA;AAAI,UAAA,IAAA,CAAK,SAAS,CAAA,CAAE,MAAA;AACtC,QAAA,OAAO,KAAA;AACT,MAAA;AAiBA,MAAA,OAAA,CAAqB,QAAmB,KAAA,EAAe;AACrD,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,UAAA,CAAW,MAAA,EAAQ,KAAK,CAAA;AACzC,QAAA,OAAQ,GAAA,CAAI,QAAA,IAAY,IAAA,CAAK,iBAAA,CAAkB,GAAG,CAAA;AACpD,MAAA;AAmBA,MAAA,YAAA,CACE,QACA,IAAA,EAAc;AAEd,QAAA,IAAI,OAAO,IAAA,CAAK,IAAA,CAAK,UAAA,IAAc,UAAA,EAAY;AAC7C,UAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAC3D,QAAA;AACA,QAAA,MAAM,EAAC,UAAA,EAAU,GAAI,IAAA,CAAK,IAAA;AAC1B,QAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM,MAAA,EAAQ,IAAI,CAAA;AAE9C,QAAA,eAAe,eAAA,CAEb,SACA,KAAA,EAAe;AAEf,UAAA,MAAM,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,OAAA,CAAQ,OAAO,CAAA;AAC/C,UAAA,MAAM,GAAA,GAAM,IAAA,CAAK,UAAA,CAAW,OAAA,EAAS,KAAK,CAAA;AAC1C,UAAA,OAAO,GAAA,CAAI,QAAA,IAAY,aAAA,CAAc,IAAA,CAAK,MAAM,GAAG,CAAA;AACrD,QAAA;AAEA,QAAA,eAAe,eAA0B,IAAA,EAAa;AACpD,UAAA,IAAI,IAAA,IAAQ,CAAC,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG;AACjC,YAAA,MAAM,gBAAgB,IAAA,CAAK,IAAA,EAAM,EAAC,IAAA,IAAO,IAAI,CAAA;AAC/C,UAAA;AACF,QAAA;AAEA,QAAA,eAAe,cAAyB,GAAA,EAAc;AACpD,UAAA,IAAI;AACF,YAAA,OAAO,IAAA,CAAK,kBAAkB,GAAG,CAAA;AACnC,UAAA,CAAA,CAAA,OAAS,CAAA,EAAG;AACV,YAAA,IAAI,EAAE,aAAa,WAAA,CAAA,OAAA,CAAA;AAAkB,cAAA,MAAM,CAAA;AAC3C,YAAA,WAAA,CAAY,IAAA,CAAK,MAAM,CAAC,CAAA;AACxB,YAAA,MAAM,iBAAA,CAAkB,IAAA,CAAK,IAAA,EAAM,CAAA,CAAE,aAAa,CAAA;AAClD,YAAA,OAAO,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,GAAG,CAAA;AACrC,UAAA;AACF,QAAA;AAEA,QAAA,SAAS,WAAA,CAAuB,EAAC,aAAA,EAAe,GAAA,EAAK,YAAU,EAAkB;AAC/E,UAAA,IAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,EAAG;AAClB,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,UAAA,EAAa,GAAG,CAAA,eAAA,EAAkB,UAAU,CAAA,mBAAA,CAAqB,CAAA;AACnF,UAAA;AACF,QAAA;AAEA,QAAA,eAAe,kBAA6B,GAAA,EAAW;AACrD,UAAA,MAAM,OAAA,GAAU,MAAM,WAAA,CAAY,IAAA,CAAK,MAAM,GAAG,CAAA;AAChD,UAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAAG,YAAA,MAAM,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,OAAA,CAAQ,OAAO,CAAA;AACpE,UAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAAG,YAAA,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,GAAA,EAAK,IAAI,CAAA;AACxD,QAAA;AAEA,QAAA,eAAe,YAAuB,GAAA,EAAW;AAC/C,UAAA,MAAM,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA;AAC3B,UAAA,IAAI,CAAA;AAAG,YAAA,OAAO,CAAA;AACd,UAAA,IAAI;AACF,YAAA,OAAO,OAAO,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,GAAI,WAAW,GAAG,CAAA,CAAA;AACnD,UAAA,CAAA,SAAA;AACE,YAAA,OAAO,IAAA,CAAK,SAAS,GAAG,CAAA;AAC1B,UAAA;AACF,QAAA;AACF,MAAA;;AAGA,MAAA,SAAA,CACE,MAAA,EACA,GAAA,EACA,KAAA,EACA,eAAA,GAAkB,KAAK,IAAA,CAAK,cAAA,EAAA;AAE5B,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,UAAA,KAAA,MAAW,GAAA,IAAO,MAAA;AAAQ,YAAA,IAAA,CAAK,SAAA,CAAU,GAAA,EAAK,MAAA,EAAW,KAAA,EAAO,eAAe,CAAA;AAC/E,UAAA,OAAO,IAAA;AACT,QAAA;AACA,QAAA,IAAI,EAAA;AACJ,QAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,UAAA,MAAM,EAAC,QAAA,EAAQ,GAAI,IAAA,CAAK,IAAA;AACxB,UAAA,EAAA,GAAK,OAAO,QAAQ,CAAA;AACpB,UAAA,IAAI,EAAA,KAAO,MAAA,IAAa,OAAO,EAAA,IAAM,QAAA,EAAU;AAC7C,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,OAAA,EAAU,QAAQ,CAAA,eAAA,CAAiB,CAAA;AACrD,UAAA;AACF,QAAA;AACA,QAAA,GAAA,GAAA,IAAM,SAAA,CAAA,WAAA,EAAY,GAAA,IAAO,EAAE,CAAA;AAC3B,QAAA,IAAA,CAAK,aAAa,GAAG,CAAA;AACrB,QAAA,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GAAI,IAAA,CAAK,WAAW,MAAA,EAAQ,KAAA,EAAO,GAAA,EAAK,eAAA,EAAiB,IAAI,CAAA;AAC7E,QAAA,OAAO,IAAA;AACT,MAAA;;;AAIA,MAAA,aAAA,CACE,MAAA,EACA,GAAA,EACA,eAAA,GAAkB,IAAA,CAAK,IAAA,CAAK,cAAA,EAAA;AAE5B,QAAA,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,eAAe,CAAA;AACjD,QAAA,OAAO,IAAA;AACT,MAAA;;AAGA,MAAA,cAAA,CAAe,QAAmB,eAAA,EAAyB;AACzD,QAAA,IAAI,OAAO,MAAA,IAAU,SAAA;AAAW,UAAA,OAAO,IAAA;AACvC,QAAA,IAAI,OAAA;AACJ,QAAA,OAAA,GAAU,MAAA,CAAO,OAAA;AACjB,QAAA,IAAI,OAAA,KAAY,MAAA,IAAa,OAAO,OAAA,IAAW,QAAA,EAAU;AACvD,UAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAC5C,QAAA;AACA,QAAA,OAAA,GAAU,OAAA,IAAW,IAAA,CAAK,IAAA,CAAK,WAAA,IAAe,KAAK,WAAA,EAAW;AAC9D,QAAA,IAAI,CAAC,OAAA,EAAS;AACZ,UAAA,IAAA,CAAK,MAAA,CAAO,KAAK,2BAA2B,CAAA;AAC5C,UAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,UAAA,OAAO,IAAA;AACT,QAAA;AACA,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,OAAA,EAAS,MAAM,CAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,eAAA,EAAiB;AAC7B,UAAA,MAAM,OAAA,GAAU,qBAAA,GAAwB,IAAA,CAAK,UAAA,EAAU;AACvD,UAAA,IAAI,IAAA,CAAK,KAAK,cAAA,KAAmB,KAAA;AAAO,YAAA,IAAA,CAAK,MAAA,CAAO,MAAM,OAAO,CAAA;;AAC5D,YAAA,MAAM,IAAI,MAAM,OAAO,CAAA;AAC9B,QAAA;AACA,QAAA,OAAO,KAAA;AACT,MAAA;;;AAIA,MAAA,SAAA,CAAuB,MAAA,EAAc;AACnC,QAAA,IAAI,GAAA;AACJ,QAAA,OAAO,QAAQ,GAAA,GAAM,SAAA,CAAU,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA,CAAA,IAAM,QAAA;AAAU,UAAA,MAAA,GAAS,GAAA;AACzE,QAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,UAAA,MAAM,EAAC,QAAA,EAAQ,GAAI,IAAA,CAAK,IAAA;AACxB,UAAA,MAAM,IAAA,GAAO,IAAI,SAAA,CAAA,SAAA,CAAU,EAAC,MAAA,EAAQ,EAAA,EAAI,QAAA,EAAS,CAAA;AACjD,UAAA,GAAA,GAAM,SAAA,CAAA,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,MAAM,MAAM,CAAA;AAC3C,UAAA,IAAI,CAAC,GAAA;AAAK,YAAA;AACV,UAAA,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,GAAI,GAAA;AACtB,QAAA;AACA,QAAA,OAAQ,GAAA,CAAI,QAAA,IAAY,IAAA,CAAK,iBAAA,CAAkB,GAAG,CAAA;AACpD,MAAA;;;;;AAMA,MAAA,YAAA,CAAa,YAAA,EAA0C;AACrD,QAAA,IAAI,wBAAwB,MAAA,EAAQ;AAClC,UAAA,IAAA,CAAK,iBAAA,CAAkB,IAAA,CAAK,OAAA,EAAS,YAAY,CAAA;AACjD,UAAA,IAAA,CAAK,iBAAA,CAAkB,IAAA,CAAK,IAAA,EAAM,YAAY,CAAA;AAC9C,UAAA,OAAO,IAAA;AACT,QAAA;AACA,QAAA,QAAQ,OAAO,YAAA;UACb,KAAK,WAAA;AACH,YAAA,IAAA,CAAK,iBAAA,CAAkB,KAAK,OAAO,CAAA;AACnC,YAAA,IAAA,CAAK,iBAAA,CAAkB,KAAK,IAAI,CAAA;AAChC,YAAA,IAAA,CAAK,OAAO,KAAA,EAAK;AACjB,YAAA,OAAO,IAAA;AACT,UAAA,KAAK,QAAA,EAAU;AACb,YAAA,MAAM,GAAA,GAAM,SAAA,CAAU,IAAA,CAAK,IAAA,EAAM,YAAY,CAAA;AAC7C,YAAA,IAAI,OAAO,GAAA,IAAO,QAAA;AAAU,cAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AACzD,YAAA,OAAO,IAAA,CAAK,QAAQ,YAAY,CAAA;AAChC,YAAA,OAAO,IAAA,CAAK,KAAK,YAAY,CAAA;AAC7B,YAAA,OAAO,IAAA;AACT,UAAA;AACA,UAAA,KAAK,QAAA,EAAU;AACb,YAAA,MAAM,QAAA,GAAW,YAAA;AACjB,YAAA,IAAA,CAAK,MAAA,CAAO,OAAO,QAAQ,CAAA;AAC3B,YAAA,IAAI,EAAA,GAAK,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA;AACxC,YAAA,IAAI,EAAA,EAAI;AACN,cAAA,EAAA,GAAA,IAAK,SAAA,CAAA,WAAA,EAAY,EAAE,CAAA;AACnB,cAAA,OAAO,IAAA,CAAK,QAAQ,EAAE,CAAA;AACtB,cAAA,OAAO,IAAA,CAAK,KAAK,EAAE,CAAA;AACrB,YAAA;AACA,YAAA,OAAO,IAAA;AACT,UAAA;AACA,UAAA;AACE,YAAA,MAAM,IAAI,MAAM,qCAAqC,CAAA;AACzD;AACF,MAAA;;AAGA,MAAA,aAAA,CAAc,WAAA,EAAuB;AACnC,QAAA,KAAA,MAAW,GAAA,IAAO,WAAA;AAAa,UAAA,IAAA,CAAK,WAAW,GAAG,CAAA;AAClD,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,UAAA,CACE,QAAA,EACA,GAAA,EAAA;AAEA,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,UAAA,OAAA,GAAU,QAAA;AACV,UAAA,IAAI,OAAO,OAAO,QAAA,EAAU;AAC1B,YAAA,IAAA,CAAK,MAAA,CAAO,KAAK,0DAA0D,CAAA;AAC3E,YAAA,GAAA,CAAI,OAAA,GAAU,OAAA;AAChB,UAAA;AACF,QAAA,CAAA,MAAA,IAAW,OAAO,QAAA,IAAY,QAAA,IAAY,GAAA,KAAQ,MAAA,EAAW;AAC3D,UAAA,GAAA,GAAM,QAAA;AACN,UAAA,OAAA,GAAU,GAAA,CAAI,OAAA;AACd,UAAA,IAAI,MAAM,OAAA,CAAQ,OAAO,CAAA,IAAK,CAAC,QAAQ,MAAA,EAAQ;AAC7C,YAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAC1E,UAAA;QACF,CAAA,MAAO;AACL,UAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAClD,QAAA;AAEA,QAAA,YAAA,CAAa,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,GAAG,CAAA;AACpC,QAAA,IAAI,CAAC,GAAA,EAAK;AACR,UAAA,IAAA,MAAA,CAAA,QAAA,EAAS,OAAA,EAAS,CAAC,QAAQ,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,GAAG,CAAC,CAAA;AAClD,UAAA,OAAO,IAAA;AACT,QAAA;AACA,QAAA,iBAAA,CAAkB,IAAA,CAAK,MAAM,GAAG,CAAA;AAChC,QAAA,MAAM,UAAA,GAAqC;UACzC,GAAG,GAAA;AACH,UAAA,IAAA,EAAA,IAAM,UAAA,CAAA,YAAA,EAAa,GAAA,CAAI,IAAI,CAAA;AAC3B,UAAA,UAAA,EAAA,IAAY,UAAA,CAAA,YAAA,EAAa,GAAA,CAAI,UAAU;;AAEzC,QAAA,IAAA,MAAA,CAAA,QAAA,EACE,OAAA,EACA,UAAA,CAAW,IAAA,CAAK,MAAA,KAAW,CAAA,GACvB,CAAC,CAAA,KAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EAAG,UAAU,CAAA,GACvC,CAAC,CAAA,KAAM,UAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,CAAA,EAAG,UAAA,EAAY,CAAC,CAAC,CAAC,CAAA;AAEjF,QAAA,OAAO,IAAA;AACT,MAAA;AAEA,MAAA,UAAA,CAAW,OAAA,EAAe;AACxB,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,OAAO,CAAA;AACnC,QAAA,OAAO,OAAO,IAAA,IAAQ,QAAA,GAAW,IAAA,CAAK,UAAA,GAAa,CAAC,CAAC,IAAA;AACvD,MAAA;;AAGA,MAAA,aAAA,CAAc,OAAA,EAAe;AAE3B,QAAA,MAAM,EAAC,OAAK,GAAI,IAAA;AAChB,QAAA,OAAO,KAAA,CAAM,SAAS,OAAO,CAAA;AAC7B,QAAA,OAAO,KAAA,CAAM,IAAI,OAAO,CAAA;AACxB,QAAA,KAAA,MAAW,KAAA,IAAS,MAAM,KAAA,EAAO;AAC/B,UAAA,MAAM,CAAA,GAAI,MAAM,KAAA,CAAM,SAAA,CAAU,CAAC,IAAA,KAAS,IAAA,CAAK,YAAY,OAAO,CAAA;AAClE,UAAA,IAAI,CAAA,IAAK,CAAA;AAAG,YAAA,KAAA,CAAM,KAAA,CAAM,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA;AACrC,QAAA;AACA,QAAA,OAAO,IAAA;AACT,MAAA;;AAGA,MAAA,SAAA,CAAU,MAAc,MAAA,EAAc;AACpC,QAAA,IAAI,OAAO,MAAA,IAAU,QAAA;AAAU,UAAA,MAAA,GAAS,IAAI,OAAO,MAAM,CAAA;AACzD,QAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,GAAI,MAAA;AACrB,QAAA,OAAO,IAAA;AACT,MAAA;MAEA,UAAA,CACE,MAAA,GAA2C,KAAK,MAAA,EAChD,EAAC,YAAY,IAAA,EAAM,OAAA,GAAU,MAAA,EAAM,GAAuB,EAAA,EAAA;AAE1D,QAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA;AAAG,UAAA,OAAO,WAAA;AAC3C,QAAA,OAAO,MAAA,CACJ,IAAI,CAAC,CAAA,KAAM,GAAG,OAAO,CAAA,EAAG,EAAE,YAAY,CAAA,CAAA,EAAI,EAAE,OAAO,CAAA,CAAE,EACrD,MAAA,CAAO,CAAC,MAAM,GAAA,KAAQ,IAAA,GAAO,YAAY,GAAG,CAAA;AACjD,MAAA;AAEA,MAAA,eAAA,CAAgB,YAA6B,oBAAA,EAA8B;AACzE,QAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,CAAM,GAAA;AACzB,QAAA,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,UAAU,CAAC,CAAA;AAClD,QAAA,KAAA,MAAW,eAAe,oBAAA,EAAsB;AAC9C,UAAA,MAAM,WAAW,WAAA,CAAY,KAAA,CAAM,GAAG,CAAA,CAAE,MAAM,CAAC,CAAA;AAC/C,UAAA,IAAI,QAAA,GAAW,UAAA;AACf,UAAA,KAAA,MAAW,GAAA,IAAO,QAAA;AAAU,YAAA,QAAA,GAAW,SAAS,GAAG,CAAA;AAEnD,UAAA,KAAA,MAAW,OAAO,KAAA,EAAO;AACvB,YAAA,MAAM,IAAA,GAAO,MAAM,GAAG,CAAA;AACtB,YAAA,IAAI,OAAO,IAAA,IAAQ,QAAA;AAAU,cAAA;AAC7B,YAAA,MAAM,EAAC,KAAA,EAAK,GAAI,IAAA,CAAK,UAAA;AACrB,YAAA,MAAM,MAAA,GAAS,SAAS,GAAG,CAAA;AAC3B,YAAA,IAAI,KAAA,IAAS,MAAA;AAAQ,cAAA,QAAA,CAAS,GAAG,CAAA,GAAI,YAAA,CAAa,MAAM,CAAA;AAC1D,UAAA;AACF,QAAA;AAEA,QAAA,OAAO,UAAA;AACT,MAAA;AAEQ,MAAA,iBAAA,CAAkB,SAAiD,KAAA,EAAc;AACvF,QAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,UAAA,MAAM,GAAA,GAAM,QAAQ,MAAM,CAAA;AAC1B,UAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,EAAG;AAChC,YAAA,IAAI,OAAO,OAAO,QAAA,EAAU;AAC1B,cAAA,OAAO,QAAQ,MAAM,CAAA;YACvB,CAAA,MAAA,IAAW,GAAA,IAAO,CAAC,GAAA,CAAI,IAAA,EAAM;AAC3B,cAAA,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AAC7B,cAAA,OAAO,QAAQ,MAAM,CAAA;AACvB,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;MAEA,UAAA,CACE,MAAA,EACA,IAAA,EACA,MAAA,EACA,cAAA,GAAiB,IAAA,CAAK,KAAK,cAAA,EAC3B,SAAA,GAAY,IAAA,CAAK,IAAA,CAAK,aAAA,EAAa;AAEnC,QAAA,IAAI,EAAA;AACJ,QAAA,MAAM,EAAC,QAAA,EAAQ,GAAI,IAAA,CAAK,IAAA;AACxB,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,UAAA,EAAA,GAAK,OAAO,QAAQ,CAAA;QACtB,CAAA,MAAO;AACL,UAAA,IAAI,KAAK,IAAA,CAAK,GAAA;AAAK,YAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AACjD,eAAA,IAAA,OAAO,MAAA,IAAU,SAAA;AAAW,YAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AACzF,QAAA;AACA,QAAA,IAAI,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AAChC,QAAA,IAAI,GAAA,KAAQ,MAAA;AAAW,UAAA,OAAO,GAAA;AAE9B,QAAA,MAAA,GAAA,IAAS,SAAA,CAAA,WAAA,EAAY,EAAA,IAAM,MAAM,CAAA;AACjC,QAAA,MAAM,YAAY,SAAA,CAAA,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,QAAQ,MAAM,CAAA;AACzD,QAAA,GAAA,GAAM,IAAI,UAAA,SAAA,CAAU,EAAC,QAAQ,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAU,CAAA;AAC/D,QAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,MAAA,EAAQ,GAAG,CAAA;AAC/B,QAAA,IAAI,SAAA,IAAa,CAAC,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA,EAAG;AAExC,UAAA,IAAI,MAAA;AAAQ,YAAA,IAAA,CAAK,aAAa,MAAM,CAAA;AACpC,UAAA,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,GAAI,GAAA;AACtB,QAAA;AACA,QAAA,IAAI,cAAA;AAAgB,UAAA,IAAA,CAAK,cAAA,CAAe,QAAQ,IAAI,CAAA;AACpD,QAAA,OAAO,GAAA;AACT,MAAA;AAEQ,MAAA,YAAA,CAAa,EAAA,EAAU;AAC7B,QAAA,IAAI,KAAK,OAAA,CAAQ,EAAE,KAAK,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,EAAG;AACrC,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,EAAE,CAAA,gBAAA,CAAkB,CAAA;AAChE,QAAA;AACF,MAAA;AAEQ,MAAA,iBAAA,CAAkB,GAAA,EAAc;AACtC,QAAA,IAAI,GAAA,CAAI,IAAA;AAAM,UAAA,IAAA,CAAK,mBAAmB,GAAG,CAAA;;AACpC,UAAA,SAAA,CAAA,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,GAAG,CAAA;AAGjC,QAAA,IAAI,CAAC,GAAA,CAAI,QAAA;AAAU,UAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAC7D,QAAA,OAAO,GAAA,CAAI,QAAA;AACb,MAAA;AAEQ,MAAA,kBAAA,CAAmB,GAAA,EAAc;AACvC,QAAA,MAAM,cAAc,IAAA,CAAK,IAAA;AACzB,QAAA,IAAA,CAAK,OAAO,IAAA,CAAK,SAAA;AACjB,QAAA,IAAI;AACF,UAAA,SAAA,CAAA,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,GAAG,CAAA;AAC9B,QAAA,CAAA,SAAA;AACE,UAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACd,QAAA;AACF,MAAA;;AA9cO,IAAAA,IAAAA,CAAA,kBAAkB,kBAAA,CAAA,OAAA;AAClB,IAAAA,IAAAA,CAAA,kBAAkB,WAAA,CAAA,OAAA;AAhBNA,IAAAA,OAAAA,CAAAA,OAAAA,GAAAA,IAAAA;AAqerB,IAAA,SAAS,YAAA,CAEP,SAAA,EACA,OAAA,EACA,GAAA,EACA,MAAwB,OAAA,EAAO;AAE/B,MAAA,KAAA,MAAW,OAAO,SAAA,EAAW;AAC3B,QAAA,MAAM,GAAA,GAAM,GAAA;AACZ,QAAA,IAAI,GAAA,IAAO,OAAA;AAAS,UAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,CAAE,CAAA,EAAG,GAAG,CAAA,SAAA,EAAY,GAAG,CAAA,EAAA,EAAK,SAAA,CAAU,GAAG,CAAC,CAAA,CAAE,CAAA;AACjF,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,UAAqB,MAAA,EAAc;AAC1C,MAAA,MAAA,GAAA,IAAS,SAAA,CAAA,WAAA,EAAY,MAAM,CAAA;AAC3B,MAAA,OAAO,KAAK,OAAA,CAAQ,MAAM,CAAA,IAAK,IAAA,CAAK,KAAK,MAAM,CAAA;AACjD,IAAA;AAEA,IAAA,SAAS,iBAAA,GAAiB;AACxB,MAAA,MAAM,WAAA,GAAc,KAAK,IAAA,CAAK,OAAA;AAC9B,MAAA,IAAI,CAAC,WAAA;AAAa,QAAA;AAClB,MAAA,IAAI,KAAA,CAAM,QAAQ,WAAW,CAAA;AAAG,QAAA,IAAA,CAAK,UAAU,WAAW,CAAA;;AACrD,QAAA,KAAA,MAAW,GAAA,IAAO,WAAA;AAAa,UAAA,IAAA,CAAK,SAAA,CAAU,WAAA,CAAY,GAAG,CAAA,EAAgB,GAAG,CAAA;AACvF,IAAA;AAEA,IAAA,SAAS,iBAAA,GAAiB;AACxB,MAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,IAAA,CAAK,OAAA,EAAS;AACpC,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AACrC,QAAA,IAAI,MAAA;AAAQ,UAAA,IAAA,CAAK,SAAA,CAAU,MAAM,MAAM,CAAA;AACzC,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,mBAEP,IAAA,EAAsD;AAEtD,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,QAAA,IAAA,CAAK,cAAc,IAAI,CAAA;AACvB,QAAA;AACF,MAAA;AACA,MAAA,IAAA,CAAK,MAAA,CAAO,KAAK,kDAAkD,CAAA;AACnE,MAAA,KAAA,MAAW,WAAW,IAAA,EAAM;AAC1B,QAAA,MAAM,GAAA,GAAM,KAAK,OAAO,CAAA;AACxB,QAAA,IAAI,CAAC,GAAA,CAAI,OAAA;AAAS,UAAA,GAAA,CAAI,OAAA,GAAU,OAAA;AAChC,QAAA,IAAA,CAAK,WAAW,GAAG,CAAA;AACrB,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,oBAAA,GAAoB;AAC3B,MAAA,MAAM,QAAA,GAAW,EAAC,GAAG,IAAA,CAAK,IAAA,EAAI;AAC9B,MAAA,KAAA,MAAW,GAAA,IAAO,mBAAA;AAAqB,QAAA,OAAO,SAAS,GAAG,CAAA;AAC1D,MAAA,OAAO,QAAA;AACT,IAAA;AAEA,IAAA,IAAM,MAAA,GAAS,EAAC,GAAA,GAAG;AAAI,IAAA,CAAA,EAAG,IAAA,GAAI;AAAI,IAAA,CAAA,EAAG,KAAA,GAAK;IAAI,CAAA,EAAC;AAE/C,IAAA,SAAS,UAAU,MAAA,EAAgC;AACjD,MAAA,IAAI,MAAA,KAAW,KAAA;AAAO,QAAA,OAAO,MAAA;AAC7B,MAAA,IAAI,MAAA,KAAW,MAAA;AAAW,QAAA,OAAO,OAAA;AACjC,MAAA,IAAI,MAAA,CAAO,GAAA,IAAO,MAAA,CAAO,IAAA,IAAQ,MAAA,CAAO,KAAA;AAAO,QAAA,OAAO,MAAA;AACtD,MAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AACrE,IAAA;AAEA,IAAA,IAAM,YAAA,GAAe,yBAAA;AAErB,IAAA,SAAS,YAAA,CAAwB,SAA4B,GAAA,EAAuB;AAClF,MAAA,MAAM,EAAC,OAAK,GAAI,IAAA;AAChB,MAAA,IAAA,MAAA,CAAA,QAAA,EAAS,OAAA,EAAS,CAAC,GAAA,KAAO;AACxB,QAAA,IAAI,KAAA,CAAM,SAAS,GAAG,CAAA;AAAG,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,QAAA,EAAW,GAAG,CAAA,mBAAA,CAAqB,CAAA;AAC5E,QAAA,IAAI,CAAC,YAAA,CAAa,IAAA,CAAK,GAAG,CAAA;AAAG,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,QAAA,EAAW,GAAG,CAAA,iBAAA,CAAmB,CAAA;MAChF,CAAC,CAAA;AACD,MAAA,IAAI,CAAC,GAAA;AAAK,QAAA;AACV,MAAA,IAAI,IAAI,KAAA,IAAS,EAAE,MAAA,IAAU,GAAA,IAAO,cAAc,GAAA,CAAA,EAAM;AACtD,QAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AACzE,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,OAAA,CAEP,OAAA,EACA,UAAA,EACA,QAAA,EAAmB;;AAEnB,MAAA,MAAM,OAAO,UAAA,KAAU,IAAA,IAAV,UAAA,KAAU,MAAA,GAAA,SAAV,UAAA,CAAY,IAAA;AACzB,MAAA,IAAI,QAAA,IAAY,IAAA;AAAM,QAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AACnF,MAAA,MAAM,EAAC,OAAK,GAAI,IAAA;AAChB,MAAA,IAAI,SAAA,GAAY,IAAA,GAAO,KAAA,CAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,CAAC,EAAC,IAAA,EAAM,CAAA,EAAC,KAAM,MAAM,QAAQ,CAAA;AAClF,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,SAAA,GAAY,EAAC,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,EAAA,EAAE;AACtC,QAAA,KAAA,CAAM,KAAA,CAAM,KAAK,SAAS,CAAA;AAC5B,MAAA;AACA,MAAA,KAAA,CAAM,QAAA,CAAS,OAAO,CAAA,GAAI,IAAA;AAC1B,MAAA,IAAI,CAAC,UAAA;AAAY,QAAA;AAEjB,MAAA,MAAM,IAAA,GAAa;AACjB,QAAA,OAAA;QACA,UAAA,EAAY;UACV,GAAG,UAAA;AACH,UAAA,IAAA,EAAA,IAAM,UAAA,CAAA,YAAA,EAAa,UAAA,CAAW,IAAI,CAAA;AAClC,UAAA,UAAA,EAAA,IAAY,UAAA,CAAA,YAAA,EAAa,UAAA,CAAW,UAAU;;;AAGlD,MAAA,IAAI,UAAA,CAAW,MAAA;AAAQ,QAAA,aAAA,CAAc,IAAA,CAAK,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,WAAW,MAAM,CAAA;;AAC7E,QAAA,SAAA,CAAU,KAAA,CAAM,KAAK,IAAI,CAAA;AAC9B,MAAA,KAAA,CAAM,GAAA,CAAI,OAAO,CAAA,GAAI,IAAA;AACrB,MAAA,CAAA,EAAA,GAAA,UAAA,CAAW,UAAA,MAAU,IAAA,IAAA,OAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ,IAAA,CAAK,UAAA,CAAW,GAAG,CAAC,CAAA;AAC9D,IAAA;AAEA,IAAA,SAAS,aAAA,CAAyB,SAAA,EAAsB,IAAA,EAAY,MAAA,EAAc;AAChF,MAAA,MAAM,CAAA,GAAI,UAAU,KAAA,CAAM,SAAA,CAAU,CAAC,KAAA,KAAU,KAAA,CAAM,YAAY,MAAM,CAAA;AACvE,MAAA,IAAI,KAAK,CAAA,EAAG;AACV,QAAA,SAAA,CAAU,KAAA,CAAM,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,IAAI,CAAA;MACnC,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,KAAA,CAAM,KAAK,IAAI,CAAA;AACzB,QAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,KAAA,EAAQ,MAAM,CAAA,eAAA,CAAiB,CAAA;AAClD,MAAA;AACF,IAAA;AAEA,IAAA,SAAS,kBAA6B,GAAA,EAAsB;AAC1D,MAAA,IAAI,EAAC,YAAU,GAAI,GAAA;AACnB,MAAA,IAAI,UAAA,KAAe,MAAA;AAAW,QAAA;AAC9B,MAAA,IAAI,GAAA,CAAI,KAAA,IAAS,IAAA,CAAK,IAAA,CAAK,KAAA;AAAO,QAAA,UAAA,GAAa,aAAa,UAAU,CAAA;AACtE,MAAA,GAAA,CAAI,cAAA,GAAiB,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,IAAI,CAAA;AACpD,IAAA;AAEA,IAAA,IAAM,QAAA,GAAW;MACf,IAAA,EAAM;;AAGR,IAAA,SAAS,aAAa,MAAA,EAAiB;AACrC,MAAA,OAAO,EAAC,KAAA,EAAO,CAAC,MAAA,EAAQ,QAAQ,CAAA,EAAC;AACnC,IAAA;;;;;;;;ACz3BA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,IAAA;MACT,IAAA,GAAI;AACF,QAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AACxE,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;;ACPf,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAEA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,MAAA;MACT,UAAA,EAAY,QAAA;AACZ,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,IAAA,EAAM,IAAE,GAAI,GAAA;AAChC,QAAA,MAAM,EAAC,MAAA,EAAQ,SAAA,EAAW,KAAK,YAAA,EAAc,IAAA,EAAM,MAAI,GAAI,EAAA;AAC3D,QAAA,MAAM,EAAC,MAAI,GAAI,GAAA;AACf,QAAA,IAAA,CAAK,IAAA,KAAS,GAAA,IAAO,IAAA,KAAS,IAAA,KAAS,WAAW,IAAA,CAAK,MAAA;AAAQ,UAAA,OAAO,WAAA,EAAW;AACjF,QAAA,MAAM,WAAW,SAAA,CAAA,UAAA,CAAW,KAAK,IAAA,EAAM,IAAA,EAAM,QAAQ,IAAI,CAAA;AACzD,QAAA,IAAI,QAAA,KAAa,MAAA;AAAW,UAAA,MAAM,IAAI,WAAA,CAAA,OAAA,CAAgB,GAAG,IAAA,CAAK,WAAA,EAAa,QAAQ,IAAI,CAAA;AACvF,QAAA,IAAI,oBAAoB,SAAA,CAAA,SAAA;AAAW,UAAA,OAAO,aAAa,QAAQ,CAAA;AAC/D,QAAA,OAAO,gBAAgB,QAAQ,CAAA;AAE/B,QAAA,SAAS,WAAA,GAAW;AAClB,UAAA,IAAI,GAAA,KAAQ,IAAA;AAAM,YAAA,OAAO,OAAA,CAAQ,GAAA,EAAK,YAAA,EAAc,GAAA,EAAK,IAAI,MAAM,CAAA;AACnE,UAAA,MAAM,WAAW,GAAA,CAAI,UAAA,CAAW,QAAQ,EAAC,GAAA,EAAK,MAAK,CAAA;AACnD,UAAA,OAAO,OAAA,CAAQ,SAAK,SAAA,CAAA,KAAI,QAAQ,CAAA,SAAA,CAAA,EAAa,IAAA,EAAM,IAAA,CAAK,MAAM,CAAA;AAChE,QAAA;AAEA,QAAA,SAAS,aAAa,GAAA,EAAc;AAClC,UAAA,MAAM,CAAA,GAAI,WAAA,CAAY,GAAA,EAAK,GAAG,CAAA;AAC9B,UAAA,OAAA,CAAQ,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,GAAA,CAAI,MAAM,CAAA;AACjC,QAAA;AAEA,QAAA,SAAS,gBAAgB,GAAA,EAAc;AACrC,UAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAClB,QAAA,EACA,KAAK,IAAA,CAAK,MAAA,KAAW,OAAO,EAAC,GAAA,EAAK,KAAK,IAAA,EAAA,IAAM,UAAA,SAAA,EAAU,GAAG,GAAC,GAAI,EAAC,GAAA,EAAK,GAAA,EAAI,CAAA;AAE3E,UAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,UAAA,MAAM,MAAA,GAAS,IAAI,SAAA,CACjB;YACE,MAAA,EAAQ,GAAA;AACR,YAAA,SAAA,EAAW,EAAA;AACX,YAAA,UAAA,EAAY,SAAA,CAAA,GAAA;YACZ,YAAA,EAAc,OAAA;YACd,aAAA,EAAe;aAEjB,KAAK,CAAA;AAEP,UAAA,GAAA,CAAI,eAAe,MAAM,CAAA;AACzB,UAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACd,QAAA;AACF,MAAA;;AAGF,IAAA,SAAgB,WAAA,CAAY,KAAiB,GAAA,EAAc;AACzD,MAAA,MAAM,EAAC,KAAG,GAAI,GAAA;AACd,MAAA,OAAO,GAAA,CAAI,WACP,GAAA,CAAI,UAAA,CAAW,YAAY,EAAC,GAAA,EAAK,IAAI,QAAA,EAAS,QAC9C,SAAA,CAAA,KAAI,GAAA,CAAI,UAAA,CAAW,WAAW,EAAC,GAAA,EAAK,GAAA,EAAI,CAAC,CAAA,SAAA,CAAA;AAC/C,IAAA;AALA,IAAA,OAAA,CAAA,WAAA,GAAA,WAAA;AAOA,IAAA,SAAgB,OAAA,CAAQ,GAAA,EAAiB,CAAA,EAAS,GAAA,EAAiB,MAAA,EAAgB;AACjF,MAAA,MAAM,EAAC,GAAA,EAAK,EAAA,EAAE,GAAI,GAAA;AAClB,MAAA,MAAM,EAAC,SAAA,EAAW,SAAA,EAAW,GAAA,EAAK,MAAI,GAAI,EAAA;AAC1C,MAAA,MAAM,UAAU,IAAA,CAAK,WAAA,GAAc,OAAA,CAAA,OAAA,CAAE,OAAO,SAAA,CAAA,GAAA;AAC5C,MAAA,IAAI,MAAA;AAAQ,QAAA,YAAA,EAAY;;AACnB,QAAA,WAAA,EAAW;AAEhB,MAAA,SAAS,YAAA,GAAY;AACnB,QAAA,IAAI,CAAC,GAAA,CAAI,MAAA;AAAQ,UAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AACzE,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AAC7B,QAAA,GAAA,CAAI,IACF,MAAK;AACH,UAAA,GAAA,CAAI,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,IAAU,MAAA,CAAA,gBAAA,EAAiB,GAAA,EAAK,CAAA,EAAG,OAAO,CAAC,CAAA,CAAE,CAAA;AACtD,UAAA,gBAAA,CAAiB,CAAC,CAAA;AAClB,UAAA,IAAI,CAAC,SAAA;AAAW,YAAA,GAAA,CAAI,MAAA,CAAO,OAAO,IAAI,CAAA;AACxC,QAAA,CAAA,EACA,CAAC,CAAA,KAAK;AACJ,UAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAM,CAAC,CAAA,YAAA,EAAe,EAAA,CAAG,eAAuB,CAAA,CAAA,CAAA,EAAK,MAAM,GAAA,CAAI,KAAA,CAAM,CAAC,CAAC,CAAA;AAC9E,UAAA,aAAA,CAAc,CAAC,CAAA;AACf,UAAA,IAAI,CAAC,SAAA;AAAW,YAAA,GAAA,CAAI,MAAA,CAAO,OAAO,KAAK,CAAA;QACzC,CAAC,CAAA;AAEH,QAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACd,MAAA;AAEA,MAAA,SAAS,WAAA,GAAW;AAClB,QAAA,GAAA,CAAI,MAAA,CAAA,IACF,MAAA,CAAA,gBAAA,EAAiB,KAAK,CAAA,EAAG,OAAO,CAAA,EAChC,MAAM,iBAAiB,CAAC,CAAA,EACxB,MAAM,aAAA,CAAc,CAAC,CAAC,CAAA;AAE1B,MAAA;AAEA,MAAA,SAAS,cAAc,MAAA,EAAY;AACjC,QAAA,MAAM,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAM,CAAA,OAAA,CAAA;AACvB,QAAA,GAAA,CAAI,OAAO,OAAA,CAAA,OAAA,CAAE,aAAS,SAAA,CAAA,KAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,YAAA,EAAe,IAAI,CAAA,GAAA,EAAM,OAAA,CAAA,QAAE,OAAO,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,CAAG,CAAA;AACvF,QAAA,GAAA,CAAI,MAAA,CAAO,OAAA,CAAA,OAAA,CAAE,MAAA,EAAA,IAAQ,UAAA,CAAA,CAAA,CAAA,EAAI,OAAA,CAAA,OAAA,CAAE,OAAO,CAAA,OAAA,CAAS,CAAA;AAC7C,MAAA;AAEA,MAAA,SAAS,iBAAiB,MAAA,EAAY;;AACpC,QAAA,IAAI,CAAC,GAAG,IAAA,CAAK,WAAA;AAAa,UAAA;AAC1B,QAAA,MAAM,YAAA,GAAA,CAAe,EAAA,GAAA,GAAA,KAAG,IAAA,IAAH,GAAA,KAAG,MAAA,GAAA,MAAA,GAAH,GAAA,CAAK,QAAA,MAAQ,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,SAAA,EAAA,CAAE,SAAA;AAEpC,QAAA,IAAI,EAAA,CAAG,UAAU,IAAA,EAAM;AACrB,UAAA,IAAI,YAAA,IAAgB,CAAC,YAAA,CAAa,YAAA,EAAc;AAC9C,YAAA,IAAI,YAAA,CAAa,UAAU,MAAA,EAAW;AACpC,cAAA,EAAA,CAAG,KAAA,GAAQ,OAAA,cAAA,CAAe,KAAA,CAAM,KAAK,YAAA,CAAa,KAAA,EAAO,GAAG,KAAK,CAAA;AACnE,YAAA;UACF,CAAA,MAAO;AACL,YAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAM,CAAA,gBAAA,CAAkB,CAAA;AAC3D,YAAA,EAAA,CAAG,KAAA,GAAQ,OAAA,cAAA,CAAe,KAAA,CAAM,KAAK,KAAA,EAAO,EAAA,CAAG,KAAA,EAAO,SAAA,CAAA,IAAI,CAAA;AAC5D,UAAA;AACF,QAAA;AACA,QAAA,IAAI,EAAA,CAAG,UAAU,IAAA,EAAM;AACrB,UAAA,IAAI,YAAA,IAAgB,CAAC,YAAA,CAAa,YAAA,EAAc;AAC9C,YAAA,IAAI,YAAA,CAAa,UAAU,MAAA,EAAW;AACpC,cAAA,EAAA,CAAG,KAAA,GAAQ,OAAA,cAAA,CAAe,KAAA,CAAM,KAAK,YAAA,CAAa,KAAA,EAAO,GAAG,KAAK,CAAA;AACnE,YAAA;UACF,CAAA,MAAO;AACL,YAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAM,CAAA,gBAAA,CAAkB,CAAA;AAC3D,YAAA,EAAA,CAAG,KAAA,GAAQ,OAAA,cAAA,CAAe,KAAA,CAAM,KAAK,KAAA,EAAO,EAAA,CAAG,KAAA,EAAO,SAAA,CAAA,IAAI,CAAA;AAC5D,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAhEA,IAAA,OAAA,CAAA,OAAA,GAAA,OAAA;AAkEA,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC/Hf,IAAA,IAAA,IAAA,GAAA,UAAA,EAAA;AACA,IAAA,IAAA,KAAA,GAAA,WAAA,EAAA;AAEA,IAAA,IAAM,IAAA,GAAmB;AACvB,MAAA,SAAA;AACA,MAAA,KAAA;AACA,MAAA,OAAA;AACA,MAAA,aAAA;AACA,MAAA,EAAC,SAAS,UAAA,EAAU;AACpB,MAAA,aAAA;MACA,IAAA,CAAA,OAAA;MACA,KAAA,CAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,IAAA;;;;;;;;ACbf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAEA,IAAA,IAAM,MAAM,SAAA,CAAA,SAAA;AAMZ,IAAA,IAAM,IAAA,GAAgE;MACpE,OAAA,EAAS,EAAC,OAAO,IAAA,EAAM,EAAA,EAAI,IAAI,GAAA,EAAK,IAAA,EAAM,IAAI,EAAA,EAAE;MAChD,OAAA,EAAS,EAAC,OAAO,IAAA,EAAM,EAAA,EAAI,IAAI,GAAA,EAAK,IAAA,EAAM,IAAI,EAAA,EAAE;MAChD,gBAAA,EAAkB,EAAC,OAAO,GAAA,EAAK,EAAA,EAAI,IAAI,EAAA,EAAI,IAAA,EAAM,IAAI,GAAA,EAAG;MACxD,gBAAA,EAAkB,EAAC,OAAO,GAAA,EAAK,EAAA,EAAI,IAAI,EAAA,EAAI,IAAA,EAAM,IAAI,GAAA;;AASvD,IAAA,IAAM,KAAA,GAAgC;AACpC,MAAA,OAAA,EAAS,CAAC,EAAC,OAAA,EAAS,UAAA,EAAU,KAAA,IAAM,SAAA,CAAA,GAAA,CAAA,CAAA,QAAA,EAAc,IAAA,CAAK,OAAc,CAAA,CAAE,KAAK,IAAI,UAAU,CAAA,CAAA;AAC1F,MAAA,MAAA,EAAQ,CAAC,EAAC,OAAA,EAAS,UAAA,EAAU,KAAA,IAC3B,SAAA,CAAA,CAAA,CAAA,CAAA,aAAA,EAAiB,IAAA,CAAK,OAAc,CAAA,CAAE,KAAK,YAAY,UAAU,CAAA,CAAA;;AAGrE,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,MAAA,CAAO,KAAK,IAAI,CAAA;MACzB,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,OAAA,EAAS,IAAA,EAAM,UAAA,EAAU,GAAI,GAAA;AACpC,QAAA,GAAA,CAAI,SAAA,CAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,OAAc,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,CAAG,CAAA;AACvF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACvCf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAQA,IAAA,IAAM,KAAA,GAAgC;AACpC,MAAA,OAAA,EAAS,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,2BAA0B,UAAU,CAAA,CAAA;AAC/D,MAAA,MAAA,EAAQ,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,kBAAiB,UAAU,CAAA,CAAA;;AAGvD,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,YAAA;MACT,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,UAAA,EAAY,IAAE,GAAI,GAAA;AAEpC,QAAA,MAAM,IAAA,GAAO,GAAG,IAAA,CAAK,mBAAA;AACrB,QAAA,MAAM,GAAA,GAAM,GAAA,CAAI,GAAA,CAAI,KAAK,CAAA;AACzB,QAAA,MAAMC,WAAU,IAAA,GAAA,IACZ,SAAA,CAAA,CAAA,CAAA,CAAA,oBAAA,EAAwB,GAAG,CAAA,IAAA,EAAO,GAAG,CAAA,OAAA,EAAU,IAAI,SACnD,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,iBAAiB,GAAG,CAAA,CAAA,CAAA;AAC/B,QAAA,GAAA,CAAI,SAAA,CAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,UAAU,CAAA,WAAA,EAAc,GAAG,CAAA,GAAA,EAAM,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,EAAA,EAAKA,QAAO,CAAA,EAAA,CAAI,CAAA;AACxF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC/Bf,IAAA,SAAwB,WAAW,GAAA,EAAW;AAC5C,MAAA,MAAM,MAAM,GAAA,CAAI,MAAA;AAChB,MAAA,IAAI,MAAA,GAAS,CAAA;AACb,MAAA,IAAI,GAAA,GAAM,CAAA;AACV,MAAA,IAAI,KAAA;AACJ,MAAA,OAAO,MAAM,GAAA,EAAK;AAChB,QAAA,MAAA,EAAA;AACA,QAAA,KAAA,GAAQ,GAAA,CAAI,WAAW,GAAA,EAAK,CAAA;AAC5B,QAAA,IAAI,KAAA,IAAS,KAAA,IAAU,KAAA,IAAS,KAAA,IAAU,MAAM,GAAA,EAAK;AAEnD,UAAA,KAAA,GAAQ,GAAA,CAAI,WAAW,GAAG,CAAA;AAC1B,UAAA,IAAA,CAAK,QAAQ,KAAA,MAAY,KAAA;AAAQ,YAAA,GAAA,EAAA;AACnC,QAAA;AACF,MAAA;AACA,MAAA,OAAO,MAAA;AACT,IAAA;AAfA,IAAA,OAAA,CAAA,OAAA,GAAA,UAAA;AAiBA,IAAA,UAAA,CAAW,IAAA,GAAO,gDAAA;;;;;;;;ACjBlB,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,YAAA,GAAA,kBAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,CAAQ,EAAC,OAAA,EAAS,UAAA,EAAU,EAAC;AAC3B,QAAA,MAAM,IAAA,GAAO,OAAA,KAAY,WAAA,GAAc,MAAA,GAAS,OAAA;AAChD,QAAA,OAAA,IAAO,SAAA,CAAA,GAAA,CAAA,CAAA,cAAA,EAAoB,IAAI,SAAS,UAAU,CAAA,WAAA,CAAA;AACpD,MAAA,CAAA;AACA,MAAA,MAAA,EAAQ,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,aAAY,UAAU,CAAA,CAAA;;AAGlD,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,CAAC,aAAa,WAAW,CAAA;MAClC,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,OAAA,EAAS,IAAA,EAAM,UAAA,EAAY,IAAE,GAAI,GAAA;AACxC,QAAA,MAAM,KAAK,OAAA,KAAY,WAAA,GAAc,UAAA,SAAA,CAAU,EAAA,GAAK,UAAA,SAAA,CAAU,EAAA;AAC9D,QAAA,MAAM,GAAA,GACJ,GAAG,IAAA,CAAK,OAAA,KAAY,YAAQ,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAA,GAAA,IAAY,UAAA,CAAA,CAAA,CAAA,EAAA,IAAI,OAAA,OAAA,EAAQ,GAAA,CAAI,KAAK,YAAA,CAAA,OAAU,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA;AAC1F,QAAA,GAAA,CAAI,SAAA,CAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAA;AAC7C,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC3Bf,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAIA,IAAA,IAAM,KAAA,GAAgC;AACpC,MAAA,OAAA,EAAS,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,2BAA0B,UAAU,CAAA,CAAA,CAAA;AAC/D,MAAA,MAAA,EAAQ,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,eAAc,UAAU,CAAA,CAAA;;AAGpD,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,SAAA;MACT,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,OAAO,MAAA,EAAQ,UAAA,EAAY,IAAE,GAAI,GAAA;AACnD,QAAA,MAAM,CAAA,GAAI,EAAA,CAAG,IAAA,CAAK,aAAA,GAAgB,GAAA,GAAM,EAAA;AACxC,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,EAAC,MAAA,EAAM,GAAI,EAAA,CAAG,IAAA,CAAK,IAAA;AACzB,UAAA,MAAM,UAAA,GAAa,MAAA,CAAO,IAAA,KAAS,YAAA,GAAA,IAAe,SAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,GAAA,IAAgB,MAAA,CAAA,OAAA,EAAQ,GAAA,EAAK,MAAM,CAAA;AACrF,UAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AAC7B,UAAA,GAAA,CAAI,GAAA,CACF,MAAM,GAAA,CAAI,MAAA,CAAO,WAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,EAAI,UAAU,KAAK,CAAC,CAAA,OAAA,EAAU,IAAI,CAAA,CAAA,CAAG,CAAA,EAC3E,MAAM,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,KAAK,CAAC,CAAA;AAEhC,UAAA,GAAA,CAAI,SAAA,CAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,KAAK,CAAA,CAAE,CAAA;QAC5B,CAAA,MAAO;AACL,UAAA,MAAM,MAAA,GAAA,IAAS,MAAA,CAAA,UAAA,EAAW,KAAK,MAAM,CAAA;AACrC,UAAA,GAAA,CAAI,cAAU,SAAA,CAAA,MAAK,MAAM,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,CAAG,CAAA;AAC3C,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACpCf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,CAAQ,EAAC,OAAA,EAAS,UAAA,EAAU,EAAC;AAC3B,QAAA,MAAM,IAAA,GAAO,OAAA,KAAY,eAAA,GAAkB,MAAA,GAAS,OAAA;AACpD,QAAA,OAAA,IAAO,SAAA,CAAA,GAAA,CAAA,CAAA,cAAA,EAAoB,IAAI,SAAS,UAAU,CAAA,WAAA,CAAA;AACpD,MAAA,CAAA;AACA,MAAA,MAAA,EAAQ,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,aAAY,UAAU,CAAA,CAAA;;AAGlD,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,CAAC,iBAAiB,eAAe,CAAA;MAC1C,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,OAAA,EAAS,IAAA,EAAM,UAAA,EAAU,GAAI,GAAA;AACpC,QAAA,MAAM,KAAK,OAAA,KAAY,eAAA,GAAkB,UAAA,SAAA,CAAU,EAAA,GAAK,UAAA,SAAA,CAAU,EAAA;AAClE,QAAA,GAAA,CAAI,SAAA,CAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,YAAA,EAAgB,IAAI,CAAA,SAAA,EAAY,EAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAA;AAClE,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACvBf,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AAOA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAQA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,CAAC,EAAC,MAAA,EAAQ,EAAC,eAAA,IAAgB,KAAA,IAAM,SAAA,CAAA,GAAA,CAAA,CAAA,6BAAA,EAAmC,eAAe,CAAA,CAAA,CAAA;MAC5F,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAQ,EAAC,eAAA,IAAgB,KAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,kBAAA,EAAsB,eAAe,CAAA,CAAA;;AAGhF,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,UAAA;MACT,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,OAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,YAAY,IAAA,EAAM,KAAA,EAAO,IAAE,GAAI,GAAA;AACnD,QAAA,MAAM,EAAC,MAAI,GAAI,EAAA;AACf,QAAA,IAAI,CAAC,KAAA,IAAS,MAAA,CAAO,MAAA,KAAW,CAAA;AAAG,UAAA;AACnC,QAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,IAAU,IAAA,CAAK,YAAA;AACtC,QAAA,IAAI,EAAA,CAAG,SAAA;AAAW,UAAA,aAAA,EAAa;;AAC1B,UAAA,eAAA,EAAe;AAEpB,QAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,UAAA,MAAM,KAAA,GAAQ,IAAI,YAAA,CAAa,UAAA;AAC/B,UAAA,MAAM,EAAC,iBAAA,EAAiB,GAAI,GAAA,CAAI,EAAA;AAChC,UAAA,KAAA,MAAW,eAAe,MAAA,EAAQ;AAChC,YAAA,IAAA,CAAI,KAAA,KAAK,IAAA,IAAL,KAAA,KAAK,MAAA,GAAA,MAAA,GAAL,KAAA,CAAQ,WAAW,CAAA,MAAM,MAAA,IAAa,CAAC,iBAAA,CAAkB,GAAA,CAAI,WAAW,CAAA,EAAG;AAC7E,cAAA,MAAM,UAAA,GAAa,EAAA,CAAG,SAAA,CAAU,MAAA,GAAS,EAAA,CAAG,aAAA;AAC5C,cAAA,MAAM,GAAA,GAAM,CAAA,mBAAA,EAAsB,WAAW,CAAA,qBAAA,EAAwB,UAAU,CAAA,kBAAA,CAAA;AAC/E,cAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,IAAI,GAAA,EAAK,EAAA,CAAG,KAAK,cAAc,CAAA;AACjD,YAAA;AACF,UAAA;AACF,QAAA;AAEA,QAAA,SAAS,aAAA,GAAa;AACpB,UAAA,IAAI,WAAW,KAAA,EAAO;AACpB,YAAA,GAAA,CAAI,UAAA,CAAW,SAAA,CAAA,GAAA,EAAK,eAAe,CAAA;UACrC,CAAA,MAAO;AACL,YAAA,KAAA,MAAW,QAAQ,MAAA,EAAQ;AACzB,cAAA,IAAA,MAAA,CAAA,sBAAA,EAAuB,GAAA,EAAK,IAAI,CAAA;AAClC,YAAA;AACF,UAAA;AACF,QAAA;AAEA,QAAA,SAAS,eAAA,GAAe;AACtB,UAAA,MAAM,OAAA,GAAU,GAAA,CAAI,GAAA,CAAI,SAAS,CAAA;AACjC,UAAA,IAAI,WAAW,KAAA,EAAO;AACpB,YAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AACnC,YAAA,GAAA,CAAI,WAAW,KAAA,EAAO,MAAM,gBAAA,CAAiB,OAAA,EAAS,KAAK,CAAC,CAAA;AAC5D,YAAA,GAAA,CAAI,GAAG,KAAK,CAAA;UACd,CAAA,MAAO;AACL,YAAA,GAAA,CAAI,OAAG,MAAA,CAAA,kBAAiB,GAAA,EAAK,MAAA,EAAQ,OAAO,CAAC,CAAA;AAC7C,YAAA,IAAA,MAAA,CAAA,iBAAA,EAAkB,GAAA,EAAK,OAAO,CAAA;AAC9B,YAAA,GAAA,CAAI,IAAA,EAAI;AACV,UAAA;AACF,QAAA;AAEA,QAAA,SAAS,eAAA,GAAe;AACtB,UAAA,GAAA,CAAI,KAAA,CAAM,MAAA,EAAQ,UAAA,EAAoB,CAAC,IAAA,KAAQ;AAC7C,YAAA,GAAA,CAAI,SAAA,CAAU,EAAC,eAAA,EAAiB,IAAA,EAAK,CAAA;AACrC,YAAA,GAAA,CAAI,EAAA,CAAA,IAAG,MAAA,CAAA,gBAAA,EAAiB,GAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAA,CAAK,aAAa,CAAA,EAAG,MAAM,GAAA,CAAI,OAAO,CAAA;UACjF,CAAC,CAAA;AACH,QAAA;AAEA,QAAA,SAAS,gBAAA,CAAiB,SAAe,KAAA,EAAW;AAClD,UAAA,GAAA,CAAI,SAAA,CAAU,EAAC,eAAA,EAAiB,OAAA,EAAQ,CAAA;AACxC,UAAA,GAAA,CAAI,KAAA,CACF,OAAA,EACA,UAAA,EACA,MAAK;AACH,YAAA,GAAA,CAAI,MAAA,CAAO,KAAA,EAAA,IAAO,MAAA,CAAA,cAAA,EAAe,KAAK,IAAA,EAAM,OAAA,EAAS,IAAA,CAAK,aAAa,CAAC,CAAA;AACxE,YAAA,GAAA,CAAI,OAAG,SAAA,CAAA,GAAA,EAAI,KAAK,GAAG,MAAK;AACtB,cAAA,GAAA,CAAI,KAAA,EAAK;AACT,cAAA,GAAA,CAAI,KAAA,EAAK;YACX,CAAC,CAAA;AACH,UAAA,CAAA,EACA,UAAA,GAAG,CAAA;AAEP,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC/Ff,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,CAAQ,EAAC,OAAA,EAAS,UAAA,EAAU,EAAC;AAC3B,QAAA,MAAM,IAAA,GAAO,OAAA,KAAY,UAAA,GAAa,MAAA,GAAS,OAAA;AAC/C,QAAA,OAAA,IAAO,SAAA,CAAA,GAAA,CAAA,CAAA,cAAA,EAAoB,IAAI,SAAS,UAAU,CAAA,MAAA,CAAA;AACpD,MAAA,CAAA;AACA,MAAA,MAAA,EAAQ,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,aAAY,UAAU,CAAA,CAAA;;AAGlD,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,CAAC,YAAY,UAAU,CAAA;MAChC,IAAA,EAAM,OAAA;MACN,UAAA,EAAY,QAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,OAAA,EAAS,IAAA,EAAM,UAAA,EAAU,GAAI,GAAA;AACpC,QAAA,MAAM,KAAK,OAAA,KAAY,UAAA,GAAa,UAAA,SAAA,CAAU,EAAA,GAAK,UAAA,SAAA,CAAU,EAAA;AAC7D,QAAA,GAAA,CAAI,SAAA,CAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,QAAA,EAAW,EAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAA;AACrD,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACxBf,IAAA,IAAA,KAAA,GAAA,uBAAA,EAAA;AAGE,IAAA,KAAA,CAAgB,IAAA,GAAO,2CAAA;AAEzB,IAAA,OAAA,CAAA,OAAA,GAAe,KAAA;;;;;;;;ACJf,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAQA,IAAA,IAAM,KAAA,GAAgC;AACpC,MAAA,OAAA,EAAS,CAAC,EAAC,MAAA,EAAQ,EAAC,CAAA,EAAG,CAAA,EAAC,EAAC,KAAA,IACvB,SAAA,CAAA,GAAA,CAAA,CAAA,wCAAA,EAA8C,CAAC,QAAQ,CAAC,CAAA,eAAA,CAAA;AAC1D,MAAA,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAQ,EAAC,CAAA,EAAG,CAAA,EAAC,EAAC,KAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAQ,CAAC,QAAQ,CAAC,CAAA,CAAA;;AAGlD,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,aAAA;MACT,IAAA,EAAM,OAAA;MACN,UAAA,EAAY,SAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,KAAK,IAAA,EAAM,KAAA,EAAO,QAAQ,YAAA,EAAc,UAAA,EAAY,IAAE,GAAI,GAAA;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,MAAA;AAAQ,UAAA;AACvB,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AAC7B,QAAA,MAAM,SAAA,GAAY,aAAa,KAAA,GAAA,IAAQ,WAAA,cAAA,EAAe,YAAA,CAAa,KAAK,CAAA,GAAI,EAAA;AAC5E,QAAA,GAAA,CAAI,WAAW,KAAA,EAAO,mBAAA,EAAA,IAAqB,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,UAAU,CAAA,UAAA,CAAY,CAAA;AACrE,QAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AAEZ,QAAA,SAAS,mBAAA,GAAmB;AAC1B,UAAA,MAAM,CAAA,GAAI,IAAI,GAAA,CAAI,GAAA,EAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAS,CAAA;AACxC,UAAA,MAAM,CAAA,GAAI,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA;AACrB,UAAA,GAAA,CAAI,SAAA,CAAU,EAAC,CAAA,EAAG,CAAA,EAAE,CAAA;AACpB,UAAA,GAAA,CAAI,MAAA,CAAO,OAAO,IAAI,CAAA;AACtB,UAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,CAAC,CAAA,IAAA,CAAA,EAAQ,MAAA,CAAO,WAAA,EAAW,GAAK,KAAA,GAAQ,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAC,CAAA;AAClE,QAAA;AAEA,QAAA,SAAS,WAAA,GAAW;AAClB,UAAA,OAAO,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,CAAC,SAAA,CAAU,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,KAAM,QAAA,IAAY,CAAA,KAAM,OAAO,CAAA;AACvF,QAAA;AAEA,QAAA,SAAS,KAAA,CAAM,GAAS,CAAA,EAAO;AAC7B,UAAA,MAAM,IAAA,GAAO,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA;AAC5B,UAAA,MAAM,SAAA,GAAA,IAAY,UAAA,CAAA,cAAA,EAAe,SAAA,EAAW,IAAA,EAAM,EAAA,CAAG,IAAA,CAAK,aAAA,EAAe,UAAA,CAAA,QAAA,CAAS,KAAK,CAAA;AACvF,UAAA,MAAM,UAAU,GAAA,CAAI,KAAA,CAAM,SAAA,EAAA,IAAW,UAAA,CAAA,CAAA,CAAA,EAAA,CAAK,CAAA;AAC1C,UAAA,GAAA,CAAI,QAAI,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAC,OAAO,MAAK;AACxB,YAAA,GAAA,CAAI,GAAA,CAAI,UAAM,SAAA,CAAA,KAAI,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAA;AAC9B,YAAA,GAAA,CAAI,EAAA,CAAG,SAAA,EAAA,IAAW,SAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAW,CAAA;AAC7B,YAAA,IAAI,UAAU,MAAA,GAAS,CAAA;AAAG,cAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,IAAI,oBAAgB,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAS,CAAA;AACjF,YAAA,GAAA,CACG,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,OAAO,CAAA,CAAA,EAAI,IAAI,iBAAiB,MAAK;AAClD,cAAA,GAAA,CAAI,MAAA,CAAO,OAAG,SAAA,CAAA,KAAI,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAG,CAAA;AACpC,cAAA,GAAA,CAAI,KAAA,EAAK;AACT,cAAA,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,CAAE,KAAA,EAAK;YAChC,CAAC,CAAA,CACA,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,IAAA,EAAO,CAAC,CAAA,CAAE,CAAA;UACvC,CAAC,CAAA;AACH,QAAA;AAEA,QAAA,SAAS,MAAA,CAAO,GAAS,CAAA,EAAO;AAC9B,UAAA,MAAM,UAAM,MAAA,CAAA,OAAA,EAAQ,GAAA,EAAK,QAAA,OAAK,CAAA;AAC9B,UAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,UAAA,GAAA,CAAI,MAAM,KAAK,CAAA,CAAE,GAAA,CAAA,IAAI,UAAA,CAAA,CAAA,CAAA,CAAA,EAAK,CAAC,CAAA,GAAA,CAAA,EAAO,MAChC,IAAI,GAAA,CAAA,IAAI,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,EAAA,EAAK,CAAC,OAAO,MAC/B,GAAA,CAAI,EAAA,CAAA,IAAG,UAAA,CAAA,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAI,IAAI,CAAC,CAAA,GAAA,EAAM,IAAI,CAAA,CAAA,EAAI,CAAC,MAAM,MAAK;AACnD,YAAA,GAAA,CAAI,KAAA,EAAK;AACT,YAAA,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,CAAE,MAAM,KAAK,CAAA;AACtC,UAAA,CAAC,CAAC,CACH,CAAA;AAEL,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC5Ef,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAIA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,2BAAA;AACT,MAAA,MAAA,EAAQ,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,oBAAmB,UAAU,CAAA,CAAA;;AAGzD,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,OAAA;MACT,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,QAAM,GAAI,GAAA;AAC/C,QAAA,IAAI,KAAA,IAAU,MAAA,IAAU,OAAO,MAAA,IAAU,QAAA,EAAW;AAClD,UAAA,GAAA,CAAI,SAAA,CAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAK,MAAA,CAAA,OAAA,EAAQ,GAAA,EAAK,OAAA,CAAA,OAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,UAAU,CAAA,CAAA,CAAG,CAAA;QAClE,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,SAAK,SAAA,CAAA,KAAI,MAAM,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAA;AACnC,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACzBf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAIA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,4CAAA;AACT,MAAA,MAAA,EAAQ,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,qBAAoB,UAAU,CAAA,CAAA;;AAG1D,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,MAAA;MACT,UAAA,EAAY,OAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,OAAO,MAAA,EAAQ,UAAA,EAAY,IAAE,GAAI,GAAA;AACnD,QAAA,IAAI,CAAC,KAAA,IAAS,MAAA,CAAO,MAAA,KAAW,CAAA;AAAG,UAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AACnF,QAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,IAAU,EAAA,CAAG,IAAA,CAAK,QAAA;AACzC,QAAA,IAAI,GAAA;AACJ,QAAA,MAAM,MAAA,GAAS,MAAa,GAAA,KAAG,IAAA,IAAH,GAAA,KAAG,MAAA,GAAH,GAAA,GAAA,GAAA,GAAA,IAAQ,MAAA,CAAA,OAAA,EAAQ,GAAA,EAAK,QAAA,OAAK,CAAA;AAEtD,QAAA,IAAI,KAAA;AACJ,QAAA,IAAI,WAAW,KAAA,EAAO;AACpB,UAAA,KAAA,GAAQ,GAAA,CAAI,IAAI,OAAO,CAAA;AACvB,UAAA,GAAA,CAAI,UAAA,CAAW,OAAO,QAAQ,CAAA;QAChC,CAAA,MAAO;AAEL,UAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA;AAAG,YAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AACtE,UAAA,MAAM,OAAA,GAAU,GAAA,CAAI,KAAA,CAAM,SAAA,EAAW,UAAU,CAAA;AAC/C,UAAA,KAAA,GAAA,IAAQ,SAAA,CAAA,EAAA,EAAG,GAAG,MAAA,CAAO,GAAA,CAAI,CAAC,EAAA,EAAa,CAAA,KAAc,SAAA,CAAU,OAAA,EAAS,CAAC,CAAC,CAAC,CAAA;AAC7E,QAAA;AACA,QAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AAEd,QAAA,SAAS,QAAA,GAAQ;AACf,UAAA,GAAA,CAAI,MAAA,CAAO,OAAO,KAAK,CAAA;AACvB,UAAA,GAAA,CAAI,KAAA,CAAM,GAAA,EAAK,UAAA,EAAoB,CAAC,CAAA,KAClC,IAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAA,EAAQ,IAAI,IAAI,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAA,EAAK,MAAM,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA,CAAE,KAAA,EAAO,CAAC,CAAA;AAEhF,QAAA;AAEA,QAAA,SAAS,SAAA,CAAU,SAAe,CAAA,EAAS;AACzC,UAAA,MAAM,GAAA,GAAM,OAAO,CAAC,CAAA;AACpB,UAAA,OAAO,OAAO,QAAQ,QAAA,IAAY,GAAA,KAAQ,WACtC,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAA,EAAQ,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,OAAO,IAAI,CAAC,CAAA,EAAA,CAAA,GAAA,IACrC,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,KAAA,EAAQ,GAAG,CAAA,CAAA;AACzB,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACpDf,IAAA,IAAA,aAAA,GAAA,mBAAA,EAAA;AACA,IAAA,IAAA,YAAA,GAAA,kBAAA,EAAA;AACA,IAAA,IAAA,aAAA,GAAA,mBAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,iBAAA,GAAA,uBAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AACA,IAAA,IAAA,YAAA,GAAA,kBAAA,EAAA;AACA,IAAA,IAAA,aAAA,GAAA,mBAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAEA,IAAA,IAAM,UAAA,GAAyB;;MAE7B,aAAA,CAAA,OAAA;MACA,YAAA,CAAA,OAAA;;MAEA,aAAA,CAAA,OAAA;MACA,SAAA,CAAA,OAAA;;MAEA,iBAAA,CAAA,OAAA;MACA,UAAA,CAAA,OAAA;;MAEA,YAAA,CAAA,OAAA;MACA,aAAA,CAAA,OAAA;;AAEA,MAAA,EAAC,SAAS,MAAA,EAAQ,UAAA,EAAY,CAAC,QAAA,EAAU,OAAO,CAAA,EAAC;MACjD,EAAC,OAAA,EAAS,UAAA,EAAY,UAAA,EAAY,SAAA,EAAS;MAC3C,OAAA,CAAA,OAAA;MACA,MAAA,CAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,UAAA;;;;;;;;;ACzBf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAIA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,CAAC,EAAC,MAAA,EAAQ,EAAC,GAAA,IAAI,KAAA,IAAM,SAAA,CAAA,GAAA,CAAA,CAAA,wBAAA,EAA8B,GAAG,CAAA,MAAA,CAAA;MAC/D,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAQ,EAAC,GAAA,IAAI,KAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,QAAA,EAAY,GAAG,CAAA,CAAA;;AAG9C,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,iBAAA;MACT,IAAA,EAAM,OAAA;MACN,UAAA,EAAY,CAAC,WAAW,QAAQ,CAAA;MAChC,MAAA,EAAQ,aAAA;AACR,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,YAAA,EAAc,EAAA,EAAE,GAAI,GAAA;AAC3B,QAAA,MAAM,EAAC,OAAK,GAAI,YAAA;AAChB,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,UAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,EAAA,EAAI,sEAAsE,CAAA;AAC1F,UAAA;AACF,QAAA;AACA,QAAA,uBAAA,CAAwB,KAAK,KAAK,CAAA;AACpC,MAAA;;AAGF,IAAA,SAAgB,uBAAA,CAAwB,KAAiB,KAAA,EAAkB;AACzE,MAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,IAAE,GAAI,GAAA;AACzC,MAAA,EAAA,CAAG,KAAA,GAAQ,IAAA;AACX,MAAA,MAAM,GAAA,GAAM,IAAI,KAAA,CAAM,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAS,CAAA;AAC9C,MAAA,IAAI,WAAW,KAAA,EAAO;AACpB,QAAA,GAAA,CAAI,SAAA,CAAU,EAAC,GAAA,EAAK,KAAA,CAAM,QAAO,CAAA;AACjC,QAAA,GAAA,CAAI,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,CAAA,IAAA,EAAO,KAAA,CAAM,MAAM,CAAA,CAAE,CAAA;MACvC,CAAA,MAAA,IAAW,OAAO,UAAU,QAAA,IAAY,CAAA,IAAC,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAM,CAAA,EAAG;AACtE,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,CAAA,IAAA,EAAO,KAAA,CAAM,MAAM,CAAA,CAAE,CAAA;AAC3D,QAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,GAAA,EAAI,KAAK,CAAA,EAAG,MAAM,aAAA,CAAc,KAAK,CAAC,CAAA;AAC7C,QAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACd,MAAA;AAEA,MAAA,SAAS,cAAc,KAAA,EAAW;AAChC,QAAA,GAAA,CAAI,SAAS,GAAA,EAAK,KAAA,CAAM,MAAA,EAAQ,GAAA,EAAK,CAAC,CAAA,KAAK;AACzC,UAAA,GAAA,CAAI,SAAA,CAAU,EAAC,OAAA,EAAS,QAAA,EAAU,CAAA,EAAG,cAAc,MAAA,CAAA,IAAA,CAAK,GAAA,EAAG,EAAG,KAAK,CAAA;AACnE,UAAA,IAAI,CAAC,EAAA,CAAG,SAAA;AAAW,YAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,GAAA,EAAI,KAAK,CAAA,EAAG,MAAM,GAAA,CAAI,KAAA,EAAO,CAAA;QACzD,CAAC,CAAA;AACH,MAAA;AACF,IAAA;AAnBA,IAAA,OAAA,CAAA,uBAAA,GAAA,uBAAA;AAqBA,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;;ACrDf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AAEA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,OAAA;MACT,IAAA,EAAM,OAAA;MACN,UAAA,EAAY,CAAC,QAAA,EAAU,OAAA,EAAS,SAAS,CAAA;MACzC,MAAA,EAAQ,aAAA;AACR,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,MAAA,EAAQ,EAAA,EAAE,GAAI,GAAA;AACrB,QAAA,IAAI,KAAA,CAAM,QAAQ,MAAM,CAAA;AAAG,UAAA,OAAO,aAAA,CAAc,GAAA,EAAK,iBAAA,EAAmB,MAAM,CAAA;AAC9E,QAAA,EAAA,CAAG,KAAA,GAAQ,IAAA;AACX,QAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAM,CAAA;AAAG,UAAA;AACnC,QAAA,GAAA,CAAI,EAAA,CAAA,IAAG,MAAA,CAAA,aAAA,EAAc,GAAG,CAAC,CAAA;AAC3B,MAAA;;AAGF,IAAA,SAAgB,aAAA,CACd,GAAA,EACA,UAAA,EACA,MAAA,GAAsB,IAAI,MAAA,EAAM;AAEhC,MAAA,MAAM,EAAC,GAAA,EAAK,YAAA,EAAc,IAAA,EAAM,OAAA,EAAS,IAAE,GAAI,GAAA;AAC/C,MAAA,gBAAA,CAAiB,YAAY,CAAA;AAC7B,MAAA,IAAI,GAAG,IAAA,CAAK,WAAA,IAAe,OAAO,MAAA,IAAU,EAAA,CAAG,UAAU,IAAA,EAAM;AAC7D,QAAA,EAAA,CAAG,KAAA,GAAQ,OAAA,cAAA,CAAe,KAAA,CAAM,KAAK,MAAA,CAAO,MAAA,EAAQ,GAAG,KAAK,CAAA;AAC9D,MAAA;AACA,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,MAAA,MAAM,GAAA,GAAM,IAAI,KAAA,CAAM,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAS,CAAA;AAC9C,MAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,GAAA,EAAgB,CAAA,KAAa;AAC3C,QAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,GAAG,CAAA;AAAG,UAAA;AAChC,QAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,MAAM,CAAC,CAAA,CAAA,EAAI,MACvB,GAAA,CAAI,SAAA,CACF;AACE,UAAA,OAAA;UACA,UAAA,EAAY,CAAA;UACZ,QAAA,EAAU;AAEZ,SAAA,EAAA,KAAK,CACN,CAAA;AAEH,QAAA,GAAA,CAAI,GAAG,KAAK,CAAA;MACd,CAAC,CAAA;AAED,MAAA,SAAS,iBAAiB,GAAA,EAAoB;AAC5C,QAAA,MAAM,EAAC,IAAA,EAAM,aAAA,EAAa,GAAI,EAAA;AAC9B,QAAA,MAAM,IAAI,MAAA,CAAO,MAAA;AACjB,QAAA,MAAM,SAAA,GAAY,MAAM,GAAA,CAAI,QAAA,KAAa,MAAM,GAAA,CAAI,QAAA,IAAY,GAAA,CAAI,UAAU,CAAA,KAAM,KAAA,CAAA;AACnF,QAAA,IAAI,IAAA,CAAK,YAAA,IAAgB,CAAC,SAAA,EAAW;AACnC,UAAA,MAAM,GAAA,GAAM,IAAI,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAA,iCAAA,EAAoC,UAAU,4CAA4C,aAAa,CAAA,CAAA,CAAA;AACvI,UAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,EAAA,EAAI,GAAA,EAAK,KAAK,YAAY,CAAA;AAC5C,QAAA;AACF,MAAA;AACF,IAAA;AApCA,IAAA,OAAA,CAAA,aAAA,GAAA,aAAA;AAsCA,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACzDf,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAEA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,aAAA;MACT,IAAA,EAAM,OAAA;AACN,MAAA,UAAA,EAAY,CAAC,OAAO,CAAA;MACpB,MAAA,EAAQ,aAAA;AACR,MAAA,IAAA,EAAM,CAAC,GAAA,KAAA,IAAQ,OAAA,CAAA,aAAA,EAAc,KAAK,OAAO;;AAG3C,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACJf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,iBAAA,GAAA,uBAAA,EAAA;AAIA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,CAAC,EAAC,MAAA,EAAQ,EAAC,GAAA,IAAI,KAAA,IAAM,SAAA,CAAA,GAAA,CAAA,CAAA,wBAAA,EAA8B,GAAG,CAAA,MAAA,CAAA;MAC/D,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAQ,EAAC,GAAA,IAAI,KAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,QAAA,EAAY,GAAG,CAAA,CAAA;;AAG9C,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,OAAA;MACT,IAAA,EAAM,OAAA;MACN,UAAA,EAAY,CAAC,UAAU,SAAS,CAAA;MAChC,MAAA,EAAQ,aAAA;AACR,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,MAAA,EAAQ,YAAA,EAAc,EAAA,EAAE,GAAI,GAAA;AACnC,QAAA,MAAM,EAAC,aAAW,GAAI,YAAA;AACtB,QAAA,EAAA,CAAG,KAAA,GAAQ,IAAA;AACX,QAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAM,CAAA;AAAG,UAAA;AACnC,QAAA,IAAI,WAAA;AAAa,UAAA,IAAA,iBAAA,CAAA,uBAAA,EAAwB,GAAA,EAAK,WAAW,CAAA;;AACpD,UAAA,GAAA,CAAI,EAAA,CAAA,IAAG,MAAA,CAAA,aAAA,EAAc,GAAG,CAAC,CAAA;AAChC,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC5Bf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAQA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,CAAC,EAAC,MAAA,EAAQ,EAAC,KAAK,GAAA,EAAG,OAC1B,GAAA,KAAQ,MAAA,GAAA,IACJ,SAAA,CAAA,GAAA,CAAA,CAAA,sBAAA,EAA4B,GAAG,CAAA,cAAA,CAAA,GAAA,IAC/B,UAAA,GAAA,CAAA,CAAA,sBAAA,EAA4B,GAAG,qBAAqB,GAAG,CAAA,cAAA,CAAA;MAC7D,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAQ,EAAC,KAAK,GAAA,EAAG,OACzB,GAAA,KAAQ,MAAA,GAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,cAAA,EAAkB,GAAG,CAAA,CAAA,CAAA,GAAA,IAAM,UAAA,CAAA,CAAA,CAAA,cAAA,EAAkB,GAAG,kBAAkB,GAAG,CAAA,CAAA;;AAG7F,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,UAAA;MACT,IAAA,EAAM,OAAA;MACN,UAAA,EAAY,CAAC,UAAU,SAAS,CAAA;MAChC,MAAA,EAAQ,aAAA;MACR,WAAA,EAAa,IAAA;AACb,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc,IAAA,EAAM,IAAE,GAAI,GAAA;AAC9C,QAAA,IAAI,GAAA;AACJ,QAAA,IAAI,GAAA;AACJ,QAAA,MAAM,EAAC,WAAA,EAAa,WAAA,EAAW,GAAI,YAAA;AACnC,QAAA,IAAI,EAAA,CAAG,KAAK,IAAA,EAAM;AAChB,UAAA,GAAA,GAAM,WAAA,KAAgB,SAAY,CAAA,GAAI,WAAA;AACtC,UAAA,GAAA,GAAM,WAAA;QACR,CAAA,MAAO;AACL,UAAA,GAAA,GAAM,CAAA;AACR,QAAA;AACA,QAAA,MAAM,GAAA,GAAM,IAAI,KAAA,CAAM,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,OAAA,CAAS,CAAA;AAC9C,QAAA,GAAA,CAAI,SAAA,CAAU,EAAC,GAAA,EAAK,GAAA,EAAI,CAAA;AACxB,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,EAAG;AAClC,UAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,EAAA,EAAI,CAAA,oEAAA,CAAsE,CAAA;AAC1F,UAAA;AACF,QAAA;AACA,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,GAAM,GAAA,EAAK;AAClC,UAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,EAAA,EAAI,CAAA,+CAAA,CAAiD,CAAA;AACrE,UAAA,GAAA,CAAI,IAAA,EAAI;AACR,UAAA;AACF,QAAA;AACA,QAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAM,CAAA,EAAG;AACjC,UAAA,IAAI,WAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,OAAO,GAAG,CAAA,CAAA;AAC5B,UAAA,IAAI,GAAA,KAAQ,MAAA;AAAW,YAAA,IAAA,GAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,IAAA,EAAO,GAAG,OAAO,GAAG,CAAA,CAAA;AAC1D,UAAA,GAAA,CAAI,KAAK,IAAI,CAAA;AACb,UAAA;AACF,QAAA;AAEA,QAAA,EAAA,CAAG,KAAA,GAAQ,IAAA;AACX,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,EAAG;AAClC,UAAA,aAAA,CAAc,KAAA,EAAO,MAAM,GAAA,CAAI,EAAA,CAAG,OAAO,MAAM,GAAA,CAAI,KAAA,EAAO,CAAC,CAAA;AAC7D,QAAA,CAAA,MAAA,IAAW,QAAQ,CAAA,EAAG;AACpB,UAAA,GAAA,CAAI,GAAA,CAAI,OAAO,IAAI,CAAA;AACnB,UAAA,IAAI,GAAA,KAAQ,MAAA;AAAW,YAAA,GAAA,CAAI,OAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,eAAe,sBAAsB,CAAA;QAC7E,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,GAAA,CAAI,OAAO,KAAK,CAAA;AACpB,UAAA,sBAAA,EAAsB;AACxB,QAAA;AACA,QAAA,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,MAAM,GAAA,CAAI,OAAO,CAAA;AAEnC,QAAA,SAAS,sBAAA,GAAsB;AAC7B,UAAA,MAAM,QAAA,GAAW,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA;AAClC,UAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,CAAC,CAAA;AAChC,UAAA,aAAA,CAAc,QAAA,EAAU,MAAM,GAAA,CAAI,EAAA,CAAG,UAAU,MAAM,WAAA,CAAY,KAAK,CAAC,CAAC,CAAA;AAC1E,QAAA;AAEA,QAAA,SAAS,aAAA,CAAc,QAAc,KAAA,EAAiB;AACpD,UAAA,GAAA,CAAI,QAAA,CAAS,GAAA,EAAK,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA,KAAK;AAC9B,YAAA,GAAA,CAAI,SAAA,CACF;cACE,OAAA,EAAS,UAAA;cACT,QAAA,EAAU,CAAA;AACV,cAAA,YAAA,EAAc,OAAA,IAAA,CAAK,GAAA;cACnB,aAAA,EAAe;eAEjB,MAAM,CAAA;AAER,YAAA,KAAA,EAAK;UACP,CAAC,CAAA;AACH,QAAA;AAEA,QAAA,SAAS,YAAY,KAAA,EAAW;AAC9B,UAAA,GAAA,CAAI,IAAA,CAAA,IAAK,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,KAAK,CAAA,EAAA,CAAI,CAAA;AACtB,UAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,YAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,KAAK,CAAA,IAAA,EAAO,GAAG,CAAA,CAAA,EAAI,MAAM,IAAI,MAAA,CAAO,KAAA,EAAO,IAAI,CAAA,CAAE,OAAO,CAAA;UACrE,CAAA,MAAO;AACL,YAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,KAAK,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,EAAI,MAAM,IAAI,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,CAAE,OAAO,CAAA;AACnE,YAAA,IAAI,GAAA,KAAQ,CAAA;AAAG,cAAA,GAAA,CAAI,MAAA,CAAO,OAAO,IAAI,CAAA;;AAChC,cAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,KAAK,CAAA,IAAA,EAAO,GAAG,CAAA,CAAA,EAAI,MAAM,GAAA,CAAI,MAAA,CAAO,KAAA,EAAO,IAAI,CAAC,CAAA;AAClE,UAAA;AACF,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;;ACpGf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AAmBa,IAAA,OAAA,CAAA,KAAA,GAAgC;MAC3C,OAAA,EAAS,CAAC,EAAC,MAAA,EAAQ,EAAC,UAAU,SAAA,EAAW,IAAA,IAAK,KAAK;AACjD,QAAA,MAAM,YAAA,GAAe,SAAA,KAAc,CAAA,GAAI,UAAA,GAAa,YAAA;AACpD,QAAA,OAAA,IAAO,SAAA,CAAA,GAAA,CAAA,CAAA,UAAA,EAAgB,YAAY,CAAA,CAAA,EAAI,IAAI,kBAAkB,QAAQ,CAAA,WAAA,CAAA;AACvE,MAAA,CAAA;AACA,MAAA,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAQ,EAAC,QAAA,EAAU,SAAA,EAAW,IAAA,EAAM,eAAA,EAAe,EAAC,KAAA,IAC5D,SAAA,CAAA,gBAAe,QAAQ,CAAA;uBACJ,eAAe,CAAA;iBACrB,SAAS,CAAA;YACd,IAAI,CAAA,CAAA;;;AAGhB,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,cAAA;MACT,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;AACZ,MAAA,KAAA,EAAA,OAAA,CAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,CAAC,QAAA,EAAU,OAAO,CAAA,GAAI,kBAAkB,GAAG,CAAA;AACjD,QAAA,oBAAA,CAAqB,KAAK,QAAQ,CAAA;AAClC,QAAA,kBAAA,CAAmB,KAAK,OAAO,CAAA;AACjC,MAAA;;AAGF,IAAA,SAAS,iBAAA,CAAkB,EAAC,MAAA,EAAM,EAAa;AAC7C,MAAA,MAAM,eAAqC,EAAA;AAC3C,MAAA,MAAM,aAAiC,EAAA;AACvC,MAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACxB,QAAA,IAAI,GAAA,KAAQ,WAAA;AAAa,UAAA;AACzB,QAAA,MAAM,OAAO,KAAA,CAAM,OAAA,CAAQ,OAAO,GAAG,CAAC,IAAI,YAAA,GAAe,UAAA;AACzD,QAAA,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA,CAAO,GAAG,CAAA;AACxB,MAAA;AACA,MAAA,OAAO,CAAC,cAAc,UAAU,CAAA;AAClC,IAAA;AAEA,IAAA,SAAgB,oBAAA,CACd,GAAA,EACA,YAAA,GAA2C,GAAA,CAAI,MAAA,EAAM;AAErD,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,EAAA,EAAE,GAAI,GAAA;AACxB,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,YAAY,CAAA,CAAE,MAAA,KAAW,CAAA;AAAG,QAAA;AAC5C,MAAA,MAAM,OAAA,GAAU,GAAA,CAAI,GAAA,CAAI,SAAS,CAAA;AACjC,MAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,QAAA,MAAM,IAAA,GAAO,aAAa,IAAI,CAAA;AAC9B,QAAA,IAAI,KAAK,MAAA,KAAW,CAAA;AAAG,UAAA;AACvB,QAAA,MAAM,WAAA,GAAA,IAAc,MAAA,CAAA,cAAA,EAAe,KAAK,IAAA,EAAM,IAAA,EAAM,EAAA,CAAG,IAAA,CAAK,aAAa,CAAA;AACzE,QAAA,GAAA,CAAI,SAAA,CAAU;UACZ,QAAA,EAAU,IAAA;AACV,UAAA,SAAA,EAAW,IAAA,CAAK,MAAA;UAChB,IAAA,EAAM,IAAA,CAAK,KAAK,IAAI;AACrB,SAAA,CAAA;AACD,QAAA,IAAI,GAAG,SAAA,EAAW;AAChB,UAAA,GAAA,CAAI,EAAA,CAAG,aAAa,MAAK;AACvB,YAAA,KAAA,MAAW,WAAW,IAAA,EAAM;AAC1B,cAAA,IAAA,MAAA,CAAA,sBAAA,EAAuB,GAAA,EAAK,OAAO,CAAA;AACrC,YAAA;UACF,CAAC,CAAA;QACH,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,WAAW,CAAA,KAAA,EAAA,IAAQ,MAAA,CAAA,gBAAA,EAAiB,GAAA,EAAK,IAAA,EAAM,OAAO,CAAC,CAAA,CAAA,CAAG,CAAA;AACrE,UAAA,IAAA,MAAA,CAAA,iBAAA,EAAkB,GAAA,EAAK,OAAO,CAAA;AAC9B,UAAA,GAAA,CAAI,IAAA,EAAI;AACV,QAAA;AACF,MAAA;AACF,IAAA;AA5BA,IAAA,OAAA,CAAA,oBAAA,GAAA,oBAAA;AA8BA,IAAA,SAAgB,kBAAA,CAAmB,GAAA,EAAiB,UAAA,GAAwB,GAAA,CAAI,MAAA,EAAM;AACpF,MAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,IAAE,GAAI,GAAA;AACjC,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,MAAA,KAAA,MAAW,QAAQ,UAAA,EAAY;AAC7B,QAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,UAAA,CAAW,IAAI,CAAc,CAAA;AAAG,UAAA;AAC1D,QAAA,GAAA,CAAI,EAAA;AACF,UAAA,IAAA,OAAA,cAAA,EAAe,GAAA,EAAK,MAAM,IAAA,EAAM,EAAA,CAAG,KAAK,aAAa,CAAA;UACrD,MAAK;AACH,YAAA,MAAM,MAAA,GAAS,IAAI,SAAA,CAAU,EAAC,SAAS,UAAA,EAAY,IAAA,IAAO,KAAK,CAAA;AAC/D,YAAA,GAAA,CAAI,mBAAA,CAAoB,QAAQ,KAAK,CAAA;AACvC,UAAA,CAAA;UACA,MAAM,GAAA,CAAI,GAAA,CAAI,KAAA,EAAO,IAAI;;;AAE3B,QAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACd,MAAA;AACF,IAAA;AAfA,IAAA,OAAA,CAAA,kBAAA,GAAA,kBAAA;AAiBA,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACxGf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAIA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,6BAAA;MACT,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAM,KAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,eAAA,EAAmB,OAAO,YAAY,CAAA,CAAA;;AAG9D,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,eAAA;MACT,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,CAAC,UAAU,SAAS,CAAA;AAChC,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,IAAA,EAAM,IAAE,GAAI,GAAA;AAChC,QAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAM,CAAA;AAAG,UAAA;AACnC,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAE9B,QAAA,GAAA,CAAI,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,CAAC,GAAA,KAAO;AAC7B,UAAA,GAAA,CAAI,SAAA,CAAU,EAAC,YAAA,EAAc,GAAA,EAAI,CAAA;AACjC,UAAA,GAAA,CAAI,SAAA,CACF;YACE,OAAA,EAAS,eAAA;YACT,IAAA,EAAM,GAAA;AACN,YAAA,SAAA,EAAW,CAAC,QAAQ,CAAA;YACpB,YAAA,EAAc,GAAA;YACd,aAAA,EAAe;aAEjB,KAAK,CAAA;AAEP,UAAA,GAAA,CAAI,OAAG,SAAA,CAAA,GAAA,EAAI,KAAK,GAAG,MAAK;AACtB,YAAA,GAAA,CAAI,MAAM,IAAI,CAAA;AACd,YAAA,IAAI,CAAC,EAAA,CAAG,SAAA;AAAW,cAAA,GAAA,CAAI,KAAA,EAAK;UAC9B,CAAC,CAAA;QACH,CAAC,CAAA;AAED,QAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACd,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC1Cf,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAEA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAQA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,qCAAA;MACT,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAM,KAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,qBAAA,EAAyB,OAAO,kBAAkB,CAAA,CAAA;;AAG1E,IAAA,IAAM,GAAA,GAAsD;MAC1D,OAAA,EAAS,sBAAA;AACT,MAAA,IAAA,EAAM,CAAC,QAAQ,CAAA;MACf,UAAA,EAAY,CAAC,WAAW,QAAQ,CAAA;MAChC,cAAA,EAAgB,IAAA;MAChB,WAAA,EAAa,IAAA;AACb,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAG;AACN,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,cAAc,IAAA,EAAM,SAAA,EAAW,IAAE,GAAI,GAAA;AAEzD,QAAA,IAAI,CAAC,SAAA;AAAW,UAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAC1D,QAAA,MAAM,EAAC,SAAA,EAAW,IAAA,EAAI,GAAI,EAAA;AAC1B,QAAA,EAAA,CAAG,KAAA,GAAQ,IAAA;AACX,QAAA,IAAI,KAAK,gBAAA,KAAqB,KAAA,IAAA,IAAS,MAAA,CAAA,iBAAA,EAAkB,IAAI,MAAM,CAAA;AAAG,UAAA;AACtE,QAAA,MAAM,KAAA,GAAA,IAAQ,MAAA,CAAA,mBAAA,EAAoB,aAAa,UAAU,CAAA;AACzD,QAAA,MAAM,QAAA,GAAA,IAAW,MAAA,CAAA,mBAAA,EAAoB,aAAa,iBAAiB,CAAA;AACnE,QAAA,yBAAA,EAAyB;AACzB,QAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,SAAS,CAAA,KAAA,EAAQ,OAAA,CAAA,OAAA,CAAE,MAAM,CAAA,CAAE,CAAA;AAEtC,QAAA,SAAS,yBAAA,GAAyB;AAChC,UAAA,GAAA,CAAI,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,CAAC,GAAA,KAAa;AACnC,YAAA,IAAI,CAAC,KAAA,CAAM,MAAA,IAAU,CAAC,QAAA,CAAS,MAAA;AAAQ,cAAA,sBAAA,CAAuB,GAAG,CAAA;;AAC5D,cAAA,GAAA,CAAI,GAAG,YAAA,CAAa,GAAG,GAAG,MAAM,sBAAA,CAAuB,GAAG,CAAC,CAAA;UAClE,CAAC,CAAA;AACH,QAAA;AAEA,QAAA,SAAS,aAAa,GAAA,EAAS;AAC7B,UAAA,IAAI,WAAA;AACJ,UAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AAEpB,YAAA,MAAM,kBAAc,MAAA,CAAA,gBAAe,EAAA,EAAI,YAAA,CAAa,YAAY,YAAY,CAAA;AAC5E,YAAA,WAAA,GAAA,IAAc,MAAA,CAAA,aAAA,EAAc,GAAA,EAAK,aAAqB,GAAG,CAAA;AAC3D,UAAA,CAAA,MAAA,IAAW,MAAM,MAAA,EAAQ;AACvB,YAAA,WAAA,GAAA,IAAc,SAAA,CAAA,EAAA,EAAG,GAAG,MAAM,GAAA,CAAI,CAAC,CAAA,KAAA,IAAM,UAAA,CAAA,CAAA,CAAA,EAAI,GAAG,CAAA,KAAA,EAAQ,CAAC,EAAE,CAAC,CAAA;UAC1D,CAAA,MAAO;AACL,YAAA,WAAA,GAAc,SAAA,CAAA,GAAA;AAChB,UAAA;AACA,UAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,YAAA,WAAA,GAAA,IAAc,UAAA,EAAA,EAAG,WAAA,EAAa,GAAG,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAA,IAAM,UAAA,CAAA,CAAA,CAAA,EAAA,IAAI,OAAA,UAAA,EAAW,GAAA,EAAK,CAAC,CAAC,CAAA,MAAA,EAAS,GAAG,CAAA,CAAA,CAAG,CAAC,CAAA;AAC7F,UAAA;AACA,UAAA,OAAA,IAAO,SAAA,CAAA,GAAA,EAAI,WAAW,CAAA;AACxB,QAAA;AAEA,QAAA,SAAS,iBAAiB,GAAA,EAAS;AACjC,UAAA,GAAA,CAAI,SAAK,SAAA,CAAA,YAAW,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG,CAAA;AACpC,QAAA;AAEA,QAAA,SAAS,uBAAuB,GAAA,EAAS;AACvC,UAAA,IAAI,KAAK,gBAAA,KAAqB,KAAA,IAAU,IAAA,CAAK,gBAAA,IAAoB,WAAW,KAAA,EAAQ;AAClF,YAAA,gBAAA,CAAiB,GAAG,CAAA;AACpB,YAAA;AACF,UAAA;AAEA,UAAA,IAAI,WAAW,KAAA,EAAO;AACpB,YAAA,GAAA,CAAI,SAAA,CAAU,EAAC,kBAAA,EAAoB,GAAA,EAAI,CAAA;AACvC,YAAA,GAAA,CAAI,KAAA,EAAK;AACT,YAAA,IAAI,CAAC,SAAA;AAAW,cAAA,GAAA,CAAI,KAAA,EAAK;AACzB,YAAA;AACF,UAAA;AAEA,UAAA,IAAI,OAAO,UAAU,QAAA,IAAY,CAAA,IAAC,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAM,CAAA,EAAG;AAC/D,YAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,YAAA,IAAI,IAAA,CAAK,qBAAqB,SAAA,EAAW;AACvC,cAAA,qBAAA,CAAsB,GAAA,EAAK,OAAO,KAAK,CAAA;AACvC,cAAA,GAAA,CAAI,OAAG,SAAA,CAAA,GAAA,EAAI,KAAK,GAAG,MAAK;AACtB,gBAAA,GAAA,CAAI,KAAA,EAAK;AACT,gBAAA,gBAAA,CAAiB,GAAG,CAAA;cACtB,CAAC,CAAA;YACH,CAAA,MAAO;AACL,cAAA,qBAAA,CAAsB,KAAK,KAAK,CAAA;AAChC,cAAA,IAAI,CAAC,SAAA;AAAW,gBAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,GAAA,EAAI,KAAK,CAAA,EAAG,MAAM,GAAA,CAAI,KAAA,EAAO,CAAA;AACtD,YAAA;AACF,UAAA;AACF,QAAA;AAEA,QAAA,SAAS,qBAAA,CAAsB,GAAA,EAAW,KAAA,EAAa,MAAA,EAAc;AACnE,UAAA,MAAM,SAAA,GAA2B;YAC/B,OAAA,EAAS,sBAAA;YACT,QAAA,EAAU,GAAA;AACV,YAAA,YAAA,EAAc,OAAA,IAAA,CAAK;;AAErB,UAAA,IAAI,WAAW,KAAA,EAAO;AACpB,YAAA,MAAA,CAAO,OAAO,SAAA,EAAW;cACvB,aAAA,EAAe,IAAA;cACf,YAAA,EAAc,KAAA;cACd,SAAA,EAAW;AACZ,aAAA,CAAA;AACH,UAAA;AACA,UAAA,GAAA,CAAI,SAAA,CAAU,WAAW,KAAK,CAAA;AAChC,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACpHf,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,sBAAA,GAAA,4BAAA,EAAA;AAEA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,YAAA;MACT,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;AACZ,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc,IAAA,EAAM,IAAE,GAAI,GAAA;AAC9C,QAAA,IAAI,GAAG,IAAA,CAAK,gBAAA,KAAqB,KAAA,IAAS,YAAA,CAAa,yBAAyB,MAAA,EAAW;AACzF,UAAA,sBAAA,CAAA,OAAA,CAAM,KAAK,IAAI,UAAA,CAAA,WAAW,EAAA,EAAI,sBAAA,CAAA,OAAA,EAAO,sBAAsB,CAAC,CAAA;AAC9D,QAAA;AACA,QAAA,MAAM,QAAA,GAAA,IAAW,MAAA,CAAA,mBAAA,EAAoB,MAAM,CAAA;AAC3C,QAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,UAAA,EAAA,CAAG,iBAAA,CAAkB,IAAI,IAAI,CAAA;AAC/B,QAAA;AACA,QAAA,IAAI,GAAG,IAAA,CAAK,WAAA,IAAe,SAAS,MAAA,IAAU,EAAA,CAAG,UAAU,IAAA,EAAM;AAC/D,UAAA,EAAA,CAAG,KAAA,GAAQ,MAAA,CAAA,cAAA,CAAe,KAAA,CAAM,GAAA,EAAA,IAAK,MAAA,CAAA,MAAA,EAAO,QAAQ,CAAA,EAAG,EAAA,CAAG,KAAK,CAAA;AACjE,QAAA;AACA,QAAA,MAAM,UAAA,GAAa,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,IAAC,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AAC3E,QAAA,IAAI,WAAW,MAAA,KAAW,CAAA;AAAG,UAAA;AAC7B,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAE9B,QAAA,KAAA,MAAW,QAAQ,UAAA,EAAY;AAC7B,UAAA,IAAI,UAAA,CAAW,IAAI,CAAA,EAAG;AACpB,YAAA,mBAAA,CAAoB,IAAI,CAAA;UAC1B,CAAA,MAAO;AACL,YAAA,GAAA,CAAI,EAAA,CAAA,IAAG,MAAA,CAAA,cAAA,EAAe,GAAA,EAAK,MAAM,IAAA,EAAM,EAAA,CAAG,IAAA,CAAK,aAAa,CAAC,CAAA;AAC7D,YAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,YAAA,IAAI,CAAC,EAAA,CAAG,SAAA;AAAW,cAAA,GAAA,CAAI,IAAA,EAAI,CAAG,GAAA,CAAI,KAAA,EAAO,IAAI,CAAA;AAC7C,YAAA,GAAA,CAAI,KAAA,EAAK;AACX,UAAA;AACA,UAAA,GAAA,CAAI,EAAA,CAAG,iBAAA,CAAkB,GAAA,CAAI,IAAI,CAAA;AACjC,UAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACd,QAAA;AAEA,QAAA,SAAS,WAAW,IAAA,EAAY;AAC9B,UAAA,OAAO,EAAA,CAAG,KAAK,WAAA,IAAe,CAAC,GAAG,aAAA,IAAiB,MAAA,CAAO,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA;AAC9E,QAAA;AAEA,QAAA,SAAS,oBAAoB,IAAA,EAAY;AACvC,UAAA,GAAA,CAAI,SAAA,CACF;YACE,OAAA,EAAS,YAAA;YACT,UAAA,EAAY,IAAA;YACZ,QAAA,EAAU;aAEZ,KAAK,CAAA;AAET,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACtDf,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAGA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,mBAAA;MACT,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;AACZ,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,IAAA,EAAM,YAAA,EAAc,IAAE,GAAI,GAAA;AAC9C,QAAA,MAAM,EAAC,MAAI,GAAI,EAAA;AACf,QAAA,MAAM,QAAA,GAAA,IAAW,MAAA,CAAA,mBAAA,EAAoB,MAAM,CAAA;AAC3C,QAAA,MAAM,mBAAA,GAAsB,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAA,IAC3C,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAA,CAAO,CAAC,CAAc,CAAC,CAAA;AAG/C,QAAA,IACE,QAAA,CAAS,MAAA,KAAW,CAAA,IACnB,mBAAA,CAAoB,MAAA,KAAW,QAAA,CAAS,MAAA,KACtC,CAAC,EAAA,CAAG,IAAA,CAAK,WAAA,IAAe,EAAA,CAAG,UAAU,IAAA,CAAA,EACxC;AACA,UAAA;AACF,QAAA;AAEA,QAAA,MAAM,kBACJ,IAAA,CAAK,YAAA,IAAgB,CAAC,IAAA,CAAK,2BAA2B,YAAA,CAAa,UAAA;AACrE,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,QAAA,IAAI,GAAG,KAAA,KAAU,IAAA,IAAQ,EAAE,EAAA,CAAG,KAAA,YAAiB,UAAA,IAAA,CAAA,EAAO;AACpD,UAAA,EAAA,CAAG,YAAQ,MAAA,CAAA,oBAAA,EAAqB,GAAA,EAAK,GAAG,KAAK,CAAA;AAC/C,QAAA;AACA,QAAA,MAAM,EAAC,OAAK,GAAI,EAAA;AAChB,QAAA,yBAAA,EAAyB;AAEzB,QAAA,SAAS,yBAAA,GAAyB;AAChC,UAAA,KAAA,MAAW,OAAO,QAAA,EAAU;AAC1B,YAAA,IAAI,eAAA;AAAiB,cAAA,uBAAA,CAAwB,GAAG,CAAA;AAChD,YAAA,IAAI,GAAG,SAAA,EAAW;AAChB,cAAA,kBAAA,CAAmB,GAAG,CAAA;YACxB,CAAA,MAAO;AACL,cAAA,GAAA,CAAI,GAAA,CAAI,OAAO,IAAI,CAAA;AACnB,cAAA,kBAAA,CAAmB,GAAG,CAAA;AACtB,cAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACd,YAAA;AACF,UAAA;AACF,QAAA;AAEA,QAAA,SAAS,wBAAwB,GAAA,EAAW;AAC1C,UAAA,KAAA,MAAW,QAAQ,eAAA,EAAiB;AAClC,YAAA,IAAI,IAAI,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,EAAG;AAC9B,cAAA,IAAA,OAAA,eAAA,EACE,EAAA,EACA,YAAY,IAAI,CAAA,iBAAA,EAAoB,GAAG,CAAA,8BAAA,CAAgC,CAAA;AAE3E,YAAA;AACF,UAAA;AACF,QAAA;AAEA,QAAA,SAAS,mBAAmB,GAAA,EAAW;AACrC,UAAA,GAAA,CAAI,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,CAAC,GAAA,KAAO;AAC7B,YAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAI,MAAA,CAAA,UAAA,EAAW,GAAA,EAAK,GAAG,CAAC,CAAA,MAAA,EAAS,GAAG,KAAK,MAAK;AACnD,cAAA,MAAM,WAAA,GAAc,mBAAA,CAAoB,QAAA,CAAS,GAAG,CAAA;AACpD,cAAA,IAAI,CAAC,WAAA,EAAa;AAChB,gBAAA,GAAA,CAAI,SAAA,CACF;kBACE,OAAA,EAAS,mBAAA;kBACT,UAAA,EAAY,GAAA;kBACZ,QAAA,EAAU,GAAA;AACV,kBAAA,YAAA,EAAc,OAAA,IAAA,CAAK;mBAErB,KAAK,CAAA;AAET,cAAA;AAEA,cAAA,IAAI,EAAA,CAAG,IAAA,CAAK,WAAA,IAAe,KAAA,KAAU,IAAA,EAAM;AACzC,gBAAA,GAAA,CAAI,MAAA,CAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,GAAG,KAAK,IAAI,CAAA;AACtC,cAAA,CAAA,MAAA,IAAW,CAAC,WAAA,IAAe,CAAC,EAAA,CAAG,SAAA,EAAW;AAGxC,gBAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,GAAA,EAAI,KAAK,CAAA,EAAG,MAAM,GAAA,CAAI,KAAA,EAAO,CAAA;AACtC,cAAA;YACF,CAAC,CAAA;UACH,CAAC,CAAA;AACH,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACxFf,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAIA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,KAAA;MACT,UAAA,EAAY,CAAC,UAAU,SAAS,CAAA;MAChC,WAAA,EAAa,IAAA;AACb,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,EAAA,EAAE,GAAI,GAAA;AAC1B,QAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,MAAM,CAAA,EAAG;AACjC,UAAA,GAAA,CAAI,IAAA,EAAI;AACR,UAAA;AACF,QAAA;AAEA,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,QAAA,GAAA,CAAI,SAAA,CACF;UACE,OAAA,EAAS,KAAA;UACT,aAAA,EAAe,IAAA;UACf,YAAA,EAAc,KAAA;UACd,SAAA,EAAW;WAEb,KAAK,CAAA;AAGP,QAAA,GAAA,CAAI,UAAA,CACF,OACA,MAAM,GAAA,CAAI,OAAK,EACf,MAAM,GAAA,CAAI,KAAA,EAAO,CAAA;AAErB,MAAA,CAAA;MACA,KAAA,EAAO,EAAC,SAAS,mBAAA;;AAGnB,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACpCf,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AAIA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,OAAA;MACT,UAAA,EAAY,OAAA;MACZ,WAAA,EAAa,IAAA;AACb,MAAA,IAAA,EAAM,MAAA,CAAA,aAAA;MACN,KAAA,EAAO,EAAC,SAAS,8BAAA;;AAGnB,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACNf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AASA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,wCAAA;MACT,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAM,KAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,iBAAA,EAAqB,OAAO,OAAO,CAAA,CAAA;;AAG3D,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,OAAA;MACT,UAAA,EAAY,OAAA;MACZ,WAAA,EAAa,IAAA;AACb,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,YAAA,EAAc,IAAE,GAAI,GAAA;AAExC,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA;AAAG,UAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AACtE,QAAA,IAAI,EAAA,CAAG,IAAA,CAAK,aAAA,IAAiB,YAAA,CAAa,aAAA;AAAe,UAAA;AACzD,QAAA,MAAM,MAAA,GAAsB,MAAA;AAC5B,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,KAAK,CAAA;AACpC,QAAA,MAAM,OAAA,GAAU,GAAA,CAAI,GAAA,CAAI,SAAA,EAAW,IAAI,CAAA;AACvC,QAAA,MAAM,QAAA,GAAW,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA;AAClC,QAAA,GAAA,CAAI,SAAA,CAAU,EAAC,OAAA,EAAQ,CAAA;AAGvB,QAAA,GAAA,CAAI,MAAM,aAAa,CAAA;AAEvB,QAAA,GAAA,CAAI,MAAA,CACF,KAAA,EACA,MAAM,GAAA,CAAI,KAAA,IACV,MAAM,GAAA,CAAI,KAAA,CAAM,IAAI,CAAC,CAAA;AAGvB,QAAA,SAAS,aAAA,GAAa;AACpB,UAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,GAAA,EAAgB,CAAA,KAAa;AAC3C,YAAA,IAAI,MAAA;AACJ,YAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,GAAG,CAAA,EAAG;AAC9B,cAAA,GAAA,CAAI,GAAA,CAAI,UAAU,IAAI,CAAA;YACxB,CAAA,MAAO;AACL,cAAA,MAAA,GAAS,IAAI,SAAA,CACX;gBACE,OAAA,EAAS,OAAA;gBACT,UAAA,EAAY,CAAA;gBACZ,aAAA,EAAe;iBAEjB,QAAQ,CAAA;AAEZ,YAAA;AAEA,YAAA,IAAI,IAAI,CAAA,EAAG;AACT,cAAA,GAAA,CACG,EAAA,CAAA,IAAG,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,QAAQ,CAAA,IAAA,EAAO,KAAK,CAAA,CAAE,CAAA,CAC7B,MAAA,CAAO,KAAA,EAAO,KAAK,CAAA,CACnB,MAAA,CAAO,OAAA,EAAA,IAAS,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAK,OAAO,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAG,CAAA,CACrC,IAAA,EAAI;AACT,YAAA;AAEA,YAAA,GAAA,CAAI,EAAA,CAAG,UAAU,MAAK;AACpB,cAAA,GAAA,CAAI,MAAA,CAAO,OAAO,IAAI,CAAA;AACtB,cAAA,GAAA,CAAI,MAAA,CAAO,SAAS,CAAC,CAAA;AACrB,cAAA,IAAI,MAAA;AAAQ,gBAAA,GAAA,CAAI,cAAA,CAAe,MAAA,EAAQ,SAAA,CAAA,IAAI,CAAA;YAC7C,CAAC,CAAA;UACH,CAAC,CAAA;AACH,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC/Ef,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAEA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,OAAA;MACT,UAAA,EAAY,OAAA;AACZ,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,MAAA,EAAQ,EAAA,EAAE,GAAI,GAAA;AAE1B,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA;AAAG,UAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AACtE,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC9B,QAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,GAAA,EAAgB,CAAA,KAAa;AAC3C,UAAA,IAAA,IAAI,MAAA,CAAA,iBAAA,EAAkB,EAAA,EAAI,GAAG,CAAA;AAAG,YAAA;AAChC,UAAA,MAAM,MAAA,GAAS,IAAI,SAAA,CAAU,EAAC,SAAS,OAAA,EAAS,UAAA,EAAY,CAAA,EAAC,EAAG,KAAK,CAAA;AACrE,UAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACZ,UAAA,GAAA,CAAI,eAAe,MAAM,CAAA;QAC3B,CAAC,CAAA;AACH,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACbf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAIA,IAAA,IAAM,KAAA,GAAgC;MACpC,OAAA,EAAS,CAAC,EAAC,MAAA,EAAM,KAAA,IAAM,SAAA,CAAA,GAAA,CAAA,CAAA,YAAA,EAAkB,OAAO,QAAQ,CAAA,QAAA,CAAA;MACxD,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAM,KAAA,IAAM,SAAA,CAAA,CAAA,CAAA,CAAA,iBAAA,EAAqB,OAAO,QAAQ,CAAA,CAAA;;AAG5D,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,IAAA;MACT,UAAA,EAAY,CAAC,UAAU,SAAS,CAAA;MAChC,WAAA,EAAa,IAAA;AACb,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,YAAA,EAAc,EAAA,EAAE,GAAI,GAAA;AAChC,QAAA,IAAI,YAAA,CAAa,IAAA,KAAS,MAAA,IAAa,YAAA,CAAa,SAAS,MAAA,EAAW;AACtE,UAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,EAAA,EAAI,2CAA2C,CAAA;AACjE,QAAA;AACA,QAAA,MAAM,OAAA,GAAU,SAAA,CAAU,EAAA,EAAI,MAAM,CAAA;AACpC,QAAA,MAAM,OAAA,GAAU,SAAA,CAAU,EAAA,EAAI,MAAM,CAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAA;AAAS,UAAA;AAE1B,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,IAAI,CAAA;AACnC,QAAA,MAAM,QAAA,GAAW,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA;AAClC,QAAA,UAAA,EAAU;AACV,QAAA,GAAA,CAAI,KAAA,EAAK;AAET,QAAA,IAAI,WAAW,OAAA,EAAS;AACtB,UAAA,MAAM,QAAA,GAAW,GAAA,CAAI,GAAA,CAAI,UAAU,CAAA;AACnC,UAAA,GAAA,CAAI,SAAA,CAAU,EAAC,QAAA,EAAS,CAAA;AACxB,UAAA,GAAA,CAAI,EAAA,CAAG,UAAU,cAAA,CAAe,MAAA,EAAQ,QAAQ,CAAA,EAAG,cAAA,CAAe,MAAA,EAAQ,QAAQ,CAAC,CAAA;AACrF,QAAA,CAAA,MAAA,IAAW,OAAA,EAAS;AAClB,UAAA,GAAA,CAAI,EAAA,CAAG,QAAA,EAAU,cAAA,CAAe,MAAM,CAAC,CAAA;QACzC,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,EAAA,CAAA,IAAG,SAAA,CAAA,GAAA,EAAI,QAAQ,CAAA,EAAG,cAAA,CAAe,MAAM,CAAC,CAAA;AAC9C,QAAA;AAEA,QAAA,GAAA,CAAI,KAAK,KAAA,EAAO,MAAM,GAAA,CAAI,KAAA,CAAM,IAAI,CAAC,CAAA;AAErC,QAAA,SAAS,UAAA,GAAU;AACjB,UAAA,MAAM,MAAA,GAAS,IAAI,SAAA,CACjB;YACE,OAAA,EAAS,IAAA;YACT,aAAA,EAAe,IAAA;YACf,YAAA,EAAc,KAAA;YACd,SAAA,EAAW;aAEb,QAAQ,CAAA;AAEV,UAAA,GAAA,CAAI,eAAe,MAAM,CAAA;AAC3B,QAAA;AAEA,QAAA,SAAS,cAAA,CAAe,SAAiB,QAAA,EAAe;AACtD,UAAA,OAAO,MAAK;AACV,YAAA,MAAM,SAAS,GAAA,CAAI,SAAA,CAAU,EAAC,OAAA,IAAU,QAAQ,CAAA;AAChD,YAAA,GAAA,CAAI,MAAA,CAAO,OAAO,QAAQ,CAAA;AAC1B,YAAA,GAAA,CAAI,mBAAA,CAAoB,QAAQ,KAAK,CAAA;AACrC,YAAA,IAAI,QAAA;AAAU,cAAA,GAAA,CAAI,OAAO,QAAA,EAAA,IAAU,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;;AAC3C,cAAA,GAAA,CAAI,SAAA,CAAU,EAAC,QAAA,EAAU,OAAA,EAAQ,CAAA;AACxC,UAAA,CAAA;AACF,QAAA;AACF,MAAA;;AAGF,IAAA,SAAS,SAAA,CAAU,IAAkB,OAAA,EAAe;AAClD,MAAA,MAAM,MAAA,GAAS,EAAA,CAAG,MAAA,CAAO,OAAO,CAAA;AAChC,MAAA,OAAO,WAAW,MAAA,IAAa,CAAA,IAAC,MAAA,CAAA,iBAAA,EAAkB,IAAI,MAAM,CAAA;AAC9D,IAAA;AAEA,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;AC7Ef,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAEA,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,CAAC,QAAQ,MAAM,CAAA;MACxB,UAAA,EAAY,CAAC,UAAU,SAAS,CAAA;AAChC,MAAA,IAAA,CAAK,EAAC,OAAA,EAAS,YAAA,EAAc,EAAA,EAAE,EAAa;AAC1C,QAAA,IAAI,aAAa,EAAA,KAAO,MAAA;AAAW,UAAA,IAAA,MAAA,CAAA,eAAA,EAAgB,EAAA,EAAI,CAAA,CAAA,EAAI,OAAO,CAAA,yBAAA,CAA2B,CAAA;AAC/F,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACXf,IAAA,IAAA,iBAAA,GAAA,uBAAA,EAAA;AACA,IAAA,IAAA,aAAA,GAAA,mBAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AACA,IAAA,IAAA,cAAA,GAAA,oBAAA,EAAA;AACA,IAAA,IAAA,eAAA,GAAA,qBAAA,EAAA;AACA,IAAA,IAAA,sBAAA,GAAA,4BAAA,EAAA;AACA,IAAA,IAAA,YAAA,GAAA,kBAAA,EAAA;AACA,IAAA,IAAA,mBAAA,GAAA,yBAAA,EAAA;AACA,IAAA,IAAA,KAAA,GAAA,WAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,IAAA,GAAA,UAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AAEA,IAAA,SAAwB,aAAA,CAAc,YAAY,KAAA,EAAK;AACrD,MAAA,MAAM,UAAA,GAAa;;QAEjB,KAAA,CAAA,OAAA;QACA,OAAA,CAAA,OAAA;QACA,OAAA,CAAA,OAAA;QACA,OAAA,CAAA,OAAA;QACA,IAAA,CAAA,OAAA;QACA,UAAA,CAAA,OAAA;;QAEA,eAAA,CAAA,OAAA;QACA,sBAAA,CAAA,OAAA;QACA,cAAA,CAAA,OAAA;QACA,YAAA,CAAA,OAAA;QACA,mBAAA,CAAA;;AAGF,MAAA,IAAI,SAAA;AAAW,QAAA,UAAA,CAAW,IAAA,CAAK,aAAA,CAAA,OAAA,EAAa,WAAA,CAAA,OAAS,CAAA;;AAChD,QAAA,UAAA,CAAW,IAAA,CAAK,iBAAA,CAAA,OAAA,EAAiB,OAAA,CAAA,OAAK,CAAA;AAC3C,MAAA,UAAA,CAAW,IAAA,CAAK,WAAA,OAAQ,CAAA;AACxB,MAAA,OAAO,UAAA;AACT,IAAA;AArBA,IAAA,OAAA,CAAA,OAAA,GAAA,aAAA;;;;;;;;ACTA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAaA,IAAA,IAAM,KAAA,GAAgC;AACpC,MAAA,OAAA,EAAS,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,0BAAyB,UAAU,CAAA,CAAA,CAAA;AAC9D,MAAA,MAAA,EAAQ,CAAC,EAAC,UAAA,WAAgB,SAAA,CAAA,cAAa,UAAU,CAAA,CAAA;;AAGnD,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,QAAA;MACT,IAAA,EAAM,CAAC,UAAU,QAAQ,CAAA;MACzB,UAAA,EAAY,QAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,KAAiB,QAAA,EAAiB;AACrC,QAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,OAAO,MAAA,EAAQ,UAAA,EAAY,IAAE,GAAI,GAAA;AACnD,QAAA,MAAM,EAAC,IAAA,EAAM,aAAA,EAAe,SAAA,EAAW,MAAI,GAAI,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAA,CAAK,eAAA;AAAiB,UAAA;AAE3B,QAAA,IAAI,KAAA;AAAO,UAAA,mBAAA,EAAmB;;AACzB,UAAA,cAAA,EAAc;AAEnB,QAAA,SAAS,mBAAA,GAAmB;AAC1B,UAAA,MAAM,IAAA,GAAO,GAAA,CAAI,UAAA,CAAW,SAAA,EAAW;AACrC,YAAA,GAAA,EAAK,IAAA,CAAK,OAAA;AACV,YAAA,IAAA,EAAM,KAAK,IAAA,CAAK;AACjB,WAAA,CAAA;AACD,UAAA,MAAM,IAAA,GAAO,GAAA,CAAI,KAAA,CAAM,MAAA,EAAA,IAAQ,UAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,CAAG,CAAA;AACxD,UAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AAC7B,UAAA,MAAM,MAAA,GAAS,GAAA,CAAI,GAAA,CAAI,QAAQ,CAAA;AAE/B,UAAA,GAAA,CAAI,OACF,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,IAAI,qBAAqB,IAAI,CAAA,mBAAA,CAAA,EACxC,MAAM,GAAA,CAAI,OAAO,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,iBAAA,CAAmB,CAAA,CAAE,MAAA,CAAO,MAAA,EAAA,IAAQ,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,SAAA,CAAW,GACvF,MAAM,GAAA,CAAI,MAAA,CAAO,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAW,EAAE,MAAA,CAAO,MAAA,EAAQ,IAAI,CAAC,CAAA;AAE3D,UAAA,GAAA,CAAI,SAAA,CAAA,IAAU,SAAA,CAAA,EAAA,EAAG,YAAU,EAAI,UAAA,EAAY,CAAC,CAAA;AAE5C,UAAA,SAAS,UAAA,GAAU;AACjB,YAAA,IAAI,KAAK,YAAA,KAAiB,KAAA;AAAO,cAAA,OAAO,SAAA,CAAA,GAAA;AACxC,YAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,UAAU,QAAQ,MAAM,CAAA,CAAA;AACrC,UAAA;AAEA,UAAA,SAAS,UAAA,GAAU;AACjB,YAAA,MAAM,UAAA,GAAa,UAAU,MAAA,GAAA,IACzB,UAAA,CAAA,CAAA,CAAA,CAAA,EAAK,IAAI,kBAAkB,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,IAAA,EAAO,MAAM,IAAI,IAAI,CAAA,EAAA,CAAA,GAAA,IAC9D,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA;AACtB,YAAA,MAAM,SAAA,GAAA,IAAY,SAAA,CAAA,CAAA,CAAA,CAAA,QAAA,EAAY,MAAM,oBAAoB,UAAU,CAAA,GAAA,EAAM,MAAM,CAAA,MAAA,EAAS,IAAI,CAAA,EAAA,CAAA;AAC3F,YAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAM,CAAA,IAAA,EAAO,MAAM,CAAA,aAAA,EAAgB,KAAK,CAAA,KAAA,EAAQ,QAAQ,CAAA,KAAA,EAAQ,SAAS,CAAA,CAAA;AACtF,UAAA;AACF,QAAA;AAEA,QAAA,SAAS,cAAA,GAAc;AACrB,UAAA,MAAM,SAAA,GAAqC,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA;AAC9D,UAAA,IAAI,CAAC,SAAA,EAAW;AACd,YAAA,aAAA,EAAa;AACb,YAAA;AACF,UAAA;AACA,UAAA,IAAI,SAAA,KAAc,IAAA;AAAM,YAAA;AACxB,UAAA,MAAM,CAAC,OAAA,EAAS,MAAA,EAAQ,MAAM,CAAA,GAAI,UAAU,SAAS,CAAA;AACrD,UAAA,IAAI,OAAA,KAAY,QAAA;AAAU,YAAA,GAAA,CAAI,IAAA,CAAK,gBAAgB,CAAA;AAEnD,UAAA,SAAS,aAAA,GAAa;AACpB,YAAA,IAAI,IAAA,CAAK,iBAAiB,KAAA,EAAO;AAC/B,cAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,UAAA,EAAY,CAAA;AAC7B,cAAA;AACF,YAAA;AACA,YAAA,MAAM,IAAI,KAAA,CAAM,UAAA,EAAY,CAAA;AAE5B,YAAA,SAAS,UAAA,GAAU;AACjB,cAAA,OAAO,CAAA,gBAAA,EAAmB,MAAgB,CAAA,6BAAA,EAAgC,aAAa,CAAA,CAAA,CAAA;AACzF,YAAA;AACF,UAAA;AAEA,UAAA,SAAS,UAAU,MAAA,EAAmB;AACpC,YAAA,MAAM,IAAA,GACJ,kBAAkB,MAAA,GAAA,IACd,UAAA,UAAA,EAAW,MAAM,CAAA,GACjB,IAAA,CAAK,IAAA,CAAK,OAAA,GAAA,IACV,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA,EAAA,IAAG,SAAA,CAAA,WAAA,EAAY,MAAM,CAAC,CAAA,CAAA,GAC3C,MAAA;AACN,YAAA,MAAM,GAAA,GAAM,GAAA,CAAI,UAAA,CAAW,SAAA,EAAW,EAAC,KAAK,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAQ,IAAA,EAAK,CAAA;AACtE,YAAA,IAAI,OAAO,MAAA,IAAU,QAAA,IAAY,EAAE,kBAAkB,MAAA,CAAA,EAAS;AAC5D,cAAA,OAAO,CAAC,MAAA,CAAO,IAAA,IAAQ,QAAA,EAAU,MAAA,CAAO,cAAU,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,CAAA,SAAA,CAAW,CAAA;AACtE,YAAA;AAEA,YAAA,OAAO,CAAC,QAAA,EAAU,MAAA,EAAQ,GAAG,CAAA;AAC/B,UAAA;AAEA,UAAA,SAAS,cAAA,GAAc;AACrB,YAAA,IAAI,OAAO,SAAA,IAAa,QAAA,IAAY,EAAE,SAAA,YAAqB,MAAA,CAAA,IAAW,UAAU,KAAA,EAAO;AACrF,cAAA,IAAI,CAAC,SAAA,CAAU,MAAA;AAAQ,gBAAA,MAAM,IAAI,MAAM,6BAA6B,CAAA;AACpE,cAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAU,MAAM,IAAI,IAAI,CAAA,CAAA,CAAA;AACjC,YAAA;AACA,YAAA,OAAO,OAAO,MAAA,IAAU,UAAA,GAAA,IAAa,UAAA,CAAA,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,IAAI,UAAM,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,MAAM,SAAS,IAAI,CAAA,CAAA,CAAA;AACtF,UAAA;AACF,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;;;;ACtHf,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAqB,CAAC,QAAA,CAAA,OAAa,CAAA;AAEzC,IAAA,OAAA,CAAA,OAAA,GAAe,MAAA;;;;;;;;;ACHF,IAAA,OAAA,CAAA,kBAAA,GAAiC;AAC5C,MAAA,OAAA;AACA,MAAA,aAAA;AACA,MAAA,SAAA;AACA,MAAA,YAAA;AACA,MAAA,UAAA;AACA,MAAA,WAAA;AACA,MAAA;;AAGW,IAAA,OAAA,CAAA,iBAAA,GAAgC;AAC3C,MAAA,kBAAA;AACA,MAAA,iBAAA;AACA,MAAA;;;;;;;;;ACdF,IAAA,IAAA,MAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,YAAA,GAAA,kBAAA,EAAA;AACA,IAAA,IAAA,YAAA,GAAA,kBAAA,EAAA;AACA,IAAA,IAAA,QAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AAEA,IAAA,IAAM,kBAAA,GAAmC;MACvC,MAAA,CAAA,OAAA;MACA,YAAA,CAAA,OAAA;AACA,MAAA,IAAA,aAAA,OAAA,GAAuB;MACvB,QAAA,CAAA,OAAA;MACA,UAAA,CAAA,kBAAA;MACA,UAAA,CAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,kBAAA;;;;;;;;;ACdf,IAAA,IAAY,UAAA;AAAZ,IAAA,CAAA,SAAYC,WAAAA,EAAU;AACpB,MAAAA,WAAAA,CAAA,KAAA,CAAA,GAAA,KAAA;AACA,MAAAA,WAAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AACF,IAAA,CAAA,EAHY,UAAA,KAAU,OAAA,CAAA,UAAA,GAAV,UAAA,GAAU,EAAA,CAAA,CAAA;;;;;;;;ACAtB,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AACA,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AACA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AAIA,IAAA,IAAM,KAAA,GAAgC;AACpC,MAAA,OAAA,EAAS,CAAC,EAAC,MAAA,EAAQ,EAAC,UAAA,EAAY,SAAO,EAAC,KACtC,UAAA,KAAe,OAAA,CAAA,WAAW,GAAA,GACtB,CAAA,KAAA,EAAQ,OAAO,CAAA,gBAAA,CAAA,GACf,iBAAiB,OAAO,CAAA,kBAAA,CAAA;AAC9B,MAAA,MAAA,EAAQ,CAAC,EAAC,MAAA,EAAQ,EAAC,UAAA,EAAY,KAAK,OAAA,EAAO,EAAC,KAAA,IAC1C,UAAA,CAAA,CAAA,CAAA,QAAA,EAAY,UAAU,CAAA,OAAA,EAAU,OAAO,eAAe,GAAG,CAAA,CAAA;;AAG7D,IAAA,IAAM,GAAA,GAA6B;MACjC,OAAA,EAAS,eAAA;MACT,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;AACZ,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAe;AAClB,QAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,MAAA,EAAQ,YAAA,EAAc,IAAE,GAAI,GAAA;AAC9C,QAAA,MAAM,EAAC,OAAK,GAAI,YAAA;AAChB,QAAA,IAAI,CAAC,EAAA,CAAG,IAAA,CAAK,aAAA,EAAe;AAC1B,UAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAChE,QAAA;AACA,QAAA,MAAM,UAAU,MAAA,CAAO,YAAA;AACvB,QAAA,IAAI,OAAO,OAAA,IAAW,QAAA;AAAU,UAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AACtF,QAAA,IAAI,MAAA,CAAO,OAAA;AAAS,UAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAC7E,QAAA,IAAI,CAAC,KAAA;AAAO,UAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AACnE,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,KAAK,CAAA;AACpC,QAAA,MAAM,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,IAAG,SAAA,CAAA,WAAA,EAAY,OAAO,CAAC,CAAA,CAAE,CAAA;AAC9D,QAAA,GAAA,CAAI,EAAA,CAAA,IACF,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,GAAG,CAAA,YAAA,CAAA,EACd,MAAM,iBAAe,EACrB,MAAM,IAAI,KAAA,CAAM,KAAA,EAAO,EAAC,UAAA,EAAY,OAAA,CAAA,WAAW,GAAA,EAAK,GAAA,EAAK,OAAA,EAAQ,CAAC,CAAA;AAEpE,QAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AAEZ,QAAA,SAAS,eAAA,GAAe;AACtB,UAAA,MAAM,UAAU,UAAA,EAAU;AAC1B,UAAA,GAAA,CAAI,GAAG,KAAK,CAAA;AACZ,UAAA,KAAA,MAAW,YAAY,OAAA,EAAS;AAC9B,YAAA,GAAA,CAAI,WAAO,SAAA,CAAA,KAAI,GAAG,CAAA,KAAA,EAAQ,QAAQ,CAAA,CAAE,CAAA;AACpC,YAAA,GAAA,CAAI,OAAO,KAAA,EAAO,cAAA,CAAe,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AACrD,UAAA;AACA,UAAA,GAAA,CAAI,IAAA,EAAI;AACR,UAAA,GAAA,CAAI,KAAA,CAAM,OAAO,EAAC,UAAA,EAAY,QAAA,UAAA,CAAW,OAAA,EAAS,GAAA,EAAK,OAAA,EAAQ,CAAA;AAC/D,UAAA,GAAA,CAAI,KAAA,EAAK;AACX,QAAA;AAEA,QAAA,SAAS,eAAe,UAAA,EAAmB;AACzC,UAAA,MAAM,MAAA,GAAS,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA;AAC/B,UAAA,MAAM,MAAA,GAAS,IAAI,SAAA,CAAU,EAAC,SAAS,OAAA,EAAS,UAAA,IAAa,MAAM,CAAA;AACnE,UAAA,GAAA,CAAI,cAAA,CAAe,MAAA,EAAQ,SAAA,CAAA,IAAI,CAAA;AAC/B,UAAA,OAAO,MAAA;AACT,QAAA;AAEA,QAAA,SAAS,UAAA,GAAU;;AACjB,UAAA,MAAM,eAAyC,EAAA;AAC/C,UAAA,MAAM,WAAA,GAAc,YAAY,YAAY,CAAA;AAC5C,UAAA,IAAI,WAAA,GAAc,IAAA;AAClB,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,YAAA,IAAI,GAAA,GAAM,MAAM,CAAC,CAAA;AACjB,YAAA,IAAA,CAAI,GAAA,KAAG,IAAA,IAAH,GAAA,KAAG,MAAA,GAAA,SAAH,GAAA,CAAK,IAAA,KAAQ,CAAA,IAAC,OAAA,oBAAA,EAAqB,GAAA,EAAK,EAAA,CAAG,IAAA,CAAK,KAAK,CAAA,EAAG;AAC1D,cAAA,MAAM,MAAM,GAAA,CAAI,IAAA;AAChB,cAAA,GAAA,GAAM,SAAA,CAAA,UAAA,CAAW,IAAA,CAAK,EAAA,CAAG,IAAA,EAAM,GAAG,SAAA,CAAU,IAAA,EAAM,EAAA,CAAG,MAAA,EAAQ,GAAG,CAAA;AAChE,cAAA,IAAI,eAAe,SAAA,CAAA,SAAA;AAAW,gBAAA,GAAA,GAAM,GAAA,CAAI,MAAA;AACxC,cAAA,IAAI,GAAA,KAAQ,MAAA;AAAW,gBAAA,MAAM,IAAI,YAAA,OAAA,CAAgB,EAAA,CAAG,KAAK,WAAA,EAAa,EAAA,CAAG,QAAQ,GAAG,CAAA;AACtF,YAAA;AACA,YAAA,MAAM,OAAA,GAAA,CAAU,EAAA,GAAA,GAAA,KAAG,IAAA,IAAH,QAAG,MAAA,GAAA,MAAA,GAAH,GAAA,CAAK,UAAA,MAAU,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,GAAG,OAAO,CAAA;AACzC,YAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,cAAA,MAAM,IAAI,KAAA,CACR,CAAA,8EAAA,EAAiF,OAAO,CAAA,CAAA,CAAG,CAAA;AAE/F,YAAA;AACA,YAAA,WAAA,GAAc,WAAA,KAAgB,WAAA,IAAe,WAAA,CAAY,GAAG,CAAA,CAAA;AAC5D,YAAA,WAAA,CAAY,SAAS,CAAC,CAAA;AACxB,UAAA;AACA,UAAA,IAAI,CAAC,WAAA;AAAa,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,OAAO,CAAA,kBAAA,CAAoB,CAAA;AAChF,UAAA,OAAO,YAAA;AAEP,UAAA,SAAS,WAAA,CAAY,EAAC,QAAA,EAAQ,EAAkB;AAC9C,YAAA,OAAO,MAAM,OAAA,CAAQ,QAAQ,CAAA,IAAK,QAAA,CAAS,SAAS,OAAO,CAAA;AAC7D,UAAA;AAEA,UAAA,SAAS,WAAA,CAAY,KAAsB,CAAA,EAAS;AAClD,YAAA,IAAI,IAAI,KAAA,EAAO;AACb,cAAA,UAAA,CAAW,GAAA,CAAI,OAAO,CAAC,CAAA;AACzB,YAAA,CAAA,MAAA,IAAW,IAAI,IAAA,EAAM;AACnB,cAAA,KAAA,MAAW,QAAA,IAAY,IAAI,IAAA,EAAM;AAC/B,gBAAA,UAAA,CAAW,UAAU,CAAC,CAAA;AACxB,cAAA;YACF,CAAA,MAAO;AACL,cAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,OAAO,CAAA,6BAAA,CAA+B,CAAA;AACtF,YAAA;AACF,UAAA;AAEA,UAAA,SAAS,UAAA,CAAW,UAAmB,CAAA,EAAS;AAC9C,YAAA,IAAI,OAAO,QAAA,IAAY,QAAA,IAAY,QAAA,IAAY,YAAA,EAAc;AAC3D,cAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,OAAO,CAAA,+BAAA,CAAiC,CAAA;AAC7E,YAAA;AACA,YAAA,YAAA,CAAa,QAAQ,CAAA,GAAI,CAAA;AAC3B,UAAA;AACF,QAAA;AACF,MAAA;;AAGF,IAAA,OAAA,CAAA,OAAA,GAAe,GAAA;;;;;AChHf,IAAA,4BAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0FAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAA,MAAA,CAAA,OAAA,GAAA;AAAA,MACE,OAAA,EAAW,yCAAA;AAAA,MACX,GAAA,EAAO,yCAAA;AAAA,MACP,KAAA,EAAS,yBAAA;AAAA,MACT,WAAA,EAAe;AAAA,QACb,WAAA,EAAe;AAAA,UACb,IAAA,EAAQ,OAAA;AAAA,UACR,QAAA,EAAY,CAAA;AAAA,UACZ,KAAA,EAAS,EAAC,IAAA,EAAQ,GAAA;AAAG,SACvB;AAAA,QACA,kBAAA,EAAsB;AAAA,UACpB,IAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAW;AAAA,SACb;AAAA,QACA,0BAAA,EAA8B;AAAA,UAC5B,KAAA,EAAS,CAAC,EAAC,IAAA,EAAQ,oCAAkC,EAAG,EAAC,OAAA,EAAW,CAAA,EAAE;AAAA,SACxE;AAAA,QACA,WAAA,EAAe;AAAA,UACb,IAAA,EAAQ,CAAC,OAAA,EAAS,SAAA,EAAW,WAAW,MAAA,EAAQ,QAAA,EAAU,UAAU,QAAQ;AAAA,SAC9E;AAAA,QACA,WAAA,EAAe;AAAA,UACb,IAAA,EAAQ,OAAA;AAAA,UACR,KAAA,EAAS,EAAC,IAAA,EAAQ,QAAA,EAAQ;AAAA,UAC1B,WAAA,EAAe,IAAA;AAAA,UACf,SAAW;AAAC;AACd,OACF;AAAA,MACA,IAAA,EAAQ,CAAC,QAAA,EAAU,SAAS,CAAA;AAAA,MAC5B,UAAA,EAAc;AAAA,QACZ,GAAA,EAAO;AAAA,UACL,IAAA,EAAQ,QAAA;AAAA,UACR,MAAA,EAAU;AAAA,SACZ;AAAA,QACA,OAAA,EAAW;AAAA,UACT,IAAA,EAAQ,QAAA;AAAA,UACR,MAAA,EAAU;AAAA,SACZ;AAAA,QACA,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,QAAA;AAAA,UACR,MAAA,EAAU;AAAA,SACZ;AAAA,QACA,QAAA,EAAY;AAAA,UACV,IAAA,EAAQ;AAAA,SACV;AAAA,QACA,KAAA,EAAS;AAAA,UACP,IAAA,EAAQ;AAAA,SACV;AAAA,QACA,WAAA,EAAe;AAAA,UACb,IAAA,EAAQ;AAAA,SACV;AAAA,QACA,OAAA,EAAW,IAAA;AAAA,QACX,QAAA,EAAY;AAAA,UACV,IAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAW;AAAA,SACb;AAAA,QACA,QAAA,EAAY;AAAA,UACV,IAAA,EAAQ,OAAA;AAAA,UACR,KAAA,EAAS;AAAA,SACX;AAAA,QACA,UAAA,EAAc;AAAA,UACZ,IAAA,EAAQ,QAAA;AAAA,UACR,gBAAA,EAAoB;AAAA,SACtB;AAAA,QACA,OAAA,EAAW;AAAA,UACT,IAAA,EAAQ;AAAA,SACV;AAAA,QACA,gBAAA,EAAoB;AAAA,UAClB,IAAA,EAAQ;AAAA,SACV;AAAA,QACA,OAAA,EAAW;AAAA,UACT,IAAA,EAAQ;AAAA,SACV;AAAA,QACA,gBAAA,EAAoB;AAAA,UAClB,IAAA,EAAQ;AAAA,SACV;AAAA,QACA,SAAA,EAAa,EAAC,IAAA,EAAQ,kCAAA,EAAkC;AAAA,QACxD,SAAA,EAAa,EAAC,IAAA,EAAQ,0CAAA,EAA0C;AAAA,QAChE,OAAA,EAAW;AAAA,UACT,IAAA,EAAQ,QAAA;AAAA,UACR,MAAA,EAAU;AAAA,SACZ;AAAA,QACA,eAAA,EAAmB,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,QAC/B,KAAA,EAAS;AAAA,UACP,KAAA,EAAS,CAAC,EAAC,IAAA,EAAQ,KAAG,EAAG,EAAC,IAAA,EAAQ,2BAAA,EAA4B,CAAA;AAAA,UAC9D,OAAA,EAAW;AAAA,SACb;AAAA,QACA,QAAA,EAAY,EAAC,IAAA,EAAQ,kCAAA,EAAkC;AAAA,QACvD,QAAA,EAAY,EAAC,IAAA,EAAQ,0CAAA,EAA0C;AAAA,QAC/D,WAAA,EAAe;AAAA,UACb,IAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAW;AAAA,SACb;AAAA,QACA,QAAA,EAAY,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,QACxB,aAAA,EAAiB,EAAC,IAAA,EAAQ,kCAAA,EAAkC;AAAA,QAC5D,aAAA,EAAiB,EAAC,IAAA,EAAQ,0CAAA,EAA0C;AAAA,QACpE,QAAA,EAAY,EAAC,IAAA,EAAQ,2BAAA,EAA2B;AAAA,QAChD,oBAAA,EAAwB,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,QACpC,WAAA,EAAe;AAAA,UACb,IAAA,EAAQ,QAAA;AAAA,UACR,oBAAA,EAAwB,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,UACpC,SAAW;AAAC,SACd;AAAA,QACA,UAAA,EAAc;AAAA,UACZ,IAAA,EAAQ,QAAA;AAAA,UACR,oBAAA,EAAwB,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,UACpC,SAAW;AAAC,SACd;AAAA,QACA,iBAAA,EAAqB;AAAA,UACnB,IAAA,EAAQ,QAAA;AAAA,UACR,oBAAA,EAAwB,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,UACpC,aAAA,EAAiB,EAAC,MAAA,EAAU,OAAA,EAAO;AAAA,UACnC,SAAW;AAAC,SACd;AAAA,QACA,YAAA,EAAgB;AAAA,UACd,IAAA,EAAQ,QAAA;AAAA,UACR,oBAAA,EAAwB;AAAA,YACtB,KAAA,EAAS,CAAC,EAAC,IAAA,EAAQ,KAAG,EAAG,EAAC,IAAA,EAAQ,2BAAA,EAA4B;AAAA;AAChE,SACF;AAAA,QACA,aAAA,EAAiB,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,QAC7B,KAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,OAAA;AAAA,UACR,KAAA,EAAS,IAAA;AAAA,UACT,QAAA,EAAY,CAAA;AAAA,UACZ,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,IAAA,EAAQ;AAAA,UACN,KAAA,EAAS;AAAA,YACP,EAAC,MAAQ,2BAAA,EAA2B;AAAA,YACpC;AAAA,cACE,IAAA,EAAQ,OAAA;AAAA,cACR,KAAA,EAAS,EAAC,IAAA,EAAQ,2BAAA,EAA2B;AAAA,cAC7C,QAAA,EAAY,CAAA;AAAA,cACZ,WAAA,EAAe;AAAA;AACjB;AACF,SACF;AAAA,QACA,MAAA,EAAU,EAAC,IAAA,EAAQ,QAAA,EAAQ;AAAA,QAC3B,gBAAA,EAAoB,EAAC,IAAA,EAAQ,QAAA,EAAQ;AAAA,QACrC,eAAA,EAAmB,EAAC,IAAA,EAAQ,QAAA,EAAQ;AAAA,QACpC,EAAA,EAAM,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,QAClB,IAAA,EAAQ,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,QACpB,IAAA,EAAQ,EAAC,IAAA,EAAQ,GAAA,EAAG;AAAA,QACpB,KAAA,EAAS,EAAC,IAAA,EAAQ,2BAAA,EAA2B;AAAA,QAC7C,KAAA,EAAS,EAAC,IAAA,EAAQ,2BAAA,EAA2B;AAAA,QAC7C,KAAA,EAAS,EAAC,IAAA,EAAQ,2BAAA,EAA2B;AAAA,QAC7C,GAAA,EAAO,EAAC,IAAA,EAAQ,GAAA;AAAG,OACrB;AAAA,MACA,OAAA,EAAW;AAAA,KACb;AAAA,EAAA;AAAA,CAAA,CAAA;;;;;;;ACrJA,IAAA,IAAA,MAAA,GAAA,YAAA,EAAA;AACA,IAAA,IAAA,QAAA,GAAA,cAAA,EAAA;AACA,IAAA,IAAA,eAAA,GAAA,qBAAA,EAAA;AACA,IAAA,IAAA,gBAAA,GAAA,4BAAA,EAAA;AAEA,IAAA,IAAM,iBAAA,GAAoB,CAAC,aAAa,CAAA;AAExC,IAAA,IAAM,cAAA,GAAiB,wCAAA;AAEvB,IAAA,IAAaF,IAAAA,GAAb,cAAyB,MAAA,CAAA,OAAA,CAAO;MAC9B,gBAAA,GAAgB;AACd,QAAA,KAAA,CAAM,gBAAA,EAAgB;AACtB,QAAA,QAAA,CAAA,QAAmB,OAAA,CAAQ,CAAC,MAAM,IAAA,CAAK,aAAA,CAAc,CAAC,CAAC,CAAA;AACvD,QAAA,IAAI,KAAK,IAAA,CAAK,aAAA;AAAe,UAAA,IAAA,CAAK,UAAA,CAAW,gBAAA,OAAa,CAAA;AAC5D,MAAA;MAEA,qBAAA,GAAqB;AACnB,QAAA,KAAA,CAAM,qBAAA,EAAqB;AAC3B,QAAA,IAAI,CAAC,KAAK,IAAA,CAAK,IAAA;AAAM,UAAA;AACrB,QAAA,MAAM,UAAA,GAAa,KAAK,IAAA,CAAK,KAAA,GACzB,KAAK,eAAA,CAAgB,gBAAA,EAAkB,iBAAiB,CAAA,GACxD,gBAAA;AACJ,QAAA,IAAA,CAAK,aAAA,CAAc,UAAA,EAAY,cAAA,EAAgB,KAAK,CAAA;AACpD,QAAA,IAAA,CAAK,IAAA,CAAK,+BAA+B,CAAA,GAAI,cAAA;AAC/C,MAAA;MAEA,WAAA,GAAW;AACT,QAAA,OAAQ,IAAA,CAAK,IAAA,CAAK,WAAA,GAChB,KAAA,CAAM,WAAA,OAAkB,IAAA,CAAK,SAAA,CAAU,cAAc,CAAA,GAAI,cAAA,GAAiB,MAAA,CAAA;AAC9E,MAAA;;AApBF,IAAA,OAAA,CAAA,GAAA,GAAAA,IAAAA;AAuBA,IAAA,MAAA,CAAO,UAAU,OAAA,GAAUA,IAAAA;AAC3B,IAAA,MAAA,CAAO,QAAQ,GAAA,GAAMA,IAAAA;AACrB,IAAA,MAAA,CAAO,eAAe,OAAA,EAAS,YAAA,EAAc,EAAC,KAAA,EAAO,MAAK,CAAA;AAE1D,IAAA,OAAA,CAAA,OAAA,GAAeA,IAAAA;AA0Bf,IAAA,IAAA,UAAA,GAAA,gBAAA,EAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,UAAA,CAAA,UAAA;AAAU,IAAA,CAAA,EAAA,CAAA;AAIlB,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,CAAA;AAAC,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,GAAA;AAAG,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,SAAA;AAAS,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,GAAA;AAAG,IAAA,CAAA,EAAA,CAAA;AAAE,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,IAAA;AAAI,IAAA,CAAA,EAAA,CAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,SAAA,CAAA,OAAA;AAAO,IAAA,CAAA,EAAA,CAAA;AACnD,IAAA,IAAA,kBAAA,GAAA,wBAAA,EAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,kBAAA,CAAA,OAAA;AAAO,IAAA,CAAA,EAAA,CAAA;AACf,IAAA,IAAA,WAAA,GAAA,iBAAA,EAAA;AAAQ,IAAA,MAAA,CAAA,eAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,KAAA,WAAA;AAAA,MAAA,OAAA,WAAA,CAAA,OAAA;AAAO,IAAA,CAAA,EAAA,CAAA;;;;;;;;;AChCf,IAAA,SAAS,MAAA,CACP,UACA,OAAA,EAA8B;AAE9B,MAAA,OAAO,EAAC,UAAU,OAAA,EAAO;AAC3B,IAAA;AAEa,IAAA,OAAA,CAAA,WAAA,GAA8B;;MAEzC,IAAA,EAAM,MAAA,CAAO,MAAM,WAAW,CAAA;;AAE9B,MAAA,IAAA,EAAM,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG,WAAW,CAAA;AACvC,MAAA,WAAA,EAAa,MAAA,CAAO,WAAA,CAAY,IAAI,CAAA,EAAG,eAAe,CAAA;MACtD,UAAA,EAAY,MAAA,CAAO,OAAA,EAAO,EAAI,cAAc,CAAA;MAC5C,eAAA,EAAiB,MAAA,CAAO,WAAA,EAAW,EAAI,kBAAkB,CAAA;;MAEzD,QAAA,EAAU,wEAAA;AACV,MAAA,GAAA;MACA,eAAA,EACE,woCAAA;;MAEF,cAAA,EACE,mLAAA;;;MAGF,GAAA,EAAK,odAAA;MACL,KAAA,EACE,0IAAA;MACF,QAAA,EACE,uGAAA;;MAEF,IAAA,EAAM,mFAAA;MACN,IAAA,EAAM,k/BAAA;AACN,MAAA,KAAA;;MAEA,IAAA,EAAM,8DAAA;;;MAGN,cAAA,EAAgB,2BAAA;MAChB,2BAAA,EAA6B,8DAAA;;MAE7B,uBAAA,EAAyB,kDAAA;;;AAGzB,MAAA,IAAA;;AAEA,MAAA,KAAA,EAAO,EAAC,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,aAAA,EAAa;;AAE/C,MAAA,KAAA,EAAO,EAAC,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,aAAA,EAAa;;AAE/C,MAAA,KAAA,EAAO,EAAC,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,cAAA,EAAc;;AAEhD,MAAA,MAAA,EAAQ,EAAC,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,cAAA,EAAc;;MAEjD,QAAA,EAAU,IAAA;;MAEV,MAAA,EAAQ;;AAGG,IAAA,OAAA,CAAA,WAAA,GAA8B;AACzC,MAAA,GAAG,OAAA,CAAA,WAAA;MACH,IAAA,EAAM,MAAA,CAAO,8BAA8B,WAAW,CAAA;MACtD,IAAA,EAAM,MAAA,CACJ,8EACA,WAAW,CAAA;MAEb,WAAA,EAAa,MAAA,CACX,uGACA,eAAe,CAAA;MAEjB,UAAA,EAAY,MAAA,CACV,+EACA,cAAc,CAAA;MAEhB,eAAA,EAAiB,MAAA,CACf,4GACA,kBAAkB,CAAA;;MAGpB,GAAA,EAAK,4CAAA;MACL,eAAA,EAAiB,yEAAA;;;;MAIjB,KAAA,EACE;;AAGS,IAAA,OAAA,CAAA,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,OAAA,CAAA,WAAW,CAAA;AAElD,IAAA,SAAS,WAAW,IAAA,EAAY;AAE9B,MAAA,OAAO,OAAO,CAAA,KAAM,CAAA,KAAM,OAAO,GAAA,KAAQ,CAAA,IAAK,OAAO,GAAA,KAAQ,CAAA,CAAA;AAC/D,IAAA;AAEA,IAAA,IAAM,IAAA,GAAO,4BAAA;AACb,IAAA,IAAM,IAAA,GAAO,CAAC,CAAA,EAAG,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,EAAE,CAAA;AAE/D,IAAA,SAAS,KAAK,GAAA,EAAW;AAEvB,MAAA,MAAM,OAAA,GAA2B,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAC9C,MAAA,IAAI,CAAC,OAAA;AAAS,QAAA,OAAO,KAAA;AACrB,MAAA,MAAM,IAAA,GAAe,CAAC,OAAA,CAAQ,CAAC,CAAA;AAC/B,MAAA,MAAM,KAAA,GAAgB,CAAC,OAAA,CAAQ,CAAC,CAAA;AAChC,MAAA,MAAM,GAAA,GAAc,CAAC,OAAA,CAAQ,CAAC,CAAA;AAC9B,MAAA,OACE,KAAA,IAAS,CAAA,IACT,KAAA,IAAS,EAAA,IACT,OAAO,CAAA,IACP,GAAA,KAAQ,KAAA,KAAU,CAAA,IAAK,UAAA,CAAW,IAAI,CAAA,GAAI,EAAA,GAAK,KAAK,KAAK,CAAA,CAAA;AAE7D,IAAA;AAEA,IAAA,SAAS,WAAA,CAAY,IAAY,EAAA,EAAU;AACzC,MAAA,IAAI,EAAE,EAAA,IAAM,EAAA,CAAA;AAAK,QAAA,OAAO,MAAA;AACxB,MAAA,IAAI,EAAA,GAAK,EAAA;AAAI,QAAA,OAAO,CAAA;AACpB,MAAA,IAAI,EAAA,GAAK,EAAA;AAAI,QAAA,OAAO,EAAA;AACpB,MAAA,OAAO,CAAA;AACT,IAAA;AAEA,IAAA,IAAM,IAAA,GAAO,iEAAA;AAEb,IAAA,SAAS,QAAQ,cAAA,EAAwB;AACvC,MAAA,OAAO,SAAS,KAAK,GAAA,EAAW;AAC9B,QAAA,MAAM,OAAA,GAA2B,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAC9C,QAAA,IAAI,CAAC,OAAA;AAAS,UAAA,OAAO,KAAA;AACrB,QAAA,MAAM,EAAA,GAAa,CAAC,OAAA,CAAQ,CAAC,CAAA;AAC7B,QAAA,MAAM,GAAA,GAAc,CAAC,OAAA,CAAQ,CAAC,CAAA;AAC9B,QAAA,MAAM,GAAA,GAAc,CAAC,OAAA,CAAQ,CAAC,CAAA;AAC9B,QAAA,MAAM,EAAA,GAAyB,QAAQ,CAAC,CAAA;AACxC,QAAA,MAAM,MAAA,GAAiB,OAAA,CAAQ,CAAC,CAAA,KAAM,MAAM,EAAA,GAAK,CAAA;AACjD,QAAA,MAAM,GAAA,GAAc,EAAE,OAAA,CAAQ,CAAC,CAAA,IAAK,CAAA,CAAA;AACpC,QAAA,MAAM,GAAA,GAAc,EAAE,OAAA,CAAQ,CAAC,CAAA,IAAK,CAAA,CAAA;AACpC,QAAA,IAAI,GAAA,GAAM,EAAA,IAAM,GAAA,GAAM,EAAA,IAAO,kBAAkB,CAAC,EAAA;AAAK,UAAA,OAAO,KAAA;AAC5D,QAAA,IAAI,EAAA,IAAM,EAAA,IAAM,GAAA,IAAO,EAAA,IAAM,GAAA,GAAM,EAAA;AAAI,UAAA,OAAO,IAAA;AAE9C,QAAA,MAAM,MAAA,GAAS,MAAM,GAAA,GAAM,MAAA;AAC3B,QAAA,MAAM,QAAQ,EAAA,GAAK,GAAA,GAAM,MAAA,IAAU,MAAA,GAAS,IAAI,CAAA,GAAI,CAAA,CAAA;AACpD,QAAA,OAAA,CAAQ,KAAA,KAAU,MAAM,KAAA,KAAU,EAAA,MAAQ,WAAW,EAAA,IAAM,MAAA,KAAW,OAAO,GAAA,GAAM,EAAA;AACrF,MAAA,CAAA;AACF,IAAA;AAEA,IAAA,SAAS,WAAA,CAAY,IAAY,EAAA,EAAU;AACzC,MAAA,IAAI,EAAE,EAAA,IAAM,EAAA,CAAA;AAAK,QAAA,OAAO,MAAA;AACxB,MAAA,MAAM,sBAAK,IAAI,IAAA,CAAK,aAAA,GAAgB,EAAE,GAAE,OAAA,EAAO;AAC/C,MAAA,MAAM,sBAAK,IAAI,IAAA,CAAK,aAAA,GAAgB,EAAE,GAAE,OAAA,EAAO;AAC/C,MAAA,IAAI,EAAE,EAAA,IAAM,EAAA,CAAA;AAAK,QAAA,OAAO,MAAA;AACxB,MAAA,OAAO,EAAA,GAAK,EAAA;AACd,IAAA;AAEA,IAAA,SAAS,cAAA,CAAe,IAAY,EAAA,EAAU;AAC5C,MAAA,IAAI,EAAE,EAAA,IAAM,EAAA,CAAA;AAAK,QAAA,OAAO,MAAA;AACxB,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AACvB,MAAA,MAAM,EAAA,GAAK,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA;AACvB,MAAA,IAAI,EAAE,EAAA,IAAM,EAAA,CAAA;AAAK,QAAA,OAAO,MAAA;AACxB,MAAA,EAAA,GAAK,GAAG,CAAC,CAAA,GAAI,GAAG,CAAC,CAAA,GAAI,GAAG,CAAC,CAAA;AACzB,MAAA,EAAA,GAAK,GAAG,CAAC,CAAA,GAAI,GAAG,CAAC,CAAA,GAAI,GAAG,CAAC,CAAA;AACzB,MAAA,IAAI,EAAA,GAAK,EAAA;AAAI,QAAA,OAAO,CAAA;AACpB,MAAA,IAAI,EAAA,GAAK,EAAA;AAAI,QAAA,OAAO,EAAA;AACpB,MAAA,OAAO,CAAA;AACT,IAAA;AAEA,IAAA,IAAM,mBAAA,GAAsB,OAAA;AAC5B,IAAA,SAAS,YAAY,cAAA,EAAwB;AAC3C,MAAA,MAAM,IAAA,GAAO,QAAQ,cAAc,CAAA;AAEnC,MAAA,OAAO,SAAS,UAAU,GAAA,EAAW;AAEnC,QAAA,MAAM,QAAA,GAAqB,GAAA,CAAI,KAAA,CAAM,mBAAmB,CAAA;AACxD,QAAA,OAAO,QAAA,CAAS,MAAA,KAAW,CAAA,IAAK,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA,IAAK,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AACvE,MAAA,CAAA;AACF,IAAA;AAEA,IAAA,SAAS,eAAA,CAAgB,KAAa,GAAA,EAAW;AAC/C,MAAA,IAAI,EAAE,GAAA,IAAO,GAAA,CAAA;AAAM,QAAA,OAAO,MAAA;AAC1B,MAAA,MAAM,EAAA,GAAK,IAAI,IAAA,CAAK,GAAG,EAAE,OAAA,EAAO;AAChC,MAAA,MAAM,EAAA,GAAK,IAAI,IAAA,CAAK,GAAG,EAAE,OAAA,EAAO;AAChC,MAAA,IAAI,EAAE,EAAA,IAAM,EAAA,CAAA;AAAK,QAAA,OAAO,MAAA;AACxB,MAAA,OAAO,EAAA,GAAK,EAAA;AACd,IAAA;AAEA,IAAA,SAAS,kBAAA,CAAmB,KAAa,GAAA,EAAW;AAClD,MAAA,IAAI,EAAE,GAAA,IAAO,GAAA,CAAA;AAAM,QAAA,OAAO,MAAA;AAC1B,MAAA,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,GAAI,GAAA,CAAI,MAAM,mBAAmB,CAAA;AAC9C,MAAA,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,GAAI,GAAA,CAAI,MAAM,mBAAmB,CAAA;AAC9C,MAAA,MAAM,GAAA,GAAM,WAAA,CAAY,EAAA,EAAI,EAAE,CAAA;AAC9B,MAAA,IAAI,GAAA,KAAQ,MAAA;AAAW,QAAA,OAAO,MAAA;AAC9B,MAAA,OAAO,GAAA,IAAO,WAAA,CAAY,EAAA,EAAI,EAAE,CAAA;AAClC,IAAA;AAEA,IAAA,IAAM,gBAAA,GAAmB,MAAA;AACzB,IAAA,IAAM,GAAA,GACJ,8nCAAA;AAEF,IAAA,SAAS,IAAI,GAAA,EAAW;AAEtB,MAAA,OAAO,iBAAiB,IAAA,CAAK,GAAG,CAAA,IAAK,GAAA,CAAI,KAAK,GAAG,CAAA;AACnD,IAAA;AAEA,IAAA,IAAM,IAAA,GAAO,oEAAA;AAEb,IAAA,SAAS,KAAK,GAAA,EAAW;AACvB,MAAA,IAAA,CAAK,SAAA,GAAY,CAAA;AACjB,MAAA,OAAO,IAAA,CAAK,KAAK,GAAG,CAAA;AACtB,IAAA;AAEA,IAAA,IAAM,SAAA,GAAY,WAAO;AACzB,IAAA,IAAM,SAAA,GAAY,KAAK,EAAA,GAAK,CAAA;AAE5B,IAAA,SAAS,cAAc,KAAA,EAAa;AAClC,MAAA,OAAO,OAAO,SAAA,CAAU,KAAK,CAAA,IAAK,KAAA,IAAS,aAAa,KAAA,IAAS,SAAA;AACnE,IAAA;AAEA,IAAA,SAAS,cAAc,KAAA,EAAa;AAElC,MAAA,OAAO,MAAA,CAAO,UAAU,KAAK,CAAA;AAC/B,IAAA;AAEA,IAAA,SAAS,cAAA,GAAc;AACrB,MAAA,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,IAAM,QAAA,GAAW,UAAA;AACjB,IAAA,SAAS,MAAM,GAAA,EAAW;AACxB,MAAA,IAAI,QAAA,CAAS,KAAK,GAAG,CAAA;AAAG,QAAA,OAAO,KAAA;AAC/B,MAAA,IAAI;AACF,QAAA,IAAI,OAAO,GAAG,CAAA;AACd,QAAA,OAAO,IAAA;eACA,CAAA,EAAG;AACV,QAAA,OAAO,KAAA;;AAEX,IAAA;;;;;;;;;ACjQA,IAAA,IAAA,KAAA,GAAA,WAAA,EAAA;AACA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAMA,IAAA,IAAM,MAAM,SAAA,CAAA,SAAA;AAEZ,IAAA,IAAM,IAAA,GAAgE;MACpE,aAAA,EAAe,EAAC,OAAO,IAAA,EAAM,EAAA,EAAI,IAAI,GAAA,EAAK,IAAA,EAAM,IAAI,EAAA,EAAE;MACtD,aAAA,EAAe,EAAC,OAAO,IAAA,EAAM,EAAA,EAAI,IAAI,GAAA,EAAK,IAAA,EAAM,IAAI,EAAA,EAAE;MACtD,sBAAA,EAAwB,EAAC,OAAO,GAAA,EAAK,EAAA,EAAI,IAAI,EAAA,EAAI,IAAA,EAAM,IAAI,GAAA,EAAG;MAC9D,sBAAA,EAAwB,EAAC,OAAO,GAAA,EAAK,EAAA,EAAI,IAAI,EAAA,EAAI,IAAA,EAAM,IAAI,GAAA;;AAK7D,IAAA,IAAM,KAAA,GAAgC;AACpC,MAAA,OAAA,EAAS,CAAC,EAAC,OAAA,EAAS,UAAA,EAAU,KAAA,IAAM,SAAA,CAAA,GAAA,CAAA,CAAA,UAAA,EAAgB,IAAA,CAAK,OAAc,CAAA,CAAE,KAAK,IAAI,UAAU,CAAA,CAAA;AAC5F,MAAA,MAAA,EAAQ,CAAC,EAAC,OAAA,EAAS,UAAA,EAAU,KAAA,IAC3B,SAAA,CAAA,CAAA,CAAA,CAAA,aAAA,EAAiB,IAAA,CAAK,OAAc,CAAA,CAAE,KAAK,YAAY,UAAU,CAAA,CAAA;;AAGxD,IAAA,OAAA,CAAA,qBAAA,GAA+C;MAC1D,OAAA,EAAS,MAAA,CAAO,KAAK,IAAI,CAAA;MACzB,IAAA,EAAM,QAAA;MACN,UAAA,EAAY,QAAA;MACZ,KAAA,EAAO,IAAA;AACP,MAAA,KAAA;AACA,MAAA,IAAA,CAAK,GAAA,EAAG;AACN,QAAA,MAAM,EAAC,GAAA,EAAK,IAAA,EAAM,UAAA,EAAY,OAAA,EAAS,IAAE,GAAI,GAAA;AAC7C,QAAA,MAAM,EAAC,IAAA,EAAM,IAAA,EAAI,GAAI,EAAA;AACrB,QAAA,IAAI,CAAC,IAAA,CAAK,eAAA;AAAiB,UAAA;AAE3B,QAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAA,UAAA,CAAW,EAAA,EAAK,KAAK,KAAA,CAAM,GAAA,CAAI,MAAA,CAAgB,UAAA,EAAY,QAAQ,CAAA;AACpF,QAAA,IAAI,IAAA,CAAK,KAAA;AAAO,UAAA,mBAAA,EAAmB;;AAC9B,UAAA,cAAA,EAAc;AAEnB,QAAA,SAAS,mBAAA,GAAmB;AAC1B,UAAA,MAAM,IAAA,GAAO,GAAA,CAAI,UAAA,CAAW,SAAA,EAAW;AACrC,YAAA,GAAA,EAAK,IAAA,CAAK,OAAA;AACV,YAAA,IAAA,EAAM,KAAK,IAAA,CAAK;AACjB,WAAA,CAAA;AACD,UAAA,MAAM,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,KAAA,EAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,UAAU,CAAA,CAAA,CAAG,CAAA;AAC3D,UAAA,GAAA,CAAI,SAAA,CAAA,IACF,SAAA,CAAA,EAAA,EAAA,IACE,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,GAAG,CAAA,YAAA,CAAA,EAAA,IACd,SAAA,CAAA,KAAI,GAAG,CAAA,kBAAA,CAAA,EAAA,IACP,SAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAW,GAAG,CAAA,sBAAA,CAAA,EACd,WAAA,CAAY,GAAG,CAAC,CACjB,CAAA;AAEL,QAAA;AAEA,QAAA,SAAS,cAAA,GAAc;AACrB,UAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AACpB,UAAA,MAAM,MAAA,GAAkC,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA;AAC3D,UAAA,IAAI,CAAC,UAAU,MAAA,KAAW,IAAA;AAAM,YAAA;AAChC,UAAA,IACE,OAAO,UAAU,QAAA,IACjB,MAAA,YAAkB,UAClB,OAAO,MAAA,CAAO,WAAW,UAAA,EACzB;AACA,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,CAAA,EAAI,OAAO,CAAA,WAAA,EAAc,MAAM,CAAA,oCAAA,CAAsC,CAAA;;AAEvF,UAAA,MAAM,GAAA,GAAM,GAAA,CAAI,UAAA,CAAW,SAAA,EAAW;YACpC,GAAA,EAAK,MAAA;YACL,GAAA,EAAK,MAAA;AACL,YAAA,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,OAAA,GAAA,IAAU,UAAA,CAAA,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,OAAO,OAAG,SAAA,CAAA,WAAA,EAAY,MAAM,CAAC,CAAA,CAAA,GAAK;AAC3E,WAAA,CAAA;AAED,UAAA,GAAA,CAAI,SAAA,CAAU,WAAA,CAAY,GAAG,CAAC,CAAA;AAChC,QAAA;AAEA,QAAA,SAAS,YAAY,GAAA,EAAS;AAC5B,UAAA,OAAA,IAAO,SAAA,CAAA,CAAA,CAAA,CAAA,EAAI,GAAG,CAAA,SAAA,EAAY,IAAI,CAAA,EAAA,EAAK,UAAU,CAAA,EAAA,EAAK,IAAA,CAAK,OAAc,CAAA,CAAE,IAAI,CAAA,EAAA,CAAA;AAC7E,QAAA;AACF,MAAA,CAAA;AACA,MAAA,YAAA,EAAc,CAAC,QAAQ;;AAGzB,IAAA,IAAM,iBAAA,GAAuC,CAACG,IAAAA,KAAiB;AAC7D,MAAAA,IAAAA,CAAI,UAAA,CAAW,OAAA,CAAA,qBAAqB,CAAA;AACpC,MAAA,OAAOA,IAAAA;AACT,IAAA,CAAA;AAEA,IAAA,OAAA,CAAA,OAAA,GAAe,iBAAA;;;;;;;;AClGf,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAQA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAGA,IAAA,IAAA,SAAA,GAAA,eAAA,EAAA;AAgBA,IAAA,IAAM,QAAA,GAAW,IAAI,SAAA,CAAA,IAAA,CAAK,aAAa,CAAA;AACvC,IAAA,IAAM,QAAA,GAAW,IAAI,SAAA,CAAA,IAAA,CAAK,aAAa,CAAA;AAEvC,IAAA,IAAM,gBAA+B,CACnCA,IAAAA,EACA,OAA6B,EAAC,QAAA,EAAU,MAAI,KACrC;AACP,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,QAAAC,WAAAA,CAAWD,IAAAA,EAAK,IAAA,EAAM,SAAA,CAAA,aAAa,QAAQ,CAAA;AAC3C,QAAA,OAAOA,IAAAA;;AAET,MAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GACxB,KAAK,IAAA,KAAS,MAAA,GAAS,CAAC,SAAA,CAAA,aAAa,QAAQ,CAAA,GAAI,CAAC,SAAA,CAAA,aAAa,QAAQ,CAAA;AACzE,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,OAAA,IAAW,SAAA,CAAA,WAAA;AAC7B,MAAAC,WAAAA,CAAWD,IAAAA,EAAK,IAAA,EAAM,OAAA,EAAS,UAAU,CAAA;AACzC,MAAA,IAAI,IAAA,CAAK,QAAA;AAAU,QAAA,IAAA,OAAA,CAAA,OAAA,EAAYA,IAAG,CAAA;AAClC,MAAA,OAAOA,IAAAA;AACT,IAAA,CAAA;AAEA,IAAA,aAAA,CAAc,GAAA,GAAM,CAAC,IAAA,EAAkB,IAAA,GAAmB,MAAA,KAAkB;AAC1E,MAAA,MAAM,OAAA,GAAU,IAAA,KAAS,MAAA,GAAS,SAAA,CAAA,cAAc,SAAA,CAAA,WAAA;AAChD,MAAA,MAAM,CAAA,GAAI,QAAQ,IAAI,CAAA;AACtB,MAAA,IAAI,CAAC,CAAA;AAAG,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,IAAI,CAAA,CAAA,CAAG,CAAA;AAClD,MAAA,OAAO,CAAA;AACT,IAAA,CAAA;AAEA,IAAA,SAASC,WAAAA,CAAWD,IAAAA,EAAU,IAAA,EAAoB,EAAA,EAAoB,UAAA,EAAgB;;;AACpF,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAAA,IAAAA,CAAI,IAAA,CAAK,MAAK,OAAA,MAAO,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,KAAA,EAAA,CAAP,OAAA,GAAA,IAAY,SAAA,CAAA,yCAAwC,UAAU,CAAA,CAAA;AAC5E,MAAA,KAAA,MAAW,CAAA,IAAK,IAAA;AAAM,QAAAA,IAAAA,CAAI,SAAA,CAAU,CAAA,EAAG,EAAA,CAAG,CAAC,CAAC,CAAA;AAC9C,IAAA;AAEA,IAAA,MAAA,CAAO,UAAU,OAAA,GAAU,aAAA;AAC3B,IAAA,MAAA,CAAO,eAAe,OAAA,EAAS,YAAA,EAAc,EAAC,KAAA,EAAO,MAAK,CAAA;AAE1D,IAAA,OAAA,CAAA,OAAA,GAAe,aAAA;;;ACpDf,IAAM,SAAA,GACJ,sGAAA;AAEK,SAAS,oBAAA,CACd,SACA,OAAA,EACoC;AACpC,EAAA,MAAM,OAAA,GAAU,cAAc,OAAO,CAAA;AACrC,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,WAAA,CAAY,SAAS,OAAO,CAAA;AAEpD,EAAA,MAAM,UAAA,GAAa,qBAAA,CAAsB,OAAA,CAAQ,KAAK,CAAA;AACtD,EAAA,IAAI,CAAC,UAAA,EAAY,OAAO,WAAA,CAAY,SAAS,OAAO,CAAA;AAEpD,EAAA,OAAO,GAAG,UAAU,CAAA;AACtB;AAEA,SAAS,cAAc,OAAA,EAAuC;AAC5D,EAAA,IAAI,OAAA,GAAU,OAAA;AACd,EAAA,IAAI;AACF,IAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,CAAA,EAAG,QAAQ,CAAA,EAAG;AACtC,MAAA,MAAM,IAAA,GAAO,mBAAmB,OAAO,CAAA;AACvC,MAAA,IAAI,SAAS,OAAA,EAAS;AACtB,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ;AAAA,EACF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAI,IAAI,CAAA;AAAA,EACjB;AACA,EAAA,OAAO,GAAG,OAAO,CAAA;AACnB;AAEA,SAAS,sBAAsB,OAAA,EAAgC;AAC7D,EAAA,IAAI,QAAQ,MAAA,KAAW,CAAA,IAAK,QAAQ,QAAA,CAAS,KAAK,GAAG,OAAO,IAAA;AAC5D,EAAA,IAAI,OAAA,CAAQ,WAAW,GAAG,CAAA,IAAK,kBAAkB,IAAA,CAAK,OAAO,GAAG,OAAO,IAAA;AAEvE,EAAA,MAAM,WAAW,OAAA,CAAQ,UAAA,CAAW,MAAM,GAAG,CAAA,CAAE,MAAM,GAAG,CAAA;AACxD,EAAA,MAAM,aAAuB,EAAC;AAC9B,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,IAAI,OAAA,KAAY,MAAM,OAAO,IAAA;AAC7B,IAAA,IAAI,OAAA,KAAY,EAAA,IAAM,OAAA,KAAY,GAAA,EAAK;AACvC,IAAA,UAAA,CAAW,KAAK,OAAO,CAAA;AAAA,EACzB;AACA,EAAA,OAAO,WAAW,MAAA,GAAS,CAAA,GAAI,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA;AACxD;AAEA,SAAS,WAAA,CACP,SACA,OAAA,EACmC;AACnC,EAAA,OAAO,GAAA,CAAI;AAAA,IACT,IAAA,EAAM,6BAAA;AAAA,IACN,QAAA,EAAU,6CAAA;AAAA,IACV,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,MAAM,OAAA,CAAQ,IAAA;AAAA,MACd,aAAa,OAAA,CAAQ,WAAA;AAAA,MACrB,QAAA,EAAU,OAAA;AAAA,MACV,UAAU,OAAA,CAAQ;AAAA;AACpB,GACD,CAAA;AACH;;;ACzCO,IAAM,SAAA,GAAN,cAAwB,KAAA,CAAM;AAAA,EAC1B,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EAET,YAAY,IAAA,EAKT;AACD,IAAA,KAAA,CAAM,CAAA,WAAA,EAAc,KAAK,IAAI,CAAA,YAAA,EAAe,KAAK,QAAQ,CAAA,QAAA,EAAW,IAAA,CAAK,IAAI,CAAA,CAAE,CAAA;AAC/E,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACZ,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,WAAW,IAAA,CAAK,QAAA;AACrB,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AACjB,IAAA,IAAA,CAAK,SAAS,IAAA,CAAK,MAAA;AAAA,EACrB;AACF,CAAA;;;AC/BA,SAAS,MAAM,KAAA,EAA8B;AAC3C,EAAA,OAAO,KAAA;AACT;AAEA,IAAM,WAAW,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAI,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,QAAA,CAAS,EAAE,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAEtF,SAAS,gBAAgB,KAAA,EAA2B;AAClD,EAAA,MAAM,CAAA,GAAI,QAAA;AAEV,EAAA,OAAO,CAAA,EAAG,EAAE,KAAA,CAAM,CAAC,CAAE,CAAC,CAAA,EAAG,EAAE,KAAA,CAAM,CAAC,CAAE,CAAC,CAAA,EAAG,EAAE,KAAA,CAAM,CAAC,CAAE,CAAC,CAAA,EAAG,EAAE,KAAA,CAAM,CAAC,CAAE,CAAC,CAAA,CAAA,EAAI,EAAE,KAAA,CAAM,CAAC,CAAE,CAAC,CAAA,EAAG,EAAE,KAAA,CAAM,CAAC,CAAE,CAAC,CAAA,CAAA,EAAI,EAAE,KAAA,CAAM,CAAC,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,KAAA,CAAM,CAAC,CAAE,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,MAAM,CAAC,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,MAAM,CAAC,CAAE,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,MAAM,EAAE,CAAE,CAAC,CAAA,EAAG,CAAA,CAAE,KAAA,CAAM,EAAE,CAAE,CAAC,GAAG,CAAA,CAAE,KAAA,CAAM,EAAE,CAAE,CAAC,GAAG,CAAA,CAAE,KAAA,CAAM,EAAE,CAAE,CAAC,GAAG,CAAA,CAAE,KAAA,CAAM,EAAE,CAAE,CAAC,GAAG,CAAA,CAAE,KAAA,CAAM,EAAE,CAAE,CAAC,CAAA,CAAA;AACnQ;AAEA,IAAM,OAAA,GAAU,iEAAA;AAET,SAAS,uBAAuB,KAAA,EAAiC;AACtE,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,OAAA,CAAQ,KAAK,KAAK,CAAA;AACxD;AAEA,SAAS,gBAAgB,QAAA,EAA8B;AACrD,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,EAAE,CAAA;AAC/B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,GAAI,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,KAAA;AACT;AAOO,IAAM,SAAA,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvB,MAAM,QAAA,EAAoD;AACxD,IAAA,IAAI,CAAC,sBAAA,CAAuB,QAAQ,CAAA,EAAG;AACrC,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,KAAA,EAAO,IAAI,SAAA,CAAU;AAAA,UACnB,IAAA,EAAM,qBAAA;AAAA,UACN,QAAA,EAAU,iCAAA;AAAA,UACV,IAAA,EAAM,kGAAA;AAAA,UACN,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,QAAA;AAAA,YACL,MAAA,EAAQ;AAAA;AACV,SACD;AAAA,OACH;AAAA,IACF;AACA,IAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,MAAM,eAAA,CAAgB,QAAQ,CAAC,CAAA,EAAE;AAAA,EAC7D,CAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,IAAA,EAAyB;AAC9B,IAAA,OAAO,gBAAgB,IAAI,CAAA;AAAA,EAC7B,CAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA,CAAO,GAAc,CAAA,EAAuB;AAC1C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,MAAA,IAAI,EAAE,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,GAAG,OAAO,KAAA;AAAA,IAC5B;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAA,GAAoB;AAClB,IAAA,MAAM,OAAO,SAAA,EAAU;AACvB,IAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,EAAE,CAAA;AAC/B,IAAA,KAAA,CAAM,GAAA,CAAI,KAAK,KAAK,CAAA;AACpB,IAAA,OAAO,MAAM,KAAK,CAAA;AAAA,EACpB;AACF,CAAA;;;AC1FO,IAAM,2BAAA,GAA8B;AAAA,EACzC,MAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,iBAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF;AAGO,IAAM,mCAAA,GAAsC;AAAA,EACjD,UAAA,EAAY,2BAAA;AAAA,EACZ,cAAA,EAAgB,IAAA;AAAA,EAChB,IAAA,EAAM,IAAA;AAAA,EACN,SAAA,EAAW,IAAA;AAAA,EACX,gBAAA,EAAkB,CAAC,eAAA,EAAiB,YAAA,EAAc,kBAAkB;AACtE;AAEO,SAAS,0BAA0B,KAAA,EAAiD;AACzF,EAAA,OAAQ,2BAAA,CAAkD,SAAS,KAAK,CAAA;AAC1E;AAgCA,SAAS,wBAAwB,KAAA,EAAoC;AACnE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,IAAI,QAAA,CAAS,KAAK,CAAA,IAAK,OAAO,MAAM,IAAA,KAAS,QAAA,SAAiB,KAAA,CAAM,IAAA;AACpE,EAAA,OAAO,MAAA;AACT;AAGO,SAAS,qCACd,UAAA,EACyC;AACzC,EAAA,OAAA,CAAQ,UAAA,IAAc,EAAC,EAAG,GAAA,CAAI,CAAC,SAAA,MAAe;AAAA,IAC5C,MAAM,SAAA,CAAU,IAAA;AAAA,IAChB,QAAQ,MAAA,CAAO,WAAA;AAAA,MACb,MAAA,CAAO,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA,CAAE,IAAI,CAAC,CAAC,SAAA,EAAW,KAAK,CAAA,KAAM;AAAA,QAC3D,SAAA;AAAA,QACA,wBAAwB,KAAK;AAAA,OAC9B;AAAA;AACH,GACF,CAAE,CAAA;AACJ;AA+XA,IAAM,iCAAA,GAAoC;AAAA,EACxC,IAAA,EAAM,QAAA;AAAA,EACN,SAAA,EAAW,CAAA;AAAA,EACX,SAAA,EAAW,GAAA;AAAA,EACX,OAAA,EAAS,qCAAA;AAAA,EACT,WAAA,EAAa;AACf,CAAA;AACA,IAAM,kCAAA,GAAqC;AAAA,EACzC,IAAA,EAAM,QAAA;AAAA,EACN,SAAA,EAAW,CAAA;AAAA,EACX,OAAA,EAAS,sBAAA;AAAA,EACT,WAAA,EAAa;AACf,CAAA;AACA,IAAM,iCAAA,GAAoC;AAAA,EACxC,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,WAAA,EAAa;AACf,CAAA;AACA,IAAM,+BAAA,GAAkC;AAAA,EACtC,IAAA,EAAM,QAAA;AAAA,EACN,SAAA,EAAW,EAAA;AAAA,EACX,SAAA,EAAW,EAAA;AAAA,EACX,OAAA,EAAS,gBAAA;AAAA,EACT,WAAA,EAAa;AACf,CAAA;AACA,IAAM,iCAAA,GAAoC,EAAE,IAAA,EAAM,QAAA,EAAU,WAAW,CAAA,EAAE;AACzE,IAAM,iCAAA,GAAoC;AAAA,EACxC,IAAA,EAAM,2BAAA;AAAA,EACN,WAAA,EAAa;AACf,CAAA;AACA,IAAM,2BAAA,GAA8B,EAAE,IAAA,EAAM,QAAA,EAAU,WAAW,CAAA,EAAE;AAEnE,SAAS,wBAAA,CACP,UAAA,EACA,QAAA,EACA,OAAA,GAA0E,EAAC,EAC3E;AACA,EAAA,MAAM,eAAA,GAAkB,CAAC,WAAA,EAAa,GAAG,QAAQ,CAAA;AACjD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,kCAAA;AAAA,MACZ,SAAA,EAAW,iCAAA;AAAA,MACX,SAAA,EAAW,iCAAA;AAAA,MACX,GAAG;AAAA,KACL;AAAA,IACA,QAAA,EAAU,eAAA;AAAA,IACV,GAAI,OAAA,CAAQ,OAAA,KAAY,KAAA,GACpB,EAAC,GACD;AAAA,MACE,KAAA,EAAO;AAAA,QACL,EAAE,QAAA,EAAU,CAAC,GAAG,eAAA,EAAiB,YAAY,CAAA,EAAE;AAAA,QAC/C,EAAE,QAAA,EAAU,CAAC,GAAG,eAAA,EAAiB,WAAW,CAAA,EAAE;AAAA,QAC9C,GAAI,OAAA,CAAQ,WAAA,KAAgB,KAAA,GAAQ,EAAC,GAAI,CAAC,EAAE,QAAA,EAAU,CAAC,GAAG,eAAA,EAAiB,MAAM,GAAG;AAAA;AACtF,KACF;AAAA,IACJ,oBAAA,EAAsB;AAAA,GACxB;AACF;AAEsD;AAAA,EACpD;AAAA,IACE,EAAA,EAAI,qBAAA;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,qBAAA;AAAA,IACP,UAAA,EAAY,wBAAA;AAAA,MACV;AAAA,QACE,IAAA,EAAM,2BAAA;AAAA,QACN,aAAA,EAAe;AAAA,UACb,IAAA,EAAM,QAAA;AAAA,UACN,UAAA,EAAY;AAAA,YACV,SAAA,EAAW,iCAAA;AAAA,YACX,IAAA,EAAM,iCAAA;AAAA,YACN,IAAA,EAAM;AAAA,WACR;AAAA,UACA,QAAA,EAAU,CAAC,WAAA,EAAa,MAAM,CAAA;AAAA,UAC9B,oBAAA,EAAsB;AAAA;AACxB,OACF;AAAA,MACA,CAAC,cAAc,eAAe,CAAA;AAAA,MAC9B,EAAE,SAAS,KAAA;AAAM;AACnB,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,yBAAA;AAAA,IACJ,IAAA,EAAM,YAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,yBAAA;AAAA,IACP,UAAA,EAAY,wBAAA;AAAA,MACV;AAAA,QACE,SAAA,EAAW,iCAAA;AAAA,QACX,SAAA,EAAW,iCAAA;AAAA,QACX,IAAA,EAAM,2BAAA;AAAA,QACN,gBAAA,EAAkB;AAAA,OACpB;AAAA,MACA,CAAC,WAAA,EAAa,WAAA,EAAa,kBAAkB;AAAA;AAC/C,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,iCAAA;AAAA,IACJ,IAAA,EAAM,oBAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,iCAAA;AAAA,IACP,UAAA,EAAY,wBAAA;AAAA,MACV;AAAA,QACE,KAAA,EAAO,iCAAA;AAAA,QACP,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAU,QAAQ,MAAA,EAAO;AAAA,QACvC,gBAAA,EAAkB;AAAA,OACpB;AAAA,MACA,CAAC,OAAA,EAAS,MAAA,EAAQ,kBAAkB,CAAA;AAAA,MACpC,EAAE,aAAa,KAAA;AAAM;AACvB,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,qBAAA;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,kCAAA;AAAA,IACP,UAAA,EAAY,wBAAA;AAAA,MACV;AAAA,QACE,MAAA,EAAQ;AAAA,UACN,KAAA,EAAO;AAAA,YACL;AAAA,cACE,IAAA,EAAM,QAAA;AAAA,cACN,YAAY,EAAE,IAAA,EAAM,EAAE,KAAA,EAAO,WAAU,EAAE;AAAA,cACzC,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,cACjB,oBAAA,EAAsB;AAAA,aACxB;AAAA,YACA;AAAA,cACE,IAAA,EAAM,QAAA;AAAA,cACN,UAAA,EAAY;AAAA,gBACV,IAAA,EAAM,EAAE,KAAA,EAAO,QAAA,EAAS;AAAA,gBACxB,SAAA,EAAW;AAAA,eACb;AAAA,cACA,QAAA,EAAU,CAAC,MAAA,EAAQ,WAAW,CAAA;AAAA,cAC9B,oBAAA,EAAsB;AAAA;AACxB;AACF,SACF;AAAA,QACA,IAAA,EAAM,2BAAA;AAAA,QACN,gBAAA,EAAkB;AAAA,OACpB;AAAA,MACA,CAAC,QAAA,EAAU,MAAA,EAAQ,kBAAkB;AAAA;AACvC,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,4BAAA;AAAA,IACJ,IAAA,EAAM,eAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,4BAAA;AAAA,IACP,WAAA,EAAa,IAAA;AAAA,IACb,UAAA,EAAY,wBAAA;AAAA,MACV;AAAA,QACE,SAAA,EAAW,iCAAA;AAAA,QACX,mBAAA,EAAqB,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,UAAS,EAAE;AAAA,QAChE,gBAAA,EAAkB;AAAA,OACpB;AAAA,MACA,CAAC,aAAa,kBAAkB;AAAA;AAClC,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,oBAAA;AAAA,IACJ,IAAA,EAAM,OAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,oBAAA;AAAA,IACP,UAAA,EAAY,wBAAA;AAAA,MACV;AAAA,QACE,UAAA,EAAY,kCAAA;AAAA,QACZ,gBAAA,EAAkB;AAAA,OACpB;AAAA,MACA,CAAC,cAAc,kBAAkB;AAAA;AACnC,GACF;AAAA,EACA;AAAA,IACE,EAAA,EAAI,sBAAA;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,sBAAA;AAAA,IACP,UAAA,EAAY,wBAAA,CAAyB,EAAE,gBAAA,EAAkB,iCAAgC,EAAG;AAAA,MAC1F;AAAA,KACD;AAAA,GACH;AAAA,EACA;AAAA,IACE,EAAA,EAAI,wBAAA;AAAA,IACJ,IAAA,EAAM,WAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,wBAAA;AAAA,IACP,UAAA,EAAY,wBAAA,CAAyB,EAAE,gBAAA,EAAkB,iCAAgC,EAAG;AAAA,MAC1F;AAAA,KACD;AAAA;AAEL;AAyEA,SAAS,OAAO,KAAA,EAAwB;AACtC,EAAA,IAAI,KAAA,KAAU,MAAM,OAAO,MAAA;AAC3B,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,OAAA;AACjC,EAAA,IAAI,YAAY,MAAA,CAAO,KAAK,CAAA,EAAG,OAAO,MAAM,WAAA,CAAY,IAAA;AACxD,EAAA,OAAO,OAAO,KAAA;AAChB;AAEA,SAAS,OAAA,CACP,YAAA,EACA,QAAA,EACA,KAAA,EACA,UAAA,EACoC;AACpC,EAAA,OAAOT,GAAAA,CAAI;AAAA,IACT,IAAA,EAAM,gCAAA;AAAA,IACN,QAAA;AAAA,IACA,IAAA,EAAM,gFAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,GAAI,UAAA,KAAe,MAAA,GAAY,EAAC,GAAI,EAAE,UAAA,EAAW;AAAA,MACjD,YAAA;AAAA,MACA,MAAA,EAAQ,OAAO,KAAK;AAAA;AACtB,GACD,CAAA;AACH;AAEO,SAAS,SAAS,KAAA,EAAkD;AACzE,EAAA,OAAO,KAAA,KAAU,QAAQ,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,YAAY,KAAA,EAAoC;AACvD,EAAA,OAAO,KAAA,YAAiB,UAAA,IAAc,KAAA,CAAM,UAAA,KAAe,EAAA;AAC7D;AAEA,SAAS,QAAQ,IAAA,EAAyB;AACxC,EAAA,OAAO,SAAA,CAAe,OAAO,IAAI,CAAA;AACnC;AAEA,SAAS,iBACP,UAAA,EACoC;AACpC,EAAA,MAAM,SAAS,MAAA,CAAO,WAAA;AAAA,IACpB,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,CAAE,IAAI,CAAC,CAACW,UAAAA,EAAW,UAAU,CAAA,KAAM;AAAA,MACjEA,UAAAA;AAAA,MACA,MAAA,CAAO,MAAA,CAAO,EAAE,GAAG,UAAA,EAAY,MAAM,UAAA,CAAW,IAAA,CAAK,KAAA,EAAM,EAAgB;AAAA,KAC5E;AAAA,GACH;AACA,EAAA,MAAM,iBAAiB,MAAA,CAAO,WAAA;AAAA,IAC5B,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,cAAc,CAAA,CAAE,IAAI,CAAC,CAAC,KAAA,EAAO,IAAI,CAAA,KAAM;AAAA,MAC/D,KAAA;AAAA,MACA,KAAK,KAAA;AAAM,KACZ;AAAA,GACH;AACA,EAAA,MAAM,eAAA,GACJ,UAAA,CAAW,eAAA,KAAoB,MAAA,GAC3B,SACA,MAAA,CAAO,MAAA;AAAA,IACL,oCAAA,CAAqC,UAAA,CAAW,eAAe,CAAA,CAAE,GAAA;AAAA,MAAI,CAAC,SAAA,KACpE,MAAA,CAAO,MAAA,CAAO;AAAA,QACZ,GAAG,SAAA;AAAA,QACH,QAAQ,MAAA,CAAO,MAAA,CAAO,EAAE,GAAG,SAAA,CAAU,QAAQ;AAAA,OAC9C;AAAA;AACH,GACF;AACN,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,GAAG,UAAA;AAAA,IACH,SAAA,EAAW,UAAA,CAAW,SAAA,CAAU,KAAA,EAAM;AAAA,IACtC,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAAA,IAC5B,cAAA,EAAgB,MAAA,CAAO,MAAA,CAAO,cAAc,CAAA;AAAA,IAC5C,GAAI,eAAA,KAAoB,MAAA,GAAY,EAAC,GAAI,EAAE,eAAA;AAAgB,GAC5D,CAAA;AACH;AAEO,SAAS,gCAAA,CACd,OACA,UAAA,EACiE;AACjE,EAAA,IAAI,CAAC,SAAS,KAAK,CAAA;AACjB,IAAA,OAAO,OAAA,CAAQ,GAAA,EAAK,oCAAA,EAAsC,KAAA,EAAO,UAAU,CAAA;AAC7E,EAAA,IAAI,KAAA,CAAM,kBAAkB,OAAA,EAAS;AACnC,IAAA,OAAO,OAAA,CAAQ,iBAAA,EAAmB,qBAAA,EAAuB,KAAA,CAAM,eAAe,UAAU,CAAA;AAAA,EAC1F;AACA,EAAA,IAAI,CAAC,WAAA,CAAY,KAAA,CAAM,SAAS,CAAA,EAAG;AACjC,IAAA,OAAO,OAAA,CAAQ,aAAA,EAAe,qBAAA,EAAuB,KAAA,CAAM,WAAW,UAAU,CAAA;AAAA,EAClF;AACA,EAAA,IAAI,MAAM,IAAA,KAAS,MAAA,IAAa,OAAO,KAAA,CAAM,SAAS,QAAA,EAAU;AAC9D,IAAA,OAAO,OAAA,CAAQ,QAAA,EAAU,uBAAA,EAAyB,KAAA,CAAM,MAAM,UAAU,CAAA;AAAA,EAC1E;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,IAAK,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AACrE,IAAA,OAAO,OAAA;AAAA,MACL,UAAA;AAAA,MACA,4CAAA;AAAA,MACA,KAAA,CAAM,MAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,KAAA,CAAM,cAAc,CAAA,EAAG;AACnC,IAAA,OAAO,OAAA;AAAA,MACL,kBAAA;AAAA,MACA,8BAAA;AAAA,MACA,KAAA,CAAM,cAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,oBAAoB,MAAA,EAAW;AACvC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,eAAe,CAAA,EAAG;AACzC,MAAA,OAAO,OAAA;AAAA,QACL,mBAAA;AAAA,QACA,kEAAA;AAAA,QACA,KAAA,CAAM,eAAA;AAAA,QACN;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,cAAA,uBAAqB,GAAA,EAAY;AACvC,IAAA,KAAA,MAAW,CAAC,cAAA,EAAgB,SAAS,KAAK,KAAA,CAAM,eAAA,CAAgB,SAAQ,EAAG;AACzE,MAAA,IAAI,CAAC,QAAA,CAAS,SAAS,CAAA,EAAG;AACxB,QAAA,OAAO,OAAA;AAAA,UACL,qBAAqB,cAAc,CAAA,CAAA,CAAA;AAAA,UACnC,yCAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,OAAO,UAAU,IAAA,KAAS,QAAA,IAAY,UAAU,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,EAAG;AAC5E,QAAA,OAAO,OAAA;AAAA,UACL,qBAAqB,cAAc,CAAA,MAAA,CAAA;AAAA,UACnC,4BAAA;AAAA,UACA,SAAA,CAAU,IAAA;AAAA,UACV;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,cAAA,CAAe,GAAA,CAAI,SAAA,CAAU,IAAI,CAAA,EAAG;AACtC,QAAA,OAAO,OAAA;AAAA,UACL,qBAAqB,cAAc,CAAA,MAAA,CAAA;AAAA,UACnC,wDAAA;AAAA,UACA,SAAA,CAAU,IAAA;AAAA,UACV;AAAA,SACF;AAAA,MACF;AACA,MAAA,cAAA,CAAe,GAAA,CAAI,UAAU,IAAI,CAAA;AACjC,MAAA,IAAI,CAAC,QAAA,CAAS,SAAA,CAAU,MAAM,CAAA,EAAG;AAC/B,QAAA,OAAO,OAAA;AAAA,UACL,qBAAqB,cAAc,CAAA,QAAA,CAAA;AAAA,UACnC,oCAAA;AAAA,UACA,SAAA,CAAU,MAAA;AAAA,UACV;AAAA,SACF;AAAA,MACF;AACA,MAAA,KAAA,MAAW,CAAC,WAAW,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA,EAAG;AACjE,QAAA,MAAM,IAAA,GAAO,wBAAwB,KAAK,CAAA;AAC1C,QAAA,IAAI,SAAA,CAAU,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,IAAK,IAAA,KAAS,MAAA,IAAa,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,EAAG;AACnF,UAAA,OAAO,OAAA;AAAA,YACL,qBAAqB,cAAc,CAAA,QAAA,CAAA;AAAA,YACnC,gDAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,OAAO,KAAA,CAAM,KAAA,KAAU,UAAA,EAAY;AACrC,IAAA,OAAO,OAAA,CAAQ,SAAA,EAAW,+BAAA,EAAiC,KAAA,CAAM,OAAO,UAAU,CAAA;AAAA,EACpF;AAEA,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA;AAC3C,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAY;AACnC,EAAA,KAAA,MAAW,CAACA,YAAW,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA,EAAG;AAClE,IAAA,IAAIA,UAAAA,CAAU,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,EAAG;AACjC,MAAA,OAAO,OAAA,CAAQ,UAAA,EAAY,iCAAA,EAAmCA,UAAAA,EAAW,UAAU,CAAA;AAAA,IACrF;AACA,IAAA,IAAI,CAAC,QAAA,CAAS,UAAU,CAAA,EAAG;AACzB,MAAA,OAAO,OAAA;AAAA,QACL,CAAA,SAAA,EAAY,IAAA,CAAK,SAAA,CAAUA,UAAS,CAAC,CAAA,CAAA,CAAA;AAAA,QACrC,qBAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,CAAC,WAAA,CAAY,UAAA,CAAW,IAAI,CAAA,EAAG;AACjC,MAAA,OAAO,OAAA;AAAA,QACL,CAAA,SAAA,EAAY,IAAA,CAAK,SAAA,CAAUA,UAAS,CAAC,CAAA,MAAA,CAAA;AAAA,QACrC,qBAAA;AAAA,QACA,UAAA,CAAW,IAAA;AAAA,QACX;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,OAAO,WAAW,IAAA,KAAS,QAAA,IAAY,CAAC,yBAAA,CAA0B,UAAA,CAAW,IAAI,CAAA,EAAG;AACtF,MAAA,OAAO,OAAA;AAAA,QACL,CAAA,SAAA,EAAY,IAAA,CAAK,SAAA,CAAUA,UAAS,CAAC,CAAA,MAAA,CAAA;AAAA,QACrC,oCAAA;AAAA,QACA,UAAA,CAAW,IAAA;AAAA,QACX;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,WAAW,IAAA,KAAS,MAAA,IAAa,OAAO,UAAA,CAAW,SAAS,QAAA,EAAU;AACxE,MAAA,OAAO,OAAA;AAAA,QACL,CAAA,SAAA,EAAY,IAAA,CAAK,SAAA,CAAUA,UAAS,CAAC,CAAA,MAAA,CAAA;AAAA,QACrC,uBAAA;AAAA,QACA,UAAA,CAAW,IAAA;AAAA,QACX;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA;AACpC,IAAA,IAAI,IAAA,KAAS,WAAA,IAAe,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA,EAAG;AAChD,MAAA,OAAO,OAAA;AAAA,QACL,CAAA,SAAA,EAAY,IAAA,CAAK,SAAA,CAAUA,UAAS,CAAC,CAAA,MAAA,CAAA;AAAA,QACrC,8DAAA;AAAA,QACA,UAAA,CAAW,IAAA;AAAA,QACX;AAAA,OACF;AAAA,IACF;AACA,IAAA,UAAA,CAAW,IAAI,IAAI,CAAA;AAAA,EACrB;AAEA,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,EAAA,KAAA,MAAW,CAAC,OAAO,SAAS,CAAA,IAAK,OAAO,OAAA,CAAQ,KAAA,CAAM,cAAc,CAAA,EAAG;AACrE,IAAA,IAAI,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,EAAG;AAC7B,MAAA,OAAO,OAAA,CAAQ,kBAAA,EAAoB,6BAAA,EAA+B,KAAA,EAAO,UAAU,CAAA;AAAA,IACrF;AACA,IAAA,IAAI,CAAC,WAAA,CAAY,SAAS,CAAA,EAAG;AAC3B,MAAA,OAAO,OAAA;AAAA,QACL,CAAA,iBAAA,EAAoB,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,QACzC,qBAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,QAAQ,SAAS,CAAA;AAC9B,IAAA,IAAI,IAAA,KAAS,eAAe,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA,IAAK,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA,EAAG;AAC3E,MAAA,OAAO,OAAA;AAAA,QACL,CAAA,iBAAA,EAAoB,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,QACzC,iDAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,aAAA,CAAc,IAAI,IAAI,CAAA;AAAA,EACxB;AAEA,EAAA,OAAOC,EAAAA,CAAG,gBAAA,CAAiB,KAA4C,CAAC,CAAA;AAC1E;AAEO,SAAS,yBAAA,CACd,YACA,MAAA,EACwB;AACxB,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,MAAM,EAC/C,IAAA,CAAK,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,aAAA,CAAc,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,CAACD,UAAAA,EAAW,UAAU,CAAA,EAAG,WAAA,MAAiB;AAAA,IAC9C,IAAA,EAAM,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA;AAAA,IAC7B,WAAA;AAAA,IACA,SAAA,EAAAA,UAAAA;AAAA,IACA,MAAM,UAAA,CAAW,IAAA;AAAA,IACjB,GAAI,WAAW,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA,EAAM,UAAA,CAAW,IAAA;AAAK,GACnE,CAAE,CAAA;AACJ,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,OAAA,CAAQ,UAAA,CAAW,cAAc,CAAA,CAC5D,IAAA,CAAK,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,aAAA,CAAc,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,CAAC,KAAA,EAAO,IAAI,CAAA,MAAO,EAAE,KAAA,EAAO,IAAA,EAAM,OAAA,CAAQ,IAAI,GAAE,CAAE,CAAA;AAC1D,EAAA,OAAO;AAAA,IACL,aAAA,EAAe,OAAA;AAAA,IACf,IAAA,EAAM,wBAAA;AAAA,IACN,SAAA,EAAW,OAAA,CAAQ,UAAA,CAAW,SAAS,CAAA;AAAA,IACvC,GAAI,WAAW,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA,EAAM,UAAA,CAAW,IAAA,EAAK;AAAA,IACjE,QAAA,EAAU,SAAA;AAAA,IACV,MAAA;AAAA,IACA,cAAA,EAAgB,EAAE,eAAA,EAAiB,OAAA,EAAS,cAAA,EAAe;AAAA,IAC3D;AAAA,GACF;AACF;;;AC19BO,SAAS,oBAAA,CACd,OAAA,EACA,SAAA,EACA,SAAA,EACA;AACA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAY,oBAAA,CAAqB,EAAE,OAAA,EAAS,SAAA,EAAW,WAAW;AAAA,GACpE;AACF;AAEO,SAAS,oBAAA,CACd,SACA,SAAA,EACA;AACA,EAAA,OAAO,uBAAA,CAAwB,OAAA,EAAS,SAAA,EAAW,SAAS,CAAA;AAC9D;AAEA,SAAS,uBAAA,CACP,OAAA,EACA,SAAA,EACA,SAAA,EACA;AACA,EAAA,MAAM,UAAA,GAAa,oBAAA,CAAqB,OAAA,EAAS,SAAA,EAAW,SAAS,CAAA;AACrE,EAAA,OAAO,EAAE,GAAG,UAAA,EAAY,UAAA,EAAW;AACrC;AAyBA,SAAS,kBAAA,CACP,IAAA,EACA,IAAA,EACA,UAAA,EACsC;AACtC,EAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,CAAK,MAAA,KAAW,GAAG,OAAO,MAAA;AACpD,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,IACxB,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,EAAS,IAAI,IAAA,EAAK;AAAA,IAChC,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,IAAI,GAAA,EAAI;AAAA,IAC7B,IAAA,EAAM,YAAA;AAAA,IACN,MAAA,EAAQ,EAAE,QAAA,EAAU,UAAA,EAAoB;AAAA,IACxC;AAAA,GACF,CAAE,CAAA;AACJ;AAEA,SAAS,cAAA,CACP,UACA,MAAA,EAiBA;AACA,EAAA,MAAM,UAAA,GACJ,SAAS,UAAA,IACR;AAAA,IACC,QAAA,EAAU,QAAA,CAAS,QAAA,IAAY,QAAA,CAAS,QAAA,IAAY,QAAA;AAAA,IACpD,OAAA,EAAS,MAAA,CAAO,QAAA,CAAS,aAAa;AAAA,GACxC;AACF,EAAA,MAAM,SAAA,GAAY,OAAO,SAAA,IAAa,kBAAA,CAAmB,OAAO,IAAA,EAAM,MAAA,CAAO,MAAM,UAAU,CAAA;AAC7F,EAAA,MAAM,QAAA,GAAW,+BAAA,CAAgC,MAAA,CAAO,IAAI,CAAA;AAC5D,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,GAAI,SAAS,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,QAAA,CAAS,SAAA,EAAU;AAAA,IAC5E,GAAI,SAAS,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,EAAE,QAAA,EAAU,QAAA,CAAS,QAAA,EAAS;AAAA,IACzE,GAAI,OAAO,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,MAAA,CAAO,SAAA,EAAU;AAAA,IACxE,GAAI,OAAO,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA,EAAa,MAAA,CAAO,WAAA,EAAY;AAAA,IAC9E,GAAI,SAAS,eAAA,KAAoB,MAAA,GAC7B,EAAC,GACD,EAAE,eAAA,EAAiB,QAAA,CAAS,eAAA,EAAgB;AAAA,IAChD,GAAI,SAAS,yBAAA,KAA8B,MAAA,IAAa,OAAO,SAAA,KAAc,MAAA,GACzE,EAAC,GACD;AAAA,MACE,yBAAA,EAA2B,SAAS,yBAAA,CAA0B,MAAA;AAAA,QAC5D,CAAC,UAAA,KAAe,UAAA,CAAW,SAAA,KAAc,MAAA,CAAO;AAAA;AAClD,KACF;AAAA,IACJ,GAAI,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAU;AAAA,IAC/C,GAAI,SAAS,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA,EAAa,QAAA,CAAS,WAAA,EAAY;AAAA,IAClF,GAAI,MAAA,CAAO,SAAA,KAAc,MAAA,IAAa,QAAA,CAAS,EAAA,KAAO,MAAA,GAClD,EAAC,GACD,EAAE,SAAA,EAAW,MAAA,CAAO,aAAa,QAAA,EAAS;AAAA,IAC9C,GAAG,uBAAA,CAAwB,iBAAA,EAAmB,QAAA,EAAU,SAAS;AAAA,GACnE;AACF;AAGO,SAAS,6BAAA,CACd,QAAA,EACA,UAAA,EACAE,WAAAA,EACA,SACA,OAAA,EACkB;AAClB,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,MAAW;AAAA,IACrC,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,UAAA,EAAAA,WAAAA;AAAA,IACA,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,UAAA;AAAA,IACA,GAAG,cAAA,CAAe,QAAA,EAAU,MAAM,CAAA;AAAA,IAClC,IAAK,OAAA,GAAU,MAAA,EAAQ,KAAK,CAAA,IAAK,OAAO,IAAA,MAAU,MAAA,GAC9C,EAAC,GACD,EAAE,IAAA,EAAM,OAAA,GAAU,QAAQ,KAAK,CAAA,IAAK,OAAO,IAAA;AAAK,GACtD,CAAE,CAAA;AACJ;AAGO,SAAS,8BACd,OAAA,EACoD;AACpD,EAAA,OAAO,QAAQ,IAAA,CAAK,CAAC,WAAW,yBAAA,CAA0B,MAAA,CAAO,IAAI,CAAC,CAAA;AACxE;AAuBO,SAAS,qBAAA,CACd,SACAA,WAAAA,EACkB;AAClB,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,KAAU;AAC5B,IAAA,MAAM,SAAA,GAAY,MAAM,SAAA,IAAa,QAAA;AACrC,IAAA,MAAM,SAAA,GAAY,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,SAAA;AACvD,IAAA,MAAM,QAAA,GAAW,+BAAA,CAAgC,KAAA,CAAM,IAAI,CAAA;AAC3D,IAAA,MAAM,aACJ,KAAA,CAAM,UAAA,IAAe,EAAE,QAAA,EAAU,MAAA,EAAQ,SAAS,SAAA,EAAU;AAC9D,IAAA,MAAM,SAAA,GAAY,MAAM,SAAA,IAAa,kBAAA,CAAmB,MAAM,IAAA,EAAM,KAAA,CAAM,MAAM,UAAU,CAAA;AAC1F,IAAA,OAAO;AAAA,MACL,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,UAAA,EAAAA,WAAAA;AAAA,MACA,GAAI,MAAM,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK;AAAA,MACvD,GAAI,MAAM,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK;AAAA,MACvD,GAAI,MAAM,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,KAAA,CAAM,SAAA,EAAU;AAAA,MACtE,GAAI,MAAM,UAAA,KAAe,MAAA,GAAY,EAAC,GAAI,EAAE,UAAA,EAAY,KAAA,CAAM,UAAA,EAAW;AAAA,MACzE,GAAI,MAAM,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,EAAS;AAAA,MACnE,GAAI,MAAM,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,KAAA,CAAM,SAAA,EAAU;AAAA,MACtE,GAAI,MAAM,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA,EAAa,KAAA,CAAM,WAAA,EAAY;AAAA,MAC5E,GAAI,MAAM,eAAA,KAAoB,MAAA,GAAY,EAAC,GAAI,EAAE,eAAA,EAAiB,KAAA,CAAM,eAAA,EAAgB;AAAA,MACxF,GAAI,MAAM,yBAAA,KAA8B,MAAA,GACpC,EAAC,GACD,EAAE,yBAAA,EAA2B,KAAA,CAAM,yBAAA,EAA0B;AAAA,MACjE,GAAI,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAU;AAAA,MAC/C,GAAI,MAAM,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA,EAAa,KAAA,CAAM,WAAA,EAAY;AAAA,MAC5E,GAAI,MAAM,cAAA,KAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,cAAA,EAAgB,KAAA,CAAM,cAAA,EAAe;AAAA,MACrF,GAAI,KAAA,CAAM,SAAA,KAAc,MAAA,IAAa,QAAA,CAAS,EAAA,KAAO,MAAA,GACjD,EAAC,GACD,EAAE,SAAA,EAAW,KAAA,CAAM,aAAa,QAAA,EAAS;AAAA,MAC7C,GAAG,uBAAA,CAAwB,gBAAA,EAAkB,SAAA,EAAW,SAAS;AAAA,KACnE;AAAA,EACF,CAAC,CAAA;AACH;AAWO,SAAS,yBAAA,CACd,OACA,UAAA,EACgB;AAChB,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,GAAI,UAAA,CAAW,WAAA,KAAgB,MAAA,GAC3B,KACA,EAAE,UAAA,EAAY,UAAA,CAAW,WAAA,CAAY,UAAA,EAAW;AAAA,IACpD,YAAY,UAAA,CAAW,UAAA;AAAA,IACvB,GAAI,WAAW,cAAA,KAAmB,MAAA,GAC9B,EAAC,GACD,EAAE,cAAA,EAAgB,UAAA,CAAW,cAAA,EAAe;AAAA,IAChD,UAAU,UAAA,CAAW,QAAA;AAAA,IACrB,GAAI,WAAW,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA,EAAa,UAAA,CAAW,WAAA,EAAY;AAAA,IACtF,GAAG,oBAAA,CAAqB,iBAAA,EAAmB,QAAQ,CAAA;AAAA,IACnD,MAAM,UAAA,CAAW;AAAA,GACnB;AACF;AAiBA,SAAS,sBAAA,CACP,WACA,QAAA,EAC+B;AAC/B,EAAA,MAAM,UAAA,GAAyC;AAAA,IAC7C,IAAA,EAAM,uBAAA;AAAA,IACN,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,IAAI,SAAA,EAAU;AAAA,IACxC,QAAA;AAAA,IACA,IAAA,EAAM,+DAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACb;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAO,UAAA,EAAW;AACxC;AAEA,SAAS,8BACP,KAAA,EACwC;AACxC,EAAA,IACE,KAAA,CAAM,WAAA,KAAgB,MAAA,IACtB,KAAA,CAAM,KAAK,MAAA,KAAW,CAAA,IACtB,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA,IACtB,KAAA,CAAM,UAAA,CAAW,MAAA,KAAW,KAC5B,KAAA,CAAM,OAAA,CAAQ,MAAA,KAAW,CAAA,IACzB,CAAC,MAAA,CAAO,SAAA,CAAU,KAAA,CAAM,UAAU,KAClC,KAAA,CAAM,UAAA,GAAa,CAAA,IACnB,KAAA,CAAM,OAAO,MAAA,KAAW,CAAA,IACxB,KAAA,CAAM,eAAA,CAAgB,WAAW,CAAA,EACjC;AACA,IAAA,OAAO,sBAAA;AAAA,MACL,KAAA,CAAM,IAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,iBAAA;AACjC,EAAA,MAAM,SAAA,GAAY,MAAM,SAAA,IAAa,QAAA;AACrC,EAAA,MAAM,SAAA,GAAY,MAAM,SAAA,IAAa,SAAA;AACrC,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,iBAAiB,KAAA,CAAM,eAAA;AAAA,MACvB,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,UAAA,EAAY,KAAA,CAAM,UAAA,IAAc,KAAA,CAAM,UAAA;AAAA,MACtC,OAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,EAAY;AAAA,QACV,OAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,YAAY,oBAAA,CAAqB,EAAE,OAAA,EAAS,SAAA,EAAW,WAAW;AAAA;AACpE;AACF,GACF;AACF;AAGO,SAAS,yBACd,KAAA,EACwC;AACxC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,OAAO,uBAAuB,KAAA,CAAM,CAAC,CAAA,EAAG,IAAA,IAAQ,WAAW,yBAAyB,CAAA;AAAA,IACtF;AACA,IAAA,MAAM,CAAC,GAAG,CAAA,GAAI,KAAA;AACd,IAAA,IAAI,GAAA,KAAQ,MAAA,EAAW,OAAO,sBAAA,CAAuB,WAAW,yBAAyB,CAAA;AACzF,IAAA,OAAO,8BAA8B,GAAG,CAAA;AAAA,EAC1C;AACA,EAAA,OAAO,8BAA8B,KAA+B,CAAA;AACtE;AC/UO,SAAS,gBAAgB,GAAA,EAAoC;AAClE,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI;AACF,IAAA,GAAA,GAAM,IAAA,CAAK,MAAM,YAAA,CAAa,IAAA,CAAK,KAAK,cAAc,CAAA,EAAG,OAAO,CAAC,CAAA;AAAA,EACnE,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAE,KAAA,EAAO,CAAC,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAC,CAAA,EAAG,KAAA,EAAO,EAAC,EAAE;AAAA,EACnD;AAEA,EAAA,MAAM,MAAA,GAAS,IAAI,OAAA,EAAS,MAAA;AAE5B,EAAA,MAAM,WAAW,MAAA,EAAQ,KAAA;AACzB,EAAA,MAAM,KAAA,GACJ,MAAM,OAAA,CAAQ,QAAQ,KAAK,QAAA,CAAS,MAAA,GAAS,IACxC,QAAA,CAAsB,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,KAAK,CAAC,CAAC,IAC9C,CAAC,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAC,CAAA;AAE1B,EAAA,MAAM,WAAW,MAAA,EAAQ,KAAA;AACzB,EAAA,MAAM,QAAgC,EAAC;AACvC,EAAA,IAAI,aAAa,MAAA,IAAa,QAAA,KAAa,IAAA,IAAQ,OAAO,aAAa,QAAA,EAAU;AAC/E,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,GAAG,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAmC,CAAA,EAAG;AAC7E,MAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,QAAA,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA,CAAK,GAAA,EAAK,GAAG,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,OAAO,KAAA,EAAM;AACxB;;;AC5BA,SAAS,SAAS,CAAA,EAAmB;AACnC,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AACvC,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,WAAA,CAAY,GAAG,CAAA,EAAG,OAAA,CAAQ,WAAA,CAAY,IAAI,CAAC,CAAA;AACxE,EAAA,OAAO,QAAQ,EAAA,GAAK,OAAA,GAAU,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAC,CAAA;AACrD;AAeO,SAAS,eAAA,CACd,WAAA,EACA,UAAA,EACA,UAAA,EACQ;AACR,EAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,IAAA,OAAO,UAAA,IAAc,EAAA;AAAA,EACvB;AACA,EAAA,IAAI,eAAe,CAAA,EAAG;AACpB,IAAA,OAAO,SAAS,WAAW,CAAA;AAAA,EAC7B;AACA,EAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,OAAO,SAAS,WAAW,CAAA;AAC7B;ACnCA,SAAS,iBAAiB,YAAA,EAA8B;AACtD,EAAA,OAAO,YAAA,CAAa,OAAA,CAAQ,eAAA,EAAiB,EAAE,CAAA;AACjD;AAEA,IAAM,WAAA,GAAc,kBAAA;AAEpB,SAAS,YAAA,CAAa,SAAiB,QAAA,EAA2B;AAChE,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,QAAA,CAAS,OAAA,EAAS,QAAQ,CAAA;AAC5C,EAAA,OAAO,IAAI,UAAA,CAAW,IAAI,CAAA,IAAK,KAAA,CAAM,WAAW,GAAG,CAAA;AACrD;AAEO,SAAS,kBAAA,CACd,QAAA,EACA,MAAA,EACA,KAAA,EAC2B;AAC3B,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,MAAM,OAAA,GAAU,QAAQ,QAAQ,CAAA;AAChC,IAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,QAAA,EAAU,CAAC,CAAA;AAC5C,IAAA,MAAM,OAAA,GAAU,iBAAiB,QAAQ,CAAA;AACzC,IAAA,OAAOC,EAAA,CAAS,OAAA,CAAQ,OAAA,EAAS,OAAO,CAAC,CAAA;AAAA,EAC3C;AAEA,EAAA,IAAI,MAAA,CAAO,UAAA,CAAW,GAAG,CAAA,EAAG;AAC1B,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,WAAW,CAAA;AACtC,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAOC,GAAA;AAAA,QACL,IAAI,SAAA,CAAU;AAAA,UACZ,IAAA,EAAM,yBAAA;AAAA,UACN,QAAA,EAAU,iCAAA;AAAA,UACV,IAAA,EAAM,iBAAiB,yBAAyB,CAAA;AAAA,UAChD,MAAA,EAAQ;AAAA,YACN,IAAA,EAAM,yBAAA;AAAA,YACN,MAAA,EAAQ,QAAA;AAAA,YACR,SAAA,EAAW,MAAA;AAAA,YACX,cAAA,EAAgB;AAAA;AAClB,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,MAAM,GAAG,IAAA,EAAM,IAAI,CAAA,GAAI,KAAA;AACvB,IAAA,MAAM,OAAA,GAAU,MAAM,IAAI,CAAA;AAE1B,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,OAAOA,GAAA;AAAA,QACL,IAAI,SAAA,CAAU;AAAA,UACZ,IAAA,EAAM,mBAAA;AAAA,UACN,QAAA,EAAU,sDAAA;AAAA,UACV,IAAA,EAAM,iBAAiB,mBAAmB,CAAA;AAAA,UAC1C,MAAA,EAAQ;AAAA,YACN,IAAA,EAAM,mBAAA;AAAA,YACN,QAAA,EAAU,IAAA;AAAA,YACV,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,KAAK;AAAA;AAC/B,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,OAAA,EAAS,IAAI,CAAA;AAEtC,IAAA,IAAI,YAAA,CAAa,OAAA,EAAS,QAAQ,CAAA,EAAG;AACnC,MAAA,OAAOA,GAAA;AAAA,QACL,IAAI,SAAA,CAAU;AAAA,UACZ,IAAA,EAAM,yBAAA;AAAA,UACN,QAAA,EAAU,uDAAA;AAAA,UACV,IAAA,EAAM,iBAAiB,yBAAyB,CAAA;AAAA,UAChD,MAAA,EAAQ;AAAA,YACN,IAAA,EAAM,yBAAA;AAAA,YACN,MAAA,EAAQ,QAAA;AAAA,YACR,SAAA,EAAW,MAAA;AAAA,YACX,cAAA,EAAgB;AAAA;AAClB,SACD;AAAA,OACH;AAAA,IACF;AAEA,IAAA,OAAOD,GAAS,QAAQ,CAAA;AAAA,EAC1B;AAEA,EAAA,OAAOA,GAAS,OAAA,CAAQ,OAAA,CAAQ,QAAQ,CAAA,EAAG,MAAM,CAAC,CAAA;AACpD;AC5EA,SAASE,UAAS,KAAA,EAAyC;AACzD,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,QAAQ,KAAA,EAAiC;AAChD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,MAAA,GAAS,CAAA;AACrD;AAEA,SAAS,MACP,IAAA,EACA,SAAA,EACA,UACA,IAAA,EACAC,OAAAA,EACA,YAAiC,UAAA,EACF;AAC/B,EAAA,MAAM,OAAA,GAA2B,EAAE,IAAA,EAAM,OAAA,EAAS,IAAI,SAAA,EAAU;AAChE,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,KAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,IAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAIA,OAAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,QAAAA,OAAAA,EAAO;AAAA,MACzC,IAAA;AAAA,MACA;AAAA;AACF,GACF;AACF;AAEA,SAAS,aAAA,CACP,OACA,SAAA,EACwC;AACxC,EAAA,IAAI,eAAe,KAAA,IAAS,CAAC,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,EAAG;AACrD,IAAA,OAAO,KAAA;AAAA,MACL,uBAAA;AAAA,MACA,SAAA;AAAA,MACA,sCAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,gBAAgB,KAAA,EAAO;AACzB,IAAA,MAAM,aAAa,KAAA,CAAM,UAAA;AACzB,IAAA,IAAI,CAACD,SAAAA,CAAS,UAAU,CAAA,IAAK,CAAC,OAAA,CAAQ,UAAA,CAAW,QAAQ,CAAA,IAAK,CAAC,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA,EAAG;AAC1F,MAAA,OAAO,KAAA;AAAA,QACL,uBAAA;AAAA,QACA,SAAA;AAAA,QACA,8DAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,cAAc,KAAA,EAAO;AACvB,IAAA,MAAM,WAAW,KAAA,CAAM,QAAA;AACvB,IAAA,IACE,CAACA,UAAS,QAAQ,CAAA,IAClB,CAAC,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,IACxB,CAAC,OAAA,CAAQ,SAAS,MAAM,CAAA,IACxB,OAAO,QAAA,CAAS,UAAA,KAAe,QAAA,IAC/B,CAAC,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,UAAU,CAAA,EACpC;AACA,MAAA,OAAO,KAAA;AAAA,QACL,uBAAA;AAAA,QACA,SAAA;AAAA,QACA,iEAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,WAAW,CAAA,EAAG;AACrC,MAAA,OAAO,KAAA;AAAA,QACL,uBAAA;AAAA,QACA,SAAA;AAAA,QACA,8BAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,KAAA,MAAW,UAAA,IAAc,MAAM,WAAA,EAAa;AAC1C,MAAA,IAAI,CAACA,UAAS,UAAU,CAAA,IAAK,CAAC,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA,EAAG;AACtD,QAAA,OAAO,KAAA;AAAA,UACL,uBAAA;AAAA,UACA,SAAA;AAAA,UACA,qCAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,UAAA,CAAW,aAAa,UAAA,EAAY;AACtC,QAAA,IAAI,CAACA,SAAAA,CAAS,UAAA,CAAW,OAAO,CAAA,IAAK,CAAC,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,EAAE,CAAA,EAAG;AACpE,UAAA,OAAO,KAAA;AAAA,YACL,uBAAA;AAAA,YACA,SAAA;AAAA,YACA,qDAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AACA,QAAA,IAAI,CAAC,QAAQ,UAAA,CAAW,QAAQ,KAAK,CAAC,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA,EAAG;AAC9D,UAAA,OAAO,KAAA;AAAA,YACL,uBAAA;AAAA,YACA,SAAA;AAAA,YACA,6CAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAM;AAC3B;AAEA,SAAS,2BAAA,CACP,OACA,SAAA,EACwC;AACxC,EAAA,IAAI,EAAE,iBAAA,IAAqB,KAAA,CAAA,SAAe,EAAE,EAAA,EAAI,MAAM,KAAA,EAAM;AAC5D,EAAA,MAAM,qBAAqB,KAAA,CAAM,OAAA,CAAQ,MAAM,SAAS,CAAA,GACpD,MAAM,SAAA,CAAU,OAAA;AAAA,IAAQ,CAAC,QAAA,KACvBA,SAAAA,CAAS,QAAQ,CAAA,IAAK,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA,GAAI,CAAC,QAAA,CAAS,SAAS,IAAI;AAAC,MAE9E,EAAC;AACL,EAAA,MAAM,MAAA,GAAS,yBAAA,CAA0B,KAAA,CAAM,eAAA,EAAiB,kBAAkB,CAAA;AAClF,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,KAAA;AAAA,MACL,OAAO,KAAA,CAAM,IAAA;AAAA,MACb,SAAA;AAAA,MACA,OAAO,KAAA,CAAM,QAAA;AAAA,MACb,OAAO,KAAA,CAAM,IAAA;AAAA,MACb,OAAO,KAAA,CAAM,MAAA;AAAA,MACb;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,OAAO,EAAE,GAAG,KAAA,EAAO,eAAA,EAAiB,OAAO,KAAA;AAAuC,GACpF;AACF;AASO,SAAS,yBAAyB,KAAA,EAAwD;AAC/F,EAAA,IAAI,CAACA,SAAAA,CAAS,KAAK,CAAA,EAAG;AACpB,IAAA,OAAO,KAAA;AAAA,MACL,uBAAA;AAAA,MACA,SAAA;AAAA,MACA,wCAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,GAChC,KAAA,CAAM,IAAA,GACN,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,GACrB,KAAA,CAAM,SAAA,GACN,SAAA;AACN,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,KAAA,EAAO,SAAS,CAAA;AAC5C,EAAA,IAAI,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,KAAA;AAEtB,EAAA,MAAM,aAAA,GAAgB,2BAAA,CAA4B,KAAA,EAAO,SAAS,CAAA;AAClE,EAAA,IAAI,CAAC,aAAA,CAAc,EAAA,EAAI,OAAO,aAAA;AAE9B,EAAA,IAAI,UAAU,KAAA,IAAS,CAAC,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,EAAG;AAC3C,IAAA,OAAO,KAAA;AAAA,MACL,uBAAA;AAAA,MACA,SAAA;AAAA,MACA,sCAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,eAAe,KAAA,IAAS,KAAA,CAAM,cAAc,QAAA,IAAY,KAAA,CAAM,cAAc,QAAA,EAAU;AACxF,IAAA,OAAO,KAAA;AAAA,MACL,uBAAA;AAAA,MACA,SAAA;AAAA,MACA,2CAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,iBAAA,GAAoB,MAAA,IAAU,KAAA,IAAS,aAAA,IAAiB,SAAS,WAAA,IAAe,KAAA;AACtF,EAAA,IAAI,CAAC,mBAAmB,OAAO,KAAA;AAC/B,EAAA,IAAI,MAAM,SAAA,KAAc,MAAA,IAAa,CAAC,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,EAAG;AAC9D,IAAA,OAAO,KAAA;AAAA,MACL,oBAAA;AAAA,MACA,SAAA;AAAA,MACA,qDAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IACE,KAAA,CAAM,WAAA,KAAgB,MAAA,KACrB,OAAO,MAAM,WAAA,KAAgB,QAAA,IAC5B,CAAC,MAAA,CAAO,UAAU,KAAA,CAAM,WAAW,CAAA,IACnC,KAAA,CAAM,cAAc,CAAA,CAAA,EACtB;AACA,IAAA,OAAO,KAAA;AAAA,MACL,sBAAA;AAAA,MACA,SAAA;AAAA,MACA,oDAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,SAAA,KAAc,MAAA,IAAa,KAAA,CAAM,gBAAgB,MAAA,EAAW;AACpE,IAAA,OAAO,KAAA;AAAA,MACL,oBAAA;AAAA,MACA,SAAA;AAAA,MACA,2DAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,IACE,6BAA6B,KAAA,KAC5B,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,uBAAuB,CAAA,IAC3C,KAAA,CAAM,uBAAA,CAAwB,KAAK,CAAC,IAAA,KAAS,CAAC,OAAA,CAAQ,IAAI,CAAC,CAAA,CAAA,EAC7D;AACA,IAAA,OAAO,KAAA;AAAA,MACL,uBAAA;AAAA,MACA,SAAA;AAAA,MACA,oEAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,aAAA;AACT;AAQO,SAAS,wBACd,OAAA,EAC8D;AAC9D,EAAA,MAAM,aAAa,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,cAAc,MAAS,CAAA;AAC1E,EAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,IAAA,OAAO,KAAA;AAAA,MACL,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,wBAAA,GAA2B,oBAAA;AAAA,MAChD,UAAA,CAAW,IAAA;AAAA,MACX,mDAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAuC;AACxD,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAM,MAAA,GAAS,yBAAyB,MAAM,CAAA;AAC9C,IAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,IAAA,MAAML,aAAY,MAAA,CAAO,SAAA;AACzB,IAAA,IAAIA,eAAc,MAAA,EAAW;AAC7B,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAIA,UAAS,CAAA;AAChC,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,OAAO,KAAA;AAAA,QACL,sBAAA;AAAA,QACA,MAAA,CAAO,IAAA;AAAA,QACP,6DAAA;AAAA,QACA,0CAAA;AAAA,QACAA;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAA,CAAK,GAAA,CAAIA,YAAW,MAAM,CAAA;AAAA,EAC5B;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAO,OAAA,EAAQ;AACpC;;;ACnRA,IAAA,UAAA,GAA2C,OAAA,CAAA,WAAA,EAAA,CAAA;AAC3C,IAAA,kBAAA,GAAuB,OAAA,CAAA,YAAA,EAAA,CAAA;;;ACFvB,IAAA,mBAAA,GAAA;AAAA,EACE,OAAA,EAAW,yCAAA;AAAA,EACX,GAAA,EAAO,qFAAA;AAAA,EACP,KAAA,EAAS,sBAAA;AAAA,EACT,WAAA,EAAe,wHAAA;AAAA,EACf,QAAA,EAAY,8KAAA;AAAA,EACZ,IAAA,EAAQ,QAAA;AAAA,EACR,oBAAA,EAAwB,KAAA;AAAA,EACxB,UAAY,CAAC,eAAA,EAAiB,MAAA,EAAQ,UAAA,EAAY,kBAAkB,WAAW,CAAA;AAAA,EAC/E,UAAA,EAAc;AAAA,IACZ,aAAA,EAAiB;AAAA,MACf,KAAA,EAAS,CAAC,EAAE,IAAA,EAAQ,UAAS,EAAG,EAAE,IAAA,EAAQ,SAAA,EAAW,CAAA;AAAA,MACrD,WAAA,EAAe;AAAA,KACjB;AAAA,IACA,IAAA,EAAQ;AAAA,MACN,IAAA,EAAQ,QAAA;AAAA,MACR,KAAA,EAAS,wBAAA;AAAA,MACT,WAAA,EAAe;AAAA,KACjB;AAAA,IACA,SAAA,EAAa;AAAA,MACX,IAAA,EAAQ,QAAA;AAAA,MACR,SAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAc;AAAA,MACZ,IAAA,EAAQ;AAAA,KACV;AAAA,IACA,QAAA,EAAY;AAAA,MACV,IAAA,EAAQ;AAAA,KACV;AAAA,IACA,WAAA,EAAe;AAAA,MACb,IAAA,EAAQ,OAAA;AAAA,MACR,KAAA,EAAS,EAAE,IAAA,EAAQ,oBAAA;AAAqB,KAC1C;AAAA,IACA,QAAA,EAAY;AAAA,MACV,IAAA,EAAQ,QAAA;AAAA,MACR,SAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAe;AAAA,KACjB;AAAA,IACA,MAAA,EAAU;AAAA,MACR,IAAA,EAAQ,QAAA;AAAA,MACR,SAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAe;AAAA,KACjB;AAAA,IACA,cAAA,EAAkB;AAAA,MAChB,IAAA,EAAQ,QAAA;AAAA,MACR,WAAA,EAAe;AAAA,KACjB;AAAA,IACA,eAAA,EAAmB;AAAA,MACjB,IAAA,EAAQ,QAAA;AAAA,MACR,WAAA,EAAe,2JAAA;AAAA,MACf,oBAAA,EAAwB;AAAA,QACtB,IAAA,EAAQ,QAAA;AAAA,QACR,WAAA,EAAe,wHAAA;AAAA,QACf,oBAAA,EAAwB;AAAA;AAC1B,KACF;AAAA,IACA,yBAAA,EAA6B;AAAA,MAC3B,IAAA,EAAQ,OAAA;AAAA,MACR,WAAA,EAAe,wEAAA;AAAA,MACf,KAAA,EAAS;AAAA,QACP,IAAA,EAAQ,QAAA;AAAA,QACR,oBAAA,EAAwB,KAAA;AAAA,QACxB,QAAA,EAAY,CAAC,WAAA,EAAa,eAAe,CAAA;AAAA,QACzC,UAAA,EAAc;AAAA,UACZ,SAAA,EAAa,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,UAChD,UAAY,EAAE,IAAA,EAAQ,UAAU,IAAA,EAAQ,CAAC,6BAA6B,CAAA,EAAE;AAAA,UACxE,aAAA,EAAiB,EAAE,IAAA,EAAQ,QAAA;AAAS;AACtC;AACF,KACF;AAAA,IACA,WAAA,EAAe;AAAA,MACb,IAAA,EAAQ,OAAA;AAAA,MACR,WAAA,EAAe,2MAAA;AAAA,MACf,KAAA,EAAS;AAAA,QACP,IAAA,EAAQ,QAAA;AAAA,QACR,oBAAA,EAAwB,KAAA;AAAA,QACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,QAC3B,UAAA,EAAc;AAAA,UACZ,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,UAC3B,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,UAC3B,SAAW;AAAC;AACd;AACF,KACF;AAAA,IACA,SAAA,EAAa;AAAA,MACX,IAAA,EAAQ,OAAA;AAAA,MACR,WAAA,EAAe,oDAAA;AAAA,MACf,KAAA,EAAS;AAAA,QACP,IAAA,EAAQ;AAAA;AACV;AACF,GACF;AAAA,EACA,KAAA,EAAS;AAAA,IACP,QAAA,EAAY;AAAA,MACV,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,aAAA,EAAe,MAAM,CAAA;AAAA,MAC1C,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,QAAA;AAAA,UACR,MAAA,EAAU,MAAA;AAAA,UACV,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,WAAA,EAAe;AAAA,UACb,IAAA,EAAQ,QAAA;AAAA,UACR,OAAA,EAAW,CAAA;AAAA,UACX,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,SAAA,EAAa;AAAA,UACX,IAAA,EAAQ,QAAA;AAAA,UACR,SAAA,EAAa,CAAA;AAAA,UACb,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,QAAA;AAAA,UACR,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,QAAA;AAAA,UACR,SAAA,EAAa,CAAA;AAAA,UACb,WAAA,EAAe;AAAA;AACjB;AACF,KACF;AAAA,IACA,UAAA,EAAc;AAAA,MACZ,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,UAAA,EAAY,SAAS,CAAA;AAAA,MAClC,UAAA,EAAc;AAAA,QACZ,QAAA,EAAY,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC/C,OAAA,EAAW,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC9C,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA;AAAE;AAC/C,KACF;AAAA,IACA,QAAA,EAAY;AAAA,MACV,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,QAAA,EAAU,YAAA,EAAc,QAAQ,CAAA;AAAA,MAC7C,UAAA,EAAc;AAAA,QACZ,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC7C,UAAA,EAAc,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,QACjC,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA;AAAE;AAC/C,KACF;AAAA,IACA,UAAA,EAAc;AAAA,MACZ,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC/B,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC3C,QAAA,EAAY,EAAE,IAAA,EAAQ,QAAA,EAAU,MAAQ,CAAC,MAAA,EAAQ,SAAA,EAAW,UAAU,CAAA,EAAE;AAAA,QACxE,OAAA,EAAW,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,QAC9B,OAAA,EAAW,EAAE,IAAA,EAAQ,iBAAA,EAAkB;AAAA,QACvC,QAAA,EAAY,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC/C,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,QAC7B,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC3C,SAAA,EAAa,EAAE,IAAA,EAAQ,QAAA,EAAU,MAAQ,CAAC,UAAA,EAAY,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,QACzE,QAAA,EAAY,EAAE,IAAA,EAAQ,OAAA,EAAS,OAAS,EAAE,IAAA,EAAQ,UAAS,EAAE;AAAA,QAC7D,eAAA,EAAmB,EAAE,IAAA,EAAQ,OAAA,EAAS,KAAA,EAAS,EAAE,IAAA,EAAQ,QAAA,EAAU,SAAA,EAAa,CAAA,EAAE;AAAE;AACtF,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,IAAI,CAAA;AAAA,MACzB,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,MAAQ,CAAC,OAAA,EAAS,SAAA,EAAW,UAAU,CAAA,EAAE;AAAA,QACrE,EAAA,EAAM,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA;AAAE;AAC3C;AACF;AAEJ,CAAA;;;AC5KA,IAAA,mBAAA,GAAA;AAAA,EACE,OAAA,EAAW,yCAAA;AAAA,EACX,GAAA,EAAO,qFAAA;AAAA,EACP,KAAA,EAAS,qBAAA;AAAA,EACT,WAAA,EAAe,wDAAA;AAAA,EACf,QAAA,EAAY,sKAAA;AAAA,EACZ,IAAA,EAAQ,QAAA;AAAA,EACR,oBAAA,EAAwB,KAAA;AAAA,EACxB,QAAA,EAAY,CAAC,eAAA,EAAiB,MAAA,EAAQ,QAAQ,CAAA;AAAA,EAC9C,UAAA,EAAc;AAAA,IACZ,aAAA,EAAiB;AAAA,MACf,IAAA,EAAQ,QAAA;AAAA,MACR,IAAA,EAAQ,CAAC,OAAA,EAAS,OAAO;AAAA,KAC3B;AAAA,IACA,IAAA,EAAQ;AAAA,MACN,IAAA,EAAQ,QAAA;AAAA,MACR,KAAA,EAAS;AAAA,KACX;AAAA,IACA,SAAA,EAAa;AAAA,MACX,IAAA,EAAQ,QAAA;AAAA,MACR,SAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAe;AAAA,KACjB;AAAA,IACA,UAAA,EAAc;AAAA,MACZ,IAAA,EAAQ;AAAA,KACV;AAAA,IACA,QAAA,EAAY;AAAA,MACV,IAAA,EAAQ;AAAA,KACV;AAAA,IACA,WAAA,EAAe;AAAA,MACb,IAAA,EAAQ,OAAA;AAAA,MACR,KAAA,EAAS,EAAE,IAAA,EAAQ,oBAAA;AAAqB,KAC1C;AAAA,IACA,MAAA,EAAU;AAAA,MACR,IAAA,EAAQ,OAAA;AAAA,MACR,KAAA,EAAS;AAAA,QACP,IAAA,EAAQ;AAAA;AACV;AACF,GACF;AAAA,EACA,KAAA,EAAS;AAAA,IACP;AAAA,MACE,EAAA,EAAM;AAAA,QACJ,QAAA,EAAY,CAAC,WAAW,CAAA;AAAA,QACxB,UAAA,EAAc;AAAA,UACZ,WAAa,EAAC;AAAA,UACd,aAAA,EAAiB,EAAE,KAAA,EAAS,OAAA;AAAQ;AACtC,OACF;AAAA,MACA,IAAA,EAAQ;AAAA,QACN,IAAA,EAAQ,QAAA;AAAA,QACR,UAAA,EAAc;AAAA,UACZ,MAAA,EAAU;AAAA,YACR,IAAA,EAAQ,OAAA;AAAA,YACR,KAAA,EAAS;AAAA,cACP,KAAA,EAAS;AAAA,gBACP,EAAE,MAAQ,iBAAA,EAAkB;AAAA,gBAC5B;AAAA,kBACE,IAAA,EAAQ,QAAA;AAAA,kBACR,UAAA,EAAc,EAAE,SAAA,EAAa,EAAC,EAAE;AAAA,kBAChC,QAAA,EAAY,CAAC,WAAW;AAAA;AAC1B;AACF;AACF;AACF;AACF;AACF;AACF,GACF;AAAA,EACA,KAAA,EAAS;AAAA,IACP,MAAA,EAAU;AAAA,MACR,IAAA,EAAQ,QAAA;AAAA,MACR,MAAA,EAAU;AAAA,KACZ;AAAA,IACA,KAAA,EAAS;AAAA,MACP,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,MAAA,EAAQ,WAAW,MAAM,CAAA;AAAA,MAC9C,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,gBAAA;AAAA,UACR,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,QAAA;AAAA,UACR,SAAA,EAAa,CAAA;AAAA,UACb,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,QAAA;AAAA,UACR,SAAA,EAAa,CAAA;AAAA,UACb,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,SAAA,EAAa;AAAA,UACX,IAAA,EAAQ,QAAA;AAAA,UACR,SAAA,EAAa,CAAA;AAAA,UACb,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,WAAA,EAAe;AAAA,UACb,IAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAW,CAAA;AAAA,UACX,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,SAAA,EAAa;AAAA,UACX,IAAA,EAAQ,QAAA;AAAA,UACR,IAAA,EAAQ,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,UAC3B,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,OAAA,EAAW;AAAA,UACT,IAAA,EAAQ,QAAA;AAAA,UACR,WAAA,EAAe;AAAA,SACjB;AAAA,QACA,IAAA,EAAQ;AAAA,UACN,IAAA,EAAQ,OAAA;AAAA,UACR,KAAA,EAAS,EAAE,IAAA,EAAQ,gBAAA;AAAiB,SACtC;AAAA,QACA,SAAA,EAAa,EAAE,IAAA,EAAQ,mBAAA;AAAoB;AAC7C,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT,KAAA,EAAS;AAAA,QACP,EAAE,MAAQ,eAAA,EAAgB;AAAA,QAC1B;AAAA,UACE,IAAA,EAAQ,QAAA;AAAA,UACR,QAAA,EAAY,CAAC,WAAW,CAAA;AAAA,UACxB,UAAA,EAAc;AAAA,YACZ,SAAA,EAAa,EAAE,IAAA,EAAQ,mBAAA;AAAoB;AAC7C;AACF;AACF,KACF;AAAA,IACA,SAAA,EAAa;AAAA,MACX,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,iBAAA,EAAqB;AAAA,QACnB,+BAAA,EAAiC;AAAA,UAC/B,IAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,IACA,kBAAA,EAAsB;AAAA,MACpB,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,WAAW,CAAA;AAAA,MAChC,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC3C,SAAA,EAAa,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAChD,UAAA,EAAc,EAAE,IAAA,EAAQ,oBAAA,EAAqB;AAAA,QAC7C,iBAAmB,EAAE,IAAA,EAAQ,CAAC,UAAA,EAAY,MAAM,CAAA,EAAE;AAAA,QAClD,UAAA,EAAc,EAAE,IAAA,EAAQ,SAAA,EAAW,SAAW,CAAA,EAAE;AAAA,QAChD,SAAA,EAAa,EAAE,IAAA,EAAQ,mBAAA;AAAoB;AAC7C,KACF;AAAA,IACA,UAAA,EAAc;AAAA,MACZ,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAM,CAAA;AAAA,MACnB,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC3C,OAAA,EAAW,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC9C,OAAA,EAAW,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA;AAAE;AAChD,KACF;AAAA,IACA,SAAA,EAAa;AAAA,MACX,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,MAClC,UAAA,EAAc;AAAA,QACZ,SAAA,EAAa,EAAE,KAAA,EAAS,QAAA,EAAS;AAAA,QACjC,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA;AAAE;AAC/C,KACF;AAAA,IACA,UAAA,EAAc;AAAA,MACZ,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,UAAA,EAAY,SAAS,CAAA;AAAA,MAClC,UAAA,EAAc;AAAA,QACZ,QAAA,EAAY,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC/C,OAAA,EAAW,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC9C,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA;AAAE;AAC/C,KACF;AAAA,IACA,QAAA,EAAY;AAAA,MACV,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,QAAA,EAAU,YAAA,EAAc,QAAQ,CAAA;AAAA,MAC7C,UAAA,EAAc;AAAA,QACZ,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC7C,UAAA,EAAc,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,QACjC,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA;AAAE;AAC/C,KACF;AAAA,IACA,UAAA,EAAc;AAAA,MACZ,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC/B,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC3C,QAAA,EAAY,EAAE,IAAA,EAAQ,QAAA,EAAU,MAAQ,CAAC,MAAA,EAAQ,SAAA,EAAW,UAAU,CAAA,EAAE;AAAA,QACxE,OAAA,EAAW,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,QAC9B,OAAA,EAAW,EAAE,IAAA,EAAQ,iBAAA,EAAkB;AAAA,QACvC,QAAA,EAAY,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC/C,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,QAC7B,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC3C,SAAA,EAAa,EAAE,IAAA,EAAQ,QAAA,EAAU,MAAQ,CAAC,UAAA,EAAY,MAAA,EAAQ,SAAS,CAAA,EAAE;AAAA,QACzE,QAAA,EAAY,EAAE,IAAA,EAAQ,OAAA,EAAS,OAAS,EAAE,IAAA,EAAQ,UAAS,EAAE;AAAA,QAC7D,eAAA,EAAmB,EAAE,IAAA,EAAQ,OAAA,EAAS,KAAA,EAAS,EAAE,IAAA,EAAQ,QAAA,EAAU,SAAA,EAAa,CAAA,EAAE;AAAE;AACtF,KACF;AAAA,IACA,OAAA,EAAW;AAAA,MACT,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,IAAI,CAAA;AAAA,MACzB,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,MAAQ,CAAC,OAAA,EAAS,SAAA,EAAW,UAAU,CAAA,EAAE;AAAA,QACrE,EAAA,EAAM,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA;AAAE;AAC3C,KACF;AAAA,IACA,QAAA,EAAY;AAAA,MACV,IAAA,EAAQ,QAAA;AAAA,MACR,oBAAA,EAAwB,KAAA;AAAA,MACxB,QAAA,EAAY,CAAC,MAAA,EAAQ,IAAA,EAAM,QAAQ,YAAY,CAAA;AAAA,MAC/C,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,EAAE,IAAA,EAAQ,iBAAA,EAAkB;AAAA,QACpC,EAAA,EAAM,EAAE,IAAA,EAAQ,iBAAA,EAAkB;AAAA,QAClC,IAAA,EAAQ,EAAE,IAAA,EAAQ,QAAA,EAAU,WAAa,CAAA,EAAE;AAAA,QAC3C,MAAA,EAAU,EAAE,IAAA,EAAQ,QAAA,EAAS;AAAA,QAC7B,UAAA,EAAc,EAAE,IAAA,EAAQ,oBAAA;AAAqB;AAC/C;AACF;AAEJ,CAAA;;;AFjOA,IAAM,GAAA,GAAM,IAAI,UAAA,CAAAL,OAAAA,CAAI,EAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,CAAA;AAAA,IACtD,kBAAA,CAAAI,OAAAA,EAAW,GAAA,EAAK,CAAC,MAAM,CAAC,CAAA;AAGjB,IAAM,YAAA,GAAe,GAAA,CAAI,OAAA,CAAQ,mBAAc;AAC/C,IAAM,YAAA,GAAe,GAAA,CAAI,OAAA,CAAQ,mBAAc;AAE/C,SAAS,eAAe,KAAA,EAAiC;AAC9D,EAAA,IAAI,CAAC,aAAa,KAAK,CAAA,IAAK,CAAC,aAAA,CAAc,KAAK,GAAG,OAAO,KAAA;AAE1D,EAAA,MAAM,SAAA,uBAAgB,GAAA,EAAY;AAClC,EAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAQ;AAChC,IAAA,IAAI,SAAA,CAAU,GAAA,CAAI,KAAA,CAAM,IAAI,GAAG,OAAO,KAAA;AACtC,IAAA,SAAA,CAAU,GAAA,CAAI,MAAM,IAAI,CAAA;AAAA,EAC1B;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,cAAc,KAAA,EAAiC;AACtD,EAAA,OACE,OAAO,UAAU,QAAA,IACjB,KAAA,KAAU,QACV,eAAA,IAAmB,KAAA,IACnB,MAAM,aAAA,KAAkB,OAAA;AAE5B;AGHA,IAAM,wBAAA,GAA2B,oCAAA;AAEjC,SAAS,4BAAA,GAAyC;AAKhD,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,QAAA,CAAS,MAAA,CAAO,CAAC,QAAQ,CAAC,GAAA,CAAI,UAAA,CAAW,cAAc,CAAC,CAAA;AAClF,EAAA,OAAO,SAAA,CAAU,SAAS,wBAAwB,CAAA,GAC9C,YACA,CAAC,GAAG,WAAW,wBAAwB,CAAA;AAC7C;AAkDA,eAAe,qBAAA,CACb,YACA,SAAA,EAC6B;AAC7B,EAAA,IAAI,CAAC,SAAA,CAAU,UAAA,CAAW,GAAG,GAAG,OAAO,MAAA;AACvC,EAAA,MAAM,GAAA,GAAMN,OAAAA,CAAQc,OAAAA,CAAQ,UAAU,GAAG,SAAS,CAAA;AAClD,EAAA,MAAM,UAAA,GACJ,QAAQ,GAAG,CAAA,CAAE,SAAS,CAAA,GAClB,CAAC,GAAG,CAAA,GACJ;AAAA,IACE,GAAA;AAAA,IACA,GAAG,GAAG,CAAA,GAAA,CAAA;AAAA,IACN,GAAG,GAAG,CAAA,IAAA,CAAA;AAAA,IACN,GAAG,GAAG,CAAA,IAAA,CAAA;AAAA,IACN,GAAG,GAAG,CAAA,GAAA,CAAA;AAAA,IACN,GAAG,GAAG,CAAA,IAAA,CAAA;AAAA,IACN,GAAG,GAAG,CAAA,KAAA,CAAA;AAAA,IACNd,OAAAA,CAAQ,KAAK,UAAU;AAAA,GACzB;AACN,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,MAAM,IAAA,CAAK,SAAS,CAAA,EAAG,MAAA,IAAU,OAAO,SAAA;AAAA,IAC/C,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAGA,eAAsB,6BAAA,CACpB,YACA,iBAAA,EACsD;AACtD,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,UAAU,CAAA;AACtC,EAAA,MAAM,OAAA,GAAU,CAAC,IAAI,CAAA;AACrB,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,UAA8C,EAAC;AACrD,EAAA,OAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACzB,IAAA,MAAM,IAAA,GAAO,QAAQ,GAAA,EAAI;AACzB,IAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AAC1C,IAAA,IAAA,CAAK,IAAI,IAAI,CAAA;AACb,IAAA,MAAM,KAAA,GACJ,IAAA,KAAS,IAAA,IAAQ,iBAAA,KAAsB,MAAA,GACnC,IAAI,WAAA,EAAY,CAAE,MAAA,CAAO,iBAAiB,CAAA,GAC1C,MAAM,SAAS,IAAI,CAAA;AACzB,IAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,IAAA,EAAM,MAAA,EAAQ,UAAU,UAAA,CAAW,QAAQ,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,IAAI,CAAA;AAC3F,IAAA,MAAM,MAAA,GAAS,IAAI,WAAA,EAAY,CAAE,OAAO,KAAK,CAAA;AAC7C,IAAA,KAAA,MAAW,YAAY,EAAA,CAAG,cAAA,CAAe,QAAQ,IAAA,EAAM,IAAI,EAAE,aAAA,EAAe;AAC1E,MAAA,MAAM,QAAA,GAAW,MAAM,qBAAA,CAAsB,IAAA,EAAM,SAAS,QAAQ,CAAA;AACpE,MAAA,IAAI,aAAa,MAAA,EAAW,OAAA,CAAQ,KAAK,MAAM,QAAA,CAAS,QAAQ,CAAC,CAAA;AAAA,IACnE;AAAA,EACF;AACA,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,IAAA,EAAM,KAAA,KAAU,KAAK,IAAA,CAAK,aAAA,CAAc,KAAA,CAAM,IAAI,CAAC,CAAA;AAC1E;AAYA,SAAS,iBAAiB,KAAA,EAAmC;AAC3D,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,OAAO,KAAA,KAAU,QAAA,EAAU;AAC/C,IAAA,MAAMe,QAAAA,GAAU,KAAA;AAChB,IAAA,OAAO;AAAA,MACL,MAAMA,QAAAA,CAAQ,IAAA;AAAA,MACd,MAAMA,QAAAA,CAAQ,IAAA;AAAA,MACd,UAAUA,QAAAA,CAAQ,QAAA;AAAA,MAClB,QAAQA,QAAAA,CAAQ,MAAA;AAAA,MAChB,MAAMA,QAAAA,CAAQ,IAAA;AAAA,MACd,QAAQA,QAAAA,CAAQ,MAAA;AAAA,MAChB,SAASA,QAAAA,CAAQ;AAAA,KACnB;AAAA,EACF;AACA,EAAA,OAAO,EAAE,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA,EAAE;AAClC;AAEA,SAAS,eAAe,KAAA,EAAyB;AAC/C,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,OAAO,KAAA,KAAU,UAAU,OAAO,KAAA;AACxD,EAAA,MAAMA,QAAAA,GAAU,KAAA;AAChB,EAAA,IACEA,QAAAA,CAAQ,IAAA,KAAS,YAAA,IACjB,OAAOA,SAAQ,IAAA,KAAS,QAAA,IACxB,OAAOA,QAAAA,CAAQ,QAAA,KAAa,QAAA,IAC5B,OAAOA,QAAAA,CAAQ,SAAS,QAAA,EACxB;AACA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,MAAMA,QAAAA,CAAQ,IAAA;AAAA,MACd,UAAUA,QAAAA,CAAQ,QAAA;AAAA,MAClB,MAAMA,QAAAA,CAAQ;AAAA,KAChB;AACA,IAAA,OAAOA,QAAAA,CAAQ,WAAW,MAAA,GACtB,IAAI,WAAW,IAAI,CAAA,GACnB,IAAI,UAAA,CAAW;AAAA,MACb,GAAG,IAAA;AAAA,MACH,QAAQA,QAAAA,CAAQ;AAAA,KAGjB,CAAA;AAAA,EACP;AACA,EAAA,IACEA,SAAQ,IAAA,KAAS,aAAA,IACjB,OAAOA,QAAAA,CAAQ,SAAS,QAAA,IACxB,OAAOA,QAAAA,CAAQ,QAAA,KAAa,YAC5B,OAAOA,QAAAA,CAAQ,SAAS,QAAA,IACxBA,QAAAA,CAAQ,WAAW,MAAA,EACnB;AACA,IAAA,OAAO,IAAI,WAAA,CAAY;AAAA,MACrB,MAAMA,QAAAA,CAAQ,IAAA;AAAA,MACd,UAAUA,QAAAA,CAAQ,QAAA;AAAA,MAClB,MAAMA,QAAAA,CAAQ,IAAA;AAAA,MACd,QAAQA,QAAAA,CAAQ,MAAA;AAAA,MAChB,GAAI,OAAOA,QAAAA,CAAQ,MAAA,KAAW,QAAA,GAAW,EAAE,MAAA,EAAQA,QAAAA,CAAQ,MAAA,EAAO,GAAI;AAAC,KACxE,CAAA;AAAA,EACH;AACA,EAAA,IAAI,OAAOA,QAAAA,CAAQ,OAAA,KAAY,QAAA,EAAU;AACvC,IAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAMA,QAAAA,CAAQ,OAAO,CAAA;AACvC,IAAA,IAAI,OAAOA,QAAAA,CAAQ,IAAA,KAAS,QAAA,EAAU,KAAA,CAAM,OAAOA,QAAAA,CAAQ,IAAA;AAC3D,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAEA,IAAM,+BAAN,MAA2E;AAAA,EACjE,MAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA,GAAc,CAAA;AAAA,EACd,QAAA;AAAA,EACA,KAAA;AAAA,EASR,MAAM,KAAK,UAAA,EAAsC;AAC/C,IAAA,MAAM,YAAY,uBAAA,EAAwB;AAC1C,IAAA,MAAM,cAAc,MAAM,OAAA,CAAQf,QAAQ,MAAA,EAAO,EAAG,0BAA0B,CAAC,CAAA;AAC/E,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,SAAA,EAAW;AAAA,MACnC,YAAY,EAAE,UAAA,EAAYA,OAAAA,CAAQ,UAAU,GAAG,WAAA,EAAY;AAAA,MAC3D,UAAU,4BAAA,EAA6B;AAAA,MACvC,cAAA,EAAgB,EAAE,sBAAA,EAAwB,GAAA,EAAK,0BAA0B,EAAA;AAAG,KAC7E,CAAA;AACD,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,MAAA,CAAO,GAAG,SAAA,EAAW,CAAC,YAAqB,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AAClE,IAAA,MAAA,CAAO,KAAA,EAAM;AACb,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,WAAA,EAAa,UAAA,KAAe;AAC9C,MAAA,MAAM,SAAA,GAAY,CAAC,OAAA,KAA2B;AAC5C,QAAA,IAAI,OAAA,KAAY,IAAA,IAAQ,OAAO,OAAA,KAAY,QAAA,EAAU;AACrD,QAAA,MAAM,KAAA,GAAQ,OAAA;AACd,QAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAI3B,UAAA,MAAA,CAAO,KAAA,EAAM;AACb,UAAA,MAAA,CAAO,GAAA,CAAI,WAAW,SAAS,CAAA;AAC/B,UAAA,WAAA,CAAY;AAAA,YACV,OAAA,EACE,KAAA,CAAM,UAAA,KAAe,MAAA,GACjB,MAAA,GACA;AAAA,cACE,GAAI,KAAA,CAAM,UAAA;AAAA,cACV,KAAA,EAAO,CAAC,MAAA,KAAwB,IAAA,CAAK,SAAS,MAAM;AAAA;AACtD,WACP,CAAA;AAAA,QACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,YAAA,EAAc;AACtC,UAAA,MAAA,CAAO,GAAA,CAAI,WAAW,SAAS,CAAA;AAC/B,UAAA,UAAA,CAAW,cAAA,CAAe,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,QACxC;AAAA,MACF,CAAA;AACA,MAAA,MAAA,CAAO,EAAA,CAAG,WAAW,SAAS,CAAA;AAC9B,MAAA,MAAA,CAAO,IAAA,CAAK,SAAS,UAAU,CAAA;AAC/B,MAAA,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,CAAC,IAAA,KAAS;AAC5B,QAAA,IAAI,IAAA,KAAS,GAAG,UAAA,CAAW,IAAI,MAAM,CAAA,uCAAA,EAA0C,IAAI,EAAE,CAAC,CAAA;AAAA,MACxF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAAA,EAEA,OAAA,CAAQ,SAA6C,UAAA,EAA2B;AAC9E,IAAA,IAAI,IAAA,CAAK,QAAA,KAAa,MAAA,EAAW,OAAO,IAAA,CAAK,QAAA;AAC7C,IAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AACpB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,MAAM,cAAc,IAAA,CAAK,WAAA;AACzB,IAAA,IAAA,CAAK,WAAA,GAAc,MAAA;AACnB,IAAA,MAAM,SAAS,IAAA,CAAK,KAAA;AACpB,IAAA,IAAA,CAAK,KAAA,GAAQ,MAAA;AACb,IAAA,IAAI,WAAW,MAAA,EAAW;AACxB,MAAA,MAAA,CAAO,OAAO,IAAI,KAAA,CAAM,CAAA,qCAAA,EAAwC,MAAM,EAAE,CAAC,CAAA;AAAA,IAC3E;AACA,IAAA,IAAA,CAAK,YAAY,YAAY;AAC3B,MAAA,IAAI,MAAA,KAAW,MAAA,EAAW,MAAM,MAAA,CAAO,SAAA,EAAU;AACjD,MAAA,IAAI,WAAA,KAAgB,MAAA,EAAW,MAAM,EAAA,CAAG,WAAA,EAAa,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,CAAA;AAAA,IACvF,CAAA,GAAG;AACH,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA,EAEQ,SAAS,MAAA,EAAuC;AACtD,IAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AACpB,IAAA,IAAI,MAAA,KAAW,QAAW,OAAO,OAAA,CAAQ,OAAO,IAAI,KAAA,CAAM,iCAAiC,CAAC,CAAA;AAC5F,IAAA,IAAI,KAAK,KAAA,KAAU,MAAA;AACjB,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAI,KAAA,CAAM,mDAAmD,CAAC,CAAA;AACtF,IAAA,MAAM,KAAK,IAAA,CAAK,WAAA,EAAA;AAChB,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,YAAA,EAAc,WAAA,KAAgB;AAChD,MAAA,IAAA,CAAK,QAAQ,EAAE,EAAA,EAAI,QAAQ,OAAA,EAAS,YAAA,EAAc,QAAQ,WAAA,EAAY;AACtE,MAAA,MAAA,CAAO,YAAY,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,IAAI,CAAA;AAAA,IACnD,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,UAAU,OAAA,EAAwB;AACxC,IAAA,IAAI,OAAA,KAAY,IAAA,IAAQ,OAAO,OAAA,KAAY,QAAA,EAAU;AACrD,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,SAAS,IAAA,CAAK,KAAA;AACpB,IAAA,IAAI,MAAA,KAAW,MAAA,IAAa,KAAA,CAAM,OAAA,KAAY,OAAO,EAAA,EAAI;AACzD,IAAA,IAAI,MAAM,IAAA,KAAS,YAAA,IAAgB,OAAO,KAAA,CAAM,WAAW,QAAA,EAAU;AACnE,MAAA,KAAK,MAAA,CAAO,MAAA,CACT,UAAA,CAAW,KAAA,CAAM,IAAiB,CAAA,CAClC,IAAA;AAAA,QAAK,CAAC,MAAA,KACL,IAAA,CAAK,MAAA,EAAQ,WAAA,CAAY;AAAA,UACvB,IAAA,EAAM,cAAA;AAAA,UACN,QAAQ,KAAA,CAAM,MAAA;AAAA,UACd,MAAA,EACE,MAAA,CAAO,EAAA,KAAO,IAAA,GAAO,MAAA,GAAS,EAAE,GAAG,MAAA,EAAQ,KAAA,EAAO,gBAAA,CAAiB,MAAA,CAAO,KAAK,CAAA;AAAE,SACpF;AAAA,OACH,CACC,KAAA,CAAM,CAAC,KAAA,KAAmB;AACzB,QAAA,IAAI,IAAA,CAAK,KAAA,EAAO,EAAA,KAAO,MAAA,CAAO,EAAA,EAAI;AAClC,QAAA,IAAA,CAAK,KAAA,GAAQ,MAAA;AACb,QAAA,MAAA,CAAO,OAAO,KAAK,CAAA;AACnB,QAAA,KAAK,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA,MAC7B,CAAC,CAAA;AACH,MAAA;AAAA,IACF;AACA,IAAA,IAAA,CAAK,KAAA,GAAQ,MAAA;AACb,IAAA,IAAI,MAAM,IAAA,KAAS,cAAA,EAAgB,MAAA,CAAO,OAAA,CAAQ,MAAM,MAAM,CAAA;AAAA,SAAA,IACrD,KAAA,CAAM,SAAS,aAAA,EAAe,MAAA,CAAO,OAAO,cAAA,CAAe,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,cACtE,KAAA,GAAQ,MAAA;AAAA,EACpB;AACF,CAAA;AAEA,SAAS,uBAAA,GAA+B;AACtC,EAAA,MAAM,aAAA,GAAgB,IAAI,GAAA,CAAI,8BAAA,EAAgC,YAAY,GAAG,CAAA;AAC7E,EAAA,OAAO,UAAA,CAAW,aAAA,CAAc,aAAa,CAAC,CAAA,GAC1C,gBACA,IAAI,GAAA,CAAI,oCAAA,EAAsC,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AACnE;AAmSA,SAAS,WAAA,CACP,UAAA,EACA,MAAA,EACA,KAAA,EACA,YACA,SAAA,EACoC;AACpC,EAAA,OAAOJ,GAAAA,CAAI;AAAA,IACT,IAAA,EAAM,yBAAA;AAAA,IACN,QAAA,EAAU,yEAAA;AAAA,IACV,IAAA,EAAM,2EAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,UAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,GAAI,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA;AAAU;AACjD,GACD,CAAA;AACH;AAEA,SAAS,mBAAA,CAAoB,YAAoB,SAAA,EAA4C;AAC3F,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,yBAAA;AAAA,IACN,QAAA,EAAU,sEAAA;AAAA,IACV,IAAA,EAAM,iFAAA;AAAA,IACN,MAAA,EAAQ;AAAA,MACN,UAAA;AAAA,MACA,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,OAAA;AAAA,MACP,SAAA;AAAA,MACA,UAAA,EAAY,iCAAiC,SAAS,CAAA,EAAA;AAAA;AACxD,GACF;AACF;AAEA,eAAsB,kBAAA,CACpB,UAAA,EACA,OAAA,GAAqC,EAAC,EACoC;AAC1E,EAAA,MAAM,SAAA,GAAY,QAAQ,SAAA,IAAa,GAAA;AACvC,EAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,GAAA;AACjD,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,QAAA,IAAY,IAAI,4BAAA,EAA6B;AACtE,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,OAAA;AACJ,EAAA,IAAI;AACF,IAAA,MAAM,aAAA,0BAAuB,gCAAgC,CAAA;AAC7D,IAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,IAAA,CAAK;AAAA,MAChC,QAAA,CAAS,KAAK,UAAU,CAAA;AAAA,MACxB,IAAI,OAAA,CAA8B,CAACI,QAAAA,KAAY;AAC7C,QAAA,OAAA,GAAU,UAAA,CAAW,MAAMA,QAAAA,CAAQ,aAAa,GAAG,SAAS,CAAA;AAAA,MAC9D,CAAC;AAAA,KACF,CAAA;AACD,IAAA,IAAI,WAAW,aAAA,EAAe;AAC5B,MAAA,aAAA,GAAgB,SAAA;AAChB,MAAA,OAAO,WAAA;AAAA,QACL,UAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA;AAAA,QACA,iDAAiD,SAAS,CAAA,EAAA,CAAA;AAAA,QAC1D;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,WAAA,GACJ,WAAW,IAAA,IAAQ,OAAO,WAAW,QAAA,IAAY,SAAA,IAAa,MAAA,GACzD,MAAA,CAAyC,OAAA,GAC1C,KAAA,CAAA;AACN,IAAA,MAAM,SAAA,GAAY,gCAAA,CAAiC,WAAA,EAAa,UAAU,CAAA;AAC1E,IAAA,IAAI,CAAC,UAAU,EAAA,EAAI;AACjB,MAAA,aAAA,GAAgB,SAAA;AAChB,MAAA,OAAO,SAAA;AAAA,IACT;AACA,IAAA,IAAI,OAAA,CAAQ,iBAAiB,IAAA,EAAM;AACjC,MAAA,aAAA,GAAgB,UAAA;AAChB,MAAA,OAAO,SAAA;AAAA,IACT;AACA,IAAA,MAAM,aAAa,SAAA,CAAU,KAAA;AAE7B,IAAA,OAAOQ,EAAAA,CAAG;AAAA,MACR,GAAG,UAAA;AAAA,MACH,KAAA,EAAO,OAAO,MAAA,KAA+C;AAC3D,QAAA,IAAI,aAAA,GAAgB,KAAA;AACpB,QAAA,IAAI,YAAA;AACJ,QAAA,MAAM,aAAA,GAAgBZ,GAAAA,CAAI,mBAAA,CAAoB,UAAA,EAAY,cAAc,CAAC,CAAA;AACzE,QAAA,IAAI;AACF,UAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,IAAA,CAAK;AAAA,YAC/B,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAC,CAAA;AAAA,YACxC,IAAI,OAAA,CAAsB,CAACI,QAAAA,KAAY;AACrC,cAAA,YAAA,GAAe,WAAW,MAAM;AAC9B,gBAAA,aAAA,GAAgB,IAAA;AAChB,gBAAAA,SAAQ,aAA6B,CAAA;AAAA,cACvC,GAAG,cAAc,CAAA;AAAA,YACnB,CAAC;AAAA,WACF,CAAA;AACD,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,MAAM,QAAA,CAAS,UAAU,SAAS,CAAA;AAClC,YAAA,OAAO,KAAA;AAAA,UACT;AACA,UAAA,MAAM,QAAA,CAAS,UAAU,UAAU,CAAA;AACnC,UAAA,OAAO,KAAA;AAAA,QACT,SAAS,KAAA,EAAO;AACd,UAAA,MAAM,QAAA,CAAS,UAAU,SAAS,CAAA;AAClC,UAAA,MAAM,KAAA;AAAA,QACR,CAAA,SAAE;AACA,UAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,YAAA,CAAa,YAAY,CAAA;AAAA,QAC3D;AAAA,MACF;AAAA,KACD,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,aAAa,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACxE,IAAA,aAAA,GAAgB,SAAA;AAChB,IAAA,OAAO,WAAA,CAAY,UAAA,EAAY,aAAA,EAAe,aAAA,EAAe,UAAU,CAAA;AAAA,EACzE,CAAA,SAAE;AACA,IAAA,IAAI,OAAA,KAAY,MAAA,EAAW,YAAA,CAAa,OAAO,CAAA;AAC/C,IAAA,IAAI,aAAA,KAAkB,MAAA,EAAW,MAAM,QAAA,CAAS,UAAU,aAAa,CAAA;AAAA,EACzE;AACF;;;ACzsBA,SAASQ,IAAM,KAAA,EAAgC;AAC7C,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAM;AAC3B;AAEA,SAAS,QAAW,KAAA,EAAgC;AAClD,EAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,KAAA,EAAM;AAC5B;AAkBO,IAAM,wCAAwC,MAAA,CAAO,MAAA;AAAA,EAC1D;AACF;AA4GA,IAAM,SAAA,uBAAgB,GAAA,CAAI;AAAA,EACxB,cAAA;AAAA,EACA,kBAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,sBAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACF,CAAC,CAAA;AAWD,eAAe,iBAAA,CACb,IAAA,EACA,IAAA,EACA,QAAA,EACoF;AACpF,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI;AACF,IAAA,GAAA,GAAM,MAAMQ,QAAAA,CAAS,IAAA,EAAM,OAAO,CAAA;AAClC,IAAA,MAAA,GAAS,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,EACzB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,OAAA;AAAA,MACL,cAAc,IAAA,EAAM;AAAA,QAClB,IAAA;AAAA,QACA,WAAW,CAAC,EAAE,cAAc,EAAA,EAAI,OAAA,EAAS,qBAAqB;AAAA,OAC/D;AAAA,KACH;AAAA,EACF;AACA,EAAA,IAAI,CAAC,QAAA,CAAS,MAAM,CAAA,EAAG;AACrB,IAAA,OAAO,OAAA;AAAA,MACL,cAAc,IAAA,EAAM;AAAA,QAClB,IAAA;AAAA,QACA,YAAY,QAAA,CAAS,MAAA,IAAU,EAAC,EAAG,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UACjD,YAAA,EAAc,MAAM,YAAA,IAAgB,EAAA;AAAA,UACpC,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,SAC5B,CAAE;AAAA,OACH;AAAA,KACH;AAAA,EACF;AACA,EAAA,OAAOR,GAAAA,CAAG,EAAE,GAAA,EAAK,MAAA,EAAQ,CAAA;AAC3B;AAEA,SAAS,aAAA,CACP,MACA,MAAA,EACW;AACX,EAAA,OAAO,IAAI,SAAA,CAAU;AAAA,IACnB,IAAA;AAAA,IACA,QAAA,EAAU,eAAe,IAAI,CAAA,CAAA;AAAA,IAC7B,IAAA,EAAMS,iBAAiB,IAAI,CAAA;AAAA,IAC3B;AAAA,GACD,CAAA;AACH;AAUA,UAAU,wBAAwB,KAAA,EAIZ;AACpB,EAAA,IAAI,KAAA,CAAM,SAAS,OAAA,EAAS;AAC5B,EAAA,MAAM,UAAU,KAAA,CAAM,OAAA;AACtB,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,MAAM,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,EAAG;AAChD,EAAA,KAAA,MAAW,QAAA,IAAY,QAAQ,MAAA,EAAQ;AACrC,IAAA,MAAM,KAAA,GAAQ,QAAA;AACd,IAAA,MAAM,MAAM,KAAA,CAAM,MAAA;AAClB,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,CAAC,MAAA,CAAO,SAAA,CAAU,GAAG,CAAA,EAAG;AACvD,IAAA,IAAI,GAAA,GAAM,CAAA,IAAK,GAAA,IAAO,KAAA,CAAM,KAAK,MAAA,EAAQ;AACzC,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA;AAC/B,IAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAClC,IAAA,MAAM,SAAS,WAAA,EAAY;AAAA,EAC7B;AACF;AAiBA,eAAe,aAAA,CACb,KAAA,EACA,IAAA,GAAoB,IACpB,OAAA,EAC0C;AAI1C,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,MAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,KAAK,CAAA;AAErC,EAAA,eAAe,SAAS,GAAA,EAA4B;AAClD,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI;AACF,MAAA,OAAA,GAAW,MAAM,OAAA,CAAQ,GAAA,EAAK,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA,IACvD,CAAA,CAAA,MAAQ;AACN,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,MAAA,MAAM,QAAA,GAAWC,IAAAA,CAAK,GAAA,EAAK,KAAA,CAAM,IAAI,CAAA;AAErC,MAAA,IAAI,IAAA,CAAK,UAAA,GAAa,QAAQ,CAAA,KAAM,IAAA,EAAM;AAE1C,MAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AAEvB,QAAA,IAAI,SAAA,CAAU,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAC,KAAK,CAAC,eAAA,CAAgB,GAAA,CAAI,QAAQ,CAAA,EAAG;AACvE,UAAA;AAAA,QACF;AACA,QAAA,MAAM,SAAS,QAAQ,CAAA;AAAA,MACzB,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,EAAO,EAAG;AACzB,QAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,QAAA,IACE,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,IAC1B,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,IAC1B,IAAA,CAAK,QAAA,CAAS,UAAU,CAAA,EACxB;AACA,UAAA,QAAA,CAAS,KAAK,QAAQ,CAAA;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AAIxB,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAMC,IAAAA,CAAK,IAAI,CAAA;AAChC,MAAA,IAAI,QAAA,CAAS,QAAO,EAAG;AACrB,QAAA,IAAI,IAAA,CAAK,UAAA,GAAa,IAAI,CAAA,KAAM,IAAA,EAAM;AACtC,QAAA,IACE,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,IAC1B,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,IAC1B,IAAA,CAAK,QAAA,CAAS,UAAU,CAAA,EACxB;AACA,UAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,QACpB;AACA,QAAA;AAAA,MACF;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AACA,IAAA,MAAM,SAAS,IAAI,CAAA;AAAA,EACrB;AAGA,EAAA,MAAM,SAAA,GAAY,SAAS,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,YAAY,CAAC,CAAA;AACjE,EAAA,MAAM,SAAA,GAAY,SAAS,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,YAAY,CAAC,CAAA;AACjE,EAAA,MAAM,eAAA,GAAkB,SAAS,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,CAAS,UAAU,CAAC,CAAA;AAKrE,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAoB;AAC3C,EAAA,MAAM,QAAA,uBAAe,GAAA,EAAsB;AAE3C,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,MAAM,MAAA,GAAS,MAAM,iBAAA,CAAkB,QAAA,EAAU,uBAAuB,YAAY,CAAA;AACpF,IAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,IAAA,MAAM,EAAE,GAAA,EAAK,MAAA,EAAO,GAAI,MAAA,CAAO,KAAA;AAE/B,IAAA,MAAM,eAAA,GAAkB,yBAAyB,MAAM,CAAA;AACvD,IAAA,IAAI,CAAC,gBAAgB,EAAA,EAAI;AACvB,MAAA,OAAO,OAAA;AAAA,QACL,cAAc,qBAAA,EAAuB;AAAA,UACnC,IAAA,EAAM,QAAA;AAAA,UACN,SAAA,EAAW,CAAC,EAAE,YAAA,EAAc,IAAI,OAAA,EAAS,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM;AAAA,SACtE;AAAA,OACH;AAAA,IACF;AAGA,IAAA,MAAM,OAAA,GAAU,MAAA;AAChB,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,MAAA,EAAQ;AAClC,MAAA,IACE,MAAM,IAAA,KAAS,iBAAA,IACf,MAAM,SAAA,KAAc,QAAA,KACnB,MAAM,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,KAAK,KAAA,CAAM,SAAA,IAAa,EAAE,CAAA,CAAE,SAAS,CAAA,CAAA,EACtE;AACA,QAAA,OAAO,OAAA;AAAA,UACL,cAAc,qBAAA,EAAuB;AAAA,YACnC,IAAA,EAAM,QAAA;AAAA,YACN,SAAA,EAAW;AAAA,cACT;AAAA,gBACE,YAAA,EAAc,SAAA;AAAA,gBACd,OAAA,EACE;AAAA;AACJ;AACF,WACD;AAAA,SACH;AAAA,MACF;AAAA,IACF;AACA,IAAA,MAAM,cAAA,GAAiB,QAAQ,MAAA,CAAO,MAAA;AAAA,MACpC,CAAC,KAAA,KAAU,KAAA,CAAM,SAAA,KAAc,MAAA,IAAa,MAAM,WAAA,KAAgB;AAAA,KACpE;AACA,IAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAC7B,MAAA,KAAA,MAAW,SAAS,cAAA,EAAgB;AAClC,QAAA,MAAM,aAAA,GAAgB,yBAAyB,KAAK,CAAA;AACpD,QAAA,IAAI,CAAC,cAAc,EAAA,EAAI;AACrB,UAAA,OAAO,OAAA;AAAA,YACL,cAAc,qBAAA,EAAuB;AAAA,cACnC,IAAA,EAAM,QAAA;AAAA,cACN,SAAA,EAAW,CAAC,EAAE,YAAA,EAAc,WAAW,OAAA,EAAS,aAAA,CAAc,KAAA,CAAM,IAAA,EAAM;AAAA,aAC3E;AAAA,WACH;AAAA,QACF;AAAA,MACF;AACA,MAAA,MAAM,gBAAA,GAAmB,uBAAA;AAAA,QACvB,cAAA,CAAe,GAAA,CAAI,CAAC,KAAA,EAAO,WAAA,MAAiB;AAAA,UAC1C,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,WAAA,EAAa,MAAM,WAAA,IAAe,WAAA;AAAA,UAClC,GAAI,MAAM,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,KAAA,CAAM,SAAA;AAAU,SACxE,CAAE;AAAA,OACJ;AACA,MAAA,IAAI,CAAC,iBAAiB,EAAA,EAAI;AACxB,QAAA,OAAO,OAAA;AAAA,UACL,cAAc,qBAAA,EAAuB;AAAA,YACnC,IAAA,EAAM,QAAA;AAAA,YACN,SAAA,EAAW,CAAC,EAAE,YAAA,EAAc,WAAW,OAAA,EAAS,gBAAA,CAAiB,KAAA,CAAM,IAAA,EAAM;AAAA,WAC9E;AAAA,SACH;AAAA,MACF;AAAA,IACF;AACA,IAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,MAAA,EAAQ;AAClC,MAAA,IAAI,CAAC,sBAAA,CAAuB,KAAA,CAAM,IAAI,CAAA,EAAG;AACvC,QAAA,OAAO,OAAA;AAAA,UACL,cAAc,qBAAA,EAAuB;AAAA,YACnC,KAAK,KAAA,CAAM,IAAA;AAAA,YACX,MAAA,EAAQ;AAAA,WACT;AAAA,SACH;AAAA,MACF;AACA,MAAA,KAAA,MAAW,GAAA,IAAO,MAAM,IAAA,EAAM;AAC5B,QAAA,IAAI,CAAC,sBAAA,CAAuB,GAAG,CAAA,EAAG;AAChC,UAAA,OAAO,OAAA;AAAA,YACL,cAAc,qBAAA,EAAuB;AAAA,cACnC,GAAA,EAAK,GAAA;AAAA,cACL,MAAA,EAAQ;AAAA,aACT;AAAA,WACH;AAAA,QACF;AAAA,MACF;AAGA,MAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,IAAA,CAAK,WAAA,EAAY;AAC9C,MAAA,MAAM,QAAA,GAAW,UAAA,CAAW,GAAA,CAAI,cAAc,CAAA;AAC9C,MAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,QAAA,OAAO,OAAA;AAAA,UACL,cAAc,qBAAA,EAAuB;AAAA,YACnC,KAAA,EAAO,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,YAC1B,IAAA,EAAM;AAAA,WACP;AAAA,SACH;AAAA,MACF;AACA,MAAA,UAAA,CAAW,GAAA,CAAI,gBAAgB,QAAQ,CAAA;AAavC,MAAA,QAAA,CAAS,IAAI,cAAA,EAAgB;AAAA,QAC3B,GAAG,MAAM,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,aAAa,CAAA;AAAA,QAC5C,GAAG,wBAAwB,KAAK;AAAA,OACjC,CAAA;AAAA,IACH;AACA,IAAA,OAAA,EAAS,YAAA,CAAa,IAAI,QAAA,EAAU;AAAA,MAClC,MAAA,EAAQ,WAAA;AAAA,MACR,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,CAAA,OAAA,EAAUC,UAAAA,CAAW,QAAQ,CAAA,CAAE,OAAO,GAAG,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA,MACxE,UAAA,EAAY,GAAA;AAAA,MACZ,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH;AAGA,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,KAAe,eAAA,CAAgB,OAAA,CAAQ,KAAK,CAAA;AAC3D,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,MAAM,MAAA,GAAS,MAAM,iBAAA,CAAkB,QAAA,EAAU,uBAAuB,YAAY,CAAA;AACpF,IAAA,IAAI,CAAC,MAAA,CAAO,EAAA,EAAI,OAAO,MAAA;AACvB,IAAA,MAAM,EAAE,GAAA,EAAK,MAAA,EAAO,GAAI,MAAA,CAAO,KAAA;AAE/B,IAAA,MAAM,YAAA,GAAe,yBAAyB,MAAM,CAAA;AACpD,IAAA,IAAI,CAAC,aAAa,EAAA,EAAI;AACpB,MAAA,OAAO,OAAA;AAAA,QACL,cAAc,qBAAA,EAAuB;AAAA,UACnC,IAAA,EAAM,QAAA;AAAA,UACN,SAAA,EAAW,CAAC,EAAE,YAAA,EAAc,IAAI,OAAA,EAAS,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM;AAAA,SACnE;AAAA,OACH;AAAA,IACF;AAGA,IAAA,MAAM,OAAA,GAAU,MAAA;AAChB,IAAA,OAAA,EAAS,YAAA,CAAa,IAAI,QAAA,EAAU;AAAA,MAClC,MAAA,EAAQ,WAAA;AAAA,MACR,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,CAAA,OAAA,EAAUA,UAAAA,CAAW,QAAQ,CAAA,CAAE,OAAO,GAAG,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA,MACxE,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,KAAA,MAAW,GAAA,IAAO,QAAQ,SAAA,EAAW;AACnC,MAAA,IAAI,CAAC,sBAAA,CAAuB,GAAA,CAAI,IAAI,CAAA,EAAG;AACrC,QAAA,OAAO,OAAA;AAAA,UACL,cAAc,qBAAA,EAAuB;AAAA,YACnC,KAAK,GAAA,CAAI,IAAA;AAAA,YACT,MAAA,EAAQ;AAAA,WACT;AAAA,SACH;AAAA,MACF;AACA,MAAA,MAAM,cAAA,GAAiB,GAAA,CAAI,IAAA,CAAK,WAAA,EAAY;AAC5C,MAAA,MAAM,QAAA,GAAW,UAAA,CAAW,GAAA,CAAI,cAAc,CAAA;AAC9C,MAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,QAAA,OAAO,OAAA;AAAA,UACL,cAAc,qBAAA,EAAuB;AAAA,YACnC,KAAA,EAAO,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,YAC1B,IAAA,EAAM;AAAA,WACP;AAAA,SACH;AAAA,MACF;AACA,MAAA,UAAA,CAAW,GAAA,CAAI,gBAAgB,QAAQ,CAAA;AAAA,IACzC;AACA,IAAA,MAAM,oBAAoB,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA,GAAI,OAAA,CAAQ,YAAY,EAAC;AAC9E,IAAA,IAAI,iBAAA,CAAkB,SAAS,CAAA,EAAG;AAChC,MAAA,MAAM,gBAAA,GAAmB,wBAAwB,iBAAiB,CAAA;AAClE,MAAA,IAAI,CAAC,iBAAiB,EAAA,EAAI;AACxB,QAAA,OAAO,OAAA;AAAA,UACL,cAAc,qBAAA,EAAuB;AAAA,YACnC,IAAA,EAAM,QAAA;AAAA,YACN,SAAA,EAAW,CAAC,EAAE,YAAA,EAAc,cAAc,OAAA,EAAS,gBAAA,CAAiB,KAAA,CAAM,IAAA,EAAM;AAAA,WACjF;AAAA,SACH;AAAA,MACF;AAAA,IACF;AAKA,IAAA,MAAM,cAAA,GAAiB,kBAAA,CAAmB,QAAA,EAAU,OAAA,CAAQ,QAAQ,UAAU,CAAA;AAC9E,IAAA,IAAI,CAAC,eAAe,EAAA,EAAI;AACtB,MAAA,OAAO,OAAA,CAAQ,eAAe,KAAK,CAAA;AAAA,IACrC;AACA,IAAA,MAAM,qBAAqB,cAAA,CAAe,KAAA;AAC1C,IAAA,IAAI;AACF,MAAA,MAAMD,KAAK,kBAAkB,CAAA;AAAA,IAC/B,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,OAAA;AAAA,QACL,cAAc,kBAAA,EAAoB;AAAA,UAChC,QAAA;AAAA,UACA,YAAA,EAAc;AAAA,SACf;AAAA,OACH;AAAA,IACF;AAAA,EACF;AAGA,EAAA,KAAA,MAAW,cAAc,eAAA,EAAiB;AACxC,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI;AACF,MAAA,MAAA,GAAS,MAAMH,QAAAA,CAAS,UAAA,EAAY,MAAM,CAAA;AAAA,IAC5C,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,OAAA;AAAA,QACL,cAAc,qBAAA,EAAuB;AAAA,UACnC,IAAA,EAAM,UAAA;AAAA,UACN,WAAW,CAAC,EAAE,cAAc,EAAA,EAAI,OAAA,EAAS,qCAAqC;AAAA,SAC/E;AAAA,OACH;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,kBAAA,CAAmB,UAAA,EAAY;AAAA,MAClD,GAAI,IAAA,CAAK,cAAA,IAAkB,EAAC;AAAA,MAC5B,GAAI,OAAA,KAAY,MAAA,GAAY,EAAE,YAAA,EAAc,IAAA,KAAS;AAAC,KACvD,CAAA;AACD,IAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,MAAA,MAAM,UAAA,GACJ,gBAAgB,MAAA,CAAO,KAAA,CAAM,SAAS,MAAA,CAAO,KAAA,CAAM,OAAO,UAAA,GAAa,MAAA;AACzE,MAAA,OAAO,OAAA;AAAA,QACL,cAAc,qBAAA,EAAuB;AAAA,UACnC,IAAA,EAAM,UAAA;AAAA,UACN,SAAA,EAAW;AAAA,YACT;AAAA,cACE,YAAA,EAAc,EAAA;AAAA,cACd,OAAA,EACE,UAAA,KAAe,MAAA,GACX,MAAA,CAAO,KAAA,CAAM,IAAA,GACb,CAAA,EAAG,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,EAAA,EAAK,UAAU,CAAA;AAAA;AAC3C;AACF,SACD;AAAA,OACH;AAAA,IACF;AACA,IAAA,IAAI,aAAA;AACJ,IAAA,IAAI;AACF,MAAA,aAAA,GAAgB,MAAM,6BAAA,CAA8B,UAAA,EAAY,MAAM,CAAA;AAAA,IACxE,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,OAAA;AAAA,QACL,cAAc,qBAAA,EAAuB;AAAA,UACnC,IAAA,EAAM,UAAA;AAAA,UACN,WAAW,CAAC,EAAE,cAAc,EAAA,EAAI,OAAA,EAAS,6CAA6C;AAAA,SACvF;AAAA,OACH;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,yBAAA,CAA0B,MAAA,CAAO,KAAA,EAAO,UAAU,CAAA;AAC/D,IAAA,MAAM,QAAA,GAAW,uBAAA,CAAwB,IAAA,CAAK,SAAS,CAAA;AACvD,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,OAAO,OAAA;AAAA,QACL,cAAc,qBAAA,EAAuB;AAAA,UACnC,IAAA,EAAM,UAAA;AAAA,UACN,SAAA,EAAW,CAAC,EAAE,YAAA,EAAc,cAAc,OAAA,EAAS,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM;AAAA,SACzE;AAAA,OACH;AAAA,IACF;AACA,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,UAAA;AAAA,MACA,cAAA,EAAgB,CAAA,OAAA,EAAUI,UAAAA,CAAW,QAAQ,CAAA,CAAE,OAAO,MAAM,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA,MAC3E,IAAA;AAAA,MACA,YAAY,MAAA,CAAO,KAAA;AAAA,MACnB;AAAA,KACF;AACA,IAAA,OAAA,EAAS,YAAA,CAAa,IAAI,UAAA,EAAY;AAAA,MACpC,MAAA,EAAQ,SAAA;AAAA,MACR,GAAG,WAAA;AAAA,MACH,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,KAAA,MAAW,GAAA,IAAO,KAAK,SAAA,EAAW;AAChC,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,IAAA,CAAK,WAAA,EAAY;AAClC,MAAA,MAAM,QAAA,GAAW,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AACpC,MAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,QAAA,OAAO,OAAA;AAAA,UACL,aAAA,CAAc,uBAAuB,EAAE,KAAA,EAAO,CAAC,QAAA,EAAU,UAAU,CAAA,EAAG,IAAA,EAAM;AAAA,SAC9E;AAAA,MACF;AACA,MAAA,UAAA,CAAW,GAAA,CAAI,MAAM,UAAU,CAAA;AAAA,IACjC;AAAA,EACF;AAIA,EAAA,MAAM,OAAA,uBAAc,GAAA,EAAY;AAChC,EAAA,MAAM,QAAA,uBAAe,GAAA,EAAY;AAEjC,EAAA,SAAS,GAAA,CAAI,MAAc,IAAA,EAAiC;AAC1D,IAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAChB,IAAA,QAAA,CAAS,IAAI,IAAI,CAAA;AAEjB,IAAA,KAAA,MAAW,OAAO,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,IAAK,EAAC,EAAG;AAC1C,MAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,EAAG;AACrB,QAAA,MAAM,QAAQ,GAAA,CAAI,GAAA,EAAK,CAAC,GAAG,IAAA,EAAM,GAAG,CAAC,CAAA;AACrC,QAAA,IAAI,KAAA,KAAU,MAAM,OAAO,KAAA;AAAA,MAC7B,CAAA,MAAA,IAAW,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA,EAAG;AAE5B,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AACnC,QAAA,OAAO,UAAA,IAAc,CAAA,GAAI,CAAC,GAAG,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA,EAAG,GAAG,CAAA,GAAI,CAAC,GAAG,MAAM,GAAG,CAAA;AAAA,MAC3E;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,OAAO,IAAI,CAAA;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,KAAA,MAAW,IAAA,IAAQ,UAAA,CAAW,IAAA,EAAK,EAAG;AACpC,IAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,EAAG;AACtB,MAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,IAAA,EAAM,CAAC,IAAI,CAAC,CAAA;AAC9B,MAAA,IAAI,UAAU,IAAA,EAAM;AAClB,QAAA,OAAO,OAAA;AAAA,UACL,cAAc,uBAAA,EAAyB;AAAA,YACrC,IAAA,EAAM,uBAAA;AAAA,YACN,IAAA,EAAM,aAAA;AAAA,YACN;AAAA,WACD;AAAA,SACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAOZ,IAAG,QAAQ,CAAA;AACpB;AAWA,eAAsB,aAAA,CACpB,KAAA,EACA,IAAA,GAAoB,EAAC,EAC0B;AAC/C,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAmC;AAC5D,EAAA,MAAM,UAAU,MAAM,aAAA,CAAc,OAAO,IAAA,EAAM,EAAE,cAAc,CAAA;AACjE,EAAA,IAAI,CAAC,OAAA,CAAQ,EAAA,EAAI,OAAO,OAAA;AACxB,EAAA,MAAM,YAAoC,EAAC;AAC3C,EAAA,KAAA,MAAW,UAAA,IAAc,QAAQ,KAAA,EAAO;AACtC,IAAA,MAAM,WAAA,GAAc,YAAA,CAAa,GAAA,CAAI,UAAU,CAAA;AAC/C,IAAA,IAAI,WAAA,EAAa,WAAW,WAAA,EAAa;AACzC,IAAA,KAAA,MAAW,CAAC,OAAO,KAAK,CAAA,IAAK,YAAY,KAAA,CAAM,MAAA,CAAO,SAAQ,EAAG;AAC/D,MAAA,SAAA,CAAU,IAAA,CAAK;AAAA,QACb,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,UAAA;AAAA,QACA,gBAAgB,WAAA,CAAY,cAAA;AAAA,QAC5B,GAAI,MAAM,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,KAAA,CAAM,SAAA,EAAU;AAAA,QACtE,GAAI,KAAA,CAAM,WAAA,KAAgB,MAAA,GACtB,EAAE,WAAA,EAAa,KAAA,EAAM,GACrB,EAAE,WAAA,EAAa,KAAA,CAAM,WAAA;AAAY,OACtC,CAAA;AAAA,IACH;AAAA,EACF;AACA,EAAA,OAAOA,IAAG,EAAE,KAAA,EAAO,QAAQ,KAAA,EAAO,SAAA,EAAW,cAAc,CAAA;AAC7D;;;AC3nBA,SAAS,aAAA,CAAc,KAAa,IAAA,EAAsB;AACxD,EAAA,OAAOP,SAAS,GAAA,EAAK,IAAI,CAAA,CAAE,OAAA,CAAQ,OAAO,GAAG,CAAA;AAC/C;AAEO,SAAS,eAAA,CACd,cACA,IAAA,EACoB;AACpB,EAAA,MAAM,KAAA,GAAQ,KAAK,WAAA,EAAY;AAC/B,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,WAAW,CAAA,IAAK,YAAA,EAAc;AAC9C,IAAA,IAAI,WAAA,CAAY,SAAA,CAAU,IAAA,CAAK,CAAC,KAAA,KAAU,KAAA,CAAM,IAAA,CAAK,WAAA,EAAY,KAAM,KAAK,CAAA,EAAG,OAAO,IAAA;AAAA,EACxF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,sBAAA,CACP,IAAA,EACA,QAAA,EACA,MAAA,EACmB;AACnB,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gCAAA;AAAA,IACN,IAAA;AAAA,IACA,OAAA,EAAS,CAAA,iBAAA,EAAoB,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAC,CAAA,iCAAA,CAAA;AAAA,IACrD,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,MAAA,EAAQ,QAAA;AAAA,IACR,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,QAAA,EAAU,CAAC,IAAI;AAAA,GACjB;AACF;AAEA,SAAS,YACP,OAAA,EACA,GAAA,EACA,IAAA,EACA,UAAA,EACA,gBACA,iBAAA,EAKA;AACA,EAAA,MAAM,OAAO,iBAAA,CAAkB,KAAA;AAC/B,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,IAAA,CAAK,QAAQ,CAAA;AAC3C,EAAA,IAAI,MAAA,CAAO,gBAAgB,SAAA,EAAW;AACpC,IAAA,OAAO,EAAE,OAAA,EAAS,EAAC,EAAG,KAAA,EAAO,uBAAuB,OAAA,EAAS,IAAA,CAAK,QAAA,EAAU,MAAM,CAAA,EAAE;AAAA,EACtF;AACA,EAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,OAAA,EAAS,IAAA,CAAK,QAAQ,UAAU,CAAA;AACpE,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,OAAO;AAAA,MACL,SAAS,EAAC;AAAA,MACV,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,6BAAA;AAAA,QACN,IAAA,EAAM,OAAA;AAAA,QACN,OAAA,EAAS,6BAA6B,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,GAAA,EAAM,QAAA,CAAS,MAAM,IAAI,CAAA;AAAA;AACpF,KACF;AAAA,EACF;AACA,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,EAAK,QAAA,CAAS,KAAK,CAAA;AACpD,EAAA,MAAMQ,WAAAA,GAAa,CAAA,EAAG,IAAI,CAAA,eAAA,EAAkB,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,EAAG,IAAA,EAAM,WAAA,EAAY,IAAK,MAAM,CAAA,UAAA,CAAA;AAC5F,EAAA,MAAM,WAAA,GAAiC;AAAA,IACrC,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,QAAQ,QAAA,CAAS,KAAA;AAAA,IACjB,gBAAgB,iBAAA,CAAkB,cAAA;AAAA,IAClC,GAAI,KAAK,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,IAAA,CAAK,SAAA,EAAU;AAAA,IACpE,GAAI,KAAK,UAAA,KAAe,MAAA,GAAY,EAAC,GAAI,EAAE,UAAA,EAAY,IAAA,CAAK,UAAA,EAAW;AAAA,IACvE,GAAI,KAAK,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA,EAAS;AAAA,IACjE,GAAI,KAAK,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA,EAAa,IAAA,CAAK,WAAA,EAAY;AAAA,IAC1E,gBAAgB,IAAA,CAAK,cAAA;AAAA,IACrB,GAAI,KAAK,eAAA,KAAoB,MAAA,GAAY,EAAC,GAAI,EAAE,eAAA,EAAiB,IAAA,CAAK,eAAA,EAAgB;AAAA,IACtF,WAAW,IAAA,CAAK;AAAA,GAClB;AACA,EAAA,IAAI,OAAO,YAAA,EAAc;AACvB,IAAA,MAAM,QAAA,GAAW,6BAAA,CAA8B,IAAA,CAAK,SAAS,CAAA;AAC7D,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,OAAO;AAAA,QACL,SAAS,EAAC;AAAA,QACV,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,4BAAA;AAAA,UACN,IAAA,EAAM,OAAA;AAAA,UACN,OAAA,EAAS,CAAA,oBAAA,EAAuB,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAC,CAAA,8BAAA,EAAiC,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,IAAI,CAAC,CAAA,CAAA;AAAA,UAC3H,QAAA,EAAU,0DAAA;AAAA,UACV,QAAQ,QAAA,CAAS,IAAA;AAAA,UACjB,IAAA,EAAM,0EAAA;AAAA,UACN,QAAA,EAAU,CAAC,OAAO;AAAA;AACpB,OACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,OAAA,EAAS,6BAAA;AAAA,MAA8B,IAAA;AAAA,MAAM,UAAA;AAAA,MAAYA,WAAAA;AAAA,MAAY,IAAA,CAAK,SAAA;AAAA,MAAW,CAAC,WACpF,eAAA,CAAgB,QAAA,CAAS,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,MAAA,CAAO,IAAI;AAAA;AACpE,GACF;AACF;AAEA,SAAS,aAAA,CACP,MACA,GAAA,EACA,IAAA,EACA,YACA,cAAA,EACA,UAAA,EACA,mBACA,YAAA,EAC4E;AAC5E,EAAA,IAAI,iBAAA,CAAkB,WAAW,SAAA,EAAW;AAC1C,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,iBAAA,CAAkB,MAAM,MAAA,EAAQ,aAAA,CAAc,GAAA,EAAK,IAAI,CAAA,EAAE;AAC3E,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,IAAA,CAAK,WAAA,EAAa,CAAA,CAAE,IAAA,GAAO,CAAC,CAAA;AACnF,IAAA,OAAO,eAAe,MAAA,GAClB,EAAE,OAAA,EAAS,IAAG,GACd;AAAA,MACE,OAAA,EAAS,6BAAA;AAAA,QACP,IAAA;AAAA,QACA,aAAA,CAAc,KAAK,IAAI,CAAA;AAAA,QACvB,CAAA,EAAG,IAAI,CAAA,eAAA,EAAkB,UAAU,CAAA,UAAA,CAAA;AAAA,QACnC,IAAA,CAAK,SAAA;AAAA,QACL,CAAC,WAAW,eAAA,CAAgB,IAAA,EAAM,KAAK,SAAA,CAAU,MAAA,EAAQ,OAAO,IAAI;AAAA;AACtE,KACF;AAAA,EACN;AACA,EAAA,IAAI,iBAAA,CAAkB,WAAW,WAAA,EAAa;AAC5C,IAAA,MAAM,MAAA,GAAS,cAAA,CAAe,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA;AAC9D,IAAA,IACE,MAAA,CAAO,WAAA,KAAgB,SAAA,IACvB,UAAA,GAAa;AAAA,MACX,QAAA,EAAU,kBAAkB,KAAA,CAAM,QAAA;AAAA,MAClC,cAAA,EAAgB,kBAAkB,KAAA,CAAM,cAAA;AAAA,MACxC,SAAA,EAAW,kBAAkB,KAAA,CAAM;AAAA,KACpC,MAAM,KAAA,EACP;AACA,MAAA,OAAO,EAAE,OAAA,EAAS,EAAC,EAAE;AAAA,IACvB;AACA,IAAA,MAAM,YAAY,WAAA,CAAY,IAAA,EAAM,KAAK,IAAA,EAAM,UAAA,EAAY,gBAAgB,iBAAiB,CAAA;AAC5F,IAAA,IAAI,UAAU,WAAA,KAAgB,MAAA,eAAwB,GAAA,CAAI,IAAA,EAAM,UAAU,WAAW,CAAA;AACrF,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,MAAM,SAAS,iBAAA,CAAkB,KAAA;AACjC,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,GAAA,EAAK,IAAI,CAAA;AAC1C,EAAA,MAAM,UAAA,GACJ,OAAO,UAAA,IACN,EAAE,UAAU,MAAA,EAAQ,OAAA,EAAS,OAAO,aAAA,EAAc;AACrD,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,qBAAA;AAAA,MACP,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,WAAA,MAAiB;AAAA,QACzC,GAAG,KAAA;AAAA,QACH,UAAA;AAAA,QACA,WAAA,EAAa,MAAM,WAAA,IAAe,WAAA;AAAA,QAClC,GAAI,OAAO,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,MAAA,CAAO,SAAA,EAAU;AAAA,QACxE,UAAA;AAAA,QACA,GAAI,OAAO,QAAA,KAAa,MAAA,GAAY,EAAC,GAAI,EAAE,QAAA,EAAU,MAAA,CAAO,QAAA,EAAS;AAAA,QACrE,GAAI,OAAO,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA,EAAa,MAAA,CAAO,WAAA,EAAY;AAAA,QAC9E,MAAM,eAAA,CAAgB,IAAA,EAAM,OAAO,MAAA,CAAO,MAAA,EAAQ,MAAM,IAAI;AAAA,OAC9D,CAAE,CAAA;AAAA,MACF,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA;AAAA;AACvB,GACF;AACF;AAEA,SAAS,WAAW,MAAA,EAA4C;AAC9D,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,6BAAA,EAAgC,KAAA,CAAM,IAAI,CAAA,GAAA,EAAM,MAAM,IAAI,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,EAC7F;AACF;AAEA,eAAsB,sBAAA,CACpB,OACA,OAAA,EAC6B;AAC7B,EAAA,MAAM,KAAA,GAAQ,CACZ,SAAA,EACA,WAAA,GAA4C,EAAC,MACrB;AAAA,IACxB,aAAA,EAAe,mBAAA;AAAA,IACf,SAAS,EAAC;AAAA,IACV,SAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA,sBAAkB,GAAA,EAAI;AAAA,IACtB,kBAAA,sBAAwB,GAAA;AAAI,GAC9B,CAAA;AACA,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAM,eAAe,CAAA;AACpD,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,EAAI;AACxB,EAAA,MAAM,QAAQ,OAAA,CAAQ,IAAA,IAAQ,GAAA,EAAK,OAAA,CAAQ,OAAO,EAAE,CAAA;AACpD,EAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,KAAA,EAAO,QAAQ,WAAW,CAAA;AAC9D,EAAA,IAAI,CAAC,QAAQ,EAAA,EAAI;AACf,IAAA,MAAM,UACJ,OAAA,CAAQ,KAAA,CAAM,WAAW,MAAA,GACrB,OAAA,CAAQ,MAAM,OAAA,GACd,CAAA,EAAG,OAAA,CAAQ,KAAA,CAAM,OAAO,CAAA,SAAA,EAAY,IAAA,CAAK,UAAU,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAC,CAAA,CAAA;AAC9E,IAAA,MAAM,KAAA,GAA2B;AAAA,MAC/B,IAAA,EAAM,qBAAA;AAAA,MACN,IAAA,EAAM,QAAA;AAAA,MACN,OAAA;AAAA,MACA,QAAA,EAAU,mEAAA;AAAA,MACV,MAAA,EAAQ,OAAA;AAAA,MACR,IAAA,EAAM,oEAAA;AAAA,MACN,QAAA,EAAU,CAAC,GAAG,KAAK;AAAA,KACrB;AACA,IAAA,UAAA,CAAW,CAAC,KAAK,CAAC,CAAA;AAClB,IAAA,OAAO,KAAA,CAAM,UAAA,EAAY,CAAC,KAAK,CAAC,CAAA;AAAA,EAClC;AACA,EAAA,MAAM,EAAE,KAAA,EAAO,YAAA,EAAc,kBAAA,KAAuB,OAAA,CAAQ,KAAA;AAC5D,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAI,gBAAgB,GAAG,CAAA;AACjD,EAAA,MAAM,UAA4B,EAAC;AACnC,EAAA,MAAM,SAA8B,EAAC;AACrC,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAA+B;AACxD,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,iBAAA,GAAoB,kBAAA,CAAmB,GAAA,CAAI,IAAI,CAAA;AACrD,IAAA,IAAI,sBAAsB,MAAA,EAAW;AACrC,IAAA,MAAM,SAAA,GAAY,aAAA;AAAA,MAChB,IAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,CAAQ,cAAA;AAAA,MACR,OAAA,CAAQ,UAAA;AAAA,MACR,iBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,SAAA,CAAU,OAAO,CAAA;AACjC,IAAA,IAAI,UAAU,KAAA,KAAU,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,EAChE;AACA,EAAA,UAAA,CAAW,MAAM,CAAA;AACjB,EAAA,OAAO;AAAA,IACL,aAAA,EAAe,mBAAA;AAAA,IACf,OAAA;AAAA,IACA,SAAA,EAAW,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,eAAA,GAAkB,UAAA;AAAA,IACnD,WAAA,EAAa,MAAA;AAAA,IACb,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;AC9SA,SAAS,UAAU,MAAA,EAAuD;AACxE,EAAA,OAAO,MAAA,CAAO,cAAc,MAAA,IAAa,MAAA,CAAO,UAAU,MAAA,KAAW,CAAA,GACjE,SACA,MAAA,CAAO,SAAA;AACb;AAEA,SAAS,WAAA,CACP,OAAA,EACA,IAAA,EACA,SAAA,EACA,aAAA,EACgB;AAChB,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAe;AAClC,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAM,GAAA,GAAM,UAAU,MAAM,CAAA;AAC5B,IAAA,IAAI,QAAQ,MAAA,EAAW;AACvB,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AAC5B,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,aAAA,CAAc,IAAI,GAAG,CAAA;AACrB,MAAA,SAAA,CAAU,IAAA,CAAK;AAAA,QACb,MAAA,EAAQ,sBAAA;AAAA,QACR,SAAA,EAAW,GAAA;AAAA,QACX,UAAU,IAAA,KAAS,UAAA,GAAa,CAAC,KAAA,EAAyB,MAAwB,IAAI,EAAC;AAAA,QACvF,MAAM,IAAA,KAAS,MAAA,GAAS,CAAC,KAAA,EAAyB,MAAwB,IAAI;AAAC,OAChF,CAAA;AACD,MAAA;AAAA,IACF;AACA,IAAA,MAAA,CAAO,GAAA,CAAI,KAAK,MAAM,CAAA;AAAA,EACxB;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,YAAY,MAAA,EAA2C;AAC9D,EAAA,OAAO,CAAA,aAAA,EAAgB,OAAO,WAAW,CAAA,CAAA;AAC3C;AAOO,SAAS,YAAA,CACd,UACA,IAAA,EACc;AACd,EAAA,MAAM,YAAiC,EAAC;AACxC,EAAA,MAAM,QAA0B,EAAC;AACjC,EAAA,MAAM,UAA4B,EAAC;AACnC,EAAA,MAAM,cAA4B,EAAC;AACnC,EAAA,MAAM,YAA6B,EAAC;AACpC,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,QAAA,EAAU,UAAA,EAAY,WAAW,aAAa,CAAA;AAChF,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,IAAA,EAAM,MAAA,EAAQ,WAAW,aAAa,CAAA;AACpE,EAAA,MAAM,eAAA,uBAAsB,GAAA,EAAoB;AAChD,EAAA,MAAM,WAAA,uBAAkB,GAAA,EAAoB;AAE5C,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,SAAS,CAAA,IAAK,aAAA,EAAe;AAC5C,IAAA,IAAI,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA,EAAG;AAC5B,IAAA,MAAM,SAAA,GAAY,SAAA,CAAU,GAAA,CAAI,GAAG,CAAA;AACnC,IAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,MAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AACtB,MAAA;AAAA,IACF;AACA,IAAA,eAAA,CAAgB,IAAI,SAAS,CAAA;AAC7B,IAAA,WAAA,CAAY,IAAI,SAAS,CAAA;AACzB,IAAA,IAAI,SAAA,CAAU,IAAA,KAAS,SAAA,CAAU,IAAA,EAAM;AACrC,MAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,CAAU,MAAM,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,CAAA;AAAA,IACnE,CAAA,MAAO;AACL,MAAA,MAAM,gBAAgB,SAAA,CAAU,uBAAA,EAAyB,QAAA,CAAS,SAAA,CAAU,IAAI,CAAA,KAAM,IAAA;AACtF,MAAA,WAAA,CAAY,IAAA,CAAK;AAAA,QACf,MAAM,SAAA,CAAU,IAAA;AAAA,QAChB,SAAS,SAAA,CAAU,IAAA;AAAA,QACnB,SAAS,SAAA,CAAU,IAAA;AAAA,QACnB,SAAA,EAAW,GAAA;AAAA,QACX,MAAA,EAAQ,gBAAgB,eAAA,GAAkB;AAAA,OAC3C,CAAA;AACD,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,SAAA,CAAU,MAAM,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,CAAA;AAAA,MACnE,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AACtB,QAAA,KAAA,CAAM,KAAK,SAAS,CAAA;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,SAAS,CAAA,IAAK,SAAA,EAAW;AACxC,IAAA,IAAI,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA,EAAG;AAC5B,IAAA,IAAI,CAAC,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA,EAAG,KAAA,CAAM,KAAK,SAAS,CAAA;AAAA,EACnD;AAKA,EAAA,KAAA,MAAW,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,GAAA,GAAM,UAAU,MAAM,CAAA;AAC5B,IAAA,IAAI,GAAA,KAAQ,UAAa,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA,EAAG,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,EACtE;AACA,EAAA,KAAA,MAAW,UAAU,IAAA,EAAM;AACzB,IAAA,MAAM,GAAA,GAAM,UAAU,MAAM,CAAA;AAC5B,IAAA,IAAI,GAAA,KAAQ,UAAa,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA,EAAG,KAAA,CAAM,KAAK,MAAM,CAAA;AAAA,EACpE;AAEA,EAAA,MAAM,kBAAkB,QAAA,CAAS,MAAA;AAAA,IAC/B,CAAC,WAAW,SAAA,CAAU,MAAM,MAAM,MAAA,IAAa,CAAC,eAAA,CAAgB,GAAA,CAAI,MAAM;AAAA,GAC5E;AACA,EAAA,MAAM,cAAc,IAAA,CAAK,MAAA;AAAA,IACvB,CAAC,WAAW,SAAA,CAAU,MAAM,MAAM,MAAA,IAAa,CAAC,WAAA,CAAY,GAAA,CAAI,MAAM;AAAA,GACxE;AAEA,EAAA,IAAI,eAAA,CAAgB,MAAA,KAAW,CAAA,IAAK,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5D,IAAA,MAAM,SAAA,GAAY,gBAAgB,CAAC,CAAA;AACnC,IAAA,MAAM,SAAA,GAAY,YAAY,CAAC,CAAA;AAC/B,IAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,MAAA,EAAW;AACtD,MAAA,IAAI,SAAA,CAAU,IAAA,KAAS,SAAA,CAAU,IAAA,EAAM;AACrC,QAAA,SAAA,CAAU,IAAA,CAAK;AAAA,UACb,MAAM,SAAA,CAAU,IAAA;AAAA,UAChB,MAAA,EAAQ,YAAY,SAAS,CAAA;AAAA,UAC7B,MAAA,EAAQ,YAAY,SAAS;AAAA,SAC9B,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,IAAA,CAAK;AAAA,UACf,MAAM,SAAA,CAAU,IAAA;AAAA,UAChB,SAAS,SAAA,CAAU,IAAA;AAAA,UACnB,SAAS,SAAA,CAAU,IAAA;AAAA,UACnB,MAAA,EAAQ;AAAA,SACT,CAAA;AACD,QAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AACtB,QAAA,KAAA,CAAM,KAAK,SAAS,CAAA;AAAA,MACtB;AAAA,IACF;AAAA,EACF,WAAW,eAAA,CAAgB,MAAA,GAAS,CAAA,IAAK,WAAA,CAAY,SAAS,CAAA,EAAG;AAC/D,IAAA,SAAA,CAAU,IAAA,CAAK;AAAA,MACb,QACE,eAAA,CAAgB,MAAA,GAAS,KAAK,WAAA,CAAY,MAAA,GAAS,IAC/C,wBAAA,GACA,oBAAA;AAAA,MACN,QAAA,EAAU,eAAA;AAAA,MACV,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,EAAE,SAAA,EAAW,KAAA,EAAO,OAAA,EAAS,aAAa,SAAA,EAAU;AAC7D;AAEO,IAAM,qBAAA,GAAwB;;;AChJrC,SAAS,WAAW,IAAA,EAA8D;AAChF,EAAA,OAAO,IAAI,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,CAAC,GAAA,CAAI,IAAA,CAAK,WAAA,EAAY,EAAG,GAAG,CAAC,CAAC,CAAA;AACjE;AAEA,SAAS,OAAA,CAAQ,MAAsB,KAAA,EAAgC;AACrE,EAAA,OAAO,kBAAA,CAAmB,IAAI,CAAA,KAAM,kBAAA,CAAmB,KAAK,CAAA;AAC9D;AAEA,SAAS,eAAe,IAAA,EAA2E;AACjG,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAyC;AAC5D,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AAGtB,IAAA,IAAI,GAAA,CAAI,cAAc,MAAA,EAAW;AACjC,IAAA,IAAI,GAAA,CAAI,SAAA,KAAc,MAAA,IAAa,GAAA,CAAI,gBAAgB,MAAA,EAAW;AAClE,IAAA,MAAM,UAAU,GAAA,CAAI,SAAA;AACpB,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,OAAO,KAAK,EAAC;AACtC,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,MAAM,GAAA,CAAI,IAAA;AAAA,MACV,GAAI,IAAI,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,EAAW,GAAA,CAAI,SAAA,EAAU,GAAI,EAAC;AAAA,MAClE,WAAA,EAAa,IAAI,WAAA,IAAe,CAAA;AAAA,MAChC,MAAM,GAAA,CAAI,IAAA;AAAA,MACV,GAAI,IAAI,IAAA,KAAS,MAAA,GAAY,EAAE,IAAA,EAAM,GAAA,CAAI,IAAA,EAAK,GAAI;AAAC,KACpD,CAAA;AACD,IAAA,MAAA,CAAO,GAAA,CAAI,SAAS,KAAK,CAAA;AAAA,EAC3B;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,kBAAA,CACP,IAAA,EACA,QAAA,EACAI,OAAAA,EACA,MACA,MAAA,EACmB;AACnB,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,QAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,SAAA;AAAA,IACX,QAAA;AAAA,IACA,MAAA,EAAAA,OAAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,EAAE,IAAA,EAAM,SAAA,EAAoB,EAAA,EAAI,MAAA,EAAO;AAAE,GACtF;AACF;AAEA,SAAS,uBAAA,CACP,QACA,UAAA,EAC+B;AAC/B,EAAA,MAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAC,CAAC,CAAA;AACpF,EAAA,MAAM,aAAA,GAAgB,IAAI,GAAA,CAAI,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAC,CAAC,CAAA;AAElF,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,OAAA,EAAS;AAClC,IAAA,MAAM,QAAA,GAAW,cAAA,CAAe,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA;AAChD,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,OAAO,kBAAA;AAAA,QACL,2BAAA;AAAA,QACA,kDAAA;AAAA,QACA,KAAA,CAAM,MAAA;AAAA,QACN,8EAAA;AAAA,QACA,KAAA,CAAM;AAAA,OACR;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,QAAA,EAAU;AACtC,MAAA,OAAO,kBAAA;AAAA,QACL,wBAAA;AAAA,QACA,kDAAA;AAAA,QACA,CAAA,EAAG,QAAA,CAAS,QAAQ,CAAA,IAAA,EAAO,MAAM,QAAQ,CAAA,CAAA;AAAA,QACzC,+DAAA;AAAA,QACA,KAAA,CAAM;AAAA,OACR;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,QAAA,KAAa,QAAA,CAAS,QAAA,IAAY,UAAA,EAAY;AACtD,MAAA,OAAO,kBAAA;AAAA,QACL,2BAAA;AAAA,QACA,gDAAA;AAAA,QACA,CAAA,EAAG,QAAA,CAAS,QAAQ,CAAA,IAAA,EAAO,MAAM,QAAQ,CAAA,CAAA;AAAA,QACzC,6EAAA;AAAA,QACA,KAAA,CAAM;AAAA,OACR;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,QAAA,GAAW,CAAA,EAAG;AAC1C,MAAA,OAAO,kBAAA;AAAA,QACL,2BAAA;AAAA,QACA,gDAAA;AAAA,QACA,CAAA,EAAG,QAAA,CAAS,QAAQ,CAAA,IAAA,EAAO,MAAM,QAAQ,CAAA,CAAA;AAAA,QACzC,4EAAA;AAAA,QACA,KAAA,CAAM;AAAA,OACR;AAAA,IACF;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,QAAA,EAAU;AACnC,IAAA,IAAI,CAAC,aAAA,CAAc,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,EAAG;AACpC,MAAA,OAAO,kBAAA;AAAA,QACL,2BAAA;AAAA,QACA,iEAAA;AAAA,QACA,KAAA,CAAM,MAAA;AAAA,QACN,4DAAA;AAAA,QACA,KAAA,CAAM;AAAA,OACR;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAUO,SAAS,qBAAA,CACd,QAAA,EACA,IAAA,EACA,QAAA,EAC0B;AAC1B,EAAA,MAAM,MAAA,GAAS,WAAW,QAAQ,CAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,WAAW,IAAI,CAAA;AAC7B,EAAA,MAAM,QAA0B,EAAC;AACjC,EAAA,MAAM,UAA4B,EAAC;AACnC,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,GAAG,CAAA,IAAK,KAAA,EAAO;AAC/B,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAC7B,IAAA,IAAI,KAAA,KAAU,MAAA,EAAW,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA;AAAA,SAAA,IAC9B,CAAC,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA,EAAG,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,EACjD;AACA,EAAA,KAAA,MAAW,IAAA,IAAQ,MAAA,CAAO,IAAA,EAAK,EAAG;AAChC,IAAA,IAAI,CAAC,KAAA,CAAM,GAAA,CAAI,IAAI,CAAA,EAAG,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,EACzC;AAEA,EAAA,MAAM,cAAA,GAAiB,eAAe,QAAQ,CAAA;AAC9C,EAAA,MAAM,UAAA,GAAa,eAAe,IAAI,CAAA;AACtC,EAAA,MAAM,WAAW,EAAC;AAClB,EAAA,MAAM,QAAA,mBAAW,IAAI,GAAA,CAAI,CAAC,GAAG,cAAA,CAAe,IAAA,EAAK,EAAG,GAAG,UAAA,CAAW,IAAA,EAAM,CAAC,CAAA;AACzE,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAM,IAAA,GAAO,YAAA,CAAa,cAAA,CAAe,GAAA,CAAI,OAAO,CAAA,IAAK,EAAC,EAAG,UAAA,CAAW,GAAA,CAAI,OAAO,CAAA,IAAK,EAAE,CAAA;AAC1F,IAAA,IACE,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,CAAA,IACpB,KAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,IACtB,IAAA,CAAK,YAAY,MAAA,GAAS,CAAA,IAC1B,IAAA,CAAK,SAAA,CAAU,SAAS,CAAA,EACxB;AACA,MAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,IACpB;AAAA,EACF;AAEA,EAAA,MAAM,UAAA,GACJ,KAAA,CAAM,MAAA,GAAS,CAAA,IAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,QAAA,CAAS,MAAA,GAAS,CAAA;AACpF,EAAA,IAAI,CAAC,YAAY,OAAO,MAAA;AAExB,EAAA,MAAM,KAAA,GAAQ,EAAE,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,GAAI,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI,EAAE,QAAA,EAAS,GAAI,EAAC,EAAG;AACtF,EAAA,IAAI,QAAA,KAAa,QAAW,OAAO,KAAA;AAEnC,EAAA,MAAM,UAAA,GAAa,uBAAA,CAAwB,QAAA,EAAU,UAAU,CAAA;AAC/D,EAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,IAAA,OAAO;AAAA,MACL,OAAO,EAAC;AAAA,MACR,SAAS,EAAC;AAAA,MACV,SAAS,EAAC;AAAA,MACV,SAAA,EAAW,UAAA;AAAA,MACX,WAAA,EAAa,CAAC,UAAU,CAAA;AAAA,MACxB,SAAA,EAAW;AAAA,KACb;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,SAAA,EAAW,eAAA;AAAA,IACX,aAAa,EAAC;AAAA,IACd,SAAA,EAAW;AAAA,GACb;AACF;AC/GA,SAAS,OAAO,MAAA,EAA8C;AAC5D,EAAA,OAAO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,EAAE,IAAA,EAAK;AACnC;AAEA,SAAS,SAAS,KAAA,EAAoC;AACpD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GACpB,QACA,KAAA,CAAM,IAAA,CAAK,OAAO,CAAC,IAAA,KAAS,KAAK,QAAA,CAAS,EAAE,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AAC7E;AAEA,SAAS,aAAa,KAAA,EAAqD;AACzE,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,MAAA,GAAY,SAAS,KAAK,CAAA;AAC/D;AAEA,SAAS,aAAA,CACP,QACA,aAAA,EACiC;AACjC,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,IAAU,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,KAAK,CAAA,KAAM;AAC7D,IAAA,IAAI,KAAA,KAAU,IAAA,EAAM,OAAO,EAAC;AAC5B,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,OAAO,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA,GAAI,CAAC,EAAE,OAAA,EAAS,KAAA,EAAO,CAAA,GAAI,EAAC;AAAA,IAC3D;AACA,IAAA,OAAO,KAAA,KAAU,IAAA,IACf,OAAO,KAAA,KAAU,YACjB,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,KACpB,SAAA,IAAa,KAAA,GACX,CAAC,KAA6B,IAC9B,EAAC;AAAA,EACP,CAAC,CAAA;AACH;AAEO,SAAS,wBAAwB,QAAA,EAAoD;AAC1F,EAAA,MAAM,aAAA,GACJ,SAAS,UAAA,KAAe,MAAA,GACpB,IAAI,GAAA,CAAY,sBAAsB,IACtC,IAAI,GAAA;AAAA,IACF,QAAA,CAAS,UAAA,CACN,MAAA,CAAO,CAAC,SAAA,KAAc,SAAA,CAAU,IAAA,KAAS,SAAS,CAAA,CAClD,GAAA,CAAI,CAAC,SAAA,KAAc,UAAU,IAAI;AAAA,GACtC;AACN,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,QAAA,CAAS,MAAA,EAAQ,aAAa,CAAA;AAC7D,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,SAAS,MAAA,GAAS,CAAC,SAAS,QAAA,CAAS,MAAM,CAAC,CAAA,GAAI,EAAC;AAAA,IACzD,QAAA,EAAU,MAAA;AAAA,MACR,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC1B,QAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,OAAO,CAAA;AACvC,QAAA,OAAO,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,CAAC,IAAI,CAAA;AAAA,MACxC,CAAC;AAAA,KACH;AAAA,IACA,QAAA,EAAU,MAAA;AAAA,MACR,QAAA,CAAS,OAAA,CAAQ,CAAC,KAAA,KAAU;AAC1B,QAAA,IAAI,KAAA,CAAM,OAAA,KAAY,MAAA,EAAW,OAAO,EAAC;AACzC,QAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,OAAO,CAAA;AACvC,QAAA,OAAO,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,CAAC,IAAI,CAAA;AAAA,MACxC,CAAC;AAAA,KACH;AAAA,IACA,OAAA,EAAS,MAAA,CAAA,CAAQ,QAAA,CAAS,MAAA,IAAU,EAAC,EAAG,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAC;AAAA,GAC5E;AACF;AAEO,SAAS,6BAA6B,KAAA,EAA2B;AACtE,EAAA,OAAO,CAAA,OAAA,EAAU,UAAA,CAAW,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA,CAAA;AAC5C;AAEA,SAAS,UAAU,KAAA,EAAyB;AAC1C,EAAA,IAAI,KAAA,YAAiB,UAAA,EAAY,OAAO,CAAC,GAAG,KAAK,CAAA;AACjD,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,GAAG,OAAO,KAAA,CAAM,IAAI,SAAS,CAAA;AACpD,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,OAAO,KAAA,KAAU,QAAA,EAAU;AAC/C,IAAA,OAAO,MAAA,CAAO,WAAA;AAAA,MACZ,OAAO,OAAA,CAAQ,KAAK,CAAA,CACjB,MAAA,CAAO,CAAC,GAAG,KAAK,CAAA,KAAM,UAAU,MAAS,CAAA,CACzC,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA,EAAG,CAAC,CAAC,MAAM,CAAA,CAAE,aAAA,CAAc,CAAC,CAAC,EACrC,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,CAAC,KAAK,SAAA,CAAU,KAAK,CAAC,CAAC;AAAA,KAClD;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,8BAA8B,MAAA,EAAsC;AAClF,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,SAAA,CAAU,MAAM,CAAC,CAAA;AACzC;AAEO,SAAS,6BAA6B,OAAA,EAAsC;AACjF,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,SAAA,CAAU,EAAE,GAAG,OAAA,EAAS,aAAA,EAAe,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,EAAG,CAAC,CAAA;AAC/F;AAEA,SAASV,SAAQ,KAAA,EAAuD;AACtE,EAAA,OAAOP,GAAAA,CAAI;AAAA,IACT,IAAA,EAAM,8BAAA;AAAA,IACN,QAAA,EAAU,gEAAA;AAAA,IACV,IAAA,EAAM,yFAAA;AAAA,IACN,MAAA,EAAQ,EAAE,KAAA;AAAM,GACjB,CAAA;AACH;AAEO,SAAS,2BAAA,CACd,KAAA,EACA,QAAA,GAA4C,EAAC,EACS;AACtD,EAAA,IAAI,UAAU,IAAA,IAAQ,OAAO,UAAU,QAAA,EAAU,OAAOO,SAAQ,SAAS,CAAA;AACzE,EAAA,MAAM,SAAA,GAAY,KAAA;AAClB,EAAA,IAAI,SAAA,CAAU,aAAA,KAAkB,iBAAA,EAAmB,OAAOA,SAAQ,uBAAuB,CAAA;AACzF,EAAA,IAAI,OAAO,SAAA,CAAU,cAAA,KAAmB,YAAY,SAAA,CAAU,cAAA,CAAe,WAAW,CAAA,EAAG;AACzF,IAAA,OAAOA,SAAQ,wBAAwB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,UAAU,gBAAA,KAAqB,IAAA,IAAQ,OAAO,SAAA,CAAU,qBAAqB,QAAA,EAAU;AACzF,IAAA,OAAOA,SAAQ,0BAA0B,CAAA;AAAA,EAC3C;AACA,EAAA,MAAM,mBAAmB,SAAA,CAAU,gBAAA;AACnC,EAAA,IAAI,gBAAA,CAAiB,cAAA,KAAmB,SAAA,CAAU,cAAA,EAAgB;AAChE,IAAA,OAAOA,SAAQ,yCAAyC,CAAA;AAAA,EAC1D;AACA,EAAA,KAAA,MAAW,KAAA,IAAS;AAAA,IAClB,eAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF,EAAG;AACD,IAAA,MAAM,UAAA,GAAa,UAAU,KAAK,CAAA;AAClC,IAAA,IACG,KAAA,KAAU,eAAA,IAAmB,CAAC,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,IACtD,KAAA,KAAU,eAAA,IAAmB,OAAO,UAAA,KAAe,QAAA,EACpD;AACA,MAAA,OAAOA,QAAAA,CAAQ,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE,CAAA;AAAA,IACnC;AAAA,EACF;AACA,EAAA,MAAM,gBAAgB,SAAA,CAAU,aAAA;AAChC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,IAAK,aAAA,CAAc,IAAA,CAAK,CAAC,IAAA,KAAS,OAAO,IAAA,KAAS,QAAQ,CAAA,EAAG;AAC1F,IAAA,OAAOA,SAAQ,uBAAuB,CAAA;AAAA,EACxC;AACA,EAAA,IACE,SAAS,cAAA,KAAmB,MAAA,IAC5B,SAAA,CAAU,cAAA,KAAmB,SAAS,cAAA,EACtC;AACA,IAAA,OAAOA,SAAQ,wBAAwB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,SAAS,cAAA,KAAmB,MAAA,IAAa,SAAA,CAAU,YAAA,KAAiB,SAAS,cAAA,EAAgB;AAC/F,IAAA,OAAOA,SAAQ,sBAAsB,CAAA;AAAA,EACvC;AACA,EAAA,IAAI,SAAS,WAAA,KAAgB,MAAA,IAAa,SAAA,CAAU,WAAA,KAAgB,SAAS,WAAA,EAAa;AACxF,IAAA,OAAOA,SAAQ,qBAAqB,CAAA;AAAA,EACtC;AACA,EAAA,IACE,SAAA,CAAU,qBAAA,KAA0B,MAAA,KACnC,OAAO,UAAU,qBAAA,KAA0B,QAAA,IAC1C,CAAC,MAAA,CAAO,cAAc,SAAA,CAAU,qBAAqB,CAAA,IACrD,SAAA,CAAU,wBAAwB,CAAA,CAAA,EACpC;AACA,IAAA,OAAOA,SAAQ,+BAA+B,CAAA;AAAA,EAChD;AACA,EAAA,OAAOK,EAAAA,CAAG;AAAA,IACR,aAAA,EAAe,iBAAA;AAAA,IACf,eAAe,SAAA,CAAU,aAAA;AAAA,IACzB,SAAS,SAAA,CAAU,OAAA;AAAA,IACnB,iBAAiB,SAAA,CAAU,eAAA;AAAA,IAC3B,aAAa,SAAA,CAAU,WAAA;AAAA,IACvB,cAAc,SAAA,CAAU,YAAA;AAAA,IACxB,gBAAgB,SAAA,CAAU,cAAA;AAAA,IAC1B,gBAAA,EAAkB,EAAE,cAAA,EAAgB,gBAAA,CAAiB,cAAA,EAAyB;AAAA,IAC9E,GAAI,UAAU,qBAAA,KAA0B,MAAA,GACpC,EAAC,GACD,EAAE,qBAAA,EAAuB,SAAA,CAAU,qBAAA;AAAgC,GACxE,CAAA;AACH;AAEO,SAAS,6BACd,KAAA,EACuD;AACvD,EAAA,IAAI,UAAU,IAAA,IAAQ,OAAO,UAAU,QAAA,EAAU,OAAOL,SAAQ,QAAQ,CAAA;AACxE,EAAA,MAAM,SAAA,GAAY,KAAA;AAClB,EAAA,IAAI,SAAA,CAAU,aAAA,KAAkB,iBAAA,EAAmB,OAAOA,SAAQ,eAAe,CAAA;AACjF,EAAA,IAAI,OAAO,UAAU,IAAA,KAAS,QAAA,IAAY,CAAC,SAAA,CAAU,IAAA,EAAM,OAAOA,QAAAA,CAAQ,MAAM,CAAA;AAChF,EAAA,IAAI,SAAA,CAAU,YAAA,KAAiB,MAAA,IAAa,OAAO,UAAU,YAAA,KAAiB,QAAA;AAC5E,IAAA,OAAOA,SAAQ,cAAc,CAAA;AAC/B,EAAA,IACE,SAAA,CAAU,qBAAA,KAA0B,MAAA,KACnC,OAAO,UAAU,qBAAA,KAA0B,QAAA,IAC1C,CAAC,MAAA,CAAO,aAAA,CAAc,SAAA,CAAU,qBAAqB,CAAA,IACrD,UAAU,qBAAA,GAAwB,CAAA,CAAA;AAEpC,IAAA,OAAOA,SAAQ,uBAAuB,CAAA;AACxC,EAAA,IAAI,SAAA,CAAU,iBAAA,KAAsB,MAAA,IAAa,OAAO,UAAU,iBAAA,KAAsB,QAAA;AACtF,IAAA,OAAOA,SAAQ,mBAAmB,CAAA;AACpC,EAAA,IAAI,SAAA,CAAU,cAAA,KAAmB,MAAA,IAAa,OAAO,UAAU,cAAA,KAAmB,QAAA;AAChF,IAAA,OAAOA,SAAQ,gBAAgB,CAAA;AACjC,EAAA,IACE,UAAU,aAAA,KAAkB,MAAA,KAC3B,CAAC,KAAA,CAAM,QAAQ,SAAA,CAAU,aAAa,CAAA,IACrC,SAAA,CAAU,cAAc,IAAA,CAAK,CAAC,IAAA,KAAS,OAAO,SAAS,QAAQ,CAAA,CAAA;AAEjE,IAAA,OAAOA,SAAQ,eAAe,CAAA;AAChC,EAAA,IAAI,SAAA,CAAU,sBAAsB,MAAA,EAAW;AAC7C,IAAA,IAAI,SAAA,CAAU,iBAAA,KAAsB,IAAA,IAAQ,OAAO,UAAU,iBAAA,KAAsB,QAAA;AACjF,MAAA,OAAOA,SAAQ,mBAAmB,CAAA;AACpC,IAAA,MAAM,oBAAoB,SAAA,CAAU,iBAAA;AACpC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,iBAAA,CAAkB,UAAU,CAAA;AAC7C,MAAA,OAAOA,SAAQ,8BAA8B,CAAA;AAC/C,IAAA,IACE,iBAAA,CAAkB,MAAA,KAAW,IAAA,IAC7B,OAAO,iBAAA,CAAkB,WAAW,QAAA,IACpC,KAAA,CAAM,OAAA,CAAQ,iBAAA,CAAkB,MAAM,CAAA;AAEtC,MAAA,OAAOA,SAAQ,0BAA0B,CAAA;AAAA,EAC7C;AACA,EAAA,IAAI,SAAA,CAAU,QAAA,KAAa,IAAA,IAAQ,OAAO,UAAU,QAAA,KAAa,QAAA;AAC/D,IAAA,OAAOA,SAAQ,UAAU,CAAA;AAC3B,EAAA,IAAI,SAAA,CAAU,SAAS,IAAA,IAAQ,OAAO,UAAU,IAAA,KAAS,QAAA,EAAU,OAAOA,QAAAA,CAAQ,MAAM,CAAA;AACxF,EAAA,IAAI,SAAA,CAAU,QAAA,KAAa,IAAA,IAAQ,OAAO,UAAU,QAAA,KAAa,QAAA;AAC/D,IAAA,OAAOA,SAAQ,UAAU,CAAA;AAC3B,EAAA,IAAI,SAAA,CAAU,OAAA,KAAY,IAAA,IAAQ,OAAO,UAAU,OAAA,KAAY,QAAA;AAC7D,IAAA,OAAOA,SAAQ,SAAS,CAAA;AAC1B,EAAA,MAAM,WAAW,SAAA,CAAU,QAAA;AAC3B,EAAA,IACE,OAAO,QAAA,CAAS,MAAA,KAAW,QAAA,IAC1B,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,KAAK,KAAK,CAAC,WAAA,CAAY,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EACrE;AACA,IAAA,OAAOA,SAAQ,UAAU,CAAA;AAAA,EAC3B;AACA,EAAA,MAAM,aAAA,GAAgB,2BAAA,CAA4B,SAAA,CAAU,OAAA,EAAS;AAAA,IACnE,gBAAgB,QAAA,CAAS;AAAA,GAC1B,CAAA;AACD,EAAA,IAAI,CAAC,aAAA,CAAc,EAAA,EAAI,OAAO,aAAA;AAC9B,EAAA,IAAI,SAAA,CAAU,cAAA,KAAmB,MAAA,IAAa,SAAA,CAAU,mBAAmB,QAAA,CAAS,MAAA;AAClF,IAAA,OAAOA,SAAQ,gBAAgB,CAAA;AACjC,EAAA,IACE,UAAU,qBAAA,KAA0B,MAAA,IACpC,aAAA,CAAc,KAAA,CAAM,0BAA0B,SAAA,CAAU,qBAAA;AAExD,IAAA,OAAOA,SAAQ,+BAA+B,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,GAAG,SAAA;AAAA,IACH,QAAA,EAAU;AAAA,MACR,GAAG,QAAA;AAAA,MACH,KAAA,EAAO,WAAA,CAAY,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,GACpC,UAAA,CAAW,IAAA,CAAK,QAAA,CAAS,KAAmB,CAAA,GAC5C,UAAA,CAAW,IAAA,CAAK,SAAS,KAAiB;AAAA,KAChD;AAAA,IACA,SAAS,aAAA,CAAc;AAAA,GACzB;AACA,EAAA,OAAOK,GAAG,UAAU,CAAA;AACtB;AAEO,SAAS,4BACd,MAAA,EACiD;AACjD,EAAA,OAAO;AAAA,IACL,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,eAAe,MAAA,CAAO;AAAA,GACxB;AACF;ACnSA,SAAS,gBAAgB,KAAA,EAAyE;AAChG,EAAA,OAAO;AAAA,IACL,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,GAAI,MAAM,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAO;AAAA,IAC7D,WAAW,MAAA,CAAO,WAAA;AAAA,MAChB,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,QAAQ,CAAA,KAAM;AAAA,QACvD,GAAA;AAAA,QACA;AAAA,UACE,UAAA,EAAY,QAAA;AAAA,UACZ,YAAA,EAAc,SAAS,YAAA,IAAgB;AAAA;AACzC,OACD;AAAA;AACH,GACF;AACF;AAGO,SAAS,0BACd,KAAA,EACoD;AACpD,EAAA,IAAI,KAAA,CAAM,YAAY,MAAA,EAAW;AAC/B,IAAA,OAAO,QAAQ,OAAA,CAAQ,0BAAA,CAA2B,MAAM,OAAA,EAAS,KAAA,CAAM,OAAO,CAAC,CAAA;AAAA,EACjF;AACA,EAAA,MAAM,aAAA,GAAqC;AAAA,IACzC,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,GAAI,MAAM,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAO;AAAA,IAC7D,GAAI,MAAM,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,EAAQ;AAAA,IAChE,GAAI,MAAM,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,KAAA,CAAM,OAAA,EAAQ;AAAA,IAChE,GAAI,KAAA,CAAM,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,eAAA,CAAgB,KAAA,CAAM,OAAO,CAAA;AAAE,GACnF;AACA,EAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,oBAAA,CAAqB,aAAa,CAAC,CAAA;AAC5D;AAEO,SAAS,oBACd,KAAA,EACyC;AACzC,EAAA,IAAI,KAAA,KAAU,QAAW,OAAO,MAAA;AAChC,EAAA,MAAM,YAAA,GAAe,gBAAgB,KAAK,CAAA;AAC1C,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,CAAa,SAAS,CAAA,CAAE,GAAA;AAAA,IACrD,CAAC,QAAA,KAAa,QAAA,CAAS,YAAA,IAAgB;AAAA,GACzC;AACA,EAAA,OAAO;AAAA,IACL,QAAQ,QAAA,CAAS,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,KAAW,QAAQ,CAAA,GACjD,QAAA,GACA,SAAS,MAAA,GAAS,CAAA,IAAK,SAAS,KAAA,CAAM,CAAC,WAAW,MAAA,KAAW,QAAQ,IACnE,QAAA,GACA,YAAA;AAAA,IACN,GAAI,OAAO,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA;AAAO,GAChE;AACF;;;ACvFO,IAAM,gBAAA,GAAmB;AACzB,IAAM,2BAAA,GAA8B;AACpC,IAAM,wBAAA,GAA2B;AACjC,IAAM,qBAAA,GAAwB;AAgCrC,SAAS,OAAA,CACP,IAAA,EACAD,UAAAA,EACA,QAAA,EACAM,OAAAA,EACqB;AACrB,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,KAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,IAAA;AAAA,MACA,OAAA,EAAS,UAAA;AAAA,MACT,SAAA,EAAAN,UAAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA,EAAAM,OAAAA;AAAA,MACA,QAAA,EAAU;AAAA;AACZ,GACF;AACF;AAEA,SAAS,YAAYQ,OAAAA,EAA4B;AAC/C,EAAA,MAAM,KAAA,GAAQ,IAAI,UAAA,CAAW,qBAAqB,CAAA;AAClD,EAAA,KAAA,CAAM,GAAA,CAAI,IAAI,WAAA,EAAY,CAAE,MAAA,CAAOA,OAAM,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,qBAAqB,CAAC,CAAA;AAC7E,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,WAAW,KAAA,EAA2B;AAC7C,EAAA,OAAO,IAAI,aAAY,CAAE,MAAA,CAAO,KAAK,CAAA,CAAE,OAAA,CAAQ,SAAS,EAAE,CAAA;AAC5D;AAEO,SAAS,kBAAA,CAAmB,QAAyB,GAAA,EAAuB;AACjF,EAAA,IAAI,GAAA,CAAI,aAAa,wBAAA,EAA0B;AAC7C,IAAA,MAAM,IAAI,WAAW,wCAAwC,CAAA;AAAA,EAC/D;AACA,EAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,GAAA,CAAI,QAAQ,GAAA,CAAI,UAAA,EAAY,IAAI,UAAU,CAAA;AACpE,EAAA,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,MAAA,CAAO,OAAA,EAAS,IAAI,CAAA;AACtC,EAAA,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,MAAA,CAAO,iBAAA,EAAmB,IAAI,CAAA;AAChD,EAAA,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,MAAA,CAAO,IAAA,EAAM,IAAI,CAAA;AACnC,EAAA,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,MAAA,CAAO,MAAA,EAAQ,IAAI,CAAA;AACtC,EAAA,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,MAAA,CAAO,WAAA,EAAa,IAAI,CAAA;AAC3C,EAAA,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,MAAA,CAAO,WAAA,EAAa,IAAI,CAAA;AAC3C,EAAA,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,MAAA,CAAO,UAAA,EAAY,IAAI,CAAA;AAC1C,EAAA,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,MAAA,CAAO,UAAA,EAAY,IAAI,CAAA;AAC1C,EAAA,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,MAAA,CAAO,UAAA,EAAY,IAAI,CAAA;AAC1C,EAAA,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,MAAA,CAAO,SAAA,EAAW,IAAI,CAAA;AACzC,EAAA,GAAA,CAAI,GAAA,CAAI,WAAA,CAAY,MAAA,CAAO,MAAM,GAAG,EAAE,CAAA;AACxC;AAEO,SAAS,mBAAA,CACd,KAAA,EACAd,UAAAA,GAAY,uBAAA,EACS;AACrB,EAAA,IAAI,KAAA,CAAM,aAAa,wBAAA,EAA0B;AAC/C,IAAA,OAAO,OAAA;AAAA,MACL,2BAAA;AAAA,MACAA,UAAAA;AAAA,MACA,uBAAuB,wBAAwB,CAAA,OAAA,CAAA;AAAA,MAC/C,CAAA,EAAG,MAAM,UAAU,CAAA,MAAA;AAAA,KACrB;AAAA,EACF;AACA,EAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,KAAA,CAAM,QAAQ,KAAA,CAAM,UAAA,EAAY,MAAM,UAAU,CAAA;AAC1E,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AACtC,EAAA,IAAI,YAAY,gBAAA,EAAkB;AAChC,IAAA,OAAO,QAAQ,8BAAA,EAAgCA,UAAAA,EAAW,aAAA,EAAe,CAAA,QAAA,EAAW,OAAO,CAAA,CAAE,CAAA;AAAA,EAC/F;AACA,EAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AAChD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,IAAI,CAAA;AACnC,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AACtC,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AAC3C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AACzC,EAAA,MAAMc,UAAS,UAAA,CAAW,KAAA,CAAM,SAAS,EAAA,EAAI,EAAA,GAAK,qBAAqB,CAAC,CAAA;AACxE,EAAA,IACE,iBAAA,KAAsB,+BACtB,IAAA,KAAS,CAAA,IACT,WAAW,CAAA,IACX,CAAC,MAAA,CAAO,aAAA,CAAc,WAAW,CAAA,IACjC,CAAC,MAAA,CAAO,aAAA,CAAc,WAAW,CAAA,IACjC,CAAC,OAAO,aAAA,CAAc,UAAU,CAAA,IAChC,CAAC,MAAA,CAAO,aAAA,CAAc,UAAU,CAAA,IAChC,CAAC,OAAO,aAAA,CAAc,SAAS,KAC9B,UAAA,KAAe,CAAA,IAAK,UAAA,KAAe,CAAA,IACnC,UAAA,GAAa,CAAA,IAAK,eAAe,CAAA,IAAK,UAAA,KAAe,CAAA,IACtD,UAAA,KAAe,UAAA,GAAa,UAAA,IAC5B,gBAAgB,WAAA,GAAc,MAAA,IAC9BA,OAAAA,CAAO,MAAA,KAAW,CAAA,EAClB;AACA,IAAA,OAAO,OAAA;AAAA,MACL,yBAAA;AAAA,MACAd,UAAAA;AAAA,MACA,mEAAA;AAAA,MACA,CAAA,WAAA,EAAc,iBAAiB,CAAA,OAAA,EAAU,IAAI,CAAA,SAAA,EAAY,MAAM,CAAA,cAAA,EAAiB,WAAW,CAAA,aAAA,EAAgB,UAAU,CAAA,SAAA,EAAYc,OAAM,CAAA;AAAA,KACzI;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,CAAA;AAAA,MACT,iBAAA,EAAmB,CAAA;AAAA,MACnB,IAAA;AAAA,MACA,MAAA,EAAAA,OAAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA;AACF,GACF;AACF;AChFO,SAAS,0BAA0B,IAAA,EAA4C;AACpF,EAAA,IAAI,KAAK,aAAA,KAAkB,OAAA,IAAW,IAAA,CAAK,MAAA,KAAW,QAAW,OAAO,IAAA;AACxE,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,aAAA,EAAe,OAAA;AAAA,IACf,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACjC,MAAA,MAAM,QAAA,GACJ,KAAA,CAAM,IAAA,KAAS,MAAA,GACX,CAAC,KAAA,CAAM,OAAA,CAAQ,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,CAAE,MAAA;AAAA,QACnD,CAAC,IAAA,KAAyB,OAAO,IAAA,KAAS;AAAA,UAE5C,EAAC;AACP,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,IAAA,EAAM,MAAM,IAAA,IAAQ,QAAA;AAAA,QACpB,SAAA,EAAW,KAAA,CAAM,SAAA,IAAa;AAAC,OACjC;AAAA,IACF,CAAC;AAAA,GACH;AACF;AAyCA,SAASN,QAAAA,CACP,IAAA,EACA,QAAA,EACA,IAAA,EACA,MAAA,EACuB;AACvB,EAAA,OAAO,EAAE,IAAI,KAAA,EAAO,KAAA,EAAO,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,MAAA,EAAO,EAAE;AAC9D;AAEA,SAAS,OAAO,KAAA,EAAyB;AACvC,EAAA,IAAI,KAAA,YAAiB,YAAY,OAAO,MAAA,CAAO,KAAK,KAAK,CAAA,CAAE,SAAS,QAAQ,CAAA;AAC5E,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,GAAG,OAAO,KAAA,CAAM,IAAI,MAAM,CAAA;AACjD,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,OAAO,KAAA,KAAU,QAAA,EAAU;AAC/C,IAAA,MAAM,SAAkC,EAAC;AACzC,IAAA,KAAA,MAAW,OAAO,MAAA,CAAO,IAAA,CAAK,KAAgC,CAAA,CAAE,MAAK,EAAG;AACtE,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,MAAA,CAAQ,KAAA,CAAkC,GAAG,CAAC,CAAA;AAAA,IAC9D;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,UAAA,CAAW,MAAc,WAAA,EAA6B;AAC7D,EAAA,MAAM,MAAA,GAAS,SAAS,GAAA,GAAM,EAAA,GAAK,IAAI,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAC,CAAA,CAAA;AACrE,EAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,YAAY,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA,CAAA;AACrD;AAEA,SAAS,SAAS,IAAA,EAAuB;AACvC,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,UAAA,CAAW,IAAA,EAAM,GAAG,CAAA;AAC5C,EAAA,OACE,WAAW,MAAA,GAAS,CAAA,IACpB,CAAC,UAAA,CAAW,UAAA,CAAW,GAAG,CAAA,IAC1B,CAAC,eAAe,IAAA,CAAK,UAAU,KAC/B,CAAC,UAAA,CAAW,MAAM,GAAG,CAAA,CAAE,SAAS,IAAI,CAAA;AAExC;AAEA,SAAS,OAAO,MAAA,EAAgD;AAC9D,EAAA,MAAM,OAAO,EAAE,aAAA,EAAe,OAAA,EAAS,IAAA,EAAM,yBAAyB,MAAA,EAAO;AAC7E,EAAA,MAAM,IAAA,GAAOK,UAAAA,CAAW,QAAQ,CAAA,CAAE,MAAA;AAAA,IAChC,IAAA,CAAK,SAAA;AAAA,MACH,MAAA,CAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UAClC,GAAG,KAAA;AAAA,UACH,WAAW,MAAA,CAAO,WAAA;AAAA,YAChB,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,QAAQ,CAAA,KAAM;AAAA,cACvD,GAAA;AAAA,cACA;AAAA,gBACE,WAAW,QAAA,CAAS,SAAA;AAAA,gBACpB,GAAI,SAAS,UAAA,KAAe,MAAA,GAAY,EAAC,GAAI,EAAE,UAAA,EAAY,QAAA,CAAS,UAAA,EAAW;AAAA,gBAC/E,UAAA,EAAY,SAAS,KAAA,CAAM;AAAA;AAC7B,aACD;AAAA;AACH,SACF,CAAE;AAAA,OACH;AAAA;AACH,GACF;AACA,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,QAAQ,CAAA,IAAK,MAAA,CAC3B,OAAA;AAAA,IAAQ,CAAC,KAAA,KACR,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,CAAE,GAAA;AAAA,MAC9B,CAAC,CAAC,QAAA,EAAU,IAAI,CAAA,KAAM,CAAC,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,IAAI;AAAA;AAC1D,GACF,CACC,IAAA,CAAK,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,aAAA,CAAc,KAAK,CAAC,CAAA,EAAG;AACvD,IAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,CAAE,MAAA,CAAO,SAAS,KAAK,CAAA;AAAA,EACxC;AACA,EAAA,OAAO,CAAA,OAAA,EAAU,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AACrC;AAEA,SAAS,eAAA,CACP,QACA,YAAA,EACiB;AACjB,EAAA,OAAO;AAAA,IACL,aAAA,EAAe,OAAA;AAAA,IACf,IAAA,EAAM,uBAAA;AAAA,IACN,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,MAC7B,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,GAAI,MAAM,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK;AAAA,MACvD,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,WAAW,MAAA,CAAO,WAAA;AAAA,QAChB,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,QAAQ,CAAA,KAAM;AAAA,UACvD,GAAA;AAAA,UACA;AAAA,YACE,IAAA,EAAM,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,GAAG,CAAA;AAAA,YAClC,WAAW,QAAA,CAAS,SAAA;AAAA,YACpB,GAAI,SAAS,UAAA,KAAe,MAAA,GAAY,EAAC,GAAI,EAAE,UAAA,EAAY,QAAA,CAAS,UAAA,EAAW;AAAA,YAC/E,eAAA,EAAiB,UAAA;AAAA,YACjB,UAAA,EAAY,SAAS,KAAA,CAAM,UAAA;AAAA,YAC3B,SAAA,EAAW;AAAA,cACT,SAAA,EAAW,QAAA;AAAA,cACX,MAAA,EAAQ,CAAA,OAAA,EAAUA,UAAAA,CAAW,QAAQ,CAAA,CAAE,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA;AAC7E;AACF,SACD;AAAA;AACH,KACF,CAAE;AAAA,GACJ;AACF;AAEA,SAAS,kBAAA,CACP,QACA,YAAA,EACA;AACA,EAAA,OAAO,MAAA,CAAO,OAAA;AAAA,IAAQ,CAAC,KAAA,KACrB,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,QAAA,EAAU,QAAQ,CAAA,KAAM;AAAA,MAChE;AAAA,QACE,MAAM,KAAA,CAAM,IAAA;AAAA,QACZ,QAAA;AAAA,QACA,IAAA,EAAM,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,QACvC,WAAW,QAAA,CAAS,SAAA;AAAA,QACpB,GAAI,SAAS,UAAA,KAAe,MAAA,GAAY,EAAC,GAAI,EAAE,UAAA,EAAY,QAAA,CAAS,UAAA,EAAW;AAAA,QAC/E,OAAO,QAAA,CAAS;AAAA;AAClB,KACD;AAAA,GACH;AACF;AAGA,eAAsB,sBAAA,CACpB,SACA,MAAA,EACgC;AAChC,EAAA,IAAI,OAAA,CAAQ,cAAA,CAAe,IAAA,EAAK,CAAE,WAAW,CAAA,EAAG;AAC9C,IAAA,OAAOL,QAAAA;AAAA,MACL,yBAAA;AAAA,MACA,6BAAA;AAAA,MACA,gEAAA;AAAA,MACA;AAAC,KACH;AAAA,EACF;AACA,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,MAAA,EAAQ;AAClC,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,WAAA,EAAY;AACpC,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AAClB,MAAA,OAAOA,QAAAA;AAAA,QACL,gBAAA;AAAA,QACA,mCAAA;AAAA,QACA,6DAAA;AAAA,QACA,EAAE,IAAA;AAAK,OACT;AAAA,IACF;AACA,IAAA,IAAA,CAAK,IAAI,IAAI,CAAA;AACb,IAAA,KAAA,MAAW,CAAC,KAAK,QAAQ,CAAA,IAAK,OAAO,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,EAAG;AAC7D,MAAA,IAAI,CAAC,QAAA,CAAS,GAAG,KAAK,EAAE,QAAA,CAAS,iBAAiB,UAAA,CAAA,EAAa;AAC7D,QAAA,OAAOA,QAAAA;AAAA,UACL,kBAAA;AAAA,UACA,2CAAA;AAAA,UACA,kDAAA;AAAA,UACA,EAAE,MAAM,GAAA;AAAI,SACd;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACvB,IAAA,IAAI,CAAC,OAAA,CAAQ,QAAA,CAAS,IAAA,CAAK,CAAC,OAAA,KAAY,OAAA,CAAQ,IAAA,CAAK,WAAA,EAAY,KAAM,IAAI,CAAA,EAAG;AAC5E,MAAA,OAAOA,QAAAA;AAAA,QACL,iBAAA;AAAA,QACA,6CAAA;AAAA,QACA,uEAAA;AAAA,QACA,EAAE,IAAA;AAAK,OACT;AAAA,IACF;AAAA,EACF;AACA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,OAAA,CAAQ,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,UAAU,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,KAAA,CAAM,IAAI,CAAC,CAAA;AAC5F,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,MAAA,CAAO,YAAY,CAAA;AAC5D,EAAA,MAAM,YAAA,GAAe,IAAI,WAAA,EAAY,CAAE,MAAA,CAAO,KAAK,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAC,CAAC,CAAA;AAC9E,EAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAW;AAC7B,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,KAAA,MAAW,CAAC,KAAK,QAAQ,CAAA,IAAK,OAAO,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,EAAG;AAC7D,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,KAAA,CAAM,MAAM,GAAG,CAAA;AAChD,QAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,EAAG;AACnB,UAAA,OAAOA,QAAAA;AAAA,YACL,kBAAA;AAAA,YACA,wCAAA;AAAA,YACA,2CAAA;AAAA,YACA,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,GAAA;AAAI,WAC1B;AAAA,QACF;AACA,QAAA,MAAM,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,QAAA,CAAS,KAAK,CAAA;AAAA,MACxC;AAAA,IACF;AACA,IAAA,IAAI,CAAC,QAAA,CAAS,MAAA,CAAO,WAAW,CAAA,EAAG;AACjC,MAAA,OAAOA,QAAAA;AAAA,QACL,kBAAA;AAAA,QACA,iCAAA;AAAA,QACA,0CAAA;AAAA,QACA,EAAE,GAAA,EAAK,MAAA,CAAO,WAAA;AAAY,OAC5B;AAAA,IACF;AACA,IAAA,MAAM,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,WAAA,EAAa,YAAY,CAAA;AAAA,EACpD;AACA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY,UAAA,CAAW,MAAA,CAAO,IAAA,EAAM,OAAO,WAAW,CAAA;AAAA,MACtD,MAAA,EAAQ,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AAAA,MAC7B,UAAU,OAAA,CAAQ,QAAA;AAAA,MAClB,aAAa,OAAA,CAAQ,WAAA;AAAA,MACrB,gBAAgB,OAAA,CAAQ,cAAA;AAAA,MACxB,GAAI,QAAQ,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,OAAA,CAAQ,SAAA;AAAU;AAC5E,GACF;AACF;AAGA,eAAsB,8BAAA,CACpB,OACA,MAAA,EACA;AACA,EAAA,MAAM,cAAA,GAAiB,yBAAyB,KAAK,CAAA;AACrD,EAAA,MAAM,OAAA,GAA0B;AAAA,IAC9B,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,UACE,KAAA,CAAM,QAAA,IACN,MAAM,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,MAC3B,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA,EAAQ,WAAA;AAAA,MACR,gBAAA,EAAkB;AAAA,KACpB,CAAE,CAAA;AAAA,IACJ,WAAA,EAAa,KAAA,CAAM,WAAA,IAAe,EAAC;AAAA,IACnC,cAAA;AAAA,IACA,GAAI,MAAM,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA,EAAW,KAAA,CAAM,SAAA;AAAU,GACxE;AACA,EAAA,MAAM,SAAA,GAAY,MAAM,sBAAA,CAAuB,OAAA,EAAS,MAAM,CAAA;AAC9D,EAAA,IAAI,CAAC,SAAA,CAAU,EAAA,EAAI,MAAM,SAAA,CAAU,KAAA;AACnC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,UAAU,KAAA,CAAM,IAAA;AAAA,IACtB,UAAA,EAAY,UAAU,KAAA,CAAM,UAAA;AAAA,IAC5B,SAAA,EAAW,kBAAA,CAAmB,OAAA,CAAQ,MAAA,EAAQ,OAAO,YAAY,CAAA;AAAA,IACjE,MAAA,EAAQ,UAAU,KAAA,CAAM,MAAA;AAAA,IACxB,cAAA;AAAA,IACA,UAAU,IAAA,CAAK,SAAA,CAAU,OAAO,SAAA,CAAU,KAAA,CAAM,IAAI,CAAC;AAAA,GACvD;AACF;AAEA,SAAS,eAAe,KAAA,EAAyB;AAC/C,EAAA,IAAI,iBAAiB,UAAA,EAAY;AAC/B,IAAA,OAAO;AAAA,MACL,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,MAAA,EAAQK,WAAW,QAAQ,CAAA,CAAE,OAAO,KAAK,CAAA,CAAE,OAAO,KAAK;AAAA,KACzD;AAAA,EACF;AACA,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,GAAG,OAAO,KAAA,CAAM,IAAI,cAAc,CAAA;AACzD,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,OAAO,KAAA,KAAU,QAAA,EAAU;AAC/C,IAAA,OAAO,MAAA,CAAO,WAAA;AAAA,MACZ,MAAA,CAAO,OAAA,CAAQ,KAAgC,CAAA,CAC5C,IAAA,CAAK,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,KAAK,CAAA,KAAM,IAAA,CAAK,aAAA,CAAc,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,IAAI,CAAA,KAAM,CAAC,GAAA,EAAK,cAAA,CAAe,IAAI,CAAC,CAAC;AAAA,KACrD;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,yBAAyB,KAAA,EAAwB;AAC/D,EAAA,OAAOA,UAAAA,CAAW,QAAQ,CAAA,CACvB,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,KAAK,CAAC,CAAC,CAAA,CAC5C,MAAA,CAAO,KAAK,CAAA;AACjB;AC9XO,SAAS,YAAY,KAAA,EAA6C;AACvE,EAAA,IAAI,CAAC,cAAA,CAAe,KAAK,CAAA,EAAG;AAC1B,IAAA,OAAOxB,GAAAA,CAAI;AAAA,MACT,IAAA,EAAM,0BAAA;AAAA,MACN,QAAA,EAAU,kEAAA;AAAA,MACV,IAAA,EAAM,gFAAA;AAAA,MACN,MAAA,EAAQ,EAAE,QAAA,EAAU,cAAA,EAAgB,UAAU,qBAAA;AAAsB,KACrE,CAAA;AAAA,EACH;AAEA,EAAA,OAAOY,GAAG,KAAK,CAAA;AACjB;AC+BA,SAAS,OAAO,KAAA,EAAwB;AACtC,EAAA,IAAI,KAAA,YAAiB,UAAA,EAAY,OAAO,CAAA,MAAA,EAAS,MAAA,CAAO,KAAK,KAAK,CAAA,CAAE,QAAA,CAAS,QAAQ,CAAC,CAAA,CAAA;AACtF,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAChE,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,OAAO,KAAA,KAAU,QAAA,EAAU;AAC/C,IAAA,MAAM,MAAA,GAAS,KAAA;AACf,IAAA,OAAO,CAAA,CAAA,EAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAC1B,MAAK,CACL,GAAA,CAAI,CAAC,GAAA,KAAQ,CAAA,EAAG,IAAA,CAAK,UAAU,GAAG,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA,CAAE,CAAA,CAC5D,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,EACd;AACA,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,IAAK,MAAA;AAClC;AAEA,SAASa,QAAO,KAAA,EAAwB;AACtC,EAAA,OAAO,CAAA,OAAA,EAAUD,UAAAA,CAAW,QAAQ,CAAA,CAAE,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAC3E;AAEA,SAAS,iBAAiB,IAAA,EAAqD;AAC7E,EAAA,OAAO,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AAChC,IAAA,MAAM,UAAU,KAAA,CAAM,OAAA;AACtB,IAAA,MAAM,gBAAA,GACJ,OAAA,KAAY,IAAA,IACZ,OAAO,OAAA,KAAY,YACnB,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,IACtB,EAAE,mBAAmB,UAAA,CAAA,IACrB,OAAQ,OAAA,CAAoC,IAAA,KAAS,QAAA,GACjD,EAAE,GAAI,OAAA,EAAqC,IAAA,EAAM,KAAA,CAAM,IAAA,EAAK,GAC5D,OAAA;AACN,IAAA,OAAO;AAAA,MACL,GAAG,KAAA;AAAA,MACH,OAAA,EAAS,gBAAA;AAAA,MACT,IAAA,EAAM,CAAC,GAAI,KAAA,CAAM,IAAA,IAAQ,EAAG,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,KAAQ,GAAA,CAAI,aAAa,CAAA;AAAA,MAC5D,SAAA,EAAW,KAAA,CAAM,SAAA,IAAa;AAAC,KACjC;AAAA,EACF,CAAC,CAAA;AACH;AAEA,SAAS,UAAU,KAAA,EAAiD;AAClE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,WAAA,EAAY;AAAA,IAC7B,SAAA,EAAW,KAAA,CAAM,IAAA,CAAK,WAAA,EAAY;AAAA,IAClC,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,QAAQC,OAAAA,CAAO;AAAA,MACb,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,WAAA,EAAY;AAAA,MAC7B,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,WAAW,KAAA,CAAM;AAAA,KAClB,CAAA;AAAA,IACD,MAAM,KAAA,CAAM;AAAA,GACd;AACF;AAEA,SAAS,gBAAgB,OAAA,EAAoD;AAC3E,EAAA,OAAOA,OAAAA;AAAA,IACL,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,MAAY;AAAA,MACvB,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,WAAA,EAAY;AAAA,MAC9B,WAAW,MAAA,CAAO,SAAA;AAAA,MAClB,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,IAAA,EAAM,CAAC,GAAG,MAAA,CAAO,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,WAAA,EAAa;AAAA,KACzD,CAAE;AAAA,GACJ;AACF;AAEA,SAAS,qBAAA,CACP,cAAA,EACA,WAAA,EACA,OAAA,EACQ;AACR,EAAA,MAAM,KAAA,GAAQD,WAAW,QAAQ,CAAA,CAC9B,OAAO,cAAc,CAAA,CACrB,OAAO,IAAI,CAAA,CACX,OAAO,WAAW,CAAA,CAClB,OAAO,IAAI,CAAA,CACX,OAAO,OAAO,CAAA,CACd,OAAO,KAAK,CAAA;AACf,EAAA,MAAM,UAAA,GAAa,OAAO,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,EAAG,CAAC,GAAG,EAAE,CAAA;AACxD,EAAA,OAAO,UAAA,GAAa,IAAI,UAAA,GAAa,CAAA;AACvC;AAEO,SAAS,6BACd,KAAA,EACwB;AACxB,EAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,KAAA,CAAM,IAAI,CAAA;AAC1C,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,aAAA,EAAe,OAAA;AAAA,IACf,IAAA,EAAM,uBAAA;AAAA,IACN,MAAA,EAAQ,CAAC,GAAG,MAAM,CAAA,CAAE,IAAA;AAAA,MAAK,CAAC,IAAA,EAAM,KAAA,KAC9B,IAAA,CAAK,IAAA,CAAK,WAAA,EAAY,CAAE,aAAA,CAAc,KAAA,CAAM,IAAA,CAAK,WAAA,EAAa;AAAA;AAChE,GACF;AACA,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,IAAUC,OAAAA,CAAO,QAAQ,CAAA;AACnD,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,IAAW,MAAA,CAAO,IAAI,SAAS,CAAA;AACrD,EAAA,MAAM,YAAA,GAAe,gBAAgB,OAAO,CAAA;AAC5C,EAAA,MAAM,aACJ,KAAA,CAAM,UAAA,IAAc,sBAAsB,KAAA,CAAM,cAAA,EAAgB,aAAa,YAAY,CAAA;AAC3F,EAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,gBAAA,IAAoB,EAAC;AACpD,EAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,gBAAA,IAAoB,KAAA,CAAM,cAAA;AACzD,EAAA,MAAM,WAAA,GAAwC;AAAA,IAC5C,aAAA,EAAe,qBAAA;AAAA,IACf,YAAY,KAAA,CAAM,UAAA;AAAA,IAClB,gBAAgB,KAAA,CAAM,cAAA;AAAA,IACtB,UAAA;AAAA,IACA,MAAA,EAAQ,WAAA;AAAA,IACR,eAAA,EAAiB,YAAA;AAAA,IACjB,OAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,aAAA,EAAe,6BAAA;AAAA,MACf,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,gBAAgB,KAAA,CAAM,cAAA;AAAA,MACtB,gBAAA;AAAA,MACA,YAAA,EAAc,WAAA;AAAA,MACd,eAAA,EAAiB,YAAA;AAAA,MACjB;AAAA,KACF;AAAA,IACA,gBAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,UAAA;AAAA,MACA,MAAA,EAAQ,WAAA;AAAA,MACR,eAAA,EAAiB,YAAA;AAAA,MACjB,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,UAAA,EAAY;AAAA;AACd,GACF;AACA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,GAAG,QAAA;AAAA,MACH,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,UAAA;AAAA,MACA,MAAA,EAAQ,WAAA;AAAA,MACR,eAAA,EAAiB;AAAA,KACnB;AAAA,IACA;AAAA,GACF;AACF","file":"build.mjs","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/** @type {(value: string) => boolean} */\nconst isHexPair = RegExp.prototype.test.bind(/^[\\da-f]{2}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isUnreserved = RegExp.prototype.test.bind(/^[\\da-z\\-._~]$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isPathCharacter = RegExp.prototype.test.bind(/^[\\da-z\\-._~!$&'()*+,;=:@/]$/iu)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * Re-escape RFC 3986 gen-delims that must not appear literally in the host.\n * After the URI regex parses, these characters cannot be literal in the host\n * field, so any that appear after decoding came from percent-encoding and\n * must be restored to prevent authority structure changes.\n *\n * @param {string} host\n * @param {boolean} isIP - true for IPv4/IPv6 hosts (skip colon re-escaping)\n * @returns {string}\n */\nconst HOST_DELIMS = { '@': '%40', '/': '%2F', '?': '%3F', '#': '%23', ':': '%3A' }\nconst HOST_DELIM_RE = /[@/?#:]/g\nconst HOST_DELIM_NO_COLON_RE = /[@/?#]/g\n\nfunction reescapeHostDelimiters (host, isIP) {\n const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE\n re.lastIndex = 0\n return host.replace(re, (ch) => HOST_DELIMS[ch])\n}\n\n/**\n * Normalizes percent escapes and optionally decodes only unreserved ASCII bytes.\n * Reserved delimiters such as `%2F` and `%2E` stay escaped.\n *\n * @param {string} input\n * @param {boolean} [decodeUnreserved=false]\n * @returns {string}\n */\nfunction normalizePercentEncoding (input, decodeUnreserved = false) {\n if (input.indexOf('%') === -1) {\n return input\n }\n\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decodeUnreserved && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n output += input[i]\n }\n\n return output\n}\n\n/**\n * Normalizes path data without turning reserved escapes into live path syntax.\n * Valid escapes are uppercased, raw unsafe characters are escaped, and only\n * unreserved bytes that are not `.` are decoded.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizePathEncoding (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decoded !== '.' && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n if (isPathCharacter(input[i])) {\n output += input[i]\n } else {\n output += escape(input[i])\n }\n }\n\n return output\n}\n\n/**\n * Escapes a component while preserving existing valid percent escapes.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction escapePreservingEscapes (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n output += '%' + hex.toUpperCase()\n i += 2\n continue\n }\n }\n\n output += escape(input[i])\n }\n\n return output\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = reescapeHostDelimiters(host, false)\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n reescapeHostDelimiters,\n normalizePercentEncoding,\n normalizePathEncoding,\n escapePreservingEscapes,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (normalizeString(uri, options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n const normalizedA = normalizeComparableURI(uriA, options)\n const normalizedB = normalizeComparableURI(uriB, options)\n\n return normalizedA !== undefined && normalizedB !== undefined && normalizedA.toLowerCase() === normalizedB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escapePreservingEscapes(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = normalizePercentEncoding(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {import('./types/index').URIComponent} parsed\n * @param {RegExpMatchArray} matches\n * @returns {string|undefined}\n */\nfunction getParseError (parsed, matches) {\n if (matches[2] !== undefined && parsed.path && parsed.path[0] !== '/') {\n return 'URI path must start with \"/\" when authority is present.'\n }\n\n if (typeof parsed.port === 'number' && (parsed.port < 0 || parsed.port > 65535)) {\n return 'URI port is malformed.'\n }\n\n return undefined\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ parsed: import('./types/index').URIComponent, malformedAuthorityOrPort: boolean }}\n */\nfunction parseWithStatus (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let malformedAuthorityOrPort = false\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n\n const parseError = getParseError(parsed, matches)\n if (parseError !== undefined) {\n parsed.error = parsed.error || parseError\n malformedAuthorityOrPort = true\n }\n\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP)\n }\n }\n if (parsed.path) {\n parsed.path = normalizePathEncoding(parsed.path)\n }\n if (parsed.fragment) {\n try {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n } catch {\n parsed.error = parsed.error || 'URI malformed'\n }\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return { parsed, malformedAuthorityOrPort }\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n return parseWithStatus(uri, opts).parsed\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction normalizeString (uri, opts) {\n return normalizeStringWithStatus(uri, opts).normalized\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ normalized: string, malformedAuthorityOrPort: boolean }}\n */\nfunction normalizeStringWithStatus (uri, opts) {\n const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts)\n return {\n normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),\n malformedAuthorityOrPort\n }\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string|undefined}\n */\nfunction normalizeComparableURI (uri, opts) {\n if (typeof uri === 'string') {\n const { normalized, malformedAuthorityOrPort } = normalizeStringWithStatus(uri, opts)\n return malformedAuthorityOrPort ? undefined : normalized\n }\n\n if (typeof uri === 'object') {\n return serialize(uri, opts)\n }\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n specialNumbers?: \"fast\" | \"null\" // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = Object.create(null)\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n if ($data) {\n const {regExp} = it.opts.code\n const regExpCode = regExp.code === \"new RegExp\" ? _`new RegExp` : useFunc(gen, regExp)\n const valid = gen.let(\"valid\")\n gen.try(\n () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n () => gen.assign(valid, false)\n )\n cxt.fail$data(_`!${valid}`)\n } else {\n const regExp = usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n","import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n | \"date\"\n | \"time\"\n | \"date-time\"\n | \"iso-time\"\n | \"iso-date-time\"\n | \"duration\"\n | \"uri\"\n | \"uri-reference\"\n | \"uri-template\"\n | \"url\"\n | \"email\"\n | \"hostname\"\n | \"ipv4\"\n | \"ipv6\"\n | \"regex\"\n | \"uuid\"\n | \"json-pointer\"\n | \"json-pointer-uri-fragment\"\n | \"relative-json-pointer\"\n | \"byte\"\n | \"int32\"\n | \"int64\"\n | \"float\"\n | \"double\"\n | \"password\"\n | \"binary\"\n\nexport type DefinedFormats = {\n [key in FormatName]: Format\n}\n\nfunction fmtDef(\n validate: RegExp | FormatValidator<string>,\n compare: FormatCompare<string>\n): FormatDefinition<string> {\n return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: fmtDef(date, compareDate),\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: fmtDef(getTime(true), compareTime),\n \"date-time\": fmtDef(getDateTime(true), compareDateTime),\n \"iso-time\": fmtDef(getTime(), compareIsoTime),\n \"iso-date-time\": fmtDef(getDateTime(), compareIsoDateTime),\n // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n uri,\n \"uri-reference\":\n /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n // uri-template: https://tools.ietf.org/html/rfc6570\n \"uri-template\":\n /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n // For the source: https://gist.github.com/dperini/729294\n // For test cases: https://mathiasbynens.be/demo/url-regex\n url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n email:\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname:\n /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/,\n ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n // byte: https://github.com/miguelmota/is-base64\n byte,\n // signed 32 bit integer\n int32: {type: \"number\", validate: validateInt32},\n // signed 64 bit integer\n int64: {type: \"number\", validate: validateInt64},\n // C-type float\n float: {type: \"number\", validate: validateNumber},\n // C-type double\n double: {type: \"number\", validate: validateNumber},\n // hint to the UI to hide input strings\n password: true,\n // unchecked string payload\n binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n ...fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareTime\n ),\n \"date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareDateTime\n ),\n \"iso-time\": fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoTime\n ),\n \"iso-date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoDateTime\n ),\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n email:\n /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str)\n if (!matches) return false\n const year: number = +matches[1]\n const month: number = +matches[2]\n const day: number = +matches[3]\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n if (!(d1 && d2)) return undefined\n if (d1 > d2) return 1\n if (d1 < d2) return -1\n return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i\n\nfunction getTime(strictTimeZone?: boolean): (str: string) => boolean {\n return function time(str: string): boolean {\n const matches: string[] | null = TIME.exec(str)\n if (!matches) return false\n const hr: number = +matches[1]\n const min: number = +matches[2]\n const sec: number = +matches[3]\n const tz: string | undefined = matches[4]\n const tzSign: number = matches[5] === \"-\" ? -1 : 1\n const tzH: number = +(matches[6] || 0)\n const tzM: number = +(matches[7] || 0)\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz)) return false\n if (hr <= 23 && min <= 59 && sec < 60) return true\n // leap second\n const utcMin = min - tzM * tzSign\n const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0)\n return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61\n }\n}\n\nfunction compareTime(s1: string, s2: string): number | undefined {\n if (!(s1 && s2)) return undefined\n const t1 = new Date(\"2020-01-01T\" + s1).valueOf()\n const t2 = new Date(\"2020-01-01T\" + s2).valueOf()\n if (!(t1 && t2)) return undefined\n return t1 - t2\n}\n\nfunction compareIsoTime(t1: string, t2: string): number | undefined {\n if (!(t1 && t2)) return undefined\n const a1 = TIME.exec(t1)\n const a2 = TIME.exec(t2)\n if (!(a1 && a2)) return undefined\n t1 = a1[1] + a1[2] + a1[3]\n t2 = a2[1] + a2[2] + a2[3]\n if (t1 > t2) return 1\n if (t1 < t2) return -1\n return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction getDateTime(strictTimeZone?: boolean): (str: string) => boolean {\n const time = getTime(strictTimeZone)\n\n return function date_time(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1])\n }\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const d1 = new Date(dt1).valueOf()\n const d2 = new Date(dt2).valueOf()\n if (!(d1 && d2)) return undefined\n return d1 - d2\n}\n\nfunction compareIsoDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n const res = compareDate(d1, d2)\n if (res === undefined) return undefined\n return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i\n\nfunction uri(str: string): boolean {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n BYTE.lastIndex = 0\n return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n if (Z_ANCHOR.test(str)) return false\n try {\n new RegExp(str)\n return true\n } catch (e) {\n return false\n }\n}\n","import type Ajv from \"ajv\"\nimport type {\n Plugin,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n Code,\n Name,\n ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n formatMaximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n formatMinimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n formatExclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n formatExclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const {gen, data, schemaCode, keyword, it} = cxt\n const {opts, self} = it\n if (!opts.validateFormats) return\n\n const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n if (fCxt.$data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n cxt.fail$data(\n or(\n _`typeof ${fmt} != \"object\"`,\n _`${fmt} instanceof RegExp`,\n _`typeof ${fmt}.compare != \"function\"`,\n compareCode(fmt)\n )\n )\n }\n\n function validateFormat(): void {\n const format = fCxt.schema as string\n const fmtDef: AddedFormat | undefined = self.formats[format]\n if (!fmtDef || fmtDef === true) return\n if (\n typeof fmtDef != \"object\" ||\n fmtDef instanceof RegExp ||\n typeof fmtDef.compare != \"function\"\n ) {\n throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`)\n }\n const fmt = gen.scopeValue(\"formats\", {\n key: format,\n ref: fmtDef,\n code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n })\n\n cxt.fail$data(compareCode(fmt))\n }\n\n function compareCode(fmt: Name): Code {\n return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n }\n },\n dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {\n ajv.addKeyword(formatLimitDefinition)\n return ajv\n}\n\nexport default formatLimitPlugin\n","import {\n DefinedFormats,\n FormatMode,\n FormatName,\n formatNames,\n fastFormats,\n fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n mode?: FormatMode\n formats?: FormatName[]\n keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin<FormatsPluginOptions> {\n get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n ajv: Ajv,\n opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n if (Array.isArray(opts)) {\n addFormats(ajv, opts, fullFormats, fullName)\n return ajv\n }\n const [formats, exportName] =\n opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n const list = opts.formats || formatNames\n addFormats(ajv, list, formats, exportName)\n if (opts.keywords) formatLimit(ajv)\n return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n const formats = mode === \"fast\" ? fastFormats : fullFormats\n const f = formats[name]\n if (!f) throw new Error(`Unknown format \"${name}\"`)\n return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n","import type { AssetArtifactError } from '@forgeax/engine-types';\nimport { err, ok, type Result } from '@forgeax/engine-types';\n\nexport interface ArtifactPathContext {\n readonly packageRoot: string;\n readonly guid: string;\n readonly artifactKey: string;\n}\n\nconst PATH_HINT =\n 'use a normalized package-relative artifact path without traversal, absolute prefixes, or remote URLs';\n\nexport function validateArtifactPath(\n locator: string,\n context: ArtifactPathContext,\n): Result<string, AssetArtifactError> {\n const decoded = decodeLocator(locator);\n if (!decoded.ok) return invalidPath(locator, context);\n\n const normalized = normalizeRelativePath(decoded.value);\n if (!normalized) return invalidPath(locator, context);\n\n return ok(normalized);\n}\n\nfunction decodeLocator(locator: string): Result<string, null> {\n let decoded = locator;\n try {\n for (let pass = 0; pass < 3; pass += 1) {\n const next = decodeURIComponent(decoded);\n if (next === decoded) break;\n decoded = next;\n }\n } catch {\n return err(null);\n }\n return ok(decoded);\n}\n\nfunction normalizeRelativePath(locator: string): string | null {\n if (locator.length === 0 || locator.includes('://')) return null;\n if (locator.startsWith('/') || /^[A-Za-z]:[\\\\/]/.test(locator)) return null;\n\n const segments = locator.replaceAll('\\\\', '/').split('/');\n const normalized: string[] = [];\n for (const segment of segments) {\n if (segment === '..') return null;\n if (segment === '' || segment === '.') continue;\n normalized.push(segment);\n }\n return normalized.length > 0 ? normalized.join('/') : null;\n}\n\nfunction invalidPath(\n locator: string,\n context: ArtifactPathContext,\n): Result<never, AssetArtifactError> {\n return err({\n code: 'asset-artifact-path-invalid',\n expected: 'a normalized package-relative artifact path',\n hint: PATH_HINT,\n detail: {\n guid: context.guid,\n artifactKey: context.artifactKey,\n observed: locator,\n expected: context.packageRoot,\n },\n });\n}\n","// errors.ts — PackError class (feat-20260513-guid-asset-package-system w15)\n//\n// Four-field surface: .code / .expected / .hint / .detail\n// Structurally parallel to AssetError / RhiError / RemoteError\n// (charter proposition 5 consistent abstraction).\n//\n// .detail is narrowed per .code via PackErrorDetail discriminated union\n// (requirements §6.2 AC-07; plan-strategy §D-5).\n\nimport type { PackErrorCode, PackErrorDetail } from '@forgeax/engine-types';\n\n/**\n * Structured error for the engine-pack disk scanner fail-fast chain.\n *\n * AI users consume via exhaustive switch on .code — no default case needed:\n * ```ts\n * switch (err.code) {\n * case 'pack-guid-collision':\n * console.error(err.detail.paths);\n * break;\n * case 'pack-cyclic-reference':\n * console.error(err.detail.cycle);\n * break;\n * // ...all 8 cases\n * }\n * ```\n */\nexport class PackError extends Error {\n readonly code: PackErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: PackErrorDetail;\n\n constructor(args: {\n code: PackErrorCode;\n expected: string;\n hint: string;\n detail: PackErrorDetail;\n }) {\n super(`[PackError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n this.name = 'PackError';\n this.code = args.code;\n this.expected = args.expected;\n this.hint = args.hint;\n this.detail = args.detail;\n }\n}\n","import { uuidv7obj } from 'uuidv7';\nimport { PackError } from './errors.js';\n\n/**\n * 16-byte UUID branded ABI. Prevents assignment from plain Uint8Array or string.\n * Brand field mirrors the declaration in @forgeax/engine-types for cross-package\n * structural compatibility (both use __guidBrand: 'AssetGuid').\n */\nexport type AssetGuid = Uint8Array & { readonly __guidBrand: 'AssetGuid' };\n\n/** Minimal Result alias for this module (structurally compatible with ScanResult). */\nexport type GuidResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction brand(bytes: Uint8Array): AssetGuid {\n return bytes as AssetGuid;\n}\n\nconst HEX_BYTE = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n\nfunction bytesToDashForm(bytes: Uint8Array): string {\n const h = HEX_BYTE;\n // biome-ignore lint/style/noNonNullAssertion: length guaranteed 16\n return `${h[bytes[0]!]}${h[bytes[1]!]}${h[bytes[2]!]}${h[bytes[3]!]}-${h[bytes[4]!]}${h[bytes[5]!]}-${h[bytes[6]!]}${h[bytes[7]!]}-${h[bytes[8]!]}${h[bytes[9]!]}-${h[bytes[10]!]}${h[bytes[11]!]}${h[bytes[12]!]}${h[bytes[13]!]}${h[bytes[14]!]}${h[bytes[15]!]}`;\n}\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nexport function isValidAssetGuidString(value: unknown): value is string {\n return typeof value === 'string' && UUID_RE.test(value);\n}\n\nfunction dashFormToBytes(dashForm: string): Uint8Array {\n const hex = dashForm.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\n/**\n * Utilities for the AssetGuid branded 16-byte UUID type.\n * Declare the type via `import type { AssetGuid } from '@forgeax/engine-pack/guid'`\n * or `import type { AssetGuid } from '@forgeax/engine-types'`.\n */\nexport const AssetGuid = {\n /**\n * Parse a 36-char RFC 4122 dash-form UUID string into an AssetGuid.\n * Returns Ok(AssetGuid) on success or Err(PackError) with code 'pack-guid-malformed' on failure.\n * Never throws for expected failures (requirements §4.2 / §14 / charter proposition 4).\n */\n parse(dashForm: string): GuidResult<AssetGuid, PackError> {\n if (!isValidAssetGuidString(dashForm)) {\n return {\n ok: false,\n error: new PackError({\n code: 'pack-guid-malformed',\n expected: '36-char RFC 4122 dash-form UUID',\n hint: 'use AssetGuid.random() or a UUIDv7 generator; all GUID fields must be 36-char RFC 4122 dash-form',\n detail: {\n raw: dashForm,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n },\n }),\n };\n }\n return { ok: true, value: brand(dashFormToBytes(dashForm)) };\n },\n\n /**\n * Format an AssetGuid as a 36-char RFC 4122 lowercase dash-form string.\n */\n format(guid: AssetGuid): string {\n return bytesToDashForm(guid);\n },\n\n /**\n * Test byte-by-byte equality between two AssetGuids.\n */\n equals(a: AssetGuid, b: AssetGuid): boolean {\n for (let i = 0; i < 16; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n },\n\n /**\n * Mint a new time-ordered UUIDv7 as an AssetGuid.\n * Works in both Node.js and browser environments.\n */\n random(): AssetGuid {\n const uuid = uuidv7obj();\n const bytes = new Uint8Array(16);\n bytes.set(uuid.bytes);\n return brand(bytes);\n },\n} as const;\n","import type { Asset, AssetGuid, AssetPublicationEnvelope, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport { AssetGuid as AssetGuidCodec } from './guid.js';\n\n/** Closed ordinary kind vocabulary shared by authoring, producers, and loaders. */\nexport type ScriptablePackAssetKind = Asset['kind'];\n\n/** Complete ordinary Asset kind vocabulary exposed by ScriptablePack discovery. */\nexport const SCRIPTABLE_PACK_ASSET_KINDS = [\n 'mesh',\n 'material',\n 'scene',\n 'texture',\n 'equirect',\n 'sampler',\n 'font',\n 'render-pipeline',\n 'tileset',\n 'video',\n 'skeleton',\n 'skin',\n 'animation-clip',\n 'animation-graph',\n 'audio',\n 'particle-effect',\n] as const satisfies readonly ScriptablePackAssetKind[];\n\n/** Machine-readable producer/loader floor owned by engine-pack. */\nexport const SCRIPTABLE_PACK_CAPABILITY_MANIFEST = {\n assetKinds: SCRIPTABLE_PACK_ASSET_KINDS,\n durablePayload: true,\n refs: true,\n artifacts: true,\n hostCapabilities: ['audio-install', 'video-play', 'particle-execute'] as const,\n} as const;\n\nexport function isScriptablePackAssetKind(value: string): value is ScriptablePackAssetKind {\n return (SCRIPTABLE_PACK_ASSET_KINDS as readonly string[]).includes(value);\n}\n\nexport interface ScriptablePackAssetDeclaration<\n TKind extends ScriptablePackAssetKind = ScriptablePackAssetKind,\n> {\n readonly guid: AssetGuid;\n readonly kind: TKind;\n readonly name?: string;\n}\n\nexport type ScriptablePackAssetDeclarations = Readonly<\n Record<string, ScriptablePackAssetDeclaration>\n>;\n\nexport type ScriptablePackExternalAssets = Readonly<Record<string, AssetGuid>>;\n\n/**\n * Component-shaped input accepted by a ScriptablePack scene declaration.\n * Engine component tokens satisfy this shape; plain `{ type }` rows keep the\n * Pack contract independent of ECS and survive the isolated module worker.\n */\nexport interface ScriptablePackSceneComponentInput {\n readonly name: string;\n readonly fields: Readonly<Record<string, string | { readonly type: string }>>;\n}\n\n/** Neutral scene schema projection owned by the Pack definition. */\nexport interface ScriptablePackSceneComponent {\n readonly name: string;\n readonly fields: Readonly<Record<string, string>>;\n}\n\nfunction sceneComponentFieldType(value: unknown): string | undefined {\n if (typeof value === 'string') return value;\n if (isRecord(value) && typeof value.type === 'string') return value.type;\n return undefined;\n}\n\n/** Derive the frozen, ECS-neutral schema used by scene output producers. */\nexport function projectScriptablePackSceneComponents(\n components: readonly ScriptablePackSceneComponentInput[] | undefined,\n): readonly ScriptablePackSceneComponent[] {\n return (components ?? []).map((component) => ({\n name: component.name,\n fields: Object.fromEntries(\n Object.entries(component.fields).map(([fieldName, field]) => [\n fieldName,\n sceneComponentFieldType(field) as string,\n ]),\n ),\n }));\n}\n\n/** Pack-facing name for the shared Engine publication envelope. */\nexport type ScriptablePackPublicationEnvelope = AssetPublicationEnvelope;\n\n/** Structured domain failure permitted to cross the isolated build-time AssetReader seam. */\nexport interface ScriptablePackErrorProvenance {\n /** Published source generation observed by the reader, when available. */\n readonly generation?: number;\n /** Stable producer identity for the failed output, when available. */\n readonly sourceKey?: string;\n /** GUID associated with the failed read or output, when available. */\n readonly guid?: string;\n}\n\nexport interface ScriptablePackReadError {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n readonly provenance?: ScriptablePackErrorProvenance;\n}\n\nexport type ScriptablePackAssetFor<TDescriptor extends ScriptablePackAssetDeclaration> =\n TDescriptor extends { readonly kind: infer TKind extends ScriptablePackAssetKind }\n ? Extract<Asset, { readonly kind: TKind }>\n : never;\n\nexport type ScriptablePackOutputs<TAssets extends ScriptablePackAssetDeclarations> = {\n readonly [TKey in keyof TAssets]: TAssets[TKey] extends ScriptablePackAssetDeclaration\n ? ScriptablePackAssetFor<TAssets[TKey]>\n : never;\n};\n\nexport interface AssetReader {\n /** Load a declared GUID as a durable payload; this never mints a World handle. */\n readByGuid<TAsset extends Asset = Asset>(\n guid: AssetGuid,\n ): Promise<Result<TAsset, ScriptablePackReadError>>;\n}\n\nexport type ScriptablePackBuildResult<\n TAssets extends ScriptablePackAssetDeclarations,\n TError,\n> = Result<ScriptablePackOutputs<TAssets>, TError>;\n\nexport interface ScriptablePackDefinition<\n TAssets extends ScriptablePackAssetDeclarations = ScriptablePackAssetDeclarations,\n TExternal extends ScriptablePackExternalAssets = ScriptablePackExternalAssets,\n TError = ScriptablePackReadError,\n> {\n readonly schemaVersion: '1.0.0';\n readonly packageId: AssetGuid;\n readonly name?: string;\n readonly assets: TAssets;\n /** Component tokens/schema rows used by scene ref externalization. */\n readonly sceneComponents?: readonly ScriptablePackSceneComponentInput[];\n readonly externalAssets: TExternal;\n readonly build: (\n assetReader: AssetReader,\n ) =>\n | ScriptablePackBuildResult<TAssets, TError>\n | Promise<ScriptablePackBuildResult<TAssets, TError>>;\n}\n\nexport interface ScriptablePackSourceClosureEntry {\n readonly path: string;\n readonly digest: string;\n}\n\nexport interface ScriptablePackMetaJson {\n readonly schemaVersion: '1.0.0';\n readonly kind: 'external-asset-package';\n readonly packageId: string;\n readonly name?: string;\n readonly importer: 'pack-ts';\n readonly source: string;\n readonly importSettings: {\n readonly contractVersion: '1.0.0';\n readonly externalAssets: readonly {\n readonly alias: string;\n readonly guid: string;\n }[];\n };\n readonly subAssets: readonly {\n readonly guid: string;\n readonly sourceIndex: number;\n readonly sourceKey: string;\n readonly kind: ScriptablePackAssetKind;\n readonly name?: string;\n }[];\n}\n\nexport interface ScriptablePackOperationEnvelope {\n readonly requestId: string;\n readonly expectedRevision?: string;\n}\n\nexport type ScriptablePackGatewayOperation =\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'preflight';\n readonly sourcePath: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'create-scriptable-pack';\n readonly sourcePath: string;\n readonly name?: string;\n readonly initialOutput: {\n readonly sourceKey: string;\n readonly kind: ScriptablePackAssetKind;\n readonly name?: string;\n };\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'add-output';\n readonly sourcePath: string;\n readonly sourceKey: string;\n readonly assetKind: ScriptablePackAssetKind;\n readonly name?: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'add-external-asset';\n readonly sourcePath: string;\n readonly alias: string;\n readonly guid: AssetGuid;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'rename-display';\n readonly sourcePath: string;\n readonly target:\n | { readonly kind: 'package' }\n | { readonly kind: 'output'; readonly sourceKey: string };\n readonly name: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'remove-output';\n readonly sourcePath: string;\n readonly sourceKey: string;\n /** Exact incoming reference identities acknowledged by the caller. */\n readonly confirmIncomingRefs?: readonly string[];\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'clone-scriptable-pack';\n readonly sourcePath: string;\n readonly targetPath: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'inspect-meta';\n readonly sourcePath: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'rebuild' | 'cold-cook';\n readonly sourcePath: string;\n });\n\nexport interface ScriptablePackMutationCapabilities {\n readonly inspect: true;\n readonly rebuild: true;\n readonly coldCook: true;\n readonly create?: true;\n readonly addOutput?: true;\n readonly addExternalAsset?: true;\n readonly renameDisplay?: true;\n readonly removeOutput?: true;\n readonly clone?: true;\n readonly reason?: string;\n}\n\nexport interface ScriptablePackPreflight {\n readonly sourcePath: string;\n readonly revision: string;\n readonly meta: ScriptablePackMetaJson;\n readonly capabilities: ScriptablePackMutationCapabilities;\n readonly incomingRefs: readonly string[];\n}\n\nexport interface ScriptablePackGatewayMutation {\n readonly sourcePath: string;\n readonly revision: string;\n readonly meta: ScriptablePackMetaJson;\n}\n\nexport interface ScriptablePackAuthoringGateway {\n execute(\n operation: ScriptablePackGatewayOperation,\n ): Promise<Result<ScriptablePackGatewayMutation | ScriptablePackPreflight, ScriptablePackError>>;\n}\n\nexport type ScriptablePackAuthoringMutation =\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'create-scriptable-pack';\n readonly sourcePath: string;\n readonly packageId: AssetGuid;\n readonly name?: string;\n readonly initialOutput: {\n readonly sourceKey: string;\n readonly kind: ScriptablePackAssetKind;\n readonly guid: AssetGuid;\n readonly name?: string;\n };\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'add-output';\n readonly sourcePath: string;\n readonly sourceKey: string;\n readonly assetKind: ScriptablePackAssetKind;\n readonly guid: AssetGuid;\n readonly name?: string;\n })\n | Extract<\n ScriptablePackGatewayOperation,\n { readonly kind: 'add-external-asset' | 'rename-display' | 'remove-output' }\n >\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'clone-scriptable-pack';\n readonly sourcePath: string;\n readonly targetPath: string;\n readonly packageId: AssetGuid;\n readonly outputGuids: Readonly<Record<string, AssetGuid>>;\n });\n\nexport interface ScriptablePackAuthoringPort {\n preflight(\n sourcePath: string,\n ): Promise<Result<Omit<ScriptablePackPreflight, 'sourcePath'>, ScriptablePackError>>;\n mutate(\n operation: ScriptablePackAuthoringMutation,\n ): Promise<\n Result<{ readonly sourcePath: string; readonly revision: string }, ScriptablePackError>\n >;\n inspect(\n sourcePath: string,\n ): Promise<\n Result<\n { readonly revision: string; readonly meta: ScriptablePackMetaJson },\n ScriptablePackError\n >\n >;\n rebuild(\n sourcePath: string,\n mode: 'rebuild' | 'cold-cook',\n ): Promise<\n Result<\n { readonly revision: string; readonly meta: ScriptablePackMetaJson },\n ScriptablePackError\n >\n >;\n}\n\n/** Keep GUID allocation and multi-identity operations in one auditable gateway transaction. */\nexport function createScriptablePackAuthoringGateway(\n port: ScriptablePackAuthoringPort,\n allocateGuid: () => AssetGuid = AssetGuidCodec.random,\n): ScriptablePackAuthoringGateway {\n const requests = new Map<\n string,\n {\n readonly fingerprint: string;\n readonly result: Promise<\n Result<ScriptablePackGatewayMutation | ScriptablePackPreflight, ScriptablePackError>\n >;\n }\n >();\n\n async function mutationResult(\n result: Awaited<ReturnType<ScriptablePackAuthoringPort['mutate']>>,\n ): Promise<Result<ScriptablePackGatewayMutation, ScriptablePackError>> {\n if (!result.ok) return result;\n const inspected = await port.inspect(result.value.sourcePath);\n if (!inspected.ok) return inspected;\n return ok({\n sourcePath: result.value.sourcePath,\n revision: inspected.value.revision,\n meta: inspected.value.meta,\n });\n }\n\n async function dispatch(\n operation: ScriptablePackGatewayOperation,\n ): Promise<Result<ScriptablePackGatewayMutation | ScriptablePackPreflight, ScriptablePackError>> {\n switch (operation.kind) {\n case 'preflight': {\n const preflight = await port.preflight(operation.sourcePath);\n return preflight.ok\n ? ok({ sourcePath: operation.sourcePath, ...preflight.value })\n : preflight;\n }\n case 'inspect-meta': {\n const inspected = await port.inspect(operation.sourcePath);\n return inspected.ok\n ? ok({ sourcePath: operation.sourcePath, ...inspected.value })\n : inspected;\n }\n case 'rebuild':\n case 'cold-cook': {\n const preflight = await port.preflight(operation.sourcePath);\n if (!preflight.ok) return preflight;\n if (\n operation.expectedRevision !== undefined &&\n operation.expectedRevision !== preflight.value.revision\n ) {\n return err({\n code: 'pack-source-revision-conflict',\n expected: operation.expectedRevision,\n actual: preflight.value.revision,\n hint: 'inspect the current source revision, then retry the build with a new requestId',\n retryable: true,\n recoveryActions: ['asset.preflight', 'mint-request-id'],\n detail: { requestId: operation.requestId, sourcePath: operation.sourcePath },\n });\n }\n const rebuilt = await port.rebuild(operation.sourcePath, operation.kind);\n return rebuilt.ok ? ok({ sourcePath: operation.sourcePath, ...rebuilt.value }) : rebuilt;\n }\n case 'create-scriptable-pack':\n return mutationResult(\n await port.mutate({\n ...operation,\n packageId: allocateGuid(),\n initialOutput: { ...operation.initialOutput, guid: allocateGuid() },\n }),\n );\n case 'add-output':\n return mutationResult(await port.mutate({ ...operation, guid: allocateGuid() }));\n case 'clone-scriptable-pack': {\n const inspected = await port.inspect(operation.sourcePath);\n if (!inspected.ok) return inspected;\n const outputGuids = Object.fromEntries(\n inspected.value.meta.subAssets.map((asset) => [asset.sourceKey, allocateGuid()]),\n );\n return mutationResult(\n await port.mutate({\n ...operation,\n packageId: allocateGuid(),\n outputGuids,\n }),\n );\n }\n case 'add-external-asset':\n case 'rename-display':\n case 'remove-output':\n return mutationResult(await port.mutate(operation));\n }\n }\n\n return {\n execute(operation) {\n if (operation.requestId.trim().length === 0) {\n return Promise.resolve(\n err({\n code: 'pack-source-operation-committed',\n expected: 'a non-empty caller-minted requestId',\n actual: operation.requestId,\n hint: 'mint a new requestId and retry the operation once',\n retryable: true,\n recoveryActions: ['mint-request-id'],\n detail: { requestId: operation.requestId, sourcePath: operation.sourcePath },\n }),\n );\n }\n const fingerprint = JSON.stringify(operation);\n const prior = requests.get(operation.requestId);\n if (prior !== undefined) {\n if (prior.fingerprint === fingerprint) return prior.result;\n return Promise.resolve(\n err({\n code: 'pack-source-operation-committed',\n expected: 'one immutable operation per requestId',\n actual: operation.kind,\n hint: 'read the original operation result or mint a new requestId',\n retryable: false,\n recoveryActions: ['read-operation-run', 'mint-request-id'],\n detail: { requestId: operation.requestId, sourcePath: operation.sourcePath },\n }),\n );\n }\n const result = dispatch(operation);\n requests.set(operation.requestId, { fingerprint, result });\n return result;\n },\n };\n}\n\nconst SCRIPTABLE_PACK_REQUEST_ID_SCHEMA = {\n type: 'string',\n minLength: 1,\n maxLength: 128,\n pattern: '^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$',\n description: 'Caller-minted identity for one idempotent ScriptablePack operation.',\n} as const;\nconst SCRIPTABLE_PACK_SOURCE_PATH_SCHEMA = {\n type: 'string',\n minLength: 8,\n pattern: '^[^/].*\\\\.pack\\\\.ts$',\n description: 'Game-root-relative ScriptablePack source path.',\n} as const;\nconst SCRIPTABLE_PACK_OWNER_GUID_SCHEMA = {\n type: 'string',\n format: 'uuid',\n description: 'Catalog GUID used to resolve the producer-owned source subject.',\n} as const;\nconst SCRIPTABLE_PACK_REVISION_SCHEMA = {\n type: 'string',\n minLength: 64,\n maxLength: 64,\n pattern: '^[a-f0-9]{64}$',\n description: 'SHA-256 source revision returned by preflight.',\n} as const;\nconst SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA = { type: 'string', minLength: 1 } as const;\nconst SCRIPTABLE_PACK_ASSET_KIND_SCHEMA = {\n enum: SCRIPTABLE_PACK_ASSET_KINDS,\n description: 'Ordinary Asset kind supported by the ScriptablePack producer/loader matrix.',\n} as const;\nconst SCRIPTABLE_PACK_NAME_SCHEMA = { type: 'string', minLength: 1 } as const;\n\nfunction scriptablePackArgsSchema(\n properties: Readonly<Record<string, unknown>>,\n required: readonly string[],\n options: { readonly subject?: boolean; readonly guidSubject?: boolean } = {},\n) {\n const subjectRequired = ['requestId', ...required];\n return {\n type: 'object',\n properties: {\n sourcePath: SCRIPTABLE_PACK_SOURCE_PATH_SCHEMA,\n ownerGuid: SCRIPTABLE_PACK_OWNER_GUID_SCHEMA,\n requestId: SCRIPTABLE_PACK_REQUEST_ID_SCHEMA,\n ...properties,\n },\n required: subjectRequired,\n ...(options.subject === false\n ? {}\n : {\n anyOf: [\n { required: [...subjectRequired, 'sourcePath'] },\n { required: [...subjectRequired, 'ownerGuid'] },\n ...(options.guidSubject === false ? [] : [{ required: [...subjectRequired, 'guid'] }]),\n ],\n }),\n additionalProperties: false,\n } as const;\n}\n\nexport const SOURCE_AUTHORING_OPERATION_DESCRIPTORS = [\n {\n id: 'asset-source.create',\n kind: 'create',\n domain: 'session',\n title: 'Create Asset Source',\n argsSchema: scriptablePackArgsSchema(\n {\n name: SCRIPTABLE_PACK_NAME_SCHEMA,\n initialOutput: {\n type: 'object',\n properties: {\n sourceKey: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n kind: SCRIPTABLE_PACK_ASSET_KIND_SCHEMA,\n name: SCRIPTABLE_PACK_NAME_SCHEMA,\n },\n required: ['sourceKey', 'kind'],\n additionalProperties: false,\n },\n },\n ['sourcePath', 'initialOutput'],\n { subject: false },\n ),\n },\n {\n id: 'asset-source.add-output',\n kind: 'add-output',\n domain: 'session',\n title: 'Add Asset Source Output',\n argsSchema: scriptablePackArgsSchema(\n {\n sourceKey: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n assetKind: SCRIPTABLE_PACK_ASSET_KIND_SCHEMA,\n name: SCRIPTABLE_PACK_NAME_SCHEMA,\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['sourceKey', 'assetKind', 'expectedRevision'],\n ),\n },\n {\n id: 'asset-source.add-external-asset',\n kind: 'add-external-asset',\n domain: 'session',\n title: 'Add Asset Source External Asset',\n argsSchema: scriptablePackArgsSchema(\n {\n alias: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n guid: { type: 'string', format: 'uuid' },\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['alias', 'guid', 'expectedRevision'],\n { guidSubject: false },\n ),\n },\n {\n id: 'asset-source.rename',\n kind: 'rename',\n domain: 'session',\n title: 'Rename Asset Source Display Name',\n argsSchema: scriptablePackArgsSchema(\n {\n target: {\n oneOf: [\n {\n type: 'object',\n properties: { kind: { const: 'package' } },\n required: ['kind'],\n additionalProperties: false,\n },\n {\n type: 'object',\n properties: {\n kind: { const: 'output' },\n sourceKey: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n },\n required: ['kind', 'sourceKey'],\n additionalProperties: false,\n },\n ],\n },\n name: SCRIPTABLE_PACK_NAME_SCHEMA,\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['target', 'name', 'expectedRevision'],\n ),\n },\n {\n id: 'asset-source.remove-output',\n kind: 'remove-output',\n domain: 'session',\n title: 'Remove Asset Source Output',\n destructive: true,\n argsSchema: scriptablePackArgsSchema(\n {\n sourceKey: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n confirmIncomingRefs: { type: 'array', items: { type: 'string' } },\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['sourceKey', 'expectedRevision'],\n ),\n },\n {\n id: 'asset-source.clone',\n kind: 'clone',\n domain: 'session',\n title: 'Clone Asset Source',\n argsSchema: scriptablePackArgsSchema(\n {\n targetPath: SCRIPTABLE_PACK_SOURCE_PATH_SCHEMA,\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['targetPath', 'expectedRevision'],\n ),\n },\n {\n id: 'asset-source.rebuild',\n kind: 'rebuild',\n domain: 'session',\n title: 'Rebuild Asset Source',\n argsSchema: scriptablePackArgsSchema({ expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA }, [\n 'expectedRevision',\n ]),\n },\n {\n id: 'asset-source.cold-cook',\n kind: 'cold-cook',\n domain: 'session',\n title: 'Cold Cook Asset Source',\n argsSchema: scriptablePackArgsSchema({ expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA }, [\n 'expectedRevision',\n ]),\n },\n] as const;\n\nexport type ScriptablePackError =\n | {\n readonly code: 'pack-source-load-failed';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly sourcePath: string;\n readonly reason: 'module-load' | 'timeout' | 'source-changed';\n readonly phase: 'module-load' | 'build';\n readonly diagnostic: string;\n readonly timeoutMs?: number;\n };\n }\n | {\n readonly code: 'pack-source-definition-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly sourcePath?: string;\n readonly propertyPath: string;\n readonly actual: string;\n };\n }\n | {\n readonly code: 'pack-source-output-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly missingGuids: readonly string[];\n readonly unexpectedSourceKeys: readonly string[];\n readonly kindMismatches: readonly {\n readonly sourceKey: string;\n readonly expected: string;\n readonly actual: string;\n }[];\n };\n }\n | {\n readonly code: 'pack-source-external-closure-mismatch';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly undeclaredReferencedGuids: readonly string[];\n readonly undeclaredReadGuids: readonly string[];\n readonly unusedDeclaredGuids: readonly string[];\n };\n }\n | {\n readonly code:\n | 'pack-source-path-invalid'\n | 'pack-source-revision-conflict'\n | 'pack-source-mutation-unsupported'\n | 'pack-source-reference-conflict'\n | 'pack-source-write-failed'\n | 'pack-source-build-cycle'\n | 'pack-source-publication-timeout'\n | 'pack-source-operation-committed';\n readonly expected: string;\n readonly actual?: string;\n readonly hint: string;\n readonly retryable: boolean;\n readonly recoveryActions: readonly string[];\n readonly detail: {\n readonly requestId?: string;\n readonly sourcePath?: string;\n readonly packageId?: string;\n readonly sourceKey?: string;\n readonly incomingRefs?: readonly string[];\n };\n };\n\nfunction actual(value: unknown): string {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (ArrayBuffer.isView(value)) return value.constructor.name;\n return typeof value;\n}\n\nfunction invalid(\n propertyPath: string,\n expected: string,\n value: unknown,\n sourcePath?: string,\n): Result<never, ScriptablePackError> {\n return err({\n code: 'pack-source-definition-invalid',\n expected,\n hint: 'repair the default exported ScriptablePack definition, then inspect Meta again',\n detail: {\n ...(sourcePath === undefined ? {} : { sourcePath }),\n propertyPath,\n actual: actual(value),\n },\n });\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isAssetGuid(value: unknown): value is AssetGuid {\n return value instanceof Uint8Array && value.byteLength === 16;\n}\n\nfunction guidKey(guid: AssetGuid): string {\n return AssetGuidCodec.format(guid);\n}\n\nfunction freezeDefinition(\n definition: ScriptablePackDefinition,\n): Readonly<ScriptablePackDefinition> {\n const assets = Object.fromEntries(\n Object.entries(definition.assets).map(([sourceKey, descriptor]) => [\n sourceKey,\n Object.freeze({ ...descriptor, guid: descriptor.guid.slice() as AssetGuid }),\n ]),\n );\n const externalAssets = Object.fromEntries(\n Object.entries(definition.externalAssets).map(([alias, guid]) => [\n alias,\n guid.slice() as AssetGuid,\n ]),\n );\n const sceneComponents =\n definition.sceneComponents === undefined\n ? undefined\n : Object.freeze(\n projectScriptablePackSceneComponents(definition.sceneComponents).map((component) =>\n Object.freeze({\n ...component,\n fields: Object.freeze({ ...component.fields }),\n }),\n ),\n );\n return Object.freeze({\n ...definition,\n packageId: definition.packageId.slice() as AssetGuid,\n assets: Object.freeze(assets),\n externalAssets: Object.freeze(externalAssets),\n ...(sceneComponents === undefined ? {} : { sceneComponents }),\n });\n}\n\nexport function validateScriptablePackDefinition(\n value: unknown,\n sourcePath?: string,\n): Result<Readonly<ScriptablePackDefinition>, ScriptablePackError> {\n if (!isRecord(value))\n return invalid('$', 'a ScriptablePack definition object', value, sourcePath);\n if (value.schemaVersion !== '1.0.0') {\n return invalid('$.schemaVersion', \"the literal '1.0.0'\", value.schemaVersion, sourcePath);\n }\n if (!isAssetGuid(value.packageId)) {\n return invalid('$.packageId', 'a 16-byte AssetGuid', value.packageId, sourcePath);\n }\n if (value.name !== undefined && typeof value.name !== 'string') {\n return invalid('$.name', 'a string when present', value.name, sourcePath);\n }\n if (!isRecord(value.assets) || Object.keys(value.assets).length === 0) {\n return invalid(\n '$.assets',\n 'a non-empty sourceKey to descriptor object',\n value.assets,\n sourcePath,\n );\n }\n if (!isRecord(value.externalAssets)) {\n return invalid(\n '$.externalAssets',\n 'an alias to AssetGuid object',\n value.externalAssets,\n sourcePath,\n );\n }\n if (value.sceneComponents !== undefined) {\n if (!Array.isArray(value.sceneComponents)) {\n return invalid(\n '$.sceneComponents',\n 'an array of component tokens or neutral schema rows when present',\n value.sceneComponents,\n sourcePath,\n );\n }\n const componentNames = new Set<string>();\n for (const [componentIndex, component] of value.sceneComponents.entries()) {\n if (!isRecord(component)) {\n return invalid(\n `$.sceneComponents[${componentIndex}]`,\n 'a component token or neutral schema row',\n component,\n sourcePath,\n );\n }\n if (typeof component.name !== 'string' || component.name.trim().length === 0) {\n return invalid(\n `$.sceneComponents[${componentIndex}].name`,\n 'a non-empty component name',\n component.name,\n sourcePath,\n );\n }\n if (componentNames.has(component.name)) {\n return invalid(\n `$.sceneComponents[${componentIndex}].name`,\n 'component names to be unique within one ScriptablePack',\n component.name,\n sourcePath,\n );\n }\n componentNames.add(component.name);\n if (!isRecord(component.fields)) {\n return invalid(\n `$.sceneComponents[${componentIndex}].fields`,\n 'a field-name to schema-type object',\n component.fields,\n sourcePath,\n );\n }\n for (const [fieldName, field] of Object.entries(component.fields)) {\n const type = sceneComponentFieldType(field);\n if (fieldName.trim().length === 0 || type === undefined || type.trim().length === 0) {\n return invalid(\n `$.sceneComponents[${componentIndex}].fields`,\n 'field names with non-empty string schema types',\n field,\n sourcePath,\n );\n }\n }\n }\n }\n if (typeof value.build !== 'function') {\n return invalid('$.build', 'a build(assetReader) function', value.build, sourcePath);\n }\n\n const packageGuid = guidKey(value.packageId);\n const localGuids = new Set<string>();\n for (const [sourceKey, descriptor] of Object.entries(value.assets)) {\n if (sourceKey.trim().length === 0) {\n return invalid('$.assets', 'non-empty sourceKey object keys', sourceKey, sourcePath);\n }\n if (!isRecord(descriptor)) {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}]`,\n 'an asset descriptor',\n descriptor,\n sourcePath,\n );\n }\n if (!isAssetGuid(descriptor.guid)) {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}].guid`,\n 'a 16-byte AssetGuid',\n descriptor.guid,\n sourcePath,\n );\n }\n if (typeof descriptor.kind !== 'string' || !isScriptablePackAssetKind(descriptor.kind)) {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}].kind`,\n 'one of SCRIPTABLE_PACK_ASSET_KINDS',\n descriptor.kind,\n sourcePath,\n );\n }\n if (descriptor.name !== undefined && typeof descriptor.name !== 'string') {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}].name`,\n 'a string when present',\n descriptor.name,\n sourcePath,\n );\n }\n const guid = guidKey(descriptor.guid);\n if (guid === packageGuid || localGuids.has(guid)) {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}].guid`,\n 'a GUID unique within the package and distinct from packageId',\n descriptor.guid,\n sourcePath,\n );\n }\n localGuids.add(guid);\n }\n\n const externalGuids = new Set<string>();\n for (const [alias, guidValue] of Object.entries(value.externalAssets)) {\n if (alias.trim().length === 0) {\n return invalid('$.externalAssets', 'non-empty alias object keys', alias, sourcePath);\n }\n if (!isAssetGuid(guidValue)) {\n return invalid(\n `$.externalAssets[${JSON.stringify(alias)}]`,\n 'a 16-byte AssetGuid',\n guidValue,\n sourcePath,\n );\n }\n const guid = guidKey(guidValue);\n if (guid === packageGuid || localGuids.has(guid) || externalGuids.has(guid)) {\n return invalid(\n `$.externalAssets[${JSON.stringify(alias)}]`,\n 'a unique foreign GUID not owned by this package',\n guidValue,\n sourcePath,\n );\n }\n externalGuids.add(guid);\n }\n\n return ok(freezeDefinition(value as unknown as ScriptablePackDefinition));\n}\n\nexport function projectScriptablePackMeta(\n definition: ScriptablePackDefinition,\n source: string,\n): ScriptablePackMetaJson {\n const subAssets = Object.entries(definition.assets)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([sourceKey, descriptor], sourceIndex) => ({\n guid: guidKey(descriptor.guid),\n sourceIndex,\n sourceKey,\n kind: descriptor.kind,\n ...(descriptor.name === undefined ? {} : { name: descriptor.name }),\n }));\n const externalAssets = Object.entries(definition.externalAssets)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([alias, guid]) => ({ alias, guid: guidKey(guid) }));\n return {\n schemaVersion: '1.0.0',\n kind: 'external-asset-package',\n packageId: guidKey(definition.packageId),\n ...(definition.name === undefined ? {} : { name: definition.name }),\n importer: 'pack-ts',\n source,\n importSettings: { contractVersion: '1.0.0', externalAssets },\n subAssets,\n };\n}\n","import type {\n AssetAuthoringCapability,\n AssetPublicationEnvelope,\n AssetRelation,\n CatalogDiagnostic,\n CatalogEntryV2,\n CatalogLifecycle,\n CatalogSubject,\n CookExecution,\n PackIndexEntry,\n ProducerContractDiagnostic,\n ProducerContractResult,\n ProviderProvenance,\n ResourceRevision,\n SourceOverrideDescriptor,\n} from '@forgeax/engine-types';\nimport { authoringCapabilityForAssetKind, catalogOperationsFor } from '@forgeax/engine-types';\nimport { isScriptablePackAssetKind } from './scriptable-pack.js';\n\nexport function catalogProjectionFor(\n subject: 'internal-asset' | 'imported-output',\n execution: 'direct' | 'cooked',\n lifecycle: 'missing' | 'cooking' | 'current' | 'stale' | 'failed',\n) {\n return {\n subject,\n execution,\n lifecycle,\n operations: catalogOperationsFor({ subject, execution, lifecycle }),\n } as const;\n}\n\nexport function currentProjectionFor(\n subject: 'internal-asset' | 'imported-output',\n execution: 'direct' | 'cooked',\n) {\n return catalogRowProjectionFor(subject, execution, 'current');\n}\n\nfunction catalogRowProjectionFor(\n subject: 'internal-asset' | 'imported-output',\n execution: 'direct' | 'cooked',\n lifecycle: 'missing' | 'cooking' | 'current' | 'stale' | 'failed',\n) {\n const projection = catalogProjectionFor(subject, execution, lifecycle);\n return { ...projection, projection } as const;\n}\n\nexport interface CatalogProducerMeta {\n readonly schemaVersion: string | number;\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly provider?: string;\n readonly importer?: string;\n readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];\n}\n\nexport interface CatalogOutputDeclaration {\n readonly guid: string;\n readonly kind: string;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly relations?: PackIndexEntry['relations'];\n readonly authoring?: AssetAuthoringCapability;\n readonly refs?: readonly string[];\n readonly name?: string;\n}\n\nfunction referenceRelations(\n guid: string,\n refs: readonly string[] | undefined,\n provenance: ProviderProvenance,\n): readonly AssetRelation[] | undefined {\n if (refs === undefined || refs.length === 0) return undefined;\n return refs.map((ref) => ({\n from: { type: 'asset', id: guid } as const,\n to: { type: 'asset', id: ref } as const,\n type: 'references' as const,\n policy: { strength: 'required' as const },\n provenance,\n }));\n}\n\nfunction producerFields(\n producer: CatalogProducerMeta,\n output: CatalogOutputDeclaration,\n): Pick<\n PackIndexEntry,\n | 'packageId'\n | 'provenance'\n | 'revision'\n | 'sourceKey'\n | 'sourceIndex'\n | 'sourceOverrides'\n | 'sourceOverrideDescriptors'\n | 'relations'\n | 'diagnostics'\n | 'subject'\n | 'execution'\n | 'lifecycle'\n | 'projection'\n | 'authoring'\n> {\n const provenance =\n producer.provenance ??\n ({\n provider: producer.provider ?? producer.importer ?? 'engine',\n version: String(producer.schemaVersion),\n } satisfies ProviderProvenance);\n const relations = output.relations ?? referenceRelations(output.guid, output.refs, provenance);\n const inferred = authoringCapabilityForAssetKind(output.kind);\n return {\n provenance,\n ...(producer.packageId === undefined ? {} : { packageId: producer.packageId }),\n ...(producer.revision === undefined ? {} : { revision: producer.revision }),\n ...(output.sourceKey === undefined ? {} : { sourceKey: output.sourceKey }),\n ...(output.sourceIndex === undefined ? {} : { sourceIndex: output.sourceIndex }),\n ...(producer.sourceOverrides === undefined\n ? {}\n : { sourceOverrides: producer.sourceOverrides }),\n ...(producer.sourceOverrideDescriptors === undefined || output.sourceKey === undefined\n ? {}\n : {\n sourceOverrideDescriptors: producer.sourceOverrideDescriptors.filter(\n (descriptor) => descriptor.sourceKey === output.sourceKey,\n ),\n }),\n ...(relations === undefined ? {} : { relations }),\n ...(producer.diagnostics === undefined ? {} : { diagnostics: producer.diagnostics }),\n ...(output.authoring === undefined && inferred.ui === undefined\n ? {}\n : { authoring: output.authoring ?? inferred }),\n ...catalogRowProjectionFor('imported-output', 'cooked', 'missing'),\n };\n}\n\n/** Project producer declarations without interpreting a provider's kind vocabulary. */\nexport function projectExternalCatalogEntries(\n producer: CatalogProducerMeta,\n sourcePath: string,\n packageUrl: string,\n outputs: readonly CatalogOutputDeclaration[],\n nameFor?: (output: CatalogOutputDeclaration, index: number) => string | undefined,\n): PackIndexEntry[] {\n return outputs.map((output, index) => ({\n guid: output.guid,\n packageUrl,\n kind: output.kind,\n sourcePath,\n ...producerFields(producer, output),\n ...((nameFor?.(output, index) ?? output.name) === undefined\n ? {}\n : { name: nameFor?.(output, index) ?? output.name }),\n }));\n}\n\n/** Return the first declaration that would shadow an engine-owned Pack kind. */\nexport function findReservedAssetKindConflict(\n outputs: readonly Pick<CatalogOutputDeclaration, 'kind'>[],\n): Pick<CatalogOutputDeclaration, 'kind'> | undefined {\n return outputs.find((output) => isScriptablePackAssetKind(output.kind));\n}\n\nexport interface PackageCatalogInput {\n readonly guid: string;\n readonly kind: string;\n readonly sourcePath: string;\n readonly name?: string;\n readonly refs?: readonly string[];\n readonly authoring?: AssetAuthoringCapability;\n readonly execution?: 'direct' | 'cooked';\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];\n readonly relations?: PackIndexEntry['relations'];\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly cookReceiptUrl?: string;\n}\n\n/** Project self-contained Pack rows into the same Catalog contract as producer output. */\nexport function projectPackageCatalog(\n entries: readonly PackageCatalogInput[],\n packageUrl: string,\n): PackIndexEntry[] {\n return entries.map((entry) => {\n const execution = entry.execution ?? 'direct';\n const lifecycle = execution === 'cooked' ? 'missing' : 'current';\n const inferred = authoringCapabilityForAssetKind(entry.kind);\n const provenance =\n entry.provenance ?? ({ provider: 'pack', version: 'unknown' } satisfies ProviderProvenance);\n const relations = entry.relations ?? referenceRelations(entry.guid, entry.refs, provenance);\n return {\n guid: entry.guid,\n kind: entry.kind,\n sourcePath: entry.sourcePath,\n packageUrl,\n ...(entry.name === undefined ? {} : { name: entry.name }),\n ...(entry.refs === undefined ? {} : { refs: entry.refs }),\n ...(entry.packageId === undefined ? {} : { packageId: entry.packageId }),\n ...(entry.provenance === undefined ? {} : { provenance: entry.provenance }),\n ...(entry.revision === undefined ? {} : { revision: entry.revision }),\n ...(entry.sourceKey === undefined ? {} : { sourceKey: entry.sourceKey }),\n ...(entry.sourceIndex === undefined ? {} : { sourceIndex: entry.sourceIndex }),\n ...(entry.sourceOverrides === undefined ? {} : { sourceOverrides: entry.sourceOverrides }),\n ...(entry.sourceOverrideDescriptors === undefined\n ? {}\n : { sourceOverrideDescriptors: entry.sourceOverrideDescriptors }),\n ...(relations === undefined ? {} : { relations }),\n ...(entry.diagnostics === undefined ? {} : { diagnostics: entry.diagnostics }),\n ...(entry.cookReceiptUrl === undefined ? {} : { cookReceiptUrl: entry.cookReceiptUrl }),\n ...(entry.authoring === undefined && inferred.ui === undefined\n ? {}\n : { authoring: entry.authoring ?? inferred }),\n ...catalogRowProjectionFor('internal-asset', execution, lifecycle),\n };\n });\n}\n\nexport interface CookedPackageProjection {\n readonly packageUrl: string;\n readonly revision: ResourceRevision;\n readonly refs: readonly string[];\n readonly cookReceiptUrl?: string;\n readonly publication?: AssetPublicationEnvelope;\n}\n\n/** Project one complete cooked package; navigation facts stay in the Pack owner. */\nexport function projectCookedPackageEntry(\n entry: PackIndexEntry,\n projection: CookedPackageProjection,\n): PackIndexEntry {\n return {\n ...entry,\n ...(projection.publication === undefined\n ? {}\n : { sourcePath: projection.publication.sourcePath }),\n packageUrl: projection.packageUrl,\n ...(projection.cookReceiptUrl === undefined\n ? {}\n : { cookReceiptUrl: projection.cookReceiptUrl }),\n revision: projection.revision,\n ...(projection.publication === undefined ? {} : { publication: projection.publication }),\n ...currentProjectionFor('imported-output', 'cooked'),\n refs: projection.refs,\n };\n}\n\nexport interface RuntimeCatalogRowInput {\n readonly scopeId: string;\n readonly generation: number;\n readonly digest: string;\n readonly outputSetDigest: string;\n readonly guid: string;\n readonly kind: string;\n readonly packageUrl: string;\n readonly sourcePath?: string;\n readonly subject?: CatalogSubject;\n readonly execution?: CookExecution;\n readonly lifecycle?: CatalogLifecycle;\n readonly publication?: unknown;\n}\n\nfunction runtimeCatalogRowError(\n subjectId: string,\n expected: string,\n): ProducerContractResult<never> {\n const diagnostic: ProducerContractDiagnostic = {\n code: 'invalid-producer-fact',\n subject: { type: 'asset', id: subjectId },\n expected,\n hint: 'recook the source and publish one current runtime Catalog row',\n authority: 'producer',\n };\n return { ok: false, error: diagnostic };\n}\n\nfunction projectRuntimeCatalogRowValue(\n input: RuntimeCatalogRowInput,\n): ProducerContractResult<CatalogEntryV2> {\n if (\n input.publication !== undefined ||\n input.guid.length === 0 ||\n input.kind.length === 0 ||\n input.packageUrl.length === 0 ||\n input.scopeId.length === 0 ||\n !Number.isInteger(input.generation) ||\n input.generation < 1 ||\n input.digest.length === 0 ||\n input.outputSetDigest.length === 0\n ) {\n return runtimeCatalogRowError(\n input.guid,\n 'one flat publication tuple and no legacy publication object',\n );\n }\n\n const subject = input.subject ?? 'imported-output';\n const execution = input.execution ?? 'cooked';\n const lifecycle = input.lifecycle ?? 'current';\n return {\n ok: true,\n value: {\n scopeId: input.scopeId,\n generation: input.generation,\n digest: input.digest,\n outputSetDigest: input.outputSetDigest,\n guid: input.guid,\n kind: input.kind,\n packageUrl: input.packageUrl,\n sourcePath: input.sourcePath ?? input.packageUrl,\n subject,\n execution,\n lifecycle,\n projection: {\n subject,\n execution,\n lifecycle,\n operations: catalogOperationsFor({ subject, execution, lifecycle }),\n },\n },\n };\n}\n\n/** Project one row; an array is accepted only to fail closed on double rows. */\nexport function projectRuntimeCatalogRow(\n input: RuntimeCatalogRowInput | readonly RuntimeCatalogRowInput[],\n): ProducerContractResult<CatalogEntryV2> {\n if (Array.isArray(input)) {\n if (input.length !== 1) {\n return runtimeCatalogRowError(input[0]?.guid ?? 'unknown', 'exactly one runtime row');\n }\n const [row] = input;\n if (row === undefined) return runtimeCatalogRowError('unknown', 'exactly one runtime row');\n return projectRuntimeCatalogRowValue(row);\n }\n return projectRuntimeCatalogRowValue(input as RuntimeCatalogRowInput);\n}\n","import { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport interface LoadAssetConfigResult {\n readonly roots: readonly string[];\n readonly paths: Record<string, string>;\n}\n\nexport function loadAssetConfig(cwd: string): LoadAssetConfigResult {\n let pkg: { forgeax?: { assets?: { roots?: unknown; paths?: unknown } } };\n try {\n pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf-8'));\n } catch {\n return { roots: [join(cwd, 'assets')], paths: {} };\n }\n\n const assets = pkg.forgeax?.assets;\n\n const rawRoots = assets?.roots;\n const roots: readonly string[] =\n Array.isArray(rawRoots) && rawRoots.length > 0\n ? (rawRoots as string[]).map((r) => join(cwd, r))\n : [join(cwd, 'assets')];\n\n const rawPaths = assets?.paths;\n const paths: Record<string, string> = {};\n if (rawPaths !== undefined && rawPaths !== null && typeof rawPaths === 'object') {\n for (const [name, dir] of Object.entries(rawPaths as Record<string, unknown>)) {\n if (typeof dir === 'string') {\n paths[name] = join(cwd, dir);\n }\n }\n }\n\n return { roots, paths };\n}\n","/**\n * Last path segment of a `/`- or `\\`-separated path, trailing separators\n * stripped. Inlined rather than imported from `node:path` so this module stays\n * browser-safe: the dev-server pack path (`vite-plugin-pack` `/__pack/`) runs\n * `buildCatalog` -> `deriveAssetName` in client code where `node:path` is\n * externalized and `path.basename` throws.\n */\nfunction baseName(p: string): string {\n const trimmed = p.replace(/[/\\\\]+$/, '');\n const idx = Math.max(trimmed.lastIndexOf('/'), trimmed.lastIndexOf('\\\\'));\n return idx === -1 ? trimmed : trimmed.slice(idx + 1);\n}\n\n/**\n * Derive an asset's display name from package metadata.\n *\n * Pure function -- zero IO, zero side effects, browser-safe. Build-time\n * (build-catalog) and runtime (resolveName) share this single source of truth\n * for the XOR name-resolution rules (plan-strategy D-6).\n *\n * Branches:\n * 1. single-asset package (assetCount === 1) -> baseName(packagePath)\n * 2. multi-asset package + storedName -> storedName\n * 3. multi-asset package + no storedName (AC-15.1) -> baseName(packagePath)\n * 4. null packagePath + no storedName (AC-15.2) -> ''\n */\nexport function deriveAssetName(\n packagePath: string | null,\n assetCount: number,\n storedName?: string,\n): string {\n if (packagePath === null) {\n return storedName ?? '';\n }\n if (assetCount === 1) {\n return baseName(packagePath);\n }\n if (storedName !== undefined) {\n return storedName;\n }\n return baseName(packagePath);\n}\n","import { dirname, posix, resolve } from 'node:path';\nimport type { Result } from '@forgeax/engine-types';\nimport { PACK_ERROR_HINTS, err as resultErr, ok as resultOk } from '@forgeax/engine-types';\nimport { deriveAssetName } from './deriveAssetName.js';\nimport { PackError } from './errors.js';\n\nfunction deriveSourceName(metaFileName: string): string {\n return metaFileName.replace(/\\.meta\\.json$/, '');\n}\n\nconst PATH_REF_RE = /^@([^/]+)\\/(.+)$/;\n\nfunction isPathEscape(pathDir: string, resolved: string): boolean {\n const rel = posix.relative(pathDir, resolved);\n return rel.startsWith('..') || posix.isAbsolute(rel);\n}\n\nexport function resolveAssetSource(\n metaPath: string,\n source: string | undefined,\n paths: Record<string, string>,\n): Result<string, PackError> {\n if (source === undefined) {\n const metaDir = dirname(metaPath);\n const metaName = deriveAssetName(metaPath, 1);\n const derived = deriveSourceName(metaName);\n return resultOk(resolve(metaDir, derived));\n }\n\n if (source.startsWith('@')) {\n const match = source.match(PATH_REF_RE);\n if (!match) {\n return resultErr(\n new PackError({\n code: 'pack-malformed-path-ref',\n expected: 'source in format @<name>/<rest>',\n hint: PACK_ERROR_HINTS['pack-malformed-path-ref'],\n detail: {\n code: 'pack-malformed-path-ref',\n reason: 'format',\n rawSource: source,\n expectedFormat: '@<name>/<rest>',\n },\n }),\n );\n }\n\n const [, name, rest] = match as [string, string, string];\n const pathDir = paths[name];\n\n if (pathDir === undefined) {\n return resultErr(\n new PackError({\n code: 'pack-unknown-path',\n expected: 'path name found in package.json#forgeax.assets.paths',\n hint: PACK_ERROR_HINTS['pack-unknown-path'],\n detail: {\n code: 'pack-unknown-path',\n pathName: name,\n knownNames: Object.keys(paths),\n },\n }),\n );\n }\n\n const resolved = resolve(pathDir, rest);\n\n if (isPathEscape(pathDir, resolved)) {\n return resultErr(\n new PackError({\n code: 'pack-malformed-path-ref',\n expected: 'rest path must not escape the declared path directory',\n hint: PACK_ERROR_HINTS['pack-malformed-path-ref'],\n detail: {\n code: 'pack-malformed-path-ref',\n reason: 'escape',\n rawSource: source,\n expectedFormat: '@<name>/<rest>',\n },\n }),\n );\n }\n\n return resultOk(resolved);\n }\n\n return resultOk(resolve(dirname(metaPath), source));\n}\n","import type {\n AssetSubjectRef,\n ImportedOutputDeclaration,\n ProducerContractDiagnostic,\n ProducerContractResult,\n SourceOverrideMap,\n} from '@forgeax/engine-types';\nimport { validateSourceOverrideMap } from '@forgeax/engine-types';\n\ntype ProducerObject = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is ProducerObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction hasText(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\nfunction issue(\n code: ProducerContractDiagnostic['code'],\n subjectId: string,\n expected: string,\n hint: string,\n actual?: string,\n authority: 'producer' | 'pack' = 'producer',\n): ProducerContractResult<never> {\n const subject: AssetSubjectRef = { type: 'asset', id: subjectId };\n return {\n ok: false,\n error: {\n code,\n subject,\n expected,\n ...(actual === undefined ? {} : { actual }),\n hint,\n authority,\n },\n };\n}\n\nfunction validateFacts(\n value: ProducerObject,\n subjectId: string,\n): ProducerContractResult<ProducerObject> {\n if ('packageId' in value && !hasText(value.packageId)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'packageId must be a non-empty string',\n 'publish a stable package identity',\n );\n }\n if ('provenance' in value) {\n const provenance = value.provenance;\n if (!isRecord(provenance) || !hasText(provenance.provider) || !hasText(provenance.version)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'provenance.provider and provenance.version must be non-empty',\n 'publish provider identity and version',\n );\n }\n }\n if ('revision' in value) {\n const revision = value.revision;\n if (\n !isRecord(revision) ||\n !hasText(revision.digest) ||\n !hasText(revision.rootId) ||\n typeof revision.observedAt !== 'number' ||\n !Number.isFinite(revision.observedAt)\n ) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'revision.digest, revision.rootId and finite revision.observedAt',\n 'publish a complete resource revision',\n );\n }\n }\n if ('diagnostics' in value) {\n if (!Array.isArray(value.diagnostics)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'diagnostics must be an array',\n 'publish structured diagnostics as an array',\n );\n }\n for (const diagnostic of value.diagnostics) {\n if (!isRecord(diagnostic) || !hasText(diagnostic.code)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'each diagnostic needs a stable code',\n 'publish a machine-readable diagnostic code',\n );\n }\n if (diagnostic.severity === 'blocking') {\n if (!isRecord(diagnostic.subject) || !hasText(diagnostic.subject.id)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'blocking diagnostic.subject must identify an object',\n 'set subject.type and subject.id',\n );\n }\n if (!hasText(diagnostic.expected) || !hasText(diagnostic.hint)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'blocking diagnostics need expected and hint',\n 'provide an executable recovery hint',\n );\n }\n }\n }\n }\n return { ok: true, value };\n}\n\nfunction validateMetaSourceOverrides(\n value: ProducerObject,\n subjectId: string,\n): ProducerContractResult<ProducerObject> {\n if (!('sourceOverrides' in value)) return { ok: true, value };\n const declaredSourceKeys = Array.isArray(value.subAssets)\n ? value.subAssets.flatMap((subAsset) =>\n isRecord(subAsset) && hasText(subAsset.sourceKey) ? [subAsset.sourceKey] : [],\n )\n : [];\n const result = validateSourceOverrideMap(value.sourceOverrides, declaredSourceKeys);\n if (!result.ok) {\n return issue(\n result.error.code,\n subjectId,\n result.error.expected,\n result.error.hint,\n result.error.actual,\n 'pack',\n );\n }\n return {\n ok: true,\n value: { ...value, sourceOverrides: result.value as SourceOverrideMap | undefined },\n };\n}\n\n/**\n * Validate one package or imported-output producer declaration.\n *\n * The accepted fields mirror the engine-types POD contract. This function\n * validates that schema without creating a second schema or interpreting\n * diagnostic messages.\n */\nexport function validateProducerContract(value: unknown): ProducerContractResult<ProducerObject> {\n if (!isRecord(value)) {\n return issue(\n 'invalid-producer-fact',\n 'unknown',\n 'producer declaration must be an object',\n 'publish a JSON object',\n );\n }\n\n const subjectId = hasText(value.guid)\n ? value.guid\n : hasText(value.packageId)\n ? value.packageId\n : 'unknown';\n const facts = validateFacts(value, subjectId);\n if (!facts.ok) return facts;\n\n const metaOverrides = validateMetaSourceOverrides(value, subjectId);\n if (!metaOverrides.ok) return metaOverrides;\n\n if ('kind' in value && !hasText(value.kind)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'kind must be a non-empty open string',\n 'publish the provider-owned asset kind',\n );\n }\n if ('execution' in value && value.execution !== 'direct' && value.execution !== 'cooked') {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'execution must be either direct or cooked',\n 'publish the explicit authoring execution mode',\n );\n }\n const hasOutputIdentity = 'kind' in value || 'sourceIndex' in value || 'sourceKey' in value;\n if (!hasOutputIdentity) return facts;\n if (value.sourceKey !== undefined && !hasText(value.sourceKey)) {\n return issue(\n 'invalid-source-key',\n subjectId,\n 'sourceKey must be a non-empty producer-owned string',\n 'publish a stable semantic sourceKey',\n );\n }\n if (\n value.sourceIndex !== undefined &&\n (typeof value.sourceIndex !== 'number' ||\n !Number.isInteger(value.sourceIndex) ||\n value.sourceIndex < 0)\n ) {\n return issue(\n 'invalid-source-index',\n subjectId,\n 'sourceIndex must be a non-negative integer locator',\n 'publish a non-negative sourceIndex without using it as identity',\n );\n }\n if (value.sourceKey === undefined && value.sourceIndex !== undefined) {\n return issue(\n 'missing-source-key',\n subjectId,\n 'sourceKey is required when an output declares sourceIndex',\n 'publish a stable semantic key; do not derive identity from sourceIndex',\n );\n }\n if (\n 'compatiblePreviousKinds' in value &&\n (!Array.isArray(value.compatiblePreviousKinds) ||\n value.compatiblePreviousKinds.some((kind) => !hasText(kind)))\n ) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'compatiblePreviousKinds must be an array of non-empty kind strings',\n 'declare only producer-verified prior kinds that may preserve the GUID',\n );\n }\n return metaOverrides;\n}\n\n/**\n * Validate output topology without ever treating `sourceIndex` as identity.\n *\n * AI-readable callers should use the discriminated result and its structured\n * `code`, `expected`, `actual`, and `hint` fields for recovery decisions.\n */\nexport function validateProducerOutputs(\n outputs: readonly ImportedOutputDeclaration[],\n): ProducerContractResult<readonly ImportedOutputDeclaration[]> {\n const missingKey = outputs.find((output) => output.sourceKey === undefined);\n if (missingKey !== undefined) {\n return issue(\n outputs.length > 1 ? 'source-index-ambiguous' : 'missing-source-key',\n missingKey.guid,\n 'every output declaration needs a stable sourceKey',\n 'add sourceKey to each output before matching topology',\n );\n }\n const keys = new Map<string, ImportedOutputDeclaration>();\n for (const output of outputs) {\n const result = validateProducerContract(output);\n if (!result.ok) return result;\n const sourceKey = output.sourceKey;\n if (sourceKey === undefined) continue;\n const prior = keys.get(sourceKey);\n if (prior !== undefined) {\n return issue(\n 'duplicate-source-key',\n output.guid,\n 'sourceKey values must be unique within one producer package',\n 'rename the duplicate semantic output key',\n sourceKey,\n );\n }\n keys.set(sourceKey, output);\n }\n return { ok: true, value: outputs };\n}\n","import type { PackV2 } from '@forgeax/engine-types';\nimport Ajv, { type ValidateFunction } from 'ajv';\nimport addFormats from 'ajv-formats';\nimport metaSchemaJson from '../schema/meta.schema.json' with { type: 'json' };\nimport packSchemaJson from '../schema/pack.schema.json' with { type: 'json' };\n\nconst ajv = new Ajv({ strict: true, allErrors: false });\naddFormats(ajv, ['uuid']);\n\n// Module-top-level compiled validators - compiled once on import, never recreated.\nexport const validateMeta = ajv.compile(metaSchemaJson);\nexport const validatePack = ajv.compile(packSchemaJson);\n\nexport function validatePackV2(value: unknown): value is PackV2 {\n if (!validatePack(value) || !isPackV2Shape(value)) return false;\n\n const seenGuids = new Set<string>();\n for (const asset of value.assets) {\n if (seenGuids.has(asset.guid)) return false;\n seenGuids.add(asset.guid);\n }\n return true;\n}\n\nfunction isPackV2Shape(value: unknown): value is PackV2 {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'schemaVersion' in value &&\n value.schemaVersion === '2.0.0'\n );\n}\n\n// === SceneAsset payload validator factory (feat-20260514 w5 / D-P4) =============\n//\n// Decision anchors:\n// - plan-strategy §D-P4 (per-component additionalProperties:false, path a;\n// path b \"extend PackErrorDetail\" rejected to keep the 8-member\n// PackErrorCode closed union frozen)\n// - requirements §AC-08(b) (typo field name fail-fast through ajv with the\n// verbatim 'additional properties' message wording)\n// - requirements §AC-10 (no new SceneErrorCode / PackErrorCode introduced)\n//\n// `buildSceneAssetValidator(componentSchemas)` returns a fresh ajv\n// `ValidateFunction` whose JSON Schema sub-tree describes:\n// {\n// kind: 'scene',\n// nodes: SceneEntity[]\n// }\n// where each SceneEntity has the closed shape\n// { localId: integer, components: <closed map keyed by registered tokens> }\n// and the per-component sub-schema is composed verbatim from the caller's\n// `componentSchemas[name]` entry. `additionalProperties: false` is applied\n// at three layers: top-level SceneAsset, SceneEntity, and SceneEntity.components,\n// so ajv emits an `additional properties` ajvError on any typo or unknown\n// component token (AC-08(b)).\n//\n// The runtime layer feeds `componentSchemas` from the live `defineComponent`\n// registry; this factory itself stays ECS-free (charter proposition 5\n// consistent abstraction: pack package is layered below ecs and runtime,\n// the per-component schemas arrive as plain ajv-compatible JSON Schema\n// objects).\nexport function buildSceneAssetValidator(\n componentSchemas: Readonly<Record<string, object>>,\n): ValidateFunction {\n // Use a separate ajv instance so the dynamically registered closed map of\n // component sub-schemas does not pollute the module-top-level validators\n // above (they may be re-built across test fixtures with different\n // component sets).\n const localAjv = new Ajv({ strict: true, allErrors: false });\n addFormats(localAjv, ['uuid']);\n\n const componentsProperties: Record<string, object> = {};\n for (const [name, sub] of Object.entries(componentSchemas)) {\n componentsProperties[name] = sub;\n }\n\n // MountOverride schema (feat-20260608-scene-nesting-ecs-fication M1 / w11;\n // feat-20260713-mount-override-component-add-and-shared-ref-round M1 / w3;\n // requirements §S-10 / AC-03): validates each entry in mounts[].overrides[].\n // `field` is optional — it is a component-granular add-or-patch discriminant\n // (present -> patch one field with `value`; absent -> add/upsert the whole\n // `comp` with `value` as its per-field map). `localId` / `comp` / `value`\n // stay required; `additionalProperties: false` rejects any `op`-tag\n // discriminant so downstream consumers never branch on it. Field-level type\n // validation (matching the schema vocab) is enforced at runtime via\n // setSceneOverride (D-9 / EcsErrorCode 'scene-override-type-mismatch').\n const mountOverrideSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['localId', 'comp', 'value'],\n properties: {\n localId: { type: 'integer', minimum: 0 },\n comp: { type: 'string', minLength: 1 },\n field: { type: 'string', minLength: 1 },\n value: {},\n },\n };\n\n // SceneInstanceMount schema (feat-20260608-scene-nesting-ecs-fication\n // M1 / w11; requirements §S-10): validates each mounts[] entry. parent /\n // components / overrides are optional; cross-mount window collision and\n // mount.source / mount.memberCount agreement with referenced child\n // SceneAsset are checked at the build-time scanner (D-1, w14), not here.\n const mountSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['localId', 'source', 'memberFirst', 'memberCount'],\n properties: {\n localId: { type: 'integer', minimum: 0 },\n source: { type: 'integer', minimum: 0 },\n memberFirst: { type: 'integer', minimum: 0 },\n memberCount: { type: 'integer', minimum: 0 },\n parent: { type: 'integer', minimum: 0 },\n components: {\n type: 'object',\n additionalProperties: false,\n properties: componentsProperties,\n },\n overrides: {\n type: 'array',\n items: mountOverrideSchema,\n },\n publicationFence: {\n type: 'object',\n additionalProperties: false,\n required: [\n 'schemaVersion',\n 'sourcePath',\n 'sourceRevision',\n 'publicationGeneration',\n 'outputDigest',\n 'outputSetDigest',\n 'receiptIdentity',\n ],\n properties: {\n schemaVersion: { type: 'string', const: 'scene-publication-fence/1' },\n sourcePath: { type: 'string', minLength: 1 },\n sourceRevision: { type: 'string', minLength: 1 },\n publicationGeneration: { type: 'integer', minimum: 1 },\n outputDigest: { type: 'string', minLength: 1 },\n outputSetDigest: { type: 'string', minLength: 1 },\n receiptIdentity: { type: 'string', minLength: 1 },\n },\n },\n },\n };\n\n const sceneSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['kind', 'entities'],\n properties: {\n kind: { type: 'string', const: 'scene' },\n entities: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: false,\n required: ['localId', 'components'],\n properties: {\n localId: { type: 'integer', minimum: 0 },\n components: {\n type: 'object',\n additionalProperties: false,\n properties: componentsProperties,\n },\n },\n },\n },\n // Optional top-level mounts[] (feat-20260608-scene-nesting-ecs-fication\n // M1 / w11). Missing mounts is semantically equivalent to mounts: []\n // (plan-strategy §6.3 back-compat); ajv default produces the empty\n // array on absent input.\n mounts: {\n type: 'array',\n items: mountSchema,\n },\n },\n };\n\n return localAjv.compile(sceneSchema);\n}\n\n// === MaterialAsset payload validator factory (feat-20260523-shader-template-instance-split M1-T06) ===\n//\n// Decision anchors:\n// - plan-strategy D-PackKind (factory pattern, same shape as buildSceneAssetValidator)\n// - plan-strategy D-ParamTypeWhitelist (paramTypeWhitelist consumed here)\n// - requirements AC-04 (v1 type set SSOT; validator covers all param type boundaries)\n//\n// `buildMaterialAssetValidator(paramTypeWhitelist)` returns an ajv\n// `ValidateFunction` that validates:\n// {\n// materialShader: string,\n// paramSchema: ParamSchemaEntry[],\n// values: object\n// }\n// Each ParamSchemaEntry.type must be in the whitelist (D-ParamTypeWhitelist).\n// `additionalProperties: false` at top level so ajv rejects unknown fields.\n// values is free-form (object) — the runtime layer does deeper validation.\n//\n// Uses a separate ajv instance per call so different whitelists across\n// test fixtures do not pollute the module-top-level validators.\nexport function buildMaterialAssetValidator(\n paramTypeWhitelist: ReadonlySet<string>,\n): ValidateFunction {\n const localAjv = new Ajv({ strict: true, allErrors: false });\n\n const whitelistEnum = Array.from(paramTypeWhitelist);\n\n const paramSchemaEntry = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type'],\n properties: {\n name: { type: 'string', minLength: 1 },\n type: { type: 'string', enum: whitelistEnum },\n default: {},\n },\n };\n\n const materialSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['materialShader', 'paramSchema', 'values'],\n properties: {\n materialShader: { type: 'string', minLength: 1 },\n paramSchema: {\n type: 'array',\n items: paramSchemaEntry,\n },\n values: { type: 'object' },\n },\n };\n\n return localAjv.compile(materialSchema);\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://github.com/ForgeaXGame/forgeax-engine/packages/pack/schema/meta.schema.json\",\n \"title\": \"ExternalAssetPackage\",\n \"description\": \"Schema for .meta.json files describing an external asset package (source file + import settings + derived sub-assets).\",\n \"$comment\": \"ScriptablePack durable consumer kinds are published by SCRIPTABLE_PACK_ASSET_KINDS in @forgeax/engine-pack/source; Meta sub-asset kind remains open for producer extensions.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schemaVersion\", \"kind\", \"importer\", \"importSettings\", \"subAssets\"],\n \"properties\": {\n \"schemaVersion\": {\n \"oneOf\": [{ \"type\": \"string\" }, { \"type\": \"integer\" }],\n \"description\": \"Schema version. Strings (e.g. '1.0.0') for hand-authored .meta.json; integers (1, 2, ...) for importer-emitted .meta.json (forgeax-engine-remote-asset import writes schemaVersion: 1 as the wire format SSOT, GltfMetaJson literal type).\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"external-asset-package\",\n \"description\": \"Discriminator for the external asset package type.\"\n },\n \"packageId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable producer-owned package identity. It survives package moves; path is only a locator.\"\n },\n \"provenance\": {\n \"$ref\": \"#/$defs/provenance\"\n },\n \"revision\": {\n \"$ref\": \"#/$defs/revision\"\n },\n \"diagnostics\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/diagnostic\" }\n },\n \"importer\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Open importer key (feat-20260603-asset-import-loader-injection M2): the @forgeax/engine-import runner dispatches the sidecar to the Importer registered under this key. Replaces the former closed `assetType` enum (one-cut migration, no shim). Known keys: 'image' (engine-image importer, single-image source), 'gltf' (engine-gltf importer, .gltf/.glb source), 'audio' (engine-audio-webaudio import path), 'font' (engine-font bake path), and the reserved 'shader' key consumed by engine-vite-plugin-shader's orthogonal transform pipeline (the import runner explicitly skips it). Adding a new importer needs only a registered Importer under a new key - no schema enum edit. Orthogonal to subAssets[].kind which identifies per-sub-asset payload kind.\"\n },\n \"source\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Optional. Omit to derive the companion file in the same directory (strip .meta.json suffix from the meta filename). Or write @<name>/<rest> to reference a declared path table entry (see package.json#forgeax.assets.paths). Existing relative paths remain unchanged.\"\n },\n \"importSettings\": {\n \"type\": \"object\",\n \"description\": \"Importer-specific settings. Free-form object. Common texture keys: compressionMode ('auto' | 'etc1s' | 'uastc' | 'none', default 'auto'; see @forgeax/engine-image README), mipmap (boolean, bake mip chain offline).\"\n },\n \"sourceOverrides\": {\n \"type\": \"object\",\n \"description\": \"Optional producer-owned Meta author facts keyed by declared subAssets[].sourceKey. An empty object is legacy-equivalent and omitted by canonical writers.\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"description\": \"Producer-owned payload; the pack schema validates object shape and the producer contract validates sourceKey identity.\",\n \"additionalProperties\": true\n }\n },\n \"sourceOverrideDescriptors\": {\n \"type\": \"array\",\n \"description\": \"Producer-declared authoring contracts for stable source override keys.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"sourceKey\", \"payloadSchema\"],\n \"properties\": {\n \"sourceKey\": { \"type\": \"string\", \"minLength\": 1 },\n \"semantic\": { \"type\": \"string\", \"enum\": [\"mesh-material-slot-defaults\"] },\n \"payloadSchema\": { \"type\": \"object\" }\n }\n }\n },\n \"paramSchema\": {\n \"type\": \"array\",\n \"description\": \"Material-shader parameter schema (feat-20260528-material-shader-registration-unification). Only valid when importer is 'shader'. Each entry has name (string) and type (string) with an optional default.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\", \"type\"],\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"type\": { \"type\": \"string\" },\n \"default\": {}\n }\n }\n },\n \"subAssets\": {\n \"type\": \"array\",\n \"description\": \"Derived sub-assets extracted from the source file.\",\n \"items\": {\n \"$ref\": \"#/$defs/subAsset\"\n }\n }\n },\n \"$defs\": {\n \"subAsset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"guid\", \"sourceIndex\", \"kind\"],\n \"properties\": {\n \"guid\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"RFC 4122 36-char dash-form UUID identifying this sub-asset.\"\n },\n \"sourceIndex\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Zero-based index into the source file's exported objects.\"\n },\n \"sourceKey\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Producer-owned stable key used to match this output across reimport topology changes.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Optional display-friendly name for this sub-asset. Copied from the source (e.g. glTF image.name / mesh.name) so the sidecar is human-inspectable. Has no runtime semantic weight.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Open sub-asset kind string (feat-20260629-importer-self-declared-fold-contract M3 / D-1 scheme A): the prior closed enum is removed — any non-empty string is accepted at the schema layer. Known engine-owned kinds: mesh, material, scene, texture, equirect, material-shader, skeleton, skin, animation-clip, audio, font. Host-defined importers declare their own kind values (e.g. 'reel-game-blob') and the schema layer admits them without modification. Validation of unknown kinds is deferred to the fold/import layer where the ImporterRegistry is available. The field itself (subAssets[].kind) is retained (OOS-2: no field deletion, only enum removal).\"\n }\n }\n },\n \"provenance\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"provider\", \"version\"],\n \"properties\": {\n \"provider\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 },\n \"source\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"revision\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"digest\", \"observedAt\", \"rootId\"],\n \"properties\": {\n \"digest\": { \"type\": \"string\", \"minLength\": 1 },\n \"observedAt\": { \"type\": \"number\" },\n \"rootId\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"diagnostic\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"code\", \"severity\"],\n \"properties\": {\n \"code\": { \"type\": \"string\", \"minLength\": 1 },\n \"severity\": { \"type\": \"string\", \"enum\": [\"info\", \"warning\", \"blocking\"] },\n \"message\": { \"type\": \"string\" },\n \"subject\": { \"$ref\": \"#/$defs/subject\" },\n \"expected\": { \"type\": \"string\", \"minLength\": 1 },\n \"actual\": { \"type\": \"string\" },\n \"hint\": { \"type\": \"string\", \"minLength\": 1 },\n \"authority\": { \"type\": \"string\", \"enum\": [\"producer\", \"pack\", \"catalog\"] },\n \"evidence\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } },\n \"recoveryIntents\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n \"subject\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": [\"asset\", \"package\", \"resource\"] },\n \"id\": { \"type\": \"string\", \"minLength\": 1 }\n }\n }\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://github.com/ForgeaXGame/forgeax-engine/packages/pack/schema/pack.schema.json\",\n \"title\": \"InternalTextPackage\",\n \"description\": \"Schema for authored and cooked internal text packages.\",\n \"$comment\": \"The ordinary durable consumer matrix is SCRIPTABLE_PACK_ASSET_KINDS in @forgeax/engine-pack/source. Pack kind fields remain open for registered producer extensions.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schemaVersion\", \"kind\", \"assets\"],\n \"properties\": {\n \"schemaVersion\": {\n \"type\": \"string\",\n \"enum\": [\"1.0.0\", \"2.0.0\"]\n },\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"internal-text-package\"\n },\n \"packageId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable producer-owned package identity. It survives package moves; path is only a locator.\"\n },\n \"provenance\": {\n \"$ref\": \"#/$defs/provenance\"\n },\n \"revision\": {\n \"$ref\": \"#/$defs/revision\"\n },\n \"diagnostics\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/diagnostic\" }\n },\n \"assets\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/asset\"\n }\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"required\": [\"packageId\"],\n \"properties\": {\n \"packageId\": {},\n \"schemaVersion\": { \"const\": \"2.0.0\" }\n }\n },\n \"then\": {\n \"type\": \"object\",\n \"properties\": {\n \"assets\": {\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [\n { \"$ref\": \"#/$defs/assetV2\" },\n {\n \"type\": \"object\",\n \"properties\": { \"execution\": {} },\n \"required\": [\"execution\"]\n }\n ]\n }\n }\n }\n }\n }\n ],\n \"$defs\": {\n \"guid36\": {\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n \"asset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"guid\", \"kind\", \"payload\", \"refs\"],\n \"properties\": {\n \"guid\": {\n \"$ref\": \"#/$defs/guid36\",\n \"description\": \"Unique GUID for this asset entry.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Asset kind identifier, e.g. 'MaterialAsset'.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Optional display name for this asset. Add-only field for backward compatibility with old pack files that lack it.\"\n },\n \"sourceKey\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Producer-owned stable key used to match imported output topology.\"\n },\n \"sourceIndex\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Producer-declared output position; not an identity key when sourceKey is present.\"\n },\n \"execution\": {\n \"type\": \"string\",\n \"enum\": [\"direct\", \"cooked\"],\n \"description\": \"Explicit authoring execution mode; never inferred from package path.\"\n },\n \"payload\": {\n \"type\": \"object\",\n \"description\": \"Serialized asset payload. Free-form object.\"\n },\n \"refs\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/guid36\" }\n },\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n },\n \"assetV2\": {\n \"allOf\": [\n { \"$ref\": \"#/$defs/asset\" },\n {\n \"type\": \"object\",\n \"required\": [\"artifacts\"],\n \"properties\": {\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n }\n ]\n },\n \"artifacts\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^[A-Za-z0-9][A-Za-z0-9._/-]*$\": {\n \"$ref\": \"#/$defs/artifactDescriptor\"\n }\n }\n },\n \"artifactDescriptor\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"path\", \"mediaType\"],\n \"properties\": {\n \"path\": { \"type\": \"string\", \"minLength\": 1 },\n \"mediaType\": { \"type\": \"string\", \"minLength\": 1 },\n \"assetCodec\": { \"$ref\": \"#/$defs/assetCodec\" },\n \"contentEncoding\": { \"enum\": [\"identity\", \"zstd\"] },\n \"byteLength\": { \"type\": \"integer\", \"minimum\": 0 },\n \"integrity\": { \"$ref\": \"#/$defs/integrity\" }\n }\n },\n \"assetCodec\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"profile\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"integrity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"algorithm\", \"digest\"],\n \"properties\": {\n \"algorithm\": { \"const\": \"sha256\" },\n \"digest\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"provenance\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"provider\", \"version\"],\n \"properties\": {\n \"provider\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 },\n \"source\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"revision\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"digest\", \"observedAt\", \"rootId\"],\n \"properties\": {\n \"digest\": { \"type\": \"string\", \"minLength\": 1 },\n \"observedAt\": { \"type\": \"number\" },\n \"rootId\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"diagnostic\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"code\", \"severity\"],\n \"properties\": {\n \"code\": { \"type\": \"string\", \"minLength\": 1 },\n \"severity\": { \"type\": \"string\", \"enum\": [\"info\", \"warning\", \"blocking\"] },\n \"message\": { \"type\": \"string\" },\n \"subject\": { \"$ref\": \"#/$defs/subject\" },\n \"expected\": { \"type\": \"string\", \"minLength\": 1 },\n \"actual\": { \"type\": \"string\" },\n \"hint\": { \"type\": \"string\", \"minLength\": 1 },\n \"authority\": { \"type\": \"string\", \"enum\": [\"producer\", \"pack\", \"catalog\"] },\n \"evidence\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } },\n \"recoveryIntents\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n \"subject\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": [\"asset\", \"package\", \"resource\"] },\n \"id\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"relation\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"from\", \"to\", \"type\", \"provenance\"],\n \"properties\": {\n \"from\": { \"$ref\": \"#/$defs/subject\" },\n \"to\": { \"$ref\": \"#/$defs/subject\" },\n \"type\": { \"type\": \"string\", \"minLength\": 1 },\n \"policy\": { \"type\": \"object\" },\n \"provenance\": { \"$ref\": \"#/$defs/provenance\" }\n }\n }\n }\n}\n","import { createHash } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { mkdir, mkdtemp, readFile, realpath, rename, rm, stat, writeFile } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { dirname, extname, isAbsolute, relative, resolve, sep } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { Worker } from 'node:worker_threads';\nimport type { AssetGuid, Result } from '@forgeax/engine-types';\nimport { AssetError, err, ImportError, ok } from '@forgeax/engine-types';\nimport ts from 'typescript';\nimport {\n type ProducerSemanticIdentityInput,\n producerRelativeDdcKey,\n} from './evidence/source-inventory.js';\nimport { AssetGuid as AssetGuidCodec } from './guid.js';\nimport {\n type AssetReader,\n projectScriptablePackMeta,\n type ScriptablePackAssetKind,\n type ScriptablePackAuthoringMutation,\n type ScriptablePackAuthoringPort,\n type ScriptablePackDefinition,\n type ScriptablePackError,\n type ScriptablePackReadError,\n type ScriptablePackSourceClosureEntry,\n validateScriptablePackDefinition,\n} from './scriptable-pack.js';\n\nconst IMPORT_META_RESOLVE_FLAG = '--experimental-import-meta-resolve';\n\nfunction scriptablePackWorkerExecArgv(): string[] {\n // import.meta.resolve(parentURL) is the canonical ESM resolver, but Node\n // keeps its parentURL overload behind this flag. Filter --input-type as\n // well: stdin/eval hosts may pass it through process.execArgv, and Node\n // rejects that option inside a file-backed worker.\n const inherited = process.execArgv.filter((arg) => !arg.startsWith('--input-type'));\n return inherited.includes(IMPORT_META_RESOLVE_FLAG)\n ? inherited\n : [...inherited, IMPORT_META_RESOLVE_FLAG];\n}\n\nexport interface ScriptablePackModuleExecutor {\n load(sourcePath: string): Promise<unknown>;\n dispose?(reason: 'complete' | 'timeout' | 'failure'): void | Promise<void>;\n}\n\nexport interface ScriptablePackModuleExecutorPool {\n acquire(): Promise<ScriptablePackModuleExecutor>;\n dispose(): Promise<void>;\n}\n\nexport interface ScriptablePackModuleExecutorPoolOptions {\n readonly maxWorkers?: number;\n readonly maxTasksPerWorker?: number;\n}\n\nexport function scriptablePackDdcKey(input: ProducerSemanticIdentityInput): string {\n return producerRelativeDdcKey(input);\n}\n\nexport interface OptionalBuildCache<T> {\n readonly read: () => Promise<T | null>;\n readonly coldCook: () => Promise<T>;\n}\n\n/** Build CAS is a performance hint; source cold cook remains the correctness path. */\nexport async function readOptionalBuildCache<T>(cache: OptionalBuildCache<T>): Promise<{\n readonly value: T;\n readonly fromCache: boolean;\n}> {\n try {\n const cached = await cache.read();\n if (cached !== null) return { value: cached, fromCache: true };\n } catch {\n // Cache deletion, read-only storage, and corrupt optional objects fail open.\n }\n return { value: await cache.coldCook(), fromCache: false };\n}\n\nexport interface LoadScriptablePackOptions {\n /** Maximum time allowed for module initialization in the isolated worker. */\n readonly timeoutMs?: number;\n /** Maximum time allowed for one definition.build(reader) in the isolated worker. */\n readonly buildTimeoutMs?: number;\n readonly executor?: ScriptablePackModuleExecutor;\n /** Release the isolated loader after identity projection when build will not be called. */\n readonly metadataOnly?: boolean;\n}\n\nasync function resolveRelativeImport(\n sourcePath: string,\n specifier: string,\n): Promise<string | undefined> {\n if (!specifier.startsWith('.')) return undefined;\n const raw = resolve(dirname(sourcePath), specifier);\n const candidates =\n extname(raw).length > 0\n ? [raw]\n : [\n raw,\n `${raw}.ts`,\n `${raw}.tsx`,\n `${raw}.mts`,\n `${raw}.js`,\n `${raw}.mjs`,\n `${raw}.json`,\n resolve(raw, 'index.ts'),\n ];\n for (const candidate of candidates) {\n try {\n if ((await stat(candidate)).isFile()) return candidate;\n } catch {\n // Continue through deterministic extension candidates.\n }\n }\n return undefined;\n}\n\n/** Capture one immutable ScriptablePack module closure for inventory and production. */\nexport async function inventoryScriptablePackSource(\n sourcePath: string,\n initialSourceText?: string,\n): Promise<readonly ScriptablePackSourceClosureEntry[]> {\n const root = await realpath(sourcePath);\n const pending = [root];\n const seen = new Set<string>();\n const entries: ScriptablePackSourceClosureEntry[] = [];\n while (pending.length > 0) {\n const path = pending.pop();\n if (path === undefined || seen.has(path)) continue;\n seen.add(path);\n const bytes =\n path === root && initialSourceText !== undefined\n ? new TextEncoder().encode(initialSourceText)\n : await readFile(path);\n entries.push({ path, digest: `sha256:${createHash('sha256').update(bytes).digest('hex')}` });\n const source = new TextDecoder().decode(bytes);\n for (const imported of ts.preProcessFile(source, true, true).importedFiles) {\n const resolved = await resolveRelativeImport(path, imported.fileName);\n if (resolved !== undefined) pending.push(await realpath(resolved));\n }\n }\n return entries.sort((left, right) => left.path.localeCompare(right.path));\n}\n\ninterface StructuredFailure {\n readonly name?: unknown;\n readonly code?: unknown;\n readonly expected?: unknown;\n readonly actual?: unknown;\n readonly hint?: unknown;\n readonly detail?: unknown;\n readonly message?: unknown;\n}\n\nfunction serializeFailure(value: unknown): StructuredFailure {\n if (value !== null && typeof value === 'object') {\n const failure = value as Record<string, unknown>;\n return {\n name: failure.name,\n code: failure.code,\n expected: failure.expected,\n actual: failure.actual,\n hint: failure.hint,\n detail: failure.detail,\n message: failure.message,\n };\n }\n return { message: String(value) };\n}\n\nfunction hydrateFailure(value: unknown): unknown {\n if (value === null || typeof value !== 'object') return value;\n const failure = value as StructuredFailure;\n if (\n failure.name === 'AssetError' &&\n typeof failure.code === 'string' &&\n typeof failure.expected === 'string' &&\n typeof failure.hint === 'string'\n ) {\n const args = {\n code: failure.code as ConstructorParameters<typeof AssetError>[0]['code'],\n expected: failure.expected,\n hint: failure.hint,\n };\n return failure.detail === undefined\n ? new AssetError(args)\n : new AssetError({\n ...args,\n detail: failure.detail as NonNullable<\n ConstructorParameters<typeof AssetError>[0]['detail']\n >,\n });\n }\n if (\n failure.name === 'ImportError' &&\n typeof failure.code === 'string' &&\n typeof failure.expected === 'string' &&\n typeof failure.hint === 'string' &&\n failure.detail !== undefined\n ) {\n return new ImportError({\n code: failure.code as ConstructorParameters<typeof ImportError>[0]['code'],\n expected: failure.expected,\n hint: failure.hint,\n detail: failure.detail as ConstructorParameters<typeof ImportError>[0]['detail'],\n ...(typeof failure.actual === 'string' ? { actual: failure.actual } : {}),\n });\n }\n if (typeof failure.message === 'string') {\n const error = new Error(failure.message);\n if (typeof failure.name === 'string') error.name = failure.name;\n return error;\n }\n return value;\n}\n\nclass WorkerScriptablePackExecutor implements ScriptablePackModuleExecutor {\n private worker: Worker | undefined;\n private compileRoot: string | undefined;\n private nextBuildId = 0;\n private disposal: Promise<void> | undefined;\n private build:\n | {\n readonly id: number;\n readonly reader: AssetReader;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n\n async load(sourcePath: string): Promise<unknown> {\n const workerUrl = scriptablePackWorkerUrl();\n const compileRoot = await mkdtemp(resolve(tmpdir(), 'forgeax-scriptable-pack-'));\n this.compileRoot = compileRoot;\n const worker = new Worker(workerUrl, {\n workerData: { sourcePath: resolve(sourcePath), compileRoot },\n execArgv: scriptablePackWorkerExecArgv(),\n resourceLimits: { maxOldGenerationSizeMb: 256, maxYoungGenerationSizeMb: 64 },\n });\n this.worker = worker;\n worker.on('message', (message: unknown) => this.onMessage(message));\n worker.unref();\n return new Promise((resolveLoad, rejectLoad) => {\n const onMessage = (message: unknown): void => {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n if (value.kind === 'loaded') {\n // The scan keeps this executor alive for the later no-reopen build\n // route, but an idle source worker must not keep a Vite/Vitest host\n // process alive after its own work has settled.\n worker.unref();\n worker.off('message', onMessage);\n resolveLoad({\n default:\n value.definition === undefined\n ? undefined\n : {\n ...(value.definition as Record<string, unknown>),\n build: (reader: AssetReader) => this.runBuild(reader),\n },\n });\n } else if (value.kind === 'load-threw') {\n worker.off('message', onMessage);\n rejectLoad(hydrateFailure(value.error));\n }\n };\n worker.on('message', onMessage);\n worker.once('error', rejectLoad);\n worker.once('exit', (code) => {\n if (code !== 0) rejectLoad(new Error(`ScriptablePack worker exited with code ${code}`));\n });\n });\n }\n\n dispose(reason: 'complete' | 'timeout' | 'failure' = 'complete'): Promise<void> {\n if (this.disposal !== undefined) return this.disposal;\n const worker = this.worker;\n this.worker = undefined;\n const compileRoot = this.compileRoot;\n this.compileRoot = undefined;\n const active = this.build;\n this.build = undefined;\n if (active !== undefined) {\n active.reject(new Error(`ScriptablePack build disposed during ${reason}`));\n }\n this.disposal = (async () => {\n if (worker !== undefined) await worker.terminate();\n if (compileRoot !== undefined) await rm(compileRoot, { recursive: true, force: true });\n })();\n return this.disposal;\n }\n\n private runBuild(reader: AssetReader): Promise<unknown> {\n const worker = this.worker;\n if (worker === undefined) return Promise.reject(new Error('ScriptablePack worker is closed'));\n if (this.build !== undefined)\n return Promise.reject(new Error('ScriptablePack worker already has an active build'));\n const id = this.nextBuildId++;\n return new Promise((resolveBuild, rejectBuild) => {\n this.build = { id, reader, resolve: resolveBuild, reject: rejectBuild };\n worker.postMessage({ kind: 'build', buildId: id });\n });\n }\n\n private onMessage(message: unknown): void {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n const active = this.build;\n if (active === undefined || value.buildId !== active.id) return;\n if (value.kind === 'asset-read' && typeof value.readId === 'number') {\n void active.reader\n .readByGuid(value.guid as AssetGuid)\n .then((result) =>\n this.worker?.postMessage({\n kind: 'asset-result',\n readId: value.readId,\n result:\n result.ok === true ? result : { ...result, error: serializeFailure(result.error) },\n }),\n )\n .catch((error: unknown) => {\n if (this.build?.id !== active.id) return;\n this.build = undefined;\n active.reject(error);\n void this.dispose('failure');\n });\n return;\n }\n this.build = undefined;\n if (value.kind === 'build-result') active.resolve(value.result);\n else if (value.kind === 'build-threw') active.reject(hydrateFailure(value.error));\n else this.build = active;\n }\n}\n\nfunction scriptablePackWorkerUrl(): URL {\n const bundledWorker = new URL('./scriptable-pack-worker.mjs', import.meta.url);\n return existsSync(fileURLToPath(bundledWorker))\n ? bundledWorker\n : new URL('../dist/scriptable-pack-worker.mjs', import.meta.url);\n}\n\nclass ReusableWorkerScriptablePackExecutor implements ScriptablePackModuleExecutor {\n private readonly worker: Worker;\n private readonly compileRootReady = mkdtemp(resolve(tmpdir(), 'forgeax-scriptable-pack-pool-'));\n private compileRoot: string | undefined;\n private nextLoadId = 0;\n private nextBuildId = 0;\n private pendingLoad:\n | {\n readonly id: number;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n private build:\n | {\n readonly id: number;\n readonly reader: AssetReader;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n private disposal: Promise<void> | undefined;\n private forceDispose = false;\n private failed = false;\n private taskCount = 0;\n private released = false;\n\n constructor(\n private readonly maxTasksPerWorker: number,\n private readonly release: (\n executor: ReusableWorkerScriptablePackExecutor,\n reusable: boolean,\n ) => void,\n ) {\n this.worker = new Worker(scriptablePackWorkerUrl(), {\n workerData: { mode: 'reusable' },\n execArgv: scriptablePackWorkerExecArgv(),\n resourceLimits: { maxOldGenerationSizeMb: 256, maxYoungGenerationSizeMb: 64 },\n });\n this.worker.on('message', (message: unknown) => this.onMessage(message));\n this.worker.on('error', (error: Error) => {\n this.failed = true;\n this.rejectActive(error);\n void this.dispose('failure');\n });\n this.worker.on('exit', (code) => {\n if (code === 0 || this.disposal !== undefined) return;\n this.failed = true;\n this.rejectActive(new Error(`ScriptablePack worker exited with code ${code}`));\n void this.dispose('failure');\n });\n // Listener registration can retain the worker's MessagePort in Node.\n // A reusable worker must not keep a completed Vite build alive while its\n // pool is draining; it still processes messages while the host is live.\n this.worker.unref();\n }\n\n async load(sourcePath: string): Promise<unknown> {\n const activeDisposal = this.disposal;\n if (activeDisposal !== undefined) {\n await activeDisposal;\n if (this.failed) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n this.disposal = undefined;\n }\n this.released = false;\n if (this.pendingLoad !== undefined || this.build !== undefined) {\n return Promise.reject(new Error('ScriptablePack executor already has an active task'));\n }\n const compileRoot = this.compileRoot ?? (await this.compileRootReady);\n if (this.disposal !== undefined) {\n const disposal = this.disposal;\n await disposal;\n if (this.failed) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n this.disposal = undefined;\n }\n const loadId = this.nextLoadId++;\n this.compileRoot = compileRoot;\n this.taskCount += 1;\n return new Promise((resolveLoad, rejectLoad) => {\n this.pendingLoad = { id: loadId, resolve: resolveLoad, reject: rejectLoad };\n try {\n this.worker.postMessage({\n kind: 'load',\n loadId,\n sourcePath: resolve(sourcePath),\n compileRoot,\n });\n } catch (error) {\n this.pendingLoad = undefined;\n rejectLoad(error);\n void this.dispose('failure');\n }\n });\n }\n\n dispose(reason: 'complete' | 'timeout' | 'failure' = 'complete'): Promise<void> {\n if (reason === 'failure') this.forceDispose = true;\n const activeDisposal = this.disposal;\n if (activeDisposal !== undefined) {\n return activeDisposal;\n }\n this.rejectActive(new Error(`ScriptablePack task disposed during ${reason}`));\n this.disposal = (async () => {\n const compileRoot = this.compileRoot ?? (await this.compileRootReady);\n const reusable =\n reason === 'complete' &&\n !this.failed &&\n !this.forceDispose &&\n this.taskCount < this.maxTasksPerWorker;\n this.forceDispose = false;\n if (!reusable) {\n this.compileRoot = undefined;\n await this.worker.terminate();\n await rm(compileRoot, { recursive: true, force: true });\n }\n this.released = true;\n this.disposal = undefined;\n this.release(this, reusable);\n })();\n return this.disposal;\n }\n\n private rejectActive(error: unknown): void {\n const loading = this.pendingLoad;\n this.pendingLoad = undefined;\n loading?.reject(error);\n const building = this.build;\n this.build = undefined;\n building?.reject(error);\n }\n\n private runBuild(reader: AssetReader): Promise<unknown> {\n if (this.released || this.disposal !== undefined) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n if (this.build !== undefined) {\n return Promise.reject(new Error('ScriptablePack worker already has an active build'));\n }\n const id = this.nextBuildId++;\n return new Promise((resolveBuild, rejectBuild) => {\n this.build = { id, reader, resolve: resolveBuild, reject: rejectBuild };\n try {\n this.worker.postMessage({ kind: 'build', buildId: id });\n } catch (error) {\n this.build = undefined;\n rejectBuild(error);\n void this.dispose('failure');\n }\n });\n }\n\n private onMessage(message: unknown): void {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n const loading = this.pendingLoad;\n if (loading !== undefined && value.kind === 'loaded' && value.loadId === loading.id) {\n this.pendingLoad = undefined;\n loading.resolve({\n default:\n value.definition === undefined\n ? undefined\n : {\n ...(value.definition as Record<string, unknown>),\n build: (reader: AssetReader) => this.runBuild(reader),\n },\n });\n return;\n }\n if (loading !== undefined && value.kind === 'load-threw' && value.loadId === loading.id) {\n this.pendingLoad = undefined;\n loading.reject(hydrateFailure(value.error));\n return;\n }\n const active = this.build;\n if (active === undefined || value.buildId !== active.id) return;\n if (value.kind === 'asset-read' && typeof value.readId === 'number') {\n void active.reader\n .readByGuid(value.guid as AssetGuid)\n .then((result) =>\n this.worker.postMessage({\n kind: 'asset-result',\n readId: value.readId,\n result:\n result.ok === true ? result : { ...result, error: serializeFailure(result.error) },\n }),\n )\n .catch((error: unknown) => {\n if (this.build?.id !== active.id) return;\n this.build = undefined;\n active.reject(error);\n void this.dispose('failure');\n });\n return;\n }\n this.build = undefined;\n if (value.kind === 'build-result') active.resolve(value.result);\n else if (value.kind === 'build-threw') active.reject(hydrateFailure(value.error));\n else this.build = active;\n }\n}\n\nclass DefaultScriptablePackModuleExecutorPool implements ScriptablePackModuleExecutorPool {\n private readonly maxWorkers: number;\n private readonly maxTasksPerWorker: number;\n private readonly idle: ReusableWorkerScriptablePackExecutor[] = [];\n private readonly waiters: {\n readonly resolve: (executor: ScriptablePackModuleExecutor) => void;\n readonly reject: (reason: unknown) => void;\n }[] = [];\n private readonly executors = new Set<ReusableWorkerScriptablePackExecutor>();\n private workerCount = 0;\n private closed = false;\n\n constructor(options: ScriptablePackModuleExecutorPoolOptions = {}) {\n this.maxWorkers = Math.max(1, Math.trunc(options.maxWorkers ?? 2));\n this.maxTasksPerWorker = Math.max(1, Math.trunc(options.maxTasksPerWorker ?? 32));\n }\n\n acquire(): Promise<ScriptablePackModuleExecutor> {\n if (this.closed) return Promise.reject(new Error('ScriptablePack executor pool is closed'));\n const executor = this.idle.pop();\n if (executor !== undefined) return Promise.resolve(executor);\n if (this.workerCount < this.maxWorkers) {\n this.workerCount += 1;\n return Promise.resolve(this.createExecutor());\n }\n return new Promise((resolveAcquire, rejectAcquire) =>\n this.waiters.push({ resolve: resolveAcquire, reject: rejectAcquire }),\n );\n }\n\n async dispose(): Promise<void> {\n if (this.closed) return;\n this.closed = true;\n const waiters = this.waiters.splice(0);\n for (const waiter of waiters) {\n waiter.reject(new Error('ScriptablePack executor pool is closed'));\n }\n this.idle.splice(0);\n await Promise.all([...this.executors].map((executor) => executor.dispose('failure')));\n }\n\n private createExecutor(): ReusableWorkerScriptablePackExecutor {\n const executor = new ReusableWorkerScriptablePackExecutor(\n this.maxTasksPerWorker,\n (executor, reusable) => {\n if (this.closed) {\n this.executors.delete(executor);\n if (!reusable) this.workerCount -= 1;\n return;\n }\n if (!reusable) {\n this.executors.delete(executor);\n this.workerCount -= 1;\n } else {\n this.idle.push(executor);\n }\n this.drain();\n },\n );\n this.executors.add(executor);\n return executor;\n }\n\n private drain(): void {\n if (this.closed) return;\n while (this.waiters.length > 0) {\n const idle = this.idle.pop();\n if (idle !== undefined) {\n this.waiters.shift()?.resolve(idle);\n continue;\n }\n if (this.workerCount >= this.maxWorkers) return;\n this.workerCount += 1;\n this.waiters.shift()?.resolve(this.createExecutor());\n }\n }\n}\n\nexport function createScriptablePackModuleExecutorPool(\n options: ScriptablePackModuleExecutorPoolOptions = {},\n): ScriptablePackModuleExecutorPool {\n return new DefaultScriptablePackModuleExecutorPool(options);\n}\n\nfunction loadFailure(\n sourcePath: string,\n reason: 'module-load' | 'timeout',\n phase: 'module-load' | 'build',\n diagnostic: string,\n timeoutMs?: number,\n): Result<never, ScriptablePackError> {\n return err({\n code: 'pack-source-load-failed',\n expected: 'a trusted synchronous module with a valid default ScriptablePack export',\n hint: 'repair the module load or initialization failure, then inspect Meta again',\n detail: {\n sourcePath,\n reason,\n phase,\n diagnostic,\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n },\n });\n}\n\nfunction buildTimeoutFailure(sourcePath: string, timeoutMs: number): ScriptablePackReadError {\n return {\n code: 'pack-source-load-failed',\n expected: 'a ScriptablePack build to settle within the configured build timeout',\n hint: 'repair the authored build, then retry through a fresh ScriptablePack generation',\n detail: {\n sourcePath,\n reason: 'timeout',\n phase: 'build',\n timeoutMs,\n diagnostic: `ScriptablePack build exceeded ${timeoutMs}ms`,\n },\n };\n}\n\nexport async function loadScriptablePack(\n sourcePath: string,\n options: LoadScriptablePackOptions = {},\n): Promise<Result<Readonly<ScriptablePackDefinition>, ScriptablePackError>> {\n const timeoutMs = options.timeoutMs ?? 5_000;\n const buildTimeoutMs = options.buildTimeoutMs ?? 5_000;\n const executor = options.executor ?? new WorkerScriptablePackExecutor();\n let disposeReason: 'complete' | 'timeout' | 'failure' | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n try {\n const timeoutSignal = Symbol('scriptable-pack-module-timeout');\n const loaded = await Promise.race([\n executor.load(sourcePath),\n new Promise<typeof timeoutSignal>((resolve) => {\n timeout = setTimeout(() => resolve(timeoutSignal), timeoutMs);\n }),\n ]);\n if (loaded === timeoutSignal) {\n disposeReason = 'timeout';\n return loadFailure(\n sourcePath,\n 'timeout',\n 'module-load',\n `ScriptablePack module initialization exceeded ${timeoutMs}ms`,\n timeoutMs,\n );\n }\n const moduleValue =\n loaded !== null && typeof loaded === 'object' && 'default' in loaded\n ? (loaded as { readonly default: unknown }).default\n : undefined;\n const validated = validateScriptablePackDefinition(moduleValue, sourcePath);\n if (!validated.ok) {\n disposeReason = 'failure';\n return validated;\n }\n if (options.metadataOnly === true) {\n disposeReason = 'complete';\n return validated;\n }\n const definition = validated.value;\n type BuildOutcome = Awaited<ReturnType<ScriptablePackDefinition['build']>>;\n return ok({\n ...definition,\n build: async (reader: AssetReader): Promise<BuildOutcome> => {\n let buildTimedOut = false;\n let buildTimeout: ReturnType<typeof setTimeout> | undefined;\n const timeoutResult = err(buildTimeoutFailure(sourcePath, buildTimeoutMs));\n try {\n const built = await Promise.race([\n Promise.resolve(definition.build(reader)),\n new Promise<BuildOutcome>((resolve) => {\n buildTimeout = setTimeout(() => {\n buildTimedOut = true;\n resolve(timeoutResult as BuildOutcome);\n }, buildTimeoutMs);\n }),\n ]);\n if (buildTimedOut) {\n await executor.dispose?.('timeout');\n return built;\n }\n await executor.dispose?.('complete');\n return built;\n } catch (error) {\n await executor.dispose?.('failure');\n throw error;\n } finally {\n if (buildTimeout !== undefined) clearTimeout(buildTimeout);\n }\n },\n });\n } catch (error) {\n const diagnostic = error instanceof Error ? error.message : String(error);\n disposeReason = 'failure';\n return loadFailure(sourcePath, 'module-load', 'module-load', diagnostic);\n } finally {\n if (timeout !== undefined) clearTimeout(timeout);\n if (disposeReason !== undefined) await executor.dispose?.(disposeReason);\n }\n}\n\nconst CANONICAL_SCAFFOLD_MARKER = '// @forgeax-scriptable-pack canonical-v1';\nconst CANONICAL_MANIFEST_NAME = 'canonicalManifest';\nconst CANONICAL_MUTABLE_KINDS = new Set<ScriptablePackAssetKind>(['scene', 'mesh', 'material']);\n\ninterface CanonicalOutput {\n readonly guid: string;\n readonly kind: ScriptablePackAssetKind;\n readonly name?: string;\n}\n\ninterface CanonicalManifest {\n readonly schemaVersion: '1.0.0';\n readonly packageId: string;\n readonly name?: string;\n readonly assets: Readonly<Record<string, CanonicalOutput>>;\n readonly externalAssets: Readonly<Record<string, string>>;\n}\n\nexport interface FileSystemScriptablePackAuthoringOptions {\n /** All source and target paths are confined to this game root. */\n readonly gameRoot: string;\n readonly incomingRefs?: (sourcePath: string, sourceKey?: string) => Promise<readonly string[]>;\n readonly rebuild?: (\n sourcePath: string,\n mode: 'rebuild' | 'cold-cook',\n ) => Promise<Result<void, ScriptablePackError>>;\n}\n\nfunction authoringError(\n code:\n | 'pack-source-path-invalid'\n | 'pack-source-revision-conflict'\n | 'pack-source-mutation-unsupported'\n | 'pack-source-reference-conflict'\n | 'pack-source-write-failed',\n input: {\n readonly expected: string;\n readonly actual?: string;\n readonly hint: string;\n readonly retryable: boolean;\n readonly recoveryActions: readonly string[];\n readonly requestId?: string;\n readonly sourcePath?: string;\n readonly sourceKey?: string;\n readonly incomingRefs?: readonly string[];\n },\n): ScriptablePackError {\n return {\n code,\n expected: input.expected,\n ...(input.actual === undefined ? {} : { actual: input.actual }),\n hint: input.hint,\n retryable: input.retryable,\n recoveryActions: input.recoveryActions,\n detail: {\n ...(input.requestId === undefined ? {} : { requestId: input.requestId }),\n ...(input.sourcePath === undefined ? {} : { sourcePath: input.sourcePath }),\n ...(input.sourceKey === undefined ? {} : { sourceKey: input.sourceKey }),\n ...(input.incomingRefs === undefined ? {} : { incomingRefs: input.incomingRefs }),\n },\n };\n}\n\nfunction confinedSourcePath(\n gameRoot: string,\n sourcePath: string,\n): Result<{ readonly absolute: string; readonly relative: string }, ScriptablePackError> {\n const root = resolve(gameRoot);\n const absolute = resolve(root, sourcePath);\n const rel = relative(root, absolute);\n if (\n rel.length === 0 ||\n rel === '..' ||\n rel.startsWith(`..${sep}`) ||\n isAbsolute(sourcePath) ||\n !rel.endsWith('.pack.ts')\n ) {\n return err(\n authoringError('pack-source-path-invalid', {\n expected: 'a game-root-relative *.pack.ts path confined to the selected game',\n actual: sourcePath,\n hint: 'choose a relative ScriptablePack source path inside the selected game root',\n retryable: false,\n recoveryActions: ['choose-game-relative-source-path'],\n sourcePath,\n }),\n );\n }\n return ok({ absolute, relative: rel.split(sep).join('/') });\n}\n\nfunction revisionOf(source: string): string {\n return createHash('sha256').update(source).digest('hex');\n}\n\nfunction unwrapExpression(expression: ts.Expression): ts.Expression {\n if (\n ts.isAsExpression(expression) ||\n ts.isSatisfiesExpression(expression) ||\n ts.isParenthesizedExpression(expression)\n ) {\n return unwrapExpression(expression.expression);\n }\n return expression;\n}\n\nfunction literalValue(expression: ts.Expression): unknown {\n const value = unwrapExpression(expression);\n if (ts.isStringLiteral(value) || ts.isNoSubstitutionTemplateLiteral(value)) return value.text;\n if (value.kind === ts.SyntaxKind.TrueKeyword) return true;\n if (value.kind === ts.SyntaxKind.FalseKeyword) return false;\n if (value.kind === ts.SyntaxKind.NullKeyword) return null;\n if (ts.isNumericLiteral(value)) return Number(value.text);\n if (ts.isArrayLiteralExpression(value)) return value.elements.map(literalValue);\n if (ts.isObjectLiteralExpression(value)) {\n const result: Record<string, unknown> = {};\n for (const property of value.properties) {\n if (!ts.isPropertyAssignment(property))\n throw new TypeError('manifest properties must be data');\n const name = property.name;\n const key =\n ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)\n ? name.text\n : undefined;\n if (key === undefined) throw new TypeError('manifest property names must be static');\n result[key] = literalValue(property.initializer);\n }\n return result;\n }\n throw new TypeError('manifest values must be literal data');\n}\n\nfunction parseCanonicalManifest(source: string, sourcePath: string): CanonicalManifest | undefined {\n if (!source.startsWith(`${CANONICAL_SCAFFOLD_MARKER}\\n`)) return undefined;\n const file = ts.createSourceFile(\n sourcePath,\n source,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TS,\n );\n for (const statement of file.statements) {\n if (!ts.isVariableStatement(statement)) continue;\n for (const declaration of statement.declarationList.declarations) {\n if (\n ts.isIdentifier(declaration.name) &&\n declaration.name.text === CANONICAL_MANIFEST_NAME &&\n declaration.initializer !== undefined\n ) {\n const value = literalValue(declaration.initializer);\n if (value === null || typeof value !== 'object') return undefined;\n return value as CanonicalManifest;\n }\n }\n }\n return undefined;\n}\n\nfunction guidExpression(value: string): string {\n return `parseGuid(${JSON.stringify(value)})`;\n}\n\n/** Render the one source shape that the file authoring port may mutate structurally. */\nexport function renderCanonicalScriptablePack(manifest: CanonicalManifest): string {\n const data = JSON.stringify(manifest, null, 2);\n return `${CANONICAL_SCAFFOLD_MARKER}\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport { buildMeshAttributeMapForUvSets } from '@forgeax/engine-geometry';\nimport type { ScriptablePackDefinition } from '@forgeax/engine-pack/source';\nimport type { Asset, AssetGuid as AssetGuidType } from '@forgeax/engine-types';\nimport { ok } from '@forgeax/engine-types';\n\nconst ${CANONICAL_MANIFEST_NAME} = ${data} as const;\n\nfunction parseGuid(value: string): AssetGuidType {\n const parsed = AssetGuid.parse(value);\n if (!parsed.ok) throw parsed.error;\n return parsed.value;\n}\n\nfunction createOutput(kind: string): Asset {\n switch (kind) {\n case 'scene':\n return { kind: 'scene', entities: [], mounts: [] };\n case 'material':\n return { kind: 'material', values: {} };\n case 'mesh': {\n const vertices = new Float32Array([\n 0, 0.7, 0, 0, 0, 1, 0.5, 1, 0, 0, 0, 1,\n -0.7, -0.6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,\n 0.7, -0.6, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1,\n ]);\n return {\n kind: 'mesh',\n vertices,\n indices: new Uint16Array([0, 1, 2]),\n attributes: { ...buildMeshAttributeMapForUvSets(1), position: vertices },\n aabb: new Float32Array([-0.7, -0.6, 0, 0.7, 0.7, 0]),\n submeshes: [{ indexOffset: 0, indexCount: 3, vertexCount: 3, topology: 'triangle-list', materialSlot: 0 }],\n materialSlots: [{ slotName: 'Default' }],\n };\n }\n default:\n throw new Error(\\`canonical ScriptablePack output kind is not mutable: \\${kind}\\`);\n }\n}\n\nconst assets = Object.fromEntries(\n Object.entries(${CANONICAL_MANIFEST_NAME}.assets).map(([sourceKey, asset]) => [\n sourceKey,\n { ...asset, guid: parseGuid(asset.guid) },\n ]),\n);\nconst externalAssets = Object.fromEntries(\n Object.entries(${CANONICAL_MANIFEST_NAME}.externalAssets).map(([alias, guid]) => [alias, parseGuid(guid)]),\n);\n\nexport default {\n schemaVersion: '1.0.0',\n packageId: ${guidExpression(manifest.packageId)},\n ${manifest.name === undefined ? '' : `name: ${JSON.stringify(manifest.name)},\\n `}assets,\n externalAssets,\n build: () => ok(Object.fromEntries(Object.entries(assets).map(([sourceKey, asset]) => [sourceKey, createOutput(asset.kind)])) as Record<string, Asset>),\n} satisfies ScriptablePackDefinition;\n`;\n}\n\nfunction definitionFromCanonical(\n manifest: CanonicalManifest,\n): Result<ScriptablePackDefinition, ScriptablePackError> {\n const packageId = AssetGuidCodec.parse(manifest.packageId);\n if (!packageId.ok) return invalidCanonicalGuid('$.packageId', manifest.packageId);\n const assets: Record<string, { guid: AssetGuid; kind: ScriptablePackAssetKind; name?: string }> =\n {};\n for (const [sourceKey, output] of Object.entries(manifest.assets)) {\n const guid = AssetGuidCodec.parse(output.guid);\n if (!guid.ok)\n return invalidCanonicalGuid(`$.assets[${JSON.stringify(sourceKey)}].guid`, output.guid);\n assets[sourceKey] = {\n guid: guid.value,\n kind: output.kind,\n ...(output.name === undefined ? {} : { name: output.name }),\n };\n }\n const externalAssets: Record<string, AssetGuid> = {};\n for (const [alias, value] of Object.entries(manifest.externalAssets)) {\n const guid = AssetGuidCodec.parse(value);\n if (!guid.ok) return invalidCanonicalGuid(`$.externalAssets[${JSON.stringify(alias)}]`, value);\n externalAssets[alias] = guid.value;\n }\n return validateScriptablePackDefinition({\n schemaVersion: '1.0.0',\n packageId: packageId.value,\n ...(manifest.name === undefined ? {} : { name: manifest.name }),\n assets,\n externalAssets,\n build: () => ok({} as Record<string, never>),\n });\n}\n\nfunction invalidCanonicalGuid(\n propertyPath: string,\n actual: string,\n): Result<never, ScriptablePackError> {\n return err({\n code: 'pack-source-definition-invalid',\n expected: 'a canonical UUID string',\n hint: 'repair the canonical scaffold manifest GUID and inspect Meta again',\n detail: { propertyPath, actual },\n });\n}\n\nfunction invalidCanonicalSource(\n sourcePath: string,\n error: unknown,\n): Result<never, ScriptablePackError> {\n return err({\n code: 'pack-source-definition-invalid',\n expected: 'a literal canonical-v1 manifest with the required package/assets/external fields',\n hint: 'repair the canonical scaffold or open it as custom source without structured mutation',\n detail: {\n sourcePath,\n propertyPath: '$.canonicalManifest',\n actual: error instanceof Error ? error.message : String(error),\n },\n });\n}\n\nasync function atomicWrite(path: string, source: string): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n const temporary = `${path}.${process.pid}.${Date.now()}.tmp`;\n try {\n await writeFile(temporary, source, { encoding: 'utf8', flag: 'wx' });\n await rename(temporary, path);\n } catch (error) {\n await rm(temporary, { force: true });\n throw error;\n }\n}\n\nfunction sameStrings(left: readonly string[], right: readonly string[]): boolean {\n return [...left].sort().join('\\0') === [...right].sort().join('\\0');\n}\n\n/** Node filesystem adapter for the public ScriptablePack authoring gateway. */\nexport function createFileSystemScriptablePackAuthoringPort(\n options: FileSystemScriptablePackAuthoringOptions,\n): ScriptablePackAuthoringPort {\n const resolvePath = (sourcePath: string) => confinedSourcePath(options.gameRoot, sourcePath);\n\n async function readSource(sourcePath: string) {\n const path = resolvePath(sourcePath);\n if (!path.ok) return path;\n try {\n const source = await readFile(path.value.absolute, 'utf8');\n return ok({ ...path.value, source, revision: revisionOf(source) });\n } catch (error) {\n return err(\n authoringError('pack-source-write-failed', {\n expected: 'a readable ScriptablePack source file',\n actual: error instanceof Error ? error.message : String(error),\n hint: 'restore the source file or create it through the ScriptablePack gateway',\n retryable: true,\n recoveryActions: ['inspect-source-path', 'retry'],\n sourcePath,\n }),\n );\n }\n }\n\n async function inspect(sourcePath: string) {\n const read = await readSource(sourcePath);\n if (!read.ok) return read;\n let canonical: CanonicalManifest | undefined;\n try {\n canonical = parseCanonicalManifest(read.value.source, read.value.relative);\n } catch (error) {\n return invalidCanonicalSource(read.value.relative, error);\n }\n const loaded =\n canonical === undefined\n ? await loadScriptablePack(read.value.absolute, { metadataOnly: true })\n : definitionFromCanonical(canonical);\n if (!loaded.ok) return loaded;\n return ok({\n revision: read.value.revision,\n meta: projectScriptablePackMeta(loaded.value, read.value.relative),\n });\n }\n\n async function preflight(sourcePath: string) {\n const read = await readSource(sourcePath);\n if (!read.ok) return read;\n const inspected = await inspect(sourcePath);\n if (!inspected.ok) return inspected;\n let canonical: CanonicalManifest | undefined;\n try {\n canonical = parseCanonicalManifest(read.value.source, read.value.relative);\n } catch (error) {\n return invalidCanonicalSource(read.value.relative, error);\n }\n const incomingRefs = (await options.incomingRefs?.(read.value.relative)) ?? [];\n return ok({\n revision: inspected.value.revision,\n meta: inspected.value.meta,\n capabilities:\n canonical === undefined\n ? ({\n inspect: true,\n rebuild: true,\n coldCook: true,\n reason: 'structured mutation is available only for canonical-v1 scaffolds',\n } as const)\n : ({\n inspect: true,\n rebuild: true,\n coldCook: true,\n addOutput: true,\n addExternalAsset: true,\n renameDisplay: true,\n removeOutput: true,\n clone: true,\n } as const),\n incomingRefs,\n });\n }\n\n async function mutate(operation: ScriptablePackAuthoringMutation) {\n const targetPath =\n operation.kind === 'clone-scriptable-pack' ? operation.targetPath : operation.sourcePath;\n const target = resolvePath(targetPath);\n if (!target.ok) return target;\n\n let manifest: CanonicalManifest;\n let currentRevision: string | undefined;\n if (operation.kind === 'create-scriptable-pack') {\n if (!CANONICAL_MUTABLE_KINDS.has(operation.initialOutput.kind)) {\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'a canonical scene, mesh, or material initial output',\n actual: operation.initialOutput.kind,\n hint: 'create one of the canonical output kinds, then hand-author advanced outputs',\n retryable: false,\n recoveryActions: ['choose-supported-output-kind'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n }),\n );\n }\n try {\n await stat(target.value.absolute);\n return err(\n authoringError('pack-source-revision-conflict', {\n expected: 'an unused target source path',\n actual: 'source already exists',\n hint: 'inspect the existing source or choose a new path',\n retryable: false,\n recoveryActions: ['asset.preflight', 'choose-new-source-path'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n }),\n );\n } catch {\n // Missing is the required create precondition.\n }\n manifest = {\n schemaVersion: '1.0.0',\n packageId: AssetGuidCodec.format(operation.packageId),\n ...(operation.name === undefined ? {} : { name: operation.name }),\n assets: {\n [operation.initialOutput.sourceKey]: {\n guid: AssetGuidCodec.format(operation.initialOutput.guid),\n kind: operation.initialOutput.kind,\n ...(operation.initialOutput.name === undefined\n ? {}\n : { name: operation.initialOutput.name }),\n },\n },\n externalAssets: {},\n };\n } else {\n const read = await readSource(operation.sourcePath);\n if (!read.ok) return read;\n currentRevision = read.value.revision;\n if (\n operation.expectedRevision !== undefined &&\n operation.expectedRevision !== currentRevision\n ) {\n return err(\n authoringError('pack-source-revision-conflict', {\n expected: operation.expectedRevision,\n actual: currentRevision,\n hint: 'inspect the current source revision, reconcile the edit, then retry with a new requestId',\n retryable: true,\n recoveryActions: ['asset.preflight', 'mint-request-id'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n }),\n );\n }\n let parsed: CanonicalManifest | undefined;\n try {\n parsed = parseCanonicalManifest(read.value.source, read.value.relative);\n } catch (error) {\n return invalidCanonicalSource(read.value.relative, error);\n }\n if (parsed === undefined) {\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'a canonical-v1 scaffold for structured source mutation',\n actual: 'custom ScriptablePack source',\n hint: 'clone into a canonical scaffold or edit custom source with a code editor',\n retryable: false,\n recoveryActions: ['clone-scriptable-pack', 'open-code-editor'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n }),\n );\n }\n manifest = parsed;\n }\n\n if (operation.kind === 'clone-scriptable-pack') {\n try {\n await stat(target.value.absolute);\n return err(\n authoringError('pack-source-revision-conflict', {\n expected: 'an unused clone target source path',\n actual: 'source already exists',\n hint: 'inspect the existing target or choose a new path',\n retryable: false,\n recoveryActions: ['asset.preflight', 'choose-new-source-path'],\n requestId: operation.requestId,\n sourcePath: target.value.relative,\n }),\n );\n } catch {\n // Missing is the required clone precondition.\n }\n }\n\n if (operation.kind === 'add-output') {\n if (!CANONICAL_MUTABLE_KINDS.has(operation.assetKind)) {\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'a canonical scene, mesh, or material output',\n actual: operation.assetKind,\n hint: 'hand-author advanced output kinds in the source module',\n retryable: false,\n recoveryActions: ['open-code-editor'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n sourceKey: operation.sourceKey,\n }),\n );\n }\n manifest = {\n ...manifest,\n assets: {\n ...manifest.assets,\n [operation.sourceKey]: {\n guid: AssetGuidCodec.format(operation.guid),\n kind: operation.assetKind,\n ...(operation.name === undefined ? {} : { name: operation.name }),\n },\n },\n };\n } else if (operation.kind === 'add-external-asset') {\n manifest = {\n ...manifest,\n externalAssets: {\n ...manifest.externalAssets,\n [operation.alias]: AssetGuidCodec.format(operation.guid),\n },\n };\n } else if (operation.kind === 'rename-display') {\n if (operation.target.kind === 'package') manifest = { ...manifest, name: operation.name };\n else {\n const output = manifest.assets[operation.target.sourceKey];\n if (output === undefined)\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'an existing sourceKey',\n actual: operation.target.sourceKey,\n hint: 'inspect Meta and choose a current output',\n retryable: true,\n recoveryActions: ['asset.preflight'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n sourceKey: operation.target.sourceKey,\n }),\n );\n manifest = {\n ...manifest,\n assets: {\n ...manifest.assets,\n [operation.target.sourceKey]: { ...output, name: operation.name },\n },\n };\n }\n } else if (operation.kind === 'remove-output') {\n const incomingRefs =\n (await options.incomingRefs?.(operation.sourcePath, operation.sourceKey)) ?? [];\n if (\n incomingRefs.length > 0 &&\n !sameStrings(incomingRefs, operation.confirmIncomingRefs ?? [])\n ) {\n return err(\n authoringError('pack-source-reference-conflict', {\n expected: 'explicit acknowledgement of every current incoming reference',\n actual: `${incomingRefs.length} incoming references`,\n hint: 'inspect dependents, then confirm the exact incoming reference identities or cancel',\n retryable: true,\n recoveryActions: ['inspect-incoming-refs', 'confirm-remove-output'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n sourceKey: operation.sourceKey,\n incomingRefs,\n }),\n );\n }\n const { [operation.sourceKey]: removed, ...assets } = manifest.assets;\n if (removed === undefined || Object.keys(assets).length === 0) {\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'an existing output while retaining at least one package output',\n actual: operation.sourceKey,\n hint: 'keep one output or remove the entire source file through an explicit file operation',\n retryable: false,\n recoveryActions: ['asset.preflight'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n sourceKey: operation.sourceKey,\n }),\n );\n }\n manifest = { ...manifest, assets };\n } else if (operation.kind === 'clone-scriptable-pack') {\n manifest = {\n ...manifest,\n packageId: AssetGuidCodec.format(operation.packageId),\n assets: Object.fromEntries(\n Object.entries(manifest.assets).map(([sourceKey, output]) => [\n sourceKey,\n {\n ...output,\n guid: AssetGuidCodec.format(operation.outputGuids[sourceKey] as AssetGuid),\n },\n ]),\n ),\n };\n }\n\n const source = renderCanonicalScriptablePack(manifest);\n try {\n await atomicWrite(target.value.absolute, source);\n return ok({ sourcePath: target.value.relative, revision: revisionOf(source) });\n } catch (error) {\n return err(\n authoringError('pack-source-write-failed', {\n expected: 'an atomic source-file replacement',\n actual: error instanceof Error ? error.message : String(error),\n hint: 'repair filesystem permissions or disk capacity, then retry with a new requestId',\n retryable: true,\n recoveryActions: ['inspect-filesystem', 'mint-request-id'],\n requestId: operation.requestId,\n sourcePath: target.value.relative,\n }),\n );\n }\n }\n\n return {\n preflight,\n mutate,\n inspect,\n async rebuild(sourcePath, mode) {\n const path = resolvePath(sourcePath);\n if (!path.ok) return path;\n const rebuilt = (await options.rebuild?.(path.value.relative, mode)) ?? ok(undefined);\n return rebuilt.ok ? inspect(path.value.relative) : rebuilt;\n },\n };\n}\n","import { createHash } from 'node:crypto';\nimport { readdir, readFile, stat } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport type {\n CatalogDiagnostic,\n PackErrorCode,\n ProviderProvenance,\n ResourceRevision,\n SourceOverrideDescriptor,\n} from '@forgeax/engine-types';\nimport { PACK_ERROR_HINTS } from '@forgeax/engine-types';\nimport { loadAssetConfig } from './config.js';\nimport { PackError } from './errors.js';\nimport { isValidAssetGuidString } from './guid.js';\nimport { validateProducerContract, validateProducerOutputs } from './producer-contract.js';\nimport { resolveAssetSource } from './resolve-asset-source.js';\nimport { validateMeta, validatePack } from './schema-compiled.js';\nimport {\n projectScriptablePackMeta,\n type ScriptablePackDefinition,\n type ScriptablePackMetaJson,\n type ScriptablePackSourceClosureEntry,\n} from './scriptable-pack.js';\nimport {\n inventoryScriptablePackSource,\n loadScriptablePack,\n type ScriptablePackModuleExecutor,\n} from './scriptable-pack-node.js';\n\n// Minimal Result<T, E> — structurally compatible with @forgeax/engine-rhi Result\n// but defined locally to avoid a heavy runtime dep in this build-time package.\nexport type ScanResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction ok<T>(value: T): ScanResult<T, never> {\n return { ok: true, value };\n}\n\nfunction packErr<E>(error: E): ScanResult<never, E> {\n return { ok: false, error };\n}\n\n/** Host-owned source paths that should not enter the Pack catalog. */\nexport interface ScanOptions {\n readonly ignorePath?: (path: string) => boolean;\n readonly scriptablePack?: ScriptablePackScanOptions;\n}\n\n/** One bounded executor policy shared by ScriptablePack inventory and production. */\nexport interface ScriptablePackScanOptions {\n readonly timeoutMs?: number;\n readonly buildTimeoutMs?: number;\n readonly executor?: ScriptablePackModuleExecutor;\n /** Path-only scans must release the isolated loader before returning. */\n readonly metadataOnly?: boolean;\n}\n\n/** Stable default policy shared by inventory and production owners. */\nexport const STANDARD_SCRIPTABLE_PACK_SCAN_OPTIONS = Object.freeze(\n {},\n) satisfies ScriptablePackScanOptions;\n\nexport interface InventoryDeclaration {\n readonly guid: string;\n readonly kind: string;\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n}\n\nexport interface ScanInventory {\n readonly paths: readonly string[];\n readonly inventory: readonly InventoryDeclaration[];\n /** Complete parsed source declarations captured by the validated scan pass. */\n readonly declarations: ReadonlyMap<string, ScanSourceDeclaration>;\n}\n\nexport interface ScriptablePackInventoryDeclaration {\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly meta: ScriptablePackMetaJson;\n readonly definition: Readonly<ScriptablePackDefinition>;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n}\n\nexport interface MetaInventoryDocument {\n readonly schemaVersion: string | number;\n readonly kind: 'external-asset-package';\n readonly packageId?: string;\n readonly name?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly importer: string;\n readonly source?: string;\n readonly importSettings: Readonly<Record<string, unknown>>;\n readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];\n readonly paramSchema?: readonly Readonly<Record<string, unknown>>[];\n readonly subAssets: readonly MetaInventorySubAsset[];\n}\n\nexport interface MetaInventorySubAsset {\n readonly guid: string;\n readonly sourceIndex: number;\n readonly sourceKey?: string;\n readonly name?: string;\n readonly kind: string;\n}\n\nexport interface PackInventoryDocument {\n readonly schemaVersion: '1.0.0' | '2.0.0';\n readonly kind: 'internal-text-package';\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly assets: readonly PackInventoryAsset[];\n}\n\nexport interface PackInventoryAsset {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly execution?: 'direct' | 'cooked';\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly payload: Readonly<Record<string, unknown>>;\n readonly refs: readonly string[];\n readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n}\n\nexport type ScanSourceDeclaration =\n | {\n readonly format: 'meta.json';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly value: MetaInventoryDocument;\n }\n | {\n readonly format: 'pack.json';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly sourceText: string;\n readonly value: PackInventoryDocument;\n }\n | ({\n readonly format: 'pack.ts';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly value: ScriptablePackMetaJson;\n } & ScriptablePackInventoryDeclaration);\n\ninterface ScanCapture {\n readonly declarations: Map<string, ScanSourceDeclaration>;\n}\n\n/**\n * Directory names that are skipped during recursive traversal unless\n * explicitly provided as a root in the `roots` parameter (whitelist override).\n * Requirements §3.4 + §5 blacklist.\n *\n * Re-exported as `SCANNER_BLACKLIST` for cross-package reuse: the\n * `forgeax-engine-remote-asset import --check` traversal (M4 / w21 +\n * plan-strategy section 2.8 path b) walks the same set of source-orphan\n * candidates as the scanner, so we share the single SSOT here.\n */\nconst BLACKLIST = new Set([\n 'node_modules',\n '.forgeax-harness',\n '.forgeax',\n '.git',\n 'dist',\n '.forgeax-asset-cache',\n 'forgeax-engine-assets',\n 'coverage',\n]);\n\nexport const SCANNER_BLACKLIST: ReadonlySet<string> = BLACKLIST;\n\ntype MalformedFileCode = Extract<PackErrorCode, 'pack-malformed-pack' | 'pack-malformed-meta'>;\n\ntype JsonValidator = {\n (value: unknown): boolean;\n errors?: readonly { readonly instancePath?: string; readonly message?: string }[] | null;\n};\n\nasync function readValidatedJson(\n path: string,\n code: MalformedFileCode,\n validate: JsonValidator,\n): Promise<ScanResult<{ readonly raw: string; readonly parsed: unknown }, PackError>> {\n let raw: string;\n let parsed: unknown;\n try {\n raw = await readFile(path, 'utf-8');\n parsed = JSON.parse(raw);\n } catch {\n return packErr(\n makePackError(code, {\n path,\n ajvErrors: [{ instancePath: '', message: 'JSON parse failed' }],\n }),\n );\n }\n if (!validate(parsed)) {\n return packErr(\n makePackError(code, {\n path,\n ajvErrors: (validate.errors ?? []).map((error) => ({\n instancePath: error.instancePath ?? '',\n message: error.message ?? 'unknown ajv error',\n })),\n }),\n );\n }\n return ok({ raw, parsed });\n}\n\nfunction makePackError(\n code: PackErrorCode,\n detail: ConstructorParameters<typeof PackError>[0]['detail'],\n): PackError {\n return new PackError({\n code,\n expected: `pack error: ${code}`,\n hint: PACK_ERROR_HINTS[code],\n detail,\n });\n}\n\n/**\n * For scene assets with `payload.mounts[]`, return the lowercased GUID\n * each `mount.source` integer resolves to via `asset.refs[]`. Returns an\n * empty iterable for non-scene assets, scene assets without mounts, or\n * mounts with malformed `source` (out-of-range integer / non-integer) —\n * those are caught by ajv schema validation upstream. The yielded GUIDs\n * feed scanner step-6's mount-asset cycle DFS (D-1, R10).\n */\nfunction* extractMountSourceGuids(asset: {\n kind?: unknown;\n payload?: unknown;\n refs: readonly string[];\n}): Generator<string> {\n if (asset.kind !== 'scene') return;\n const payload = asset.payload as { mounts?: unknown } | undefined;\n if (!payload || !Array.isArray(payload.mounts)) return;\n for (const rawMount of payload.mounts) {\n const mount = rawMount as { source?: unknown };\n const idx = mount.source;\n if (typeof idx !== 'number' || !Number.isInteger(idx)) continue;\n if (idx < 0 || idx >= asset.refs.length) continue;\n const resolved = asset.refs[idx];\n if (typeof resolved !== 'string') continue;\n yield resolved.toLowerCase();\n }\n}\n\n/**\n * Scan one or more root directories for `.meta.json`, `.pack.json`, and `.pack.ts` files.\n * Runs a 7-step fail-fast validation chain (w17 + M7-T01):\n * Step 1 - collect all .meta.json + .pack.json paths (blacklist skipped)\n * Step 2 - schema validation (ajv strict)\n * Step 3 - GUID string format validation\n * Step 4 - GUID collision detection\n * Step 5 - orphan .meta.json detection\n * Step 6 - cyclic reference detection (hand-written DFS)\n * Step 7 - complete pack and source closure validation\n *\n * Returns `Ok(paths)` or `Err(PackError)` on the first violation.\n *\n * NOTE: source files without a .meta.json are logged but not fatal (requirements §5).\n */\nasync function scanValidated(\n roots: readonly string[],\n opts: ScanOptions = {},\n capture?: ScanCapture,\n): Promise<ScanResult<string[], PackError>> {\n // Step 1: collect all authored package declarations. ScriptablePack runtime\n // validation belongs to its trusted module loader; scanner only inventories\n // the source path so CLI/Vite share one discovery set.\n const rawPaths: string[] = [];\n const explicitRootSet = new Set(roots);\n\n async function traverse(dir: string): Promise<void> {\n let entries: import('node:fs').Dirent[];\n try {\n entries = (await readdir(dir, { withFileTypes: true })) as import('node:fs').Dirent[];\n } catch {\n return;\n }\n\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n\n if (opts.ignorePath?.(fullPath) === true) continue;\n\n if (entry.isDirectory()) {\n // Skip blacklisted subdirectories unless the subdir is itself an explicit root\n if (BLACKLIST.has(basename(fullPath)) && !explicitRootSet.has(fullPath)) {\n continue;\n }\n await traverse(fullPath);\n } else if (entry.isFile()) {\n const name = entry.name;\n if (\n name.endsWith('.meta.json') ||\n name.endsWith('.pack.json') ||\n name.endsWith('.pack.ts')\n ) {\n rawPaths.push(fullPath);\n }\n }\n }\n }\n\n for (const root of roots) {\n // Explicit file roots are useful when a host wants one source package\n // from a larger asset tree without also scanning sibling packages. Keep\n // directory-root behaviour unchanged; this is only an opt-in whitelist.\n try {\n const rootStat = await stat(root);\n if (rootStat.isFile()) {\n if (opts.ignorePath?.(root) === true) continue;\n if (\n root.endsWith('.meta.json') ||\n root.endsWith('.pack.json') ||\n root.endsWith('.pack.ts')\n ) {\n rawPaths.push(root);\n }\n continue;\n }\n } catch {\n // The existing directory traversal treats missing roots as empty.\n }\n await traverse(root);\n }\n\n // Separate meta and pack paths\n const metaPaths = rawPaths.filter((p) => p.endsWith('.meta.json'));\n const packPaths = rawPaths.filter((p) => p.endsWith('.pack.json'));\n const scriptablePaths = rawPaths.filter((p) => p.endsWith('.pack.ts'));\n\n // Step 2 + 3: parse + schema validate + GUID format validate each pack file\n // One normalized GUID map covers pack assets and meta subAssets. The source\n // kind stays in the path/detail evidence; identity is the normalized GUID.\n const guidToPath = new Map<string, string>();\n const packRefs = new Map<string, string[]>(); // guid -> refs[]\n\n for (const packPath of packPaths) {\n const loaded = await readValidatedJson(packPath, 'pack-malformed-pack', validatePack);\n if (!loaded.ok) return loaded;\n const { raw, parsed } = loaded.value;\n\n const packageContract = validateProducerContract(parsed);\n if (!packageContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '', message: packageContract.error.code }],\n }),\n );\n }\n\n // Step 3: validate GUIDs in pack\n const packObj = parsed as unknown as PackInventoryDocument;\n for (const asset of packObj.assets) {\n if (\n asset.kind === 'particle-effect' &&\n asset.execution === 'direct' &&\n (asset.refs.length > 0 || Object.keys(asset.artifacts ?? {}).length > 0)\n ) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [\n {\n instancePath: '/assets',\n message:\n 'authored particle-effect assets are source-only; refs and artifacts must be empty',\n },\n ],\n }),\n );\n }\n }\n const producerAssets = packObj.assets.filter(\n (asset) => asset.sourceKey !== undefined || asset.sourceIndex !== undefined,\n );\n if (producerAssets.length > 0) {\n for (const asset of producerAssets) {\n const assetContract = validateProducerContract(asset);\n if (!assetContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: assetContract.error.code }],\n }),\n );\n }\n }\n const topologyContract = validateProducerOutputs(\n producerAssets.map((asset, sourceIndex) => ({\n guid: asset.guid,\n kind: asset.kind,\n sourceIndex: asset.sourceIndex ?? sourceIndex,\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n })),\n );\n if (!topologyContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: topologyContract.error.code }],\n }),\n );\n }\n }\n for (const asset of packObj.assets) {\n if (!isValidAssetGuidString(asset.guid)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: asset.guid,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n }),\n );\n }\n for (const ref of asset.refs) {\n if (!isValidAssetGuidString(ref)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: ref,\n reason: 'expected 36-char RFC 4122 dash-form UUID in refs[]',\n }),\n );\n }\n }\n\n // Step 4: collision check\n const normalizedGuid = asset.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, packPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, packPath);\n\n // feat-20260608-scene-nesting-ecs-fication M1 / w14 (D-1):\n // mount-payload-extract — for scene assets, redundantly inject the\n // mount.source -> resolved GUID edge into the cycle graph alongside\n // asset.refs[]. By the .pack.json convention mount.source is an\n // integer index into the same asset.refs[], so the resolved GUID is\n // already present in `existingRefs`; this defensive pass guarantees\n // that any author-supplied mounts[] references participate in the\n // cycle DFS even if the schema-emitter forgot to mirror them into\n // refs[]. The `kind: 'mount-asset'` tag on the resulting\n // pack-cyclic-reference detail is set by the cycle producer below\n // (R10).\n packRefs.set(normalizedGuid, [\n ...asset.refs.map((ref) => ref.toLowerCase()),\n ...extractMountSourceGuids(asset),\n ]);\n }\n capture?.declarations.set(packPath, {\n format: 'pack.json',\n sourcePath: packPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n sourceText: raw,\n value: packObj,\n });\n }\n\n // Step 2 + 3 + 5: parse + schema validate + GUID format validate + orphan check for meta files\n const { paths: assetPaths } = loadAssetConfig(process.cwd());\n for (const metaPath of metaPaths) {\n const loaded = await readValidatedJson(metaPath, 'pack-malformed-meta', validateMeta);\n if (!loaded.ok) return loaded;\n const { raw, parsed } = loaded.value;\n\n const metaContract = validateProducerContract(parsed);\n if (!metaContract.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: metaPath,\n ajvErrors: [{ instancePath: '', message: metaContract.error.code }],\n }),\n );\n }\n\n // Step 3: validate GUIDs in meta subAssets\n const metaObj = parsed as unknown as MetaInventoryDocument;\n capture?.declarations.set(metaPath, {\n format: 'meta.json',\n sourcePath: metaPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n value: metaObj,\n });\n for (const sub of metaObj.subAssets) {\n if (!isValidAssetGuidString(sub.guid)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: sub.guid,\n reason: 'expected 36-char RFC 4122 dash-form UUID in subAssets[].guid',\n }),\n );\n }\n const normalizedGuid = sub.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, metaPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, metaPath);\n }\n const producerSubAssets = metaObj.subAssets.length > 1 ? metaObj.subAssets : [];\n if (producerSubAssets.length > 0) {\n const topologyContract = validateProducerOutputs(producerSubAssets);\n if (!topologyContract.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: metaPath,\n ajvErrors: [{ instancePath: '/subAssets', message: topologyContract.error.code }],\n }),\n );\n }\n }\n\n // Step 5: orphan .meta.json check — the source file declared in meta.source must exist.\n // Uses resolveAssetSource for three-mode dispatch (undefined derivation / @name/ path table /\n // relative path), replacing the former hardcoded join(metaDir, metaObj.source).\n const sourceResolved = resolveAssetSource(metaPath, metaObj.source, assetPaths);\n if (!sourceResolved.ok) {\n return packErr(sourceResolved.error);\n }\n const expectedSourcePath = sourceResolved.value;\n try {\n await stat(expectedSourcePath);\n } catch {\n return packErr(\n makePackError('pack-orphan-meta', {\n metaPath,\n expectedFile: expectedSourcePath,\n }),\n );\n }\n }\n\n // ScriptablePack identity enters the same topology and collision authority as JSON declarations.\n for (const sourcePath of scriptablePaths) {\n let source: string;\n try {\n source = await readFile(sourcePath, 'utf8');\n } catch {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: 'ScriptablePack source read failed' }],\n }),\n );\n }\n const loaded = await loadScriptablePack(sourcePath, {\n ...(opts.scriptablePack ?? {}),\n ...(capture === undefined ? { metadataOnly: true } : {}),\n });\n if (!loaded.ok) {\n const diagnostic =\n 'diagnostic' in loaded.error.detail ? loaded.error.detail.diagnostic : undefined;\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [\n {\n instancePath: '',\n message:\n diagnostic === undefined\n ? loaded.error.code\n : `${loaded.error.code}: ${diagnostic}`,\n },\n ],\n }),\n );\n }\n let sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n try {\n sourceClosure = await inventoryScriptablePackSource(sourcePath, source);\n } catch {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: 'ScriptablePack source closure read failed' }],\n }),\n );\n }\n const meta = projectScriptablePackMeta(loaded.value, sourcePath);\n const topology = validateProducerOutputs(meta.subAssets);\n if (!topology.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '/subAssets', message: topology.error.code }],\n }),\n );\n }\n const declaration = {\n sourcePath,\n sourceRevision: `sha256:${createHash('sha256').update(source).digest('hex')}`,\n meta,\n definition: loaded.value,\n sourceClosure,\n } satisfies ScriptablePackInventoryDeclaration;\n capture?.declarations.set(sourcePath, {\n format: 'pack.ts',\n ...declaration,\n value: meta,\n });\n for (const sub of meta.subAssets) {\n const guid = sub.guid.toLowerCase();\n const existing = guidToPath.get(guid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', { paths: [existing, sourcePath], guid }),\n );\n }\n guidToPath.set(guid, sourcePath);\n }\n }\n\n // Step 6: cyclic reference detection via hand-written DFS (no graphlib dep)\n // visited: nodes fully processed; recStack: nodes in current DFS path\n const visited = new Set<string>();\n const recStack = new Set<string>();\n\n function dfs(guid: string, path: string[]): string[] | null {\n visited.add(guid);\n recStack.add(guid);\n\n for (const ref of packRefs.get(guid) ?? []) {\n if (!visited.has(ref)) {\n const cycle = dfs(ref, [...path, ref]);\n if (cycle !== null) return cycle;\n } else if (recStack.has(ref)) {\n // Found a back-edge: reconstruct cycle from the repeated node\n const cycleStart = path.indexOf(ref);\n return cycleStart >= 0 ? [...path.slice(cycleStart), ref] : [...path, ref];\n }\n }\n\n recStack.delete(guid);\n return null;\n }\n\n for (const guid of guidToPath.keys()) {\n if (!visited.has(guid)) {\n const cycle = dfs(guid, [guid]);\n if (cycle !== null) {\n return packErr(\n makePackError('pack-cyclic-reference', {\n code: 'pack-cyclic-reference',\n kind: 'mount-asset',\n cycle,\n }),\n );\n }\n }\n }\n\n return ok(rawPaths);\n}\n\n/** Scan one complete Pack inventory while preserving the public path-only API. */\nexport async function scan(\n roots: readonly string[],\n opts: ScanOptions = {},\n): Promise<ScanResult<string[], PackError>> {\n return scanValidated(roots, opts);\n}\n\n/** Return the validated source inventory without interpreting producer output kinds. */\nexport async function scanInventory(\n roots: readonly string[],\n opts: ScanOptions = {},\n): Promise<ScanResult<ScanInventory, PackError>> {\n const declarations = new Map<string, ScanSourceDeclaration>();\n const scanned = await scanValidated(roots, opts, { declarations });\n if (!scanned.ok) return scanned;\n const inventory: InventoryDeclaration[] = [];\n for (const sourcePath of scanned.value) {\n const declaration = declarations.get(sourcePath);\n if (declaration?.format !== 'pack.json') continue;\n for (const [index, asset] of declaration.value.assets.entries()) {\n inventory.push({\n guid: asset.guid,\n kind: asset.kind,\n sourcePath,\n sourceRevision: declaration.sourceRevision,\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(asset.sourceIndex === undefined\n ? { sourceIndex: index }\n : { sourceIndex: asset.sourceIndex }),\n });\n }\n }\n return ok({ paths: scanned.value, inventory, declarations });\n}\n","import { relative } from 'node:path';\nimport type { PackIndexEntry, ProviderProvenance } from '@forgeax/engine-types';\nimport {\n findReservedAssetKindConflict,\n projectExternalCatalogEntries,\n projectPackageCatalog,\n} from './catalog-projection.js';\nimport { loadAssetConfig } from './config.js';\nimport { deriveAssetName } from './deriveAssetName.js';\nimport { resolveAssetSource } from './resolve-asset-source.js';\nimport {\n type MetaInventoryDocument,\n type ScanOptions,\n type ScanSourceDeclaration,\n scanInventory,\n} from './scanner.js';\n\ntype CatalogImportMeta = Pick<\n MetaInventoryDocument,\n | 'importer'\n | 'packageId'\n | 'provenance'\n | 'revision'\n | 'diagnostics'\n | 'importSettings'\n | 'sourceOverrides'\n | 'subAssets'\n> & {\n readonly source: string;\n readonly sourceRevision?: string;\n readonly buildPack?: boolean;\n};\n\nexport type CatalogBuildErrorCode =\n | 'catalog-meta-schema-invalid'\n | 'catalog-scan-failed'\n | 'catalog-raw-source-unsupported'\n | 'catalog-scriptable-pack-invalid'\n | 'catalog-host-kind-conflict';\n\nexport interface CatalogBuildError {\n readonly code: CatalogBuildErrorCode;\n readonly path: string;\n readonly message: string;\n readonly expected?: string;\n readonly actual?: string;\n readonly hint?: string;\n readonly subjects?: readonly string[];\n}\n\nexport type CatalogAuthority = 'authoritative' | 'degraded';\n\nexport interface CatalogBuildResult {\n readonly schemaVersion: 'catalog-legacy-v1';\n readonly entries: readonly PackIndexEntry[];\n readonly authority: CatalogAuthority;\n readonly diagnostics: readonly CatalogBuildError[];\n readonly declarations: ReadonlyMap<string, CatalogImportMeta>;\n readonly sourceDeclarations: ReadonlyMap<string, ScanSourceDeclaration>;\n}\n\nexport type CatalogProducerVisibility = (\n input: Pick<MetaInventoryDocument, 'importer' | 'importSettings' | 'subAssets'>,\n) => boolean;\n\nexport interface CatalogImporterPolicy {\n readonly disposition: 'publish' | 'exclude' | 'missing';\n readonly expected: string;\n readonly hint: string;\n readonly hostProvided: boolean;\n}\n\nexport interface CatalogBuildProjectionOptions {\n readonly base?: string;\n readonly scanOptions?: ScanOptions;\n readonly importerPolicy: (importer: string) => CatalogImporterPolicy;\n readonly visibility?: CatalogProducerVisibility;\n}\n\nfunction sourcePathFor(cwd: string, path: string): string {\n return relative(cwd, path).replace(/\\\\/g, '/');\n}\n\nexport function metaPathForGuid(\n declarations: ReadonlyMap<string, CatalogImportMeta>,\n guid: string,\n): string | undefined {\n const lower = guid.toLowerCase();\n for (const [path, declaration] of declarations) {\n if (declaration.subAssets.some((asset) => asset.guid.toLowerCase() === lower)) return path;\n }\n return undefined;\n}\n\nfunction unsupportedPolicyError(\n path: string,\n importer: string,\n policy: CatalogImporterPolicy,\n): CatalogBuildError {\n return {\n code: 'catalog-raw-source-unsupported',\n path,\n message: `sidecar provider ${JSON.stringify(importer)} cannot publish a Catalog product`,\n expected: policy.expected,\n actual: importer,\n hint: policy.hint,\n subjects: [path],\n };\n}\n\nfunction projectMeta(\n rawPath: string,\n cwd: string,\n base: string,\n assetPaths: Record<string, string>,\n importerPolicy: (importer: string) => CatalogImporterPolicy,\n sourceDeclaration: Extract<ScanSourceDeclaration, { readonly format: 'meta.json' }>,\n): {\n readonly entries: PackIndexEntry[];\n readonly declaration?: CatalogImportMeta;\n readonly error?: CatalogBuildError;\n} {\n const meta = sourceDeclaration.value;\n const policy = importerPolicy(meta.importer);\n if (policy.disposition !== 'publish') {\n return { entries: [], error: unsupportedPolicyError(rawPath, meta.importer, policy) };\n }\n const resolved = resolveAssetSource(rawPath, meta.source, assetPaths);\n if (!resolved.ok) {\n return {\n entries: [],\n error: {\n code: 'catalog-meta-schema-invalid',\n path: rawPath,\n message: `source resolution failed: ${resolved.error.code} - ${resolved.error.hint}`,\n },\n };\n }\n const sourcePath = sourcePathFor(cwd, resolved.value);\n const packageUrl = `${base}/__forgeax-ddc/${meta.subAssets[0]?.guid?.toLowerCase() ?? 'pack'}.pack.json`;\n const declaration: CatalogImportMeta = {\n importer: meta.importer,\n source: resolved.value,\n sourceRevision: sourceDeclaration.sourceRevision,\n ...(meta.packageId === undefined ? {} : { packageId: meta.packageId }),\n ...(meta.provenance === undefined ? {} : { provenance: meta.provenance }),\n ...(meta.revision === undefined ? {} : { revision: meta.revision }),\n ...(meta.diagnostics === undefined ? {} : { diagnostics: meta.diagnostics }),\n importSettings: meta.importSettings,\n ...(meta.sourceOverrides === undefined ? {} : { sourceOverrides: meta.sourceOverrides }),\n subAssets: meta.subAssets,\n };\n if (policy.hostProvided) {\n const conflict = findReservedAssetKindConflict(meta.subAssets);\n if (conflict !== undefined) {\n return {\n entries: [],\n error: {\n code: 'catalog-host-kind-conflict',\n path: rawPath,\n message: `registered provider ${JSON.stringify(meta.importer)} declares reserved asset kind ${JSON.stringify(conflict.kind)}`,\n expected: 'host provider kinds must not use engine-owned Pack kinds',\n actual: conflict.kind,\n hint: 'rename the provider kind to a provider-owned namespace before rebuilding',\n subjects: [rawPath],\n },\n };\n }\n }\n return {\n declaration,\n entries: projectExternalCatalogEntries(meta, sourcePath, packageUrl, meta.subAssets, (output) =>\n deriveAssetName(resolved.value, meta.subAssets.length, output.name),\n ),\n };\n}\n\nfunction projectSource(\n path: string,\n cwd: string,\n base: string,\n assetPaths: Record<string, string>,\n importerPolicy: (importer: string) => CatalogImporterPolicy,\n visibility: CatalogBuildProjectionOptions['visibility'],\n sourceDeclaration: ScanSourceDeclaration,\n declarations: Map<string, CatalogImportMeta>,\n): { readonly entries: PackIndexEntry[]; readonly error?: CatalogBuildError } {\n if (sourceDeclaration.format === 'pack.ts') {\n const meta = { ...sourceDeclaration.meta, source: sourcePathFor(cwd, path) };\n const anchorGuid = meta.subAssets.map((asset) => asset.guid.toLowerCase()).sort()[0];\n return anchorGuid === undefined\n ? { entries: [] }\n : {\n entries: projectExternalCatalogEntries(\n meta,\n sourcePathFor(cwd, path),\n `${base}/__forgeax-ddc/${anchorGuid}.pack.json`,\n meta.subAssets,\n (output) => deriveAssetName(path, meta.subAssets.length, output.name),\n ),\n };\n }\n if (sourceDeclaration.format === 'meta.json') {\n const policy = importerPolicy(sourceDeclaration.value.importer);\n if (\n policy.disposition === 'publish' &&\n visibility?.({\n importer: sourceDeclaration.value.importer,\n importSettings: sourceDeclaration.value.importSettings,\n subAssets: sourceDeclaration.value.subAssets,\n }) === false\n ) {\n return { entries: [] };\n }\n const projected = projectMeta(path, cwd, base, assetPaths, importerPolicy, sourceDeclaration);\n if (projected.declaration !== undefined) declarations.set(path, projected.declaration);\n return projected;\n }\n const parsed = sourceDeclaration.value;\n const sourcePath = sourcePathFor(cwd, path);\n const provenance =\n parsed.provenance ??\n ({ provider: 'pack', version: parsed.schemaVersion } satisfies ProviderProvenance);\n return {\n entries: projectPackageCatalog(\n parsed.assets.map((asset, sourceIndex) => ({\n ...asset,\n sourcePath,\n sourceIndex: asset.sourceIndex ?? sourceIndex,\n ...(parsed.packageId === undefined ? {} : { packageId: parsed.packageId }),\n provenance,\n ...(parsed.revision === undefined ? {} : { revision: parsed.revision }),\n ...(parsed.diagnostics === undefined ? {} : { diagnostics: parsed.diagnostics }),\n name: deriveAssetName(path, parsed.assets.length, asset.name),\n })),\n `${base}/${sourcePath}`,\n ),\n };\n}\n\nfunction warnErrors(errors: readonly CatalogBuildError[]): void {\n for (const error of errors) {\n console.warn(`[forgeax-pack] catalog error ${error.code} @ ${error.path}: ${error.message}`);\n }\n}\n\nexport async function buildCatalogProjection(\n roots: readonly string[],\n options: CatalogBuildProjectionOptions,\n): Promise<CatalogBuildResult> {\n const empty = (\n authority: CatalogAuthority,\n diagnostics: readonly CatalogBuildError[] = [],\n ): CatalogBuildResult => ({\n schemaVersion: 'catalog-legacy-v1',\n entries: [],\n authority,\n diagnostics,\n declarations: new Map(),\n sourceDeclarations: new Map(),\n });\n if (roots.length === 0) return empty('authoritative');\n const cwd = process.cwd();\n const base = (options.base ?? '/').replace(/\\/$/, '');\n const scanned = await scanInventory(roots, options.scanOptions);\n if (!scanned.ok) {\n const message =\n scanned.error.detail === undefined\n ? scanned.error.message\n : `${scanned.error.message}; detail=${JSON.stringify(scanned.error.detail)}`;\n const error: CatalogBuildError = {\n code: 'catalog-scan-failed',\n path: '<scan>',\n message,\n expected: 'one inventory scan across all Catalog roots to pass Pack scanning',\n actual: message,\n hint: 'repair the roots before treating any Catalog rows as authoritative',\n subjects: [...roots],\n };\n warnErrors([error]);\n return empty('degraded', [error]);\n }\n const { paths, declarations: sourceDeclarations } = scanned.value;\n const { paths: assetPaths } = loadAssetConfig(cwd);\n const entries: PackIndexEntry[] = [];\n const errors: CatalogBuildError[] = [];\n const declarations = new Map<string, CatalogImportMeta>();\n for (const path of paths) {\n const sourceDeclaration = sourceDeclarations.get(path);\n if (sourceDeclaration === undefined) continue;\n const projected = projectSource(\n path,\n cwd,\n base,\n assetPaths,\n options.importerPolicy,\n options.visibility,\n sourceDeclaration,\n declarations,\n );\n entries.push(...projected.entries);\n if (projected.error !== undefined) errors.push(projected.error);\n }\n warnErrors(errors);\n return {\n schemaVersion: 'catalog-legacy-v1',\n entries,\n authority: errors.length === 0 ? 'authoritative' : 'degraded',\n diagnostics: errors,\n declarations,\n sourceDeclarations,\n };\n}\n","import type {\n ExistingOutput,\n ImportedOutputDeclaration,\n KindChange,\n MatchConflict,\n ProposedOutput,\n TopologyDiff,\n TopologyPreserved,\n} from '@forgeax/engine-types';\n\nfunction sourceKey(output: ImportedOutputDeclaration): string | undefined {\n return output.sourceKey === undefined || output.sourceKey.length === 0\n ? undefined\n : output.sourceKey;\n}\n\nfunction bySourceKey<T extends ImportedOutputDeclaration>(\n outputs: readonly T[],\n side: 'previous' | 'next',\n ambiguous: MatchConflict[],\n duplicateKeys: Set<string>,\n): Map<string, T> {\n const result = new Map<string, T>();\n for (const output of outputs) {\n const key = sourceKey(output);\n if (key === undefined) continue;\n const prior = result.get(key);\n if (prior !== undefined) {\n duplicateKeys.add(key);\n ambiguous.push({\n reason: 'duplicate-source-key',\n sourceKey: key,\n previous: side === 'previous' ? [prior as ExistingOutput, output as ExistingOutput] : [],\n next: side === 'next' ? [prior as ProposedOutput, output as ProposedOutput] : [],\n });\n continue;\n }\n result.set(key, output);\n }\n return result;\n}\n\nfunction topologyKey(output: ImportedOutputDeclaration): string {\n return `source-index:${output.sourceIndex}`;\n}\n\n/**\n * Match importer output declarations without treating sourceIndex or array\n * position as identity. A stable producer sourceKey preserves the prior GUID;\n * multi-output declarations without one are explicitly ambiguous.\n */\nexport function diffTopology(\n previous: readonly ExistingOutput[],\n next: readonly ProposedOutput[],\n): TopologyDiff {\n const preserved: TopologyPreserved[] = [];\n const added: ProposedOutput[] = [];\n const removed: ExistingOutput[] = [];\n const changedKind: KindChange[] = [];\n const ambiguous: MatchConflict[] = [];\n const duplicateKeys = new Set<string>();\n const previousByKey = bySourceKey(previous, 'previous', ambiguous, duplicateKeys);\n const nextByKey = bySourceKey(next, 'next', ambiguous, duplicateKeys);\n const matchedPrevious = new Set<ExistingOutput>();\n const matchedNext = new Set<ProposedOutput>();\n\n for (const [key, oldOutput] of previousByKey) {\n if (duplicateKeys.has(key)) continue;\n const newOutput = nextByKey.get(key);\n if (newOutput === undefined) {\n removed.push(oldOutput);\n continue;\n }\n matchedPrevious.add(oldOutput);\n matchedNext.add(newOutput);\n if (oldOutput.kind === newOutput.kind) {\n preserved.push({ guid: oldOutput.guid, oldKey: key, newKey: key });\n } else {\n const preservesGuid = newOutput.compatiblePreviousKinds?.includes(oldOutput.kind) === true;\n changedKind.push({\n guid: oldOutput.guid,\n oldKind: oldOutput.kind,\n newKind: newOutput.kind,\n sourceKey: key,\n action: preservesGuid ? 'preserve-guid' : 'remove-add',\n });\n if (preservesGuid) {\n preserved.push({ guid: oldOutput.guid, oldKey: key, newKey: key });\n } else {\n removed.push(oldOutput);\n added.push(newOutput);\n }\n }\n }\n\n for (const [key, newOutput] of nextByKey) {\n if (duplicateKeys.has(key)) continue;\n if (!previousByKey.has(key)) added.push(newOutput);\n }\n\n // A duplicate producer key is a conflict, not a permission to choose the\n // first map entry. Keep every affected declaration in remove/add evidence\n // while leaving GUID preservation empty until the producer repairs the key.\n for (const output of previous) {\n const key = sourceKey(output);\n if (key !== undefined && duplicateKeys.has(key)) removed.push(output);\n }\n for (const output of next) {\n const key = sourceKey(output);\n if (key !== undefined && duplicateKeys.has(key)) added.push(output);\n }\n\n const unkeyedPrevious = previous.filter(\n (output) => sourceKey(output) === undefined && !matchedPrevious.has(output),\n );\n const unkeyedNext = next.filter(\n (output) => sourceKey(output) === undefined && !matchedNext.has(output),\n );\n\n if (unkeyedPrevious.length === 1 && unkeyedNext.length === 1) {\n const oldOutput = unkeyedPrevious[0];\n const newOutput = unkeyedNext[0];\n if (oldOutput !== undefined && newOutput !== undefined) {\n if (oldOutput.kind === newOutput.kind) {\n preserved.push({\n guid: oldOutput.guid,\n oldKey: topologyKey(oldOutput),\n newKey: topologyKey(newOutput),\n });\n } else {\n changedKind.push({\n guid: oldOutput.guid,\n oldKind: oldOutput.kind,\n newKind: newOutput.kind,\n action: 'remove-add',\n });\n removed.push(oldOutput);\n added.push(newOutput);\n }\n }\n } else if (unkeyedPrevious.length > 0 || unkeyedNext.length > 0) {\n ambiguous.push({\n reason:\n unkeyedPrevious.length > 1 || unkeyedNext.length > 1\n ? 'source-index-ambiguous'\n : 'missing-source-key',\n previous: unkeyedPrevious,\n next: unkeyedNext,\n });\n }\n\n return { preserved, added, removed, changedKind, ambiguous };\n}\n\nexport const calculateTopologyDiff = diffTopology;\n\n/** Alias named after the producer-facing contract wording. */\n","import type {\n CatalogDelta,\n CatalogDiagnostic,\n CatalogRevisionWindow,\n ImportedOutputDeclaration,\n PackIndexEntry,\n} from '@forgeax/engine-types';\nimport { catalogEntryDigest } from '@forgeax/engine-types';\nimport { diffTopology } from './topology.js';\n\nfunction rowsByGuid(rows: readonly PackIndexEntry[]): Map<string, PackIndexEntry> {\n return new Map(rows.map((row) => [row.guid.toLowerCase(), row]));\n}\n\nfunction sameRow(left: PackIndexEntry, right: PackIndexEntry): boolean {\n return catalogEntryDigest(left) === catalogEntryDigest(right);\n}\n\nfunction topologyGroups(rows: readonly PackIndexEntry[]): Map<string, ImportedOutputDeclaration[]> {\n const groups = new Map<string, ImportedOutputDeclaration[]>();\n for (const row of rows) {\n // Legacy catalog rows have neither producer topology field. Do not turn\n // their incidental catalog position into a false topology claim.\n if (row.packageId === undefined) continue;\n if (row.sourceKey === undefined && row.sourceIndex === undefined) continue;\n const groupId = row.packageId;\n const group = groups.get(groupId) ?? [];\n group.push({\n guid: row.guid,\n ...(row.sourceKey !== undefined ? { sourceKey: row.sourceKey } : {}),\n sourceIndex: row.sourceIndex ?? 0,\n kind: row.kind,\n ...(row.name !== undefined ? { name: row.name } : {}),\n });\n groups.set(groupId, group);\n }\n return groups;\n}\n\nfunction revisionDiagnostic(\n code: string,\n expected: string,\n actual: string,\n hint: string,\n rootId?: string,\n): CatalogDiagnostic {\n return {\n code,\n severity: 'blocking',\n authority: 'catalog',\n expected,\n actual,\n hint,\n ...(rootId === undefined ? {} : { subject: { type: 'package' as const, id: rootId } }),\n };\n}\n\nfunction checkRevisionContinuity(\n window: CatalogRevisionWindow,\n hasChanges: boolean,\n): CatalogDiagnostic | undefined {\n const baselineByRoot = new Map(window.baseline.map((point) => [point.rootId, point]));\n const currentByRoot = new Map(window.current.map((point) => [point.rootId, point]));\n\n for (const point of window.current) {\n const baseline = baselineByRoot.get(point.rootId);\n if (baseline === undefined) {\n return revisionDiagnostic(\n 'catalog-revision-conflict',\n 'every current root must have a verified baseline',\n point.rootId,\n 'restore the latest verified snapshot for this root before applying the delta',\n point.rootId,\n );\n }\n if (point.revision < baseline.revision) {\n return revisionDiagnostic(\n 'catalog-revision-stale',\n 'current revision must not be older than baseline',\n `${baseline.revision} -> ${point.revision}`,\n 'discard the stale update and request a fresh catalog snapshot',\n point.rootId,\n );\n }\n if (point.revision === baseline.revision && hasChanges) {\n return revisionDiagnostic(\n 'catalog-revision-conflict',\n 'a changed delta must advance the root revision',\n `${baseline.revision} -> ${point.revision}`,\n 'keep the verified baseline and serialize concurrent updates before retrying',\n point.rootId,\n );\n }\n if (point.revision > baseline.revision + 1) {\n return revisionDiagnostic(\n 'catalog-revision-conflict',\n 'the next revision must be exactly baseline + 1',\n `${baseline.revision} -> ${point.revision}`,\n 'request the missing revisions or rebuild from the latest verified snapshot',\n point.rootId,\n );\n }\n }\n\n for (const point of window.baseline) {\n if (!currentByRoot.has(point.rootId)) {\n return revisionDiagnostic(\n 'catalog-revision-conflict',\n 'every baseline root must be present in the current revision set',\n point.rootId,\n 'do not apply a partial root set over the verified baseline',\n point.rootId,\n );\n }\n }\n\n return undefined;\n}\n\n/**\n * Derives one neutral delta from consecutive complete catalog projections.\n *\n * The returned fields are canonical POD fields: topology, revision continuity,\n * authority, and diagnostics remain structured so AI consumers do not parse\n * producer or transport messages. Degraded results intentionally contain no\n * added, changed, or removed identity rows.\n */\nexport function calculateCatalogDelta(\n previous: readonly PackIndexEntry[],\n next: readonly PackIndexEntry[],\n revision?: CatalogRevisionWindow,\n): CatalogDelta | undefined {\n const before = rowsByGuid(previous);\n const after = rowsByGuid(next);\n const added: PackIndexEntry[] = [];\n const changed: PackIndexEntry[] = [];\n const removed: string[] = [];\n\n for (const [guid, row] of after) {\n const prior = before.get(guid);\n if (prior === undefined) added.push(row);\n else if (!sameRow(prior, row)) changed.push(row);\n }\n for (const guid of before.keys()) {\n if (!after.has(guid)) removed.push(guid);\n }\n\n const previousGroups = topologyGroups(previous);\n const nextGroups = topologyGroups(next);\n const topology = [];\n const groupIds = new Set([...previousGroups.keys(), ...nextGroups.keys()]);\n for (const groupId of groupIds) {\n const diff = diffTopology(previousGroups.get(groupId) ?? [], nextGroups.get(groupId) ?? []);\n if (\n diff.added.length > 0 ||\n diff.removed.length > 0 ||\n diff.changedKind.length > 0 ||\n diff.ambiguous.length > 0\n ) {\n topology.push(diff);\n }\n }\n\n const hasChanges =\n added.length > 0 || changed.length > 0 || removed.length > 0 || topology.length > 0;\n if (!hasChanges) return undefined;\n\n const delta = { added, changed, removed, ...(topology.length > 0 ? { topology } : {}) };\n if (revision === undefined) return delta;\n\n const diagnostic = checkRevisionContinuity(revision, hasChanges);\n if (diagnostic !== undefined) {\n return {\n added: [],\n changed: [],\n removed: [],\n authority: 'degraded',\n diagnostics: [diagnostic],\n revisions: revision,\n };\n }\n\n return {\n ...delta,\n authority: 'authoritative',\n diagnostics: [],\n revisions: revision,\n };\n}\n","import type {\n MaterialAsset,\n MaterialParameter,\n MaterialPass,\n MaterialTextureReference,\n MaterialTextureValue,\n MaterialValue,\n Result,\n} from '@forgeax/engine-types';\nimport { err, MATERIAL_TEXTURE_SLOTS, ok } from '@forgeax/engine-types';\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { bytesToHex } from '@noble/hashes/utils.js';\n\nexport interface MaterialCookRefs {\n readonly parent: readonly string[];\n readonly textures: readonly string[];\n readonly samplers: readonly string[];\n readonly modules: readonly string[];\n}\n\nexport interface MaterialCookArtifact {\n readonly mediaType: string;\n readonly path: string;\n readonly digest: string;\n readonly bytes: Uint8Array;\n}\n\nexport interface MaterialCookReceipt {\n readonly schemaVersion: 'material-cook/2';\n readonly sourceClosure: readonly string[];\n readonly profile: string;\n readonly compilerVersion: string;\n readonly inputDigest: string;\n readonly outputDigest: string;\n readonly layoutIdentity: string;\n readonly derivedInterface: { readonly layoutIdentity: string };\n readonly publicationGeneration?: number;\n}\n\nexport interface MaterialParameterContract {\n readonly parameters: readonly MaterialParameter[];\n readonly values: Readonly<Record<string, MaterialValue | null>>;\n}\n\nexport interface CookedMaterialRecord {\n readonly schemaVersion: 'material-cook/2';\n readonly guid: string;\n readonly authored?: MaterialAsset;\n readonly materialGuid?: string;\n readonly publicationGeneration?: number;\n readonly specializationKey?: string;\n readonly artifactDigest?: string;\n readonly sourceClosure?: readonly string[];\n readonly parameterContract?: MaterialParameterContract;\n readonly resolved: {\n readonly passes: readonly MaterialPass[];\n readonly parameters: readonly MaterialParameter[];\n readonly values: Readonly<Record<string, MaterialValue | null>>;\n };\n readonly refs: MaterialCookRefs;\n readonly artifact: MaterialCookArtifact;\n readonly receipt: MaterialCookReceipt;\n}\n\nexport interface MaterialCookRecordError {\n readonly code: 'material-cook-record-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly field: string };\n}\n\nexport interface MaterialCookIdentityExpectation {\n readonly layoutIdentity?: string;\n readonly artifactDigest?: string;\n readonly inputDigest?: string;\n}\n\nfunction unique(values: readonly string[]): readonly string[] {\n return [...new Set(values)].sort();\n}\n\nfunction guidText(value: string | Uint8Array): string {\n return typeof value === 'string'\n ? value\n : Array.from(value, (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n\nfunction cookGuidText(value: MaterialTextureReference): string | undefined {\n return typeof value === 'number' ? undefined : guidText(value);\n}\n\nfunction textureValues(\n values: Readonly<Record<string, MaterialValue | null>> | undefined,\n textureFields: ReadonlySet<string>,\n): readonly MaterialTextureValue[] {\n return Object.entries(values ?? {}).flatMap(([name, value]) => {\n if (value === null) return [];\n if (typeof value === 'string') {\n return textureFields.has(name) ? [{ texture: value }] : [];\n }\n return value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n 'texture' in value\n ? [value as MaterialTextureValue]\n : [];\n });\n}\n\nexport function collectMaterialCookRefs(material: Partial<MaterialAsset>): MaterialCookRefs {\n const textureFields =\n material.parameters === undefined\n ? new Set<string>(MATERIAL_TEXTURE_SLOTS)\n : new Set(\n material.parameters\n .filter((parameter) => parameter.type === 'texture')\n .map((parameter) => parameter.name),\n );\n const textures = textureValues(material.values, textureFields);\n return {\n parent: material.parent ? [guidText(material.parent)] : [],\n textures: unique(\n textures.flatMap((value) => {\n const guid = cookGuidText(value.texture);\n return guid === undefined ? [] : [guid];\n }),\n ),\n samplers: unique(\n textures.flatMap((value) => {\n if (value.sampler === undefined) return [];\n const guid = cookGuidText(value.sampler);\n return guid === undefined ? [] : [guid];\n }),\n ),\n modules: unique((material.passes ?? []).map((pass) => pass.program.module)),\n };\n}\n\nexport function createMaterialArtifactDigest(bytes: Uint8Array): string {\n return `sha256:${bytesToHex(sha256(bytes))}`;\n}\n\nfunction jsonValue(value: unknown): unknown {\n if (value instanceof Uint8Array) return [...value];\n if (Array.isArray(value)) return value.map(jsonValue);\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([, entry]) => entry !== undefined)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, entry]) => [key, jsonValue(entry)]),\n );\n }\n return value;\n}\n\nexport function serializeCookedMaterialRecord(record: CookedMaterialRecord): string {\n return JSON.stringify(jsonValue(record));\n}\n\nexport function serializeMaterialCookReceipt(receipt: MaterialCookReceipt): string {\n return JSON.stringify(jsonValue({ ...receipt, sourceClosure: unique(receipt.sourceClosure) }));\n}\n\nfunction invalid(field: string): Result<never, MaterialCookRecordError> {\n return err({\n code: 'material-cook-record-invalid',\n expected: 'a complete material-cook/2 record with derived layout identity',\n hint: 're-cook the material and publish its record, artifact, references, and receipt together',\n detail: { field },\n });\n}\n\nexport function validateMaterialCookReceipt(\n value: unknown,\n expected: MaterialCookIdentityExpectation = {},\n): Result<MaterialCookReceipt, MaterialCookRecordError> {\n if (value === null || typeof value !== 'object') return invalid('receipt');\n const candidate = value as Record<string, unknown>;\n if (candidate.schemaVersion !== 'material-cook/2') return invalid('receipt.schemaVersion');\n if (typeof candidate.layoutIdentity !== 'string' || candidate.layoutIdentity.length === 0) {\n return invalid('receipt.layoutIdentity');\n }\n if (candidate.derivedInterface === null || typeof candidate.derivedInterface !== 'object') {\n return invalid('receipt.derivedInterface');\n }\n const derivedInterface = candidate.derivedInterface as Record<string, unknown>;\n if (derivedInterface.layoutIdentity !== candidate.layoutIdentity) {\n return invalid('receipt.derivedInterface.layoutIdentity');\n }\n for (const field of [\n 'sourceClosure',\n 'profile',\n 'compilerVersion',\n 'inputDigest',\n 'outputDigest',\n ]) {\n const fieldValue = candidate[field];\n if (\n (field === 'sourceClosure' && !Array.isArray(fieldValue)) ||\n (field !== 'sourceClosure' && typeof fieldValue !== 'string')\n ) {\n return invalid(`receipt.${field}`);\n }\n }\n const sourceClosure = candidate.sourceClosure;\n if (Array.isArray(sourceClosure) && sourceClosure.some((path) => typeof path !== 'string')) {\n return invalid('receipt.sourceClosure');\n }\n if (\n expected.layoutIdentity !== undefined &&\n candidate.layoutIdentity !== expected.layoutIdentity\n ) {\n return invalid('receipt.layoutIdentity');\n }\n if (expected.artifactDigest !== undefined && candidate.outputDigest !== expected.artifactDigest) {\n return invalid('receipt.outputDigest');\n }\n if (expected.inputDigest !== undefined && candidate.inputDigest !== expected.inputDigest) {\n return invalid('receipt.inputDigest');\n }\n if (\n candidate.publicationGeneration !== undefined &&\n (typeof candidate.publicationGeneration !== 'number' ||\n !Number.isSafeInteger(candidate.publicationGeneration) ||\n candidate.publicationGeneration < 1)\n ) {\n return invalid('receipt.publicationGeneration');\n }\n return ok({\n schemaVersion: 'material-cook/2',\n sourceClosure: candidate.sourceClosure as string[],\n profile: candidate.profile as string,\n compilerVersion: candidate.compilerVersion as string,\n inputDigest: candidate.inputDigest as string,\n outputDigest: candidate.outputDigest as string,\n layoutIdentity: candidate.layoutIdentity,\n derivedInterface: { layoutIdentity: derivedInterface.layoutIdentity as string },\n ...(candidate.publicationGeneration === undefined\n ? {}\n : { publicationGeneration: candidate.publicationGeneration as number }),\n });\n}\n\nexport function validateCookedMaterialRecord(\n value: unknown,\n): Result<CookedMaterialRecord, MaterialCookRecordError> {\n if (value === null || typeof value !== 'object') return invalid('record');\n const candidate = value as Record<string, unknown>;\n if (candidate.schemaVersion !== 'material-cook/2') return invalid('schemaVersion');\n if (typeof candidate.guid !== 'string' || !candidate.guid) return invalid('guid');\n if (candidate.materialGuid !== undefined && typeof candidate.materialGuid !== 'string')\n return invalid('materialGuid');\n if (\n candidate.publicationGeneration !== undefined &&\n (typeof candidate.publicationGeneration !== 'number' ||\n !Number.isSafeInteger(candidate.publicationGeneration) ||\n candidate.publicationGeneration < 1)\n )\n return invalid('publicationGeneration');\n if (candidate.specializationKey !== undefined && typeof candidate.specializationKey !== 'string')\n return invalid('specializationKey');\n if (candidate.artifactDigest !== undefined && typeof candidate.artifactDigest !== 'string')\n return invalid('artifactDigest');\n if (\n candidate.sourceClosure !== undefined &&\n (!Array.isArray(candidate.sourceClosure) ||\n candidate.sourceClosure.some((path) => typeof path !== 'string'))\n )\n return invalid('sourceClosure');\n if (candidate.parameterContract !== undefined) {\n if (candidate.parameterContract === null || typeof candidate.parameterContract !== 'object')\n return invalid('parameterContract');\n const parameterContract = candidate.parameterContract as Record<string, unknown>;\n if (!Array.isArray(parameterContract.parameters))\n return invalid('parameterContract.parameters');\n if (\n parameterContract.values === null ||\n typeof parameterContract.values !== 'object' ||\n Array.isArray(parameterContract.values)\n )\n return invalid('parameterContract.values');\n }\n if (candidate.resolved === null || typeof candidate.resolved !== 'object')\n return invalid('resolved');\n if (candidate.refs === null || typeof candidate.refs !== 'object') return invalid('refs');\n if (candidate.artifact === null || typeof candidate.artifact !== 'object')\n return invalid('artifact');\n if (candidate.receipt === null || typeof candidate.receipt !== 'object')\n return invalid('receipt');\n const artifact = candidate.artifact as Record<string, unknown>;\n if (\n typeof artifact.digest !== 'string' ||\n (!Array.isArray(artifact.bytes) && !ArrayBuffer.isView(artifact.bytes))\n ) {\n return invalid('artifact');\n }\n const receiptResult = validateMaterialCookReceipt(candidate.receipt, {\n artifactDigest: artifact.digest as string,\n });\n if (!receiptResult.ok) return receiptResult;\n if (candidate.artifactDigest !== undefined && candidate.artifactDigest !== artifact.digest)\n return invalid('artifactDigest');\n if (\n candidate.publicationGeneration !== undefined &&\n receiptResult.value.publicationGeneration !== candidate.publicationGeneration\n )\n return invalid('receipt.publicationGeneration');\n const normalized = {\n ...candidate,\n artifact: {\n ...artifact,\n bytes: ArrayBuffer.isView(artifact.bytes)\n ? Uint8Array.from(artifact.bytes as Uint8Array)\n : Uint8Array.from(artifact.bytes as number[]),\n },\n receipt: receiptResult.value,\n } as CookedMaterialRecord;\n return ok(normalized);\n}\n\nexport function projectCookedMaterialRecord(\n record: CookedMaterialRecord,\n): Omit<CookedMaterialRecord, 'guid' | 'authored'> {\n return {\n resolved: record.resolved,\n refs: record.refs,\n artifact: record.artifact,\n receipt: record.receipt,\n schemaVersion: record.schemaVersion,\n };\n}\n","import type {\n ArtifactDescriptor,\n ArtifactVerificationStatus,\n AssetEvidence,\n AssetEvidenceError,\n AssetEvidenceInputs,\n AssetEvidenceLocator,\n CookProduct,\n CookReceipt,\n PackageVerificationEvidence,\n SourceDeclarationEvidence,\n} from '@forgeax/engine-types';\nimport {\n projectAssetEvidence,\n projectCookProductEvidence,\n type Result,\n} from '@forgeax/engine-types';\n\n/** Pack artifact descriptor with verification supplied by an offline verifier. */\nexport interface OfflineArtifactInput extends ArtifactDescriptor {\n readonly verification?: ArtifactVerificationStatus;\n}\n\n/** Validated Pack v2 package facts consumed by the offline projector. */\nexport interface OfflinePackageInput {\n readonly guid: string;\n readonly digest?: string;\n readonly artifacts: Readonly<Record<string, OfflineArtifactInput>>;\n}\n\n/** Node/CLI input shape; it intentionally has no runtime or WebSocket fields. */\nexport interface OfflineAssetEvidenceInput {\n readonly guid: string;\n readonly source?: SourceDeclarationEvidence;\n readonly locator?: AssetEvidenceLocator;\n readonly receipt?: CookReceipt;\n readonly package?: OfflinePackageInput;\n readonly product?: CookProduct;\n}\n\nfunction packageEvidence(input: OfflinePackageInput): NonNullable<AssetEvidenceInputs['package']> {\n return {\n guid: input.guid,\n ...(input.digest === undefined ? {} : { digest: input.digest }),\n artifacts: Object.fromEntries(\n Object.entries(input.artifacts).map(([key, artifact]) => [\n key,\n {\n descriptor: artifact,\n verification: artifact.verification ?? 'passed',\n },\n ]),\n ),\n };\n}\n\n/** Build the shared evidence view without loading runtime assets or opening WS. */\nexport function buildOfflineAssetEvidence(\n input: OfflineAssetEvidenceInput,\n): Promise<Result<AssetEvidence, AssetEvidenceError>> {\n if (input.product !== undefined) {\n return Promise.resolve(projectCookProductEvidence(input.product, input.locator));\n }\n const evidenceInput: AssetEvidenceInputs = {\n guid: input.guid,\n ...(input.source === undefined ? {} : { source: input.source }),\n ...(input.locator === undefined ? {} : { locator: input.locator }),\n ...(input.receipt === undefined ? {} : { receipt: input.receipt }),\n ...(input.package === undefined ? {} : { package: packageEvidence(input.package) }),\n };\n return Promise.resolve(projectAssetEvidence(evidenceInput));\n}\n\nexport function packageVerification(\n input: OfflinePackageInput | undefined,\n): PackageVerificationEvidence | undefined {\n if (input === undefined) return undefined;\n const packageInput = packageEvidence(input);\n const statuses = Object.values(packageInput.artifacts).map(\n (artifact) => artifact.verification ?? 'notChecked',\n );\n return {\n status: statuses.some((status) => status === 'failed')\n ? 'failed'\n : statuses.length > 0 && statuses.every((status) => status === 'passed')\n ? 'passed'\n : 'notChecked',\n ...(input?.digest === undefined ? {} : { digest: input.digest }),\n };\n}\n","/** Canonical mesh binary wire facts shared by build-time and runtime owners. */\n\nexport const MESH_BIN_VERSION = 4 as const;\nexport const MESH_BIN_PROJECTION_VERSION = 1 as const;\nexport const MESH_BIN_HEADER_V4_BYTES = 80;\nexport const MESH_BIN_DIGEST_BYTES = 32;\n\nexport interface MeshBinHeaderV4 {\n readonly version: 4;\n readonly projectionVersion: 1;\n readonly mask: number;\n readonly digest: string;\n readonly stride: number;\n readonly vertexCount: number;\n readonly vertexBytes: number;\n readonly indexCount: number;\n readonly indexWidth: 0 | 2 | 4;\n readonly indexBytes: number;\n readonly jsonBytes: number;\n}\n\nexport interface MeshBinContractError {\n readonly code:\n | 'mesh-bin-header-truncated'\n | 'mesh-bin-version-unsupported'\n | 'mesh-bin-header-invalid';\n readonly subject: 'mesh-bin';\n readonly sourceKey: string;\n readonly expected: string;\n readonly actual: string;\n readonly recovery: string;\n}\n\nexport type MeshBinHeaderResult =\n | { readonly ok: true; readonly value: MeshBinHeaderV4 }\n | { readonly ok: false; readonly error: MeshBinContractError };\n\nfunction failure(\n code: MeshBinContractError['code'],\n sourceKey: string,\n expected: string,\n actual: string,\n): MeshBinHeaderResult {\n return {\n ok: false,\n error: {\n code,\n subject: 'mesh-bin',\n sourceKey,\n expected,\n actual,\n recovery: 're-cook the source with its Meta sidecar through the build-time importer',\n },\n };\n}\n\nfunction digestBytes(digest: string): Uint8Array {\n const bytes = new Uint8Array(MESH_BIN_DIGEST_BYTES);\n bytes.set(new TextEncoder().encode(digest).subarray(0, MESH_BIN_DIGEST_BYTES));\n return bytes;\n}\n\nfunction readDigest(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes).replace(/\\0+$/u, '');\n}\n\nexport function writeMeshBinHeader(header: MeshBinHeaderV4, out: Uint8Array): void {\n if (out.byteLength < MESH_BIN_HEADER_V4_BYTES) {\n throw new RangeError('mesh-bin v4 header output is truncated');\n }\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setUint32(0, header.version, true);\n view.setUint32(4, header.projectionVersion, true);\n view.setUint32(8, header.mask, true);\n view.setUint32(12, header.stride, true);\n view.setUint32(16, header.vertexCount, true);\n view.setUint32(20, header.vertexBytes, true);\n view.setUint32(24, header.indexCount, true);\n view.setUint32(28, header.indexWidth, true);\n view.setUint32(32, header.indexBytes, true);\n view.setUint32(36, header.jsonBytes, true);\n out.set(digestBytes(header.digest), 48);\n}\n\nexport function decodeMeshBinHeader(\n bytes: Uint8Array,\n sourceKey = '<unknown mesh source>',\n): MeshBinHeaderResult {\n if (bytes.byteLength < MESH_BIN_HEADER_V4_BYTES) {\n return failure(\n 'mesh-bin-header-truncated',\n sourceKey,\n `mesh-bin v4 header (${MESH_BIN_HEADER_V4_BYTES} bytes)`,\n `${bytes.byteLength} bytes`,\n );\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const version = view.getUint32(0, true);\n if (version !== MESH_BIN_VERSION) {\n return failure('mesh-bin-version-unsupported', sourceKey, 'mesh-bin v4', `version ${version}`);\n }\n const projectionVersion = view.getUint32(4, true);\n const mask = view.getUint32(8, true);\n const stride = view.getUint32(12, true);\n const vertexCount = view.getUint32(16, true);\n const vertexBytes = view.getUint32(20, true);\n const indexCount = view.getUint32(24, true);\n const indexWidth = view.getUint32(28, true);\n const indexBytes = view.getUint32(32, true);\n const jsonBytes = view.getUint32(36, true);\n const digest = readDigest(bytes.subarray(48, 48 + MESH_BIN_DIGEST_BYTES));\n if (\n projectionVersion !== MESH_BIN_PROJECTION_VERSION ||\n mask === 0 ||\n stride === 0 ||\n !Number.isSafeInteger(vertexCount) ||\n !Number.isSafeInteger(vertexBytes) ||\n !Number.isSafeInteger(indexCount) ||\n !Number.isSafeInteger(indexBytes) ||\n !Number.isSafeInteger(jsonBytes) ||\n (indexCount === 0 && indexWidth !== 0) ||\n (indexCount > 0 && indexWidth !== 2 && indexWidth !== 4) ||\n indexBytes !== indexCount * indexWidth ||\n vertexBytes !== vertexCount * stride ||\n digest.length === 0\n ) {\n return failure(\n 'mesh-bin-header-invalid',\n sourceKey,\n 'safe v4 projection, stride, cardinality, and payload byte lengths',\n `projection=${projectionVersion}; mask=${mask}; stride=${stride}; vertexBytes=${vertexBytes}; indexBytes=${indexBytes}; digest=${digest}`,\n );\n }\n return {\n ok: true,\n value: {\n version: 4,\n projectionVersion: 1,\n mask,\n digest,\n stride,\n vertexCount,\n vertexBytes,\n indexCount,\n indexWidth: indexWidth as 0 | 2 | 4,\n indexBytes,\n jsonBytes,\n },\n };\n}\n","import { createHash } from 'node:crypto';\nimport type { AssetCodec, AssetRelation, CookReceipt } from '@forgeax/engine-types';\n\nexport interface PackageArtifactBody {\n readonly mediaType: string;\n readonly assetCodec?: AssetCodec;\n readonly bytes: Uint8Array;\n}\n\nexport interface PackageProductAsset {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly payload: Readonly<Record<string, unknown>>;\n readonly refs: readonly string[];\n readonly artifacts: Readonly<Record<string, PackageArtifactBody>>;\n}\n\nexport interface PackageProduct {\n readonly assets: readonly PackageProductAsset[];\n readonly receipts: readonly CookReceipt[];\n readonly diagnostics: readonly unknown[];\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n}\n\n/** Minimal authored Pack v1/v2 shape consumed by the file transport seam. */\nexport interface AuthoredPackAssetInput {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly execution?: 'direct' | 'cooked';\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly relations?: readonly AssetRelation[];\n readonly payload: Record<string, unknown>;\n readonly refs?: readonly string[];\n readonly artifacts?: Readonly<Record<string, unknown>>;\n}\n\nexport interface AuthoredPackInput {\n readonly schemaVersion?: string;\n readonly assets?: readonly AuthoredPackAssetInput[];\n}\n\nexport interface PackageDocumentArtifact {\n readonly path: string;\n readonly mediaType: string;\n readonly assetCodec?: AssetCodec;\n readonly byteLength: number;\n readonly integrity: { readonly algorithm: 'sha256'; readonly digest: string };\n}\n\nexport interface PackageDocumentAsset {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly payload: Record<string, unknown>;\n readonly refs: readonly string[];\n readonly artifacts: Readonly<Record<string, PackageDocumentArtifact>>;\n}\n\nexport interface PackageDocument {\n readonly schemaVersion: '2.0.0';\n readonly kind: 'internal-text-package';\n readonly assets: readonly PackageDocumentAsset[];\n}\n\n/** Upgrade the legacy authored Pack envelope at the Pack schema boundary. */\nexport function upgradeLegacyAuthoredPack(pack: AuthoredPackInput): AuthoredPackInput {\n if (pack.schemaVersion !== '1.0.0' || pack.assets === undefined) return pack;\n return {\n ...pack,\n schemaVersion: '2.0.0',\n assets: pack.assets.map((asset) => {\n const fontRefs =\n asset.kind === 'font'\n ? [asset.payload.atlasGuid, asset.payload.samplerGuid].filter(\n (guid): guid is string => typeof guid === 'string',\n )\n : [];\n return {\n ...asset,\n refs: asset.refs ?? fontRefs,\n artifacts: asset.artifacts ?? {},\n };\n }),\n };\n}\n\nexport interface PackageFinalizePolicy {\n readonly base: string;\n readonly packagePath: string;\n readonly artifactPath: (guid: string, localKey: string) => string;\n readonly sink?: (path: string, bytes: Uint8Array) => void | Promise<void>;\n}\n\nexport interface FinalizedPackageProduct {\n readonly pack: PackageDocument;\n readonly packageUrl: string;\n readonly digest: string;\n readonly receipts: readonly CookReceipt[];\n readonly diagnostics: readonly unknown[];\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n}\n\ninterface PackageTransportSource {\n readonly assets: readonly PackageProduct['assets'][number][];\n readonly receipts?: readonly CookReceipt[];\n readonly diagnostics?: readonly unknown[];\n readonly sourceKey?: string;\n}\n\nexport interface PackageFinalizerError {\n readonly code:\n | 'duplicate-guid'\n | 'missing-source-revision'\n | 'missing-receipt'\n | 'invalid-artifact';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly guid?: string; readonly key?: string };\n}\n\nexport type PackageFinalizeResult =\n | { readonly ok: true; readonly value: FinalizedPackageProduct }\n | { readonly ok: false; readonly error: PackageFinalizerError };\n\nfunction failure(\n code: PackageFinalizerError['code'],\n expected: string,\n hint: string,\n detail: PackageFinalizerError['detail'],\n): PackageFinalizeResult {\n return { ok: false, error: { code, expected, hint, detail } };\n}\n\nfunction sorted(value: unknown): unknown {\n if (value instanceof Uint8Array) return Buffer.from(value).toString('base64');\n if (Array.isArray(value)) return value.map(sorted);\n if (value !== null && typeof value === 'object') {\n const output: Record<string, unknown> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort()) {\n output[key] = sorted((value as Record<string, unknown>)[key]);\n }\n return output;\n }\n return value;\n}\n\nfunction packageUrl(base: string, packagePath: string): string {\n const prefix = base === '/' ? '' : `/${base.replace(/^\\/+|\\/+$/g, '')}`;\n return `${prefix}/${packagePath.replace(/^\\/+/, '')}`;\n}\n\nfunction safePath(path: string): boolean {\n const normalized = path.replaceAll('\\\\', '/');\n return (\n normalized.length > 0 &&\n !normalized.startsWith('/') &&\n !/^[A-Za-z]:\\//.test(normalized) &&\n !normalized.split('/').includes('..')\n );\n}\n\nfunction digest(assets: readonly PackageProductAsset[]): string {\n const pack = { schemaVersion: '2.0.0', kind: 'internal-text-package', assets } as const;\n const hash = createHash('sha256').update(\n JSON.stringify(\n sorted({\n ...pack,\n assets: pack.assets.map((asset) => ({\n ...asset,\n artifacts: Object.fromEntries(\n Object.entries(asset.artifacts).map(([key, artifact]) => [\n key,\n {\n mediaType: artifact.mediaType,\n ...(artifact.assetCodec === undefined ? {} : { assetCodec: artifact.assetCodec }),\n byteLength: artifact.bytes.byteLength,\n },\n ]),\n ),\n })),\n }),\n ),\n );\n for (const [key, artifact] of assets\n .flatMap((asset) =>\n Object.entries(asset.artifacts).map(\n ([localKey, body]) => [`${asset.guid}/${localKey}`, body] as const,\n ),\n )\n .sort(([left], [right]) => left.localeCompare(right))) {\n hash.update(key).update(artifact.bytes);\n }\n return `sha256:${hash.digest('hex')}`;\n}\n\nfunction packageDocument(\n assets: readonly PackageProductAsset[],\n artifactPath: (guid: string, localKey: string) => string,\n): PackageDocument {\n return {\n schemaVersion: '2.0.0',\n kind: 'internal-text-package',\n assets: assets.map((asset) => ({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: asset.payload,\n refs: asset.refs,\n artifacts: Object.fromEntries(\n Object.entries(asset.artifacts).map(([key, artifact]) => [\n key,\n {\n path: artifactPath(asset.guid, key),\n mediaType: artifact.mediaType,\n ...(artifact.assetCodec === undefined ? {} : { assetCodec: artifact.assetCodec }),\n contentEncoding: 'identity' as const,\n byteLength: artifact.bytes.byteLength,\n integrity: {\n algorithm: 'sha256' as const,\n digest: `sha256:${createHash('sha256').update(artifact.bytes).digest('hex')}`,\n },\n },\n ]),\n ),\n })),\n };\n}\n\nfunction transportArtifacts(\n assets: readonly PackageProductAsset[],\n artifactPath: PackageFinalizePolicy['artifactPath'],\n) {\n return assets.flatMap((asset) =>\n Object.entries(asset.artifacts).flatMap(([localKey, artifact]) => [\n {\n guid: asset.guid,\n localKey,\n path: artifactPath(asset.guid, localKey),\n mediaType: artifact.mediaType,\n ...(artifact.assetCodec === undefined ? {} : { assetCodec: artifact.assetCodec }),\n bytes: artifact.bytes,\n },\n ]),\n );\n}\n\n/** Finalize a complete producer product without owning producer-specific policy. */\nexport async function finalizePackageProduct(\n product: PackageProduct,\n policy: PackageFinalizePolicy,\n): Promise<PackageFinalizeResult> {\n if (product.sourceRevision.trim().length === 0) {\n return failure(\n 'missing-source-revision',\n 'a non-empty source revision',\n 'rebuild the inventory and provide the producer source revision',\n {},\n );\n }\n const seen = new Set<string>();\n for (const asset of product.assets) {\n const guid = asset.guid.toLowerCase();\n if (seen.has(guid)) {\n return failure(\n 'duplicate-guid',\n 'one terminal product row per GUID',\n 'repair the inventory or producer output before finalization',\n { guid },\n );\n }\n seen.add(guid);\n for (const [key, artifact] of Object.entries(asset.artifacts)) {\n if (!safePath(key) || !(artifact.bytes instanceof Uint8Array)) {\n return failure(\n 'invalid-artifact',\n 'asset-local artifact keys and byte bodies',\n 'repair the producer artifact before finalization',\n { guid, key },\n );\n }\n }\n }\n for (const guid of seen) {\n if (!product.receipts.some((receipt) => receipt.guid.toLowerCase() === guid)) {\n return failure(\n 'missing-receipt',\n 'one receipt for every terminal product GUID',\n 'preserve the producer receipt when handing the product to engine-pack',\n { guid },\n );\n }\n }\n const assets = [...product.assets].sort((left, right) => left.guid.localeCompare(right.guid));\n const document = packageDocument(assets, policy.artifactPath);\n const packageBytes = new TextEncoder().encode(JSON.stringify(sorted(document)));\n if (policy.sink !== undefined) {\n for (const asset of assets) {\n for (const [key, artifact] of Object.entries(asset.artifacts)) {\n const path = policy.artifactPath(asset.guid, key);\n if (!safePath(path)) {\n return failure(\n 'invalid-artifact',\n 'package-relative artifact output paths',\n 'repair the finalizer artifact path policy',\n { guid: asset.guid, key },\n );\n }\n await policy.sink(path, artifact.bytes);\n }\n }\n if (!safePath(policy.packagePath)) {\n return failure(\n 'invalid-artifact',\n 'a package-relative package path',\n 'repair the finalizer package path policy',\n { key: policy.packagePath },\n );\n }\n await policy.sink(policy.packagePath, packageBytes);\n }\n return {\n ok: true,\n value: {\n pack: document,\n packageUrl: packageUrl(policy.base, policy.packagePath),\n digest: digest(product.assets),\n receipts: product.receipts,\n diagnostics: product.diagnostics,\n sourceRevision: product.sourceRevision,\n ...(product.sourceKey === undefined ? {} : { sourceKey: product.sourceKey }),\n },\n };\n}\n\n/** Finalize a product-shaped source with the deterministic transport revision. */\nexport async function finalizePackageTransportSource(\n input: PackageTransportSource,\n policy: PackageFinalizePolicy,\n) {\n const sourceRevision = packageTransportRevision(input);\n const product: PackageProduct = {\n assets: input.assets,\n receipts:\n input.receipts ??\n input.assets.map((asset) => ({\n guid: asset.guid,\n origin: 'sourceMeta' as const,\n status: 'succeeded' as const,\n inputFingerprint: sourceRevision,\n })),\n diagnostics: input.diagnostics ?? [],\n sourceRevision,\n ...(input.sourceKey === undefined ? {} : { sourceKey: input.sourceKey }),\n };\n const finalized = await finalizePackageProduct(product, policy);\n if (!finalized.ok) throw finalized.error;\n return {\n pack: finalized.value.pack,\n packageUrl: finalized.value.packageUrl,\n artifacts: transportArtifacts(product.assets, policy.artifactPath),\n digest: finalized.value.digest,\n sourceRevision,\n semantic: JSON.stringify(sorted(finalized.value.pack)),\n };\n}\n\nfunction revisionStable(value: unknown): unknown {\n if (value instanceof Uint8Array) {\n return {\n byteLength: value.byteLength,\n digest: createHash('sha256').update(value).digest('hex'),\n };\n }\n if (Array.isArray(value)) return value.map(revisionStable);\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, item]) => [key, revisionStable(item)]),\n );\n }\n return value;\n}\n\nexport function packageTransportRevision(value: unknown): string {\n return createHash('sha256')\n .update(JSON.stringify(revisionStable(value)))\n .digest('hex');\n}\n","import type { PackV2, PackV2Error, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\n\nimport { validatePackV2 } from './schema-compiled.js';\n\nexport { validateMeta, validatePack, validatePackV2 } from './schema-compiled.js';\n\n/**\n * Parse a Pack v2 envelope without loading the Node-only scanner/evidence\n * barrel. Browser runtime consumers should import this subpath.\n */\nexport function parsePackV2(value: unknown): Result<PackV2, PackV2Error> {\n if (!validatePackV2(value)) {\n return err({\n code: 'pack-v2-envelope-invalid',\n expected: 'a Pack v2 envelope with unique asset GUIDs and valid descriptors',\n hint: 'validate the pack against packages/pack/schema/pack.schema.json and re-cook it',\n detail: { observed: 'invalid pack', expected: 'schemaVersion 2.0.0' },\n });\n }\n\n return ok(value);\n}\n","import { createHash } from 'node:crypto';\nimport type {\n AssetPublicationEnvelope,\n AssetPublicationExternalEvidence,\n AssetPublicationOutput,\n} from '@forgeax/engine-types';\n\nexport interface RuntimePackAssetInput {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly payload: unknown;\n readonly refs?: readonly string[];\n readonly artifacts?: Readonly<Record<string, unknown>>;\n}\n\nexport interface RuntimePackInput {\n readonly assets: readonly RuntimePackAssetInput[];\n}\n\nexport interface RuntimePackEnvelope {\n readonly schemaVersion: '2.0.0';\n readonly kind: 'internal-text-package';\n readonly scopeId: string;\n readonly generation: number;\n readonly digest: string;\n readonly outputSetDigest: string;\n readonly assets: readonly RuntimePackAsset[];\n}\n\nexport interface RuntimePackPublication {\n readonly pack: RuntimePackEnvelope;\n readonly publication: AssetPublicationEnvelope;\n}\n\ninterface RuntimePackAsset extends RuntimePackAssetInput {\n readonly refs: readonly string[];\n readonly artifacts: Readonly<Record<string, unknown>>;\n}\n\nexport interface RuntimePackPublicationInput {\n readonly pack: RuntimePackInput;\n readonly scopeId: string;\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly packageUrl: string;\n readonly inputFingerprint?: string;\n readonly digest?: string;\n readonly generation?: number;\n readonly outputs?: readonly AssetPublicationOutput[];\n readonly externalEvidence?: readonly AssetPublicationExternalEvidence[];\n}\n\nfunction stable(value: unknown): string {\n if (value instanceof Uint8Array) return `bytes:${Buffer.from(value).toString('base64')}`;\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stable(record[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nfunction digest(value: unknown): string {\n return `sha256:${createHash('sha256').update(stable(value)).digest('hex')}`;\n}\n\nfunction normalizedAssets(pack: RuntimePackInput): readonly RuntimePackAsset[] {\n return pack.assets.map((asset) => {\n const payload = asset.payload;\n const canonicalPayload =\n payload !== null &&\n typeof payload === 'object' &&\n !Array.isArray(payload) &&\n !(payload instanceof Uint8Array) &&\n typeof (payload as Record<string, unknown>).kind !== 'string'\n ? { ...(payload as Record<string, unknown>), kind: asset.kind }\n : payload;\n return {\n ...asset,\n payload: canonicalPayload,\n refs: [...(asset.refs ?? [])].map((ref) => ref.toLowerCase()),\n artifacts: asset.artifacts ?? {},\n };\n });\n}\n\nfunction outputFor(asset: RuntimePackAsset): AssetPublicationOutput {\n return {\n guid: asset.guid.toLowerCase(),\n sourceKey: asset.guid.toLowerCase(),\n kind: asset.kind,\n digest: digest({\n guid: asset.guid.toLowerCase(),\n kind: asset.kind,\n name: asset.name,\n payload: asset.payload,\n refs: asset.refs,\n artifacts: asset.artifacts,\n }),\n refs: asset.refs,\n };\n}\n\nfunction outputSetDigest(outputs: readonly AssetPublicationOutput[]): string {\n return digest(\n outputs.map((output) => ({\n guid: output.guid.toLowerCase(),\n sourceKey: output.sourceKey,\n kind: output.kind,\n digest: output.digest,\n refs: [...output.refs].map((guid) => guid.toLowerCase()),\n })),\n );\n}\n\nfunction publicationGeneration(\n sourceRevision: string,\n valueDigest: string,\n outputs: string,\n): number {\n const value = createHash('sha256')\n .update(sourceRevision)\n .update('\\n')\n .update(valueDigest)\n .update('\\n')\n .update(outputs)\n .digest('hex');\n const generation = Number.parseInt(value.slice(0, 8), 16);\n return generation > 0 ? generation : 1;\n}\n\nexport function createRuntimePackPublication(\n input: RuntimePackPublicationInput,\n): RuntimePackPublication {\n const assets = normalizedAssets(input.pack);\n const semantic = {\n schemaVersion: '2.0.0' as const,\n kind: 'internal-text-package' as const,\n assets: [...assets].sort((left, right) =>\n left.guid.toLowerCase().localeCompare(right.guid.toLowerCase()),\n ),\n };\n const valueDigest = input.digest ?? digest(semantic);\n const outputs = input.outputs ?? assets.map(outputFor);\n const outputDigest = outputSetDigest(outputs);\n const generation =\n input.generation ?? publicationGeneration(input.sourceRevision, valueDigest, outputDigest);\n const externalEvidence = input.externalEvidence ?? [];\n const inputFingerprint = input.inputFingerprint ?? input.sourceRevision;\n const publication: AssetPublicationEnvelope = {\n schemaVersion: 'asset-publication/1',\n sourcePath: input.sourcePath,\n sourceRevision: input.sourceRevision,\n generation,\n digest: valueDigest,\n outputSetDigest: outputDigest,\n outputs,\n receipt: {\n schemaVersion: 'asset-publication-receipt/1',\n sourcePath: input.sourcePath,\n sourceRevision: input.sourceRevision,\n inputFingerprint,\n outputDigest: valueDigest,\n outputSetDigest: outputDigest,\n externalEvidence,\n },\n externalEvidence,\n current: {\n generation,\n digest: valueDigest,\n outputSetDigest: outputDigest,\n packageUrl: input.packageUrl,\n receiptKey: inputFingerprint,\n },\n };\n return {\n pack: {\n ...semantic,\n scopeId: input.scopeId,\n generation,\n digest: valueDigest,\n outputSetDigest: outputDigest,\n },\n publication,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/util.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/names.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/errors.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/rules.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/compile/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.json","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js","../../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/core.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/lib/ajv.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/formats.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/limit.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.20.0/node_modules/ajv-formats/src/index.ts","../src/artifact-path.ts","../src/errors.ts","../src/guid.ts","../src/scriptable-pack.ts","../src/catalog-projection.ts","../src/config.ts","../src/deriveAssetName.ts","../src/resolve-asset-source.ts","../src/producer-contract.ts","../src/schema-compiled.ts","../schema/meta.schema.json","../schema/pack.schema.json","../src/scriptable-pack-node.ts","../src/scanner.ts","../src/catalog-builder.ts","../src/topology.ts","../src/catalog-delta.ts","../src/evidence/material-cook.ts","../src/evidence/offline-evidence.ts","../src/mesh-bin-contract.ts","../src/package-finalizer.ts","../src/runtime.ts","../src/runtime-publication.ts"],"names":["UsedValueState","Type","err","DataType","ts","_a","resolve","relative","Ajv","invalid","DiscrError","ajv","addFormats","sourceKey","ok","packageUrl","resultOk","resultErr","isRecord","actual","dirname","failure","readFile","PACK_ERROR_HINTS","join","stat","createHash","isAbsolute","digest"],"mappings":"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","file":"build.mjs","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/** @type {(value: string) => boolean} */\nconst isHexPair = RegExp.prototype.test.bind(/^[\\da-f]{2}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isUnreserved = RegExp.prototype.test.bind(/^[\\da-z\\-._~]$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isPathCharacter = RegExp.prototype.test.bind(/^[\\da-z\\-._~!$&'()*+,;=:@/]$/iu)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * Re-escape RFC 3986 gen-delims that must not appear literally in the host.\n * After the URI regex parses, these characters cannot be literal in the host\n * field, so any that appear after decoding came from percent-encoding and\n * must be restored to prevent authority structure changes.\n *\n * @param {string} host\n * @param {boolean} isIP - true for IPv4/IPv6 hosts (skip colon re-escaping)\n * @returns {string}\n */\nconst HOST_DELIMS = { '@': '%40', '/': '%2F', '?': '%3F', '#': '%23', ':': '%3A' }\nconst HOST_DELIM_RE = /[@/?#:]/g\nconst HOST_DELIM_NO_COLON_RE = /[@/?#]/g\n\nfunction reescapeHostDelimiters (host, isIP) {\n const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE\n re.lastIndex = 0\n return host.replace(re, (ch) => HOST_DELIMS[ch])\n}\n\n/**\n * Normalizes percent escapes and optionally decodes only unreserved ASCII bytes.\n * Reserved delimiters such as `%2F` and `%2E` stay escaped.\n *\n * @param {string} input\n * @param {boolean} [decodeUnreserved=false]\n * @returns {string}\n */\nfunction normalizePercentEncoding (input, decodeUnreserved = false) {\n if (input.indexOf('%') === -1) {\n return input\n }\n\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decodeUnreserved && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n output += input[i]\n }\n\n return output\n}\n\n/**\n * Normalizes path data without turning reserved escapes into live path syntax.\n * Valid escapes are uppercased, raw unsafe characters are escaped, and only\n * unreserved bytes that are not `.` are decoded.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizePathEncoding (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decoded !== '.' && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n if (isPathCharacter(input[i])) {\n output += input[i]\n } else {\n output += escape(input[i])\n }\n }\n\n return output\n}\n\n/**\n * Escapes a component while preserving existing valid percent escapes.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction escapePreservingEscapes (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n output += '%' + hex.toUpperCase()\n i += 2\n continue\n }\n }\n\n output += escape(input[i])\n }\n\n return output\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = reescapeHostDelimiters(host, false)\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n reescapeHostDelimiters,\n normalizePercentEncoding,\n normalizePathEncoding,\n escapePreservingEscapes,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (normalizeString(uri, options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n const normalizedA = normalizeComparableURI(uriA, options)\n const normalizedB = normalizeComparableURI(uriB, options)\n\n return normalizedA !== undefined && normalizedB !== undefined && normalizedA.toLowerCase() === normalizedB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escapePreservingEscapes(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = normalizePercentEncoding(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {import('./types/index').URIComponent} parsed\n * @param {RegExpMatchArray} matches\n * @returns {string|undefined}\n */\nfunction getParseError (parsed, matches) {\n if (matches[2] !== undefined && parsed.path && parsed.path[0] !== '/') {\n return 'URI path must start with \"/\" when authority is present.'\n }\n\n if (typeof parsed.port === 'number' && (parsed.port < 0 || parsed.port > 65535)) {\n return 'URI port is malformed.'\n }\n\n return undefined\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ parsed: import('./types/index').URIComponent, malformedAuthorityOrPort: boolean }}\n */\nfunction parseWithStatus (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let malformedAuthorityOrPort = false\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n\n const parseError = getParseError(parsed, matches)\n if (parseError !== undefined) {\n parsed.error = parsed.error || parseError\n malformedAuthorityOrPort = true\n }\n\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP)\n }\n }\n if (parsed.path) {\n parsed.path = normalizePathEncoding(parsed.path)\n }\n if (parsed.fragment) {\n try {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n } catch {\n parsed.error = parsed.error || 'URI malformed'\n }\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return { parsed, malformedAuthorityOrPort }\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n return parseWithStatus(uri, opts).parsed\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction normalizeString (uri, opts) {\n return normalizeStringWithStatus(uri, opts).normalized\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ normalized: string, malformedAuthorityOrPort: boolean }}\n */\nfunction normalizeStringWithStatus (uri, opts) {\n const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts)\n return {\n normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),\n malformedAuthorityOrPort\n }\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string|undefined}\n */\nfunction normalizeComparableURI (uri, opts) {\n if (typeof uri === 'string') {\n const { normalized, malformedAuthorityOrPort } = normalizeStringWithStatus(uri, opts)\n return malformedAuthorityOrPort ? undefined : normalized\n }\n\n if (typeof uri === 'object') {\n return serialize(uri, opts)\n }\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n specialNumbers?: \"fast\" | \"null\" // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = Object.create(null)\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n if ($data) {\n const {regExp} = it.opts.code\n const regExpCode = regExp.code === \"new RegExp\" ? _`new RegExp` : useFunc(gen, regExp)\n const valid = gen.let(\"valid\")\n gen.try(\n () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n () => gen.assign(valid, false)\n )\n cxt.fail$data(_`!${valid}`)\n } else {\n const regExp = usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n","import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n | \"date\"\n | \"time\"\n | \"date-time\"\n | \"iso-time\"\n | \"iso-date-time\"\n | \"duration\"\n | \"uri\"\n | \"uri-reference\"\n | \"uri-template\"\n | \"url\"\n | \"email\"\n | \"hostname\"\n | \"ipv4\"\n | \"ipv6\"\n | \"regex\"\n | \"uuid\"\n | \"json-pointer\"\n | \"json-pointer-uri-fragment\"\n | \"relative-json-pointer\"\n | \"byte\"\n | \"int32\"\n | \"int64\"\n | \"float\"\n | \"double\"\n | \"password\"\n | \"binary\"\n\nexport type DefinedFormats = {\n [key in FormatName]: Format\n}\n\nfunction fmtDef(\n validate: RegExp | FormatValidator<string>,\n compare: FormatCompare<string>\n): FormatDefinition<string> {\n return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: fmtDef(date, compareDate),\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: fmtDef(getTime(true), compareTime),\n \"date-time\": fmtDef(getDateTime(true), compareDateTime),\n \"iso-time\": fmtDef(getTime(), compareIsoTime),\n \"iso-date-time\": fmtDef(getDateTime(), compareIsoDateTime),\n // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n uri,\n \"uri-reference\":\n /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n // uri-template: https://tools.ietf.org/html/rfc6570\n \"uri-template\":\n /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n // For the source: https://gist.github.com/dperini/729294\n // For test cases: https://mathiasbynens.be/demo/url-regex\n url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n email:\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname:\n /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/,\n ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n // byte: https://github.com/miguelmota/is-base64\n byte,\n // signed 32 bit integer\n int32: {type: \"number\", validate: validateInt32},\n // signed 64 bit integer\n int64: {type: \"number\", validate: validateInt64},\n // C-type float\n float: {type: \"number\", validate: validateNumber},\n // C-type double\n double: {type: \"number\", validate: validateNumber},\n // hint to the UI to hide input strings\n password: true,\n // unchecked string payload\n binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n ...fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareTime\n ),\n \"date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareDateTime\n ),\n \"iso-time\": fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoTime\n ),\n \"iso-date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoDateTime\n ),\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n email:\n /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str)\n if (!matches) return false\n const year: number = +matches[1]\n const month: number = +matches[2]\n const day: number = +matches[3]\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n if (!(d1 && d2)) return undefined\n if (d1 > d2) return 1\n if (d1 < d2) return -1\n return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i\n\nfunction getTime(strictTimeZone?: boolean): (str: string) => boolean {\n return function time(str: string): boolean {\n const matches: string[] | null = TIME.exec(str)\n if (!matches) return false\n const hr: number = +matches[1]\n const min: number = +matches[2]\n const sec: number = +matches[3]\n const tz: string | undefined = matches[4]\n const tzSign: number = matches[5] === \"-\" ? -1 : 1\n const tzH: number = +(matches[6] || 0)\n const tzM: number = +(matches[7] || 0)\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz)) return false\n if (hr <= 23 && min <= 59 && sec < 60) return true\n // leap second\n const utcMin = min - tzM * tzSign\n const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0)\n return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61\n }\n}\n\nfunction compareTime(s1: string, s2: string): number | undefined {\n if (!(s1 && s2)) return undefined\n const t1 = new Date(\"2020-01-01T\" + s1).valueOf()\n const t2 = new Date(\"2020-01-01T\" + s2).valueOf()\n if (!(t1 && t2)) return undefined\n return t1 - t2\n}\n\nfunction compareIsoTime(t1: string, t2: string): number | undefined {\n if (!(t1 && t2)) return undefined\n const a1 = TIME.exec(t1)\n const a2 = TIME.exec(t2)\n if (!(a1 && a2)) return undefined\n t1 = a1[1] + a1[2] + a1[3]\n t2 = a2[1] + a2[2] + a2[3]\n if (t1 > t2) return 1\n if (t1 < t2) return -1\n return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction getDateTime(strictTimeZone?: boolean): (str: string) => boolean {\n const time = getTime(strictTimeZone)\n\n return function date_time(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1])\n }\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const d1 = new Date(dt1).valueOf()\n const d2 = new Date(dt2).valueOf()\n if (!(d1 && d2)) return undefined\n return d1 - d2\n}\n\nfunction compareIsoDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n const res = compareDate(d1, d2)\n if (res === undefined) return undefined\n return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i\n\nfunction uri(str: string): boolean {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n BYTE.lastIndex = 0\n return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n if (Z_ANCHOR.test(str)) return false\n try {\n new RegExp(str)\n return true\n } catch (e) {\n return false\n }\n}\n","import type Ajv from \"ajv\"\nimport type {\n Plugin,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n Code,\n Name,\n ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n formatMaximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n formatMinimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n formatExclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n formatExclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const {gen, data, schemaCode, keyword, it} = cxt\n const {opts, self} = it\n if (!opts.validateFormats) return\n\n const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n if (fCxt.$data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n cxt.fail$data(\n or(\n _`typeof ${fmt} != \"object\"`,\n _`${fmt} instanceof RegExp`,\n _`typeof ${fmt}.compare != \"function\"`,\n compareCode(fmt)\n )\n )\n }\n\n function validateFormat(): void {\n const format = fCxt.schema as string\n const fmtDef: AddedFormat | undefined = self.formats[format]\n if (!fmtDef || fmtDef === true) return\n if (\n typeof fmtDef != \"object\" ||\n fmtDef instanceof RegExp ||\n typeof fmtDef.compare != \"function\"\n ) {\n throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`)\n }\n const fmt = gen.scopeValue(\"formats\", {\n key: format,\n ref: fmtDef,\n code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n })\n\n cxt.fail$data(compareCode(fmt))\n }\n\n function compareCode(fmt: Name): Code {\n return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n }\n },\n dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {\n ajv.addKeyword(formatLimitDefinition)\n return ajv\n}\n\nexport default formatLimitPlugin\n","import {\n DefinedFormats,\n FormatMode,\n FormatName,\n formatNames,\n fastFormats,\n fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n mode?: FormatMode\n formats?: FormatName[]\n keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin<FormatsPluginOptions> {\n get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n ajv: Ajv,\n opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n if (Array.isArray(opts)) {\n addFormats(ajv, opts, fullFormats, fullName)\n return ajv\n }\n const [formats, exportName] =\n opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n const list = opts.formats || formatNames\n addFormats(ajv, list, formats, exportName)\n if (opts.keywords) formatLimit(ajv)\n return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n const formats = mode === \"fast\" ? fastFormats : fullFormats\n const f = formats[name]\n if (!f) throw new Error(`Unknown format \"${name}\"`)\n return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n","import type { AssetArtifactError } from '@forgeax/engine-types';\nimport { err, ok, type Result } from '@forgeax/engine-types';\n\nexport interface ArtifactPathContext {\n readonly packageRoot: string;\n readonly guid: string;\n readonly artifactKey: string;\n}\n\nconst PATH_HINT =\n 'use a normalized package-relative artifact path without traversal, absolute prefixes, or remote URLs';\n\nexport function validateArtifactPath(\n locator: string,\n context: ArtifactPathContext,\n): Result<string, AssetArtifactError> {\n const decoded = decodeLocator(locator);\n if (!decoded.ok) return invalidPath(locator, context);\n\n const normalized = normalizeRelativePath(decoded.value);\n if (!normalized) return invalidPath(locator, context);\n\n return ok(normalized);\n}\n\nfunction decodeLocator(locator: string): Result<string, null> {\n let decoded = locator;\n try {\n for (let pass = 0; pass < 3; pass += 1) {\n const next = decodeURIComponent(decoded);\n if (next === decoded) break;\n decoded = next;\n }\n } catch {\n return err(null);\n }\n return ok(decoded);\n}\n\nfunction normalizeRelativePath(locator: string): string | null {\n if (locator.length === 0 || locator.includes('://')) return null;\n if (locator.startsWith('/') || /^[A-Za-z]:[\\\\/]/.test(locator)) return null;\n\n const segments = locator.replaceAll('\\\\', '/').split('/');\n const normalized: string[] = [];\n for (const segment of segments) {\n if (segment === '..') return null;\n if (segment === '' || segment === '.') continue;\n normalized.push(segment);\n }\n return normalized.length > 0 ? normalized.join('/') : null;\n}\n\nfunction invalidPath(\n locator: string,\n context: ArtifactPathContext,\n): Result<never, AssetArtifactError> {\n return err({\n code: 'asset-artifact-path-invalid',\n expected: 'a normalized package-relative artifact path',\n hint: PATH_HINT,\n detail: {\n guid: context.guid,\n artifactKey: context.artifactKey,\n observed: locator,\n expected: context.packageRoot,\n },\n });\n}\n","// errors.ts — PackError class (feat-20260513-guid-asset-package-system w15)\n//\n// Four-field surface: .code / .expected / .hint / .detail\n// Structurally parallel to AssetError / RhiError / RemoteError\n// (charter proposition 5 consistent abstraction).\n//\n// .detail is narrowed per .code via PackErrorDetail discriminated union\n// (requirements §6.2 AC-07; plan-strategy §D-5).\n\nimport type { PackErrorCode, PackErrorDetail } from '@forgeax/engine-types';\n\n/**\n * Structured error for the engine-pack disk scanner fail-fast chain.\n *\n * AI users consume via exhaustive switch on .code — no default case needed:\n * ```ts\n * switch (err.code) {\n * case 'pack-guid-collision':\n * console.error(err.detail.paths);\n * break;\n * case 'pack-cyclic-reference':\n * console.error(err.detail.cycle);\n * break;\n * // ...all 8 cases\n * }\n * ```\n */\nexport class PackError extends Error {\n readonly code: PackErrorCode;\n readonly expected: string;\n readonly hint: string;\n readonly detail: PackErrorDetail;\n\n constructor(args: {\n code: PackErrorCode;\n expected: string;\n hint: string;\n detail: PackErrorDetail;\n }) {\n super(`[PackError ${args.code}] expected: ${args.expected}; hint: ${args.hint}`);\n this.name = 'PackError';\n this.code = args.code;\n this.expected = args.expected;\n this.hint = args.hint;\n this.detail = args.detail;\n }\n}\n","import { uuidv7obj } from 'uuidv7';\nimport { PackError } from './errors.js';\n\n/**\n * 16-byte UUID branded ABI. Prevents assignment from plain Uint8Array or string.\n * Brand field mirrors the declaration in @forgeax/engine-types for cross-package\n * structural compatibility (both use __guidBrand: 'AssetGuid').\n */\nexport type AssetGuid = Uint8Array & { readonly __guidBrand: 'AssetGuid' };\n\n/** Minimal Result alias for this module (structurally compatible with ScanResult). */\nexport type GuidResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction brand(bytes: Uint8Array): AssetGuid {\n return bytes as AssetGuid;\n}\n\nconst HEX_BYTE = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n\nfunction bytesToDashForm(bytes: Uint8Array): string {\n const h = HEX_BYTE;\n // biome-ignore lint/style/noNonNullAssertion: length guaranteed 16\n return `${h[bytes[0]!]}${h[bytes[1]!]}${h[bytes[2]!]}${h[bytes[3]!]}-${h[bytes[4]!]}${h[bytes[5]!]}-${h[bytes[6]!]}${h[bytes[7]!]}-${h[bytes[8]!]}${h[bytes[9]!]}-${h[bytes[10]!]}${h[bytes[11]!]}${h[bytes[12]!]}${h[bytes[13]!]}${h[bytes[14]!]}${h[bytes[15]!]}`;\n}\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nexport function isValidAssetGuidString(value: unknown): value is string {\n return typeof value === 'string' && UUID_RE.test(value);\n}\n\nfunction dashFormToBytes(dashForm: string): Uint8Array {\n const hex = dashForm.replace(/-/g, '');\n const bytes = new Uint8Array(16);\n for (let i = 0; i < 16; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\n/**\n * Utilities for the AssetGuid branded 16-byte UUID type.\n * Declare the type via `import type { AssetGuid } from '@forgeax/engine-pack/guid'`\n * or `import type { AssetGuid } from '@forgeax/engine-types'`.\n */\nexport const AssetGuid = {\n /**\n * Parse a 36-char RFC 4122 dash-form UUID string into an AssetGuid.\n * Returns Ok(AssetGuid) on success or Err(PackError) with code 'pack-guid-malformed' on failure.\n * Never throws for expected failures (requirements §4.2 / §14 / charter proposition 4).\n */\n parse(dashForm: string): GuidResult<AssetGuid, PackError> {\n if (!isValidAssetGuidString(dashForm)) {\n return {\n ok: false,\n error: new PackError({\n code: 'pack-guid-malformed',\n expected: '36-char RFC 4122 dash-form UUID',\n hint: 'use AssetGuid.random() or a UUIDv7 generator; all GUID fields must be 36-char RFC 4122 dash-form',\n detail: {\n raw: dashForm,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n },\n }),\n };\n }\n return { ok: true, value: brand(dashFormToBytes(dashForm)) };\n },\n\n /**\n * Format an AssetGuid as a 36-char RFC 4122 lowercase dash-form string.\n */\n format(guid: AssetGuid): string {\n return bytesToDashForm(guid);\n },\n\n /**\n * Test byte-by-byte equality between two AssetGuids.\n */\n equals(a: AssetGuid, b: AssetGuid): boolean {\n for (let i = 0; i < 16; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n },\n\n /**\n * Mint a new time-ordered UUIDv7 as an AssetGuid.\n * Works in both Node.js and browser environments.\n */\n random(): AssetGuid {\n const uuid = uuidv7obj();\n const bytes = new Uint8Array(16);\n bytes.set(uuid.bytes);\n return brand(bytes);\n },\n} as const;\n","import type { Asset, AssetGuid, AssetPublicationEnvelope, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\nimport { AssetGuid as AssetGuidCodec } from './guid.js';\n\n/** Closed ordinary kind vocabulary shared by authoring, producers, and loaders. */\nexport type ScriptablePackAssetKind = Asset['kind'];\n\n/** Complete ordinary Asset kind vocabulary exposed by ScriptablePack discovery. */\nexport const SCRIPTABLE_PACK_ASSET_KINDS = [\n 'mesh',\n 'material',\n 'scene',\n 'texture',\n 'equirect',\n 'sampler',\n 'font',\n 'render-pipeline',\n 'tileset',\n 'video',\n 'skeleton',\n 'skin',\n 'animation-clip',\n 'animation-graph',\n 'audio',\n 'particle-effect',\n] as const satisfies readonly ScriptablePackAssetKind[];\n\n/** Machine-readable producer/loader floor owned by engine-pack. */\nexport const SCRIPTABLE_PACK_CAPABILITY_MANIFEST = {\n assetKinds: SCRIPTABLE_PACK_ASSET_KINDS,\n durablePayload: true,\n refs: true,\n artifacts: true,\n hostCapabilities: ['audio-install', 'video-play', 'particle-execute'] as const,\n} as const;\n\nexport function isScriptablePackAssetKind(value: string): value is ScriptablePackAssetKind {\n return (SCRIPTABLE_PACK_ASSET_KINDS as readonly string[]).includes(value);\n}\n\nexport interface ScriptablePackAssetDeclaration<\n TKind extends ScriptablePackAssetKind = ScriptablePackAssetKind,\n> {\n readonly guid: AssetGuid;\n readonly kind: TKind;\n readonly name?: string;\n}\n\nexport type ScriptablePackAssetDeclarations = Readonly<\n Record<string, ScriptablePackAssetDeclaration>\n>;\n\nexport type ScriptablePackExternalAssets = Readonly<Record<string, AssetGuid>>;\n\n/**\n * Component-shaped input accepted by a ScriptablePack scene declaration.\n * Engine component tokens satisfy this shape; plain `{ type }` rows keep the\n * Pack contract independent of ECS and survive the isolated module worker.\n */\nexport interface ScriptablePackSceneComponentInput {\n readonly name: string;\n readonly fields: Readonly<Record<string, string | { readonly type: string }>>;\n}\n\n/** Neutral scene schema projection owned by the Pack definition. */\nexport interface ScriptablePackSceneComponent {\n readonly name: string;\n readonly fields: Readonly<Record<string, string>>;\n}\n\nfunction sceneComponentFieldType(value: unknown): string | undefined {\n if (typeof value === 'string') return value;\n if (isRecord(value) && typeof value.type === 'string') return value.type;\n return undefined;\n}\n\n/** Derive the frozen, ECS-neutral schema used by scene output producers. */\nexport function projectScriptablePackSceneComponents(\n components: readonly ScriptablePackSceneComponentInput[] | undefined,\n): readonly ScriptablePackSceneComponent[] {\n return (components ?? []).map((component) => ({\n name: component.name,\n fields: Object.fromEntries(\n Object.entries(component.fields).map(([fieldName, field]) => [\n fieldName,\n sceneComponentFieldType(field) as string,\n ]),\n ),\n }));\n}\n\n/** Pack-facing name for the shared Engine publication envelope. */\nexport type ScriptablePackPublicationEnvelope = AssetPublicationEnvelope;\n\n/** Structured domain failure permitted to cross the isolated build-time AssetReader seam. */\nexport interface ScriptablePackErrorProvenance {\n /** Published source generation observed by the reader, when available. */\n readonly generation?: number;\n /** Stable producer identity for the failed output, when available. */\n readonly sourceKey?: string;\n /** GUID associated with the failed read or output, when available. */\n readonly guid?: string;\n}\n\nexport interface ScriptablePackReadError {\n readonly code: string;\n readonly expected: string;\n readonly hint: string;\n readonly detail?: unknown;\n readonly provenance?: ScriptablePackErrorProvenance;\n}\n\nexport type ScriptablePackAssetFor<TDescriptor extends ScriptablePackAssetDeclaration> =\n TDescriptor extends { readonly kind: infer TKind extends ScriptablePackAssetKind }\n ? Extract<Asset, { readonly kind: TKind }>\n : never;\n\nexport type ScriptablePackOutputs<TAssets extends ScriptablePackAssetDeclarations> = {\n readonly [TKey in keyof TAssets]: TAssets[TKey] extends ScriptablePackAssetDeclaration\n ? ScriptablePackAssetFor<TAssets[TKey]>\n : never;\n};\n\nexport interface AssetReader {\n /** Load a declared GUID as a durable payload; this never mints a World handle. */\n readByGuid<TAsset extends Asset = Asset>(\n guid: AssetGuid,\n ): Promise<Result<TAsset, ScriptablePackReadError>>;\n}\n\nexport type ScriptablePackBuildResult<\n TAssets extends ScriptablePackAssetDeclarations,\n TError,\n> = Result<ScriptablePackOutputs<TAssets>, TError>;\n\nexport interface ScriptablePackDefinition<\n TAssets extends ScriptablePackAssetDeclarations = ScriptablePackAssetDeclarations,\n TExternal extends ScriptablePackExternalAssets = ScriptablePackExternalAssets,\n TError = ScriptablePackReadError,\n> {\n readonly schemaVersion: '1.0.0';\n readonly packageId: AssetGuid;\n readonly name?: string;\n readonly assets: TAssets;\n /** Component tokens/schema rows used by scene ref externalization. */\n readonly sceneComponents?: readonly ScriptablePackSceneComponentInput[];\n readonly externalAssets: TExternal;\n readonly build: (\n assetReader: AssetReader,\n ) =>\n | ScriptablePackBuildResult<TAssets, TError>\n | Promise<ScriptablePackBuildResult<TAssets, TError>>;\n}\n\nexport interface ScriptablePackSourceClosureEntry {\n readonly path: string;\n readonly digest: string;\n}\n\nexport interface ScriptablePackMetaJson {\n readonly schemaVersion: '1.0.0';\n readonly kind: 'external-asset-package';\n readonly packageId: string;\n readonly name?: string;\n readonly importer: 'pack-ts';\n readonly source: string;\n readonly importSettings: {\n readonly contractVersion: '1.0.0';\n readonly externalAssets: readonly {\n readonly alias: string;\n readonly guid: string;\n }[];\n };\n readonly subAssets: readonly {\n readonly guid: string;\n readonly sourceIndex: number;\n readonly sourceKey: string;\n readonly kind: ScriptablePackAssetKind;\n readonly name?: string;\n }[];\n}\n\nexport interface ScriptablePackOperationEnvelope {\n readonly requestId: string;\n readonly expectedRevision?: string;\n}\n\nexport type ScriptablePackGatewayOperation =\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'preflight';\n readonly sourcePath: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'create-scriptable-pack';\n readonly sourcePath: string;\n readonly name?: string;\n readonly initialOutput: {\n readonly sourceKey: string;\n readonly kind: ScriptablePackAssetKind;\n readonly name?: string;\n };\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'add-output';\n readonly sourcePath: string;\n readonly sourceKey: string;\n readonly assetKind: ScriptablePackAssetKind;\n readonly name?: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'add-external-asset';\n readonly sourcePath: string;\n readonly alias: string;\n readonly guid: AssetGuid;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'rename-display';\n readonly sourcePath: string;\n readonly target:\n | { readonly kind: 'package' }\n | { readonly kind: 'output'; readonly sourceKey: string };\n readonly name: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'remove-output';\n readonly sourcePath: string;\n readonly sourceKey: string;\n /** Exact incoming reference identities acknowledged by the caller. */\n readonly confirmIncomingRefs?: readonly string[];\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'clone-scriptable-pack';\n readonly sourcePath: string;\n readonly targetPath: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'inspect-meta';\n readonly sourcePath: string;\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'rebuild' | 'cold-cook';\n readonly sourcePath: string;\n });\n\nexport interface ScriptablePackMutationCapabilities {\n readonly inspect: true;\n readonly rebuild: true;\n readonly coldCook: true;\n readonly create?: true;\n readonly addOutput?: true;\n readonly addExternalAsset?: true;\n readonly renameDisplay?: true;\n readonly removeOutput?: true;\n readonly clone?: true;\n readonly reason?: string;\n}\n\nexport interface ScriptablePackPreflight {\n readonly sourcePath: string;\n readonly revision: string;\n readonly meta: ScriptablePackMetaJson;\n readonly capabilities: ScriptablePackMutationCapabilities;\n readonly incomingRefs: readonly string[];\n}\n\nexport interface ScriptablePackGatewayMutation {\n readonly sourcePath: string;\n readonly revision: string;\n readonly meta: ScriptablePackMetaJson;\n}\n\nexport interface ScriptablePackAuthoringGateway {\n execute(\n operation: ScriptablePackGatewayOperation,\n ): Promise<Result<ScriptablePackGatewayMutation | ScriptablePackPreflight, ScriptablePackError>>;\n}\n\nexport type ScriptablePackAuthoringMutation =\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'create-scriptable-pack';\n readonly sourcePath: string;\n readonly packageId: AssetGuid;\n readonly name?: string;\n readonly initialOutput: {\n readonly sourceKey: string;\n readonly kind: ScriptablePackAssetKind;\n readonly guid: AssetGuid;\n readonly name?: string;\n };\n })\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'add-output';\n readonly sourcePath: string;\n readonly sourceKey: string;\n readonly assetKind: ScriptablePackAssetKind;\n readonly guid: AssetGuid;\n readonly name?: string;\n })\n | Extract<\n ScriptablePackGatewayOperation,\n { readonly kind: 'add-external-asset' | 'rename-display' | 'remove-output' }\n >\n | (ScriptablePackOperationEnvelope & {\n readonly kind: 'clone-scriptable-pack';\n readonly sourcePath: string;\n readonly targetPath: string;\n readonly packageId: AssetGuid;\n readonly outputGuids: Readonly<Record<string, AssetGuid>>;\n });\n\nexport interface ScriptablePackAuthoringPort {\n preflight(\n sourcePath: string,\n ): Promise<Result<Omit<ScriptablePackPreflight, 'sourcePath'>, ScriptablePackError>>;\n mutate(\n operation: ScriptablePackAuthoringMutation,\n ): Promise<\n Result<{ readonly sourcePath: string; readonly revision: string }, ScriptablePackError>\n >;\n inspect(\n sourcePath: string,\n ): Promise<\n Result<\n { readonly revision: string; readonly meta: ScriptablePackMetaJson },\n ScriptablePackError\n >\n >;\n rebuild(\n sourcePath: string,\n mode: 'rebuild' | 'cold-cook',\n ): Promise<\n Result<\n { readonly revision: string; readonly meta: ScriptablePackMetaJson },\n ScriptablePackError\n >\n >;\n}\n\n/** Keep GUID allocation and multi-identity operations in one auditable gateway transaction. */\nexport function createScriptablePackAuthoringGateway(\n port: ScriptablePackAuthoringPort,\n allocateGuid: () => AssetGuid = AssetGuidCodec.random,\n): ScriptablePackAuthoringGateway {\n const requests = new Map<\n string,\n {\n readonly fingerprint: string;\n readonly result: Promise<\n Result<ScriptablePackGatewayMutation | ScriptablePackPreflight, ScriptablePackError>\n >;\n }\n >();\n\n async function mutationResult(\n result: Awaited<ReturnType<ScriptablePackAuthoringPort['mutate']>>,\n ): Promise<Result<ScriptablePackGatewayMutation, ScriptablePackError>> {\n if (!result.ok) return result;\n const inspected = await port.inspect(result.value.sourcePath);\n if (!inspected.ok) return inspected;\n return ok({\n sourcePath: result.value.sourcePath,\n revision: inspected.value.revision,\n meta: inspected.value.meta,\n });\n }\n\n async function dispatch(\n operation: ScriptablePackGatewayOperation,\n ): Promise<Result<ScriptablePackGatewayMutation | ScriptablePackPreflight, ScriptablePackError>> {\n switch (operation.kind) {\n case 'preflight': {\n const preflight = await port.preflight(operation.sourcePath);\n return preflight.ok\n ? ok({ sourcePath: operation.sourcePath, ...preflight.value })\n : preflight;\n }\n case 'inspect-meta': {\n const inspected = await port.inspect(operation.sourcePath);\n return inspected.ok\n ? ok({ sourcePath: operation.sourcePath, ...inspected.value })\n : inspected;\n }\n case 'rebuild':\n case 'cold-cook': {\n const preflight = await port.preflight(operation.sourcePath);\n if (!preflight.ok) return preflight;\n if (\n operation.expectedRevision !== undefined &&\n operation.expectedRevision !== preflight.value.revision\n ) {\n return err({\n code: 'pack-source-revision-conflict',\n expected: operation.expectedRevision,\n actual: preflight.value.revision,\n hint: 'inspect the current source revision, then retry the build with a new requestId',\n retryable: true,\n recoveryActions: ['asset.preflight', 'mint-request-id'],\n detail: { requestId: operation.requestId, sourcePath: operation.sourcePath },\n });\n }\n const rebuilt = await port.rebuild(operation.sourcePath, operation.kind);\n return rebuilt.ok ? ok({ sourcePath: operation.sourcePath, ...rebuilt.value }) : rebuilt;\n }\n case 'create-scriptable-pack':\n return mutationResult(\n await port.mutate({\n ...operation,\n packageId: allocateGuid(),\n initialOutput: { ...operation.initialOutput, guid: allocateGuid() },\n }),\n );\n case 'add-output':\n return mutationResult(await port.mutate({ ...operation, guid: allocateGuid() }));\n case 'clone-scriptable-pack': {\n const inspected = await port.inspect(operation.sourcePath);\n if (!inspected.ok) return inspected;\n const outputGuids = Object.fromEntries(\n inspected.value.meta.subAssets.map((asset) => [asset.sourceKey, allocateGuid()]),\n );\n return mutationResult(\n await port.mutate({\n ...operation,\n packageId: allocateGuid(),\n outputGuids,\n }),\n );\n }\n case 'add-external-asset':\n case 'rename-display':\n case 'remove-output':\n return mutationResult(await port.mutate(operation));\n }\n }\n\n return {\n execute(operation) {\n if (operation.requestId.trim().length === 0) {\n return Promise.resolve(\n err({\n code: 'pack-source-operation-committed',\n expected: 'a non-empty caller-minted requestId',\n actual: operation.requestId,\n hint: 'mint a new requestId and retry the operation once',\n retryable: true,\n recoveryActions: ['mint-request-id'],\n detail: { requestId: operation.requestId, sourcePath: operation.sourcePath },\n }),\n );\n }\n const fingerprint = JSON.stringify(operation);\n const prior = requests.get(operation.requestId);\n if (prior !== undefined) {\n if (prior.fingerprint === fingerprint) return prior.result;\n return Promise.resolve(\n err({\n code: 'pack-source-operation-committed',\n expected: 'one immutable operation per requestId',\n actual: operation.kind,\n hint: 'read the original operation result or mint a new requestId',\n retryable: false,\n recoveryActions: ['read-operation-run', 'mint-request-id'],\n detail: { requestId: operation.requestId, sourcePath: operation.sourcePath },\n }),\n );\n }\n const result = dispatch(operation);\n requests.set(operation.requestId, { fingerprint, result });\n return result;\n },\n };\n}\n\nconst SCRIPTABLE_PACK_REQUEST_ID_SCHEMA = {\n type: 'string',\n minLength: 1,\n maxLength: 128,\n pattern: '^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$',\n description: 'Caller-minted identity for one idempotent ScriptablePack operation.',\n} as const;\nconst SCRIPTABLE_PACK_SOURCE_PATH_SCHEMA = {\n type: 'string',\n minLength: 8,\n pattern: '^[^/].*\\\\.pack\\\\.ts$',\n description: 'Game-root-relative ScriptablePack source path.',\n} as const;\nconst SCRIPTABLE_PACK_OWNER_GUID_SCHEMA = {\n type: 'string',\n format: 'uuid',\n description: 'Catalog GUID used to resolve the producer-owned source subject.',\n} as const;\nconst SCRIPTABLE_PACK_REVISION_SCHEMA = {\n type: 'string',\n minLength: 64,\n maxLength: 64,\n pattern: '^[a-f0-9]{64}$',\n description: 'SHA-256 source revision returned by preflight.',\n} as const;\nconst SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA = { type: 'string', minLength: 1 } as const;\nconst SCRIPTABLE_PACK_ASSET_KIND_SCHEMA = {\n enum: SCRIPTABLE_PACK_ASSET_KINDS,\n description: 'Ordinary Asset kind supported by the ScriptablePack producer/loader matrix.',\n} as const;\nconst SCRIPTABLE_PACK_NAME_SCHEMA = { type: 'string', minLength: 1 } as const;\n\nfunction scriptablePackArgsSchema(\n properties: Readonly<Record<string, unknown>>,\n required: readonly string[],\n options: { readonly subject?: boolean; readonly guidSubject?: boolean } = {},\n) {\n const subjectRequired = ['requestId', ...required];\n return {\n type: 'object',\n properties: {\n sourcePath: SCRIPTABLE_PACK_SOURCE_PATH_SCHEMA,\n ownerGuid: SCRIPTABLE_PACK_OWNER_GUID_SCHEMA,\n requestId: SCRIPTABLE_PACK_REQUEST_ID_SCHEMA,\n ...properties,\n },\n required: subjectRequired,\n ...(options.subject === false\n ? {}\n : {\n anyOf: [\n { required: [...subjectRequired, 'sourcePath'] },\n { required: [...subjectRequired, 'ownerGuid'] },\n ...(options.guidSubject === false ? [] : [{ required: [...subjectRequired, 'guid'] }]),\n ],\n }),\n additionalProperties: false,\n } as const;\n}\n\nexport const SOURCE_AUTHORING_OPERATION_DESCRIPTORS = [\n {\n id: 'asset-source.create',\n kind: 'create',\n domain: 'session',\n title: 'Create Asset Source',\n argsSchema: scriptablePackArgsSchema(\n {\n name: SCRIPTABLE_PACK_NAME_SCHEMA,\n initialOutput: {\n type: 'object',\n properties: {\n sourceKey: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n kind: SCRIPTABLE_PACK_ASSET_KIND_SCHEMA,\n name: SCRIPTABLE_PACK_NAME_SCHEMA,\n },\n required: ['sourceKey', 'kind'],\n additionalProperties: false,\n },\n },\n ['sourcePath', 'initialOutput'],\n { subject: false },\n ),\n },\n {\n id: 'asset-source.add-output',\n kind: 'add-output',\n domain: 'session',\n title: 'Add Asset Source Output',\n argsSchema: scriptablePackArgsSchema(\n {\n sourceKey: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n assetKind: SCRIPTABLE_PACK_ASSET_KIND_SCHEMA,\n name: SCRIPTABLE_PACK_NAME_SCHEMA,\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['sourceKey', 'assetKind', 'expectedRevision'],\n ),\n },\n {\n id: 'asset-source.add-external-asset',\n kind: 'add-external-asset',\n domain: 'session',\n title: 'Add Asset Source External Asset',\n argsSchema: scriptablePackArgsSchema(\n {\n alias: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n guid: { type: 'string', format: 'uuid' },\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['alias', 'guid', 'expectedRevision'],\n { guidSubject: false },\n ),\n },\n {\n id: 'asset-source.rename',\n kind: 'rename',\n domain: 'session',\n title: 'Rename Asset Source Display Name',\n argsSchema: scriptablePackArgsSchema(\n {\n target: {\n oneOf: [\n {\n type: 'object',\n properties: { kind: { const: 'package' } },\n required: ['kind'],\n additionalProperties: false,\n },\n {\n type: 'object',\n properties: {\n kind: { const: 'output' },\n sourceKey: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n },\n required: ['kind', 'sourceKey'],\n additionalProperties: false,\n },\n ],\n },\n name: SCRIPTABLE_PACK_NAME_SCHEMA,\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['target', 'name', 'expectedRevision'],\n ),\n },\n {\n id: 'asset-source.remove-output',\n kind: 'remove-output',\n domain: 'session',\n title: 'Remove Asset Source Output',\n destructive: true,\n argsSchema: scriptablePackArgsSchema(\n {\n sourceKey: SCRIPTABLE_PACK_SOURCE_KEY_SCHEMA,\n confirmIncomingRefs: { type: 'array', items: { type: 'string' } },\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['sourceKey', 'expectedRevision'],\n ),\n },\n {\n id: 'asset-source.clone',\n kind: 'clone',\n domain: 'session',\n title: 'Clone Asset Source',\n argsSchema: scriptablePackArgsSchema(\n {\n targetPath: SCRIPTABLE_PACK_SOURCE_PATH_SCHEMA,\n expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA,\n },\n ['targetPath', 'expectedRevision'],\n ),\n },\n {\n id: 'asset-source.rebuild',\n kind: 'rebuild',\n domain: 'session',\n title: 'Rebuild Asset Source',\n argsSchema: scriptablePackArgsSchema({ expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA }, [\n 'expectedRevision',\n ]),\n },\n {\n id: 'asset-source.cold-cook',\n kind: 'cold-cook',\n domain: 'session',\n title: 'Cold Cook Asset Source',\n argsSchema: scriptablePackArgsSchema({ expectedRevision: SCRIPTABLE_PACK_REVISION_SCHEMA }, [\n 'expectedRevision',\n ]),\n },\n] as const;\n\nexport type ScriptablePackError =\n | {\n readonly code: 'pack-source-load-failed';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly sourcePath: string;\n readonly reason: 'module-load' | 'timeout' | 'source-changed';\n readonly phase: 'module-load' | 'build';\n readonly diagnostic: string;\n readonly timeoutMs?: number;\n };\n }\n | {\n readonly code: 'pack-source-definition-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly sourcePath?: string;\n readonly propertyPath: string;\n readonly actual: string;\n };\n }\n | {\n readonly code: 'pack-source-output-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly missingGuids: readonly string[];\n readonly unexpectedSourceKeys: readonly string[];\n readonly kindMismatches: readonly {\n readonly sourceKey: string;\n readonly expected: string;\n readonly actual: string;\n }[];\n };\n }\n | {\n readonly code: 'pack-source-external-closure-mismatch';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly undeclaredReferencedGuids: readonly string[];\n readonly undeclaredReadGuids: readonly string[];\n readonly unusedDeclaredGuids: readonly string[];\n };\n }\n | {\n readonly code:\n | 'pack-source-path-invalid'\n | 'pack-source-revision-conflict'\n | 'pack-source-mutation-unsupported'\n | 'pack-source-reference-conflict'\n | 'pack-source-write-failed'\n | 'pack-source-build-cycle'\n | 'pack-source-publication-timeout'\n | 'pack-source-operation-committed';\n readonly expected: string;\n readonly actual?: string;\n readonly hint: string;\n readonly retryable: boolean;\n readonly recoveryActions: readonly string[];\n readonly detail: {\n readonly requestId?: string;\n readonly sourcePath?: string;\n readonly packageId?: string;\n readonly sourceKey?: string;\n readonly incomingRefs?: readonly string[];\n };\n };\n\nfunction actual(value: unknown): string {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (ArrayBuffer.isView(value)) return value.constructor.name;\n return typeof value;\n}\n\nfunction invalid(\n propertyPath: string,\n expected: string,\n value: unknown,\n sourcePath?: string,\n): Result<never, ScriptablePackError> {\n return err({\n code: 'pack-source-definition-invalid',\n expected,\n hint: 'repair the default exported ScriptablePack definition, then inspect Meta again',\n detail: {\n ...(sourcePath === undefined ? {} : { sourcePath }),\n propertyPath,\n actual: actual(value),\n },\n });\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isAssetGuid(value: unknown): value is AssetGuid {\n return value instanceof Uint8Array && value.byteLength === 16;\n}\n\nfunction guidKey(guid: AssetGuid): string {\n return AssetGuidCodec.format(guid);\n}\n\nfunction freezeDefinition(\n definition: ScriptablePackDefinition,\n): Readonly<ScriptablePackDefinition> {\n const assets = Object.fromEntries(\n Object.entries(definition.assets).map(([sourceKey, descriptor]) => [\n sourceKey,\n Object.freeze({ ...descriptor, guid: descriptor.guid.slice() as AssetGuid }),\n ]),\n );\n const externalAssets = Object.fromEntries(\n Object.entries(definition.externalAssets).map(([alias, guid]) => [\n alias,\n guid.slice() as AssetGuid,\n ]),\n );\n const sceneComponents =\n definition.sceneComponents === undefined\n ? undefined\n : Object.freeze(\n projectScriptablePackSceneComponents(definition.sceneComponents).map((component) =>\n Object.freeze({\n ...component,\n fields: Object.freeze({ ...component.fields }),\n }),\n ),\n );\n return Object.freeze({\n ...definition,\n packageId: definition.packageId.slice() as AssetGuid,\n assets: Object.freeze(assets),\n externalAssets: Object.freeze(externalAssets),\n ...(sceneComponents === undefined ? {} : { sceneComponents }),\n });\n}\n\nexport function validateScriptablePackDefinition(\n value: unknown,\n sourcePath?: string,\n): Result<Readonly<ScriptablePackDefinition>, ScriptablePackError> {\n if (!isRecord(value))\n return invalid('$', 'a ScriptablePack definition object', value, sourcePath);\n if (value.schemaVersion !== '1.0.0') {\n return invalid('$.schemaVersion', \"the literal '1.0.0'\", value.schemaVersion, sourcePath);\n }\n if (!isAssetGuid(value.packageId)) {\n return invalid('$.packageId', 'a 16-byte AssetGuid', value.packageId, sourcePath);\n }\n if (value.name !== undefined && typeof value.name !== 'string') {\n return invalid('$.name', 'a string when present', value.name, sourcePath);\n }\n if (!isRecord(value.assets) || Object.keys(value.assets).length === 0) {\n return invalid(\n '$.assets',\n 'a non-empty sourceKey to descriptor object',\n value.assets,\n sourcePath,\n );\n }\n if (!isRecord(value.externalAssets)) {\n return invalid(\n '$.externalAssets',\n 'an alias to AssetGuid object',\n value.externalAssets,\n sourcePath,\n );\n }\n if (value.sceneComponents !== undefined) {\n if (!Array.isArray(value.sceneComponents)) {\n return invalid(\n '$.sceneComponents',\n 'an array of component tokens or neutral schema rows when present',\n value.sceneComponents,\n sourcePath,\n );\n }\n const componentNames = new Set<string>();\n for (const [componentIndex, component] of value.sceneComponents.entries()) {\n if (!isRecord(component)) {\n return invalid(\n `$.sceneComponents[${componentIndex}]`,\n 'a component token or neutral schema row',\n component,\n sourcePath,\n );\n }\n if (typeof component.name !== 'string' || component.name.trim().length === 0) {\n return invalid(\n `$.sceneComponents[${componentIndex}].name`,\n 'a non-empty component name',\n component.name,\n sourcePath,\n );\n }\n if (componentNames.has(component.name)) {\n return invalid(\n `$.sceneComponents[${componentIndex}].name`,\n 'component names to be unique within one ScriptablePack',\n component.name,\n sourcePath,\n );\n }\n componentNames.add(component.name);\n if (!isRecord(component.fields)) {\n return invalid(\n `$.sceneComponents[${componentIndex}].fields`,\n 'a field-name to schema-type object',\n component.fields,\n sourcePath,\n );\n }\n for (const [fieldName, field] of Object.entries(component.fields)) {\n const type = sceneComponentFieldType(field);\n if (fieldName.trim().length === 0 || type === undefined || type.trim().length === 0) {\n return invalid(\n `$.sceneComponents[${componentIndex}].fields`,\n 'field names with non-empty string schema types',\n field,\n sourcePath,\n );\n }\n }\n }\n }\n if (typeof value.build !== 'function') {\n return invalid('$.build', 'a build(assetReader) function', value.build, sourcePath);\n }\n\n const packageGuid = guidKey(value.packageId);\n const localGuids = new Set<string>();\n for (const [sourceKey, descriptor] of Object.entries(value.assets)) {\n if (sourceKey.trim().length === 0) {\n return invalid('$.assets', 'non-empty sourceKey object keys', sourceKey, sourcePath);\n }\n if (!isRecord(descriptor)) {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}]`,\n 'an asset descriptor',\n descriptor,\n sourcePath,\n );\n }\n if (!isAssetGuid(descriptor.guid)) {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}].guid`,\n 'a 16-byte AssetGuid',\n descriptor.guid,\n sourcePath,\n );\n }\n if (typeof descriptor.kind !== 'string' || !isScriptablePackAssetKind(descriptor.kind)) {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}].kind`,\n 'one of SCRIPTABLE_PACK_ASSET_KINDS',\n descriptor.kind,\n sourcePath,\n );\n }\n if (descriptor.name !== undefined && typeof descriptor.name !== 'string') {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}].name`,\n 'a string when present',\n descriptor.name,\n sourcePath,\n );\n }\n const guid = guidKey(descriptor.guid);\n if (guid === packageGuid || localGuids.has(guid)) {\n return invalid(\n `$.assets[${JSON.stringify(sourceKey)}].guid`,\n 'a GUID unique within the package and distinct from packageId',\n descriptor.guid,\n sourcePath,\n );\n }\n localGuids.add(guid);\n }\n\n const externalGuids = new Set<string>();\n for (const [alias, guidValue] of Object.entries(value.externalAssets)) {\n if (alias.trim().length === 0) {\n return invalid('$.externalAssets', 'non-empty alias object keys', alias, sourcePath);\n }\n if (!isAssetGuid(guidValue)) {\n return invalid(\n `$.externalAssets[${JSON.stringify(alias)}]`,\n 'a 16-byte AssetGuid',\n guidValue,\n sourcePath,\n );\n }\n const guid = guidKey(guidValue);\n if (guid === packageGuid || localGuids.has(guid) || externalGuids.has(guid)) {\n return invalid(\n `$.externalAssets[${JSON.stringify(alias)}]`,\n 'a unique foreign GUID not owned by this package',\n guidValue,\n sourcePath,\n );\n }\n externalGuids.add(guid);\n }\n\n return ok(freezeDefinition(value as unknown as ScriptablePackDefinition));\n}\n\nexport function projectScriptablePackMeta(\n definition: ScriptablePackDefinition,\n source: string,\n): ScriptablePackMetaJson {\n const subAssets = Object.entries(definition.assets)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([sourceKey, descriptor], sourceIndex) => ({\n guid: guidKey(descriptor.guid),\n sourceIndex,\n sourceKey,\n kind: descriptor.kind,\n ...(descriptor.name === undefined ? {} : { name: descriptor.name }),\n }));\n const externalAssets = Object.entries(definition.externalAssets)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([alias, guid]) => ({ alias, guid: guidKey(guid) }));\n return {\n schemaVersion: '1.0.0',\n kind: 'external-asset-package',\n packageId: guidKey(definition.packageId),\n ...(definition.name === undefined ? {} : { name: definition.name }),\n importer: 'pack-ts',\n source,\n importSettings: { contractVersion: '1.0.0', externalAssets },\n subAssets,\n };\n}\n","import type {\n AssetAuthoringCapability,\n AssetPublicationEnvelope,\n AssetRelation,\n CatalogDiagnostic,\n CatalogEntryV2,\n CatalogLifecycle,\n CatalogSubject,\n CookExecution,\n PackIndexEntry,\n ProducerContractDiagnostic,\n ProducerContractResult,\n ProviderProvenance,\n ResourceRevision,\n SourceOverrideDescriptor,\n} from '@forgeax/engine-types';\nimport { authoringCapabilityForAssetKind, catalogOperationsFor } from '@forgeax/engine-types';\nimport { isScriptablePackAssetKind } from './scriptable-pack.js';\n\nexport function catalogProjectionFor(\n subject: 'internal-asset' | 'imported-output',\n execution: 'direct' | 'cooked',\n lifecycle: 'missing' | 'cooking' | 'current' | 'stale' | 'failed',\n) {\n return {\n subject,\n execution,\n lifecycle,\n operations: catalogOperationsFor({ subject, execution, lifecycle }),\n } as const;\n}\n\nexport function currentProjectionFor(\n subject: 'internal-asset' | 'imported-output',\n execution: 'direct' | 'cooked',\n) {\n return catalogRowProjectionFor(subject, execution, 'current');\n}\n\nfunction catalogRowProjectionFor(\n subject: 'internal-asset' | 'imported-output',\n execution: 'direct' | 'cooked',\n lifecycle: 'missing' | 'cooking' | 'current' | 'stale' | 'failed',\n) {\n const projection = catalogProjectionFor(subject, execution, lifecycle);\n return { ...projection, projection } as const;\n}\n\nexport interface CatalogProducerMeta {\n readonly schemaVersion: string | number;\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly provider?: string;\n readonly importer?: string;\n readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];\n}\n\nexport interface CatalogOutputDeclaration {\n readonly guid: string;\n readonly kind: string;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly relations?: PackIndexEntry['relations'];\n readonly authoring?: AssetAuthoringCapability;\n readonly refs?: readonly string[];\n readonly name?: string;\n}\n\nfunction referenceRelations(\n guid: string,\n refs: readonly string[] | undefined,\n provenance: ProviderProvenance,\n): readonly AssetRelation[] | undefined {\n if (refs === undefined || refs.length === 0) return undefined;\n return refs.map((ref) => ({\n from: { type: 'asset', id: guid } as const,\n to: { type: 'asset', id: ref } as const,\n type: 'references' as const,\n policy: { strength: 'required' as const },\n provenance,\n }));\n}\n\nfunction producerFields(\n producer: CatalogProducerMeta,\n output: CatalogOutputDeclaration,\n): Pick<\n PackIndexEntry,\n | 'packageId'\n | 'provenance'\n | 'revision'\n | 'sourceKey'\n | 'sourceIndex'\n | 'sourceOverrides'\n | 'sourceOverrideDescriptors'\n | 'relations'\n | 'diagnostics'\n | 'subject'\n | 'execution'\n | 'lifecycle'\n | 'projection'\n | 'authoring'\n> {\n const provenance =\n producer.provenance ??\n ({\n provider: producer.provider ?? producer.importer ?? 'engine',\n version: String(producer.schemaVersion),\n } satisfies ProviderProvenance);\n const relations = output.relations ?? referenceRelations(output.guid, output.refs, provenance);\n const inferred = authoringCapabilityForAssetKind(output.kind);\n return {\n provenance,\n ...(producer.packageId === undefined ? {} : { packageId: producer.packageId }),\n ...(producer.revision === undefined ? {} : { revision: producer.revision }),\n ...(output.sourceKey === undefined ? {} : { sourceKey: output.sourceKey }),\n ...(output.sourceIndex === undefined ? {} : { sourceIndex: output.sourceIndex }),\n ...(producer.sourceOverrides === undefined\n ? {}\n : { sourceOverrides: producer.sourceOverrides }),\n ...(producer.sourceOverrideDescriptors === undefined || output.sourceKey === undefined\n ? {}\n : {\n sourceOverrideDescriptors: producer.sourceOverrideDescriptors.filter(\n (descriptor) => descriptor.sourceKey === output.sourceKey,\n ),\n }),\n ...(relations === undefined ? {} : { relations }),\n ...(producer.diagnostics === undefined ? {} : { diagnostics: producer.diagnostics }),\n ...(output.authoring === undefined && inferred.ui === undefined\n ? {}\n : { authoring: output.authoring ?? inferred }),\n ...catalogRowProjectionFor('imported-output', 'cooked', 'missing'),\n };\n}\n\n/** Project producer declarations without interpreting a provider's kind vocabulary. */\nexport function projectExternalCatalogEntries(\n producer: CatalogProducerMeta,\n sourcePath: string,\n packageUrl: string,\n outputs: readonly CatalogOutputDeclaration[],\n nameFor?: (output: CatalogOutputDeclaration, index: number) => string | undefined,\n): PackIndexEntry[] {\n return outputs.map((output, index) => ({\n guid: output.guid,\n packageUrl,\n kind: output.kind,\n sourcePath,\n ...producerFields(producer, output),\n ...((nameFor?.(output, index) ?? output.name) === undefined\n ? {}\n : { name: nameFor?.(output, index) ?? output.name }),\n }));\n}\n\n/** Return the first declaration that would shadow an engine-owned Pack kind. */\nexport function findReservedAssetKindConflict(\n outputs: readonly Pick<CatalogOutputDeclaration, 'kind'>[],\n): Pick<CatalogOutputDeclaration, 'kind'> | undefined {\n return outputs.find((output) => isScriptablePackAssetKind(output.kind));\n}\n\nexport interface PackageCatalogInput {\n readonly guid: string;\n readonly kind: string;\n readonly sourcePath: string;\n readonly name?: string;\n readonly refs?: readonly string[];\n readonly authoring?: AssetAuthoringCapability;\n readonly execution?: 'direct' | 'cooked';\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];\n readonly relations?: PackIndexEntry['relations'];\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly cookReceiptUrl?: string;\n}\n\n/** Project self-contained Pack rows into the same Catalog contract as producer output. */\nexport function projectPackageCatalog(\n entries: readonly PackageCatalogInput[],\n packageUrl: string,\n): PackIndexEntry[] {\n return entries.map((entry) => {\n const execution = entry.execution ?? 'direct';\n const lifecycle = execution === 'cooked' ? 'missing' : 'current';\n const inferred = authoringCapabilityForAssetKind(entry.kind);\n const provenance =\n entry.provenance ?? ({ provider: 'pack', version: 'unknown' } satisfies ProviderProvenance);\n const relations = entry.relations ?? referenceRelations(entry.guid, entry.refs, provenance);\n return {\n guid: entry.guid,\n kind: entry.kind,\n sourcePath: entry.sourcePath,\n packageUrl,\n ...(entry.name === undefined ? {} : { name: entry.name }),\n ...(entry.refs === undefined ? {} : { refs: entry.refs }),\n ...(entry.packageId === undefined ? {} : { packageId: entry.packageId }),\n ...(entry.provenance === undefined ? {} : { provenance: entry.provenance }),\n ...(entry.revision === undefined ? {} : { revision: entry.revision }),\n ...(entry.sourceKey === undefined ? {} : { sourceKey: entry.sourceKey }),\n ...(entry.sourceIndex === undefined ? {} : { sourceIndex: entry.sourceIndex }),\n ...(entry.sourceOverrides === undefined ? {} : { sourceOverrides: entry.sourceOverrides }),\n ...(entry.sourceOverrideDescriptors === undefined\n ? {}\n : { sourceOverrideDescriptors: entry.sourceOverrideDescriptors }),\n ...(relations === undefined ? {} : { relations }),\n ...(entry.diagnostics === undefined ? {} : { diagnostics: entry.diagnostics }),\n ...(entry.cookReceiptUrl === undefined ? {} : { cookReceiptUrl: entry.cookReceiptUrl }),\n ...(entry.authoring === undefined && inferred.ui === undefined\n ? {}\n : { authoring: entry.authoring ?? inferred }),\n ...catalogRowProjectionFor('internal-asset', execution, lifecycle),\n };\n });\n}\n\nexport interface CookedPackageProjection {\n readonly packageUrl: string;\n readonly revision: ResourceRevision;\n readonly refs: readonly string[];\n readonly cookReceiptUrl?: string;\n readonly publication?: AssetPublicationEnvelope;\n}\n\n/** Project one complete cooked package; navigation facts stay in the Pack owner. */\nexport function projectCookedPackageEntry(\n entry: PackIndexEntry,\n projection: CookedPackageProjection,\n): PackIndexEntry {\n return {\n ...entry,\n ...(projection.publication === undefined\n ? {}\n : { sourcePath: projection.publication.sourcePath }),\n packageUrl: projection.packageUrl,\n ...(projection.cookReceiptUrl === undefined\n ? {}\n : { cookReceiptUrl: projection.cookReceiptUrl }),\n revision: projection.revision,\n ...(projection.publication === undefined ? {} : { publication: projection.publication }),\n ...currentProjectionFor('imported-output', 'cooked'),\n refs: projection.refs,\n };\n}\n\nexport interface RuntimeCatalogRowInput {\n readonly scopeId: string;\n readonly generation: number;\n readonly digest: string;\n readonly outputSetDigest: string;\n readonly guid: string;\n readonly kind: string;\n readonly packageUrl: string;\n readonly sourcePath?: string;\n readonly subject?: CatalogSubject;\n readonly execution?: CookExecution;\n readonly lifecycle?: CatalogLifecycle;\n readonly publication?: unknown;\n}\n\nfunction runtimeCatalogRowError(\n subjectId: string,\n expected: string,\n): ProducerContractResult<never> {\n const diagnostic: ProducerContractDiagnostic = {\n code: 'invalid-producer-fact',\n subject: { type: 'asset', id: subjectId },\n expected,\n hint: 'recook the source and publish one current runtime Catalog row',\n authority: 'producer',\n };\n return { ok: false, error: diagnostic };\n}\n\nfunction projectRuntimeCatalogRowValue(\n input: RuntimeCatalogRowInput,\n): ProducerContractResult<CatalogEntryV2> {\n if (\n input.publication !== undefined ||\n input.guid.length === 0 ||\n input.kind.length === 0 ||\n input.packageUrl.length === 0 ||\n input.scopeId.length === 0 ||\n !Number.isInteger(input.generation) ||\n input.generation < 1 ||\n input.digest.length === 0 ||\n input.outputSetDigest.length === 0\n ) {\n return runtimeCatalogRowError(\n input.guid,\n 'one flat publication tuple and no legacy publication object',\n );\n }\n\n const subject = input.subject ?? 'imported-output';\n const execution = input.execution ?? 'cooked';\n const lifecycle = input.lifecycle ?? 'current';\n return {\n ok: true,\n value: {\n scopeId: input.scopeId,\n generation: input.generation,\n digest: input.digest,\n outputSetDigest: input.outputSetDigest,\n guid: input.guid,\n kind: input.kind,\n packageUrl: input.packageUrl,\n sourcePath: input.sourcePath ?? input.packageUrl,\n subject,\n execution,\n lifecycle,\n projection: {\n subject,\n execution,\n lifecycle,\n operations: catalogOperationsFor({ subject, execution, lifecycle }),\n },\n },\n };\n}\n\n/** Project one row; an array is accepted only to fail closed on double rows. */\nexport function projectRuntimeCatalogRow(\n input: RuntimeCatalogRowInput | readonly RuntimeCatalogRowInput[],\n): ProducerContractResult<CatalogEntryV2> {\n if (Array.isArray(input)) {\n if (input.length !== 1) {\n return runtimeCatalogRowError(input[0]?.guid ?? 'unknown', 'exactly one runtime row');\n }\n const [row] = input;\n if (row === undefined) return runtimeCatalogRowError('unknown', 'exactly one runtime row');\n return projectRuntimeCatalogRowValue(row);\n }\n return projectRuntimeCatalogRowValue(input as RuntimeCatalogRowInput);\n}\n","import { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport interface LoadAssetConfigResult {\n readonly roots: readonly string[];\n readonly paths: Record<string, string>;\n}\n\nexport function loadAssetConfig(cwd: string): LoadAssetConfigResult {\n let pkg: { forgeax?: { assets?: { roots?: unknown; paths?: unknown } } };\n try {\n pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf-8'));\n } catch {\n return { roots: [join(cwd, 'assets')], paths: {} };\n }\n\n const assets = pkg.forgeax?.assets;\n\n const rawRoots = assets?.roots;\n const roots: readonly string[] =\n Array.isArray(rawRoots) && rawRoots.length > 0\n ? (rawRoots as string[]).map((r) => join(cwd, r))\n : [join(cwd, 'assets')];\n\n const rawPaths = assets?.paths;\n const paths: Record<string, string> = {};\n if (rawPaths !== undefined && rawPaths !== null && typeof rawPaths === 'object') {\n for (const [name, dir] of Object.entries(rawPaths as Record<string, unknown>)) {\n if (typeof dir === 'string') {\n paths[name] = join(cwd, dir);\n }\n }\n }\n\n return { roots, paths };\n}\n","/**\n * Last path segment of a `/`- or `\\`-separated path, trailing separators\n * stripped. Inlined rather than imported from `node:path` so this module stays\n * browser-safe: the dev-server pack path (`vite-plugin-pack` `/__pack/`) runs\n * `buildCatalog` -> `deriveAssetName` in client code where `node:path` is\n * externalized and `path.basename` throws.\n */\nfunction baseName(p: string): string {\n const trimmed = p.replace(/[/\\\\]+$/, '');\n const idx = Math.max(trimmed.lastIndexOf('/'), trimmed.lastIndexOf('\\\\'));\n return idx === -1 ? trimmed : trimmed.slice(idx + 1);\n}\n\n/**\n * Derive an asset's display name from package metadata.\n *\n * Pure function -- zero IO, zero side effects, browser-safe. Build-time\n * (build-catalog) and runtime (resolveName) share this single source of truth\n * for the XOR name-resolution rules (plan-strategy D-6).\n *\n * Branches:\n * 1. single-asset package (assetCount === 1) -> baseName(packagePath)\n * 2. multi-asset package + storedName -> storedName\n * 3. multi-asset package + no storedName (AC-15.1) -> baseName(packagePath)\n * 4. null packagePath + no storedName (AC-15.2) -> ''\n */\nexport function deriveAssetName(\n packagePath: string | null,\n assetCount: number,\n storedName?: string,\n): string {\n if (packagePath === null) {\n return storedName ?? '';\n }\n if (assetCount === 1) {\n return baseName(packagePath);\n }\n if (storedName !== undefined) {\n return storedName;\n }\n return baseName(packagePath);\n}\n","import { dirname, posix, resolve } from 'node:path';\nimport type { Result } from '@forgeax/engine-types';\nimport { PACK_ERROR_HINTS, err as resultErr, ok as resultOk } from '@forgeax/engine-types';\nimport { deriveAssetName } from './deriveAssetName.js';\nimport { PackError } from './errors.js';\n\nfunction deriveSourceName(metaFileName: string): string {\n return metaFileName.replace(/\\.meta\\.json$/, '');\n}\n\nconst PATH_REF_RE = /^@([^/]+)\\/(.+)$/;\n\nfunction isPathEscape(pathDir: string, resolved: string): boolean {\n const rel = posix.relative(pathDir, resolved);\n return rel.startsWith('..') || posix.isAbsolute(rel);\n}\n\nexport function resolveAssetSource(\n metaPath: string,\n source: string | undefined,\n paths: Record<string, string>,\n): Result<string, PackError> {\n if (source === undefined) {\n const metaDir = dirname(metaPath);\n const metaName = deriveAssetName(metaPath, 1);\n const derived = deriveSourceName(metaName);\n return resultOk(resolve(metaDir, derived));\n }\n\n if (source.startsWith('@')) {\n const match = source.match(PATH_REF_RE);\n if (!match) {\n return resultErr(\n new PackError({\n code: 'pack-malformed-path-ref',\n expected: 'source in format @<name>/<rest>',\n hint: PACK_ERROR_HINTS['pack-malformed-path-ref'],\n detail: {\n code: 'pack-malformed-path-ref',\n reason: 'format',\n rawSource: source,\n expectedFormat: '@<name>/<rest>',\n },\n }),\n );\n }\n\n const [, name, rest] = match as [string, string, string];\n const pathDir = paths[name];\n\n if (pathDir === undefined) {\n return resultErr(\n new PackError({\n code: 'pack-unknown-path',\n expected: 'path name found in package.json#forgeax.assets.paths',\n hint: PACK_ERROR_HINTS['pack-unknown-path'],\n detail: {\n code: 'pack-unknown-path',\n pathName: name,\n knownNames: Object.keys(paths),\n },\n }),\n );\n }\n\n const resolved = resolve(pathDir, rest);\n\n if (isPathEscape(pathDir, resolved)) {\n return resultErr(\n new PackError({\n code: 'pack-malformed-path-ref',\n expected: 'rest path must not escape the declared path directory',\n hint: PACK_ERROR_HINTS['pack-malformed-path-ref'],\n detail: {\n code: 'pack-malformed-path-ref',\n reason: 'escape',\n rawSource: source,\n expectedFormat: '@<name>/<rest>',\n },\n }),\n );\n }\n\n return resultOk(resolved);\n }\n\n return resultOk(resolve(dirname(metaPath), source));\n}\n","import type {\n AssetSubjectRef,\n ImportedOutputDeclaration,\n ProducerContractDiagnostic,\n ProducerContractResult,\n SourceOverrideMap,\n} from '@forgeax/engine-types';\nimport { validateSourceOverrideMap } from '@forgeax/engine-types';\n\ntype ProducerObject = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is ProducerObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction hasText(value: unknown): value is string {\n return typeof value === 'string' && value.length > 0;\n}\n\nfunction issue(\n code: ProducerContractDiagnostic['code'],\n subjectId: string,\n expected: string,\n hint: string,\n actual?: string,\n authority: 'producer' | 'pack' = 'producer',\n): ProducerContractResult<never> {\n const subject: AssetSubjectRef = { type: 'asset', id: subjectId };\n return {\n ok: false,\n error: {\n code,\n subject,\n expected,\n ...(actual === undefined ? {} : { actual }),\n hint,\n authority,\n },\n };\n}\n\nfunction validateFacts(\n value: ProducerObject,\n subjectId: string,\n): ProducerContractResult<ProducerObject> {\n if ('packageId' in value && !hasText(value.packageId)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'packageId must be a non-empty string',\n 'publish a stable package identity',\n );\n }\n if ('provenance' in value) {\n const provenance = value.provenance;\n if (!isRecord(provenance) || !hasText(provenance.provider) || !hasText(provenance.version)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'provenance.provider and provenance.version must be non-empty',\n 'publish provider identity and version',\n );\n }\n }\n if ('revision' in value) {\n const revision = value.revision;\n if (\n !isRecord(revision) ||\n !hasText(revision.digest) ||\n !hasText(revision.rootId) ||\n typeof revision.observedAt !== 'number' ||\n !Number.isFinite(revision.observedAt)\n ) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'revision.digest, revision.rootId and finite revision.observedAt',\n 'publish a complete resource revision',\n );\n }\n }\n if ('diagnostics' in value) {\n if (!Array.isArray(value.diagnostics)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'diagnostics must be an array',\n 'publish structured diagnostics as an array',\n );\n }\n for (const diagnostic of value.diagnostics) {\n if (!isRecord(diagnostic) || !hasText(diagnostic.code)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'each diagnostic needs a stable code',\n 'publish a machine-readable diagnostic code',\n );\n }\n if (diagnostic.severity === 'blocking') {\n if (!isRecord(diagnostic.subject) || !hasText(diagnostic.subject.id)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'blocking diagnostic.subject must identify an object',\n 'set subject.type and subject.id',\n );\n }\n if (!hasText(diagnostic.expected) || !hasText(diagnostic.hint)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'blocking diagnostics need expected and hint',\n 'provide an executable recovery hint',\n );\n }\n }\n }\n }\n return { ok: true, value };\n}\n\nfunction validateMetaSourceOverrides(\n value: ProducerObject,\n subjectId: string,\n): ProducerContractResult<ProducerObject> {\n if (!('sourceOverrides' in value)) return { ok: true, value };\n const declaredSourceKeys = Array.isArray(value.subAssets)\n ? value.subAssets.flatMap((subAsset) =>\n isRecord(subAsset) && hasText(subAsset.sourceKey) ? [subAsset.sourceKey] : [],\n )\n : [];\n const result = validateSourceOverrideMap(value.sourceOverrides, declaredSourceKeys);\n if (!result.ok) {\n return issue(\n result.error.code,\n subjectId,\n result.error.expected,\n result.error.hint,\n result.error.actual,\n 'pack',\n );\n }\n return {\n ok: true,\n value: { ...value, sourceOverrides: result.value as SourceOverrideMap | undefined },\n };\n}\n\n/**\n * Validate one package or imported-output producer declaration.\n *\n * The accepted fields mirror the engine-types POD contract. This function\n * validates that schema without creating a second schema or interpreting\n * diagnostic messages.\n */\nexport function validateProducerContract(value: unknown): ProducerContractResult<ProducerObject> {\n if (!isRecord(value)) {\n return issue(\n 'invalid-producer-fact',\n 'unknown',\n 'producer declaration must be an object',\n 'publish a JSON object',\n );\n }\n\n const subjectId = hasText(value.guid)\n ? value.guid\n : hasText(value.packageId)\n ? value.packageId\n : 'unknown';\n const facts = validateFacts(value, subjectId);\n if (!facts.ok) return facts;\n\n const metaOverrides = validateMetaSourceOverrides(value, subjectId);\n if (!metaOverrides.ok) return metaOverrides;\n\n if ('kind' in value && !hasText(value.kind)) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'kind must be a non-empty open string',\n 'publish the provider-owned asset kind',\n );\n }\n if ('execution' in value && value.execution !== 'direct' && value.execution !== 'cooked') {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'execution must be either direct or cooked',\n 'publish the explicit authoring execution mode',\n );\n }\n const hasOutputIdentity = 'kind' in value || 'sourceIndex' in value || 'sourceKey' in value;\n if (!hasOutputIdentity) return facts;\n if (value.sourceKey !== undefined && !hasText(value.sourceKey)) {\n return issue(\n 'invalid-source-key',\n subjectId,\n 'sourceKey must be a non-empty producer-owned string',\n 'publish a stable semantic sourceKey',\n );\n }\n if (\n value.sourceIndex !== undefined &&\n (typeof value.sourceIndex !== 'number' ||\n !Number.isInteger(value.sourceIndex) ||\n value.sourceIndex < 0)\n ) {\n return issue(\n 'invalid-source-index',\n subjectId,\n 'sourceIndex must be a non-negative integer locator',\n 'publish a non-negative sourceIndex without using it as identity',\n );\n }\n if (value.sourceKey === undefined && value.sourceIndex !== undefined) {\n return issue(\n 'missing-source-key',\n subjectId,\n 'sourceKey is required when an output declares sourceIndex',\n 'publish a stable semantic key; do not derive identity from sourceIndex',\n );\n }\n if (\n 'compatiblePreviousKinds' in value &&\n (!Array.isArray(value.compatiblePreviousKinds) ||\n value.compatiblePreviousKinds.some((kind) => !hasText(kind)))\n ) {\n return issue(\n 'invalid-producer-fact',\n subjectId,\n 'compatiblePreviousKinds must be an array of non-empty kind strings',\n 'declare only producer-verified prior kinds that may preserve the GUID',\n );\n }\n return metaOverrides;\n}\n\n/**\n * Validate output topology without ever treating `sourceIndex` as identity.\n *\n * AI-readable callers should use the discriminated result and its structured\n * `code`, `expected`, `actual`, and `hint` fields for recovery decisions.\n */\nexport function validateProducerOutputs(\n outputs: readonly ImportedOutputDeclaration[],\n): ProducerContractResult<readonly ImportedOutputDeclaration[]> {\n const missingKey = outputs.find((output) => output.sourceKey === undefined);\n if (missingKey !== undefined) {\n return issue(\n outputs.length > 1 ? 'source-index-ambiguous' : 'missing-source-key',\n missingKey.guid,\n 'every output declaration needs a stable sourceKey',\n 'add sourceKey to each output before matching topology',\n );\n }\n const keys = new Map<string, ImportedOutputDeclaration>();\n for (const output of outputs) {\n const result = validateProducerContract(output);\n if (!result.ok) return result;\n const sourceKey = output.sourceKey;\n if (sourceKey === undefined) continue;\n const prior = keys.get(sourceKey);\n if (prior !== undefined) {\n return issue(\n 'duplicate-source-key',\n output.guid,\n 'sourceKey values must be unique within one producer package',\n 'rename the duplicate semantic output key',\n sourceKey,\n );\n }\n keys.set(sourceKey, output);\n }\n return { ok: true, value: outputs };\n}\n","import type { PackV2 } from '@forgeax/engine-types';\nimport Ajv, { type ValidateFunction } from 'ajv';\nimport addFormats from 'ajv-formats';\nimport metaSchemaJson from '../schema/meta.schema.json' with { type: 'json' };\nimport packSchemaJson from '../schema/pack.schema.json' with { type: 'json' };\n\nconst ajv = new Ajv({ strict: true, allErrors: false });\naddFormats(ajv, ['uuid']);\n\n// Module-top-level compiled validators - compiled once on import, never recreated.\nexport const validateMeta = ajv.compile(metaSchemaJson);\nexport const validatePack = ajv.compile(packSchemaJson);\n\nexport function validatePackV2(value: unknown): value is PackV2 {\n if (!validatePack(value) || !isPackV2Shape(value)) return false;\n\n const seenGuids = new Set<string>();\n for (const asset of value.assets) {\n if (seenGuids.has(asset.guid)) return false;\n seenGuids.add(asset.guid);\n }\n return true;\n}\n\nfunction isPackV2Shape(value: unknown): value is PackV2 {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'schemaVersion' in value &&\n value.schemaVersion === '2.0.0'\n );\n}\n\n// === SceneAsset payload validator factory (feat-20260514 w5 / D-P4) =============\n//\n// Decision anchors:\n// - plan-strategy §D-P4 (per-component additionalProperties:false, path a;\n// path b \"extend PackErrorDetail\" rejected to keep the 8-member\n// PackErrorCode closed union frozen)\n// - requirements §AC-08(b) (typo field name fail-fast through ajv with the\n// verbatim 'additional properties' message wording)\n// - requirements §AC-10 (no new SceneErrorCode / PackErrorCode introduced)\n//\n// `buildSceneAssetValidator(componentSchemas)` returns a fresh ajv\n// `ValidateFunction` whose JSON Schema sub-tree describes:\n// {\n// kind: 'scene',\n// nodes: SceneEntity[]\n// }\n// where each SceneEntity has the closed shape\n// { localId: integer, components: <closed map keyed by registered tokens> }\n// and the per-component sub-schema is composed verbatim from the caller's\n// `componentSchemas[name]` entry. `additionalProperties: false` is applied\n// at three layers: top-level SceneAsset, SceneEntity, and SceneEntity.components,\n// so ajv emits an `additional properties` ajvError on any typo or unknown\n// component token (AC-08(b)).\n//\n// The runtime layer feeds `componentSchemas` from the live `defineComponent`\n// registry; this factory itself stays ECS-free (charter proposition 5\n// consistent abstraction: pack package is layered below ecs and runtime,\n// the per-component schemas arrive as plain ajv-compatible JSON Schema\n// objects).\nexport function buildSceneAssetValidator(\n componentSchemas: Readonly<Record<string, object>>,\n): ValidateFunction {\n // Use a separate ajv instance so the dynamically registered closed map of\n // component sub-schemas does not pollute the module-top-level validators\n // above (they may be re-built across test fixtures with different\n // component sets).\n const localAjv = new Ajv({ strict: true, allErrors: false });\n addFormats(localAjv, ['uuid']);\n\n const componentsProperties: Record<string, object> = {};\n for (const [name, sub] of Object.entries(componentSchemas)) {\n componentsProperties[name] = sub;\n }\n\n // MountOverride schema (feat-20260608-scene-nesting-ecs-fication M1 / w11;\n // feat-20260713-mount-override-component-add-and-shared-ref-round M1 / w3;\n // requirements §S-10 / AC-03): validates each entry in mounts[].overrides[].\n // `field` is optional — it is a component-granular add-or-patch discriminant\n // (present -> patch one field with `value`; absent -> add/upsert the whole\n // `comp` with `value` as its per-field map). `localId` / `comp` / `value`\n // stay required; `additionalProperties: false` rejects any `op`-tag\n // discriminant so downstream consumers never branch on it. Field-level type\n // validation (matching the schema vocab) is enforced at runtime via\n // setSceneOverride (D-9 / EcsErrorCode 'scene-override-type-mismatch').\n const mountOverrideSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['localId', 'comp', 'value'],\n properties: {\n localId: { type: 'integer', minimum: 0 },\n comp: { type: 'string', minLength: 1 },\n field: { type: 'string', minLength: 1 },\n value: {},\n },\n };\n\n // SceneInstanceMount schema (feat-20260608-scene-nesting-ecs-fication\n // M1 / w11; requirements §S-10): validates each mounts[] entry. parent /\n // components / overrides are optional; cross-mount window collision and\n // mount.source / mount.memberCount agreement with referenced child\n // SceneAsset are checked at the build-time scanner (D-1, w14), not here.\n const mountSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['localId', 'source', 'memberFirst', 'memberCount'],\n properties: {\n localId: { type: 'integer', minimum: 0 },\n source: { type: 'integer', minimum: 0 },\n memberFirst: { type: 'integer', minimum: 0 },\n memberCount: { type: 'integer', minimum: 0 },\n parent: { type: 'integer', minimum: 0 },\n components: {\n type: 'object',\n additionalProperties: false,\n properties: componentsProperties,\n },\n overrides: {\n type: 'array',\n items: mountOverrideSchema,\n },\n publicationFence: {\n type: 'object',\n additionalProperties: false,\n required: [\n 'schemaVersion',\n 'sourcePath',\n 'sourceRevision',\n 'publicationGeneration',\n 'outputDigest',\n 'outputSetDigest',\n 'receiptIdentity',\n ],\n properties: {\n schemaVersion: { type: 'string', const: 'scene-publication-fence/1' },\n sourcePath: { type: 'string', minLength: 1 },\n sourceRevision: { type: 'string', minLength: 1 },\n publicationGeneration: { type: 'integer', minimum: 1 },\n outputDigest: { type: 'string', minLength: 1 },\n outputSetDigest: { type: 'string', minLength: 1 },\n receiptIdentity: { type: 'string', minLength: 1 },\n },\n },\n },\n };\n\n const sceneSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['kind', 'entities'],\n properties: {\n kind: { type: 'string', const: 'scene' },\n entities: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: false,\n required: ['localId', 'components'],\n properties: {\n localId: { type: 'integer', minimum: 0 },\n components: {\n type: 'object',\n additionalProperties: false,\n properties: componentsProperties,\n },\n },\n },\n },\n // Optional top-level mounts[] (feat-20260608-scene-nesting-ecs-fication\n // M1 / w11). Missing mounts is semantically equivalent to mounts: []\n // (plan-strategy §6.3 back-compat); ajv default produces the empty\n // array on absent input.\n mounts: {\n type: 'array',\n items: mountSchema,\n },\n },\n };\n\n return localAjv.compile(sceneSchema);\n}\n\n// === MaterialAsset payload validator factory (feat-20260523-shader-template-instance-split M1-T06) ===\n//\n// Decision anchors:\n// - plan-strategy D-PackKind (factory pattern, same shape as buildSceneAssetValidator)\n// - plan-strategy D-ParamTypeWhitelist (paramTypeWhitelist consumed here)\n// - requirements AC-04 (v1 type set SSOT; validator covers all param type boundaries)\n//\n// `buildMaterialAssetValidator(paramTypeWhitelist)` returns an ajv\n// `ValidateFunction` that validates:\n// {\n// materialShader: string,\n// paramSchema: ParamSchemaEntry[],\n// values: object\n// }\n// Each ParamSchemaEntry.type must be in the whitelist (D-ParamTypeWhitelist).\n// `additionalProperties: false` at top level so ajv rejects unknown fields.\n// values is free-form (object) — the runtime layer does deeper validation.\n//\n// Uses a separate ajv instance per call so different whitelists across\n// test fixtures do not pollute the module-top-level validators.\nexport function buildMaterialAssetValidator(\n paramTypeWhitelist: ReadonlySet<string>,\n): ValidateFunction {\n const localAjv = new Ajv({ strict: true, allErrors: false });\n\n const whitelistEnum = Array.from(paramTypeWhitelist);\n\n const paramSchemaEntry = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type'],\n properties: {\n name: { type: 'string', minLength: 1 },\n type: { type: 'string', enum: whitelistEnum },\n default: {},\n },\n };\n\n const materialSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['materialShader', 'paramSchema', 'values'],\n properties: {\n materialShader: { type: 'string', minLength: 1 },\n paramSchema: {\n type: 'array',\n items: paramSchemaEntry,\n },\n values: { type: 'object' },\n },\n };\n\n return localAjv.compile(materialSchema);\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://github.com/ForgeaXGame/forgeax-engine/packages/pack/schema/meta.schema.json\",\n \"title\": \"ExternalAssetPackage\",\n \"description\": \"Schema for .meta.json files describing an external asset package (source file + import settings + derived sub-assets).\",\n \"$comment\": \"ScriptablePack durable consumer kinds are published by SCRIPTABLE_PACK_ASSET_KINDS in @forgeax/engine-pack/source; Meta sub-asset kind remains open for producer extensions.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schemaVersion\", \"kind\", \"importer\", \"importSettings\", \"subAssets\"],\n \"properties\": {\n \"schemaVersion\": {\n \"oneOf\": [{ \"type\": \"string\" }, { \"type\": \"integer\" }],\n \"description\": \"Schema version. Strings (e.g. '1.0.0') for hand-authored .meta.json; integers (1, 2, ...) for importer-emitted .meta.json (forgeax-engine-remote-asset import writes schemaVersion: 1 as the wire format SSOT, GltfMetaJson literal type).\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"external-asset-package\",\n \"description\": \"Discriminator for the external asset package type.\"\n },\n \"packageId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable producer-owned package identity. It survives package moves; path is only a locator.\"\n },\n \"provenance\": {\n \"$ref\": \"#/$defs/provenance\"\n },\n \"revision\": {\n \"$ref\": \"#/$defs/revision\"\n },\n \"diagnostics\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/diagnostic\" }\n },\n \"importer\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Open importer key (feat-20260603-asset-import-loader-injection M2): the @forgeax/engine-import runner dispatches the sidecar to the Importer registered under this key. Replaces the former closed `assetType` enum (one-cut migration, no shim). Known keys: 'image' (engine-image importer, single-image source), 'gltf' (engine-gltf importer, .gltf/.glb source), 'audio' (engine-audio-webaudio import path), 'font' (engine-font bake path), and the reserved 'shader' key consumed by engine-vite-plugin-shader's orthogonal transform pipeline (the import runner explicitly skips it). Adding a new importer needs only a registered Importer under a new key - no schema enum edit. Orthogonal to subAssets[].kind which identifies per-sub-asset payload kind.\"\n },\n \"source\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Optional. Omit to derive the companion file in the same directory (strip .meta.json suffix from the meta filename). Or write @<name>/<rest> to reference a declared path table entry (see package.json#forgeax.assets.paths). Existing relative paths remain unchanged.\"\n },\n \"importSettings\": {\n \"type\": \"object\",\n \"description\": \"Importer-specific settings. Free-form object. Common texture keys: compressionMode ('auto' | 'etc1s' | 'uastc' | 'none', default 'auto'; see @forgeax/engine-image README), mipmap (boolean, bake mip chain offline).\"\n },\n \"sourceOverrides\": {\n \"type\": \"object\",\n \"description\": \"Optional producer-owned Meta author facts keyed by declared subAssets[].sourceKey. An empty object is legacy-equivalent and omitted by canonical writers.\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"description\": \"Producer-owned payload; the pack schema validates object shape and the producer contract validates sourceKey identity.\",\n \"additionalProperties\": true\n }\n },\n \"sourceOverrideDescriptors\": {\n \"type\": \"array\",\n \"description\": \"Producer-declared authoring contracts for stable source override keys.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"sourceKey\", \"payloadSchema\"],\n \"properties\": {\n \"sourceKey\": { \"type\": \"string\", \"minLength\": 1 },\n \"semantic\": { \"type\": \"string\", \"enum\": [\"mesh-material-slot-defaults\"] },\n \"payloadSchema\": { \"type\": \"object\" }\n }\n }\n },\n \"paramSchema\": {\n \"type\": \"array\",\n \"description\": \"Material-shader parameter schema (feat-20260528-material-shader-registration-unification). Only valid when importer is 'shader'. Each entry has name (string) and type (string) with an optional default.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\", \"type\"],\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"type\": { \"type\": \"string\" },\n \"default\": {}\n }\n }\n },\n \"subAssets\": {\n \"type\": \"array\",\n \"description\": \"Derived sub-assets extracted from the source file.\",\n \"items\": {\n \"$ref\": \"#/$defs/subAsset\"\n }\n }\n },\n \"$defs\": {\n \"subAsset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"guid\", \"sourceIndex\", \"kind\"],\n \"properties\": {\n \"guid\": {\n \"type\": \"string\",\n \"format\": \"uuid\",\n \"description\": \"RFC 4122 36-char dash-form UUID identifying this sub-asset.\"\n },\n \"sourceIndex\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Zero-based index into the source file's exported objects.\"\n },\n \"sourceKey\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Producer-owned stable key used to match this output across reimport topology changes.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Optional display-friendly name for this sub-asset. Copied from the source (e.g. glTF image.name / mesh.name) so the sidecar is human-inspectable. Has no runtime semantic weight.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Open sub-asset kind string (feat-20260629-importer-self-declared-fold-contract M3 / D-1 scheme A): the prior closed enum is removed — any non-empty string is accepted at the schema layer. Known engine-owned kinds: mesh, material, scene, texture, equirect, material-shader, skeleton, skin, animation-clip, audio, font. Host-defined importers declare their own kind values (e.g. 'reel-game-blob') and the schema layer admits them without modification. Validation of unknown kinds is deferred to the fold/import layer where the ImporterRegistry is available. The field itself (subAssets[].kind) is retained (OOS-2: no field deletion, only enum removal).\"\n }\n }\n },\n \"provenance\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"provider\", \"version\"],\n \"properties\": {\n \"provider\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 },\n \"source\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"revision\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"digest\", \"observedAt\", \"rootId\"],\n \"properties\": {\n \"digest\": { \"type\": \"string\", \"minLength\": 1 },\n \"observedAt\": { \"type\": \"number\" },\n \"rootId\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"diagnostic\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"code\", \"severity\"],\n \"properties\": {\n \"code\": { \"type\": \"string\", \"minLength\": 1 },\n \"severity\": { \"type\": \"string\", \"enum\": [\"info\", \"warning\", \"blocking\"] },\n \"message\": { \"type\": \"string\" },\n \"subject\": { \"$ref\": \"#/$defs/subject\" },\n \"expected\": { \"type\": \"string\", \"minLength\": 1 },\n \"actual\": { \"type\": \"string\" },\n \"hint\": { \"type\": \"string\", \"minLength\": 1 },\n \"authority\": { \"type\": \"string\", \"enum\": [\"producer\", \"pack\", \"catalog\"] },\n \"evidence\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } },\n \"recoveryIntents\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n \"subject\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": [\"asset\", \"package\", \"resource\"] },\n \"id\": { \"type\": \"string\", \"minLength\": 1 }\n }\n }\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://github.com/ForgeaXGame/forgeax-engine/packages/pack/schema/pack.schema.json\",\n \"title\": \"InternalTextPackage\",\n \"description\": \"Schema for authored and cooked internal text packages.\",\n \"$comment\": \"The ordinary durable consumer matrix is SCRIPTABLE_PACK_ASSET_KINDS in @forgeax/engine-pack/source. Pack kind fields remain open for registered producer extensions.\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schemaVersion\", \"kind\", \"assets\"],\n \"properties\": {\n \"schemaVersion\": {\n \"type\": \"string\",\n \"enum\": [\"1.0.0\", \"2.0.0\"]\n },\n \"kind\": {\n \"type\": \"string\",\n \"const\": \"internal-text-package\"\n },\n \"packageId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable producer-owned package identity. It survives package moves; path is only a locator.\"\n },\n \"provenance\": {\n \"$ref\": \"#/$defs/provenance\"\n },\n \"revision\": {\n \"$ref\": \"#/$defs/revision\"\n },\n \"diagnostics\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/diagnostic\" }\n },\n \"assets\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/asset\"\n }\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"required\": [\"packageId\"],\n \"properties\": {\n \"packageId\": {},\n \"schemaVersion\": { \"const\": \"2.0.0\" }\n }\n },\n \"then\": {\n \"type\": \"object\",\n \"properties\": {\n \"assets\": {\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [\n { \"$ref\": \"#/$defs/assetV2\" },\n {\n \"type\": \"object\",\n \"properties\": { \"execution\": {} },\n \"required\": [\"execution\"]\n }\n ]\n }\n }\n }\n }\n }\n ],\n \"$defs\": {\n \"guid36\": {\n \"type\": \"string\",\n \"format\": \"uuid\"\n },\n \"asset\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"guid\", \"kind\", \"payload\", \"refs\"],\n \"properties\": {\n \"guid\": {\n \"$ref\": \"#/$defs/guid36\",\n \"description\": \"Unique GUID for this asset entry.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Asset kind identifier, e.g. 'MaterialAsset'.\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Optional display name for this asset. Add-only field for backward compatibility with old pack files that lack it.\"\n },\n \"sourceKey\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Producer-owned stable key used to match imported output topology.\"\n },\n \"sourceIndex\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"description\": \"Producer-declared output position; not an identity key when sourceKey is present.\"\n },\n \"execution\": {\n \"type\": \"string\",\n \"enum\": [\"direct\", \"cooked\"],\n \"description\": \"Explicit authoring execution mode; never inferred from package path.\"\n },\n \"payload\": {\n \"type\": \"object\",\n \"description\": \"Serialized asset payload. Free-form object.\"\n },\n \"refs\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/$defs/guid36\" }\n },\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n },\n \"assetV2\": {\n \"allOf\": [\n { \"$ref\": \"#/$defs/asset\" },\n {\n \"type\": \"object\",\n \"required\": [\"artifacts\"],\n \"properties\": {\n \"artifacts\": { \"$ref\": \"#/$defs/artifacts\" }\n }\n }\n ]\n },\n \"artifacts\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"patternProperties\": {\n \"^[A-Za-z0-9][A-Za-z0-9._/-]*$\": {\n \"$ref\": \"#/$defs/artifactDescriptor\"\n }\n }\n },\n \"artifactDescriptor\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"path\", \"mediaType\"],\n \"properties\": {\n \"path\": { \"type\": \"string\", \"minLength\": 1 },\n \"mediaType\": { \"type\": \"string\", \"minLength\": 1 },\n \"assetCodec\": { \"$ref\": \"#/$defs/assetCodec\" },\n \"contentEncoding\": { \"enum\": [\"identity\", \"zstd\"] },\n \"byteLength\": { \"type\": \"integer\", \"minimum\": 0 },\n \"integrity\": { \"$ref\": \"#/$defs/integrity\" }\n }\n },\n \"assetCodec\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\"],\n \"properties\": {\n \"name\": { \"type\": \"string\", \"minLength\": 1 },\n \"profile\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"integrity\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"algorithm\", \"digest\"],\n \"properties\": {\n \"algorithm\": { \"const\": \"sha256\" },\n \"digest\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"provenance\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"provider\", \"version\"],\n \"properties\": {\n \"provider\": { \"type\": \"string\", \"minLength\": 1 },\n \"version\": { \"type\": \"string\", \"minLength\": 1 },\n \"source\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"revision\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"digest\", \"observedAt\", \"rootId\"],\n \"properties\": {\n \"digest\": { \"type\": \"string\", \"minLength\": 1 },\n \"observedAt\": { \"type\": \"number\" },\n \"rootId\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"diagnostic\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"code\", \"severity\"],\n \"properties\": {\n \"code\": { \"type\": \"string\", \"minLength\": 1 },\n \"severity\": { \"type\": \"string\", \"enum\": [\"info\", \"warning\", \"blocking\"] },\n \"message\": { \"type\": \"string\" },\n \"subject\": { \"$ref\": \"#/$defs/subject\" },\n \"expected\": { \"type\": \"string\", \"minLength\": 1 },\n \"actual\": { \"type\": \"string\" },\n \"hint\": { \"type\": \"string\", \"minLength\": 1 },\n \"authority\": { \"type\": \"string\", \"enum\": [\"producer\", \"pack\", \"catalog\"] },\n \"evidence\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } },\n \"recoveryIntents\": { \"type\": \"array\", \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n \"subject\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": [\"asset\", \"package\", \"resource\"] },\n \"id\": { \"type\": \"string\", \"minLength\": 1 }\n }\n },\n \"relation\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"from\", \"to\", \"type\", \"provenance\"],\n \"properties\": {\n \"from\": { \"$ref\": \"#/$defs/subject\" },\n \"to\": { \"$ref\": \"#/$defs/subject\" },\n \"type\": { \"type\": \"string\", \"minLength\": 1 },\n \"policy\": { \"type\": \"object\" },\n \"provenance\": { \"$ref\": \"#/$defs/provenance\" }\n }\n }\n }\n}\n","import { createHash } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { mkdir, mkdtemp, readFile, realpath, rename, rm, stat, writeFile } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { dirname, extname, isAbsolute, relative, resolve, sep } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { Worker } from 'node:worker_threads';\nimport type { AssetGuid, Result } from '@forgeax/engine-types';\nimport { AssetError, err, ImportError, ok } from '@forgeax/engine-types';\nimport ts from 'typescript';\nimport {\n type ProducerSemanticIdentityInput,\n producerRelativeDdcKey,\n} from './evidence/source-inventory.js';\nimport { AssetGuid as AssetGuidCodec } from './guid.js';\nimport {\n type AssetReader,\n projectScriptablePackMeta,\n type ScriptablePackAssetKind,\n type ScriptablePackAuthoringMutation,\n type ScriptablePackAuthoringPort,\n type ScriptablePackDefinition,\n type ScriptablePackError,\n type ScriptablePackReadError,\n type ScriptablePackSourceClosureEntry,\n validateScriptablePackDefinition,\n} from './scriptable-pack.js';\n\nconst IMPORT_META_RESOLVE_FLAG = '--experimental-import-meta-resolve';\n\nfunction scriptablePackWorkerExecArgv(): string[] {\n // import.meta.resolve(parentURL) is the canonical ESM resolver, but Node\n // keeps its parentURL overload behind this flag. Filter --input-type as\n // well: stdin/eval hosts may pass it through process.execArgv, and Node\n // rejects that option inside a file-backed worker.\n const inherited = process.execArgv.filter((arg) => !arg.startsWith('--input-type'));\n return inherited.includes(IMPORT_META_RESOLVE_FLAG)\n ? inherited\n : [...inherited, IMPORT_META_RESOLVE_FLAG];\n}\n\nexport interface ScriptablePackModuleExecutor {\n load(sourcePath: string): Promise<unknown>;\n dispose?(reason: 'complete' | 'timeout' | 'failure'): void | Promise<void>;\n}\n\nexport interface ScriptablePackModuleExecutorPool {\n acquire(): Promise<ScriptablePackModuleExecutor>;\n dispose(): Promise<void>;\n}\n\nexport interface ScriptablePackModuleExecutorPoolOptions {\n readonly maxWorkers?: number;\n readonly maxTasksPerWorker?: number;\n}\n\nexport function scriptablePackDdcKey(input: ProducerSemanticIdentityInput): string {\n return producerRelativeDdcKey(input);\n}\n\nexport interface OptionalBuildCache<T> {\n readonly read: () => Promise<T | null>;\n readonly coldCook: () => Promise<T>;\n}\n\n/** Build CAS is a performance hint; source cold cook remains the correctness path. */\nexport async function readOptionalBuildCache<T>(cache: OptionalBuildCache<T>): Promise<{\n readonly value: T;\n readonly fromCache: boolean;\n}> {\n try {\n const cached = await cache.read();\n if (cached !== null) return { value: cached, fromCache: true };\n } catch {\n // Cache deletion, read-only storage, and corrupt optional objects fail open.\n }\n return { value: await cache.coldCook(), fromCache: false };\n}\n\nexport interface LoadScriptablePackOptions {\n /** Maximum time allowed for module initialization in the isolated worker. */\n readonly timeoutMs?: number;\n /** Maximum time allowed for one definition.build(reader) in the isolated worker. */\n readonly buildTimeoutMs?: number;\n readonly executor?: ScriptablePackModuleExecutor;\n /** Release the isolated loader after identity projection when build will not be called. */\n readonly metadataOnly?: boolean;\n}\n\nasync function resolveRelativeImport(\n sourcePath: string,\n specifier: string,\n): Promise<string | undefined> {\n if (!specifier.startsWith('.')) return undefined;\n const raw = resolve(dirname(sourcePath), specifier);\n const candidates =\n extname(raw).length > 0\n ? [raw]\n : [\n raw,\n `${raw}.ts`,\n `${raw}.tsx`,\n `${raw}.mts`,\n `${raw}.js`,\n `${raw}.mjs`,\n `${raw}.json`,\n resolve(raw, 'index.ts'),\n ];\n for (const candidate of candidates) {\n try {\n if ((await stat(candidate)).isFile()) return candidate;\n } catch {\n // Continue through deterministic extension candidates.\n }\n }\n return undefined;\n}\n\n/** Capture one immutable ScriptablePack module closure for inventory and production. */\nexport async function inventoryScriptablePackSource(\n sourcePath: string,\n initialSourceText?: string,\n): Promise<readonly ScriptablePackSourceClosureEntry[]> {\n const root = await realpath(sourcePath);\n const pending = [root];\n const seen = new Set<string>();\n const entries: ScriptablePackSourceClosureEntry[] = [];\n while (pending.length > 0) {\n const path = pending.pop();\n if (path === undefined || seen.has(path)) continue;\n seen.add(path);\n const bytes =\n path === root && initialSourceText !== undefined\n ? new TextEncoder().encode(initialSourceText)\n : await readFile(path);\n entries.push({ path, digest: `sha256:${createHash('sha256').update(bytes).digest('hex')}` });\n const source = new TextDecoder().decode(bytes);\n for (const imported of ts.preProcessFile(source, true, true).importedFiles) {\n const resolved = await resolveRelativeImport(path, imported.fileName);\n if (resolved !== undefined) pending.push(await realpath(resolved));\n }\n }\n return entries.sort((left, right) => left.path.localeCompare(right.path));\n}\n\ninterface StructuredFailure {\n readonly name?: unknown;\n readonly code?: unknown;\n readonly expected?: unknown;\n readonly actual?: unknown;\n readonly hint?: unknown;\n readonly detail?: unknown;\n readonly message?: unknown;\n}\n\nfunction serializeFailure(value: unknown): StructuredFailure {\n if (value !== null && typeof value === 'object') {\n const failure = value as Record<string, unknown>;\n return {\n name: failure.name,\n code: failure.code,\n expected: failure.expected,\n actual: failure.actual,\n hint: failure.hint,\n detail: failure.detail,\n message: failure.message,\n };\n }\n return { message: String(value) };\n}\n\nfunction hydrateFailure(value: unknown): unknown {\n if (value === null || typeof value !== 'object') return value;\n const failure = value as StructuredFailure;\n if (\n failure.name === 'AssetError' &&\n typeof failure.code === 'string' &&\n typeof failure.expected === 'string' &&\n typeof failure.hint === 'string'\n ) {\n const args = {\n code: failure.code as ConstructorParameters<typeof AssetError>[0]['code'],\n expected: failure.expected,\n hint: failure.hint,\n };\n return failure.detail === undefined\n ? new AssetError(args)\n : new AssetError({\n ...args,\n detail: failure.detail as NonNullable<\n ConstructorParameters<typeof AssetError>[0]['detail']\n >,\n });\n }\n if (\n failure.name === 'ImportError' &&\n typeof failure.code === 'string' &&\n typeof failure.expected === 'string' &&\n typeof failure.hint === 'string' &&\n failure.detail !== undefined\n ) {\n return new ImportError({\n code: failure.code as ConstructorParameters<typeof ImportError>[0]['code'],\n expected: failure.expected,\n hint: failure.hint,\n detail: failure.detail as ConstructorParameters<typeof ImportError>[0]['detail'],\n ...(typeof failure.actual === 'string' ? { actual: failure.actual } : {}),\n });\n }\n if (typeof failure.message === 'string') {\n const error = new Error(failure.message);\n if (typeof failure.name === 'string') error.name = failure.name;\n return error;\n }\n return value;\n}\n\nclass WorkerScriptablePackExecutor implements ScriptablePackModuleExecutor {\n private worker: Worker | undefined;\n private compileRoot: string | undefined;\n private nextBuildId = 0;\n private disposal: Promise<void> | undefined;\n private build:\n | {\n readonly id: number;\n readonly reader: AssetReader;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n\n async load(sourcePath: string): Promise<unknown> {\n const workerUrl = scriptablePackWorkerUrl();\n const compileRoot = await mkdtemp(resolve(tmpdir(), 'forgeax-scriptable-pack-'));\n this.compileRoot = compileRoot;\n const worker = new Worker(workerUrl, {\n workerData: { sourcePath: resolve(sourcePath), compileRoot },\n execArgv: scriptablePackWorkerExecArgv(),\n resourceLimits: { maxOldGenerationSizeMb: 256, maxYoungGenerationSizeMb: 64 },\n });\n this.worker = worker;\n worker.on('message', (message: unknown) => this.onMessage(message));\n worker.unref();\n return new Promise((resolveLoad, rejectLoad) => {\n const onMessage = (message: unknown): void => {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n if (value.kind === 'loaded') {\n // The scan keeps this executor alive for the later no-reopen build\n // route, but an idle source worker must not keep a Vite/Vitest host\n // process alive after its own work has settled.\n worker.unref();\n worker.off('message', onMessage);\n resolveLoad({\n default:\n value.definition === undefined\n ? undefined\n : {\n ...(value.definition as Record<string, unknown>),\n build: (reader: AssetReader) => this.runBuild(reader),\n },\n });\n } else if (value.kind === 'load-threw') {\n worker.off('message', onMessage);\n rejectLoad(hydrateFailure(value.error));\n }\n };\n worker.on('message', onMessage);\n worker.once('error', rejectLoad);\n worker.once('exit', (code) => {\n if (code !== 0) rejectLoad(new Error(`ScriptablePack worker exited with code ${code}`));\n });\n });\n }\n\n dispose(reason: 'complete' | 'timeout' | 'failure' = 'complete'): Promise<void> {\n if (this.disposal !== undefined) return this.disposal;\n const worker = this.worker;\n this.worker = undefined;\n const compileRoot = this.compileRoot;\n this.compileRoot = undefined;\n const active = this.build;\n this.build = undefined;\n if (active !== undefined) {\n active.reject(new Error(`ScriptablePack build disposed during ${reason}`));\n }\n this.disposal = (async () => {\n if (worker !== undefined) await worker.terminate();\n if (compileRoot !== undefined) await rm(compileRoot, { recursive: true, force: true });\n })();\n return this.disposal;\n }\n\n private runBuild(reader: AssetReader): Promise<unknown> {\n const worker = this.worker;\n if (worker === undefined) return Promise.reject(new Error('ScriptablePack worker is closed'));\n if (this.build !== undefined)\n return Promise.reject(new Error('ScriptablePack worker already has an active build'));\n const id = this.nextBuildId++;\n return new Promise((resolveBuild, rejectBuild) => {\n this.build = { id, reader, resolve: resolveBuild, reject: rejectBuild };\n worker.postMessage({ kind: 'build', buildId: id });\n });\n }\n\n private onMessage(message: unknown): void {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n const active = this.build;\n if (active === undefined || value.buildId !== active.id) return;\n if (value.kind === 'asset-read' && typeof value.readId === 'number') {\n void active.reader\n .readByGuid(value.guid as AssetGuid)\n .then((result) =>\n this.worker?.postMessage({\n kind: 'asset-result',\n readId: value.readId,\n result:\n result.ok === true ? result : { ...result, error: serializeFailure(result.error) },\n }),\n )\n .catch((error: unknown) => {\n if (this.build?.id !== active.id) return;\n this.build = undefined;\n active.reject(error);\n void this.dispose('failure');\n });\n return;\n }\n this.build = undefined;\n if (value.kind === 'build-result') active.resolve(value.result);\n else if (value.kind === 'build-threw') active.reject(hydrateFailure(value.error));\n else this.build = active;\n }\n}\n\nfunction scriptablePackWorkerUrl(): URL {\n const bundledWorker = new URL('./scriptable-pack-worker.mjs', import.meta.url);\n return existsSync(fileURLToPath(bundledWorker))\n ? bundledWorker\n : new URL('../dist/scriptable-pack-worker.mjs', import.meta.url);\n}\n\nclass ReusableWorkerScriptablePackExecutor implements ScriptablePackModuleExecutor {\n private readonly worker: Worker;\n private readonly compileRootReady = mkdtemp(resolve(tmpdir(), 'forgeax-scriptable-pack-pool-'));\n private compileRoot: string | undefined;\n private nextLoadId = 0;\n private nextBuildId = 0;\n private pendingLoad:\n | {\n readonly id: number;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n private build:\n | {\n readonly id: number;\n readonly reader: AssetReader;\n readonly resolve: (value: unknown) => void;\n readonly reject: (reason: unknown) => void;\n }\n | undefined;\n private disposal: Promise<void> | undefined;\n private forceDispose = false;\n private failed = false;\n private taskCount = 0;\n private released = false;\n\n constructor(\n private readonly maxTasksPerWorker: number,\n private readonly release: (\n executor: ReusableWorkerScriptablePackExecutor,\n reusable: boolean,\n ) => void,\n ) {\n this.worker = new Worker(scriptablePackWorkerUrl(), {\n workerData: { mode: 'reusable' },\n execArgv: scriptablePackWorkerExecArgv(),\n resourceLimits: { maxOldGenerationSizeMb: 256, maxYoungGenerationSizeMb: 64 },\n });\n this.worker.on('message', (message: unknown) => this.onMessage(message));\n this.worker.on('error', (error: Error) => {\n this.failed = true;\n this.rejectActive(error);\n void this.dispose('failure');\n });\n this.worker.on('exit', (code) => {\n if (code === 0 || this.disposal !== undefined) return;\n this.failed = true;\n this.rejectActive(new Error(`ScriptablePack worker exited with code ${code}`));\n void this.dispose('failure');\n });\n // Listener registration can retain the worker's MessagePort in Node.\n // A reusable worker must not keep a completed Vite build alive while its\n // pool is draining; it still processes messages while the host is live.\n this.worker.unref();\n }\n\n async load(sourcePath: string): Promise<unknown> {\n const activeDisposal = this.disposal;\n if (activeDisposal !== undefined) {\n await activeDisposal;\n if (this.failed) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n this.disposal = undefined;\n }\n this.released = false;\n if (this.pendingLoad !== undefined || this.build !== undefined) {\n return Promise.reject(new Error('ScriptablePack executor already has an active task'));\n }\n const compileRoot = this.compileRoot ?? (await this.compileRootReady);\n if (this.disposal !== undefined) {\n const disposal = this.disposal;\n await disposal;\n if (this.failed) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n this.disposal = undefined;\n }\n const loadId = this.nextLoadId++;\n this.compileRoot = compileRoot;\n this.taskCount += 1;\n return new Promise((resolveLoad, rejectLoad) => {\n this.pendingLoad = { id: loadId, resolve: resolveLoad, reject: rejectLoad };\n try {\n this.worker.postMessage({\n kind: 'load',\n loadId,\n sourcePath: resolve(sourcePath),\n compileRoot,\n });\n } catch (error) {\n this.pendingLoad = undefined;\n rejectLoad(error);\n void this.dispose('failure');\n }\n });\n }\n\n dispose(reason: 'complete' | 'timeout' | 'failure' = 'complete'): Promise<void> {\n if (reason === 'failure') this.forceDispose = true;\n const activeDisposal = this.disposal;\n if (activeDisposal !== undefined) {\n return activeDisposal;\n }\n this.rejectActive(new Error(`ScriptablePack task disposed during ${reason}`));\n this.disposal = (async () => {\n const compileRoot = this.compileRoot ?? (await this.compileRootReady);\n const reusable =\n reason === 'complete' &&\n !this.failed &&\n !this.forceDispose &&\n this.taskCount < this.maxTasksPerWorker;\n this.forceDispose = false;\n if (!reusable) {\n this.compileRoot = undefined;\n await this.worker.terminate();\n await rm(compileRoot, { recursive: true, force: true });\n }\n this.released = true;\n this.disposal = undefined;\n this.release(this, reusable);\n })();\n return this.disposal;\n }\n\n private rejectActive(error: unknown): void {\n const loading = this.pendingLoad;\n this.pendingLoad = undefined;\n loading?.reject(error);\n const building = this.build;\n this.build = undefined;\n building?.reject(error);\n }\n\n private runBuild(reader: AssetReader): Promise<unknown> {\n if (this.released || this.disposal !== undefined) {\n return Promise.reject(new Error('ScriptablePack executor is not leased'));\n }\n if (this.build !== undefined) {\n return Promise.reject(new Error('ScriptablePack worker already has an active build'));\n }\n const id = this.nextBuildId++;\n return new Promise((resolveBuild, rejectBuild) => {\n this.build = { id, reader, resolve: resolveBuild, reject: rejectBuild };\n try {\n this.worker.postMessage({ kind: 'build', buildId: id });\n } catch (error) {\n this.build = undefined;\n rejectBuild(error);\n void this.dispose('failure');\n }\n });\n }\n\n private onMessage(message: unknown): void {\n if (message === null || typeof message !== 'object') return;\n const value = message as Record<string, unknown>;\n const loading = this.pendingLoad;\n if (loading !== undefined && value.kind === 'loaded' && value.loadId === loading.id) {\n this.pendingLoad = undefined;\n loading.resolve({\n default:\n value.definition === undefined\n ? undefined\n : {\n ...(value.definition as Record<string, unknown>),\n build: (reader: AssetReader) => this.runBuild(reader),\n },\n });\n return;\n }\n if (loading !== undefined && value.kind === 'load-threw' && value.loadId === loading.id) {\n this.pendingLoad = undefined;\n loading.reject(hydrateFailure(value.error));\n return;\n }\n const active = this.build;\n if (active === undefined || value.buildId !== active.id) return;\n if (value.kind === 'asset-read' && typeof value.readId === 'number') {\n void active.reader\n .readByGuid(value.guid as AssetGuid)\n .then((result) =>\n this.worker.postMessage({\n kind: 'asset-result',\n readId: value.readId,\n result:\n result.ok === true ? result : { ...result, error: serializeFailure(result.error) },\n }),\n )\n .catch((error: unknown) => {\n if (this.build?.id !== active.id) return;\n this.build = undefined;\n active.reject(error);\n void this.dispose('failure');\n });\n return;\n }\n this.build = undefined;\n if (value.kind === 'build-result') active.resolve(value.result);\n else if (value.kind === 'build-threw') active.reject(hydrateFailure(value.error));\n else this.build = active;\n }\n}\n\nclass DefaultScriptablePackModuleExecutorPool implements ScriptablePackModuleExecutorPool {\n private readonly maxWorkers: number;\n private readonly maxTasksPerWorker: number;\n private readonly idle: ReusableWorkerScriptablePackExecutor[] = [];\n private readonly waiters: {\n readonly resolve: (executor: ScriptablePackModuleExecutor) => void;\n readonly reject: (reason: unknown) => void;\n }[] = [];\n private readonly executors = new Set<ReusableWorkerScriptablePackExecutor>();\n private workerCount = 0;\n private closed = false;\n\n constructor(options: ScriptablePackModuleExecutorPoolOptions = {}) {\n this.maxWorkers = Math.max(1, Math.trunc(options.maxWorkers ?? 2));\n this.maxTasksPerWorker = Math.max(1, Math.trunc(options.maxTasksPerWorker ?? 32));\n }\n\n acquire(): Promise<ScriptablePackModuleExecutor> {\n if (this.closed) return Promise.reject(new Error('ScriptablePack executor pool is closed'));\n const executor = this.idle.pop();\n if (executor !== undefined) return Promise.resolve(executor);\n if (this.workerCount < this.maxWorkers) {\n this.workerCount += 1;\n return Promise.resolve(this.createExecutor());\n }\n return new Promise((resolveAcquire, rejectAcquire) =>\n this.waiters.push({ resolve: resolveAcquire, reject: rejectAcquire }),\n );\n }\n\n async dispose(): Promise<void> {\n if (this.closed) return;\n this.closed = true;\n const waiters = this.waiters.splice(0);\n for (const waiter of waiters) {\n waiter.reject(new Error('ScriptablePack executor pool is closed'));\n }\n this.idle.splice(0);\n await Promise.all([...this.executors].map((executor) => executor.dispose('failure')));\n }\n\n private createExecutor(): ReusableWorkerScriptablePackExecutor {\n const executor = new ReusableWorkerScriptablePackExecutor(\n this.maxTasksPerWorker,\n (executor, reusable) => {\n if (this.closed) {\n this.executors.delete(executor);\n if (!reusable) this.workerCount -= 1;\n return;\n }\n if (!reusable) {\n this.executors.delete(executor);\n this.workerCount -= 1;\n } else {\n this.idle.push(executor);\n }\n this.drain();\n },\n );\n this.executors.add(executor);\n return executor;\n }\n\n private drain(): void {\n if (this.closed) return;\n while (this.waiters.length > 0) {\n const idle = this.idle.pop();\n if (idle !== undefined) {\n this.waiters.shift()?.resolve(idle);\n continue;\n }\n if (this.workerCount >= this.maxWorkers) return;\n this.workerCount += 1;\n this.waiters.shift()?.resolve(this.createExecutor());\n }\n }\n}\n\nexport function createScriptablePackModuleExecutorPool(\n options: ScriptablePackModuleExecutorPoolOptions = {},\n): ScriptablePackModuleExecutorPool {\n return new DefaultScriptablePackModuleExecutorPool(options);\n}\n\nfunction loadFailure(\n sourcePath: string,\n reason: 'module-load' | 'timeout',\n phase: 'module-load' | 'build',\n diagnostic: string,\n timeoutMs?: number,\n): Result<never, ScriptablePackError> {\n return err({\n code: 'pack-source-load-failed',\n expected: 'a trusted synchronous module with a valid default ScriptablePack export',\n hint: 'repair the module load or initialization failure, then inspect Meta again',\n detail: {\n sourcePath,\n reason,\n phase,\n diagnostic,\n ...(timeoutMs === undefined ? {} : { timeoutMs }),\n },\n });\n}\n\nfunction buildTimeoutFailure(sourcePath: string, timeoutMs: number): ScriptablePackReadError {\n return {\n code: 'pack-source-load-failed',\n expected: 'a ScriptablePack build to settle within the configured build timeout',\n hint: 'repair the authored build, then retry through a fresh ScriptablePack generation',\n detail: {\n sourcePath,\n reason: 'timeout',\n phase: 'build',\n timeoutMs,\n diagnostic: `ScriptablePack build exceeded ${timeoutMs}ms`,\n },\n };\n}\n\nexport async function loadScriptablePack(\n sourcePath: string,\n options: LoadScriptablePackOptions = {},\n): Promise<Result<Readonly<ScriptablePackDefinition>, ScriptablePackError>> {\n // Module initialization includes transpiling the trusted TypeScript source\n // closure in a fresh Worker. A cold SDK workspace can legitimately exceed\n // the build execution budget before any authored build() code has run.\n const timeoutMs = options.timeoutMs ?? 15_000;\n const buildTimeoutMs = options.buildTimeoutMs ?? 5_000;\n const executor = options.executor ?? new WorkerScriptablePackExecutor();\n let disposeReason: 'complete' | 'timeout' | 'failure' | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n try {\n const timeoutSignal = Symbol('scriptable-pack-module-timeout');\n const loaded = await Promise.race([\n executor.load(sourcePath),\n new Promise<typeof timeoutSignal>((resolve) => {\n timeout = setTimeout(() => resolve(timeoutSignal), timeoutMs);\n }),\n ]);\n if (loaded === timeoutSignal) {\n disposeReason = 'timeout';\n return loadFailure(\n sourcePath,\n 'timeout',\n 'module-load',\n `ScriptablePack module initialization exceeded ${timeoutMs}ms`,\n timeoutMs,\n );\n }\n const moduleValue =\n loaded !== null && typeof loaded === 'object' && 'default' in loaded\n ? (loaded as { readonly default: unknown }).default\n : undefined;\n const validated = validateScriptablePackDefinition(moduleValue, sourcePath);\n if (!validated.ok) {\n disposeReason = 'failure';\n return validated;\n }\n if (options.metadataOnly === true) {\n disposeReason = 'complete';\n return validated;\n }\n const definition = validated.value;\n type BuildOutcome = Awaited<ReturnType<ScriptablePackDefinition['build']>>;\n return ok({\n ...definition,\n build: async (reader: AssetReader): Promise<BuildOutcome> => {\n let buildTimedOut = false;\n let buildTimeout: ReturnType<typeof setTimeout> | undefined;\n const timeoutResult = err(buildTimeoutFailure(sourcePath, buildTimeoutMs));\n try {\n const built = await Promise.race([\n Promise.resolve(definition.build(reader)),\n new Promise<BuildOutcome>((resolve) => {\n buildTimeout = setTimeout(() => {\n buildTimedOut = true;\n resolve(timeoutResult as BuildOutcome);\n }, buildTimeoutMs);\n }),\n ]);\n if (buildTimedOut) {\n await executor.dispose?.('timeout');\n return built;\n }\n await executor.dispose?.('complete');\n return built;\n } catch (error) {\n await executor.dispose?.('failure');\n throw error;\n } finally {\n if (buildTimeout !== undefined) clearTimeout(buildTimeout);\n }\n },\n });\n } catch (error) {\n const diagnostic = error instanceof Error ? error.message : String(error);\n disposeReason = 'failure';\n return loadFailure(sourcePath, 'module-load', 'module-load', diagnostic);\n } finally {\n if (timeout !== undefined) clearTimeout(timeout);\n if (disposeReason !== undefined) await executor.dispose?.(disposeReason);\n }\n}\n\nconst CANONICAL_SCAFFOLD_MARKER = '// @forgeax-scriptable-pack canonical-v1';\nconst CANONICAL_MANIFEST_NAME = 'canonicalManifest';\nconst CANONICAL_MUTABLE_KINDS = new Set<ScriptablePackAssetKind>(['scene', 'mesh', 'material']);\n\ninterface CanonicalOutput {\n readonly guid: string;\n readonly kind: ScriptablePackAssetKind;\n readonly name?: string;\n}\n\ninterface CanonicalManifest {\n readonly schemaVersion: '1.0.0';\n readonly packageId: string;\n readonly name?: string;\n readonly assets: Readonly<Record<string, CanonicalOutput>>;\n readonly externalAssets: Readonly<Record<string, string>>;\n}\n\nexport interface FileSystemScriptablePackAuthoringOptions {\n /** All source and target paths are confined to this game root. */\n readonly gameRoot: string;\n readonly incomingRefs?: (sourcePath: string, sourceKey?: string) => Promise<readonly string[]>;\n readonly rebuild?: (\n sourcePath: string,\n mode: 'rebuild' | 'cold-cook',\n ) => Promise<Result<void, ScriptablePackError>>;\n}\n\nfunction authoringError(\n code:\n | 'pack-source-path-invalid'\n | 'pack-source-revision-conflict'\n | 'pack-source-mutation-unsupported'\n | 'pack-source-reference-conflict'\n | 'pack-source-write-failed',\n input: {\n readonly expected: string;\n readonly actual?: string;\n readonly hint: string;\n readonly retryable: boolean;\n readonly recoveryActions: readonly string[];\n readonly requestId?: string;\n readonly sourcePath?: string;\n readonly sourceKey?: string;\n readonly incomingRefs?: readonly string[];\n },\n): ScriptablePackError {\n return {\n code,\n expected: input.expected,\n ...(input.actual === undefined ? {} : { actual: input.actual }),\n hint: input.hint,\n retryable: input.retryable,\n recoveryActions: input.recoveryActions,\n detail: {\n ...(input.requestId === undefined ? {} : { requestId: input.requestId }),\n ...(input.sourcePath === undefined ? {} : { sourcePath: input.sourcePath }),\n ...(input.sourceKey === undefined ? {} : { sourceKey: input.sourceKey }),\n ...(input.incomingRefs === undefined ? {} : { incomingRefs: input.incomingRefs }),\n },\n };\n}\n\nfunction confinedSourcePath(\n gameRoot: string,\n sourcePath: string,\n): Result<{ readonly absolute: string; readonly relative: string }, ScriptablePackError> {\n const root = resolve(gameRoot);\n const absolute = resolve(root, sourcePath);\n const rel = relative(root, absolute);\n if (\n rel.length === 0 ||\n rel === '..' ||\n rel.startsWith(`..${sep}`) ||\n isAbsolute(sourcePath) ||\n !rel.endsWith('.pack.ts')\n ) {\n return err(\n authoringError('pack-source-path-invalid', {\n expected: 'a game-root-relative *.pack.ts path confined to the selected game',\n actual: sourcePath,\n hint: 'choose a relative ScriptablePack source path inside the selected game root',\n retryable: false,\n recoveryActions: ['choose-game-relative-source-path'],\n sourcePath,\n }),\n );\n }\n return ok({ absolute, relative: rel.split(sep).join('/') });\n}\n\nfunction revisionOf(source: string): string {\n return createHash('sha256').update(source).digest('hex');\n}\n\nfunction unwrapExpression(expression: ts.Expression): ts.Expression {\n if (\n ts.isAsExpression(expression) ||\n ts.isSatisfiesExpression(expression) ||\n ts.isParenthesizedExpression(expression)\n ) {\n return unwrapExpression(expression.expression);\n }\n return expression;\n}\n\nfunction literalValue(expression: ts.Expression): unknown {\n const value = unwrapExpression(expression);\n if (ts.isStringLiteral(value) || ts.isNoSubstitutionTemplateLiteral(value)) return value.text;\n if (value.kind === ts.SyntaxKind.TrueKeyword) return true;\n if (value.kind === ts.SyntaxKind.FalseKeyword) return false;\n if (value.kind === ts.SyntaxKind.NullKeyword) return null;\n if (ts.isNumericLiteral(value)) return Number(value.text);\n if (ts.isArrayLiteralExpression(value)) return value.elements.map(literalValue);\n if (ts.isObjectLiteralExpression(value)) {\n const result: Record<string, unknown> = {};\n for (const property of value.properties) {\n if (!ts.isPropertyAssignment(property))\n throw new TypeError('manifest properties must be data');\n const name = property.name;\n const key =\n ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)\n ? name.text\n : undefined;\n if (key === undefined) throw new TypeError('manifest property names must be static');\n result[key] = literalValue(property.initializer);\n }\n return result;\n }\n throw new TypeError('manifest values must be literal data');\n}\n\nfunction parseCanonicalManifest(source: string, sourcePath: string): CanonicalManifest | undefined {\n if (!source.startsWith(`${CANONICAL_SCAFFOLD_MARKER}\\n`)) return undefined;\n const file = ts.createSourceFile(\n sourcePath,\n source,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TS,\n );\n for (const statement of file.statements) {\n if (!ts.isVariableStatement(statement)) continue;\n for (const declaration of statement.declarationList.declarations) {\n if (\n ts.isIdentifier(declaration.name) &&\n declaration.name.text === CANONICAL_MANIFEST_NAME &&\n declaration.initializer !== undefined\n ) {\n const value = literalValue(declaration.initializer);\n if (value === null || typeof value !== 'object') return undefined;\n return value as CanonicalManifest;\n }\n }\n }\n return undefined;\n}\n\nfunction guidExpression(value: string): string {\n return `parseGuid(${JSON.stringify(value)})`;\n}\n\n/** Render the one source shape that the file authoring port may mutate structurally. */\nexport function renderCanonicalScriptablePack(manifest: CanonicalManifest): string {\n const data = JSON.stringify(manifest, null, 2);\n return `${CANONICAL_SCAFFOLD_MARKER}\nimport { AssetGuid } from '@forgeax/engine-pack/guid';\nimport { buildMeshAttributeMapForUvSets } from '@forgeax/engine-geometry';\nimport type { ScriptablePackDefinition } from '@forgeax/engine-pack/source';\nimport type { Asset, AssetGuid as AssetGuidType } from '@forgeax/engine-types';\nimport { ok } from '@forgeax/engine-types';\n\nconst ${CANONICAL_MANIFEST_NAME} = ${data} as const;\n\nfunction parseGuid(value: string): AssetGuidType {\n const parsed = AssetGuid.parse(value);\n if (!parsed.ok) throw parsed.error;\n return parsed.value;\n}\n\nfunction createOutput(kind: string): Asset {\n switch (kind) {\n case 'scene':\n return { kind: 'scene', entities: [], mounts: [] };\n case 'material':\n return { kind: 'material', values: {} };\n case 'mesh': {\n const vertices = new Float32Array([\n 0, 0.7, 0, 0, 0, 1, 0.5, 1, 0, 0, 0, 1,\n -0.7, -0.6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,\n 0.7, -0.6, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1,\n ]);\n return {\n kind: 'mesh',\n vertices,\n indices: new Uint16Array([0, 1, 2]),\n attributes: { ...buildMeshAttributeMapForUvSets(1), position: vertices },\n aabb: new Float32Array([-0.7, -0.6, 0, 0.7, 0.7, 0]),\n submeshes: [{ indexOffset: 0, indexCount: 3, vertexCount: 3, topology: 'triangle-list', materialSlot: 0 }],\n materialSlots: [{ slotName: 'Default' }],\n };\n }\n default:\n throw new Error(\\`canonical ScriptablePack output kind is not mutable: \\${kind}\\`);\n }\n}\n\nconst assets = Object.fromEntries(\n Object.entries(${CANONICAL_MANIFEST_NAME}.assets).map(([sourceKey, asset]) => [\n sourceKey,\n { ...asset, guid: parseGuid(asset.guid) },\n ]),\n);\nconst externalAssets = Object.fromEntries(\n Object.entries(${CANONICAL_MANIFEST_NAME}.externalAssets).map(([alias, guid]) => [alias, parseGuid(guid)]),\n);\n\nexport default {\n schemaVersion: '1.0.0',\n packageId: ${guidExpression(manifest.packageId)},\n ${manifest.name === undefined ? '' : `name: ${JSON.stringify(manifest.name)},\\n `}assets,\n externalAssets,\n build: () => ok(Object.fromEntries(Object.entries(assets).map(([sourceKey, asset]) => [sourceKey, createOutput(asset.kind)])) as Record<string, Asset>),\n} satisfies ScriptablePackDefinition;\n`;\n}\n\nfunction definitionFromCanonical(\n manifest: CanonicalManifest,\n): Result<ScriptablePackDefinition, ScriptablePackError> {\n const packageId = AssetGuidCodec.parse(manifest.packageId);\n if (!packageId.ok) return invalidCanonicalGuid('$.packageId', manifest.packageId);\n const assets: Record<string, { guid: AssetGuid; kind: ScriptablePackAssetKind; name?: string }> =\n {};\n for (const [sourceKey, output] of Object.entries(manifest.assets)) {\n const guid = AssetGuidCodec.parse(output.guid);\n if (!guid.ok)\n return invalidCanonicalGuid(`$.assets[${JSON.stringify(sourceKey)}].guid`, output.guid);\n assets[sourceKey] = {\n guid: guid.value,\n kind: output.kind,\n ...(output.name === undefined ? {} : { name: output.name }),\n };\n }\n const externalAssets: Record<string, AssetGuid> = {};\n for (const [alias, value] of Object.entries(manifest.externalAssets)) {\n const guid = AssetGuidCodec.parse(value);\n if (!guid.ok) return invalidCanonicalGuid(`$.externalAssets[${JSON.stringify(alias)}]`, value);\n externalAssets[alias] = guid.value;\n }\n return validateScriptablePackDefinition({\n schemaVersion: '1.0.0',\n packageId: packageId.value,\n ...(manifest.name === undefined ? {} : { name: manifest.name }),\n assets,\n externalAssets,\n build: () => ok({} as Record<string, never>),\n });\n}\n\nfunction invalidCanonicalGuid(\n propertyPath: string,\n actual: string,\n): Result<never, ScriptablePackError> {\n return err({\n code: 'pack-source-definition-invalid',\n expected: 'a canonical UUID string',\n hint: 'repair the canonical scaffold manifest GUID and inspect Meta again',\n detail: { propertyPath, actual },\n });\n}\n\nfunction invalidCanonicalSource(\n sourcePath: string,\n error: unknown,\n): Result<never, ScriptablePackError> {\n return err({\n code: 'pack-source-definition-invalid',\n expected: 'a literal canonical-v1 manifest with the required package/assets/external fields',\n hint: 'repair the canonical scaffold or open it as custom source without structured mutation',\n detail: {\n sourcePath,\n propertyPath: '$.canonicalManifest',\n actual: error instanceof Error ? error.message : String(error),\n },\n });\n}\n\nasync function atomicWrite(path: string, source: string): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n const temporary = `${path}.${process.pid}.${Date.now()}.tmp`;\n try {\n await writeFile(temporary, source, { encoding: 'utf8', flag: 'wx' });\n await rename(temporary, path);\n } catch (error) {\n await rm(temporary, { force: true });\n throw error;\n }\n}\n\nfunction sameStrings(left: readonly string[], right: readonly string[]): boolean {\n return [...left].sort().join('\\0') === [...right].sort().join('\\0');\n}\n\n/** Node filesystem adapter for the public ScriptablePack authoring gateway. */\nexport function createFileSystemScriptablePackAuthoringPort(\n options: FileSystemScriptablePackAuthoringOptions,\n): ScriptablePackAuthoringPort {\n const resolvePath = (sourcePath: string) => confinedSourcePath(options.gameRoot, sourcePath);\n\n async function readSource(sourcePath: string) {\n const path = resolvePath(sourcePath);\n if (!path.ok) return path;\n try {\n const source = await readFile(path.value.absolute, 'utf8');\n return ok({ ...path.value, source, revision: revisionOf(source) });\n } catch (error) {\n return err(\n authoringError('pack-source-write-failed', {\n expected: 'a readable ScriptablePack source file',\n actual: error instanceof Error ? error.message : String(error),\n hint: 'restore the source file or create it through the ScriptablePack gateway',\n retryable: true,\n recoveryActions: ['inspect-source-path', 'retry'],\n sourcePath,\n }),\n );\n }\n }\n\n async function inspect(sourcePath: string) {\n const read = await readSource(sourcePath);\n if (!read.ok) return read;\n let canonical: CanonicalManifest | undefined;\n try {\n canonical = parseCanonicalManifest(read.value.source, read.value.relative);\n } catch (error) {\n return invalidCanonicalSource(read.value.relative, error);\n }\n const loaded =\n canonical === undefined\n ? await loadScriptablePack(read.value.absolute, { metadataOnly: true })\n : definitionFromCanonical(canonical);\n if (!loaded.ok) return loaded;\n return ok({\n revision: read.value.revision,\n meta: projectScriptablePackMeta(loaded.value, read.value.relative),\n });\n }\n\n async function preflight(sourcePath: string) {\n const read = await readSource(sourcePath);\n if (!read.ok) return read;\n const inspected = await inspect(sourcePath);\n if (!inspected.ok) return inspected;\n let canonical: CanonicalManifest | undefined;\n try {\n canonical = parseCanonicalManifest(read.value.source, read.value.relative);\n } catch (error) {\n return invalidCanonicalSource(read.value.relative, error);\n }\n const incomingRefs = (await options.incomingRefs?.(read.value.relative)) ?? [];\n return ok({\n revision: inspected.value.revision,\n meta: inspected.value.meta,\n capabilities:\n canonical === undefined\n ? ({\n inspect: true,\n rebuild: true,\n coldCook: true,\n reason: 'structured mutation is available only for canonical-v1 scaffolds',\n } as const)\n : ({\n inspect: true,\n rebuild: true,\n coldCook: true,\n addOutput: true,\n addExternalAsset: true,\n renameDisplay: true,\n removeOutput: true,\n clone: true,\n } as const),\n incomingRefs,\n });\n }\n\n async function mutate(operation: ScriptablePackAuthoringMutation) {\n const targetPath =\n operation.kind === 'clone-scriptable-pack' ? operation.targetPath : operation.sourcePath;\n const target = resolvePath(targetPath);\n if (!target.ok) return target;\n\n let manifest: CanonicalManifest;\n let currentRevision: string | undefined;\n if (operation.kind === 'create-scriptable-pack') {\n if (!CANONICAL_MUTABLE_KINDS.has(operation.initialOutput.kind)) {\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'a canonical scene, mesh, or material initial output',\n actual: operation.initialOutput.kind,\n hint: 'create one of the canonical output kinds, then hand-author advanced outputs',\n retryable: false,\n recoveryActions: ['choose-supported-output-kind'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n }),\n );\n }\n try {\n await stat(target.value.absolute);\n return err(\n authoringError('pack-source-revision-conflict', {\n expected: 'an unused target source path',\n actual: 'source already exists',\n hint: 'inspect the existing source or choose a new path',\n retryable: false,\n recoveryActions: ['asset.preflight', 'choose-new-source-path'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n }),\n );\n } catch {\n // Missing is the required create precondition.\n }\n manifest = {\n schemaVersion: '1.0.0',\n packageId: AssetGuidCodec.format(operation.packageId),\n ...(operation.name === undefined ? {} : { name: operation.name }),\n assets: {\n [operation.initialOutput.sourceKey]: {\n guid: AssetGuidCodec.format(operation.initialOutput.guid),\n kind: operation.initialOutput.kind,\n ...(operation.initialOutput.name === undefined\n ? {}\n : { name: operation.initialOutput.name }),\n },\n },\n externalAssets: {},\n };\n } else {\n const read = await readSource(operation.sourcePath);\n if (!read.ok) return read;\n currentRevision = read.value.revision;\n if (\n operation.expectedRevision !== undefined &&\n operation.expectedRevision !== currentRevision\n ) {\n return err(\n authoringError('pack-source-revision-conflict', {\n expected: operation.expectedRevision,\n actual: currentRevision,\n hint: 'inspect the current source revision, reconcile the edit, then retry with a new requestId',\n retryable: true,\n recoveryActions: ['asset.preflight', 'mint-request-id'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n }),\n );\n }\n let parsed: CanonicalManifest | undefined;\n try {\n parsed = parseCanonicalManifest(read.value.source, read.value.relative);\n } catch (error) {\n return invalidCanonicalSource(read.value.relative, error);\n }\n if (parsed === undefined) {\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'a canonical-v1 scaffold for structured source mutation',\n actual: 'custom ScriptablePack source',\n hint: 'clone into a canonical scaffold or edit custom source with a code editor',\n retryable: false,\n recoveryActions: ['clone-scriptable-pack', 'open-code-editor'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n }),\n );\n }\n manifest = parsed;\n }\n\n if (operation.kind === 'clone-scriptable-pack') {\n try {\n await stat(target.value.absolute);\n return err(\n authoringError('pack-source-revision-conflict', {\n expected: 'an unused clone target source path',\n actual: 'source already exists',\n hint: 'inspect the existing target or choose a new path',\n retryable: false,\n recoveryActions: ['asset.preflight', 'choose-new-source-path'],\n requestId: operation.requestId,\n sourcePath: target.value.relative,\n }),\n );\n } catch {\n // Missing is the required clone precondition.\n }\n }\n\n if (operation.kind === 'add-output') {\n if (!CANONICAL_MUTABLE_KINDS.has(operation.assetKind)) {\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'a canonical scene, mesh, or material output',\n actual: operation.assetKind,\n hint: 'hand-author advanced output kinds in the source module',\n retryable: false,\n recoveryActions: ['open-code-editor'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n sourceKey: operation.sourceKey,\n }),\n );\n }\n manifest = {\n ...manifest,\n assets: {\n ...manifest.assets,\n [operation.sourceKey]: {\n guid: AssetGuidCodec.format(operation.guid),\n kind: operation.assetKind,\n ...(operation.name === undefined ? {} : { name: operation.name }),\n },\n },\n };\n } else if (operation.kind === 'add-external-asset') {\n manifest = {\n ...manifest,\n externalAssets: {\n ...manifest.externalAssets,\n [operation.alias]: AssetGuidCodec.format(operation.guid),\n },\n };\n } else if (operation.kind === 'rename-display') {\n if (operation.target.kind === 'package') manifest = { ...manifest, name: operation.name };\n else {\n const output = manifest.assets[operation.target.sourceKey];\n if (output === undefined)\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'an existing sourceKey',\n actual: operation.target.sourceKey,\n hint: 'inspect Meta and choose a current output',\n retryable: true,\n recoveryActions: ['asset.preflight'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n sourceKey: operation.target.sourceKey,\n }),\n );\n manifest = {\n ...manifest,\n assets: {\n ...manifest.assets,\n [operation.target.sourceKey]: { ...output, name: operation.name },\n },\n };\n }\n } else if (operation.kind === 'remove-output') {\n const incomingRefs =\n (await options.incomingRefs?.(operation.sourcePath, operation.sourceKey)) ?? [];\n if (\n incomingRefs.length > 0 &&\n !sameStrings(incomingRefs, operation.confirmIncomingRefs ?? [])\n ) {\n return err(\n authoringError('pack-source-reference-conflict', {\n expected: 'explicit acknowledgement of every current incoming reference',\n actual: `${incomingRefs.length} incoming references`,\n hint: 'inspect dependents, then confirm the exact incoming reference identities or cancel',\n retryable: true,\n recoveryActions: ['inspect-incoming-refs', 'confirm-remove-output'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n sourceKey: operation.sourceKey,\n incomingRefs,\n }),\n );\n }\n const { [operation.sourceKey]: removed, ...assets } = manifest.assets;\n if (removed === undefined || Object.keys(assets).length === 0) {\n return err(\n authoringError('pack-source-mutation-unsupported', {\n expected: 'an existing output while retaining at least one package output',\n actual: operation.sourceKey,\n hint: 'keep one output or remove the entire source file through an explicit file operation',\n retryable: false,\n recoveryActions: ['asset.preflight'],\n requestId: operation.requestId,\n sourcePath: operation.sourcePath,\n sourceKey: operation.sourceKey,\n }),\n );\n }\n manifest = { ...manifest, assets };\n } else if (operation.kind === 'clone-scriptable-pack') {\n manifest = {\n ...manifest,\n packageId: AssetGuidCodec.format(operation.packageId),\n assets: Object.fromEntries(\n Object.entries(manifest.assets).map(([sourceKey, output]) => [\n sourceKey,\n {\n ...output,\n guid: AssetGuidCodec.format(operation.outputGuids[sourceKey] as AssetGuid),\n },\n ]),\n ),\n };\n }\n\n const source = renderCanonicalScriptablePack(manifest);\n try {\n await atomicWrite(target.value.absolute, source);\n return ok({ sourcePath: target.value.relative, revision: revisionOf(source) });\n } catch (error) {\n return err(\n authoringError('pack-source-write-failed', {\n expected: 'an atomic source-file replacement',\n actual: error instanceof Error ? error.message : String(error),\n hint: 'repair filesystem permissions or disk capacity, then retry with a new requestId',\n retryable: true,\n recoveryActions: ['inspect-filesystem', 'mint-request-id'],\n requestId: operation.requestId,\n sourcePath: target.value.relative,\n }),\n );\n }\n }\n\n return {\n preflight,\n mutate,\n inspect,\n async rebuild(sourcePath, mode) {\n const path = resolvePath(sourcePath);\n if (!path.ok) return path;\n const rebuilt = (await options.rebuild?.(path.value.relative, mode)) ?? ok(undefined);\n return rebuilt.ok ? inspect(path.value.relative) : rebuilt;\n },\n };\n}\n","import { createHash } from 'node:crypto';\nimport { readdir, readFile, stat } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport type {\n CatalogDiagnostic,\n PackErrorCode,\n ProviderProvenance,\n ResourceRevision,\n SourceOverrideDescriptor,\n} from '@forgeax/engine-types';\nimport { PACK_ERROR_HINTS } from '@forgeax/engine-types';\nimport { loadAssetConfig } from './config.js';\nimport { PackError } from './errors.js';\nimport { isValidAssetGuidString } from './guid.js';\nimport { validateProducerContract, validateProducerOutputs } from './producer-contract.js';\nimport { resolveAssetSource } from './resolve-asset-source.js';\nimport { validateMeta, validatePack } from './schema-compiled.js';\nimport {\n projectScriptablePackMeta,\n type ScriptablePackDefinition,\n type ScriptablePackMetaJson,\n type ScriptablePackSourceClosureEntry,\n} from './scriptable-pack.js';\nimport {\n inventoryScriptablePackSource,\n loadScriptablePack,\n type ScriptablePackModuleExecutor,\n} from './scriptable-pack-node.js';\n\n// Minimal Result<T, E> — structurally compatible with @forgeax/engine-rhi Result\n// but defined locally to avoid a heavy runtime dep in this build-time package.\nexport type ScanResult<T, E> =\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: E };\n\nfunction ok<T>(value: T): ScanResult<T, never> {\n return { ok: true, value };\n}\n\nfunction packErr<E>(error: E): ScanResult<never, E> {\n return { ok: false, error };\n}\n\n/** Host-owned source paths that should not enter the Pack catalog. */\nexport interface ScanOptions {\n readonly ignorePath?: (path: string) => boolean;\n readonly scriptablePack?: ScriptablePackScanOptions;\n}\n\n/** One bounded executor policy shared by ScriptablePack inventory and production. */\nexport interface ScriptablePackScanOptions {\n readonly timeoutMs?: number;\n readonly buildTimeoutMs?: number;\n readonly executor?: ScriptablePackModuleExecutor;\n /** Path-only scans must release the isolated loader before returning. */\n readonly metadataOnly?: boolean;\n}\n\n/** Stable default policy shared by inventory and production owners. */\nexport const STANDARD_SCRIPTABLE_PACK_SCAN_OPTIONS = Object.freeze(\n {},\n) satisfies ScriptablePackScanOptions;\n\nexport interface InventoryDeclaration {\n readonly guid: string;\n readonly kind: string;\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n}\n\nexport interface ScanInventory {\n readonly paths: readonly string[];\n readonly inventory: readonly InventoryDeclaration[];\n /** Complete parsed source declarations captured by the validated scan pass. */\n readonly declarations: ReadonlyMap<string, ScanSourceDeclaration>;\n}\n\nexport interface ScriptablePackInventoryDeclaration {\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly meta: ScriptablePackMetaJson;\n readonly definition: Readonly<ScriptablePackDefinition>;\n readonly sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n}\n\nexport interface MetaInventoryDocument {\n readonly schemaVersion: string | number;\n readonly kind: 'external-asset-package';\n readonly packageId?: string;\n readonly name?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly importer: string;\n readonly source?: string;\n readonly importSettings: Readonly<Record<string, unknown>>;\n readonly sourceOverrides?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n readonly sourceOverrideDescriptors?: readonly SourceOverrideDescriptor[];\n readonly paramSchema?: readonly Readonly<Record<string, unknown>>[];\n readonly subAssets: readonly MetaInventorySubAsset[];\n}\n\nexport interface MetaInventorySubAsset {\n readonly guid: string;\n readonly sourceIndex: number;\n readonly sourceKey?: string;\n readonly name?: string;\n readonly kind: string;\n}\n\nexport interface PackInventoryDocument {\n readonly schemaVersion: '1.0.0' | '2.0.0';\n readonly kind: 'internal-text-package';\n readonly packageId?: string;\n readonly provenance?: ProviderProvenance;\n readonly revision?: ResourceRevision;\n readonly diagnostics?: readonly CatalogDiagnostic[];\n readonly assets: readonly PackInventoryAsset[];\n}\n\nexport interface PackInventoryAsset {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly execution?: 'direct' | 'cooked';\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly payload: Readonly<Record<string, unknown>>;\n readonly refs: readonly string[];\n readonly artifacts?: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n}\n\nexport type ScanSourceDeclaration =\n | {\n readonly format: 'meta.json';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly value: MetaInventoryDocument;\n }\n | {\n readonly format: 'pack.json';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly sourceText: string;\n readonly value: PackInventoryDocument;\n }\n | ({\n readonly format: 'pack.ts';\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly value: ScriptablePackMetaJson;\n } & ScriptablePackInventoryDeclaration);\n\ninterface ScanCapture {\n readonly declarations: Map<string, ScanSourceDeclaration>;\n}\n\n/**\n * Directory names that are skipped during recursive traversal unless\n * explicitly provided as a root in the `roots` parameter (whitelist override).\n * Requirements §3.4 + §5 blacklist.\n *\n * Re-exported as `SCANNER_BLACKLIST` for cross-package reuse: the\n * `forgeax-engine-remote-asset import --check` traversal (M4 / w21 +\n * plan-strategy section 2.8 path b) walks the same set of source-orphan\n * candidates as the scanner, so we share the single SSOT here.\n */\nconst BLACKLIST = new Set([\n 'node_modules',\n '.forgeax-harness',\n '.forgeax',\n '.git',\n 'dist',\n '.forgeax-asset-cache',\n 'forgeax-engine-assets',\n 'coverage',\n]);\n\nexport const SCANNER_BLACKLIST: ReadonlySet<string> = BLACKLIST;\n\ntype MalformedFileCode = Extract<PackErrorCode, 'pack-malformed-pack' | 'pack-malformed-meta'>;\n\ntype JsonValidator = {\n (value: unknown): boolean;\n errors?: readonly { readonly instancePath?: string; readonly message?: string }[] | null;\n};\n\nasync function readValidatedJson(\n path: string,\n code: MalformedFileCode,\n validate: JsonValidator,\n): Promise<ScanResult<{ readonly raw: string; readonly parsed: unknown }, PackError>> {\n let raw: string;\n let parsed: unknown;\n try {\n raw = await readFile(path, 'utf-8');\n parsed = JSON.parse(raw);\n } catch {\n return packErr(\n makePackError(code, {\n path,\n ajvErrors: [{ instancePath: '', message: 'JSON parse failed' }],\n }),\n );\n }\n if (!validate(parsed)) {\n return packErr(\n makePackError(code, {\n path,\n ajvErrors: (validate.errors ?? []).map((error) => ({\n instancePath: error.instancePath ?? '',\n message: error.message ?? 'unknown ajv error',\n })),\n }),\n );\n }\n return ok({ raw, parsed });\n}\n\nfunction makePackError(\n code: PackErrorCode,\n detail: ConstructorParameters<typeof PackError>[0]['detail'],\n): PackError {\n return new PackError({\n code,\n expected: `pack error: ${code}`,\n hint: PACK_ERROR_HINTS[code],\n detail,\n });\n}\n\n/**\n * For scene assets with `payload.mounts[]`, return the lowercased GUID\n * each `mount.source` integer resolves to via `asset.refs[]`. Returns an\n * empty iterable for non-scene assets, scene assets without mounts, or\n * mounts with malformed `source` (out-of-range integer / non-integer) —\n * those are caught by ajv schema validation upstream. The yielded GUIDs\n * feed scanner step-6's mount-asset cycle DFS (D-1, R10).\n */\nfunction* extractMountSourceGuids(asset: {\n kind?: unknown;\n payload?: unknown;\n refs: readonly string[];\n}): Generator<string> {\n if (asset.kind !== 'scene') return;\n const payload = asset.payload as { mounts?: unknown } | undefined;\n if (!payload || !Array.isArray(payload.mounts)) return;\n for (const rawMount of payload.mounts) {\n const mount = rawMount as { source?: unknown };\n const idx = mount.source;\n if (typeof idx !== 'number' || !Number.isInteger(idx)) continue;\n if (idx < 0 || idx >= asset.refs.length) continue;\n const resolved = asset.refs[idx];\n if (typeof resolved !== 'string') continue;\n yield resolved.toLowerCase();\n }\n}\n\n/**\n * Scan one or more root directories for `.meta.json`, `.pack.json`, and `.pack.ts` files.\n * Runs a 7-step fail-fast validation chain (w17 + M7-T01):\n * Step 1 - collect all .meta.json + .pack.json paths (blacklist skipped)\n * Step 2 - schema validation (ajv strict)\n * Step 3 - GUID string format validation\n * Step 4 - GUID collision detection\n * Step 5 - orphan .meta.json detection\n * Step 6 - cyclic reference detection (hand-written DFS)\n * Step 7 - complete pack and source closure validation\n *\n * Returns `Ok(paths)` or `Err(PackError)` on the first violation.\n *\n * NOTE: source files without a .meta.json are logged but not fatal (requirements §5).\n */\nasync function scanValidated(\n roots: readonly string[],\n opts: ScanOptions = {},\n capture?: ScanCapture,\n): Promise<ScanResult<string[], PackError>> {\n // Step 1: collect all authored package declarations. ScriptablePack runtime\n // validation belongs to its trusted module loader; scanner only inventories\n // the source path so CLI/Vite share one discovery set.\n const rawPaths: string[] = [];\n const explicitRootSet = new Set(roots);\n\n async function traverse(dir: string): Promise<void> {\n let entries: import('node:fs').Dirent[];\n try {\n entries = (await readdir(dir, { withFileTypes: true })) as import('node:fs').Dirent[];\n } catch {\n return;\n }\n\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n\n if (opts.ignorePath?.(fullPath) === true) continue;\n\n if (entry.isDirectory()) {\n // Skip blacklisted subdirectories unless the subdir is itself an explicit root\n if (BLACKLIST.has(basename(fullPath)) && !explicitRootSet.has(fullPath)) {\n continue;\n }\n await traverse(fullPath);\n } else if (entry.isFile()) {\n const name = entry.name;\n if (\n name.endsWith('.meta.json') ||\n name.endsWith('.pack.json') ||\n name.endsWith('.pack.ts')\n ) {\n rawPaths.push(fullPath);\n }\n }\n }\n }\n\n for (const root of roots) {\n // Explicit file roots are useful when a host wants one source package\n // from a larger asset tree without also scanning sibling packages. Keep\n // directory-root behaviour unchanged; this is only an opt-in whitelist.\n try {\n const rootStat = await stat(root);\n if (rootStat.isFile()) {\n if (opts.ignorePath?.(root) === true) continue;\n if (\n root.endsWith('.meta.json') ||\n root.endsWith('.pack.json') ||\n root.endsWith('.pack.ts')\n ) {\n rawPaths.push(root);\n }\n continue;\n }\n } catch {\n // The existing directory traversal treats missing roots as empty.\n }\n await traverse(root);\n }\n\n // Separate meta and pack paths\n const metaPaths = rawPaths.filter((p) => p.endsWith('.meta.json'));\n const packPaths = rawPaths.filter((p) => p.endsWith('.pack.json'));\n const scriptablePaths = rawPaths.filter((p) => p.endsWith('.pack.ts'));\n\n // Step 2 + 3: parse + schema validate + GUID format validate each pack file\n // One normalized GUID map covers pack assets and meta subAssets. The source\n // kind stays in the path/detail evidence; identity is the normalized GUID.\n const guidToPath = new Map<string, string>();\n const packRefs = new Map<string, string[]>(); // guid -> refs[]\n\n for (const packPath of packPaths) {\n const loaded = await readValidatedJson(packPath, 'pack-malformed-pack', validatePack);\n if (!loaded.ok) return loaded;\n const { raw, parsed } = loaded.value;\n\n const packageContract = validateProducerContract(parsed);\n if (!packageContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '', message: packageContract.error.code }],\n }),\n );\n }\n\n // Step 3: validate GUIDs in pack\n const packObj = parsed as unknown as PackInventoryDocument;\n for (const asset of packObj.assets) {\n if (\n asset.kind === 'particle-effect' &&\n asset.execution === 'direct' &&\n (asset.refs.length > 0 || Object.keys(asset.artifacts ?? {}).length > 0)\n ) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [\n {\n instancePath: '/assets',\n message:\n 'authored particle-effect assets are source-only; refs and artifacts must be empty',\n },\n ],\n }),\n );\n }\n }\n const producerAssets = packObj.assets.filter(\n (asset) => asset.sourceKey !== undefined || asset.sourceIndex !== undefined,\n );\n if (producerAssets.length > 0) {\n for (const asset of producerAssets) {\n const assetContract = validateProducerContract(asset);\n if (!assetContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: assetContract.error.code }],\n }),\n );\n }\n }\n const topologyContract = validateProducerOutputs(\n producerAssets.map((asset, sourceIndex) => ({\n guid: asset.guid,\n kind: asset.kind,\n sourceIndex: asset.sourceIndex ?? sourceIndex,\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n })),\n );\n if (!topologyContract.ok) {\n return packErr(\n makePackError('pack-malformed-pack', {\n path: packPath,\n ajvErrors: [{ instancePath: '/assets', message: topologyContract.error.code }],\n }),\n );\n }\n }\n for (const asset of packObj.assets) {\n if (!isValidAssetGuidString(asset.guid)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: asset.guid,\n reason: 'expected 36-char RFC 4122 dash-form UUID',\n }),\n );\n }\n for (const ref of asset.refs) {\n if (!isValidAssetGuidString(ref)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: ref,\n reason: 'expected 36-char RFC 4122 dash-form UUID in refs[]',\n }),\n );\n }\n }\n\n // Step 4: collision check\n const normalizedGuid = asset.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, packPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, packPath);\n\n // feat-20260608-scene-nesting-ecs-fication M1 / w14 (D-1):\n // mount-payload-extract — for scene assets, redundantly inject the\n // mount.source -> resolved GUID edge into the cycle graph alongside\n // asset.refs[]. By the .pack.json convention mount.source is an\n // integer index into the same asset.refs[], so the resolved GUID is\n // already present in `existingRefs`; this defensive pass guarantees\n // that any author-supplied mounts[] references participate in the\n // cycle DFS even if the schema-emitter forgot to mirror them into\n // refs[]. The `kind: 'mount-asset'` tag on the resulting\n // pack-cyclic-reference detail is set by the cycle producer below\n // (R10).\n packRefs.set(normalizedGuid, [\n ...asset.refs.map((ref) => ref.toLowerCase()),\n ...extractMountSourceGuids(asset),\n ]);\n }\n capture?.declarations.set(packPath, {\n format: 'pack.json',\n sourcePath: packPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n sourceText: raw,\n value: packObj,\n });\n }\n\n // Step 2 + 3 + 5: parse + schema validate + GUID format validate + orphan check for meta files\n const { paths: assetPaths } = loadAssetConfig(process.cwd());\n for (const metaPath of metaPaths) {\n const loaded = await readValidatedJson(metaPath, 'pack-malformed-meta', validateMeta);\n if (!loaded.ok) return loaded;\n const { raw, parsed } = loaded.value;\n\n const metaContract = validateProducerContract(parsed);\n if (!metaContract.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: metaPath,\n ajvErrors: [{ instancePath: '', message: metaContract.error.code }],\n }),\n );\n }\n\n // Step 3: validate GUIDs in meta subAssets\n const metaObj = parsed as unknown as MetaInventoryDocument;\n capture?.declarations.set(metaPath, {\n format: 'meta.json',\n sourcePath: metaPath,\n sourceRevision: `sha256:${createHash('sha256').update(raw).digest('hex')}`,\n value: metaObj,\n });\n for (const sub of metaObj.subAssets) {\n if (!isValidAssetGuidString(sub.guid)) {\n return packErr(\n makePackError('pack-guid-malformed', {\n raw: sub.guid,\n reason: 'expected 36-char RFC 4122 dash-form UUID in subAssets[].guid',\n }),\n );\n }\n const normalizedGuid = sub.guid.toLowerCase();\n const existing = guidToPath.get(normalizedGuid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', {\n paths: [existing, metaPath],\n guid: normalizedGuid,\n }),\n );\n }\n guidToPath.set(normalizedGuid, metaPath);\n }\n const producerSubAssets = metaObj.subAssets.length > 1 ? metaObj.subAssets : [];\n if (producerSubAssets.length > 0) {\n const topologyContract = validateProducerOutputs(producerSubAssets);\n if (!topologyContract.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: metaPath,\n ajvErrors: [{ instancePath: '/subAssets', message: topologyContract.error.code }],\n }),\n );\n }\n }\n\n // Step 5: orphan .meta.json check — the source file declared in meta.source must exist.\n // Uses resolveAssetSource for three-mode dispatch (undefined derivation / @name/ path table /\n // relative path), replacing the former hardcoded join(metaDir, metaObj.source).\n const sourceResolved = resolveAssetSource(metaPath, metaObj.source, assetPaths);\n if (!sourceResolved.ok) {\n return packErr(sourceResolved.error);\n }\n const expectedSourcePath = sourceResolved.value;\n try {\n await stat(expectedSourcePath);\n } catch {\n return packErr(\n makePackError('pack-orphan-meta', {\n metaPath,\n expectedFile: expectedSourcePath,\n }),\n );\n }\n }\n\n // ScriptablePack identity enters the same topology and collision authority as JSON declarations.\n for (const sourcePath of scriptablePaths) {\n let source: string;\n try {\n source = await readFile(sourcePath, 'utf8');\n } catch {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: 'ScriptablePack source read failed' }],\n }),\n );\n }\n const loaded = await loadScriptablePack(sourcePath, {\n ...(opts.scriptablePack ?? {}),\n ...(capture === undefined ? { metadataOnly: true } : {}),\n });\n if (!loaded.ok) {\n const diagnostic =\n 'diagnostic' in loaded.error.detail ? loaded.error.detail.diagnostic : undefined;\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [\n {\n instancePath: '',\n message:\n diagnostic === undefined\n ? loaded.error.code\n : `${loaded.error.code}: ${diagnostic}`,\n },\n ],\n }),\n );\n }\n let sourceClosure: readonly ScriptablePackSourceClosureEntry[];\n try {\n sourceClosure = await inventoryScriptablePackSource(sourcePath, source);\n } catch {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '', message: 'ScriptablePack source closure read failed' }],\n }),\n );\n }\n const meta = projectScriptablePackMeta(loaded.value, sourcePath);\n const topology = validateProducerOutputs(meta.subAssets);\n if (!topology.ok) {\n return packErr(\n makePackError('pack-malformed-meta', {\n path: sourcePath,\n ajvErrors: [{ instancePath: '/subAssets', message: topology.error.code }],\n }),\n );\n }\n const declaration = {\n sourcePath,\n sourceRevision: `sha256:${createHash('sha256').update(source).digest('hex')}`,\n meta,\n definition: loaded.value,\n sourceClosure,\n } satisfies ScriptablePackInventoryDeclaration;\n capture?.declarations.set(sourcePath, {\n format: 'pack.ts',\n ...declaration,\n value: meta,\n });\n for (const sub of meta.subAssets) {\n const guid = sub.guid.toLowerCase();\n const existing = guidToPath.get(guid);\n if (existing !== undefined) {\n return packErr(\n makePackError('pack-guid-collision', { paths: [existing, sourcePath], guid }),\n );\n }\n guidToPath.set(guid, sourcePath);\n }\n }\n\n // Step 6: cyclic reference detection via hand-written DFS (no graphlib dep)\n // visited: nodes fully processed; recStack: nodes in current DFS path\n const visited = new Set<string>();\n const recStack = new Set<string>();\n\n function dfs(guid: string, path: string[]): string[] | null {\n visited.add(guid);\n recStack.add(guid);\n\n for (const ref of packRefs.get(guid) ?? []) {\n if (!visited.has(ref)) {\n const cycle = dfs(ref, [...path, ref]);\n if (cycle !== null) return cycle;\n } else if (recStack.has(ref)) {\n // Found a back-edge: reconstruct cycle from the repeated node\n const cycleStart = path.indexOf(ref);\n return cycleStart >= 0 ? [...path.slice(cycleStart), ref] : [...path, ref];\n }\n }\n\n recStack.delete(guid);\n return null;\n }\n\n for (const guid of guidToPath.keys()) {\n if (!visited.has(guid)) {\n const cycle = dfs(guid, [guid]);\n if (cycle !== null) {\n return packErr(\n makePackError('pack-cyclic-reference', {\n code: 'pack-cyclic-reference',\n kind: 'mount-asset',\n cycle,\n }),\n );\n }\n }\n }\n\n return ok(rawPaths);\n}\n\n/** Scan one complete Pack inventory while preserving the public path-only API. */\nexport async function scan(\n roots: readonly string[],\n opts: ScanOptions = {},\n): Promise<ScanResult<string[], PackError>> {\n return scanValidated(roots, opts);\n}\n\n/** Return the validated source inventory without interpreting producer output kinds. */\nexport async function scanInventory(\n roots: readonly string[],\n opts: ScanOptions = {},\n): Promise<ScanResult<ScanInventory, PackError>> {\n const declarations = new Map<string, ScanSourceDeclaration>();\n const scanned = await scanValidated(roots, opts, { declarations });\n if (!scanned.ok) return scanned;\n const inventory: InventoryDeclaration[] = [];\n for (const sourcePath of scanned.value) {\n const declaration = declarations.get(sourcePath);\n if (declaration?.format !== 'pack.json') continue;\n for (const [index, asset] of declaration.value.assets.entries()) {\n inventory.push({\n guid: asset.guid,\n kind: asset.kind,\n sourcePath,\n sourceRevision: declaration.sourceRevision,\n ...(asset.sourceKey === undefined ? {} : { sourceKey: asset.sourceKey }),\n ...(asset.sourceIndex === undefined\n ? { sourceIndex: index }\n : { sourceIndex: asset.sourceIndex }),\n });\n }\n }\n return ok({ paths: scanned.value, inventory, declarations });\n}\n","import { isAbsolute, relative } from 'node:path';\nimport type { PackIndexEntry, ProviderProvenance } from '@forgeax/engine-types';\nimport {\n findReservedAssetKindConflict,\n projectExternalCatalogEntries,\n projectPackageCatalog,\n} from './catalog-projection.js';\nimport { loadAssetConfig } from './config.js';\nimport { deriveAssetName } from './deriveAssetName.js';\nimport { resolveAssetSource } from './resolve-asset-source.js';\nimport {\n type MetaInventoryDocument,\n type ScanOptions,\n type ScanSourceDeclaration,\n scanInventory,\n} from './scanner.js';\n\ntype CatalogImportMeta = Pick<\n MetaInventoryDocument,\n | 'importer'\n | 'packageId'\n | 'provenance'\n | 'revision'\n | 'diagnostics'\n | 'importSettings'\n | 'sourceOverrides'\n | 'subAssets'\n> & {\n readonly source: string;\n readonly sourceRevision?: string;\n readonly buildPack?: boolean;\n};\n\nexport type CatalogBuildErrorCode =\n | 'catalog-meta-schema-invalid'\n | 'catalog-scan-failed'\n | 'catalog-raw-source-unsupported'\n | 'catalog-scriptable-pack-invalid'\n | 'catalog-host-kind-conflict';\n\nexport interface CatalogBuildError {\n readonly code: CatalogBuildErrorCode;\n readonly path: string;\n readonly message: string;\n readonly expected?: string;\n readonly actual?: string;\n readonly hint?: string;\n readonly subjects?: readonly string[];\n}\n\nexport type CatalogAuthority = 'authoritative' | 'degraded';\n\nexport interface CatalogBuildResult {\n readonly schemaVersion: 'catalog-legacy-v1';\n readonly entries: readonly PackIndexEntry[];\n readonly authority: CatalogAuthority;\n readonly diagnostics: readonly CatalogBuildError[];\n readonly declarations: ReadonlyMap<string, CatalogImportMeta>;\n readonly sourceDeclarations: ReadonlyMap<string, ScanSourceDeclaration>;\n}\n\nexport type CatalogProducerVisibility = (\n input: Pick<MetaInventoryDocument, 'importer' | 'importSettings' | 'subAssets'>,\n) => boolean;\n\nexport interface CatalogImporterPolicy {\n readonly disposition: 'publish' | 'exclude' | 'missing';\n readonly expected: string;\n readonly hint: string;\n readonly hostProvided: boolean;\n}\n\nexport interface CatalogBuildProjectionOptions {\n readonly base?: string;\n readonly scanOptions?: ScanOptions;\n readonly importerPolicy: (importer: string) => CatalogImporterPolicy;\n readonly visibility?: CatalogProducerVisibility;\n /**\n * Project physical source paths into a stable host-owned logical identity.\n * Scanner/declaration maps retain physical paths for I/O; only Catalog rows\n * use this projection so symlink farms cannot change publication identity.\n */\n readonly sourceIdentityFor?: (sourcePath: string) => string;\n}\n\nfunction sourcePathFor(cwd: string, path: string): string {\n return relative(cwd, path).replace(/\\\\/g, '/');\n}\n\n/**\n * Project one physical source path into the catalog's browser-safe logical\n * locator. Physical paths remain the scanner/declaration keys; only catalog\n * rows use this projection.\n */\nexport function catalogSourcePathFor(\n cwd: string,\n path: string,\n sourceIdentityFor: CatalogBuildProjectionOptions['sourceIdentityFor'],\n): string {\n const projected = sourceIdentityFor?.(path);\n // A host may intentionally leave paths outside its logical roots untouched.\n // Keep the catalog's existing cwd-relative URL contract for that fallback;\n // an absolute physical path is a valid dependency identity, but not a\n // browser-served catalog locator.\n const catalogPath =\n projected === undefined || isAbsolute(projected) ? sourcePathFor(cwd, path) : projected;\n return catalogPath.replaceAll('\\\\', '/').replace(/^\\.\\//, '');\n}\n\nexport function metaPathForGuid(\n declarations: ReadonlyMap<string, CatalogImportMeta>,\n guid: string,\n): string | undefined {\n const lower = guid.toLowerCase();\n for (const [path, declaration] of declarations) {\n if (declaration.subAssets.some((asset) => asset.guid.toLowerCase() === lower)) return path;\n }\n return undefined;\n}\n\nfunction unsupportedPolicyError(\n path: string,\n importer: string,\n policy: CatalogImporterPolicy,\n): CatalogBuildError {\n return {\n code: 'catalog-raw-source-unsupported',\n path,\n message: `sidecar provider ${JSON.stringify(importer)} cannot publish a Catalog product`,\n expected: policy.expected,\n actual: importer,\n hint: policy.hint,\n subjects: [path],\n };\n}\n\nfunction projectMeta(\n rawPath: string,\n cwd: string,\n base: string,\n assetPaths: Record<string, string>,\n importerPolicy: (importer: string) => CatalogImporterPolicy,\n sourceDeclaration: Extract<ScanSourceDeclaration, { readonly format: 'meta.json' }>,\n sourceIdentityFor: CatalogBuildProjectionOptions['sourceIdentityFor'],\n): {\n readonly entries: PackIndexEntry[];\n readonly declaration?: CatalogImportMeta;\n readonly error?: CatalogBuildError;\n} {\n const meta = sourceDeclaration.value;\n const policy = importerPolicy(meta.importer);\n if (policy.disposition !== 'publish') {\n return { entries: [], error: unsupportedPolicyError(rawPath, meta.importer, policy) };\n }\n const resolved = resolveAssetSource(rawPath, meta.source, assetPaths);\n if (!resolved.ok) {\n return {\n entries: [],\n error: {\n code: 'catalog-meta-schema-invalid',\n path: rawPath,\n message: `source resolution failed: ${resolved.error.code} - ${resolved.error.hint}`,\n },\n };\n }\n const sourcePath = catalogSourcePathFor(cwd, resolved.value, sourceIdentityFor);\n const packageUrl = `${base}/__forgeax-ddc/${meta.subAssets[0]?.guid?.toLowerCase() ?? 'pack'}.pack.json`;\n const declaration: CatalogImportMeta = {\n importer: meta.importer,\n source: resolved.value,\n sourceRevision: sourceDeclaration.sourceRevision,\n ...(meta.packageId === undefined ? {} : { packageId: meta.packageId }),\n ...(meta.provenance === undefined ? {} : { provenance: meta.provenance }),\n ...(meta.revision === undefined ? {} : { revision: meta.revision }),\n ...(meta.diagnostics === undefined ? {} : { diagnostics: meta.diagnostics }),\n importSettings: meta.importSettings,\n ...(meta.sourceOverrides === undefined ? {} : { sourceOverrides: meta.sourceOverrides }),\n subAssets: meta.subAssets,\n };\n if (policy.hostProvided) {\n const conflict = findReservedAssetKindConflict(meta.subAssets);\n if (conflict !== undefined) {\n return {\n entries: [],\n error: {\n code: 'catalog-host-kind-conflict',\n path: rawPath,\n message: `registered provider ${JSON.stringify(meta.importer)} declares reserved asset kind ${JSON.stringify(conflict.kind)}`,\n expected: 'host provider kinds must not use engine-owned Pack kinds',\n actual: conflict.kind,\n hint: 'rename the provider kind to a provider-owned namespace before rebuilding',\n subjects: [rawPath],\n },\n };\n }\n }\n return {\n declaration,\n entries: projectExternalCatalogEntries(meta, sourcePath, packageUrl, meta.subAssets, (output) =>\n deriveAssetName(resolved.value, meta.subAssets.length, output.name),\n ),\n };\n}\n\nfunction projectSource(\n path: string,\n cwd: string,\n base: string,\n assetPaths: Record<string, string>,\n importerPolicy: (importer: string) => CatalogImporterPolicy,\n visibility: CatalogBuildProjectionOptions['visibility'],\n sourceDeclaration: ScanSourceDeclaration,\n declarations: Map<string, CatalogImportMeta>,\n sourceIdentityFor: CatalogBuildProjectionOptions['sourceIdentityFor'],\n): { readonly entries: PackIndexEntry[]; readonly error?: CatalogBuildError } {\n if (sourceDeclaration.format === 'pack.ts') {\n const meta = { ...sourceDeclaration.meta, source: sourcePathFor(cwd, path) };\n const anchorGuid = meta.subAssets.map((asset) => asset.guid.toLowerCase()).sort()[0];\n return anchorGuid === undefined\n ? { entries: [] }\n : {\n entries: projectExternalCatalogEntries(\n meta,\n catalogSourcePathFor(cwd, path, sourceIdentityFor),\n `${base}/__forgeax-ddc/${anchorGuid}.pack.json`,\n meta.subAssets,\n (output) => deriveAssetName(path, meta.subAssets.length, output.name),\n ),\n };\n }\n if (sourceDeclaration.format === 'meta.json') {\n const policy = importerPolicy(sourceDeclaration.value.importer);\n if (\n policy.disposition === 'publish' &&\n visibility?.({\n importer: sourceDeclaration.value.importer,\n importSettings: sourceDeclaration.value.importSettings,\n subAssets: sourceDeclaration.value.subAssets,\n }) === false\n ) {\n return { entries: [] };\n }\n const projected = projectMeta(\n path,\n cwd,\n base,\n assetPaths,\n importerPolicy,\n sourceDeclaration,\n sourceIdentityFor,\n );\n if (projected.declaration !== undefined) declarations.set(path, projected.declaration);\n return projected;\n }\n const parsed = sourceDeclaration.value;\n const sourcePath = catalogSourcePathFor(cwd, path, sourceIdentityFor);\n const provenance =\n parsed.provenance ??\n ({ provider: 'pack', version: parsed.schemaVersion } satisfies ProviderProvenance);\n return {\n entries: projectPackageCatalog(\n parsed.assets.map((asset, sourceIndex) => ({\n ...asset,\n sourcePath,\n sourceIndex: asset.sourceIndex ?? sourceIndex,\n ...(parsed.packageId === undefined ? {} : { packageId: parsed.packageId }),\n provenance,\n ...(parsed.revision === undefined ? {} : { revision: parsed.revision }),\n ...(parsed.diagnostics === undefined ? {} : { diagnostics: parsed.diagnostics }),\n name: deriveAssetName(path, parsed.assets.length, asset.name),\n })),\n `${base}/${sourcePath}`,\n ),\n };\n}\n\nfunction warnErrors(errors: readonly CatalogBuildError[]): void {\n for (const error of errors) {\n console.warn(`[forgeax-pack] catalog error ${error.code} @ ${error.path}: ${error.message}`);\n }\n}\n\nexport async function buildCatalogProjection(\n roots: readonly string[],\n options: CatalogBuildProjectionOptions,\n): Promise<CatalogBuildResult> {\n const empty = (\n authority: CatalogAuthority,\n diagnostics: readonly CatalogBuildError[] = [],\n ): CatalogBuildResult => ({\n schemaVersion: 'catalog-legacy-v1',\n entries: [],\n authority,\n diagnostics,\n declarations: new Map(),\n sourceDeclarations: new Map(),\n });\n if (roots.length === 0) return empty('authoritative');\n const cwd = process.cwd();\n const base = (options.base ?? '/').replace(/\\/$/, '');\n const scanned = await scanInventory(roots, options.scanOptions);\n if (!scanned.ok) {\n const message =\n scanned.error.detail === undefined\n ? scanned.error.message\n : `${scanned.error.message}; detail=${JSON.stringify(scanned.error.detail)}`;\n const error: CatalogBuildError = {\n code: 'catalog-scan-failed',\n path: '<scan>',\n message,\n expected: 'one inventory scan across all Catalog roots to pass Pack scanning',\n actual: message,\n hint: 'repair the roots before treating any Catalog rows as authoritative',\n subjects: [...roots],\n };\n warnErrors([error]);\n return empty('degraded', [error]);\n }\n const { paths, declarations: sourceDeclarations } = scanned.value;\n const { paths: assetPaths } = loadAssetConfig(cwd);\n const entries: PackIndexEntry[] = [];\n const errors: CatalogBuildError[] = [];\n const declarations = new Map<string, CatalogImportMeta>();\n for (const path of paths) {\n const sourceDeclaration = sourceDeclarations.get(path);\n if (sourceDeclaration === undefined) continue;\n const projected = projectSource(\n path,\n cwd,\n base,\n assetPaths,\n options.importerPolicy,\n options.visibility,\n sourceDeclaration,\n declarations,\n options.sourceIdentityFor,\n );\n entries.push(...projected.entries);\n if (projected.error !== undefined) errors.push(projected.error);\n }\n warnErrors(errors);\n return {\n schemaVersion: 'catalog-legacy-v1',\n entries,\n authority: errors.length === 0 ? 'authoritative' : 'degraded',\n diagnostics: errors,\n declarations,\n sourceDeclarations,\n };\n}\n","import type {\n ExistingOutput,\n ImportedOutputDeclaration,\n KindChange,\n MatchConflict,\n ProposedOutput,\n TopologyDiff,\n TopologyPreserved,\n} from '@forgeax/engine-types';\n\nfunction sourceKey(output: ImportedOutputDeclaration): string | undefined {\n return output.sourceKey === undefined || output.sourceKey.length === 0\n ? undefined\n : output.sourceKey;\n}\n\nfunction bySourceKey<T extends ImportedOutputDeclaration>(\n outputs: readonly T[],\n side: 'previous' | 'next',\n ambiguous: MatchConflict[],\n duplicateKeys: Set<string>,\n): Map<string, T> {\n const result = new Map<string, T>();\n for (const output of outputs) {\n const key = sourceKey(output);\n if (key === undefined) continue;\n const prior = result.get(key);\n if (prior !== undefined) {\n duplicateKeys.add(key);\n ambiguous.push({\n reason: 'duplicate-source-key',\n sourceKey: key,\n previous: side === 'previous' ? [prior as ExistingOutput, output as ExistingOutput] : [],\n next: side === 'next' ? [prior as ProposedOutput, output as ProposedOutput] : [],\n });\n continue;\n }\n result.set(key, output);\n }\n return result;\n}\n\nfunction topologyKey(output: ImportedOutputDeclaration): string {\n return `source-index:${output.sourceIndex}`;\n}\n\n/**\n * Match importer output declarations without treating sourceIndex or array\n * position as identity. A stable producer sourceKey preserves the prior GUID;\n * multi-output declarations without one are explicitly ambiguous.\n */\nexport function diffTopology(\n previous: readonly ExistingOutput[],\n next: readonly ProposedOutput[],\n): TopologyDiff {\n const preserved: TopologyPreserved[] = [];\n const added: ProposedOutput[] = [];\n const removed: ExistingOutput[] = [];\n const changedKind: KindChange[] = [];\n const ambiguous: MatchConflict[] = [];\n const duplicateKeys = new Set<string>();\n const previousByKey = bySourceKey(previous, 'previous', ambiguous, duplicateKeys);\n const nextByKey = bySourceKey(next, 'next', ambiguous, duplicateKeys);\n const matchedPrevious = new Set<ExistingOutput>();\n const matchedNext = new Set<ProposedOutput>();\n\n for (const [key, oldOutput] of previousByKey) {\n if (duplicateKeys.has(key)) continue;\n const newOutput = nextByKey.get(key);\n if (newOutput === undefined) {\n removed.push(oldOutput);\n continue;\n }\n matchedPrevious.add(oldOutput);\n matchedNext.add(newOutput);\n if (oldOutput.kind === newOutput.kind) {\n preserved.push({ guid: oldOutput.guid, oldKey: key, newKey: key });\n } else {\n const preservesGuid = newOutput.compatiblePreviousKinds?.includes(oldOutput.kind) === true;\n changedKind.push({\n guid: oldOutput.guid,\n oldKind: oldOutput.kind,\n newKind: newOutput.kind,\n sourceKey: key,\n action: preservesGuid ? 'preserve-guid' : 'remove-add',\n });\n if (preservesGuid) {\n preserved.push({ guid: oldOutput.guid, oldKey: key, newKey: key });\n } else {\n removed.push(oldOutput);\n added.push(newOutput);\n }\n }\n }\n\n for (const [key, newOutput] of nextByKey) {\n if (duplicateKeys.has(key)) continue;\n if (!previousByKey.has(key)) added.push(newOutput);\n }\n\n // A duplicate producer key is a conflict, not a permission to choose the\n // first map entry. Keep every affected declaration in remove/add evidence\n // while leaving GUID preservation empty until the producer repairs the key.\n for (const output of previous) {\n const key = sourceKey(output);\n if (key !== undefined && duplicateKeys.has(key)) removed.push(output);\n }\n for (const output of next) {\n const key = sourceKey(output);\n if (key !== undefined && duplicateKeys.has(key)) added.push(output);\n }\n\n const unkeyedPrevious = previous.filter(\n (output) => sourceKey(output) === undefined && !matchedPrevious.has(output),\n );\n const unkeyedNext = next.filter(\n (output) => sourceKey(output) === undefined && !matchedNext.has(output),\n );\n\n if (unkeyedPrevious.length === 1 && unkeyedNext.length === 1) {\n const oldOutput = unkeyedPrevious[0];\n const newOutput = unkeyedNext[0];\n if (oldOutput !== undefined && newOutput !== undefined) {\n if (oldOutput.kind === newOutput.kind) {\n preserved.push({\n guid: oldOutput.guid,\n oldKey: topologyKey(oldOutput),\n newKey: topologyKey(newOutput),\n });\n } else {\n changedKind.push({\n guid: oldOutput.guid,\n oldKind: oldOutput.kind,\n newKind: newOutput.kind,\n action: 'remove-add',\n });\n removed.push(oldOutput);\n added.push(newOutput);\n }\n }\n } else if (unkeyedPrevious.length > 0 || unkeyedNext.length > 0) {\n ambiguous.push({\n reason:\n unkeyedPrevious.length > 1 || unkeyedNext.length > 1\n ? 'source-index-ambiguous'\n : 'missing-source-key',\n previous: unkeyedPrevious,\n next: unkeyedNext,\n });\n }\n\n return { preserved, added, removed, changedKind, ambiguous };\n}\n\nexport const calculateTopologyDiff = diffTopology;\n\n/** Alias named after the producer-facing contract wording. */\n","import type {\n CatalogDelta,\n CatalogDiagnostic,\n CatalogRevisionWindow,\n ImportedOutputDeclaration,\n PackIndexEntry,\n} from '@forgeax/engine-types';\nimport { catalogEntryDigest } from '@forgeax/engine-types';\nimport { diffTopology } from './topology.js';\n\nfunction rowsByGuid(rows: readonly PackIndexEntry[]): Map<string, PackIndexEntry> {\n return new Map(rows.map((row) => [row.guid.toLowerCase(), row]));\n}\n\nfunction sameRow(left: PackIndexEntry, right: PackIndexEntry): boolean {\n return catalogEntryDigest(left) === catalogEntryDigest(right);\n}\n\nfunction topologyGroups(rows: readonly PackIndexEntry[]): Map<string, ImportedOutputDeclaration[]> {\n const groups = new Map<string, ImportedOutputDeclaration[]>();\n for (const row of rows) {\n // Legacy catalog rows have neither producer topology field. Do not turn\n // their incidental catalog position into a false topology claim.\n if (row.packageId === undefined) continue;\n if (row.sourceKey === undefined && row.sourceIndex === undefined) continue;\n const groupId = row.packageId;\n const group = groups.get(groupId) ?? [];\n group.push({\n guid: row.guid,\n ...(row.sourceKey !== undefined ? { sourceKey: row.sourceKey } : {}),\n sourceIndex: row.sourceIndex ?? 0,\n kind: row.kind,\n ...(row.name !== undefined ? { name: row.name } : {}),\n });\n groups.set(groupId, group);\n }\n return groups;\n}\n\nfunction revisionDiagnostic(\n code: string,\n expected: string,\n actual: string,\n hint: string,\n rootId?: string,\n): CatalogDiagnostic {\n return {\n code,\n severity: 'blocking',\n authority: 'catalog',\n expected,\n actual,\n hint,\n ...(rootId === undefined ? {} : { subject: { type: 'package' as const, id: rootId } }),\n };\n}\n\nfunction checkRevisionContinuity(\n window: CatalogRevisionWindow,\n hasChanges: boolean,\n): CatalogDiagnostic | undefined {\n const baselineByRoot = new Map(window.baseline.map((point) => [point.rootId, point]));\n const currentByRoot = new Map(window.current.map((point) => [point.rootId, point]));\n\n for (const point of window.current) {\n const baseline = baselineByRoot.get(point.rootId);\n if (baseline === undefined) {\n return revisionDiagnostic(\n 'catalog-revision-conflict',\n 'every current root must have a verified baseline',\n point.rootId,\n 'restore the latest verified snapshot for this root before applying the delta',\n point.rootId,\n );\n }\n if (point.revision < baseline.revision) {\n return revisionDiagnostic(\n 'catalog-revision-stale',\n 'current revision must not be older than baseline',\n `${baseline.revision} -> ${point.revision}`,\n 'discard the stale update and request a fresh catalog snapshot',\n point.rootId,\n );\n }\n if (point.revision === baseline.revision && hasChanges) {\n return revisionDiagnostic(\n 'catalog-revision-conflict',\n 'a changed delta must advance the root revision',\n `${baseline.revision} -> ${point.revision}`,\n 'keep the verified baseline and serialize concurrent updates before retrying',\n point.rootId,\n );\n }\n if (point.revision > baseline.revision + 1) {\n return revisionDiagnostic(\n 'catalog-revision-conflict',\n 'the next revision must be exactly baseline + 1',\n `${baseline.revision} -> ${point.revision}`,\n 'request the missing revisions or rebuild from the latest verified snapshot',\n point.rootId,\n );\n }\n }\n\n for (const point of window.baseline) {\n if (!currentByRoot.has(point.rootId)) {\n return revisionDiagnostic(\n 'catalog-revision-conflict',\n 'every baseline root must be present in the current revision set',\n point.rootId,\n 'do not apply a partial root set over the verified baseline',\n point.rootId,\n );\n }\n }\n\n return undefined;\n}\n\n/**\n * Derives one neutral delta from consecutive complete catalog projections.\n *\n * The returned fields are canonical POD fields: topology, revision continuity,\n * authority, and diagnostics remain structured so AI consumers do not parse\n * producer or transport messages. Degraded results intentionally contain no\n * added, changed, or removed identity rows.\n */\nexport function calculateCatalogDelta(\n previous: readonly PackIndexEntry[],\n next: readonly PackIndexEntry[],\n revision?: CatalogRevisionWindow,\n): CatalogDelta | undefined {\n const before = rowsByGuid(previous);\n const after = rowsByGuid(next);\n const added: PackIndexEntry[] = [];\n const changed: PackIndexEntry[] = [];\n const removed: string[] = [];\n\n for (const [guid, row] of after) {\n const prior = before.get(guid);\n if (prior === undefined) added.push(row);\n else if (!sameRow(prior, row)) changed.push(row);\n }\n for (const guid of before.keys()) {\n if (!after.has(guid)) removed.push(guid);\n }\n\n const previousGroups = topologyGroups(previous);\n const nextGroups = topologyGroups(next);\n const topology = [];\n const groupIds = new Set([...previousGroups.keys(), ...nextGroups.keys()]);\n for (const groupId of groupIds) {\n const diff = diffTopology(previousGroups.get(groupId) ?? [], nextGroups.get(groupId) ?? []);\n if (\n diff.added.length > 0 ||\n diff.removed.length > 0 ||\n diff.changedKind.length > 0 ||\n diff.ambiguous.length > 0\n ) {\n topology.push(diff);\n }\n }\n\n const hasChanges =\n added.length > 0 || changed.length > 0 || removed.length > 0 || topology.length > 0;\n if (!hasChanges) return undefined;\n\n const delta = { added, changed, removed, ...(topology.length > 0 ? { topology } : {}) };\n if (revision === undefined) return delta;\n\n const diagnostic = checkRevisionContinuity(revision, hasChanges);\n if (diagnostic !== undefined) {\n return {\n added: [],\n changed: [],\n removed: [],\n authority: 'degraded',\n diagnostics: [diagnostic],\n revisions: revision,\n };\n }\n\n return {\n ...delta,\n authority: 'authoritative',\n diagnostics: [],\n revisions: revision,\n };\n}\n","import type {\n MaterialAsset,\n MaterialParameter,\n MaterialPass,\n MaterialTextureReference,\n MaterialTextureValue,\n MaterialValue,\n Result,\n} from '@forgeax/engine-types';\nimport { err, MATERIAL_TEXTURE_SLOTS, ok } from '@forgeax/engine-types';\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { bytesToHex } from '@noble/hashes/utils.js';\n\nexport interface MaterialCookRefs {\n readonly parent: readonly string[];\n readonly textures: readonly string[];\n readonly samplers: readonly string[];\n readonly modules: readonly string[];\n}\n\nexport interface MaterialCookArtifact {\n readonly mediaType: string;\n readonly path: string;\n readonly digest: string;\n readonly bytes: Uint8Array;\n}\n\nexport interface MaterialCookWasmProvenance {\n readonly sourceContentKey: string;\n readonly artifactSha256: string;\n readonly glueSha256: string;\n}\n\nexport interface MaterialCookIdentity {\n readonly materialContractDigest: string;\n readonly sourceRevision: string;\n readonly sourceClosureDigest: string;\n readonly layoutIdentity: string;\n readonly programIdentity: string;\n readonly pipelineIdentity: string;\n readonly materialPublicationIdentity: string;\n readonly cookIdentity: string;\n readonly compilerFingerprint: string;\n readonly wasm: MaterialCookWasmProvenance;\n readonly artifactDigest: string;\n readonly valueGeneration: number;\n readonly dependencyGeneration: number;\n readonly cookGeneration: number;\n}\n\nexport type MaterialCookIdentityInput = Omit<MaterialCookIdentity, 'cookIdentity'>;\n\nexport interface MaterialCookReceipt {\n readonly schemaVersion: 'material-cook/3';\n readonly sourceClosure: readonly string[];\n readonly profile: string;\n readonly compilerVersion: string;\n readonly identity: MaterialCookIdentity;\n readonly derivedInterface: { readonly layoutIdentity: string };\n}\n\nexport interface MaterialParameterContract {\n readonly parameters: readonly MaterialParameter[];\n readonly values: Readonly<Record<string, MaterialValue | null>>;\n}\n\nexport interface CookedMaterialRecord {\n readonly schemaVersion: 'material-cook/3';\n readonly guid: string;\n readonly authored?: MaterialAsset;\n readonly materialGuid?: string;\n readonly publicationGeneration?: number;\n readonly specializationKey?: string;\n readonly artifactDigest?: string;\n readonly sourceClosure?: readonly string[];\n readonly parameterContract?: MaterialParameterContract;\n readonly resolved: {\n readonly passes: readonly MaterialPass[];\n readonly parameters: readonly MaterialParameter[];\n readonly values: Readonly<Record<string, MaterialValue | null>>;\n };\n readonly refs: MaterialCookRefs;\n readonly artifact: MaterialCookArtifact;\n readonly receipt: MaterialCookReceipt;\n}\n\nexport interface MaterialCookRecordError {\n readonly code: 'material-cook-record-invalid';\n readonly expected: string;\n readonly hint: string;\n readonly detail: {\n readonly field: string;\n readonly actual?: unknown;\n readonly action: string;\n };\n}\n\nexport interface MaterialCookIdentityExpectation {\n readonly layoutIdentity?: string;\n readonly artifactDigest?: string;\n readonly inputDigest?: string;\n}\n\nfunction unique(values: readonly string[]): readonly string[] {\n return [...new Set(values)].sort();\n}\n\nfunction guidText(value: string | Uint8Array): string {\n return typeof value === 'string'\n ? value\n : Array.from(value, (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n\nfunction cookGuidText(value: MaterialTextureReference): string | undefined {\n return typeof value === 'number' ? undefined : guidText(value);\n}\n\nfunction textureValues(\n values: Readonly<Record<string, MaterialValue | null>> | undefined,\n textureFields: ReadonlySet<string>,\n): readonly MaterialTextureValue[] {\n return Object.entries(values ?? {}).flatMap(([name, value]) => {\n if (value === null) return [];\n if (typeof value === 'string') {\n return textureFields.has(name) ? [{ texture: value }] : [];\n }\n return value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n 'texture' in value\n ? [value as MaterialTextureValue]\n : [];\n });\n}\n\nexport function collectMaterialCookRefs(material: Partial<MaterialAsset>): MaterialCookRefs {\n const textureFields =\n material.parameters === undefined\n ? new Set<string>(MATERIAL_TEXTURE_SLOTS)\n : new Set(\n material.parameters\n .filter((parameter) => parameter.type === 'texture')\n .map((parameter) => parameter.name),\n );\n const textures = textureValues(material.values, textureFields);\n return {\n parent: material.parent ? [guidText(material.parent)] : [],\n textures: unique(\n textures.flatMap((value) => {\n const guid = cookGuidText(value.texture);\n return guid === undefined ? [] : [guid];\n }),\n ),\n samplers: unique(\n textures.flatMap((value) => {\n if (value.sampler === undefined) return [];\n const guid = cookGuidText(value.sampler);\n return guid === undefined ? [] : [guid];\n }),\n ),\n modules: unique((material.passes ?? []).map((pass) => pass.program.module)),\n };\n}\n\nexport function createMaterialArtifactDigest(bytes: Uint8Array): string {\n return `sha256:${bytesToHex(sha256(bytes))}`;\n}\n\nfunction jsonValue(value: unknown): unknown {\n if (value instanceof Uint8Array) return [...value];\n if (Array.isArray(value)) return value.map(jsonValue);\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([, entry]) => entry !== undefined)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, entry]) => [key, jsonValue(entry)]),\n );\n }\n return value;\n}\n\nexport function createMaterialCookIdentity(input: MaterialCookIdentityInput): MaterialCookIdentity {\n const cookIdentity = createMaterialArtifactDigest(\n new TextEncoder().encode(\n JSON.stringify(\n jsonValue({\n materialContractDigest: input.materialContractDigest,\n sourceRevision: input.sourceRevision,\n sourceClosureDigest: input.sourceClosureDigest,\n layoutIdentity: input.layoutIdentity,\n programIdentity: input.programIdentity,\n pipelineIdentity: input.pipelineIdentity,\n compilerFingerprint: input.compilerFingerprint,\n wasm: input.wasm,\n artifactDigest: input.artifactDigest,\n }),\n ),\n ),\n );\n return { ...input, cookIdentity };\n}\n\nexport function serializeCookedMaterialRecord(record: CookedMaterialRecord): string {\n return JSON.stringify(jsonValue(record));\n}\n\nexport function serializeMaterialCookReceipt(receipt: MaterialCookReceipt): string {\n return JSON.stringify(jsonValue({ ...receipt, sourceClosure: unique(receipt.sourceClosure) }));\n}\n\nfunction invalid(field: string, actual?: unknown): Result<never, MaterialCookRecordError> {\n return err({\n code: 'material-cook-record-invalid',\n expected: 'a complete material-cook/3 record with layered identity and provenance',\n hint: 're-cook the material and publish its record, artifact, references, and receipt together',\n detail: {\n field,\n ...(actual === undefined ? {} : { actual }),\n action: 'inspect the named field and recook the material generation',\n },\n });\n}\n\nconst IDENTITY_FIELDS = [\n 'materialContractDigest',\n 'sourceRevision',\n 'sourceClosureDigest',\n 'layoutIdentity',\n 'programIdentity',\n 'pipelineIdentity',\n 'materialPublicationIdentity',\n 'cookIdentity',\n 'compilerFingerprint',\n 'artifactDigest',\n] as const;\n\nfunction isGeneration(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 1;\n}\n\nfunction validateIdentity(value: unknown): Result<MaterialCookIdentity, MaterialCookRecordError> {\n if (value === null || typeof value !== 'object') return invalid('receipt.identity', value);\n const candidate = value as Record<string, unknown>;\n for (const field of IDENTITY_FIELDS) {\n if (typeof candidate[field] !== 'string' || candidate[field].length === 0) {\n return invalid(`receipt.identity.${field}`, candidate[field]);\n }\n }\n if (candidate.wasm === null || typeof candidate.wasm !== 'object') {\n return invalid('receipt.identity.wasm', candidate.wasm);\n }\n const wasm = candidate.wasm as Record<string, unknown>;\n for (const field of ['sourceContentKey', 'artifactSha256', 'glueSha256']) {\n if (typeof wasm[field] !== 'string' || wasm[field].length === 0) {\n return invalid(`receipt.identity.wasm.${field}`, wasm[field]);\n }\n }\n for (const field of ['valueGeneration', 'dependencyGeneration', 'cookGeneration']) {\n if (!isGeneration(candidate[field]))\n return invalid(`receipt.identity.${field}`, candidate[field]);\n }\n return ok({\n ...candidate,\n wasm: wasm as unknown as MaterialCookWasmProvenance,\n } as MaterialCookIdentity);\n}\n\nexport function validateMaterialCookReceipt(\n value: unknown,\n expected: MaterialCookIdentityExpectation = {},\n): Result<MaterialCookReceipt, MaterialCookRecordError> {\n if (value === null || typeof value !== 'object') return invalid('receipt');\n const candidate = value as Record<string, unknown>;\n if (candidate.schemaVersion !== 'material-cook/3')\n return invalid('receipt.schemaVersion', candidate.schemaVersion);\n const identityResult = validateIdentity(candidate.identity);\n if (!identityResult.ok) return identityResult;\n const identity = identityResult.value;\n if (candidate.derivedInterface === null || typeof candidate.derivedInterface !== 'object') {\n return invalid('receipt.derivedInterface', candidate.derivedInterface);\n }\n const derivedInterface = candidate.derivedInterface as Record<string, unknown>;\n if (derivedInterface.layoutIdentity !== identity.layoutIdentity) {\n return invalid('receipt.derivedInterface.layoutIdentity', derivedInterface.layoutIdentity);\n }\n for (const field of ['sourceClosure', 'profile', 'compilerVersion']) {\n const fieldValue = candidate[field];\n if (\n (field === 'sourceClosure' && !Array.isArray(fieldValue)) ||\n (field !== 'sourceClosure' && typeof fieldValue !== 'string')\n ) {\n return invalid(`receipt.${field}`, fieldValue);\n }\n }\n const sourceClosure = candidate.sourceClosure;\n if (Array.isArray(sourceClosure) && sourceClosure.some((path) => typeof path !== 'string')) {\n return invalid('receipt.sourceClosure', sourceClosure);\n }\n if (\n expected.layoutIdentity !== undefined &&\n identity.layoutIdentity !== expected.layoutIdentity\n ) {\n return invalid('receipt.identity.layoutIdentity', identity.layoutIdentity);\n }\n if (\n expected.artifactDigest !== undefined &&\n identity.artifactDigest !== expected.artifactDigest\n ) {\n return invalid('receipt.identity.artifactDigest', identity.artifactDigest);\n }\n if (expected.inputDigest !== undefined && identity.cookIdentity !== expected.inputDigest) {\n return invalid('receipt.identity.cookIdentity', identity.cookIdentity);\n }\n return ok({\n schemaVersion: 'material-cook/3',\n sourceClosure: candidate.sourceClosure as string[],\n profile: candidate.profile as string,\n compilerVersion: candidate.compilerVersion as string,\n identity,\n derivedInterface: { layoutIdentity: derivedInterface.layoutIdentity as string },\n });\n}\n\nexport function validateCookedMaterialRecord(\n value: unknown,\n): Result<CookedMaterialRecord, MaterialCookRecordError> {\n if (value === null || typeof value !== 'object') return invalid('record');\n const candidate = value as Record<string, unknown>;\n if (candidate.schemaVersion !== 'material-cook/3')\n return invalid('schemaVersion', candidate.schemaVersion);\n if (typeof candidate.guid !== 'string' || !candidate.guid) return invalid('guid');\n if (candidate.materialGuid !== undefined && typeof candidate.materialGuid !== 'string')\n return invalid('materialGuid');\n if (\n candidate.publicationGeneration !== undefined &&\n !isGeneration(candidate.publicationGeneration)\n )\n return invalid('publicationGeneration', candidate.publicationGeneration);\n if (candidate.specializationKey !== undefined && typeof candidate.specializationKey !== 'string')\n return invalid('specializationKey');\n if (candidate.artifactDigest !== undefined && typeof candidate.artifactDigest !== 'string')\n return invalid('artifactDigest');\n if (\n candidate.sourceClosure !== undefined &&\n (!Array.isArray(candidate.sourceClosure) ||\n candidate.sourceClosure.some((path) => typeof path !== 'string'))\n )\n return invalid('sourceClosure');\n if (candidate.parameterContract !== undefined) {\n if (candidate.parameterContract === null || typeof candidate.parameterContract !== 'object')\n return invalid('parameterContract');\n const parameterContract = candidate.parameterContract as Record<string, unknown>;\n if (!Array.isArray(parameterContract.parameters))\n return invalid('parameterContract.parameters');\n if (\n parameterContract.values === null ||\n typeof parameterContract.values !== 'object' ||\n Array.isArray(parameterContract.values)\n )\n return invalid('parameterContract.values');\n }\n if (candidate.resolved === null || typeof candidate.resolved !== 'object')\n return invalid('resolved');\n if (candidate.refs === null || typeof candidate.refs !== 'object') return invalid('refs');\n if (candidate.artifact === null || typeof candidate.artifact !== 'object')\n return invalid('artifact');\n if (candidate.receipt === null || typeof candidate.receipt !== 'object')\n return invalid('receipt');\n const artifact = candidate.artifact as Record<string, unknown>;\n if (\n typeof artifact.digest !== 'string' ||\n (!Array.isArray(artifact.bytes) && !ArrayBuffer.isView(artifact.bytes))\n ) {\n return invalid('artifact');\n }\n const receiptResult = validateMaterialCookReceipt(candidate.receipt, {\n artifactDigest: artifact.digest as string,\n });\n if (!receiptResult.ok) return receiptResult;\n if (candidate.artifactDigest !== undefined && candidate.artifactDigest !== artifact.digest)\n return invalid('artifactDigest', candidate.artifactDigest);\n if (\n candidate.publicationGeneration !== undefined &&\n receiptResult.value.identity.cookGeneration !== candidate.publicationGeneration\n )\n return invalid('receipt.identity.cookGeneration', receiptResult.value.identity.cookGeneration);\n const normalized = {\n ...candidate,\n artifact: {\n ...artifact,\n bytes: ArrayBuffer.isView(artifact.bytes)\n ? Uint8Array.from(artifact.bytes as Uint8Array)\n : Uint8Array.from(artifact.bytes as number[]),\n },\n receipt: receiptResult.value,\n } as CookedMaterialRecord;\n return ok(normalized);\n}\n\nexport function projectCookedMaterialRecord(\n record: CookedMaterialRecord,\n): Omit<CookedMaterialRecord, 'guid' | 'authored'> {\n return {\n resolved: record.resolved,\n refs: record.refs,\n artifact: record.artifact,\n receipt: record.receipt,\n schemaVersion: record.schemaVersion,\n };\n}\n","import type {\n ArtifactDescriptor,\n ArtifactVerificationStatus,\n AssetEvidence,\n AssetEvidenceError,\n AssetEvidenceInputs,\n AssetEvidenceLocator,\n CookProduct,\n CookReceipt,\n PackageVerificationEvidence,\n SourceDeclarationEvidence,\n} from '@forgeax/engine-types';\nimport {\n projectAssetEvidence,\n projectCookProductEvidence,\n type Result,\n} from '@forgeax/engine-types';\n\n/** Pack artifact descriptor with verification supplied by an offline verifier. */\nexport interface OfflineArtifactInput extends ArtifactDescriptor {\n readonly verification?: ArtifactVerificationStatus;\n}\n\n/** Validated Pack v2 package facts consumed by the offline projector. */\nexport interface OfflinePackageInput {\n readonly guid: string;\n readonly digest?: string;\n readonly artifacts: Readonly<Record<string, OfflineArtifactInput>>;\n}\n\n/** Node/CLI input shape; it intentionally has no runtime or WebSocket fields. */\nexport interface OfflineAssetEvidenceInput {\n readonly guid: string;\n readonly source?: SourceDeclarationEvidence;\n readonly locator?: AssetEvidenceLocator;\n readonly receipt?: CookReceipt;\n readonly package?: OfflinePackageInput;\n readonly product?: CookProduct;\n}\n\nfunction packageEvidence(input: OfflinePackageInput): NonNullable<AssetEvidenceInputs['package']> {\n return {\n guid: input.guid,\n ...(input.digest === undefined ? {} : { digest: input.digest }),\n artifacts: Object.fromEntries(\n Object.entries(input.artifacts).map(([key, artifact]) => [\n key,\n {\n descriptor: artifact,\n verification: artifact.verification ?? 'passed',\n },\n ]),\n ),\n };\n}\n\n/** Build the shared evidence view without loading runtime assets or opening WS. */\nexport function buildOfflineAssetEvidence(\n input: OfflineAssetEvidenceInput,\n): Promise<Result<AssetEvidence, AssetEvidenceError>> {\n if (input.product !== undefined) {\n return Promise.resolve(projectCookProductEvidence(input.product, input.locator));\n }\n const evidenceInput: AssetEvidenceInputs = {\n guid: input.guid,\n ...(input.source === undefined ? {} : { source: input.source }),\n ...(input.locator === undefined ? {} : { locator: input.locator }),\n ...(input.receipt === undefined ? {} : { receipt: input.receipt }),\n ...(input.package === undefined ? {} : { package: packageEvidence(input.package) }),\n };\n return Promise.resolve(projectAssetEvidence(evidenceInput));\n}\n\nexport function packageVerification(\n input: OfflinePackageInput | undefined,\n): PackageVerificationEvidence | undefined {\n if (input === undefined) return undefined;\n const packageInput = packageEvidence(input);\n const statuses = Object.values(packageInput.artifacts).map(\n (artifact) => artifact.verification ?? 'notChecked',\n );\n return {\n status: statuses.some((status) => status === 'failed')\n ? 'failed'\n : statuses.length > 0 && statuses.every((status) => status === 'passed')\n ? 'passed'\n : 'notChecked',\n ...(input?.digest === undefined ? {} : { digest: input.digest }),\n };\n}\n","/** Canonical mesh binary wire facts shared by build-time and runtime owners. */\n\nexport const MESH_BIN_VERSION = 4 as const;\nexport const MESH_BIN_PROJECTION_VERSION = 1 as const;\nexport const MESH_BIN_HEADER_V4_BYTES = 80;\nexport const MESH_BIN_DIGEST_BYTES = 32;\n\nexport interface MeshBinHeaderV4 {\n readonly version: 4;\n readonly projectionVersion: 1;\n readonly mask: number;\n readonly digest: string;\n readonly stride: number;\n readonly vertexCount: number;\n readonly vertexBytes: number;\n readonly indexCount: number;\n readonly indexWidth: 0 | 2 | 4;\n readonly indexBytes: number;\n readonly jsonBytes: number;\n}\n\nexport interface MeshBinContractError {\n readonly code:\n | 'mesh-bin-header-truncated'\n | 'mesh-bin-version-unsupported'\n | 'mesh-bin-header-invalid';\n readonly subject: 'mesh-bin';\n readonly sourceKey: string;\n readonly expected: string;\n readonly actual: string;\n readonly recovery: string;\n}\n\nexport type MeshBinHeaderResult =\n | { readonly ok: true; readonly value: MeshBinHeaderV4 }\n | { readonly ok: false; readonly error: MeshBinContractError };\n\nfunction failure(\n code: MeshBinContractError['code'],\n sourceKey: string,\n expected: string,\n actual: string,\n): MeshBinHeaderResult {\n return {\n ok: false,\n error: {\n code,\n subject: 'mesh-bin',\n sourceKey,\n expected,\n actual,\n recovery: 're-cook the source with its Meta sidecar through the build-time importer',\n },\n };\n}\n\nfunction digestBytes(digest: string): Uint8Array {\n const bytes = new Uint8Array(MESH_BIN_DIGEST_BYTES);\n bytes.set(new TextEncoder().encode(digest).subarray(0, MESH_BIN_DIGEST_BYTES));\n return bytes;\n}\n\nfunction readDigest(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes).replace(/\\0+$/u, '');\n}\n\nexport function writeMeshBinHeader(header: MeshBinHeaderV4, out: Uint8Array): void {\n if (out.byteLength < MESH_BIN_HEADER_V4_BYTES) {\n throw new RangeError('mesh-bin v4 header output is truncated');\n }\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setUint32(0, header.version, true);\n view.setUint32(4, header.projectionVersion, true);\n view.setUint32(8, header.mask, true);\n view.setUint32(12, header.stride, true);\n view.setUint32(16, header.vertexCount, true);\n view.setUint32(20, header.vertexBytes, true);\n view.setUint32(24, header.indexCount, true);\n view.setUint32(28, header.indexWidth, true);\n view.setUint32(32, header.indexBytes, true);\n view.setUint32(36, header.jsonBytes, true);\n out.set(digestBytes(header.digest), 48);\n}\n\nexport function decodeMeshBinHeader(\n bytes: Uint8Array,\n sourceKey = '<unknown mesh source>',\n): MeshBinHeaderResult {\n if (bytes.byteLength < MESH_BIN_HEADER_V4_BYTES) {\n return failure(\n 'mesh-bin-header-truncated',\n sourceKey,\n `mesh-bin v4 header (${MESH_BIN_HEADER_V4_BYTES} bytes)`,\n `${bytes.byteLength} bytes`,\n );\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const version = view.getUint32(0, true);\n if (version !== MESH_BIN_VERSION) {\n return failure('mesh-bin-version-unsupported', sourceKey, 'mesh-bin v4', `version ${version}`);\n }\n const projectionVersion = view.getUint32(4, true);\n const mask = view.getUint32(8, true);\n const stride = view.getUint32(12, true);\n const vertexCount = view.getUint32(16, true);\n const vertexBytes = view.getUint32(20, true);\n const indexCount = view.getUint32(24, true);\n const indexWidth = view.getUint32(28, true);\n const indexBytes = view.getUint32(32, true);\n const jsonBytes = view.getUint32(36, true);\n const digest = readDigest(bytes.subarray(48, 48 + MESH_BIN_DIGEST_BYTES));\n if (\n projectionVersion !== MESH_BIN_PROJECTION_VERSION ||\n mask === 0 ||\n stride === 0 ||\n !Number.isSafeInteger(vertexCount) ||\n !Number.isSafeInteger(vertexBytes) ||\n !Number.isSafeInteger(indexCount) ||\n !Number.isSafeInteger(indexBytes) ||\n !Number.isSafeInteger(jsonBytes) ||\n (indexCount === 0 && indexWidth !== 0) ||\n (indexCount > 0 && indexWidth !== 2 && indexWidth !== 4) ||\n indexBytes !== indexCount * indexWidth ||\n vertexBytes !== vertexCount * stride ||\n digest.length === 0\n ) {\n return failure(\n 'mesh-bin-header-invalid',\n sourceKey,\n 'safe v4 projection, stride, cardinality, and payload byte lengths',\n `projection=${projectionVersion}; mask=${mask}; stride=${stride}; vertexBytes=${vertexBytes}; indexBytes=${indexBytes}; digest=${digest}`,\n );\n }\n return {\n ok: true,\n value: {\n version: 4,\n projectionVersion: 1,\n mask,\n digest,\n stride,\n vertexCount,\n vertexBytes,\n indexCount,\n indexWidth: indexWidth as 0 | 2 | 4,\n indexBytes,\n jsonBytes,\n },\n };\n}\n","import { createHash } from 'node:crypto';\nimport type { AssetCodec, AssetRelation, CookReceipt } from '@forgeax/engine-types';\n\nexport interface PackageArtifactBody {\n readonly mediaType: string;\n readonly assetCodec?: AssetCodec;\n readonly bytes: Uint8Array;\n}\n\nexport interface PackageProductAsset {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly payload: Readonly<Record<string, unknown>>;\n readonly refs: readonly string[];\n readonly artifacts: Readonly<Record<string, PackageArtifactBody>>;\n}\n\nexport interface PackageProduct {\n readonly assets: readonly PackageProductAsset[];\n readonly receipts: readonly CookReceipt[];\n readonly diagnostics: readonly unknown[];\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n}\n\n/** Minimal authored Pack v1/v2 shape consumed by the file transport seam. */\nexport interface AuthoredPackAssetInput {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly execution?: 'direct' | 'cooked';\n readonly sourceKey?: string;\n readonly sourceIndex?: number;\n readonly relations?: readonly AssetRelation[];\n readonly payload: Record<string, unknown>;\n readonly refs?: readonly string[];\n readonly artifacts?: Readonly<Record<string, unknown>>;\n}\n\nexport interface AuthoredPackInput {\n readonly schemaVersion?: string;\n readonly assets?: readonly AuthoredPackAssetInput[];\n}\n\nexport interface PackageDocumentArtifact {\n readonly path: string;\n readonly mediaType: string;\n readonly assetCodec?: AssetCodec;\n readonly byteLength: number;\n readonly integrity: { readonly algorithm: 'sha256'; readonly digest: string };\n}\n\nexport interface PackageDocumentAsset {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly payload: Record<string, unknown>;\n readonly refs: readonly string[];\n readonly artifacts: Readonly<Record<string, PackageDocumentArtifact>>;\n}\n\nexport interface PackageDocument {\n readonly schemaVersion: '2.0.0';\n readonly kind: 'internal-text-package';\n readonly assets: readonly PackageDocumentAsset[];\n}\n\n/** Upgrade the legacy authored Pack envelope at the Pack schema boundary. */\nexport function upgradeLegacyAuthoredPack(pack: AuthoredPackInput): AuthoredPackInput {\n if (pack.schemaVersion !== '1.0.0' || pack.assets === undefined) return pack;\n return {\n ...pack,\n schemaVersion: '2.0.0',\n assets: pack.assets.map((asset) => {\n const fontRefs =\n asset.kind === 'font'\n ? [asset.payload.atlasGuid, asset.payload.samplerGuid].filter(\n (guid): guid is string => typeof guid === 'string',\n )\n : [];\n return {\n ...asset,\n refs: asset.refs ?? fontRefs,\n artifacts: asset.artifacts ?? {},\n };\n }),\n };\n}\n\nexport interface PackageFinalizePolicy {\n readonly base: string;\n readonly packagePath: string;\n readonly artifactPath: (guid: string, localKey: string) => string;\n readonly sink?: (path: string, bytes: Uint8Array) => void | Promise<void>;\n}\n\nexport interface FinalizedPackageProduct {\n readonly pack: PackageDocument;\n readonly packageUrl: string;\n readonly digest: string;\n readonly receipts: readonly CookReceipt[];\n readonly diagnostics: readonly unknown[];\n readonly sourceRevision: string;\n readonly sourceKey?: string;\n}\n\ninterface PackageTransportSource {\n readonly assets: readonly PackageProduct['assets'][number][];\n readonly receipts?: readonly CookReceipt[];\n readonly diagnostics?: readonly unknown[];\n readonly sourceKey?: string;\n}\n\nexport interface PackageFinalizerError {\n readonly code:\n | 'duplicate-guid'\n | 'missing-source-revision'\n | 'missing-receipt'\n | 'invalid-artifact';\n readonly expected: string;\n readonly hint: string;\n readonly detail: { readonly guid?: string; readonly key?: string };\n}\n\nexport type PackageFinalizeResult =\n | { readonly ok: true; readonly value: FinalizedPackageProduct }\n | { readonly ok: false; readonly error: PackageFinalizerError };\n\nfunction failure(\n code: PackageFinalizerError['code'],\n expected: string,\n hint: string,\n detail: PackageFinalizerError['detail'],\n): PackageFinalizeResult {\n return { ok: false, error: { code, expected, hint, detail } };\n}\n\nfunction sorted(value: unknown): unknown {\n if (value instanceof Uint8Array) return Buffer.from(value).toString('base64');\n if (Array.isArray(value)) return value.map(sorted);\n if (value !== null && typeof value === 'object') {\n const output: Record<string, unknown> = {};\n for (const key of Object.keys(value as Record<string, unknown>).sort()) {\n output[key] = sorted((value as Record<string, unknown>)[key]);\n }\n return output;\n }\n return value;\n}\n\nfunction packageUrl(base: string, packagePath: string): string {\n const prefix = base === '/' ? '' : `/${base.replace(/^\\/+|\\/+$/g, '')}`;\n return `${prefix}/${packagePath.replace(/^\\/+/, '')}`;\n}\n\nfunction safePath(path: string): boolean {\n const normalized = path.replaceAll('\\\\', '/');\n return (\n normalized.length > 0 &&\n !normalized.startsWith('/') &&\n !/^[A-Za-z]:\\//.test(normalized) &&\n !normalized.split('/').includes('..')\n );\n}\n\nfunction digest(assets: readonly PackageProductAsset[]): string {\n const pack = { schemaVersion: '2.0.0', kind: 'internal-text-package', assets } as const;\n const hash = createHash('sha256').update(\n JSON.stringify(\n sorted({\n ...pack,\n assets: pack.assets.map((asset) => ({\n ...asset,\n artifacts: Object.fromEntries(\n Object.entries(asset.artifacts).map(([key, artifact]) => [\n key,\n {\n mediaType: artifact.mediaType,\n ...(artifact.assetCodec === undefined ? {} : { assetCodec: artifact.assetCodec }),\n byteLength: artifact.bytes.byteLength,\n },\n ]),\n ),\n })),\n }),\n ),\n );\n for (const [key, artifact] of assets\n .flatMap((asset) =>\n Object.entries(asset.artifacts).map(\n ([localKey, body]) => [`${asset.guid}/${localKey}`, body] as const,\n ),\n )\n .sort(([left], [right]) => left.localeCompare(right))) {\n hash.update(key).update(artifact.bytes);\n }\n return `sha256:${hash.digest('hex')}`;\n}\n\nfunction packageDocument(\n assets: readonly PackageProductAsset[],\n artifactPath: (guid: string, localKey: string) => string,\n): PackageDocument {\n return {\n schemaVersion: '2.0.0',\n kind: 'internal-text-package',\n assets: assets.map((asset) => ({\n guid: asset.guid,\n kind: asset.kind,\n ...(asset.name === undefined ? {} : { name: asset.name }),\n payload: asset.payload,\n refs: asset.refs,\n artifacts: Object.fromEntries(\n Object.entries(asset.artifacts).map(([key, artifact]) => [\n key,\n {\n path: artifactPath(asset.guid, key),\n mediaType: artifact.mediaType,\n ...(artifact.assetCodec === undefined ? {} : { assetCodec: artifact.assetCodec }),\n contentEncoding: 'identity' as const,\n byteLength: artifact.bytes.byteLength,\n integrity: {\n algorithm: 'sha256' as const,\n digest: `sha256:${createHash('sha256').update(artifact.bytes).digest('hex')}`,\n },\n },\n ]),\n ),\n })),\n };\n}\n\nfunction transportArtifacts(\n assets: readonly PackageProductAsset[],\n artifactPath: PackageFinalizePolicy['artifactPath'],\n) {\n return assets.flatMap((asset) =>\n Object.entries(asset.artifacts).flatMap(([localKey, artifact]) => [\n {\n guid: asset.guid,\n localKey,\n path: artifactPath(asset.guid, localKey),\n mediaType: artifact.mediaType,\n ...(artifact.assetCodec === undefined ? {} : { assetCodec: artifact.assetCodec }),\n bytes: artifact.bytes,\n },\n ]),\n );\n}\n\n/** Finalize a complete producer product without owning producer-specific policy. */\nexport async function finalizePackageProduct(\n product: PackageProduct,\n policy: PackageFinalizePolicy,\n): Promise<PackageFinalizeResult> {\n if (product.sourceRevision.trim().length === 0) {\n return failure(\n 'missing-source-revision',\n 'a non-empty source revision',\n 'rebuild the inventory and provide the producer source revision',\n {},\n );\n }\n const seen = new Set<string>();\n for (const asset of product.assets) {\n const guid = asset.guid.toLowerCase();\n if (seen.has(guid)) {\n return failure(\n 'duplicate-guid',\n 'one terminal product row per GUID',\n 'repair the inventory or producer output before finalization',\n { guid },\n );\n }\n seen.add(guid);\n for (const [key, artifact] of Object.entries(asset.artifacts)) {\n if (!safePath(key) || !(artifact.bytes instanceof Uint8Array)) {\n return failure(\n 'invalid-artifact',\n 'asset-local artifact keys and byte bodies',\n 'repair the producer artifact before finalization',\n { guid, key },\n );\n }\n }\n }\n for (const guid of seen) {\n if (!product.receipts.some((receipt) => receipt.guid.toLowerCase() === guid)) {\n return failure(\n 'missing-receipt',\n 'one receipt for every terminal product GUID',\n 'preserve the producer receipt when handing the product to engine-pack',\n { guid },\n );\n }\n }\n const assets = [...product.assets].sort((left, right) => left.guid.localeCompare(right.guid));\n const document = packageDocument(assets, policy.artifactPath);\n const packageBytes = new TextEncoder().encode(JSON.stringify(sorted(document)));\n if (policy.sink !== undefined) {\n for (const asset of assets) {\n for (const [key, artifact] of Object.entries(asset.artifacts)) {\n const path = policy.artifactPath(asset.guid, key);\n if (!safePath(path)) {\n return failure(\n 'invalid-artifact',\n 'package-relative artifact output paths',\n 'repair the finalizer artifact path policy',\n { guid: asset.guid, key },\n );\n }\n await policy.sink(path, artifact.bytes);\n }\n }\n if (!safePath(policy.packagePath)) {\n return failure(\n 'invalid-artifact',\n 'a package-relative package path',\n 'repair the finalizer package path policy',\n { key: policy.packagePath },\n );\n }\n await policy.sink(policy.packagePath, packageBytes);\n }\n return {\n ok: true,\n value: {\n pack: document,\n packageUrl: packageUrl(policy.base, policy.packagePath),\n digest: digest(product.assets),\n receipts: product.receipts,\n diagnostics: product.diagnostics,\n sourceRevision: product.sourceRevision,\n ...(product.sourceKey === undefined ? {} : { sourceKey: product.sourceKey }),\n },\n };\n}\n\n/** Finalize a product-shaped source with the deterministic transport revision. */\nexport async function finalizePackageTransportSource(\n input: PackageTransportSource,\n policy: PackageFinalizePolicy,\n) {\n const sourceRevision = packageTransportRevision(input);\n const product: PackageProduct = {\n assets: input.assets,\n receipts:\n input.receipts ??\n input.assets.map((asset) => ({\n guid: asset.guid,\n origin: 'sourceMeta' as const,\n status: 'succeeded' as const,\n inputFingerprint: sourceRevision,\n })),\n diagnostics: input.diagnostics ?? [],\n sourceRevision,\n ...(input.sourceKey === undefined ? {} : { sourceKey: input.sourceKey }),\n };\n const finalized = await finalizePackageProduct(product, policy);\n if (!finalized.ok) throw finalized.error;\n return {\n pack: finalized.value.pack,\n packageUrl: finalized.value.packageUrl,\n artifacts: transportArtifacts(product.assets, policy.artifactPath),\n digest: finalized.value.digest,\n sourceRevision,\n semantic: JSON.stringify(sorted(finalized.value.pack)),\n };\n}\n\nfunction revisionStable(value: unknown): unknown {\n if (value instanceof Uint8Array) {\n return {\n byteLength: value.byteLength,\n digest: createHash('sha256').update(value).digest('hex'),\n };\n }\n if (Array.isArray(value)) return value.map(revisionStable);\n if (value !== null && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, item]) => [key, revisionStable(item)]),\n );\n }\n return value;\n}\n\nexport function packageTransportRevision(value: unknown): string {\n return createHash('sha256')\n .update(JSON.stringify(revisionStable(value)))\n .digest('hex');\n}\n","import type { PackV2, PackV2Error, Result } from '@forgeax/engine-types';\nimport { err, ok } from '@forgeax/engine-types';\n\nimport { validatePackV2 } from './schema-compiled.js';\n\nexport { validateMeta, validatePack, validatePackV2 } from './schema-compiled.js';\n\n/**\n * Parse a Pack v2 envelope without loading the Node-only scanner/evidence\n * barrel. Browser runtime consumers should import this subpath.\n */\nexport function parsePackV2(value: unknown): Result<PackV2, PackV2Error> {\n if (!validatePackV2(value)) {\n return err({\n code: 'pack-v2-envelope-invalid',\n expected: 'a Pack v2 envelope with unique asset GUIDs and valid descriptors',\n hint: 'validate the pack against packages/pack/schema/pack.schema.json and re-cook it',\n detail: { observed: 'invalid pack', expected: 'schemaVersion 2.0.0' },\n });\n }\n\n return ok(value);\n}\n","import { createHash } from 'node:crypto';\nimport type {\n AssetPublicationEnvelope,\n AssetPublicationExternalEvidence,\n AssetPublicationOutput,\n} from '@forgeax/engine-types';\n\nexport interface RuntimePackAssetInput {\n readonly guid: string;\n readonly kind: string;\n readonly name?: string;\n readonly payload: unknown;\n readonly refs?: readonly string[];\n readonly artifacts?: Readonly<Record<string, unknown>>;\n}\n\nexport interface RuntimePackInput {\n readonly assets: readonly RuntimePackAssetInput[];\n}\n\nexport interface RuntimePackEnvelope {\n readonly schemaVersion: '2.0.0';\n readonly kind: 'internal-text-package';\n readonly scopeId: string;\n readonly generation: number;\n readonly digest: string;\n readonly outputSetDigest: string;\n readonly assets: readonly RuntimePackAsset[];\n}\n\nexport interface RuntimePackPublication {\n readonly pack: RuntimePackEnvelope;\n readonly publication: AssetPublicationEnvelope;\n}\n\ninterface RuntimePackAsset extends RuntimePackAssetInput {\n readonly refs: readonly string[];\n readonly artifacts: Readonly<Record<string, unknown>>;\n}\n\nexport interface RuntimePackPublicationInput {\n readonly pack: RuntimePackInput;\n readonly scopeId: string;\n readonly sourcePath: string;\n readonly sourceRevision: string;\n readonly packageUrl: string;\n readonly inputFingerprint?: string;\n readonly digest?: string;\n readonly generation?: number;\n readonly outputs?: readonly AssetPublicationOutput[];\n readonly externalEvidence?: readonly AssetPublicationExternalEvidence[];\n}\n\nfunction stable(value: unknown): string {\n if (value instanceof Uint8Array) return `bytes:${Buffer.from(value).toString('base64')}`;\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (value !== null && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stable(record[key])}`)\n .join(',')}}`;\n }\n return JSON.stringify(value) ?? 'null';\n}\n\nfunction digest(value: unknown): string {\n return `sha256:${createHash('sha256').update(stable(value)).digest('hex')}`;\n}\n\nfunction normalizedAssets(pack: RuntimePackInput): readonly RuntimePackAsset[] {\n return pack.assets.map((asset) => {\n const payload = asset.payload;\n const canonicalPayload =\n payload !== null &&\n typeof payload === 'object' &&\n !Array.isArray(payload) &&\n !(payload instanceof Uint8Array) &&\n typeof (payload as Record<string, unknown>).kind !== 'string'\n ? { ...(payload as Record<string, unknown>), kind: asset.kind }\n : payload;\n return {\n ...asset,\n payload: canonicalPayload,\n refs: [...(asset.refs ?? [])].map((ref) => ref.toLowerCase()),\n artifacts: asset.artifacts ?? {},\n };\n });\n}\n\nfunction outputFor(asset: RuntimePackAsset): AssetPublicationOutput {\n return {\n guid: asset.guid.toLowerCase(),\n sourceKey: asset.guid.toLowerCase(),\n kind: asset.kind,\n digest: digest({\n guid: asset.guid.toLowerCase(),\n kind: asset.kind,\n name: asset.name,\n payload: asset.payload,\n refs: asset.refs,\n artifacts: asset.artifacts,\n }),\n refs: asset.refs,\n };\n}\n\nfunction outputSetDigest(outputs: readonly AssetPublicationOutput[]): string {\n return digest(\n outputs.map((output) => ({\n guid: output.guid.toLowerCase(),\n sourceKey: output.sourceKey,\n kind: output.kind,\n digest: output.digest,\n refs: [...output.refs].map((guid) => guid.toLowerCase()),\n })),\n );\n}\n\nfunction publicationGeneration(\n sourceRevision: string,\n valueDigest: string,\n outputs: string,\n): number {\n const value = createHash('sha256')\n .update(sourceRevision)\n .update('\\n')\n .update(valueDigest)\n .update('\\n')\n .update(outputs)\n .digest('hex');\n const generation = Number.parseInt(value.slice(0, 8), 16);\n return generation > 0 ? generation : 1;\n}\n\nexport function createRuntimePackPublication(\n input: RuntimePackPublicationInput,\n): RuntimePackPublication {\n const assets = normalizedAssets(input.pack);\n const semantic = {\n schemaVersion: '2.0.0' as const,\n kind: 'internal-text-package' as const,\n assets: [...assets].sort((left, right) =>\n left.guid.toLowerCase().localeCompare(right.guid.toLowerCase()),\n ),\n };\n const valueDigest = input.digest ?? digest(semantic);\n const outputs = input.outputs ?? assets.map(outputFor);\n const outputDigest = outputSetDigest(outputs);\n const generation =\n input.generation ?? publicationGeneration(input.sourceRevision, valueDigest, outputDigest);\n const externalEvidence = input.externalEvidence ?? [];\n const inputFingerprint = input.inputFingerprint ?? input.sourceRevision;\n const publication: AssetPublicationEnvelope = {\n schemaVersion: 'asset-publication/1',\n sourcePath: input.sourcePath,\n sourceRevision: input.sourceRevision,\n generation,\n digest: valueDigest,\n outputSetDigest: outputDigest,\n outputs,\n receipt: {\n schemaVersion: 'asset-publication-receipt/1',\n sourcePath: input.sourcePath,\n sourceRevision: input.sourceRevision,\n inputFingerprint,\n outputDigest: valueDigest,\n outputSetDigest: outputDigest,\n externalEvidence,\n },\n externalEvidence,\n current: {\n generation,\n digest: valueDigest,\n outputSetDigest: outputDigest,\n packageUrl: input.packageUrl,\n receiptKey: inputFingerprint,\n },\n };\n return {\n pack: {\n ...semantic,\n scopeId: input.scopeId,\n generation,\n digest: valueDigest,\n outputSetDigest: outputDigest,\n },\n publication,\n };\n}\n"]}
|