@minnowdb/core 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +27 -1
- package/dist/block-format/block.d.ts +46 -0
- package/dist/block-format/block.d.ts.map +1 -0
- package/dist/block-format/block.js +244 -0
- package/dist/block-format/block.js.map +1 -0
- package/dist/block-format/checksum.d.ts +7 -0
- package/dist/block-format/checksum.d.ts.map +1 -0
- package/dist/block-format/checksum.js +56 -0
- package/dist/block-format/checksum.js.map +1 -0
- package/dist/block-format/codecs.d.ts +24 -0
- package/dist/block-format/codecs.d.ts.map +1 -0
- package/dist/block-format/codecs.js +102 -0
- package/dist/block-format/codecs.js.map +1 -0
- package/dist/block-format/column.d.ts +8 -0
- package/dist/block-format/column.d.ts.map +1 -0
- package/dist/block-format/column.js +166 -0
- package/dist/block-format/column.js.map +1 -0
- package/dist/block-format/index.d.ts +7 -0
- package/dist/block-format/index.d.ts.map +1 -0
- package/dist/block-format/index.js +7 -0
- package/dist/block-format/index.js.map +1 -0
- package/dist/block-format/physical.d.ts +20 -0
- package/dist/block-format/physical.d.ts.map +1 -0
- package/dist/block-format/physical.js +439 -0
- package/dist/block-format/physical.js.map +1 -0
- package/dist/block-format/types.d.ts +93 -0
- package/dist/block-format/types.d.ts.map +1 -0
- package/dist/block-format/types.js +2 -0
- package/dist/block-format/types.js.map +1 -0
- package/dist/engine/artifact-cache.d.ts +22 -0
- package/dist/engine/artifact-cache.d.ts.map +1 -0
- package/dist/engine/artifact-cache.js +68 -0
- package/dist/engine/artifact-cache.js.map +1 -0
- package/dist/engine/batch.d.ts +28 -0
- package/dist/engine/batch.d.ts.map +1 -0
- package/dist/engine/batch.js +38 -0
- package/dist/engine/batch.js.map +1 -0
- package/dist/engine/buffered-writer.d.ts +43 -0
- package/dist/engine/buffered-writer.d.ts.map +1 -0
- package/dist/engine/buffered-writer.js +158 -0
- package/dist/engine/buffered-writer.js.map +1 -0
- package/dist/engine/catalog.d.ts +82 -0
- package/dist/engine/catalog.d.ts.map +1 -0
- package/dist/engine/catalog.js +47 -0
- package/dist/engine/catalog.js.map +1 -0
- package/dist/engine/client.d.ts +211 -0
- package/dist/engine/client.d.ts.map +1 -0
- package/dist/engine/client.js +538 -0
- package/dist/engine/client.js.map +1 -0
- package/dist/engine/coordinator.d.ts +17 -0
- package/dist/engine/coordinator.d.ts.map +1 -0
- package/dist/engine/coordinator.js +60 -0
- package/dist/engine/coordinator.js.map +1 -0
- package/dist/engine/database.d.ts +661 -0
- package/dist/engine/database.d.ts.map +1 -0
- package/dist/engine/database.js +10313 -0
- package/dist/engine/database.js.map +1 -0
- package/dist/engine/defaults.d.ts +33 -0
- package/dist/engine/defaults.d.ts.map +1 -0
- package/dist/engine/defaults.js +87 -0
- package/dist/engine/defaults.js.map +1 -0
- package/dist/engine/dsl/db.d.ts +137 -0
- package/dist/engine/dsl/db.d.ts.map +1 -0
- package/dist/engine/dsl/db.js +161 -0
- package/dist/engine/dsl/db.js.map +1 -0
- package/dist/engine/dsl/expression.d.ts +172 -0
- package/dist/engine/dsl/expression.d.ts.map +1 -0
- package/dist/engine/dsl/expression.js +397 -0
- package/dist/engine/dsl/expression.js.map +1 -0
- package/dist/engine/dsl/index.d.ts +8 -0
- package/dist/engine/dsl/index.d.ts.map +1 -0
- package/dist/engine/dsl/index.js +7 -0
- package/dist/engine/dsl/index.js.map +1 -0
- package/dist/engine/dsl/live-query.d.ts +45 -0
- package/dist/engine/dsl/live-query.d.ts.map +1 -0
- package/dist/engine/dsl/live-query.js +116 -0
- package/dist/engine/dsl/live-query.js.map +1 -0
- package/dist/engine/dsl/mutations.d.ts +123 -0
- package/dist/engine/dsl/mutations.d.ts.map +1 -0
- package/dist/engine/dsl/mutations.js +241 -0
- package/dist/engine/dsl/mutations.js.map +1 -0
- package/dist/engine/dsl/select-query-builder.d.ts +148 -0
- package/dist/engine/dsl/select-query-builder.d.ts.map +1 -0
- package/dist/engine/dsl/select-query-builder.js +377 -0
- package/dist/engine/dsl/select-query-builder.js.map +1 -0
- package/dist/engine/dsl/sql-tag.d.ts +46 -0
- package/dist/engine/dsl/sql-tag.d.ts.map +1 -0
- package/dist/engine/dsl/sql-tag.js +85 -0
- package/dist/engine/dsl/sql-tag.js.map +1 -0
- package/dist/engine/dsl/types.d.ts +133 -0
- package/dist/engine/dsl/types.d.ts.map +1 -0
- package/dist/engine/dsl/types.js +9 -0
- package/dist/engine/dsl/types.js.map +1 -0
- package/dist/engine/errors.d.ts +55 -0
- package/dist/engine/errors.d.ts.map +1 -0
- package/dist/engine/errors.js +81 -0
- package/dist/engine/errors.js.map +1 -0
- package/dist/engine/fts.d.ts +93 -0
- package/dist/engine/fts.d.ts.map +1 -0
- package/dist/engine/fts.js +273 -0
- package/dist/engine/fts.js.map +1 -0
- package/dist/engine/group-index.d.ts +32 -0
- package/dist/engine/group-index.d.ts.map +1 -0
- package/dist/engine/group-index.js +366 -0
- package/dist/engine/group-index.js.map +1 -0
- package/dist/engine/index.d.ts +13 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +12 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/join-index.d.ts +12 -0
- package/dist/engine/join-index.d.ts.map +1 -0
- package/dist/engine/join-index.js +217 -0
- package/dist/engine/join-index.js.map +1 -0
- package/dist/engine/live.d.ts +86 -0
- package/dist/engine/live.d.ts.map +1 -0
- package/dist/engine/live.js +289 -0
- package/dist/engine/live.js.map +1 -0
- package/dist/engine/memory.d.ts +37 -0
- package/dist/engine/memory.d.ts.map +1 -0
- package/dist/engine/memory.js +119 -0
- package/dist/engine/memory.js.map +1 -0
- package/dist/engine/optimizer.d.ts +20 -0
- package/dist/engine/optimizer.d.ts.map +1 -0
- package/dist/engine/optimizer.js +1170 -0
- package/dist/engine/optimizer.js.map +1 -0
- package/dist/engine/query-cache.d.ts +10 -0
- package/dist/engine/query-cache.d.ts.map +1 -0
- package/dist/engine/query-cache.js +58 -0
- package/dist/engine/query-cache.js.map +1 -0
- package/dist/engine/query.d.ts +844 -0
- package/dist/engine/query.d.ts.map +1 -0
- package/dist/engine/query.js +7450 -0
- package/dist/engine/query.js.map +1 -0
- package/dist/engine/schema-wire.d.ts +92 -0
- package/dist/engine/schema-wire.d.ts.map +1 -0
- package/dist/engine/schema-wire.js +115 -0
- package/dist/engine/schema-wire.js.map +1 -0
- package/dist/engine/schema.d.ts +394 -0
- package/dist/engine/schema.d.ts.map +1 -0
- package/dist/engine/schema.js +709 -0
- package/dist/engine/schema.js.map +1 -0
- package/dist/engine/sort-keys.d.ts +36 -0
- package/dist/engine/sort-keys.d.ts.map +1 -0
- package/dist/engine/sort-keys.js +60 -0
- package/dist/engine/sort-keys.js.map +1 -0
- package/dist/engine/sql-json.d.ts +30 -0
- package/dist/engine/sql-json.d.ts.map +1 -0
- package/dist/engine/sql-json.js +120 -0
- package/dist/engine/sql-json.js.map +1 -0
- package/dist/engine/sql-semantics.d.ts +31 -0
- package/dist/engine/sql-semantics.d.ts.map +1 -0
- package/dist/engine/sql-semantics.js +121 -0
- package/dist/engine/sql-semantics.js.map +1 -0
- package/dist/engine/vector.d.ts +87 -0
- package/dist/engine/vector.d.ts.map +1 -0
- package/dist/engine/vector.js +4227 -0
- package/dist/engine/vector.js.map +1 -0
- package/dist/engine/worker-host.d.ts +48 -0
- package/dist/engine/worker-host.d.ts.map +1 -0
- package/dist/engine/worker-host.js +501 -0
- package/dist/engine/worker-host.js.map +1 -0
- package/dist/engine/worker.d.ts +2 -0
- package/dist/engine/worker.d.ts.map +1 -0
- package/dist/engine/worker.js +14 -0
- package/dist/engine/worker.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/plan/index.d.ts +17 -0
- package/dist/plan/index.d.ts.map +1 -0
- package/dist/plan/index.js +17 -0
- package/dist/plan/index.js.map +1 -0
- package/dist/storage/fixture-shape.d.ts +42 -0
- package/dist/storage/fixture-shape.d.ts.map +1 -0
- package/dist/storage/fixture-shape.js +146 -0
- package/dist/storage/fixture-shape.js.map +1 -0
- package/dist/storage/index.d.ts +5 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +5 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/indexeddb.d.ts +139 -0
- package/dist/storage/indexeddb.d.ts.map +1 -0
- package/dist/storage/indexeddb.js +3161 -0
- package/dist/storage/indexeddb.js.map +1 -0
- package/dist/storage/memory.d.ts +121 -0
- package/dist/storage/memory.d.ts.map +1 -0
- package/dist/storage/memory.js +1455 -0
- package/dist/storage/memory.js.map +1 -0
- package/dist/storage/snapshot.d.ts +108 -0
- package/dist/storage/snapshot.d.ts.map +1 -0
- package/dist/storage/snapshot.js +276 -0
- package/dist/storage/snapshot.js.map +1 -0
- package/dist/storage/types.d.ts +895 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +1549 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/testing/index.d.ts +76 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +233 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/seeds.d.ts +11 -0
- package/dist/testing/seeds.d.ts.map +1 -0
- package/dist/testing/seeds.js +50 -0
- package/dist/testing/seeds.js.map +1 -0
- package/dist/transactions/index.d.ts +148 -0
- package/dist/transactions/index.d.ts.map +1 -0
- package/dist/transactions/index.js +662 -0
- package/dist/transactions/index.js.map +1 -0
- package/dist/worker-protocol/index.d.ts +84 -0
- package/dist/worker-protocol/index.d.ts.map +1 -0
- package/dist/worker-protocol/index.js +117 -0
- package/dist/worker-protocol/index.js.map +1 -0
- package/package.json +66 -16
- package/sql-feature-matrix.json +1275 -0
- package/index.d.ts +0 -1
- package/index.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/engine/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GAInB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA6BvE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,UAAkB;IAClE,OAAO,GAAG,SAAS,IAAI,UAAU,OAAO,CAAC;AAC3C,CAAC;AA2GD,SAAS,kBAAkB,CAAC,IAAsB,EAAE,KAAc;IAChE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,IAAI,KAAK,KAAK,KAAK;gBAAE,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;YAChF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;YACvF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpC,KAAK,QAAQ;YACX,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpC,KAAK,SAAS;YACZ,IAAI,OAAO,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;YACzF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,IAAW,EACX,QAYI,EAAE;IAEN,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,QAAiB;QACvB,IAAI;QACJ,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAU;QAChD,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAU;QAC5C,UAAU,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAU;QACvF,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;YAC/B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAiC,EAAE,CAAC;QAC3D,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1F,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAwD,EAAE,CAAC;KACvF,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,QAAQ,EAAE,GAAG,EAAE,CACb,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAGhD;QACH,MAAM,EAAE,GAAG,EAAE,CACX,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAI9C;QACH,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACtF,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE,CAC3B,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,KAAuB,EAAE,CAAC;QAC1E,UAAU,EAAE,CACV,KAAa,EACb,gBAAwB,EACxB,UAA4C,EAAE,EAC9C,EAAE,CACF,YAAY,CAAC,IAAI,EAAE;YACjB,GAAG,KAAK;YACR,SAAS,EAAE;gBACT,KAAK;gBACL,MAAM,EAAE,gBAAgB;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,UAAU;aACzC;SACF,CAAC;QACJ,OAAO,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE;YAC3B,gFAAgF;YAChF,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,WAAW,CAAC;YAC3B,OAAO,OAAO,CAAC,SAAS,CAAC;YACzB,OAAO,OAAO,KAAK,KAAK,UAAU;gBAChC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,KAA6B,EAAE,CAAC;gBAC9E,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC,CAA+D;QAChE,aAAa,EAAE,CAAC,GAAG,EAAE;YACnB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,SAAS,CAAC;YACzB,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC,CAAqE;KACvE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAGC,EACD,IAAmB;IAEnB,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QACxF,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACzE,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;IACtC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;IACpC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;IACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,CACJ,MAAe,EACwB,EAAE,CACzC,YAAY,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;CACpF,CAAC;AAmCF,MAAM,UAAU,KAAK,CACnB,IAAW,EACX,OAAiB,EACjB,UAAwB,EAAE;IAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,4BAA4B,CAAC,CAAC;IACzF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,qCAAqC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,wCAAwC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAChE,MAAM,IAAI,SAAS,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC7D,MAAM,OAAO,GACX,UAAU,CAAC,IAAI,KAAK,UAAU;gBAC5B,CAAC,CAAC,QAAQ,YAAY,IAAI;gBAC1B,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,SAAS,CAAC,4BAA4B,UAAU,CAAC,IAAI,KAAK,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,IACE,UAAU,CAAC,UAAU,KAAK,SAAS;gBACnC,OAAO,QAAQ,KAAK,QAAQ;gBAC5B,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACzC,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,kCAAkC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,UAAU,GAAG,CAC7F,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YACpD,MAAM,IAAI,SAAS,CACjB,wCAAwC,IAAI,IAAI,UAAU,sCAAsC,CACjG,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,SAAS,EAAE,QAAQ,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC5E,MAAM,IAAI,SAAS,CAAC,kDAAkD,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,qBAAqB,CACnB;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,QAAQ,EAAE,UAAU,CAAC,UAAU;YAC/B,WAAW,EAAE,UAAU,CAAC,QAAQ;YAChC,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;SACtF,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,SAAS,IAAI,uBAAuB,CAAC,CAAC;QACvF,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,4BAA4B,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CAAC,SAAS,KAAK,CAAC,IAAI,aAAa,IAAI,oBAAoB,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI;QACJ,OAAO;QACP,MAAM;QACN,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,QAAQ;YAChB,QAAQ,CAAC,KAAK;gBACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAChD,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxE,CAAC;gBACD,MAAM,GAAG,GAAG,KAAgC,CAAC;gBAC7C,MAAM,MAAM,GAA6D,EAAE,CAAC;gBAC5E,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;oBAC/C,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;oBACpC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;wBACtD,2EAA2E;wBAC3E,8CAA8C;wBAC9C,IACE,CAAC,UAAU,CAAC,UAAU;4BACtB,UAAU,CAAC,WAAW,KAAK,SAAS;4BACpC,UAAU,CAAC,SAAS,KAAK,SAAS,EAClC,CAAC;4BACD,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;wBAC9E,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,MAAM,OAAO,GACX,UAAU,CAAC,IAAI,KAAK,UAAU;wBAC5B,CAAC,CAAC,WAAW,YAAY,IAAI;wBAC7B,CAAC,CAAC,OAAO,WAAW,KAAK,UAAU,CAAC,IAAI,CAAC;oBAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBAC9E,CAAC;yBAAM,IACL,UAAU,CAAC,UAAU,KAAK,SAAS;wBACnC,OAAO,WAAW,KAAK,QAAQ;wBAC/B,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC5C,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC;4BACV,OAAO,EAAE,oBAAoB,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BAC/D,IAAI,EAAE,CAAC,UAAU,CAAC;yBACnB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjF,CAAC;gBACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACzD,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAoB;IAOtD,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChF,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC7C,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QACtC,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC;YACjD,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,SAAS,CAAC,KAAK;YAC5B,YAAY,EAAE,SAAS,CAAC,MAAM;YAC9B,QAAQ,EAAE,SAAS,CAAC,QAAQ;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAuBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAClB,IAAW,EACX,UAA8C;IAE9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,QAAQ,IAAI,4BAA4B,CAAC,CAAC;IACxF,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,QAAQ,IAAI,eAAe,CAAC,CAAC;IACzF,KAAK,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,OAAO,EAAE,CAAC;QACrD,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,yCAAyC,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,gBAAgB,CAAC,WAAW,KAAK,SAAS,IAAI,gBAAgB,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC3F,MAAM,IAAI,SAAS,CAAC,wCAAwC,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;AAClF,CAAC;AAWD,MAAM,UAAU,MAAM,CACpB,MAAe,EACf,UAA8B,EAAE;IAEhC,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAW,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,8BAA8B,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,6BAA6B,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAChF,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;YAC7C,IAAI,SAAS,KAAK,SAAS;gBAAE,SAAS;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;YACnE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,SAAS,CACjB,mCAAmC,UAAU,CAAC,IAAI,IAAI,UAAU,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAC7G,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC;AAsGD;;;;;;;;;GASG;AACH,SAAS,aAAa,CACpB,OAAgB,EAChB,UAAiD,EACjD,KAAsB;IAEtB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,SAAS,CAAC,0CAA0C,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,cAAc,CAAC,GAAG;YAAE,SAAS;QAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,SAAS;QAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAA2B;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,UAAoB,EAAQ,EAAE;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,yCAAyC;QAC3E,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU;gBAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,KAAK,MAAM,UAAU,IAAI,MAAM;QAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAmB;IAEnB,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,MAAoB,EAAE,MAAqB;IACxE,MAAM,KAAK,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,SAAS,CACjB,qCAAqC,KAAK,gDAAgD,CAC3F,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CAAC,eAAe,GAAG,CAAC,IAAI,4BAA4B,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,UAA6B,CAAC;QAClC,IAAI,CAAC;YACH,UAAU,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;YACnF,MAAM,IAAI,SAAS,CAAC,SAAS,KAAK,CAAC,IAAI,0BAA0B,KAAK,mBAAmB,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,SAAS,CAAC,SAAS,KAAK,CAAC,IAAI,4BAA4B,KAAK,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,UAAqB;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC;IAC1C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,0BAA0B,CAAC,MAAoB,EAAE,UAAoB;IAC5E,MAAM,WAAW,GAAG,CAAC,GAKpB,EAAU,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,OAAO,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,YAAY,cAAc,GAAG,CAAC,QAAQ,EAAE,CAAC;IAElG,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5F,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CACjB,+CAA+C,UAAU,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,IAAI;gBACnF,kFAAkF,CACrF,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,SAAS,CACjB,8BAA8B,UAAU,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,MAAM;gBACpE,GAAG,WAAW,CAAC,QAAQ,CAAC,iBAAiB,WAAW,CAAC,QAAQ,CAAC,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CACjB,kCAAkC,UAAU,CAAC,IAAI,cAAc,IAAI,IAAI;gBACrE,yDAAyD,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1F,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CACjB,yCAAyC,UAAU,CAAC,IAAI,IAAI,IAAI,IAAI;gBAClE,oFAAoF,CACvF,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CACjB,wBAAwB,UAAU,CAAC,IAAI,IAAI,IAAI,QAAQ,QAAQ,mBAAmB,GAAG,GAAG,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CACjB,4BAA4B,UAAU,CAAC,IAAI,cAAc,IAAI,IAAI;gBAC/D,2DAA2D,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAqBD,MAAM,UAAU,aAAa,CAC3B,OAAgB,EAChB,UAAiD,EACjD,UAAgC,EAAE;IAElC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACrF,KAAK,MAAM,eAAe,IAAI,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAC7D,SAAS;QACX,CAAC;QACD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CACxE,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,KAAK,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC;YAC9C,IAAI,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,MAAM,IAAI,SAAS,CAAC,mCAAmC,eAAe,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;oBACzF,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,eAAe;wBACrB,SAAS,EAAE,eAAe,CAAC,IAAI;wBAC/B,IAAI;wBACJ,EAAE,EAAE,UAAU;qBACf,CAAC,CAAC;oBACH,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACxB,QAAQ,GAAG,MAAM,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBACnD,IAAI,CAAC,gBAAgB,CAAC,UAAU,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3D,MAAM,IAAI,SAAS,CACjB,wDAAwD,eAAe,CAAC,IAAI,IAAI,UAAU,EAAE,CAC7F,CAAC;gBACJ,CAAC;gBACD,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;oBAC9B,MAAM,IAAI,SAAS,CACjB,+CAA+C,eAAe,CAAC,IAAI,IAAI,UAAU,EAAE,CACpF,CAAC;gBACJ,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,YAAY;oBAClB,SAAS,EAAE,eAAe,CAAC,IAAI;oBAC/B,UAAU;oBACV,UAAU,EAAE,gBAAgB;oBAC5B,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;iBAChD,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,IAAI,SAAS,CACjB,+BAA+B,eAAe,CAAC,IAAI,IAAI,UAAU,OAAO,QAAQ,CAAC,IAAI,iBAAiB,gBAAgB,CAAC,IAAI,EAAE,CAC9H,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC;YACzC,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC;YAChD,IAAI,WAAW,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC5D,MAAM,IAAI,SAAS,CACjB,mDAAmD,eAAe,CAAC,IAAI,IAAI,UAAU,kDAAkD,CACxI,CAAC;YACJ,CAAC;YACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,eAAe,CAAC,IAAI;wBAC/B,UAAU;wBACV,UAAU,EAAE,IAAI;qBACjB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC7E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,MAAM,IAAI,SAAS,CACjB,kCAAkC,eAAe,CAAC,IAAI,IAAI,UAAU,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnG,CAAC;oBACJ,CAAC;oBACD,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;wBAC/D,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,YAAY;4BAClB,SAAS,EAAE,eAAe,CAAC,IAAI;4BAC/B,UAAU;4BACV,UAAU,EAAE,CAAC,GAAG,WAAW,CAAC;yBAC7B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC/D,IAAI,aAAa,KAAK,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,IAAI,SAAS,CAAC,8BAA8B,eAAe,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,kBAAkB;oBACxB,SAAS,EAAE,eAAe,CAAC,IAAI;oBAC/B,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,gBAAgB;oBACtB,SAAS,EAAE,eAAe,CAAC,IAAI;oBAC/B,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9E,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,KAAK,eAAe,CAAC;gBAChE,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,KAAK,eAAe,CAAC;gBACtE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;oBACvB,mFAAmF;oBACnF,mDAAmD;oBACnD,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,oBAAoB;wBAC1B,SAAS,EAAE,eAAe,CAAC,IAAI;wBAC/B,UAAU;wBACV,OAAO,EAAE,MAAM;qBAChB,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,eAAe;oBACrB,SAAS,EAAE,eAAe,CAAC,IAAI;oBAC/B,UAAU;oBACV,YAAY,EAAE,gBAAgB,CAAC,WAAW,IAAI,IAAI;iBACnD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC1F,qBAAqB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,eAAe,CAAC,IAAI;gBAC/B,UAAU,EAAE,YAAY,CAAC,IAAI;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,0BAA0B,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACpC,sFAAsF;YACtF,4DAA4D;YAC5D,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,SAAS;YACjE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AA6BD;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,QAA4B,EAC5B,UAAkB;IAYlB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpD,yFAAyF;IACzF,2FAA2F;IAC3F,uCAAuC;IACvC,MAAM,GAAG,GAAG,CAAC,IAA4C,EAAc,EAAE,CACvE,IAAI,CAAC,GAAG,CACN,CAAC,GAAG,EAAE,EAAE,CACN,MAAM,CAAC,WAAW,CAChB,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;QACjD,OAAO,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC,CAAC,CACS,CAChB,CAAC;IACJ,OAAO;QACL,UAAU;QACV,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE;YACpC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAuD;SACvE,CAAC;QACJ,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9E,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAA4B;KACzF,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAC9B,MAAmB,EACnB,KAA+B,EAC/B,QAAsB;IAEtB,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,QAAQ,EAAE;oBACd,IAAI,EAAE,IAAI,CAAC,UAAU;oBACrB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;oBAC1B,oFAAoF;oBACpF,uCAAuC;oBACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU;oBACzE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS;wBAC1C,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;iBACrD,CAAC,CAAC;YACL,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;oBAAE,OAAO,MAAM,CAAC,UAAU,CAAC;;oBAClD,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACjD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAChC,wFAAwF;YACxF,gEAAgE;YAChE,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YACxE,IAAI,KAAK,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3C,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACrC,0EAA0E;YAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YAClD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,OAAO;oBAAE,MAAM,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;;oBAC7D,OAAO,MAAM,CAAC,YAAY,CAAC;YAClC,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;oBAAE,OAAO,MAAM,CAAC,YAAY,CAAC;;oBACtD,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA+B,EAC/B,KAAgC;IAEhC,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,KAAK,KAAK,CAAC;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;AAC3F,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order-by keys prepared for comparison.
|
|
3
|
+
*
|
|
4
|
+
* Sorting is comparison-bound: a merge over n rows performs O(n log n) of them, so what one
|
|
5
|
+
* comparison costs decides what the sort costs. Reading a value out of a row by name and then
|
|
6
|
+
* dispatching on its type at every step is most of that cost, and both of it is avoidable —
|
|
7
|
+
* the values are known before the sort starts, and a term's type does not vary row to row.
|
|
8
|
+
*
|
|
9
|
+
* Each term is extracted once into its own column. A term whose values are all numbers — which
|
|
10
|
+
* includes every datetime, since extraction unboxes them to epoch milliseconds — is stored in a
|
|
11
|
+
* Float64Array beside a null mask, and comparing it is two typed reads and a subtraction. Any
|
|
12
|
+
* other term keeps its values and the generic comparison. The specialized form costs the same
|
|
13
|
+
* eight bytes per key a reference did, plus one byte of mask, so this buys speed with locality
|
|
14
|
+
* rather than with memory.
|
|
15
|
+
*/
|
|
16
|
+
export interface SortKeyColumn {
|
|
17
|
+
/**
|
|
18
|
+
* Ascending comparison with NULL smallest — the engine's default placement, which matches
|
|
19
|
+
* SQLite. Direction and an explicit NULLS FIRST/LAST stay with the caller: a placement is
|
|
20
|
+
* absolute, while direction negates the value comparison.
|
|
21
|
+
*
|
|
22
|
+
* Specialized when the column is built, so the comparison a sort runs millions of times is a
|
|
23
|
+
* closure over one representation rather than a branch on which representation it holds.
|
|
24
|
+
*/
|
|
25
|
+
readonly compare: (left: number, right: number) => number;
|
|
26
|
+
readonly isNull: (index: number) => boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Unwraps a datetime to the number the comparisons use; every other value passes through. */
|
|
29
|
+
export declare function comparableSortValue(value: unknown): unknown;
|
|
30
|
+
/**
|
|
31
|
+
* Extracts one term's values into a comparison-ready column. `valueAt` is called exactly once
|
|
32
|
+
* per row, so a caller that reads through a row object or a vector pays that cost once rather
|
|
33
|
+
* than once per comparison.
|
|
34
|
+
*/
|
|
35
|
+
export declare function buildSortKeyColumn(count: number, valueAt: (index: number) => unknown): SortKeyColumn;
|
|
36
|
+
//# sourceMappingURL=sort-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-keys.d.ts","sourceRoot":"","sources":["../../src/engine/sort-keys.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAClC,aAAa,CA0Cf"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { compareSqlValues } from "./sql-semantics.js";
|
|
2
|
+
/** Unwraps a datetime to the number the comparisons use; every other value passes through. */
|
|
3
|
+
export function comparableSortValue(value) {
|
|
4
|
+
return value instanceof Date ? value.getTime() : value;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Extracts one term's values into a comparison-ready column. `valueAt` is called exactly once
|
|
8
|
+
* per row, so a caller that reads through a row object or a vector pays that cost once rather
|
|
9
|
+
* than once per comparison.
|
|
10
|
+
*/
|
|
11
|
+
export function buildSortKeyColumn(count, valueAt) {
|
|
12
|
+
const values = new Array(count);
|
|
13
|
+
let numeric = true;
|
|
14
|
+
for (let index = 0; index < count; index += 1) {
|
|
15
|
+
const value = comparableSortValue(valueAt(index));
|
|
16
|
+
values[index] = value;
|
|
17
|
+
if (numeric && value !== null && value !== undefined && typeof value !== "number") {
|
|
18
|
+
numeric = false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (!numeric) {
|
|
22
|
+
return {
|
|
23
|
+
compare: (left, right) => compareSqlValues(values[left], values[right]),
|
|
24
|
+
isNull: (index) => {
|
|
25
|
+
const value = values[index];
|
|
26
|
+
return value === null || value === undefined;
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const numbers = new Float64Array(count);
|
|
31
|
+
const nulls = new Uint8Array(count);
|
|
32
|
+
for (let index = 0; index < count; index += 1) {
|
|
33
|
+
const value = values[index];
|
|
34
|
+
if (value === null || value === undefined)
|
|
35
|
+
nulls[index] = 1;
|
|
36
|
+
else
|
|
37
|
+
numbers[index] = value;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
compare: (left, right) => {
|
|
41
|
+
const leftNull = nulls[left] === 1;
|
|
42
|
+
const rightNull = nulls[right] === 1;
|
|
43
|
+
if (leftNull || rightNull)
|
|
44
|
+
return leftNull && rightNull ? 0 : leftNull ? -1 : 1;
|
|
45
|
+
const leftValue = numbers[left] ?? 0;
|
|
46
|
+
const rightValue = numbers[right] ?? 0;
|
|
47
|
+
if (leftValue === rightValue)
|
|
48
|
+
return 0;
|
|
49
|
+
// NaN sorts last, as compareSqlValues has it. The typed path has to say so outright,
|
|
50
|
+
// because a NaN comparison is false whichever way round it is asked.
|
|
51
|
+
if (Number.isNaN(leftValue))
|
|
52
|
+
return Number.isNaN(rightValue) ? 0 : 1;
|
|
53
|
+
if (Number.isNaN(rightValue))
|
|
54
|
+
return -1;
|
|
55
|
+
return leftValue < rightValue ? -1 : 1;
|
|
56
|
+
},
|
|
57
|
+
isNull: (index) => nulls[index] === 1,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=sort-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort-keys.js","sourceRoot":"","sources":["../../src/engine/sort-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SQL/JSON support the engine keeps (T801 family). Documents are UTF-8 text in ordinary
|
|
3
|
+
* string columns, exactly as SQLite stores them: no new logical type, no new storage format,
|
|
4
|
+
* and every function below is a scalar over that text. The path language is the subset with an
|
|
5
|
+
* unambiguous single result — `$`, member steps, and array subscripts — because the multi-value
|
|
6
|
+
* forms need a row-producing operator (JSON_TABLE) the executors do not have.
|
|
7
|
+
*/
|
|
8
|
+
interface JsonPathStep {
|
|
9
|
+
kind: "member" | "index";
|
|
10
|
+
name: string;
|
|
11
|
+
index: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function parseJsonPath(path: unknown, caller: string): JsonPathStep[];
|
|
14
|
+
/** Walks one path over a document, reporting whether it selected anything. */
|
|
15
|
+
export declare function jsonAtPath(document: unknown, path: unknown, caller: string): {
|
|
16
|
+
found: boolean;
|
|
17
|
+
value?: unknown;
|
|
18
|
+
};
|
|
19
|
+
/** Whether a value is JSON text of the requested shape (T825). */
|
|
20
|
+
export declare function jsonIsValid(document: unknown, kind: string): boolean;
|
|
21
|
+
/** A SQL value as its JSON counterpart: datetimes serialize as ISO text, like every cast. */
|
|
22
|
+
export declare function jsonValueOf(value: unknown): unknown;
|
|
23
|
+
/**
|
|
24
|
+
* JSON_ARRAY(v, ...) and JSON_OBJECT(k, v, ...) (T811/T812). Both skip NULL members, which is
|
|
25
|
+
* the standard's default (ABSENT ON NULL for objects, NULL ON NULL for arrays is the other
|
|
26
|
+
* spelling), and both return JSON text.
|
|
27
|
+
*/
|
|
28
|
+
export declare function jsonConstructor(name: "JSON_ARRAY" | "JSON_OBJECT", values: readonly unknown[]): string;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=sql-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-json.d.ts","sourceRoot":"","sources":["../../src/engine/sql-json.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAiC3E;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CACxB,QAAQ,EAAE,OAAO,EACjB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAwBrC;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBpE;AAED,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,YAAY,GAAG,aAAa,EAClC,MAAM,EAAE,SAAS,OAAO,EAAE,GACzB,MAAM,CAeR"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { stringArgument } from "./sql-semantics.js";
|
|
2
|
+
export function parseJsonPath(path, caller) {
|
|
3
|
+
const text = stringArgument(caller, path).trim();
|
|
4
|
+
if (!text.startsWith("$"))
|
|
5
|
+
throw new TypeError(`${caller} paths start at $`);
|
|
6
|
+
const steps = [];
|
|
7
|
+
let cursor = 1;
|
|
8
|
+
while (cursor < text.length) {
|
|
9
|
+
if (text[cursor] === ".") {
|
|
10
|
+
cursor += 1;
|
|
11
|
+
const start = cursor;
|
|
12
|
+
while (cursor < text.length && /[A-Za-z0-9_]/.test(text[cursor] ?? ""))
|
|
13
|
+
cursor += 1;
|
|
14
|
+
if (cursor === start)
|
|
15
|
+
throw new TypeError(`${caller} path expects a member name after .`);
|
|
16
|
+
steps.push({ kind: "member", name: text.slice(start, cursor), index: 0 });
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (text[cursor] === "[") {
|
|
20
|
+
const close = text.indexOf("]", cursor);
|
|
21
|
+
if (close === -1)
|
|
22
|
+
throw new TypeError(`${caller} path has an unclosed subscript`);
|
|
23
|
+
const inner = text.slice(cursor + 1, close).trim();
|
|
24
|
+
cursor = close + 1;
|
|
25
|
+
if (/^\d+$/.test(inner)) {
|
|
26
|
+
steps.push({ kind: "index", name: "", index: Number(inner) });
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const quoted = /^'(.*)'$/.exec(inner) ?? /^"(.*)"$/.exec(inner);
|
|
30
|
+
if (quoted?.[1] !== undefined) {
|
|
31
|
+
steps.push({ kind: "member", name: quoted[1], index: 0 });
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
throw new TypeError(`${caller} paths take array indexes and member names, not: ${inner}`);
|
|
35
|
+
}
|
|
36
|
+
throw new TypeError(`${caller} path is not understood: ${text}`);
|
|
37
|
+
}
|
|
38
|
+
return steps;
|
|
39
|
+
}
|
|
40
|
+
/** Walks one path over a document, reporting whether it selected anything. */
|
|
41
|
+
export function jsonAtPath(document, path, caller) {
|
|
42
|
+
const steps = parseJsonPath(path, caller);
|
|
43
|
+
let current;
|
|
44
|
+
try {
|
|
45
|
+
current = JSON.parse(stringArgument(caller, document));
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// A document that is not JSON selects nothing rather than failing the whole statement,
|
|
49
|
+
// matching the standard's default ON ERROR behaviour for these functions.
|
|
50
|
+
return { found: false };
|
|
51
|
+
}
|
|
52
|
+
for (const step of steps) {
|
|
53
|
+
if (current === null || current === undefined)
|
|
54
|
+
return { found: false };
|
|
55
|
+
if (step.kind === "index") {
|
|
56
|
+
if (!Array.isArray(current))
|
|
57
|
+
return { found: false };
|
|
58
|
+
if (step.index >= current.length)
|
|
59
|
+
return { found: false };
|
|
60
|
+
current = current[step.index];
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (typeof current !== "object" || Array.isArray(current))
|
|
64
|
+
return { found: false };
|
|
65
|
+
const members = current;
|
|
66
|
+
if (!Object.hasOwn(members, step.name))
|
|
67
|
+
return { found: false };
|
|
68
|
+
current = members[step.name];
|
|
69
|
+
}
|
|
70
|
+
return { found: true, value: current };
|
|
71
|
+
}
|
|
72
|
+
/** Whether a value is JSON text of the requested shape (T825). */
|
|
73
|
+
export function jsonIsValid(document, kind) {
|
|
74
|
+
if (typeof document !== "string")
|
|
75
|
+
return false;
|
|
76
|
+
let parsed;
|
|
77
|
+
try {
|
|
78
|
+
parsed = JSON.parse(document);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const isObject = typeof parsed === "object" && parsed !== null && !Array.isArray(parsed);
|
|
84
|
+
switch (kind) {
|
|
85
|
+
case "object":
|
|
86
|
+
return isObject;
|
|
87
|
+
case "array":
|
|
88
|
+
return Array.isArray(parsed);
|
|
89
|
+
case "scalar":
|
|
90
|
+
return !isObject && !Array.isArray(parsed);
|
|
91
|
+
default:
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** A SQL value as its JSON counterpart: datetimes serialize as ISO text, like every cast. */
|
|
96
|
+
export function jsonValueOf(value) {
|
|
97
|
+
return value instanceof Date ? value.toISOString() : value;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* JSON_ARRAY(v, ...) and JSON_OBJECT(k, v, ...) (T811/T812). Both skip NULL members, which is
|
|
101
|
+
* the standard's default (ABSENT ON NULL for objects, NULL ON NULL for arrays is the other
|
|
102
|
+
* spelling), and both return JSON text.
|
|
103
|
+
*/
|
|
104
|
+
export function jsonConstructor(name, values) {
|
|
105
|
+
if (name === "JSON_ARRAY") {
|
|
106
|
+
return JSON.stringify(values.filter((value) => value !== null && value !== undefined).map(jsonValueOf));
|
|
107
|
+
}
|
|
108
|
+
const entries = {};
|
|
109
|
+
for (let index = 0; index + 1 < values.length; index += 2) {
|
|
110
|
+
const key = values[index];
|
|
111
|
+
if (typeof key !== "string")
|
|
112
|
+
throw new TypeError("JSON_OBJECT keys must be strings");
|
|
113
|
+
const member = values[index + 1];
|
|
114
|
+
if (member === null || member === undefined)
|
|
115
|
+
continue;
|
|
116
|
+
entries[key] = jsonValueOf(member);
|
|
117
|
+
}
|
|
118
|
+
return JSON.stringify(entries);
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=sql-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-json.js","sourceRoot":"","sources":["../../src/engine/sql-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL value semantics shared by the row and vector executors.
|
|
3
|
+
*
|
|
4
|
+
* Keep comparison, equality-key, scalar, and pattern behavior here so an execution-path
|
|
5
|
+
* optimization cannot silently change query results.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Deterministic SQL ordering. Strings use Unicode codepoint order rather than host locale data,
|
|
9
|
+
* and signed zero compares equal because SQL numeric equality does not distinguish it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function compareSqlValues(left: unknown, right: unknown): number;
|
|
12
|
+
/** Hot-path string comparison shared by executors without locale-dependent host state. */
|
|
13
|
+
export declare function compareSqlStrings(left: string, right: string): number;
|
|
14
|
+
/** A JSON-safe equality token used by set operations and recursive-CTE deduplication. */
|
|
15
|
+
export declare function encodeSqlEqualityValue(value: unknown): readonly unknown[];
|
|
16
|
+
/**
|
|
17
|
+
* SQLite-compatible ROUND behavior for Minnow's finite number type: precision truncates to an
|
|
18
|
+
* integer and clamps to 0..30, with ties rounded away from zero.
|
|
19
|
+
*/
|
|
20
|
+
export declare function roundSqlNumber(value: number, precision?: number): number;
|
|
21
|
+
/** Compiles SQL LIKE (% = any run, _ = one codepoint) into a bounded cached RegExp. */
|
|
22
|
+
export declare function compileLikePattern(pattern: string, caseInsensitive?: boolean, escape?: string): RegExp;
|
|
23
|
+
/** Defines an own enumerable result-column property, including the special name `__proto__`. */
|
|
24
|
+
export declare function defineSqlResultProperty(target: Record<string, unknown>, name: string, value: unknown): void;
|
|
25
|
+
/**
|
|
26
|
+
* A scalar function's string operand, or a type error naming the function. Shared because both
|
|
27
|
+
* the scalar evaluator and the SQL/JSON functions insist on real strings rather than coercing:
|
|
28
|
+
* a silent coercion here would make `LENGTH(42)` answer instead of failing.
|
|
29
|
+
*/
|
|
30
|
+
export declare function stringArgument(name: string, value: unknown): string;
|
|
31
|
+
//# sourceMappingURL=sql-semantics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-semantics.d.ts","sourceRoot":"","sources":["../../src/engine/sql-semantics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CActE;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,yFAAyF;AACzF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,OAAO,EAAE,CAOzE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAI,GAAG,MAAM,CAMnE;AAID,uFAAuF;AACvF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,eAAe,UAAQ,EACvB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CA0BR;AAMD,gGAAgG;AAChG,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,IAAI,CAON;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAGnE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL value semantics shared by the row and vector executors.
|
|
3
|
+
*
|
|
4
|
+
* Keep comparison, equality-key, scalar, and pattern behavior here so an execution-path
|
|
5
|
+
* optimization cannot silently change query results.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Deterministic SQL ordering. Strings use Unicode codepoint order rather than host locale data,
|
|
9
|
+
* and signed zero compares equal because SQL numeric equality does not distinguish it.
|
|
10
|
+
*/
|
|
11
|
+
export function compareSqlValues(left, right) {
|
|
12
|
+
const a = left instanceof Date ? left.getTime() : left;
|
|
13
|
+
const b = right instanceof Date ? right.getTime() : right;
|
|
14
|
+
if (a === b)
|
|
15
|
+
return 0;
|
|
16
|
+
if (a === null || a === undefined)
|
|
17
|
+
return -1;
|
|
18
|
+
if (b === null || b === undefined)
|
|
19
|
+
return 1;
|
|
20
|
+
if (typeof a === "number" && typeof b === "number") {
|
|
21
|
+
if (Number.isNaN(a))
|
|
22
|
+
return Number.isNaN(b) ? 0 : 1;
|
|
23
|
+
if (Number.isNaN(b))
|
|
24
|
+
return -1;
|
|
25
|
+
return a - b;
|
|
26
|
+
}
|
|
27
|
+
if (typeof a === "string" && typeof b === "string")
|
|
28
|
+
return compareSqlStrings(a, b);
|
|
29
|
+
if (typeof a === "boolean" && typeof b === "boolean")
|
|
30
|
+
return Number(a) - Number(b);
|
|
31
|
+
throw new TypeError("Values must have comparable SQL types");
|
|
32
|
+
}
|
|
33
|
+
/** Hot-path string comparison shared by executors without locale-dependent host state. */
|
|
34
|
+
export function compareSqlStrings(left, right) {
|
|
35
|
+
if (left === right)
|
|
36
|
+
return 0;
|
|
37
|
+
return left < right ? -1 : 1;
|
|
38
|
+
}
|
|
39
|
+
/** A JSON-safe equality token used by set operations and recursive-CTE deduplication. */
|
|
40
|
+
export function encodeSqlEqualityValue(value) {
|
|
41
|
+
if (value === null || value === undefined)
|
|
42
|
+
return [0];
|
|
43
|
+
if (typeof value === "boolean")
|
|
44
|
+
return [1, value];
|
|
45
|
+
if (typeof value === "number")
|
|
46
|
+
return [2, String(value === 0 ? 0 : value)];
|
|
47
|
+
if (typeof value === "string")
|
|
48
|
+
return [3, value];
|
|
49
|
+
if (value instanceof Date)
|
|
50
|
+
return [4, value.getTime()];
|
|
51
|
+
throw new TypeError("Query produced an unsupported value");
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* SQLite-compatible ROUND behavior for Minnow's finite number type: precision truncates to an
|
|
55
|
+
* integer and clamps to 0..30, with ties rounded away from zero.
|
|
56
|
+
*/
|
|
57
|
+
export function roundSqlNumber(value, precision = 0) {
|
|
58
|
+
const digits = Math.min(30, Math.max(0, Math.trunc(precision)));
|
|
59
|
+
// SQLite formats with the requested decimal precision and parses the result back. toFixed
|
|
60
|
+
// follows the same decimal path, avoiding multiplication overflow and binary scaling drift.
|
|
61
|
+
const rounded = Number(value.toFixed(digits));
|
|
62
|
+
return rounded === 0 ? 0 : rounded;
|
|
63
|
+
}
|
|
64
|
+
const likeCache = new Map();
|
|
65
|
+
/** Compiles SQL LIKE (% = any run, _ = one codepoint) into a bounded cached RegExp. */
|
|
66
|
+
export function compileLikePattern(pattern, caseInsensitive = false, escape) {
|
|
67
|
+
const key = JSON.stringify([caseInsensitive, escape ?? null, pattern]);
|
|
68
|
+
const cached = likeCache.get(key);
|
|
69
|
+
if (cached !== undefined)
|
|
70
|
+
return cached;
|
|
71
|
+
let source = "^";
|
|
72
|
+
let escaped = false;
|
|
73
|
+
for (const character of pattern) {
|
|
74
|
+
if (escaped) {
|
|
75
|
+
source += escapeRegExp(character);
|
|
76
|
+
escaped = false;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (escape !== undefined && character === escape) {
|
|
80
|
+
escaped = true;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (character === "%")
|
|
84
|
+
source += "[\\s\\S]*";
|
|
85
|
+
else if (character === "_")
|
|
86
|
+
source += "[\\s\\S]";
|
|
87
|
+
else
|
|
88
|
+
source += escapeRegExp(character);
|
|
89
|
+
}
|
|
90
|
+
if (escaped)
|
|
91
|
+
throw new TypeError("LIKE pattern ends with a dangling escape character");
|
|
92
|
+
source += "$";
|
|
93
|
+
const regExp = new RegExp(source, caseInsensitive ? "iu" : "u");
|
|
94
|
+
if (likeCache.size >= 128)
|
|
95
|
+
likeCache.clear();
|
|
96
|
+
likeCache.set(key, regExp);
|
|
97
|
+
return regExp;
|
|
98
|
+
}
|
|
99
|
+
function escapeRegExp(value) {
|
|
100
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
101
|
+
}
|
|
102
|
+
/** Defines an own enumerable result-column property, including the special name `__proto__`. */
|
|
103
|
+
export function defineSqlResultProperty(target, name, value) {
|
|
104
|
+
Object.defineProperty(target, name, {
|
|
105
|
+
value,
|
|
106
|
+
enumerable: true,
|
|
107
|
+
configurable: true,
|
|
108
|
+
writable: true,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A scalar function's string operand, or a type error naming the function. Shared because both
|
|
113
|
+
* the scalar evaluator and the SQL/JSON functions insist on real strings rather than coercing:
|
|
114
|
+
* a silent coercion here would make `LENGTH(42)` answer instead of failing.
|
|
115
|
+
*/
|
|
116
|
+
export function stringArgument(name, value) {
|
|
117
|
+
if (typeof value !== "string")
|
|
118
|
+
throw new TypeError(`${name} requires a string argument`);
|
|
119
|
+
return value;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=sql-semantics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-semantics.js","sourceRoot":"","sources":["../../src/engine/sql-semantics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { DatabaseRow } from "./database.js";
|
|
2
|
+
import type { CompiledQuery, QueryResult, QueryValue } from "./query.js";
|
|
3
|
+
import { type FtsStats } from "./fts.js";
|
|
4
|
+
import { QueryMemoryContext, type QueryMemoryUsage } from "./memory.js";
|
|
5
|
+
export type VectorType = "boolean" | "number" | "string" | "datetime";
|
|
6
|
+
/**
|
|
7
|
+
* A resident slice of a logically longer streamed column. Window arrays index rows relative to
|
|
8
|
+
* `start`; `length` on the vector remains the logical table length.
|
|
9
|
+
*/
|
|
10
|
+
export interface VectorWindow {
|
|
11
|
+
readonly start: number;
|
|
12
|
+
readonly length: number;
|
|
13
|
+
}
|
|
14
|
+
interface VectorBase {
|
|
15
|
+
readonly validity: Uint8Array;
|
|
16
|
+
readonly length: number;
|
|
17
|
+
readonly window?: VectorWindow;
|
|
18
|
+
}
|
|
19
|
+
export interface BooleanVector extends VectorBase {
|
|
20
|
+
readonly kind: "boolean";
|
|
21
|
+
readonly values: Uint8Array;
|
|
22
|
+
}
|
|
23
|
+
export interface NumberVector extends VectorBase {
|
|
24
|
+
readonly kind: "number";
|
|
25
|
+
readonly values: Float64Array;
|
|
26
|
+
}
|
|
27
|
+
export interface DateTimeVector extends VectorBase {
|
|
28
|
+
readonly kind: "datetime";
|
|
29
|
+
readonly values: Float64Array;
|
|
30
|
+
}
|
|
31
|
+
export interface StringVector extends VectorBase {
|
|
32
|
+
readonly kind: "string";
|
|
33
|
+
readonly codes: Uint32Array;
|
|
34
|
+
readonly dictionary: readonly string[];
|
|
35
|
+
}
|
|
36
|
+
export type ColumnVector = BooleanVector | NumberVector | DateTimeVector | StringVector;
|
|
37
|
+
export interface ColumnarColumnInput {
|
|
38
|
+
readonly type: VectorType;
|
|
39
|
+
readonly values: readonly QueryValue[];
|
|
40
|
+
}
|
|
41
|
+
export interface ColumnarTable {
|
|
42
|
+
readonly name: string;
|
|
43
|
+
readonly rowCount: number;
|
|
44
|
+
readonly columns: ReadonlyMap<string, ColumnVector>;
|
|
45
|
+
readonly uniqueKey?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface PreparedVectorQuery {
|
|
48
|
+
readonly memoryUsage: QueryMemoryUsage;
|
|
49
|
+
execute(): QueryResult;
|
|
50
|
+
executeAsync(options?: AsyncQueryExecutionOptions): Promise<QueryResult>;
|
|
51
|
+
close(): void;
|
|
52
|
+
}
|
|
53
|
+
export interface QuerySpillStore {
|
|
54
|
+
putPage(ownerId: string, runId: string, pageIndex: number, bytes: Uint8Array): Promise<void>;
|
|
55
|
+
getPage(ownerId: string, runId: string, pageIndex: number): Promise<Uint8Array | undefined>;
|
|
56
|
+
removeRun(ownerId: string, runId: string): Promise<void>;
|
|
57
|
+
removeOwner(ownerId: string): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
export interface AsyncQueryExecutionOptions {
|
|
60
|
+
readonly spillStore?: QuerySpillStore;
|
|
61
|
+
readonly spillPageRows?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Makes the scan-source window [start, start + length) resident before each batch. Supplied by
|
|
64
|
+
* a streaming preparation whose scan-source vectors hold only a sliding window; the executor
|
|
65
|
+
* awaits it at the top of every scan batch in every asynchronous execution path. A numeric
|
|
66
|
+
* return is the exclusive end of the resident window: the executor clamps the batch to it, so
|
|
67
|
+
* batches align to storage-block boundaries and a loader can install whole decoded blocks by
|
|
68
|
+
* reference instead of stitching copies.
|
|
69
|
+
*/
|
|
70
|
+
readonly loadScanWindow?: (start: number, length: number) => number | Promise<number>;
|
|
71
|
+
}
|
|
72
|
+
export interface PrepareVectorQueryOptions {
|
|
73
|
+
readonly memoryContext?: QueryMemoryContext;
|
|
74
|
+
/**
|
|
75
|
+
* Exact BM25 corpus statistics served by the persisted full-text index, keyed by each
|
|
76
|
+
* scoring node's compiled signature (`JSON.stringify` of the plan node). A bound node with
|
|
77
|
+
* served statistics skips its whole-scan corpus pass, which is also what makes streamed
|
|
78
|
+
* scans and index pruning legal for scoring plans.
|
|
79
|
+
*/
|
|
80
|
+
readonly ftsStats?: ReadonlyMap<string, FtsStats>;
|
|
81
|
+
}
|
|
82
|
+
export declare function createColumnarTable(name: string, columns: ReadonlyMap<string, ColumnarColumnInput>, uniqueKey?: string): ColumnarTable;
|
|
83
|
+
export declare function columnarTableFromRows(name: string, rows: readonly DatabaseRow[], projectedColumnNames?: readonly string[]): ColumnarTable;
|
|
84
|
+
export declare function prepareVectorQuery(plan: CompiledQuery, inputTables: ReadonlyMap<string, ColumnarTable>, options?: PrepareVectorQueryOptions): PreparedVectorQuery;
|
|
85
|
+
export declare function vectorValue(vector: ColumnVector, rowIndex: number): QueryValue;
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=vector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/engine/vector.ts"],"names":[],"mappings":"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"}
|