@query-farm/vgi 0.37.1 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +74 -0
  2. package/dist/catalog/composite.d.ts +23 -1
  3. package/dist/catalog/contents-digest.d.ts +25 -0
  4. package/dist/catalog/interface.d.ts +107 -2
  5. package/dist/catalog/read-only.d.ts +45 -1
  6. package/dist/client/client.d.ts +49 -2
  7. package/dist/client/types.d.ts +56 -1
  8. package/dist/client-entry.js +239 -11
  9. package/dist/client-entry.js.map +9 -8
  10. package/dist/codec/asd.d.ts +8 -0
  11. package/dist/functions/copy-to.d.ts +1 -1
  12. package/dist/generated/vgi-client.d.ts +19 -0
  13. package/dist/generated/vgi-protocol-schemas.d.ts +3 -0
  14. package/dist/generated/vgi-protocol-types.d.ts +26 -0
  15. package/dist/http/fetch.d.ts +2 -1
  16. package/dist/index.core.d.ts +6 -3
  17. package/dist/index.js +672 -43
  18. package/dist/index.js.map +21 -17
  19. package/dist/protocol/handlers/catalog/contents.d.ts +27 -0
  20. package/dist/rpc-server.d.ts +97 -0
  21. package/dist/serve-entry.d.ts +2 -1
  22. package/dist/serve-entry.js +405 -25
  23. package/dist/serve-entry.js.map +18 -14
  24. package/dist/worker-cf-entry.d.ts +3 -0
  25. package/dist/worker-cf-entry.js +528 -31
  26. package/dist/worker-cf-entry.js.map +20 -16
  27. package/dist/worker.d.ts +9 -1
  28. package/package.json +3 -3
  29. package/src/catalog/composite.ts +81 -0
  30. package/src/catalog/contents-digest.ts +78 -0
  31. package/src/catalog/interface.ts +167 -5
  32. package/src/catalog/read-only.ts +68 -6
  33. package/src/client/client.ts +201 -0
  34. package/src/client/types.ts +58 -1
  35. package/src/codec/asd.ts +108 -9
  36. package/src/functions/copy-to.ts +1 -1
  37. package/src/generated/vgi-client.ts +22 -1
  38. package/src/generated/vgi-protocol-schemas.ts +30 -1
  39. package/src/generated/vgi-protocol-types.ts +126 -0
  40. package/src/http/fetch.ts +10 -2
  41. package/src/index.core.ts +23 -2
  42. package/src/protocol/dispatch.ts +1 -1
  43. package/src/protocol/handlers/catalog/admin.ts +35 -26
  44. package/src/protocol/handlers/catalog/contents.ts +162 -0
  45. package/src/protocol/handlers/catalog/macro.ts +2 -1
  46. package/src/protocol/handlers/catalog/shared.ts +12 -1
  47. package/src/rpc-server.ts +273 -0
  48. package/src/serve-entry.ts +7 -1
  49. package/src/worker-cf-entry.ts +8 -0
  50. package/src/worker.ts +24 -6
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/arrow/predicates.ts", "../src/arrow/impl-arrowjs/schema.ts", "../src/arrow/impl-arrowjs/empty.ts", "../src/arrow/impl-arrowjs/build.ts", "../src/arrow/codec/registry.ts", "../src/arrow/impl-arrowjs/canonical.ts", "../src/arrow/impl-arrowjs/iterate.ts", "../src/arrow/impl-arrowjs/filter.ts", "../src/arrow/impl-arrowjs/project.ts", "../src/arrow/impl-arrowjs/metadata.ts", "../src/arrow/impl-arrowjs/ipc.ts", "../src/arrow/impl-arrowjs/statistics.ts", "../src/arrow/impl-arrowjs/index.ts", "../src/arrow/schema-types.ts", "../src/arguments/arguments.ts", "../src/protocol/serializers/arguments.ts", "../src/types.ts", "../src/util/bytes.ts", "../src/protocol/serializers/shared.ts", "../src/protocol/serializers/bind.ts", "../src/protocol/serializers/init.ts", "../src/errors.ts", "../src/schema-path.ts", "../src/codec/asd.ts", "../src/generated/vgi-protocol-schemas.ts", "../src/generated/vgi-client.ts", "../src/catalog/interface.ts", "../src/client/protocol.ts", "../src/catalog/attach-options.ts", "../src/client/errors.ts", "../src/client/helpers.ts", "../src/client/client.ts", "../src/arguments/argument-spec.ts", "../src/catalog/attach-option.ts"],
3
+ "sources": ["../src/arrow/predicates.ts", "../src/arrow/impl-arrowjs/schema.ts", "../src/arrow/impl-arrowjs/empty.ts", "../src/arrow/impl-arrowjs/build.ts", "../src/arrow/codec/registry.ts", "../src/arrow/impl-arrowjs/canonical.ts", "../src/arrow/impl-arrowjs/iterate.ts", "../src/arrow/impl-arrowjs/filter.ts", "../src/arrow/impl-arrowjs/project.ts", "../src/arrow/impl-arrowjs/metadata.ts", "../src/arrow/impl-arrowjs/ipc.ts", "../src/arrow/impl-arrowjs/statistics.ts", "../src/arrow/impl-arrowjs/index.ts", "../src/arrow/schema-types.ts", "../src/arguments/arguments.ts", "../src/protocol/serializers/arguments.ts", "../src/types.ts", "../src/util/bytes.ts", "../src/protocol/serializers/shared.ts", "../src/protocol/serializers/bind.ts", "../src/protocol/serializers/init.ts", "../src/errors.ts", "../src/schema-path.ts", "../src/codec/asd.ts", "../src/generated/vgi-protocol-schemas.ts", "../src/generated/vgi-protocol-types.ts", "../src/generated/vgi-client.ts", "../src/catalog/interface.ts", "../src/client/protocol.ts", "../src/catalog/attach-options.ts", "../src/client/errors.ts", "../src/client/helpers.ts", "../src/client/client.ts", "../src/arguments/argument-spec.ts", "../src/catalog/attach-option.ts"],
4
4
  "sourcesContent": [
5
5
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Backend-agnostic Arrow type predicates. Both arrow-js and flechette\n// expose `typeId` on every DataType with identical numeric values, so a\n// single `t.typeId === N` check works regardless of the active backend.\n\nimport type { VgiDataType } from \"./types.js\";\n\nexport const TypeId = {\n Null: 1,\n Int: 2,\n Float: 3,\n Binary: 4,\n Utf8: 5,\n Bool: 6,\n Decimal: 7,\n Date: 8,\n Time: 9,\n Timestamp: 10,\n Interval: 11,\n List: 12,\n Struct: 13,\n Union: 14,\n FixedSizeBinary: 15,\n FixedSizeList: 16,\n Map: 17,\n Duration: 18,\n LargeBinary: 19,\n LargeUtf8: 20,\n Dictionary: -1,\n} as const;\n\nexport function isNull(t: VgiDataType): boolean { return t.typeId === TypeId.Null; }\nexport function isInt(t: VgiDataType): boolean { return t.typeId === TypeId.Int; }\nexport function isFloat(t: VgiDataType): boolean { return t.typeId === TypeId.Float; }\nexport function isBinary(t: VgiDataType): boolean {\n return t.typeId === TypeId.Binary || t.typeId === TypeId.LargeBinary;\n}\nexport function isUtf8(t: VgiDataType): boolean {\n return t.typeId === TypeId.Utf8 || t.typeId === TypeId.LargeUtf8;\n}\nexport function isBool(t: VgiDataType): boolean { return t.typeId === TypeId.Bool; }\nexport function isDecimal(t: VgiDataType): boolean { return t.typeId === TypeId.Decimal; }\nexport function isDate(t: VgiDataType): boolean { return t.typeId === TypeId.Date; }\nexport function isTime(t: VgiDataType): boolean { return t.typeId === TypeId.Time; }\nexport function isTimestamp(t: VgiDataType): boolean { return t.typeId === TypeId.Timestamp; }\nexport function isInterval(t: VgiDataType): boolean { return t.typeId === TypeId.Interval; }\nexport function isList(t: VgiDataType): boolean { return t.typeId === TypeId.List; }\nexport function isStruct(t: VgiDataType): boolean { return t.typeId === TypeId.Struct; }\nexport function isUnion(t: VgiDataType): boolean { return t.typeId === TypeId.Union; }\nexport function isFixedSizeBinary(t: VgiDataType): boolean { return t.typeId === TypeId.FixedSizeBinary; }\nexport function isFixedSizeList(t: VgiDataType): boolean { return t.typeId === TypeId.FixedSizeList; }\nexport function isMap(t: VgiDataType): boolean { return t.typeId === TypeId.Map; }\nexport function isDuration(t: VgiDataType): boolean { return t.typeId === TypeId.Duration; }\nexport function isDictionary(t: VgiDataType): boolean { return t.typeId === TypeId.Dictionary; }\n\n/**\n * Stable structural identity for an Arrow type, usable for equality.\n *\n * `String(type)` is NOT usable for this: arrow-js DataTypes are class\n * instances with a meaningful `toString()` (\"Int64\", \"Utf8\", …), while\n * flechette types are plain object literals that stringify to\n * \"[object Object]\". Comparing with `toString()` therefore reports *every*\n * flechette type as equal to every other, and never equal to a declared\n * arrow-js type — which collapsed overload resolution to a first-match tie\n * (`type_info(42::BIGINT)` picked the INTEGER overload).\n *\n * Both libraries agree on `typeId` and on the parameter *values*; they differ\n * only on a few property names, so those are read under both spellings. The\n * output is an opaque key — compare it, don't display it.\n */\nexport function typeSignature(t: VgiDataType | null | undefined): string {\n if (t == null) return \"null\";\n const a = t as any;\n const kids = (): string =>\n Array.isArray(a.children)\n ? a.children.map((c: any) => `${c?.name ?? \"\"}:${typeSignature(c?.type ?? c)}`).join(\",\")\n : \"\";\n switch (t.typeId) {\n case TypeId.Int:\n return `int${a.bitWidth}${(a.isSigned ?? a.signed ?? true) ? \"\" : \"u\"}`;\n case TypeId.Float:\n return `float${a.precision}`;\n case TypeId.Decimal:\n return `decimal${a.bitWidth ?? 128}(${a.precision},${a.scale})`;\n case TypeId.Date:\n case TypeId.Time:\n case TypeId.Duration:\n return `${t.typeId}[${a.unit}]`;\n case TypeId.Timestamp:\n return `ts[${a.unit},${a.timezone ?? \"\"}]`;\n case TypeId.Interval:\n return `iv[${a.unit}]`;\n case TypeId.FixedSizeBinary:\n return `fsb(${a.byteWidth ?? a.stride})`;\n case TypeId.FixedSizeList:\n return `fsl(${a.listSize ?? a.stride},${kids()})`;\n case TypeId.List:\n case TypeId.Struct:\n case TypeId.Map:\n return `${t.typeId}<${kids()}>`;\n case TypeId.Union:\n return `union(${a.mode},${kids()})`;\n case TypeId.Dictionary:\n return `dict(${typeSignature(a.dictionary)},${typeSignature(a.indices)},${\n a.ordered ?? a.isOrdered ?? false\n })`;\n default:\n // Covers the parameterless types (Null, Bool, Utf8, Binary and their\n // Large variants) plus anything not enumerated above; children are\n // folded in when present so a nested type still differentiates.\n return Array.isArray(a.children) ? `${t.typeId}<${kids()}>` : String(t.typeId);\n }\n}\n\n/** Runtime check: does `x` quack like a VgiBatch? Used at API boundaries\n * where callers may pass either a batch or a plain column dict. Duck-typed\n * because arrow-js and flechette use unrelated classes. */\nexport function isBatch(x: unknown): x is import(\"./types.js\").VgiBatch {\n return (\n x != null &&\n typeof (x as any).numRows === \"number\" &&\n (x as any).schema != null &&\n Array.isArray((x as any).schema.fields)\n );\n}\n",
6
6
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Factory-style constructors for arrow-js Schema/Field/DataType values.\n// Mirrors flechette's API so internal code can call the same factory\n// regardless of the active backend.\n\nimport {\n Schema as A_Schema,\n Field as A_Field,\n Null as A_Null,\n Bool as A_Bool,\n Int8 as A_Int8,\n Int16 as A_Int16,\n Int32 as A_Int32,\n Int64 as A_Int64,\n Uint8 as A_Uint8,\n Uint16 as A_Uint16,\n Uint32 as A_Uint32,\n Uint64 as A_Uint64,\n Float16 as A_Float16,\n Float32 as A_Float32,\n Float64 as A_Float64,\n Utf8 as A_Utf8,\n LargeUtf8 as A_LargeUtf8,\n Binary as A_Binary,\n LargeBinary as A_LargeBinary,\n Decimal as A_Decimal,\n Date_ as A_Date,\n Time as A_Time,\n Timestamp as A_Timestamp,\n Duration as A_Duration,\n Interval as A_Interval,\n List as A_List,\n Struct as A_Struct,\n Map_ as A_Map,\n Dictionary as A_Dictionary,\n SparseUnion as A_SparseUnion,\n DenseUnion as A_DenseUnion,\n FixedSizeBinary as A_FixedSizeBinary,\n FixedSizeList as A_FixedSizeList,\n DateUnit as A_DateUnit,\n TimeUnit as A_TimeUnit,\n IntervalUnit as A_IntervalUnit,\n UnionMode as A_UnionMode,\n type DataType,\n} from \"@query-farm/apache-arrow\";\n\nimport type { VgiField, VgiSchema, VgiDataType } from \"../types.js\";\n\n// ----- TimeUnit / DateUnit / UnionMode constants ---------------------------\n// Numeric values match the Arrow IPC spec; both arrow-js and flechette\n// use the same integers, so internal code can freely cross backends.\n\nexport const TimeUnit = {\n SECOND: A_TimeUnit.SECOND,\n MILLISECOND: A_TimeUnit.MILLISECOND,\n MICROSECOND: A_TimeUnit.MICROSECOND,\n NANOSECOND: A_TimeUnit.NANOSECOND,\n} as const;\n\nexport const DateUnit = {\n DAY: A_DateUnit.DAY,\n MILLISECOND: A_DateUnit.MILLISECOND,\n} as const;\n\nexport const IntervalUnit = {\n YEAR_MONTH: A_IntervalUnit.YEAR_MONTH,\n DAY_TIME: A_IntervalUnit.DAY_TIME,\n MONTH_DAY_NANO: A_IntervalUnit.MONTH_DAY_NANO,\n} as const;\n\nexport const UnionMode = {\n Sparse: A_UnionMode.Sparse,\n Dense: A_UnionMode.Dense,\n} as const;\n\n// ----- Schema / Field ------------------------------------------------------\n\nexport function schema(\n fields: readonly VgiField[],\n metadata?: Map<string, string>,\n): VgiSchema {\n return new A_Schema(\n fields as A_Field[],\n metadata ?? new Map(),\n ) as unknown as VgiSchema;\n}\n\nexport function field(\n name: string,\n type: VgiDataType,\n nullable = true,\n metadata?: Map<string, string>,\n): VgiField {\n return new A_Field(\n name,\n type as DataType,\n nullable,\n metadata ?? new Map(),\n ) as unknown as VgiField;\n}\n\n// ----- Primitive types -----------------------------------------------------\n\nexport const nullType = (): VgiDataType => new A_Null() as unknown as VgiDataType;\nexport const bool = (): VgiDataType => new A_Bool() as unknown as VgiDataType;\n\nexport const int8 = (): VgiDataType => new A_Int8() as unknown as VgiDataType;\nexport const int16 = (): VgiDataType => new A_Int16() as unknown as VgiDataType;\nexport const int32 = (): VgiDataType => new A_Int32() as unknown as VgiDataType;\nexport const int64 = (): VgiDataType => new A_Int64() as unknown as VgiDataType;\nexport const uint8 = (): VgiDataType => new A_Uint8() as unknown as VgiDataType;\nexport const uint16 = (): VgiDataType => new A_Uint16() as unknown as VgiDataType;\nexport const uint32 = (): VgiDataType => new A_Uint32() as unknown as VgiDataType;\nexport const uint64 = (): VgiDataType => new A_Uint64() as unknown as VgiDataType;\nexport function int(bitWidth: 8 | 16 | 32 | 64 = 32, signed = true): VgiDataType {\n if (signed) {\n switch (bitWidth) {\n case 8: return int8();\n case 16: return int16();\n case 32: return int32();\n case 64: return int64();\n }\n } else {\n switch (bitWidth) {\n case 8: return uint8();\n case 16: return uint16();\n case 32: return uint32();\n case 64: return uint64();\n }\n }\n throw new Error(`int: unsupported bitWidth ${bitWidth}`);\n}\n\nexport const float16 = (): VgiDataType => new A_Float16() as unknown as VgiDataType;\nexport const float32 = (): VgiDataType => new A_Float32() as unknown as VgiDataType;\nexport const float64 = (): VgiDataType => new A_Float64() as unknown as VgiDataType;\n\nexport const utf8 = (): VgiDataType => new A_Utf8() as unknown as VgiDataType;\nexport const largeUtf8 = (): VgiDataType => new A_LargeUtf8() as unknown as VgiDataType;\nexport const binary = (): VgiDataType => new A_Binary() as unknown as VgiDataType;\nexport const largeBinary = (): VgiDataType => new A_LargeBinary() as unknown as VgiDataType;\nexport const fixedSizeBinary = (byteWidth: number): VgiDataType =>\n new A_FixedSizeBinary(byteWidth) as unknown as VgiDataType;\n\n// ----- Decimal -------------------------------------------------------------\n\nexport function decimal(\n precision: number,\n scale: number,\n bitWidth: 32 | 64 | 128 | 256 = 128,\n): VgiDataType {\n // arrow-js's Decimal constructor signature is (scale, precision, bitWidth) —\n // the OPPOSITE order of our facade (precision, scale). Passing them in facade\n // order made arrow-js report `.precision`/`.scale` swapped versus flechette.\n // Swap here so a facade-built decimal reports identical precision/scale on\n // both backends.\n return new A_Decimal(scale, precision, bitWidth) as unknown as VgiDataType;\n}\nexport const decimal128 = (precision: number, scale: number): VgiDataType =>\n decimal(precision, scale, 128);\nexport const decimal256 = (precision: number, scale: number): VgiDataType =>\n decimal(precision, scale, 256);\n\n// ----- Date / Time / Timestamp / Duration / Interval -----------------------\n\nexport const date = (unit: number = A_DateUnit.MILLISECOND): VgiDataType =>\n new A_Date(unit) as unknown as VgiDataType;\nexport const dateDay = (): VgiDataType => date(A_DateUnit.DAY);\nexport const dateMillisecond = (): VgiDataType => date(A_DateUnit.MILLISECOND);\n\nexport function time(unit: number = A_TimeUnit.MILLISECOND, bitWidth?: 32 | 64): VgiDataType {\n const bw = bitWidth ?? (unit <= A_TimeUnit.MILLISECOND ? 32 : 64);\n return new A_Time(unit, bw) as unknown as VgiDataType;\n}\nexport const timeSecond = (): VgiDataType => time(A_TimeUnit.SECOND, 32);\nexport const timeMillisecond = (): VgiDataType => time(A_TimeUnit.MILLISECOND, 32);\nexport const timeMicrosecond = (): VgiDataType => time(A_TimeUnit.MICROSECOND, 64);\nexport const timeNanosecond = (): VgiDataType => time(A_TimeUnit.NANOSECOND, 64);\n\nexport const timestamp = (\n unit: number = A_TimeUnit.MILLISECOND,\n timezone: string | null = null,\n): VgiDataType => new A_Timestamp(unit, timezone) as unknown as VgiDataType;\n\nexport const duration = (unit: number = A_TimeUnit.MILLISECOND): VgiDataType =>\n new A_Duration(unit) as unknown as VgiDataType;\n\nexport const interval = (unit: number = A_IntervalUnit.MONTH_DAY_NANO): VgiDataType =>\n new A_Interval(unit) as unknown as VgiDataType;\n\n// ----- Nested types --------------------------------------------------------\n\nexport function list(child: VgiField | VgiDataType): VgiDataType {\n const childField = isField(child) ? child : field(\"item\", child as VgiDataType, true);\n return new A_List(childField as A_Field) as unknown as VgiDataType;\n}\n\nexport function fixedSizeList(child: VgiField | VgiDataType, listSize: number): VgiDataType {\n const childField = isField(child) ? child : field(\"item\", child as VgiDataType, true);\n return new A_FixedSizeList(listSize, childField as A_Field) as unknown as VgiDataType;\n}\n\nexport function struct(children: readonly VgiField[]): VgiDataType {\n return new A_Struct(children as A_Field[]) as unknown as VgiDataType;\n}\n\nexport function map(\n keyField: VgiField | VgiDataType,\n valueField: VgiField | VgiDataType,\n keysSorted = false,\n): VgiDataType {\n const k = isField(keyField) ? keyField : field(\"key\", keyField as VgiDataType, false);\n const v = isField(valueField) ? valueField : field(\"value\", valueField as VgiDataType, true);\n // arrow-js Map_ takes a Field whose type is Struct{key,value}\n const entries = field(\"entries\", struct([k, v]), false);\n return new A_Map(entries as A_Field, keysSorted) as unknown as VgiDataType;\n}\n\nexport function dictionary(\n valueType: VgiDataType,\n indexType: VgiDataType = int16(),\n ordered = false,\n id?: number,\n): VgiDataType {\n return new A_Dictionary(\n valueType as DataType,\n indexType as any,\n id,\n ordered,\n ) as unknown as VgiDataType;\n}\n\nexport function union(\n mode: number,\n children: readonly (VgiField | VgiDataType)[],\n typeIds?: number[],\n): VgiDataType {\n const childFields = children.map((c, i) =>\n isField(c) ? c : field(String(i), c as VgiDataType, true),\n );\n const ids = typeIds ?? childFields.map((_, i) => i);\n const Ctor = mode === A_UnionMode.Dense ? A_DenseUnion : A_SparseUnion;\n return new Ctor(ids, childFields as A_Field[]) as unknown as VgiDataType;\n}\n\nexport const sparseUnion = (\n children: readonly (VgiField | VgiDataType)[],\n typeIds?: number[],\n): VgiDataType => union(A_UnionMode.Sparse, children, typeIds);\n\nexport const denseUnion = (\n children: readonly (VgiField | VgiDataType)[],\n typeIds?: number[],\n): VgiDataType => union(A_UnionMode.Dense, children, typeIds);\n\n// Utility: distinguish Field from DataType. arrow-js Fields have `name` and\n// `type`; bare DataTypes only have `typeId` (and class-specific props).\nfunction isField(x: VgiField | VgiDataType): x is VgiField {\n return typeof (x as VgiField).name === \"string\" && (x as VgiField).type != null;\n}\n",
@@ -25,19 +25,20 @@
25
25
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// InitRequest / GlobalInitResponse wire serialization. Schema mirrors\n// vgi-python's InitRequest dataclass — outer wire shape:\n// bind_call: binary (nested IPC of BindRequest)\n// output_schema: binary (nullable serialized Schema)\n// bind_opaque_data: binary (nullable)\n// projection_ids: list<int64> (nullable)\n// pushdown_filters: large_binary (nullable) — nested IPC of filter batch\n// join_keys: list<large_binary> (nullable list of IPC-serialized batches)\n// phase: utf8 (nullable) — dictionary(int16,string) in Python\n// execution_id: binary (nullable)\n// init_opaque_data: binary (nullable)\n// Order pushdown hints + TABLESAMPLE pushdown hints follow.\n\nimport {\n type VgiBatch,\n schema as makeSchema,\n field,\n utf8,\n binary,\n int64,\n float64,\n list,\n largeBinary,\n dictionary,\n int16,\n} from \"../../arrow/index.js\";\n// RecordBatch type alias kept for the joinKeys closure below — it's a runtime\n// value that lands in BindRequest, not a wire shape.\ntype RecordBatch = VgiBatch;\nimport { TableInOutPhase } from \"../../types.js\";\nimport {\n OrderByDirection,\n OrderByNullOrder,\n type InitRequest,\n type GlobalInitResponse,\n} from \"../types.js\";\nimport {\n serializeSchema,\n deserializeSchema,\n serializeBatch,\n deserializeBatch,\n batchToScalarDict,\n} from \"../../util/arrow/index.js\";\nimport { toUint8Array, buildSingleRowBatch } from \"./shared.js\";\nimport { serializeBindRequest, deserializeBindRequest } from \"./bind.js\";\nimport { decodeDictValue } from \"../../util/arrow/index.js\";\n\n// The InitRequest wire record. This must equal `InitRequestSchema` in\n// src/generated/vgi-protocol-schemas.ts EXACTLY — see the note on\n// BIND_REQUEST_SCHEMA in bind.ts for why \"reads by name, so close enough\" is\n// not good enough (vgi-rpc-go compares with `arrow.Schema.Equal`).\n//\n// This declaration had drifted in six ways at once, none of which any test\n// could see: it was missing `split_tokens` and `row_limit` entirely, typed\n// `pushdown_filters` and the `join_keys` items as 32-bit binary where the\n// protocol says large, typed `phase` and the two order-by enums as plain utf8\n// where the protocol says dictionary, and put `finalize_state_id` last instead\n// of ninth.\nconst INIT_REQUEST_SCHEMA = makeSchema([\n field(\"bind_call\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n field(\"projection_ids\", list(field(\"item\", int64(), true)), true),\n // Large: a serialized filter tree, a set of join keys, or a batch of split\n // tokens can exceed the 2 GiB that 32-bit offsets address.\n field(\"pushdown_filters\", largeBinary(), true),\n field(\"join_keys\", list(field(\"item\", largeBinary(), true)), true),\n field(\"split_tokens\", list(field(\"item\", largeBinary(), true)), true),\n field(\"row_limit\", int64(), true),\n field(\"phase\", dictionary(utf8(), int16()), true),\n // Buffered-table finalize stream identifier.\n field(\"finalize_state_id\", binary(), true),\n field(\"execution_id\", binary(), true),\n field(\"init_opaque_data\", binary(), true),\n // Per-substream identity for parallel streaming table-in-out (client-minted,\n // stable across this substream's init/process/finalize; null when absent).\n field(\"substream_id\", binary(), true),\n // Order pushdown hints from DuckDB's RowGroupPruner (all null when no hint).\n field(\"order_by_column_name\", utf8(), true),\n field(\"order_by_direction\", dictionary(utf8(), int16()), true),\n field(\"order_by_null_order\", dictionary(utf8(), int16()), true),\n field(\"order_by_limit\", int64(), true),\n // TABLESAMPLE pushdown hints from DuckDB's SamplingPushdown optimizer.\n field(\"tablesample_percentage\", float64(), true),\n field(\"tablesample_seed\", int64(), true),\n]);\n\n// The init stream's header. Codegen emits nothing for it (the generated\n// InitParamsSchema covers only the request envelope), so it is hand-written —\n// which is exactly why it must be hand-written ONCE. It used to be restated at\n// the `protocol.exchange(\"init\", ...)` registration in handlers/function.ts,\n// and two copies of a wire schema is how a *correct* client ends up rejected:\n// the copies disagree on some field's nullability and neither is wrong on its\n// own terms.\nconst GLOBAL_INIT_RESPONSE_SCHEMA = makeSchema([\n field(\"execution_id\", binary(), false),\n field(\"opaque_data\", binary(), true),\n field(\"max_workers\", int64(), false),\n]);\n\nexport function serializeInitRequest(req: InitRequest): VgiBatch {\n const bindCallBatch = serializeBindRequest(req.bind_call);\n const bindCallBytes = serializeBatch(bindCallBatch);\n\n const row: Record<string, any> = {\n bind_call: bindCallBytes,\n output_schema: serializeSchema(req.output_schema),\n bind_opaque_data: req.bind_opaque_data ?? null,\n projection_ids: req.projection_ids?.map((n) => BigInt(n)) ?? null,\n pushdown_filters: req.pushdown_filters\n ? serializeBatch(req.pushdown_filters)\n : null,\n join_keys: (req.join_keys ?? []).map((b) => serializeBatch(b)),\n split_tokens: req.split_tokens ?? null,\n row_limit: req.row_limit ?? null,\n phase: req.phase ?? null,\n finalize_state_id: req.finalize_state_id ?? null,\n execution_id: req.execution_id ?? null,\n init_opaque_data: req.init_opaque_data ?? null,\n substream_id: req.substream_id ?? null,\n order_by_column_name: req.order_by_column_name ?? null,\n order_by_direction: req.order_by_direction ?? null,\n order_by_null_order: req.order_by_null_order ?? null,\n order_by_limit: req.order_by_limit ?? null,\n tablesample_percentage: req.tablesample_percentage ?? null,\n tablesample_seed: req.tablesample_seed ?? null,\n };\n return buildSingleRowBatch(INIT_REQUEST_SCHEMA, row);\n}\n\nexport function deserializeInitRequest(\n params: Record<string, any>\n): InitRequest {\n const bindCallBytes = toUint8Array(params.bind_call);\n const bindCallBatch = deserializeBatch(bindCallBytes);\n // Extract the single row as params via the codec/canonical path.\n const bindParams = batchToScalarDict(bindCallBatch);\n\n const bindCall = deserializeBindRequest(bindParams);\n\n // Parse projection_ids - may be a list/array of Int32\n let projectionIds: number[] | null = null;\n if (params.projection_ids != null) {\n const raw = params.projection_ids;\n if (Array.isArray(raw)) {\n projectionIds = raw.map(Number);\n } else if (raw && typeof raw[Symbol.iterator] === \"function\") {\n projectionIds = [...raw].map(Number);\n }\n }\n\n // Parse phase. DuckDB sends this as a Dictionary on the wire; vgi-rpc's\n // row extractor doesn't auto-decode dictionaries, so values come in as raw\n // Arrow Data objects. decodeDictValue resolves them to the underlying string.\n let phase: TableInOutPhase | null = null;\n const phaseRaw = decodeDictValue(params.phase);\n if (phaseRaw != null) {\n const phaseStr = String(phaseRaw);\n if (phaseStr === \"INPUT\") {\n phase = TableInOutPhase.INPUT;\n } else if (phaseStr === \"FINALIZE\") {\n phase = TableInOutPhase.FINALIZE;\n } else if (phaseStr === \"TABLE_BUFFERING\") {\n phase = TableInOutPhase.TABLE_BUFFERING;\n } else if (phaseStr === \"TABLE_BUFFERING_FINALIZE\") {\n phase = TableInOutPhase.TABLE_BUFFERING_FINALIZE;\n }\n }\n\n // Parse join_keys - list of IPC-serialized RecordBatches\n const joinKeys: RecordBatch[] = [];\n if (params.join_keys != null) {\n const raw = params.join_keys;\n const iter: Iterable<any> = Array.isArray(raw)\n ? raw\n : typeof raw[Symbol.iterator] === \"function\"\n ? raw\n : [];\n for (const entry of iter) {\n if (entry == null) continue;\n try {\n joinKeys.push(deserializeBatch(toUint8Array(entry)));\n } catch {\n // Skip malformed batches rather than failing init.\n }\n }\n }\n\n return {\n bind_call: bindCall,\n output_schema: deserializeSchema(toUint8Array(params.output_schema)),\n bind_opaque_data: params.bind_opaque_data\n ? toUint8Array(params.bind_opaque_data)\n : null,\n projection_ids: projectionIds,\n row_limit: params.row_limit == null ? null : Number(params.row_limit),\n pushdown_filters: params.pushdown_filters\n ? deserializeBatch(toUint8Array(params.pushdown_filters))\n : null,\n join_keys: joinKeys,\n phase,\n finalize_state_id: params.finalize_state_id\n ? toUint8Array(params.finalize_state_id)\n : null,\n // The envelopes this init redeems. Read defensively: the column is absent\n // on a pre-1.4.0 client and null on every non-split scan, and neither is an\n // error — only a present, non-empty list means \"this is a split init\".\n split_tokens: (() => {\n const raw = params.split_tokens;\n if (raw == null) return null;\n const iter: Iterable<unknown> = Array.isArray(raw)\n ? raw\n : typeof (raw as { [Symbol.iterator]?: unknown })[Symbol.iterator] === \"function\"\n ? (raw as Iterable<unknown>)\n : [];\n const tokens = [...iter].filter((e) => e != null).map((e) => toUint8Array(e));\n return tokens.length > 0 ? tokens : null;\n })(),\n execution_id: params.execution_id\n ? toUint8Array(params.execution_id)\n : null,\n init_opaque_data: params.init_opaque_data\n ? toUint8Array(params.init_opaque_data)\n : null,\n substream_id: params.substream_id\n ? toUint8Array(params.substream_id)\n : null,\n order_by_column_name: parseEnum(decodeDictValue(params.order_by_column_name)) ?? null,\n order_by_direction: parseDirection(decodeDictValue(params.order_by_direction)),\n order_by_null_order: parseNullOrder(decodeDictValue(params.order_by_null_order)),\n order_by_limit: parseBigInt(params.order_by_limit),\n tablesample_percentage: parseNumber(params.tablesample_percentage),\n tablesample_seed: parseBigInt(params.tablesample_seed),\n };\n}\n\nfunction parseEnum(v: any): string | null {\n if (v === null || v === undefined) return null;\n return String(v);\n}\nfunction parseDirection(v: any): OrderByDirection | null {\n if (v === null || v === undefined) return null;\n const s = String(v);\n if (s === \"ASC\") return OrderByDirection.ASC;\n if (s === \"DESC\") return OrderByDirection.DESC;\n return null;\n}\nfunction parseNullOrder(v: any): OrderByNullOrder | null {\n if (v === null || v === undefined) return null;\n const s = String(v);\n if (s === \"NULLS_FIRST\") return OrderByNullOrder.NULLS_FIRST;\n if (s === \"NULLS_LAST\") return OrderByNullOrder.NULLS_LAST;\n return null;\n}\nfunction parseBigInt(v: any): bigint | null {\n if (v === null || v === undefined) return null;\n if (typeof v === \"bigint\") return v;\n if (typeof v === \"number\") return BigInt(v);\n try {\n return BigInt(String(v));\n } catch {\n return null;\n }\n}\nfunction parseNumber(v: any): number | null {\n if (v === null || v === undefined) return null;\n if (typeof v === \"number\") return v;\n if (typeof v === \"bigint\") return Number(v);\n const n = Number(v);\n return Number.isNaN(n) ? null : n;\n}\n\nexport function serializeGlobalInitResponse(\n resp: GlobalInitResponse\n): Record<string, any> {\n return {\n execution_id: resp.execution_id,\n opaque_data: resp.opaque_data ?? null,\n max_workers: resp.max_workers,\n };\n}\n\nexport function deserializeGlobalInitResponse(\n params: Record<string, any>\n): GlobalInitResponse {\n return {\n execution_id: toUint8Array(params.execution_id),\n opaque_data: params.opaque_data\n ? toUint8Array(params.opaque_data)\n : null,\n max_workers: Number(params.max_workers),\n };\n}\n\nexport { INIT_REQUEST_SCHEMA, GLOBAL_INIT_RESPONSE_SCHEMA };\n",
26
26
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// VGI-specific error classes.\n\nexport class VgiError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"VgiError\";\n }\n}\n\nexport class RowCountMismatchError extends VgiError {\n constructor(expected: number, actual: number) {\n super(\n `Scalar function output row count (${actual}) does not match ` +\n `input row count (${expected})`\n );\n this.name = \"RowCountMismatchError\";\n }\n}\n\nexport class FunctionNotFoundError extends VgiError {\n constructor(name: string, available?: string[]) {\n super(`Unknown function '${name}'`);\n this.name = \"FunctionNotFoundError\";\n }\n}\n\nexport class CatalogReadOnlyError extends VgiError {\n constructor(operation: string) {\n super(`catalog is read-only: ${operation} is not supported`);\n this.name = \"CatalogReadOnlyError\";\n }\n}\n\nexport class CatalogNotFoundError extends VgiError {\n constructor(entity: string, name: string) {\n super(`${entity} '${name}' not found`);\n this.name = \"CatalogNotFoundError\";\n }\n}\n\nexport class CatalogAlreadyExistsError extends VgiError {\n constructor(entity: string, name: string) {\n super(`${entity} '${name}' already exists`);\n this.name = \"CatalogAlreadyExistsError\";\n }\n}\n\nexport class ArgumentValidationError extends VgiError {\n constructor(message: string) {\n super(message);\n this.name = \"ArgumentValidationError\";\n }\n}\n\nexport class NoCatalogError extends VgiError {\n constructor() {\n super(\"No catalog is configured for this worker\");\n this.name = \"NoCatalogError\";\n }\n}\n",
27
27
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n\n/** Raw identifier components of a catalog schema, from root to leaf. */\nexport type SchemaPath = string[];\n\n/** Case-insensitive key used for catalog lookup and function dispatch. */\nexport function normalizeSchemaPath(path: Iterable<unknown> | string): string[] {\n return typeof path === \"string\" ? [path] : Array.from(path, String);\n}\n\nexport function schemaPathKey(path: Iterable<unknown> | string): string {\n const normalized = normalizeSchemaPath(path);\n if (normalized.length === 0 || normalized.some((part) => part.length === 0)) {\n throw new Error(\"schema paths must contain at least one non-empty component\");\n }\n return normalized.map((part) => part.toLowerCase()).join(\"\\u0000\");\n}\n\nexport function schemaPathsEqual(left: Iterable<unknown> | string, right: Iterable<unknown> | string): boolean {\n return schemaPathKey(left) === schemaPathKey(right);\n}\n\nexport function schemaPathDisplay(path: Iterable<unknown> | string): string {\n return normalizeSchemaPath(path).map((part) => JSON.stringify(part)).join(\".\");\n}\n",
28
- "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// SPDX-License-Identifier: LicenseRef-QueryFarm-Source-Available-1.0\n\n/**\n * Generic ArrowSerializableDataclass (ASD) codec.\n *\n * Bridges between typed TS objects (snake_case, matching vgi-python dataclass\n * field names) and Arrow IPC bytes (single-row batch with the dataclass'\n * ARROW_SCHEMA). Used by the generated vgi-client.ts encode<X>/decode<X>\n * wrappers to make the typed client interfaces honest at the wire boundary.\n *\n * Encoding delegates to the facade's `batchFromRows` (which handles the\n * complex types — Decimal/BigInt/List/Map/Struct/Dictionary — uniformly\n * across both arrow-js and flechette backends). Decoding pulls each field's\n * value with `batchToScalarDict`, then runs `normalizeValue` to convert\n * Arrow representations (MapRow, BigInt, etc.) back into plain JS shapes.\n */\n\nimport {\n type VgiSchema,\n type VgiField,\n type VgiDataType,\n isBinary,\n isBool,\n isDictionary,\n isInt,\n isList,\n isMap,\n isStruct,\n batchFromRows,\n serializeBatch,\n deserializeBatch,\n} from \"../arrow/index.js\";\n\n/**\n * Encode a typed object as a single-row Arrow IPC stream using `schema`.\n * Matches Python's `ArrowSerializableDataclass.serialize_to_bytes()`.\n */\nexport function encodeASD(\n schema: VgiSchema,\n obj: Record<string, any>,\n): Uint8Array {\n return serializeBatch(batchFromRows([obj], schema));\n}\n\n/**\n * Decode a single-row Arrow IPC stream into a typed object using `schema`.\n * Matches Python's `ArrowSerializableDataclass.deserialize_from_bytes()`.\n */\nexport function decodeASD<T>(\n schema: VgiSchema,\n bytes: Uint8Array,\n): T {\n const batch = deserializeBatch(bytes);\n if (batch.numRows === 0) {\n const names = schema.fields.map((f) => f.name).join(\",\");\n throw new Error(`decodeASD: empty batch (expected 1 row for ${names})`);\n }\n const out: Record<string, any> = {};\n for (const field of schema.fields) {\n const col = batch.getChild(field.name);\n const raw = col ? col.get(0) : null;\n out[field.name] = normalizeValue(raw, field.type);\n }\n return out as T;\n}\n\n// --------------------------------------------------------------------------- //\n// Decode side: Arrow value -> normalized JS value\n// --------------------------------------------------------------------------- //\n\nfunction normalizeValue(raw: any, type: VgiDataType): any {\n if (raw == null) return null;\n\n if (isList(type)) {\n const childType = (type as any).children[0].type as VgiDataType;\n const out: any[] = [];\n for (const item of raw) out.push(normalizeValue(item, childType));\n return out;\n }\n\n if (isMap(type)) {\n const out: Record<string, string> = {};\n // arrow-js MapRow is iterable of [k,v]; flechette returns [[k,v],...] arrays.\n if (raw[Symbol.iterator]) {\n for (const entry of raw) {\n if (Array.isArray(entry)) {\n out[String(entry[0])] = String(entry[1] ?? \"\");\n } else if (entry && typeof entry === \"object\") {\n const k = entry.key ?? entry[0];\n const v = entry.value ?? entry[1];\n out[String(k)] = v == null ? \"\" : String(v);\n }\n }\n } else if (typeof raw === \"object\") {\n // Plain-object map (flechette without useMap): Object.entries fallback\n for (const [k, v] of Object.entries(raw)) {\n out[String(k)] = v == null ? \"\" : String(v);\n }\n }\n return out;\n }\n\n if (isStruct(type)) {\n const childFields = (type as any).children as VgiField[];\n const out: Record<string, any> = {};\n for (const cf of childFields) {\n out[cf.name] = normalizeValue(raw[cf.name], cf.type);\n }\n return out;\n }\n\n if (isDictionary(type)) {\n return raw == null ? null : String(raw);\n }\n\n if (isBinary(type)) {\n return toUint8Array(raw);\n }\n\n if (isInt(type) && (type as any).bitWidth === 64) {\n // Prefer number when representable; callers that need BigInt can convert.\n if (typeof raw === \"bigint\") {\n if (raw >= BigInt(Number.MIN_SAFE_INTEGER) && raw <= BigInt(Number.MAX_SAFE_INTEGER)) {\n return Number(raw);\n }\n return raw;\n }\n return raw;\n }\n\n if (isBool(type)) {\n return Boolean(raw);\n }\n\n // Utf8, Int8/16/32, Float32/64 — pass through as-is.\n return raw;\n}\n\nfunction toUint8Array(val: any): Uint8Array {\n if (val instanceof Uint8Array) return val;\n if (val instanceof ArrayBuffer) return new Uint8Array(val);\n if (val && val.buffer instanceof ArrayBuffer) {\n return new Uint8Array(val.buffer, val.byteOffset, val.byteLength);\n }\n return new Uint8Array(0);\n}\n",
29
- "// ============================================================================\n// GENERATED by vgi.codegen.ts_schemas. DO NOT EDIT BY HAND.\n//\n// Generator: vgi-gen-ts-schemas v2\n// Content hash: 668f198950df\n//\n// To regenerate:\n// uv run --project ~/Development/vgi-python vgi-gen-ts-schemas \\\n// > ~/Development/vgi-typescript/src/generated/vgi-protocol-schemas.ts\n// ============================================================================\n\nimport {\n TimeUnit,\n binary,\n bool,\n dictionary,\n field,\n float64,\n int16,\n int32,\n int64,\n largeBinary,\n list,\n map,\n schema,\n struct,\n timestamp,\n uint64,\n utf8,\n} from \"../arrow/index.js\";\n\n// Origin: CatalogInfo\nexport const CatalogInfoSchema = schema([\n field(\"name\", utf8(), false),\n field(\"implementation_version\", utf8(), true),\n field(\"data_version_spec\", utf8(), true),\n field(\"attach_option_specs\", list(field(\"item\", binary(), true)), false),\n field(\"releases\", list(field(\"item\", struct([field(\"version\", utf8(), false), field(\"released_at\", timestamp(TimeUnit.MICROSECOND, \"UTC\"), true), field(\"summary\", utf8(), false), field(\"notes_url\", utf8(), true)]), true)), false),\n field(\"source_url\", utf8(), true),\n]);\n\n// Origin: SchemaInfo\nexport const SchemaInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"estimated_object_count\", map(field(\"key\", utf8(), false), field(\"value\", int64(), true), false), true),\n]);\n\n// Origin: TableInfo\nexport const TableInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"columns\", binary(), false),\n field(\"not_null_constraints\", list(field(\"item\", int32(), true)), false),\n field(\"unique_constraints\", list(field(\"item\", list(field(\"item\", int32(), true)), true)), false),\n field(\"check_constraints\", list(field(\"item\", utf8(), true)), false),\n field(\"primary_key_constraints\", list(field(\"item\", list(field(\"item\", int32(), true)), true)), false),\n field(\"foreign_key_constraints\", list(field(\"item\", binary(), true)), false),\n field(\"write_result_modes\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"supports_column_statistics\", bool(), false),\n field(\"scan_function\", binary(), true),\n field(\"insert_function\", binary(), true),\n field(\"update_function\", binary(), true),\n field(\"delete_function\", binary(), true),\n field(\"cardinality_estimate\", int64(), true),\n field(\"cardinality_max\", int64(), true),\n field(\"column_statistics\", binary(), true),\n field(\"bind_result\", binary(), true),\n field(\"required_filters\", list(field(\"item\", list(field(\"item\", utf8(), true)), true)), false),\n]);\n\n// Origin: ViewInfo\nexport const ViewInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"definition\", utf8(), false),\n field(\"column_comments\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n]);\n\n// Origin: FunctionInfo\nexport const FunctionInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"function_type\", dictionary(utf8(), int16()), false),\n field(\"arguments\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"parameter_default_values\", binary(), true),\n field(\"stability\", dictionary(utf8(), int16()), true),\n field(\"null_handling\", dictionary(utf8(), int16()), true),\n field(\"argument_monotonicity\", list(field(\"item\", utf8(), true)), true),\n field(\"description\", utf8(), false),\n field(\"examples\", list(field(\"item\", struct([field(\"sql\", utf8(), false), field(\"description\", utf8(), false), field(\"expected_output\", utf8(), true)]), true)), false),\n field(\"categories\", list(field(\"item\", utf8(), true)), false),\n field(\"projection_pushdown\", bool(), true),\n field(\"filter_pushdown\", bool(), true),\n field(\"sampling_pushdown\", bool(), true),\n field(\"late_materialization\", bool(), true),\n field(\"filter_semantic_profiles\", list(field(\"item\", utf8(), true)), false),\n field(\"additional_filter_functions\", list(field(\"item\", struct([field(\"namespace\", utf8(), false), field(\"name\", utf8(), false), field(\"version\", uint64(), false)]), true)), false),\n field(\"runtime_filter_algorithms\", list(field(\"item\", struct([field(\"namespace\", utf8(), false), field(\"name\", utf8(), false), field(\"version\", uint64(), false)]), true)), false),\n field(\"filter_evaluation_contexts\", list(field(\"item\", struct([field(\"profile\", utf8(), false), field(\"provider_fingerprint\", utf8(), true)]), true)), false),\n field(\"order_preservation\", dictionary(utf8(), int16()), true),\n field(\"max_workers\", int32(), true),\n field(\"supports_batch_index\", bool(), false),\n field(\"supports_splits\", bool(), false),\n field(\"filters_exactly_applied\", bool(), false),\n field(\"supports_positions\", bool(), false),\n field(\"split_token_ttl_seconds\", int64(), true),\n field(\"partition_kind\", dictionary(utf8(), int16()), false),\n field(\"order_dependent\", dictionary(utf8(), int16()), false),\n field(\"distinct_dependent\", dictionary(utf8(), int16()), false),\n field(\"supports_window\", bool(), false),\n field(\"streaming_partitioned\", bool(), false),\n field(\"has_finalize\", bool(), false),\n field(\"source_order_dependent\", bool(), false),\n field(\"sink_order_dependent\", bool(), false),\n field(\"requires_input_batch_index\", bool(), false),\n field(\"input_from_args\", bool(), false),\n field(\"required_settings\", list(field(\"item\", utf8(), true)), false),\n field(\"required_secrets\", list(field(\"item\", struct([field(\"secret_type\", utf8(), false), field(\"scope\", utf8(), true), field(\"secret_name\", utf8(), true)]), true)), false),\n]);\n\n// Origin: MacroInfo\nexport const MacroInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"macro_type\", dictionary(utf8(), int16()), false),\n field(\"parameters\", list(field(\"item\", utf8(), true)), false),\n field(\"parameter_default_values\", binary(), true),\n field(\"definition\", utf8(), false),\n field(\"arguments_schema\", binary(), true),\n]);\n\n// Origin: IndexInfo\nexport const IndexInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"table_name\", utf8(), false),\n field(\"index_type\", utf8(), false),\n field(\"constraint_type\", dictionary(utf8(), int16()), false),\n field(\"expressions\", list(field(\"item\", utf8(), true)), false),\n field(\"options\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n]);\n\n// Origin: CopyFromFormatInfo\nexport const CopyFromFormatInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"format_name\", utf8(), false),\n field(\"handler\", utf8(), false),\n field(\"options\", binary(), false),\n field(\"direction\", utf8(), false),\n field(\"description\", utf8(), false),\n field(\"ordered\", bool(), false),\n]);\n\n// Origin: ScanFunctionResult\nexport const ScanFunctionResultSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"required_extensions\", list(field(\"item\", utf8(), true)), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: ScanBranchesResult\nexport const ScanBranchesResultSchema = schema([\n field(\"branches\", list(field(\"item\", binary(), true)), false),\n field(\"required_extensions\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: ScanBranch\nexport const ScanBranchSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"branch_filter\", utf8(), true),\n field(\"writable\", bool(), false),\n field(\"source_catalog\", utf8(), true),\n field(\"source_schema_path\", list(field(\"item\", utf8(), true)), true),\n field(\"source_table\", utf8(), true),\n field(\"format_name\", utf8(), true),\n field(\"format_locations\", list(field(\"item\", utf8(), true)), true),\n field(\"format_options\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: ScanSplit\nexport const ScanSplitSchema = schema([\n field(\"payload\", binary(), false),\n field(\"token\", binary(), false),\n field(\"estimated_rows\", int64(), true),\n field(\"rows_exact\", bool(), false),\n field(\"estimated_bytes\", int64(), true),\n field(\"partition_bounds\", binary(), true),\n field(\"column_statistics\", binary(), true),\n field(\"location_ids\", list(field(\"item\", int64(), true)), true),\n field(\"start_position\", binary(), true),\n field(\"end_position\", binary(), true),\n]);\n\n// Origin: AttachCatalogInfo\nexport const AttachCatalogInfoSchema = schema([\n field(\"alias\", utf8(), false),\n field(\"target\", utf8(), false),\n field(\"db_type\", utf8(), false),\n field(\"options\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"hidden\", bool(), false),\n field(\"required\", bool(), false),\n field(\"secret_ref\", utf8(), false),\n]);\n\n// Origin: ForeignKeyInfo\nexport const ForeignKeyInfoSchema = schema([\n field(\"fk_columns\", list(field(\"item\", utf8(), true)), false),\n field(\"pk_columns\", list(field(\"item\", utf8(), true)), false),\n field(\"referenced_table\", utf8(), false),\n field(\"referenced_schema_path\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: AggregateBindRequest\nexport const AggregateBindRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"input_schema\", binary(), true),\n field(\"settings\", binary(), true),\n field(\"secrets\", binary(), true),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n field(\"argument_names\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateCombineRequest\nexport const AggregateCombineRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"merge_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateDestructorRequest\nexport const AggregateDestructorRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"group_ids_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateFinalizeRequest\nexport const AggregateFinalizeRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"group_ids_batch\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateStreamingChunkRequest\nexport const AggregateStreamingChunkRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"input_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateStreamingCloseRequest\nexport const AggregateStreamingCloseRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateStreamingOpenRequest\nexport const AggregateStreamingOpenRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"input_schema\", binary(), false),\n field(\"partition_key_count\", int64(), false),\n field(\"order_key_count\", int64(), false),\n field(\"output_schema\", binary(), false),\n field(\"settings\", binary(), true),\n field(\"secrets\", binary(), true),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateUpdateRequest\nexport const AggregateUpdateRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"input_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateWindowBatchRequest\nexport const AggregateWindowBatchRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"partition_id\", int64(), false),\n field(\"row_idx\", int64(), false),\n field(\"count\", int64(), false),\n field(\"frames_per_row\", list(field(\"item\", int64(), true)), false),\n field(\"frame_starts\", list(field(\"item\", int64(), true)), false),\n field(\"frame_ends\", list(field(\"item\", int64(), true)), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateWindowDestructorRequest\nexport const AggregateWindowDestructorRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"partition_id\", int64(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateWindowInitRequest\nexport const AggregateWindowInitRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"partition_id\", int64(), false),\n field(\"row_count\", int64(), false),\n field(\"partition_batch\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"filter_mask\", binary(), false),\n field(\"frame_stats\", binary(), false),\n field(\"all_valid\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateWindowRequest\nexport const AggregateWindowRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"partition_id\", int64(), false),\n field(\"rid\", int64(), false),\n field(\"frame_starts\", list(field(\"item\", int64(), true)), false),\n field(\"frame_ends\", list(field(\"item\", int64(), true)), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: BindRequest\nexport const BindRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"function_type\", dictionary(utf8(), int16()), false),\n field(\"input_schema\", binary(), true),\n field(\"settings\", binary(), true),\n field(\"secrets\", binary(), true),\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_opaque_data\", binary(), true),\n field(\"resolved_secrets_provided\", bool(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"copy_from\", struct([field(\"format\", utf8(), false), field(\"file_path\", utf8(), false), field(\"expected_schema\", binary(), false)]), true),\n field(\"copy_to\", struct([field(\"format\", utf8(), false), field(\"file_path\", utf8(), false)]), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n field(\"argument_names\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: CatalogAttachRequest\nexport const CatalogAttachRequestSchema = schema([\n field(\"name\", utf8(), false),\n field(\"options\", binary(), true),\n field(\"data_version_spec\", utf8(), true),\n field(\"implementation_version\", utf8(), true),\n field(\"client_capabilities\", binary(), true),\n]);\n\n// Origin: CatalogCreateRequest\nexport const CatalogCreateRequestSchema = schema([\n field(\"name\", utf8(), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"options\", binary(), true),\n]);\n\n// Origin: ClientCapabilities\nexport const ClientCapabilitiesSchema = schema([\n field(\"engine\", utf8(), false),\n field(\"native_formats\", list(field(\"item\", utf8(), true)), false),\n field(\"catalogs\", list(field(\"item\", utf8(), true)), false),\n field(\"can_stream\", bool(), false),\n field(\"filter_encodings\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: CopyFromContext\nexport const CopyFromContextSchema = schema([\n field(\"format\", utf8(), false),\n field(\"file_path\", utf8(), false),\n field(\"expected_schema\", binary(), false),\n]);\n\n// Origin: CopyToContext\nexport const CopyToContextSchema = schema([\n field(\"format\", utf8(), false),\n field(\"file_path\", utf8(), false),\n]);\n\n// Origin: GlobalInitResponse\nexport const GlobalInitResponseSchema = schema([\n field(\"execution_id\", binary(), false),\n field(\"opaque_data\", binary(), true),\n field(\"max_workers\", int64(), false),\n]);\n\n// Origin: IndexCreateRequest\nexport const IndexCreateRequestSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"table_name\", utf8(), false),\n field(\"index_type\", utf8(), false),\n field(\"constraint_type\", dictionary(utf8(), int16()), false),\n field(\"expressions\", list(field(\"item\", utf8(), true)), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"options\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: InitRequest\nexport const InitRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n field(\"projection_ids\", list(field(\"item\", int64(), true)), true),\n field(\"pushdown_filters\", largeBinary(), true),\n field(\"join_keys\", list(field(\"item\", largeBinary(), true)), true),\n field(\"split_tokens\", list(field(\"item\", largeBinary(), true)), true),\n field(\"row_limit\", int64(), true),\n field(\"phase\", dictionary(utf8(), int16()), true),\n field(\"finalize_state_id\", binary(), true),\n field(\"execution_id\", binary(), true),\n field(\"init_opaque_data\", binary(), true),\n field(\"substream_id\", binary(), true),\n field(\"order_by_column_name\", utf8(), true),\n field(\"order_by_direction\", dictionary(utf8(), int16()), true),\n field(\"order_by_null_order\", dictionary(utf8(), int16()), true),\n field(\"order_by_limit\", int64(), true),\n field(\"tablesample_percentage\", float64(), true),\n field(\"tablesample_seed\", int64(), true),\n]);\n\n// Origin: MacroCreateRequest\nexport const MacroCreateRequestSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"macro_type\", dictionary(utf8(), int16()), false),\n field(\"parameters\", list(field(\"item\", utf8(), true)), false),\n field(\"definition\", utf8(), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"parameter_default_values\", binary(), true),\n field(\"arguments_schema\", binary(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: TableCreateRequest\nexport const TableCreateRequestSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"columns\", binary(), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"not_null_constraints\", list(field(\"item\", int32(), true)), false),\n field(\"unique_constraints\", list(field(\"item\", list(field(\"item\", int32(), true)), true)), false),\n field(\"check_constraints\", list(field(\"item\", utf8(), true)), false),\n field(\"primary_key_constraints\", list(field(\"item\", list(field(\"item\", int32(), true)), true)), false),\n field(\"foreign_key_constraints\", list(field(\"item\", binary(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: TableBufferingCombineRequest\nexport const TableBufferingCombineRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"state_ids\", list(field(\"item\", binary(), true)), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_id\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: TableBufferingDestructorRequest\nexport const TableBufferingDestructorRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_id\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: TableBufferingProcessRequest\nexport const TableBufferingProcessRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"input_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_id\", binary(), true),\n field(\"batch_index\", int64(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: TableFunctionCardinalityRequest\nexport const TableFunctionCardinalityRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n]);\n\n// Origin: TableFunctionDynamicToStringRequest\nexport const TableFunctionDynamicToStringRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n field(\"global_execution_id\", binary(), false),\n]);\n\n// Origin: TableFunctionPlanRequest\nexport const TableFunctionPlanRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n field(\"projection_ids\", list(field(\"item\", int64(), true)), true),\n field(\"pushdown_filters\", largeBinary(), true),\n field(\"join_keys\", list(field(\"item\", largeBinary(), true)), true),\n field(\"row_limit\", int64(), true),\n field(\"target_split_bytes\", int64(), true),\n field(\"min_splits\", int64(), true),\n field(\"max_splits_per_response\", int64(), true),\n field(\"cursor\", binary(), true),\n field(\"refined_filters\", largeBinary(), true),\n field(\"filters_complete\", bool(), false),\n field(\"start_position\", binary(), true),\n field(\"end_position\", binary(), true),\n field(\"order_by_column_name\", utf8(), true),\n field(\"order_by_direction\", dictionary(utf8(), int16()), true),\n field(\"order_by_null_order\", dictionary(utf8(), int16()), true),\n field(\"order_by_limit\", int64(), true),\n field(\"tablesample_percentage\", float64(), true),\n field(\"tablesample_seed\", int64(), true),\n]);\n\n// Origin: TableFunctionStatisticsRequest\nexport const TableFunctionStatisticsRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'aggregate_bind' result\nexport const AggregateBindResultSchema = schema([\n field(\"output_schema\", binary(), false),\n field(\"execution_id\", binary(), false),\n]);\n\n// Origin: method 'aggregate_combine' result\nexport const AggregateCombineResultSchema = schema([]);\n\n// Origin: method 'aggregate_destructor' result\nexport const AggregateDestructorResultSchema = schema([]);\n\n// Origin: method 'aggregate_finalize' result\nexport const AggregateFinalizeResultSchema = schema([\n field(\"result_batch\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_chunk' result\nexport const AggregateStreamingChunkResultSchema = schema([\n field(\"result_batch\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_close' result\nexport const AggregateStreamingCloseResultSchema = schema([]);\n\n// Origin: method 'aggregate_streaming_open' result\nexport const AggregateStreamingOpenResultSchema = schema([\n field(\"execution_id\", binary(), false),\n]);\n\n// Origin: method 'aggregate_update' result\nexport const AggregateUpdateResultSchema = schema([]);\n\n// Origin: method 'aggregate_window' result\nexport const AggregateWindowResultSchema = schema([\n field(\"result_batch\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_batch' result\nexport const AggregateWindowBatchResultSchema = schema([\n field(\"result_batch\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_destructor' result\nexport const AggregateWindowDestructorResultSchema = schema([]);\n\n// Origin: method 'aggregate_window_init' result\nexport const AggregateWindowInitResultSchema = schema([]);\n\n// Origin: method 'bind' result\nexport const BindResultSchema = schema([\n field(\"output_schema\", binary(), false),\n field(\"opaque_data\", binary(), true),\n field(\"lookup_secret_types\", list(field(\"item\", utf8(), true)), false),\n field(\"lookup_scopes\", list(field(\"item\", utf8(), true)), false),\n field(\"lookup_names\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: method 'catalog_attach' result\nexport const CatalogAttachResultSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"supports_transactions\", bool(), false),\n field(\"supports_time_travel\", bool(), false),\n field(\"catalog_version_frozen\", bool(), false),\n field(\"catalog_version\", int64(), false),\n field(\"attach_opaque_data_required\", bool(), false),\n field(\"default_schema\", utf8(), false),\n field(\"settings\", list(field(\"item\", binary(), true)), false),\n field(\"secret_types\", list(field(\"item\", binary(), true)), false),\n field(\"attach_catalogs\", list(field(\"item\", binary(), true)), false),\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"supports_column_statistics\", bool(), false),\n field(\"global_functions\", list(field(\"item\", binary(), true)), false),\n field(\"global_function_prefix\", utf8(), false),\n field(\"resolved_data_version\", utf8(), true),\n field(\"resolved_implementation_version\", utf8(), true),\n]);\n\n// Origin: method 'catalog_catalogs' result\nexport const CatalogCatalogsResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_copy_from_formats' result\nexport const CatalogCopyFromFormatsResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_index_get' result\nexport const CatalogIndexGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_macro_get' result\nexport const CatalogMacroGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_functions' result\nexport const CatalogSchemaContentsFunctionsResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_indexes' result\nexport const CatalogSchemaContentsIndexesResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_macros' result\nexport const CatalogSchemaContentsMacrosResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_tables' result\nexport const CatalogSchemaContentsTablesResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_views' result\nexport const CatalogSchemaContentsViewsResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_get' result\nexport const CatalogSchemaGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schemas' result\nexport const CatalogSchemasResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_table_get' result\nexport const CatalogTableGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_transaction_begin' result\nexport const CatalogTransactionBeginResultSchema = schema([\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_version' result\nexport const CatalogVersionResultSchema = schema([\n field(\"version\", int64(), false),\n]);\n\n// Origin: method 'catalog_view_get' result\nexport const CatalogViewGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'table_buffering_combine' result\nexport const TableBufferingCombineResultSchema = schema([\n field(\"finalize_state_ids\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'table_buffering_destructor' result\nexport const TableBufferingDestructorResultSchema = schema([]);\n\n// Origin: method 'table_buffering_process' result\nexport const TableBufferingProcessResultSchema = schema([\n field(\"state_id\", binary(), false),\n]);\n\n// Origin: method 'table_function_cardinality' result\nexport const TableFunctionCardinalityResultSchema = schema([\n field(\"estimate\", int64(), true),\n field(\"max\", int64(), true),\n]);\n\n// Origin: method 'table_function_dynamic_to_string' result\nexport const TableFunctionDynamicToStringResultSchema = schema([\n field(\"keys\", list(field(\"item\", utf8(), true)), false),\n field(\"values\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: method 'table_function_plan' result\nexport const TableFunctionPlanResultSchema = schema([\n field(\"splits\", list(field(\"item\", binary(), true)), false),\n field(\"next_cursors\", list(field(\"item\", binary(), true)), true),\n field(\"execution_id\", binary(), true),\n field(\"init_opaque_data\", binary(), true),\n field(\"max_workers\", int64(), true),\n field(\"estimated_total_splits\", int64(), true),\n field(\"estimated_total_rows\", int64(), true),\n field(\"estimated_total_bytes\", int64(), true),\n field(\"catalog_version\", int64(), true),\n field(\"scope\", utf8(), false),\n field(\"locations\", list(field(\"item\", utf8(), true)), true),\n field(\"partitioning\", list(field(\"item\", binary(), true)), true),\n field(\"sort_order\", list(field(\"item\", binary(), true)), true),\n field(\"cache_max_age_seconds\", int64(), true),\n field(\"start_position\", binary(), true),\n field(\"end_position\", binary(), true),\n]);\n\n// Origin: method 'aggregate_bind' params\nexport const AggregateBindParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_combine' params\nexport const AggregateCombineParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_destructor' params\nexport const AggregateDestructorParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_finalize' params\nexport const AggregateFinalizeParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_chunk' params\nexport const AggregateStreamingChunkParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_close' params\nexport const AggregateStreamingCloseParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_open' params\nexport const AggregateStreamingOpenParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_update' params\nexport const AggregateUpdateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window' params\nexport const AggregateWindowParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_batch' params\nexport const AggregateWindowBatchParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_destructor' params\nexport const AggregateWindowDestructorParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_init' params\nexport const AggregateWindowInitParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'bind' params\nexport const BindParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_attach' params\nexport const CatalogAttachParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_catalogs' params\nexport const CatalogCatalogsParamsSchema = schema([]);\n\n// Origin: method 'catalog_copy_from_formats' params\nexport const CatalogCopyFromFormatsParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_create' params\nexport const CatalogCreateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_detach' params\nexport const CatalogDetachParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n]);\n\n// Origin: method 'catalog_drop' params\nexport const CatalogDropParamsSchema = schema([\n field(\"name\", utf8(), false),\n]);\n\n// Origin: method 'catalog_index_create' params\nexport const CatalogIndexCreateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_index_drop' params\nexport const CatalogIndexDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_index_get' params\nexport const CatalogIndexGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_macro_create' params\nexport const CatalogMacroCreateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_macro_drop' params\nexport const CatalogMacroDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_macro_get' params\nexport const CatalogMacroGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_functions' params\nexport const CatalogSchemaContentsFunctionsParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"type\", dictionary(utf8(), int16()), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_indexes' params\nexport const CatalogSchemaContentsIndexesParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_macros' params\nexport const CatalogSchemaContentsMacrosParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"type\", dictionary(utf8(), int16()), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_tables' params\nexport const CatalogSchemaContentsTablesParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_views' params\nexport const CatalogSchemaContentsViewsParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_create' params\nexport const CatalogSchemaCreateParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_drop' params\nexport const CatalogSchemaDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_get' params\nexport const CatalogSchemaGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schemas' params\nexport const CatalogSchemasParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_add' params\nexport const CatalogTableColumnAddParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_definition\", binary(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"if_column_not_exists\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_comment_set' params\nexport const CatalogTableColumnCommentSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"comment\", utf8(), true),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_default_drop' params\nexport const CatalogTableColumnDefaultDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_default_set' params\nexport const CatalogTableColumnDefaultSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"expression\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_drop' params\nexport const CatalogTableColumnDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"if_column_exists\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_rename' params\nexport const CatalogTableColumnRenameParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"new_column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_statistics_get' params\nexport const CatalogTableColumnStatisticsGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_type_change' params\nexport const CatalogTableColumnTypeChangeParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_definition\", binary(), false),\n field(\"expression\", utf8(), true),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_comment_set' params\nexport const CatalogTableCommentSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"comment\", utf8(), true),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_create' params\nexport const CatalogTableCreateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_table_delete_function_get' params\nexport const CatalogTableDeleteFunctionGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_drop' params\nexport const CatalogTableDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_get' params\nexport const CatalogTableGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_insert_function_get' params\nexport const CatalogTableInsertFunctionGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n field(\"writable_branch_function_name\", utf8(), true),\n]);\n\n// Origin: method 'catalog_table_not_null_drop' params\nexport const CatalogTableNotNullDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_not_null_set' params\nexport const CatalogTableNotNullSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_rename' params\nexport const CatalogTableRenameParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"new_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_scan_branches_get' params\nexport const CatalogTableScanBranchesGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_scan_function_get' params\nexport const CatalogTableScanFunctionGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_update_function_get' params\nexport const CatalogTableUpdateFunctionGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_transaction_begin' params\nexport const CatalogTransactionBeginParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n]);\n\n// Origin: method 'catalog_transaction_commit' params\nexport const CatalogTransactionCommitParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), false),\n]);\n\n// Origin: method 'catalog_transaction_rollback' params\nexport const CatalogTransactionRollbackParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), false),\n]);\n\n// Origin: method 'catalog_version' params\nexport const CatalogVersionParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_comment_set' params\nexport const CatalogViewCommentSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"comment\", utf8(), true),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_create' params\nexport const CatalogViewCreateParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"definition\", utf8(), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_drop' params\nexport const CatalogViewDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_get' params\nexport const CatalogViewGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_rename' params\nexport const CatalogViewRenameParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"new_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'init' params\nexport const InitParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_buffering_combine' params\nexport const TableBufferingCombineParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_buffering_destructor' params\nexport const TableBufferingDestructorParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_buffering_process' params\nexport const TableBufferingProcessParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_function_cardinality' params\nexport const TableFunctionCardinalityParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_function_dynamic_to_string' params\nexport const TableFunctionDynamicToStringParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_function_plan' params\nexport const TableFunctionPlanParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_function_statistics' params\nexport const TableFunctionStatisticsParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n",
30
- "// ============================================================================\n// GENERATED by vgi.codegen.ts_client. DO NOT EDIT BY HAND.\n//\n// Generator: vgi-gen-ts-client v1\n// Content hash: 69731fc31f09\n//\n// To regenerate:\n// uv run --project ~/Development/vgi-python vgi-gen-ts-client \\\n// > ~/Development/vgi-typescript/src/generated/vgi-client.ts\n// ============================================================================\n\nimport { encodeASD, decodeASD } from \"../codec/asd.js\";\nimport {\n CatalogInfoSchema,\n FunctionInfoSchema,\n IndexInfoSchema,\n MacroInfoSchema,\n SchemaInfoSchema,\n TableInfoSchema,\n ViewInfoSchema,\n} from \"./vgi-protocol-schemas.js\";\n\nexport type ArgumentMonotonicity = \"UNKNOWN\" | \"CONSTANT\" | \"NON_DECREASING\" | \"STRICTLY_INCREASING\" | \"NON_INCREASING\" | \"STRICTLY_DECREASING\";\nexport type DistinctDependence = \"DISTINCT_DEPENDENT\" | \"NOT_DISTINCT_DEPENDENT\";\nexport type FunctionStability = \"CONSISTENT\" | \"VOLATILE\" | \"CONSISTENT_WITHIN_QUERY\";\nexport type FunctionType = \"SCALAR\" | \"TABLE\" | \"TABLE_BUFFERING\" | \"AGGREGATE\";\nexport type IndexConstraintType = \"NONE\" | \"UNIQUE\" | \"PRIMARY\";\nexport type InvocationFunctionType = \"AGGREGATE\" | \"SCALAR\" | \"TABLE\" | \"TABLE_BUFFERING\";\nexport type MacroType = \"SCALAR\" | \"TABLE\";\nexport type NullHandling = \"DEFAULT\" | \"SPECIAL\";\nexport type OnConflict = \"ERROR\" | \"IGNORE\" | \"REPLACE\";\nexport type OrderByDirection = \"ASC\" | \"DESC\";\nexport type OrderByNullOrder = \"NULLS_FIRST\" | \"NULLS_LAST\";\nexport type OrderDependence = \"ORDER_DEPENDENT\" | \"NOT_ORDER_DEPENDENT\";\nexport type OrderPreservation = \"PRESERVES_ORDER\" | \"NO_ORDER_GUARANTEE\" | \"FIXED_ORDER\";\nexport type PartitionKind = \"NOT_PARTITIONED\" | \"SINGLE_VALUE_PARTITIONS\" | \"OVERLAPPING_PARTITIONS\" | \"DISJOINT_PARTITIONS\";\nexport type SchemaObjectType = \"TABLE\" | \"VIEW\" | \"SCALAR_FUNCTION\" | \"TABLE_FUNCTION\" | \"AGGREGATE_FUNCTION\" | \"SCALAR_MACRO\" | \"TABLE_MACRO\" | \"INDEX\";\nexport type TableInOutFunctionInitPhase = \"INPUT\" | \"FINALIZE\" | \"TABLE_BUFFERING\" | \"TABLE_BUFFERING_FINALIZE\";\n\nexport interface CatalogDataVersionRelease {\n version: string;\n released_at?: bigint | null;\n summary: string;\n notes_url?: string | null;\n}\n\nexport interface CatalogInfo {\n name: string;\n implementation_version?: string | null;\n data_version_spec?: string | null;\n attach_option_specs: Uint8Array[];\n releases: CatalogDataVersionRelease[];\n source_url?: string | null;\n}\n\nexport interface SchemaInfo {\n comment?: string | null;\n tags: Record<string, string>;\n attach_opaque_data: Uint8Array;\n path: string[];\n estimated_object_count?: Record<string, number> | null;\n}\n\nexport interface TableInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n columns: Uint8Array;\n not_null_constraints: number[];\n unique_constraints: number[][];\n check_constraints: string[];\n primary_key_constraints: number[][];\n foreign_key_constraints: Uint8Array[];\n write_result_modes: Record<string, string>;\n supports_column_statistics: boolean;\n scan_function?: Uint8Array | null;\n insert_function?: Uint8Array | null;\n update_function?: Uint8Array | null;\n delete_function?: Uint8Array | null;\n cardinality_estimate?: number | null;\n cardinality_max?: number | null;\n column_statistics?: Uint8Array | null;\n bind_result?: Uint8Array | null;\n required_filters: string[][];\n}\n\nexport interface ViewInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n definition: string;\n column_comments: Record<string, string>;\n}\n\nexport interface CatalogExample {\n sql: string;\n description: string;\n expected_output?: string | null;\n}\n\nexport interface FilterFunctionCapability {\n namespace: string;\n name: string;\n version: number;\n}\n\nexport interface RuntimeFilterAlgorithmCapability {\n namespace: string;\n name: string;\n version: number;\n}\n\nexport interface EvaluationContextCapability {\n profile: string;\n provider_fingerprint?: string | null;\n}\n\nexport interface SecretLookupEntry {\n secret_type: string;\n scope?: string | null;\n secret_name?: string | null;\n}\n\nexport interface FunctionInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n function_type: FunctionType;\n arguments: Uint8Array;\n output_schema: Uint8Array;\n parameter_default_values?: /** @record-batch */ Uint8Array | null;\n stability?: FunctionStability | null;\n null_handling?: NullHandling | null;\n argument_monotonicity?: ArgumentMonotonicity[] | null;\n description: string;\n examples: CatalogExample[];\n categories: string[];\n projection_pushdown?: boolean | null;\n filter_pushdown?: boolean | null;\n sampling_pushdown?: boolean | null;\n late_materialization?: boolean | null;\n filter_semantic_profiles: string[];\n additional_filter_functions: FilterFunctionCapability[];\n runtime_filter_algorithms: RuntimeFilterAlgorithmCapability[];\n filter_evaluation_contexts: EvaluationContextCapability[];\n order_preservation?: OrderPreservation | null;\n max_workers?: number | null;\n supports_batch_index: boolean;\n supports_splits: boolean;\n filters_exactly_applied: boolean;\n supports_positions: boolean;\n split_token_ttl_seconds?: number | null;\n partition_kind: PartitionKind;\n order_dependent: OrderDependence;\n distinct_dependent: DistinctDependence;\n supports_window: boolean;\n streaming_partitioned: boolean;\n has_finalize: boolean;\n source_order_dependent: boolean;\n sink_order_dependent: boolean;\n requires_input_batch_index: boolean;\n input_from_args: boolean;\n required_settings: string[];\n required_secrets: SecretLookupEntry[];\n}\n\nexport interface MacroInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n macro_type: MacroType;\n parameters: string[];\n parameter_default_values?: /** @record-batch */ Uint8Array | null;\n definition: string;\n arguments_schema?: /** @arrow-schema */ Uint8Array | null;\n}\n\nexport interface IndexInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n table_name: string;\n index_type: string;\n constraint_type: IndexConstraintType;\n expressions: string[];\n options: Record<string, string>;\n}\n\nexport interface AggregateBindRequest {\n function_name: string;\n arguments: /** @vgi-arguments */ Uint8Array;\n input_schema?: /** @arrow-schema */ Uint8Array | null;\n settings?: /** @record-batch */ Uint8Array | null;\n secrets?: /** @record-batch */ Uint8Array | null;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n argument_names?: (string | null)[] | null;\n}\n\nexport interface AggregateBindResponse {\n output_schema: /** @arrow-schema */ Uint8Array;\n execution_id: Uint8Array;\n}\n\nexport interface AggregateCombineRequest {\n function_name: string;\n execution_id: Uint8Array;\n merge_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateCombineResponse {\n}\n\nexport interface AggregateDestructorRequest {\n function_name: string;\n execution_id: Uint8Array;\n group_ids_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateDestructorResponse {\n}\n\nexport interface AggregateFinalizeRequest {\n function_name: string;\n execution_id: Uint8Array;\n group_ids_batch: Uint8Array;\n output_schema: /** @arrow-schema */ Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateFinalizeResponse {\n result_batch: Uint8Array;\n}\n\nexport interface AggregateStreamingChunkRequest {\n function_name: string;\n execution_id: Uint8Array;\n input_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateStreamingChunkResponse {\n result_batch: Uint8Array;\n}\n\nexport interface AggregateStreamingCloseRequest {\n function_name: string;\n execution_id: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateStreamingCloseResponse {\n}\n\nexport interface AggregateStreamingOpenRequest {\n function_name: string;\n arguments: /** @vgi-arguments */ Uint8Array;\n input_schema: /** @arrow-schema */ Uint8Array;\n partition_key_count: number;\n order_key_count: number;\n output_schema: /** @arrow-schema */ Uint8Array;\n settings?: /** @record-batch */ Uint8Array | null;\n secrets?: /** @record-batch */ Uint8Array | null;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateStreamingOpenResponse {\n execution_id: Uint8Array;\n}\n\nexport interface AggregateUpdateRequest {\n function_name: string;\n execution_id: Uint8Array;\n input_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateUpdateResponse {\n}\n\nexport interface AggregateWindowRequest {\n function_name: string;\n execution_id: Uint8Array;\n partition_id: number;\n rid: number;\n frame_starts: number[];\n frame_ends: number[];\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateWindowResponse {\n result_batch: Uint8Array;\n}\n\nexport interface AggregateWindowBatchRequest {\n function_name: string;\n execution_id: Uint8Array;\n partition_id: number;\n row_idx: number;\n count: number;\n frames_per_row: number[];\n frame_starts: number[];\n frame_ends: number[];\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateWindowBatchResponse {\n result_batch: Uint8Array;\n}\n\nexport interface AggregateWindowDestructorRequest {\n function_name: string;\n execution_id: Uint8Array;\n partition_id: number;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateWindowDestructorResponse {\n}\n\nexport interface AggregateWindowInitRequest {\n function_name: string;\n execution_id: Uint8Array;\n partition_id: number;\n row_count: number;\n partition_batch: Uint8Array;\n output_schema: /** @arrow-schema */ Uint8Array;\n filter_mask: Uint8Array;\n frame_stats: Uint8Array;\n all_valid: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateWindowInitResponse {\n}\n\nexport interface CopyFromContext {\n format: string;\n file_path: string;\n expected_schema: /** @arrow-schema */ Uint8Array;\n}\n\nexport interface CopyToContext {\n format: string;\n file_path: string;\n}\n\nexport interface BindRequest {\n function_name: string;\n arguments: /** @vgi-arguments */ Uint8Array;\n function_type: InvocationFunctionType;\n input_schema?: /** @arrow-schema */ Uint8Array | null;\n settings?: /** @record-batch */ Uint8Array | null;\n secrets?: /** @record-batch */ Uint8Array | null;\n attach_opaque_data?: Uint8Array | null;\n transaction_opaque_data?: Uint8Array | null;\n resolved_secrets_provided: boolean;\n at_unit?: string | null;\n at_value?: string | null;\n copy_from?: CopyFromContext | null;\n copy_to?: CopyToContext | null;\n schema_path?: string[] | null;\n argument_names?: (string | null)[] | null;\n}\n\nexport interface BindResponse {\n output_schema: /** @arrow-schema */ Uint8Array;\n opaque_data?: Uint8Array | null;\n lookup_secret_types: string[];\n lookup_scopes: string[];\n lookup_names: string[];\n}\n\nexport interface ClientCapabilities {\n engine: string;\n native_formats: string[];\n catalogs: string[];\n can_stream: boolean;\n filter_encodings: string[];\n}\n\nexport interface CatalogAttachRequest {\n name: string;\n options?: /** @record-batch */ Uint8Array | null;\n data_version_spec?: string | null;\n implementation_version?: string | null;\n client_capabilities?: ClientCapabilities | null;\n}\n\nexport interface CatalogAttachResult {\n attach_opaque_data: Uint8Array;\n supports_transactions: boolean;\n supports_time_travel: boolean;\n catalog_version_frozen: boolean;\n catalog_version: number;\n attach_opaque_data_required: boolean;\n default_schema: string;\n settings: Uint8Array[];\n secret_types: Uint8Array[];\n attach_catalogs: Uint8Array[];\n comment?: string | null;\n tags: Record<string, string>;\n supports_column_statistics: boolean;\n global_functions: Uint8Array[];\n global_function_prefix: string;\n resolved_data_version?: string | null;\n resolved_implementation_version?: string | null;\n}\n\nexport interface CatalogsResponse {\n items: CatalogInfo[];\n}\n\nexport interface CopyFromFormatsResponse {\n items: Uint8Array[];\n}\n\nexport interface CatalogCreateRequest {\n name: string;\n on_conflict: OnConflict;\n options?: /** @record-batch */ Uint8Array | null;\n}\n\nexport interface IndexCreateRequest {\n attach_opaque_data: Uint8Array;\n schema_path: string[];\n name: string;\n table_name: string;\n index_type: string;\n constraint_type: IndexConstraintType;\n expressions: string[];\n on_conflict: OnConflict;\n options: Record<string, string>;\n transaction_opaque_data?: Uint8Array | null;\n}\n\nexport interface IndexesResponse {\n items: IndexInfo[];\n}\n\nexport interface MacroCreateRequest {\n attach_opaque_data: Uint8Array;\n schema_path: string[];\n name: string;\n macro_type: MacroType;\n parameters: string[];\n definition: string;\n on_conflict: OnConflict;\n parameter_default_values?: /** @record-batch */ Uint8Array | null;\n arguments_schema?: /** @arrow-schema */ Uint8Array | null;\n transaction_opaque_data?: Uint8Array | null;\n}\n\nexport interface MacrosResponse {\n items: MacroInfo[];\n}\n\nexport interface FunctionsResponse {\n items: FunctionInfo[];\n}\n\nexport interface TablesResponse {\n items: TableInfo[];\n}\n\nexport interface ViewsResponse {\n items: ViewInfo[];\n}\n\nexport interface SchemasResponse {\n items: SchemaInfo[];\n}\n\nexport interface TableCreateRequest {\n attach_opaque_data: Uint8Array;\n schema_path: string[];\n name: string;\n columns: Uint8Array;\n on_conflict: OnConflict;\n not_null_constraints: number[];\n unique_constraints: number[][];\n check_constraints: string[];\n primary_key_constraints: number[][];\n foreign_key_constraints: Uint8Array[];\n transaction_opaque_data?: Uint8Array | null;\n}\n\nexport interface TransactionBeginResponse {\n transaction_opaque_data?: Uint8Array | null;\n}\n\nexport interface CatalogVersionResponse {\n version: number;\n}\n\nexport interface InitRequest {\n bind_call: BindRequest;\n output_schema: /** @arrow-schema */ Uint8Array;\n bind_opaque_data?: Uint8Array | null;\n projection_ids?: number[] | null;\n pushdown_filters?: /** @record-batch */ Uint8Array | null;\n join_keys?: /** @record-batch */ Uint8Array[] | null;\n split_tokens?: Uint8Array[] | null;\n row_limit?: number | null;\n phase?: TableInOutFunctionInitPhase | null;\n finalize_state_id?: Uint8Array | null;\n execution_id?: Uint8Array | null;\n init_opaque_data?: Uint8Array | null;\n substream_id?: Uint8Array | null;\n order_by_column_name?: string | null;\n order_by_direction?: OrderByDirection | null;\n order_by_null_order?: OrderByNullOrder | null;\n order_by_limit?: number | null;\n tablesample_percentage?: number | null;\n tablesample_seed?: number | null;\n}\n\nexport interface TableBufferingCombineRequest {\n function_name: string;\n execution_id: Uint8Array;\n state_ids: Uint8Array[];\n attach_opaque_data?: Uint8Array | null;\n transaction_id?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface TableBufferingCombineResponse {\n finalize_state_ids: Uint8Array[];\n}\n\nexport interface TableBufferingDestructorRequest {\n function_name: string;\n execution_id: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n transaction_id?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface TableBufferingDestructorResponse {\n}\n\nexport interface TableBufferingProcessRequest {\n function_name: string;\n execution_id: Uint8Array;\n input_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n transaction_id?: Uint8Array | null;\n batch_index?: number | null;\n schema_path?: string[] | null;\n}\n\nexport interface TableBufferingProcessResponse {\n state_id: Uint8Array;\n}\n\nexport interface TableFunctionCardinalityRequest {\n bind_call: BindRequest;\n bind_opaque_data?: Uint8Array | null;\n}\n\nexport interface TableCardinality {\n estimate?: number | null;\n max?: number | null;\n}\n\nexport interface TableFunctionDynamicToStringRequest {\n bind_call: BindRequest;\n bind_opaque_data?: Uint8Array | null;\n global_execution_id: Uint8Array;\n}\n\nexport interface TableFunctionDynamicToStringResponse {\n keys: string[];\n values: string[];\n}\n\nexport interface TableFunctionPlanRequest {\n bind_call: BindRequest;\n bind_opaque_data?: Uint8Array | null;\n projection_ids?: number[] | null;\n pushdown_filters?: /** @record-batch */ Uint8Array | null;\n join_keys?: /** @record-batch */ Uint8Array[] | null;\n row_limit?: number | null;\n target_split_bytes?: number | null;\n min_splits?: number | null;\n max_splits_per_response?: number | null;\n cursor?: Uint8Array | null;\n refined_filters?: /** @record-batch */ Uint8Array | null;\n filters_complete: boolean;\n start_position?: Uint8Array | null;\n end_position?: Uint8Array | null;\n order_by_column_name?: string | null;\n order_by_direction?: OrderByDirection | null;\n order_by_null_order?: OrderByNullOrder | null;\n order_by_limit?: number | null;\n tablesample_percentage?: number | null;\n tablesample_seed?: number | null;\n}\n\nexport interface ScanSplit {\n payload: Uint8Array;\n token: Uint8Array;\n estimated_rows?: number | null;\n rows_exact: boolean;\n estimated_bytes?: number | null;\n partition_bounds?: /** @record-batch */ Uint8Array | null;\n column_statistics?: Uint8Array | null;\n location_ids?: number[] | null;\n start_position?: Uint8Array | null;\n end_position?: Uint8Array | null;\n}\n\nexport interface PlanResponse {\n splits: ScanSplit[] | Uint8Array[];\n next_cursors?: Uint8Array[] | null;\n execution_id?: Uint8Array | null;\n init_opaque_data?: Uint8Array | null;\n max_workers?: number | null;\n estimated_total_splits?: number | null;\n estimated_total_rows?: number | null;\n estimated_total_bytes?: number | null;\n catalog_version?: number | null;\n scope: string;\n locations?: string[] | null;\n partitioning?: Uint8Array[] | null;\n sort_order?: Uint8Array[] | null;\n cache_max_age_seconds?: number | null;\n start_position?: Uint8Array | null;\n end_position?: Uint8Array | null;\n}\n\nexport interface TableFunctionStatisticsRequest {\n bind_call: BindRequest;\n bind_opaque_data?: Uint8Array | null;\n}\n\n// ----------------------------------------------------------------------------\n// Codec wrappers: turn the typed interfaces above into actual wire bytes.\n// ----------------------------------------------------------------------------\n\nexport const encodeCatalogInfo = (v: CatalogInfo): Uint8Array => encodeASD(CatalogInfoSchema, v);\nexport const decodeCatalogInfo = (b: Uint8Array): CatalogInfo => decodeASD<CatalogInfo>(CatalogInfoSchema, b);\nexport const encodeFunctionInfo = (v: FunctionInfo): Uint8Array => encodeASD(FunctionInfoSchema, v);\nexport const decodeFunctionInfo = (b: Uint8Array): FunctionInfo => decodeASD<FunctionInfo>(FunctionInfoSchema, b);\nexport const encodeIndexInfo = (v: IndexInfo): Uint8Array => encodeASD(IndexInfoSchema, v);\nexport const decodeIndexInfo = (b: Uint8Array): IndexInfo => decodeASD<IndexInfo>(IndexInfoSchema, b);\nexport const encodeMacroInfo = (v: MacroInfo): Uint8Array => encodeASD(MacroInfoSchema, v);\nexport const decodeMacroInfo = (b: Uint8Array): MacroInfo => decodeASD<MacroInfo>(MacroInfoSchema, b);\nexport const encodeSchemaInfo = (v: SchemaInfo): Uint8Array => encodeASD(SchemaInfoSchema, v);\nexport const decodeSchemaInfo = (b: Uint8Array): SchemaInfo => decodeASD<SchemaInfo>(SchemaInfoSchema, b);\nexport const encodeTableInfo = (v: TableInfo): Uint8Array => encodeASD(TableInfoSchema, v);\nexport const decodeTableInfo = (b: Uint8Array): TableInfo => decodeASD<TableInfo>(TableInfoSchema, b);\nexport const encodeViewInfo = (v: ViewInfo): Uint8Array => encodeASD(ViewInfoSchema, v);\nexport const decodeViewInfo = (b: Uint8Array): ViewInfo => decodeASD<ViewInfo>(ViewInfoSchema, b);\n",
31
- "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// CatalogInterface abstract class with ~35 methods.\n// Matching Python's vgi/catalog/catalog_interface.py\n\nimport { CatalogReadOnlyError } from \"../errors.js\";\nimport { schemaPathsEqual } from \"../schema-path.js\";\n\nexport type AttachOpaqueData = Uint8Array;\nexport type TransactionOpaqueData = Uint8Array;\n\n// Wire-encoded string union (matches Python's CatalogMacroType enum names).\nimport type { MacroType } from \"../generated/vgi-client.js\";\nexport type { MacroType };\n\n// CatalogAttachResult is the generated snake_case wire shape.\n// The `supports_column_statistics` field is a catalog-level opt-in for the\n// catalog_table_column_statistics_get RPC — defaults to true when unspecified;\n// individual tables still need to set TableInfo.supports_column_statistics\n// before DuckDB will actually call it.\nimport type { CatalogAttachResult } from \"../generated/vgi-client.js\";\nexport type { CatalogAttachResult };\n\n// ============================================================================\n// Serializable info types\n// ============================================================================\n\n// These serialize themselves to Arrow IPC bytes for catalog responses\n\n// SchemaInfo is the generated interface (snake_case wire shape).\n// Codecs live in ../generated/vgi-client.ts — no class needed.\nimport type { SchemaInfo } from \"../generated/vgi-client.js\";\nexport type { SchemaInfo };\nexport { encodeSchemaInfo, decodeSchemaInfo } from \"../generated/vgi-client.js\";\n\n// CatalogInfo — advertised by workers per catalog (name + versions).\nimport type { CatalogInfo } from \"../generated/vgi-client.js\";\nexport type { CatalogInfo };\nexport { encodeCatalogInfo, decodeCatalogInfo } from \"../generated/vgi-client.js\";\n\n// TableInfo is the generated interface (snake_case wire shape).\nimport type { TableInfo } from \"../generated/vgi-client.js\";\nexport type { TableInfo };\nexport { encodeTableInfo, decodeTableInfo } from \"../generated/vgi-client.js\";\n\n// ViewInfo is the generated interface (snake_case wire shape).\nimport type { ViewInfo } from \"../generated/vgi-client.js\";\nexport type { ViewInfo };\nexport { encodeViewInfo, decodeViewInfo } from \"../generated/vgi-client.js\";\n\n// FunctionInfo is the generated interface (snake_case wire shape).\n// FunctionInfoOptions was the camelCase constructor bag for the old class —\n// callers now use object literals matching the wire shape directly.\nimport type { FunctionInfo } from \"../generated/vgi-client.js\";\nexport type { FunctionInfo };\n/** @deprecated Use the FunctionInfo interface (snake_case) directly. */\nexport type FunctionInfoOptions = FunctionInfo;\nexport { encodeFunctionInfo, decodeFunctionInfo } from \"../generated/vgi-client.js\";\n\n// MacroInfo is the generated interface (snake_case wire shape).\nimport type { MacroInfo } from \"../generated/vgi-client.js\";\nexport type { MacroInfo };\nexport { encodeMacroInfo, decodeMacroInfo } from \"../generated/vgi-client.js\";\n\n// IndexInfo wire shape — declarative indexes a worker advertises and DuckDB\n// surfaces under duckdb_indexes(). Constraint type maps to is_unique /\n// is_primary on the DuckDB side.\nimport type { IndexInfo, IndexConstraintType } from \"../generated/vgi-client.js\";\nexport type { IndexInfo, IndexConstraintType };\nexport { encodeIndexInfo, decodeIndexInfo } from \"../generated/vgi-client.js\";\n\n// CopyFromFormatInfo — a custom `COPY ... FROM` format a VGI catalog advertises.\n// The wire shape matches the generated CopyFromFormatInfoSchema; the codegen\n// does not emit a dedicated interface/encoder for it (it's an items-list type\n// carried as binary), so we declare the snake_case interface here and reuse the\n// generic ASD codec with the generated schema. Mirrors vgi-python's\n// catalog_interface.CopyFromFormatInfo.\nimport { encodeASD } from \"../codec/asd.js\";\nimport {\n AttachCatalogInfoSchema,\n CopyFromFormatInfoSchema,\n} from \"../generated/vgi-protocol-schemas.js\";\n\nexport interface CopyFromFormatInfo {\n /** Free-text comment (CopyFromFunction's `copyFromComment`). */\n comment?: string | null;\n /** Function/format tags. */\n tags: Record<string, string>;\n /** The `FORMAT` identifier users type (single global namespace). */\n format_name: string;\n /** Registered name of the worker function that performs the read. */\n handler: string;\n /**\n * Serialized Arrow schema of the format's options (same encoding as\n * `FunctionInfo.arguments`), each field carrying type / `vgi_doc` description.\n */\n options: Uint8Array;\n /** `\"from\"` / `\"to\"` / `\"both\"` — the COPY direction this format serves. */\n direction: string;\n /** Intrinsic documentation from the handler's description. */\n description: string;\n /**\n * COPY ... TO only — when true the writer requires rows in source order, so\n * the extension uses a single-threaded sink (`REGULAR_COPY_TO_FILE`) instead\n * of the default parallel sharded write. Set via `Meta.sinkOrderDependent`\n * on a CopyToFunction; always false for readers. Mirrors vgi-python's\n * `CopyFromFormatInfo.ordered`.\n */\n ordered: boolean;\n}\n\n/** Encode a CopyFromFormatInfo to Arrow IPC bytes (single-row batch). */\nexport const encodeCopyFromFormatInfo = (v: CopyFromFormatInfo): Uint8Array =>\n encodeASD(CopyFromFormatInfoSchema, {\n comment: v.comment ?? null,\n tags: v.tags ?? {},\n format_name: v.format_name,\n handler: v.handler,\n options: v.options,\n direction: v.direction ?? \"from\",\n description: v.description ?? \"\",\n ordered: v.ordered ?? false,\n });\n\n/**\n * A companion catalog the client should ATTACH when this VGI catalog attaches\n * (lakehouse federation). Serialized into `CatalogAttachResult.attach_catalogs`;\n * the C++ VGI extension attaches each at VGI-attach time so multi-branch\n * catalog-table branches can resolve tables in a companion DuckLake / Iceberg /\n * Postgres / DuckDB.\n */\nexport interface AttachCatalogInfo {\n /** ATTACH alias; also a catalog-table ScanBranch's `sourceCatalog`. */\n alias: string;\n /** ATTACH target — a path or DSN (e.g. `ducklake:sqlite:/data/meta.sqlite`). */\n target: string;\n /** DuckDB db type; empty => inferred from the target scheme prefix. */\n db_type?: string;\n /** Extra ATTACH options forwarded verbatim (e.g. DuckLake DATA_PATH). */\n options?: Record<string, string>;\n /** Attach hidden (excluded from duckdb_databases()); still resolvable. */\n hidden?: boolean;\n /** When true, attach failure fails the whole VGI ATTACH. */\n required?: boolean;\n /** Optional named secret to inject into the companion's ATTACH options. */\n secret_ref?: string;\n}\n\n/** Encode an AttachCatalogInfo to Arrow IPC bytes (single-row batch). */\nexport const encodeAttachCatalogInfo = (v: AttachCatalogInfo): Uint8Array =>\n encodeASD(AttachCatalogInfoSchema, {\n alias: v.alias,\n target: v.target,\n db_type: v.db_type ?? \"\",\n options: v.options ?? {},\n hidden: v.hidden ?? false,\n required: v.required ?? false,\n secret_ref: v.secret_ref ?? \"\",\n });\n\n// ============================================================================\n// ScanFunctionResult — typed result for catalog_table_scan_function_get.\n// Mirrors vgi-python's ScanFunctionResult (catalog_interface.py:380).\n// ============================================================================\n\nimport { deserializeBatch, serializeBatch, batchFromColumns } from \"../util/arrow/index.js\";\nimport { schema as schema_, field as field_, type VgiDataType, type VgiField } from \"../arrow/index.js\";\nimport { toUint8Array } from \"../util/bytes.js\";\nimport { ScanBranchSchema, ScanFunctionResultSchema } from \"../generated/vgi-protocol-schemas.js\";\n\n/**\n * Result from `tableScanFunctionGet` — tells the VGI DuckDB extension which\n * DuckDB function to call to obtain the data for a table.\n */\nexport interface ScanFunctionResult {\n /** The DuckDB function to call (e.g. \"read_parquet\"). */\n functionName: string;\n /** Positional arguments, decoded from the inner Arrow batch. */\n positionalArguments: unknown[];\n /** Named arguments, decoded from the inner Arrow batch. */\n namedArguments: Record<string, unknown>;\n /** DuckDB extensions to load before calling the function. */\n requiredExtensions: string[];\n /**\n * Catalog schema path `functionName` is registered in (protocol 2.0.0). A function\n * name is unique only within a schema, so a client that doesn't know this\n * cannot tell which implementation a colliding name refers to — set it\n * whenever the resolving code already knows the schema. `null` for a\n * pre-1.5.0 peer, or when the resolved function is a native DuckDB function\n * with no VGI-side schema of its own (e.g. `read_parquet`).\n */\n schemaPath: string[] | null;\n}\n\n/**\n * Encode a ScanFunctionResult wire record — the single-row batch shape\n * `{ function_name, arguments, required_extensions, schema_path }` that\n * `catalog_table_scan_function_get` returns and that a function-backed table\n * inlines into `TableInfo.scan_function`.\n *\n * It exists so there is exactly one place that names those columns. The\n * inline-scan path used to restate the schema locally even though codegen\n * emits it; a hand-written wire schema is how four SDKs ended up disagreeing\n * about which columns were binary and which were large_binary.\n *\n * `argumentsBytes` is the already-serialized inner arguments batch (one column\n * per argument: `arg_<index>` positional, bare name for named).\n *\n * `schemaPath` (protocol 2.0.0) identifies the schema that registers `functionName`;\n * leave it null when the caller has no VGI-side schema to report.\n */\nexport function encodeScanFunctionResult(\n functionName: string,\n argumentsBytes: Uint8Array,\n requiredExtensions: string[] = [],\n schemaPath: string[] | null = null,\n): Uint8Array {\n return serializeBatch(\n batchFromColumns(\n {\n function_name: [functionName],\n arguments: [argumentsBytes],\n required_extensions: [requiredExtensions],\n schema_path: [schemaPath],\n },\n ScanFunctionResultSchema as any,\n ),\n );\n}\n\n/**\n * Decode a ScanFunctionResult from a wire-shape inner result dict.\n *\n * The wire shape (per ScanFunctionResultSchema) is\n * `{ function_name: utf8, arguments: binary, required_extensions: list<utf8>,\n * schema_path: list<utf8>? }`, where `arguments` is a serialized single-row batch\n * with one column per argument: `arg_<index>` for positional args, the bare\n * name for named args.\n */\nexport function decodeScanFunctionResult(inner: Record<string, unknown>): ScanFunctionResult {\n const argsBytes = inner.arguments;\n const positionalArguments: unknown[] = [];\n const namedArguments: Record<string, unknown> = {};\n\n if (argsBytes != null) {\n const batch = deserializeBatch(toUint8Array(argsBytes));\n for (const field of batch.schema.fields) {\n const col = batch.getChild(field.name);\n const value = col ? col.get(0) : null;\n if (field.name.startsWith(\"arg_\")) {\n const idx = parseInt(field.name.slice(4), 10);\n while (positionalArguments.length <= idx) positionalArguments.push(null);\n positionalArguments[idx] = value;\n } else {\n namedArguments[field.name] = value;\n }\n }\n }\n\n const exts = inner.required_extensions;\n const requiredExtensions: string[] = exts == null\n ? []\n : (Array.isArray(exts) ? exts : [...(exts as Iterable<unknown>)])\n .filter((v) => v != null)\n .map(String);\n\n return {\n functionName: String(inner.function_name ?? \"\"),\n positionalArguments,\n namedArguments,\n requiredExtensions,\n // Absent for a pre-1.5.0 peer — the column itself won't be on the wire in\n // that case, which reads the same as \"present but null\".\n schemaPath: inner.schema_path == null\n ? null\n : (Array.isArray(inner.schema_path) ? inner.schema_path : [...(inner.schema_path as Iterable<unknown>)])\n .filter((value) => value != null)\n .map(String),\n };\n}\n\n/**\n * Synthesise a one-branch `ScanBranchesResult` wire dict from a legacy\n * `tableScanFunctionGet` wire result. Mirrors vgi-python's default\n * `table_scan_branches_get` (catalog_interface.py): a single-source worker is\n * automatically compatible with the branches-aware C++ side.\n *\n * Each branch is its own IPC stream carried in a `list<binary>` column. The\n * legacy result's `arguments` field is already the nested-IPC form\n * `ScanBranch` expects, so it passes through untouched.\n */\nexport function singleBranchResult(\n legacy: {\n function_name: string;\n arguments: unknown;\n required_extensions?: string[];\n schema_path?: string[] | null;\n },\n): { branches: Uint8Array[]; required_extensions: string[] } {\n return {\n branches: [\n encodeScanBranch({\n function_name: legacy.function_name,\n arguments: toUint8Array(legacy.arguments),\n // This shim has no independent way to know the function's own schema;\n // propagate whatever `tableScanFunctionGet` already resolved rather\n // than dropping a value the legacy response carries.\n schema_path: legacy.schema_path ?? null,\n }),\n ],\n required_extensions: legacy.required_extensions ?? [],\n };\n}\n\n/**\n * The ONE place `ScanBranch`'s columns are named.\n *\n * Both branch builders used to carry their own copy of this key list, and both\n * copies were missing `format_name` / `format_locations` after those fields\n * were added to the schema. `format_locations` is a LIST, and Arrow's assembler\n * dereferences a list's `children[0]` while writing, so the omission did not\n * degrade anything — it killed every scan through those builders with\n * \"Cannot read properties of undefined (reading 'slice')\", including tables\n * that predated format branches entirely. One key list is the fix; the\n * completeness test in src/__tests__ pins it against ScanBranchSchema.\n *\n * Every column the schema declares must appear here, null included.\n */\nfunction encodeScanBranch(cols: {\n function_name: string;\n arguments: Uint8Array;\n branch_filter?: string | null;\n writable?: boolean;\n source_catalog?: string | null;\n source_schema_path?: string[] | null;\n source_table?: string | null;\n format_name?: string | null;\n format_locations?: string[] | null;\n format_options?: Uint8Array | null;\n schema_path?: string[] | null;\n}): Uint8Array {\n return serializeBatch(\n batchFromColumns(\n {\n function_name: [cols.function_name],\n arguments: [cols.arguments],\n branch_filter: [cols.branch_filter ?? null],\n writable: [cols.writable ?? false],\n source_catalog: [cols.source_catalog ?? null],\n source_schema_path: [cols.source_schema_path ?? null],\n source_table: [cols.source_table ?? null],\n format_name: [cols.format_name ?? null],\n format_locations: [cols.format_locations ?? null],\n format_options: [cols.format_options ?? null],\n schema_path: [cols.schema_path ?? null],\n },\n ScanBranchSchema as any,\n ),\n );\n}\n\n/**\n * One physical source backing a multi-branch scan, in the shape the\n * `buildScanBranchesResult` helper consumes. Mirrors vgi-python's\n * `ScanBranch` (catalog_interface.py).\n *\n * Each scalar argument carries an explicit Arrow `type` so the nested\n * arguments batch is built with the wire type the C++ binder expects\n * (e.g. utf8 for file paths, int64 for counts).\n */\nexport interface ScanBranchInput {\n /** DuckDB function to call for this branch (e.g. \"sequence\", \"read_parquet\"). */\n functionName: string;\n /** Positional scalar arguments, each with its Arrow type. */\n positionalArguments?: { value: unknown; type: VgiDataType }[];\n /** Named scalar arguments, each with its Arrow type. */\n namedArguments?: Record<string, { value: unknown; type: VgiDataType }>;\n /** Optional SQL filter text AND'd into every scan of this branch. */\n branchFilter?: string | null;\n /** Declares this branch as the INSERT target (at most one per table). */\n writable?: boolean;\n /** Custom file FORMAT this branch reads, for a format-backed branch. */\n formatName?: string | null;\n /** Locations the format branch reads. */\n formatLocations?: string[] | null;\n /** Reader options for a format branch, as a 1-row IPC batch whose COLUMN\n * NAMES are the option names — the same shape `arguments` uses, because an\n * option value may be any Arrow type. These BECOME the reader's named\n * arguments, so without them a format branch cannot pass its reader a\n * delimiter, a header flag, or anything else. */\n formatOptions?: Uint8Array | null;\n /**\n * Catalog-table branch (lakehouse federation): leave `functionName` empty and\n * set these to scan the base table\n * `sourceCatalog.sourceSchemaPath.sourceTable` in a companion catalog instead of\n * calling a table function.\n */\n sourceCatalog?: string | null;\n sourceSchemaPath?: string[] | null;\n sourceTable?: string | null;\n /**\n * Function branch only — the catalog schema that registers `functionName`\n * (protocol 2.0.0). Without it a client has to guess (the table's own\n * schema, then the catalog's default schema) which implementation\n * `functionName` refers to when the same name is registered in more than\n * one schema. Leave unset for a catalog-table or FORMAT branch, and for a\n * branch that delegates straight to a native DuckDB function\n * (`read_parquet`, `read_csv_auto`, `iceberg_scan`, …) — neither has a\n * VGI-side schema of its own to report, which is why the field is optional\n * rather than required. Not to be confused with `sourceSchemaPath` above, which\n * names a catalog-table branch's *source table's* schema.\n */\n schemaPath?: string[] | null;\n}\n\n/**\n * Serialize a single branch's arguments to the nested-IPC form `ScanBranch`\n * expects: a 1-row batch with one column per argument — `arg_<index>` for\n * positional args, the bare name for named args. Mirrors Python's\n * `ScanBranch.to_row_dict` argument handling.\n */\n/**\n * Encode a format branch's reader options.\n *\n * Same shape as a branch's `arguments` blob — a 1-row batch whose COLUMN NAMES\n * are the option names — because an option value may be any Arrow type, so no\n * static schema could describe the map. Exported because a worker building a\n * format branch needs it and has no other way to produce those bytes.\n */\nexport function encodeFormatOptions(\n options: Record<string, { value: unknown; type: VgiDataType }>,\n): Uint8Array {\n const fields: VgiField[] = [];\n const values: Record<string, unknown[]> = {};\n for (const [name, arg] of Object.entries(options)) {\n fields.push(field_(name, arg.type, true));\n values[name] = [arg.value];\n }\n return serializeBatch(batchFromColumns(values, schema_(fields)));\n}\n\nfunction serializeBranchArguments(branch: ScanBranchInput): Uint8Array {\n const fields: VgiField[] = [];\n const values: Record<string, unknown[]> = {};\n\n const positional = branch.positionalArguments ?? [];\n positional.forEach((arg, index) => {\n const name = `arg_${index}`;\n fields.push(field_(name, arg.type, true));\n values[name] = [arg.value];\n });\n\n for (const [name, arg] of Object.entries(branch.namedArguments ?? {})) {\n fields.push(field_(name, arg.type, true));\n values[name] = [arg.value];\n }\n\n const batchSchema = schema_(fields);\n // batchFromColumns handles the zero-column case by producing a 1-row\n // empty batch — same as Python's RecordBatch.from_pylist([{}]).\n return serializeBatch(batchFromColumns(values, batchSchema));\n}\n\n/**\n * Build a multi-branch `ScanBranchesResult` wire dict from explicit branch\n * definitions. Each branch becomes its own 1-row `ScanBranchSchema` IPC\n * stream carried in the `branches` list<binary> column. Mirrors vgi-python's\n * `ScanBranchesResult` construction in the test fixture's\n * `table_scan_branches_get`.\n *\n * An empty `branches` list is serialized verbatim — the C++ side loud-fails\n * on it (that asymmetry is exercised by multi_branch_empty_branches.test).\n */\nexport function buildScanBranchesResult(\n branches: ScanBranchInput[],\n requiredExtensions: string[] = [],\n): { branches: Uint8Array[]; required_extensions: string[] } {\n const serializedBranches = branches.map((branch) =>\n encodeScanBranch({\n function_name: branch.functionName,\n arguments: serializeBranchArguments(branch),\n branch_filter: branch.branchFilter,\n writable: branch.writable,\n source_catalog: branch.sourceCatalog,\n source_schema_path: branch.sourceSchemaPath,\n source_table: branch.sourceTable,\n format_name: branch.formatName,\n format_locations: branch.formatLocations,\n format_options: branch.formatOptions,\n schema_path: branch.schemaPath,\n }),\n );\n return {\n branches: serializedBranches,\n required_extensions: requiredExtensions,\n };\n}\n\n// ============================================================================\n// CatalogInterface abstract class\n// ============================================================================\n\n/**\n * Catalog method return type — sync `T` or `Promise<T>`. The framework's\n * dispatch handlers `await` every catalog call, so async overrides work\n * out of the box. Default impls return sync values.\n */\ntype Awaitable<T> = T | Promise<T>;\n\nfunction isPromise<T>(v: Awaitable<T>): v is Promise<T> {\n return v != null && typeof (v as any).then === \"function\";\n}\n\nexport abstract class CatalogInterface {\n /**\n * Which catalog an `attach_opaque_data` belongs to, or null if unknown.\n *\n * Two catalogs served by one worker may declare the same schema *and*\n * function name, in which case the attachment is the only thing that tells\n * them apart — the bind path uses this to scope function resolution. The\n * default answers from `catalogs()` when this interface owns exactly one,\n * which is right for every single-catalog implementation; the composite\n * overrides it to route by its backend index byte.\n */\n catalogNameForAttach(_attachOpaqueData: Uint8Array): string | null {\n const names = this.catalogs();\n return names.length === 1 ? names[0] : null;\n }\n\n // Required overrides\n abstract catalogs(): string[];\n /**\n * Attach this catalog. The framework already validates ATTACH options\n * (name + type) against the specs the worker advertises in\n * `catalogsInfo().attach_option_specs`, so `options` arrives as a\n * validated, decoded `{name: value}` dict with typed column values.\n * Use `{}` if no options were supplied.\n */\n abstract attach(\n name: string,\n options?: Record<string, unknown>,\n dataVersionSpec?: string | null,\n implementationVersion?: string | null,\n ): Awaitable<CatalogAttachResult>;\n /**\n * List the catalogs this worker exposes with their version metadata. The\n * `implementation_version` / `data_version_spec` come from the CatalogInfo\n * returned by the read-only catalogs() signature below — a versioned worker\n * overrides `catalogs()` / `catalogsInfo()` to advertise real values; the\n * default derives them from the registered descriptor(s).\n */\n catalogsInfo?(): Awaitable<import(\"../generated/vgi-client.js\").CatalogInfo[]>;\n abstract detach(attachOpaqueData: AttachOpaqueData): Awaitable<void>;\n abstract version(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<number>;\n abstract schemas(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<SchemaInfo[]>;\n\n // Default implementations (throw CatalogReadOnlyError)\n create(name: string, onConflict: string, options?: any): Awaitable<void> {\n throw new CatalogReadOnlyError(\"create\");\n }\n drop(name: string): Awaitable<void> {\n throw new CatalogReadOnlyError(\"drop\");\n }\n schemaGet(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<SchemaInfo | null> {\n const all = this.schemas(attachOpaqueData, transactionOpaqueData);\n if (isPromise(all)) {\n return all.then((arr) => arr.find((s) => schemaPathsEqual(s.path, path)) ?? null);\n }\n return all.find((s) => schemaPathsEqual(s.path, path)) ?? null;\n }\n schemaCreate(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n comment?: string | null,\n tags?: any,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"schema_create\");\n }\n schemaDrop(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n ignoreNotFound?: boolean,\n cascade?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"schema_drop\");\n }\n schemaContentsTables(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<TableInfo[]> {\n return [];\n }\n schemaContentsViews(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<ViewInfo[]> {\n return [];\n }\n schemaContentsFunctions(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n type: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<FunctionInfo[]> {\n return [];\n }\n tableGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n atUnit?: string,\n atValue?: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<TableInfo | null> {\n return null;\n }\n tableCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columns: Uint8Array,\n onConflict: string,\n notNullConstraints?: number[],\n uniqueConstraints?: number[][],\n checkConstraints?: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_create\");\n }\n tableDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_drop\");\n }\n tableScanFunctionGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n atUnit?: string,\n atValue?: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<any> {\n throw new CatalogReadOnlyError(\"table_scan_function_get\");\n }\n /**\n * Return the scan branches for a (possibly multi-source) table. Default\n * delegates to `tableScanFunctionGet` and wraps the single result as a\n * one-branch list, so every single-source catalog is compatible with the\n * branches-aware C++ extension. Override for genuine multi-source tables.\n */\n tableScanBranchesGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n atUnit?: string,\n atValue?: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<any> {\n const legacy = this.tableScanFunctionGet(\n attachOpaqueData, schemaPath, name, atUnit, atValue, transactionOpaqueData,\n );\n return isPromise(legacy)\n ? legacy.then((r) => singleBranchResult(r))\n : singleBranchResult(legacy);\n }\n /**\n * Return serialized column statistics for a table, or null if none are\n * available. The result is the IPC bytes of a ColumnStatistics RecordBatch\n * (see src/util/statistics.ts for the schema) wrapped with an optional\n * cache TTL. Callers typically override this to pull stats from a\n * descriptor. Returning null signals \"no stats\" so DuckDB falls back to\n * the function-level `table_function_statistics` path.\n */\n tableColumnStatisticsGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Awaitable<{ bytes: Uint8Array; cacheMaxAgeSeconds: number | null } | null> {\n return null;\n }\n tableCommentSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n comment?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_comment_set\");\n }\n tableRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_rename\");\n }\n tableColumnAdd(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n columnType: string,\n defaultValue?: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_add\");\n }\n tableColumnDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_drop\");\n }\n tableColumnRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_rename\");\n }\n tableColumnDefaultSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n defaultValue: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_default_set\");\n }\n tableColumnDefaultDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_default_drop\");\n }\n tableColumnTypeChange(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n newType: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_type_change\");\n }\n tableNotNullSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_not_null_set\");\n }\n tableNotNullDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_not_null_drop\");\n }\n viewGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<ViewInfo | null> {\n return null;\n }\n viewCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n definition: string,\n onConflict: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"view_create\");\n }\n viewDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"view_drop\");\n }\n viewRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"view_rename\");\n }\n viewCommentSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n comment?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"view_comment_set\");\n }\n macroGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<MacroInfo | null> {\n return null;\n }\n macroCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n macroType: MacroType,\n parameters: string[],\n definition: string,\n onConflict: string,\n parameterDefaultValues?: Uint8Array | null,\n /**\n * Optional Arrow schema (one nullable field per parameter, in `parameters`\n * order) serialized as IPC bytes, carrying per-parameter descriptions via the\n * `vgi_doc` field metadata key. `null`/omitted when no per-parameter docs are\n * supplied. Build with `macroArgumentsSchema` + `serializeSchema`.\n */\n argumentsSchema?: Uint8Array | null,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"macro_create\");\n }\n macroDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"macro_drop\");\n }\n schemaContentsMacros(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n type: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<MacroInfo[]> {\n return [];\n }\n schemaContentsIndexes(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<IndexInfo[]> {\n return [];\n }\n indexGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<IndexInfo | null> {\n return null;\n }\n /**\n * List custom `COPY ... FROM` formats advertised by this catalog. Catalog-level\n * (not schema-scoped). The default returns an empty list, so catalogs that\n * don't define COPY formats are unaffected. The VGI extension treats an empty\n * list (or a not-implemented method) as \"no custom formats\". Mirrors\n * vgi-python's `CatalogInterface.copy_from_formats`.\n */\n copyFromFormats(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Awaitable<CopyFromFormatInfo[]> {\n return [];\n }\n transactionBegin(attachOpaqueData: AttachOpaqueData): Awaitable<Uint8Array | null> {\n return null;\n }\n transactionCommit(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData\n ): Awaitable<void> {}\n transactionRollback(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData\n ): Awaitable<void> {}\n}\n",
28
+ "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// SPDX-License-Identifier: LicenseRef-QueryFarm-Source-Available-1.0\n\n/**\n * Generic ArrowSerializableDataclass (ASD) codec.\n *\n * Bridges between typed TS objects (snake_case, matching vgi-python dataclass\n * field names) and Arrow IPC bytes (single-row batch with the dataclass'\n * ARROW_SCHEMA). Used by the generated vgi-client.ts encode<X>/decode<X>\n * wrappers to make the typed client interfaces honest at the wire boundary.\n *\n * Encoding delegates to the facade's `batchFromRows` (which handles the\n * complex types — Decimal/BigInt/List/Map/Struct/Dictionary — uniformly\n * across both arrow-js and flechette backends). Decoding pulls each field's\n * value with `batchToScalarDict`, then runs `normalizeValue` to convert\n * Arrow representations (MapRow, BigInt, etc.) back into plain JS shapes.\n */\n\nimport {\n type VgiSchema,\n type VgiField,\n type VgiDataType,\n isBinary,\n isBool,\n isDictionary,\n isInt,\n isList,\n isMap,\n isStruct,\n batchFromRows,\n serializeBatch,\n deserializeBatch,\n} from \"../arrow/index.js\";\n\n/**\n * Encode a typed object as a single-row Arrow IPC stream using `schema`.\n * Matches Python's `ArrowSerializableDataclass.serialize_to_bytes()`.\n */\nexport function encodeASD(\n schema: VgiSchema,\n obj: Record<string, any>,\n): Uint8Array {\n return serializeBatch(batchFromRows([sortMapsForSchema(schema, obj)], schema));\n}\n\n// --------------------------------------------------------------------------- //\n// Encode side: deterministic map columns\n// --------------------------------------------------------------------------- //\n//\n// A map value arrives as a JS object (or Map / pair list), whose iteration\n// order is insertion order -- except that integer-like keys (\"1\", \"2\") always\n// come first, ascending. Two builds of the same record could therefore encode\n// differently (and a catalog_contents content-hash etag would change with no\n// catalog change). Every map is written in sorted key order instead, matching\n// the Go / Java / C# / Rust SDKs: keys compared by Unicode code point (the\n// same order as comparing their UTF-8 bytes), not by UTF-16 code unit.\n\n/** Compare two strings by Unicode code point (= UTF-8 byte order). */\nexport function compareCodePoints(a: string, b: string): number {\n const n = Math.min(a.length, b.length);\n for (let i = 0; i < n; i++) {\n const x = a.charCodeAt(i);\n const y = b.charCodeAt(i);\n if (x === y) continue;\n // A surrogate (a code point above U+FFFF) sorts after every BMP code unit,\n // though as a code unit (0xD800-0xDFFF) it sorts below U+E000-U+FFFF.\n const xs = x >= 0xd800 && x <= 0xdfff;\n const ys = y >= 0xd800 && y <= 0xdfff;\n if (xs !== ys) return xs ? 1 : -1;\n return x - y;\n }\n return a.length - b.length;\n}\n\nfunction mapPairs(raw: any): Array<[unknown, unknown]> {\n if (Array.isArray(raw)) return raw.map((e: any) => (Array.isArray(e) ? [e[0], e[1]] : [e?.key, e?.value]));\n if (raw instanceof Map) return Array.from(raw.entries());\n if (typeof raw[Symbol.iterator] === \"function\") return Array.from(raw as Iterable<[unknown, unknown]>);\n return Object.entries(raw);\n}\n\nfunction compareKeys(a: unknown, b: unknown): number {\n if (typeof a === \"string\" && typeof b === \"string\") return compareCodePoints(a, b);\n if ((typeof a === \"number\" || typeof a === \"bigint\") && (typeof b === \"number\" || typeof b === \"bigint\")) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n return compareCodePoints(String(a), String(b));\n}\n\n/** Whether a type contains a map anywhere (memoized per type object). */\nconst HAS_MAP = new WeakMap<object, boolean>();\nfunction typeHasMap(type: VgiDataType): boolean {\n const cached = HAS_MAP.get(type as object);\n if (cached !== undefined) return cached;\n let has = isMap(type);\n if (!has && (isList(type) || isStruct(type))) {\n has = ((type as any).children as VgiField[]).some((c) => typeHasMap(c.type));\n }\n HAS_MAP.set(type as object, has);\n return has;\n}\n\nfunction sortMapsForType(type: VgiDataType, value: any): any {\n if (value == null || !typeHasMap(type)) return value;\n if (isMap(type)) {\n const entries = (type as any).children[0].type as VgiDataType;\n const valueType = ((entries as any).children as VgiField[])[1].type;\n return mapPairs(value)\n .map(([k, v]): [unknown, unknown] => [k, sortMapsForType(valueType, v)])\n .sort((x, y) => compareKeys(x[0], y[0]));\n }\n if (isList(type)) {\n const child = (type as any).children[0].type as VgiDataType;\n return Array.from(value as Iterable<unknown>, (v) => sortMapsForType(child, v));\n }\n if (isStruct(type)) {\n const out: Record<string, any> = { ...value };\n for (const cf of (type as any).children as VgiField[]) out[cf.name] = sortMapsForType(cf.type, value[cf.name]);\n return out;\n }\n return value;\n}\n\n/**\n * `obj` with every map-typed field (at any depth) as a key-sorted pair list.\n * Returns `obj` itself when the schema has no map column. Never mutates `obj`\n * (catalog items may be frozen and shared).\n */\nexport function sortMapsForSchema(schema: VgiSchema, obj: Record<string, any>): Record<string, any> {\n let out: Record<string, any> | null = null;\n for (const f of schema.fields) {\n if (!typeHasMap(f.type)) continue;\n const v = obj[f.name];\n if (v == null) continue;\n out ??= { ...obj };\n out[f.name] = sortMapsForType(f.type, v);\n }\n return out ?? obj;\n}\n\n/**\n * Decode a single-row Arrow IPC stream into a typed object using `schema`.\n * Matches Python's `ArrowSerializableDataclass.deserialize_from_bytes()`.\n */\nexport function decodeASD<T>(\n schema: VgiSchema,\n bytes: Uint8Array,\n): T {\n const batch = deserializeBatch(bytes);\n if (batch.numRows === 0) {\n const names = schema.fields.map((f) => f.name).join(\",\");\n throw new Error(`decodeASD: empty batch (expected 1 row for ${names})`);\n }\n const out: Record<string, any> = {};\n for (const field of schema.fields) {\n const col = batch.getChild(field.name);\n const raw = col ? col.get(0) : null;\n out[field.name] = normalizeValue(raw, field.type);\n }\n return out as T;\n}\n\n// --------------------------------------------------------------------------- //\n// Decode side: Arrow value -> normalized JS value\n// --------------------------------------------------------------------------- //\n\nfunction normalizeValue(raw: any, type: VgiDataType): any {\n if (raw == null) return null;\n\n if (isList(type)) {\n const childType = (type as any).children[0].type as VgiDataType;\n const out: any[] = [];\n for (const item of raw) out.push(normalizeValue(item, childType));\n return out;\n }\n\n if (isMap(type)) {\n // Values are decoded with the map's declared value type, like list items\n // and struct children: a map<utf8, int64> yields numbers (bigint beyond\n // the safe range), not strings, and a null value stays null.\n const entries = (type as any).children[0].type as VgiDataType;\n const valueType = ((entries as any).children as VgiField[])[1].type;\n const out: Record<string, any> = {};\n const put = (k: unknown, v: unknown): void => {\n out[String(k)] = normalizeValue(v, valueType);\n };\n // arrow-js MapRow is iterable of [k,v]; flechette returns [[k,v],...] arrays.\n if (raw[Symbol.iterator]) {\n for (const entry of raw) {\n if (Array.isArray(entry)) {\n put(entry[0], entry[1]);\n } else if (entry && typeof entry === \"object\") {\n put(entry.key ?? entry[0], entry.value ?? entry[1]);\n }\n }\n } else if (typeof raw === \"object\") {\n // Plain-object map (flechette without useMap): Object.entries fallback\n for (const [k, v] of Object.entries(raw)) put(k, v);\n }\n return out;\n }\n\n if (isStruct(type)) {\n const childFields = (type as any).children as VgiField[];\n const out: Record<string, any> = {};\n for (const cf of childFields) {\n out[cf.name] = normalizeValue(raw[cf.name], cf.type);\n }\n return out;\n }\n\n if (isDictionary(type)) {\n return raw == null ? null : String(raw);\n }\n\n if (isBinary(type)) {\n return toUint8Array(raw);\n }\n\n if (isInt(type) && (type as any).bitWidth === 64) {\n // Prefer number when representable; callers that need BigInt can convert.\n if (typeof raw === \"bigint\") {\n if (raw >= BigInt(Number.MIN_SAFE_INTEGER) && raw <= BigInt(Number.MAX_SAFE_INTEGER)) {\n return Number(raw);\n }\n return raw;\n }\n return raw;\n }\n\n if (isBool(type)) {\n return Boolean(raw);\n }\n\n // Utf8, Int8/16/32, Float32/64 — pass through as-is.\n return raw;\n}\n\nfunction toUint8Array(val: any): Uint8Array {\n if (val instanceof Uint8Array) return val;\n if (val instanceof ArrayBuffer) return new Uint8Array(val);\n if (val && val.buffer instanceof ArrayBuffer) {\n return new Uint8Array(val.buffer, val.byteOffset, val.byteLength);\n }\n return new Uint8Array(0);\n}\n",
29
+ "// ============================================================================\n// GENERATED by vgi.codegen.ts_schemas. DO NOT EDIT BY HAND.\n//\n// Generator: vgi-gen-ts-schemas v2\n// Content hash: 36a9087555c9\n//\n// To regenerate:\n// uv run --project ~/Development/vgi-python vgi-gen-ts-schemas \\\n// > ~/Development/vgi-typescript/src/generated/vgi-protocol-schemas.ts\n// ============================================================================\n\nimport {\n TimeUnit,\n binary,\n bool,\n dictionary,\n field,\n float64,\n int16,\n int32,\n int64,\n largeBinary,\n list,\n map,\n schema,\n struct,\n timestamp,\n uint64,\n utf8,\n} from \"../arrow/index.js\";\n\n// Origin: CatalogInfo\nexport const CatalogInfoSchema = schema([\n field(\"name\", utf8(), false),\n field(\"implementation_version\", utf8(), true),\n field(\"data_version_spec\", utf8(), true),\n field(\"attach_option_specs\", list(field(\"item\", binary(), true)), false),\n field(\"releases\", list(field(\"item\", struct([field(\"version\", utf8(), false), field(\"released_at\", timestamp(TimeUnit.MICROSECOND, \"UTC\"), true), field(\"summary\", utf8(), false), field(\"notes_url\", utf8(), true)]), true)), false),\n field(\"source_url\", utf8(), true),\n]);\n\n// Origin: SchemaInfo\nexport const SchemaInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"estimated_object_count\", map(field(\"key\", utf8(), false), field(\"value\", int64(), true), false), true),\n]);\n\n// Origin: TableInfo\nexport const TableInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"columns\", binary(), false),\n field(\"not_null_constraints\", list(field(\"item\", int32(), true)), false),\n field(\"unique_constraints\", list(field(\"item\", list(field(\"item\", int32(), true)), true)), false),\n field(\"check_constraints\", list(field(\"item\", utf8(), true)), false),\n field(\"primary_key_constraints\", list(field(\"item\", list(field(\"item\", int32(), true)), true)), false),\n field(\"foreign_key_constraints\", list(field(\"item\", binary(), true)), false),\n field(\"write_result_modes\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"supports_column_statistics\", bool(), false),\n field(\"scan_function\", binary(), true),\n field(\"insert_function\", binary(), true),\n field(\"update_function\", binary(), true),\n field(\"delete_function\", binary(), true),\n field(\"cardinality_estimate\", int64(), true),\n field(\"cardinality_max\", int64(), true),\n field(\"column_statistics\", binary(), true),\n field(\"bind_result\", binary(), true),\n field(\"required_filters\", list(field(\"item\", list(field(\"item\", utf8(), true)), true)), false),\n]);\n\n// Origin: ViewInfo\nexport const ViewInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"definition\", utf8(), false),\n field(\"column_comments\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n]);\n\n// Origin: FunctionInfo\nexport const FunctionInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"function_type\", dictionary(utf8(), int16()), false),\n field(\"arguments\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"parameter_default_values\", binary(), true),\n field(\"stability\", dictionary(utf8(), int16()), true),\n field(\"null_handling\", dictionary(utf8(), int16()), true),\n field(\"argument_monotonicity\", list(field(\"item\", utf8(), true)), true),\n field(\"description\", utf8(), false),\n field(\"examples\", list(field(\"item\", struct([field(\"sql\", utf8(), false), field(\"description\", utf8(), false), field(\"expected_output\", utf8(), true)]), true)), false),\n field(\"categories\", list(field(\"item\", utf8(), true)), false),\n field(\"projection_pushdown\", bool(), true),\n field(\"filter_pushdown\", bool(), true),\n field(\"sampling_pushdown\", bool(), true),\n field(\"late_materialization\", bool(), true),\n field(\"filter_semantic_profiles\", list(field(\"item\", utf8(), true)), false),\n field(\"additional_filter_functions\", list(field(\"item\", struct([field(\"namespace\", utf8(), false), field(\"name\", utf8(), false), field(\"version\", uint64(), false)]), true)), false),\n field(\"runtime_filter_algorithms\", list(field(\"item\", struct([field(\"namespace\", utf8(), false), field(\"name\", utf8(), false), field(\"version\", uint64(), false)]), true)), false),\n field(\"filter_evaluation_contexts\", list(field(\"item\", struct([field(\"profile\", utf8(), false), field(\"provider_fingerprint\", utf8(), true)]), true)), false),\n field(\"order_preservation\", dictionary(utf8(), int16()), true),\n field(\"max_workers\", int32(), true),\n field(\"supports_batch_index\", bool(), false),\n field(\"supports_splits\", bool(), false),\n field(\"filters_exactly_applied\", bool(), false),\n field(\"supports_positions\", bool(), false),\n field(\"split_token_ttl_seconds\", int64(), true),\n field(\"partition_kind\", dictionary(utf8(), int16()), false),\n field(\"order_dependent\", dictionary(utf8(), int16()), false),\n field(\"distinct_dependent\", dictionary(utf8(), int16()), false),\n field(\"supports_window\", bool(), false),\n field(\"streaming_partitioned\", bool(), false),\n field(\"has_finalize\", bool(), false),\n field(\"source_order_dependent\", bool(), false),\n field(\"sink_order_dependent\", bool(), false),\n field(\"requires_input_batch_index\", bool(), false),\n field(\"input_from_args\", bool(), false),\n field(\"required_settings\", list(field(\"item\", utf8(), true)), false),\n field(\"required_secrets\", list(field(\"item\", struct([field(\"secret_type\", utf8(), false), field(\"scope\", utf8(), true), field(\"secret_name\", utf8(), true)]), true)), false),\n]);\n\n// Origin: MacroInfo\nexport const MacroInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"macro_type\", dictionary(utf8(), int16()), false),\n field(\"parameters\", list(field(\"item\", utf8(), true)), false),\n field(\"parameter_default_values\", binary(), true),\n field(\"definition\", utf8(), false),\n field(\"arguments_schema\", binary(), true),\n]);\n\n// Origin: IndexInfo\nexport const IndexInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"name\", utf8(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"table_name\", utf8(), false),\n field(\"index_type\", utf8(), false),\n field(\"constraint_type\", dictionary(utf8(), int16()), false),\n field(\"expressions\", list(field(\"item\", utf8(), true)), false),\n field(\"options\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n]);\n\n// Origin: CopyFromFormatInfo\nexport const CopyFromFormatInfoSchema = schema([\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"format_name\", utf8(), false),\n field(\"handler\", utf8(), false),\n field(\"options\", binary(), false),\n field(\"direction\", utf8(), false),\n field(\"description\", utf8(), false),\n field(\"ordered\", bool(), false),\n]);\n\n// Origin: ScanFunctionResult\nexport const ScanFunctionResultSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"required_extensions\", list(field(\"item\", utf8(), true)), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: ScanBranchesResult\nexport const ScanBranchesResultSchema = schema([\n field(\"branches\", list(field(\"item\", binary(), true)), false),\n field(\"required_extensions\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: ScanBranch\nexport const ScanBranchSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"branch_filter\", utf8(), true),\n field(\"writable\", bool(), false),\n field(\"source_catalog\", utf8(), true),\n field(\"source_schema_path\", list(field(\"item\", utf8(), true)), true),\n field(\"source_table\", utf8(), true),\n field(\"format_name\", utf8(), true),\n field(\"format_locations\", list(field(\"item\", utf8(), true)), true),\n field(\"format_options\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: ScanSplit\nexport const ScanSplitSchema = schema([\n field(\"payload\", binary(), false),\n field(\"token\", binary(), false),\n field(\"estimated_rows\", int64(), true),\n field(\"rows_exact\", bool(), false),\n field(\"estimated_bytes\", int64(), true),\n field(\"partition_bounds\", binary(), true),\n field(\"column_statistics\", binary(), true),\n field(\"location_ids\", list(field(\"item\", int64(), true)), true),\n field(\"start_position\", binary(), true),\n field(\"end_position\", binary(), true),\n]);\n\n// Origin: AttachCatalogInfo\nexport const AttachCatalogInfoSchema = schema([\n field(\"alias\", utf8(), false),\n field(\"target\", utf8(), false),\n field(\"db_type\", utf8(), false),\n field(\"options\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"hidden\", bool(), false),\n field(\"required\", bool(), false),\n field(\"secret_ref\", utf8(), false),\n]);\n\n// Origin: ForeignKeyInfo\nexport const ForeignKeyInfoSchema = schema([\n field(\"fk_columns\", list(field(\"item\", utf8(), true)), false),\n field(\"pk_columns\", list(field(\"item\", utf8(), true)), false),\n field(\"referenced_table\", utf8(), false),\n field(\"referenced_schema_path\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: SchemaContents\nexport const SchemaContentsSchema = schema([\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"schema\", binary(), false),\n field(\"tables\", list(field(\"item\", binary(), true)), false),\n field(\"views\", list(field(\"item\", binary(), true)), false),\n field(\"scalar_functions\", list(field(\"item\", binary(), true)), false),\n field(\"aggregate_functions\", list(field(\"item\", binary(), true)), false),\n field(\"table_functions\", list(field(\"item\", binary(), true)), false),\n field(\"scalar_macros\", list(field(\"item\", binary(), true)), false),\n field(\"table_macros\", list(field(\"item\", binary(), true)), false),\n field(\"indexes\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: AggregateBindRequest\nexport const AggregateBindRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"input_schema\", binary(), true),\n field(\"settings\", binary(), true),\n field(\"secrets\", binary(), true),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n field(\"argument_names\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateCombineRequest\nexport const AggregateCombineRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"merge_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateDestructorRequest\nexport const AggregateDestructorRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"group_ids_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateFinalizeRequest\nexport const AggregateFinalizeRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"group_ids_batch\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateStreamingChunkRequest\nexport const AggregateStreamingChunkRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"input_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateStreamingCloseRequest\nexport const AggregateStreamingCloseRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateStreamingOpenRequest\nexport const AggregateStreamingOpenRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"input_schema\", binary(), false),\n field(\"partition_key_count\", int64(), false),\n field(\"order_key_count\", int64(), false),\n field(\"output_schema\", binary(), false),\n field(\"settings\", binary(), true),\n field(\"secrets\", binary(), true),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateUpdateRequest\nexport const AggregateUpdateRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"input_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateWindowBatchRequest\nexport const AggregateWindowBatchRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"partition_id\", int64(), false),\n field(\"row_idx\", int64(), false),\n field(\"count\", int64(), false),\n field(\"frames_per_row\", list(field(\"item\", int64(), true)), false),\n field(\"frame_starts\", list(field(\"item\", int64(), true)), false),\n field(\"frame_ends\", list(field(\"item\", int64(), true)), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateWindowDestructorRequest\nexport const AggregateWindowDestructorRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"partition_id\", int64(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateWindowInitRequest\nexport const AggregateWindowInitRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"partition_id\", int64(), false),\n field(\"row_count\", int64(), false),\n field(\"partition_batch\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"filter_mask\", binary(), false),\n field(\"frame_stats\", binary(), false),\n field(\"all_valid\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: AggregateWindowRequest\nexport const AggregateWindowRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"partition_id\", int64(), false),\n field(\"rid\", int64(), false),\n field(\"frame_starts\", list(field(\"item\", int64(), true)), false),\n field(\"frame_ends\", list(field(\"item\", int64(), true)), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: BindRequest\nexport const BindRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"arguments\", binary(), false),\n field(\"function_type\", dictionary(utf8(), int16()), false),\n field(\"input_schema\", binary(), true),\n field(\"settings\", binary(), true),\n field(\"secrets\", binary(), true),\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_opaque_data\", binary(), true),\n field(\"resolved_secrets_provided\", bool(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"copy_from\", struct([field(\"format\", utf8(), false), field(\"file_path\", utf8(), false), field(\"expected_schema\", binary(), false)]), true),\n field(\"copy_to\", struct([field(\"format\", utf8(), false), field(\"file_path\", utf8(), false)]), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n field(\"argument_names\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: CatalogAttachRequest\nexport const CatalogAttachRequestSchema = schema([\n field(\"name\", utf8(), false),\n field(\"options\", binary(), true),\n field(\"data_version_spec\", utf8(), true),\n field(\"implementation_version\", utf8(), true),\n field(\"client_capabilities\", binary(), true),\n]);\n\n// Origin: CatalogCreateRequest\nexport const CatalogCreateRequestSchema = schema([\n field(\"name\", utf8(), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"options\", binary(), true),\n]);\n\n// Origin: ClientCapabilities\nexport const ClientCapabilitiesSchema = schema([\n field(\"engine\", utf8(), false),\n field(\"native_formats\", list(field(\"item\", utf8(), true)), false),\n field(\"catalogs\", list(field(\"item\", utf8(), true)), false),\n field(\"can_stream\", bool(), false),\n field(\"filter_encodings\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: CopyFromContext\nexport const CopyFromContextSchema = schema([\n field(\"format\", utf8(), false),\n field(\"file_path\", utf8(), false),\n field(\"expected_schema\", binary(), false),\n]);\n\n// Origin: CopyToContext\nexport const CopyToContextSchema = schema([\n field(\"format\", utf8(), false),\n field(\"file_path\", utf8(), false),\n]);\n\n// Origin: GlobalInitResponse\nexport const GlobalInitResponseSchema = schema([\n field(\"execution_id\", binary(), false),\n field(\"opaque_data\", binary(), true),\n field(\"max_workers\", int64(), false),\n]);\n\n// Origin: IndexCreateRequest\nexport const IndexCreateRequestSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"table_name\", utf8(), false),\n field(\"index_type\", utf8(), false),\n field(\"constraint_type\", dictionary(utf8(), int16()), false),\n field(\"expressions\", list(field(\"item\", utf8(), true)), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"options\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: InitRequest\nexport const InitRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"output_schema\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n field(\"projection_ids\", list(field(\"item\", int64(), true)), true),\n field(\"pushdown_filters\", largeBinary(), true),\n field(\"join_keys\", list(field(\"item\", largeBinary(), true)), true),\n field(\"split_tokens\", list(field(\"item\", largeBinary(), true)), true),\n field(\"row_limit\", int64(), true),\n field(\"phase\", dictionary(utf8(), int16()), true),\n field(\"finalize_state_id\", binary(), true),\n field(\"execution_id\", binary(), true),\n field(\"init_opaque_data\", binary(), true),\n field(\"substream_id\", binary(), true),\n field(\"order_by_column_name\", utf8(), true),\n field(\"order_by_direction\", dictionary(utf8(), int16()), true),\n field(\"order_by_null_order\", dictionary(utf8(), int16()), true),\n field(\"order_by_limit\", int64(), true),\n field(\"tablesample_percentage\", float64(), true),\n field(\"tablesample_seed\", int64(), true),\n]);\n\n// Origin: MacroCreateRequest\nexport const MacroCreateRequestSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"macro_type\", dictionary(utf8(), int16()), false),\n field(\"parameters\", list(field(\"item\", utf8(), true)), false),\n field(\"definition\", utf8(), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"parameter_default_values\", binary(), true),\n field(\"arguments_schema\", binary(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: TableCreateRequest\nexport const TableCreateRequestSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"columns\", binary(), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"not_null_constraints\", list(field(\"item\", int32(), true)), false),\n field(\"unique_constraints\", list(field(\"item\", list(field(\"item\", int32(), true)), true)), false),\n field(\"check_constraints\", list(field(\"item\", utf8(), true)), false),\n field(\"primary_key_constraints\", list(field(\"item\", list(field(\"item\", int32(), true)), true)), false),\n field(\"foreign_key_constraints\", list(field(\"item\", binary(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: TableBufferingCombineRequest\nexport const TableBufferingCombineRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"state_ids\", list(field(\"item\", binary(), true)), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_id\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: TableBufferingDestructorRequest\nexport const TableBufferingDestructorRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_id\", binary(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: TableBufferingProcessRequest\nexport const TableBufferingProcessRequestSchema = schema([\n field(\"function_name\", utf8(), false),\n field(\"execution_id\", binary(), false),\n field(\"input_batch\", binary(), false),\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_id\", binary(), true),\n field(\"batch_index\", int64(), true),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), true),\n]);\n\n// Origin: TableFunctionCardinalityRequest\nexport const TableFunctionCardinalityRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n]);\n\n// Origin: TableFunctionDynamicToStringRequest\nexport const TableFunctionDynamicToStringRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n field(\"global_execution_id\", binary(), false),\n]);\n\n// Origin: TableFunctionPlanRequest\nexport const TableFunctionPlanRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n field(\"projection_ids\", list(field(\"item\", int64(), true)), true),\n field(\"pushdown_filters\", largeBinary(), true),\n field(\"join_keys\", list(field(\"item\", largeBinary(), true)), true),\n field(\"row_limit\", int64(), true),\n field(\"target_split_bytes\", int64(), true),\n field(\"min_splits\", int64(), true),\n field(\"max_splits_per_response\", int64(), true),\n field(\"cursor\", binary(), true),\n field(\"refined_filters\", largeBinary(), true),\n field(\"filters_complete\", bool(), false),\n field(\"start_position\", binary(), true),\n field(\"end_position\", binary(), true),\n field(\"order_by_column_name\", utf8(), true),\n field(\"order_by_direction\", dictionary(utf8(), int16()), true),\n field(\"order_by_null_order\", dictionary(utf8(), int16()), true),\n field(\"order_by_limit\", int64(), true),\n field(\"tablesample_percentage\", float64(), true),\n field(\"tablesample_seed\", int64(), true),\n]);\n\n// Origin: TableFunctionStatisticsRequest\nexport const TableFunctionStatisticsRequestSchema = schema([\n field(\"bind_call\", binary(), false),\n field(\"bind_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'aggregate_bind' result\nexport const AggregateBindResultSchema = schema([\n field(\"output_schema\", binary(), false),\n field(\"execution_id\", binary(), false),\n]);\n\n// Origin: method 'aggregate_combine' result\nexport const AggregateCombineResultSchema = schema([]);\n\n// Origin: method 'aggregate_destructor' result\nexport const AggregateDestructorResultSchema = schema([]);\n\n// Origin: method 'aggregate_finalize' result\nexport const AggregateFinalizeResultSchema = schema([\n field(\"result_batch\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_chunk' result\nexport const AggregateStreamingChunkResultSchema = schema([\n field(\"result_batch\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_close' result\nexport const AggregateStreamingCloseResultSchema = schema([]);\n\n// Origin: method 'aggregate_streaming_open' result\nexport const AggregateStreamingOpenResultSchema = schema([\n field(\"execution_id\", binary(), false),\n]);\n\n// Origin: method 'aggregate_update' result\nexport const AggregateUpdateResultSchema = schema([]);\n\n// Origin: method 'aggregate_window' result\nexport const AggregateWindowResultSchema = schema([\n field(\"result_batch\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_batch' result\nexport const AggregateWindowBatchResultSchema = schema([\n field(\"result_batch\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_destructor' result\nexport const AggregateWindowDestructorResultSchema = schema([]);\n\n// Origin: method 'aggregate_window_init' result\nexport const AggregateWindowInitResultSchema = schema([]);\n\n// Origin: method 'bind' result\nexport const BindResultSchema = schema([\n field(\"output_schema\", binary(), false),\n field(\"opaque_data\", binary(), true),\n field(\"lookup_secret_types\", list(field(\"item\", utf8(), true)), false),\n field(\"lookup_scopes\", list(field(\"item\", utf8(), true)), false),\n field(\"lookup_names\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: method 'catalog_attach' result\nexport const CatalogAttachResultSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"supports_transactions\", bool(), false),\n field(\"supports_time_travel\", bool(), false),\n field(\"catalog_version_frozen\", bool(), false),\n field(\"catalog_version\", int64(), false),\n field(\"attach_opaque_data_required\", bool(), false),\n field(\"default_schema\", utf8(), false),\n field(\"settings\", list(field(\"item\", binary(), true)), false),\n field(\"secret_types\", list(field(\"item\", binary(), true)), false),\n field(\"attach_catalogs\", list(field(\"item\", binary(), true)), false),\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), false),\n field(\"supports_column_statistics\", bool(), false),\n field(\"global_functions\", list(field(\"item\", binary(), true)), false),\n field(\"global_function_prefix\", utf8(), false),\n field(\"resolved_data_version\", utf8(), true),\n field(\"resolved_implementation_version\", utf8(), true),\n field(\"supports_catalog_contents\", bool(), false),\n]);\n\n// Origin: method 'catalog_catalogs' result\nexport const CatalogCatalogsResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_contents' result\nexport const CatalogContentsResultSchema = schema([\n field(\"catalog_version\", int64(), false),\n field(\"etag\", utf8(), true),\n field(\"not_modified\", bool(), false),\n field(\"schemas\", list(field(\"item\", struct([field(\"path\", list(field(\"item\", utf8(), true)), false), field(\"schema\", binary(), false), field(\"tables\", list(field(\"item\", binary(), true)), false), field(\"views\", list(field(\"item\", binary(), true)), false), field(\"scalar_functions\", list(field(\"item\", binary(), true)), false), field(\"aggregate_functions\", list(field(\"item\", binary(), true)), false), field(\"table_functions\", list(field(\"item\", binary(), true)), false), field(\"scalar_macros\", list(field(\"item\", binary(), true)), false), field(\"table_macros\", list(field(\"item\", binary(), true)), false), field(\"indexes\", list(field(\"item\", binary(), true)), false)]), true)), false),\n]);\n\n// Origin: method 'catalog_copy_from_formats' result\nexport const CatalogCopyFromFormatsResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_index_get' result\nexport const CatalogIndexGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_macro_get' result\nexport const CatalogMacroGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_functions' result\nexport const CatalogSchemaContentsFunctionsResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_indexes' result\nexport const CatalogSchemaContentsIndexesResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_macros' result\nexport const CatalogSchemaContentsMacrosResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_tables' result\nexport const CatalogSchemaContentsTablesResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_contents_views' result\nexport const CatalogSchemaContentsViewsResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schema_get' result\nexport const CatalogSchemaGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_schemas' result\nexport const CatalogSchemasResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_table_get' result\nexport const CatalogTableGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'catalog_transaction_begin' result\nexport const CatalogTransactionBeginResultSchema = schema([\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_version' result\nexport const CatalogVersionResultSchema = schema([\n field(\"version\", int64(), false),\n]);\n\n// Origin: method 'catalog_view_get' result\nexport const CatalogViewGetResultSchema = schema([\n field(\"items\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'table_buffering_combine' result\nexport const TableBufferingCombineResultSchema = schema([\n field(\"finalize_state_ids\", list(field(\"item\", binary(), true)), false),\n]);\n\n// Origin: method 'table_buffering_destructor' result\nexport const TableBufferingDestructorResultSchema = schema([]);\n\n// Origin: method 'table_buffering_process' result\nexport const TableBufferingProcessResultSchema = schema([\n field(\"state_id\", binary(), false),\n]);\n\n// Origin: method 'table_function_cardinality' result\nexport const TableFunctionCardinalityResultSchema = schema([\n field(\"estimate\", int64(), true),\n field(\"max\", int64(), true),\n]);\n\n// Origin: method 'table_function_dynamic_to_string' result\nexport const TableFunctionDynamicToStringResultSchema = schema([\n field(\"keys\", list(field(\"item\", utf8(), true)), false),\n field(\"values\", list(field(\"item\", utf8(), true)), false),\n]);\n\n// Origin: method 'table_function_plan' result\nexport const TableFunctionPlanResultSchema = schema([\n field(\"splits\", list(field(\"item\", binary(), true)), false),\n field(\"next_cursors\", list(field(\"item\", binary(), true)), true),\n field(\"execution_id\", binary(), true),\n field(\"init_opaque_data\", binary(), true),\n field(\"max_workers\", int64(), true),\n field(\"estimated_total_splits\", int64(), true),\n field(\"estimated_total_rows\", int64(), true),\n field(\"estimated_total_bytes\", int64(), true),\n field(\"catalog_version\", int64(), true),\n field(\"scope\", utf8(), false),\n field(\"locations\", list(field(\"item\", utf8(), true)), true),\n field(\"partitioning\", list(field(\"item\", binary(), true)), true),\n field(\"sort_order\", list(field(\"item\", binary(), true)), true),\n field(\"cache_max_age_seconds\", int64(), true),\n field(\"start_position\", binary(), true),\n field(\"end_position\", binary(), true),\n]);\n\n// Origin: method 'aggregate_bind' params\nexport const AggregateBindParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_combine' params\nexport const AggregateCombineParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_destructor' params\nexport const AggregateDestructorParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_finalize' params\nexport const AggregateFinalizeParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_chunk' params\nexport const AggregateStreamingChunkParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_close' params\nexport const AggregateStreamingCloseParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_streaming_open' params\nexport const AggregateStreamingOpenParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_update' params\nexport const AggregateUpdateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window' params\nexport const AggregateWindowParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_batch' params\nexport const AggregateWindowBatchParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_destructor' params\nexport const AggregateWindowDestructorParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'aggregate_window_init' params\nexport const AggregateWindowInitParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'bind' params\nexport const BindParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_attach' params\nexport const CatalogAttachParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_catalogs' params\nexport const CatalogCatalogsParamsSchema = schema([]);\n\n// Origin: method 'catalog_contents' params\nexport const CatalogContentsParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"if_none_match\", utf8(), true),\n]);\n\n// Origin: method 'catalog_copy_from_formats' params\nexport const CatalogCopyFromFormatsParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_create' params\nexport const CatalogCreateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_detach' params\nexport const CatalogDetachParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n]);\n\n// Origin: method 'catalog_drop' params\nexport const CatalogDropParamsSchema = schema([\n field(\"name\", utf8(), false),\n]);\n\n// Origin: method 'catalog_index_create' params\nexport const CatalogIndexCreateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_index_drop' params\nexport const CatalogIndexDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_index_get' params\nexport const CatalogIndexGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_macro_create' params\nexport const CatalogMacroCreateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_macro_drop' params\nexport const CatalogMacroDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_macro_get' params\nexport const CatalogMacroGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_functions' params\nexport const CatalogSchemaContentsFunctionsParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"type\", dictionary(utf8(), int16()), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_indexes' params\nexport const CatalogSchemaContentsIndexesParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_macros' params\nexport const CatalogSchemaContentsMacrosParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"type\", dictionary(utf8(), int16()), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_tables' params\nexport const CatalogSchemaContentsTablesParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_contents_views' params\nexport const CatalogSchemaContentsViewsParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_create' params\nexport const CatalogSchemaCreateParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"comment\", utf8(), true),\n field(\"tags\", map(field(\"key\", utf8(), false), field(\"value\", utf8(), true), false), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_drop' params\nexport const CatalogSchemaDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schema_get' params\nexport const CatalogSchemaGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"path\", list(field(\"item\", utf8(), true)), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_schemas' params\nexport const CatalogSchemasParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_add' params\nexport const CatalogTableColumnAddParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_definition\", binary(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"if_column_not_exists\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_comment_set' params\nexport const CatalogTableColumnCommentSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"comment\", utf8(), true),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_default_drop' params\nexport const CatalogTableColumnDefaultDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_default_set' params\nexport const CatalogTableColumnDefaultSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"expression\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_drop' params\nexport const CatalogTableColumnDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"if_column_exists\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_rename' params\nexport const CatalogTableColumnRenameParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"new_column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_statistics_get' params\nexport const CatalogTableColumnStatisticsGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_column_type_change' params\nexport const CatalogTableColumnTypeChangeParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_definition\", binary(), false),\n field(\"expression\", utf8(), true),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_comment_set' params\nexport const CatalogTableCommentSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"comment\", utf8(), true),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_create' params\nexport const CatalogTableCreateParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'catalog_table_delete_function_get' params\nexport const CatalogTableDeleteFunctionGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_drop' params\nexport const CatalogTableDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_get' params\nexport const CatalogTableGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_insert_function_get' params\nexport const CatalogTableInsertFunctionGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n field(\"writable_branch_function_name\", utf8(), true),\n]);\n\n// Origin: method 'catalog_table_not_null_drop' params\nexport const CatalogTableNotNullDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_not_null_set' params\nexport const CatalogTableNotNullSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_rename' params\nexport const CatalogTableRenameParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"new_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_scan_branches_get' params\nexport const CatalogTableScanBranchesGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_scan_function_get' params\nexport const CatalogTableScanFunctionGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"at_unit\", utf8(), true),\n field(\"at_value\", utf8(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_table_update_function_get' params\nexport const CatalogTableUpdateFunctionGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_transaction_begin' params\nexport const CatalogTransactionBeginParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n]);\n\n// Origin: method 'catalog_transaction_commit' params\nexport const CatalogTransactionCommitParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), false),\n]);\n\n// Origin: method 'catalog_transaction_rollback' params\nexport const CatalogTransactionRollbackParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), false),\n]);\n\n// Origin: method 'catalog_version' params\nexport const CatalogVersionParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_comment_set' params\nexport const CatalogViewCommentSetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"comment\", utf8(), true),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_create' params\nexport const CatalogViewCreateParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"definition\", utf8(), false),\n field(\"on_conflict\", dictionary(utf8(), int16()), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_drop' params\nexport const CatalogViewDropParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"cascade\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_get' params\nexport const CatalogViewGetParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'catalog_view_rename' params\nexport const CatalogViewRenameParamsSchema = schema([\n field(\"attach_opaque_data\", binary(), false),\n field(\"schema_path\", list(field(\"item\", utf8(), true)), false),\n field(\"name\", utf8(), false),\n field(\"new_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\n// Origin: method 'init' params\nexport const InitParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_buffering_combine' params\nexport const TableBufferingCombineParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_buffering_destructor' params\nexport const TableBufferingDestructorParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_buffering_process' params\nexport const TableBufferingProcessParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_function_cardinality' params\nexport const TableFunctionCardinalityParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_function_dynamic_to_string' params\nexport const TableFunctionDynamicToStringParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_function_plan' params\nexport const TableFunctionPlanParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n// Origin: method 'table_function_statistics' params\nexport const TableFunctionStatisticsParamsSchema = schema([\n field(\"request\", binary(), false),\n]);\n\n",
30
+ "// ============================================================================\n// GENERATED by vgi.codegen.ts_types. DO NOT EDIT BY HAND.\n//\n// Generator: python -m vgi.codegen.ts_types v1\n// Content hash: d240510f013b\n//\n// To regenerate:\n// uv run --project ~/Development/vgi-python python scripts/regen_generated.py\n// ============================================================================\n\nimport { encodeASD, decodeASD } from \"../codec/asd.js\";\nimport {\n CatalogAttachResultSchema,\n CatalogContentsResultSchema,\n SchemaContentsSchema,\n} from \"./vgi-protocol-schemas.js\";\nimport type { CatalogAttachResult, CatalogContentsResponse, SchemaContents } from \"./vgi-client.js\";\nexport type { CatalogAttachResult, CatalogContentsResponse, SchemaContents };\n\n// ----------------------------------------------------------------------------\n// CatalogAttachResult (schema: CatalogAttachResultSchema)\n// ----------------------------------------------------------------------------\n\n/** Fields of `CatalogAttachResult` that have a protocol default. */\nexport type CatalogAttachResultDefaultedField =\n | \"attach_opaque_data_required\"\n | \"default_schema\"\n | \"settings\"\n | \"secret_types\"\n | \"attach_catalogs\"\n | \"comment\"\n | \"tags\"\n | \"supports_column_statistics\"\n | \"global_functions\"\n | \"global_function_prefix\"\n | \"supports_catalog_contents\";\n/** `CatalogAttachResult` with every field that has a protocol default optional. */\nexport type CatalogAttachResultInit = Omit<CatalogAttachResult, CatalogAttachResultDefaultedField> & Partial<Pick<CatalogAttachResult, CatalogAttachResultDefaultedField>>;\n\n/** Build a complete `CatalogAttachResult`, filling the protocol defaults, in wire order. */\nexport function buildCatalogAttachResult(init: CatalogAttachResultInit): CatalogAttachResult {\n return {\n attach_opaque_data: init.attach_opaque_data,\n supports_transactions: init.supports_transactions,\n supports_time_travel: init.supports_time_travel,\n catalog_version_frozen: init.catalog_version_frozen,\n catalog_version: init.catalog_version,\n attach_opaque_data_required: init.attach_opaque_data_required ?? true,\n default_schema: init.default_schema ?? \"main\",\n settings: init.settings ?? [],\n secret_types: init.secret_types ?? [],\n attach_catalogs: init.attach_catalogs ?? [],\n comment: init.comment ?? null,\n tags: init.tags ?? {},\n supports_column_statistics: init.supports_column_statistics ?? false,\n global_functions: init.global_functions ?? [],\n global_function_prefix: init.global_function_prefix ?? \"\",\n resolved_data_version: init.resolved_data_version ?? null,\n resolved_implementation_version: init.resolved_implementation_version ?? null,\n supports_catalog_contents: init.supports_catalog_contents ?? false,\n };\n}\n\nexport const encodeCatalogAttachResult = (v: CatalogAttachResult): Uint8Array => encodeASD(CatalogAttachResultSchema, v);\nexport const decodeCatalogAttachResult = (b: Uint8Array): CatalogAttachResult => decodeASD<CatalogAttachResult>(CatalogAttachResultSchema, b);\n\n// ----------------------------------------------------------------------------\n// SchemaContents (schema: SchemaContentsSchema)\n// ----------------------------------------------------------------------------\n\n/** Fields of `SchemaContents` that have a protocol default. */\nexport type SchemaContentsDefaultedField =\n | \"tables\"\n | \"views\"\n | \"scalar_functions\"\n | \"aggregate_functions\"\n | \"table_functions\"\n | \"scalar_macros\"\n | \"table_macros\"\n | \"indexes\";\n/** `SchemaContents` with every field that has a protocol default optional. */\nexport type SchemaContentsInit = Omit<SchemaContents, SchemaContentsDefaultedField> & Partial<Pick<SchemaContents, SchemaContentsDefaultedField>>;\n\n/** Build a complete `SchemaContents`, filling the protocol defaults, in wire order. */\nexport function buildSchemaContents(init: SchemaContentsInit): SchemaContents {\n return {\n path: init.path,\n schema: init.schema,\n tables: init.tables ?? [],\n views: init.views ?? [],\n scalar_functions: init.scalar_functions ?? [],\n aggregate_functions: init.aggregate_functions ?? [],\n table_functions: init.table_functions ?? [],\n scalar_macros: init.scalar_macros ?? [],\n table_macros: init.table_macros ?? [],\n indexes: init.indexes ?? [],\n };\n}\n\nexport const encodeSchemaContents = (v: SchemaContents): Uint8Array => encodeASD(SchemaContentsSchema, v);\nexport const decodeSchemaContents = (b: Uint8Array): SchemaContents => decodeASD<SchemaContents>(SchemaContentsSchema, b);\n\n// ----------------------------------------------------------------------------\n// CatalogContentsResponse (schema: CatalogContentsResultSchema)\n// ----------------------------------------------------------------------------\n\n/** Fields of `CatalogContentsResponse` that have a protocol default. */\nexport type CatalogContentsResponseDefaultedField =\n | \"etag\"\n | \"not_modified\"\n | \"schemas\";\n/** `CatalogContentsResponse` with every field that has a protocol default optional. */\nexport type CatalogContentsResponseInit = Omit<CatalogContentsResponse, CatalogContentsResponseDefaultedField> & Partial<Pick<CatalogContentsResponse, CatalogContentsResponseDefaultedField>>;\n\n/** Build a complete `CatalogContentsResponse`, filling the protocol defaults, in wire order. */\nexport function buildCatalogContentsResponse(init: CatalogContentsResponseInit): CatalogContentsResponse {\n return {\n catalog_version: init.catalog_version,\n etag: init.etag ?? null,\n not_modified: init.not_modified ?? false,\n schemas: init.schemas ?? [],\n };\n}\n\nexport const encodeCatalogContentsResponse = (v: CatalogContentsResponse): Uint8Array => encodeASD(CatalogContentsResultSchema, v);\nexport const decodeCatalogContentsResponse = (b: Uint8Array): CatalogContentsResponse => decodeASD<CatalogContentsResponse>(CatalogContentsResultSchema, b);\n",
31
+ "// ============================================================================\n// GENERATED by vgi.codegen.ts_client. DO NOT EDIT BY HAND.\n//\n// Generator: vgi-gen-ts-client v1\n// Content hash: 5cf87195498c\n//\n// To regenerate:\n// uv run --project ~/Development/vgi-python vgi-gen-ts-client \\\n// > ~/Development/vgi-typescript/src/generated/vgi-client.ts\n// ============================================================================\n\nimport { encodeASD, decodeASD } from \"../codec/asd.js\";\nimport {\n CatalogInfoSchema,\n FunctionInfoSchema,\n IndexInfoSchema,\n MacroInfoSchema,\n SchemaInfoSchema,\n TableInfoSchema,\n ViewInfoSchema,\n} from \"./vgi-protocol-schemas.js\";\n\nexport type ArgumentMonotonicity = \"UNKNOWN\" | \"CONSTANT\" | \"NON_DECREASING\" | \"STRICTLY_INCREASING\" | \"NON_INCREASING\" | \"STRICTLY_DECREASING\";\nexport type DistinctDependence = \"DISTINCT_DEPENDENT\" | \"NOT_DISTINCT_DEPENDENT\";\nexport type FunctionStability = \"CONSISTENT\" | \"VOLATILE\" | \"CONSISTENT_WITHIN_QUERY\";\nexport type FunctionType = \"SCALAR\" | \"TABLE\" | \"TABLE_BUFFERING\" | \"AGGREGATE\";\nexport type IndexConstraintType = \"NONE\" | \"UNIQUE\" | \"PRIMARY\";\nexport type InvocationFunctionType = \"AGGREGATE\" | \"SCALAR\" | \"TABLE\" | \"TABLE_BUFFERING\";\nexport type MacroType = \"SCALAR\" | \"TABLE\";\nexport type NullHandling = \"DEFAULT\" | \"SPECIAL\";\nexport type OnConflict = \"ERROR\" | \"IGNORE\" | \"REPLACE\";\nexport type OrderByDirection = \"ASC\" | \"DESC\";\nexport type OrderByNullOrder = \"NULLS_FIRST\" | \"NULLS_LAST\";\nexport type OrderDependence = \"ORDER_DEPENDENT\" | \"NOT_ORDER_DEPENDENT\";\nexport type OrderPreservation = \"PRESERVES_ORDER\" | \"NO_ORDER_GUARANTEE\" | \"FIXED_ORDER\";\nexport type PartitionKind = \"NOT_PARTITIONED\" | \"SINGLE_VALUE_PARTITIONS\" | \"OVERLAPPING_PARTITIONS\" | \"DISJOINT_PARTITIONS\";\nexport type SchemaObjectType = \"TABLE\" | \"VIEW\" | \"SCALAR_FUNCTION\" | \"TABLE_FUNCTION\" | \"AGGREGATE_FUNCTION\" | \"SCALAR_MACRO\" | \"TABLE_MACRO\" | \"INDEX\";\nexport type TableInOutFunctionInitPhase = \"INPUT\" | \"FINALIZE\" | \"TABLE_BUFFERING\" | \"TABLE_BUFFERING_FINALIZE\";\n\nexport interface CatalogDataVersionRelease {\n version: string;\n released_at?: bigint | null;\n summary: string;\n notes_url?: string | null;\n}\n\nexport interface CatalogInfo {\n name: string;\n implementation_version?: string | null;\n data_version_spec?: string | null;\n attach_option_specs: Uint8Array[];\n releases: CatalogDataVersionRelease[];\n source_url?: string | null;\n}\n\nexport interface SchemaInfo {\n comment?: string | null;\n tags: Record<string, string>;\n attach_opaque_data: Uint8Array;\n path: string[];\n estimated_object_count?: Record<string, number> | null;\n}\n\nexport interface TableInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n columns: Uint8Array;\n not_null_constraints: number[];\n unique_constraints: number[][];\n check_constraints: string[];\n primary_key_constraints: number[][];\n foreign_key_constraints: Uint8Array[];\n write_result_modes: Record<string, string>;\n supports_column_statistics: boolean;\n scan_function?: Uint8Array | null;\n insert_function?: Uint8Array | null;\n update_function?: Uint8Array | null;\n delete_function?: Uint8Array | null;\n cardinality_estimate?: number | null;\n cardinality_max?: number | null;\n column_statistics?: Uint8Array | null;\n bind_result?: Uint8Array | null;\n required_filters: string[][];\n}\n\nexport interface ViewInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n definition: string;\n column_comments: Record<string, string>;\n}\n\nexport interface CatalogExample {\n sql: string;\n description: string;\n expected_output?: string | null;\n}\n\nexport interface FilterFunctionCapability {\n namespace: string;\n name: string;\n version: number;\n}\n\nexport interface RuntimeFilterAlgorithmCapability {\n namespace: string;\n name: string;\n version: number;\n}\n\nexport interface EvaluationContextCapability {\n profile: string;\n provider_fingerprint?: string | null;\n}\n\nexport interface SecretLookupEntry {\n secret_type: string;\n scope?: string | null;\n secret_name?: string | null;\n}\n\nexport interface FunctionInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n function_type: FunctionType;\n arguments: Uint8Array;\n output_schema: Uint8Array;\n parameter_default_values?: /** @record-batch */ Uint8Array | null;\n stability?: FunctionStability | null;\n null_handling?: NullHandling | null;\n argument_monotonicity?: ArgumentMonotonicity[] | null;\n description: string;\n examples: CatalogExample[];\n categories: string[];\n projection_pushdown?: boolean | null;\n filter_pushdown?: boolean | null;\n sampling_pushdown?: boolean | null;\n late_materialization?: boolean | null;\n filter_semantic_profiles: string[];\n additional_filter_functions: FilterFunctionCapability[];\n runtime_filter_algorithms: RuntimeFilterAlgorithmCapability[];\n filter_evaluation_contexts: EvaluationContextCapability[];\n order_preservation?: OrderPreservation | null;\n max_workers?: number | null;\n supports_batch_index: boolean;\n supports_splits: boolean;\n filters_exactly_applied: boolean;\n supports_positions: boolean;\n split_token_ttl_seconds?: number | null;\n partition_kind: PartitionKind;\n order_dependent: OrderDependence;\n distinct_dependent: DistinctDependence;\n supports_window: boolean;\n streaming_partitioned: boolean;\n has_finalize: boolean;\n source_order_dependent: boolean;\n sink_order_dependent: boolean;\n requires_input_batch_index: boolean;\n input_from_args: boolean;\n required_settings: string[];\n required_secrets: SecretLookupEntry[];\n}\n\nexport interface MacroInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n macro_type: MacroType;\n parameters: string[];\n parameter_default_values?: /** @record-batch */ Uint8Array | null;\n definition: string;\n arguments_schema?: /** @arrow-schema */ Uint8Array | null;\n}\n\nexport interface IndexInfo {\n comment?: string | null;\n tags: Record<string, string>;\n name: string;\n schema_path: string[];\n table_name: string;\n index_type: string;\n constraint_type: IndexConstraintType;\n expressions: string[];\n options: Record<string, string>;\n}\n\nexport interface AggregateBindRequest {\n function_name: string;\n arguments: /** @vgi-arguments */ Uint8Array;\n input_schema?: /** @arrow-schema */ Uint8Array | null;\n settings?: /** @record-batch */ Uint8Array | null;\n secrets?: /** @record-batch */ Uint8Array | null;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n argument_names?: (string | null)[] | null;\n}\n\nexport interface AggregateBindResponse {\n output_schema: /** @arrow-schema */ Uint8Array;\n execution_id: Uint8Array;\n}\n\nexport interface AggregateCombineRequest {\n function_name: string;\n execution_id: Uint8Array;\n merge_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateCombineResponse {\n}\n\nexport interface AggregateDestructorRequest {\n function_name: string;\n execution_id: Uint8Array;\n group_ids_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateDestructorResponse {\n}\n\nexport interface AggregateFinalizeRequest {\n function_name: string;\n execution_id: Uint8Array;\n group_ids_batch: Uint8Array;\n output_schema: /** @arrow-schema */ Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateFinalizeResponse {\n result_batch: Uint8Array;\n}\n\nexport interface AggregateStreamingChunkRequest {\n function_name: string;\n execution_id: Uint8Array;\n input_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateStreamingChunkResponse {\n result_batch: Uint8Array;\n}\n\nexport interface AggregateStreamingCloseRequest {\n function_name: string;\n execution_id: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateStreamingCloseResponse {\n}\n\nexport interface AggregateStreamingOpenRequest {\n function_name: string;\n arguments: /** @vgi-arguments */ Uint8Array;\n input_schema: /** @arrow-schema */ Uint8Array;\n partition_key_count: number;\n order_key_count: number;\n output_schema: /** @arrow-schema */ Uint8Array;\n settings?: /** @record-batch */ Uint8Array | null;\n secrets?: /** @record-batch */ Uint8Array | null;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateStreamingOpenResponse {\n execution_id: Uint8Array;\n}\n\nexport interface AggregateUpdateRequest {\n function_name: string;\n execution_id: Uint8Array;\n input_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateUpdateResponse {\n}\n\nexport interface AggregateWindowRequest {\n function_name: string;\n execution_id: Uint8Array;\n partition_id: number;\n rid: number;\n frame_starts: number[];\n frame_ends: number[];\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateWindowResponse {\n result_batch: Uint8Array;\n}\n\nexport interface AggregateWindowBatchRequest {\n function_name: string;\n execution_id: Uint8Array;\n partition_id: number;\n row_idx: number;\n count: number;\n frames_per_row: number[];\n frame_starts: number[];\n frame_ends: number[];\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateWindowBatchResponse {\n result_batch: Uint8Array;\n}\n\nexport interface AggregateWindowDestructorRequest {\n function_name: string;\n execution_id: Uint8Array;\n partition_id: number;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateWindowDestructorResponse {\n}\n\nexport interface AggregateWindowInitRequest {\n function_name: string;\n execution_id: Uint8Array;\n partition_id: number;\n row_count: number;\n partition_batch: Uint8Array;\n output_schema: /** @arrow-schema */ Uint8Array;\n filter_mask: Uint8Array;\n frame_stats: Uint8Array;\n all_valid: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface AggregateWindowInitResponse {\n}\n\nexport interface CopyFromContext {\n format: string;\n file_path: string;\n expected_schema: /** @arrow-schema */ Uint8Array;\n}\n\nexport interface CopyToContext {\n format: string;\n file_path: string;\n}\n\nexport interface BindRequest {\n function_name: string;\n arguments: /** @vgi-arguments */ Uint8Array;\n function_type: InvocationFunctionType;\n input_schema?: /** @arrow-schema */ Uint8Array | null;\n settings?: /** @record-batch */ Uint8Array | null;\n secrets?: /** @record-batch */ Uint8Array | null;\n attach_opaque_data?: Uint8Array | null;\n transaction_opaque_data?: Uint8Array | null;\n resolved_secrets_provided: boolean;\n at_unit?: string | null;\n at_value?: string | null;\n copy_from?: CopyFromContext | null;\n copy_to?: CopyToContext | null;\n schema_path?: string[] | null;\n argument_names?: (string | null)[] | null;\n}\n\nexport interface BindResponse {\n output_schema: /** @arrow-schema */ Uint8Array;\n opaque_data?: Uint8Array | null;\n lookup_secret_types: string[];\n lookup_scopes: string[];\n lookup_names: string[];\n}\n\nexport interface ClientCapabilities {\n engine: string;\n native_formats: string[];\n catalogs: string[];\n can_stream: boolean;\n filter_encodings: string[];\n}\n\nexport interface CatalogAttachRequest {\n name: string;\n options?: /** @record-batch */ Uint8Array | null;\n data_version_spec?: string | null;\n implementation_version?: string | null;\n client_capabilities?: ClientCapabilities | null;\n}\n\nexport interface CatalogAttachResult {\n attach_opaque_data: Uint8Array;\n supports_transactions: boolean;\n supports_time_travel: boolean;\n catalog_version_frozen: boolean;\n catalog_version: number;\n attach_opaque_data_required: boolean;\n default_schema: string;\n settings: Uint8Array[];\n secret_types: Uint8Array[];\n attach_catalogs: Uint8Array[];\n comment?: string | null;\n tags: Record<string, string>;\n supports_column_statistics: boolean;\n global_functions: Uint8Array[];\n global_function_prefix: string;\n resolved_data_version?: string | null;\n resolved_implementation_version?: string | null;\n supports_catalog_contents: boolean;\n}\n\nexport interface CatalogsResponse {\n items: CatalogInfo[];\n}\n\nexport interface SchemaContents {\n path: string[];\n schema: Uint8Array;\n tables: Uint8Array[];\n views: Uint8Array[];\n scalar_functions: Uint8Array[];\n aggregate_functions: Uint8Array[];\n table_functions: Uint8Array[];\n scalar_macros: Uint8Array[];\n table_macros: Uint8Array[];\n indexes: Uint8Array[];\n}\n\nexport interface CatalogContentsResponse {\n catalog_version: number;\n etag?: string | null;\n not_modified: boolean;\n schemas: SchemaContents[];\n}\n\nexport interface CopyFromFormatsResponse {\n items: Uint8Array[];\n}\n\nexport interface CatalogCreateRequest {\n name: string;\n on_conflict: OnConflict;\n options?: /** @record-batch */ Uint8Array | null;\n}\n\nexport interface IndexCreateRequest {\n attach_opaque_data: Uint8Array;\n schema_path: string[];\n name: string;\n table_name: string;\n index_type: string;\n constraint_type: IndexConstraintType;\n expressions: string[];\n on_conflict: OnConflict;\n options: Record<string, string>;\n transaction_opaque_data?: Uint8Array | null;\n}\n\nexport interface IndexesResponse {\n items: IndexInfo[];\n}\n\nexport interface MacroCreateRequest {\n attach_opaque_data: Uint8Array;\n schema_path: string[];\n name: string;\n macro_type: MacroType;\n parameters: string[];\n definition: string;\n on_conflict: OnConflict;\n parameter_default_values?: /** @record-batch */ Uint8Array | null;\n arguments_schema?: /** @arrow-schema */ Uint8Array | null;\n transaction_opaque_data?: Uint8Array | null;\n}\n\nexport interface MacrosResponse {\n items: MacroInfo[];\n}\n\nexport interface FunctionsResponse {\n items: FunctionInfo[];\n}\n\nexport interface TablesResponse {\n items: TableInfo[];\n}\n\nexport interface ViewsResponse {\n items: ViewInfo[];\n}\n\nexport interface SchemasResponse {\n items: SchemaInfo[];\n}\n\nexport interface TableCreateRequest {\n attach_opaque_data: Uint8Array;\n schema_path: string[];\n name: string;\n columns: Uint8Array;\n on_conflict: OnConflict;\n not_null_constraints: number[];\n unique_constraints: number[][];\n check_constraints: string[];\n primary_key_constraints: number[][];\n foreign_key_constraints: Uint8Array[];\n transaction_opaque_data?: Uint8Array | null;\n}\n\nexport interface TransactionBeginResponse {\n transaction_opaque_data?: Uint8Array | null;\n}\n\nexport interface CatalogVersionResponse {\n version: number;\n}\n\nexport interface InitRequest {\n bind_call: BindRequest;\n output_schema: /** @arrow-schema */ Uint8Array;\n bind_opaque_data?: Uint8Array | null;\n projection_ids?: number[] | null;\n pushdown_filters?: /** @record-batch */ Uint8Array | null;\n join_keys?: /** @record-batch */ Uint8Array[] | null;\n split_tokens?: Uint8Array[] | null;\n row_limit?: number | null;\n phase?: TableInOutFunctionInitPhase | null;\n finalize_state_id?: Uint8Array | null;\n execution_id?: Uint8Array | null;\n init_opaque_data?: Uint8Array | null;\n substream_id?: Uint8Array | null;\n order_by_column_name?: string | null;\n order_by_direction?: OrderByDirection | null;\n order_by_null_order?: OrderByNullOrder | null;\n order_by_limit?: number | null;\n tablesample_percentage?: number | null;\n tablesample_seed?: number | null;\n}\n\nexport interface TableBufferingCombineRequest {\n function_name: string;\n execution_id: Uint8Array;\n state_ids: Uint8Array[];\n attach_opaque_data?: Uint8Array | null;\n transaction_id?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface TableBufferingCombineResponse {\n finalize_state_ids: Uint8Array[];\n}\n\nexport interface TableBufferingDestructorRequest {\n function_name: string;\n execution_id: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n transaction_id?: Uint8Array | null;\n schema_path?: string[] | null;\n}\n\nexport interface TableBufferingDestructorResponse {\n}\n\nexport interface TableBufferingProcessRequest {\n function_name: string;\n execution_id: Uint8Array;\n input_batch: Uint8Array;\n attach_opaque_data?: Uint8Array | null;\n transaction_id?: Uint8Array | null;\n batch_index?: number | null;\n schema_path?: string[] | null;\n}\n\nexport interface TableBufferingProcessResponse {\n state_id: Uint8Array;\n}\n\nexport interface TableFunctionCardinalityRequest {\n bind_call: BindRequest;\n bind_opaque_data?: Uint8Array | null;\n}\n\nexport interface TableCardinality {\n estimate?: number | null;\n max?: number | null;\n}\n\nexport interface TableFunctionDynamicToStringRequest {\n bind_call: BindRequest;\n bind_opaque_data?: Uint8Array | null;\n global_execution_id: Uint8Array;\n}\n\nexport interface TableFunctionDynamicToStringResponse {\n keys: string[];\n values: string[];\n}\n\nexport interface TableFunctionPlanRequest {\n bind_call: BindRequest;\n bind_opaque_data?: Uint8Array | null;\n projection_ids?: number[] | null;\n pushdown_filters?: /** @record-batch */ Uint8Array | null;\n join_keys?: /** @record-batch */ Uint8Array[] | null;\n row_limit?: number | null;\n target_split_bytes?: number | null;\n min_splits?: number | null;\n max_splits_per_response?: number | null;\n cursor?: Uint8Array | null;\n refined_filters?: /** @record-batch */ Uint8Array | null;\n filters_complete: boolean;\n start_position?: Uint8Array | null;\n end_position?: Uint8Array | null;\n order_by_column_name?: string | null;\n order_by_direction?: OrderByDirection | null;\n order_by_null_order?: OrderByNullOrder | null;\n order_by_limit?: number | null;\n tablesample_percentage?: number | null;\n tablesample_seed?: number | null;\n}\n\nexport interface ScanSplit {\n payload: Uint8Array;\n token: Uint8Array;\n estimated_rows?: number | null;\n rows_exact: boolean;\n estimated_bytes?: number | null;\n partition_bounds?: /** @record-batch */ Uint8Array | null;\n column_statistics?: Uint8Array | null;\n location_ids?: number[] | null;\n start_position?: Uint8Array | null;\n end_position?: Uint8Array | null;\n}\n\nexport interface PlanResponse {\n splits: ScanSplit[] | Uint8Array[];\n next_cursors?: Uint8Array[] | null;\n execution_id?: Uint8Array | null;\n init_opaque_data?: Uint8Array | null;\n max_workers?: number | null;\n estimated_total_splits?: number | null;\n estimated_total_rows?: number | null;\n estimated_total_bytes?: number | null;\n catalog_version?: number | null;\n scope: string;\n locations?: string[] | null;\n partitioning?: Uint8Array[] | null;\n sort_order?: Uint8Array[] | null;\n cache_max_age_seconds?: number | null;\n start_position?: Uint8Array | null;\n end_position?: Uint8Array | null;\n}\n\nexport interface TableFunctionStatisticsRequest {\n bind_call: BindRequest;\n bind_opaque_data?: Uint8Array | null;\n}\n\n// ----------------------------------------------------------------------------\n// Codec wrappers: turn the typed interfaces above into actual wire bytes.\n// ----------------------------------------------------------------------------\n\nexport const encodeCatalogInfo = (v: CatalogInfo): Uint8Array => encodeASD(CatalogInfoSchema, v);\nexport const decodeCatalogInfo = (b: Uint8Array): CatalogInfo => decodeASD<CatalogInfo>(CatalogInfoSchema, b);\nexport const encodeFunctionInfo = (v: FunctionInfo): Uint8Array => encodeASD(FunctionInfoSchema, v);\nexport const decodeFunctionInfo = (b: Uint8Array): FunctionInfo => decodeASD<FunctionInfo>(FunctionInfoSchema, b);\nexport const encodeIndexInfo = (v: IndexInfo): Uint8Array => encodeASD(IndexInfoSchema, v);\nexport const decodeIndexInfo = (b: Uint8Array): IndexInfo => decodeASD<IndexInfo>(IndexInfoSchema, b);\nexport const encodeMacroInfo = (v: MacroInfo): Uint8Array => encodeASD(MacroInfoSchema, v);\nexport const decodeMacroInfo = (b: Uint8Array): MacroInfo => decodeASD<MacroInfo>(MacroInfoSchema, b);\nexport const encodeSchemaInfo = (v: SchemaInfo): Uint8Array => encodeASD(SchemaInfoSchema, v);\nexport const decodeSchemaInfo = (b: Uint8Array): SchemaInfo => decodeASD<SchemaInfo>(SchemaInfoSchema, b);\nexport const encodeTableInfo = (v: TableInfo): Uint8Array => encodeASD(TableInfoSchema, v);\nexport const decodeTableInfo = (b: Uint8Array): TableInfo => decodeASD<TableInfo>(TableInfoSchema, b);\nexport const encodeViewInfo = (v: ViewInfo): Uint8Array => encodeASD(ViewInfoSchema, v);\nexport const decodeViewInfo = (b: Uint8Array): ViewInfo => decodeASD<ViewInfo>(ViewInfoSchema, b);\n",
32
+ "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// CatalogInterface abstract class with ~35 methods.\n// Matching Python's vgi/catalog/catalog_interface.py\n\nimport { CatalogReadOnlyError } from \"../errors.js\";\nimport { schemaPathsEqual } from \"../schema-path.js\";\n\nexport type AttachOpaqueData = Uint8Array;\nexport type TransactionOpaqueData = Uint8Array;\n\n// Wire-encoded string union (matches Python's CatalogMacroType enum names).\nimport type { MacroType } from \"../generated/vgi-client.js\";\nexport type { MacroType };\n\n// CatalogAttachResult is the generated snake_case wire shape.\n// The `supports_column_statistics` field is a catalog-level opt-in for the\n// catalog_table_column_statistics_get RPC — the catalog_attach handler defaults\n// it to true when unspecified; individual tables still need to set\n// TableInfo.supports_column_statistics before DuckDB will actually call it.\n//\n// `buildCatalogAttachResult` (generated, src/generated/vgi-protocol-types.ts)\n// fills every other field the protocol defaults, exactly as vgi-python's\n// dataclass does — so an appended column needs no hand-written default here.\nimport type { CatalogAttachResult, CatalogAttachResultInit } from \"../generated/vgi-protocol-types.js\";\nexport type { CatalogAttachResult, CatalogAttachResultInit };\nexport { buildCatalogAttachResult } from \"../generated/vgi-protocol-types.js\";\n\n// ============================================================================\n// Serializable info types\n// ============================================================================\n\n// These serialize themselves to Arrow IPC bytes for catalog responses\n\n// SchemaInfo is the generated interface (snake_case wire shape).\n// Codecs live in ../generated/vgi-client.ts — no class needed.\nimport type { SchemaInfo } from \"../generated/vgi-client.js\";\nexport type { SchemaInfo };\nexport { encodeSchemaInfo, decodeSchemaInfo } from \"../generated/vgi-client.js\";\n\n// CatalogInfo — advertised by workers per catalog (name + versions).\nimport type { CatalogInfo } from \"../generated/vgi-client.js\";\nexport type { CatalogInfo };\nexport { encodeCatalogInfo, decodeCatalogInfo } from \"../generated/vgi-client.js\";\n\n// TableInfo is the generated interface (snake_case wire shape).\nimport type { TableInfo } from \"../generated/vgi-client.js\";\nexport type { TableInfo };\nexport { encodeTableInfo, decodeTableInfo } from \"../generated/vgi-client.js\";\n\n// ViewInfo is the generated interface (snake_case wire shape).\nimport type { ViewInfo } from \"../generated/vgi-client.js\";\nexport type { ViewInfo };\nexport { encodeViewInfo, decodeViewInfo } from \"../generated/vgi-client.js\";\n\n// FunctionInfo is the generated interface (snake_case wire shape).\n// FunctionInfoOptions was the camelCase constructor bag for the old class —\n// callers now use object literals matching the wire shape directly.\nimport type { FunctionInfo } from \"../generated/vgi-client.js\";\nexport type { FunctionInfo };\n/** @deprecated Use the FunctionInfo interface (snake_case) directly. */\nexport type FunctionInfoOptions = FunctionInfo;\nexport { encodeFunctionInfo, decodeFunctionInfo } from \"../generated/vgi-client.js\";\n\n// MacroInfo is the generated interface (snake_case wire shape).\nimport type { MacroInfo } from \"../generated/vgi-client.js\";\nexport type { MacroInfo };\nexport { encodeMacroInfo, decodeMacroInfo } from \"../generated/vgi-client.js\";\n\n// IndexInfo wire shape — declarative indexes a worker advertises and DuckDB\n// surfaces under duckdb_indexes(). Constraint type maps to is_unique /\n// is_primary on the DuckDB side.\nimport type { IndexInfo, IndexConstraintType } from \"../generated/vgi-client.js\";\nexport type { IndexInfo, IndexConstraintType };\nexport { encodeIndexInfo, decodeIndexInfo } from \"../generated/vgi-client.js\";\n\n// CopyFromFormatInfo — a custom `COPY ... FROM` format a VGI catalog advertises.\n// The wire shape matches the generated CopyFromFormatInfoSchema; the codegen\n// does not emit a dedicated interface/encoder for it (it's an items-list type\n// carried as binary), so we declare the snake_case interface here and reuse the\n// generic ASD codec with the generated schema. Mirrors vgi-python's\n// catalog_interface.CopyFromFormatInfo.\nimport { encodeASD } from \"../codec/asd.js\";\nimport {\n AttachCatalogInfoSchema,\n CopyFromFormatInfoSchema,\n} from \"../generated/vgi-protocol-schemas.js\";\n\nexport interface CopyFromFormatInfo {\n /** Free-text comment (CopyFromFunction's `copyFromComment`). */\n comment?: string | null;\n /** Function/format tags. */\n tags: Record<string, string>;\n /** The `FORMAT` identifier users type (single global namespace). */\n format_name: string;\n /** Registered name of the worker function that performs the read. */\n handler: string;\n /**\n * Serialized Arrow schema of the format's options (same encoding as\n * `FunctionInfo.arguments`), each field carrying type / `vgi_doc` description.\n */\n options: Uint8Array;\n /** `\"from\"` / `\"to\"` / `\"both\"` — the COPY direction this format serves. */\n direction: string;\n /** Intrinsic documentation from the handler's description. */\n description: string;\n /**\n * COPY ... TO only — when true the writer requires rows in source order, so\n * the extension uses a single-threaded sink (`REGULAR_COPY_TO_FILE`) instead\n * of the default parallel sharded write. Set via `Meta.sinkOrderDependent`\n * on a CopyToFunction; always false for readers. Mirrors vgi-python's\n * `CopyFromFormatInfo.ordered`.\n */\n ordered: boolean;\n}\n\n/** Encode a CopyFromFormatInfo to Arrow IPC bytes (single-row batch). */\nexport const encodeCopyFromFormatInfo = (v: CopyFromFormatInfo): Uint8Array =>\n encodeASD(CopyFromFormatInfoSchema, {\n comment: v.comment ?? null,\n tags: v.tags ?? {},\n format_name: v.format_name,\n handler: v.handler,\n options: v.options,\n direction: v.direction ?? \"from\",\n description: v.description ?? \"\",\n ordered: v.ordered ?? false,\n });\n\n/**\n * A companion catalog the client should ATTACH when this VGI catalog attaches\n * (lakehouse federation). Serialized into `CatalogAttachResult.attach_catalogs`;\n * the C++ VGI extension attaches each at VGI-attach time so multi-branch\n * catalog-table branches can resolve tables in a companion DuckLake / Iceberg /\n * Postgres / DuckDB.\n */\nexport interface AttachCatalogInfo {\n /** ATTACH alias; also a catalog-table ScanBranch's `sourceCatalog`. */\n alias: string;\n /** ATTACH target — a path or DSN (e.g. `ducklake:sqlite:/data/meta.sqlite`). */\n target: string;\n /** DuckDB db type; empty => inferred from the target scheme prefix. */\n db_type?: string;\n /** Extra ATTACH options forwarded verbatim (e.g. DuckLake DATA_PATH). */\n options?: Record<string, string>;\n /** Attach hidden (excluded from duckdb_databases()); still resolvable. */\n hidden?: boolean;\n /** When true, attach failure fails the whole VGI ATTACH. */\n required?: boolean;\n /** Optional named secret to inject into the companion's ATTACH options. */\n secret_ref?: string;\n}\n\n/** Encode an AttachCatalogInfo to Arrow IPC bytes (single-row batch). */\nexport const encodeAttachCatalogInfo = (v: AttachCatalogInfo): Uint8Array =>\n encodeASD(AttachCatalogInfoSchema, {\n alias: v.alias,\n target: v.target,\n db_type: v.db_type ?? \"\",\n options: v.options ?? {},\n hidden: v.hidden ?? false,\n required: v.required ?? false,\n secret_ref: v.secret_ref ?? \"\",\n });\n\n// ============================================================================\n// ScanFunctionResult — typed result for catalog_table_scan_function_get.\n// Mirrors vgi-python's ScanFunctionResult (catalog_interface.py:380).\n// ============================================================================\n\nimport { deserializeBatch, serializeBatch, batchFromColumns } from \"../util/arrow/index.js\";\nimport { schema as schema_, field as field_, type VgiDataType, type VgiField } from \"../arrow/index.js\";\nimport { toUint8Array } from \"../util/bytes.js\";\nimport { ScanBranchSchema, ScanFunctionResultSchema } from \"../generated/vgi-protocol-schemas.js\";\n\n/**\n * Result from `tableScanFunctionGet` — tells the VGI DuckDB extension which\n * DuckDB function to call to obtain the data for a table.\n */\nexport interface ScanFunctionResult {\n /** The DuckDB function to call (e.g. \"read_parquet\"). */\n functionName: string;\n /** Positional arguments, decoded from the inner Arrow batch. */\n positionalArguments: unknown[];\n /** Named arguments, decoded from the inner Arrow batch. */\n namedArguments: Record<string, unknown>;\n /** DuckDB extensions to load before calling the function. */\n requiredExtensions: string[];\n /**\n * Catalog schema path `functionName` is registered in (protocol 2.0.0). A function\n * name is unique only within a schema, so a client that doesn't know this\n * cannot tell which implementation a colliding name refers to — set it\n * whenever the resolving code already knows the schema. `null` for a\n * pre-1.5.0 peer, or when the resolved function is a native DuckDB function\n * with no VGI-side schema of its own (e.g. `read_parquet`).\n */\n schemaPath: string[] | null;\n}\n\n/**\n * Encode a ScanFunctionResult wire record — the single-row batch shape\n * `{ function_name, arguments, required_extensions, schema_path }` that\n * `catalog_table_scan_function_get` returns and that a function-backed table\n * inlines into `TableInfo.scan_function`.\n *\n * It exists so there is exactly one place that names those columns. The\n * inline-scan path used to restate the schema locally even though codegen\n * emits it; a hand-written wire schema is how four SDKs ended up disagreeing\n * about which columns were binary and which were large_binary.\n *\n * `argumentsBytes` is the already-serialized inner arguments batch (one column\n * per argument: `arg_<index>` positional, bare name for named).\n *\n * `schemaPath` (protocol 2.0.0) identifies the schema that registers `functionName`;\n * leave it null when the caller has no VGI-side schema to report.\n */\nexport function encodeScanFunctionResult(\n functionName: string,\n argumentsBytes: Uint8Array,\n requiredExtensions: string[] = [],\n schemaPath: string[] | null = null,\n): Uint8Array {\n return serializeBatch(\n batchFromColumns(\n {\n function_name: [functionName],\n arguments: [argumentsBytes],\n required_extensions: [requiredExtensions],\n schema_path: [schemaPath],\n },\n ScanFunctionResultSchema as any,\n ),\n );\n}\n\n/**\n * Decode a ScanFunctionResult from a wire-shape inner result dict.\n *\n * The wire shape (per ScanFunctionResultSchema) is\n * `{ function_name: utf8, arguments: binary, required_extensions: list<utf8>,\n * schema_path: list<utf8>? }`, where `arguments` is a serialized single-row batch\n * with one column per argument: `arg_<index>` for positional args, the bare\n * name for named args.\n */\nexport function decodeScanFunctionResult(inner: Record<string, unknown>): ScanFunctionResult {\n const argsBytes = inner.arguments;\n const positionalArguments: unknown[] = [];\n const namedArguments: Record<string, unknown> = {};\n\n if (argsBytes != null) {\n const batch = deserializeBatch(toUint8Array(argsBytes));\n for (const field of batch.schema.fields) {\n const col = batch.getChild(field.name);\n const value = col ? col.get(0) : null;\n if (field.name.startsWith(\"arg_\")) {\n const idx = parseInt(field.name.slice(4), 10);\n while (positionalArguments.length <= idx) positionalArguments.push(null);\n positionalArguments[idx] = value;\n } else {\n namedArguments[field.name] = value;\n }\n }\n }\n\n const exts = inner.required_extensions;\n const requiredExtensions: string[] = exts == null\n ? []\n : (Array.isArray(exts) ? exts : [...(exts as Iterable<unknown>)])\n .filter((v) => v != null)\n .map(String);\n\n return {\n functionName: String(inner.function_name ?? \"\"),\n positionalArguments,\n namedArguments,\n requiredExtensions,\n // Absent for a pre-1.5.0 peer — the column itself won't be on the wire in\n // that case, which reads the same as \"present but null\".\n schemaPath: inner.schema_path == null\n ? null\n : (Array.isArray(inner.schema_path) ? inner.schema_path : [...(inner.schema_path as Iterable<unknown>)])\n .filter((value) => value != null)\n .map(String),\n };\n}\n\n/**\n * Synthesise a one-branch `ScanBranchesResult` wire dict from a legacy\n * `tableScanFunctionGet` wire result. Mirrors vgi-python's default\n * `table_scan_branches_get` (catalog_interface.py): a single-source worker is\n * automatically compatible with the branches-aware C++ side.\n *\n * Each branch is its own IPC stream carried in a `list<binary>` column. The\n * legacy result's `arguments` field is already the nested-IPC form\n * `ScanBranch` expects, so it passes through untouched.\n */\nexport function singleBranchResult(\n legacy: {\n function_name: string;\n arguments: unknown;\n required_extensions?: string[];\n schema_path?: string[] | null;\n },\n): { branches: Uint8Array[]; required_extensions: string[] } {\n return {\n branches: [\n encodeScanBranch({\n function_name: legacy.function_name,\n arguments: toUint8Array(legacy.arguments),\n // This shim has no independent way to know the function's own schema;\n // propagate whatever `tableScanFunctionGet` already resolved rather\n // than dropping a value the legacy response carries.\n schema_path: legacy.schema_path ?? null,\n }),\n ],\n required_extensions: legacy.required_extensions ?? [],\n };\n}\n\n/**\n * The ONE place `ScanBranch`'s columns are named.\n *\n * Both branch builders used to carry their own copy of this key list, and both\n * copies were missing `format_name` / `format_locations` after those fields\n * were added to the schema. `format_locations` is a LIST, and Arrow's assembler\n * dereferences a list's `children[0]` while writing, so the omission did not\n * degrade anything — it killed every scan through those builders with\n * \"Cannot read properties of undefined (reading 'slice')\", including tables\n * that predated format branches entirely. One key list is the fix; the\n * completeness test in src/__tests__ pins it against ScanBranchSchema.\n *\n * Every column the schema declares must appear here, null included.\n */\nfunction encodeScanBranch(cols: {\n function_name: string;\n arguments: Uint8Array;\n branch_filter?: string | null;\n writable?: boolean;\n source_catalog?: string | null;\n source_schema_path?: string[] | null;\n source_table?: string | null;\n format_name?: string | null;\n format_locations?: string[] | null;\n format_options?: Uint8Array | null;\n schema_path?: string[] | null;\n}): Uint8Array {\n return serializeBatch(\n batchFromColumns(\n {\n function_name: [cols.function_name],\n arguments: [cols.arguments],\n branch_filter: [cols.branch_filter ?? null],\n writable: [cols.writable ?? false],\n source_catalog: [cols.source_catalog ?? null],\n source_schema_path: [cols.source_schema_path ?? null],\n source_table: [cols.source_table ?? null],\n format_name: [cols.format_name ?? null],\n format_locations: [cols.format_locations ?? null],\n format_options: [cols.format_options ?? null],\n schema_path: [cols.schema_path ?? null],\n },\n ScanBranchSchema as any,\n ),\n );\n}\n\n/**\n * One physical source backing a multi-branch scan, in the shape the\n * `buildScanBranchesResult` helper consumes. Mirrors vgi-python's\n * `ScanBranch` (catalog_interface.py).\n *\n * Each scalar argument carries an explicit Arrow `type` so the nested\n * arguments batch is built with the wire type the C++ binder expects\n * (e.g. utf8 for file paths, int64 for counts).\n */\nexport interface ScanBranchInput {\n /** DuckDB function to call for this branch (e.g. \"sequence\", \"read_parquet\"). */\n functionName: string;\n /** Positional scalar arguments, each with its Arrow type. */\n positionalArguments?: { value: unknown; type: VgiDataType }[];\n /** Named scalar arguments, each with its Arrow type. */\n namedArguments?: Record<string, { value: unknown; type: VgiDataType }>;\n /** Optional SQL filter text AND'd into every scan of this branch. */\n branchFilter?: string | null;\n /** Declares this branch as the INSERT target (at most one per table). */\n writable?: boolean;\n /** Custom file FORMAT this branch reads, for a format-backed branch. */\n formatName?: string | null;\n /** Locations the format branch reads. */\n formatLocations?: string[] | null;\n /** Reader options for a format branch, as a 1-row IPC batch whose COLUMN\n * NAMES are the option names — the same shape `arguments` uses, because an\n * option value may be any Arrow type. These BECOME the reader's named\n * arguments, so without them a format branch cannot pass its reader a\n * delimiter, a header flag, or anything else. */\n formatOptions?: Uint8Array | null;\n /**\n * Catalog-table branch (lakehouse federation): leave `functionName` empty and\n * set these to scan the base table\n * `sourceCatalog.sourceSchemaPath.sourceTable` in a companion catalog instead of\n * calling a table function.\n */\n sourceCatalog?: string | null;\n sourceSchemaPath?: string[] | null;\n sourceTable?: string | null;\n /**\n * Function branch only — the catalog schema that registers `functionName`\n * (protocol 2.0.0). Without it a client has to guess (the table's own\n * schema, then the catalog's default schema) which implementation\n * `functionName` refers to when the same name is registered in more than\n * one schema. Leave unset for a catalog-table or FORMAT branch, and for a\n * branch that delegates straight to a native DuckDB function\n * (`read_parquet`, `read_csv_auto`, `iceberg_scan`, …) — neither has a\n * VGI-side schema of its own to report, which is why the field is optional\n * rather than required. Not to be confused with `sourceSchemaPath` above, which\n * names a catalog-table branch's *source table's* schema.\n */\n schemaPath?: string[] | null;\n}\n\n/**\n * Serialize a single branch's arguments to the nested-IPC form `ScanBranch`\n * expects: a 1-row batch with one column per argument — `arg_<index>` for\n * positional args, the bare name for named args. Mirrors Python's\n * `ScanBranch.to_row_dict` argument handling.\n */\n/**\n * Encode a format branch's reader options.\n *\n * Same shape as a branch's `arguments` blob — a 1-row batch whose COLUMN NAMES\n * are the option names — because an option value may be any Arrow type, so no\n * static schema could describe the map. Exported because a worker building a\n * format branch needs it and has no other way to produce those bytes.\n */\nexport function encodeFormatOptions(\n options: Record<string, { value: unknown; type: VgiDataType }>,\n): Uint8Array {\n const fields: VgiField[] = [];\n const values: Record<string, unknown[]> = {};\n for (const [name, arg] of Object.entries(options)) {\n fields.push(field_(name, arg.type, true));\n values[name] = [arg.value];\n }\n return serializeBatch(batchFromColumns(values, schema_(fields)));\n}\n\nfunction serializeBranchArguments(branch: ScanBranchInput): Uint8Array {\n const fields: VgiField[] = [];\n const values: Record<string, unknown[]> = {};\n\n const positional = branch.positionalArguments ?? [];\n positional.forEach((arg, index) => {\n const name = `arg_${index}`;\n fields.push(field_(name, arg.type, true));\n values[name] = [arg.value];\n });\n\n for (const [name, arg] of Object.entries(branch.namedArguments ?? {})) {\n fields.push(field_(name, arg.type, true));\n values[name] = [arg.value];\n }\n\n const batchSchema = schema_(fields);\n // batchFromColumns handles the zero-column case by producing a 1-row\n // empty batch — same as Python's RecordBatch.from_pylist([{}]).\n return serializeBatch(batchFromColumns(values, batchSchema));\n}\n\n/**\n * Build a multi-branch `ScanBranchesResult` wire dict from explicit branch\n * definitions. Each branch becomes its own 1-row `ScanBranchSchema` IPC\n * stream carried in the `branches` list<binary> column. Mirrors vgi-python's\n * `ScanBranchesResult` construction in the test fixture's\n * `table_scan_branches_get`.\n *\n * An empty `branches` list is serialized verbatim — the C++ side loud-fails\n * on it (that asymmetry is exercised by multi_branch_empty_branches.test).\n */\nexport function buildScanBranchesResult(\n branches: ScanBranchInput[],\n requiredExtensions: string[] = [],\n): { branches: Uint8Array[]; required_extensions: string[] } {\n const serializedBranches = branches.map((branch) =>\n encodeScanBranch({\n function_name: branch.functionName,\n arguments: serializeBranchArguments(branch),\n branch_filter: branch.branchFilter,\n writable: branch.writable,\n source_catalog: branch.sourceCatalog,\n source_schema_path: branch.sourceSchemaPath,\n source_table: branch.sourceTable,\n format_name: branch.formatName,\n format_locations: branch.formatLocations,\n format_options: branch.formatOptions,\n schema_path: branch.schemaPath,\n }),\n );\n return {\n branches: serializedBranches,\n required_extensions: requiredExtensions,\n };\n}\n\n// ============================================================================\n// catalog_contents\n// ============================================================================\n\n/**\n * One schema and everything in it, as returned by\n * `CatalogInterface.catalogContents` (vgi-python's `SchemaContentsInfo`).\n *\n * Each kind is complete: an empty list means the schema has none of that kind.\n * The `catalog_contents` handler encodes every item with the same encoder the\n * matching per-schema RPC uses, so the items are byte-for-byte what\n * `catalog_schemas` / `catalog_schema_contents_*` would return.\n */\nexport interface SchemaContentsInfo {\n schema: SchemaInfo;\n tables: TableInfo[];\n views: ViewInfo[];\n scalar_functions: FunctionInfo[];\n aggregate_functions: FunctionInfo[];\n table_functions: FunctionInfo[];\n scalar_macros: MacroInfo[];\n table_macros: MacroInfo[];\n indexes: IndexInfo[];\n}\n\n/**\n * What `CatalogInterface.catalogContents` returns: a snapshot, or \"not\n * modified\" (vgi-python's `CatalogContentsResult`).\n *\n * - `schemas`: one `SchemaContentsInfo` per schema. Must be empty (or absent)\n * when `not_modified` is set.\n * - `etag`: opaque validator for this snapshot (a generation counter, schema\n * version, git sha, ...). The client sends it back as `if_none_match`.\n * Null/absent means the catalog does not revalidate -- unless it opts in to\n * the framework's content hash with `catalogContentsEtag = \"content-hash\"`.\n * - `not_modified`: true when the request's `if_none_match` equals the\n * current etag, so the catalog skipped building the snapshot. Requires\n * `etag` (the matching validator).\n */\nexport interface CatalogContentsResult {\n schemas?: SchemaContentsInfo[];\n etag?: string | null;\n not_modified?: boolean;\n}\n\n// ============================================================================\n// CatalogInterface abstract class\n// ============================================================================\n\n/**\n * Catalog method return type — sync `T` or `Promise<T>`. The framework's\n * dispatch handlers `await` every catalog call, so async overrides work\n * out of the box. Default impls return sync values.\n */\ntype Awaitable<T> = T | Promise<T>;\n\nfunction isPromise<T>(v: Awaitable<T>): v is Promise<T> {\n return v != null && typeof (v as any).then === \"function\";\n}\n\nexport abstract class CatalogInterface {\n /**\n * Opt-in framework etag for `catalog_contents`. `\"content-hash\"`: when\n * `catalogContents` returns no etag of its own, the worker uses the hex\n * SHA-256 of the serialized snapshot (`catalogContentsDigest`) as the etag\n * and turns a matching `if_none_match` into `not_modified` (it still builds\n * the snapshot, but saves the transfer and the client's decode). `null`\n * (default): no etag unless the catalog returns one. Off by default because\n * for a catalog whose version is not frozen the client would revalidate with\n * a full build on every transaction instead of a cheap `catalog_version`\n * poll. Mirrors vgi-python's `catalog_contents_etag`.\n */\n catalogContentsEtag: \"content-hash\" | null = null;\n\n /**\n * Whether `catalogContents` depends only on `version()`: not on the attach\n * (`attach_opaque_data`, attach options), the caller's identity, or anything\n * else. Together with `catalogVersionFrozen`, it lets the worker build the\n * `catalog_contents` response once per (catalog, version) and serve the same\n * serialized bytes to every caller. Default false.\n *\n * `ReadOnlyCatalogInterface` sets it (its items carry a fixed attach id,\n * like vgi-python's), unless its `perAttachItemIds` opt-in is on. A\n * subclass whose contents vary per caller or attach option sets it false.\n */\n catalogContentsAttachIndependent = false;\n\n /**\n * Declares that `version()` never changes for this catalog instance (the\n * attach result's `catalog_version_frozen`). Only the `catalog_contents`\n * worker cache reads it. `ReadOnlyCatalogInterface` sets it.\n */\n catalogVersionFrozen = false;\n\n /**\n * Which catalog an `attach_opaque_data` belongs to, or null if unknown.\n *\n * Two catalogs served by one worker may declare the same schema *and*\n * function name, in which case the attachment is the only thing that tells\n * them apart — the bind path uses this to scope function resolution. The\n * default answers from `catalogs()` when this interface owns exactly one,\n * which is right for every single-catalog implementation; the composite\n * overrides it to route by its backend index byte.\n */\n catalogNameForAttach(_attachOpaqueData: Uint8Array): string | null {\n const names = this.catalogs();\n return names.length === 1 ? names[0] : null;\n }\n\n // Required overrides\n abstract catalogs(): string[];\n /**\n * Attach this catalog. The framework already validates ATTACH options\n * (name + type) against the specs the worker advertises in\n * `catalogsInfo().attach_option_specs`, so `options` arrives as a\n * validated, decoded `{name: value}` dict with typed column values.\n * Use `{}` if no options were supplied.\n */\n abstract attach(\n name: string,\n options?: Record<string, unknown>,\n dataVersionSpec?: string | null,\n implementationVersion?: string | null,\n ): Awaitable<CatalogAttachResult>;\n /**\n * List the catalogs this worker exposes with their version metadata. The\n * `implementation_version` / `data_version_spec` come from the CatalogInfo\n * returned by the read-only catalogs() signature below — a versioned worker\n * overrides `catalogs()` / `catalogsInfo()` to advertise real values; the\n * default derives them from the registered descriptor(s).\n */\n catalogsInfo?(): Awaitable<import(\"../generated/vgi-client.js\").CatalogInfo[]>;\n abstract detach(attachOpaqueData: AttachOpaqueData): Awaitable<void>;\n abstract version(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<number>;\n abstract schemas(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<SchemaInfo[]>;\n\n // Default implementations (throw CatalogReadOnlyError)\n create(name: string, onConflict: string, options?: any): Awaitable<void> {\n throw new CatalogReadOnlyError(\"create\");\n }\n drop(name: string): Awaitable<void> {\n throw new CatalogReadOnlyError(\"drop\");\n }\n schemaGet(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<SchemaInfo | null> {\n const all = this.schemas(attachOpaqueData, transactionOpaqueData);\n if (isPromise(all)) {\n return all.then((arr) => arr.find((s) => schemaPathsEqual(s.path, path)) ?? null);\n }\n return all.find((s) => schemaPathsEqual(s.path, path)) ?? null;\n }\n schemaCreate(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n comment?: string | null,\n tags?: any,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"schema_create\");\n }\n schemaDrop(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n ignoreNotFound?: boolean,\n cascade?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"schema_drop\");\n }\n schemaContentsTables(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<TableInfo[]> {\n return [];\n }\n schemaContentsViews(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<ViewInfo[]> {\n return [];\n }\n schemaContentsFunctions(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n type: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<FunctionInfo[]> {\n return [];\n }\n tableGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n atUnit?: string,\n atValue?: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<TableInfo | null> {\n return null;\n }\n tableCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columns: Uint8Array,\n onConflict: string,\n notNullConstraints?: number[],\n uniqueConstraints?: number[][],\n checkConstraints?: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_create\");\n }\n tableDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_drop\");\n }\n tableScanFunctionGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n atUnit?: string,\n atValue?: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<any> {\n throw new CatalogReadOnlyError(\"table_scan_function_get\");\n }\n /**\n * Return the scan branches for a (possibly multi-source) table. Default\n * delegates to `tableScanFunctionGet` and wraps the single result as a\n * one-branch list, so every single-source catalog is compatible with the\n * branches-aware C++ extension. Override for genuine multi-source tables.\n */\n tableScanBranchesGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n atUnit?: string,\n atValue?: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<any> {\n const legacy = this.tableScanFunctionGet(\n attachOpaqueData, schemaPath, name, atUnit, atValue, transactionOpaqueData,\n );\n return isPromise(legacy)\n ? legacy.then((r) => singleBranchResult(r))\n : singleBranchResult(legacy);\n }\n /**\n * Return serialized column statistics for a table, or null if none are\n * available. The result is the IPC bytes of a ColumnStatistics RecordBatch\n * (see src/util/statistics.ts for the schema) wrapped with an optional\n * cache TTL. Callers typically override this to pull stats from a\n * descriptor. Returning null signals \"no stats\" so DuckDB falls back to\n * the function-level `table_function_statistics` path.\n */\n tableColumnStatisticsGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Awaitable<{ bytes: Uint8Array; cacheMaxAgeSeconds: number | null } | null> {\n return null;\n }\n tableCommentSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n comment?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_comment_set\");\n }\n tableRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_rename\");\n }\n tableColumnAdd(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n columnType: string,\n defaultValue?: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_add\");\n }\n tableColumnDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_drop\");\n }\n tableColumnRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_rename\");\n }\n tableColumnDefaultSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n defaultValue: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_default_set\");\n }\n tableColumnDefaultDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_default_drop\");\n }\n tableColumnTypeChange(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n newType: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_column_type_change\");\n }\n tableNotNullSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_not_null_set\");\n }\n tableNotNullDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"table_not_null_drop\");\n }\n viewGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<ViewInfo | null> {\n return null;\n }\n viewCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n definition: string,\n onConflict: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"view_create\");\n }\n viewDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"view_drop\");\n }\n viewRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"view_rename\");\n }\n viewCommentSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n comment?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"view_comment_set\");\n }\n macroGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<MacroInfo | null> {\n return null;\n }\n macroCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n macroType: MacroType,\n parameters: string[],\n definition: string,\n onConflict: string,\n parameterDefaultValues?: Uint8Array | null,\n /**\n * Optional Arrow schema (one nullable field per parameter, in `parameters`\n * order) serialized as IPC bytes, carrying per-parameter descriptions via the\n * `vgi_doc` field metadata key. `null`/omitted when no per-parameter docs are\n * supplied. Build with `macroArgumentsSchema` + `serializeSchema`.\n */\n argumentsSchema?: Uint8Array | null,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"macro_create\");\n }\n macroDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<void> {\n throw new CatalogReadOnlyError(\"macro_drop\");\n }\n schemaContentsMacros(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n type: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<MacroInfo[]> {\n return [];\n }\n schemaContentsIndexes(\n attachOpaqueData: AttachOpaqueData,\n path: string[],\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<IndexInfo[]> {\n return [];\n }\n indexGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[],\n name: string,\n transactionOpaqueData?: TransactionOpaqueData\n ): Awaitable<IndexInfo | null> {\n return null;\n }\n /**\n * List custom `COPY ... FROM` formats advertised by this catalog. Catalog-level\n * (not schema-scoped). The default returns an empty list, so catalogs that\n * don't define COPY formats are unaffected. The VGI extension treats an empty\n * list (or a not-implemented method) as \"no custom formats\". Mirrors\n * vgi-python's `CatalogInterface.copy_from_formats`.\n */\n copyFromFormats(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Awaitable<CopyFromFormatInfo[]> {\n return [];\n }\n /**\n * Every schema and all of its contents, for the `catalog_contents` RPC.\n *\n * Served only to a client whose attach result set\n * `supports_catalog_contents` (ReadOnlyCatalogInterface does). The default\n * composes `schemas()` with the per-kind `schemaContents*()` calls, skipping\n * a kind whose `estimated_object_count` is exactly 0 (a hard guarantee), and\n * returns no etag -- so any catalog can serve it without new code. It runs\n * with no transaction: the client caches the answer for the whole attach.\n *\n * Override it to build the snapshot more cheaply, or to revalidate: return\n * an `etag` with the contents, and when `ifNoneMatch` equals the current\n * etag return `{ etag, not_modified: true }` *before* building anything.\n * Mirrors vgi-python's `CatalogInterface.catalog_contents`.\n *\n * @param ifNoneMatch The etag of the snapshot the client already holds, or\n * null.\n * @returns One `SchemaContentsInfo` per schema, in `schemas()` order (the\n * handler sorts parents before children), plus its etag -- or\n * `not_modified`.\n */\n async catalogContents(\n attachOpaqueData: AttachOpaqueData,\n _ifNoneMatch?: string | null,\n ): Promise<CatalogContentsResult> {\n // The default has no etag, so it never revalidates and ignores ifNoneMatch.\n const schemas = await this.schemas(attachOpaqueData, undefined);\n const contents = await Promise.all(\n schemas.map(async (schema): Promise<SchemaContentsInfo> => {\n const counts = schema.estimated_object_count ?? {};\n const path = schema.path;\n // A missing count is unknown, never zero: only an explicit 0 skips.\n const kind = async <T>(countKey: string, list: () => Awaitable<T[]>): Promise<T[]> =>\n (counts[countKey] ?? 1) === 0 ? [] : [...(await list())];\n const [tables, views, scalarFunctions, aggregateFunctions, tableFunctions, scalarMacros, tableMacros, indexes] =\n await Promise.all([\n kind(\"table\", () => this.schemaContentsTables(attachOpaqueData, path)),\n kind(\"view\", () => this.schemaContentsViews(attachOpaqueData, path)),\n kind(\"scalar_function\", () => this.schemaContentsFunctions(attachOpaqueData, path, \"scalar_function\")),\n kind(\"aggregate_function\", () => this.schemaContentsFunctions(attachOpaqueData, path, \"aggregate_function\")),\n kind(\"table_function\", () => this.schemaContentsFunctions(attachOpaqueData, path, \"table_function\")),\n kind(\"macro\", () => this.schemaContentsMacros(attachOpaqueData, path, \"scalar_macro\")),\n kind(\"macro\", () => this.schemaContentsMacros(attachOpaqueData, path, \"table_macro\")),\n kind(\"index\", () => this.schemaContentsIndexes(attachOpaqueData, path)),\n ]);\n return {\n schema,\n tables: tables as TableInfo[],\n views: views as ViewInfo[],\n scalar_functions: scalarFunctions as FunctionInfo[],\n aggregate_functions: aggregateFunctions as FunctionInfo[],\n table_functions: tableFunctions as FunctionInfo[],\n scalar_macros: scalarMacros as MacroInfo[],\n table_macros: tableMacros as MacroInfo[],\n indexes: indexes as IndexInfo[],\n };\n }),\n );\n return { schemas: contents };\n }\n\n /**\n * Whether the worker may build `catalog_contents` once per (catalog\n * instance, version) and reuse the serialized response for every caller:\n * `catalogContentsAttachIndependent && catalogVersionFrozen` by default.\n */\n catalogContentsCacheable(): boolean {\n return this.catalogContentsAttachIndependent && this.catalogVersionFrozen;\n }\n\n /**\n * The catalog that answers `catalog_contents` for this attach: whose\n * `catalogContentsEtag` / `catalogContentsAttachIndependent` /\n * `catalogVersionFrozen` the handler honours and whose instance keys the\n * worker cache. `this`, except for a composite, which routes to its backend.\n */\n catalogContentsOwner(_attachOpaqueData: AttachOpaqueData): CatalogInterface {\n return this;\n }\n transactionBegin(attachOpaqueData: AttachOpaqueData): Awaitable<Uint8Array | null> {\n return null;\n }\n transactionCommit(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData\n ): Awaitable<void> {}\n transactionRollback(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData\n ): Awaitable<void> {}\n}\n",
32
33
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Wrap/unwrap helpers for the VGI double-wrapping protocol.\n// Mirrors the server's dispatch.ts:64-84 (unwrapRequest/wrapResult).\n\nimport {\n serializeBatch,\n deserializeBatch,\n batchToScalarDict,\n} from \"../util/arrow/index.js\";\nimport { toUint8Array } from \"../util/bytes.js\";\nimport type { VgiBatch } from \"../arrow/index.js\";\nexport { toUint8Array };\n\n/**\n * Wrap a RecordBatch as a { request: Uint8Array } dict for RPC params.\n * DuckDB wraps ArrowSerializableDataclass params in a single \"request\" Binary column.\n */\nexport function wrapRequest(batch: VgiBatch): { request: Uint8Array } {\n return { request: serializeBatch(batch) };\n}\n\n/**\n * Unwrap a { result: Uint8Array } response dict.\n * The \"result\" Binary column contains a serialized inner batch;\n * returns its row 0 as a flat dict.\n */\nexport function unwrapResult(\n result: Record<string, any>,\n): Record<string, any> {\n const resultBytes = toUint8Array(result.result);\n const innerBatch = deserializeBatch(resultBytes);\n return batchToScalarDict(innerBatch);\n}\n",
33
34
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// SPDX-License-Identifier: LicenseRef-QueryFarm-Source-Available-1.0\n\n// Serialize a plain JS options map into a single-row Arrow RecordBatch\n// suitable for the `options` field of CatalogAttachRequest. Column types\n// are inferred per-value. This is the ergonomic layer that lets callers\n// write `{ region: \"us-east-1\", maxRows: 1000n }` instead of hand-building\n// an Arrow batch.\n\nimport { type VgiDataType, bool, binary, type VgiField, field, float64, int64, nullType, type VgiSchema, schema as schema_, utf8 } from \"../arrow/index.js\";\nimport { batchFromColumns, serializeBatch } from \"../util/arrow/index.js\";\n\n/**\n * Values supported in a CatalogAttach options map. The client infers an\n * Arrow type per value:\n *\n * string → Utf8\n * bigint → Int64\n * number → Float64 (JS numbers are doubles — safe for small ints too)\n * boolean → Bool\n * Uint8Array → Binary\n * null → Null (column with no concrete type; value is null)\n *\n * If you need types this can't express (Decimal, Timestamp, Int32 vs Int64,\n * nested structs), drop down to `optionsBytes` on CatalogAttachOptions and\n * build the RecordBatch yourself.\n */\nexport type AttachOptionValue = string | number | bigint | boolean | null | Uint8Array;\n\n/**\n * Infer an Arrow DataType for a single JS value. Exported for tests; not\n * part of the stable public API.\n */\nexport function inferAttachOptionArrowType(value: AttachOptionValue): VgiDataType {\n if (value === null) return nullType();\n if (typeof value === \"string\") return utf8();\n if (typeof value === \"bigint\") return int64();\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) {\n throw new TypeError(\n `Attach option number values must be finite (got ${value}). ` +\n `Use a bigint for integers or a finite number for floats.`,\n );\n }\n return float64();\n }\n if (typeof value === \"boolean\") return bool();\n if (value instanceof Uint8Array) return binary();\n throw new TypeError(\n `Unsupported attach option value type: ${typeof value}. ` +\n `Supported: string, number, bigint, boolean, null, Uint8Array.`,\n );\n}\n\n/**\n * Serialize a plain key→value options map to an Arrow IPC RecordBatch.\n *\n * Returns `null` when the map is empty or has no entries — the wire layer\n * then sends a null options field rather than a zero-column batch (which\n * pyarrow's IPC reader rejects).\n */\nexport function serializeAttachOptions(\n options: Record<string, AttachOptionValue> | undefined | null,\n): Uint8Array | null {\n if (!options) return null;\n const entries = Object.entries(options);\n if (entries.length === 0) return null;\n\n const fields: VgiField[] = [];\n const columns: Record<string, unknown[]> = {};\n for (const [key, value] of entries) {\n const type = inferAttachOptionArrowType(value);\n fields.push(field(key, type, true));\n columns[key] = [value];\n }\n const schema = schema_(fields);\n const batch = batchFromColumns(columns, schema);\n return serializeBatch(batch);\n}\n",
34
35
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// VgiClient error class + RpcClient wrapper that translates RpcError into\n// VgiClientError, preserving the worker's remote traceback.\n\n// RpcError comes from the `/connect` subpath, not the package root, and the\n// distinction is worth ~160 kB in every browser bundle. The root re-exports the\n// whole framework — protocol, dispatch, access log, the server — and a bundler\n// cannot drop it, so importing one error class from there shipped `RpcServer`\n// to browsers to satisfy an `instanceof`. `RpcClient` is a pure `import type`\n// for the same reason: `import { type X }` leaves the statement behind, and a\n// bare `import {} from \"@query-farm/vgi-rpc\"` is a side-effect import of that\n// same graph.\nimport { RpcError } from \"@query-farm/vgi-rpc/connect\";\nimport type { RpcClient } from \"@query-farm/vgi-rpc\";\n\n/** Error thrown by VgiClient when an RPC call fails or returns unexpected data. */\nexport class VgiClientError extends Error {\n /** Remote traceback from the worker, when an RpcError carried one. */\n readonly remoteTraceback?: string;\n /** Underlying error type from the worker (e.g. \"ValueError\"), when known. */\n readonly errorType?: string;\n\n constructor(\n message: string,\n options?: { remoteTraceback?: string; errorType?: string; cause?: unknown },\n ) {\n super(message, options?.cause != null ? { cause: options.cause } : undefined);\n this.name = \"VgiClientError\";\n if (options?.remoteTraceback) this.remoteTraceback = options.remoteTraceback;\n if (options?.errorType) this.errorType = options.errorType;\n }\n\n /**\n * Build a VgiClientError from an underlying RpcError, preserving the\n * remote error type, message, and traceback so the worker-raised exception\n * shows up at the top of the stack rather than buried under VGI framing.\n * Mirrors Python's ClientError.from_rpc_error.\n */\n static fromRpcError(e: RpcError): VgiClientError {\n const head = `${e.errorType}: ${e.errorMessage}`;\n const message = e.remoteTraceback\n ? `${head}\\n\\nRemote traceback:\\n${e.remoteTraceback}`\n : head;\n return new VgiClientError(message, {\n remoteTraceback: e.remoteTraceback || undefined,\n errorType: e.errorType,\n cause: e,\n });\n }\n}\n\n/**\n * Wrap an RpcClient so any RpcError thrown by call/stream is rethrown as a\n * VgiClientError carrying the worker's remote traceback. Other errors\n * propagate unchanged.\n */\nexport function wrapRpcWithErrorEnrichment(rpc: RpcClient): RpcClient {\n return {\n async call(method, params) {\n try {\n return await rpc.call(method, params);\n } catch (e) {\n if (e instanceof RpcError) throw VgiClientError.fromRpcError(e);\n throw e;\n }\n },\n async stream(method, params) {\n try {\n return await rpc.stream(method, params);\n } catch (e) {\n if (e instanceof RpcError) throw VgiClientError.fromRpcError(e);\n throw e;\n }\n },\n // The batch-level twins (vgi-rpc 0.24.0) get the same treatment: a caller\n // holding encoded Arrow should still see the worker's traceback rather\n // than a bare RpcError.\n async callRaw(method, input) {\n try {\n return await rpc.callRaw(method, input);\n } catch (e) {\n if (e instanceof RpcError) throw VgiClientError.fromRpcError(e);\n throw e;\n }\n },\n async streamRaw(method, input, options) {\n try {\n return await rpc.streamRaw(method, input, options);\n } catch (e) {\n if (e instanceof RpcError) throw VgiClientError.fromRpcError(e);\n throw e;\n }\n },\n describe: () => rpc.describe(),\n close: () => rpc.close(),\n };\n}\n",
35
36
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Internal helpers shared by VgiClient methods.\n\nimport { toUint8Array } from \"../util/bytes.js\";\n\n/**\n * Deserialize a List<Binary> of serialized info batches into typed info objects.\n */\nexport function deserializeInfoList<T>(\n items: unknown,\n deserializeFn: (bytes: Uint8Array) => T,\n): T[] {\n if (!items) return [];\n const arr: unknown[] = Array.isArray(items)\n ? items\n : [...(items as Iterable<unknown>)];\n return arr\n .filter((b) => b != null)\n .map((b) => deserializeFn(toUint8Array(b)));\n}\n\n/**\n * Deserialize Arrow Map entries into a plain Record<string, string>.\n */\nexport function deserializeTags(mapVal: unknown): Record<string, string> {\n const tags: Record<string, string> = {};\n if (!mapVal) return tags;\n const iterable = mapVal as { [Symbol.iterator]?: () => Iterator<unknown> };\n if (typeof iterable[Symbol.iterator] !== \"function\") return tags;\n for (const entry of iterable as Iterable<unknown>) {\n if (Array.isArray(entry)) {\n tags[String(entry[0])] = String(entry[1]);\n } else if (entry && typeof entry === \"object\") {\n const e = entry as Record<string, unknown> & { [0]?: unknown; [1]?: unknown };\n tags[String(e.key ?? e[0] ?? \"\")] = String(e.value ?? e[1] ?? \"\");\n }\n }\n return tags;\n}\n\n/**\n * Convert sync/async iterable to async iterator.\n */\nexport function toAsyncIterator<T>(\n input: Iterable<T> | AsyncIterable<T>,\n): AsyncIterator<T> {\n if (Symbol.asyncIterator in (input as any)) {\n return (input as AsyncIterable<T>)[Symbol.asyncIterator]();\n }\n const syncIter = (input as Iterable<T>)[Symbol.iterator]();\n return {\n async next() {\n return syncIter.next();\n },\n };\n}\n",
36
- "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// VgiClient — high-level client for calling VGI worker functions and catalog API.\n// Works with any RpcClient (subprocess or HTTP transport).\n\nimport { type VgiSchema, schema as schema_, type VgiField, field, type VgiBatch, type VgiDataType, utf8, binary, list } from \"../arrow/index.js\";\n// `import type`, not `import { type … }`: the latter keeps the statement and\n// emits `import {} from \"@query-farm/vgi-rpc\"`, a side-effect import of the\n// package root — which re-exports the whole framework, server included, into\n// every browser bundle. See the note in ./errors.\nimport type { RpcClient, StreamSession } from \"@query-farm/vgi-rpc\";\nimport {\n serializeBindRequest,\n deserializeBindResponse,\n serializeInitRequest,\n deserializeGlobalInitResponse,\n} from \"../protocol/serialize.js\";\nimport type {\n BindRequest,\n BindResponse,\n InitRequest,\n GlobalInitResponse,\n} from \"../protocol/types.js\";\nimport { FunctionType, TableInOutPhase } from \"../types.js\";\nimport { Arguments } from \"../arguments/arguments.js\";\nimport {\n batchFromRows,\n batchFromColumns,\n iterRows,\n} from \"../util/arrow/index.js\";\nimport {\n type SchemaInfo,\n decodeSchemaInfo,\n type TableInfo,\n decodeTableInfo,\n type ViewInfo,\n decodeViewInfo,\n type FunctionInfo,\n decodeFunctionInfo,\n type MacroInfo,\n decodeMacroInfo,\n type MacroType,\n type CatalogAttachResult,\n type AttachOpaqueData,\n type TransactionOpaqueData,\n decodeCatalogInfo,\n type CatalogInfo,\n type ScanFunctionResult,\n decodeScanFunctionResult,\n} from \"../catalog/interface.js\";\nimport { wrapRequest, unwrapResult } from \"./protocol.js\";\nimport { toUint8Array } from \"../util/bytes.js\";\nimport { serializeAttachOptions } from \"../catalog/attach-options.js\";\nimport { VgiClientError, wrapRpcWithErrorEnrichment } from \"./errors.js\";\nimport { normalizeSchemaPath } from \"../schema-path.js\";\nimport { encodeASD } from \"../codec/asd.js\";\nimport { ClientCapabilitiesSchema, MacroCreateRequestSchema } from \"../generated/vgi-protocol-schemas.js\";\nimport { deserializeInfoList, deserializeTags, toAsyncIterator } from \"./helpers.js\";\n\nexport { VgiClientError };\nimport type {\n VgiClientOptions,\n TableFunctionOptions,\n ScalarFunctionOptions,\n TableInOutFunctionOptions,\n OnCreateConflict,\n CatalogFunctionType,\n CatalogMacroType,\n CatalogAttachOptions,\n OrderByPushdown,\n TablesamplePushdown,\n AttachOptionValue,\n} from \"./types.js\";\n\n/**\n * High-level client for calling VGI worker functions and catalog API.\n *\n * Works with any RpcClient transport (subprocess or HTTP):\n * ```ts\n * import { subprocessConnect } from \"@query-farm/vgi-rpc\";\n * import { VgiClient, Arguments } from \"@query-farm/vgi\";\n *\n * const rpc = subprocessConnect([\"./my-worker\"]);\n * const client = new VgiClient(rpc);\n *\n * for await (const rows of client.tableFunctionRows({\n * functionName: \"sequence\",\n * arguments: new Arguments([10]),\n * })) {\n * console.log(rows);\n * }\n * client.close();\n * ```\n */\nexport class VgiClient {\n private readonly rpc: RpcClient;\n private readonly defaultAttachOpaqueData: Uint8Array | null;\n\n /**\n * Construct a VgiClient wrapping an `RpcClient` transport.\n *\n * `options.attachOpaqueData` sets a client-wide default attach ID used by every\n * function call that doesn't supply its own. Per-call `attachOpaqueData` on\n * `TableFunctionOptions`/`ScalarFunctionOptions`/`TableInOutFunctionOptions`\n * takes precedence — useful when a single client talks to multiple\n * attached catalogs.\n */\n constructor(rpc: RpcClient, options?: VgiClientOptions) {\n this.rpc = wrapRpcWithErrorEnrichment(rpc);\n this.defaultAttachOpaqueData = options?.attachOpaqueData ?? null;\n }\n\n /**\n * Connect the high-level client to a canonical `iroh://` or `httpi://`\n * endpoint. Native Node/Bun connectors are selected from the URI scheme.\n * Browser callers may inject the connector exported by the browser Iroh\n * package without changing the VGI client API.\n */\n static async fromIroh(\n endpoint: string,\n options: Record<string, unknown> = {},\n clientOptions?: VgiClientOptions,\n connector?: (endpoint: string, options: Record<string, unknown>) => Promise<RpcClient>,\n ): Promise<VgiClient> {\n if (!/^(iroh|httpi):\\/\\//.test(endpoint)) {\n throw new TypeError(\"VgiClient.fromIroh requires an iroh:// or httpi:// endpoint\");\n }\n let selected = connector;\n if (!selected) {\n const rpc = await import(\"@query-farm/vgi-rpc\");\n selected = endpoint.startsWith(\"iroh://\")\n ? (rpc.irohConnect as unknown as NonNullable<typeof selected>)\n : (rpc.httpiConnect as unknown as NonNullable<typeof selected>);\n }\n if (!selected) throw new TypeError(\"no Iroh connector is available in this runtime\");\n return new VgiClient(await selected(endpoint, options), clientOptions);\n }\n\n // ==========================================================================\n // Private helpers\n // ==========================================================================\n\n private async _doBind(\n functionName: string,\n functionType: FunctionType,\n args: Arguments,\n inputSchema: VgiSchema | null,\n settings: VgiBatch | null,\n secrets: VgiBatch | null,\n transactionOpaqueData: Uint8Array | null,\n attachOpaqueData: Uint8Array | null = null,\n onBind?: ((response: BindResponse) => void) | null,\n ): Promise<{ request: BindRequest; response: BindResponse }> {\n const request: BindRequest = {\n function_name: functionName,\n arguments: args,\n function_type: functionType,\n input_schema: inputSchema,\n settings: settings ?? null,\n secrets: secrets ?? null,\n attach_opaque_data: attachOpaqueData ?? this.defaultAttachOpaqueData,\n transaction_opaque_data: transactionOpaqueData ?? null,\n resolved_secrets_provided: false,\n };\n\n const requestBatch = serializeBindRequest(request);\n const rpcResult = await this.rpc.call(\"bind\", wrapRequest(requestBatch));\n if (!rpcResult) throw new VgiClientError(\"bind returned null\");\n const inner = unwrapResult(rpcResult);\n const response = deserializeBindResponse(inner);\n if (onBind) onBind(response);\n return { request, response };\n }\n\n private async _doInit(\n bindRequest: BindRequest,\n bindResponse: BindResponse,\n opts?: {\n projectionIds?: number[] | null;\n pushdownFilters?: VgiBatch | null;\n phase?: TableInOutPhase | null;\n executionId?: Uint8Array | null;\n orderBy?: OrderByPushdown | null;\n tablesample?: TablesamplePushdown | null;\n joinKeys?: VgiBatch[] | null;\n },\n ): Promise<{ session: StreamSession; initResponse: GlobalInitResponse }> {\n const ob = opts?.orderBy ?? null;\n const ts = opts?.tablesample ?? null;\n const initRequest: InitRequest = {\n bind_call: bindRequest,\n output_schema: bindResponse.output_schema,\n bind_opaque_data: bindResponse.opaque_data,\n // This client does not plan scans, so it never redeems a split, and it\n // pushes no limit down.\n split_tokens: null,\n row_limit: null,\n projection_ids: opts?.projectionIds ?? null,\n pushdown_filters: opts?.pushdownFilters ?? null,\n join_keys: opts?.joinKeys ?? [],\n phase: opts?.phase ?? null,\n finalize_state_id: null,\n order_by_column_name: ob?.columnName ?? null,\n order_by_direction: ob?.direction ?? null,\n order_by_null_order: ob?.nullOrder ?? null,\n order_by_limit: ob?.limit == null ? null : BigInt(ob.limit),\n tablesample_percentage: ts?.percentage ?? null,\n tablesample_seed: ts?.seed == null ? null : BigInt(ts.seed),\n execution_id: opts?.executionId ?? null,\n init_opaque_data: null,\n substream_id: null,\n };\n\n const initBatch = serializeInitRequest(initRequest);\n const session = await this.rpc.stream(\"init\", wrapRequest(initBatch));\n\n const headerDict = session.header;\n if (!headerDict) throw new VgiClientError(\"init did not return a header\");\n const initResponse = deserializeGlobalInitResponse(headerDict);\n\n return { session, initResponse };\n }\n\n // ==========================================================================\n // Table function — RecordBatch API\n // ==========================================================================\n\n /** Call a table function, yielding output as RecordBatch instances. */\n async *tableFunction(\n opts: TableFunctionOptions,\n ): AsyncGenerator<VgiBatch> {\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.TABLE,\n args,\n null,\n opts.settings ?? null,\n null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n const { session } = await this._doInit(bindReq, bindResp, {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n });\n\n const outputSchema = bindResp.output_schema;\n try {\n for await (const rows of session) {\n if (rows.length > 0) {\n yield batchFromRows(rows, outputSchema);\n }\n }\n } finally {\n session.close();\n }\n }\n\n // ==========================================================================\n // Scalar function\n // ==========================================================================\n\n /** Call a scalar function, yielding output as row objects. */\n async *scalarFunctionRows(\n opts: ScalarFunctionOptions,\n ): AsyncGenerator<Record<string, any>[]> {\n // Peek first batch to get input schema\n const inputIter = toAsyncIterator(opts.input);\n const first = await inputIter.next();\n if (first.done) {\n throw new VgiClientError(\n `scalarFunction(${opts.functionName}): input iterator yielded no batches; ` +\n `at least one batch is required to determine the input schema`,\n );\n }\n\n const firstBatch: VgiBatch = first.value;\n const inputSchema = firstBatch.schema;\n\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.SCALAR,\n args,\n inputSchema,\n opts.settings ?? null,\n opts.secrets ?? null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n const { session } = await this._doInit(bindReq, bindResp);\n\n try {\n // Exchange first batch\n const outRows = await session.exchange([...iterRows(firstBatch)]);\n if (outRows.length > 0) yield outRows;\n\n // Exchange remaining batches\n for await (const batch of { [Symbol.asyncIterator]: () => inputIter }) {\n const result = await session.exchange([...iterRows(batch)]);\n if (result.length > 0) yield result;\n }\n } finally {\n session.close();\n }\n }\n\n /** Call a scalar function, yielding output as RecordBatch instances. */\n async *scalarFunction(\n opts: ScalarFunctionOptions,\n ): AsyncGenerator<VgiBatch> {\n // Same path as scalarFunctionRows, but with the output schema captured\n // here so we can pack rows back into batches without a re-bind.\n const inputIter = toAsyncIterator(opts.input);\n const first = await inputIter.next();\n if (first.done) {\n throw new VgiClientError(\n `scalarFunction(${opts.functionName}): input iterator yielded no batches; ` +\n `at least one batch is required to determine the input schema`,\n );\n }\n\n const firstBatch: VgiBatch = first.value;\n const inputSchema = firstBatch.schema;\n\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.SCALAR,\n args,\n inputSchema,\n opts.settings ?? null,\n opts.secrets ?? null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n const { session } = await this._doInit(bindReq, bindResp);\n const outputSchema = bindResp.output_schema;\n try {\n const outRows = await session.exchange([...iterRows(firstBatch)]);\n if (outRows.length > 0) yield batchFromRows(outRows, outputSchema);\n\n for await (const batch of { [Symbol.asyncIterator]: () => inputIter }) {\n const result = await session.exchange([...iterRows(batch)]);\n if (result.length > 0) yield batchFromRows(result, outputSchema);\n }\n } finally {\n session.close();\n }\n }\n\n // ==========================================================================\n // Table-in-out function\n // ==========================================================================\n\n /** Call a table-in-out function, yielding output as row objects. */\n async *tableInOutFunctionRows(\n opts: TableInOutFunctionOptions,\n ): AsyncGenerator<Record<string, any>[]> {\n const inputIter = toAsyncIterator(opts.input);\n const first = await inputIter.next();\n if (first.done) {\n throw new VgiClientError(\n `tableInOutFunction(${opts.functionName}): input iterator yielded no batches; ` +\n `at least one batch is required to determine the input schema`,\n );\n }\n\n const firstBatch: VgiBatch = first.value;\n const inputSchema = firstBatch.schema;\n\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.TABLE, // table-in-out uses TABLE function type at the bind level\n args,\n inputSchema,\n opts.settings ?? null,\n null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n // Phase 1: INPUT. We keep the init response around for its `execution_id`,\n // which we must echo back to pair the FINALIZE phase with this call.\n const { session: inputSession, initResponse } = await this._doInit(\n bindReq,\n bindResp,\n {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n phase: TableInOutPhase.INPUT,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n },\n );\n\n try {\n const outRows = await inputSession.exchange([...iterRows(firstBatch)]);\n if (outRows.length > 0) yield outRows;\n\n for await (const batch of { [Symbol.asyncIterator]: () => inputIter }) {\n const result = await inputSession.exchange([...iterRows(batch)]);\n if (result.length > 0) yield result;\n }\n } finally {\n inputSession.close();\n }\n\n // Phase 2: FINALIZE — skipped entirely for a function with no finalize stage.\n if (opts.hasFinalize === false) return;\n const { session: finalizeSession } = await this._doInit(\n bindReq,\n bindResp,\n {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n phase: TableInOutPhase.FINALIZE,\n executionId: initResponse.execution_id,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n },\n );\n\n try {\n for await (const rows of finalizeSession) {\n if (rows.length > 0) yield rows;\n }\n } finally {\n finalizeSession.close();\n }\n }\n\n /** Call a table-in-out function, yielding output as RecordBatch instances. */\n async *tableInOutFunction(\n opts: TableInOutFunctionOptions,\n ): AsyncGenerator<VgiBatch> {\n const inputIter = toAsyncIterator(opts.input);\n const first = await inputIter.next();\n if (first.done) {\n throw new VgiClientError(\n `tableInOutFunction(${opts.functionName}): input iterator yielded no batches; ` +\n `at least one batch is required to determine the input schema`,\n );\n }\n\n const firstBatch: VgiBatch = first.value;\n const inputSchema = firstBatch.schema;\n\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.TABLE,\n args,\n inputSchema,\n opts.settings ?? null,\n null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n const { session: inputSession, initResponse } = await this._doInit(\n bindReq,\n bindResp,\n {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n phase: TableInOutPhase.INPUT,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n },\n );\n\n const outputSchema = bindResp.output_schema;\n try {\n const outRows = await inputSession.exchange([...iterRows(firstBatch)]);\n if (outRows.length > 0) yield batchFromRows(outRows, outputSchema);\n\n for await (const batch of { [Symbol.asyncIterator]: () => inputIter }) {\n const result = await inputSession.exchange([...iterRows(batch)]);\n if (result.length > 0) yield batchFromRows(result, outputSchema);\n }\n } finally {\n inputSession.close();\n }\n\n // FINALIZE — skipped entirely for a function with no finalize stage.\n if (opts.hasFinalize === false) return;\n const { session: finalizeSession } = await this._doInit(\n bindReq,\n bindResp,\n {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n phase: TableInOutPhase.FINALIZE,\n executionId: initResponse.execution_id,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n },\n );\n\n try {\n for await (const rows of finalizeSession) {\n if (rows.length > 0) yield batchFromRows(rows, outputSchema);\n }\n } finally {\n finalizeSession.close();\n }\n }\n\n // ==========================================================================\n // Row convenience for table function\n // ==========================================================================\n\n /** Call a table function, yielding output as row objects. */\n async *tableFunctionRows(\n opts: TableFunctionOptions,\n ): AsyncGenerator<Record<string, any>[]> {\n const args = opts.arguments ?? new Arguments();\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.TABLE,\n args,\n null,\n opts.settings ?? null,\n null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n const { session } = await this._doInit(bindReq, bindResp, {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n });\n try {\n for await (const rows of session) {\n if (rows.length > 0) yield rows;\n }\n } finally {\n session.close();\n }\n }\n\n // ==========================================================================\n // Catalog API\n // ==========================================================================\n\n /**\n * List all catalogs with their advertised version metadata.\n *\n * Each entry has `{name, implementation_version?, data_version_spec?}`.\n * Versioned workers populate the version fields; read-only workers\n * leave both null.\n */\n async catalogsInfo(): Promise<CatalogInfo[]> {\n const result = await this.rpc.call(\"catalog_catalogs\", {});\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeCatalogInfo);\n }\n\n /** List all available catalog names (shorthand for `catalogsInfo().map(c => c.name)`). */\n async catalogs(): Promise<string[]> {\n const infos = await this.catalogsInfo();\n return infos.map((i) => i.name);\n }\n\n /**\n * Attach a catalog by name. Returns connection details including the\n * attachOpaqueData.\n *\n * `opts.options` is a plain key→value map; column types are inferred from\n * the value at runtime (see AttachOptionValue for the mapping). Use\n * `opts.optionsBytes` instead when you need Arrow types the inference\n * can't express (Decimal, Timestamp, Int32 vs Int64, nested structs).\n * Providing both throws.\n *\n * Versioned catalogs (see vgi-example-versioned-worker) validate\n * `dataVersionSpec` / `implementationVersion` at attach time and echo\n * back the resolved values on the result — callers can read those from\n * `result.resolved_data_version` / `result.resolved_implementation_version`.\n *\n * @example\n * ```ts\n * const result = await client.catalogAttach(\"my_catalog\", {\n * options: { region: \"us-east-1\", maxCachedRows: 1000n, readOnly: true },\n * dataVersionSpec: \"1.0.0\",\n * });\n * ```\n */\n async catalogAttach(\n name: string,\n opts?: CatalogAttachOptions,\n ): Promise<CatalogAttachResult> {\n if (opts?.options != null && opts?.optionsBytes != null) {\n throw new VgiClientError(\n \"catalogAttach: cannot specify both `options` and `optionsBytes`\",\n );\n }\n let wireOptions: Uint8Array | null;\n if (opts?.optionsBytes != null) {\n // Escape hatch: raw pre-serialized bytes. Same zero-byte guard as\n // before — pyarrow's IPC reader rejects 0-byte input on a non-null\n // binary field.\n wireOptions = opts.optionsBytes.byteLength === 0 ? null : opts.optionsBytes;\n } else {\n wireOptions = serializeAttachOptions(opts?.options);\n }\n\n const schema = schema_([\n field(\"name\", utf8(), false),\n field(\"options\", binary(), true),\n field(\"data_version_spec\", utf8(), true),\n field(\"implementation_version\", utf8(), true),\n field(\"client_capabilities\", binary(), true),\n ]);\n const innerBatch = batchFromColumns(\n {\n name: [name],\n options: [wireOptions],\n data_version_spec: [opts?.dataVersionSpec ?? null],\n implementation_version: [opts?.implementationVersion ?? null],\n client_capabilities: [opts?.clientCapabilities\n ? encodeASD(ClientCapabilitiesSchema, opts.clientCapabilities)\n : null],\n },\n schema,\n );\n const result = await this.rpc.call(\"catalog_attach\", wrapRequest(innerBatch));\n if (!result) throw new VgiClientError(\"catalog_attach returned null\");\n const inner = unwrapResult(result);\n return {\n attach_opaque_data: toUint8Array(inner.attach_opaque_data),\n supports_transactions: inner.supports_transactions ?? false,\n supports_time_travel: inner.supports_time_travel ?? false,\n catalog_version_frozen: inner.catalog_version_frozen ?? false,\n catalog_version: Number(inner.catalog_version ?? 0),\n attach_opaque_data_required: inner.attach_opaque_data_required ?? true,\n default_schema: inner.default_schema ?? \"main\",\n settings: inner.settings\n ? (Array.isArray(inner.settings) ? inner.settings : [...inner.settings]).map(toUint8Array)\n : [],\n secret_types: inner.secret_types\n ? (Array.isArray(inner.secret_types) ? inner.secret_types : [...inner.secret_types]).map(toUint8Array)\n : [],\n attach_catalogs: inner.attach_catalogs\n ? (Array.isArray(inner.attach_catalogs) ? inner.attach_catalogs : [...inner.attach_catalogs]).map(toUint8Array)\n : [],\n comment: inner.comment ?? null,\n tags: deserializeTags(inner.tags),\n supports_column_statistics: inner.supports_column_statistics ?? false,\n global_functions: inner.global_functions\n ? (Array.isArray(inner.global_functions) ? inner.global_functions : [...inner.global_functions]).map(toUint8Array)\n : [],\n global_function_prefix: inner.global_function_prefix ?? \"\",\n resolved_data_version: inner.resolved_data_version ?? null,\n resolved_implementation_version: inner.resolved_implementation_version ?? null,\n };\n }\n\n /** Detach a previously-attached catalog. */\n async catalogDetach(attachOpaqueData: AttachOpaqueData): Promise<void> {\n await this.rpc.call(\"catalog_detach\", { attach_opaque_data: attachOpaqueData });\n }\n\n /**\n * Create a new catalog.\n *\n * `options` is a plain key→value map; column types are inferred from the\n * value at runtime (see AttachOptionValue). Use `optionsBytes` instead\n * when you need Arrow types the inference can't express. Providing both\n * throws.\n */\n async catalogCreate(\n name: string,\n onConflict: OnCreateConflict,\n options?:\n | Uint8Array\n | { options?: Record<string, AttachOptionValue>; optionsBytes?: Uint8Array },\n ): Promise<void> {\n let wireOptions: Uint8Array | null;\n if (options == null) {\n wireOptions = null;\n } else if (options instanceof Uint8Array) {\n // Backwards-compatible escape hatch: caller pre-serialized the options batch.\n wireOptions = options.byteLength === 0 ? null : options;\n } else {\n if (options.options != null && options.optionsBytes != null) {\n throw new VgiClientError(\n \"catalogCreate: cannot specify both `options` and `optionsBytes`\",\n );\n }\n if (options.optionsBytes != null) {\n wireOptions = options.optionsBytes.byteLength === 0 ? null : options.optionsBytes;\n } else {\n wireOptions = serializeAttachOptions(options.options);\n }\n }\n await this.rpc.call(\"catalog_create\", {\n name,\n on_conflict: onConflict,\n options: wireOptions,\n });\n }\n\n /** Drop a catalog by name. */\n async catalogDrop(name: string): Promise<void> {\n await this.rpc.call(\"catalog_drop\", { name });\n }\n\n /** Get the current catalog version number. */\n async catalogVersion(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<number> {\n const result = await this.rpc.call(\"catalog_version\", {\n attach_opaque_data: attachOpaqueData,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) throw new VgiClientError(\"catalog_version returned null\");\n const inner = unwrapResult(result);\n return Number(inner.version ?? 0);\n }\n\n /** Begin a new transaction. Returns the transaction ID. */\n async transactionBegin(attachOpaqueData: AttachOpaqueData): Promise<Uint8Array> {\n const result = await this.rpc.call(\"catalog_transaction_begin\", {\n attach_opaque_data: attachOpaqueData,\n });\n if (!result) throw new VgiClientError(\"transaction_begin returned null\");\n const inner = unwrapResult(result);\n if (!inner.transaction_opaque_data) {\n throw new VgiClientError(\"transaction_begin returned no transaction_opaque_data\");\n }\n return toUint8Array(inner.transaction_opaque_data);\n }\n\n /** Commit a transaction. */\n async transactionCommit(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_transaction_commit\", {\n attach_opaque_data: attachOpaqueData,\n transaction_opaque_data: transactionOpaqueData,\n });\n }\n\n /** Rollback a transaction. */\n async transactionRollback(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_transaction_rollback\", {\n attach_opaque_data: attachOpaqueData,\n transaction_opaque_data: transactionOpaqueData,\n });\n }\n\n /** List schemas in an attached catalog. */\n async schemas(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<SchemaInfo[]> {\n const result = await this.rpc.call(\"catalog_schemas\", {\n attach_opaque_data: attachOpaqueData,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeSchemaInfo);\n }\n\n /** Get a schema by name, or null if not found. */\n async schemaGet(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<SchemaInfo | null> {\n const result = await this.rpc.call(\"catalog_schema_get\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return null;\n const inner = unwrapResult(result);\n const items = deserializeInfoList(inner.items, decodeSchemaInfo);\n return items.length > 0 ? items[0] : null;\n }\n\n /** Create a new schema. */\n async schemaCreate(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n opts?: {\n onConflict?: OnCreateConflict;\n comment?: string | null;\n tags?: Record<string, string> | null;\n transactionOpaqueData?: TransactionOpaqueData;\n },\n ): Promise<void> {\n const tagsMap = opts?.tags\n ? new Map(Object.entries(opts.tags))\n : null;\n await this.rpc.call(\"catalog_schema_create\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n on_conflict: opts?.onConflict ?? \"error\",\n comment: opts?.comment ?? null,\n tags: tagsMap,\n transaction_opaque_data: opts?.transactionOpaqueData ?? null,\n });\n }\n\n /** Drop a schema by name. */\n async schemaDrop(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n ignoreNotFound?: boolean,\n cascade?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_schema_drop\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n ignore_not_found: ignoreNotFound ?? false,\n cascade: cascade ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** List tables in a schema. */\n async schemaContentsTables(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<TableInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_tables\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeTableInfo);\n }\n\n /** List views in a schema. */\n async schemaContentsViews(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<ViewInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_views\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeViewInfo);\n }\n\n /** List functions in a schema, filtered by type. */\n async schemaContentsFunctions(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n type: CatalogFunctionType,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<FunctionInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_functions\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n type,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeFunctionInfo);\n }\n\n /** Get a table by name, or null if not found. */\n async tableGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<TableInfo | null> {\n const result = await this.rpc.call(\"catalog_table_get\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return null;\n const inner = unwrapResult(result);\n const items = deserializeInfoList(inner.items, decodeTableInfo);\n return items.length > 0 ? items[0] : null;\n }\n\n /** Create a new table. */\n async tableCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columns: Uint8Array,\n onConflict: OnCreateConflict,\n notNullConstraints?: number[],\n uniqueConstraints?: number[][],\n checkConstraints?: string[],\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_create\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n columns,\n on_conflict: onConflict,\n not_null_constraints: notNullConstraints ?? null,\n unique_constraints: uniqueConstraints ?? null,\n check_constraints: checkConstraints ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Drop a table by name. */\n async tableDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n ignoreNotFound?: boolean,\n cascade?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n ignore_not_found: ignoreNotFound ?? false,\n cascade: cascade ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /**\n * Get the scan function for a table — tells DuckDB which function to call\n * to read the table data (e.g. `read_parquet` with a path argument). Used\n * by the VGI extension during query planning.\n */\n async tableScanFunctionGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n atUnit?: string | null,\n atValue?: string | null,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<ScanFunctionResult> {\n const result = await this.rpc.call(\"catalog_table_scan_function_get\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n at_unit: atUnit ?? null,\n at_value: atValue ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) throw new VgiClientError(\"table_scan_function_get returned null\");\n return decodeScanFunctionResult(unwrapResult(result));\n }\n\n /** Set or clear the comment on a table. */\n async tableCommentSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n comment?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_comment_set\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n comment: comment ?? null,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Rename a table. */\n async tableRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_rename\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n new_name: newName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Add a column to a table. */\n async tableColumnAdd(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n columnType: string,\n defaultValue?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_add\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n column_type: columnType,\n default_value: defaultValue ?? null,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Drop a column from a table. */\n async tableColumnDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Rename a column in a table. */\n async tableColumnRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_rename\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n new_name: newName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Set the default value for a column. */\n async tableColumnDefaultSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n defaultValue: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_default_set\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n default_value: defaultValue,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Remove the default value from a column. */\n async tableColumnDefaultDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_default_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /**\n * Change the type of a column.\n *\n * `columnDefinition` is a serialized Arrow Schema with a single field whose\n * name identifies the target column and whose type is the new column type.\n * `expression` is an optional SQL expression used to convert existing values.\n */\n async tableColumnTypeChange(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnDefinition: Uint8Array,\n expression?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_type_change\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_definition: columnDefinition,\n expression: expression ?? null,\n ignore_not_found: ignoreNotFound ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Set a NOT NULL constraint on a column. */\n async tableNotNullSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_not_null_set\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Remove a NOT NULL constraint from a column. */\n async tableNotNullDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_not_null_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Get a view by name, or null if not found. */\n async viewGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<ViewInfo | null> {\n const result = await this.rpc.call(\"catalog_view_get\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return null;\n const inner = unwrapResult(result);\n const items = deserializeInfoList(inner.items, decodeViewInfo);\n return items.length > 0 ? items[0] : null;\n }\n\n /** Create a new view. */\n async viewCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n definition: string,\n onConflict: OnCreateConflict,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_view_create\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n definition,\n on_conflict: onConflict,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Drop a view by name. */\n async viewDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n ignoreNotFound?: boolean,\n cascade?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_view_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n ignore_not_found: ignoreNotFound ?? false,\n cascade: cascade ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Rename a view. */\n async viewRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_view_rename\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n new_name: newName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Set or clear the comment on a view. */\n async viewCommentSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n comment?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_view_comment_set\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n comment: comment ?? null,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n // ==========================================================================\n // Macro Catalog API\n // ==========================================================================\n\n /** Get a macro by name, or null if not found. */\n async macroGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<MacroInfo | null> {\n const result = await this.rpc.call(\"catalog_macro_get\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return null;\n const inner = unwrapResult(result);\n const items = deserializeInfoList(inner.items, decodeMacroInfo);\n return items.length > 0 ? items[0] : null;\n }\n\n /** List macros in a schema, filtered by type. */\n async schemaContentsMacros(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n type: CatalogMacroType,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<MacroInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_macros\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n type,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeMacroInfo);\n }\n\n /** Create a new macro. */\n async macroCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n macroType: MacroType,\n parameters: string[],\n definition: string,\n onConflict: OnCreateConflict,\n parameterDefaultValues?: Uint8Array | null,\n argumentsSchema?: Uint8Array | null,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n const innerBatch = batchFromColumns(\n {\n attach_opaque_data: [attachOpaqueData],\n schema_path: [normalizeSchemaPath(schemaPath)],\n name: [name],\n macro_type: [macroType],\n parameters: [parameters],\n definition: [definition],\n on_conflict: [onConflict],\n parameter_default_values: [parameterDefaultValues ?? null],\n arguments_schema: [argumentsSchema ?? null],\n transaction_opaque_data: [transactionOpaqueData ?? null],\n },\n MacroCreateRequestSchema,\n );\n await this.rpc.call(\"catalog_macro_create\", wrapRequest(innerBatch));\n }\n\n /** Drop a macro by name. */\n async macroDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_macro_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n ignore_not_found: ignoreNotFound ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Close the underlying RPC connection. */\n close(): void {\n this.rpc.close();\n }\n}\n",
37
+ "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// VgiClient — high-level client for calling VGI worker functions and catalog API.\n// Works with any RpcClient (subprocess or HTTP transport).\n\nimport { type VgiSchema, schema as schema_, type VgiField, field, type VgiBatch, type VgiDataType, utf8, binary, list } from \"../arrow/index.js\";\n// `import type`, not `import { type … }`: the latter keeps the statement and\n// emits `import {} from \"@query-farm/vgi-rpc\"`, a side-effect import of the\n// package root — which re-exports the whole framework, server included, into\n// every browser bundle. See the note in ./errors.\nimport type { RpcClient, StreamSession } from \"@query-farm/vgi-rpc\";\nimport {\n serializeBindRequest,\n deserializeBindResponse,\n serializeInitRequest,\n deserializeGlobalInitResponse,\n} from \"../protocol/serialize.js\";\nimport type {\n BindRequest,\n BindResponse,\n InitRequest,\n GlobalInitResponse,\n} from \"../protocol/types.js\";\nimport { FunctionType, TableInOutPhase } from \"../types.js\";\nimport { Arguments } from \"../arguments/arguments.js\";\nimport {\n batchFromRows,\n batchFromColumns,\n iterRows,\n} from \"../util/arrow/index.js\";\nimport {\n type SchemaInfo,\n decodeSchemaInfo,\n type TableInfo,\n decodeTableInfo,\n type ViewInfo,\n decodeViewInfo,\n type FunctionInfo,\n decodeFunctionInfo,\n type MacroInfo,\n decodeMacroInfo,\n type MacroType,\n type CatalogAttachResult,\n type SchemaContentsInfo,\n decodeIndexInfo,\n type IndexInfo,\n type AttachOpaqueData,\n type TransactionOpaqueData,\n decodeCatalogInfo,\n type CatalogInfo,\n type ScanFunctionResult,\n decodeScanFunctionResult,\n} from \"../catalog/interface.js\";\nimport { wrapRequest, unwrapResult } from \"./protocol.js\";\nimport { toUint8Array } from \"../util/bytes.js\";\nimport { serializeAttachOptions } from \"../catalog/attach-options.js\";\nimport { VgiClientError, wrapRpcWithErrorEnrichment } from \"./errors.js\";\nimport { normalizeSchemaPath } from \"../schema-path.js\";\nimport { encodeASD } from \"../codec/asd.js\";\nimport { ClientCapabilitiesSchema, MacroCreateRequestSchema } from \"../generated/vgi-protocol-schemas.js\";\nimport { decodeCatalogContentsResponse } from \"../generated/vgi-protocol-types.js\";\nimport { deserializeInfoList, deserializeTags, toAsyncIterator } from \"./helpers.js\";\n\nexport { VgiClientError };\nimport type {\n VgiClientOptions,\n TableFunctionOptions,\n ScalarFunctionOptions,\n TableInOutFunctionOptions,\n OnCreateConflict,\n CatalogFunctionType,\n CatalogMacroType,\n CatalogAttachOptions,\n OrderByPushdown,\n TablesamplePushdown,\n AttachOptionValue,\n CatalogSnapshot,\n LoadCatalogOptions,\n} from \"./types.js\";\n\n/**\n * High-level client for calling VGI worker functions and catalog API.\n *\n * Works with any RpcClient transport (subprocess or HTTP):\n * ```ts\n * import { subprocessConnect } from \"@query-farm/vgi-rpc\";\n * import { VgiClient, Arguments } from \"@query-farm/vgi\";\n *\n * const rpc = subprocessConnect([\"./my-worker\"]);\n * const client = new VgiClient(rpc);\n *\n * for await (const rows of client.tableFunctionRows({\n * functionName: \"sequence\",\n * arguments: new Arguments([10]),\n * })) {\n * console.log(rows);\n * }\n * client.close();\n * ```\n */\nexport class VgiClient {\n private readonly rpc: RpcClient;\n private readonly defaultAttachOpaqueData: Uint8Array | null;\n\n /**\n * Construct a VgiClient wrapping an `RpcClient` transport.\n *\n * `options.attachOpaqueData` sets a client-wide default attach ID used by every\n * function call that doesn't supply its own. Per-call `attachOpaqueData` on\n * `TableFunctionOptions`/`ScalarFunctionOptions`/`TableInOutFunctionOptions`\n * takes precedence — useful when a single client talks to multiple\n * attached catalogs.\n */\n constructor(rpc: RpcClient, options?: VgiClientOptions) {\n this.rpc = wrapRpcWithErrorEnrichment(rpc);\n this.defaultAttachOpaqueData = options?.attachOpaqueData ?? null;\n }\n\n /**\n * Connect the high-level client to a canonical `iroh://` or `httpi://`\n * endpoint. Native Node/Bun connectors are selected from the URI scheme.\n * Browser callers may inject the connector exported by the browser Iroh\n * package without changing the VGI client API.\n */\n static async fromIroh(\n endpoint: string,\n options: Record<string, unknown> = {},\n clientOptions?: VgiClientOptions,\n connector?: (endpoint: string, options: Record<string, unknown>) => Promise<RpcClient>,\n ): Promise<VgiClient> {\n if (!/^(iroh|httpi):\\/\\//.test(endpoint)) {\n throw new TypeError(\"VgiClient.fromIroh requires an iroh:// or httpi:// endpoint\");\n }\n let selected = connector;\n if (!selected) {\n const rpc = await import(\"@query-farm/vgi-rpc\");\n selected = endpoint.startsWith(\"iroh://\")\n ? (rpc.irohConnect as unknown as NonNullable<typeof selected>)\n : (rpc.httpiConnect as unknown as NonNullable<typeof selected>);\n }\n if (!selected) throw new TypeError(\"no Iroh connector is available in this runtime\");\n return new VgiClient(await selected(endpoint, options), clientOptions);\n }\n\n // ==========================================================================\n // Private helpers\n // ==========================================================================\n\n private async _doBind(\n functionName: string,\n functionType: FunctionType,\n args: Arguments,\n inputSchema: VgiSchema | null,\n settings: VgiBatch | null,\n secrets: VgiBatch | null,\n transactionOpaqueData: Uint8Array | null,\n attachOpaqueData: Uint8Array | null = null,\n onBind?: ((response: BindResponse) => void) | null,\n ): Promise<{ request: BindRequest; response: BindResponse }> {\n const request: BindRequest = {\n function_name: functionName,\n arguments: args,\n function_type: functionType,\n input_schema: inputSchema,\n settings: settings ?? null,\n secrets: secrets ?? null,\n attach_opaque_data: attachOpaqueData ?? this.defaultAttachOpaqueData,\n transaction_opaque_data: transactionOpaqueData ?? null,\n resolved_secrets_provided: false,\n };\n\n const requestBatch = serializeBindRequest(request);\n const rpcResult = await this.rpc.call(\"bind\", wrapRequest(requestBatch));\n if (!rpcResult) throw new VgiClientError(\"bind returned null\");\n const inner = unwrapResult(rpcResult);\n const response = deserializeBindResponse(inner);\n if (onBind) onBind(response);\n return { request, response };\n }\n\n private async _doInit(\n bindRequest: BindRequest,\n bindResponse: BindResponse,\n opts?: {\n projectionIds?: number[] | null;\n pushdownFilters?: VgiBatch | null;\n phase?: TableInOutPhase | null;\n executionId?: Uint8Array | null;\n orderBy?: OrderByPushdown | null;\n tablesample?: TablesamplePushdown | null;\n joinKeys?: VgiBatch[] | null;\n },\n ): Promise<{ session: StreamSession; initResponse: GlobalInitResponse }> {\n const ob = opts?.orderBy ?? null;\n const ts = opts?.tablesample ?? null;\n const initRequest: InitRequest = {\n bind_call: bindRequest,\n output_schema: bindResponse.output_schema,\n bind_opaque_data: bindResponse.opaque_data,\n // This client does not plan scans, so it never redeems a split, and it\n // pushes no limit down.\n split_tokens: null,\n row_limit: null,\n projection_ids: opts?.projectionIds ?? null,\n pushdown_filters: opts?.pushdownFilters ?? null,\n join_keys: opts?.joinKeys ?? [],\n phase: opts?.phase ?? null,\n finalize_state_id: null,\n order_by_column_name: ob?.columnName ?? null,\n order_by_direction: ob?.direction ?? null,\n order_by_null_order: ob?.nullOrder ?? null,\n order_by_limit: ob?.limit == null ? null : BigInt(ob.limit),\n tablesample_percentage: ts?.percentage ?? null,\n tablesample_seed: ts?.seed == null ? null : BigInt(ts.seed),\n execution_id: opts?.executionId ?? null,\n init_opaque_data: null,\n substream_id: null,\n };\n\n const initBatch = serializeInitRequest(initRequest);\n const session = await this.rpc.stream(\"init\", wrapRequest(initBatch));\n\n const headerDict = session.header;\n if (!headerDict) throw new VgiClientError(\"init did not return a header\");\n const initResponse = deserializeGlobalInitResponse(headerDict);\n\n return { session, initResponse };\n }\n\n // ==========================================================================\n // Table function — RecordBatch API\n // ==========================================================================\n\n /** Call a table function, yielding output as RecordBatch instances. */\n async *tableFunction(\n opts: TableFunctionOptions,\n ): AsyncGenerator<VgiBatch> {\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.TABLE,\n args,\n null,\n opts.settings ?? null,\n null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n const { session } = await this._doInit(bindReq, bindResp, {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n });\n\n const outputSchema = bindResp.output_schema;\n try {\n for await (const rows of session) {\n if (rows.length > 0) {\n yield batchFromRows(rows, outputSchema);\n }\n }\n } finally {\n session.close();\n }\n }\n\n // ==========================================================================\n // Scalar function\n // ==========================================================================\n\n /** Call a scalar function, yielding output as row objects. */\n async *scalarFunctionRows(\n opts: ScalarFunctionOptions,\n ): AsyncGenerator<Record<string, any>[]> {\n // Peek first batch to get input schema\n const inputIter = toAsyncIterator(opts.input);\n const first = await inputIter.next();\n if (first.done) {\n throw new VgiClientError(\n `scalarFunction(${opts.functionName}): input iterator yielded no batches; ` +\n `at least one batch is required to determine the input schema`,\n );\n }\n\n const firstBatch: VgiBatch = first.value;\n const inputSchema = firstBatch.schema;\n\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.SCALAR,\n args,\n inputSchema,\n opts.settings ?? null,\n opts.secrets ?? null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n const { session } = await this._doInit(bindReq, bindResp);\n\n try {\n // Exchange first batch\n const outRows = await session.exchange([...iterRows(firstBatch)]);\n if (outRows.length > 0) yield outRows;\n\n // Exchange remaining batches\n for await (const batch of { [Symbol.asyncIterator]: () => inputIter }) {\n const result = await session.exchange([...iterRows(batch)]);\n if (result.length > 0) yield result;\n }\n } finally {\n session.close();\n }\n }\n\n /** Call a scalar function, yielding output as RecordBatch instances. */\n async *scalarFunction(\n opts: ScalarFunctionOptions,\n ): AsyncGenerator<VgiBatch> {\n // Same path as scalarFunctionRows, but with the output schema captured\n // here so we can pack rows back into batches without a re-bind.\n const inputIter = toAsyncIterator(opts.input);\n const first = await inputIter.next();\n if (first.done) {\n throw new VgiClientError(\n `scalarFunction(${opts.functionName}): input iterator yielded no batches; ` +\n `at least one batch is required to determine the input schema`,\n );\n }\n\n const firstBatch: VgiBatch = first.value;\n const inputSchema = firstBatch.schema;\n\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.SCALAR,\n args,\n inputSchema,\n opts.settings ?? null,\n opts.secrets ?? null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n const { session } = await this._doInit(bindReq, bindResp);\n const outputSchema = bindResp.output_schema;\n try {\n const outRows = await session.exchange([...iterRows(firstBatch)]);\n if (outRows.length > 0) yield batchFromRows(outRows, outputSchema);\n\n for await (const batch of { [Symbol.asyncIterator]: () => inputIter }) {\n const result = await session.exchange([...iterRows(batch)]);\n if (result.length > 0) yield batchFromRows(result, outputSchema);\n }\n } finally {\n session.close();\n }\n }\n\n // ==========================================================================\n // Table-in-out function\n // ==========================================================================\n\n /** Call a table-in-out function, yielding output as row objects. */\n async *tableInOutFunctionRows(\n opts: TableInOutFunctionOptions,\n ): AsyncGenerator<Record<string, any>[]> {\n const inputIter = toAsyncIterator(opts.input);\n const first = await inputIter.next();\n if (first.done) {\n throw new VgiClientError(\n `tableInOutFunction(${opts.functionName}): input iterator yielded no batches; ` +\n `at least one batch is required to determine the input schema`,\n );\n }\n\n const firstBatch: VgiBatch = first.value;\n const inputSchema = firstBatch.schema;\n\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.TABLE, // table-in-out uses TABLE function type at the bind level\n args,\n inputSchema,\n opts.settings ?? null,\n null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n // Phase 1: INPUT. We keep the init response around for its `execution_id`,\n // which we must echo back to pair the FINALIZE phase with this call.\n const { session: inputSession, initResponse } = await this._doInit(\n bindReq,\n bindResp,\n {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n phase: TableInOutPhase.INPUT,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n },\n );\n\n try {\n const outRows = await inputSession.exchange([...iterRows(firstBatch)]);\n if (outRows.length > 0) yield outRows;\n\n for await (const batch of { [Symbol.asyncIterator]: () => inputIter }) {\n const result = await inputSession.exchange([...iterRows(batch)]);\n if (result.length > 0) yield result;\n }\n } finally {\n inputSession.close();\n }\n\n // Phase 2: FINALIZE — skipped entirely for a function with no finalize stage.\n if (opts.hasFinalize === false) return;\n const { session: finalizeSession } = await this._doInit(\n bindReq,\n bindResp,\n {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n phase: TableInOutPhase.FINALIZE,\n executionId: initResponse.execution_id,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n },\n );\n\n try {\n for await (const rows of finalizeSession) {\n if (rows.length > 0) yield rows;\n }\n } finally {\n finalizeSession.close();\n }\n }\n\n /** Call a table-in-out function, yielding output as RecordBatch instances. */\n async *tableInOutFunction(\n opts: TableInOutFunctionOptions,\n ): AsyncGenerator<VgiBatch> {\n const inputIter = toAsyncIterator(opts.input);\n const first = await inputIter.next();\n if (first.done) {\n throw new VgiClientError(\n `tableInOutFunction(${opts.functionName}): input iterator yielded no batches; ` +\n `at least one batch is required to determine the input schema`,\n );\n }\n\n const firstBatch: VgiBatch = first.value;\n const inputSchema = firstBatch.schema;\n\n const args = opts.arguments ?? new Arguments();\n\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.TABLE,\n args,\n inputSchema,\n opts.settings ?? null,\n null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n\n const { session: inputSession, initResponse } = await this._doInit(\n bindReq,\n bindResp,\n {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n phase: TableInOutPhase.INPUT,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n },\n );\n\n const outputSchema = bindResp.output_schema;\n try {\n const outRows = await inputSession.exchange([...iterRows(firstBatch)]);\n if (outRows.length > 0) yield batchFromRows(outRows, outputSchema);\n\n for await (const batch of { [Symbol.asyncIterator]: () => inputIter }) {\n const result = await inputSession.exchange([...iterRows(batch)]);\n if (result.length > 0) yield batchFromRows(result, outputSchema);\n }\n } finally {\n inputSession.close();\n }\n\n // FINALIZE — skipped entirely for a function with no finalize stage.\n if (opts.hasFinalize === false) return;\n const { session: finalizeSession } = await this._doInit(\n bindReq,\n bindResp,\n {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n phase: TableInOutPhase.FINALIZE,\n executionId: initResponse.execution_id,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n },\n );\n\n try {\n for await (const rows of finalizeSession) {\n if (rows.length > 0) yield batchFromRows(rows, outputSchema);\n }\n } finally {\n finalizeSession.close();\n }\n }\n\n // ==========================================================================\n // Row convenience for table function\n // ==========================================================================\n\n /** Call a table function, yielding output as row objects. */\n async *tableFunctionRows(\n opts: TableFunctionOptions,\n ): AsyncGenerator<Record<string, any>[]> {\n const args = opts.arguments ?? new Arguments();\n const { request: bindReq, response: bindResp } = await this._doBind(\n opts.functionName,\n FunctionType.TABLE,\n args,\n null,\n opts.settings ?? null,\n null,\n opts.transactionOpaqueData ?? null,\n opts.attachOpaqueData ?? null,\n opts.onBind ?? null,\n );\n const { session } = await this._doInit(bindReq, bindResp, {\n projectionIds: opts.projectionIds,\n pushdownFilters: opts.pushdownFilters,\n orderBy: opts.orderBy,\n tablesample: opts.tablesample,\n joinKeys: opts.joinKeys,\n });\n try {\n for await (const rows of session) {\n if (rows.length > 0) yield rows;\n }\n } finally {\n session.close();\n }\n }\n\n // ==========================================================================\n // Catalog API\n // ==========================================================================\n\n /**\n * List all catalogs with their advertised version metadata.\n *\n * Each entry has `{name, implementation_version?, data_version_spec?}`.\n * Versioned workers populate the version fields; read-only workers\n * leave both null.\n */\n async catalogsInfo(): Promise<CatalogInfo[]> {\n const result = await this.rpc.call(\"catalog_catalogs\", {});\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeCatalogInfo);\n }\n\n /** List all available catalog names (shorthand for `catalogsInfo().map(c => c.name)`). */\n async catalogs(): Promise<string[]> {\n const infos = await this.catalogsInfo();\n return infos.map((i) => i.name);\n }\n\n /**\n * Attach a catalog by name. Returns connection details including the\n * attachOpaqueData.\n *\n * `opts.options` is a plain key→value map; column types are inferred from\n * the value at runtime (see AttachOptionValue for the mapping). Use\n * `opts.optionsBytes` instead when you need Arrow types the inference\n * can't express (Decimal, Timestamp, Int32 vs Int64, nested structs).\n * Providing both throws.\n *\n * Versioned catalogs (see vgi-example-versioned-worker) validate\n * `dataVersionSpec` / `implementationVersion` at attach time and echo\n * back the resolved values on the result — callers can read those from\n * `result.resolved_data_version` / `result.resolved_implementation_version`.\n *\n * @example\n * ```ts\n * const result = await client.catalogAttach(\"my_catalog\", {\n * options: { region: \"us-east-1\", maxCachedRows: 1000n, readOnly: true },\n * dataVersionSpec: \"1.0.0\",\n * });\n * ```\n */\n async catalogAttach(\n name: string,\n opts?: CatalogAttachOptions,\n ): Promise<CatalogAttachResult> {\n if (opts?.options != null && opts?.optionsBytes != null) {\n throw new VgiClientError(\n \"catalogAttach: cannot specify both `options` and `optionsBytes`\",\n );\n }\n let wireOptions: Uint8Array | null;\n if (opts?.optionsBytes != null) {\n // Escape hatch: raw pre-serialized bytes. Same zero-byte guard as\n // before — pyarrow's IPC reader rejects 0-byte input on a non-null\n // binary field.\n wireOptions = opts.optionsBytes.byteLength === 0 ? null : opts.optionsBytes;\n } else {\n wireOptions = serializeAttachOptions(opts?.options);\n }\n\n const schema = schema_([\n field(\"name\", utf8(), false),\n field(\"options\", binary(), true),\n field(\"data_version_spec\", utf8(), true),\n field(\"implementation_version\", utf8(), true),\n field(\"client_capabilities\", binary(), true),\n ]);\n const innerBatch = batchFromColumns(\n {\n name: [name],\n options: [wireOptions],\n data_version_spec: [opts?.dataVersionSpec ?? null],\n implementation_version: [opts?.implementationVersion ?? null],\n client_capabilities: [opts?.clientCapabilities\n ? encodeASD(ClientCapabilitiesSchema, opts.clientCapabilities)\n : null],\n },\n schema,\n );\n const result = await this.rpc.call(\"catalog_attach\", wrapRequest(innerBatch));\n if (!result) throw new VgiClientError(\"catalog_attach returned null\");\n const inner = unwrapResult(result);\n return {\n attach_opaque_data: toUint8Array(inner.attach_opaque_data),\n supports_transactions: inner.supports_transactions ?? false,\n supports_time_travel: inner.supports_time_travel ?? false,\n catalog_version_frozen: inner.catalog_version_frozen ?? false,\n catalog_version: Number(inner.catalog_version ?? 0),\n attach_opaque_data_required: inner.attach_opaque_data_required ?? true,\n default_schema: inner.default_schema ?? \"main\",\n settings: inner.settings\n ? (Array.isArray(inner.settings) ? inner.settings : [...inner.settings]).map(toUint8Array)\n : [],\n secret_types: inner.secret_types\n ? (Array.isArray(inner.secret_types) ? inner.secret_types : [...inner.secret_types]).map(toUint8Array)\n : [],\n attach_catalogs: inner.attach_catalogs\n ? (Array.isArray(inner.attach_catalogs) ? inner.attach_catalogs : [...inner.attach_catalogs]).map(toUint8Array)\n : [],\n comment: inner.comment ?? null,\n tags: deserializeTags(inner.tags),\n supports_column_statistics: inner.supports_column_statistics ?? false,\n global_functions: inner.global_functions\n ? (Array.isArray(inner.global_functions) ? inner.global_functions : [...inner.global_functions]).map(toUint8Array)\n : [],\n global_function_prefix: inner.global_function_prefix ?? \"\",\n resolved_data_version: inner.resolved_data_version ?? null,\n resolved_implementation_version: inner.resolved_implementation_version ?? null,\n supports_catalog_contents: inner.supports_catalog_contents ?? false,\n };\n }\n\n /**\n * Load the whole catalog in one `catalog_contents` call: every schema (parents\n * before children) with all of its tables, views, functions, macros and\n * indexes. Only call it when the attach result set\n * `supports_catalog_contents`; it is the committed catalog at\n * `catalog_version` (no transaction).\n *\n * Pass the `etag` of a snapshot you hold as `ifNoneMatch`: when it is still\n * current the worker answers `not_modified` with no schemas. `etag` null\n * means the worker does not revalidate. Each schema's wire `path` is checked\n * against its decoded `SchemaInfo.path`.\n *\n * This is the raw RPC. To enumerate a catalog, use `loadCatalog`, which\n * checks the capability, revalidates and falls back to the per-schema RPCs.\n */\n async catalogContents(\n attachOpaqueData: AttachOpaqueData,\n ifNoneMatch: string | null = null,\n ): Promise<{ catalog_version: number; etag: string | null; not_modified: boolean; schemas: SchemaContentsInfo[] }> {\n const result = await this.rpc.call(\"catalog_contents\", {\n attach_opaque_data: attachOpaqueData,\n if_none_match: ifNoneMatch,\n });\n if (!result) throw new VgiClientError(\"catalog_contents returned null\");\n const response = decodeCatalogContentsResponse(toUint8Array(result.result));\n const schemas = response.schemas.map((c) => {\n const schema = decodeSchemaInfo(c.schema);\n if (JSON.stringify(c.path) !== JSON.stringify(schema.path)) {\n throw new VgiClientError(\n `catalog_contents: SchemaContents.path ${JSON.stringify(c.path)} != SchemaInfo.path ${JSON.stringify(schema.path)}`,\n );\n }\n return {\n schema,\n tables: c.tables.map(decodeTableInfo),\n views: c.views.map(decodeViewInfo),\n scalar_functions: c.scalar_functions.map(decodeFunctionInfo),\n aggregate_functions: c.aggregate_functions.map(decodeFunctionInfo),\n table_functions: c.table_functions.map(decodeFunctionInfo),\n scalar_macros: c.scalar_macros.map(decodeMacroInfo),\n table_macros: c.table_macros.map(decodeMacroInfo),\n indexes: c.indexes.map(decodeIndexInfo),\n };\n });\n return {\n catalog_version: Number(response.catalog_version ?? 0),\n etag: response.etag ?? null,\n not_modified: Boolean(response.not_modified),\n schemas,\n };\n }\n\n /**\n * Enumerate the whole catalog: every schema with all of its tables, views,\n * scalar/aggregate/table functions, scalar/table macros and indexes.\n *\n * Honors the attach result's `supports_catalog_contents` the way the DuckDB\n * extension does:\n *\n * - advertised (and `useCatalogContents` not false, no transaction): one\n * `catalog_contents` call. With `previous.etag` it is conditional\n * (`if_none_match`); `not_modified` returns `previous`'s contents.\n * - not advertised: `catalog_schemas` + per-schema\n * `catalog_schema_contents_*` calls -- `catalog_contents` is never sent.\n * Kinds whose `estimated_object_count` is exactly 0 are skipped.\n * - advertised but the call fails (or answers malformed, e.g. a\n * `SchemaContents.path` that disagrees with its `SchemaInfo.path`): falls\n * back to the per-schema calls and reports the failure in\n * `fallback_error`.\n *\n * A full answer older than `previous` (a lagging replica) is retried once,\n * then the per-schema path is used.\n */\n async loadCatalog(\n attach: Pick<CatalogAttachResult, \"attach_opaque_data\" | \"supports_catalog_contents\">,\n opts?: LoadCatalogOptions,\n ): Promise<CatalogSnapshot> {\n const attachOpaqueData = attach.attach_opaque_data;\n const previous = opts?.previous ?? null;\n const useContents =\n attach.supports_catalog_contents === true &&\n opts?.useCatalogContents !== false &&\n opts?.transactionOpaqueData == null;\n if (!useContents) {\n return this._loadCatalogPerSchema(attachOpaqueData, opts?.transactionOpaqueData, null);\n }\n\n let fallbackError: string | null = null;\n const ifNoneMatch = previous?.etag ?? null;\n const knownVersion = previous?.catalog_version ?? 0;\n for (let attempt = 0; attempt < 2; attempt++) {\n let response: Awaited<ReturnType<VgiClient[\"catalogContents\"]>>;\n try {\n response = await this.catalogContents(attachOpaqueData, ifNoneMatch);\n } catch (err) {\n fallbackError = err instanceof Error ? err.message : String(err);\n break;\n }\n if (response.not_modified) {\n if (previous == null || ifNoneMatch == null) {\n fallbackError = \"catalog_contents answered not_modified to an unconditional request\";\n break;\n }\n return {\n ...previous,\n // 0 = unknown: keep the version already known.\n catalog_version: response.catalog_version !== 0 ? response.catalog_version : previous.catalog_version,\n etag: response.etag ?? ifNoneMatch,\n not_modified: true,\n fallback_error: null,\n };\n }\n // Version adoption: a snapshot at least as new as the known version is\n // current; 0 means unknown and is accepted. An older one is retried once.\n if (response.catalog_version !== 0 && knownVersion !== 0 && response.catalog_version < knownVersion) {\n fallbackError = `catalog_contents snapshot version ${response.catalog_version} is older than the known version ${knownVersion}`;\n continue;\n }\n return {\n catalog_version: response.catalog_version,\n etag: response.etag,\n source: \"catalog_contents\",\n not_modified: false,\n fallback_error: null,\n schemas: response.schemas,\n };\n }\n return this._loadCatalogPerSchema(attachOpaqueData, undefined, fallbackError);\n }\n\n /** `loadCatalog` without `catalog_contents`: catalog_schemas + per-schema calls. */\n private async _loadCatalogPerSchema(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData | undefined,\n fallbackError: string | null,\n ): Promise<CatalogSnapshot> {\n const schemas = await this.schemas(attachOpaqueData, transactionOpaqueData);\n const out: SchemaContentsInfo[] = [];\n // Sequential on purpose: a stdio RpcClient carries one call at a time.\n for (const schema of schemas) {\n const counts = schema.estimated_object_count ?? {};\n const path = schema.path;\n // Only an explicit 0 is a guarantee; a missing count is unknown. Decoded\n // int64 counts are numbers, or bigints beyond the safe range, so compare\n // numerically.\n const has = (kind: string) => {\n const n = (counts as Record<string, unknown>)[kind];\n return n == null || Number(n) !== 0;\n };\n const t = transactionOpaqueData;\n out.push({\n schema,\n tables: has(\"table\") ? await this.schemaContentsTables(attachOpaqueData, path, t) : [],\n views: has(\"view\") ? await this.schemaContentsViews(attachOpaqueData, path, t) : [],\n scalar_functions: has(\"scalar_function\")\n ? await this.schemaContentsFunctions(attachOpaqueData, path, \"SCALAR_FUNCTION\", t)\n : [],\n aggregate_functions: has(\"aggregate_function\")\n ? await this.schemaContentsFunctions(attachOpaqueData, path, \"AGGREGATE_FUNCTION\", t)\n : [],\n table_functions: has(\"table_function\")\n ? await this.schemaContentsFunctions(attachOpaqueData, path, \"TABLE_FUNCTION\", t)\n : [],\n scalar_macros: has(\"macro\") ? await this.schemaContentsMacros(attachOpaqueData, path, \"SCALAR_MACRO\", t) : [],\n table_macros: has(\"macro\") ? await this.schemaContentsMacros(attachOpaqueData, path, \"TABLE_MACRO\", t) : [],\n indexes: has(\"index\") ? await this.schemaContentsIndexes(attachOpaqueData, path, t) : [],\n });\n }\n return {\n catalog_version: null,\n etag: null,\n source: \"per_schema\",\n not_modified: false,\n fallback_error: fallbackError,\n schemas: out,\n };\n }\n\n /** Detach a previously-attached catalog. */\n async catalogDetach(attachOpaqueData: AttachOpaqueData): Promise<void> {\n await this.rpc.call(\"catalog_detach\", { attach_opaque_data: attachOpaqueData });\n }\n\n /**\n * Create a new catalog.\n *\n * `options` is a plain key→value map; column types are inferred from the\n * value at runtime (see AttachOptionValue). Use `optionsBytes` instead\n * when you need Arrow types the inference can't express. Providing both\n * throws.\n */\n async catalogCreate(\n name: string,\n onConflict: OnCreateConflict,\n options?:\n | Uint8Array\n | { options?: Record<string, AttachOptionValue>; optionsBytes?: Uint8Array },\n ): Promise<void> {\n let wireOptions: Uint8Array | null;\n if (options == null) {\n wireOptions = null;\n } else if (options instanceof Uint8Array) {\n // Backwards-compatible escape hatch: caller pre-serialized the options batch.\n wireOptions = options.byteLength === 0 ? null : options;\n } else {\n if (options.options != null && options.optionsBytes != null) {\n throw new VgiClientError(\n \"catalogCreate: cannot specify both `options` and `optionsBytes`\",\n );\n }\n if (options.optionsBytes != null) {\n wireOptions = options.optionsBytes.byteLength === 0 ? null : options.optionsBytes;\n } else {\n wireOptions = serializeAttachOptions(options.options);\n }\n }\n await this.rpc.call(\"catalog_create\", {\n name,\n on_conflict: onConflict,\n options: wireOptions,\n });\n }\n\n /** Drop a catalog by name. */\n async catalogDrop(name: string): Promise<void> {\n await this.rpc.call(\"catalog_drop\", { name });\n }\n\n /** Get the current catalog version number. */\n async catalogVersion(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<number> {\n const result = await this.rpc.call(\"catalog_version\", {\n attach_opaque_data: attachOpaqueData,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) throw new VgiClientError(\"catalog_version returned null\");\n const inner = unwrapResult(result);\n return Number(inner.version ?? 0);\n }\n\n /** Begin a new transaction. Returns the transaction ID. */\n async transactionBegin(attachOpaqueData: AttachOpaqueData): Promise<Uint8Array> {\n const result = await this.rpc.call(\"catalog_transaction_begin\", {\n attach_opaque_data: attachOpaqueData,\n });\n if (!result) throw new VgiClientError(\"transaction_begin returned null\");\n const inner = unwrapResult(result);\n if (!inner.transaction_opaque_data) {\n throw new VgiClientError(\"transaction_begin returned no transaction_opaque_data\");\n }\n return toUint8Array(inner.transaction_opaque_data);\n }\n\n /** Commit a transaction. */\n async transactionCommit(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_transaction_commit\", {\n attach_opaque_data: attachOpaqueData,\n transaction_opaque_data: transactionOpaqueData,\n });\n }\n\n /** Rollback a transaction. */\n async transactionRollback(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_transaction_rollback\", {\n attach_opaque_data: attachOpaqueData,\n transaction_opaque_data: transactionOpaqueData,\n });\n }\n\n /** List schemas in an attached catalog. */\n async schemas(\n attachOpaqueData: AttachOpaqueData,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<SchemaInfo[]> {\n const result = await this.rpc.call(\"catalog_schemas\", {\n attach_opaque_data: attachOpaqueData,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeSchemaInfo);\n }\n\n /** Get a schema by name, or null if not found. */\n async schemaGet(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<SchemaInfo | null> {\n const result = await this.rpc.call(\"catalog_schema_get\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return null;\n const inner = unwrapResult(result);\n const items = deserializeInfoList(inner.items, decodeSchemaInfo);\n return items.length > 0 ? items[0] : null;\n }\n\n /** Create a new schema. */\n async schemaCreate(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n opts?: {\n onConflict?: OnCreateConflict;\n comment?: string | null;\n tags?: Record<string, string> | null;\n transactionOpaqueData?: TransactionOpaqueData;\n },\n ): Promise<void> {\n const tagsMap = opts?.tags\n ? new Map(Object.entries(opts.tags))\n : null;\n await this.rpc.call(\"catalog_schema_create\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n on_conflict: opts?.onConflict ?? \"error\",\n comment: opts?.comment ?? null,\n tags: tagsMap,\n transaction_opaque_data: opts?.transactionOpaqueData ?? null,\n });\n }\n\n /** Drop a schema by name. */\n async schemaDrop(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n ignoreNotFound?: boolean,\n cascade?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_schema_drop\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n ignore_not_found: ignoreNotFound ?? false,\n cascade: cascade ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** List tables in a schema. */\n async schemaContentsTables(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<TableInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_tables\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeTableInfo);\n }\n\n /** List views in a schema. */\n async schemaContentsViews(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<ViewInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_views\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeViewInfo);\n }\n\n /** List functions in a schema, filtered by type. */\n async schemaContentsFunctions(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n type: CatalogFunctionType,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<FunctionInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_functions\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n type,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeFunctionInfo);\n }\n\n /** List indexes in a schema. */\n async schemaContentsIndexes(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<IndexInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_indexes\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeIndexInfo);\n }\n\n /** Get a table by name, or null if not found. */\n async tableGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<TableInfo | null> {\n const result = await this.rpc.call(\"catalog_table_get\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return null;\n const inner = unwrapResult(result);\n const items = deserializeInfoList(inner.items, decodeTableInfo);\n return items.length > 0 ? items[0] : null;\n }\n\n /** Create a new table. */\n async tableCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columns: Uint8Array,\n onConflict: OnCreateConflict,\n notNullConstraints?: number[],\n uniqueConstraints?: number[][],\n checkConstraints?: string[],\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_create\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n columns,\n on_conflict: onConflict,\n not_null_constraints: notNullConstraints ?? null,\n unique_constraints: uniqueConstraints ?? null,\n check_constraints: checkConstraints ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Drop a table by name. */\n async tableDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n ignoreNotFound?: boolean,\n cascade?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n ignore_not_found: ignoreNotFound ?? false,\n cascade: cascade ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /**\n * Get the scan function for a table — tells DuckDB which function to call\n * to read the table data (e.g. `read_parquet` with a path argument). Used\n * by the VGI extension during query planning.\n */\n async tableScanFunctionGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n atUnit?: string | null,\n atValue?: string | null,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<ScanFunctionResult> {\n const result = await this.rpc.call(\"catalog_table_scan_function_get\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n at_unit: atUnit ?? null,\n at_value: atValue ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) throw new VgiClientError(\"table_scan_function_get returned null\");\n return decodeScanFunctionResult(unwrapResult(result));\n }\n\n /** Set or clear the comment on a table. */\n async tableCommentSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n comment?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_comment_set\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n comment: comment ?? null,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Rename a table. */\n async tableRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_rename\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n new_name: newName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Add a column to a table. */\n async tableColumnAdd(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n columnType: string,\n defaultValue?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_add\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n column_type: columnType,\n default_value: defaultValue ?? null,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Drop a column from a table. */\n async tableColumnDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Rename a column in a table. */\n async tableColumnRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_rename\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n new_name: newName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Set the default value for a column. */\n async tableColumnDefaultSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n defaultValue: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_default_set\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n default_value: defaultValue,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Remove the default value from a column. */\n async tableColumnDefaultDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_default_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /**\n * Change the type of a column.\n *\n * `columnDefinition` is a serialized Arrow Schema with a single field whose\n * name identifies the target column and whose type is the new column type.\n * `expression` is an optional SQL expression used to convert existing values.\n */\n async tableColumnTypeChange(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnDefinition: Uint8Array,\n expression?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_column_type_change\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_definition: columnDefinition,\n expression: expression ?? null,\n ignore_not_found: ignoreNotFound ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Set a NOT NULL constraint on a column. */\n async tableNotNullSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_not_null_set\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Remove a NOT NULL constraint from a column. */\n async tableNotNullDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n columnName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_table_not_null_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n column_name: columnName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Get a view by name, or null if not found. */\n async viewGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<ViewInfo | null> {\n const result = await this.rpc.call(\"catalog_view_get\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return null;\n const inner = unwrapResult(result);\n const items = deserializeInfoList(inner.items, decodeViewInfo);\n return items.length > 0 ? items[0] : null;\n }\n\n /** Create a new view. */\n async viewCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n definition: string,\n onConflict: OnCreateConflict,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_view_create\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n definition,\n on_conflict: onConflict,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Drop a view by name. */\n async viewDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n ignoreNotFound?: boolean,\n cascade?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_view_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n ignore_not_found: ignoreNotFound ?? false,\n cascade: cascade ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Rename a view. */\n async viewRename(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n newName: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_view_rename\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n new_name: newName,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Set or clear the comment on a view. */\n async viewCommentSet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n comment?: string | null,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_view_comment_set\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n comment: comment ?? null,\n ignore_not_found: ignoreNotFound ?? null,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n // ==========================================================================\n // Macro Catalog API\n // ==========================================================================\n\n /** Get a macro by name, or null if not found. */\n async macroGet(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<MacroInfo | null> {\n const result = await this.rpc.call(\"catalog_macro_get\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return null;\n const inner = unwrapResult(result);\n const items = deserializeInfoList(inner.items, decodeMacroInfo);\n return items.length > 0 ? items[0] : null;\n }\n\n /** List macros in a schema, filtered by type. */\n async schemaContentsMacros(\n attachOpaqueData: AttachOpaqueData,\n path: string[] | string,\n type: CatalogMacroType,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<MacroInfo[]> {\n const result = await this.rpc.call(\"catalog_schema_contents_macros\", {\n attach_opaque_data: attachOpaqueData,\n path: normalizeSchemaPath(path),\n type,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n if (!result) return [];\n const inner = unwrapResult(result);\n return deserializeInfoList(inner.items, decodeMacroInfo);\n }\n\n /** Create a new macro. */\n async macroCreate(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n macroType: MacroType,\n parameters: string[],\n definition: string,\n onConflict: OnCreateConflict,\n parameterDefaultValues?: Uint8Array | null,\n argumentsSchema?: Uint8Array | null,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n const innerBatch = batchFromColumns(\n {\n attach_opaque_data: [attachOpaqueData],\n schema_path: [normalizeSchemaPath(schemaPath)],\n name: [name],\n macro_type: [macroType],\n parameters: [parameters],\n definition: [definition],\n on_conflict: [onConflict],\n parameter_default_values: [parameterDefaultValues ?? null],\n arguments_schema: [argumentsSchema ?? null],\n transaction_opaque_data: [transactionOpaqueData ?? null],\n },\n MacroCreateRequestSchema,\n );\n await this.rpc.call(\"catalog_macro_create\", wrapRequest(innerBatch));\n }\n\n /** Drop a macro by name. */\n async macroDrop(\n attachOpaqueData: AttachOpaqueData,\n schemaPath: string[] | string,\n name: string,\n ignoreNotFound?: boolean,\n transactionOpaqueData?: TransactionOpaqueData,\n ): Promise<void> {\n await this.rpc.call(\"catalog_macro_drop\", {\n attach_opaque_data: attachOpaqueData,\n schema_path: normalizeSchemaPath(schemaPath),\n name,\n ignore_not_found: ignoreNotFound ?? false,\n transaction_opaque_data: transactionOpaqueData ?? null,\n });\n }\n\n /** Close the underlying RPC connection. */\n close(): void {\n this.rpc.close();\n }\n}\n",
37
38
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// ArgumentSpec: converts function argument definitions to Arrow schema with VGI metadata keys.\n// Must produce byte-identical schemas to Python's argument_specs_to_schema().\n\nimport { type VgiSchema, schema as schema_, type VgiField, field as field_, type VgiDataType, nullType, deserializeBatch } from \"../arrow/index.js\";\nimport {\n VGI_ARG_KEY,\n VGI_ARG_NAMED,\n VGI_TYPE_KEY,\n VGI_TYPE_TABLE,\n VGI_TYPE_ANY,\n VGI_VARARGS_KEY,\n VGI_VARARGS_TRUE,\n VGI_CONST_KEY,\n VGI_CONST_TRUE,\n VGI_DOC_KEY,\n VGI_DEFAULT_KEY,\n VGI_CHOICES_KEY,\n VGI_RANGE_KEY,\n VGI_PATTERN_KEY,\n} from \"../types.js\";\nimport { ArgumentValidationError } from \"../errors.js\";\n\nexport interface ArgumentSpec {\n name: string;\n position: number | string;\n arrowType: VgiDataType;\n isTableInput?: boolean;\n isAnyType?: boolean;\n isVarargs?: boolean;\n isConst?: boolean;\n doc?: string;\n /**\n * Discovery-facing constraint metadata, pre-encoded to their surfaced UTF-8\n * forms (presence-only — `undefined` means the constraint is absent and the\n * corresponding field-metadata key is omitted entirely). Mirrors Python's\n * `ArgumentSpec.default_json` / `choices_json` / `range_notation` / `pattern`\n * so `argumentSpecsToSchema`/`schemaToArgumentSpecs` round-trip symmetrically.\n */\n defaultJson?: string;\n choicesJson?: string;\n rangeNotation?: string;\n pattern?: string;\n}\n\n/**\n * Raw per-argument constraint declarations, as authored on a function's\n * argument descriptor. Encoded into the pre-computed {@link ArgumentSpec}\n * constraint fields via {@link constraintSpecFields}.\n */\nexport interface ArgumentConstraints {\n /** Closed set of allowed values (JSON-encoded into `vgi_choices`). */\n choices?: readonly unknown[];\n /** Inclusive lower bound (`>=`). */\n ge?: number;\n /** Inclusive upper bound (`<=`). */\n le?: number;\n /** Exclusive lower bound (`>`). */\n gt?: number;\n /** Exclusive upper bound (`<`). */\n lt?: number;\n /** Regex the value must match (surfaced as `vgi_pattern`, as-is). */\n pattern?: string;\n /** Default value (JSON-encoded into `vgi_default`); optional args only. */\n default?: unknown;\n}\n\n/** `JSON.stringify`, falling back to the value's string form when unserializable. */\nfunction safeJson(value: unknown): string {\n try {\n const encoded = JSON.stringify(value);\n // JSON.stringify returns undefined for functions/symbols/undefined.\n if (encoded === undefined) {\n return JSON.stringify(String(value));\n }\n return encoded;\n } catch {\n return JSON.stringify(String(value));\n }\n}\n\n/**\n * Build interval notation from an argument's numeric bounds.\n *\n * Inclusive bounds (`ge`/`le`) render as square brackets, exclusive bounds\n * (`gt`/`lt`) as parentheses, and an open side as `-inf`/`+inf`. Returns\n * `undefined` when the argument has no numeric bound at all.\n *\n * Examples: `ge=0,le=10` -> `\"[0, 10]\"`; `gt=0` -> `\"(0, +inf)\"`;\n * `ge=1,lt=10` -> `\"[1, 10)\"`.\n */\nexport function formatRange(\n ge?: number,\n le?: number,\n gt?: number,\n lt?: number,\n): string | undefined {\n if (ge === undefined && le === undefined && gt === undefined && lt === undefined) {\n return undefined;\n }\n let low: string;\n if (gt !== undefined) {\n low = `(${gt}`;\n } else if (ge !== undefined) {\n low = `[${ge}`;\n } else {\n low = \"(-inf\";\n }\n let high: string;\n if (lt !== undefined) {\n high = `${lt})`;\n } else if (le !== undefined) {\n high = `${le}]`;\n } else {\n high = \"+inf)\";\n }\n return `${low}, ${high}`;\n}\n\n/**\n * Encode raw {@link ArgumentConstraints} into the pre-computed constraint\n * fields of an {@link ArgumentSpec} (presence-only — absent constraints yield\n * no field). `runtimeDefault`, when present, is authoritative for\n * `defaultJson`, keeping runtime binding and discovery metadata in sync.\n * Mirrors Python's `_constraint_kwargs`.\n */\nexport function constraintSpecFields(\n constraints: ArgumentConstraints | undefined,\n runtimeDefault?: unknown,\n): Pick<ArgumentSpec, \"defaultJson\" | \"choicesJson\" | \"rangeNotation\" | \"pattern\"> {\n const fields: Pick<\n ArgumentSpec,\n \"defaultJson\" | \"choicesJson\" | \"rangeNotation\" | \"pattern\"\n > = {};\n // argDefaults is the runtime source of truth. Surface that same value to\n // discovery so callers do not have to duplicate it as\n // argConstraints[name].default. Keep the latter as a backwards-compatible\n // discovery-only fallback for APIs that do not have a runtime default.\n if (runtimeDefault !== undefined) {\n fields.defaultJson = safeJson(runtimeDefault);\n } else if (constraints !== undefined && \"default\" in constraints && constraints.default !== undefined) {\n fields.defaultJson = safeJson(constraints.default);\n }\n if (constraints === undefined) return fields;\n if (constraints.choices !== undefined) {\n fields.choicesJson = safeJson([...constraints.choices]);\n }\n const range = formatRange(\n constraints.ge,\n constraints.le,\n constraints.gt,\n constraints.lt,\n );\n if (range !== undefined) {\n fields.rangeNotation = range;\n }\n if (constraints.pattern !== undefined) {\n fields.pattern = constraints.pattern;\n }\n return fields;\n}\n\n/** Coerce a numeric const value (number or int64 `bigint`) to `number`. */\nfunction toNumber(value: unknown): number | undefined {\n if (typeof value === \"number\") return value;\n if (typeof value === \"bigint\") return Number(value);\n return undefined;\n}\n\n/** Equality for a choice comparison, coercing numeric/bigint operands. */\nfunction choiceEquals(choice: unknown, value: unknown): boolean {\n const cn = toNumber(choice);\n const vn = toNumber(value);\n if (cn !== undefined && vn !== undefined) return cn === vn;\n return choice === value;\n}\n\n/**\n * Narrow a bind-time argument value from Arrow's bigint to a plain number.\n *\n * DuckDB types an integer literal as BIGINT, so `series(3)` arrives as `3n`\n * whether or not anyone wanted 64 bits. Nobody writes `BigInt(1000)` for a page\n * size, so the arg paths narrow — and they now all narrow the same way, which\n * they did not before (two sites used safeNumber, two a bare Number).\n *\n * This is lossy above 2^53, and that is a deliberate call rather than an\n * oversight. Every int64 *argument* across the fixtures and every shipped\n * worker is a small control value — count, page_size, batch_size, increment,\n * lag_minutes, restatement_lookback_days. The large int64s in the test suite\n * are all somewhere else entirely:\n *\n * - column data (copy_to/types.test, copy_to/parallel.test) — never touches\n * this path;\n * - filter-pushdown constants (filter_pushdown/integers.test pins 2^53+1 on\n * purpose) — deserialize.ts keeps those bigint, with its own regression\n * test;\n * - varargs values (constant_columns) — read raw off bindCall.arguments,\n * because extractArgs' copy of them is not what the function reads;\n * - time-travel versions — carried as strings (`at_value`).\n *\n * Preserving the bigint on overflow was tried and reverted: it buys nothing for\n * any argument that exists, and costs a JS type that depends on magnitude, so a\n * worker doing `args.n + 1` would work in every test and fail on one caller's\n * input. If an argument ever genuinely needs the full range — a snowflake id, a\n * nanosecond epoch — the fix is to make int64 arguments bigint by declared\n * type, not by magnitude.\n */\nexport function narrowArgValue(value: unknown): unknown {\n return typeof value === \"bigint\" ? Number(value) : value;\n}\n\n/**\n * Reject a type *factory* where an Arrow *type* was expected.\n *\n * `params: { n: int64 }` (no parentheses) is accepted by the type system —\n * `VgiDataType` is loose enough — and then silently produces an ArgumentSpec\n * whose `arrowType` is a Function. Nothing complains until the schema is\n * serialized or the bind arrives, and the error at that point names neither the\n * argument nor the cause.\n *\n * The mistake is easy to make on purpose, too: the same identifier is a\n * ready-made type on one entry point and a factory on another.\n *\n * @query-farm/vgi int, int32, float32, bool → type instances\n * @query-farm/vgi/worker-cf int, int32, float32, bool → factories\n *\n * So moving a worker to Cloudflare can turn a correct declaration into a\n * silently wrong one with no other edit. Failing here, at definition time,\n * makes that a startup error naming the field.\n */\nexport function assertArrowType(value: unknown, where: string): void {\n if (typeof value === \"function\") {\n const name = (value as { name?: string }).name;\n const call = name ? `${name}()` : \"the factory\";\n throw new ArgumentValidationError(\n `${where} is a type factory, not an Arrow type — call it: ${call}. ` +\n `(Note that int, int32, float32 and bool are ready-made types on ` +\n `@query-farm/vgi but factories on @query-farm/vgi/worker-cf, so the ` +\n `same name may need parentheses on one entry point and not the other. ` +\n `int64(), float64(), utf8() and the rest are factories everywhere.)`,\n );\n }\n if (value === null || value === undefined) {\n throw new ArgumentValidationError(`${where} is ${String(value)}, not an Arrow type.`);\n }\n}\n\n/** {@link assertArrowType} over a record of declared types, e.g. `params`. */\nexport function assertArrowTypes(\n types: Record<string, unknown> | undefined,\n where: string,\n): void {\n if (!types) return;\n for (const [name, type] of Object.entries(types)) {\n assertArrowType(type, `${where}.${name}`);\n }\n}\n\n/**\n * Enforce a bind-time const value against its declared {@link ArgumentConstraints},\n * throwing {@link ArgumentValidationError} on violation. Mirrors the Python SDK's\n * `Arg._validate`: numeric range (`ge`/`le`/`gt`/`lt`), closed choice set, and\n * regex `pattern`. A `null`/`undefined` value skips its value constraints.\n */\nexport function validateConstConstraints(\n name: string,\n constraints: ArgumentConstraints,\n value: unknown,\n): void {\n if (value === null || value === undefined) return;\n\n const num = toNumber(value);\n if (num !== undefined) {\n if (constraints.ge !== undefined && num < constraints.ge) {\n throw new ArgumentValidationError(`argument '${name}' must be >= ${constraints.ge}`);\n }\n if (constraints.le !== undefined && num > constraints.le) {\n throw new ArgumentValidationError(`argument '${name}' must be <= ${constraints.le}`);\n }\n if (constraints.gt !== undefined && num <= constraints.gt) {\n throw new ArgumentValidationError(`argument '${name}' must be > ${constraints.gt}`);\n }\n if (constraints.lt !== undefined && num >= constraints.lt) {\n throw new ArgumentValidationError(`argument '${name}' must be < ${constraints.lt}`);\n }\n }\n\n if (constraints.choices !== undefined && constraints.choices.length > 0) {\n if (!constraints.choices.some((c) => choiceEquals(c, value))) {\n throw new ArgumentValidationError(\n `argument '${name}' must be one of ${JSON.stringify([...constraints.choices])}`,\n );\n }\n }\n\n if (constraints.pattern !== undefined && typeof value === \"string\") {\n let re: RegExp | undefined;\n try {\n re = new RegExp(constraints.pattern);\n } catch {\n re = undefined; // an invalid declared regex must not reject the caller\n }\n if (re !== undefined && !re.test(value)) {\n throw new ArgumentValidationError(\n `argument '${name}' must match pattern ${JSON.stringify(constraints.pattern)}`,\n );\n }\n }\n}\n\nfunction argumentSpecSortKey(spec: ArgumentSpec): [number, number | string] {\n if (typeof spec.position === \"number\") {\n return [0, spec.position];\n }\n return [1, spec.position];\n}\n\n/**\n * Convert ArgumentSpecs to an Arrow Schema with VGI metadata keys.\n * Positional arguments come first (in order), named arguments follow.\n */\nexport function argumentSpecsToSchema(specs: ArgumentSpec[]): VgiSchema {\n const sorted = [...specs].sort((a, b) => {\n const ka = argumentSpecSortKey(a);\n const kb = argumentSpecSortKey(b);\n if (ka[0] !== kb[0]) return ka[0] - kb[0];\n if (typeof ka[1] === \"number\" && typeof kb[1] === \"number\") {\n return ka[1] - kb[1];\n }\n return String(ka[1]).localeCompare(String(kb[1]));\n });\n\n const fields: VgiField[] = [];\n for (const spec of sorted) {\n const metadata: Map<string, string> = new Map();\n\n if (typeof spec.position === \"string\") {\n metadata.set(VGI_ARG_KEY, VGI_ARG_NAMED);\n }\n\n if (spec.isTableInput) {\n metadata.set(VGI_TYPE_KEY, VGI_TYPE_TABLE);\n } else if (spec.isAnyType) {\n metadata.set(VGI_TYPE_KEY, VGI_TYPE_ANY);\n }\n\n if (spec.isVarargs) {\n metadata.set(VGI_VARARGS_KEY, VGI_VARARGS_TRUE);\n }\n\n if (spec.isConst) {\n metadata.set(VGI_CONST_KEY, VGI_CONST_TRUE);\n }\n\n // Per-argument description (UTF-8; presence-only — omit when empty).\n if (spec.doc) {\n metadata.set(VGI_DOC_KEY, spec.doc);\n }\n\n // Per-argument constraint metadata (presence-only; already value-encoded).\n if (spec.defaultJson !== undefined) {\n metadata.set(VGI_DEFAULT_KEY, spec.defaultJson);\n }\n if (spec.choicesJson !== undefined) {\n metadata.set(VGI_CHOICES_KEY, spec.choicesJson);\n }\n if (spec.rangeNotation !== undefined) {\n metadata.set(VGI_RANGE_KEY, spec.rangeNotation);\n }\n if (spec.pattern !== undefined) {\n metadata.set(VGI_PATTERN_KEY, spec.pattern);\n }\n\n const field = field_(\n spec.name,\n spec.arrowType,\n true,\n metadata.size > 0 ? metadata : undefined\n );\n fields.push(field);\n }\n\n return schema_(fields);\n}\n\n// =============================================================================\n// Macro Argument Schemas\n// =============================================================================\n\n/**\n * Build a macro `arguments_schema` describing macro parameters.\n *\n * Mirrors the function `arguments_schema` mechanism: one Arrow field per macro\n * parameter, in `parameters` order, each nullable. The per-parameter\n * description is carried via the same `vgi_doc` field-metadata key functions use\n * (UTF-8, presence-only — the key is omitted entirely when there is no doc). A\n * parameter's field type is the type of its default value when one is known\n * (decoded from `parameterDefaultValues`, a one-row RecordBatch serialized as\n * IPC bytes), else `nullType()`.\n *\n * @param parameters Ordered list of macro parameter names.\n * @param parameterDefaultValues Optional one-row RecordBatch (IPC bytes) whose\n * columns are parameter names with typed default values; used to infer each\n * parameter's field type.\n * @param parameterDocs Optional mapping of parameter name to description. Empty\n * or missing descriptions yield no `vgi_doc` metadata on the field.\n * @returns Arrow schema with one nullable field per parameter, in order.\n */\nexport function macroArgumentsSchema(\n parameters: string[],\n parameterDefaultValues?: Uint8Array | null,\n parameterDocs?: Record<string, string>,\n): VgiSchema {\n const docs = parameterDocs ?? {};\n\n // Map parameter name -> Arrow type from the typed default values, if any.\n const defaultTypes: Map<string, VgiDataType> = new Map();\n if (parameterDefaultValues && parameterDefaultValues.length > 0) {\n const batch = deserializeBatch(parameterDefaultValues);\n for (const f of batch.schema.fields) {\n defaultTypes.set(f.name, f.type);\n }\n }\n\n const fields: VgiField[] = [];\n for (const name of parameters) {\n const metadata: Map<string, string> = new Map();\n const doc = docs[name];\n if (doc) {\n metadata.set(VGI_DOC_KEY, doc);\n }\n const fieldType = defaultTypes.get(name) ?? nullType();\n fields.push(field_(name, fieldType, true, metadata.size > 0 ? metadata : undefined));\n }\n\n return schema_(fields);\n}\n\n/**\n * Extract per-parameter descriptions from a macro `arguments_schema`.\n *\n * Inverse of {@link macroArgumentsSchema}'s `vgi_doc` handling: reads the\n * `vgi_doc` field metadata (UTF-8) for each field. Fields without the key\n * (undocumented) are omitted from the result.\n *\n * @param schema A macro `arguments_schema` (one field per parameter).\n * @returns Mapping of parameter name to description, for documented parameters only.\n */\nexport function macroParameterDocsFromSchema(schema: VgiSchema): Record<string, string> {\n const docs: Record<string, string> = {};\n for (const field of schema.fields) {\n const doc = field.metadata.get(VGI_DOC_KEY);\n if (doc) {\n docs[field.name] = doc;\n }\n }\n return docs;\n}\n\n/**\n * Convert an Arrow Schema back to ArgumentSpecs.\n */\nexport function schemaToArgumentSpecs(schema: VgiSchema): ArgumentSpec[] {\n const specs: ArgumentSpec[] = [];\n let positionIndex = 0;\n\n for (const field of schema.fields) {\n const metadata = field.metadata;\n\n const isNamed = metadata.get(VGI_ARG_KEY) === VGI_ARG_NAMED;\n const position: number | string = isNamed\n ? field.name\n : positionIndex++;\n\n const vgiType = metadata.get(VGI_TYPE_KEY);\n const isTableInput = vgiType === VGI_TYPE_TABLE;\n const isAnyType = vgiType === VGI_TYPE_ANY;\n const isVarargs = metadata.get(VGI_VARARGS_KEY) === VGI_VARARGS_TRUE;\n const isConst = metadata.get(VGI_CONST_KEY) === VGI_CONST_TRUE;\n const doc = metadata.get(VGI_DOC_KEY) ?? \"\";\n\n // Per-argument constraint metadata (absent key -> undefined).\n const defaultJson = metadata.get(VGI_DEFAULT_KEY);\n const choicesJson = metadata.get(VGI_CHOICES_KEY);\n const rangeNotation = metadata.get(VGI_RANGE_KEY);\n const pattern = metadata.get(VGI_PATTERN_KEY);\n\n specs.push({\n name: field.name,\n position,\n arrowType: field.type,\n isTableInput,\n isAnyType,\n isVarargs,\n isConst,\n doc,\n defaultJson,\n choicesJson,\n rangeNotation,\n pattern,\n });\n }\n\n return specs;\n}\n",
38
39
  "// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// SPDX-License-Identifier: LicenseRef-QueryFarm-Source-Available-1.0\n\n// Attach-time option descriptors for declarative worker option discovery.\n// Mirrors `vgi.catalog.attach_option` on the Python side — same Arrow IPC\n// wire format so the C++ extension (which owns ATTACH option validation)\n// sees identical shapes regardless of which language the worker is in.\n//\n// Wire format of one serialized AttachOptionSpec (per\n// vgi-python/vgi/catalog/attach_option.py):\n//\n// RecordBatch of:\n// name: Utf8\n// description: Utf8\n// type: Binary -- serialized Arrow Schema with a single \"value\" field\n// of the option's DataType\n// default_value: Binary nullable -- serialized single-row RecordBatch with\n// the default value under \"value\", or\n// null when no default is declared\n// required: Bool nullable -- the caller must supply this option at ATTACH\n// time. Nullable and appended LAST so a peer\n// that predates the column reads the batch by\n// name and simply doesn't see it; absent and\n// explicit-null both mean \"not required\".\n// secret: Bool nullable -- the option carries a credential. Appended AFTER\n// `required` under the same rule: readers look it\n// up by name, and absent or null reads as false.\n//\n// The extension reads the outer `attach_option_specs: list<binary>` column\n// from CatalogInfo and validates user-supplied ATTACH options against the\n// per-spec declared type before forwarding them to the worker.\n\nimport {\n type VgiDataType,\n schema as makeSchema,\n field,\n utf8,\n binary,\n bool,\n batchFromColumns,\n iterRows,\n serializeBatch,\n deserializeBatch,\n serializeSchema,\n deserializeSchema,\n} from \"../arrow/index.js\";\nimport { toUint8Array } from \"../util/bytes.js\";\n\n/**\n * Declarative spec for a single attach-time option.\n *\n * The catalog's `catalogsInfo()` emits these (serialized) in\n * `CatalogInfo.attach_option_specs` so the DuckDB extension can validate\n * user-supplied ATTACH options and cast them to the declared type before\n * forwarding to the worker's `catalog_attach` handler.\n */\nexport interface AttachOptionSpec {\n /** Option name — matches the key users pass in the ATTACH statement. */\n name: string;\n /** Human-readable description (shown in discovery UIs). */\n description: string;\n /** Arrow data type the extension should cast user input to. */\n type: VgiDataType;\n /**\n * Default value used when the user omits this option. Passed through to\n * the worker's catalog_attach handler as-is if no override is given.\n * Use `null` for \"no default\" (an unset option will then be absent from\n * the options dict delivered to attach()).\n */\n default?: unknown;\n /**\n * The caller must supply this option at ATTACH time. A catalog that cannot\n * be attached without it advertises that fact at discovery, so a client can\n * say so before attempting the attach rather than surfacing a failure that\n * reads like an empty catalog.\n *\n * Mutually exclusive with `default` — an option that falls back to a value\n * is by definition satisfiable without the caller.\n */\n required?: boolean;\n /**\n * The option carries a credential: an API key, a token, a password, or\n * anything else that must not be shown, stored or logged in plain text.\n *\n * Credential options **MUST** be declared `secret: true`. The value is still\n * passed inline as an ordinary ATTACH option; the flag tells the DuckDB\n * extension to redact it from `duckdb_databases()`, keep only a salted hash\n * of it in its result-cache key, and never log it. Clients use the flag to\n * mask the field and keep the value out of shared links and exported\n * configuration.\n *\n * To keep the credential out of the SQL text itself, pass it as an\n * expression:\n *\n * ```sql\n * ATTACH 'sales' (TYPE vgi, LOCATION 'https://worker.example.com',\n * api_key getenv('SALES_API_KEY'));\n * ```\n *\n * Combines with `required` (a credential the catalog cannot attach without,\n * which a client can then ask for before attaching). It is allowed together\n * with `default`, but a secret option normally has none: a default would be\n * a credential shipped in the catalog's own discovery metadata.\n *\n * Defaults to `false`. On the wire it is a nullable `secret` Bool column\n * appended after `required`; a peer that predates it reads it as `false`.\n */\n secret?: boolean;\n}\n\nconst SPEC_SCHEMA = makeSchema([\n field(\"name\", utf8(), false),\n field(\"description\", utf8(), false),\n field(\"type\", binary(), false),\n field(\"default_value\", binary(), true),\n field(\"required\", bool(), true),\n field(\"secret\", bool(), true),\n]);\n\n/**\n * Serialize an AttachOptionSpec to the wire format the extension expects\n * (one IPC-serialized RecordBatch with a single row).\n */\nexport function serializeAttachOptionSpec(spec: AttachOptionSpec): Uint8Array {\n // Mirrors AttachOptionSpec.__post_init__ on the Python side: an option that\n // falls back to a value is always satisfiable without the caller, so the\n // combination is a declaration bug rather than a runtime condition.\n if (spec.required && spec.default !== undefined && spec.default !== null) {\n throw new Error(\n `Attach option '${spec.name}' is required but also declares a default ` +\n `(${JSON.stringify(spec.default)}); an option with a default is always ` +\n \"satisfiable without the caller. Drop one.\",\n );\n }\n\n // `type` is encoded as a serialized Arrow Schema with one field named\n // \"value\" of the option's DataType. This lets the extension peek at the\n // logical type without a separate enum.\n const typeSchema = makeSchema([field(\"value\", spec.type, true)]);\n const typeBytes = serializeSchema(typeSchema);\n\n let defaultBytes: Uint8Array | null = null;\n if (spec.default !== undefined && spec.default !== null) {\n // Build a 1-row batch with one column \"value\" of the option's type.\n const defaultBatch = batchFromColumns(\n { value: [spec.default] },\n typeSchema,\n );\n defaultBytes = serializeBatch(defaultBatch);\n }\n\n const batch = batchFromColumns(\n {\n name: [spec.name],\n description: [spec.description],\n type: [typeBytes],\n default_value: [defaultBytes],\n // Written explicitly rather than left null so a reader sees `false`, not\n // NULL, for an option that simply isn't required.\n required: [spec.required ?? false],\n // Same reasoning: an ordinary option reads `false`, not NULL.\n secret: [spec.secret ?? false],\n },\n SPEC_SCHEMA,\n );\n return serializeBatch(batch);\n}\n\n/**\n * Convenience: serialize many specs at once for CatalogInfo.attach_option_specs.\n */\nexport function serializeAttachOptionSpecs(\n specs: Iterable<AttachOptionSpec>,\n): Uint8Array[] {\n return Array.from(specs, serializeAttachOptionSpec);\n}\n\n/**\n * Deserialize one AttachOptionSpec from the wire format above.\n *\n * Reads by column name, so a spec written by a peer that predates the\n * `required` or `secret` column deserializes with that flag `false` rather\n * than failing — the same tolerance the Python and C++ readers have.\n */\nexport function deserializeAttachOptionSpec(\n bytes: Uint8Array,\n): AttachOptionSpec {\n const row = [...iterRows(deserializeBatch(bytes))][0] as\n | Record<string, unknown>\n | undefined;\n if (row === undefined) {\n throw new Error(\"Cannot deserialize AttachOptionSpec from an empty batch\");\n }\n\n // `type` is a serialized Arrow Schema whose single \"value\" field carries the\n // option's DataType.\n const typeSchema = deserializeSchema(toUint8Array(row.type as Uint8Array));\n const type = typeSchema.fields[0]!.type;\n\n let value: unknown;\n const defaultBytes = row.default_value;\n if (defaultBytes != null) {\n const asBytes = toUint8Array(defaultBytes as Uint8Array);\n if (asBytes.length > 0) {\n const defaultRow = [...iterRows(deserializeBatch(asBytes))][0] as\n | Record<string, unknown>\n | undefined;\n value = defaultRow?.value;\n }\n }\n\n return {\n name: String(row.name),\n description: String(row.description ?? \"\"),\n type,\n ...(value === undefined || value === null ? {} : { default: value }),\n required: row.required === true,\n secret: row.secret === true,\n };\n}\n\n/** Deserialize many specs — the shape `CatalogInfo.attach_option_specs` holds. */\nexport function deserializeAttachOptionSpecs(\n specs: Iterable<Uint8Array>,\n): AttachOptionSpec[] {\n return Array.from(specs, deserializeAttachOptionSpec);\n}\n\n/**\n * Raised when `attach` omits options declared `required`.\n *\n * Carries the option names in `missing` so a caller can act on them without\n * parsing the message. Mirrors `MissingAttachOptionsError` on the Python side,\n * message included — the extension's integration suite matches on its text.\n */\nexport class MissingAttachOptionsError extends Error {\n readonly missing: string[];\n\n constructor(catalogName: string, missing: string[]) {\n const joined = missing.map((name) => `'${name}'`).join(\", \");\n super(\n `Catalog '${catalogName}' cannot be attached without the required ` +\n `option${missing.length > 1 ? \"s\" : \"\"} ${joined}.`,\n );\n this.name = \"MissingAttachOptionsError\";\n this.missing = missing;\n }\n}\n\n/**\n * Throw if any `required` spec has no corresponding entry in `options`.\n *\n * Option names are matched case-insensitively, mirroring DuckDB's handling of\n * ATTACH option keys.\n *\n * @throws {MissingAttachOptionsError} If a required option was not supplied.\n */\nexport function validateRequiredAttachOptions(\n catalogName: string,\n specs: Iterable<AttachOptionSpec>,\n options: Record<string, unknown>,\n): void {\n const supplied = new Set(Object.keys(options).map((key) => key.toLowerCase()));\n const missing = Array.from(specs)\n .filter((spec) => spec.required && !supplied.has(spec.name.toLowerCase()))\n .map((spec) => spec.name);\n if (missing.length > 0) {\n throw new MissingAttachOptionsError(catalogName, missing);\n }\n}\n"
39
40
  ],
40
- "mappings": ";;;;;;;;;;;;;;;;AAOO,IAAM,SAAS;AAAA,EACpB,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,KAAK;AAAA,EACL,UAAU;AAAA,EACV,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AACd;AAGO,SAAS,KAAK,CAAC,GAAyB;AAAA,EAAE,OAAO,EAAE,WAAW,OAAO;AAAA;AAErE,SAAS,QAAQ,CAAC,GAAyB;AAAA,EAChD,OAAO,EAAE,WAAW,OAAO,UAAU,EAAE,WAAW,OAAO;AAAA;AAKpD,SAAS,MAAM,CAAC,GAAyB;AAAA,EAAE,OAAO,EAAE,WAAW,OAAO;AAAA;AAMtE,SAAS,MAAM,CAAC,GAAyB;AAAA,EAAE,OAAO,EAAE,WAAW,OAAO;AAAA;AACtE,SAAS,QAAQ,CAAC,GAAyB;AAAA,EAAE,OAAO,EAAE,WAAW,OAAO;AAAA;AAIxE,SAAS,KAAK,CAAC,GAAyB;AAAA,EAAE,OAAO,EAAE,WAAW,OAAO;AAAA;AAErE,SAAS,YAAY,CAAC,GAAyB;AAAA,EAAE,OAAO,EAAE,WAAW,OAAO;AAAA;AAiB5E,SAAS,aAAa,CAAC,GAA2C;AAAA,EACvE,IAAI,KAAK;AAAA,IAAM,OAAO;AAAA,EACtB,MAAM,IAAI;AAAA,EACV,MAAM,OAAO,MACX,MAAM,QAAQ,EAAE,QAAQ,IACpB,EAAE,SAAS,IAAI,CAAC,MAAW,GAAG,GAAG,QAAQ,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,IACtF;AAAA,EACN,QAAQ,EAAE;AAAA,SACH,OAAO;AAAA,MACV,OAAO,MAAM,EAAE,WAAY,EAAE,YAAY,EAAE,UAAU,OAAQ,KAAK;AAAA,SAC/D,OAAO;AAAA,MACV,OAAO,QAAQ,EAAE;AAAA,SACd,OAAO;AAAA,MACV,OAAO,UAAU,EAAE,YAAY,OAAO,EAAE,aAAa,EAAE;AAAA,SACpD,OAAO;AAAA,SACP,OAAO;AAAA,SACP,OAAO;AAAA,MACV,OAAO,GAAG,EAAE,UAAU,EAAE;AAAA,SACrB,OAAO;AAAA,MACV,OAAO,MAAM,EAAE,QAAQ,EAAE,YAAY;AAAA,SAClC,OAAO;AAAA,MACV,OAAO,MAAM,EAAE;AAAA,SACZ,OAAO;AAAA,MACV,OAAO,OAAO,EAAE,aAAa,EAAE;AAAA,SAC5B,OAAO;AAAA,MACV,OAAO,OAAO,EAAE,YAAY,EAAE,UAAU,KAAK;AAAA,SAC1C,OAAO;AAAA,SACP,OAAO;AAAA,SACP,OAAO;AAAA,MACV,OAAO,GAAG,EAAE,UAAU,KAAK;AAAA,SACxB,OAAO;AAAA,MACV,OAAO,SAAS,EAAE,QAAQ,KAAK;AAAA,SAC5B,OAAO;AAAA,MACV,OAAO,QAAQ,cAAc,EAAE,UAAU,KAAK,cAAc,EAAE,OAAO,KACnE,EAAE,WAAW,EAAE,aAAa;AAAA;AAAA,MAM9B,OAAO,MAAM,QAAQ,EAAE,QAAQ,IAAI,GAAG,EAAE,UAAU,KAAK,OAAO,OAAO,EAAE,MAAM;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzGnF;AAAA,YACE;AAAA,WACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,WACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,aACA;AAAA,aACA;AAAA,aACA;AAAA,UACA;AAAA,eACA;AAAA,YACA;AAAA,iBACA;AAAA,aACA;AAAA,WACA;AAAA,UACA;AAAA,eACA;AAAA,cACA;AAAA,cACA;AAAA,UACA;AAAA,YACA;AAAA,UACA;AAAA,gBACA;AAAA,iBACA;AAAA,gBACA;AAAA,qBACA;AAAA,mBACA;AAAA,cACA;AAAA,cACA;AAAA,kBACA;AAAA,eACA;AAAA;AAUK,IAAM,WAAW;AAAA,EACtB,QAAQ,WAAW;AAAA,EACnB,aAAa,WAAW;AAAA,EACxB,aAAa,WAAW;AAAA,EACxB,YAAY,WAAW;AACzB;AAEO,IAAM,WAAW;AAAA,EACtB,KAAK,WAAW;AAAA,EAChB,aAAa,WAAW;AAC1B;AAEO,IAAM,eAAe;AAAA,EAC1B,YAAY,eAAe;AAAA,EAC3B,UAAU,eAAe;AAAA,EACzB,gBAAgB,eAAe;AACjC;AAEO,IAAM,YAAY;AAAA,EACvB,QAAQ,YAAY;AAAA,EACpB,OAAO,YAAY;AACrB;AAIO,SAAS,MAAM,CACpB,QACA,UACW;AAAA,EACX,OAAO,IAAI,SACT,QACA,YAAY,IAAI,GAClB;AAAA;AAGK,SAAS,KAAK,CACnB,MACA,MACA,WAAW,MACX,UACU;AAAA,EACV,OAAO,IAAI,QACT,MACA,MACA,UACA,YAAY,IAAI,GAClB;AAAA;AAKK,IAAM,WAAW,MAAmB,IAAI;AACxC,IAAM,OAAO,MAAmB,IAAI;AAEpC,IAAM,OAAO,MAAmB,IAAI;AACpC,IAAM,QAAQ,MAAmB,IAAI;AACrC,IAAM,QAAQ,MAAmB,IAAI;AACrC,IAAM,QAAQ,MAAmB,IAAI;AACrC,IAAM,QAAQ,MAAmB,IAAI;AACrC,IAAM,SAAS,MAAmB,IAAI;AACtC,IAAM,SAAS,MAAmB,IAAI;AACtC,IAAM,SAAS,MAAmB,IAAI;AACtC,SAAS,GAAG,CAAC,WAA6B,IAAI,SAAS,MAAmB;AAAA,EAC/E,IAAI,QAAQ;AAAA,IACV,QAAQ;AAAA,WACD;AAAA,QAAG,OAAO,KAAK;AAAA,WACf;AAAA,QAAI,OAAO,MAAM;AAAA,WACjB;AAAA,QAAI,OAAO,MAAM;AAAA,WACjB;AAAA,QAAI,OAAO,MAAM;AAAA;AAAA,EAE1B,EAAO;AAAA,IACL,QAAQ;AAAA,WACD;AAAA,QAAG,OAAO,MAAM;AAAA,WAChB;AAAA,QAAI,OAAO,OAAO;AAAA,WAClB;AAAA,QAAI,OAAO,OAAO;AAAA,WAClB;AAAA,QAAI,OAAO,OAAO;AAAA;AAAA;AAAA,EAG3B,MAAM,IAAI,MAAM,6BAA6B,UAAU;AAAA;AAGlD,IAAM,UAAU,MAAmB,IAAI;AACvC,IAAM,UAAU,MAAmB,IAAI;AACvC,IAAM,UAAU,MAAmB,IAAI;AAEvC,IAAM,OAAO,MAAmB,IAAI;AACpC,IAAM,YAAY,MAAmB,IAAI;AACzC,IAAM,SAAS,MAAmB,IAAI;AACtC,IAAM,cAAc,MAAmB,IAAI;AAC3C,IAAM,kBAAkB,CAAC,cAC9B,IAAI,kBAAkB,SAAS;AAI1B,SAAS,OAAO,CACrB,WACA,OACA,WAAgC,KACnB;AAAA,EAMb,OAAO,IAAI,UAAU,OAAO,WAAW,QAAQ;AAAA;AAE1C,IAAM,aAAa,CAAC,WAAmB,UAC5C,QAAQ,WAAW,OAAO,GAAG;AACxB,IAAM,aAAa,CAAC,WAAmB,UAC5C,QAAQ,WAAW,OAAO,GAAG;AAIxB,IAAM,OAAO,CAAC,OAAe,WAAW,gBAC7C,IAAI,OAAO,IAAI;AACV,IAAM,UAAU,MAAmB,KAAK,WAAW,GAAG;AACtD,IAAM,kBAAkB,MAAmB,KAAK,WAAW,WAAW;AAEtE,SAAS,IAAI,CAAC,OAAe,WAAW,aAAa,UAAiC;AAAA,EAC3F,MAAM,KAAK,aAAa,QAAQ,WAAW,cAAc,KAAK;AAAA,EAC9D,OAAO,IAAI,OAAO,MAAM,EAAE;AAAA;AAErB,IAAM,aAAa,MAAmB,KAAK,WAAW,QAAQ,EAAE;AAChE,IAAM,kBAAkB,MAAmB,KAAK,WAAW,aAAa,EAAE;AAC1E,IAAM,kBAAkB,MAAmB,KAAK,WAAW,aAAa,EAAE;AAC1E,IAAM,iBAAiB,MAAmB,KAAK,WAAW,YAAY,EAAE;AAExE,IAAM,YAAY,CACvB,OAAe,WAAW,aAC1B,WAA0B,SACV,IAAI,YAAY,MAAM,QAAQ;AAEzC,IAAM,WAAW,CAAC,OAAe,WAAW,gBACjD,IAAI,WAAW,IAAI;AAEd,IAAM,WAAW,CAAC,OAAe,eAAe,mBACrD,IAAI,WAAW,IAAI;AAId,SAAS,IAAI,CAAC,OAA4C;AAAA,EAC/D,MAAM,aAAa,QAAQ,KAAK,IAAI,QAAQ,MAAM,QAAQ,OAAsB,IAAI;AAAA,EACpF,OAAO,IAAI,OAAO,UAAqB;AAAA;AAGlC,SAAS,aAAa,CAAC,OAA+B,UAA+B;AAAA,EAC1F,MAAM,aAAa,QAAQ,KAAK,IAAI,QAAQ,MAAM,QAAQ,OAAsB,IAAI;AAAA,EACpF,OAAO,IAAI,gBAAgB,UAAU,UAAqB;AAAA;AAGrD,SAAS,MAAM,CAAC,UAA4C;AAAA,EACjE,OAAO,IAAI,SAAS,QAAqB;AAAA;AAGpC,SAAS,GAAG,CACjB,UACA,YACA,aAAa,OACA;AAAA,EACb,MAAM,IAAI,QAAQ,QAAQ,IAAI,WAAW,MAAM,OAAO,UAAyB,KAAK;AAAA,EACpF,MAAM,IAAI,QAAQ,UAAU,IAAI,aAAa,MAAM,SAAS,YAA2B,IAAI;AAAA,EAE3F,MAAM,UAAU,MAAM,WAAW,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AAAA,EACtD,OAAO,IAAI,MAAM,SAAoB,UAAU;AAAA;AAG1C,SAAS,UAAU,CACxB,WACA,YAAyB,MAAM,GAC/B,UAAU,OACV,IACa;AAAA,EACb,OAAO,IAAI,aACT,WACA,WACA,IACA,OACF;AAAA;AAGK,SAAS,KAAK,CACnB,MACA,UACA,SACa;AAAA,EACb,MAAM,cAAc,SAAS,IAAI,CAAC,GAAG,MACnC,QAAQ,CAAC,IAAI,IAAI,MAAM,OAAO,CAAC,GAAG,GAAkB,IAAI,CAC1D;AAAA,EACA,MAAM,MAAM,WAAW,YAAY,IAAI,CAAC,GAAG,MAAM,CAAC;AAAA,EAClD,MAAM,OAAO,SAAS,YAAY,QAAQ,eAAe;AAAA,EACzD,OAAO,IAAI,KAAK,KAAK,WAAwB;AAAA;AAGxC,IAAM,cAAc,CACzB,UACA,YACgB,MAAM,YAAY,QAAQ,UAAU,OAAO;AAEtD,IAAM,aAAa,CACxB,UACA,YACgB,MAAM,YAAY,OAAO,UAAU,OAAO;AAI5D,SAAS,OAAO,CAAC,GAA0C;AAAA,EACzD,OAAO,OAAQ,EAAe,SAAS,YAAa,EAAe,QAAQ;AAAA;;AC9P7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,SAAS,SAAS,CAAC,OAAmB;AAAA,EACpC,MAAM,OAAO,MAAM;AAAA,EAEnB,IAAI,SAAS,OAAO,IAAI,GAAG;AAAA,IACzB,MAAM,aAAc,KAAc,SAAS;AAAA,IAC3C,OAAO,SAAS;AAAA,MACd;AAAA,MACA,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,OAAO,UAAU,UAAU;AAAA,MAC3B,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,SAAS,MAAM,IAAI,GAAG;AAAA,IACxB,MAAM,eAAgB,KAAc,SAAS;AAAA,IAC7C,OAAO,SAAS;AAAA,MACd;AAAA,MACA,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,OAAO,UAAU,YAAY;AAAA,MAC7B,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,SAAS,SAAS,IAAI,GAAG;AAAA,IAC3B,MAAM,WAAW,KAAK,SAAS,IAAI,CAAC,UAAiB,UAAU,KAAK,CAAC;AAAA,IACrE,OAAO,SAAS,EAAE,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAAA,EAC7D;AAAA,EAEA,OAAO,SAAS,EAAE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;AAAA;AAS5C,SAAS,UAAU,CAAC,QAAyC;AAAA,EAClE,MAAM,IAAI;AAAA,EACV,MAAM,WAAW,EAAE,OAAO,IAAI,CAAC,MAAa,UAAU,CAAC,CAAC;AAAA,EAExD,MAAM,aAAa,IAAI,OAAO,EAAE,MAAM;AAAA,EACtC,MAAM,OAAO,SAAS;AAAA,IACpB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AAAA,EAED,OAAO,IAAI,YAAY,GAAG,IAAI;AAAA;;AC7DhC;AAAA,iBACE;AAAA,YAGA;AAAA,cAEA;AAAA,qBACA;AAAA;;;ACiCF,IAAM,aAAa;AAyBnB,SAAS,SAAS,CAAC,GAAqB;AAAA,EACtC,OAAO,MAAM,QAAQ,MAAM;AAAA;AAG7B,SAAS,GAAG,CAAC,OAAe,KAAa,OAAuB;AAAA,EAC9D,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,QACE,OAAO,UAAU,WACb,GAAG,WACH,OAAO,UAAU,WACf,OAAO,UAAU,SAAS,KAAK,KAAK,IACpC,OAAO,KAAK;AAAA,IACpB,MAAM;AAAA,IACN,QAAQ;AAAA;AAAA,EAEV,MAAM,IAAI,UAAU,SAAS,WAAW,YAAY,OAAO,UAAU,QAAQ;AAAA;AAQ/E,SAAS,QAAQ,CAAC,OAAe,OAAoC;AAAA,EACnE,MAAM,OAAO,CAAC,UAA4B;AAAA,IACxC,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,MAAM,KAAK;AAAA,IACX,OAAO;AAAA;AAAA,EAET,OAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AAAA;AAGF,SAAS,YAAY,CAAC,OAAe;AAAA,EACnC,OAAO,CAAC,MAAe;AAAA,IACrB,IAAI,OAAO,MAAM;AAAA,MAAW,IAAI,OAAO,oBAAoB,CAAC;AAAA;AAAA;AAKhE,SAAS,cAAc,CAAC,OAAe,KAAa,KAAa;AAAA,EAC/D,OAAO,CAAC,MAAe;AAAA,IACrB,IAAI;AAAA,IACJ,IAAI,OAAO,MAAM;AAAA,MAAU,IAAI;AAAA,IAC1B,SAAI,OAAO,MAAM,UAAU;AAAA,MAC9B,IAAI,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,GAAG;AAAA,QAAG,IAAI,OAAO,iBAAiB,eAAe,CAAC;AAAA,MACpF;AAAA,IACF,EAAO;AAAA,aAAO,IAAI,OAAO,mBAAmB,CAAC;AAAA,IAC7C,IAAI,CAAC,OAAO,UAAU,CAAC;AAAA,MAAG,IAAI,OAAO,uBAAuB,CAAC;AAAA,IAC7D,IAAI,IAAI,OAAO,IAAI;AAAA,MAAK,IAAI,OAAO,gBAAgB,gBAAgB,QAAQ,QAAQ,CAAC;AAAA;AAAA;AAIxF,SAAS,UAAU,CAAC,OAAe;AAAA,EACjC,OAAO,CAAC,MAAe;AAAA,IACrB,IAAI,OAAO,MAAM;AAAA,MAAU;AAAA,IAC3B,IAAI,OAAO,MAAM;AAAA,MAAU;AAAA,IAC3B,IAAI,OAAO,mBAAmB,CAAC;AAAA;AAAA;AAInC,SAAS,WAAW,CAAC,OAAe,MAAc,QAAiB;AAAA,EACjE,MAAM,MAAM,UAAU,MAAM,OAAO,OAAO,CAAC,KAAK,MAAM,MAAM,OAAO,IAAI,KAAK;AAAA,EAC5E,MAAM,MAAM,SAAS,EAAE,MAAM,OAAO,OAAO,CAAC,KAAK;AAAA,EACjD,OAAO,CAAC,MAAe;AAAA,IACrB,IAAI;AAAA,IACJ,IAAI,OAAO,MAAM;AAAA,MAAU,IAAI;AAAA,IAC1B,SAAI,OAAO,MAAM,UAAU;AAAA,MAC9B,IAAI,CAAC,OAAO,UAAU,CAAC;AAAA,QAAG,IAAI,OAAO,uBAAuB,CAAC;AAAA,MAC7D,IAAI,OAAO,CAAC;AAAA,IACd,EAAO;AAAA,aAAO,IAAI,OAAO,mBAAmB,CAAC;AAAA,IAC7C,IAAI,IAAI,OAAO,IAAI;AAAA,MAAK,IAAI,OAAO,gBAAgB,eAAe,CAAC;AAAA;AAAA;AAIvE,SAAS,WAAW,CAAC,OAAe;AAAA,EAClC,OAAO,CAAC,MAAe;AAAA,IACrB,IAAI,OAAO,MAAM;AAAA,MAAU,IAAI,OAAO,mBAAmB,CAAC;AAAA;AAAA;AAK9D,SAAS,cAAc,CAAC,OAAe,GAAoB;AAAA,EACzD,IAAI,OAAO,MAAM;AAAA,IAAU,OAAO;AAAA,EAClC,IAAI,OAAO,MAAM,UAAU;AAAA,IACzB,IAAI,CAAC,OAAO,UAAU,CAAC;AAAA,MAAG,IAAI,OAAO,6BAA6B,CAAC;AAAA,IACnE,OAAO,OAAO,CAAC;AAAA,EACjB;AAAA,EACA,OAAO,IAAI,OAAO,6BAA6B,CAAC;AAAA;AAIlD,SAAS,kBAAkB,CAAC,OAAe,GAAmB;AAAA,EAC5D,IAAI,IAAI,CAAC,qBAAqB,IAAI,mBAAmB;AAAA,IACnD,IAAI,OAAO,oEAAoE,CAAC;AAAA,EAClF;AAAA,EACA,OAAO,OAAO,CAAC;AAAA;AAQjB,SAAS,YAAY,GAAU;AAAA,EAC7B,MAAM,QAAQ;AAAA,EACd,OAAO;AAAA,IACL;AAAA,IACA,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,iBAAiB,MAAM;AAAA,QACzB,MAAM,KAAK,MAAM,QAAQ;AAAA,QACzB,IAAI,OAAO,MAAM,EAAE;AAAA,UAAG,IAAI,OAAO,gBAAgB,KAAK;AAAA,QACtD,IAAI,KAAK,eAAe,GAAG;AAAA,UAGzB,OAAO,KAAK,MAAM,KAAK,UAAU;AAAA,QACnC;AAAA,QACA,OAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,OAAO,UAAU,UAAU;AAAA,QAC7B,IAAI,CAAC,OAAO,UAAU,KAAK;AAAA,UAAG,IAAI,OAAO,iCAAiC,KAAK;AAAA,QAC/E,OAAO;AAAA,MACT;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QAAU,OAAO,mBAAmB,OAAO,KAAK;AAAA,MACrE,OAAO,IAAI,OAAO,2CAA2C,KAAK;AAAA;AAAA,IAEpE,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI;AAAA,MACJ,IAAI,OAAO,UAAU,UAAU;AAAA,QAC7B,IAAI,CAAC,OAAO,UAAU,KAAK;AAAA,UAAG,IAAI,OAAO,2CAA2C,KAAK;AAAA,QACzF,OAAO;AAAA,MACT,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,QACpC,OAAO,mBAAmB,OAAO,KAAK;AAAA,MACxC,EAAO,SAAI,iBAAiB,MAAM;AAAA,QAChC,OAAO;AAAA,MACT,EAAO;AAAA,eAAO,IAAI,OAAO,oCAAoC,KAAK;AAAA,MAClE,MAAM,KAAK,OAAO;AAAA,MAClB,MAAM,IAAI,IAAI,KAAK,EAAE;AAAA,MACrB,IAAI,OAAO,MAAM,EAAE,QAAQ,CAAC;AAAA,QAAG,IAAI,OAAO,uCAAuC,KAAK;AAAA,MACtF,OAAO;AAAA;AAAA,IAGT,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,OAAO,UAAU,UAAU;AAAA,QAC7B,IAAI,CAAC,OAAO,UAAU,KAAK;AAAA,UAAG,IAAI,OAAO,qCAAqC,KAAK;AAAA,QACnF,OAAO;AAAA,MACT;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QAAU,OAAO,mBAAmB,OAAO,KAAK;AAAA,MACrE,OAAO,IAAI,OAAO,wCAAwC,KAAK;AAAA;AAAA,IAEjE,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,OAAO,UAAU,UAAU;AAAA,QAC7B,IAAI,CAAC,OAAO,UAAU,KAAK;AAAA,UAAG,IAAI,OAAO,2CAA2C,KAAK;AAAA,QACzF,OAAO;AAAA,MACT;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QAAU,OAAO,mBAAmB,OAAO,KAAK;AAAA,MACrE,IAAI,iBAAiB,MAAM;AAAA,QACzB,MAAM,KAAK,MAAM,QAAQ;AAAA,QACzB,IAAI,OAAO,MAAM,EAAE;AAAA,UAAG,IAAI,OAAO,gBAAgB,KAAK;AAAA,QACtD,OAAO,KAAK,MAAM,KAAK,UAAU;AAAA,MACnC;AAAA,MACA,OAAO,IAAI,OAAO,oCAAoC,KAAK;AAAA;AAAA,EAE/D;AAAA;AAIF,SAAS,eAAe,GAAU;AAAA,EAChC,MAAM,QAAQ;AAAA,EACd,OAAO;AAAA,IACL;AAAA,IACA,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,iBAAiB,MAAM;AAAA,QACzB,MAAM,KAAK,MAAM,QAAQ;AAAA,QACzB,IAAI,OAAO,MAAM,EAAE;AAAA,UAAG,IAAI,OAAO,gBAAgB,KAAK;AAAA,QACtD,OAAO,OAAO,EAAE;AAAA,MAClB;AAAA,MACA,IAAI,OAAO,UAAU;AAAA,QAAU,OAAO;AAAA,MACtC,IAAI,OAAO,UAAU,UAAU;AAAA,QAC7B,IAAI,CAAC,OAAO,UAAU,KAAK;AAAA,UAAG,IAAI,OAAO,+BAA+B,KAAK;AAAA,QAC7E,OAAO,OAAO,KAAK;AAAA,MACrB;AAAA,MACA,OAAO,IAAI,OAAO,yCAAyC,KAAK;AAAA;AAAA,IAElE,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,iBAAiB;AAAA,QAAM,OAAO;AAAA,MAClC,MAAM,KAAK,eAAe,OAAO,KAAK;AAAA,MACtC,MAAM,IAAI,mBAAmB,OAAO,EAAE;AAAA,MACtC,MAAM,IAAI,IAAI,KAAK,CAAC;AAAA,MACpB,IAAI,OAAO,MAAM,EAAE,QAAQ,CAAC;AAAA,QAAG,IAAI,OAAO,qCAAqC,KAAK;AAAA,MACpF,OAAO;AAAA;AAAA,IAGT,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,iBAAiB;AAAA,QAAM,OAAO,IAAI,OAAO,kDAAkD,KAAK;AAAA,MACpG,OAAO,eAAe,OAAO,KAAK;AAAA;AAAA,IAEpC,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,iBAAiB;AAAA,QAAM,OAAO,OAAO,MAAM,QAAQ,CAAC;AAAA,MACxD,OAAO,eAAe,OAAO,KAAK;AAAA;AAAA,EAEtC;AAAA;AAQF,SAAS,WAAW,GAAU;AAAA,EAC5B,MAAM,QAAQ;AAAA,EACd,MAAM,UAAU,CAAC,UAA4B;AAAA,IAC3C,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,IAAI,OAAO,UAAU,UAAU;AAAA,MAC7B,IAAI,CAAC,OAAO,UAAU,KAAK;AAAA,QAAG,IAAI,OAAO,mCAAmC,KAAK;AAAA,MACjF,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO,mBAAmB,OAAO,KAAK;AAAA,IACrE,OAAO,IAAI,OAAO,mCAAmC,KAAK;AAAA;AAAA,EAE5D,MAAM,YAAY,CAAC,UAA4B;AAAA,IAC7C,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO;AAAA,IACtC,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO,mBAAmB,OAAO,KAAK;AAAA,IACrE,OAAO,IAAI,OAAO,6BAA6B,KAAK;AAAA;AAAA,EAEtD,OAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AAAA;AAIF,SAAS,eAAe,CAAC,OAAsB;AAAA,EAC7C,MAAM,OAAO,CAAC,UAA4B;AAAA,IACxC,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,OAAO,eAAe,OAAO,KAAK;AAAA;AAAA,EAEpC,OAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AAAA;AAIF,SAAS,mBAAmB,CAAC,MAA+B;AAAA,EAC1D,MAAM,KAAK,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,EACvE,IAAI,KAAK;AAAA,EACT,SAAS,IAAI,GAAG,SAAS,EAAG,KAAK,GAAG;AAAA,IAAK,KAAM,MAAM,KAAM,OAAO,GAAG,EAAE;AAAA,EACvE,IAAI,GAAG,SAAS,KAAM,GAAG,GAAG,SAAS,KAAK;AAAA,IAAO,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC;AAAA,EACjF,OAAO;AAAA;AAMT,SAAS,YAAY,GAAU;AAAA,EAC7B,MAAM,QAAQ;AAAA,EACd,MAAM,UAAU,CAAC,UAA4B;AAAA,IAC3C,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO;AAAA,IACtC,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO,eAAe,OAAO,KAAK;AAAA,IACjE,IAAI,YAAY,OAAO,KAAK;AAAA,MAAG,OAAO,oBAAoB,KAAwB;AAAA,IAClF,OAAO,IAAI,OAAO,iDAAiD,KAAK;AAAA;AAAA,EAE1E,MAAM,YAAY,CAAC,UAA4B;AAAA,IAC7C,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,OAAO,QAAQ,KAAK;AAAA;AAAA,EAEtB,OAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AAAA;AAOF,SAAS,WAAW,CAAC,MAA0B;AAAA,EAC7C,MAAM,WAAY,KAAa;AAAA,EAC/B,MAAM,cAAc,SAAS,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,SAAS,EAAE,IAAI,EAAE,EAAE;AAAA,EACnF,MAAM,QAAQ;AAAA,EACd,OAAO;AAAA,IACL;AAAA,IACA,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,OAAO,UAAU;AAAA,QAAU,IAAI,OAAO,sBAAsB,KAAK;AAAA,MACrE,MAAM,MAAM;AAAA,MACZ,MAAM,MAA+B,CAAC;AAAA,MACtC,aAAa,MAAM,WAAW,aAAa;AAAA,QACzC,IAAI,QAAQ,MAAM,gBAAgB,IAAI,SAAS,IAAI;AAAA,MACrD;AAAA,MACA,OAAO;AAAA;AAAA,IAET,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,OAAO,UAAU;AAAA,QAAU,IAAI,OAAO,sBAAsB,KAAK;AAAA,MACrE,MAAM,MAAM;AAAA,MACZ,MAAM,MAA+B,CAAC;AAAA,MACtC,aAAa,MAAM,WAAW,aAAa;AAAA,QACzC,IAAI,QAAQ,MAAM,gBAAgB,IAAI,SAAS,IAAI;AAAA,MACrD;AAAA,MACA,OAAO;AAAA;AAAA,IAET,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,OAAO,UAAU;AAAA,QAAU,IAAI,OAAO,sBAAsB,KAAK;AAAA,MACrE,MAAM,MAAM;AAAA,MACZ,MAAM,MAA+B,CAAC;AAAA,MACtC,aAAa,MAAM,WAAW,aAAa;AAAA,QACzC,IAAI,QAAQ,MAAM,eAAe,IAAI,SAAS,IAAI;AAAA,MACpD;AAAA,MACA,OAAO;AAAA;AAAA,IAET,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI,OAAO,UAAU;AAAA,QAAU,IAAI,OAAO,sBAAsB,KAAK;AAAA,MACrE,MAAM,MAAM;AAAA,MACZ,MAAM,MAA+B,CAAC;AAAA,MACtC,aAAa,MAAM,WAAW,aAAa;AAAA,QACzC,IAAI,QAAQ,MAAM,eAAe,IAAI,SAAS,IAAI;AAAA,MACpD;AAAA,MACA,OAAO;AAAA;AAAA,EAEX;AAAA;AAGF,SAAS,SAAS,CAAC,MAA0B;AAAA,EAC3C,MAAM,aAAc,KAAa,WAAW;AAAA,EAC5C,IAAI,CAAC;AAAA,IAAY,MAAM,IAAI,MAAM,2CAA2C;AAAA,EAC5E,MAAM,QAAQ,SAAS,WAAW,IAAmB;AAAA,EACrD,MAAM,QAAQ;AAAA,EACd,MAAM,UAAU,CAAC,UAA8B;AAAA,IAC7C,IAAI,MAAM,QAAQ,KAAK;AAAA,MAAG,OAAO;AAAA,IACjC,IAAI,SAAS,QAAQ,OAAQ,MAAc,OAAO,cAAc,YAAY;AAAA,MAC1E,OAAO,MAAM,KAAK,KAA0B;AAAA,IAC9C;AAAA,IACA,OAAO,IAAI,OAAO,iCAAiC,KAAK;AAAA;AAAA,EAE1D,OAAO;AAAA,IACL;AAAA,IACA,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,MAAM,gBAAgB,CAAC,CAAC;AAAA;AAAA,IAE3D,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,MAAM,gBAAgB,CAAC,CAAC;AAAA;AAAA,IAE3D,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,MAAM,eAAe,CAAC,CAAC;AAAA;AAAA,IAE1D,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,MAAM,eAAe,CAAC,CAAC;AAAA;AAAA,EAE5D;AAAA;AAGF,SAAS,QAAQ,CAAC,MAA0B;AAAA,EAE1C,MAAM,UAAW,KAAa,WAAW;AAAA,EACzC,MAAM,gBAAgB,SAAS,MAAM;AAAA,EACrC,IAAI,CAAC,iBAAiB,cAAc,SAAS,GAAG;AAAA,IAC9C,MAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AAAA,EACA,MAAM,WAAW,SAAS,cAAc,GAAG,IAAmB;AAAA,EAC9D,MAAM,aAAa,SAAS,cAAc,GAAG,IAAmB;AAAA,EAChE,MAAM,QAAQ;AAAA,EAEd,MAAM,UAAU,CAAC,UAA8C;AAAA,IAC7D,IAAI,MAAM,QAAQ,KAAK;AAAA,MAAG,OAAO;AAAA,IACjC,IAAI,iBAAiB;AAAA,MAAK,OAAO,MAAM,KAAK,MAAM,QAAQ,CAAC;AAAA,IAC3D,IAAI,SAAS,QAAQ,OAAQ,MAAc,OAAO,cAAc,YAAY;AAAA,MAC1E,OAAO,MAAM,KAAK,KAAqC;AAAA,IACzD;AAAA,IACA,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU;AAAA,MAC9C,OAAO,OAAO,QAAQ,KAAgC;AAAA,IACxD;AAAA,IACA,OAAO,IAAI,OAAO,2CAA2C,KAAK;AAAA;AAAA,EAEpE,OAAO;AAAA,IACL;AAAA,IACA,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO;AAAA,QACpC,SAAS,gBAAgB,CAAC;AAAA,QAC1B,WAAW,gBAAgB,CAAC;AAAA,MAC9B,CAAC;AAAA;AAAA,IAEH,eAAe,CAAC,OAAO;AAAA,MACrB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO;AAAA,QACpC,SAAS,gBAAgB,CAAC;AAAA,QAC1B,WAAW,gBAAgB,CAAC;AAAA,MAC9B,CAAC;AAAA;AAAA,IAEH,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO;AAAA,QACpC,SAAS,eAAe,CAAC;AAAA,QACzB,WAAW,eAAe,CAAC;AAAA,MAC7B,CAAC;AAAA;AAAA,IAEH,cAAc,CAAC,OAAO;AAAA,MACpB,IAAI,UAAU,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO;AAAA,QACpC,SAAS,eAAe,CAAC;AAAA,QACzB,WAAW,eAAe,CAAC;AAAA,MAC7B,CAAC;AAAA;AAAA,EAEL;AAAA;AAGF,SAAS,eAAe,CAAC,MAA0B;AAAA,EAEjD,MAAM,YAAa,KAAa;AAAA,EAChC,IAAI,CAAC;AAAA,IAAW,MAAM,IAAI,MAAM,kDAAkD;AAAA,EAGlF,MAAM,QAAQ,SAAS,SAAS;AAAA,EAChC,OAAO;AAAA,IACL,OAAO,cAAc,MAAM;AAAA,IAC3B,iBAAiB,CAAC,MAAM,MAAM,gBAAgB,CAAC;AAAA,IAC/C,iBAAiB,CAAC,MAAM,MAAM,gBAAgB,CAAC;AAAA,IAC/C,gBAAgB,CAAC,MAAM,MAAM,eAAe,CAAC;AAAA,IAC7C,gBAAgB,CAAC,MAAM,MAAM,eAAe,CAAC;AAAA,EAC/C;AAAA;AAOF,IAAM,OAAO,SAAS,QAAQ,eAAe,QAAQ,MAAM,GAAG,CAAC;AAC/D,IAAM,QAAQ,SAAS,SAAS,eAAe,SAAS,QAAQ,KAAK,CAAC;AACtE,IAAM,QAAQ,SAAS,SAAS,eAAe,SAAS,aAAa,UAAU,CAAC;AAChF,IAAM,QAAQ,SAAS,SAAS,eAAe,SAAS,GAAG,GAAG,CAAC;AAC/D,IAAM,SAAS,SAAS,UAAU,eAAe,UAAU,GAAG,KAAK,CAAC;AACpE,IAAM,SAAS,SAAS,UAAU,eAAe,UAAU,GAAG,UAAU,CAAC;AACzE,IAAM,QAAQ,SAAS,SAAS,YAAY,SAAS,IAAI,IAAI,CAAC;AAC9D,IAAM,SAAS,SAAS,UAAU,YAAY,UAAU,IAAI,KAAK,CAAC;AAClE,IAAM,QAAQ,SAAS,SAAS,WAAW,OAAO,CAAC;AACnD,IAAM,OAAO,SAAS,QAAQ,aAAa,MAAM,CAAC;AAKlD,IAAM,OAAc;AAAA,EAClB,OAAO;AAAA,EACP,eAAe,CAAC,OAAO;AAAA,IACrB,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AAAA;AAAA,EAEzD,eAAe,CAAC,OAAO;AAAA,IACrB,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,YAAY,MAAM,EAAE,KAAK;AAAA,IACzB,OAAO;AAAA;AAAA,EAET,cAAc,CAAC,OAAO;AAAA,IACpB,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AAAA;AAAA,EAEzD,cAAc,CAAC,OAAO;AAAA,IACpB,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,YAAY,MAAM,EAAE,KAAK;AAAA,IACzB,OAAO;AAAA;AAEX;AAGA,SAAS,YAAY,CAAC,OAAe,YAAqB;AAAA,EACxD,OAAO,CAAC,UAA4B;AAAA,IAClC,IAAI,UAAU,KAAK;AAAA,MAAG,OAAO;AAAA,IAC7B,IAAI;AAAA,IACJ,IAAI,iBAAiB;AAAA,MAAY,KAAK;AAAA,IACjC,SAAI,YAAY,OAAO,KAAK,GAAG;AAAA,MAClC,MAAM,IAAI;AAAA,MACV,KAAK,IAAI,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU;AAAA,IAC1D,EAAO;AAAA,aAAO,IAAI,OAAO,uBAAuB,KAAK;AAAA,IACrD,IAAI,cAAc,QAAQ,GAAG,WAAW,YAAY;AAAA,MAClD,IAAI,OAAO,oBAAoB,oBAAoB,KAAK;AAAA,IAC1D;AAAA,IACA,OAAO;AAAA;AAAA;AAIX,SAAS,UAAU,CAAC,OAAe,YAA4B;AAAA,EAC7D,MAAM,OAAO,aAAa,OAAO,UAAU;AAAA,EAC3C,OAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AAAA;AAGF,IAAM,SAAS,WAAW,QAAQ;AAClC,IAAM,aAAoB;AAAA,EACxB,OAAO;AAAA,EACP,iBAAiB,MAAM;AAAA,EACvB,iBAAiB,MAAM;AAAA,EACvB,gBAAgB,MAAM;AAAA,EACtB,gBAAgB,MAAM;AACxB;AAOO,SAAS,QAAQ,CAAC,MAA0B;AAAA,EACjD,QAAQ,KAAK;AAAA,SACN,OAAO;AAAA,MACV,OAAO;AAAA,SACJ,OAAO;AAAA,MACV,OAAO;AAAA,SACJ,OAAO,KAAK;AAAA,MACf,MAAM,KAAM,KAAa,YAAY;AAAA,MACrC,MAAM,SAAU,KAAa,YAAa,KAAa,UAAU;AAAA,MACjE,IAAI,OAAO;AAAA,QAAI,OAAO,SAAS,QAAQ;AAAA,MACvC,IAAI,QAAQ;AAAA,QACV,IAAI,OAAO;AAAA,UAAG,OAAO;AAAA,QACrB,IAAI,OAAO;AAAA,UAAI,OAAO;AAAA,QACtB,OAAO;AAAA,MACT;AAAA,MACA,IAAI,OAAO;AAAA,QAAG,OAAO;AAAA,MACrB,IAAI,OAAO;AAAA,QAAI,OAAO;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,SACK,OAAO;AAAA,MACV,OAAO;AAAA,SACJ,OAAO;AAAA,SACP,OAAO;AAAA,MACV,OAAO;AAAA,SACJ,OAAO;AAAA,SACP,OAAO;AAAA,MACV,OAAO;AAAA,SACJ,OAAO;AAAA,MACV,OAAO,WAAW,mBAAoB,KAAa,aAAc,KAAa,MAAM;AAAA,SACjF,OAAO;AAAA,MACV,OAAO,aAAa;AAAA,SACjB,OAAO;AAAA,MAEV,OAAQ,KAAa,SAAS,IAAI,aAAa,IAAI,gBAAgB;AAAA,SAChE,OAAO;AAAA,MAEV,QAAS,KAAa,YAAY,QAAQ,KAAK,gBAAgB,QAAQ,IAAI,YAAY;AAAA,SACpF,OAAO;AAAA,MACV,OAAO,gBAAgB,WAAW;AAAA,SAC/B,OAAO;AAAA,MACV,OAAO,gBAAgB,UAAU;AAAA,SAC9B,OAAO;AAAA,MACV,OAAO,YAAY,IAAI;AAAA,SACpB,OAAO;AAAA,MAGV,OAAO,SAAS,SAAS,MAAM,EAAE;AAAA,SAC9B,OAAO;AAAA,SACP,OAAO;AAAA,MACV,OAAO,UAAU,IAAI;AAAA,SAClB,OAAO;AAAA,MACV,OAAO,SAAS,IAAI;AAAA,SACjB,OAAO;AAAA,MACV,OAAO,gBAAgB,IAAI;AAAA,SACxB,OAAO;AAAA,MAEV,OAAO,SAAS,YAAY,MAAM,EAAE;AAAA;AAAA,MAIpC,OAAO,SAAS,QAAQ,KAAK,UAAU,MAAM,EAAE;AAAA;AAAA;;;ACroBrD;AAAA,cAIE;AAAA,cACA;AAAA,cACA;AAAA;AAAA;AAgBK,SAAS,oBAAoB,CAClC,MACA,WACe;AAAA,EACf,OAAO,gBAAgB,WAAW,IAAgB;AAAA;AAGpD,SAAS,eAAe,CAAC,QAAmB,MAAqB;AAAA,EAC/D,IAAI,UAAS,OAAO,IAAI;AAAA,IAAG,OAAO,cAAc,QAAQ,IAAY;AAAA,EACpE,IAAI,UAAS,gBAAgB,IAAI;AAAA,IAAG,OAAO,uBAAuB,QAAQ,IAAqB;AAAA,EAC/F,IAAI,UAAS,MAAM,IAAI;AAAA,IAAG,OAAO,aAAa,QAAQ,IAAY;AAAA,EAClE,IAAI,UAAS,SAAS,IAAI;AAAA,IAAG,OAAO,gBAAgB,QAAQ,IAAc;AAAA,EAC1E,IAAI,UAAS,UAAU,IAAI;AAAA,IAAG,OAAO,iBAAiB,QAAQ,IAAI;AAAA,EAOlE,IAAI,UAAS,OAAO,IAAI,KAAK,UAAS,OAAO,IAAI,KAC7C,UAAS,YAAY,IAAI,KAAK,UAAS,WAAW,IAAI,GAAG;AAAA,IAC3D,MAAM,WAAW,iBAAiB,IAAI;AAAA,IACtC,IAAI,aAAa;AAAA,MAAI,OAAO,gBAAgB,QAAQ,IAAI;AAAA,IACxD,OAAO,eAAe,QAAQ,IAAI;AAAA,EACpC;AAAA,EAGA,IAAI,UAAS,MAAM,IAAI,KAAM,KAAa,aAAa,IAAI;AAAA,IACzD,OAAO,gBAAgB,QAAQ,IAAI;AAAA,EACrC;AAAA,EAIA,OAAO,gBAAgB,QAAiB,IAAI,EAAE,KAAK;AAAA;AAIrD,SAAS,gBAAgB,CAAC,MAAmB;AAAA,EAC3C,IAAI,UAAS,OAAO,IAAI;AAAA,IAAG,OAAO,KAAK,SAAS,UAAS,MAAM,KAAK;AAAA,EACpE,IAAI,UAAS,OAAO,IAAI;AAAA,IAAG,OAAO,KAAK,YAAY;AAAA,EACnD,OAAO;AAAA;AAGT,SAAS,cAAc,CAAC,QAAmB,MAAqB;AAAA,EAC9D,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,MAAM,IAAI,WAAW,MAAM;AAAA,EACjC,MAAM,aAAa,IAAI,WAAW,KAAK,KAAK,SAAS,CAAC,CAAC;AAAA,EACvD,IAAI,YAAY;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,QAAQ,KAAK;AAAA,IAC/B,MAAM,IAAI,OAAO;AAAA,IACjB,IAAI,MAAM,QAAQ,MAAM,WAAW;AAAA,MAAE;AAAA,MAAa;AAAA,IAAU;AAAA,IAC5D,WAAW,KAAK,MAAM,MAAM,IAAI;AAAA,IAChC,IAAI,KAAK,OAAO,MAAM,WAAW,OAAO,CAAC,IAAK;AAAA,EAChD;AAAA,EACA,OAAO,UAAS;AAAA,IACd;AAAA,IAAM;AAAA,IACN,YAAY,YAAY,IAAI,aAAa;AAAA,IACzC,MAAM;AAAA,IAAK;AAAA,EACb,CAAQ;AAAA;AAGV,SAAS,eAAe,CAAC,QAAmB,MAAqB;AAAA,EAC/D,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,SAAS,IAAI,cAAc,MAAM;AAAA,EACvC,MAAM,aAAa,IAAI,WAAW,KAAK,KAAK,SAAS,CAAC,CAAC;AAAA,EACvD,IAAI,YAAY;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,QAAQ,KAAK;AAAA,IAC/B,MAAM,IAAI,OAAO;AAAA,IACjB,IAAI,MAAM,QAAQ,MAAM,WAAW;AAAA,MAAE;AAAA,MAAa;AAAA,IAAU;AAAA,IAC5D,WAAW,KAAK,MAAM,MAAM,IAAI;AAAA,IAChC,OAAO,KAAK,OAAO,MAAM,WAAW,IAAI,OAAO,CAAW;AAAA,EAC5D;AAAA,EACA,MAAM,OAAO,IAAI,WAAW,OAAO,MAAM;AAAA,EACzC,OAAO,UAAS;AAAA,IACd;AAAA,IAAM;AAAA,IACN,YAAY,YAAY,IAAI,aAAa;AAAA,IACzC;AAAA,IAAM;AAAA,EACR,CAAQ;AAAA;AAGV,SAAS,gBAAgB,CAAC,QAAmB,MAAqB;AAAA,EAChE,MAAM,YAAqB,KAAa,cAAe,KAAa,WAAY,KAAa,WAAW,IAAI;AAAA,EAC5G,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,MAAM,IAAI,WAAW,SAAS,SAAS;AAAA,EAC7C,MAAM,aAAa,IAAI,WAAW,KAAK,KAAK,SAAS,CAAC,CAAC;AAAA,EACvD,IAAI,YAAY;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,QAAQ,KAAK;AAAA,IAC/B,MAAM,MAAM,OAAO;AAAA,IACnB,IAAI,QAAQ,QAAQ,QAAQ,WAAW;AAAA,MAAE;AAAA,MAAa;AAAA,IAAU;AAAA,IAChE,WAAW,KAAK,MAAM,MAAM,IAAI;AAAA,IAChC,IAAI;AAAA,IACJ,IAAI,eAAe,YAAY;AAAA,MAC7B,QAAQ;AAAA,IACV,EAAO,SAAI,YAAY,OAAO,GAAG,GAAG;AAAA,MAClC,MAAM,OAAO;AAAA,MACb,QAAQ,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,IACtE,EAAO;AAAA,MACL,QAAQ,qBAAqB,MAAM,GAAG,GAAG,SAAS;AAAA;AAAA,IAEpD,IAAI,IAAI,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,SAAS;AAAA,EACrD;AAAA,EACA,OAAO,UAAS;AAAA,IACd;AAAA,IAAM;AAAA,IACN,YAAY,YAAY,IAAI,aAAa;AAAA,IACzC,MAAM,IAAI,YAAY,IAAI,QAAQ,IAAI,YAAY,IAAI,aAAa,CAAC;AAAA,IACpE;AAAA,EACF,CAAQ;AAAA;AAGV,SAAS,KAAK,CAAC,GAAoB;AAAA,EACjC,OAAO,OAAO,MAAM,WAAW,IAAI,OAAO,KAAK,MAAM,OAAO,CAAC,CAAC,CAAC;AAAA;AAIjE,SAAS,oBAAoB,CAAC,OAAe,WAA+B;AAAA,EAC1E,MAAM,QAAQ,IAAI,WAAW,SAAS;AAAA,EACtC,IAAI,IAAI;AAAA,EACR,IAAI,IAAI;AAAA,IAAI,KAAK,MAAM,OAAO,YAAY,CAAC,KAAK;AAAA,EAChD,SAAS,IAAI,EAAG,IAAI,WAAW,KAAK;AAAA,IAClC,MAAM,KAAK,OAAO,IAAI,KAAK;AAAA,IAC3B,MAAM;AAAA,EACR;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,aAAa,CAAC,QAAmB,UAAqB;AAAA,EAC7D,MAAM,aAAa,SAAS,SAAS;AAAA,EACrC,MAAM,UAAU,OAAO;AAAA,EACvB,MAAM,UAAU,IAAI,WAAW,UAAU,CAAC;AAAA,EAC1C,MAAM,WAAsB,CAAC;AAAA,EAC7B,MAAM,aAAa,IAAI,WAAW,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA,EACxD,IAAI,YAAY;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,SAAS,KAAK;AAAA,IAChC,QAAQ,KAAK,SAAS;AAAA,IACtB,MAAM,MAAM,OAAO;AAAA,IACnB,IAAI,OAAO,MAAM;AAAA,MACf;AAAA,IACF,EAAO;AAAA,MACL,WAAW,KAAK,MAAM,MAAM,IAAI;AAAA,MAChC,MAAM,QAAQ,MAAM,QAAQ,GAAG,IAAI,MAC9B,OAAQ,IAAY,OAAO,cAAc,aAAc,MAAM,KAAK,GAAwB,IAC3F;AAAA,MACJ,IAAI;AAAA,QAAO,WAAW,QAAQ;AAAA,UAAO,SAAS,KAAK,IAAI;AAAA;AAAA,EAE3D;AAAA,EACA,QAAQ,WAAW,SAAS;AAAA,EAC5B,MAAM,YAAY,SAAS,SAAS,IAChC,gBAAgB,UAAU,WAAW,IAAI,IACzC,iBAAiB,WAAW,IAAI;AAAA,EACpC,OAAO,UAAS;AAAA,IACd,MAAM;AAAA,IAAU,QAAQ;AAAA,IAAS;AAAA,IACjC,YAAY,YAAY,IAAI,aAAa;AAAA,IACzC,OAAO;AAAA,IAAW,QAAQ;AAAA,IAAG,cAAc;AAAA,EAC7C,CAAC;AAAA;AAWH,SAAS,sBAAsB,CAAC,QAAmB,MAA0B;AAAA,EAC3E,MAAM,aAAa,KAAK,SAAS;AAAA,EACjC,MAAM,WAAW,KAAK;AAAA,EACtB,MAAM,UAAU,OAAO;AAAA,EACvB,MAAM,WAAsB,CAAC;AAAA,EAC7B,MAAM,aAAa,IAAI,WAAW,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA,EACxD,IAAI,YAAY;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,SAAS,KAAK;AAAA,IAChC,MAAM,MAAM,OAAO;AAAA,IACnB,IAAI,OAAO,MAAM;AAAA,MAEf;AAAA,MACA,SAAS,IAAI,EAAG,IAAI,UAAU;AAAA,QAAK,SAAS,KAAK,IAAI;AAAA,MACrD;AAAA,IACF;AAAA,IACA,WAAW,KAAK,MAAM,MAAM,IAAI;AAAA,IAChC,MAAM,QAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,MAAM,KAAK,GAAwB;AAAA,IAC5E,IAAI,MAAM,WAAW,UAAU;AAAA,MAC7B,MAAM,IAAI,UACR,mBAAmB,kBAAkB,SAAS,MAAM,cACtD;AAAA,IACF;AAAA,IACA,WAAW,QAAQ;AAAA,MAAO,SAAS,KAAK,IAAI;AAAA,EAC9C;AAAA,EACA,MAAM,YAAY,SAAS,SAAS,IAChC,gBAAgB,UAAU,WAAW,IAAI,IACzC,iBAAiB,WAAW,IAAI;AAAA,EACpC,OAAO,UAAS;AAAA,IACd;AAAA,IAAM,QAAQ;AAAA,IAAS;AAAA,IACvB,YAAY,YAAY,IAAI,aAAa;AAAA,IACzC,OAAO;AAAA,EACT,CAAC;AAAA;AAGH,SAAS,YAAY,CAAC,QAAmB,SAAoB;AAAA,EAC3D,MAAM,UAAU,OAAO;AAAA,EACvB,MAAM,eAAe,QAAQ,SAAS;AAAA,EACtC,MAAM,WAAY,aAAa,KAAa,SAAS;AAAA,EACrD,MAAM,aAAc,aAAa,KAAa,SAAS;AAAA,EACvD,MAAM,UAAU,IAAI,WAAW,UAAU,CAAC;AAAA,EAC1C,MAAM,UAAqB,CAAC;AAAA,EAC5B,MAAM,YAAuB,CAAC;AAAA,EAC9B,MAAM,aAAa,IAAI,WAAW,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA,EACxD,IAAI,YAAY;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,SAAS,KAAK;AAAA,IAChC,QAAQ,KAAK,QAAQ;AAAA,IACrB,MAAM,MAAM,OAAO;AAAA,IACnB,IAAI,OAAO,MAAM;AAAA,MACf;AAAA,IACF,EAAO;AAAA,MACL,WAAW,KAAK,MAAM,MAAM,IAAI;AAAA,MAEhC,MAAM,QAAmC,MAAM,QAAQ,GAAG,IAAI,MAC1D,eAAe,MAAM,MAAM,KAAK,IAAI,QAAQ,CAAC,IAC5C,OAAQ,IAAY,OAAO,cAAc,aAAc,MAAM,KAAK,GAAU,IAC5E,OAAO,QAAQ,WAAY,OAAO,QAAQ,GAAU,IACrD,CAAC;AAAA,MACL,YAAY,GAAG,MAAM,OAAO;AAAA,QAAE,QAAQ,KAAK,CAAC;AAAA,QAAG,UAAU,KAAK,CAAC;AAAA,MAAG;AAAA;AAAA,EAEtE;AAAA,EACA,QAAQ,WAAW,QAAQ;AAAA,EAC3B,MAAM,UAAU,QAAQ,SAAS,IAC7B,gBAAgB,SAAS,SAAS,IAAI,IACtC,iBAAiB,SAAS,IAAI;AAAA,EAClC,MAAM,YAAY,UAAU,SAAS,IACjC,gBAAgB,WAAW,WAAW,IAAI,IAC1C,iBAAiB,WAAW,IAAI;AAAA,EACpC,MAAM,cAAc,UAAS;AAAA,IAC3B,MAAM,aAAa;AAAA,IAAM,QAAQ,QAAQ;AAAA,IACzC,UAAU,CAAC,SAAS,SAAS;AAAA,IAAG,WAAW;AAAA,EAC7C,CAAC;AAAA,EACD,OAAO,UAAS;AAAA,IACd,MAAM;AAAA,IAAS,QAAQ;AAAA,IAAS;AAAA,IAChC,YAAY,YAAY,IAAI,aAAa;AAAA,IACzC,OAAO;AAAA,IAAa,QAAQ;AAAA,IAAG,cAAc;AAAA,EAC/C,CAAC;AAAA;AAGH,SAAS,eAAe,CAAC,QAAmB,YAAyB;AAAA,EACnE,MAAM,cAAc,WAAW;AAAA,EAC/B,MAAM,UAAU,OAAO;AAAA,EACvB,MAAM,aAAa,IAAI,WAAW,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA,EACxD,IAAI,YAAY;AAAA,EAChB,MAAM,cAA2B,YAAY,IAAI,MAAM,CAAC,CAAC;AAAA,EACzD,SAAS,IAAI,EAAG,IAAI,SAAS,KAAK;AAAA,IAChC,MAAM,MAAM,OAAO;AAAA,IACnB,IAAI,OAAO,MAAM;AAAA,MACf;AAAA,MACA,SAAS,IAAI,EAAG,IAAI,YAAY,QAAQ;AAAA,QAAK,YAAY,GAAG,KAAK,IAAI;AAAA,IACvE,EAAO;AAAA,MACL,WAAW,KAAK,MAAM,MAAM,IAAI;AAAA,MAChC,SAAS,IAAI,EAAG,IAAI,YAAY,QAAQ,KAAK;AAAA,QAC3C,MAAM,OAAO,YAAY,GAAG;AAAA,QAC5B,YAAY,GAAG,KAAK,IAAI,SAAS,IAAI,MAAM,IAAI;AAAA,MACjD;AAAA;AAAA,EAEJ;AAAA,EACA,MAAM,WAAW,YAAY,IAAI,CAAC,IAAI,QAAQ,gBAAgB,YAAY,MAAM,GAAG,IAAI,CAAC;AAAA,EACxF,OAAO,UAAS;AAAA,IACd,MAAM;AAAA,IAAY,QAAQ;AAAA,IAAS;AAAA,IACnC,YAAY,YAAY,IAAI,aAAa;AAAA,IAAW;AAAA,EACtD,CAAC;AAAA;AAGH,SAAS,gBAAgB,CAAC,MAAqB;AAAA,EAC7C,IAAI,UAAS,OAAO,IAAI,GAAG;AAAA,IACzB,OAAO,UAAS;AAAA,MACd;AAAA,MAAM,QAAQ;AAAA,MAAG,WAAW;AAAA,MAC5B,OAAO,iBAAkB,KAAc,SAAS,GAAG,IAAI;AAAA,MACvD,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAS,MAAM,IAAI,GAAG;AAAA,IACxB,OAAO,UAAS;AAAA,MACd;AAAA,MAAM,QAAQ;AAAA,MAAG,WAAW;AAAA,MAC5B,OAAO,iBAAkB,KAAc,SAAS,GAAG,IAAI;AAAA,MACvD,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC;AAAA,IAClC,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAS,gBAAgB,IAAI,GAAG;AAAA,IAClC,OAAO,UAAS;AAAA,MACd;AAAA,MAAM,QAAQ;AAAA,MAAG,WAAW;AAAA,MAC5B,OAAO,iBAAkB,KAAuB,SAAS,GAAG,IAAI;AAAA,IAClE,CAAC;AAAA,EACH;AAAA,EACA,IAAI,UAAS,SAAS,IAAI,GAAG;AAAA,IAC3B,MAAM,WAAY,KAAa,SAAS,IAAI,CAAC,OAAc,iBAAiB,GAAG,IAAI,CAAC;AAAA,IACpF,OAAO,UAAS,EAAE,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAAA,EAC7D;AAAA,EACA,OAAO,UAAS,EAAE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;AAAA;AAc5C,SAAS,kBAAkB,CAChC,MACA,QACA,OACS;AAAA,EACT,MAAM,MAAM;AAAA,EACZ,MAAM,OAAO,KAAK,OAAO;AAAA,EACzB,OAAO,aAAa,MAAkB,KAAK,MAAM,KAAK;AAAA;AAIxD,SAAS,OAAO,CAAC,KAAU,MAAW,OAAwB;AAAA,EAC5D,IAAI,OAAO,KAAK,YAAY;AAAA,IAAY,OAAO,IAAI,QAAQ,KAAK;AAAA,EAChE,MAAM,SAAS,MAAM;AAAA,EACrB,IAAI,UAAU,OAAO,SAAS,GAAG;AAAA,IAC/B,QAAS,OAAO,SAAS,OAAO,QAAQ,KAAM,OAAO;AAAA,EACvD;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,YAAY,CAAC,MAAgB,KAAU,MAAW,OAAwB;AAAA,EACjF,IAAI,CAAC,QAAQ,KAAK,MAAM,KAAK;AAAA,IAAG,OAAO;AAAA,EACvC,MAAM,MAAM,KAAK;AAAA,EAEjB,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO,IAAI,IAAI,KAAK;AAAA,SACjB,GAAG;AAAA,MACN,MAAM,KAAM,KAAa,YAAY;AAAA,MACrC,MAAM,IAAI,MAAM,SAAS;AAAA,MACzB,IAAI,OAAO;AAAA,QAAI,OAAO,OAAO,MAAM,WAAW,IAAI,OAAO,CAAC;AAAA,MAC1D,OAAO,OAAO,CAAC;AAAA,IACjB;AAAA,SACK;AAAA,MACH,OAAO,OAAO,MAAM,SAAS,MAAM;AAAA,SAChC;AAAA,SACA;AAAA,MACH,OAAO,OAAO,IAAI,IAAI,KAAK,CAAC;AAAA,SACzB;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAO,QAAQ,IAAI,IAAI,KAAK,CAAC;AAAA,SAC1B;AAAA,MACH,OAAO,gBAAgB,MAAM,MAAM,KAAK;AAAA,SACrC,GAAG;AAAA,MACN,MAAM,IAAI,MAAM,SAAS;AAAA,MAGzB,IAAK,KAAa,SAAS,UAAS;AAAA,QAAK,OAAO,OAAO,CAAC;AAAA,MACxD,OAAO,OAAO,MAAM,WAAW,IAAI,OAAO,CAAC;AAAA,IAC7C;AAAA,SACK,GAAG;AAAA,MACN,MAAM,IAAI,MAAM,SAAS;AAAA,MACzB,MAAM,KAAM,KAAa,YAAY;AAAA,MACrC,IAAI,OAAO;AAAA,QAAI,OAAO,OAAO,MAAM,WAAW,IAAI,OAAO,CAAC;AAAA,MAC1D,OAAO,OAAO,CAAC;AAAA,IACjB;AAAA,SACK;AAAA,SACA,IAAI;AAAA,MACP,MAAM,IAAI,MAAM,SAAS;AAAA,MACzB,OAAO,OAAO,MAAM,WAAW,IAAI,OAAO,CAAC;AAAA,IAC7C;AAAA,SACK;AAAA,MACH,OAAO,WAAW,MAAM,KAAK,KAAK;AAAA,SAC/B;AAAA,MACH,OAAO,UAAU,MAAM,KAAK,MAAM,KAAK;AAAA,SACpC;AAAA,SACA;AAAA,MACH,OAAO,SAAS,MAAM,KAAK,MAAM,KAAK;AAAA,SACnC;AAAA,MACH,OAAO,QAAQ,MAAM,KAAK,MAAM,KAAK;AAAA,SAClC;AAAA,MACH,OAAO,eAAe,MAAM,KAAK,MAAM,KAAK;AAAA;AAAA,MAE5C,OAAO,IAAI,IAAI,KAAK;AAAA;AAAA;AAI1B,SAAS,OAAO,CAAC,GAA2B;AAAA,EAC1C,IAAI,KAAK;AAAA,IAAM,OAAO;AAAA,EACtB,IAAI,aAAa;AAAA,IAAY,OAAO;AAAA,EACpC,IAAI,YAAY,OAAO,CAAC,GAAG;AAAA,IACzB,MAAM,OAAO;AAAA,IACb,OAAO,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,EACrE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,MAAgB,MAAW,OAAuB;AAAA,EACzE,MAAM,YAAqB,KAAa,cAAe,KAAa,WAAY,KAAa,WAAW,IAAI;AAAA,EAE5G,MAAM,MAAmB,KAAK;AAAA,EAC9B,MAAM,eAAe,YAAY;AAAA,EACjC,MAAM,QAAQ,QAAQ;AAAA,EACtB,MAAM,KAAK,IAAI,WAAW,SAAS;AAAA,EACnC,SAAS,IAAI,EAAG,IAAI,cAAc,KAAK;AAAA,IACrC,MAAM,OAAO,IAAI,QAAQ,OAAO;AAAA,IAChC,GAAG,IAAI,KAAK,OAAO;AAAA,IACnB,GAAG,IAAI,IAAI,KAAM,SAAS,IAAK;AAAA,IAC/B,GAAG,IAAI,IAAI,KAAM,SAAS,KAAM;AAAA,IAChC,GAAG,IAAI,IAAI,KAAM,SAAS,KAAM;AAAA,EAClC;AAAA,EACA,OAAO,qBAAqB,EAAE;AAAA;AAIhC,SAAS,oBAAoB,CAAC,IAAwB;AAAA,EACpD,IAAI,KAAK;AAAA,EACT,SAAS,IAAI,GAAG,SAAS,EAAG,KAAK,GAAG;AAAA,IAAK,KAAM,MAAM,KAAM,OAAO,GAAG,EAAE;AAAA,EACvE,IAAI,GAAG,GAAG,SAAS,KAAK;AAAA,IAAM,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC;AAAA,EAC9D,OAAO;AAAA;AAGT,SAAS,UAAU,CAAC,MAAgB,KAAU,OAA+C;AAAA,EAC3F,MAAM,WAAY,KAAa;AAAA,EAC/B,MAAM,MAA+B,CAAC;AAAA,EACtC,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,KAAK;AAAA,IACxC,MAAM,KAAK,SAAS;AAAA,IACpB,MAAM,WAAW,OAAO,IAAI,eAAe,aACvC,IAAI,WAAW,CAAC,IACf,IAAI,WAAW;AAAA,IACpB,IAAI,CAAC,UAAU;AAAA,MAAE,IAAI,GAAG,QAAQ;AAAA,MAAM;AAAA,IAAU;AAAA,IAChD,IAAI,GAAG,QAAQ,mBAAmB,GAAG,MAAqB,UAAU,KAAK;AAAA,EAC3E;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,SAAS,CAAC,MAAgB,KAAU,MAAW,OAA4B;AAAA,EAClF,MAAM,WAAY,KAAa;AAAA,EAG/B,MAAM,UAAyC,MAAM;AAAA,EACrD,MAAM,QAAQ,UAAU,QAAQ,SAAS,SAAS,SAAS,IAAI,IAAI;AAAA,EACnE,MAAM,MAAO,KAAa;AAAA,EAC1B,MAAM,WAAW,OAAO,IAAI,WAAW,YAAY,IAAI,SAAS;AAAA,EAChE,MAAM,aAAa,SAAS;AAAA,EAC5B,IAAI,CAAC;AAAA,IAAY,OAAO,EAAE,KAAK,MAAM,OAAO,KAAK;AAAA,EAGjD,MAAM,UAAyC,MAAM;AAAA,EACrD,MAAM,WAAW,UAAU,QAAQ,SAAS;AAAA,EAC5C,MAAM,WAAW,OAAO,IAAI,eAAe,aACvC,IAAI,WAAW,QAAQ,IACvB,IAAI,WAAW;AAAA,EACnB,MAAM,QAAQ,WACV,mBAAmB,WAAW,MAAqB,UAAU,QAAQ,IACrE;AAAA,EACJ,OAAO,EAAE,KAAK,WAAW,MAAM,MAAM;AAAA;AAGvC,SAAS,QAAQ,CAAC,MAAgB,KAAU,MAAW,OAA0B;AAAA,EAC/E,MAAM,aAAc,KAAa,SAAS;AAAA,EAC1C,MAAM,WAAW,OAAO,IAAI,eAAe,aAAa,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW;AAAA,EAC3F,MAAM,UAAU,MAAM;AAAA,EACtB,IAAI,OAAe;AAAA,EACnB,IAAI,SAAS;AAAA,IACX,QAAQ,QAAQ;AAAA,IAChB,MAAM,QAAQ,QAAQ;AAAA,EACxB,EAAO;AAAA,IAEL,MAAM,WAAY,KAAa,YAAY;AAAA,IAC3C,QAAQ,QAAQ;AAAA,IAChB,MAAM,QAAQ;AAAA;AAAA,EAEhB,MAAM,MAAiB,CAAC;AAAA,EACxB,SAAS,IAAI,MAAO,IAAI,KAAK,KAAK;AAAA,IAChC,IAAI,KAAK,mBAAmB,WAAW,MAAqB,UAAU,CAAC,CAAC;AAAA,EAC1E;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,OAAO,CAAC,MAAgB,KAAU,MAAW,OAA0C;AAAA,EAC9F,MAAM,eAAgB,KAAa,SAAS;AAAA,EAC5C,MAAM,WAAY,aAAa,KAAa,SAAS;AAAA,EACrD,MAAM,aAAc,aAAa,KAAa,SAAS;AAAA,EACvD,MAAM,UAAU,MAAM;AAAA,EACtB,MAAM,aAAa,OAAO,IAAI,eAAe,aAAa,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW;AAAA,EAC7F,MAAM,SAAS,eAAe,OAAO,WAAW,eAAe,aAAa,WAAW,WAAW,CAAC,IAAI,WAAW,WAAW;AAAA,EAC7H,MAAM,WAAW,eAAe,OAAO,WAAW,eAAe,aAAa,WAAW,WAAW,CAAC,IAAI,WAAW,WAAW;AAAA,EAC/H,MAAM,QAAQ,UAAU,QAAQ,SAAS;AAAA,EACzC,MAAM,MAAM,UAAU,QAAQ,QAAQ,KAAK;AAAA,EAC3C,MAAM,MAAiC,CAAC;AAAA,EACxC,SAAS,IAAI,MAAO,IAAI,KAAK,KAAK;AAAA,IAChC,IAAI,KAAK;AAAA,MACP,mBAAmB,SAAS,MAAqB,QAAQ,CAAC;AAAA,MAC1D,mBAAmB,WAAW,MAAqB,UAAU,CAAC;AAAA,IAChE,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,cAAc,CAAC,MAAgB,KAAU,MAAW,OAAwB;AAAA,EACnF,MAAM,YAAa,KAAa;AAAA,EAChC,IAAI,QAAQ,KAAK,cAAc,KAAK,QAAQ;AAAA,IAC1C,MAAM,MAAM,OAAO,KAAK,OAAO,MAAM;AAAA,IACrC,MAAM,UAAU,KAAK;AAAA,IAErB,OAAO,mBAAmB,WAAW,SAAS,GAAG;AAAA,EACnD;AAAA,EAEA,OAAO,IAAI,IAAI,KAAK;AAAA;;;AFhhBf,SAAS,eAAe,CAAC,QAAe,MAAkC;AAAA,EAC/E,OAAO,iBAAgB,QAAQ,IAAgB,EAAE,KAAK;AAAA;AAMjD,SAAS,aAAa,CAC3B,MACA,QACa;AAAA,EACb,MAAM,IAAI;AAAA,EACV,IAAI,KAAK,WAAW,GAAG;AAAA,IACrB,OAAO,WAAW,CAAC;AAAA,EACrB;AAAA,EACA,MAAM,UAAiC,CAAC;AAAA,EACxC,WAAW,SAAS,EAAE,QAAQ;AAAA,IAC5B,QAAQ,MAAM,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,SAAS,IAAI;AAAA,EAC7D;AAAA,EACA,OAAO,iBAAiB,SAAS,CAAC;AAAA;AAQ7B,SAAS,gBAAgB,CAC9B,SACA,QACA,OAAuB,QACV;AAAA,EACb,MAAM,IAAI;AAAA,EACV,MAAM,UACJ,EAAE,OAAO,SAAS,IACd,QAAQ,EAAE,OAAO,GAAG,OAAO,UAAU,IACrC;AAAA,EAEN,MAAM,WAAW,EAAE,OAAO,IAAI,CAAC,MAAa;AAAA,IAC1C,MAAM,SAAS,QAAQ,EAAE;AAAA,IACzB,IAAI,CAAC,QAAQ;AAAA,MACX,OAAO,UAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,SAAS,WAAW,QAAQ,CAAC;AAAA,IACvE;AAAA,IACA,MAAM,QAAQ,SAAS,EAAE,IAAmB;AAAA,IAC5C,MAAM,UAAU,SAAS,QAAQ,MAAM,iBAAiB,MAAM;AAAA,IAC9D,MAAM,YAAY,OAAO,IAAI,CAAC,MAAM,QAAQ,KAAK,OAAO,CAAC,CAAC;AAAA,IAC1D,OAAO,qBAAqB,EAAE,MAAqB,SAAS;AAAA,GAC7D;AAAA,EAED,MAAM,aAAa,IAAI,QAAO,EAAE,MAAM;AAAA,EACtC,MAAM,OAAO,UAAS;AAAA,IACpB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AAAA,EAED,OAAO,IAAI,aAAY,GAAG,IAAI;AAAA;;AGvEzB,UAAU,QAAQ,CACvB,OACA,OAAuB,QACS;AAAA,EAChC,MAAM,IAAI;AAAA,EACV,MAAM,SAAS,EAAE,OAAO,OAAO,IAAI,CAAC,MAAM,SAAS,EAAE,IAA8B,CAAC;AAAA,EACpF,SAAS,IAAI,EAAG,IAAI,EAAE,SAAS,KAAK;AAAA,IAClC,MAAM,MAA2B,CAAC;AAAA,IAClC,SAAS,KAAK,EAAG,KAAK,EAAE,OAAO,OAAO,QAAQ,MAAM;AAAA,MAClD,MAAM,QAAQ,EAAE,OAAO,OAAO;AAAA,MAC9B,MAAM,MAAM,EAAE,SAAS,MAAM,IAAI;AAAA,MACjC,IAAI,CAAC,KAAK;AAAA,QAAE,IAAI,MAAM,QAAQ;AAAA,QAAM;AAAA,MAAU;AAAA,MAC9C,MAAM,YAAY,mBAAmB,MAAM,MAAgC,KAAK,CAAC;AAAA,MACjF,MAAM,QAAQ,OAAO;AAAA,MACrB,IAAI,MAAM,QAAQ,SAAS,QACvB,MAAM,eAAe,SAAS,IAC9B,MAAM,gBAAgB,SAAS;AAAA,IACrC;AAAA,IACA,MAAM;AAAA,EACR;AAAA;AAUK,SAAS,iBAAiB,CAC/B,OACqB;AAAA,EACrB,IAAI,CAAC;AAAA,IAAO,OAAO,CAAC;AAAA,EACpB,MAAM,IAAI;AAAA,EACV,IAAI,EAAE,YAAY;AAAA,IAAG,OAAO,CAAC;AAAA,EAC7B,MAAM,SAA8B,CAAC;AAAA,EACrC,WAAW,SAAS,EAAE,OAAO,QAAQ;AAAA,IACnC,MAAM,MAAM,EAAE,SAAS,MAAM,IAAI;AAAA,IACjC,IAAI,KAAK;AAAA,MACP,MAAM,OAAO,MAAM;AAAA,MACnB,MAAM,YAAY,mBAAmB,MAAM,KAAK,CAAC;AAAA,MACjD,OAAO,MAAM,QAAQ,SAAS,IAAI,EAAE,gBAAgB,SAAS;AAAA,IAC/D;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAaF,SAAS,eAAe,CAAC,OAAY,QAAQ,GAAQ;AAAA,EAC1D,IACE,SAAS,OAAO,UAAU,YAC1B,gBAAgB,SAAS,YAAY,SACrC,OAAQ,MAAc,YAAY,QAAQ,YAC1C;AAAA,IAKA,MAAM,OAAO;AAAA,IACb,MAAM,aAAa,KAAK;AAAA,IACxB,IAAI,cAAc,WAAW,SAAS,GAAG;AAAA,MACvC,MAAM,OAAO,WAAW,SAAS;AAAA,MACjC,KAAM,SAAS,QAAQ,KAAM,OAAO;AAAA,QAAG,OAAO;AAAA,IAChD;AAAA,IACA,MAAM,MAAM,OAAO,KAAK,OAAO,MAAM;AAAA,IACrC,OAAQ,MAAc,WAAW,IAAI,GAAG;AAAA,EAC1C;AAAA,EACA,OAAO;AAAA;AAQF,SAAS,iBAAiB,CAC/B,OACqC;AAAA,EACrC,IAAI,CAAC;AAAA,IAAO,OAAO,CAAC;AAAA,EACpB,MAAM,IAAI;AAAA,EACV,IAAI,EAAE,YAAY;AAAA,IAAG,OAAO,CAAC;AAAA,EAC7B,MAAM,SAA8C,CAAC;AAAA,EACrD,WAAW,SAAS,EAAE,OAAO,QAAQ;AAAA,IACnC,MAAM,MAAM,EAAE,SAAS,MAAM,IAAI;AAAA,IACjC,IAAI,KAAK;AAAA,MAIP,MAAM,OAAO,MAAM;AAAA,MACnB,MAAM,MAAM,SAAS,IAAI,EAAE,gBAAgB,mBAAmB,MAAM,KAAK,CAAC,CAAC;AAAA,MAG3E,IAAI,MAAM,MAAM;AAAA,MAChB,IAAI;AAAA,MACJ,IAAI,MAAM,KAAK,WAAW,SAAS,GAAG;AAAA,QACpC,MAAM,aAAa,MAAM,UAAU,MAAM,aAAa;AAAA,QACtD,IAAI,YAAY;AAAA,UACd,MAAM;AAAA,UACN,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,QAC5C;AAAA,MACF;AAAA,MAEA,IAAI,OAAO,OAAO,QAAQ,YAAY,CAAC,YAAY,OAAO,GAAG,GAAG;AAAA,QAE9D,MAAM,OAA4B,KAAM,IAA4B;AAAA,QACpE,IAAI,OAAO,QAAQ;AAAA,UACjB,MAAM,IAAI,MACR,6CAA6C,eAAe,SAAS,cACrE,8DACF;AAAA,QACF;AAAA,QACA,OAAO,OAAO;AAAA,QAEd,IAAI,OAAO;AAAA,UACT,OAAO,GAAG,OAAO,WAAW;AAAA,QAC9B;AAAA,MACF,EAAO,SAAI,QAAQ,QAAQ,QAAQ,WAAW,CAE9C,EAAO;AAAA,QACL,OAAO,OAAO,CAAC;AAAA;AAAA,IAEnB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAMT,IAAM,WAAW,OAAO,OAAO,gBAAgB;AAC/C,IAAM,WAAW,CAAC;AAcX,SAAS,UAAU,CAAC,OAAoB;AAAA,EAC7C,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,IAAI,QAAQ,YAAY,QAAQ,UAAU;AAAA,MACxC,MAAM,IAAI,WACR,GAAG,wDACD,2DACJ;AAAA,IACF;AAAA,IACA,OAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,OAAO;AAAA;;AChKF,SAAS,WAAW,CACzB,OACA,MACa;AAAA,EACb,MAAM,IAAI;AAAA,EACV,MAAM,IAAI,EAAE;AAAA,EAGZ,IAAI,YAAY;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,IAC1B,IAAI,KAAK;AAAA,MAAI;AAAA,EACf;AAAA,EAGA,IAAI,cAAc;AAAA,IAAG,OAAO;AAAA,EAC5B,IAAI,cAAc;AAAA,IAAG,OAAO,WAAW,EAAE,MAAM;AAAA,EAG/C,MAAM,UAAoB,CAAC;AAAA,EAC3B,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,IAC1B,IAAI,KAAK;AAAA,MAAI,QAAQ,KAAK,CAAC;AAAA,EAC7B;AAAA,EAGA,MAAM,UAAiC,CAAC;AAAA,EACxC,WAAW,SAAS,EAAE,OAAO,QAAQ;AAAA,IACnC,MAAM,MAAM,EAAE,SAAS,MAAM,IAAI;AAAA,IACjC,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,QAAQ,SAAS,IAAI;AAAA,IAC3B,QAAQ,MAAM,QAAQ,QAAQ,IAAI,CAAC,MACjC,MAAM,gBAAgB,mBAAmB,MAAM,KAAK,CAAC,CAAC,CACxD;AAAA,EACF;AAAA,EACA,OAAO,iBAAiB,SAAS,EAAE,MAAM;AAAA;;AChD3C;AAAA,iBACE;AAAA,YACA;AAAA,YACA;AAAA,cACA;AAAA;AASF,SAAS,qBAAqB,CAC5B,QACA,eACA,YACU;AAAA,EACV,WAAW,MAAM,eAAe;AAAA,IAC9B,IAAI,KAAK,IAAI;AAAA,MACX,MAAM,IAAI,MAAM,GAAG,6CAA6C,oCAAoC;AAAA,IACtG;AAAA,IACA,IAAI,MAAM,YAAY;AAAA,MACpB,QAAQ,KAAK,GAAG,yBAAyB,mCAAmC,8BAA8B;AAAA,IAC5G;AAAA,EACF;AAAA,EACA,OAAO,cAAc,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,UAAU;AAAA;AAMtD,SAAS,aAAa,CAC3B,eACA,QACQ;AAAA,EACR,MAAM,IAAI;AAAA,EACV,IAAI,CAAC;AAAA,IAAe,OAAO;AAAA,EAC3B,MAAM,WAAW,sBAAsB,iBAAiB,eAAe,EAAE,OAAO,MAAM;AAAA,EACtF,IAAI,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EAClC,OAAO,IAAI,QAAO,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AAAA;AAM7C,SAAS,YAAY,CAC1B,eACA,OACa;AAAA,EACb,MAAM,IAAI;AAAA,EACV,IAAI,CAAC;AAAA,IAAe,OAAO;AAAA,EAC3B,MAAM,WAAW,sBAAsB,gBAAgB,eAAe,EAAE,OAAO,OAAO,MAAM;AAAA,EAC5F,IAAI,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EAClC,MAAM,kBAAkB,cAAc,eAAe,EAAE,MAAM;AAAA,EAC7D,MAAM,WAAW,SAAS,IAAI,CAAC,MAAM;AAAA,IACnC,MAAM,MAAM,EAAE,WAAW,CAAC;AAAA,IAC1B,OAAO,IAAK,KAAK;AAAA,GAClB;AAAA,EAED,MAAM,aAAa,IAAI,QAAO,gBAAgB,MAAM;AAAA,EACpD,MAAM,OAAO,UAAS;AAAA,IACpB,MAAM;AAAA,IACN,QAAQ,EAAE;AAAA,IACV;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AAAA,EAED,OAAO,IAAI,aAAY,iBAAiB,IAAI;AAAA;;ACpE9C,wBAAS;AAaF,SAAS,iBAAiB,CAAC,OAAiB,UAAyC;AAAA,EAC1F,MAAM,IAAI;AAAA,EACV,OAAO,IAAI,aAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ;AAAA;;ACfnD;AAAA,YAEE;AAAA;AAAA;AAAA;AAYK,SAAS,eAAe,CAAC,QAAwC;AAAA,EACtE,MAAM,SAAS,IAAI;AAAA,EACnB,OAAO,MAAM,WAAW,MAAgB;AAAA,EACxC,OAAO,MAAM;AAAA,EACb,OAAO,OAAO,aAAa,IAAI;AAAA;AAS1B,SAAS,iBAAiB,CAAC,OAA2B;AAAA,EAC3D,MAAM,SAAS,kBAAkB,KAAK,KAAK;AAAA,EAC3C,MAAM,UAAU,CAAC,GAAG,MAAM;AAAA,EAC1B,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,OAAO,QAAQ,GAAG;AAAA,EACpB;AAAA,EACA,IAAI,OAAO;AAAA,IAAQ,OAAO,OAAO;AAAA,EACjC,MAAM,IAAI,MAAM,iDAAiD;AAAA;AAO5D,SAAS,cAAc,CAAC,OAA2C;AAAA,EACxE,MAAM,IAAI;AAAA,EACV,MAAM,SAAS,IAAI;AAAA,EACnB,OAAO,MAAM,WAAW,EAAE,MAAM;AAAA,EAG/B,OAAe,kBAAkB,CAAC;AAAA,EACnC,OAAO,MAAM;AAAA,EACb,OAAO,OAAO,aAAa,IAAI;AAAA;AAM1B,SAAS,gBAAgB,CAAC,OAAgC;AAAA,EAC/D,MAAM,SAAS,kBAAkB,KAAK,KAAK;AAAA,EAC3C,MAAM,UAAU,CAAC,GAAG,MAAM;AAAA,EAC1B,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,MAAM,MAAM,OAAO,UAAU,IAAI,QAAO,CAAC,CAAC;AAAA,IAC1C,OAAO,WAAW,GAAG;AAAA,EACvB;AAAA,EACA,OAAO,QAAQ;AAAA;;AC1DjB;AAAA,WACE;AAAA;AAAA,cAEA;AAAA,iBACA;AAAA,YACA;AAAA;AAAA,YAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BF,SAAS,OAAO,CAAC,GAAwB;AAAA,EACvC,MAAM,IAAI;AAAA,EACV,OAAO;AAAA,IACL,EAAE;AAAA,IACF,EAAE,QAAQ;AAAA,IACV,EAAE,YAAY;AAAA,IACd,EAAE,aAAa;AAAA,IACf,EAAE,SAAS;AAAA,IACX,EAAE,aAAa;AAAA,EACjB,EAAE,KAAK,GAAG;AAAA;AAUZ,SAAS,oBAAoB,CAAC,QAAe,MAAwB;AAAA,EACnE,MAAM,IAAI;AAAA,EACV,IAAI,EAAE,WAAW,GAAc;AAAA,IAC7B,OAAO,UAAS,EAAE,MAAM,GAAG,QAAQ,OAAO,QAAQ,WAAW,OAAO,OAAO,CAAC;AAAA,EAC9E;AAAA,EACA,MAAM,QAAQ,SAAS,IAAI;AAAA,EAC3B,MAAM,YAAY,OAAO,IAAI,CAAC,MAAM,MAAM,gBAAgB,CAAC,CAAC;AAAA,EAC5D,OAAO,qBAAqB,MAAM,SAAS;AAAA;AAGtC,SAAS,oBAAoB,CAAC,OAAqC;AAAA,EACxE,IAAI,MAAM,WAAW,GAAG;AAAA,IAItB,MAAM,YAAY,IAAI,OAAM,KAAK,IAAI,MAAQ,IAAI;AAAA,IACjD,MAAM,YAAY,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AAAA,IAClD,MAAM,UAAU,UAAS;AAAA,MACvB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,IAAI,UAAU,CAAC;AAAA,MACxB,UAAU,CAAC,UAAS,EAAE,MAAM,IAAI,MAAQ,QAAQ,GAAG,WAAW,EAAE,CAAC,CAAC;AAAA,IACpE,CAAQ;AAAA,IACR,MAAM,UAAU,UAAS;AAAA,MACvB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS,IAAI,UAAU,CAAC;AAAA,MACxB,UAAU,CAAC,UAAS,EAAE,MAAM,IAAI,MAAQ,QAAQ,GAAG,WAAW,EAAE,CAAC,CAAC;AAAA,IACpE,CAAQ;AAAA,IACR,OAAO,SAAS,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;AAAA,EACrE;AAAA,EAGA,MAAM,YAA2B,CAAC;AAAA,EAClC,MAAM,YAAY,IAAI;AAAA,EACtB,MAAM,eAAyB,CAAC;AAAA,EAChC,WAAW,KAAK,OAAO;AAAA,IACrB,MAAM,MAAM,QAAQ,EAAE,SAAS;AAAA,IAC/B,IAAI,OAAO,UAAU,IAAI,GAAG;AAAA,IAC5B,IAAI,SAAS,WAAW;AAAA,MACtB,OAAO,UAAU;AAAA,MACjB,UAAU,IAAI,KAAK,IAAI;AAAA,MACvB,UAAU,KAAK,EAAE,SAAS;AAAA,IAC5B;AAAA,IACA,aAAa,KAAK,IAAI;AAAA,EACxB;AAAA,EAEA,MAAM,cAAuB,CAAC;AAAA,EAC9B,MAAM,cAAqB,CAAC;AAAA,EAC5B,MAAM,cAAqB,CAAC;AAAA,EAC5B,MAAM,UAAoB,CAAC;AAAA,EAE3B,YAAY,MAAM,cAAc,UAAU,QAAQ,GAAG;AAAA,IACnD,YAAY,KAAK,IAAI,OAAM,OAAO,IAAI,GAAG,WAAuB,IAAI,CAAC;AAAA,IACrE,QAAQ,KAAK,IAAI;AAAA,IACjB,MAAM,UAAU,MAAM,IAAI,CAAC,GAAG,MAAO,aAAa,OAAO,OAAO,EAAE,MAAM,IAAK;AAAA,IAC7E,MAAM,UAAU,MAAM,IAAI,CAAC,GAAG,MAAO,aAAa,OAAO,OAAO,EAAE,MAAM,IAAK;AAAA,IAC7E,YAAY,KAAK,qBAAqB,SAAS,SAAS,CAAC;AAAA,IACzD,YAAY,KAAK,qBAAqB,SAAS,SAAS,CAAC;AAAA,EAC3D;AAAA,EAEA,MAAM,YAAY,IAAI,YAAY,SAAS,WAAW;AAAA,EACtD,MAAM,aAAa,UAAU,KAAK,YAAY;AAAA,EAE9C,MAAM,UAAU,UAAS;AAAA,IACvB,MAAM;AAAA,IAAW,QAAQ,MAAM;AAAA,IAAQ,SAAS;AAAA,IAAY,UAAU;AAAA,EACxE,CAAQ;AAAA,EACR,MAAM,UAAU,UAAS;AAAA,IACvB,MAAM;AAAA,IAAW,QAAQ,MAAM;AAAA,IAAQ,SAAS;AAAA,IAAY,UAAU;AAAA,EACxE,CAAQ;AAAA,EAER,OAAO,SACL,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,GAC7B,SACA,SACA,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,GAC1B,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,GAC7B,MAAM,IAAI,CAAC,MAAO,EAAE,iBAAiB,OAAO,OAAO,OAAO,EAAE,aAAa,CAAE,GAC3E,MAAM,IAAI,CAAC,MAAM,EAAE,eAAe,GAClC,MAAM,IAAI,CAAC,MAAO,EAAE,mBAAmB,OAAO,OAAO,OAAO,EAAE,eAAe,CAAE,GAC/E,SACF;AAAA;AAGF,SAAS,QAAQ,CACf,aACA,SACA,SACA,SACA,YACA,eACA,iBACA,iBACA,WACa;AAAA,EACb,MAAM,SAAS,IAAI,QAAO;AAAA,IACxB,IAAI,OAAM,eAAe,IAAI,MAAQ,KAAK;AAAA,IAC1C,IAAI,OAAM,OAAO,WAAW,IAAI;AAAA,IAChC,IAAI,OAAM,OAAO,WAAW,IAAI;AAAA,IAChC,IAAI,OAAM,YAAY,IAAI,MAAQ,KAAK;AAAA,IACvC,IAAI,OAAM,gBAAgB,IAAI,MAAQ,KAAK;AAAA,IAC3C,IAAI,OAAM,kBAAkB,IAAI,OAAS,IAAI;AAAA,IAC7C,IAAI,OAAM,oBAAoB,IAAI,MAAQ,IAAI;AAAA,IAC9C,IAAI,OAAM,qBAAqB,IAAI,QAAU,IAAI;AAAA,EACnD,CAAC;AAAA,EAED,MAAM,IAAI,YAAY;AAAA,EACtB,MAAM,WAAW;AAAA,IACf,qBAAqB,aAAa,IAAI,IAAgC;AAAA,IACtE;AAAA,IACA;AAAA,IACA,qBAAqB,SAAS,IAAI,IAAgC;AAAA,IAClE,qBAAqB,YAAY,IAAI,IAAgC;AAAA,IACrE,qBAAqB,eAAe,IAAI,KAAiC;AAAA,IACzE,qBAAqB,iBAAiB,IAAI,IAAgC;AAAA,IAC1E,qBAAqB,iBAAiB,IAAI,MAAkC;AAAA,EAC9E;AAAA,EAEA,MAAM,aAAa,IAAI,QAAO,OAAO,MAAM;AAAA,EAC3C,MAAM,OAAO,UAAS,EAAE,MAAM,YAAY,QAAQ,GAAG,UAAU,WAAW,EAAE,CAAC;AAAA,EAC7E,OAAO,IAAI,aAAY,QAAQ,IAAI;AAAA;;;AChL9B,IAAM,UAA0B,EAAE,MAAM,WAAW;AAuDnD,SAAS,iBAAoB,CAAC,OAAa;AAAA,EAChD,OAAO;AAAA;;AChBF,MAAQ,qBAAU,qBAAU,6BAAc,uBAAW,oBAAW;AAIhE,SAAS,MAAiD,CAC/D,MACA,MACA,UACA,UACqB;AAAA,EACrB,OAAY,MAAM,MAAM,MAAa,UAAU,QAAQ;AAAA;AAKlD,IAAM,YAAW,MAA2B,SAAS;AACrD,IAAM,QAAO,MAAqB,KAAK;AAGvC,IAAM,SAAQ,MAAsB,MAAM;AAC1C,IAAM,SAAQ,MAAsB,MAAM;AAC1C,IAAM,SAAQ,MAAsB,MAAM;AAI1C,IAAM,UAAS,MAAuB,OAAO;AAY7C,IAAM,WAAU,MAAsB,QAAQ;AAE9C,IAAM,QAAO,MAAqB,KAAK;AAEvC,IAAM,UAAS,MAAuB,OAAO;AAC7C,IAAM,eAAc,MAA4B,YAAY;AA+BnE,IAAM,cAAqC;AAAA,GACnC,SAAS,SAAS;AAAA,GAClB,SAAS,cAAc;AAAA,GACvB,SAAS,cAAc;AAAA,GACvB,SAAS,aAAa;AAC9B;AAIO,SAAS,UAAkC,CAChD,MACA,UACkB;AAAA,EAClB,OAAY,UAAU,MAAM,YAAY,IAAI;AAAA;AAiCvC,SAAS,KAA2B,CAAC,OAA+C;AAAA,EACzF,OAAY,KAAK,KAAY;AAAA;AAUxB,SAAS,OAAkE,CAChF,UACe;AAAA,EACf,OAAY,OAAO,QAA0C;AAAA;AAGxD,SAAS,IAAiD,CAC/D,UACA,YACA,YACe;AAAA,EACf,OAAY,IAAI,UAAiB,YAAmB,UAAU;AAAA;AAGzD,SAAS,WAAiC,CAC/C,WACA,WACA,SACA,IACmB;AAAA,EACnB,OAAY,WAAW,WAAkB,WAAkB,SAAS,EAAE;AAAA;;AC/LjE,MAAM,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,EAEA;AAAA,EAET,WAAW,CACT,aAA6B,CAAC,GAC9B,QAAiC,IAAI,KACrC,kBAAoC,MACpC;AAAA,IACA,KAAK,aAAa;AAAA,IAClB,KAAK,QAAQ;AAAA,IACb,KAAK,kBAAkB;AAAA;AAAA,EAMzB,GAAG,CAAC,UAA2B,cAAyB;AAAA,IACtD,IAAI,OAAO,aAAa,UAAU;AAAA,MAChC,IAAI,WAAW,KAAK,WAAW,QAAQ;AAAA,QACrC,MAAM,MAAM,KAAK,WAAW;AAAA,QAC5B,IAAI,QAAQ,QAAQ,QAAQ,WAAW;AAAA,UACrC,OAAO,iBAAiB,YAAY,eAAe;AAAA,QACrD;AAAA,QACA,OAAO,aAAa,GAAG;AAAA,MACzB;AAAA,MACA,IAAI,iBAAiB;AAAA,QAAW,OAAO;AAAA,MACvC,MAAM,IAAI,MAAM,uBAAuB,oBAAoB;AAAA,IAC7D;AAAA,IACA,IAAI,KAAK,MAAM,IAAI,QAAQ,GAAG;AAAA,MAC5B,MAAM,MAAM,KAAK,MAAM,IAAI,QAAQ;AAAA,MACnC,IAAI,QAAQ,QAAQ,QAAQ,WAAW;AAAA,QACrC,OAAO,iBAAiB,YAAY,eAAe;AAAA,MACrD;AAAA,MACA,OAAO,aAAa,GAAG;AAAA,IACzB;AAAA,IACA,IAAI,iBAAiB;AAAA,MAAW,OAAO;AAAA,IACvC,MAAM,IAAI,MAAM,mBAAmB,qBAAqB;AAAA;AAAA,MAGtD,MAAM,GAAW;AAAA,IACnB,OAAO,KAAK,WAAW;AAAA;AAE3B;AAaA,SAAS,YAAY,CAAC,KAAe;AAAA,EACnC,IAAI,QAAQ,QAAQ,QAAQ;AAAA,IAAW,OAAO;AAAA,EAE9C,IAAI,OAAO,QAAQ;AAAA,IAAU,OAAO;AAAA,EACpC,IAAI,eAAe;AAAA,IAAM,OAAO;AAAA,EAEhC,IAAI,OAAO,IAAI,YAAY,YAAY;AAAA,IACrC,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,IAAI,IAAI,QAAQ;AAAA,MAChB,MAAM;AAAA,MAEN,OAAO;AAAA;AAAA,IAGT,IAAI,OAAO,MAAM,UAAU;AAAA,MACzB,IAAI,KAAK,OAAO,oBAAoB,KAAK,OAAO,kBAAkB;AAAA,QAChE,OAAO,OAAO,CAAC;AAAA,MACjB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;;;AC9DF,SAAS,kBAAkB,CAAC,MAA6B;AAAA,EAI9D,MAAM,eAA2B,CAAC;AAAA,EAClC,MAAM,eAAoC,CAAC;AAAA,EAE3C,SAAS,IAAI,EAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAAA,IAC/C,MAAM,MAAM,KAAK,WAAW;AAAA,IAC5B,MAAM,YAAY,cAAc;AAAA,IAChC,aAAa,KAAK,OAAM,WAAW,gBAAgB,GAAG,GAAG,IAAI,CAAC;AAAA,IAC9D,aAAa,aAAa;AAAA,EAC5B;AAAA,EAEA,YAAY,MAAM,QAAQ,KAAK,OAAO;AAAA,IACpC,MAAM,YAAY,SAAS;AAAA,IAC3B,aAAa,KAAK,OAAM,WAAW,gBAAgB,GAAG,GAAG,IAAI,CAAC;AAAA,IAC9D,aAAa,aAAa;AAAA,EAC5B;AAAA,EAEA,MAAM,aAAa,QAAW,YAAY;AAAA,EAC1C,MAAM,MAAM,QAAW,CAAC,OAAM,QAAQ,YAAY,IAAI,CAAC,CAAC;AAAA,EAIxD,MAAM,YAAiC,CAAC;AAAA,EACxC,WAAW,KAAK,cAAc;AAAA,IAC5B,IAAI,MAAM,aAAa,EAAE;AAAA,IACzB,IAAI,MAAM,EAAE,IAAI,KAAM,EAAE,KAAa,aAAa,MAAM,OAAO,QAAQ,UAAU;AAAA,MAC/E,MAAM,OAAO,GAAG;AAAA,IAClB;AAAA,IACA,UAAU,EAAE,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAM,QAAQ,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG;AAAA,EACzD,OAAO,eAAe,KAAK;AAAA;AAG7B,SAAS,eAAe,CAAC,KAAuB;AAAA,EAC9C,IAAI,QAAQ,QAAQ,QAAQ;AAAA,IAAW,OAAO,UAAS;AAAA,EACvD,IAAI,OAAO,QAAQ;AAAA,IAAU,OAAO,MAAK;AAAA,EACzC,IAAI,OAAO,QAAQ;AAAA,IAAW,OAAO,MAAK;AAAA,EAC1C,IAAI,OAAO,QAAQ;AAAA,IAAU,OAAO,OAAM;AAAA,EAC1C,IAAI,OAAO,QAAQ;AAAA,IAAU,OAAO,OAAM;AAAA,EAC1C,IAAI,eAAe,cAAc,eAAe;AAAA,IAAa,OAAO,QAAO;AAAA,EAC3E,OAAO,MAAK;AAAA;;;ACnEP,IAAK;AAAA,CAAL,CAAK,iBAAL;AAAA,EACL,yBAAS;AAAA,EACT,wBAAQ;AAAA,EAIR,kCAAkB;AAAA,EAClB,4BAAY;AAAA,GAPF;AAUL,IAAK;AAAA,CAAL,CAAK,sBAAL;AAAA,EACL,kCAAa;AAAA,EACb,gCAAW;AAAA,EACX,+CAA0B;AAAA,GAHhB;AAML,IAAK;AAAA,CAAL,CAAK,iBAAL;AAAA,EACL,0BAAU;AAAA,EACV,0BAAU;AAAA,GAFA;AAKL,IAAK;AAAA,CAAL,CAAK,yBAAL;AAAA,EACL,kCAAU;AAAA,EACV,mCAAW;AAAA,EACX,yCAAiB;AAAA,EACjB,8CAAsB;AAAA,EACtB,yCAAiB;AAAA,EACjB,8CAAsB;AAAA,GANZ;AASL,IAAK;AAAA,CAAL,CAAK,sBAAL;AAAA,EAEL,uCAAkB;AAAA,EAElB,0CAAqB;AAAA,EAGrB,mCAAc;AAAA,GAPJ;AAUL,IAAK;AAAA,CAAL,CAAK,oBAAL;AAAA,EACL,qCAAkB;AAAA,EAClB,yCAAsB;AAAA,GAFZ;AAKL,IAAK;AAAA,CAAL,CAAK,uBAAL;AAAA,EACL,2CAAqB;AAAA,EACrB,+CAAyB;AAAA,GAFf;AAKL,IAAK;AAAA,CAAL,CAAK,oBAAL;AAAA,EACL,2BAAQ;AAAA,EACR,8BAAW;AAAA,EAKX,qCAAkB;AAAA,EAClB,8CAA2B;AAAA,GARjB;AAYL,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,eAAe;AACrB,IAAM,iBAAiB;AACvB,IAAM,eAAe;AACrB,IAAM,kBAAkB;AACxB,IAAM,mBAAmB;AACzB,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AAEvB,IAAM,cAAc;AAWpB,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AACxB,IAAM,gBAAgB;AACtB,IAAM,kBAAkB;;ACrFxB,SAAS,YAAY,CAAC,KAAsB;AAAA,EACjD,IAAI,eAAe;AAAA,IAAY,OAAO;AAAA,EACtC,IAAI,eAAe;AAAA,IAAa,OAAO,IAAI,WAAW,GAAG;AAAA,EACzD,IAAI,OAAO,WAAW,eAAe,OAAO,SAAS,GAAG;AAAA,IACtD,OAAO,IAAI,WAAW,GAAG;AAAA,EAC3B,IAAI,OAAO,IAAI,kBAAkB,aAAa;AAAA,IAC5C,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAAA,EAClE;AAAA,EACA,OAAO,IAAI,WAAW,CAAC;AAAA;;;ACIlB,SAAS,aAAY,CAAC,KAAsB;AAAA,EACjD,IAAI,OAAO,QAAQ;AAAA,IAAU,OAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EAChE,MAAM,SAAS,aAAiB,GAAG;AAAA,EACnC,IAAI,OAAO,WAAW,KAAK,OAAO,MAAM;AAAA,IACtC,MAAM,IAAI,MAAM,kBAAkB,OAAO,mBAAmB;AAAA,EAC9D;AAAA,EACA,OAAO;AAAA;AAOF,SAAS,mBAAmB,CACjC,QACA,QACU;AAAA,EAIV,MAAM,OAA8B,CAAC;AAAA,EACrC,WAAW,KAAK,OAAO,QAAQ;AAAA,IAC7B,IAAI,MAAM,OAAO,EAAE;AAAA,IACnB,IAAI,MAAM,EAAE,IAAI,KAAM,EAAE,KAAa,aAAa,MAAM,OAAO,QAAQ,UAAU;AAAA,MAC/E,MAAM,OAAO,GAAG;AAAA,IAClB;AAAA,IACA,KAAK,EAAE,QAAQ,CAAC,GAAG;AAAA,EACrB;AAAA,EACA,OAAO,iBAAiB,MAAM,MAAM;AAAA;;;ACTtC,IAAM,wBAAwB,QAAO;AAAA,EACnC,OAAM,UAAU,MAAK,GAAG,KAAK;AAAA,EAC7B,OAAM,aAAa,MAAK,GAAG,KAAK;AAAA,EAChC,OAAM,mBAAmB,QAAO,GAAG,KAAK;AAC1C,CAAC;AAED,IAAM,sBAAsB,QAAO;AAAA,EACjC,OAAM,UAAU,MAAK,GAAG,KAAK;AAAA,EAC7B,OAAM,aAAa,MAAK,GAAG,KAAK;AAClC,CAAC;AAED,IAAM,sBAAsB,QAAO;AAAA,EACjC,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,iBAAiB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACzD,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EACpC,OAAM,YAAY,QAAO,GAAG,IAAI;AAAA,EAChC,OAAM,WAAW,QAAO,GAAG,IAAI;AAAA,EAC/B,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,EAC/C,OAAM,6BAA6B,MAAK,GAAG,KAAK;AAAA,EAEhD,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,EAE9B,OAAM,aAAa,uBAAuB,IAAI;AAAA,EAC9C,OAAM,WAAW,qBAAqB,IAAI;AAAA,EAI1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAE5D,OAAM,kBAAkB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AACjE,CAAC;AAEM,SAAS,oBAAoB,CAAC,KAA4B;AAAA,EAC/D,OAAO,oBAAoB,qBAAqB;AAAA,IAC9C,eAAe,IAAI;AAAA,IACnB,WAAW,mBAAmB,IAAI,SAAS;AAAA,IAC3C,eAAe,IAAI;AAAA,IACnB,cAAc,IAAI,eAAe,gBAAgB,IAAI,YAAY,IAAI;AAAA,IACrE,UAAU,IAAI,WAAW,eAAe,IAAI,QAAQ,IAAI;AAAA,IACxD,SAAS,IAAI,UAAU,eAAe,IAAI,OAAO,IAAI;AAAA,IACrD,oBAAoB,IAAI,sBAAsB;AAAA,IAC9C,yBAAyB,IAAI,2BAA2B;AAAA,IACxD,2BAA2B,IAAI,6BAA6B;AAAA,IAC5D,SAAS,IAAI,WAAW;AAAA,IACxB,UAAU,IAAI,YAAY;AAAA,IAC1B,WAAW,IAAI,YACX;AAAA,MACE,QAAQ,IAAI,UAAU;AAAA,MACtB,WAAW,IAAI,UAAU;AAAA,MACzB,iBAAiB,gBAAgB,IAAI,UAAU,eAAe;AAAA,IAChE,IACA;AAAA,IACJ,SAAS,IAAI,UACT,EAAE,QAAQ,IAAI,QAAQ,QAAQ,WAAW,IAAI,QAAQ,UAAU,IAC/D;AAAA,IACJ,aAAa,IAAI,eAAe;AAAA,IAChC,gBAAgB,IAAI,kBAAkB;AAAA,EACxC,CAAC;AAAA;AAqGI,SAAS,uBAAuB,CACrC,QACc;AAAA,EACd,MAAM,aAAa,CAAC,QAAuB;AAAA,IACzC,IAAI,CAAC;AAAA,MAAK,OAAO,CAAC;AAAA,IAClB,MAAM,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG;AAAA,IAC9C,OAAO,IAAI,OAAO,CAAC,MAAW,KAAK,IAAI,EAAE,IAAI,MAAM;AAAA;AAAA,EAErD,OAAO;AAAA,IACL,eAAe,kBAAkB,cAAa,OAAO,aAAa,CAAC;AAAA,IACnE,aAAa,OAAO,cAAc,cAAa,OAAO,WAAW,IAAI;AAAA,IACrE,qBAAqB,WAAW,OAAO,mBAAmB;AAAA,IAC1D,eAAe,WAAW,OAAO,aAAa;AAAA,IAC9C,cAAc,WAAW,OAAO,YAAY;AAAA,EAC9C;AAAA;;ACvJF,IAAM,sBAAsB,QAAW;AAAA,EACrC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,iBAAiB,QAAO,GAAG,KAAK;AAAA,EACtC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EACxC,OAAM,kBAAkB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAGhE,OAAM,oBAAoB,aAAY,GAAG,IAAI;AAAA,EAC7C,OAAM,aAAa,MAAK,OAAM,QAAQ,aAAY,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EACjE,OAAM,gBAAgB,MAAK,OAAM,QAAQ,aAAY,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EACpE,OAAM,aAAa,OAAM,GAAG,IAAI;AAAA,EAChC,OAAM,SAAS,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAEhD,OAAM,qBAAqB,QAAO,GAAG,IAAI;AAAA,EACzC,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EACpC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EAGxC,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EAEpC,OAAM,wBAAwB,MAAK,GAAG,IAAI;AAAA,EAC1C,OAAM,sBAAsB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAC7D,OAAM,uBAAuB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAC9D,OAAM,kBAAkB,OAAM,GAAG,IAAI;AAAA,EAErC,OAAM,0BAA0B,SAAQ,GAAG,IAAI;AAAA,EAC/C,OAAM,oBAAoB,OAAM,GAAG,IAAI;AACzC,CAAC;AASD,IAAM,8BAA8B,QAAW;AAAA,EAC7C,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,eAAe,QAAO,GAAG,IAAI;AAAA,EACnC,OAAM,eAAe,OAAM,GAAG,KAAK;AACrC,CAAC;AAEM,SAAS,oBAAoB,CAAC,KAA4B;AAAA,EAC/D,MAAM,gBAAgB,qBAAqB,IAAI,SAAS;AAAA,EACxD,MAAM,gBAAgB,eAAe,aAAa;AAAA,EAElD,MAAM,MAA2B;AAAA,IAC/B,WAAW;AAAA,IACX,eAAe,gBAAgB,IAAI,aAAa;AAAA,IAChD,kBAAkB,IAAI,oBAAoB;AAAA,IAC1C,gBAAgB,IAAI,gBAAgB,IAAI,CAAC,MAAM,OAAO,CAAC,CAAC,KAAK;AAAA,IAC7D,kBAAkB,IAAI,mBAClB,eAAe,IAAI,gBAAgB,IACnC;AAAA,IACJ,YAAY,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,eAAe,CAAC,CAAC;AAAA,IAC7D,cAAc,IAAI,gBAAgB;AAAA,IAClC,WAAW,IAAI,aAAa;AAAA,IAC5B,OAAO,IAAI,SAAS;AAAA,IACpB,mBAAmB,IAAI,qBAAqB;AAAA,IAC5C,cAAc,IAAI,gBAAgB;AAAA,IAClC,kBAAkB,IAAI,oBAAoB;AAAA,IAC1C,cAAc,IAAI,gBAAgB;AAAA,IAClC,sBAAsB,IAAI,wBAAwB;AAAA,IAClD,oBAAoB,IAAI,sBAAsB;AAAA,IAC9C,qBAAqB,IAAI,uBAAuB;AAAA,IAChD,gBAAgB,IAAI,kBAAkB;AAAA,IACtC,wBAAwB,IAAI,0BAA0B;AAAA,IACtD,kBAAkB,IAAI,oBAAoB;AAAA,EAC5C;AAAA,EACA,OAAO,oBAAoB,qBAAqB,GAAG;AAAA;AA2J9C,SAAS,6BAA6B,CAC3C,QACoB;AAAA,EACpB,OAAO;AAAA,IACL,cAAc,cAAa,OAAO,YAAY;AAAA,IAC9C,aAAa,OAAO,cAChB,cAAa,OAAO,WAAW,IAC/B;AAAA,IACJ,aAAa,OAAO,OAAO,WAAW;AAAA,EACxC;AAAA;;ACjSK,MAAM,iBAAiB,MAAM;AAAA,EAClC,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,8BAA8B,SAAS;AAAA,EAClD,WAAW,CAAC,UAAkB,QAAgB;AAAA,IAC5C,MACE,qCAAqC,4BACnC,oBAAoB,WACxB;AAAA,IACA,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,8BAA8B,SAAS;AAAA,EAClD,WAAW,CAAC,MAAc,WAAsB;AAAA,IAC9C,MAAM,qBAAqB,OAAO;AAAA,IAClC,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,6BAA6B,SAAS;AAAA,EACjD,WAAW,CAAC,WAAmB;AAAA,IAC7B,MAAM,yBAAyB,4BAA4B;AAAA,IAC3D,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,6BAA6B,SAAS;AAAA,EACjD,WAAW,CAAC,QAAgB,MAAc;AAAA,IACxC,MAAM,GAAG,WAAW,iBAAiB;AAAA,IACrC,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,kCAAkC,SAAS;AAAA,EACtD,WAAW,CAAC,QAAgB,MAAc;AAAA,IACxC,MAAM,GAAG,WAAW,sBAAsB;AAAA,IAC1C,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,gCAAgC,SAAS;AAAA,EACpD,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,uBAAuB,SAAS;AAAA,EAC3C,WAAW,GAAG;AAAA,IACZ,MAAM,0CAA0C;AAAA,IAChD,KAAK,OAAO;AAAA;AAEhB;;;ACtDO,SAAS,mBAAmB,CAAC,MAA4C;AAAA,EAC9E,OAAO,OAAO,SAAS,WAAW,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,MAAM;AAAA;;;AC+B7D,SAAS,SAAS,CACvB,QACA,KACY;AAAA,EACZ,OAAO,eAAe,cAAc,CAAC,GAAG,GAAG,MAAM,CAAC;AAAA;AAO7C,SAAS,SAAY,CAC1B,QACA,OACG;AAAA,EACH,MAAM,QAAQ,iBAAiB,KAAK;AAAA,EACpC,IAAI,MAAM,YAAY,GAAG;AAAA,IACvB,MAAM,QAAQ,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG;AAAA,IACvD,MAAM,IAAI,MAAM,8CAA8C,QAAQ;AAAA,EACxE;AAAA,EACA,MAAM,MAA2B,CAAC;AAAA,EAClC,WAAW,SAAS,OAAO,QAAQ;AAAA,IACjC,MAAM,MAAM,MAAM,SAAS,MAAM,IAAI;AAAA,IACrC,MAAM,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI;AAAA,IAC/B,IAAI,MAAM,QAAQ,eAAe,KAAK,MAAM,IAAI;AAAA,EAClD;AAAA,EACA,OAAO;AAAA;AAOT,SAAS,cAAc,CAAC,KAAU,MAAwB;AAAA,EACxD,IAAI,OAAO;AAAA,IAAM,OAAO;AAAA,EAExB,IAAI,OAAO,IAAI,GAAG;AAAA,IAChB,MAAM,YAAa,KAAa,SAAS,GAAG;AAAA,IAC5C,MAAM,MAAa,CAAC;AAAA,IACpB,WAAW,QAAQ;AAAA,MAAK,IAAI,KAAK,eAAe,MAAM,SAAS,CAAC;AAAA,IAChE,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,MAAM,IAAI,GAAG;AAAA,IACf,MAAM,MAA8B,CAAC;AAAA,IAErC,IAAI,IAAI,OAAO,WAAW;AAAA,MACxB,WAAW,SAAS,KAAK;AAAA,QACvB,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,UACxB,IAAI,OAAO,MAAM,EAAE,KAAK,OAAO,MAAM,MAAM,EAAE;AAAA,QAC/C,EAAO,SAAI,SAAS,OAAO,UAAU,UAAU;AAAA,UAC7C,MAAM,IAAI,MAAM,OAAO,MAAM;AAAA,UAC7B,MAAM,IAAI,MAAM,SAAS,MAAM;AAAA,UAC/B,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,KAAK,OAAO,CAAC;AAAA,QAC5C;AAAA,MACF;AAAA,IACF,EAAO,SAAI,OAAO,QAAQ,UAAU;AAAA,MAElC,YAAY,GAAG,MAAM,OAAO,QAAQ,GAAG,GAAG;AAAA,QACxC,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,KAAK,OAAO,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,SAAS,IAAI,GAAG;AAAA,IAClB,MAAM,cAAe,KAAa;AAAA,IAClC,MAAM,MAA2B,CAAC;AAAA,IAClC,WAAW,MAAM,aAAa;AAAA,MAC5B,IAAI,GAAG,QAAQ,eAAe,IAAI,GAAG,OAAO,GAAG,IAAI;AAAA,IACrD;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,aAAa,IAAI,GAAG;AAAA,IACtB,OAAO,OAAO,OAAO,OAAO,OAAO,GAAG;AAAA,EACxC;AAAA,EAEA,IAAI,SAAS,IAAI,GAAG;AAAA,IAClB,OAAO,cAAa,GAAG;AAAA,EACzB;AAAA,EAEA,IAAI,MAAM,IAAI,KAAM,KAAa,aAAa,IAAI;AAAA,IAEhD,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,IAAI,OAAO,OAAO,OAAO,gBAAgB,KAAK,OAAO,OAAO,OAAO,gBAAgB,GAAG;AAAA,QACpF,OAAO,OAAO,GAAG;AAAA,MACnB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAO,IAAI,GAAG;AAAA,IAChB,OAAO,QAAQ,GAAG;AAAA,EACpB;AAAA,EAGA,OAAO;AAAA;AAGT,SAAS,aAAY,CAAC,KAAsB;AAAA,EAC1C,IAAI,eAAe;AAAA,IAAY,OAAO;AAAA,EACtC,IAAI,eAAe;AAAA,IAAa,OAAO,IAAI,WAAW,GAAG;AAAA,EACzD,IAAI,OAAO,IAAI,kBAAkB,aAAa;AAAA,IAC5C,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAAA,EAClE;AAAA,EACA,OAAO,IAAI,WAAW,CAAC;AAAA;;;ACjHlB,IAAM,oBAAoB,QAAO;AAAA,EACtC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,0BAA0B,MAAK,GAAG,IAAI;AAAA,EAC5C,OAAM,qBAAqB,MAAK,GAAG,IAAI;AAAA,EACvC,OAAM,uBAAuB,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACvE,OAAM,YAAY,MAAK,OAAM,QAAQ,QAAO,CAAC,OAAM,WAAW,MAAK,GAAG,KAAK,GAAG,OAAM,eAAe,WAAU,UAAS,aAAa,KAAK,GAAG,IAAI,GAAG,OAAM,WAAW,MAAK,GAAG,KAAK,GAAG,OAAM,aAAa,MAAK,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACpO,OAAM,cAAc,MAAK,GAAG,IAAI;AAClC,CAAC;AAGM,IAAM,mBAAmB,QAAO;AAAA,EACrC,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC1F,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,0BAA0B,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,OAAM,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;AAC9G,CAAC;AAGM,IAAM,kBAAkB,QAAO;AAAA,EACpC,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC1F,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,WAAW,QAAO,GAAG,KAAK;AAAA,EAChC,OAAM,wBAAwB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACvE,OAAM,sBAAsB,MAAK,OAAM,QAAQ,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAChG,OAAM,qBAAqB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACnE,OAAM,2BAA2B,MAAK,OAAM,QAAQ,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACrG,OAAM,2BAA2B,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC3E,OAAM,sBAAsB,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EACxG,OAAM,8BAA8B,MAAK,GAAG,KAAK;AAAA,EACjD,OAAM,iBAAiB,QAAO,GAAG,IAAI;AAAA,EACrC,OAAM,mBAAmB,QAAO,GAAG,IAAI;AAAA,EACvC,OAAM,mBAAmB,QAAO,GAAG,IAAI;AAAA,EACvC,OAAM,mBAAmB,QAAO,GAAG,IAAI;AAAA,EACvC,OAAM,wBAAwB,OAAM,GAAG,IAAI;AAAA,EAC3C,OAAM,mBAAmB,OAAM,GAAG,IAAI;AAAA,EACtC,OAAM,qBAAqB,QAAO,GAAG,IAAI;AAAA,EACzC,OAAM,eAAe,QAAO,GAAG,IAAI;AAAA,EACnC,OAAM,oBAAoB,MAAK,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAC/F,CAAC;AAGM,IAAM,iBAAiB,QAAO;AAAA,EACnC,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC1F,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,mBAAmB,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AACvG,CAAC;AAGM,IAAM,qBAAqB,QAAO;AAAA,EACvC,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC1F,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,iBAAiB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACzD,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,iBAAiB,QAAO,GAAG,KAAK;AAAA,EACtC,OAAM,4BAA4B,QAAO,GAAG,IAAI;AAAA,EAChD,OAAM,aAAa,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EACpD,OAAM,iBAAiB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EACxD,OAAM,yBAAyB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EACtE,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,YAAY,MAAK,OAAM,QAAQ,QAAO,CAAC,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,eAAe,MAAK,GAAG,KAAK,GAAG,OAAM,mBAAmB,MAAK,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtK,OAAM,cAAc,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC5D,OAAM,uBAAuB,MAAK,GAAG,IAAI;AAAA,EACzC,OAAM,mBAAmB,MAAK,GAAG,IAAI;AAAA,EACrC,OAAM,qBAAqB,MAAK,GAAG,IAAI;AAAA,EACvC,OAAM,wBAAwB,MAAK,GAAG,IAAI;AAAA,EAC1C,OAAM,4BAA4B,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC1E,OAAM,+BAA+B,MAAK,OAAM,QAAQ,QAAO,CAAC,OAAM,aAAa,MAAK,GAAG,KAAK,GAAG,OAAM,QAAQ,MAAK,GAAG,KAAK,GAAG,OAAM,WAAW,QAAO,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACnL,OAAM,6BAA6B,MAAK,OAAM,QAAQ,QAAO,CAAC,OAAM,aAAa,MAAK,GAAG,KAAK,GAAG,OAAM,QAAQ,MAAK,GAAG,KAAK,GAAG,OAAM,WAAW,QAAO,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACjL,OAAM,8BAA8B,MAAK,OAAM,QAAQ,QAAO,CAAC,OAAM,WAAW,MAAK,GAAG,KAAK,GAAG,OAAM,wBAAwB,MAAK,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC5J,OAAM,sBAAsB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAC7D,OAAM,eAAe,OAAM,GAAG,IAAI;AAAA,EAClC,OAAM,wBAAwB,MAAK,GAAG,KAAK;AAAA,EAC3C,OAAM,mBAAmB,MAAK,GAAG,KAAK;AAAA,EACtC,OAAM,2BAA2B,MAAK,GAAG,KAAK;AAAA,EAC9C,OAAM,sBAAsB,MAAK,GAAG,KAAK;AAAA,EACzC,OAAM,2BAA2B,OAAM,GAAG,IAAI;AAAA,EAC9C,OAAM,kBAAkB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EAC1D,OAAM,mBAAmB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EAC3D,OAAM,sBAAsB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EAC9D,OAAM,mBAAmB,MAAK,GAAG,KAAK;AAAA,EACtC,OAAM,yBAAyB,MAAK,GAAG,KAAK;AAAA,EAC5C,OAAM,gBAAgB,MAAK,GAAG,KAAK;AAAA,EACnC,OAAM,0BAA0B,MAAK,GAAG,KAAK;AAAA,EAC7C,OAAM,wBAAwB,MAAK,GAAG,KAAK;AAAA,EAC3C,OAAM,8BAA8B,MAAK,GAAG,KAAK;AAAA,EACjD,OAAM,mBAAmB,MAAK,GAAG,KAAK;AAAA,EACtC,OAAM,qBAAqB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACnE,OAAM,oBAAoB,MAAK,OAAM,QAAQ,QAAO,CAAC,OAAM,eAAe,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,OAAM,eAAe,MAAK,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAC7K,CAAC;AAGM,IAAM,kBAAkB,QAAO;AAAA,EACpC,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC1F,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,cAAc,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,cAAc,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC5D,OAAM,4BAA4B,QAAO,GAAG,IAAI;AAAA,EAChD,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAC1C,CAAC;AAGM,IAAM,kBAAkB,QAAO;AAAA,EACpC,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC1F,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,mBAAmB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EAC3D,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,WAAW,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAC/F,CAAC;AAGM,IAAM,2BAA2B,QAAO;AAAA,EAC7C,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC1F,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,WAAW,MAAK,GAAG,KAAK;AAAA,EAC9B,OAAM,WAAW,QAAO,GAAG,KAAK;AAAA,EAChC,OAAM,aAAa,MAAK,GAAG,KAAK;AAAA,EAChC,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,WAAW,MAAK,GAAG,KAAK;AAChC,CAAC;AAGM,IAAM,2BAA2B,QAAO;AAAA,EAC7C,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,uBAAuB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACrE,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,2BAA2B,QAAO;AAAA,EAC7C,OAAM,YAAY,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC5D,OAAM,uBAAuB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AACvE,CAAC;AAGM,IAAM,mBAAmB,QAAO;AAAA,EACrC,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,iBAAiB,MAAK,GAAG,IAAI;AAAA,EACnC,OAAM,YAAY,MAAK,GAAG,KAAK;AAAA,EAC/B,OAAM,kBAAkB,MAAK,GAAG,IAAI;AAAA,EACpC,OAAM,sBAAsB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EACnE,OAAM,gBAAgB,MAAK,GAAG,IAAI;AAAA,EAClC,OAAM,eAAe,MAAK,GAAG,IAAI;AAAA,EACjC,OAAM,oBAAoB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EACjE,OAAM,kBAAkB,QAAO,GAAG,IAAI;AAAA,EACtC,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,kBAAkB,QAAO;AAAA,EACpC,OAAM,WAAW,QAAO,GAAG,KAAK;AAAA,EAChC,OAAM,SAAS,QAAO,GAAG,KAAK;AAAA,EAC9B,OAAM,kBAAkB,OAAM,GAAG,IAAI;AAAA,EACrC,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,mBAAmB,OAAM,GAAG,IAAI;AAAA,EACtC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EACxC,OAAM,qBAAqB,QAAO,GAAG,IAAI;AAAA,EACzC,OAAM,gBAAgB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAC9D,OAAM,kBAAkB,QAAO,GAAG,IAAI;AAAA,EACtC,OAAM,gBAAgB,QAAO,GAAG,IAAI;AACtC,CAAC;AAGM,IAAM,0BAA0B,QAAO;AAAA,EAC5C,OAAM,SAAS,MAAK,GAAG,KAAK;AAAA,EAC5B,OAAM,UAAU,MAAK,GAAG,KAAK;AAAA,EAC7B,OAAM,WAAW,MAAK,GAAG,KAAK;AAAA,EAC9B,OAAM,WAAW,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC7F,OAAM,UAAU,MAAK,GAAG,KAAK;AAAA,EAC7B,OAAM,YAAY,MAAK,GAAG,KAAK;AAAA,EAC/B,OAAM,cAAc,MAAK,GAAG,KAAK;AACnC,CAAC;AAGM,IAAM,uBAAuB,QAAO;AAAA,EACzC,OAAM,cAAc,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC5D,OAAM,cAAc,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC5D,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,0BAA0B,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAC1E,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EACpC,OAAM,YAAY,QAAO,GAAG,IAAI;AAAA,EAChC,OAAM,WAAW,QAAO,GAAG,IAAI;AAAA,EAC/B,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAC5D,OAAM,kBAAkB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AACjE,CAAC;AAGM,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,eAAe,QAAO,GAAG,KAAK;AAAA,EACpC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,mCAAmC,QAAO;AAAA,EACrD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,mBAAmB,QAAO,GAAG,KAAK;AAAA,EACxC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,iCAAiC,QAAO;AAAA,EACnD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,mBAAmB,QAAO,GAAG,KAAK;AAAA,EACxC,OAAM,iBAAiB,QAAO,GAAG,KAAK;AAAA,EACtC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,uCAAuC,QAAO;AAAA,EACzD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,eAAe,QAAO,GAAG,KAAK;AAAA,EACpC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,uCAAuC,QAAO;AAAA,EACzD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,uBAAuB,OAAM,GAAG,KAAK;AAAA,EAC3C,OAAM,mBAAmB,OAAM,GAAG,KAAK;AAAA,EACvC,OAAM,iBAAiB,QAAO,GAAG,KAAK;AAAA,EACtC,OAAM,YAAY,QAAO,GAAG,IAAI;AAAA,EAChC,OAAM,WAAW,QAAO,GAAG,IAAI;AAAA,EAC/B,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,+BAA+B,QAAO;AAAA,EACjD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,eAAe,QAAO,GAAG,KAAK;AAAA,EACpC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,oCAAoC,QAAO;AAAA,EACtD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,gBAAgB,OAAM,GAAG,KAAK;AAAA,EACpC,OAAM,WAAW,OAAM,GAAG,KAAK;AAAA,EAC/B,OAAM,SAAS,OAAM,GAAG,KAAK;AAAA,EAC7B,OAAM,kBAAkB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACjE,OAAM,gBAAgB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC/D,OAAM,cAAc,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,yCAAyC,QAAO;AAAA,EAC3D,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,gBAAgB,OAAM,GAAG,KAAK;AAAA,EACpC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,mCAAmC,QAAO;AAAA,EACrD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,gBAAgB,OAAM,GAAG,KAAK;AAAA,EACpC,OAAM,aAAa,OAAM,GAAG,KAAK;AAAA,EACjC,OAAM,mBAAmB,QAAO,GAAG,KAAK;AAAA,EACxC,OAAM,iBAAiB,QAAO,GAAG,KAAK;AAAA,EACtC,OAAM,eAAe,QAAO,GAAG,KAAK;AAAA,EACpC,OAAM,eAAe,QAAO,GAAG,KAAK;AAAA,EACpC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,+BAA+B,QAAO;AAAA,EACjD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,gBAAgB,OAAM,GAAG,KAAK;AAAA,EACpC,OAAM,OAAO,OAAM,GAAG,KAAK;AAAA,EAC3B,OAAM,gBAAgB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC/D,OAAM,cAAc,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,oBAAoB,QAAO;AAAA,EACtC,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,iBAAiB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACzD,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EACpC,OAAM,YAAY,QAAO,GAAG,IAAI;AAAA,EAChC,OAAM,WAAW,QAAO,GAAG,IAAI;AAAA,EAC/B,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,EAC/C,OAAM,6BAA6B,MAAK,GAAG,KAAK;AAAA,EAChD,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,EAC9B,OAAM,aAAa,QAAO,CAAC,OAAM,UAAU,MAAK,GAAG,KAAK,GAAG,OAAM,aAAa,MAAK,GAAG,KAAK,GAAG,OAAM,mBAAmB,QAAO,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI;AAAA,EAC/I,OAAM,WAAW,QAAO,CAAC,OAAM,UAAU,MAAK,GAAG,KAAK,GAAG,OAAM,aAAa,MAAK,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI;AAAA,EAClG,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAC5D,OAAM,kBAAkB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AACjE,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,WAAW,QAAO,GAAG,IAAI;AAAA,EAC/B,OAAM,qBAAqB,MAAK,GAAG,IAAI;AAAA,EACvC,OAAM,0BAA0B,MAAK,GAAG,IAAI;AAAA,EAC5C,OAAM,uBAAuB,QAAO,GAAG,IAAI;AAC7C,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACvD,OAAM,WAAW,QAAO,GAAG,IAAI;AACjC,CAAC;AAGM,IAAM,2BAA2B,QAAO;AAAA,EAC7C,OAAM,UAAU,MAAK,GAAG,KAAK;AAAA,EAC7B,OAAM,kBAAkB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAChE,OAAM,YAAY,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC1D,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,oBAAoB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AACpE,CAAC;AAGM,IAAM,wBAAwB,QAAO;AAAA,EAC1C,OAAM,UAAU,MAAK,GAAG,KAAK;AAAA,EAC7B,OAAM,aAAa,MAAK,GAAG,KAAK;AAAA,EAChC,OAAM,mBAAmB,QAAO,GAAG,KAAK;AAC1C,CAAC;AAGM,IAAM,sBAAsB,QAAO;AAAA,EACxC,OAAM,UAAU,MAAK,GAAG,KAAK;AAAA,EAC7B,OAAM,aAAa,MAAK,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,2BAA2B,QAAO;AAAA,EAC7C,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,eAAe,QAAO,GAAG,IAAI;AAAA,EACnC,OAAM,eAAe,OAAM,GAAG,KAAK;AACrC,CAAC;AAGM,IAAM,2BAA2B,QAAO;AAAA,EAC7C,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,mBAAmB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EAC3D,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,eAAe,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACvD,OAAM,WAAW,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC7F,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,oBAAoB,QAAO;AAAA,EACtC,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,iBAAiB,QAAO,GAAG,KAAK;AAAA,EACtC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EACxC,OAAM,kBAAkB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAChE,OAAM,oBAAoB,aAAY,GAAG,IAAI;AAAA,EAC7C,OAAM,aAAa,MAAK,OAAM,QAAQ,aAAY,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EACjE,OAAM,gBAAgB,MAAK,OAAM,QAAQ,aAAY,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EACpE,OAAM,aAAa,OAAM,GAAG,IAAI;AAAA,EAChC,OAAM,SAAS,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAChD,OAAM,qBAAqB,QAAO,GAAG,IAAI;AAAA,EACzC,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EACpC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EACxC,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EACpC,OAAM,wBAAwB,MAAK,GAAG,IAAI;AAAA,EAC1C,OAAM,sBAAsB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAC7D,OAAM,uBAAuB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAC9D,OAAM,kBAAkB,OAAM,GAAG,IAAI;AAAA,EACrC,OAAM,0BAA0B,SAAQ,GAAG,IAAI;AAAA,EAC/C,OAAM,oBAAoB,OAAM,GAAG,IAAI;AACzC,CAAC;AAGM,IAAM,2BAA2B,QAAO;AAAA,EAC7C,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,cAAc,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,cAAc,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC5D,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,eAAe,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACvD,OAAM,4BAA4B,QAAO,GAAG,IAAI;AAAA,EAChD,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EACxC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,2BAA2B,QAAO;AAAA,EAC7C,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,WAAW,QAAO,GAAG,KAAK;AAAA,EAChC,OAAM,eAAe,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACvD,OAAM,wBAAwB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACvE,OAAM,sBAAsB,MAAK,OAAM,QAAQ,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAChG,OAAM,qBAAqB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACnE,OAAM,2BAA2B,MAAK,OAAM,QAAQ,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACrG,OAAM,2BAA2B,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC3E,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,aAAa,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,kBAAkB,QAAO,GAAG,IAAI;AAAA,EACtC,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,wCAAwC,QAAO;AAAA,EAC1D,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,kBAAkB,QAAO,GAAG,IAAI;AAAA,EACtC,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,EACpC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,EACrC,OAAM,eAAe,QAAO,GAAG,KAAK;AAAA,EACpC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,kBAAkB,QAAO,GAAG,IAAI;AAAA,EACtC,OAAM,eAAe,OAAM,GAAG,IAAI;AAAA,EAClC,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAC9D,CAAC;AAGM,IAAM,wCAAwC,QAAO;AAAA,EAC1D,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAC1C,CAAC;AAGM,IAAM,4CAA4C,QAAO;AAAA,EAC9D,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EACxC,OAAM,uBAAuB,QAAO,GAAG,KAAK;AAC9C,CAAC;AAGM,IAAM,iCAAiC,QAAO;AAAA,EACnD,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EACxC,OAAM,kBAAkB,MAAK,OAAM,QAAQ,OAAM,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAChE,OAAM,oBAAoB,aAAY,GAAG,IAAI;AAAA,EAC7C,OAAM,aAAa,MAAK,OAAM,QAAQ,aAAY,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EACjE,OAAM,aAAa,OAAM,GAAG,IAAI;AAAA,EAChC,OAAM,sBAAsB,OAAM,GAAG,IAAI;AAAA,EACzC,OAAM,cAAc,OAAM,GAAG,IAAI;AAAA,EACjC,OAAM,2BAA2B,OAAM,GAAG,IAAI;AAAA,EAC9C,OAAM,UAAU,QAAO,GAAG,IAAI;AAAA,EAC9B,OAAM,mBAAmB,aAAY,GAAG,IAAI;AAAA,EAC5C,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,kBAAkB,QAAO,GAAG,IAAI;AAAA,EACtC,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EACpC,OAAM,wBAAwB,MAAK,GAAG,IAAI;AAAA,EAC1C,OAAM,sBAAsB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAC7D,OAAM,uBAAuB,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,IAAI;AAAA,EAC9D,OAAM,kBAAkB,OAAM,GAAG,IAAI;AAAA,EACrC,OAAM,0BAA0B,SAAQ,GAAG,IAAI;AAAA,EAC/C,OAAM,oBAAoB,OAAM,GAAG,IAAI;AACzC,CAAC;AAGM,IAAM,uCAAuC,QAAO;AAAA,EACzD,OAAM,aAAa,QAAO,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAC1C,CAAC;AAGM,IAAM,4BAA4B,QAAO;AAAA,EAC9C,OAAM,iBAAiB,QAAO,GAAG,KAAK;AAAA,EACtC,OAAM,gBAAgB,QAAO,GAAG,KAAK;AACvC,CAAC;AAGM,IAAM,+BAA+B,QAAO,CAAC,CAAC;AAG9C,IAAM,kCAAkC,QAAO,CAAC,CAAC;AAGjD,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,gBAAgB,QAAO,GAAG,KAAK;AACvC,CAAC;AAGM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,gBAAgB,QAAO,GAAG,KAAK;AACvC,CAAC;AAGM,IAAM,sCAAsC,QAAO,CAAC,CAAC;AAGrD,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,gBAAgB,QAAO,GAAG,KAAK;AACvC,CAAC;AAGM,IAAM,8BAA8B,QAAO,CAAC,CAAC;AAG7C,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,gBAAgB,QAAO,GAAG,KAAK;AACvC,CAAC;AAGM,IAAM,mCAAmC,QAAO;AAAA,EACrD,OAAM,gBAAgB,QAAO,GAAG,KAAK;AACvC,CAAC;AAGM,IAAM,wCAAwC,QAAO,CAAC,CAAC;AAGvD,IAAM,kCAAkC,QAAO,CAAC,CAAC;AAGjD,IAAM,mBAAmB,QAAO;AAAA,EACrC,OAAM,iBAAiB,QAAO,GAAG,KAAK;AAAA,EACtC,OAAM,eAAe,QAAO,GAAG,IAAI;AAAA,EACnC,OAAM,uBAAuB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACrE,OAAM,iBAAiB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC/D,OAAM,gBAAgB,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAChE,CAAC;AAGM,IAAM,4BAA4B,QAAO;AAAA,EAC9C,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,yBAAyB,MAAK,GAAG,KAAK;AAAA,EAC5C,OAAM,wBAAwB,MAAK,GAAG,KAAK;AAAA,EAC3C,OAAM,0BAA0B,MAAK,GAAG,KAAK;AAAA,EAC7C,OAAM,mBAAmB,OAAM,GAAG,KAAK;AAAA,EACvC,OAAM,+BAA+B,MAAK,GAAG,KAAK;AAAA,EAClD,OAAM,kBAAkB,MAAK,GAAG,KAAK;AAAA,EACrC,OAAM,YAAY,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC5D,OAAM,gBAAgB,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAChE,OAAM,mBAAmB,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACnE,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK;AAAA,EAC1F,OAAM,8BAA8B,MAAK,GAAG,KAAK;AAAA,EACjD,OAAM,oBAAoB,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACpE,OAAM,0BAA0B,MAAK,GAAG,KAAK;AAAA,EAC7C,OAAM,yBAAyB,MAAK,GAAG,IAAI;AAAA,EAC3C,OAAM,mCAAmC,MAAK,GAAG,IAAI;AACvD,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,6CAA6C,QAAO;AAAA,EAC/D,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,2CAA2C,QAAO;AAAA,EAC7D,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,0CAA0C,QAAO;AAAA,EAC5D,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,0CAA0C,QAAO;AAAA,EAC5D,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,yCAAyC,QAAO;AAAA,EAC3D,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,+BAA+B,QAAO;AAAA,EACjD,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,WAAW,OAAM,GAAG,KAAK;AACjC,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,SAAS,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAC3D,CAAC;AAGM,IAAM,oCAAoC,QAAO;AAAA,EACtD,OAAM,sBAAsB,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AACxE,CAAC;AAGM,IAAM,uCAAuC,QAAO,CAAC,CAAC;AAGtD,IAAM,oCAAoC,QAAO;AAAA,EACtD,OAAM,YAAY,QAAO,GAAG,KAAK;AACnC,CAAC;AAGM,IAAM,uCAAuC,QAAO;AAAA,EACzD,OAAM,YAAY,OAAM,GAAG,IAAI;AAAA,EAC/B,OAAM,OAAO,OAAM,GAAG,IAAI;AAC5B,CAAC;AAGM,IAAM,2CAA2C,QAAO;AAAA,EAC7D,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,UAAU,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAC1D,CAAC;AAGM,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,UAAU,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC1D,OAAM,gBAAgB,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAC/D,OAAM,gBAAgB,QAAO,GAAG,IAAI;AAAA,EACpC,OAAM,oBAAoB,QAAO,GAAG,IAAI;AAAA,EACxC,OAAM,eAAe,OAAM,GAAG,IAAI;AAAA,EAClC,OAAM,0BAA0B,OAAM,GAAG,IAAI;AAAA,EAC7C,OAAM,wBAAwB,OAAM,GAAG,IAAI;AAAA,EAC3C,OAAM,yBAAyB,OAAM,GAAG,IAAI;AAAA,EAC5C,OAAM,mBAAmB,OAAM,GAAG,IAAI;AAAA,EACtC,OAAM,SAAS,MAAK,GAAG,KAAK;AAAA,EAC5B,OAAM,aAAa,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAC1D,OAAM,gBAAgB,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAC/D,OAAM,cAAc,MAAK,OAAM,QAAQ,QAAO,GAAG,IAAI,CAAC,GAAG,IAAI;AAAA,EAC7D,OAAM,yBAAyB,OAAM,GAAG,IAAI;AAAA,EAC5C,OAAM,kBAAkB,QAAO,GAAG,IAAI;AAAA,EACtC,OAAM,gBAAgB,QAAO,GAAG,IAAI;AACtC,CAAC;AAGM,IAAM,4BAA4B,QAAO;AAAA,EAC9C,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,+BAA+B,QAAO;AAAA,EACjD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,kCAAkC,QAAO;AAAA,EACpD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,mCAAmC,QAAO;AAAA,EACrD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,wCAAwC,QAAO;AAAA,EAC1D,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,kCAAkC,QAAO;AAAA,EACpD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,mBAAmB,QAAO;AAAA,EACrC,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,4BAA4B,QAAO;AAAA,EAC9C,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,8BAA8B,QAAO,CAAC,CAAC;AAG7C,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,4BAA4B,QAAO;AAAA,EAC9C,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,4BAA4B,QAAO;AAAA,EAC9C,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAC7C,CAAC;AAGM,IAAM,0BAA0B,QAAO;AAAA,EAC5C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAC7B,CAAC;AAGM,IAAM,iCAAiC,QAAO;AAAA,EACnD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,+BAA+B,QAAO;AAAA,EACjD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,WAAW,MAAK,GAAG,KAAK;AAAA,EAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,iCAAiC,QAAO;AAAA,EACnD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,+BAA+B,QAAO;AAAA,EACjD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,6CAA6C,QAAO;AAAA,EAC/D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,QAAQ,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EAChD,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,2CAA2C,QAAO;AAAA,EAC7D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,0CAA0C,QAAO;AAAA,EAC5D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,QAAQ,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EAChD,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,0CAA0C,QAAO;AAAA,EAC5D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,yCAAyC,QAAO;AAAA,EAC3D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,kCAAkC,QAAO;AAAA,EACpD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,eAAe,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACvD,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,QAAQ,KAAI,OAAM,OAAO,MAAK,GAAG,KAAK,GAAG,OAAM,SAAS,MAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;AAAA,EACzF,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,WAAW,MAAK,GAAG,KAAK;AAAA,EAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,+BAA+B,QAAO;AAAA,EACjD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,QAAQ,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EACtD,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,oCAAoC,QAAO;AAAA,EACtD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,qBAAqB,QAAO,GAAG,KAAK;AAAA,EAC1C,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,wBAAwB,MAAK,GAAG,KAAK;AAAA,EAC3C,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,2CAA2C,QAAO;AAAA,EAC7D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,4CAA4C,QAAO;AAAA,EAC9D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,2CAA2C,QAAO;AAAA,EAC7D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,WAAW,MAAK,GAAG,KAAK;AAAA,EAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,uCAAuC,QAAO;AAAA,EACzD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,mBAAmB,MAAK,GAAG,KAAK;AAAA,EACtC,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,8CAA8C,QAAO;AAAA,EAChE,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,2CAA2C,QAAO;AAAA,EAC7D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,qBAAqB,QAAO,GAAG,KAAK;AAAA,EAC1C,OAAM,cAAc,MAAK,GAAG,IAAI;AAAA,EAChC,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,iCAAiC,QAAO;AAAA,EACnD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,4CAA4C,QAAO;AAAA,EAC9D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,+BAA+B,QAAO;AAAA,EACjD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,WAAW,MAAK,GAAG,KAAK;AAAA,EAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,EAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,4CAA4C,QAAO;AAAA,EAC9D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,EAC/C,OAAM,iCAAiC,MAAK,GAAG,IAAI;AACrD,CAAC;AAGM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,qCAAqC,QAAO;AAAA,EACvD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,iCAAiC,QAAO;AAAA,EACnD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,YAAY,MAAK,GAAG,KAAK;AAAA,EAC/B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,0CAA0C,QAAO;AAAA,EAC5D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,EAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,0CAA0C,QAAO;AAAA,EAC5D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,EAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,4CAA4C,QAAO;AAAA,EAC9D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAC7C,CAAC;AAGM,IAAM,uCAAuC,QAAO;AAAA,EACzD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,2BAA2B,QAAO,GAAG,KAAK;AAClD,CAAC;AAGM,IAAM,yCAAyC,QAAO;AAAA,EAC3D,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,2BAA2B,QAAO,GAAG,KAAK;AAClD,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,oCAAoC,QAAO;AAAA,EACtD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,EACjC,OAAM,eAAe,YAAW,MAAK,GAAG,OAAM,CAAC,GAAG,KAAK;AAAA,EACvD,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,8BAA8B,QAAO;AAAA,EAChD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,WAAW,MAAK,GAAG,KAAK;AAAA,EAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,6BAA6B,QAAO;AAAA,EAC/C,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,sBAAsB,QAAO,GAAG,KAAK;AAAA,EAC3C,OAAM,eAAe,MAAK,OAAM,QAAQ,MAAK,GAAG,IAAI,CAAC,GAAG,KAAK;AAAA,EAC7D,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,YAAY,MAAK,GAAG,KAAK;AAAA,EAC/B,OAAM,oBAAoB,MAAK,GAAG,KAAK;AAAA,EACvC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAGM,IAAM,mBAAmB,QAAO;AAAA,EACrC,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,oCAAoC,QAAO;AAAA,EACtD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,uCAAuC,QAAO;AAAA,EACzD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,oCAAoC,QAAO;AAAA,EACtD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,uCAAuC,QAAO;AAAA,EACzD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,2CAA2C,QAAO;AAAA,EAC7D,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;AAGM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,WAAW,QAAO,GAAG,KAAK;AAClC,CAAC;;;ACvmBM,IAAM,oBAAoB,CAAC,MAA+B,UAAuB,mBAAmB,CAAC;AACrG,IAAM,qBAAqB,CAAC,MAAgC,UAAU,oBAAoB,CAAC;AAC3F,IAAM,qBAAqB,CAAC,MAAgC,UAAwB,oBAAoB,CAAC;AAGzG,IAAM,kBAAkB,CAAC,MAA6B,UAAU,iBAAiB,CAAC;AAClF,IAAM,kBAAkB,CAAC,MAA6B,UAAqB,iBAAiB,CAAC;AAC7F,IAAM,mBAAmB,CAAC,MAA8B,UAAU,kBAAkB,CAAC;AACrF,IAAM,mBAAmB,CAAC,MAA8B,UAAsB,kBAAkB,CAAC;AACjG,IAAM,kBAAkB,CAAC,MAA6B,UAAU,iBAAiB,CAAC;AAClF,IAAM,kBAAkB,CAAC,MAA6B,UAAqB,iBAAiB,CAAC;AAC7F,IAAM,iBAAiB,CAAC,MAA4B,UAAU,gBAAgB,CAAC;AAC/E,IAAM,iBAAiB,CAAC,MAA4B,UAAoB,gBAAgB,CAAC;;ACjbzF,SAAS,wBAAwB,CAAC,OAAoD;AAAA,EAC3F,MAAM,YAAY,MAAM;AAAA,EACxB,MAAM,sBAAiC,CAAC;AAAA,EACxC,MAAM,iBAA0C,CAAC;AAAA,EAEjD,IAAI,aAAa,MAAM;AAAA,IACrB,MAAM,QAAQ,iBAAiB,aAAa,SAAS,CAAC;AAAA,IACtD,WAAW,SAAS,MAAM,OAAO,QAAQ;AAAA,MACvC,MAAM,MAAM,MAAM,SAAS,MAAM,IAAI;AAAA,MACrC,MAAM,QAAQ,MAAM,IAAI,IAAI,CAAC,IAAI;AAAA,MACjC,IAAI,MAAM,KAAK,WAAW,MAAM,GAAG;AAAA,QACjC,MAAM,MAAM,SAAS,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE;AAAA,QAC5C,OAAO,oBAAoB,UAAU;AAAA,UAAK,oBAAoB,KAAK,IAAI;AAAA,QACvE,oBAAoB,OAAO;AAAA,MAC7B,EAAO;AAAA,QACL,eAAe,MAAM,QAAQ;AAAA;AAAA,IAEjC;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,MAAM;AAAA,EACnB,MAAM,qBAA+B,QAAQ,OACzC,CAAC,KACA,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,GAAI,IAA0B,GAC1D,OAAO,CAAC,MAAM,KAAK,IAAI,EACvB,IAAI,MAAM;AAAA,EAEjB,OAAO;AAAA,IACL,cAAc,OAAO,MAAM,iBAAiB,EAAE;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,IAGA,YAAY,MAAM,eAAe,OAC7B,QACC,MAAM,QAAQ,MAAM,WAAW,IAAI,MAAM,cAAc,CAAC,GAAI,MAAM,WAAiC,GACjG,OAAO,CAAC,UAAU,SAAS,IAAI,EAC/B,IAAI,MAAM;AAAA,EACnB;AAAA;;;ACpQK,SAAS,WAAW,CAAC,OAA0C;AAAA,EACpE,OAAO,EAAE,SAAS,eAAe,KAAK,EAAE;AAAA;AAQnC,SAAS,YAAY,CAC1B,QACqB;AAAA,EACrB,MAAM,cAAc,aAAa,OAAO,MAAM;AAAA,EAC9C,MAAM,aAAa,iBAAiB,WAAW;AAAA,EAC/C,OAAO,kBAAkB,UAAU;AAAA;;;ACE9B,SAAS,0BAA0B,CAAC,OAAuC;AAAA,EAChF,IAAI,UAAU;AAAA,IAAM,OAAO,UAAS;AAAA,EACpC,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,MAAK;AAAA,EAC3C,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,OAAM;AAAA,EAC5C,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAAA,MAC3B,MAAM,IAAI,UACR,mDAAmD,aACnD,0DACF;AAAA,IACF;AAAA,IACA,OAAO,SAAQ;AAAA,EACjB;AAAA,EACA,IAAI,OAAO,UAAU;AAAA,IAAW,OAAO,MAAK;AAAA,EAC5C,IAAI,iBAAiB;AAAA,IAAY,OAAO,QAAO;AAAA,EAC/C,MAAM,IAAI,UACR,yCAAyC,OAAO,YAChD,+DACF;AAAA;AAUK,SAAS,sBAAsB,CACpC,SACmB;AAAA,EACnB,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EACrB,MAAM,UAAU,OAAO,QAAQ,OAAO;AAAA,EACtC,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO;AAAA,EAEjC,MAAM,SAAqB,CAAC;AAAA,EAC5B,MAAM,UAAqC,CAAC;AAAA,EAC5C,YAAY,KAAK,UAAU,SAAS;AAAA,IAClC,MAAM,OAAO,2BAA2B,KAAK;AAAA,IAC7C,OAAO,KAAK,OAAM,KAAK,MAAM,IAAI,CAAC;AAAA,IAClC,QAAQ,OAAO,CAAC,KAAK;AAAA,EACvB;AAAA,EACA,MAAM,SAAS,QAAQ,MAAM;AAAA,EAC7B,MAAM,QAAQ,iBAAiB,SAAS,MAAM;AAAA,EAC9C,OAAO,eAAe,KAAK;AAAA;;;ACjE7B;AAAA;AAIO,MAAM,uBAAuB,MAAM;AAAA,EAE/B;AAAA,EAEA;AAAA,EAET,WAAW,CACT,SACA,SACA;AAAA,IACA,MAAM,SAAS,SAAS,SAAS,OAAO,EAAE,OAAO,QAAQ,MAAM,IAAI,SAAS;AAAA,IAC5E,KAAK,OAAO;AAAA,IACZ,IAAI,SAAS;AAAA,MAAiB,KAAK,kBAAkB,QAAQ;AAAA,IAC7D,IAAI,SAAS;AAAA,MAAW,KAAK,YAAY,QAAQ;AAAA;AAAA,SAS5C,YAAY,CAAC,GAA6B;AAAA,IAC/C,MAAM,OAAO,GAAG,EAAE,cAAc,EAAE;AAAA,IAClC,MAAM,UAAU,EAAE,kBACd,GAAG;AAAA;AAAA;AAAA,EAA8B,EAAE,oBACnC;AAAA,IACJ,OAAO,IAAI,eAAe,SAAS;AAAA,MACjC,iBAAiB,EAAE,mBAAmB;AAAA,MACtC,WAAW,EAAE;AAAA,MACb,OAAO;AAAA,IACT,CAAC;AAAA;AAEL;AAOO,SAAS,0BAA0B,CAAC,KAA2B;AAAA,EACpE,OAAO;AAAA,SACC,KAAI,CAAC,QAAQ,QAAQ;AAAA,MACzB,IAAI;AAAA,QACF,OAAO,MAAM,IAAI,KAAK,QAAQ,MAAM;AAAA,QACpC,OAAO,GAAG;AAAA,QACV,IAAI,aAAa;AAAA,UAAU,MAAM,eAAe,aAAa,CAAC;AAAA,QAC9D,MAAM;AAAA;AAAA;AAAA,SAGJ,OAAM,CAAC,QAAQ,QAAQ;AAAA,MAC3B,IAAI;AAAA,QACF,OAAO,MAAM,IAAI,OAAO,QAAQ,MAAM;AAAA,QACtC,OAAO,GAAG;AAAA,QACV,IAAI,aAAa;AAAA,UAAU,MAAM,eAAe,aAAa,CAAC;AAAA,QAC9D,MAAM;AAAA;AAAA;AAAA,SAMJ,QAAO,CAAC,QAAQ,OAAO;AAAA,MAC3B,IAAI;AAAA,QACF,OAAO,MAAM,IAAI,QAAQ,QAAQ,KAAK;AAAA,QACtC,OAAO,GAAG;AAAA,QACV,IAAI,aAAa;AAAA,UAAU,MAAM,eAAe,aAAa,CAAC;AAAA,QAC9D,MAAM;AAAA;AAAA;AAAA,SAGJ,UAAS,CAAC,QAAQ,OAAO,SAAS;AAAA,MACtC,IAAI;AAAA,QACF,OAAO,MAAM,IAAI,UAAU,QAAQ,OAAO,OAAO;AAAA,QACjD,OAAO,GAAG;AAAA,QACV,IAAI,aAAa;AAAA,UAAU,MAAM,eAAe,aAAa,CAAC;AAAA,QAC9D,MAAM;AAAA;AAAA;AAAA,IAGV,UAAU,MAAM,IAAI,SAAS;AAAA,IAC7B,OAAO,MAAM,IAAI,MAAM;AAAA,EACzB;AAAA;;;ACvFK,SAAS,mBAAsB,CACpC,OACA,eACK;AAAA,EACL,IAAI,CAAC;AAAA,IAAO,OAAO,CAAC;AAAA,EACpB,MAAM,MAAiB,MAAM,QAAQ,KAAK,IACtC,QACA,CAAC,GAAI,KAA2B;AAAA,EACpC,OAAO,IACJ,OAAO,CAAC,MAAM,KAAK,IAAI,EACvB,IAAI,CAAC,MAAM,cAAc,aAAa,CAAC,CAAC,CAAC;AAAA;AAMvC,SAAS,eAAe,CAAC,QAAyC;AAAA,EACvE,MAAM,OAA+B,CAAC;AAAA,EACtC,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,MAAM,WAAW;AAAA,EACjB,IAAI,OAAO,SAAS,OAAO,cAAc;AAAA,IAAY,OAAO;AAAA,EAC5D,WAAW,SAAS,UAA+B;AAAA,IACjD,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxB,KAAK,OAAO,MAAM,EAAE,KAAK,OAAO,MAAM,EAAE;AAAA,IAC1C,EAAO,SAAI,SAAS,OAAO,UAAU,UAAU;AAAA,MAC7C,MAAM,IAAI;AAAA,MACV,KAAK,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE;AAAA,IAClE;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,eAAkB,CAChC,OACkB;AAAA,EAClB,IAAI,OAAO,iBAAkB,OAAe;AAAA,IAC1C,OAAQ,MAA2B,OAAO,eAAe;AAAA,EAC3D;AAAA,EACA,MAAM,WAAY,MAAsB,OAAO,UAAU;AAAA,EACzD,OAAO;AAAA,SACC,KAAI,GAAG;AAAA,MACX,OAAO,SAAS,KAAK;AAAA;AAAA,EAEzB;AAAA;;;ACuCK,MAAM,UAAU;AAAA,EACJ;AAAA,EACA;AAAA,EAWjB,WAAW,CAAC,KAAgB,SAA4B;AAAA,IACtD,KAAK,MAAM,2BAA2B,GAAG;AAAA,IACzC,KAAK,0BAA0B,SAAS,oBAAoB;AAAA;AAAA,cASjD,SAAQ,CACnB,UACA,UAAmC,CAAC,GACpC,eACA,WACoB;AAAA,IACpB,IAAI,CAAC,qBAAqB,KAAK,QAAQ,GAAG;AAAA,MACxC,MAAM,IAAI,UAAU,6DAA6D;AAAA,IACnF;AAAA,IACA,IAAI,WAAW;AAAA,IACf,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,MAAM,MAAa;AAAA,MACzB,WAAW,SAAS,WAAW,SAAS,IAC/B,kBACA;AAAA,IACX;AAAA,IACA,IAAI,CAAC;AAAA,MAAU,MAAM,IAAI,UAAU,gDAAgD;AAAA,IACnF,OAAO,IAAI,UAAU,MAAM,SAAS,UAAU,OAAO,GAAG,aAAa;AAAA;AAAA,OAOzD,QAAO,CACnB,cACA,cACA,MACA,aACA,UACA,SACA,uBACA,mBAAsC,MACtC,QAC2D;AAAA,IAC3D,MAAM,UAAuB;AAAA,MAC3B,eAAe;AAAA,MACf,WAAW;AAAA,MACX,eAAe;AAAA,MACf,cAAc;AAAA,MACd,UAAU,YAAY;AAAA,MACtB,SAAS,WAAW;AAAA,MACpB,oBAAoB,oBAAoB,KAAK;AAAA,MAC7C,yBAAyB,yBAAyB;AAAA,MAClD,2BAA2B;AAAA,IAC7B;AAAA,IAEA,MAAM,eAAe,qBAAqB,OAAO;AAAA,IACjD,MAAM,YAAY,MAAM,KAAK,IAAI,KAAK,QAAQ,YAAY,YAAY,CAAC;AAAA,IACvE,IAAI,CAAC;AAAA,MAAW,MAAM,IAAI,eAAe,oBAAoB;AAAA,IAC7D,MAAM,QAAQ,aAAa,SAAS;AAAA,IACpC,MAAM,WAAW,wBAAwB,KAAK;AAAA,IAC9C,IAAI;AAAA,MAAQ,OAAO,QAAQ;AAAA,IAC3B,OAAO,EAAE,SAAS,SAAS;AAAA;AAAA,OAGf,QAAO,CACnB,aACA,cACA,MASuE;AAAA,IACvE,MAAM,KAAK,MAAM,WAAW;AAAA,IAC5B,MAAM,KAAK,MAAM,eAAe;AAAA,IAChC,MAAM,cAA2B;AAAA,MAC/B,WAAW;AAAA,MACX,eAAe,aAAa;AAAA,MAC5B,kBAAkB,aAAa;AAAA,MAG/B,cAAc;AAAA,MACd,WAAW;AAAA,MACX,gBAAgB,MAAM,iBAAiB;AAAA,MACvC,kBAAkB,MAAM,mBAAmB;AAAA,MAC3C,WAAW,MAAM,YAAY,CAAC;AAAA,MAC9B,OAAO,MAAM,SAAS;AAAA,MACtB,mBAAmB;AAAA,MACnB,sBAAsB,IAAI,cAAc;AAAA,MACxC,oBAAoB,IAAI,aAAa;AAAA,MACrC,qBAAqB,IAAI,aAAa;AAAA,MACtC,gBAAgB,IAAI,SAAS,OAAO,OAAO,OAAO,GAAG,KAAK;AAAA,MAC1D,wBAAwB,IAAI,cAAc;AAAA,MAC1C,kBAAkB,IAAI,QAAQ,OAAO,OAAO,OAAO,GAAG,IAAI;AAAA,MAC1D,cAAc,MAAM,eAAe;AAAA,MACnC,kBAAkB;AAAA,MAClB,cAAc;AAAA,IAChB;AAAA,IAEA,MAAM,YAAY,qBAAqB,WAAW;AAAA,IAClD,MAAM,UAAU,MAAM,KAAK,IAAI,OAAO,QAAQ,YAAY,SAAS,CAAC;AAAA,IAEpE,MAAM,aAAa,QAAQ;AAAA,IAC3B,IAAI,CAAC;AAAA,MAAY,MAAM,IAAI,eAAe,8BAA8B;AAAA,IACxE,MAAM,eAAe,8BAA8B,UAAU;AAAA,IAE7D,OAAO,EAAE,SAAS,aAAa;AAAA;AAAA,SAQ1B,aAAa,CAClB,MAC0B;AAAA,IAC1B,MAAM,OAAO,KAAK,aAAa,IAAI;AAAA,IAEnC,QAAQ,SAAS,SAAS,UAAU,aAAa,MAAM,KAAK,QAC1D,KAAK,mCAEL,MACA,MACA,KAAK,YAAY,MACjB,MACA,KAAK,yBAAyB,MAC9B,KAAK,oBAAoB,MACzB,KAAK,UAAU,IACjB;AAAA,IAEA,QAAQ,YAAY,MAAM,KAAK,QAAQ,SAAS,UAAU;AAAA,MACxD,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IACjB,CAAC;AAAA,IAED,MAAM,eAAe,SAAS;AAAA,IAC9B,IAAI;AAAA,MACF,iBAAiB,QAAQ,SAAS;AAAA,QAChC,IAAI,KAAK,SAAS,GAAG;AAAA,UACnB,MAAM,cAAc,MAAM,YAAY;AAAA,QACxC;AAAA,MACF;AAAA,cACA;AAAA,MACA,QAAQ,MAAM;AAAA;AAAA;AAAA,SASX,kBAAkB,CACvB,MACuC;AAAA,IAEvC,MAAM,YAAY,gBAAgB,KAAK,KAAK;AAAA,IAC5C,MAAM,QAAQ,MAAM,UAAU,KAAK;AAAA,IACnC,IAAI,MAAM,MAAM;AAAA,MACd,MAAM,IAAI,eACR,kBAAkB,KAAK,gHAEzB;AAAA,IACF;AAAA,IAEA,MAAM,aAAuB,MAAM;AAAA,IACnC,MAAM,cAAc,WAAW;AAAA,IAE/B,MAAM,OAAO,KAAK,aAAa,IAAI;AAAA,IAEnC,QAAQ,SAAS,SAAS,UAAU,aAAa,MAAM,KAAK,QAC1D,KAAK,qCAEL,MACA,aACA,KAAK,YAAY,MACjB,KAAK,WAAW,MAChB,KAAK,yBAAyB,MAC9B,KAAK,oBAAoB,MACzB,KAAK,UAAU,IACjB;AAAA,IAEA,QAAQ,YAAY,MAAM,KAAK,QAAQ,SAAS,QAAQ;AAAA,IAExD,IAAI;AAAA,MAEF,MAAM,UAAU,MAAM,QAAQ,SAAS,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;AAAA,MAChE,IAAI,QAAQ,SAAS;AAAA,QAAG,MAAM;AAAA,MAG9B,iBAAiB,SAAS,GAAG,OAAO,gBAAgB,MAAM,UAAU,GAAG;AAAA,QACrE,MAAM,SAAS,MAAM,QAAQ,SAAS,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC;AAAA,QAC1D,IAAI,OAAO,SAAS;AAAA,UAAG,MAAM;AAAA,MAC/B;AAAA,cACA;AAAA,MACA,QAAQ,MAAM;AAAA;AAAA;AAAA,SAKX,cAAc,CACnB,MAC0B;AAAA,IAG1B,MAAM,YAAY,gBAAgB,KAAK,KAAK;AAAA,IAC5C,MAAM,QAAQ,MAAM,UAAU,KAAK;AAAA,IACnC,IAAI,MAAM,MAAM;AAAA,MACd,MAAM,IAAI,eACR,kBAAkB,KAAK,gHAEzB;AAAA,IACF;AAAA,IAEA,MAAM,aAAuB,MAAM;AAAA,IACnC,MAAM,cAAc,WAAW;AAAA,IAE/B,MAAM,OAAO,KAAK,aAAa,IAAI;AAAA,IAEnC,QAAQ,SAAS,SAAS,UAAU,aAAa,MAAM,KAAK,QAC1D,KAAK,qCAEL,MACA,aACA,KAAK,YAAY,MACjB,KAAK,WAAW,MAChB,KAAK,yBAAyB,MAC9B,KAAK,oBAAoB,MACzB,KAAK,UAAU,IACjB;AAAA,IAEA,QAAQ,YAAY,MAAM,KAAK,QAAQ,SAAS,QAAQ;AAAA,IACxD,MAAM,eAAe,SAAS;AAAA,IAC9B,IAAI;AAAA,MACF,MAAM,UAAU,MAAM,QAAQ,SAAS,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;AAAA,MAChE,IAAI,QAAQ,SAAS;AAAA,QAAG,MAAM,cAAc,SAAS,YAAY;AAAA,MAEjE,iBAAiB,SAAS,GAAG,OAAO,gBAAgB,MAAM,UAAU,GAAG;AAAA,QACrE,MAAM,SAAS,MAAM,QAAQ,SAAS,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC;AAAA,QAC1D,IAAI,OAAO,SAAS;AAAA,UAAG,MAAM,cAAc,QAAQ,YAAY;AAAA,MACjE;AAAA,cACA;AAAA,MACA,QAAQ,MAAM;AAAA;AAAA;AAAA,SASX,sBAAsB,CAC3B,MACuC;AAAA,IACvC,MAAM,YAAY,gBAAgB,KAAK,KAAK;AAAA,IAC5C,MAAM,QAAQ,MAAM,UAAU,KAAK;AAAA,IACnC,IAAI,MAAM,MAAM;AAAA,MACd,MAAM,IAAI,eACR,sBAAsB,KAAK,gHAE7B;AAAA,IACF;AAAA,IAEA,MAAM,aAAuB,MAAM;AAAA,IACnC,MAAM,cAAc,WAAW;AAAA,IAE/B,MAAM,OAAO,KAAK,aAAa,IAAI;AAAA,IAEnC,QAAQ,SAAS,SAAS,UAAU,aAAa,MAAM,KAAK,QAC1D,KAAK,mCAEL,MACA,aACA,KAAK,YAAY,MACjB,MACA,KAAK,yBAAyB,MAC9B,KAAK,oBAAoB,MACzB,KAAK,UAAU,IACjB;AAAA,IAIA,QAAQ,SAAS,cAAc,iBAAiB,MAAM,KAAK,QACzD,SACA,UACA;AAAA,MACE,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB;AAAA,MACA,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IACjB,CACF;AAAA,IAEA,IAAI;AAAA,MACF,MAAM,UAAU,MAAM,aAAa,SAAS,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;AAAA,MACrE,IAAI,QAAQ,SAAS;AAAA,QAAG,MAAM;AAAA,MAE9B,iBAAiB,SAAS,GAAG,OAAO,gBAAgB,MAAM,UAAU,GAAG;AAAA,QACrE,MAAM,SAAS,MAAM,aAAa,SAAS,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC;AAAA,QAC/D,IAAI,OAAO,SAAS;AAAA,UAAG,MAAM;AAAA,MAC/B;AAAA,cACA;AAAA,MACA,aAAa,MAAM;AAAA;AAAA,IAIrB,IAAI,KAAK,gBAAgB;AAAA,MAAO;AAAA,IAChC,QAAQ,SAAS,oBAAoB,MAAM,KAAK,QAC9C,SACA,UACA;AAAA,MACE,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB;AAAA,MACA,aAAa,aAAa;AAAA,MAC1B,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IACjB,CACF;AAAA,IAEA,IAAI;AAAA,MACF,iBAAiB,QAAQ,iBAAiB;AAAA,QACxC,IAAI,KAAK,SAAS;AAAA,UAAG,MAAM;AAAA,MAC7B;AAAA,cACA;AAAA,MACA,gBAAgB,MAAM;AAAA;AAAA;AAAA,SAKnB,kBAAkB,CACvB,MAC0B;AAAA,IAC1B,MAAM,YAAY,gBAAgB,KAAK,KAAK;AAAA,IAC5C,MAAM,QAAQ,MAAM,UAAU,KAAK;AAAA,IACnC,IAAI,MAAM,MAAM;AAAA,MACd,MAAM,IAAI,eACR,sBAAsB,KAAK,gHAE7B;AAAA,IACF;AAAA,IAEA,MAAM,aAAuB,MAAM;AAAA,IACnC,MAAM,cAAc,WAAW;AAAA,IAE/B,MAAM,OAAO,KAAK,aAAa,IAAI;AAAA,IAEnC,QAAQ,SAAS,SAAS,UAAU,aAAa,MAAM,KAAK,QAC1D,KAAK,mCAEL,MACA,aACA,KAAK,YAAY,MACjB,MACA,KAAK,yBAAyB,MAC9B,KAAK,oBAAoB,MACzB,KAAK,UAAU,IACjB;AAAA,IAEA,QAAQ,SAAS,cAAc,iBAAiB,MAAM,KAAK,QACzD,SACA,UACA;AAAA,MACE,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB;AAAA,MACA,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IACjB,CACF;AAAA,IAEA,MAAM,eAAe,SAAS;AAAA,IAC9B,IAAI;AAAA,MACF,MAAM,UAAU,MAAM,aAAa,SAAS,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;AAAA,MACrE,IAAI,QAAQ,SAAS;AAAA,QAAG,MAAM,cAAc,SAAS,YAAY;AAAA,MAEjE,iBAAiB,SAAS,GAAG,OAAO,gBAAgB,MAAM,UAAU,GAAG;AAAA,QACrE,MAAM,SAAS,MAAM,aAAa,SAAS,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC;AAAA,QAC/D,IAAI,OAAO,SAAS;AAAA,UAAG,MAAM,cAAc,QAAQ,YAAY;AAAA,MACjE;AAAA,cACA;AAAA,MACA,aAAa,MAAM;AAAA;AAAA,IAIrB,IAAI,KAAK,gBAAgB;AAAA,MAAO;AAAA,IAChC,QAAQ,SAAS,oBAAoB,MAAM,KAAK,QAC9C,SACA,UACA;AAAA,MACE,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB;AAAA,MACA,aAAa,aAAa;AAAA,MAC1B,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IACjB,CACF;AAAA,IAEA,IAAI;AAAA,MACF,iBAAiB,QAAQ,iBAAiB;AAAA,QACxC,IAAI,KAAK,SAAS;AAAA,UAAG,MAAM,cAAc,MAAM,YAAY;AAAA,MAC7D;AAAA,cACA;AAAA,MACA,gBAAgB,MAAM;AAAA;AAAA;AAAA,SASnB,iBAAiB,CACtB,MACuC;AAAA,IACvC,MAAM,OAAO,KAAK,aAAa,IAAI;AAAA,IACnC,QAAQ,SAAS,SAAS,UAAU,aAAa,MAAM,KAAK,QAC1D,KAAK,mCAEL,MACA,MACA,KAAK,YAAY,MACjB,MACA,KAAK,yBAAyB,MAC9B,KAAK,oBAAoB,MACzB,KAAK,UAAU,IACjB;AAAA,IACA,QAAQ,YAAY,MAAM,KAAK,QAAQ,SAAS,UAAU;AAAA,MACxD,eAAe,KAAK;AAAA,MACpB,iBAAiB,KAAK;AAAA,MACtB,SAAS,KAAK;AAAA,MACd,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IACjB,CAAC;AAAA,IACD,IAAI;AAAA,MACF,iBAAiB,QAAQ,SAAS;AAAA,QAChC,IAAI,KAAK,SAAS;AAAA,UAAG,MAAM;AAAA,MAC7B;AAAA,cACA;AAAA,MACA,QAAQ,MAAM;AAAA;AAAA;AAAA,OAeZ,aAAY,GAA2B;AAAA,IAC3C,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,oBAAoB,CAAC,CAAC;AAAA,IACzD,IAAI,CAAC;AAAA,MAAQ,OAAO,CAAC;AAAA,IACrB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,OAAO,oBAAoB,MAAM,OAAO,iBAAiB;AAAA;AAAA,OAIrD,SAAQ,GAAsB;AAAA,IAClC,MAAM,QAAQ,MAAM,KAAK,aAAa;AAAA,IACtC,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA;AAAA,OA0B1B,cAAa,CACjB,MACA,MAC8B;AAAA,IAC9B,IAAI,MAAM,WAAW,QAAQ,MAAM,gBAAgB,MAAM;AAAA,MACvD,MAAM,IAAI,eACR,iEACF;AAAA,IACF;AAAA,IACA,IAAI;AAAA,IACJ,IAAI,MAAM,gBAAgB,MAAM;AAAA,MAI9B,cAAc,KAAK,aAAa,eAAe,IAAI,OAAO,KAAK;AAAA,IACjE,EAAO;AAAA,MACL,cAAc,uBAAuB,MAAM,OAAO;AAAA;AAAA,IAGpD,MAAM,SAAS,QAAQ;AAAA,MACrB,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,WAAW,QAAO,GAAG,IAAI;AAAA,MAC/B,OAAM,qBAAqB,MAAK,GAAG,IAAI;AAAA,MACvC,OAAM,0BAA0B,MAAK,GAAG,IAAI;AAAA,MAC5C,OAAM,uBAAuB,QAAO,GAAG,IAAI;AAAA,IAC7C,CAAC;AAAA,IACD,MAAM,aAAa,iBACjB;AAAA,MACE,MAAM,CAAC,IAAI;AAAA,MACX,SAAS,CAAC,WAAW;AAAA,MACrB,mBAAmB,CAAC,MAAM,mBAAmB,IAAI;AAAA,MACjD,wBAAwB,CAAC,MAAM,yBAAyB,IAAI;AAAA,MAC5D,qBAAqB,CAAC,MAAM,qBACxB,UAAU,0BAA0B,KAAK,kBAAkB,IAC3D,IAAI;AAAA,IACV,GACA,MACF;AAAA,IACA,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,kBAAkB,YAAY,UAAU,CAAC;AAAA,IAC5E,IAAI,CAAC;AAAA,MAAQ,MAAM,IAAI,eAAe,8BAA8B;AAAA,IACpE,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,OAAO;AAAA,MACL,oBAAoB,aAAa,MAAM,kBAAkB;AAAA,MACzD,uBAAuB,MAAM,yBAAyB;AAAA,MACtD,sBAAsB,MAAM,wBAAwB;AAAA,MACpD,wBAAwB,MAAM,0BAA0B;AAAA,MACxD,iBAAiB,OAAO,MAAM,mBAAmB,CAAC;AAAA,MAClD,6BAA6B,MAAM,+BAA+B;AAAA,MAClE,gBAAgB,MAAM,kBAAkB;AAAA,MACxC,UAAU,MAAM,YACX,MAAM,QAAQ,MAAM,QAAQ,IAAI,MAAM,WAAW,CAAC,GAAG,MAAM,QAAQ,GAAG,IAAI,YAAY,IACvF,CAAC;AAAA,MACL,cAAc,MAAM,gBACf,MAAM,QAAQ,MAAM,YAAY,IAAI,MAAM,eAAe,CAAC,GAAG,MAAM,YAAY,GAAG,IAAI,YAAY,IACnG,CAAC;AAAA,MACL,iBAAiB,MAAM,mBAClB,MAAM,QAAQ,MAAM,eAAe,IAAI,MAAM,kBAAkB,CAAC,GAAG,MAAM,eAAe,GAAG,IAAI,YAAY,IAC5G,CAAC;AAAA,MACL,SAAS,MAAM,WAAW;AAAA,MAC1B,MAAM,gBAAgB,MAAM,IAAI;AAAA,MAChC,4BAA4B,MAAM,8BAA8B;AAAA,MAChE,kBAAkB,MAAM,oBACnB,MAAM,QAAQ,MAAM,gBAAgB,IAAI,MAAM,mBAAmB,CAAC,GAAG,MAAM,gBAAgB,GAAG,IAAI,YAAY,IAC/G,CAAC;AAAA,MACL,wBAAwB,MAAM,0BAA0B;AAAA,MACxD,uBAAuB,MAAM,yBAAyB;AAAA,MACtD,iCAAiC,MAAM,mCAAmC;AAAA,IAC5E;AAAA;AAAA,OAII,cAAa,CAAC,kBAAmD;AAAA,IACrE,MAAM,KAAK,IAAI,KAAK,kBAAkB,EAAE,oBAAoB,iBAAiB,CAAC;AAAA;AAAA,OAW1E,cAAa,CACjB,MACA,YACA,SAGe;AAAA,IACf,IAAI;AAAA,IACJ,IAAI,WAAW,MAAM;AAAA,MACnB,cAAc;AAAA,IAChB,EAAO,SAAI,mBAAmB,YAAY;AAAA,MAExC,cAAc,QAAQ,eAAe,IAAI,OAAO;AAAA,IAClD,EAAO;AAAA,MACL,IAAI,QAAQ,WAAW,QAAQ,QAAQ,gBAAgB,MAAM;AAAA,QAC3D,MAAM,IAAI,eACR,iEACF;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,gBAAgB,MAAM;AAAA,QAChC,cAAc,QAAQ,aAAa,eAAe,IAAI,OAAO,QAAQ;AAAA,MACvE,EAAO;AAAA,QACL,cAAc,uBAAuB,QAAQ,OAAO;AAAA;AAAA;AAAA,IAGxD,MAAM,KAAK,IAAI,KAAK,kBAAkB;AAAA,MACpC;AAAA,MACA,aAAa;AAAA,MACb,SAAS;AAAA,IACX,CAAC;AAAA;AAAA,OAIG,YAAW,CAAC,MAA6B;AAAA,IAC7C,MAAM,KAAK,IAAI,KAAK,gBAAgB,EAAE,KAAK,CAAC;AAAA;AAAA,OAIxC,eAAc,CAClB,kBACA,uBACiB;AAAA,IACjB,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,mBAAmB;AAAA,MACpD,oBAAoB;AAAA,MACpB,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,MAAM,IAAI,eAAe,+BAA+B;AAAA,IACrE,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,OAAO,OAAO,MAAM,WAAW,CAAC;AAAA;AAAA,OAI5B,iBAAgB,CAAC,kBAAyD;AAAA,IAC9E,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,6BAA6B;AAAA,MAC9D,oBAAoB;AAAA,IACtB,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,MAAM,IAAI,eAAe,iCAAiC;AAAA,IACvE,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,IAAI,CAAC,MAAM,yBAAyB;AAAA,MAClC,MAAM,IAAI,eAAe,uDAAuD;AAAA,IAClF;AAAA,IACA,OAAO,aAAa,MAAM,uBAAuB;AAAA;AAAA,OAI7C,kBAAiB,CACrB,kBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,8BAA8B;AAAA,MAChD,oBAAoB;AAAA,MACpB,yBAAyB;AAAA,IAC3B,CAAC;AAAA;AAAA,OAIG,oBAAmB,CACvB,kBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,gCAAgC;AAAA,MAClD,oBAAoB;AAAA,MACpB,yBAAyB;AAAA,IAC3B,CAAC;AAAA;AAAA,OAIG,QAAO,CACX,kBACA,uBACuB;AAAA,IACvB,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,mBAAmB;AAAA,MACpD,oBAAoB;AAAA,MACpB,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO,CAAC;AAAA,IACrB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,OAAO,oBAAoB,MAAM,OAAO,gBAAgB;AAAA;AAAA,OAIpD,UAAS,CACb,kBACA,MACA,uBAC4B;AAAA,IAC5B,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,sBAAsB;AAAA,MACvD,oBAAoB;AAAA,MACpB,MAAM,oBAAoB,IAAI;AAAA,MAC9B,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO;AAAA,IACpB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,MAAM,QAAQ,oBAAoB,MAAM,OAAO,gBAAgB;AAAA,IAC/D,OAAO,MAAM,SAAS,IAAI,MAAM,KAAK;AAAA;AAAA,OAIjC,aAAY,CAChB,kBACA,MACA,MAMe;AAAA,IACf,MAAM,UAAU,MAAM,OAClB,IAAI,IAAI,OAAO,QAAQ,KAAK,IAAI,CAAC,IACjC;AAAA,IACJ,MAAM,KAAK,IAAI,KAAK,yBAAyB;AAAA,MAC3C,oBAAoB;AAAA,MACpB,MAAM,oBAAoB,IAAI;AAAA,MAC9B,aAAa,MAAM,cAAc;AAAA,MACjC,SAAS,MAAM,WAAW;AAAA,MAC1B,MAAM;AAAA,MACN,yBAAyB,MAAM,yBAAyB;AAAA,IAC1D,CAAC;AAAA;AAAA,OAIG,WAAU,CACd,kBACA,MACA,gBACA,SACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,uBAAuB;AAAA,MACzC,oBAAoB;AAAA,MACpB,MAAM,oBAAoB,IAAI;AAAA,MAC9B,kBAAkB,kBAAkB;AAAA,MACpC,SAAS,WAAW;AAAA,MACpB,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,qBAAoB,CACxB,kBACA,MACA,uBACsB;AAAA,IACtB,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,kCAAkC;AAAA,MACnE,oBAAoB;AAAA,MACpB,MAAM,oBAAoB,IAAI;AAAA,MAC9B,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO,CAAC;AAAA,IACrB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,OAAO,oBAAoB,MAAM,OAAO,eAAe;AAAA;AAAA,OAInD,oBAAmB,CACvB,kBACA,MACA,uBACqB;AAAA,IACrB,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,iCAAiC;AAAA,MAClE,oBAAoB;AAAA,MACpB,MAAM,oBAAoB,IAAI;AAAA,MAC9B,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO,CAAC;AAAA,IACrB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,OAAO,oBAAoB,MAAM,OAAO,cAAc;AAAA;AAAA,OAIlD,wBAAuB,CAC3B,kBACA,MACA,MACA,uBACyB;AAAA,IACzB,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,qCAAqC;AAAA,MACtE,oBAAoB;AAAA,MACpB,MAAM,oBAAoB,IAAI;AAAA,MAC9B;AAAA,MACA,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO,CAAC;AAAA,IACrB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,OAAO,oBAAoB,MAAM,OAAO,kBAAkB;AAAA;AAAA,OAItD,SAAQ,CACZ,kBACA,YACA,MACA,uBAC2B;AAAA,IAC3B,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,qBAAqB;AAAA,MACtD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO;AAAA,IACpB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,MAAM,QAAQ,oBAAoB,MAAM,OAAO,eAAe;AAAA,IAC9D,OAAO,MAAM,SAAS,IAAI,MAAM,KAAK;AAAA;AAAA,OAIjC,YAAW,CACf,kBACA,YACA,MACA,SACA,YACA,oBACA,mBACA,kBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,wBAAwB;AAAA,MAC1C,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,sBAAsB,sBAAsB;AAAA,MAC5C,oBAAoB,qBAAqB;AAAA,MACzC,mBAAmB,oBAAoB;AAAA,MACvC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,UAAS,CACb,kBACA,YACA,MACA,gBACA,SACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,sBAAsB;AAAA,MACxC,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,kBAAkB,kBAAkB;AAAA,MACpC,SAAS,WAAW;AAAA,MACpB,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAQG,qBAAoB,CACxB,kBACA,YACA,MACA,QACA,SACA,uBAC6B;AAAA,IAC7B,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,mCAAmC;AAAA,MACpE,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,SAAS,UAAU;AAAA,MACnB,UAAU,WAAW;AAAA,MACrB,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,MAAM,IAAI,eAAe,uCAAuC;AAAA,IAC7E,OAAO,yBAAyB,aAAa,MAAM,CAAC;AAAA;AAAA,OAIhD,gBAAe,CACnB,kBACA,YACA,MACA,SACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,6BAA6B;AAAA,MAC/C,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,SAAS,WAAW;AAAA,MACpB,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,YAAW,CACf,kBACA,YACA,MACA,SACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,wBAAwB;AAAA,MAC1C,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,UAAU;AAAA,MACV,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,eAAc,CAClB,kBACA,YACA,MACA,YACA,YACA,cACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,4BAA4B;AAAA,MAC9C,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,aAAa;AAAA,MACb,aAAa;AAAA,MACb,eAAe,gBAAgB;AAAA,MAC/B,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,gBAAe,CACnB,kBACA,YACA,MACA,YACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,6BAA6B;AAAA,MAC/C,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,aAAa;AAAA,MACb,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,kBAAiB,CACrB,kBACA,YACA,MACA,YACA,SACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,+BAA+B;AAAA,MACjD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,aAAa;AAAA,MACb,UAAU;AAAA,MACV,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,sBAAqB,CACzB,kBACA,YACA,MACA,YACA,cACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,oCAAoC;AAAA,MACtD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,aAAa;AAAA,MACb,eAAe;AAAA,MACf,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,uBAAsB,CAC1B,kBACA,YACA,MACA,YACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,qCAAqC;AAAA,MACvD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,aAAa;AAAA,MACb,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAUG,sBAAqB,CACzB,kBACA,YACA,MACA,kBACA,YACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,oCAAoC;AAAA,MACtD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,mBAAmB;AAAA,MACnB,YAAY,cAAc;AAAA,MAC1B,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,gBAAe,CACnB,kBACA,YACA,MACA,YACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,8BAA8B;AAAA,MAChD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,aAAa;AAAA,MACb,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,iBAAgB,CACpB,kBACA,YACA,MACA,YACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,+BAA+B;AAAA,MACjD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,aAAa;AAAA,MACb,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,QAAO,CACX,kBACA,YACA,MACA,uBAC0B;AAAA,IAC1B,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,oBAAoB;AAAA,MACrD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO;AAAA,IACpB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,MAAM,QAAQ,oBAAoB,MAAM,OAAO,cAAc;AAAA,IAC7D,OAAO,MAAM,SAAS,IAAI,MAAM,KAAK;AAAA;AAAA,OAIjC,WAAU,CACd,kBACA,YACA,MACA,YACA,YACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,uBAAuB;AAAA,MACzC,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,SAAQ,CACZ,kBACA,YACA,MACA,gBACA,SACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,qBAAqB;AAAA,MACvC,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,kBAAkB,kBAAkB;AAAA,MACpC,SAAS,WAAW;AAAA,MACpB,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,WAAU,CACd,kBACA,YACA,MACA,SACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,uBAAuB;AAAA,MACzC,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,UAAU;AAAA,MACV,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAIG,eAAc,CAClB,kBACA,YACA,MACA,SACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,4BAA4B;AAAA,MAC9C,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,SAAS,WAAW;AAAA,MACpB,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,OAQG,SAAQ,CACZ,kBACA,YACA,MACA,uBAC2B;AAAA,IAC3B,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,qBAAqB;AAAA,MACtD,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO;AAAA,IACpB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,MAAM,QAAQ,oBAAoB,MAAM,OAAO,eAAe;AAAA,IAC9D,OAAO,MAAM,SAAS,IAAI,MAAM,KAAK;AAAA;AAAA,OAIjC,qBAAoB,CACxB,kBACA,MACA,MACA,uBACsB;AAAA,IACtB,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK,kCAAkC;AAAA,MACnE,oBAAoB;AAAA,MACpB,MAAM,oBAAoB,IAAI;AAAA,MAC9B;AAAA,MACA,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,MAAQ,OAAO,CAAC;AAAA,IACrB,MAAM,QAAQ,aAAa,MAAM;AAAA,IACjC,OAAO,oBAAoB,MAAM,OAAO,eAAe;AAAA;AAAA,OAInD,YAAW,CACf,kBACA,YACA,MACA,WACA,YACA,YACA,YACA,wBACA,iBACA,uBACe;AAAA,IACf,MAAM,aAAa,iBACjB;AAAA,MACE,oBAAoB,CAAC,gBAAgB;AAAA,MACrC,aAAa,CAAC,oBAAoB,UAAU,CAAC;AAAA,MAC7C,MAAM,CAAC,IAAI;AAAA,MACX,YAAY,CAAC,SAAS;AAAA,MACtB,YAAY,CAAC,UAAU;AAAA,MACvB,YAAY,CAAC,UAAU;AAAA,MACvB,aAAa,CAAC,UAAU;AAAA,MACxB,0BAA0B,CAAC,0BAA0B,IAAI;AAAA,MACzD,kBAAkB,CAAC,mBAAmB,IAAI;AAAA,MAC1C,yBAAyB,CAAC,yBAAyB,IAAI;AAAA,IACzD,GACA,wBACF;AAAA,IACA,MAAM,KAAK,IAAI,KAAK,wBAAwB,YAAY,UAAU,CAAC;AAAA;AAAA,OAI/D,UAAS,CACb,kBACA,YACA,MACA,gBACA,uBACe;AAAA,IACf,MAAM,KAAK,IAAI,KAAK,sBAAsB;AAAA,MACxC,oBAAoB;AAAA,MACpB,aAAa,oBAAoB,UAAU;AAAA,MAC3C;AAAA,MACA,kBAAkB,kBAAkB;AAAA,MACpC,yBAAyB,yBAAyB;AAAA,IACpD,CAAC;AAAA;AAAA,EAIH,KAAK,GAAS;AAAA,IACZ,KAAK,IAAI,MAAM;AAAA;AAEnB;;ACpjCA,SAAS,mBAAmB,CAAC,MAA+C;AAAA,EAC1E,IAAI,OAAO,KAAK,aAAa,UAAU;AAAA,IACrC,OAAO,CAAC,GAAG,KAAK,QAAQ;AAAA,EAC1B;AAAA,EACA,OAAO,CAAC,GAAG,KAAK,QAAQ;AAAA;AAOnB,SAAS,qBAAqB,CAAC,OAAkC;AAAA,EACtE,MAAM,SAAS,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM;AAAA,IACvC,MAAM,KAAK,oBAAoB,CAAC;AAAA,IAChC,MAAM,KAAK,oBAAoB,CAAC;AAAA,IAChC,IAAI,GAAG,OAAO,GAAG;AAAA,MAAI,OAAO,GAAG,KAAK,GAAG;AAAA,IACvC,IAAI,OAAO,GAAG,OAAO,YAAY,OAAO,GAAG,OAAO,UAAU;AAAA,MAC1D,OAAO,GAAG,KAAK,GAAG;AAAA,IACpB;AAAA,IACA,OAAO,OAAO,GAAG,EAAE,EAAE,cAAc,OAAO,GAAG,EAAE,CAAC;AAAA,GACjD;AAAA,EAED,MAAM,SAAqB,CAAC;AAAA,EAC5B,WAAW,QAAQ,QAAQ;AAAA,IACzB,MAAM,WAAgC,IAAI;AAAA,IAE1C,IAAI,OAAO,KAAK,aAAa,UAAU;AAAA,MACrC,SAAS,IAAI,aAAa,aAAa;AAAA,IACzC;AAAA,IAEA,IAAI,KAAK,cAAc;AAAA,MACrB,SAAS,IAAI,cAAc,cAAc;AAAA,IAC3C,EAAO,SAAI,KAAK,WAAW;AAAA,MACzB,SAAS,IAAI,cAAc,YAAY;AAAA,IACzC;AAAA,IAEA,IAAI,KAAK,WAAW;AAAA,MAClB,SAAS,IAAI,iBAAiB,gBAAgB;AAAA,IAChD;AAAA,IAEA,IAAI,KAAK,SAAS;AAAA,MAChB,SAAS,IAAI,eAAe,cAAc;AAAA,IAC5C;AAAA,IAGA,IAAI,KAAK,KAAK;AAAA,MACZ,SAAS,IAAI,aAAa,KAAK,GAAG;AAAA,IACpC;AAAA,IAGA,IAAI,KAAK,gBAAgB,WAAW;AAAA,MAClC,SAAS,IAAI,iBAAiB,KAAK,WAAW;AAAA,IAChD;AAAA,IACA,IAAI,KAAK,gBAAgB,WAAW;AAAA,MAClC,SAAS,IAAI,iBAAiB,KAAK,WAAW;AAAA,IAChD;AAAA,IACA,IAAI,KAAK,kBAAkB,WAAW;AAAA,MACpC,SAAS,IAAI,eAAe,KAAK,aAAa;AAAA,IAChD;AAAA,IACA,IAAI,KAAK,YAAY,WAAW;AAAA,MAC9B,SAAS,IAAI,iBAAiB,KAAK,OAAO;AAAA,IAC5C;AAAA,IAEA,MAAM,QAAQ,OACZ,KAAK,MACL,KAAK,WACL,MACA,SAAS,OAAO,IAAI,WAAW,SACjC;AAAA,IACA,OAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,OAAO,QAAQ,MAAM;AAAA;AAgFhB,SAAS,qBAAqB,CAAC,QAAmC;AAAA,EACvE,MAAM,QAAwB,CAAC;AAAA,EAC/B,IAAI,gBAAgB;AAAA,EAEpB,WAAW,SAAS,OAAO,QAAQ;AAAA,IACjC,MAAM,WAAW,MAAM;AAAA,IAEvB,MAAM,UAAU,SAAS,IAAI,WAAW,MAAM;AAAA,IAC9C,MAAM,WAA4B,UAC9B,MAAM,OACN;AAAA,IAEJ,MAAM,UAAU,SAAS,IAAI,YAAY;AAAA,IACzC,MAAM,eAAe,YAAY;AAAA,IACjC,MAAM,YAAY,YAAY;AAAA,IAC9B,MAAM,YAAY,SAAS,IAAI,eAAe,MAAM;AAAA,IACpD,MAAM,UAAU,SAAS,IAAI,aAAa,MAAM;AAAA,IAChD,MAAM,MAAM,SAAS,IAAI,WAAW,KAAK;AAAA,IAGzC,MAAM,cAAc,SAAS,IAAI,eAAe;AAAA,IAChD,MAAM,cAAc,SAAS,IAAI,eAAe;AAAA,IAChD,MAAM,gBAAgB,SAAS,IAAI,aAAa;AAAA,IAChD,MAAM,UAAU,SAAS,IAAI,eAAe;AAAA,IAE5C,MAAM,KAAK;AAAA,MACT,MAAM,MAAM;AAAA,MACZ;AAAA,MACA,WAAW,MAAM;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,OAAO;AAAA;;ACzYT,IAAM,cAAc,QAAW;AAAA,EAC7B,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,QAAQ,QAAO,GAAG,KAAK;AAAA,EAC7B,OAAM,iBAAiB,QAAO,GAAG,IAAI;AAAA,EACrC,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,EAC9B,OAAM,UAAU,MAAK,GAAG,IAAI;AAC9B,CAAC;AAmEM,SAAS,2BAA2B,CACzC,OACkB;AAAA,EAClB,MAAM,MAAM,CAAC,GAAG,SAAS,iBAAiB,KAAK,CAAC,CAAC,EAAE;AAAA,EAGnD,IAAI,QAAQ,WAAW;AAAA,IACrB,MAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAAA,EAIA,MAAM,aAAa,kBAAkB,aAAa,IAAI,IAAkB,CAAC;AAAA,EACzE,MAAM,OAAO,WAAW,OAAO,GAAI;AAAA,EAEnC,IAAI;AAAA,EACJ,MAAM,eAAe,IAAI;AAAA,EACzB,IAAI,gBAAgB,MAAM;AAAA,IACxB,MAAM,UAAU,aAAa,YAA0B;AAAA,IACvD,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,MAAM,aAAa,CAAC,GAAG,SAAS,iBAAiB,OAAO,CAAC,CAAC,EAAE;AAAA,MAG5D,QAAQ,YAAY;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM,OAAO,IAAI,IAAI;AAAA,IACrB,aAAa,OAAO,IAAI,eAAe,EAAE;AAAA,IACzC;AAAA,OACI,UAAU,aAAa,UAAU,OAAO,CAAC,IAAI,EAAE,SAAS,MAAM;AAAA,IAClE,UAAU,IAAI,aAAa;AAAA,IAC3B,QAAQ,IAAI,WAAW;AAAA,EACzB;AAAA;AAIK,SAAS,4BAA4B,CAC1C,OACoB;AAAA,EACpB,OAAO,MAAM,KAAK,OAAO,2BAA2B;AAAA;",
41
- "debugId": "8BECE39CB65F6AD764756E2164756E21",
41
+ "mappings": "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",
42
+ "debugId": "A700197CD6EACFA764756E2164756E21",
42
43
  "names": []
43
44
  }