@query-farm/vgi 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/arrow/impl-arrowjs/index.d.ts +7 -0
- package/dist/arrow/impl-flechette/arrowjs-shape.d.ts +16 -0
- package/dist/arrow/impl-flechette/compat.d.ts +22 -0
- package/dist/arrow/impl-flechette/index.d.ts +2 -0
- package/dist/arrow/impl-flechette/ipc.d.ts +1 -1
- package/dist/arrow/index.d.ts +2 -2
- package/dist/arrow/predicates.d.ts +16 -0
- package/dist/cache-control.d.ts +7 -0
- package/dist/client-entry.js +5 -1
- package/dist/client-entry.js.map +4 -4
- package/dist/index.core.d.ts +2 -2
- package/dist/index.js +56 -4
- package/dist/index.js.map +10 -10
- package/dist/serve-entry.js +6 -1
- package/dist/serve-entry.js.map +5 -5
- package/dist/util/arrow/index.d.ts +1 -1
- package/dist/worker-cf-entry.js +53 -4
- package/dist/worker-cf-entry.js.map +9 -9
- package/package.json +5 -5
- package/src/arrow/impl-arrowjs/index.ts +10 -0
- package/src/arrow/impl-flechette/arrowjs-shape.ts +78 -0
- package/src/arrow/impl-flechette/canonical.ts +19 -0
- package/src/arrow/impl-flechette/compat.ts +254 -0
- package/src/arrow/impl-flechette/empty.ts +5 -1
- package/src/arrow/impl-flechette/index.ts +8 -0
- package/src/arrow/impl-flechette/ipc.ts +72 -6
- package/src/arrow/impl-flechette/normalize-type.ts +10 -2
- package/src/arrow/impl-flechette/schema.ts +13 -9
- package/src/arrow/index.ts +3 -0
- package/src/arrow/predicates.ts +59 -0
- package/src/cache-control.ts +8 -0
- package/src/functions/registry.ts +21 -4
- package/src/index.core.ts +3 -0
- package/src/protocol/handlers/function.ts +9 -1
- package/src/util/arrow/index.ts +1 -0
package/dist/serve-entry.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Cloudflare Durable Object storage for VGI function state.\n//\n// Port of vgi-python's vgi/function_storage_cf_do.py. Talks the Cloudflare\n// Worker + Durable Object's unified state_* / queue_* protocol\n// (vgi-cloudflare-durable-object-storage/src/index.ts). Every request carries\n// the per-attach `shard_key` (set via forShard); destructive ops carry a fresh\n// 32-hex `attempt_id`. The DO is single-threaded SQLite, so ops are atomic.\n//\n// Usage:\n// Set `VGI_WORKER_SHARED_STORAGE=cloudflare-do` plus `VGI_CF_DO_URL`.\n// Optionally set `VGI_CF_DO_TOKEN` for bearer auth.\n\nimport type { FunctionStorage } from \"./storage.js\";\nimport { UnknownInvocationError } from \"./storage.js\";\n\n/** Minimal fetch signature satisfied by both the global `fetch` and a\n * Cloudflare service-binding Fetcher (`env.<BINDING>`). */\nexport type FetchLike = (\n input: string,\n init?: { method?: string; headers?: Record<string, string>; body?: string },\n) => Promise<Response>;\n\n// Namespaces under the unified state_* table for the legacy worker/queue\n// families the DO no longer has dedicated endpoints for.\nconst NS_WORKER = new TextEncoder().encode(\"worker\");\n\nexport class FunctionStorageCfDo implements FunctionStorage {\n private readonly _baseUrl: string;\n private readonly _token: string | null;\n /** Per-attach routing key (att-<hex uuid>); \"\" until pinned via forShard. */\n private readonly _shardKey: string;\n /** Fetch implementation. Defaults to the global `fetch`; pass a Cloudflare\n * service-binding Fetcher (env.<BINDING>) when the storage worker lives on\n * the same account/zone — a same-zone public-URL fetch is rejected (CF\n * error 1042), but a service binding routes worker-to-worker directly. */\n private readonly _fetch: FetchLike;\n\n constructor(opts: {\n url: string;\n token?: string | null;\n shardKey?: string;\n fetch?: FetchLike;\n }) {\n // Strip trailing slash so endpoint paths can be appended unconditionally.\n this._baseUrl = opts.url.replace(/\\/+$/, \"\");\n this._token = opts.token ?? null;\n this._shardKey = opts.shardKey ?? \"\";\n this._fetch = opts.fetch ?? ((input, init) => fetch(input as any, init));\n }\n\n /** Build an instance from environment variables. */\n static fromEnv(): FunctionStorageCfDo {\n const url = process.env.VGI_CF_DO_URL;\n if (!url) {\n throw new Error(\n \"VGI_CF_DO_URL environment variable is required when \" +\n \"VGI_WORKER_SHARED_STORAGE=cloudflare-do\",\n );\n }\n return new FunctionStorageCfDo({\n url,\n token: process.env.VGI_CF_DO_TOKEN || null,\n });\n }\n\n /**\n * Return a view of this backend pinned to one shard key, so callers can route\n * per logical ATTACH. Shares the URL/token; only the shard key differs.\n */\n forShard(shardKey: string): FunctionStorageCfDo {\n return new FunctionStorageCfDo({\n url: this._baseUrl,\n token: this._token,\n shardKey,\n fetch: this._fetch,\n });\n }\n\n // --- Worker state → ns=worker, key = int64(worker_id) ---\n\n async workerPut(executionId: Uint8Array, workerId: number, state: Uint8Array): Promise<void> {\n await this._statePutMany(executionId, NS_WORKER, [[int64Key(workerId), state]]);\n }\n\n async workerCollect(executionId: Uint8Array): Promise<Uint8Array[]> {\n const rows = await this._statePaged(\"state_drain\", executionId, NS_WORKER, newAttemptId());\n return rows.map(([, v]) => v);\n }\n\n async workerScan(executionId: Uint8Array): Promise<Array<[number, Uint8Array]>> {\n const rows = await this._statePaged(\"state_scan\", executionId, NS_WORKER, null);\n return rows.map(([k, v]) => [int64FromKey(k), v]);\n }\n\n // --- Work queue ---\n\n async queuePush(executionId: Uint8Array, items: Uint8Array[]): Promise<number> {\n const data = await this._post<{ count: number }>(\"queue_push\", {\n execution_id: bytesToB64(executionId),\n items: items.map(bytesToB64),\n attempt_id: newAttemptId(),\n });\n return Number(data.count);\n }\n\n async queuePop(executionId: Uint8Array): Promise<Uint8Array | null> {\n const data = await this._post<{ item: string | null }>(\"queue_pop\", {\n execution_id: bytesToB64(executionId),\n attempt_id: newAttemptId(),\n });\n return data.item ? b64ToBytes(data.item) : null;\n }\n\n async queueClear(executionId: Uint8Array): Promise<number> {\n const data = await this._post<{ cleared: number }>(\"queue_clear\", {\n execution_id: bytesToB64(executionId),\n attempt_id: newAttemptId(),\n });\n return Number(data.cleared);\n }\n\n // --- Namespaced key/value state ---\n\n async stateGet(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array): Promise<Uint8Array | null> {\n const data = await this._post<{ rows: Array<{ value: string } | null> }>(\"state_get_many\", {\n scope_id: bytesToB64(scopeId),\n ns: bytesToB64(ns),\n keys: [bytesToB64(key)],\n });\n const row = (data.rows ?? [])[0];\n return row ? b64ToBytes(row.value) : null;\n }\n\n async statePut(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, value: Uint8Array): Promise<void> {\n await this._statePutMany(scopeId, ns, [[key, value]]);\n }\n\n // --- Append-only log ---\n\n async stateAppend(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, item: Uint8Array): Promise<number> {\n const data = await this._post<{ ordinal: number }>(\"state_append\", {\n scope_id: bytesToB64(scopeId),\n ns: bytesToB64(ns),\n key: bytesToB64(key),\n item: bytesToB64(item),\n attempt_id: newAttemptId(),\n });\n return Number(data.ordinal);\n }\n\n async stateLogScan(\n scopeId: Uint8Array,\n ns: Uint8Array,\n key: Uint8Array,\n afterId: number = -1,\n limit: number | null = null,\n ): Promise<Array<[number, Uint8Array]>> {\n const body: Record<string, unknown> = {\n scope_id: bytesToB64(scopeId),\n ns: bytesToB64(ns),\n key: bytesToB64(key),\n after_id: afterId,\n };\n if (limit != null && limit > 0) body.limit = limit;\n const data = await this._post<{ rows: Array<{ id: number; value: string }> }>(\"state_log_scan\", body);\n return (data.rows ?? []).map((r) => [Number(r.id), b64ToBytes(r.value)]);\n }\n\n async executionClear(scopeId: Uint8Array): Promise<number> {\n const data = await this._post<{ deleted: number }>(\"execution_clear\", {\n scope_id: bytesToB64(scopeId),\n attempt_id: newAttemptId(),\n });\n return Number(data.deleted);\n }\n\n // --- unified state_* helpers ---\n\n private async _statePutMany(\n scopeId: Uint8Array,\n ns: Uint8Array,\n items: Array<[Uint8Array, Uint8Array]>,\n ): Promise<void> {\n await this._post(\"state_put_many\", {\n scope_id: bytesToB64(scopeId),\n ns: bytesToB64(ns),\n items: items.map(([k, v]) => ({ key: bytesToB64(k), value: bytesToB64(v) })),\n attempt_id: newAttemptId(),\n });\n }\n\n /** Drive state_scan / state_drain across pages. attemptId is null for scan. */\n private async _statePaged(\n endpoint: string,\n scopeId: Uint8Array,\n ns: Uint8Array,\n attemptId: string | null,\n ): Promise<Array<[Uint8Array, Uint8Array]>> {\n const out: Array<[Uint8Array, Uint8Array]> = [];\n let afterKey: string | undefined;\n for (;;) {\n const body: Record<string, unknown> = { scope_id: bytesToB64(scopeId), ns: bytesToB64(ns) };\n if (afterKey != null) body.after_key = afterKey;\n if (attemptId != null) body.attempt_id = attemptId;\n const data = await this._post<{ rows: Array<{ key: string; value: string }>; next_after?: string }>(\n endpoint,\n body,\n );\n for (const r of data.rows ?? []) out.push([b64ToBytes(r.key), b64ToBytes(r.value)]);\n if (!data.next_after) break;\n afterKey = data.next_after;\n }\n return out;\n }\n\n // --- HTTP plumbing ---\n\n private async _post<T = Record<string, unknown>>(\n endpoint: string,\n body: Record<string, unknown>,\n ): Promise<T> {\n const url = `${this._baseUrl}/${endpoint}`;\n const headers: Record<string, string> = { \"Content-Type\": \"application/json\" };\n if (this._token) headers[\"Authorization\"] = `Bearer ${this._token}`;\n // The Worker routes on shard_key (idFromName) and rejects requests without\n // one — always splice it in.\n const payload = JSON.stringify({ ...body, shard_key: this._shardKey });\n\n let lastErr: unknown;\n // One retry on transport-level failures, matching the python client.\n for (let attempt = 0; attempt < 2; attempt++) {\n let resp: Response;\n try {\n resp = await this._fetch(url, { method: \"POST\", headers, body: payload });\n } catch (err) {\n lastErr = err;\n continue;\n }\n\n let data: any;\n try {\n data = await resp.json();\n } catch {\n if (!resp.ok) {\n throw new Error(`CF DO storage error ${resp.status} on ${endpoint}: <non-json body>`);\n }\n return {} as T;\n }\n\n if (resp.status === 404 && data?.error === \"unknown_invocation\") {\n throw new UnknownInvocationError(\n data.message ??\n \"Invocation is not registered. Call queuePush first to register the invocation.\",\n );\n }\n if (resp.status === 401) {\n throw new Error(`Authentication failed: ${data?.error ?? \"unauthorized\"}`);\n }\n if (!resp.ok) {\n throw new Error(`CF DO storage error ${resp.status} on ${endpoint}: ${JSON.stringify(data)}`);\n }\n return data as T;\n }\n throw lastErr instanceof Error\n ? lastErr\n : new Error(`CF DO storage transport error on ${endpoint}: ${String(lastErr)}`);\n }\n}\n\n/** Fresh 32-char lowercase-hex idempotency token (the DO's attempt_id shape). */\nfunction newAttemptId(): string {\n const b = new Uint8Array(16);\n crypto.getRandomValues(b);\n let s = \"\";\n for (let i = 0; i < 16; i++) s += b[i].toString(16).padStart(2, \"0\");\n return s;\n}\n\n/** Encode an int64 worker/group id as an 8-byte big-endian state key. */\nfunction int64Key(v: number): Uint8Array {\n const b = new Uint8Array(8);\n new DataView(b.buffer).setBigInt64(0, BigInt(v), false);\n return b;\n}\n\nfunction int64FromKey(b: Uint8Array): number {\n if (b.length !== 8) return 0;\n return Number(new DataView(b.buffer, b.byteOffset, 8).getBigInt64(0, false));\n}\n\nfunction bytesToB64(buf: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < buf.length; i++) binary += String.fromCharCode(buf[i]);\n return btoa(binary);\n}\n\nfunction b64ToBytes(b64: string): Uint8Array {\n const binary = atob(b64);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) out[i] = binary.charCodeAt(i);\n return out;\n}\n",
|
|
6
6
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Storage for VGI function state.\n// Provides shared state across worker processes for distributed execution.\n// Port of vgi-python's vgi/function_storage.py.\n//\n// The interface is async so HTTP-backed implementations (Cloudflare DO,\n// Azure SQL, etc.) can use fetch/network drivers without sync hacks.\n// FunctionStorageSqlite wraps bun:sqlite's sync calls in resolved promises.\n\n// FunctionStorageSqlite is the only thing in this module that needs Bun + node:*\n// modules. Workers (Cloudflare workerd / browsers) should use\n// FunctionStorageCfDo (HTTP-backed) instead — they never reach this class.\n// We resolve all node:* and bun:* dependencies through indirect string\n// variables that esbuild can't trace statically, so workerd bundles cleanly\n// without nodejs_compat polyfills for paths we never run.\ntype Database = any;\nconst _BUN_SQLITE_MOD = \"bun:sqlite\";\nconst _NODE_OS_MOD = \"node:os\";\nconst _NODE_PATH_MOD = \"node:path\";\nconst _NODE_FS_MOD = \"node:fs\";\nlet _Database: any = null;\nfunction _req(): any {\n const req: any = (import.meta as any).require ?? (globalThis as any).require ?? null;\n if (!req) {\n throw new Error(\n \"FunctionStorageSqlite requires Node.js or Bun (bun:sqlite + node:os/path/fs). \" +\n \"Use FunctionStorageCfDo on non-Bun runtimes.\",\n );\n }\n return req;\n}\nfunction _loadDatabase(): any {\n if (_Database) return _Database;\n try {\n _Database = _req()(_BUN_SQLITE_MOD).Database;\n return _Database;\n } catch (e: any) {\n throw new Error(\n `FunctionStorageSqlite: failed to load bun:sqlite — ${e?.message ?? e}`,\n );\n }\n}\nfunction _loadNodeIo(): {\n homedir: () => string;\n platform: () => string;\n join: (...parts: string[]) => string;\n mkdirSync: (path: string, opts?: any) => void;\n} {\n const r = _req();\n return {\n homedir: r(_NODE_OS_MOD).homedir,\n platform: r(_NODE_OS_MOD).platform,\n join: r(_NODE_PATH_MOD).join,\n mkdirSync: r(_NODE_FS_MOD).mkdirSync,\n };\n}\n\n// ============================================================================\n// Errors\n// ============================================================================\n\nexport class UnknownInvocationError extends Error {\n constructor(message?: string | Uint8Array) {\n let text: string;\n if (message instanceof Uint8Array) {\n text =\n `Invocation ${hexEncode(message)} is not registered. ` +\n \"Call queuePush first to register the invocation.\";\n } else {\n text =\n message ??\n \"Invocation is not registered. Call queuePush first to register the invocation.\";\n }\n super(text);\n this.name = \"UnknownInvocationError\";\n }\n}\n\nfunction hexEncode(buf: Uint8Array): string {\n return Array.from(buf, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n// ============================================================================\n// FunctionStorage interface\n// ============================================================================\n\nexport interface FunctionStorage {\n workerPut(executionId: Uint8Array, workerId: number, state: Uint8Array): Promise<void>;\n workerCollect(executionId: Uint8Array): Promise<Uint8Array[]>;\n workerScan(executionId: Uint8Array): Promise<Array<[number, Uint8Array]>>;\n queuePush(executionId: Uint8Array, items: Uint8Array[]): Promise<number>;\n queuePop(executionId: Uint8Array): Promise<Uint8Array | null>;\n queueClear(executionId: Uint8Array): Promise<number>;\n // --- Namespaced key/value state (scoped by execution_id) ---\n stateGet(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array): Promise<Uint8Array | null>;\n statePut(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, value: Uint8Array): Promise<void>;\n // --- Append-only log (scoped by execution_id) ---\n stateAppend(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, item: Uint8Array): Promise<number>;\n stateLogScan(\n scopeId: Uint8Array,\n ns: Uint8Array,\n key: Uint8Array,\n afterId?: number,\n limit?: number | null,\n ): Promise<Array<[number, Uint8Array]>>;\n /** Wipe all state + log rows for a scope across every namespace. */\n executionClear(scopeId: Uint8Array): Promise<number>;\n /** Optional cleanup hook. Implementations holding a connection should release it here. */\n close?(): Promise<void> | void;\n}\n\n// FrameworkNS — namespaces the framework itself uses (mirrors Python's\n// FrameworkNS enum). User code picks its own arbitrary namespace bytes.\nexport const FrameworkNS = {\n BUFFERING_INIT: textBytes(\"_vgi/buffering_init\"),\n STREAMING_FINALIZE: textBytes(\"_vgi/streaming_finalize\"),\n} as const;\n\nfunction textBytes(s: string): Uint8Array {\n return new TextEncoder().encode(s);\n}\n\n/** Encode an int as 8-byte little-endian, matching Python's pack_int_key. */\nexport function packIntKey(i: number | bigint): Uint8Array {\n const buf = new ArrayBuffer(8);\n new DataView(buf).setBigInt64(0, BigInt(i), true);\n return new Uint8Array(buf);\n}\n\n// ============================================================================\n// FunctionStorageSqlite\n// ============================================================================\n\nfunction getDefaultDbPath(): string {\n // VGI_WORKER_SQLITE_PATH=\":memory:\" picks an in-process backend used by\n // single-process test fixtures (notably the HTTP server fixture) to avoid\n // per-op WAL fsync cost. Mirrors vgi-python's same env var.\n const override = process.env.VGI_WORKER_SQLITE_PATH;\n if (override) return override;\n const { homedir, platform, join, mkdirSync } = _loadNodeIo();\n const home = homedir();\n const stateDir =\n platform() === \"darwin\"\n ? join(home, \"Library\", \"Application Support\", \"vgi\")\n : join(home, \".local\", \"state\", \"vgi\");\n mkdirSync(stateDir, { recursive: true });\n return join(stateDir, \"vgi_storage.db\");\n}\n\n// Worker state rides the unified function_state table under a reserved\n// namespace, keyed by the worker/process id (8-byte big-endian) — exactly the\n// mapping the Cloudflare DO client uses, so both backends share one schema.\nconst NS_WORKER = new TextEncoder().encode(\"worker\");\n\n/** Encode an int64 worker id as an 8-byte big-endian state key. */\nfunction int64Key(v: number): Uint8Array {\n const b = new Uint8Array(8);\n new DataView(b.buffer).setBigInt64(0, BigInt(v), false);\n return b;\n}\n\nfunction int64FromKey(b: Uint8Array): number {\n if (b.length !== 8) return 0;\n return Number(new DataView(b.buffer, b.byteOffset, 8).getBigInt64(0, false));\n}\n\nexport class FunctionStorageSqlite implements FunctionStorage {\n readonly dbPath: string;\n private _db: Database;\n\n constructor(dbPath?: string) {\n this.dbPath = dbPath ?? getDefaultDbPath();\n // Persistent connection for the lifetime of this storage instance.\n // Bun is single-threaded, so one connection is the analogue of\n // Python's per-thread persistent connection. WAL still coordinates\n // writes across processes via file locking.\n const Db = _loadDatabase();\n this._db = new Db(this.dbPath);\n this._db.exec(\"PRAGMA journal_mode=WAL\");\n this._db.exec(\"PRAGMA synchronous=NORMAL\");\n this._db.exec(\"PRAGMA busy_timeout=30000\");\n this._db.exec(\"PRAGMA temp_store=MEMORY\");\n this._db.exec(\"PRAGMA cache_size=-65536\");\n this._ensureTables();\n }\n\n close(): void {\n this._db.close();\n }\n\n private _ensureTables(): void {\n const db = this._db;\n // Self-heal an older on-disk DB to the unified minimal schema. The local\n // SQLite tier carries none of the DO's HTTP idempotency machinery and no\n // created_at, so drop any table left over with those columns; all of this\n // is ephemeral in-progress state, so dropping + recreating is safe.\n for (const [table, staleCol] of [\n [\"function_state\", \"created_at\"],\n [\"function_state_log\", \"created_at\"],\n [\"work_queue\", \"created_at\"],\n ] as const) {\n const info = db.prepare(`PRAGMA table_info(${table})`).all() as Array<{ name: string }>;\n if (info.some((row) => row.name === staleCol)) {\n db.exec(`DROP TABLE IF EXISTS ${table}`);\n }\n }\n // Tables eliminated by the unified schema: worker collect now rides\n // function_state (ns=worker), and the queue carries no registration.\n for (const dead of [\"global_state_storage\", \"worker_state\", \"invocation_registry\", \"init_storage\"]) {\n db.exec(`DROP TABLE IF EXISTS ${dead}`);\n }\n\n // Unified schema — the same three tables every backend uses (the Durable\n // Object adds an HTTP-idempotency column layer on top).\n db.exec(`\n CREATE TABLE IF NOT EXISTS work_queue (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n execution_id BLOB NOT NULL,\n work_item BLOB NOT NULL\n )\n `);\n db.exec(`\n CREATE INDEX IF NOT EXISTS idx_work_queue_execution\n ON work_queue(execution_id, id)\n `);\n // Composite-key K/V over (scope_id, ns, key): the single home for\n // per-execution / per-transaction / per-group / per-worker state.\n db.exec(`\n CREATE TABLE IF NOT EXISTS function_state (\n scope_id BLOB NOT NULL,\n ns BLOB NOT NULL,\n key BLOB NOT NULL,\n value BLOB NOT NULL,\n PRIMARY KEY (scope_id, ns, key)\n )\n `);\n // Append-only log keyed by (scope, ns, key); the AUTOINCREMENT id is the\n // globally-monotonic scan cursor.\n db.exec(`\n CREATE TABLE IF NOT EXISTS function_state_log (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n scope_id BLOB NOT NULL,\n ns BLOB NOT NULL,\n key BLOB NOT NULL,\n value BLOB NOT NULL\n )\n `);\n db.exec(`\n CREATE INDEX IF NOT EXISTS idx_function_state_log_lookup\n ON function_state_log(scope_id, ns, key, id)\n `);\n }\n\n async stateGet(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array): Promise<Uint8Array | null> {\n const row = this._db\n .prepare(\"SELECT value FROM function_state WHERE scope_id = ? AND ns = ? AND key = ?\")\n .get(bufferArg(scopeId), bufferArg(ns), bufferArg(key)) as { value: Uint8Array } | null;\n return row ? new Uint8Array(row.value) : null;\n }\n\n async statePut(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, value: Uint8Array): Promise<void> {\n this._db\n .prepare(\n \"INSERT OR REPLACE INTO function_state (scope_id, ns, key, value) VALUES (?, ?, ?, ?)\",\n )\n .run(bufferArg(scopeId), bufferArg(ns), bufferArg(key), bufferArg(value));\n }\n\n async stateAppend(scopeId: Uint8Array, ns: Uint8Array, key: Uint8Array, item: Uint8Array): Promise<number> {\n const res = this._db\n .prepare(\"INSERT INTO function_state_log (scope_id, ns, key, value) VALUES (?, ?, ?, ?)\")\n .run(bufferArg(scopeId), bufferArg(ns), bufferArg(key), bufferArg(item));\n return Number(res.lastInsertRowid);\n }\n\n async stateLogScan(\n scopeId: Uint8Array,\n ns: Uint8Array,\n key: Uint8Array,\n afterId: number = -1,\n limit: number | null = null,\n ): Promise<Array<[number, Uint8Array]>> {\n let sql =\n \"SELECT id, value FROM function_state_log \" +\n \"WHERE scope_id = ? AND ns = ? AND key = ? AND id > ? ORDER BY id ASC\";\n const args: any[] = [bufferArg(scopeId), bufferArg(ns), bufferArg(key), afterId];\n if (limit != null) {\n sql += \" LIMIT ?\";\n args.push(limit);\n }\n const rows = this._db.prepare(sql).all(...args) as Array<{ id: number; value: Uint8Array }>;\n return rows.map((r) => [Number(r.id), new Uint8Array(r.value)]);\n }\n\n async executionClear(scopeId: Uint8Array): Promise<number> {\n const eid = bufferArg(scopeId);\n let total = 0;\n total += (this._db.prepare(\"DELETE FROM function_state WHERE scope_id = ?\").run(eid).changes as number);\n total += (this._db.prepare(\"DELETE FROM function_state_log WHERE scope_id = ?\").run(eid).changes as number);\n return total;\n }\n\n // Worker state rides function_state under ns=worker, keyed by worker id.\n\n async workerPut(\n executionId: Uint8Array,\n workerId: number,\n state: Uint8Array\n ): Promise<void> {\n this._db\n .prepare(\n \"INSERT OR REPLACE INTO function_state (scope_id, ns, key, value) VALUES (?, ?, ?, ?)\"\n )\n .run(bufferArg(executionId), bufferArg(NS_WORKER), bufferArg(int64Key(workerId)), bufferArg(state));\n }\n\n async workerCollect(executionId: Uint8Array): Promise<Uint8Array[]> {\n const rows = this._db\n .prepare(\n \"DELETE FROM function_state WHERE scope_id = ? AND ns = ? RETURNING value\"\n )\n .all(bufferArg(executionId), bufferArg(NS_WORKER)) as Array<{ value: Uint8Array }>;\n return rows.map((row) => new Uint8Array(row.value));\n }\n\n async workerScan(executionId: Uint8Array): Promise<Array<[number, Uint8Array]>> {\n const rows = this._db\n .prepare(\n \"SELECT key, value FROM function_state WHERE scope_id = ? AND ns = ?\"\n )\n .all(bufferArg(executionId), bufferArg(NS_WORKER)) as Array<{\n key: Uint8Array;\n value: Uint8Array;\n }>;\n return rows.map((row) => [int64FromKey(new Uint8Array(row.key)), new Uint8Array(row.value)]);\n }\n\n async queuePush(executionId: Uint8Array, items: Uint8Array[]): Promise<number> {\n const eidBuf = bufferArg(executionId);\n this._db.exec(\"BEGIN\");\n try {\n const insert = this._db.prepare(\n \"INSERT INTO work_queue (execution_id, work_item) VALUES (?, ?)\"\n );\n for (const item of items) {\n insert.run(eidBuf, bufferArg(item));\n }\n this._db.exec(\"COMMIT\");\n } catch (e) {\n this._db.exec(\"ROLLBACK\");\n throw e;\n }\n return items.length;\n }\n\n async queuePop(executionId: Uint8Array): Promise<Uint8Array | null> {\n // No registration: an empty or never-pushed queue both return null,\n // matching the Durable Object.\n const row = this._db\n .prepare(\n \"DELETE FROM work_queue WHERE id = (\" +\n \" SELECT id FROM work_queue WHERE execution_id = ? ORDER BY id ASC LIMIT 1\" +\n \") RETURNING work_item\"\n )\n .get(bufferArg(executionId)) as { work_item: Uint8Array } | null;\n\n return row ? new Uint8Array(row.work_item) : null;\n }\n\n async queueClear(executionId: Uint8Array): Promise<number> {\n return this._db\n .prepare(\"DELETE FROM work_queue WHERE execution_id = ?\")\n .run(bufferArg(executionId)).changes;\n }\n}\n\n// ============================================================================\n// BoundStorage\n// ============================================================================\n\nexport class BoundStorage {\n private _base: FunctionStorage;\n private _executionId: Uint8Array;\n\n constructor(storage: FunctionStorage, executionId: Uint8Array) {\n this._base = storage;\n this._executionId = executionId;\n }\n\n put(state: Uint8Array): Promise<void> {\n return this._base.workerPut(this._executionId, process.pid, state);\n }\n\n collect(): Promise<Uint8Array[]> {\n return this._base.workerCollect(this._executionId);\n }\n\n workerScan(): Promise<Array<[number, Uint8Array]>> {\n return this._base.workerScan(this._executionId);\n }\n\n queuePush(items: Uint8Array[]): Promise<number> {\n return this._base.queuePush(this._executionId, items);\n }\n\n queuePop(): Promise<Uint8Array | null> {\n return this._base.queuePop(this._executionId);\n }\n\n queueClear(): Promise<number> {\n return this._base.queueClear(this._executionId);\n }\n\n stateGet(ns: Uint8Array, key: Uint8Array): Promise<Uint8Array | null> {\n return this._base.stateGet(this._executionId, ns, key);\n }\n\n statePut(ns: Uint8Array, key: Uint8Array, value: Uint8Array): Promise<void> {\n return this._base.statePut(this._executionId, ns, key, value);\n }\n\n stateAppend(ns: Uint8Array, key: Uint8Array, item: Uint8Array): Promise<number> {\n return this._base.stateAppend(this._executionId, ns, key, item);\n }\n\n stateLogScan(\n ns: Uint8Array,\n key: Uint8Array,\n afterId: number = -1,\n limit: number | null = null,\n ): Promise<Array<[number, Uint8Array]>> {\n return this._base.stateLogScan(this._executionId, ns, key, afterId, limit);\n }\n\n executionClear(): Promise<number> {\n return this._base.executionClear(this._executionId);\n }\n\n static packIntKey(i: number | bigint): Uint8Array {\n return packIntKey(i);\n }\n}\n\n// ============================================================================\n// Backend factory + lazy default storage\n// ============================================================================\n\n/**\n * Resolve the FunctionStorage backend from environment variables.\n *\n * Mirrors vgi-python's `_resolve_storage` in `vgi/function.py`.\n *\n * `VGI_WORKER_SHARED_STORAGE` selects the backend (default: `sqlite`):\n * - `memory` — `FunctionStorageSqlite` at `:memory:`. Process-local\n * with no cross-process coordination — single-process\n * deployments only. Ignores `VGI_WORKER_SQLITE_PATH`.\n * - `sqlite` — `FunctionStorageSqlite`. Honors `VGI_WORKER_SQLITE_PATH`\n * (including `:memory:`).\n * - `cloudflare-do` — `FunctionStorageCfDo`. Requires `VGI_CF_DO_URL`;\n * optional `VGI_CF_DO_TOKEN` for bearer auth.\n */\nexport function resolveStorageFromEnv(): FunctionStorage {\n const backend = (process.env.VGI_WORKER_SHARED_STORAGE ?? \"sqlite\").toLowerCase();\n if (backend === \"memory\") {\n return new FunctionStorageSqlite(\":memory:\");\n }\n if (backend === \"sqlite\") {\n return new FunctionStorageSqlite();\n }\n if (backend === \"cloudflare-do\") {\n // Lazy require to avoid loading the CF client when sqlite is in use.\n const { FunctionStorageCfDo } = require(\"./storage-cf-do.js\") as typeof import(\"./storage-cf-do.js\");\n return FunctionStorageCfDo.fromEnv();\n }\n throw new Error(\n `Unknown VGI_WORKER_SHARED_STORAGE backend: '${backend}'. Supported: 'memory', 'sqlite', 'cloudflare-do'.`,\n );\n}\n\n// Module-level proxy that lazy-resolves the configured backend on first use.\n// Importing this module no longer opens a SQLite connection — that happens\n// the first time anyone touches a storage method. Matches Python's\n// _DefaultStorageDescriptor lazy attribute pattern.\nlet _resolved: FunctionStorage | null = null;\nfunction getDefaultStorage(): FunctionStorage {\n if (_resolved == null) _resolved = resolveStorageFromEnv();\n return _resolved;\n}\n\n/**\n * Override the default backend used by the `storage` singleton. Call once at\n * worker startup to inject a pre-built backend that env-driven selection can't\n * construct — notably a `FunctionStorageCfDo` wired to a Cloudflare\n * service-binding Fetcher (the binding lives on `env`, not `process.env`, and a\n * same-zone public-URL fetch is rejected with CF error 1042). Takes precedence\n * over `VGI_WORKER_SHARED_STORAGE`.\n */\nexport function setStorage(impl: FunctionStorage): void {\n _resolved = impl;\n}\n\n/** Default FunctionStorage instance. Backend is selected via env on first access. */\nexport const storage: FunctionStorage = new Proxy(\n {} as FunctionStorage,\n {\n get(_t, prop, _r) {\n const inst = getDefaultStorage() as any;\n const v = inst[prop];\n return typeof v === \"function\" ? v.bind(inst) : v;\n },\n },\n);\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/** bun:sqlite needs Buffer for blob params */\nfunction bufferArg(data: Uint8Array): Buffer {\n return Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n}\n",
|
|
7
|
-
"// 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/** 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",
|
|
7
|
+
"// 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",
|
|
8
8
|
"// 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 Binary as A_Binary,\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 binary = (): VgiDataType => new A_Binary() 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",
|
|
9
9
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Empty (0-row) Arrow batch construction. Handles complex types (List, Map,\n// Struct) that need child data to round-trip through Arrow IPC serialization.\n\nimport {\n RecordBatch,\n Schema,\n Field,\n Struct,\n List,\n DataType,\n makeData,\n Map_,\n} from \"@query-farm/apache-arrow\";\n\n/**\n * Create empty (0-length) data for any Arrow type, handling complex types\n * that need child data (List, Map, Struct) to be serializable.\n */\nfunction emptyData(field: Field): any {\n const type = field.type;\n\n if (DataType.isList(type)) {\n const childField = (type as List).children[0];\n return makeData({\n type,\n length: 0,\n nullCount: 0,\n child: emptyData(childField),\n valueOffsets: new Int32Array([0]),\n });\n }\n\n if (DataType.isMap(type)) {\n const entriesField = (type as Map_).children[0];\n return makeData({\n type,\n length: 0,\n nullCount: 0,\n child: emptyData(entriesField),\n valueOffsets: new Int32Array([0]),\n });\n }\n\n if (DataType.isStruct(type)) {\n const children = type.children.map((child: Field) => emptyData(child));\n return makeData({ type, length: 0, nullCount: 0, children });\n }\n\n return makeData({ type, length: 0, nullCount: 0 });\n}\n\nimport type { VgiSchema } from \"../types.js\";\n\n/**\n * Create an empty (0-row) batch with the given schema. Accepts arrow-js\n * `Schema` or facade `VgiSchema` (cast at the boundary).\n */\nexport function emptyBatch(schema: Schema | VgiSchema): RecordBatch {\n const a = schema as Schema;\n const children = a.fields.map((f: Field) => emptyData(f));\n\n const structType = new Struct(a.fields);\n const data = makeData({\n type: structType,\n length: 0,\n children,\n nullCount: 0,\n });\n\n return new RecordBatch(a, data);\n}\n",
|
|
10
10
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Build Arrow RecordBatches from row objects or column arrays (arrow-js).\n//\n// The public build path routes RICH author values through the codec registry\n// (rich -> canonical) and then through the per-backend canonical writer\n// (canonical -> arrow-js column data). All the arrow-js-specific assembly that\n// used to live here now lives in ./canonical.ts; this file is just the public\n// shape (batchFromRows / batchFromColumns / columnFromArray).\n\nimport {\n RecordBatch,\n Schema,\n Field,\n Struct,\n DataType,\n makeData,\n vectorFromArray,\n} from \"@query-farm/apache-arrow\";\nimport type { VgiSchema, VgiDataType, VgiColumnData } from \"../types.js\";\nimport { emptyBatch } from \"./empty.js\";\nimport { codecFor } from \"../codec/registry.js\";\nimport { writeCanonicalColumn } from \"./canonical.js\";\n\n/**\n * Build an opaque column-data handle from a JS array. arrow-js wraps\n * `vectorFromArray` and exposes its first `Data` node. Unlike the public\n * build path, this is a low-level pass-through used by callers that already\n * hold backend-native values, so it does NOT run the codec.\n */\nexport function columnFromArray(values: any[], type: VgiDataType): VgiColumnData {\n return vectorFromArray(values, type as DataType).data[0] as VgiColumnData;\n}\n\n/**\n * Build a RecordBatch from row objects (values are RICH).\n */\nexport function batchFromRows(\n rows: Record<string, any>[],\n schema: Schema | VgiSchema,\n): RecordBatch {\n const a = schema as Schema;\n if (rows.length === 0) {\n return emptyBatch(a);\n }\n const columns: Record<string, any[]> = {};\n for (const field of a.fields) {\n columns[field.name] = rows.map((r) => r[field.name] ?? null);\n }\n return batchFromColumns(columns, a);\n}\n\n/**\n * Build a RecordBatch from column arrays (values are RICH). Each column is\n * converted rich -> canonical via the codec, then canonical -> arrow-js column\n * data via the canonical writer.\n */\nexport function batchFromColumns(\n columns: Record<string, any[]>,\n schema: Schema | VgiSchema,\n repr: \"rich\" | \"raw\" = \"rich\",\n): RecordBatch {\n const a = schema as Schema;\n const numRows =\n a.fields.length > 0\n ? columns[a.fields[0].name]?.length ?? 0\n : 0;\n\n const children = a.fields.map((f: Field) => {\n const values = columns[f.name];\n if (!values) {\n return makeData({ type: f.type, length: numRows, nullCount: numRows });\n }\n const codec = codecFor(f.type as VgiDataType);\n const toCanon = repr === \"raw\" ? codec.rawToCanonical : codec.richToCanonical;\n const canonical = values.map((v) => toCanon.call(codec, v));\n return writeCanonicalColumn(f.type as VgiDataType, canonical);\n });\n\n const structType = new Struct(a.fields);\n const data = makeData({\n type: structType,\n length: numRows,\n children: children as any,\n nullCount: 0,\n });\n\n return new RecordBatch(a, data);\n}\n",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Per-record-batch metadata attachment (arrow-js backend).\n\nimport { RecordBatch } from \"@query-farm/apache-arrow\";\nimport type { VgiBatch } from \"../types.js\";\n\n/**\n * Re-emit a batch with a different per-record-batch metadata map (same schema\n * + data, no copy). The @query-farm/apache-arrow fork's RecordBatch carries\n * the map through IPC as the Message's `custom_metadata` field.\n *\n * Mirrors vgi-rpc's arrow facade helper of the same name — needed here so a\n * worker can bake metadata into the batch object itself (vgi-rpc's HTTP\n * exchange dispatch drops the separate emit-metadata argument for 0-row\n * batches; a batch-carried map survives).\n */\nexport function withBatchMetadata(batch: VgiBatch, metadata: Map<string, string>): VgiBatch {\n const a = batch as unknown as RecordBatch;\n return new RecordBatch(a.schema, a.data, metadata) as unknown as VgiBatch;\n}\n",
|
|
17
17
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Arrow IPC stream serialization/deserialization for schemas and batches.\n\nimport {\n RecordBatch,\n Schema,\n RecordBatchStreamWriter,\n RecordBatchReader,\n} from \"@query-farm/apache-arrow\";\nimport type { VgiSchema, VgiBatch } from \"../types.js\";\nimport { emptyBatch } from \"./empty.js\";\n\n/**\n * Serialize a Schema to Arrow IPC bytes. Accepts arrow-js `Schema` or\n * facade `VgiSchema` (the latter is satisfied structurally by arrow-js\n * Schema instances at runtime).\n */\nexport function serializeSchema(schema: Schema | VgiSchema): Uint8Array {\n const writer = new RecordBatchStreamWriter();\n writer.reset(undefined, schema as Schema);\n writer.close();\n return writer.toUint8Array(true);\n}\n\n/**\n * Deserialize an Arrow Schema from IPC bytes.\n * Note: In Bun, reader.schema is always undefined, so we must read from the batch.\n *\n * Returns arrow-js's `Schema` (which structurally satisfies VgiSchema).\n */\nexport function deserializeSchema(bytes: Uint8Array): Schema {\n const reader = RecordBatchReader.from(bytes);\n const batches = [...reader];\n if (batches.length > 0) {\n return batches[0].schema;\n }\n if (reader.schema) return reader.schema;\n throw new Error(\"Cannot deserialize schema from empty IPC stream\");\n}\n\n/**\n * Serialize a RecordBatch to Arrow IPC bytes. Accepts arrow-js `RecordBatch`\n * or facade `VgiBatch`.\n */\nexport function serializeBatch(batch: RecordBatch | VgiBatch): Uint8Array {\n const a = batch as RecordBatch;\n const writer = new RecordBatchStreamWriter();\n writer.reset(undefined, a.schema);\n // Use _writeRecordBatch to bypass schema comparison bug\n // (public write() silently drops batches on nullability mismatch)\n (writer as any)._writeRecordBatch(a);\n writer.close();\n return writer.toUint8Array(true);\n}\n\n/**\n * Deserialize a RecordBatch from Arrow IPC bytes.\n */\nexport function deserializeBatch(bytes: Uint8Array): RecordBatch {\n const reader = RecordBatchReader.from(bytes);\n const batches = [...reader];\n if (batches.length === 0) {\n const sch = reader.schema ?? new Schema([]);\n return emptyBatch(sch);\n }\n return batches[0];\n}\n",
|
|
18
18
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// arrow-js impl of column-statistics serialization. Builds a sparse-union\n// column manually with `makeData` + `typeIds` buffer + per-type children.\n// This is the only spot in vgi-typescript that touches makeData directly,\n// because flechette's union-column API takes a fundamentally different\n// shape (typeIdForValue closure).\n\nimport {\n Field,\n Null,\n makeData,\n RecordBatch,\n Struct,\n SparseUnion,\n Schema,\n Utf8,\n Bool,\n Int64,\n Uint64,\n type DataType,\n} from \"@query-farm/apache-arrow\";\nimport type {\n VgiBatch,\n VgiDataType,\n} from \"../types.js\";\nimport { codecFor } from \"../codec/registry.js\";\nimport { writeCanonicalColumn } from \"./canonical.js\";\n\nexport interface ColumnStatistics {\n columnName: string;\n arrowType: VgiDataType;\n min: any;\n max: any;\n hasNull: boolean;\n hasNotNull: boolean;\n distinctCount: bigint | number | null;\n containsUnicode: boolean | null;\n maxStringLength: bigint | number | null;\n}\n\n// Stable, backend-agnostic type key. Dispatch on the structural fields\n// (typeId + unit + bitWidth + precision/scale + byteWidth) rather than\n// `.toString()`, so the union-child grouping matches the flechette backend\n// exactly and never collapses distinct types into one child.\nfunction typeKey(t: VgiDataType): string {\n const a = t as any;\n return [\n t.typeId,\n a.unit ?? \"\",\n a.bitWidth ?? \"\",\n a.precision ?? \"\",\n a.scale ?? \"\",\n a.byteWidth ?? \"\",\n ].join(\":\");\n}\n\n/**\n * Build an arrow-js column `Data` node for `type` from RICH values, routed\n * through the codec (rich -> canonical) and the canonical writer — the same\n * path the public column-build uses. This guarantees a date/timestamp/decimal\n * min/max is represented identically to ordinary column data and identically\n * across both backends.\n */\nfunction buildTypedColumnData(values: any[], type: VgiDataType): any {\n const a = type as DataType;\n if (a.typeId === 1 /* Null */) {\n return makeData({ type: a, length: values.length, nullCount: values.length });\n }\n const codec = codecFor(type);\n const canonical = values.map((v) => codec.richToCanonical(v));\n return writeCanonicalColumn(type, canonical);\n}\n\nexport function buildStatisticsBatch(stats: ColumnStatistics[]): VgiBatch {\n if (stats.length === 0) {\n // Minimal empty batch: sparse_union with a single null child. Matches\n // Python's empty serialization — DuckDB tolerates this and reads zero\n // rows of stats.\n const nullField = new Field(\"0\", new Null(), true);\n const unionType = new SparseUnion([0], [nullField]);\n const minData = makeData({\n type: unionType,\n length: 0,\n typeIds: new Int8Array(0),\n children: [makeData({ type: new Null(), length: 0, nullCount: 0 })],\n } as any);\n const maxData = makeData({\n type: unionType,\n length: 0,\n typeIds: new Int8Array(0),\n children: [makeData({ type: new Null(), length: 0, nullCount: 0 })],\n } as any);\n return assemble([], minData, maxData, [], [], [], [], [], unionType) as unknown as VgiBatch;\n }\n\n // Group distinct Arrow types in stable insertion order to assign type codes.\n const typeOrder: VgiDataType[] = [];\n const typeIdMap = new Map<string, number>();\n const rowTypeCodes: number[] = [];\n for (const s of stats) {\n const key = typeKey(s.arrowType);\n let code = typeIdMap.get(key);\n if (code === undefined) {\n code = typeOrder.length;\n typeIdMap.set(key, code);\n typeOrder.push(s.arrowType);\n }\n rowTypeCodes.push(code);\n }\n\n const unionFields: Field[] = [];\n const minChildren: any[] = [];\n const maxChildren: any[] = [];\n const typeIds: number[] = [];\n\n for (const [code, arrowType] of typeOrder.entries()) {\n unionFields.push(new Field(String(code), arrowType as DataType, true));\n typeIds.push(code);\n const minVals = stats.map((s, i) => (rowTypeCodes[i] === code ? s.min : null));\n const maxVals = stats.map((s, i) => (rowTypeCodes[i] === code ? s.max : null));\n minChildren.push(buildTypedColumnData(minVals, arrowType));\n maxChildren.push(buildTypedColumnData(maxVals, arrowType));\n }\n\n const unionType = new SparseUnion(typeIds, unionFields);\n const typeIdsBuf = Int8Array.from(rowTypeCodes);\n\n const minData = makeData({\n type: unionType, length: stats.length, typeIds: typeIdsBuf, children: minChildren,\n } as any);\n const maxData = makeData({\n type: unionType, length: stats.length, typeIds: typeIdsBuf, children: maxChildren,\n } as any);\n\n return assemble(\n stats.map((s) => s.columnName),\n minData,\n maxData,\n stats.map((s) => s.hasNull),\n stats.map((s) => s.hasNotNull),\n stats.map((s) => (s.distinctCount == null ? null : BigInt(s.distinctCount))),\n stats.map((s) => s.containsUnicode),\n stats.map((s) => (s.maxStringLength == null ? null : BigInt(s.maxStringLength))),\n unionType,\n ) as unknown as VgiBatch;\n}\n\nfunction assemble(\n columnNames: string[],\n minData: any,\n maxData: any,\n hasNull: boolean[],\n hasNotNull: boolean[],\n distinctCount: (bigint | null)[],\n containsUnicode: (boolean | null)[],\n maxStringLength: (bigint | null)[],\n unionType: SparseUnion,\n): RecordBatch {\n const schema = new Schema([\n new Field(\"column_name\", new Utf8(), false),\n new Field(\"min\", unionType, true),\n new Field(\"max\", unionType, true),\n new Field(\"has_null\", new Bool(), false),\n new Field(\"has_not_null\", new Bool(), false),\n new Field(\"distinct_count\", new Int64(), true),\n new Field(\"contains_unicode\", new Bool(), true),\n new Field(\"max_string_length\", new Uint64(), true),\n ]);\n\n const n = columnNames.length;\n const children = [\n buildTypedColumnData(columnNames, new Utf8() as unknown as VgiDataType),\n minData,\n maxData,\n buildTypedColumnData(hasNull, new Bool() as unknown as VgiDataType),\n buildTypedColumnData(hasNotNull, new Bool() as unknown as VgiDataType),\n buildTypedColumnData(distinctCount, new Int64() as unknown as VgiDataType),\n buildTypedColumnData(containsUnicode, new Bool() as unknown as VgiDataType),\n buildTypedColumnData(maxStringLength, new Uint64() as unknown as VgiDataType),\n ];\n\n const structType = new Struct(schema.fields);\n const data = makeData({ type: structType, length: n, children, nullCount: 0 });\n return new RecordBatch(schema, data);\n}\n",
|
|
19
|
-
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// arrow-js backend for the vgi-typescript Arrow facade.\n// Default backend (Bun worker, Node) — selected via `#arrow-impl` resolution\n// when no `worker`/`workerd`/`browser` condition is active.\n\nimport type { VgiBackendInfo } from \"../types.js\";\n\nexport const backend: VgiBackendInfo = { name: \"arrow-js\" };\n\n// Schema / Field / DataType factories\nexport {\n schema,\n field,\n nullType,\n bool,\n int,\n int8, int16, int32, int64,\n uint8, uint16, uint32, uint64,\n float16, float32, float64,\n utf8, binary, fixedSizeBinary,\n decimal, decimal128, decimal256,\n date, dateDay, dateMillisecond,\n time, timeSecond, timeMillisecond, timeMicrosecond, timeNanosecond,\n timestamp, duration, interval,\n list, fixedSizeList, struct, map,\n dictionary,\n union, sparseUnion, denseUnion,\n TimeUnit, DateUnit, IntervalUnit, UnionMode,\n} from \"./schema.js\";\n\n// Batch construction / iteration / utilities\nexport { emptyBatch } from \"./empty.js\";\nexport { batchFromRows, batchFromColumns, columnFromArray } from \"./build.js\";\nexport {\n iterRows,\n batchToScalarDict,\n batchToSecretDict,\n safeNumber,\n decodeDictValue,\n} from \"./iterate.js\";\nexport { filterBatch } from \"./filter.js\";\nexport { projectSchema, projectBatch } from \"./project.js\";\nexport { readCanonicalValue } from \"./canonical.js\";\nexport { withBatchMetadata } from \"./metadata.js\";\n\n// IPC\nexport {\n serializeSchema,\n deserializeSchema,\n serializeBatch,\n deserializeBatch,\n} from \"./ipc.js\";\n\n// Column statistics (sparse-union heavy — backend-specific).\nexport { buildStatisticsBatch, type ColumnStatistics } from \"./statistics.js\";\n",
|
|
19
|
+
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// arrow-js backend for the vgi-typescript Arrow facade.\n// Default backend (Bun worker, Node) — selected via `#arrow-impl` resolution\n// when no `worker`/`workerd`/`browser` condition is active.\n\nimport type { VgiBackendInfo } from \"../types.js\";\n\nexport const backend: VgiBackendInfo = { name: \"arrow-js\" };\n\n// Schema / Field / DataType factories\nexport {\n schema,\n field,\n nullType,\n bool,\n int,\n int8, int16, int32, int64,\n uint8, uint16, uint32, uint64,\n float16, float32, float64,\n utf8, binary, fixedSizeBinary,\n decimal, decimal128, decimal256,\n date, dateDay, dateMillisecond,\n time, timeSecond, timeMillisecond, timeMicrosecond, timeNanosecond,\n timestamp, duration, interval,\n list, fixedSizeList, struct, map,\n dictionary,\n union, sparseUnion, denseUnion,\n TimeUnit, DateUnit, IntervalUnit, UnionMode,\n} from \"./schema.js\";\n\n// Batch construction / iteration / utilities\nexport { emptyBatch } from \"./empty.js\";\nexport { batchFromRows, batchFromColumns, columnFromArray } from \"./build.js\";\nexport {\n iterRows,\n batchToScalarDict,\n batchToSecretDict,\n safeNumber,\n decodeDictValue,\n} from \"./iterate.js\";\nexport { filterBatch } from \"./filter.js\";\nexport { projectSchema, projectBatch } from \"./project.js\";\nexport { readCanonicalValue } from \"./canonical.js\";\nexport { withBatchMetadata } from \"./metadata.js\";\n\n// IPC\nexport {\n serializeSchema,\n deserializeSchema,\n serializeBatch,\n deserializeBatch,\n} from \"./ipc.js\";\n\n// Column statistics (sparse-union heavy — backend-specific).\nexport { buildStatisticsBatch, type ColumnStatistics } from \"./statistics.js\";\n\n/**\n * No-op on this backend: arrow-js `RecordBatch`/`Vector` already expose the\n * full API worker code uses, and arrow-js is a peer dependency, so there is\n * only ever one copy. Present so both backends satisfy one facade interface —\n * see impl-flechette/compat.ts for what this does there.\n */\nexport function adoptArrowJsShape<T>(batch: T): T {\n return batch;\n}\n",
|
|
20
20
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n//\n// Typed facade type-factories — phase 3 (the KEY ENABLER for static typing).\n//\n// The per-backend `schema.ts` factories build a runtime `VgiDataType` but only\n// declare their return as `VgiDataType` (`{ readonly typeId }`), which is too\n// coarse for the type-level value mapping in ./codec/repr.ts. This module wraps\n// each factory and casts the (unchanged) runtime value to the PRECISE nominal\n// descriptor from ./codec/type-descriptors.ts — e.g. `dateDay(): Date32Type`,\n// `timestamp(u): TimestampType<...>`, `struct(children)` preserving its field\n// tuple. Both backends route through the same `#arrow-impl` runtime, so they\n// report IDENTICAL static types from the facade.\n//\n// Runtime behavior is identical to the backend factories (these are pure casts\n// plus, for the unit-overloaded factories, a literal-unit overload set that\n// maps the integer TimeUnit to the descriptor's string-literal unit).\n\nimport * as impl from \"#arrow-impl\";\nimport type { VgiField, VgiDataType } from \"./types.js\";\nimport type {\n NullDescriptor,\n BoolType,\n Int8Type, Int16Type, Int32Type, Int64Type,\n Uint8Type, Uint16Type, Uint32Type, Uint64Type,\n IntType,\n FloatType,\n Utf8Type,\n BinaryType,\n FixedSizeBinaryType,\n DecimalType,\n Date32Type, Date64Type,\n Time32Type, Time64Type,\n TimestampType,\n DurationType,\n IntervalType,\n ListType, FixedSizeListType,\n StructType,\n MapType,\n DictionaryType,\n UnionType,\n TypedField,\n TUnit,\n} from \"./codec/type-descriptors.js\";\n\n// Re-export the runtime unit/mode enums and schema/field helpers untouched.\nexport const { TimeUnit, DateUnit, IntervalUnit, UnionMode, schema } = impl;\n\n/** field(): preserve the precise name + type so struct() can carry a typed\n * child tuple. Runtime is the backend `field`. */\nexport function field<Name extends string, T extends VgiDataType>(\n name: Name,\n type: T,\n nullable?: boolean,\n metadata?: Map<string, string>,\n): TypedField<Name, T> {\n return impl.field(name, type as any, nullable, metadata) as unknown as TypedField<Name, T>;\n}\n\n// ----- Primitives ----------------------------------------------------------\n\nexport const nullType = (): NullDescriptor => impl.nullType() as unknown as NullDescriptor;\nexport const bool = (): BoolType => impl.bool() as unknown as BoolType;\n\nexport const int8 = (): Int8Type => impl.int8() as unknown as Int8Type;\nexport const int16 = (): Int16Type => impl.int16() as unknown as Int16Type;\nexport const int32 = (): Int32Type => impl.int32() as unknown as Int32Type;\nexport const int64 = (): Int64Type => impl.int64() as unknown as Int64Type;\nexport const uint8 = (): Uint8Type => impl.uint8() as unknown as Uint8Type;\nexport const uint16 = (): Uint16Type => impl.uint16() as unknown as Uint16Type;\nexport const uint32 = (): Uint32Type => impl.uint32() as unknown as Uint32Type;\nexport const uint64 = (): Uint64Type => impl.uint64() as unknown as Uint64Type;\n\n// int(bitWidth, signed): bitWidth/signedness aren't statically known from a\n// runtime `number`, so this degrades to the generic IntType (rich/raw fall back\n// to number/bigint per the width literal when callers pass a literal). Prefer\n// the named factories (int32(), int64(), …) for precise typing.\nexport function int(bitWidth?: 8 | 16 | 32 | 64, signed?: boolean): IntType<8 | 16 | 32 | 64, boolean> {\n return impl.int(bitWidth, signed) as unknown as IntType<8 | 16 | 32 | 64, boolean>;\n}\n\nexport const float16 = (): FloatType => impl.float16() as unknown as FloatType;\nexport const float32 = (): FloatType => impl.float32() as unknown as FloatType;\nexport const float64 = (): FloatType => impl.float64() as unknown as FloatType;\n\nexport const utf8 = (): Utf8Type => impl.utf8() as unknown as Utf8Type;\nexport const binary = (): BinaryType => impl.binary() as unknown as BinaryType;\nexport const fixedSizeBinary = (byteWidth: number): FixedSizeBinaryType =>\n impl.fixedSizeBinary(byteWidth) as unknown as FixedSizeBinaryType;\n\n// ----- Decimal -------------------------------------------------------------\n\nexport const decimal = (precision: number, scale: number, bitWidth?: 32 | 64 | 128 | 256): DecimalType =>\n impl.decimal(precision, scale, bitWidth) as unknown as DecimalType;\nexport const decimal128 = (precision: number, scale: number): DecimalType =>\n impl.decimal128(precision, scale) as unknown as DecimalType;\nexport const decimal256 = (precision: number, scale: number): DecimalType =>\n impl.decimal256(precision, scale) as unknown as DecimalType;\n\n// ----- Date / Time / Timestamp / Duration / Interval -----------------------\n\n// `date(unit)` with a runtime unit isn't statically resolvable; it widens to\n// Date64Type (ms) — the default. Use dateDay()/dateMillisecond() for precision.\nexport const date = (unit?: number): Date64Type => impl.date(unit) as unknown as Date64Type;\nexport const dateDay = (): Date32Type => impl.dateDay() as unknown as Date32Type;\nexport const dateMillisecond = (): Date64Type => impl.dateMillisecond() as unknown as Date64Type;\n\nexport const timeSecond = (): Time32Type<\"s\"> => impl.timeSecond() as unknown as Time32Type<\"s\">;\nexport const timeMillisecond = (): Time32Type<\"ms\"> => impl.timeMillisecond() as unknown as Time32Type<\"ms\">;\nexport const timeMicrosecond = (): Time64Type<\"us\"> => impl.timeMicrosecond() as unknown as Time64Type<\"us\">;\nexport const timeNanosecond = (): Time64Type<\"ns\"> => impl.timeNanosecond() as unknown as Time64Type<\"ns\">;\n\n// Generic time(unit, bitWidth): degrades to a union of the precise time types.\nexport function time(unit?: number, bitWidth?: 32 | 64): Time32Type<\"s\" | \"ms\"> | Time64Type<\"us\" | \"ns\"> {\n return impl.time(unit, bitWidth) as unknown as Time32Type<\"s\" | \"ms\"> | Time64Type<\"us\" | \"ns\">;\n}\n\nconst UNIT_TO_TAG: Record<number, TUnit> = {\n [impl.TimeUnit.SECOND]: \"s\",\n [impl.TimeUnit.MILLISECOND]: \"ms\",\n [impl.TimeUnit.MICROSECOND]: \"us\",\n [impl.TimeUnit.NANOSECOND]: \"ns\",\n};\n\n/** timestamp(unit): when called with a literal unit constant the result type\n * carries that unit; with a runtime number it widens to TimestampType<TUnit>. */\nexport function timestamp<U extends TUnit = TUnit>(\n unit?: number,\n timezone?: string | null,\n): TimestampType<U> {\n return impl.timestamp(unit, timezone ?? null) as unknown as TimestampType<U>;\n}\n\nexport function duration<U extends TUnit = TUnit>(unit?: number): DurationType<U> {\n return impl.duration(unit) as unknown as DurationType<U>;\n}\n\n// Unit-precise convenience factories — these carry the wire unit in the static\n// type without the caller needing an explicit type argument, so raw-mode\n// branded typing is automatic. (The generic timestamp()/duration() above\n// can't infer the unit from a runtime `number`, so prefer these.)\nexport const timestampSeconds = (timezone?: string | null): TimestampType<\"s\"> =>\n impl.timestamp(impl.TimeUnit.SECOND, timezone ?? null) as unknown as TimestampType<\"s\">;\nexport const timestampMillis = (timezone?: string | null): TimestampType<\"ms\"> =>\n impl.timestamp(impl.TimeUnit.MILLISECOND, timezone ?? null) as unknown as TimestampType<\"ms\">;\nexport const timestampMicros = (timezone?: string | null): TimestampType<\"us\"> =>\n impl.timestamp(impl.TimeUnit.MICROSECOND, timezone ?? null) as unknown as TimestampType<\"us\">;\nexport const timestampNanos = (timezone?: string | null): TimestampType<\"ns\"> =>\n impl.timestamp(impl.TimeUnit.NANOSECOND, timezone ?? null) as unknown as TimestampType<\"ns\">;\n\nexport const durationSeconds = (): DurationType<\"s\"> =>\n impl.duration(impl.TimeUnit.SECOND) as unknown as DurationType<\"s\">;\nexport const durationMillis = (): DurationType<\"ms\"> =>\n impl.duration(impl.TimeUnit.MILLISECOND) as unknown as DurationType<\"ms\">;\nexport const durationMicros = (): DurationType<\"us\"> =>\n impl.duration(impl.TimeUnit.MICROSECOND) as unknown as DurationType<\"us\">;\nexport const durationNanos = (): DurationType<\"ns\"> =>\n impl.duration(impl.TimeUnit.NANOSECOND) as unknown as DurationType<\"ns\">;\n\nexport const interval = (unit?: number): IntervalType => impl.interval(unit) as unknown as IntervalType;\n\n// ----- Nested --------------------------------------------------------------\n\nexport function list<T extends VgiDataType>(child: TypedField<string, T> | T): ListType<T> {\n return impl.list(child as any) as unknown as ListType<T>;\n}\n\nexport function fixedSizeList<T extends VgiDataType>(\n child: TypedField<string, T> | T,\n listSize: number,\n): FixedSizeListType<T> {\n return impl.fixedSizeList(child as any, listSize) as unknown as FixedSizeListType<T>;\n}\n\nexport function struct<const C extends readonly TypedField<string, VgiDataType>[]>(\n children: C,\n): StructType<C> {\n return impl.struct(children as unknown as readonly VgiField[]) as unknown as StructType<C>;\n}\n\nexport function map<K extends VgiDataType, V extends VgiDataType>(\n keyField: TypedField<string, K> | K,\n valueField: TypedField<string, V> | V,\n keysSorted?: boolean,\n): MapType<K, V> {\n return impl.map(keyField as any, valueField as any, keysSorted) as unknown as MapType<K, V>;\n}\n\nexport function dictionary<V extends VgiDataType>(\n valueType: V,\n indexType?: VgiDataType,\n ordered?: boolean,\n id?: number,\n): DictionaryType<V> {\n return impl.dictionary(valueType as any, indexType as any, ordered, id) as unknown as DictionaryType<V>;\n}\n\nexport function union(\n mode: number,\n children: readonly (VgiField | VgiDataType)[],\n typeIds?: number[],\n): UnionType {\n return impl.union(mode, children as any, typeIds) as unknown as UnionType;\n}\n\nexport const sparseUnion = (\n children: readonly (VgiField | VgiDataType)[],\n typeIds?: number[],\n): UnionType => impl.sparseUnion(children as any, typeIds) as unknown as UnionType;\n\nexport const denseUnion = (\n children: readonly (VgiField | VgiDataType)[],\n typeIds?: number[],\n): UnionType => impl.denseUnion(children as any, typeIds) as unknown as UnionType;\n",
|
|
21
21
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// VGI core types - enums and constants matching Python wire format exactly.\n\nexport enum FunctionType {\n SCALAR = \"scalar\",\n TABLE = \"table\",\n AGGREGATE = \"aggregate\",\n}\n\nexport enum FunctionStability {\n CONSISTENT = \"CONSISTENT\",\n VOLATILE = \"VOLATILE\",\n CONSISTENT_WITHIN_QUERY = \"CONSISTENT_WITHIN_QUERY\",\n}\n\nexport enum NullHandling {\n DEFAULT = \"DEFAULT\",\n SPECIAL = \"SPECIAL\",\n}\n\nexport enum OrderPreservation {\n /** Output rows are in same order as input rows (DuckDB INSERTION_ORDER). */\n PRESERVES_ORDER = \"PRESERVES_ORDER\",\n /** Output order is undefined; may be reordered (DuckDB NO_ORDER). */\n NO_ORDER_GUARANTEE = \"NO_ORDER_GUARANTEE\",\n /** Output is in a fixed mandatory order; DuckDB serialises the pipeline\n * (single worker) to preserve it (DuckDB FIXED_ORDER). */\n FIXED_ORDER = \"FIXED_ORDER\",\n}\n\nexport enum OrderDependence {\n ORDER_DEPENDENT = \"ORDER_DEPENDENT\",\n NOT_ORDER_DEPENDENT = \"NOT_ORDER_DEPENDENT\",\n}\n\nexport enum DistinctDependence {\n DISTINCT_DEPENDENT = \"DISTINCT_DEPENDENT\",\n NOT_DISTINCT_DEPENDENT = \"NOT_DISTINCT_DEPENDENT\",\n}\n\nexport enum TableInOutPhase {\n INPUT = \"INPUT\",\n FINALIZE = \"FINALIZE\",\n // Sink+Source (TableBufferingFunction) init phases. TABLE_BUFFERING is the\n // sink-side init (persist init metadata so any pool worker can serve\n // process/combine); TABLE_BUFFERING_FINALIZE is the per-finalize_state_id\n // Source-stream init.\n TABLE_BUFFERING = \"TABLE_BUFFERING\",\n TABLE_BUFFERING_FINALIZE = \"TABLE_BUFFERING_FINALIZE\",\n}\n\n// Arrow schema metadata keys (must match Python exactly - bytes in Python, strings in TS)\nexport const VGI_ARG_KEY = \"vgi_arg\";\nexport const VGI_ARG_NAMED = \"named\";\nexport const VGI_TYPE_KEY = \"vgi_type\";\nexport const VGI_TYPE_TABLE = \"table\";\nexport const VGI_TYPE_ANY = \"any\";\nexport const VGI_VARARGS_KEY = \"vgi_varargs\";\nexport const VGI_VARARGS_TRUE = \"true\";\nexport const VGI_CONST_KEY = \"vgi_const\";\nexport const VGI_CONST_TRUE = \"true\";\n// Per-argument description (UTF-8; presence-only). `vgi_doc_*` prefix reserved.\nexport const VGI_DOC_KEY = \"vgi_doc\";\n\n// Per-argument constraint metadata for agent discovery. All presence-only\n// (omitted when absent) and value-encoded as UTF-8 so the surfaced column type\n// stays uniform regardless of the arg's value type:\n// vgi_default — JSON scalar (the arg's default value; optional args only)\n// vgi_choices — JSON array (the closed set of allowed values)\n// vgi_range — interval notation built from ge/le/gt/lt (e.g. \"[0, 100]\",\n// \"(0, +inf)\", \"[1, 10)\"); a discovery surface, not raw bounds\n// vgi_pattern — raw regex the value must match (open set)\n// Kept byte-for-byte in sync with the C++ reader and the Python/other SDKs.\nexport const VGI_DEFAULT_KEY = \"vgi_default\";\nexport const VGI_CHOICES_KEY = \"vgi_choices\";\nexport const VGI_RANGE_KEY = \"vgi_range\";\nexport const VGI_PATTERN_KEY = \"vgi_pattern\";\n\nexport interface TableCardinality {\n estimate: number | null;\n max: number | null;\n}\n\n// Default max workers (matches Python DEFAULT_MAX_WORKERS = 99999)\nexport const DEFAULT_MAX_WORKERS = 99999;\n",
|
|
22
22
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// SPDX-License-Identifier: Apache-2.0\n//\n// Producer for the versioned VGI HTTP landing contract (`describe.json`) from a\n// worker's catalog introspection. This is the TypeScript counterpart to the\n// Python reference producer (`vgi/http/describe_json.py`); both emit an\n// equivalent document, guarded by the cross-language conformance harness at\n// `vgi/test/landing/`. See `vgi/docs/http-landing-contract.md` for the spec.\n//\n// The document is JSON — it does NOT depend on the (versioned, evolving) VGI\n// wire protocol, so the single shared static `landing.html` (byte-identical\n// across every language worker) can render it same-origin. Table/view columns\n// are lazy: the document carries only a column count, and the page fetches\n// per-object detail from `buildColumnsJson`\n// (`GET {prefix}/describe/{catalog}/{schema}/{table}.json`) on first expand.\n\nimport {\n deserializeBatch,\n deserializeSchema,\n isBinary,\n isBool,\n isFloat,\n isInt,\n isNull,\n isUtf8,\n type VgiDataType,\n type VgiField,\n} from \"../arrow/index.js\";\nimport type { CatalogInterface } from \"../catalog/interface.js\";\nimport type {\n CatalogAttachResult,\n CatalogInfo,\n FunctionInfo,\n MacroInfo,\n SchemaInfo,\n TableInfo,\n ViewInfo,\n} from \"../generated/vgi-client.js\";\nimport {\n VGI_ARG_KEY,\n VGI_ARG_NAMED,\n VGI_DEFAULT_KEY,\n VGI_DOC_KEY,\n VGI_TYPE_KEY,\n VGI_TYPE_TABLE,\n} from \"../types.js\";\n\nexport const LANDING_SCHEMA_VERSION = 1;\nexport const CUPOLA_BASE = \"https://cupola.query-farm.services\";\n\n/**\n * Producer for the VGI landing surface, passed to `createHttpHandler`'s\n * `landingDescribe` option. Declared locally (structurally identical to\n * `@query-farm/vgi-rpc`'s `LandingDescribeProvider`) so this package does not\n * hard-couple to a specific vgi-rpc version.\n */\nexport interface LandingDescribeProvider {\n describe(ctx: { serverId: string; oauth: boolean }): unknown | Promise<unknown>;\n columns(catalog: string, schema: string, table: string): unknown | null | Promise<unknown | null>;\n}\n\n/** Identity of the worker software surfaced in `describe.json` → `worker`. */\nexport interface WorkerDescribeInfo {\n /** Worker name (e.g. class or catalog name). */\n name: string;\n /** One-line worker description. */\n doc?: string;\n /** Worker software version. */\n version?: string;\n}\n\n// `duckdb_databases().tags` keys (the reserved `vgi.*` namespace) surfaced in\n// the landing page's catalog card. Mirrors the Python reference `_STRING_TAGS`.\nconst STRING_TAGS: Record<string, string> = {\n title: \"vgi.title\",\n doc_md: \"vgi.doc_md\",\n source_url: \"vgi.source_url\",\n license: \"vgi.license\",\n author: \"vgi.author\",\n copyright: \"vgi.copyright\",\n support_contact: \"vgi.support_contact\",\n support_policy_url: \"vgi.support_policy_url\",\n};\nconst KEYWORDS_TAG = \"vgi.keywords\"; // JSON array encoded as a string in the tags MAP\n\n// ---------------------------------------------------------------------------\n// Type / field helpers\n// ---------------------------------------------------------------------------\n\n/** Human-readable DuckDB-ish type name for a VGI Arrow type. */\nfunction typeToString(type: VgiDataType): string {\n if (isNull(type)) return \"NULL\";\n if (isUtf8(type)) return \"VARCHAR\";\n if (isBinary(type)) return \"BLOB\";\n if (isBool(type)) return \"BOOLEAN\";\n if (isInt(type)) {\n const bw = (type as { bitWidth?: number }).bitWidth ?? 32;\n return bw === 64 ? \"BIGINT\" : \"INTEGER\";\n }\n if (isFloat(type)) {\n const precision = (type as { precision?: number }).precision ?? 2;\n return precision === 1 ? \"FLOAT\" : \"DOUBLE\";\n }\n const s = (type as { toString?: () => string }).toString?.();\n return s ?? String(type.typeId);\n}\n\n/**\n * Raw Arrow type string (e.g. `int64`, `string`, `double`) matching pyarrow's\n * `str(type)`. Unlike {@link typeToString} (DuckDB-ish names used for table/view\n * columns), macro arg types are carried verbatim in `describe.json` — the shared\n * landing page maps Arrow → DuckDB client-side — so they must be byte-identical\n * to what the Python reference producer emits for cross-language parity.\n */\nfunction arrowTypeString(type: VgiDataType): string {\n if (isNull(type)) return \"null\";\n if (isBool(type)) return \"bool\";\n if (isUtf8(type)) return \"string\";\n if (isBinary(type)) return \"binary\";\n if (isInt(type)) {\n const bw = (type as { bitWidth?: number }).bitWidth ?? 32;\n const signed =\n (type as { isSigned?: boolean }).isSigned ?? (type as { signed?: boolean }).signed ?? true;\n return `${signed ? \"\" : \"u\"}int${bw}`;\n }\n if (isFloat(type)) {\n const precision = (type as { precision?: number }).precision ?? 2;\n return precision === 0 ? \"halffloat\" : precision === 1 ? \"float\" : \"double\";\n }\n const s = (type as { toString?: () => string }).toString?.();\n return (s ?? String(type.typeId)).toLowerCase();\n}\n\nfunction fieldMeta(field: VgiField, key: string): string | undefined {\n return field.metadata.get(key);\n}\n\ninterface ColumnJson {\n name: string;\n type: string;\n comment?: string;\n}\n\nfunction fieldToColumn(field: VgiField): ColumnJson {\n const col: ColumnJson = { name: field.name, type: typeToString(field.type) };\n const comment = fieldMeta(field, \"comment\") ?? fieldMeta(field, VGI_DOC_KEY);\n if (comment) col.comment = comment;\n return col;\n}\n\nfunction readSchemaSafe(bytes: Uint8Array | null | undefined) {\n if (!bytes || bytes.length === 0) return null;\n try {\n return deserializeSchema(bytes);\n } catch {\n return null;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Function mapping\n// ---------------------------------------------------------------------------\n\n/** scalar | table | aggregate | table_in_out (mirrors Python `_function_display_type`). */\nfunction functionDisplayType(fn: FunctionInfo): \"scalar\" | \"table\" | \"aggregate\" | \"table_in_out\" {\n const t = String(fn.function_type).toUpperCase();\n if (t === \"SCALAR\") return \"scalar\";\n if (t === \"AGGREGATE\") return \"aggregate\";\n if (fn.has_finalize) return \"table_in_out\";\n return \"table\";\n}\n\nfunction functionReturns(fn: FunctionInfo): string | undefined {\n const schema = readSchemaSafe(fn.output_schema);\n if (schema === null || schema.fields.length === 0) return undefined;\n const t = String(fn.function_type).toUpperCase();\n if (t === \"SCALAR\" || t === \"AGGREGATE\") {\n // Scalar/aggregate output is a single \"result\" column.\n return typeToString(schema.fields[0].type);\n }\n const cols = schema.fields.map((f) => `${f.name} ${typeToString(f.type)}`).join(\", \");\n return `TABLE(${cols})`;\n}\n\ninterface ArgJson {\n name: string;\n type: string;\n named?: boolean;\n default?: string;\n desc?: string;\n}\n\nfunction functionArgs(fn: FunctionInfo): ArgJson[] {\n const schema = readSchemaSafe(fn.arguments);\n if (schema === null) return [];\n const args: ArgJson[] = [];\n for (const field of schema.fields) {\n // Skip the piped input relation of a table-in-out function; it's not a\n // user-supplied argument.\n if (fieldMeta(field, VGI_TYPE_KEY) === VGI_TYPE_TABLE) continue;\n const arg: ArgJson = { name: field.name, type: typeToString(field.type) };\n if (fieldMeta(field, VGI_ARG_KEY) === VGI_ARG_NAMED) arg.named = true;\n const doc = fieldMeta(field, VGI_DOC_KEY);\n if (doc) arg.desc = doc;\n const rawDefault = fieldMeta(field, VGI_DEFAULT_KEY);\n if (rawDefault !== undefined) {\n // Stored as a JSON scalar; render the decoded value for display.\n try {\n arg.default = JSON.stringify(JSON.parse(rawDefault));\n } catch {\n arg.default = rawDefault;\n }\n }\n args.push(arg);\n }\n return args;\n}\n\n// ---------------------------------------------------------------------------\n// Macro mapping\n// ---------------------------------------------------------------------------\n\n// A scalar macro is invoked exactly like a scalar function in SQL, and a table\n// macro like a table function; surface them in the same buckets so the landing\n// page lists a catalog's full callable surface (VGI workers commonly expose\n// their \"functions\" as declarative macros). Mirrors Python `_macro_display_type`.\nfunction macroDisplayType(m: MacroInfo): \"scalar\" | \"table\" {\n return String(m.macro_type).toUpperCase() === \"SCALAR\" ? \"scalar\" : \"table\";\n}\n\n/** JSON-encode a decoded macro default scalar, matching Python's `json.dumps`. */\nfunction macroDefaultJson(value: unknown): string {\n // int64 defaults decode to BigInt, which JSON.stringify rejects; a bigint's\n // decimal string is already its JSON integer encoding (0n -> \"0\").\n if (typeof value === \"bigint\") return value.toString();\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction macroArgs(m: MacroInfo): ArgJson[] {\n // Defaulted parameters are optional and callable by name in DuckDB, so we\n // present them as named args (with their default); the rest are positional.\n const defaults = new Map<string, unknown>();\n const defBytes = m.parameter_default_values;\n if (defBytes && defBytes.length > 0) {\n try {\n const batch = deserializeBatch(defBytes);\n for (const field of batch.schema.fields) {\n try {\n defaults.set(field.name, batch.getChild(field.name)?.get(0));\n } catch {\n // skip an undecodable default column\n }\n }\n } catch {\n // no usable defaults\n }\n }\n\n const schema = readSchemaSafe(m.arguments_schema);\n const fields = schema ? schema.fields : null;\n const fieldByName = new Map<string, VgiField>();\n if (fields) for (const f of fields) fieldByName.set(f.name, f);\n const names = fields ? fields.map((f) => f.name) : m.parameters;\n\n const args: ArgJson[] = [];\n for (const name of names) {\n const field = fieldByName.get(name);\n // Macro parameters are untyped unless a typed default pins them; show ANY\n // rather than the Arrow null placeholder.\n const arg: ArgJson =\n field !== undefined && !isNull(field.type)\n ? { name, type: arrowTypeString(field.type) }\n : { name, type: \"ANY\" };\n const doc = field !== undefined ? fieldMeta(field, VGI_DOC_KEY) : undefined;\n if (doc) arg.desc = doc;\n if (defaults.has(name)) {\n arg.named = true;\n arg.default = macroDefaultJson(defaults.get(name));\n }\n args.push(arg);\n }\n return args;\n}\n\nfunction macroToObject(m: MacroInfo): Record<string, unknown> {\n return {\n name: m.name,\n type: macroDisplayType(m),\n doc: m.comment ?? \"\",\n args: macroArgs(m),\n };\n}\n\n// ---------------------------------------------------------------------------\n// Catalog contents\n// ---------------------------------------------------------------------------\n\nasync function schemaContents(\n iface: CatalogInterface,\n aod: Uint8Array,\n name: string,\n kind: \"TABLE\" | \"VIEW\",\n): Promise<TableInfo[] | ViewInfo[]> {\n try {\n if (kind === \"TABLE\") {\n return await iface.schemaContentsTables(aod, name);\n }\n return await iface.schemaContentsViews(aod, name);\n } catch {\n return [];\n }\n}\n\nasync function schemaFunctions(iface: CatalogInterface, aod: Uint8Array, name: string): Promise<FunctionInfo[]> {\n const out: FunctionInfo[] = [];\n for (const kind of [\"SCALAR_FUNCTION\", \"TABLE_FUNCTION\", \"AGGREGATE_FUNCTION\"]) {\n try {\n out.push(...(await iface.schemaContentsFunctions(aod, name, kind)));\n } catch {\n // best-effort — keep whatever we collected\n }\n }\n return out;\n}\n\nasync function schemaMacros(iface: CatalogInterface, aod: Uint8Array, name: string): Promise<MacroInfo[]> {\n const out: MacroInfo[] = [];\n for (const kind of [\"SCALAR_MACRO\", \"TABLE_MACRO\"]) {\n try {\n out.push(...(await iface.schemaContentsMacros(aod, name, kind)));\n } catch {\n // best-effort — keep whatever we collected\n }\n }\n return out;\n}\n\ninterface Counts {\n schemas: number;\n tables: number;\n views: number;\n functions: number;\n}\n\nasync function buildSchemas(\n iface: CatalogInterface,\n aod: Uint8Array,\n): Promise<{ schemas: unknown[]; counts: Counts }> {\n let schemaInfos: SchemaInfo[];\n try {\n schemaInfos = await iface.schemas(aod);\n } catch {\n return { schemas: [], counts: { schemas: 0, tables: 0, views: 0, functions: 0 } };\n }\n\n const schemas: unknown[] = [];\n const counts: Counts = { schemas: 0, tables: 0, views: 0, functions: 0 };\n\n for (const si of schemaInfos) {\n const tablesRaw = (await schemaContents(iface, aod, si.name, \"TABLE\")) as TableInfo[];\n const viewsRaw = (await schemaContents(iface, aod, si.name, \"VIEW\")) as ViewInfo[];\n const funcsRaw = await schemaFunctions(iface, aod, si.name);\n const macrosRaw = await schemaMacros(iface, aod, si.name);\n\n const tables = tablesRaw.map((t) => {\n const schema = readSchemaSafe(t.columns);\n return { name: t.name, cols: schema ? schema.fields.length : 0, comment: t.comment ?? \"\" };\n });\n\n const views = viewsRaw.map((v) => ({\n name: v.name,\n cols: Object.keys(v.column_comments ?? {}).length,\n comment: v.comment ?? \"\",\n def: v.definition,\n }));\n\n const functions: Record<string, unknown>[] = funcsRaw.map((fn) => {\n const obj: Record<string, unknown> = {\n name: fn.name,\n type: functionDisplayType(fn),\n doc: fn.description ?? \"\",\n args: functionArgs(fn),\n };\n const ret = functionReturns(fn);\n if (ret) obj.returns = ret;\n return obj;\n });\n // Fold macros into the same scalar/table buckets (VGI catalogs commonly\n // expose their callable surface as declarative macros).\n functions.push(...macrosRaw.map((m) => macroToObject(m)));\n // Deterministic ordering across functions + macros, matching the Python\n // reference producer's `sort(key=(type, name))`.\n functions.sort(\n (a, b) =>\n String(a.type).localeCompare(String(b.type)) || String(a.name).localeCompare(String(b.name)),\n );\n\n const schemaObj: Record<string, unknown> = { name: si.name };\n if (si.comment) schemaObj.doc = si.comment;\n schemaObj.tables = tables;\n schemaObj.views = views;\n schemaObj.functions = functions;\n schemas.push(schemaObj);\n counts.schemas += 1;\n counts.tables += tables.length;\n counts.views += views.length;\n counts.functions += functions.length;\n }\n\n return { schemas, counts };\n}\n\n// ---------------------------------------------------------------------------\n// Catalog-level metadata (tags, attach options, data versions)\n// ---------------------------------------------------------------------------\n\nfunction catalogTags(result: CatalogAttachResult | null): Record<string, unknown> {\n const tags = result?.tags;\n if (!tags) return {};\n const out: Record<string, unknown> = {};\n for (const [key, tag] of Object.entries(STRING_TAGS)) {\n const val = tags[tag];\n if (val) out[key] = val;\n }\n const kw = tags[KEYWORDS_TAG];\n if (kw) {\n try {\n const parsed = JSON.parse(kw);\n if (Array.isArray(parsed)) out.keywords = parsed.map((k) => String(k));\n } catch {\n // ignore unparseable keyword tag\n }\n }\n return out;\n}\n\ninterface AttachOptionJson {\n name: string;\n type: string;\n default: string;\n description: string;\n}\n\n/** Decode a serialized AttachOptionSpec row into the describe shape. */\nfunction decodeAttachOption(bytes: Uint8Array): AttachOptionJson | null {\n try {\n const batch = deserializeBatch(bytes);\n if (batch.numRows === 0) return null;\n const name = String(batch.getChild(\"name\")?.get(0) ?? \"\");\n const description = String(batch.getChild(\"description\")?.get(0) ?? \"\");\n const typeBytes = batch.getChild(\"type\")?.get(0) as Uint8Array | null | undefined;\n let type = \"\";\n const typeSchema = readSchemaSafe(typeBytes ?? null);\n if (typeSchema && typeSchema.fields.length > 0) type = typeToString(typeSchema.fields[0].type);\n let defaultStr = \"\";\n const defBytes = batch.getChild(\"default_value\")?.get(0) as Uint8Array | null | undefined;\n if (defBytes) {\n try {\n const defBatch = deserializeBatch(defBytes);\n if (defBatch.numRows > 0) {\n const v = defBatch.getChild(\"value\")?.get(0);\n defaultStr = v == null ? \"\" : String(v);\n }\n } catch {\n // leave default empty\n }\n }\n return { name, type, default: defaultStr, description };\n } catch {\n return null;\n }\n}\n\nasync function attachCatalog(\n iface: CatalogInterface,\n name: string,\n): Promise<CatalogAttachResult | null> {\n try {\n return await iface.attach(name, {}, null, null);\n } catch {\n return null;\n }\n}\n\nasync function buildCatalog(\n iface: CatalogInterface,\n name: string,\n info: CatalogInfo | undefined,\n): Promise<Record<string, unknown>> {\n const result = await attachCatalog(iface, name);\n\n const attachOptions = (info?.attach_option_specs ?? [])\n .map((b) => decodeAttachOption(b))\n .filter((o): o is AttachOptionJson => o !== null);\n\n const dataVersions = (info?.releases ?? []).map((r) =>\n r.summary ? { spec: r.version, label: r.summary } : { spec: r.version },\n );\n\n let impl: string | null = info?.implementation_version ?? null;\n let dvs: string | null = info?.data_version_spec ?? null;\n if (result) {\n impl = result.resolved_implementation_version ?? impl;\n dvs = result.resolved_data_version ?? dvs;\n }\n\n let schemas: unknown[] = [];\n let counts: Counts = { schemas: 0, tables: 0, views: 0, functions: 0 };\n if (result) {\n const built = await buildSchemas(iface, result.attach_opaque_data);\n schemas = built.schemas;\n counts = built.counts;\n }\n\n return {\n name,\n implementation_version: impl,\n data_version_spec: dvs,\n data_versions: dataVersions,\n attach_options: attachOptions,\n tags: catalogTags(result),\n counts,\n schemas,\n };\n}\n\nasync function catalogInfoByName(iface: CatalogInterface): Promise<Map<string, CatalogInfo>> {\n const map = new Map<string, CatalogInfo>();\n if (typeof iface.catalogsInfo === \"function\") {\n try {\n const infos = await iface.catalogsInfo();\n for (const info of infos) map.set(info.name, info);\n } catch {\n // fall back to bare names below\n }\n }\n return map;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Build the full `describe.json` document for a worker's catalog interface.\n *\n * `oauth` and `serverId` are supplied by the HTTP server (they depend on runtime\n * config, not the catalog).\n */\nexport async function buildDescribeJson(\n iface: CatalogInterface,\n worker: WorkerDescribeInfo,\n opts: { oauth?: boolean; serverId?: string; cupolaBase?: string } = {},\n): Promise<Record<string, unknown>> {\n const infos = await catalogInfoByName(iface);\n let names: string[];\n try {\n names = iface.catalogs();\n } catch {\n names = [];\n }\n\n const catalogs: unknown[] = [];\n for (const name of names) {\n catalogs.push(await buildCatalog(iface, name, infos.get(name)));\n }\n\n return {\n landing_schema_version: LANDING_SCHEMA_VERSION,\n worker: {\n name: worker.name,\n doc: worker.doc ?? \"\",\n version: worker.version ?? \"unknown\",\n lang: \"typescript\",\n },\n server_id: opts.serverId ?? \"\",\n oauth: opts.oauth ?? false,\n cupola_base: opts.cupolaBase ?? CUPOLA_BASE,\n catalogs,\n };\n}\n\n/**\n * Build the lazy per-object column payload for one table or view.\n *\n * Returns `{ columns: [{ name, type, comment? }] }`, or `null` when the object\n * can't be found. Tables deserialize their Arrow column schema; views expose\n * their declared column comments (types are only known after binding the SQL,\n * which the worker does not do here).\n */\nexport async function buildColumnsJson(\n iface: CatalogInterface,\n catalog: string,\n schema: string,\n table: string,\n): Promise<{ columns: ColumnJson[] } | null> {\n const result = await attachCatalog(iface, catalog);\n if (!result) return null;\n const aod = result.attach_opaque_data;\n\n const tables = (await schemaContents(iface, aod, schema, \"TABLE\")) as TableInfo[];\n for (const t of tables) {\n if (t.name === table) {\n const arrow = readSchemaSafe(t.columns);\n return { columns: (arrow?.fields ?? []).map((f) => fieldToColumn(f)) };\n }\n }\n\n const views = (await schemaContents(iface, aod, schema, \"VIEW\")) as ViewInfo[];\n for (const v of views) {\n if (v.name === table) {\n return {\n columns: Object.entries(v.column_comments ?? {}).map(([name, comment]) => ({\n name,\n type: \"\",\n comment,\n })),\n };\n }\n }\n\n return null;\n}\n\n/**\n * Build a {@link LandingDescribeProvider} to pass to `createHttpHandler` from\n * `@query-farm/vgi-rpc`. Wires the worker's catalog interface into the\n * standardized landing surface (`GET {prefix}/describe.json` and the lazy\n * per-object column endpoint).\n */\nexport function createLandingDescribe(\n iface: CatalogInterface,\n worker: WorkerDescribeInfo,\n opts: { cupolaBase?: string } = {},\n): LandingDescribeProvider {\n return {\n describe: (ctx) => buildDescribeJson(iface, worker, { ...ctx, cupolaBase: opts.cupolaBase }),\n columns: (catalog, schema, table) => buildColumnsJson(iface, catalog, schema, table),\n };\n}\n",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"/**\n * ChaCha stream cipher, released\n * in 2008. Developed after Salsa20, ChaCha aims to increase diffusion per round.\n * It was standardized in\n * {@link https://www.rfc-editor.org/rfc/rfc8439 | RFC 8439} and\n * is now used in TLS 1.3.\n *\n * {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | XChaCha20}\n * extended-nonce variant is also provided. Similar to XSalsa, it's safe to use with\n * randomly-generated nonces.\n *\n * Check out\n * {@link http://cr.yp.to/chacha/chacha-20080128.pdf | PDF},\n * {@link https://en.wikipedia.org/wiki/Salsa20 | wiki}, and\n * {@link https://cr.yp.to/chacha.html | website}.\n *\n * @module\n */\nimport { createCipher, createPRG, rotl } from \"./_arx.js\";\nimport { poly1305 } from \"./_poly1305.js\";\nimport { abytes, clean, equalBytes, getOutput, swap8IfBE, swap32IfBE, u64Lengths, wrapCipher, } from \"./utils.js\";\n/**\n * ChaCha core function. It is implemented twice:\n * 1. Simple loop (chachaCore_small, hchacha_small)\n * 2. Unrolled loop (chachaCore, hchacha) - 4x faster, but larger & harder to read\n * The specific implementation is selected in `createCipher` below.\n */\n/** RFC 8439 §2.1 quarter round on words a, b, c, d. */\n// prettier-ignore\nfunction chachaQR(x, a, b, c, d) {\n x[a] = (x[a] + x[b]) | 0;\n x[d] = rotl(x[d] ^ x[a], 16);\n x[c] = (x[c] + x[d]) | 0;\n x[b] = rotl(x[b] ^ x[c], 12);\n x[a] = (x[a] + x[b]) | 0;\n x[d] = rotl(x[d] ^ x[a], 8);\n x[c] = (x[c] + x[d]) | 0;\n x[b] = rotl(x[b] ^ x[c], 7);\n}\n/** Repeated ChaCha double rounds; callers are expected to pass an even round count. */\nfunction chachaRound(x, rounds = 20) {\n for (let r = 0; r < rounds; r += 2) {\n // RFC 8439 §2.3 / §2.3.1 inner_block: four column rounds, then four diagonal rounds.\n chachaQR(x, 0, 4, 8, 12);\n chachaQR(x, 1, 5, 9, 13);\n chachaQR(x, 2, 6, 10, 14);\n chachaQR(x, 3, 7, 11, 15);\n chachaQR(x, 0, 5, 10, 15);\n chachaQR(x, 1, 6, 11, 12);\n chachaQR(x, 2, 7, 8, 13);\n chachaQR(x, 3, 4, 9, 14);\n }\n}\n// Shared scratch for the auditability-only helper below; only the test-only\n// __TESTS.chachaCore_small hook reaches it, so production exports stay reentrant.\nconst ctmp = /* @__PURE__ */ new Uint32Array(16);\n/** Small version of chacha without loop unrolling. Unused, provided for auditability. */\n// prettier-ignore\nfunction chacha(s, k, i, out, isHChacha = true, rounds = 20) {\n // `i` is either `[counter, nonce0, nonce1, nonce2]` for the ChaCha block\n // function or the full 128-bit nonce prefix for the HChaCha subkey path.\n // Create initial array using common pattern\n const y = Uint32Array.from([\n s[0], s[1], s[2], s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n k[0], k[1], k[2], k[3], // Key Key Key Key\n k[4], k[5], k[6], k[7], // Key Key Key Key\n i[0], i[1], i[2], i[3], // Counter Counter Nonce Nonce\n ]);\n const x = ctmp;\n x.set(y);\n chachaRound(x, rounds);\n // HChaCha writes words 0..3 and 12..15 after the rounds; the ChaCha\n // block path adds the original state word-by-word.\n if (isHChacha) {\n const xindexes = [0, 1, 2, 3, 12, 13, 14, 15];\n for (let i = 0; i < 8; i++)\n out[i] = x[xindexes[i]];\n }\n else {\n for (let i = 0; i < 16; i++)\n out[i] = (y[i] + x[i]) | 0;\n }\n}\n/** Identical to `chachaCore`. Reached only through the test-only `__TESTS` export. */\n// @ts-ignore\nconst chachaCore_small = (s, k, n, out, cnt, rounds) => \n// Keep the reference wrapper on the same [counter, nonce0, nonce1, nonce2] layout as chacha().\nchacha(s, k, Uint32Array.from([cnt, n[0], n[1], n[2]]), out, false, rounds);\n/** Identical to `hchacha`. Unused. */\n// @ts-ignore\nconst hchacha_small = chacha;\n/** RFC 8439 §2.3 block core for `state = constants | key | counter | nonce`. */\n// prettier-ignore\nfunction chachaCore(s, k, n, out, cnt, rounds = 20) {\n let y00 = s[0], y01 = s[1], y02 = s[2], y03 = s[3], // \"expa\" \"nd 3\" \"2-by\" \"te k\"\n y04 = k[0], y05 = k[1], y06 = k[2], y07 = k[3], // Key Key Key Key\n y08 = k[4], y09 = k[5], y10 = k[6], y11 = k[7], // Key Key Key Key\n y12 = cnt, y13 = n[0], y14 = n[1], y15 = n[2]; // Counter Nonce Nonce Nonce\n // Save state to temporary variables\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n for (let r = 0; r < rounds; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // RFC 8439 §2.3 / §2.3.1: add the original state words back in state order.\n let oi = 0;\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\n/**\n * hchacha hashes key and nonce into key' and nonce' for xchacha20.\n * Algorithmically identical to `hchacha_small`, but this exported path\n * normalizes word order on big-endian hosts.\n * Need to find a way to merge it with `chachaCore` without 25% performance hit.\n * @param s - Sigma constants as 32-bit words.\n * @param k - Key words.\n * @param i - Nonce-prefix words.\n * @param out - Output buffer for the derived subkey.\n * @example\n * Derives the XChaCha subkey from sigma, key, and nonce-prefix words.\n *\n * ```ts\n * const sigma = new Uint32Array(4);\n * const key = new Uint32Array(8);\n * const nonce = new Uint32Array(4);\n * const out = new Uint32Array(8);\n * hchacha(sigma, key, nonce, out);\n * ```\n */\n// prettier-ignore\nexport function hchacha(s, k, i, out) {\n let x00 = swap8IfBE(s[0]), x01 = swap8IfBE(s[1]), x02 = swap8IfBE(s[2]), x03 = swap8IfBE(s[3]), x04 = swap8IfBE(k[0]), x05 = swap8IfBE(k[1]), x06 = swap8IfBE(k[2]), x07 = swap8IfBE(k[3]), x08 = swap8IfBE(k[4]), x09 = swap8IfBE(k[5]), x10 = swap8IfBE(k[6]), x11 = swap8IfBE(k[7]), x12 = swap8IfBE(i[0]), x13 = swap8IfBE(i[1]), x14 = swap8IfBE(i[2]), x15 = swap8IfBE(i[3]);\n for (let r = 0; r < 20; r += 2) {\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 16);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 12);\n x00 = (x00 + x04) | 0;\n x12 = rotl(x12 ^ x00, 8);\n x08 = (x08 + x12) | 0;\n x04 = rotl(x04 ^ x08, 7);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 16);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 12);\n x01 = (x01 + x05) | 0;\n x13 = rotl(x13 ^ x01, 8);\n x09 = (x09 + x13) | 0;\n x05 = rotl(x05 ^ x09, 7);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 16);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 12);\n x02 = (x02 + x06) | 0;\n x14 = rotl(x14 ^ x02, 8);\n x10 = (x10 + x14) | 0;\n x06 = rotl(x06 ^ x10, 7);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 16);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 12);\n x03 = (x03 + x07) | 0;\n x15 = rotl(x15 ^ x03, 8);\n x11 = (x11 + x15) | 0;\n x07 = rotl(x07 ^ x11, 7);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 16);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 12);\n x00 = (x00 + x05) | 0;\n x15 = rotl(x15 ^ x00, 8);\n x10 = (x10 + x15) | 0;\n x05 = rotl(x05 ^ x10, 7);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 16);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 12);\n x01 = (x01 + x06) | 0;\n x12 = rotl(x12 ^ x01, 8);\n x11 = (x11 + x12) | 0;\n x06 = rotl(x06 ^ x11, 7);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 16);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 12);\n x02 = (x02 + x07) | 0;\n x13 = rotl(x13 ^ x02, 8);\n x08 = (x08 + x13) | 0;\n x07 = rotl(x07 ^ x08, 7);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 16);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 12);\n x03 = (x03 + x04) | 0;\n x14 = rotl(x14 ^ x03, 8);\n x09 = (x09 + x14) | 0;\n x04 = rotl(x04 ^ x09, 7);\n }\n // HChaCha derives the subkey from state words 0..3 and 12..15 after 20 rounds.\n let oi = 0;\n out[oi++] = x00;\n out[oi++] = x01;\n out[oi++] = x02;\n out[oi++] = x03;\n out[oi++] = x12;\n out[oi++] = x13;\n out[oi++] = x14;\n out[oi++] = x15;\n swap32IfBE(out);\n}\n/**\n * Original, non-RFC chacha20 from DJB. 8-byte nonce, 8-byte counter.\n * The nonce/counter layout still reserves 8 counter bytes internally, but the shared public\n * `counter` argument follows noble's strict non-wrapping 32-bit policy. See `src/_arx.ts`\n * near `MAX_COUNTER` for the full counter-policy rationale.\n * @param key - 16-byte or 32-byte key.\n * @param nonce - 8-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with the original 8-byte-nonce ChaCha variant and a fresh key/nonce.\n *\n * ```ts\n * import { chacha20orig } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(8);\n * chacha20orig(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha20orig = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n allowShortKeys: true,\n});\n/**\n * ChaCha stream cipher. Conforms to RFC 8439 (IETF, TLS). 12-byte nonce, 4-byte counter.\n * With smaller nonce, it's not safe to make it random (CSPRNG), due to collision chance.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with the RFC 8439 ChaCha20 stream cipher and a fresh key/nonce.\n *\n * ```ts\n * import { chacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha20(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n allowShortKeys: false,\n});\n/**\n * XChaCha eXtended-nonce ChaCha. With 24-byte nonce, it's safe to make it random (CSPRNG).\n * See {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | the IRTF draft}.\n * The nonce/counter layout still reserves 8 counter bytes internally, but the shared public\n * `counter` argument follows noble's strict non-wrapping 32-bit policy. See `src/_arx.ts`\n * near `MAX_COUNTER` for the full counter-policy rationale.\n * @param key - 32-byte key.\n * @param nonce - 24-byte extended nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Encrypts bytes with XChaCha20 using a fresh key and random 24-byte nonce.\n *\n * ```ts\n * import { xchacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(24);\n * xchacha20(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const xchacha20 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 8,\n extendNonceFn: hchacha,\n allowShortKeys: false,\n});\n/**\n * Reduced 8-round chacha, described in original paper.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Uses the reduced 8-round variant for non-critical workloads with a fresh key/nonce.\n *\n * ```ts\n * import { chacha8 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha8(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha8 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 8,\n});\n/**\n * Reduced 12-round chacha, described in original paper.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param data - Input bytes to xor with the keystream.\n * @param output - Optional destination buffer.\n * @param counter - Initial block counter.\n * @returns Encrypted or decrypted bytes.\n * @example\n * Uses the reduced 12-round variant for non-critical workloads with a fresh key/nonce.\n *\n * ```ts\n * import { chacha12 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * chacha12(key, nonce, new Uint8Array(4));\n * ```\n */\nexport const chacha12 = /* @__PURE__ */ createCipher(chachaCore, {\n counterRight: false,\n counterLength: 4,\n rounds: 12,\n});\n// Test-only hooks for keeping the simple/reference core aligned with the unrolled production core.\nexport const __TESTS = /* @__PURE__ */ Object.freeze({ chachaCore_small, chachaCore });\n// RFC 8439 §2.8.1 pad16(x): shared zero block for AAD/ciphertext padding.\nconst ZEROS16 = /* @__PURE__ */ new Uint8Array(16);\n// RFC 8439 §2.8 / §2.8.1: aligned inputs add nothing, otherwise append 16-(len%16) zero bytes.\nconst updatePadded = (h, msg) => {\n h.update(msg);\n const leftover = msg.length % 16;\n if (leftover)\n h.update(ZEROS16.subarray(leftover));\n};\n// RFC 8439 §2.6.1 poly1305_key_gen returns `block[0..31]`, so AEAD key\n// generation only needs 32 zero bytes.\nconst ZEROS32 = /* @__PURE__ */ new Uint8Array(32);\nfunction computeTag(fn, key, nonce, ciphertext, AAD) {\n if (AAD !== undefined)\n abytes(AAD, undefined, 'AAD');\n // RFC 8439 §2.6 / §2.8: derive the Poly1305 one-time key from counter 0,\n // then MAC AAD || pad16(AAD) || ciphertext || pad16(ciphertext) || len(AAD) || len(ciphertext).\n const authKey = fn(key, nonce, ZEROS32);\n const lengths = u64Lengths(ciphertext.length, AAD ? AAD.length : 0, true);\n // Methods below can be replaced with\n // return poly1305_computeTag_small(authKey, lengths, ciphertext, AAD)\n const h = poly1305.create(authKey);\n if (AAD)\n updatePadded(h, AAD);\n updatePadded(h, ciphertext);\n h.update(lengths);\n const res = h.digest();\n clean(authKey, lengths);\n return res;\n}\n/**\n * AEAD algorithm from RFC 8439.\n * Salsa20 and chacha (RFC 8439) use poly1305 differently.\n * We could have composed them, but it's hard because of authKey:\n * In salsa20, authKey changes position in salsa stream.\n * In chacha, authKey can't be computed inside computeTag, it modifies the counter.\n */\nexport const _poly1305_aead = (xorStream) => (key, nonce, AAD) => {\n // This borrows caller key/nonce/AAD buffers by reference; mutating them after construction\n // changes future encrypt/decrypt results.\n const tagLength = 16;\n return {\n encrypt(plaintext, output) {\n const plength = plaintext.length;\n output = getOutput(plength + tagLength, output, false);\n output.set(plaintext);\n const oPlain = output.subarray(0, -tagLength);\n // RFC 8439 §2.8: payload encryption starts at counter 1 because counter 0 produced the OTK.\n xorStream(key, nonce, oPlain, oPlain, 1);\n const tag = computeTag(xorStream, key, nonce, oPlain, AAD);\n output.set(tag, plength); // append tag\n clean(tag);\n return output;\n },\n decrypt(ciphertext, output) {\n output = getOutput(ciphertext.length - tagLength, output, false);\n const data = ciphertext.subarray(0, -tagLength);\n const passedTag = ciphertext.subarray(-tagLength);\n const tag = computeTag(xorStream, key, nonce, data, AAD);\n // RFC 8439 §2.8 / §4: authenticate ciphertext before decrypting it, and compare tags with\n // the constant-time equalBytes() helper rather than decrypting speculative plaintext first.\n if (!equalBytes(passedTag, tag)) {\n clean(tag);\n throw new Error('invalid tag');\n }\n output.set(ciphertext.subarray(0, -tagLength));\n // Actual decryption\n xorStream(key, nonce, output, output, 1); // start stream with i=1\n clean(tag);\n return output;\n },\n };\n};\n/**\n * ChaCha20-Poly1305 from RFC 8439.\n *\n * Unsafe to use random nonces under the same key, due to collision chance.\n * Prefer XChaCha instead.\n * @param key - 32-byte key.\n * @param nonce - 12-byte nonce.\n * @param AAD - Additional authenticated data.\n * @returns AEAD cipher instance.\n * @example\n * Encrypts and authenticates plaintext with a fresh key and nonce.\n *\n * ```ts\n * import { chacha20poly1305 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(12);\n * const cipher = chacha20poly1305(key, nonce);\n * cipher.encrypt(new Uint8Array([1, 2, 3]));\n * ```\n */\nexport const chacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 12, tagLength: 16 }, \n/* @__PURE__ */ _poly1305_aead(chacha20));\n/**\n * XChaCha20-Poly1305 extended-nonce chacha.\n *\n * Can be safely used with random nonces (CSPRNG).\n * See {@link https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha | the IRTF draft}.\n * @param key - 32-byte key.\n * @param nonce - 24-byte nonce.\n * @param AAD - Additional authenticated data.\n * @returns AEAD cipher instance.\n * @example\n * Encrypts and authenticates plaintext with a fresh key and random 24-byte nonce.\n *\n * ```ts\n * import { xchacha20poly1305 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const key = randomBytes(32);\n * const nonce = randomBytes(24);\n * const cipher = xchacha20poly1305(key, nonce);\n * cipher.encrypt(new Uint8Array([1, 2, 3]));\n * ```\n */\nexport const xchacha20poly1305 = /* @__PURE__ */ wrapCipher({ blockSize: 64, nonceLength: 24, tagLength: 16 }, \n/* @__PURE__ */ _poly1305_aead(xchacha20));\n/**\n * Chacha20 CSPRNG (cryptographically secure pseudorandom number generator).\n * It's best to limit usage to non-production, non-critical cases: for example, test-only.\n * Compatible with libtomcrypt. It does not have a specification, so unclear how secure it is.\n * @param seed - Optional seed bytes mixed into the internal `key || nonce` state. When omitted,\n * only 32 random bytes are mixed into the 40-byte state.\n * @returns Seeded concrete `_XorStreamPRG` instance, including `clone()`.\n * @example\n * Seeds the test-only ChaCha20 DRBG from fresh entropy.\n *\n * ```ts\n * import { rngChacha20 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const prg = rngChacha20(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const rngChacha20 = /* @__PURE__ */ createPRG(chacha20orig, 64, 32, 8);\n/**\n * Chacha20/8 CSPRNG (cryptographically secure pseudorandom number generator).\n * It's best to limit usage to non-production, non-critical cases: for example, test-only.\n * Faster than `rngChacha20`.\n * @param seed - Optional seed bytes mixed into the internal `key || nonce` state. When omitted,\n * only 32 random bytes are mixed into the 44-byte state.\n * @returns Seeded concrete `_XorStreamPRG` instance, including `clone()`.\n * @example\n * Seeds the faster test-only ChaCha8 DRBG from fresh entropy.\n *\n * ```ts\n * import { rngChacha8 } from '@noble/ciphers/chacha.js';\n * import { randomBytes } from '@noble/ciphers/utils.js';\n * const seed = randomBytes(32);\n * const prg = rngChacha8(seed);\n * prg.randomBytes(8);\n * ```\n */\nexport const rngChacha8 = /* @__PURE__ */ createPRG(chacha8, 64, 32, 12);\n//# sourceMappingURL=chacha.js.map",
|
|
41
41
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// SPDX-License-Identifier: LicenseRef-QueryFarm-Source-Available-1.0\n\n// Catalog opaque-data AEAD envelopes.\n//\n// `attach_opaque_data` and `transaction_opaque_data` are implementation-chosen\n// byte strings the catalog returns and the client round-trips back. On HTTP\n// transport (where one worker authenticates many principals) the worker seals\n// each value in an authenticated-encrypted envelope whose AAD binds the\n// caller's (domain, principal); the transaction envelope additionally binds\n// its parent attach envelope. A value sealed for one principal — or one\n// attach — cannot be opened by another.\n//\n// Workers with no signing key (subprocess / unix transports) pass values\n// through unchanged, since OS process ownership already enforces identity.\n//\n// Wire format: version(1 byte) || nonce(24 bytes) || ciphertext+tag.\n// Matches vgi-python's vgi_rpc.crypto / vgi.worker and vgi-go's vgi/crypto.go.\n\nimport { xchacha20poly1305 } from \"@noble/ciphers/chacha.js\";\nimport type { AuthContext } from \"@query-farm/vgi-rpc\";\n\nconst _UTF8 = new TextEncoder();\n\n// v2: the inner attach plaintext is uuid(16) || catalog_bytes — catalog_attach\n// prepends a framework-minted 16-byte UUID that storage shards on. Bumped from\n// 1 so a stale v1 token (no uuid prefix) is cleanly rejected at open.\nexport const ATTACH_ENVELOPE_VERSION = 2;\nexport const TRANSACTION_ENVELOPE_VERSION = 2;\n\n/** Width of the framework UUID prepended to every attach plaintext. */\nexport const ATTACH_UUID_LEN = 16;\n\nconst NONCE_LEN = 24; // XChaCha20-Poly1305 nonce\nconst TAG_LEN = 16; // Poly1305 tag\nconst MIN_ENVELOPE_LEN = 1 + NONCE_LEN + TAG_LEN;\n\nconst ATTACH_AAD_PREFIX = _UTF8.encode(\"vgi.attach_opaque_data.v1\\0\");\nconst TRANSACTION_AAD_PREFIX = _UTF8.encode(\"vgi.transaction_opaque_data.v1\\0\");\n\n/**\n * Thrown when an envelope cannot be opened — wrong principal, wrong parent\n * attach, tampered, malformed, or simply unknown. Every failure mode maps to\n * this single error so a probing caller cannot distinguish them.\n */\nexport class OpaqueDataRejectedError extends Error {\n constructor(field = \"opaque data\") {\n super(`${field} not recognized`);\n this.name = \"OpaqueDataRejectedError\";\n }\n}\n\nfunction concat(...parts: Uint8Array[]): Uint8Array {\n let total = 0;\n for (const p of parts) total += p.length;\n const out = new Uint8Array(total);\n let off = 0;\n for (const p of parts) {\n out.set(p, off);\n off += p.length;\n }\n return out;\n}\n\n/**\n * Stretch/compress an operator-supplied key to the 32 bytes XChaCha20-Poly1305\n * requires. Exactly-32-byte keys pass through unchanged; any other length is\n * collapsed via SHA-256. Matches the vgi-python / vgi-go ports.\n */\nasync function normalizeKey(key: Uint8Array): Promise<Uint8Array> {\n if (key.length === 32) return key;\n return new Uint8Array(await crypto.subtle.digest(\"SHA-256\", key as BufferSource));\n}\n\n/**\n * Build the identity portion of an opaque-data AAD. Unauthenticated requests\n * get a fixed anonymous tail, so an anonymous caller cannot open an envelope\n * sealed for a real principal.\n */\nexport function identityTail(auth: AuthContext | undefined): Uint8Array {\n if (!auth || !auth.authenticated) return _UTF8.encode(\"\\0anonymous\");\n const domain = _UTF8.encode(auth.domain ?? \"\");\n const principal = _UTF8.encode(auth.principal ?? \"\");\n return concat(Uint8Array.of(0x01), domain, Uint8Array.of(0x00), principal);\n}\n\n/** AAD for an `attach_opaque_data` envelope: prefix + caller identity. */\nexport function attachAad(auth: AuthContext | undefined): Uint8Array {\n return concat(ATTACH_AAD_PREFIX, identityTail(auth));\n}\n\n/**\n * AAD for a `transaction_opaque_data` envelope. Binds both the caller identity\n * and the parent attach envelope, so a transaction value minted under one\n * attach cannot be replayed against a different attach even by the same\n * principal.\n */\nexport function transactionAad(\n auth: AuthContext | undefined,\n attachEnvelope: Uint8Array,\n): Uint8Array {\n return concat(TRANSACTION_AAD_PREFIX, identityTail(auth), Uint8Array.of(0x00), attachEnvelope);\n}\n\n/** Seal `payload` into an AEAD envelope: version || nonce || ciphertext+tag. */\nexport async function sealBytes(\n payload: Uint8Array,\n key: Uint8Array,\n aad: Uint8Array,\n version: number,\n): Promise<Uint8Array> {\n const nonce = crypto.getRandomValues(new Uint8Array(NONCE_LEN));\n const ciphertext = xchacha20poly1305(await normalizeKey(key), nonce, aad).encrypt(payload);\n const out = new Uint8Array(1 + NONCE_LEN + ciphertext.length);\n out[0] = version & 0xff;\n out.set(nonce, 1);\n out.set(ciphertext, 1 + NONCE_LEN);\n return out;\n}\n\n/**\n * Open and verify an envelope produced by {@link sealBytes}. Every failure\n * mode — malformed, wrong version, tampered, wrong key, wrong AAD\n * (cross-principal / cross-attach replay) — throws {@link OpaqueDataRejectedError}.\n */\nexport async function openBytes(\n token: Uint8Array,\n key: Uint8Array,\n aad: Uint8Array,\n version: number,\n field = \"opaque data\",\n): Promise<Uint8Array> {\n if (token.length < MIN_ENVELOPE_LEN || token[0] !== (version & 0xff)) {\n throw new OpaqueDataRejectedError(field);\n }\n const nonce = token.subarray(1, 1 + NONCE_LEN);\n const ciphertext = token.subarray(1 + NONCE_LEN);\n try {\n return xchacha20poly1305(await normalizeKey(key), nonce, aad).decrypt(ciphertext);\n } catch {\n throw new OpaqueDataRejectedError(field);\n }\n}\n",
|
|
42
42
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Shared param schemas and helpers for catalog protocol handlers.\n\nimport { type VgiSchema, schema, type VgiField, field, type VgiDataType, binary, utf8, bool, iterRows } from \"../../../arrow/index.js\";\nimport { Protocol, type AuthContext, type CallContext } from \"@query-farm/vgi-rpc\";\nimport type { CatalogInterface } from \"../../../catalog/interface.js\";\nimport { NoCatalogError } from \"../../../errors.js\";\nimport { deserializeBatch } from \"../../../util/arrow/index.js\";\nimport { toUint8Array } from \"../../../util/bytes.js\";\nimport {\n sealBytes,\n openBytes,\n attachAad,\n transactionAad,\n ATTACH_ENVELOPE_VERSION,\n ATTACH_UUID_LEN,\n TRANSACTION_ENVELOPE_VERSION,\n} from \"../../../crypto.js\";\n\nexport type GetCatalog = () => CatalogInterface;\n\n// ---------------------------------------------------------------------------\n// Catalog opaque-data AEAD sealing\n//\n// On HTTP transport (signingKey present) the worker seals attach_opaque_data\n// and transaction_opaque_data into AEAD envelopes bound to the caller's\n// identity. Subprocess / unix workers have no signing key — every helper is a\n// transparent pass-through. The catalog implementation always sees plaintext;\n// the client only ever sees sealed envelopes.\n// ---------------------------------------------------------------------------\n\n/**\n * Mint and seal a catalog_attach value: prepend a fresh framework UUID\n * (uuid(16) || catalog_bytes), then seal. Storage shards on the UUID — stable\n * across re-seals and globally unique, unlike the random-nonce ciphertext or\n * the (possibly non-unique) catalog bytes. openAttach strips the UUID back off\n * so the catalog only ever sees its own bytes. Mirrors vgi-python/-go.\n */\nexport async function sealAttach(\n plaintext: Uint8Array,\n auth: AuthContext | undefined,\n signingKey: Uint8Array | undefined,\n): Promise<Uint8Array> {\n const uuid = new Uint8Array(ATTACH_UUID_LEN);\n crypto.getRandomValues(uuid);\n const minted = new Uint8Array(ATTACH_UUID_LEN + plaintext.length);\n minted.set(uuid, 0);\n minted.set(plaintext, ATTACH_UUID_LEN);\n if (!signingKey) return minted;\n return sealBytes(minted, signingKey, attachAad(auth), ATTACH_ENVELOPE_VERSION);\n}\n\n/**\n * Open an attach envelope returning the FULL framework plaintext\n * uuid(16) || catalog_bytes (not stripped). Storage shards on the leading UUID.\n */\nexport async function openAttachFull(\n envelope: Uint8Array,\n auth: AuthContext | undefined,\n signingKey: Uint8Array | undefined,\n): Promise<Uint8Array> {\n if (!signingKey || envelope.length === 0) return envelope;\n return openBytes(envelope, signingKey, attachAad(auth), ATTACH_ENVELOPE_VERSION, \"attach_opaque_data\");\n}\n\n/**\n * Open an attach_opaque_data envelope, returning the catalog's own bytes — the\n * framework UUID prefix is stripped. This is what catalog/function bodies see;\n * storage routing uses openAttachFull / deriveShardKey to reach the UUID.\n */\nexport async function openAttach(\n envelope: Uint8Array,\n auth: AuthContext | undefined,\n signingKey: Uint8Array | undefined,\n): Promise<Uint8Array> {\n const full = await openAttachFull(envelope, auth, signingKey);\n return full.length < ATTACH_UUID_LEN ? full : full.subarray(ATTACH_UUID_LEN);\n}\n\n/** Hex of a byte array (lowercase). */\nfunction toHex(b: Uint8Array): string {\n let s = \"\";\n for (let i = 0; i < b.length; i++) s += b[i].toString(16).padStart(2, \"0\");\n return s;\n}\n\n/**\n * deriveShardKey returns the Cloudflare-DO routing key for an attach:\n * \"att-\" + hex(the 16-byte framework UUID at the head of the unwrapped attach).\n * One DO per logical ATTACH. Throws if the uuid is not 16 bytes (the storage\n * path is always bound to a logical ATTACH).\n */\nexport function deriveShardKey(attachUuid: Uint8Array): string {\n if (attachUuid.length !== ATTACH_UUID_LEN) {\n throw new Error(`shard_key requires a ${ATTACH_UUID_LEN}-byte attach uuid, got ${attachUuid.length}`);\n }\n return \"att-\" + toHex(attachUuid);\n}\n\n/**\n * shardKeyForAttach unwraps the sealed attach and derives its shard key. An\n * empty/absent attach yields \"\" (non-sharding backends ignore the key; the\n * CfDo backend rejects an empty key server-side, the \"must not happen\" case).\n */\nexport async function shardKeyForAttach(\n sealed: Uint8Array | undefined,\n auth: AuthContext | undefined,\n signingKey: Uint8Array | undefined,\n): Promise<string> {\n if (!sealed || sealed.length === 0) return \"\";\n const full = await openAttachFull(sealed, auth, signingKey);\n if (full.length < ATTACH_UUID_LEN) return \"\";\n return deriveShardKey(full.subarray(0, ATTACH_UUID_LEN));\n}\n\n/**\n * Seal a plaintext transaction value (catalog_transaction_begin output), bound\n * to the caller's identity and the parent attach envelope it was minted under.\n */\nexport async function sealTransaction(\n plaintext: Uint8Array,\n attachEnvelope: Uint8Array,\n auth: AuthContext | undefined,\n signingKey: Uint8Array | undefined,\n): Promise<Uint8Array> {\n if (!signingKey) return plaintext;\n return sealBytes(plaintext, signingKey, transactionAad(auth, attachEnvelope), TRANSACTION_ENVELOPE_VERSION);\n}\n\n/**\n * Unwrap the attach_opaque_data / transaction_opaque_data fields of a catalog\n * request in place, so handler bodies always see plaintext. The transaction\n * envelope is opened with the *sealed* attach value as part of its AAD, so it\n * stays bound to its parent attach. A no-op when there is no signing key.\n */\nasync function unwrapParamsOpaque(\n params: Record<string, any>,\n ctx: CallContext | undefined,\n signingKey: Uint8Array | undefined,\n): Promise<void> {\n const auth = ctx?.auth;\n let sealedAttach: Uint8Array = new Uint8Array(0);\n if (params.attach_opaque_data != null) {\n const env = toUint8Array(params.attach_opaque_data);\n if (env.length > 0) {\n sealedAttach = env;\n // The framework mints every attach as uuid(16) || catalog_bytes —\n // sealed on HTTP, plaintext on subprocess/unix (sealAttach prepends the\n // UUID regardless of transport). Catalog handlers — including\n // CompositeCatalog's route-byte at byte 0 of catalog_bytes — must see\n // the catalog's own bytes, so open the envelope when sealed, then strip\n // the framework UUID prefix on EVERY transport, not just HTTP.\n const full = signingKey\n ? await openBytes(env, signingKey, attachAad(auth), ATTACH_ENVELOPE_VERSION, \"attach_opaque_data\")\n : env;\n params.attach_opaque_data = full.length < ATTACH_UUID_LEN ? full : full.subarray(ATTACH_UUID_LEN);\n }\n }\n // transaction_opaque_data is sealed only on HTTP (no UUID prefix); subprocess\n // values are raw plaintext and pass through untouched.\n if (signingKey && params.transaction_opaque_data != null) {\n const env = toUint8Array(params.transaction_opaque_data);\n if (env.length > 0) {\n params.transaction_opaque_data = await openBytes(\n env,\n signingKey,\n transactionAad(auth, sealedAttach),\n TRANSACTION_ENVELOPE_VERSION,\n \"transaction_opaque_data\",\n );\n }\n }\n}\n\n/**\n * Register a catalog unary handler whose request opaque-data fields are\n * unwrapped before the handler body runs. Used for every catalog_* method\n * except catalog_attach / catalog_transaction_begin, which seal their outputs\n * and are registered bespoke.\n */\nexport function catalogUnary(\n protocol: Protocol,\n signingKey: Uint8Array | undefined,\n name: string,\n config: {\n params: unknown;\n result: unknown;\n handler: (params: Record<string, any>, ctx: CallContext) => unknown;\n doc?: string;\n },\n): void {\n protocol.unary(name, {\n params: config.params as any,\n result: config.result as any,\n doc: config.doc,\n handler: async (params: Record<string, any>, ctx: any) => {\n await unwrapParamsOpaque(params, ctx, signingKey);\n return config.handler(params, ctx);\n },\n });\n}\n\nexport function makeGetCatalog(catalog: CatalogInterface | undefined): GetCatalog {\n return () => {\n if (!catalog) throw new NoCatalogError();\n return catalog;\n };\n}\n\n/**\n * Decode the `options` field of a catalog_attach request into a plain\n * {name: value} dict. The wire field is either null (no options) or an\n * IPC-serialized RecordBatch of typed columns — one column per option,\n * one row with the value. Returns `{}` for null / empty input.\n */\nexport function decodeOptionsBatch(bytes: any): Record<string, unknown> {\n if (bytes == null) return {};\n const buf = toUint8Array(bytes);\n if (buf.byteLength === 0) return {};\n const batch = deserializeBatch(buf);\n if (batch.numRows === 0) return {};\n // Decode the single row through the codec path (iterRows yields RICH values):\n // date columns come back as JS Date, temporal types as bigint, etc. — the\n // same representation a producer would feed back into batchFromColumns. The\n // old `Math.floor(ms / 86_400_000)` date32 hack is gone; the codec owns it.\n const row = iterRows(batch).next().value as Record<string, unknown> | undefined;\n return row ?? {};\n}\n\n// ---------------------------------------------------------------------------\n// Common param schemas\n// ---------------------------------------------------------------------------\n\nexport const emptyResultSchema = schema([]);\n\nexport const attachOpaqueDataParam = schema([\n field(\"attach_opaque_data\", binary(), true),\n]);\n\nexport const attachOpaqueDataTxnParams = schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\nexport const attachOpaqueDataNameTxnParams = schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\nexport const attachOpaqueDataSchemaNameTxnParams = schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\nexport const schemaNameIgnoreNotFoundTxnParams = schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\nexport const schemaNameCommentParams = schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"comment\", utf8(), true),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\nexport const schemaNameRenameParams = schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"new_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n\nexport const columnOpParams = schema([\n field(\"attach_opaque_data\", binary(), true),\n field(\"schema_name\", utf8(), false),\n field(\"name\", utf8(), false),\n field(\"column_name\", utf8(), false),\n field(\"ignore_not_found\", bool(), true),\n field(\"transaction_opaque_data\", binary(), true),\n]);\n",
|
|
43
|
-
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Handlers for the per-function lifecycle: bind, init (exchange), cardinality,\n// statistics. Generic over scalar/table/table-in-out — each function kind\n// implements VgiFunction.bind/globalInit/createStreamHandlers.\n\nimport { type VgiSchema, schema, type VgiField, field, type VgiDataType, binary, int64 } from \"../../arrow/index.js\";\nimport { Protocol } from \"@query-farm/vgi-rpc\";\nimport type { FunctionRegistry } from \"../../functions/registry.js\";\nimport type { StreamHandlers, HandlerState } from \"../../functions/types.js\";\nimport {\n deserializeBindRequest,\n serializeBindResponse,\n deserializeInitRequest,\n serializeGlobalInitResponse,\n deserializeCardinalityRequest,\n serializeTableCardinality,\n} from \"../serialize.js\";\nimport type { GlobalInitResponse } from \"../types.js\";\nimport { batchToScalarDict, deserializeBatch } from \"../../util/arrow/index.js\";\nimport { toUint8Array } from \"../../util/bytes.js\";\nimport { serializeColumnStatistics } from \"../../util/statistics.js\";\nimport { BindResultSchema, TableFunctionCardinalityResultSchema, TableFunctionDynamicToStringResultSchema } from \"../../generated/vgi-protocol-schemas.js\";\nimport {\n REQUEST_PARAMS_SCHEMA,\n RESULT_BINARY_SCHEMA,\n RESULT_BINARY_NULLABLE_SCHEMA,\n unwrapRequest,\n wrapResult,\n overloadContext,\n recoverFinalizeState,\n} from \"./shared.js\";\nimport { openAttach } from \"./catalog/shared.js\";\n\nexport interface FunctionHandlerConfig {\n registry: FunctionRegistry;\n recoverExchangeState?: (opaqueData: Uint8Array) => any;\n signingKey?: Uint8Array;\n}\n\nexport function registerFunctionMethods(protocol: Protocol, config: FunctionHandlerConfig): void {\n const { registry, signingKey } = config;\n\n // The framework mints every attach as uuid(16) || catalog_bytes (sealed on\n // HTTP, plaintext on subprocess). Function bodies — like catalog bodies —\n // must see the catalog's own bytes, so unseal (when keyed) and strip the\n // framework UUID prefix before the user function reads attach_opaque_data.\n async function stripAttach(attach: any, ctx: any): Promise<Uint8Array | null> {\n if (attach == null) return null;\n const env = toUint8Array(attach);\n if (env.length === 0) return env;\n return openAttach(env, ctx?.auth, signingKey);\n }\n\n const initHeaderSchema = schema([\n field(\"execution_id\", binary(), false),\n field(\"opaque_data\", binary(), true),\n field(\"max_workers\", int64(), false),\n ]);\n\n const emptySchema = schema([]);\n\n // Dummy non-empty schema for the init exchange registration.\n // The dispatch determines producer vs exchange based on inputSchema emptiness.\n // We need exchange mode so that input batches are passed to our callback.\n // The actual input schema comes from the IPC stream, not this registration.\n const dummyInputSchema = schema([\n field(\"_tick\", binary(), true),\n ]);\n\n // --------------------------------------------------------------------------\n // bind (unary)\n // --------------------------------------------------------------------------\n protocol.unary(\"bind\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params, ctx) => {\n const innerParams = unwrapRequest(params.request);\n const request = deserializeBindRequest(innerParams);\n request.attach_opaque_data = await stripAttach(request.attach_opaque_data, ctx);\n const func = registry.get(request.function_name, overloadContext(request));\n const response = await func.bind(request);\n const serialized = serializeBindResponse(response);\n return wrapResult(serialized, BindResultSchema);\n },\n });\n\n // --------------------------------------------------------------------------\n // init (streaming) - dynamically produces either producer or exchange streams\n // --------------------------------------------------------------------------\n protocol.exchange(\"init\", {\n params: REQUEST_PARAMS_SCHEMA,\n inputSchema: dummyInputSchema,\n outputSchema: emptySchema,\n init: async (params) => {\n // Preserve raw request IPC bytes for exchange reconstruction\n const requestIpcBytes = toUint8Array(params.request);\n const innerParams = unwrapRequest(params.request);\n const request = deserializeInitRequest(innerParams);\n // Exchange init has no ctx; on subprocess (no signing key) openAttach is a\n // pass-through strip that needs no auth. HTTP carries auth via the bind path.\n request.bind_call.attach_opaque_data = await stripAttach(request.bind_call.attach_opaque_data, undefined);\n const func = registry.get(request.bind_call.function_name, overloadContext(request.bind_call));\n\n // globalInit is async — table function onInit may touch HTTP-backed\n // FunctionStorage (e.g. Cloudflare DO).\n const initResponse = await func.globalInit(request);\n\n // For FINALIZE over HTTP, recover accumulated INPUT state from init_opaque_data.\n // The C++ extension passes the last exchange state token as init_opaque_data.\n const accumulatedState = recoverFinalizeState(request, config.recoverExchangeState);\n\n const handlers = func.createStreamHandlers(request, initResponse, accumulatedState);\n\n // Initialize the appropriate handler\n let handlerState: HandlerState | undefined;\n if (handlers.producerInit) {\n handlerState = handlers.producerInit();\n } else if (handlers.exchangeInit) {\n handlerState = handlers.exchangeInit();\n }\n\n const isProducer = !!handlers.producerFn;\n\n // Extract mutable user state from handler (e.g. { remaining, currentIndex })\n // for serialization across HTTP exchanges. The processParams/infrastructure\n // is reconstructed fresh; only user state needs to persist.\n const userState = handlerState?.state ?? null;\n\n // Build state object with raw binary data (no base64/hex encoding).\n // The Arrow state serializer picks fields by name; live objects\n // (_handlers, _handlerState, _initResponse, __outputSchema) are ignored.\n const state: any = {\n functionName: request.bind_call.function_name,\n initRequestIpc: requestIpcBytes,\n executionId: initResponse.execution_id,\n maxWorkers: Number(initResponse.max_workers),\n opaqueData: initResponse.opaque_data ?? null,\n isProducer,\n userState,\n __isProducer: isProducer,\n // Live Schemas for vgi-rpc to read during init (not serializable).\n // __inputSchema overrides dispatchStream's method.inputSchema per call\n // — the TS worker registers `init` as exchange with the permissive\n // `dummyInputSchema` sentinel; the real per-function input shape comes\n // from the bound handlers here.\n __outputSchema: handlers.outputSchema ?? emptySchema,\n __inputSchema: handlers.inputSchema ?? emptySchema,\n // Live objects for immediate use during init (producer mode).\n _handlers: handlers,\n _handlerState: handlerState,\n _initResponse: initResponse,\n };\n return state;\n },\n exchange: async (state, input, out) => {\n // Reconstruct live objects from serializable state.\n // This handles both immediate use (producer during init, where _handlers\n // is still present) and deserialized exchange (where we reconstruct).\n let handlers: StreamHandlers;\n let handlerState: HandlerState | undefined;\n\n if (state._handlers) {\n // Immediate use (same request, state still in memory)\n handlers = state._handlers;\n handlerState = state._handlerState;\n } else {\n // Deserialized from token — reconstruct from serializable refs.\n // Infrastructure (processParams, BoundStorage) is recreated fresh.\n // Mutable user state is merged from state.userState.\n const initRequestBatch = deserializeBatch(state.initRequestIpc);\n const initRequestDict = batchToScalarDict(initRequestBatch);\n const request = deserializeInitRequest(initRequestDict);\n const func = registry.get(state.functionName, overloadContext(request.bind_call));\n const executionId = state.executionId;\n const opaqueData = state.opaqueData ?? null;\n const initResponse: GlobalInitResponse = {\n execution_id: executionId,\n max_workers: Number(state.maxWorkers ?? 1),\n opaque_data: opaqueData,\n };\n\n // Recover accumulated state for FINALIZE phase from initOpaqueData\n const recoveredState = recoverFinalizeState(request, config.recoverExchangeState);\n\n handlers = func.createStreamHandlers(request, initResponse, recoveredState);\n if (handlers.producerInit) {\n handlerState = handlers.producerInit();\n } else if (handlers.exchangeInit) {\n handlerState = handlers.exchangeInit();\n }\n // Merge preserved user state (e.g. { remaining, currentIndex })\n if (state.userState != null && handlerState?.state !== undefined) {\n handlerState!.state = state.userState;\n }\n }\n\n if (state.isProducer && handlers.producerFn) {\n // Producer mode inside an exchange dispatch: patch finish() to bypass\n // OutputCollector's producerMode check (since dispatch created it\n // in exchange mode but we're actually producing).\n out.finish = () => { (out as any)._finished = true; };\n // Let the handler observe tick-batch metadata before producing. Used\n // by table functions to apply dynamic-filter updates DuckDB attaches\n // as `vgi_pushdown_filters` on each tick (Top-N heap tightening).\n if (handlers.onTick) {\n await handlers.onTick(handlerState, (input as any)?.metadata);\n }\n await handlers.producerFn(handlerState, out);\n } else if (handlers.exchangeFn) {\n await handlers.exchangeFn(handlerState, input, out);\n }\n\n // Save mutated user state for the next exchange round\n if (handlerState?.state !== undefined) {\n state.userState = handlerState!.state;\n }\n },\n headerSchema: initHeaderSchema,\n headerInit: (params: any, state: any, ctx: any) => {\n // During init, _initResponse is still in memory.\n // For exchange, this is never called (headers are only in init response).\n if (!state._initResponse) {\n throw new Error(\"headerInit called on deserialized state: _initResponse not available\");\n }\n return serializeGlobalInitResponse(state._initResponse);\n },\n });\n\n // --------------------------------------------------------------------------\n // table_function_cardinality (unary)\n // --------------------------------------------------------------------------\n protocol.unary(\"table_function_cardinality\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const innerParams = unwrapRequest(params.request);\n const request = deserializeCardinalityRequest(innerParams);\n const func = registry.get(request.bind_call.function_name, overloadContext(request.bind_call));\n let cardResult: Record<string, any>;\n if (func.cardinality) {\n cardResult = serializeTableCardinality(await func.cardinality(request));\n } else {\n cardResult = { estimate: null, max: null };\n }\n return wrapResult(cardResult, TableFunctionCardinalityResultSchema);\n },\n });\n\n // --------------------------------------------------------------------------\n // table_function_statistics (unary)\n // --------------------------------------------------------------------------\n // Returns bytes-or-null result: serialized ColumnStatistics RecordBatch when\n // the function declared a statistics() hook and it produced a non-empty\n // list, else null. DuckDB uses the bounds for plan-time filter elimination\n // (folds impossible filters to EMPTY_RESULT).\n protocol.unary(\"table_function_statistics\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_NULLABLE_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const request = deserializeCardinalityRequest(innerParams);\n const func = registry.get(request.bind_call.function_name, overloadContext(request.bind_call));\n if (!func.statistics) return { result: null };\n const stats = func.statistics(request);\n if (!stats || stats.length === 0) return { result: null };\n return { result: serializeColumnStatistics(stats) };\n },\n });\n\n // --------------------------------------------------------------------------\n // table_function_dynamic_to_string (unary)\n // --------------------------------------------------------------------------\n // DuckDB calls this once per parallel scan thread at FinishSource. The\n // result is a List<Utf8>/List<Utf8> pair carrying ordered key→value\n // diagnostics that surface under EXPLAIN ANALYZE alongside the\n // intrinsics (Function, Rows Read, Threads). When the function doesn't\n // declare dynamicToString, return empty maps so the C++ side falls back\n // to intrinsics only.\n protocol.unary(\"table_function_dynamic_to_string\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const innerParams = unwrapRequest(params.request);\n const bindCallBytes = toUint8Array(innerParams.bind_call);\n const bindCallBatch = deserializeBatch(bindCallBytes);\n // Single-row bind_call batch -> dict via the codec/canonical path.\n const bindParams = batchToScalarDict(bindCallBatch);\n const bindCall = deserializeBindRequest(bindParams);\n const globalExecutionId = toUint8Array(innerParams.global_execution_id);\n const bindOpaqueData = innerParams.bind_opaque_data\n ? toUint8Array(innerParams.bind_opaque_data)\n : null;\n const func = registry.get(bindCall.function_name, overloadContext(bindCall));\n const map = func.dynamicToString\n ? await func.dynamicToString({ bindCall, bindOpaqueData, globalExecutionId })\n : {};\n const keys = Object.keys(map);\n const values = keys.map((k) => map[k] ?? \"\");\n return wrapResult({ keys, values }, TableFunctionDynamicToStringResultSchema);\n },\n });\n}\n",
|
|
43
|
+
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Handlers for the per-function lifecycle: bind, init (exchange), cardinality,\n// statistics. Generic over scalar/table/table-in-out — each function kind\n// implements VgiFunction.bind/globalInit/createStreamHandlers.\n\nimport { type VgiSchema, schema, type VgiField, field, type VgiDataType, binary, int64 } from \"../../arrow/index.js\";\nimport { Protocol } from \"@query-farm/vgi-rpc\";\nimport type { FunctionRegistry } from \"../../functions/registry.js\";\nimport type { StreamHandlers, HandlerState } from \"../../functions/types.js\";\nimport {\n deserializeBindRequest,\n serializeBindResponse,\n deserializeInitRequest,\n serializeGlobalInitResponse,\n deserializeCardinalityRequest,\n serializeTableCardinality,\n} from \"../serialize.js\";\nimport type { GlobalInitResponse } from \"../types.js\";\nimport { batchToScalarDict, deserializeBatch, adoptArrowJsShape } from \"../../util/arrow/index.js\";\nimport { toUint8Array } from \"../../util/bytes.js\";\nimport { serializeColumnStatistics } from \"../../util/statistics.js\";\nimport { BindResultSchema, TableFunctionCardinalityResultSchema, TableFunctionDynamicToStringResultSchema } from \"../../generated/vgi-protocol-schemas.js\";\nimport {\n REQUEST_PARAMS_SCHEMA,\n RESULT_BINARY_SCHEMA,\n RESULT_BINARY_NULLABLE_SCHEMA,\n unwrapRequest,\n wrapResult,\n overloadContext,\n recoverFinalizeState,\n} from \"./shared.js\";\nimport { openAttach } from \"./catalog/shared.js\";\n\nexport interface FunctionHandlerConfig {\n registry: FunctionRegistry;\n recoverExchangeState?: (opaqueData: Uint8Array) => any;\n signingKey?: Uint8Array;\n}\n\nexport function registerFunctionMethods(protocol: Protocol, config: FunctionHandlerConfig): void {\n const { registry, signingKey } = config;\n\n // The framework mints every attach as uuid(16) || catalog_bytes (sealed on\n // HTTP, plaintext on subprocess). Function bodies — like catalog bodies —\n // must see the catalog's own bytes, so unseal (when keyed) and strip the\n // framework UUID prefix before the user function reads attach_opaque_data.\n async function stripAttach(attach: any, ctx: any): Promise<Uint8Array | null> {\n if (attach == null) return null;\n const env = toUint8Array(attach);\n if (env.length === 0) return env;\n return openAttach(env, ctx?.auth, signingKey);\n }\n\n const initHeaderSchema = schema([\n field(\"execution_id\", binary(), false),\n field(\"opaque_data\", binary(), true),\n field(\"max_workers\", int64(), false),\n ]);\n\n const emptySchema = schema([]);\n\n // Dummy non-empty schema for the init exchange registration.\n // The dispatch determines producer vs exchange based on inputSchema emptiness.\n // We need exchange mode so that input batches are passed to our callback.\n // The actual input schema comes from the IPC stream, not this registration.\n const dummyInputSchema = schema([\n field(\"_tick\", binary(), true),\n ]);\n\n // --------------------------------------------------------------------------\n // bind (unary)\n // --------------------------------------------------------------------------\n protocol.unary(\"bind\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params, ctx) => {\n const innerParams = unwrapRequest(params.request);\n const request = deserializeBindRequest(innerParams);\n request.attach_opaque_data = await stripAttach(request.attach_opaque_data, ctx);\n const func = registry.get(request.function_name, overloadContext(request));\n const response = await func.bind(request);\n const serialized = serializeBindResponse(response);\n return wrapResult(serialized, BindResultSchema);\n },\n });\n\n // --------------------------------------------------------------------------\n // init (streaming) - dynamically produces either producer or exchange streams\n // --------------------------------------------------------------------------\n protocol.exchange(\"init\", {\n params: REQUEST_PARAMS_SCHEMA,\n inputSchema: dummyInputSchema,\n outputSchema: emptySchema,\n init: async (params) => {\n // Preserve raw request IPC bytes for exchange reconstruction\n const requestIpcBytes = toUint8Array(params.request);\n const innerParams = unwrapRequest(params.request);\n const request = deserializeInitRequest(innerParams);\n // Exchange init has no ctx; on subprocess (no signing key) openAttach is a\n // pass-through strip that needs no auth. HTTP carries auth via the bind path.\n request.bind_call.attach_opaque_data = await stripAttach(request.bind_call.attach_opaque_data, undefined);\n const func = registry.get(request.bind_call.function_name, overloadContext(request.bind_call));\n\n // globalInit is async — table function onInit may touch HTTP-backed\n // FunctionStorage (e.g. Cloudflare DO).\n const initResponse = await func.globalInit(request);\n\n // For FINALIZE over HTTP, recover accumulated INPUT state from init_opaque_data.\n // The C++ extension passes the last exchange state token as init_opaque_data.\n const accumulatedState = recoverFinalizeState(request, config.recoverExchangeState);\n\n const handlers = func.createStreamHandlers(request, initResponse, accumulatedState);\n\n // Initialize the appropriate handler\n let handlerState: HandlerState | undefined;\n if (handlers.producerInit) {\n handlerState = handlers.producerInit();\n } else if (handlers.exchangeInit) {\n handlerState = handlers.exchangeInit();\n }\n\n const isProducer = !!handlers.producerFn;\n\n // Extract mutable user state from handler (e.g. { remaining, currentIndex })\n // for serialization across HTTP exchanges. The processParams/infrastructure\n // is reconstructed fresh; only user state needs to persist.\n const userState = handlerState?.state ?? null;\n\n // Build state object with raw binary data (no base64/hex encoding).\n // The Arrow state serializer picks fields by name; live objects\n // (_handlers, _handlerState, _initResponse, __outputSchema) are ignored.\n const state: any = {\n functionName: request.bind_call.function_name,\n initRequestIpc: requestIpcBytes,\n executionId: initResponse.execution_id,\n maxWorkers: Number(initResponse.max_workers),\n opaqueData: initResponse.opaque_data ?? null,\n isProducer,\n userState,\n __isProducer: isProducer,\n // Live Schemas for vgi-rpc to read during init (not serializable).\n // __inputSchema overrides dispatchStream's method.inputSchema per call\n // — the TS worker registers `init` as exchange with the permissive\n // `dummyInputSchema` sentinel; the real per-function input shape comes\n // from the bound handlers here.\n __outputSchema: handlers.outputSchema ?? emptySchema,\n __inputSchema: handlers.inputSchema ?? emptySchema,\n // Live objects for immediate use during init (producer mode).\n _handlers: handlers,\n _handlerState: handlerState,\n _initResponse: initResponse,\n };\n return state;\n },\n exchange: async (state, input, out) => {\n // `input` is the one batch worker code sees that this package did not\n // decode — vgi-rpc read it off the wire with its own Arrow backend. If\n // that resolved to a second copy of @query-farm/flechette (nested under\n // vgi-rpc whenever the version ranges disagree, even transiently), the\n // facade's prototype patches never touched its classes and user code\n // gets `col.isValid is not a function` on the first exchange round.\n // Adopting here is a WeakSet probe per call and a no-op on arrow-js.\n input = adoptArrowJsShape(input);\n // Reconstruct live objects from serializable state.\n // This handles both immediate use (producer during init, where _handlers\n // is still present) and deserialized exchange (where we reconstruct).\n let handlers: StreamHandlers;\n let handlerState: HandlerState | undefined;\n\n if (state._handlers) {\n // Immediate use (same request, state still in memory)\n handlers = state._handlers;\n handlerState = state._handlerState;\n } else {\n // Deserialized from token — reconstruct from serializable refs.\n // Infrastructure (processParams, BoundStorage) is recreated fresh.\n // Mutable user state is merged from state.userState.\n const initRequestBatch = deserializeBatch(state.initRequestIpc);\n const initRequestDict = batchToScalarDict(initRequestBatch);\n const request = deserializeInitRequest(initRequestDict);\n const func = registry.get(state.functionName, overloadContext(request.bind_call));\n const executionId = state.executionId;\n const opaqueData = state.opaqueData ?? null;\n const initResponse: GlobalInitResponse = {\n execution_id: executionId,\n max_workers: Number(state.maxWorkers ?? 1),\n opaque_data: opaqueData,\n };\n\n // Recover accumulated state for FINALIZE phase from initOpaqueData\n const recoveredState = recoverFinalizeState(request, config.recoverExchangeState);\n\n handlers = func.createStreamHandlers(request, initResponse, recoveredState);\n if (handlers.producerInit) {\n handlerState = handlers.producerInit();\n } else if (handlers.exchangeInit) {\n handlerState = handlers.exchangeInit();\n }\n // Merge preserved user state (e.g. { remaining, currentIndex })\n if (state.userState != null && handlerState?.state !== undefined) {\n handlerState!.state = state.userState;\n }\n }\n\n if (state.isProducer && handlers.producerFn) {\n // Producer mode inside an exchange dispatch: patch finish() to bypass\n // OutputCollector's producerMode check (since dispatch created it\n // in exchange mode but we're actually producing).\n out.finish = () => { (out as any)._finished = true; };\n // Let the handler observe tick-batch metadata before producing. Used\n // by table functions to apply dynamic-filter updates DuckDB attaches\n // as `vgi_pushdown_filters` on each tick (Top-N heap tightening).\n if (handlers.onTick) {\n await handlers.onTick(handlerState, (input as any)?.metadata);\n }\n await handlers.producerFn(handlerState, out);\n } else if (handlers.exchangeFn) {\n await handlers.exchangeFn(handlerState, input, out);\n }\n\n // Save mutated user state for the next exchange round\n if (handlerState?.state !== undefined) {\n state.userState = handlerState!.state;\n }\n },\n headerSchema: initHeaderSchema,\n headerInit: (params: any, state: any, ctx: any) => {\n // During init, _initResponse is still in memory.\n // For exchange, this is never called (headers are only in init response).\n if (!state._initResponse) {\n throw new Error(\"headerInit called on deserialized state: _initResponse not available\");\n }\n return serializeGlobalInitResponse(state._initResponse);\n },\n });\n\n // --------------------------------------------------------------------------\n // table_function_cardinality (unary)\n // --------------------------------------------------------------------------\n protocol.unary(\"table_function_cardinality\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const innerParams = unwrapRequest(params.request);\n const request = deserializeCardinalityRequest(innerParams);\n const func = registry.get(request.bind_call.function_name, overloadContext(request.bind_call));\n let cardResult: Record<string, any>;\n if (func.cardinality) {\n cardResult = serializeTableCardinality(await func.cardinality(request));\n } else {\n cardResult = { estimate: null, max: null };\n }\n return wrapResult(cardResult, TableFunctionCardinalityResultSchema);\n },\n });\n\n // --------------------------------------------------------------------------\n // table_function_statistics (unary)\n // --------------------------------------------------------------------------\n // Returns bytes-or-null result: serialized ColumnStatistics RecordBatch when\n // the function declared a statistics() hook and it produced a non-empty\n // list, else null. DuckDB uses the bounds for plan-time filter elimination\n // (folds impossible filters to EMPTY_RESULT).\n protocol.unary(\"table_function_statistics\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_NULLABLE_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const request = deserializeCardinalityRequest(innerParams);\n const func = registry.get(request.bind_call.function_name, overloadContext(request.bind_call));\n if (!func.statistics) return { result: null };\n const stats = func.statistics(request);\n if (!stats || stats.length === 0) return { result: null };\n return { result: serializeColumnStatistics(stats) };\n },\n });\n\n // --------------------------------------------------------------------------\n // table_function_dynamic_to_string (unary)\n // --------------------------------------------------------------------------\n // DuckDB calls this once per parallel scan thread at FinishSource. The\n // result is a List<Utf8>/List<Utf8> pair carrying ordered key→value\n // diagnostics that surface under EXPLAIN ANALYZE alongside the\n // intrinsics (Function, Rows Read, Threads). When the function doesn't\n // declare dynamicToString, return empty maps so the C++ side falls back\n // to intrinsics only.\n protocol.unary(\"table_function_dynamic_to_string\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const innerParams = unwrapRequest(params.request);\n const bindCallBytes = toUint8Array(innerParams.bind_call);\n const bindCallBatch = deserializeBatch(bindCallBytes);\n // Single-row bind_call batch -> dict via the codec/canonical path.\n const bindParams = batchToScalarDict(bindCallBatch);\n const bindCall = deserializeBindRequest(bindParams);\n const globalExecutionId = toUint8Array(innerParams.global_execution_id);\n const bindOpaqueData = innerParams.bind_opaque_data\n ? toUint8Array(innerParams.bind_opaque_data)\n : null;\n const func = registry.get(bindCall.function_name, overloadContext(bindCall));\n const map = func.dynamicToString\n ? await func.dynamicToString({ bindCall, bindOpaqueData, globalExecutionId })\n : {};\n const keys = Object.keys(map);\n const values = keys.map((k) => map[k] ?? \"\");\n return wrapResult({ keys, values }, TableFunctionDynamicToStringResultSchema);\n },\n });\n}\n",
|
|
44
44
|
"// 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). Mirrors Python's `_constraint_kwargs`.\n */\nexport function constraintSpecFields(\n constraints: ArgumentConstraints | undefined,\n): Pick<ArgumentSpec, \"defaultJson\" | \"choicesJson\" | \"rangeNotation\" | \"pattern\"> {\n const fields: Pick<\n ArgumentSpec,\n \"defaultJson\" | \"choicesJson\" | \"rangeNotation\" | \"pattern\"\n > = {};\n if (constraints === undefined) return fields;\n\n if (\"default\" in constraints && constraints.default !== undefined) {\n fields.defaultJson = safeJson(constraints.default);\n }\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 * 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",
|
|
45
45
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Aggregate function framework — mirrors vgi-python's vgi/aggregate_function.py\n// protocol at the wire level. Per-execution state lives in an in-memory store\n// keyed by (execution_id, group_id); fine for subprocess workers and for\n// single-instance HTTP. Multi-host HTTP deployments would need a pluggable\n// state backend (same tradeoff Python's FunctionStorage wraps).\n//\n// DuckDB drives the lifecycle via five unary RPCs:\n//\n// aggregate_bind → resolve output schema + allocate execution_id\n// aggregate_update → fold rows into per-group state\n// aggregate_combine → merge parallel-build states\n// aggregate_finalize → emit one result row per group_id\n// aggregate_destructor → free states (best-effort; see Python worker.py)\n\nimport { type VgiSchema, schema, type VgiField, field, type VgiBatch, type VgiDataType, nullType, isNull } from \"../arrow/index.js\";\nimport type { Arguments } from \"../arguments/arguments.js\";\nimport {\n constraintSpecFields,\n type ArgumentSpec,\n type ArgumentConstraints,\n} from \"../arguments/argument-spec.js\";\nimport type {\n FunctionMeta,\n VgiFunction,\n} from \"./types.js\";\nimport { DEFAULT_MAX_WORKERS } from \"../types.js\";\nimport type { FunctionExample } from \"./types.js\";\n// Aggregate state persistence uses node:fs/path/os to spill per-group state to\n// disk under VGI_AGG_STATE_DIR. Workers (Cloudflare workerd / browsers)\n// don't define aggregate functions in the first place, so we resolve the\n// node:* modules through indirect string variables that esbuild can't trace.\n// The bundle stays clean even without nodejs_compat polyfills.\nconst _NODE_FS_MOD = \"node:fs\";\nconst _NODE_PATH_MOD = \"node:path\";\nconst _NODE_OS_MOD = \"node:os\";\nfunction _aggReq(): any {\n const req: any = (import.meta as any).require ?? (globalThis as any).require ?? null;\n if (!req) {\n throw new Error(\n \"Aggregate state persistence requires Node.js or Bun (node:fs/path/os).\",\n );\n }\n return req;\n}\nconst fs: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_FS_MOD) as any)[prop],\n});\nconst path: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_PATH_MOD) as any)[prop],\n});\nconst os: any = new Proxy({} as any, {\n get: (_t, prop) => (_aggReq()(_NODE_OS_MOD) as any)[prop],\n});\n\n// Column name DuckDB prepends to every aggregate_update batch. One entry per\n// input row; the value identifies which group the row belongs to.\nexport const GROUP_COLUMN_NAME = \"__vgi_group_id\";\n\nexport interface AggregateBindParams<TArgs = Record<string, any>> {\n args: TArgs;\n arguments: Arguments;\n inputSchema: VgiSchema | null;\n settings: Record<string, any>;\n secrets: Record<string, Record<string, any>>;\n}\n\nexport interface AggregateUpdateParams<TArgs = Record<string, any>, TState = any> {\n states: Map<bigint, TState>;\n groupIds: bigint[];\n columns: any[]; // arrow Vectors per declared param\n args: TArgs;\n /**\n * Get-or-initialize accessor for per-group state. Call this inside the loop\n * only when the row actually contributes to the aggregate — skipping it\n * (e.g. on NULL input under NullHandling.DEFAULT) leaves `states` without\n * an entry for the group, so finalize() can return SQL NULL for that\n * group (matches vgi-python's \"state absent = NULL\" semantics for\n * SUM/AVG/MIN/MAX over zero non-null rows).\n */\n ensureState: (gid: bigint) => TState;\n}\n\nexport interface AggregateFinalizeParams<TArgs = Record<string, any>, TState = any> {\n groupIds: bigint[];\n states: Map<bigint, TState | null>;\n outputSchema: VgiSchema;\n args: TArgs;\n}\n\nexport interface AggregateFunctionConfig<TArgs = Record<string, any>, TState = any> {\n name: string;\n description?: string;\n /**\n * Map of positional argument name → Arrow type. Passed through to DuckDB\n * function registration. Use `null` (untyped) for varargs placeholders.\n */\n args?: Record<string, VgiDataType>;\n /**\n * Names of args that accept a variable number of column arguments. DuckDB\n * treats these as varargs of the declared Arrow type; at call time the\n * function may receive 1..N columns of that type. update() sees all of\n * them as consecutive entries in `columns`.\n */\n varargs?: string[];\n /**\n * Names of args whose value is constant (known at bind time) and must be\n * folded away by DuckDB before reaching update(). The value arrives in\n * `bindParams.args[name]`; it is NOT passed as an input column in the\n * update batch. Use for aggregates parameterized by a literal (e.g.\n * percentile=0.5 in vgi_percentile).\n */\n constParams?: string[];\n /**\n * Arrow type of the aggregate's output (one value per group). DuckDB uses\n * this to build the result column type at bind time. May be overridden\n * at bind time by `onBind` (returning a different Arrow type) for\n * aggregates whose return type depends on the input column type\n * (e.g. vgi_generic_sum: BIGINT input → BIGINT output, DOUBLE → DOUBLE).\n */\n outputType: VgiDataType;\n /**\n * Optional bind-time hook for dynamic output types. Receives the bind\n * parameters (including input_schema) and returns the Arrow type to\n * advertise for this invocation. Defaults to returning `config.outputType`.\n */\n onBind?: (params: AggregateBindParams<TArgs>) => VgiDataType | Promise<VgiDataType>;\n /** Optional per-arg default values (positional only here). */\n argDefaults?: Record<string, any>;\n /**\n * Per-argument discovery constraints (choices / ge / le / gt / lt / pattern),\n * keyed by argument name. Surfaced via `vgi_function_arguments()` and enforced\n * at aggregate_bind for const params: a value violating a declared constraint\n * fails the bind with an ArgumentValidationError.\n */\n argConstraints?: Record<string, ArgumentConstraints>;\n\n initialState: (params: AggregateBindParams<TArgs>) => TState;\n /**\n * Fold a batch of input rows into the provided per-group state map.\n * Implementations mutate `states` in place. `groupIds[i]` identifies which\n * group row i belongs to; `columns[k][i]` is the value for the kth declared\n * column argument at row i.\n */\n update: (params: AggregateUpdateParams<TArgs, TState>) => void;\n combine: (source: TState, target: TState, params: AggregateBindParams<TArgs>) => TState;\n /** Must return a single-column RecordBatch with `groupIds.length` rows. */\n finalize: (params: AggregateFinalizeParams<TArgs, TState>) => VgiBatch;\n\n examples?: FunctionExample[];\n categories?: string[];\n /** Arbitrary function-level tags surfaced into duckdb_functions().tags. */\n tags?: Record<string, string>;\n nullHandling?: \"DEFAULT\" | \"SPECIAL\";\n /**\n * DuckDB secret types this aggregate needs. Advertised on the catalog's\n * `required_secrets` so the C++ extension pre-resolves matching secrets and\n * delivers their VALUES on the aggregate_bind request (keyed by secret name).\n * The secret is read at bind time only — update/combine/finalize receive an\n * empty ResolvedSecrets. Mirrors vgi-python's `Secret()` annotation on an\n * aggregate `on_bind`.\n */\n requiredSecrets?: string[];\n}\n\n// Per-execution state registry. Value = (gid → state) + bind context.\n//\n// Under DuckDB's parallel aggregate with worker pooling, aggregate_* RPCs for\n// the same execution_id can land on different worker processes — so state\n// needs to live in a place all workers can reach. We use a filesystem-backed\n// store (one directory per execution_id, one JSON file per group_id) with\n// atomic rename-on-write. Fine for subprocess transport and for\n// single-instance HTTP; multi-host HTTP would need a shared path or a\n// swap-in network backend. Override with VGI_AGG_STATE_DIR.\n//\n// In-memory cache sits in front of the filesystem to keep single-process\n// workloads fast — writes go to disk, reads prefer cache, and getExecutionState\n// lazily reconstructs from disk when a different worker's exec is requested.\n\ntype StateMap = Map<bigint, any>;\n\ninterface ExecEntry {\n states: StateMap;\n bindArgs: Arguments;\n bindParams: AggregateBindParams<any>;\n loaded: Set<bigint>; // gids fetched from disk (so we don't refetch in same call)\n}\n\nconst stateStore = new Map<string, ExecEntry>();\n\n// Custom JSON codec: BigInt ↔ {\"__bigint__\":\"…\"}. Keep the encoder/decoder\n// centralized so aggregate state classes with int64 fields (CountState,\n// SumState, etc.) round-trip without extra wiring.\nfunction jsonReplacer(_: string, v: any): any {\n if (typeof v === \"bigint\") return { __bigint__: v.toString() };\n return v;\n}\nfunction jsonReviver(_: string, v: any): any {\n if (v && typeof v === \"object\" && typeof (v as any).__bigint__ === \"string\") {\n return BigInt((v as any).__bigint__);\n }\n return v;\n}\n\nfunction stateDirRoot(): string {\n return process.env.VGI_AGG_STATE_DIR ?? path.join(os.tmpdir(), \"vgi-agg\");\n}\n\nfunction execDir(execHex: string): string {\n return path.join(stateDirRoot(), execHex);\n}\n\nfunction execKey(executionId: Uint8Array): string {\n let s = \"\";\n for (const b of executionId) s += b.toString(16).padStart(2, \"0\");\n return s;\n}\n\n// Atomic write: write to tmp then rename. Avoids partial reads from another\n// worker mid-update. Node's fs.renameSync is atomic on POSIX for same FS.\nfunction atomicWriteJson(filePath: string, value: any): void {\n const tmp = filePath + \".tmp.\" + process.pid + \".\" + Math.random().toString(36).slice(2);\n const parent = path.dirname(filePath);\n fs.mkdirSync(parent, { recursive: true });\n fs.writeFileSync(tmp, JSON.stringify(value, jsonReplacer));\n fs.renameSync(tmp, filePath);\n}\n\nfunction tryReadJson(filePath: string): any | undefined {\n try {\n const text = fs.readFileSync(filePath, \"utf8\");\n return JSON.parse(text, jsonReviver);\n } catch (e: any) {\n if (e?.code === \"ENOENT\") return undefined;\n throw e;\n }\n}\n\n/**\n * Fetch the execution context — bind args/params + states for requested gids.\n * On cache miss, tries to reconstruct from on-disk files written by a\n * sibling worker. Returns undefined if the exec never existed anywhere.\n * `requestedGids` (optional) tells us which group states to pre-load.\n */\nexport function getExecutionState(\n executionId: Uint8Array,\n requestedGids?: Iterable<bigint>,\n): ExecEntry | undefined {\n const key = execKey(executionId);\n let entry = stateStore.get(key);\n if (!entry) {\n // Try to reconstruct bind context from disk.\n const ctx = tryReadJson(path.join(execDir(key), \"context.json\"));\n if (!ctx) return undefined;\n // Restore bindParams + args from the serialized context. args is kept\n // only as a plain dict; the Arguments instance isn't needed after bind.\n entry = {\n states: new Map(),\n bindArgs: ctx.bindArgs, // placeholder — Arguments instance is only needed during bind\n bindParams: ctx.bindParams,\n loaded: new Set(),\n };\n stateStore.set(key, entry);\n }\n if (requestedGids) {\n // Always re-read from disk each RPC. A sibling worker may have just\n // written a newer value for this gid; relying on our in-memory cache\n // would overwrite their update on our next persist (read-modify-write\n // race). File I/O per-RPC is cheap compared to the RPC overhead.\n for (const gid of requestedGids) {\n const stateFile = path.join(execDir(key), gid.toString() + \".json\");\n const s = tryReadJson(stateFile);\n if (s !== undefined) {\n entry.states.set(gid, s);\n } else {\n entry.states.delete(gid);\n }\n entry.loaded.add(gid);\n }\n }\n return entry;\n}\n\nexport function setExecutionState(\n executionId: Uint8Array,\n entry: Omit<ExecEntry, \"loaded\">,\n): void {\n const key = execKey(executionId);\n stateStore.set(key, { ...entry, loaded: new Set() });\n // Persist bind context so sibling workers can reconstruct it on demand.\n atomicWriteJson(path.join(execDir(key), \"context.json\"), {\n bindParams: entry.bindParams,\n // bindArgs is a live Arguments instance; stash its args map separately\n // if needed for future state-dependent behavior. Workers reading the\n // context receive `bindParams.args` which is what update/finalize use.\n });\n}\n\n/**\n * Persist the given group states to disk so sibling workers can pick them up.\n * Deletes the on-disk entry when the in-memory state was removed (gid no\n * longer present in states map).\n */\nexport function persistGroupStates(\n executionId: Uint8Array,\n gids: Iterable<bigint>,\n): void {\n const key = execKey(executionId);\n const entry = stateStore.get(key);\n if (!entry) return;\n for (const gid of gids) {\n const stateFile = path.join(execDir(key), gid.toString() + \".json\");\n if (entry.states.has(gid)) {\n atomicWriteJson(stateFile, entry.states.get(gid));\n } else {\n try { fs.unlinkSync(stateFile); } catch { /* already gone */ }\n }\n entry.loaded.add(gid);\n }\n}\n\nexport function deleteExecutionState(executionId: Uint8Array): void {\n const key = execKey(executionId);\n stateStore.delete(key);\n try { fs.rmSync(execDir(key), { recursive: true, force: true }); } catch { /* best-effort */ }\n}\n\n/**\n * Declare an aggregate function. The returned VgiFunction has `kind:\n * \"aggregate\"` plus a `config` handle the dispatch layer uses to drive the\n * aggregate_* RPCs; the scalar/table-function code paths ignore it.\n */\nexport function defineAggregate<TArgs = Record<string, any>, TState = any>(\n config: AggregateFunctionConfig<TArgs, TState>,\n): VgiFunction & { aggregateConfig: AggregateFunctionConfig<TArgs, TState> } {\n const specs: ArgumentSpec[] = [];\n let posIdx = 0;\n const varargsSet = new Set(config.varargs ?? []);\n const constSet = new Set(config.constParams ?? []);\n if (config.args) {\n for (const [name, type] of Object.entries(config.args)) {\n const hasDefault = config.argDefaults?.[name] !== undefined;\n const isConst = constSet.has(name);\n const isAnyType = isNull(type);\n // Const params are always positional at the SQL call-site — a default\n // value just means \"the user may omit it and we'll use the default\",\n // not \"rename to a named kwarg\". Non-const args with defaults become\n // named (matches table-function behavior).\n specs.push({\n name,\n position: isConst || !hasDefault ? posIdx++ : name,\n arrowType: isAnyType ? nullType() : type,\n isAnyType,\n isVarargs: varargsSet.has(name),\n isConst,\n ...constraintSpecFields(config.argConstraints?.[name]),\n });\n }\n }\n\n const meta: FunctionMeta = {\n name: config.name,\n description: config.description,\n examples: config.examples,\n categories: config.categories,\n tags: config.tags,\n nullHandling: config.nullHandling as any,\n requiredSecrets: config.requiredSecrets,\n };\n\n // The normal VgiFunction methods (bind/globalInit/createStreamHandlers) are\n // never invoked for aggregates — the dispatch layer routes aggregate_* RPCs\n // through the separate aggregate_* handler. Provide stubs that throw so\n // misrouted calls surface loudly rather than silently hanging.\n // Catalog output schema: single \"result\" column. Advertise config.outputType\n // when it's a real type (anything other than Null) — onBind may still override\n // at bind time, but for the catalog listing we prefer the static declaration\n // so duckdb_functions() shows a meaningful return type. Aggregates whose\n // return type genuinely depends on input set outputType: nullType() to\n // advertise ANY explicitly.\n const isAnyType = isNull(config.outputType);\n const defaultOutputSchema = isAnyType\n ? schema([field(\"result\", nullType(), true, new Map([[\"vgi:any\", \"true\"]]))])\n : schema([field(\"result\", config.outputType, true)]);\n\n return {\n kind: \"aggregate\" as any,\n meta,\n argumentSpecs: specs,\n defaultOutputSchema,\n bind: () => { throw new Error(`aggregate '${config.name}' received bind() — should be routed through aggregate_bind`); },\n globalInit: () => { throw new Error(`aggregate '${config.name}' received globalInit() — should be routed through aggregate_bind`); },\n createStreamHandlers: () => { throw new Error(`aggregate '${config.name}' is unary — no stream handlers`); },\n aggregateConfig: config,\n } as VgiFunction & { aggregateConfig: AggregateFunctionConfig<TArgs, TState> };\n}\n",
|
|
46
46
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Handlers for the aggregate function lifecycle: bind allocates execution_id\n// and output schema, update folds rows into per-group state, combine merges\n// states across workers, finalize emits one result row per group, destructor\n// drops finished group state.\n\nimport {\n type VgiSchema,\n type VgiBatch,\n type VgiDataType,\n schema as makeSchema,\n field,\n isDecimal,\n serializeBatch,\n deserializeBatch,\n} from \"../../arrow/index.js\";\nimport { Protocol } from \"@query-farm/vgi-rpc\";\nimport type { FunctionRegistry } from \"../../functions/registry.js\";\nimport { deserializeArguments } from \"../serialize.js\";\nimport { deserializeSchema, serializeSchema, batchToSecretDict } from \"../../util/arrow/index.js\";\nimport { toUint8Array } from \"../../util/bytes.js\";\nimport {\n AggregateBindResultSchema,\n AggregateFinalizeResultSchema,\n} from \"../../generated/vgi-protocol-schemas.js\";\nimport {\n getExecutionState,\n setExecutionState,\n persistGroupStates,\n GROUP_COLUMN_NAME,\n type AggregateFunctionConfig,\n type AggregateBindParams,\n} from \"../../functions/aggregate.js\";\nimport { Arguments } from \"../../arguments/arguments.js\";\nimport { validateConstConstraints } from \"../../arguments/argument-spec.js\";\nimport {\n REQUEST_PARAMS_SCHEMA,\n RESULT_BINARY_SCHEMA,\n unwrapRequest,\n wrapResult,\n} from \"./shared.js\";\n\nexport function registerAggregateMethods(protocol: Protocol, registry: FunctionRegistry): void {\n function resolveAggregate(name: string): AggregateFunctionConfig<any, any> {\n const func = registry.get(name, { arguments: new Arguments(), inputSchema: null, isScalar: false }) as any;\n if (!func || func.kind !== \"aggregate\") {\n throw new Error(`Function '${name}' is not an aggregate function`);\n }\n return func.aggregateConfig as AggregateFunctionConfig<any, any>;\n }\n\n // ------------------------------------------------------------------------\n // aggregate_bind — allocate execution_id, return output schema\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_bind\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: async (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const cfg = resolveAggregate(functionName);\n const argBytes = toUint8Array(innerParams.arguments);\n const args = deserializeArguments(argBytes);\n const inputSchema = innerParams.input_schema\n ? deserializeSchema(toUint8Array(innerParams.input_schema))\n : null;\n // Decode the resolved-secrets batch the extension pre-resolves for\n // aggregates that declared `requiredSecrets`. Mirrors the table-buffering\n // handler (batchToSecretDict). The secret VALUES are delivered only here,\n // at bind time — update/combine/finalize see no secrets by design.\n const secretsBytes = innerParams.secrets ? toUint8Array(innerParams.secrets) : null;\n const secretsBatch =\n secretsBytes && secretsBytes.length > 0 ? deserializeBatch(secretsBytes) : null;\n const secrets = secretsBatch ? batchToSecretDict(secretsBatch) : {};\n const bindParams: AggregateBindParams<any> = {\n args: extractArgMap(cfg, args),\n arguments: args,\n inputSchema,\n settings: {},\n secrets,\n };\n const executionId = new Uint8Array(16);\n crypto.getRandomValues(executionId);\n setExecutionState(executionId, {\n states: new Map(),\n bindArgs: args,\n bindParams,\n });\n // Output schema is a single \"result\" column. Type comes from the\n // optional onBind hook (for aggregates whose return type depends on\n // input — e.g. vgi_generic_sum takes ANY and returns the same type);\n // otherwise the declared cfg.outputType.\n const outType = cfg.onBind ? await cfg.onBind(bindParams) : cfg.outputType;\n const outSchema = makeSchema([field(\"result\", outType, true)]);\n return wrapResult(\n { output_schema: serializeSchema(outSchema), execution_id: executionId },\n AggregateBindResultSchema,\n );\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_update — fold the incoming batch into per-group state\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_update\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const batch = readSingleBatch(toUint8Array(innerParams.input_batch));\n if (!batch || batch.numRows === 0) return wrapResult({}, makeSchema([]));\n\n const gidIdx = batch.schema.fields.findIndex((f) => f.name === GROUP_COLUMN_NAME);\n if (gidIdx < 0) {\n throw new Error(`aggregate_update: input batch missing ${GROUP_COLUMN_NAME} column`);\n }\n const gidCol = batch.getChildAt(gidIdx)!;\n const groupIds: bigint[] = [];\n const uniqueGids = new Set<bigint>();\n for (let i = 0; i < batch.numRows; i++) {\n const v = gidCol.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n groupIds.push(g);\n uniqueGids.add(g);\n }\n const exec = getExecutionState(executionId, uniqueGids);\n if (!exec) {\n throw new Error(`aggregate_update: unknown execution_id for '${functionName}' (bind missing or state dropped)`);\n }\n\n // Build column-arg arrays — every non-__vgi_group_id column, in\n // schema order — and pass to user's update(). We deliberately do NOT\n // pre-allocate state for every group_id seen — the user decides when\n // to call ensureState() so that groups with only-NULL input (skipped\n // rows) never get an entry, which lets finalize() return SQL NULL.\n const columns: any[] = [];\n for (let i = 0; i < batch.schema.fields.length; i++) {\n if (i === gidIdx) continue;\n columns.push(batch.getChildAt(i));\n }\n const ensureState = (gid: bigint) => {\n let s = exec.states.get(gid);\n if (s === undefined) {\n s = cfg.initialState(exec.bindParams);\n exec.states.set(gid, s);\n }\n return s;\n };\n cfg.update({\n states: exec.states,\n groupIds,\n columns,\n args: exec.bindParams.args,\n ensureState,\n });\n // Flush mutated states to disk so sibling workers see them. We persist\n // every group that was referenced this call — some may be unchanged\n // (skipped by NULL handling), in which case the file simply reflects\n // the pre-existing initial state; the idempotent rewrite is cheap\n // relative to the RPC overhead.\n persistGroupStates(executionId, uniqueGids);\n return wrapResult({}, makeSchema([]));\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_combine — merge (source_group_id, target_group_id) pairs\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_combine\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const batch = readSingleBatch(toUint8Array(innerParams.merge_batch));\n if (!batch || batch.numRows === 0) return wrapResult({}, makeSchema([]));\n\n const srcCol = batch.getChild(\"source_group_id\")!;\n const tgtCol = batch.getChild(\"target_group_id\")!;\n const referencedGids = new Set<bigint>();\n const srcIds: bigint[] = [];\n const tgtIds: bigint[] = [];\n for (let i = 0; i < batch.numRows; i++) {\n const src = BigInt(srcCol.get(i) as any);\n const tgt = BigInt(tgtCol.get(i) as any);\n srcIds.push(src); tgtIds.push(tgt);\n referencedGids.add(src); referencedGids.add(tgt);\n }\n const exec = getExecutionState(executionId, referencedGids);\n if (!exec) {\n throw new Error(\n `aggregate_combine: unknown execution_id for '${functionName}' ` +\n `(context missing on disk — bind may have failed or been cleaned up)`,\n );\n }\n const touchedTargets = new Set<bigint>();\n for (let i = 0; i < batch.numRows; i++) {\n const src = srcIds[i];\n const tgt = tgtIds[i];\n const srcHas = exec.states.has(src);\n const tgtHas = exec.states.has(tgt);\n if (!srcHas && !tgtHas) continue;\n const srcState = srcHas ? exec.states.get(src)! : cfg.initialState(exec.bindParams);\n const tgtState = tgtHas ? exec.states.get(tgt)! : cfg.initialState(exec.bindParams);\n exec.states.set(tgt, cfg.combine(srcState, tgtState, exec.bindParams));\n touchedTargets.add(tgt);\n }\n persistGroupStates(executionId, touchedTargets);\n return wrapResult({}, makeSchema([]));\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_finalize — emit one result row per requested group_id\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_finalize\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const functionName: string = innerParams.function_name;\n const executionId = toUint8Array(innerParams.execution_id);\n const cfg = resolveAggregate(functionName);\n const outputSchema = deserializeSchema(toUint8Array(innerParams.output_schema));\n const gidBatch = readSingleBatch(toUint8Array(innerParams.group_ids_batch));\n const groupIds: bigint[] = [];\n const uniqueGids = new Set<bigint>();\n if (gidBatch) {\n const col = gidBatch.getChild(\"group_id\")!;\n for (let i = 0; i < gidBatch.numRows; i++) {\n const v = col.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n groupIds.push(g);\n uniqueGids.add(g);\n }\n }\n const exec = getExecutionState(executionId, uniqueGids);\n if (!exec) {\n throw new Error(`aggregate_finalize: unknown execution_id for '${functionName}'`);\n }\n // Groups never updated pass state = null so finalize() can emit SQL NULL\n // (matches Python semantics for SUM/AVG/MIN/MAX over zero rows).\n const states = new Map<bigint, any | null>();\n for (const gid of groupIds) {\n states.set(gid, exec.states.has(gid) ? exec.states.get(gid) : null);\n }\n const resultBatch = cfg.finalize({\n groupIds, states, outputSchema, args: exec.bindParams.args,\n });\n return wrapResult(\n { result_batch: serializeBatchWithSchema(resultBatch) },\n AggregateFinalizeResultSchema,\n );\n },\n });\n\n // ------------------------------------------------------------------------\n // aggregate_destructor — drop state for finished groups (best-effort)\n //\n // DuckDB sends a batch of group_ids to discard; we remove each from the\n // in-memory state map. We DO NOT tear down the entire execution on an\n // empty batch — DuckDB may still call finalize afterwards in some plans\n // (matches Python's conservative behavior; the execution entry is cleaned\n // up when the worker process exits).\n // ------------------------------------------------------------------------\n protocol.unary(\"aggregate_destructor\", {\n params: REQUEST_PARAMS_SCHEMA,\n result: RESULT_BINARY_SCHEMA,\n handler: (params) => {\n const innerParams = unwrapRequest(params.request);\n const executionId = toUint8Array(innerParams.execution_id);\n const exec = getExecutionState(executionId);\n if (!exec) return wrapResult({}, makeSchema([]));\n const gidBatch = readSingleBatch(toUint8Array(innerParams.group_ids_batch));\n if (!gidBatch || gidBatch.numRows === 0) return wrapResult({}, makeSchema([]));\n const col = gidBatch.getChild(\"group_id\")!;\n const toDrop = new Set<bigint>();\n for (let i = 0; i < gidBatch.numRows; i++) {\n const v = col.get(i);\n const g = typeof v === \"bigint\" ? v : BigInt(v as any);\n exec.states.delete(g);\n toDrop.add(g);\n }\n // Persist deletions (unlinks the per-group file so sibling workers\n // don't revive the state via getExecutionState's lazy disk load).\n persistGroupStates(executionId, toDrop);\n return wrapResult({}, makeSchema([]));\n },\n });\n}\n\nfunction extractArgMap(\n cfg: AggregateFunctionConfig<any, any>,\n args: Arguments,\n): Record<string, any> {\n const out: Record<string, any> = {};\n // The wire-side Arguments contains only const params — DuckDB erases const\n // args from the expression tree at bind time and serializes their values\n // into the aggregate_bind request's `arguments` field. So we index the\n // Arguments by the declaration order of const params only.\n const constSet = new Set(cfg.constParams ?? []);\n const constNames: string[] = [];\n if (cfg.args) {\n for (const name of Object.keys(cfg.args)) {\n if (constSet.has(name)) constNames.push(name);\n }\n }\n for (let i = 0; i < constNames.length; i++) {\n let v: any;\n try {\n v = args.get(i);\n // Decode DECIMAL scalars (DuckDB serializes 0.5-style literals as\n // DECIMAL(2,1), which Arrow stores as the unscaled integer — a raw\n // BigInt here). Scale back to float using the declared scale.\n const field = args.argumentsSchema?.fields.find(f => f.name === `positional_${i}`);\n if (field && isDecimal(field.type)) {\n const scale = (field.type as any).scale;\n if (typeof v === \"bigint\") v = Number(v) / Math.pow(10, scale);\n else if (typeof v === \"number\") v = v / Math.pow(10, scale);\n } else if (typeof v === \"bigint\") {\n v = Number(v);\n }\n } catch {\n // args.get throws when the arg isn't set — fall back to the declared\n // default so aggregates called without an explicit const value still\n // see it in update/finalize.\n const def = cfg.argDefaults?.[constNames[i]];\n if (def !== undefined) out[constNames[i]] = def;\n continue;\n }\n // Enforce declared constraints on the supplied value. This sits OUTSIDE the\n // try above so a constraint violation propagates as a bind error rather than\n // being swallowed and silently replaced by the default.\n const constraints = cfg.argConstraints?.[constNames[i]];\n if (constraints !== undefined) {\n validateConstConstraints(constNames[i], constraints, v);\n }\n out[constNames[i]] = v;\n }\n // Non-const args aren't in the wire Arguments, but users may still want\n // defaults surfaced for `params.args` — apply them here.\n if (cfg.argDefaults) {\n for (const [name, def] of Object.entries(cfg.argDefaults)) {\n if (!(name in out) && !constSet.has(name)) out[name] = def;\n }\n }\n return out;\n}\n\nfunction readSingleBatch(bytes: Uint8Array): VgiBatch | null {\n if (!bytes || bytes.length === 0) return null;\n const batch = deserializeBatch(bytes);\n return batch.numRows === 0 && batch.schema.fields.length === 0 ? null : batch;\n}\n\nfunction serializeBatchWithSchema(batch: VgiBatch): Uint8Array {\n // serializeBatch emits a full IPC stream (schema + batch + EOS) — the C++\n // aggregate_finalize reader expects exactly that.\n return serializeBatch(batch);\n}\n",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Catalog handler orchestrator: registers all catalog_* RPC methods.\n\nimport { Protocol } from \"@query-farm/vgi-rpc\";\nimport type { CatalogInterface } from \"../../../catalog/interface.js\";\nimport { makeGetCatalog } from \"./shared.js\";\nimport { registerCatalogAdminMethods } from \"./admin.js\";\nimport { registerCatalogTableMethods } from \"./table.js\";\nimport { registerCatalogViewMethods } from \"./view.js\";\nimport { registerCatalogMacroMethods } from \"./macro.js\";\nimport { registerCatalogIndexMethods } from \"./index_methods.js\";\n\nexport function registerCatalogMethods(\n protocol: Protocol,\n catalog: CatalogInterface | undefined,\n _catalogName: string | undefined,\n signingKey?: Uint8Array,\n): void {\n const getCatalog = makeGetCatalog(catalog);\n registerCatalogAdminMethods(protocol, getCatalog, signingKey);\n registerCatalogTableMethods(protocol, getCatalog, signingKey);\n registerCatalogViewMethods(protocol, getCatalog, signingKey);\n registerCatalogMacroMethods(protocol, getCatalog, signingKey);\n registerCatalogIndexMethods(protocol, getCatalog, signingKey);\n}\n",
|
|
58
58
|
"// Copyright 2025, 2026 Query Farm LLC - https://query.farm\n// Bun HTTP entrypoint for a VGI worker: `import { serveVgiWorker } from \"@query-farm/vgi/serve\"`.\n//\n// A worker's HTTP server is the same nine moving parts every time (protocol,\n// state-token key, TTL, CORS, landing surface, port, Bun.serve, startup log).\n// This collapses them to one call so a worker repo's serve script is its\n// registry + catalog and nothing else:\n//\n// serveVgiWorker({\n// name: \"ishares\",\n// doc: \"iShares (BlackRock) US fund data.\",\n// version: \"0.1.0\",\n// repositoryUrl: \"https://github.com/Query-farm/vgi-etf-ishares\",\n// registry,\n// catalogInterface,\n// });\n//\n// Mounted at the ROOT prefix, so DuckDB attaches the bare origin:\n// ATTACH 'ishares' AS ishares (TYPE vgi, LOCATION 'http://localhost:8787');\n//\n// Bun-only — it calls Bun.serve. Cloudflare Workers use `vgi/worker-cf`'s\n// createVgiFetch instead; both share the handler factory in http/fetch.ts.\n\nimport type { CatalogInterface } from \"./catalog/interface.js\";\nimport type { FunctionRegistry } from \"./functions/registry.js\";\nimport { createLandingDescribe } from \"./http/describe-json.js\";\nimport { createVgiFetch } from \"./http/fetch.js\";\n\n/** Environment variables `serveVgiWorker` reads. Injectable for testing. */\nexport interface ServeEnv {\n PORT?: string;\n VGI_SIGNING_KEY?: string;\n VGI_TOKEN_TTL?: string;\n CORS_ORIGINS?: string;\n}\n\nexport const DEFAULT_PORT = 8787;\nexport const DEFAULT_TOKEN_TTL = 3600;\n/** Bytes of HMAC key `createHttpHandler` expects; 64 hex characters. */\nexport const SIGNING_KEY_BYTES = 32;\n\nexport interface ServeVgiWorkerOptions {\n /** Short worker name shown on the landing page, e.g. \"ishares\". */\n name: string;\n /** One-line description of what the worker serves. */\n doc: string;\n /** Worker version string shown on the landing page. */\n version: string;\n /** Functions the worker serves, already registered. */\n registry: FunctionRegistry;\n /** Catalog DuckDB attaches to. */\n catalogInterface: CatalogInterface;\n\n /** Public source-repository URL, linked from the landing page. */\n repositoryUrl?: string;\n /** Overrides `$PORT` (default 8787). Pass 0 to bind an ephemeral port. */\n port?: number;\n /** Overrides `$VGI_SIGNING_KEY`. 32 bytes. */\n signingKey?: Uint8Array;\n /** Overrides `$VGI_TOKEN_TTL` (default 3600 seconds). */\n tokenTtl?: number;\n /** Overrides `$CORS_ORIGINS` (default \"*\"). Pass `null` to disable CORS. */\n corsOrigins?: string | null;\n /** Server ID for state-token attribution (default: `name`). */\n serverId?: string;\n /** Mount point for the VGI endpoints (default \"\", the origin root). */\n prefix?: string;\n /** Suppress the startup banner on stdout. */\n quiet?: boolean;\n /** Environment source (default `process.env`). */\n env?: ServeEnv;\n}\n\n/** The slice of `Bun.serve`'s return value this module uses. */\nexport interface VgiHttpServer {\n readonly port: number;\n readonly url: URL;\n stop(closeActiveConnections?: boolean): void;\n}\n\ninterface BunLike {\n serve(options: {\n port: number;\n fetch: (req: Request) => Promise<Response>;\n }): VgiHttpServer;\n}\n\n/**\n * Decode a 32-byte signing key from its hex representation.\n *\n * Throws on anything that is not exactly 64 hex characters. A silent truncate\n * or zero-pad here would produce a worker that starts happily with a key far\n * weaker than the operator believed they supplied.\n */\nexport function parseSigningKeyHex(hex: string): Uint8Array {\n const cleaned = hex.trim();\n const expected = SIGNING_KEY_BYTES * 2;\n if (cleaned.length !== expected || !/^[0-9a-fA-F]+$/.test(cleaned)) {\n throw new Error(\n `VGI_SIGNING_KEY must be exactly ${expected} hex characters ` +\n `(${SIGNING_KEY_BYTES} bytes); got ${cleaned.length}. ` +\n `Generate one with: openssl rand -hex ${SIGNING_KEY_BYTES}`,\n );\n }\n const key = new Uint8Array(SIGNING_KEY_BYTES);\n for (let i = 0; i < SIGNING_KEY_BYTES; i++) {\n key[i] = Number.parseInt(cleaned.slice(i * 2, i * 2 + 2), 16);\n }\n return key;\n}\n\n/**\n * Resolve the state-token signing key: explicit option, then `$VGI_SIGNING_KEY`,\n * then a fresh random key.\n *\n * The random fallback is safe but ephemeral, and that tradeoff is why it warns:\n * state tokens minted under it stop validating after a restart, and never\n * validate across a second instance behind a load balancer. It exists so\n * `bun run scripts/serve.ts` works with no setup, not so deployments can skip\n * the key.\n */\nexport function resolveSigningKey(\n explicit: Uint8Array | undefined,\n env: ServeEnv,\n warn: (msg: string) => void = console.error,\n): Uint8Array {\n if (explicit) {\n if (explicit.length !== SIGNING_KEY_BYTES) {\n throw new Error(\n `signingKey must be ${SIGNING_KEY_BYTES} bytes; got ${explicit.length}.`,\n );\n }\n return explicit;\n }\n const fromEnv = env.VGI_SIGNING_KEY?.trim();\n if (fromEnv) return parseSigningKeyHex(fromEnv);\n\n warn(\n \"WARNING: VGI_SIGNING_KEY is not set; generated a random state-token key.\\n\" +\n \" State tokens will not survive a restart, and will not validate\\n\" +\n \" across multiple instances behind a load balancer.\\n\" +\n ` Set it for any real deployment: openssl rand -hex ${SIGNING_KEY_BYTES}`,\n );\n return crypto.getRandomValues(new Uint8Array(SIGNING_KEY_BYTES));\n}\n\nfunction resolvePort(explicit: number | undefined, env: ServeEnv): number {\n if (explicit !== undefined) return explicit;\n const raw = env.PORT?.trim();\n if (!raw) return DEFAULT_PORT;\n const port = Number(raw);\n if (!Number.isInteger(port) || port < 0 || port > 65535) {\n throw new Error(`PORT must be an integer between 0 and 65535; got ${JSON.stringify(raw)}.`);\n }\n return port;\n}\n\nfunction resolveTokenTtl(explicit: number | undefined, env: ServeEnv): number {\n if (explicit !== undefined) return explicit;\n const raw = env.VGI_TOKEN_TTL?.trim();\n if (!raw) return DEFAULT_TOKEN_TTL;\n const ttl = Number(raw);\n if (!Number.isInteger(ttl) || ttl < 0) {\n throw new Error(`VGI_TOKEN_TTL must be a non-negative integer; got ${JSON.stringify(raw)}.`);\n }\n return ttl;\n}\n\n/**\n * Build the fetch handler a VGI worker serves over HTTP, with the standardized\n * landing surface mounted at `prefix`.\n *\n * Exposed separately from {@link serveVgiWorker} so a worker can put the VGI\n * routes inside its own Bun/Hono/Elysia server, or drive them from a test\n * without binding a port.\n */\nexport function createVgiWorkerFetch(\n opts: ServeVgiWorkerOptions,\n): (req: Request) => Promise<Response> {\n const env = opts.env ?? (process.env as ServeEnv);\n const signingKey = resolveSigningKey(opts.signingKey, env);\n const tokenTtl = resolveTokenTtl(opts.tokenTtl, env);\n // `null` disables CORS; `undefined` falls through to the env var, then \"*\".\n const corsOrigins =\n opts.corsOrigins === null ? undefined : (opts.corsOrigins ?? env.CORS_ORIGINS ?? \"*\");\n\n return createVgiFetch({\n protocol: { registry: opts.registry, catalogInterface: opts.catalogInterface },\n signingKey,\n tokenTtl,\n prefix: opts.prefix ?? \"\",\n serverId: opts.serverId ?? opts.name,\n corsOrigins,\n repositoryUrl: opts.repositoryUrl,\n landingDescribe: createLandingDescribe(opts.catalogInterface, {\n name: opts.name,\n doc: opts.doc,\n version: opts.version,\n }),\n });\n}\n\n/**\n * Serve a VGI worker over HTTP on Bun and return the running server.\n *\n * Reads `PORT`, `VGI_SIGNING_KEY`, `VGI_TOKEN_TTL`, and `CORS_ORIGINS` from the\n * environment; every one has an explicit option that takes precedence.\n */\nexport function serveVgiWorker(opts: ServeVgiWorkerOptions): VgiHttpServer {\n const runtime = (globalThis as { Bun?: BunLike }).Bun;\n if (!runtime) {\n throw new Error(\n '\"@query-farm/vgi/serve\" requires the Bun runtime (it calls Bun.serve). ' +\n 'On Cloudflare Workers use createVgiFetch from \"@query-farm/vgi/worker-cf\"; ' +\n \"on other runtimes use createVgiWorkerFetch and bind the port yourself.\",\n );\n }\n\n const env = opts.env ?? (process.env as ServeEnv);\n const port = resolvePort(opts.port, env);\n const fetch = createVgiWorkerFetch(opts);\n const server = runtime.serve({ port, fetch });\n\n if (!opts.quiet) {\n const base = `http://localhost:${server.port}`;\n console.log(`${opts.name} VGI HTTP worker listening on ${base}`);\n console.log(` landing page ${base}/`);\n console.log(` describe.json ${base}/describe.json`);\n console.log(` health ${base}/health`);\n console.log(` attach ATTACH '${opts.name}' AS ${opts.name} (TYPE vgi, LOCATION '${base}');`);\n }\n return server;\n}\n"
|
|
59
59
|
],
|
|
60
|
-
"mappings": "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AM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,EAC3B;AAAA,EAEA,IAAI,KAAK;AAAA,EACT,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA,EAC1B,IAAI,QAAS,MAAM,MAAO;AAAA;AAuBvB,SAAS,OAAO,CAAC,GAAG,GAAG,GAAG,KAAK;AAAA,EAClC,IAAI,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE,GAAG,MAAM,UAAU,EAAE,EAAE;AAAA,EACjX,SAAS,IAAI,EAAG,IAAI,IAAI,KAAK,GAAG;AAAA,IAC5B,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,EAC3B;AAAA,EAEA,IAAI,KAAK;AAAA,EACT,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,WAAW,GAAG;AAAA;AA6EX,IAAM,4BAA4B,aAAa,YAAY;AAAA,EAC9D,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB;AACpB,CAAC;AAoDD,IAAM,0BAA0B,IAAI,WAAW,EAAE;AAEjD,IAAM,eAAe,CAAC,GAAG,QAAQ;AAAA,EAC7B,EAAE,OAAO,GAAG;AAAA,EACZ,MAAM,WAAW,IAAI,SAAS;AAAA,EAC9B,IAAI;AAAA,IACA,EAAE,OAAO,QAAQ,SAAS,QAAQ,CAAC;AAAA;AAI3C,IAAM,0BAA0B,IAAI,WAAW,EAAE;AACjD,SAAS,UAAU,CAAC,IAAI,KAAK,OAAO,YAAY,KAAK;AAAA,EACjD,IAAI,QAAQ;AAAA,IACR,OAAO,KAAK,WAAW,KAAK;AAAA,EAGhC,MAAM,UAAU,GAAG,KAAK,OAAO,OAAO;AAAA,EACtC,MAAM,UAAU,WAAW,WAAW,QAAQ,MAAM,IAAI,SAAS,GAAG,IAAI;AAAA,EAGxE,MAAM,IAAI,SAAS,OAAO,OAAO;AAAA,EACjC,IAAI;AAAA,IACA,aAAa,GAAG,GAAG;AAAA,EACvB,aAAa,GAAG,UAAU;AAAA,EAC1B,EAAE,OAAO,OAAO;AAAA,EAChB,MAAM,MAAM,EAAE,OAAO;AAAA,EACrB,MAAM,SAAS,OAAO;AAAA,EACtB,OAAO;AAAA;AASJ,IAAM,iBAAiB,CAAC,cAAc,CAAC,KAAK,OAAO,QAAQ;AAAA,EAG9D,MAAM,YAAY;AAAA,EAClB,OAAO;AAAA,IACH,OAAO,CAAC,WAAW,QAAQ;AAAA,MACvB,MAAM,UAAU,UAAU;AAAA,MAC1B,SAAS,UAAU,UAAU,WAAW,QAAQ,KAAK;AAAA,MACrD,OAAO,IAAI,SAAS;AAAA,MACpB,MAAM,SAAS,OAAO,SAAS,GAAG,CAAC,SAAS;AAAA,MAE5C,UAAU,KAAK,OAAO,QAAQ,QAAQ,CAAC;AAAA,MACvC,MAAM,MAAM,WAAW,WAAW,KAAK,OAAO,QAAQ,GAAG;AAAA,MACzD,OAAO,IAAI,KAAK,OAAO;AAAA,MACvB,MAAM,GAAG;AAAA,MACT,OAAO;AAAA;AAAA,IAEX,OAAO,CAAC,YAAY,QAAQ;AAAA,MACxB,SAAS,UAAU,WAAW,SAAS,WAAW,QAAQ,KAAK;AAAA,MAC/D,MAAM,OAAO,WAAW,SAAS,GAAG,CAAC,SAAS;AAAA,MAC9C,MAAM,YAAY,WAAW,SAAS,CAAC,SAAS;AAAA,MAChD,MAAM,MAAM,WAAW,WAAW,KAAK,OAAO,MAAM,GAAG;AAAA,MAGvD,IAAI,CAAC,WAAW,WAAW,GAAG,GAAG;AAAA,QAC7B,MAAM,GAAG;AAAA,QACT,MAAM,IAAI,MAAM,aAAa;AAAA,MACjC;AAAA,MACA,OAAO,IAAI,WAAW,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,MAE7C,UAAU,KAAK,OAAO,QAAQ,QAAQ,CAAC;AAAA,MACvC,MAAM,GAAG;AAAA,MACT,OAAO;AAAA;AAAA,EAEf;AAAA;AA8CG,IAAM,oCAAoC,WAAW,EAAE,WAAW,IAAI,aAAa,IAAI,WAAW,GAAG,mBAC5F,eAAe,SAAS,CAAC;;;ACjgBzC,IAAM,QAAQ,IAAI;AAKX,IAAM,0BAA0B;AAChC,IAAM,+BAA+B;AAGrC,IAAM,kBAAkB;AAE/B,IAAM,YAAY;AAClB,IAAM,UAAU;AAChB,IAAM,mBAAmB,IAAI,YAAY;AAEzC,IAAM,oBAAoB,MAAM,OAAO,+BAA6B;AACpE,IAAM,yBAAyB,MAAM,OAAO,oCAAkC;AAAA;AAOvE,MAAM,gCAAgC,MAAM;AAAA,EACjD,WAAW,CAAC,SAAQ,eAAe;AAAA,IACjC,MAAM,GAAG,uBAAsB;AAAA,IAC/B,KAAK,OAAO;AAAA;AAEhB;AAEA,SAAS,MAAM,IAAI,OAAiC;AAAA,EAClD,IAAI,QAAQ;AAAA,EACZ,WAAW,KAAK;AAAA,IAAO,SAAS,EAAE;AAAA,EAClC,MAAM,MAAM,IAAI,WAAW,KAAK;AAAA,EAChC,IAAI,MAAM;AAAA,EACV,WAAW,KAAK,OAAO;AAAA,IACrB,IAAI,IAAI,GAAG,GAAG;AAAA,IACd,OAAO,EAAE;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAQT,eAAe,YAAY,CAAC,KAAsC;AAAA,EAChE,IAAI,IAAI,WAAW;AAAA,IAAI,OAAO;AAAA,EAC9B,OAAO,IAAI,WAAW,MAAM,OAAO,OAAO,OAAO,WAAW,GAAmB,CAAC;AAAA;AAQ3E,SAAS,YAAY,CAAC,MAA2C;AAAA,EACtE,IAAI,CAAC,QAAQ,CAAC,KAAK;AAAA,IAAe,OAAO,MAAM,OAAO,eAAa;AAAA,EACnE,MAAM,SAAS,MAAM,OAAO,KAAK,UAAU,EAAE;AAAA,EAC7C,MAAM,YAAY,MAAM,OAAO,KAAK,aAAa,EAAE;AAAA,EACnD,OAAO,OAAO,WAAW,GAAG,CAAI,GAAG,QAAQ,WAAW,GAAG,CAAI,GAAG,SAAS;AAAA;AAIpE,SAAS,SAAS,CAAC,MAA2C;AAAA,EACnE,OAAO,OAAO,mBAAmB,aAAa,IAAI,CAAC;AAAA;AAS9C,SAAS,cAAc,CAC5B,MACA,gBACY;AAAA,EACZ,OAAO,OAAO,wBAAwB,aAAa,IAAI,GAAG,WAAW,GAAG,CAAI,GAAG,cAAc;AAAA;AAI/F,eAAsB,SAAS,CAC7B,SACA,KACA,KACA,SACqB;AAAA,EACrB,MAAM,QAAQ,OAAO,gBAAgB,IAAI,WAAW,SAAS,CAAC;AAAA,EAC9D,MAAM,aAAa,kBAAkB,MAAM,aAAa,GAAG,GAAG,OAAO,GAAG,EAAE,QAAQ,OAAO;AAAA,EACzF,MAAM,MAAM,IAAI,WAAW,IAAI,YAAY,WAAW,MAAM;AAAA,EAC5D,IAAI,KAAK,UAAU;AAAA,EACnB,IAAI,IAAI,OAAO,CAAC;AAAA,EAChB,IAAI,IAAI,YAAY,IAAI,SAAS;AAAA,EACjC,OAAO;AAAA;AAQT,eAAsB,SAAS,CAC7B,OACA,KACA,KACA,SACA,SAAQ,eACa;AAAA,EACrB,IAAI,MAAM,SAAS,oBAAoB,MAAM,QAAQ,UAAU,MAAO;AAAA,IACpE,MAAM,IAAI,wBAAwB,MAAK;AAAA,EACzC;AAAA,EACA,MAAM,QAAQ,MAAM,SAAS,GAAG,IAAI,SAAS;AAAA,EAC7C,MAAM,aAAa,MAAM,SAAS,IAAI,SAAS;AAAA,EAC/C,IAAI;AAAA,IACF,OAAO,kBAAkB,MAAM,aAAa,GAAG,GAAG,OAAO,GAAG,EAAE,QAAQ,UAAU;AAAA,IAChF,MAAM;AAAA,IACN,MAAM,IAAI,wBAAwB,MAAK;AAAA;AAAA;;;ACtG3C,eAAsB,UAAU,CAC9B,WACA,MACA,YACqB;AAAA,EACrB,MAAM,OAAO,IAAI,WAAW,eAAe;AAAA,EAC3C,OAAO,gBAAgB,IAAI;AAAA,EAC3B,MAAM,SAAS,IAAI,WAAW,kBAAkB,UAAU,MAAM;AAAA,EAChE,OAAO,IAAI,MAAM,CAAC;AAAA,EAClB,OAAO,IAAI,WAAW,eAAe;AAAA,EACrC,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,OAAO,UAAU,QAAQ,YAAY,UAAU,IAAI,GAAG,uBAAuB;AAAA;AAO/E,eAAsB,cAAc,CAClC,UACA,MACA,YACqB;AAAA,EACrB,IAAI,CAAC,cAAc,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EACjD,OAAO,UAAU,UAAU,YAAY,UAAU,IAAI,GAAG,yBAAyB,oBAAoB;AAAA;AAQvG,eAAsB,UAAU,CAC9B,UACA,MACA,YACqB;AAAA,EACrB,MAAM,OAAO,MAAM,eAAe,UAAU,MAAM,UAAU;AAAA,EAC5D,OAAO,KAAK,SAAS,kBAAkB,OAAO,KAAK,SAAS,eAAe;AAAA;AA2C7E,eAAsB,eAAe,CACnC,WACA,gBACA,MACA,YACqB;AAAA,EACrB,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,OAAO,UAAU,WAAW,YAAY,eAAe,MAAM,cAAc,GAAG,4BAA4B;AAAA;AAS5G,eAAe,kBAAkB,CAC/B,QACA,KACA,YACe;AAAA,EACf,MAAM,OAAO,KAAK;AAAA,EAClB,IAAI,eAA2B,IAAI,WAAW,CAAC;AAAA,EAC/C,IAAI,OAAO,sBAAsB,MAAM;AAAA,IACrC,MAAM,MAAM,aAAa,OAAO,kBAAkB;AAAA,IAClD,IAAI,IAAI,SAAS,GAAG;AAAA,MAClB,eAAe;AAAA,MAOf,MAAM,OAAO,aACT,MAAM,UAAU,KAAK,YAAY,UAAU,IAAI,GAAG,yBAAyB,oBAAoB,IAC/F;AAAA,MACJ,OAAO,qBAAqB,KAAK,SAAS,kBAAkB,OAAO,KAAK,SAAS,eAAe;AAAA,IAClG;AAAA,EACF;AAAA,EAGA,IAAI,cAAc,OAAO,2BAA2B,MAAM;AAAA,IACxD,MAAM,MAAM,aAAa,OAAO,uBAAuB;AAAA,IACvD,IAAI,IAAI,SAAS,GAAG;AAAA,MAClB,OAAO,0BAA0B,MAAM,UACrC,KACA,YACA,eAAe,MAAM,YAAY,GACjC,8BACA,yBACF;AAAA,IACF;AAAA,EACF;AAAA;AASK,SAAS,YAAY,CAC1B,UACA,YACA,MACA,QAMM;AAAA,EACN,SAAS,MAAM,MAAM;AAAA,IACnB,QAAQ,OAAO;AAAA,IACf,QAAQ,OAAO;AAAA,IACf,KAAK,OAAO;AAAA,IACZ,SAAS,OAAO,QAA6B,QAAa;AAAA,MACxD,MAAM,mBAAmB,QAAQ,KAAK,UAAU;AAAA,MAChD,OAAO,OAAO,QAAQ,QAAQ,GAAG;AAAA;AAAA,EAErC,CAAC;AAAA;AAGI,SAAS,cAAc,CAAC,SAAmD;AAAA,EAChF,OAAO,MAAM;AAAA,IACX,IAAI,CAAC;AAAA,MAAS,MAAM,IAAI;AAAA,IACxB,OAAO;AAAA;AAAA;AAUJ,SAAS,kBAAkB,CAAC,OAAqC;AAAA,EACtE,IAAI,SAAS;AAAA,IAAM,OAAO,CAAC;AAAA,EAC3B,MAAM,MAAM,aAAa,KAAK;AAAA,EAC9B,IAAI,IAAI,eAAe;AAAA,IAAG,OAAO,CAAC;AAAA,EAClC,MAAM,QAAQ,iBAAiB,GAAG;AAAA,EAClC,IAAI,MAAM,YAAY;AAAA,IAAG,OAAO,CAAC;AAAA,EAKjC,MAAM,MAAM,SAAS,KAAK,EAAE,KAAK,EAAE;AAAA,EACnC,OAAO,OAAO,CAAC;AAAA;AAOV,IAAM,oBAAoB,QAAO,CAAC,CAAC;AAEnC,IAAM,wBAAwB,QAAO;AAAA,EAC1C,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAC5C,CAAC;AAEM,IAAM,4BAA4B,QAAO;AAAA,EAC9C,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAEM,IAAM,gCAAgC,QAAO;AAAA,EAClD,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAEM,IAAM,sCAAsC,QAAO;AAAA,EACxD,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAEM,IAAM,oCAAoC,QAAO;AAAA,EACtD,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,EACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAEM,IAAM,0BAA0B,QAAO;AAAA,EAC5C,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,EAC7B,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,EACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAEM,IAAM,yBAAyB,QAAO;AAAA,EAC3C,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,YAAY,MAAK,GAAG,KAAK;AAAA,EAC/B,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,EACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;AAEM,IAAM,iBAAiB,QAAO;AAAA,EACnC,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,EAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,EAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,EAClC,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,EACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AACjD,CAAC;;;AC3PM,SAAS,uBAAuB,CAAC,UAAoB,QAAqC;AAAA,EAC/F,QAAQ,UAAU,eAAe;AAAA,EAMjC,eAAe,WAAW,CAAC,QAAa,KAAsC;AAAA,IAC5E,IAAI,UAAU;AAAA,MAAM,OAAO;AAAA,IAC3B,MAAM,MAAM,aAAa,MAAM;AAAA,IAC/B,IAAI,IAAI,WAAW;AAAA,MAAG,OAAO;AAAA,IAC7B,OAAO,WAAW,KAAK,KAAK,MAAM,UAAU;AAAA;AAAA,EAG9C,MAAM,mBAAmB,QAAO;AAAA,IAC9B,OAAM,gBAAgB,QAAO,GAAG,KAAK;AAAA,IACrC,OAAM,eAAe,QAAO,GAAG,IAAI;AAAA,IACnC,OAAM,eAAe,OAAM,GAAG,KAAK;AAAA,EACrC,CAAC;AAAA,EAED,MAAM,cAAc,QAAO,CAAC,CAAC;AAAA,EAM7B,MAAM,mBAAmB,QAAO;AAAA,IAC9B,OAAM,SAAS,QAAO,GAAG,IAAI;AAAA,EAC/B,CAAC;AAAA,EAKD,SAAS,MAAM,QAAQ;AAAA,IACrB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,QAAQ,QAAQ;AAAA,MAC9B,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,UAAU,uBAAuB,WAAW;AAAA,MAClD,QAAQ,qBAAqB,MAAM,YAAY,QAAQ,oBAAoB,GAAG;AAAA,MAC9E,MAAM,OAAO,SAAS,IAAI,QAAQ,eAAe,gBAAgB,OAAO,CAAC;AAAA,MACzE,MAAM,WAAW,MAAM,KAAK,KAAK,OAAO;AAAA,MACxC,MAAM,aAAa,sBAAsB,QAAQ;AAAA,MACjD,OAAO,WAAW,YAAY,gBAAgB;AAAA;AAAA,EAElD,CAAC;AAAA,EAKD,SAAS,SAAS,QAAQ;AAAA,IACxB,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,cAAc;AAAA,IACd,MAAM,OAAO,WAAW;AAAA,MAEtB,MAAM,kBAAkB,aAAa,OAAO,OAAO;AAAA,MACnD,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,UAAU,uBAAuB,WAAW;AAAA,MAGlD,QAAQ,UAAU,qBAAqB,MAAM,YAAY,QAAQ,UAAU,oBAAoB,SAAS;AAAA,MACxG,MAAM,OAAO,SAAS,IAAI,QAAQ,UAAU,eAAe,gBAAgB,QAAQ,SAAS,CAAC;AAAA,MAI7F,MAAM,eAAe,MAAM,KAAK,WAAW,OAAO;AAAA,MAIlD,MAAM,mBAAmB,qBAAqB,SAAS,OAAO,oBAAoB;AAAA,MAElF,MAAM,WAAW,KAAK,qBAAqB,SAAS,cAAc,gBAAgB;AAAA,MAGlF,IAAI;AAAA,MACJ,IAAI,SAAS,cAAc;AAAA,QACzB,eAAe,SAAS,aAAa;AAAA,MACvC,EAAO,SAAI,SAAS,cAAc;AAAA,QAChC,eAAe,SAAS,aAAa;AAAA,MACvC;AAAA,MAEA,MAAM,aAAa,CAAC,CAAC,SAAS;AAAA,MAK9B,MAAM,YAAY,cAAc,SAAS;AAAA,MAKzC,MAAM,QAAa;AAAA,QACjB,cAAc,QAAQ,UAAU;AAAA,QAChC,gBAAgB;AAAA,QAChB,aAAa,aAAa;AAAA,QAC1B,YAAY,OAAO,aAAa,WAAW;AAAA,QAC3C,YAAY,aAAa,eAAe;AAAA,QACxC;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QAMd,gBAAgB,SAAS,gBAAgB;AAAA,QACzC,eAAe,SAAS,eAAe;AAAA,QAEvC,WAAW;AAAA,QACX,eAAe;AAAA,QACf,eAAe;AAAA,MACjB;AAAA,MACA,OAAO;AAAA;AAAA,IAET,UAAU,OAAO,OAAO,OAAO,QAAQ;AAAA,MAIrC,IAAI;AAAA,MACJ,IAAI;AAAA,MAEJ,IAAI,MAAM,WAAW;AAAA,QAEnB,WAAW,MAAM;AAAA,QACjB,eAAe,MAAM;AAAA,MACvB,EAAO;AAAA,QAIL,MAAM,mBAAmB,iBAAiB,MAAM,cAAc;AAAA,QAC9D,MAAM,kBAAkB,kBAAkB,gBAAgB;AAAA,QAC1D,MAAM,UAAU,uBAAuB,eAAe;AAAA,QACtD,MAAM,OAAO,SAAS,IAAI,MAAM,cAAc,gBAAgB,QAAQ,SAAS,CAAC;AAAA,QAChF,MAAM,cAAc,MAAM;AAAA,QAC1B,MAAM,aAAa,MAAM,cAAc;AAAA,QACvC,MAAM,eAAmC;AAAA,UACvC,cAAc;AAAA,UACd,aAAa,OAAO,MAAM,cAAc,CAAC;AAAA,UACzC,aAAa;AAAA,QACf;AAAA,QAGA,MAAM,iBAAiB,qBAAqB,SAAS,OAAO,oBAAoB;AAAA,QAEhF,WAAW,KAAK,qBAAqB,SAAS,cAAc,cAAc;AAAA,QAC1E,IAAI,SAAS,cAAc;AAAA,UACzB,eAAe,SAAS,aAAa;AAAA,QACvC,EAAO,SAAI,SAAS,cAAc;AAAA,UAChC,eAAe,SAAS,aAAa;AAAA,QACvC;AAAA,QAEA,IAAI,MAAM,aAAa,QAAQ,cAAc,UAAU,WAAW;AAAA,UAChE,aAAc,QAAQ,MAAM;AAAA,QAC9B;AAAA;AAAA,MAGF,IAAI,MAAM,cAAc,SAAS,YAAY;AAAA,QAI3C,IAAI,SAAS,MAAM;AAAA,UAAG,IAAY,YAAY;AAAA;AAAA,QAI9C,IAAI,SAAS,QAAQ;AAAA,UACnB,MAAM,SAAS,OAAO,cAAe,OAAe,QAAQ;AAAA,QAC9D;AAAA,QACA,MAAM,SAAS,WAAW,cAAc,GAAG;AAAA,MAC7C,EAAO,SAAI,SAAS,YAAY;AAAA,QAC9B,MAAM,SAAS,WAAW,cAAc,OAAO,GAAG;AAAA,MACpD;AAAA,MAGA,IAAI,cAAc,UAAU,WAAW;AAAA,QACrC,MAAM,YAAY,aAAc;AAAA,MAClC;AAAA;AAAA,IAEF,cAAc;AAAA,IACd,YAAY,CAAC,QAAa,OAAY,QAAa;AAAA,MAGjD,IAAI,CAAC,MAAM,eAAe;AAAA,QACxB,MAAM,IAAI,MAAM,sEAAsE;AAAA,MACxF;AAAA,MACA,OAAO,4BAA4B,MAAM,aAAa;AAAA;AAAA,EAE1D,CAAC;AAAA,EAKD,SAAS,MAAM,8BAA8B;AAAA,IAC3C,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,UAAU,8BAA8B,WAAW;AAAA,MACzD,MAAM,OAAO,SAAS,IAAI,QAAQ,UAAU,eAAe,gBAAgB,QAAQ,SAAS,CAAC;AAAA,MAC7F,IAAI;AAAA,MACJ,IAAI,KAAK,aAAa;AAAA,QACpB,aAAa,0BAA0B,MAAM,KAAK,YAAY,OAAO,CAAC;AAAA,MACxE,EAAO;AAAA,QACL,aAAa,EAAE,UAAU,MAAM,KAAK,KAAK;AAAA;AAAA,MAE3C,OAAO,WAAW,YAAY,oCAAoC;AAAA;AAAA,EAEtE,CAAC;AAAA,EASD,SAAS,MAAM,6BAA6B;AAAA,IAC1C,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC,WAAW;AAAA,MACnB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,UAAU,8BAA8B,WAAW;AAAA,MACzD,MAAM,OAAO,SAAS,IAAI,QAAQ,UAAU,eAAe,gBAAgB,QAAQ,SAAS,CAAC;AAAA,MAC7F,IAAI,CAAC,KAAK;AAAA,QAAY,OAAO,EAAE,QAAQ,KAAK;AAAA,MAC5C,MAAM,QAAQ,KAAK,WAAW,OAAO;AAAA,MACrC,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,QAAG,OAAO,EAAE,QAAQ,KAAK;AAAA,MACxD,OAAO,EAAE,QAAQ,0BAA0B,KAAK,EAAE;AAAA;AAAA,EAEtD,CAAC;AAAA,EAWD,SAAS,MAAM,oCAAoC;AAAA,IACjD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,gBAAgB,aAAa,YAAY,SAAS;AAAA,MACxD,MAAM,gBAAgB,iBAAiB,aAAa;AAAA,MAEpD,MAAM,aAAa,kBAAkB,aAAa;AAAA,MAClD,MAAM,WAAW,uBAAuB,UAAU;AAAA,MAClD,MAAM,oBAAoB,aAAa,YAAY,mBAAmB;AAAA,MACtE,MAAM,iBAAiB,YAAY,mBAC/B,aAAa,YAAY,gBAAgB,IACzC;AAAA,MACJ,MAAM,OAAO,SAAS,IAAI,SAAS,eAAe,gBAAgB,QAAQ,CAAC;AAAA,MAC3E,MAAM,OAAM,KAAK,kBACb,MAAM,KAAK,gBAAgB,EAAE,UAAU,gBAAgB,kBAAkB,CAAC,IAC1E,CAAC;AAAA,MACL,MAAM,OAAO,OAAO,KAAK,IAAG;AAAA,MAC5B,MAAM,SAAS,KAAK,IAAI,CAAC,MAAM,KAAI,MAAM,EAAE;AAAA,MAC3C,OAAO,WAAW,EAAE,MAAM,OAAO,GAAG,wCAAwC;AAAA;AAAA,EAEhF,CAAC;AAAA;;;ACjJH,SAAS,QAAQ,CAAC,OAAoC;AAAA,EACpD,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,OAAO,KAAK;AAAA,EAClD;AAAA;AAIF,SAAS,YAAY,CAAC,QAAiB,OAAyB;AAAA,EAC9D,MAAM,KAAK,SAAS,MAAM;AAAA,EAC1B,MAAM,KAAK,SAAS,KAAK;AAAA,EACzB,IAAI,OAAO,aAAa,OAAO;AAAA,IAAW,OAAO,OAAO;AAAA,EACxD,OAAO,WAAW;AAAA;AASb,SAAS,wBAAwB,CACtC,MACA,aACA,OACM;AAAA,EACN,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW;AAAA,EAE3C,MAAM,MAAM,SAAS,KAAK;AAAA,EAC1B,IAAI,QAAQ,WAAW;AAAA,IACrB,IAAI,YAAY,OAAO,aAAa,MAAM,YAAY,IAAI;AAAA,MACxD,MAAM,IAAI,wBAAwB,aAAa,oBAAoB,YAAY,IAAI;AAAA,IACrF;AAAA,IACA,IAAI,YAAY,OAAO,aAAa,MAAM,YAAY,IAAI;AAAA,MACxD,MAAM,IAAI,wBAAwB,aAAa,oBAAoB,YAAY,IAAI;AAAA,IACrF;AAAA,IACA,IAAI,YAAY,OAAO,aAAa,OAAO,YAAY,IAAI;AAAA,MACzD,MAAM,IAAI,wBAAwB,aAAa,mBAAmB,YAAY,IAAI;AAAA,IACpF;AAAA,IACA,IAAI,YAAY,OAAO,aAAa,OAAO,YAAY,IAAI;AAAA,MACzD,MAAM,IAAI,wBAAwB,aAAa,mBAAmB,YAAY,IAAI;AAAA,IACpF;AAAA,EACF;AAAA,EAEA,IAAI,YAAY,YAAY,aAAa,YAAY,QAAQ,SAAS,GAAG;AAAA,IACvE,IAAI,CAAC,YAAY,QAAQ,KAAK,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG;AAAA,MAC5D,MAAM,IAAI,wBACR,aAAa,wBAAwB,KAAK,UAAU,CAAC,GAAG,YAAY,OAAO,CAAC,GAC9E;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,YAAY,YAAY,aAAa,OAAO,UAAU,UAAU;AAAA,IAClE,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,KAAK,IAAI,OAAO,YAAY,OAAO;AAAA,MACnC,MAAM;AAAA,MACN,KAAK;AAAA;AAAA,IAEP,IAAI,OAAO,aAAa,CAAC,GAAG,KAAK,KAAK,GAAG;AAAA,MACvC,MAAM,IAAI,wBACR,aAAa,4BAA4B,KAAK,UAAU,YAAY,OAAO,GAC7E;AAAA,IACF;AAAA,EACF;AAAA;;;ACzLF,IAAM,eAAe;AACrB,IAAM,iBAAiB;AACvB,IAAM,eAAe;AACrB,SAAS,OAAO,GAAQ;AAAA,EACtB,MAAM,MAAY,YAAoB,WAAY,WAAmB,WAAW;AAAA,EAChF,IAAI,CAAC,KAAK;AAAA,IACR,MAAM,IAAI,MACR,wEACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAET,IAAM,KAAU,IAAI,MAAM,CAAC,GAAU;AAAA,EACnC,KAAK,CAAC,IAAI,SAAU,QAAQ,EAAE,YAAY,EAAU;AACtD,CAAC;AACD,IAAM,OAAY,IAAI,MAAM,CAAC,GAAU;AAAA,EACrC,KAAK,CAAC,IAAI,SAAU,QAAQ,EAAE,cAAc,EAAU;AACxD,CAAC;AACD,IAAM,KAAU,IAAI,MAAM,CAAC,GAAU;AAAA,EACnC,KAAK,CAAC,IAAI,SAAU,QAAQ,EAAE,YAAY,EAAU;AACtD,CAAC;AAIM,IAAM,oBAAoB;AAmIjC,IAAM,aAAa,IAAI;AAKvB,SAAS,YAAY,CAAC,GAAW,GAAa;AAAA,EAC5C,IAAI,OAAO,MAAM;AAAA,IAAU,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE;AAAA,EAC7D,OAAO;AAAA;AAET,SAAS,WAAW,CAAC,GAAW,GAAa;AAAA,EAC3C,IAAI,KAAK,OAAO,MAAM,YAAY,OAAQ,EAAU,eAAe,UAAU;AAAA,IAC3E,OAAO,OAAQ,EAAU,UAAU;AAAA,EACrC;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,YAAY,GAAW;AAAA,EAC9B,OAAO,QAAQ,IAAI,qBAAqB,KAAK,KAAK,GAAG,OAAO,GAAG,SAAS;AAAA;AAG1E,SAAS,OAAO,CAAC,SAAyB;AAAA,EACxC,OAAO,KAAK,KAAK,aAAa,GAAG,OAAO;AAAA;AAG1C,SAAS,OAAO,CAAC,aAAiC;AAAA,EAChD,IAAI,IAAI;AAAA,EACR,WAAW,KAAK;AAAA,IAAa,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,EAChE,OAAO;AAAA;AAKT,SAAS,eAAe,CAAC,UAAkB,OAAkB;AAAA,EAC3D,MAAM,MAAM,WAAW,UAAU,QAAQ,MAAM,MAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC;AAAA,EACvF,MAAM,SAAS,KAAK,QAAQ,QAAQ;AAAA,EACpC,GAAG,UAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,EACxC,GAAG,cAAc,KAAK,KAAK,UAAU,OAAO,YAAY,CAAC;AAAA,EACzD,GAAG,WAAW,KAAK,QAAQ;AAAA;AAG7B,SAAS,WAAW,CAAC,UAAmC;AAAA,EACtD,IAAI;AAAA,IACF,MAAM,OAAO,GAAG,aAAa,UAAU,MAAM;AAAA,IAC7C,OAAO,KAAK,MAAM,MAAM,WAAW;AAAA,IACnC,OAAO,GAAQ;AAAA,IACf,IAAI,GAAG,SAAS;AAAA,MAAU;AAAA,IAC1B,MAAM;AAAA;AAAA;AAUH,SAAS,iBAAiB,CAC/B,aACA,eACuB;AAAA,EACvB,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC/B,IAAI,QAAQ,WAAW,IAAI,GAAG;AAAA,EAC9B,IAAI,CAAC,OAAO;AAAA,IAEV,MAAM,MAAM,YAAY,KAAK,KAAK,QAAQ,GAAG,GAAG,cAAc,CAAC;AAAA,IAC/D,IAAI,CAAC;AAAA,MAAK;AAAA,IAGV,QAAQ;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,UAAU,IAAI;AAAA,MACd,YAAY,IAAI;AAAA,MAChB,QAAQ,IAAI;AAAA,IACd;AAAA,IACA,WAAW,IAAI,KAAK,KAAK;AAAA,EAC3B;AAAA,EACA,IAAI,eAAe;AAAA,IAKjB,WAAW,OAAO,eAAe;AAAA,MAC/B,MAAM,YAAY,KAAK,KAAK,QAAQ,GAAG,GAAG,IAAI,SAAS,IAAI,OAAO;AAAA,MAClE,MAAM,IAAI,YAAY,SAAS;AAAA,MAC/B,IAAI,MAAM,WAAW;AAAA,QACnB,MAAM,OAAO,IAAI,KAAK,CAAC;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,OAAO,OAAO,GAAG;AAAA;AAAA,MAEzB,MAAM,OAAO,IAAI,GAAG;AAAA,IACtB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,iBAAiB,CAC/B,aACA,OACM;AAAA,EACN,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC/B,WAAW,IAAI,KAAK,KAAK,OAAO,QAAQ,IAAI,IAAM,CAAC;AAAA,EAEnD,gBAAgB,KAAK,KAAK,QAAQ,GAAG,GAAG,cAAc,GAAG;AAAA,IACvD,YAAY,MAAM;AAAA,EAIpB,CAAC;AAAA;AAQI,SAAS,kBAAkB,CAChC,aACA,MACM;AAAA,EACN,MAAM,MAAM,QAAQ,WAAW;AAAA,EAC/B,MAAM,QAAQ,WAAW,IAAI,GAAG;AAAA,EAChC,IAAI,CAAC;AAAA,IAAO;AAAA,EACZ,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,YAAY,KAAK,KAAK,QAAQ,GAAG,GAAG,IAAI,SAAS,IAAI,OAAO;AAAA,IAClE,IAAI,MAAM,OAAO,IAAI,GAAG,GAAG;AAAA,MACzB,gBAAgB,WAAW,MAAM,OAAO,IAAI,GAAG,CAAC;AAAA,IAClD,EAAO;AAAA,MACL,IAAI;AAAA,QAAE,GAAG,WAAW,SAAS;AAAA,QAAK,MAAM;AAAA;AAAA,IAE1C,MAAM,OAAO,IAAI,GAAG;AAAA,EACtB;AAAA;;;ACpRK,SAAS,wBAAwB,CAAC,UAAoB,UAAkC;AAAA,EAC7F,SAAS,gBAAgB,CAAC,MAAiD;AAAA,IACzE,MAAM,OAAO,SAAS,IAAI,MAAM,EAAE,WAAW,IAAI,WAAa,aAAa,MAAM,UAAU,MAAM,CAAC;AAAA,IAClG,IAAI,CAAC,QAAQ,KAAK,SAAS,aAAa;AAAA,MACtC,MAAM,IAAI,MAAM,aAAa,oCAAoC;AAAA,IACnE;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAMd,SAAS,MAAM,kBAAkB;AAAA,IAC/B,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,eAAuB,YAAY;AAAA,MACzC,MAAM,MAAM,iBAAiB,YAAY;AAAA,MACzC,MAAM,WAAW,aAAa,YAAY,SAAS;AAAA,MACnD,MAAM,OAAO,qBAAqB,QAAQ;AAAA,MAC1C,MAAM,cAAc,YAAY,eAC5B,kBAAkB,aAAa,YAAY,YAAY,CAAC,IACxD;AAAA,MAKJ,MAAM,eAAe,YAAY,UAAU,aAAa,YAAY,OAAO,IAAI;AAAA,MAC/E,MAAM,eACJ,gBAAgB,aAAa,SAAS,IAAI,iBAAiB,YAAY,IAAI;AAAA,MAC7E,MAAM,UAAU,eAAe,kBAAkB,YAAY,IAAI,CAAC;AAAA,MAClE,MAAM,aAAuC;AAAA,QAC3C,MAAM,cAAc,KAAK,IAAI;AAAA,QAC7B,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC;AAAA,QACX;AAAA,MACF;AAAA,MACA,MAAM,cAAc,IAAI,WAAW,EAAE;AAAA,MACrC,OAAO,gBAAgB,WAAW;AAAA,MAClC,kBAAkB,aAAa;AAAA,QAC7B,QAAQ,IAAI;AAAA,QACZ,UAAU;AAAA,QACV;AAAA,MACF,CAAC;AAAA,MAKD,MAAM,UAAU,IAAI,SAAS,MAAM,IAAI,OAAO,UAAU,IAAI,IAAI;AAAA,MAChE,MAAM,YAAY,QAAW,CAAC,OAAM,UAAU,SAAS,IAAI,CAAC,CAAC;AAAA,MAC7D,OAAO,WACL,EAAE,eAAe,gBAAgB,SAAS,GAAG,cAAc,YAAY,GACvE,yBACF;AAAA;AAAA,EAEJ,CAAC;AAAA,EAKD,SAAS,MAAM,oBAAoB;AAAA,IACjC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC,WAAW;AAAA,MACnB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,eAAuB,YAAY;AAAA,MACzC,MAAM,cAAc,aAAa,YAAY,YAAY;AAAA,MACzD,MAAM,MAAM,iBAAiB,YAAY;AAAA,MACzC,MAAM,QAAQ,gBAAgB,aAAa,YAAY,WAAW,CAAC;AAAA,MACnE,IAAI,CAAC,SAAS,MAAM,YAAY;AAAA,QAAG,OAAO,WAAW,CAAC,GAAG,QAAW,CAAC,CAAC,CAAC;AAAA,MAEvE,MAAM,SAAS,MAAM,OAAO,OAAO,UAAU,CAAC,MAAM,EAAE,SAAS,iBAAiB;AAAA,MAChF,IAAI,SAAS,GAAG;AAAA,QACd,MAAM,IAAI,MAAM,yCAAyC,0BAA0B;AAAA,MACrF;AAAA,MACA,MAAM,SAAS,MAAM,WAAW,MAAM;AAAA,MACtC,MAAM,WAAqB,CAAC;AAAA,MAC5B,MAAM,aAAa,IAAI;AAAA,MACvB,SAAS,IAAI,EAAG,IAAI,MAAM,SAAS,KAAK;AAAA,QACtC,MAAM,IAAI,OAAO,IAAI,CAAC;AAAA,QACtB,MAAM,IAAI,OAAO,MAAM,WAAW,IAAI,OAAO,CAAQ;AAAA,QACrD,SAAS,KAAK,CAAC;AAAA,QACf,WAAW,IAAI,CAAC;AAAA,MAClB;AAAA,MACA,MAAM,OAAO,kBAAkB,aAAa,UAAU;AAAA,MACtD,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,IAAI,MAAM,+CAA+C,+CAA+C;AAAA,MAChH;AAAA,MAOA,MAAM,UAAiB,CAAC;AAAA,MACxB,SAAS,IAAI,EAAG,IAAI,MAAM,OAAO,OAAO,QAAQ,KAAK;AAAA,QACnD,IAAI,MAAM;AAAA,UAAQ;AAAA,QAClB,QAAQ,KAAK,MAAM,WAAW,CAAC,CAAC;AAAA,MAClC;AAAA,MACA,MAAM,cAAc,CAAC,QAAgB;AAAA,QACnC,IAAI,IAAI,KAAK,OAAO,IAAI,GAAG;AAAA,QAC3B,IAAI,MAAM,WAAW;AAAA,UACnB,IAAI,IAAI,aAAa,KAAK,UAAU;AAAA,UACpC,KAAK,OAAO,IAAI,KAAK,CAAC;AAAA,QACxB;AAAA,QACA,OAAO;AAAA;AAAA,MAET,IAAI,OAAO;AAAA,QACT,QAAQ,KAAK;AAAA,QACb;AAAA,QACA;AAAA,QACA,MAAM,KAAK,WAAW;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,MAMD,mBAAmB,aAAa,UAAU;AAAA,MAC1C,OAAO,WAAW,CAAC,GAAG,QAAW,CAAC,CAAC,CAAC;AAAA;AAAA,EAExC,CAAC;AAAA,EAKD,SAAS,MAAM,qBAAqB;AAAA,IAClC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC,WAAW;AAAA,MACnB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,eAAuB,YAAY;AAAA,MACzC,MAAM,cAAc,aAAa,YAAY,YAAY;AAAA,MACzD,MAAM,MAAM,iBAAiB,YAAY;AAAA,MACzC,MAAM,QAAQ,gBAAgB,aAAa,YAAY,WAAW,CAAC;AAAA,MACnE,IAAI,CAAC,SAAS,MAAM,YAAY;AAAA,QAAG,OAAO,WAAW,CAAC,GAAG,QAAW,CAAC,CAAC,CAAC;AAAA,MAEvE,MAAM,SAAS,MAAM,SAAS,iBAAiB;AAAA,MAC/C,MAAM,SAAS,MAAM,SAAS,iBAAiB;AAAA,MAC/C,MAAM,iBAAiB,IAAI;AAAA,MAC3B,MAAM,SAAmB,CAAC;AAAA,MAC1B,MAAM,SAAmB,CAAC;AAAA,MAC1B,SAAS,IAAI,EAAG,IAAI,MAAM,SAAS,KAAK;AAAA,QACtC,MAAM,MAAM,OAAO,OAAO,IAAI,CAAC,CAAQ;AAAA,QACvC,MAAM,MAAM,OAAO,OAAO,IAAI,CAAC,CAAQ;AAAA,QACvC,OAAO,KAAK,GAAG;AAAA,QAAG,OAAO,KAAK,GAAG;AAAA,QACjC,eAAe,IAAI,GAAG;AAAA,QAAG,eAAe,IAAI,GAAG;AAAA,MACjD;AAAA,MACA,MAAM,OAAO,kBAAkB,aAAa,cAAc;AAAA,MAC1D,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,IAAI,MACR,gDAAgD,mBAChD,0EACF;AAAA,MACF;AAAA,MACA,MAAM,iBAAiB,IAAI;AAAA,MAC3B,SAAS,IAAI,EAAG,IAAI,MAAM,SAAS,KAAK;AAAA,QACtC,MAAM,MAAM,OAAO;AAAA,QACnB,MAAM,MAAM,OAAO;AAAA,QACnB,MAAM,SAAS,KAAK,OAAO,IAAI,GAAG;AAAA,QAClC,MAAM,SAAS,KAAK,OAAO,IAAI,GAAG;AAAA,QAClC,IAAI,CAAC,UAAU,CAAC;AAAA,UAAQ;AAAA,QACxB,MAAM,WAAW,SAAS,KAAK,OAAO,IAAI,GAAG,IAAK,IAAI,aAAa,KAAK,UAAU;AAAA,QAClF,MAAM,WAAW,SAAS,KAAK,OAAO,IAAI,GAAG,IAAK,IAAI,aAAa,KAAK,UAAU;AAAA,QAClF,KAAK,OAAO,IAAI,KAAK,IAAI,QAAQ,UAAU,UAAU,KAAK,UAAU,CAAC;AAAA,QACrE,eAAe,IAAI,GAAG;AAAA,MACxB;AAAA,MACA,mBAAmB,aAAa,cAAc;AAAA,MAC9C,OAAO,WAAW,CAAC,GAAG,QAAW,CAAC,CAAC,CAAC;AAAA;AAAA,EAExC,CAAC;AAAA,EAKD,SAAS,MAAM,sBAAsB;AAAA,IACnC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC,WAAW;AAAA,MACnB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,eAAuB,YAAY;AAAA,MACzC,MAAM,cAAc,aAAa,YAAY,YAAY;AAAA,MACzD,MAAM,MAAM,iBAAiB,YAAY;AAAA,MACzC,MAAM,eAAe,kBAAkB,aAAa,YAAY,aAAa,CAAC;AAAA,MAC9E,MAAM,WAAW,gBAAgB,aAAa,YAAY,eAAe,CAAC;AAAA,MAC1E,MAAM,WAAqB,CAAC;AAAA,MAC5B,MAAM,aAAa,IAAI;AAAA,MACvB,IAAI,UAAU;AAAA,QACZ,MAAM,MAAM,SAAS,SAAS,UAAU;AAAA,QACxC,SAAS,IAAI,EAAG,IAAI,SAAS,SAAS,KAAK;AAAA,UACzC,MAAM,IAAI,IAAI,IAAI,CAAC;AAAA,UACnB,MAAM,IAAI,OAAO,MAAM,WAAW,IAAI,OAAO,CAAQ;AAAA,UACrD,SAAS,KAAK,CAAC;AAAA,UACf,WAAW,IAAI,CAAC;AAAA,QAClB;AAAA,MACF;AAAA,MACA,MAAM,OAAO,kBAAkB,aAAa,UAAU;AAAA,MACtD,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,IAAI,MAAM,iDAAiD,eAAe;AAAA,MAClF;AAAA,MAGA,MAAM,SAAS,IAAI;AAAA,MACnB,WAAW,OAAO,UAAU;AAAA,QAC1B,OAAO,IAAI,KAAK,KAAK,OAAO,IAAI,GAAG,IAAI,KAAK,OAAO,IAAI,GAAG,IAAI,IAAI;AAAA,MACpE;AAAA,MACA,MAAM,cAAc,IAAI,SAAS;AAAA,QAC/B;AAAA,QAAU;AAAA,QAAQ;AAAA,QAAc,MAAM,KAAK,WAAW;AAAA,MACxD,CAAC;AAAA,MACD,OAAO,WACL,EAAE,cAAc,yBAAyB,WAAW,EAAE,GACtD,6BACF;AAAA;AAAA,EAEJ,CAAC;AAAA,EAWD,SAAS,MAAM,wBAAwB;AAAA,IACrC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,CAAC,WAAW;AAAA,MACnB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,cAAc,aAAa,YAAY,YAAY;AAAA,MACzD,MAAM,OAAO,kBAAkB,WAAW;AAAA,MAC1C,IAAI,CAAC;AAAA,QAAM,OAAO,WAAW,CAAC,GAAG,QAAW,CAAC,CAAC,CAAC;AAAA,MAC/C,MAAM,WAAW,gBAAgB,aAAa,YAAY,eAAe,CAAC;AAAA,MAC1E,IAAI,CAAC,YAAY,SAAS,YAAY;AAAA,QAAG,OAAO,WAAW,CAAC,GAAG,QAAW,CAAC,CAAC,CAAC;AAAA,MAC7E,MAAM,MAAM,SAAS,SAAS,UAAU;AAAA,MACxC,MAAM,SAAS,IAAI;AAAA,MACnB,SAAS,IAAI,EAAG,IAAI,SAAS,SAAS,KAAK;AAAA,QACzC,MAAM,IAAI,IAAI,IAAI,CAAC;AAAA,QACnB,MAAM,IAAI,OAAO,MAAM,WAAW,IAAI,OAAO,CAAQ;AAAA,QACrD,KAAK,OAAO,OAAO,CAAC;AAAA,QACpB,OAAO,IAAI,CAAC;AAAA,MACd;AAAA,MAGA,mBAAmB,aAAa,MAAM;AAAA,MACtC,OAAO,WAAW,CAAC,GAAG,QAAW,CAAC,CAAC,CAAC;AAAA;AAAA,EAExC,CAAC;AAAA;AAGH,SAAS,aAAa,CACpB,KACA,MACqB;AAAA,EACrB,MAAM,MAA2B,CAAC;AAAA,EAKlC,MAAM,WAAW,IAAI,IAAI,IAAI,eAAe,CAAC,CAAC;AAAA,EAC9C,MAAM,aAAuB,CAAC;AAAA,EAC9B,IAAI,IAAI,MAAM;AAAA,IACZ,WAAW,QAAQ,OAAO,KAAK,IAAI,IAAI,GAAG;AAAA,MACxC,IAAI,SAAS,IAAI,IAAI;AAAA,QAAG,WAAW,KAAK,IAAI;AAAA,IAC9C;AAAA,EACF;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,WAAW,QAAQ,KAAK;AAAA,IAC1C,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,IAAI,KAAK,IAAI,CAAC;AAAA,MAId,MAAM,SAAQ,KAAK,iBAAiB,OAAO,KAAK,OAAK,EAAE,SAAS,cAAc,GAAG;AAAA,MACjF,IAAI,UAAS,UAAU,OAAM,IAAI,GAAG;AAAA,QAClC,MAAM,QAAS,OAAM,KAAa;AAAA,QAClC,IAAI,OAAO,MAAM;AAAA,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK;AAAA,QACxD,SAAI,OAAO,MAAM;AAAA,UAAU,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK;AAAA,MAC5D,EAAO,SAAI,OAAO,MAAM,UAAU;AAAA,QAChC,IAAI,OAAO,CAAC;AAAA,MACd;AAAA,MACA,MAAM;AAAA,MAIN,MAAM,MAAM,IAAI,cAAc,WAAW;AAAA,MACzC,IAAI,QAAQ;AAAA,QAAW,IAAI,WAAW,MAAM;AAAA,MAC5C;AAAA;AAAA,IAKF,MAAM,cAAc,IAAI,iBAAiB,WAAW;AAAA,IACpD,IAAI,gBAAgB,WAAW;AAAA,MAC7B,yBAAyB,WAAW,IAAI,aAAa,CAAC;AAAA,IACxD;AAAA,IACA,IAAI,WAAW,MAAM;AAAA,EACvB;AAAA,EAGA,IAAI,IAAI,aAAa;AAAA,IACnB,YAAY,MAAM,QAAQ,OAAO,QAAQ,IAAI,WAAW,GAAG;AAAA,MACzD,IAAI,EAAE,QAAQ,QAAQ,CAAC,SAAS,IAAI,IAAI;AAAA,QAAG,IAAI,QAAQ;AAAA,IACzD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,OAAoC;AAAA,EAC3D,IAAI,CAAC,SAAS,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EACzC,MAAM,QAAQ,iBAAiB,KAAK;AAAA,EACpC,OAAO,MAAM,YAAY,KAAK,MAAM,OAAO,OAAO,WAAW,IAAI,OAAO;AAAA;AAG1E,SAAS,wBAAwB,CAAC,OAA6B;AAAA,EAG7D,OAAO,eAAe,KAAK;AAAA;;;AC/U7B;;;AC4dO,SAAS,mBAAmB,CACjC,SACwD;AAAA,EACxD,OAAO,WAAW,aAAa,iBAAiB,SAAS,CAAC;AAAA,EAC1D,MAAM,YAAY,iBAAiB,SAAS;AAAA,EAC5C,MAAM,WAAW,kBAAkB,SAAS;AAAA,EAC5C,MAAM,UAAU,uBAAuB,QAAQ;AAAA,EAC/C,MAAM,WAAW,yBAAyB,SAAS;AAAA,EACnD,OAAO,EAAE,SAAS,SAAS;AAAA;AAa7B,SAAS,wBAAwB,CAAC,OAAuC;AAAA,EACvE,OAAO,KAAK,QAAQ,SAAS,iBAAiB,OAAO,CAAC;AAAA,EACtD,MAAM,aAAa,OAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;AAAA,EAC9F,OAAO;AAAA,IACL,cAAc;AAAA,IACd,aAAa,OAAO,SAAS,IAAI,SAAS;AAAA,IAC1C,aAAa;AAAA,EACf;AAAA;AAkBF,SAAS,gBAAgB,CAAC,KAAiB,OAA6B;AAAA,EACtE,MAAM,KAAK,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAAA,EAClE,MAAM,QAAsB,CAAC;AAAA,EAC7B,IAAI,MAAM;AAAA,EACV,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,MAAM,MAAM,GAAG,UAAU,KAAK,IAAI;AAAA,IAClC,OAAO;AAAA,IACP,MAAM,KAAK,IAAI,SAAS,KAAK,MAAM,GAAG,CAAC;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;;;ADxgBF,SAAS,6BAA6B,CAC3C,UACA,UACA,YACM;AAAA,EACN,SAAS,gBAAgB,CAAC,MAAyC;AAAA,IACjE,MAAM,OAAO,SAAS,IAAI,MAAM;AAAA,MAC9B,WAAW,IAAI;AAAA,MACf,aAAa;AAAA,MACb,UAAU;AAAA,IACZ,CAAC;AAAA,IACD,IAAI,CAAC,QAAQ,KAAK,SAAS,mBAAmB;AAAA,MAC5C,MAAM,IAAI,MAAM,aAAa,yCAAyC;AAAA,IACxE;AAAA,IACA,OAAO;AAAA;AAAA,EAIT,eAAe,UAAU,CACvB,OACA,WACA,KACiF;AAAA,IACjF,MAAM,eAAuB,MAAM;AAAA,IACnC,MAAM,cAAc,aAAa,MAAM,YAAY;AAAA,IAMnD,MAAM,YAAY,MAAM,qBAAqB,aAAa,MAAM,kBAAkB,IAAI;AAAA,IACtF,MAAM,SACJ,aAAa,UAAU,SAAS,IAC5B,MAAM,WAAW,WAAW,KAAK,MAAM,UAAU,IACjD;AAAA,IACN,MAAM,gBAAgB,MAAM,iBAAiB,aAAa,MAAM,cAAc,IAAI;AAAA,IAElF,MAAM,OAAO,iBAAiB,YAAY;AAAA,IAC1C,MAAM,QAAQ,IAAI,aAAa,SAAgB,WAAW;AAAA,IAC1D,MAAM,UAAU,MAAM,MAAM,SAC1B,YAAY,gBACZ,aAAa,WAAW,EAAE,CAC5B;AAAA,IACA,IAAI,WAAW,MAAM;AAAA,MACnB,MAAM,IAAI,MACR,yCAAyC,IAAI,WAAW,OACtD,8CACJ;AAAA,IACF;AAAA,IACA,QAAQ,YAAY,oBAAoB,OAAO;AAAA,IAC/C,MAAM,OAAO,KAAK,qBAAqB,QAAQ,SAAS;AAAA,IACxD,MAAM,WAAW,kBAAkB,QAAQ,UAAU,QAAQ;AAAA,IAC7D,MAAM,UAAU,kBAAkB,QAAQ,UAAU,OAAO;AAAA,IAE3D,MAAM,SAAoC;AAAA,MACxC;AAAA,MACA,UAAU;AAAA,MACV,cAAc,QAAQ;AAAA,MACtB;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,UAAU,UAAU,IAAI,WAAW,CAAC;AAAA,MACpC;AAAA,MACA,eAAe;AAAA,MACf,YAAY;AAAA,MACZ;AAAA,IACF;AAAA,IACA,OAAO,EAAE,MAAM,OAAO;AAAA;AAAA,EAMxB,SAAS,MAAM,2BAA2B;AAAA,IACxC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW,QAAc;AAAA,MACvC,MAAM,QAAQ,cAAc,UAAU,OAAO;AAAA,MAC7C,MAAM,YAAY,cAAc,GAAG;AAAA,MACnC,QAAQ,MAAM,WAAW,MAAM,WAAW,OAAO,WAAW,GAAG;AAAA,MAC/D,IAAI,MAAM,eAAe,MAAM;AAAA,QAC7B,OAAO,aAAa,OAAO,MAAM,WAAW;AAAA,MAC9C;AAAA,MACA,MAAM,QAAQ,iBAAiB,aAAa,MAAM,WAAW,CAAC;AAAA,MAC9D,MAAM,UAAU,MAAM,KAAK,gBAAgB,QAAQ,OAAO,MAAM;AAAA,MAChE,IAAI,EAAE,mBAAmB,aAAa;AAAA,QACpC,MAAM,IAAI,MACR,GAAG,KAAK,KAAK,6DACf;AAAA,MACF;AAAA,MACA,OAAO,WAAW,EAAE,UAAU,QAAQ,GAAG,iCAAiC;AAAA;AAAA,EAE9E,CAAC;AAAA,EAKD,SAAS,MAAM,2BAA2B;AAAA,IACxC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW,QAAc;AAAA,MACvC,MAAM,QAAQ,cAAc,UAAU,OAAO;AAAA,MAC7C,MAAM,YAAY,cAAc,GAAG;AAAA,MACnC,QAAQ,MAAM,WAAW,MAAM,WAAW,OAAO,WAAW,GAAG;AAAA,MAC/D,MAAM,WAAW,gBAAgB,MAAM,SAAS;AAAA,MAChD,MAAM,mBAAmB,MAAM,KAAK,gBAAgB,QAAQ,UAAU,MAAM;AAAA,MAC5E,MAAM,MAAM,iBAAiB,IAAI,CAAC,KAAK,MAAM;AAAA,QAC3C,IAAI,EAAE,eAAe,aAAa;AAAA,UAChC,MAAM,IAAI,MACR,GAAG,KAAK,KAAK,qEAAqE,GACpF;AAAA,QACF;AAAA,QACA,OAAO;AAAA,OACR;AAAA,MACD,OAAO,WACL,EAAE,oBAAoB,IAAI,GAC1B,iCACF;AAAA;AAAA,EAEJ,CAAC;AAAA,EAKD,SAAS,MAAM,8BAA8B;AAAA,IAC3C,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,cAAc;AAAA,MAC5B,IAAI;AAAA,QACF,MAAM,QAAQ,cAAc,UAAU,OAAO;AAAA,QAC7C,MAAM,cAAc,aAAa,MAAM,YAAY;AAAA,QACnD,MAAM,QAAQ,IAAI,aAAa,SAAgB,WAAW;AAAA,QAC1D,MAAM,MAAM,eAAe;AAAA,QAC3B,MAAM;AAAA,MAGR,OAAO,WAAW,CAAC,GAAG,oCAAoC;AAAA;AAAA,EAE9D,CAAC;AAAA;AAGH,SAAS,aAAa,CAAC,KAAoD;AAAA,EACzE,IAAI,OAAO,OAAO,IAAI,cAAc,YAAY;AAAA,IAC9C,OAAO,CAAC,OAAe,YAAoB,IAAI,UAAU,OAAO,OAAO;AAAA,EACzE;AAAA,EACA,OAAO,MAAM;AAAA;AAGf,SAAS,eAAe,CAAC,KAAwB;AAAA,EAC/C,IAAI,OAAO;AAAA,IAAM,OAAO,CAAC;AAAA,EACzB,MAAM,MAAoB,CAAC;AAAA,EAC3B,MAAM,OAAsB,MAAM,QAAQ,GAAG,IACzC,MACA,OAAO,IAAI,OAAO,cAAc,aAChC,MACA,CAAC;AAAA,EACL,WAAW,SAAS,MAAM;AAAA,IACxB,IAAI,SAAS;AAAA,MAAM;AAAA,IACnB,IAAI,KAAK,aAAa,KAAK,CAAC;AAAA,EAC9B;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,GAAG,CAAC,KAAyB;AAAA,EACpC,OAAO,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA;;;AEvKjE,SAAS,SAAS,CACvB,SACA,KACY;AAAA,EACZ,OAAO,eAAe,cAAc,CAAC,GAAG,GAAG,OAAM,CAAC;AAAA;;;AC0f7C,IAAM,oBAAoB,CAAC,MAA+B,UAAU,mBAAmB,CAAC;AAExF,IAAM,qBAAqB,CAAC,MAAgC,UAAU,oBAAoB,CAAC;AAE3F,IAAM,kBAAkB,CAAC,MAA6B,UAAU,iBAAiB,CAAC;AAElF,IAAM,kBAAkB,CAAC,MAA6B,UAAU,iBAAiB,CAAC;AAElF,IAAM,mBAAmB,CAAC,MAA8B,UAAU,kBAAkB,CAAC;AAErF,IAAM,kBAAkB,CAAC,MAA6B,UAAU,iBAAiB,CAAC;AAElF,IAAM,iBAAiB,CAAC,MAA4B,UAAU,gBAAgB,CAAC;;;AClc/E,IAAM,2BAA2B,CAAC,MACvC,UAAU,0BAA0B;AAAA,EAClC,SAAS,EAAE,WAAW;AAAA,EACtB,MAAM,EAAE,QAAQ,CAAC;AAAA,EACjB,aAAa,EAAE;AAAA,EACf,SAAS,EAAE;AAAA,EACX,SAAS,EAAE;AAAA,EACX,WAAW,EAAE,aAAa;AAAA,EAC1B,aAAa,EAAE,eAAe;AAAA,EAC9B,SAAS,EAAE,WAAW;AACxB,CAAC;;;AC/EI,SAAS,2BAA2B,CAAC,UAAoB,YAAwB,YAA+B;AAAA,EAErH,aAAa,UAAU,YAAY,oBAAoB;AAAA,IACrD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,YAAY;AAAA,MACnB,MAAM,MAAM,WAAW;AAAA,MAKvB,MAAM,QAAQ,IAAI,eACd,MAAM,IAAI,aAAa,IACvB,IAAI,SAAS,EAAE,IAAI,CAAC,UAAU;AAAA,QAC5B;AAAA,QACA,wBAAwB;AAAA,QACxB,mBAAmB;AAAA,QACnB,qBAAqB,CAAC;AAAA,QACtB,UAAU,CAAC;AAAA,MACb,EAAE;AAAA,MACN,MAAM,QAAQ,MAAM,IAAI,CAAC,SAAS,kBAAkB,IAAI,CAAC;AAAA,MACzD,OAAO,WAAW,EAAE,MAAM,GAAG,2BAA2B;AAAA;AAAA,EAE5D,CAAC;AAAA,EAGD,SAAS,MAAM,kBAAkB;AAAA,IAC/B,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,QAAQ,QAAQ;AAAA,MAC9B,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,MAAM,WAAW;AAAA,MAKvB,MAAM,cAAc,mBAAmB,YAAY,OAAO;AAAA,MAC1D,MAAM,SAAS,MAAM,IAAI,OACvB,YAAY,MACZ,aACA,YAAY,qBAAqB,MACjC,YAAY,0BAA0B,IACxC;AAAA,MAIA,MAAM,eAAe,MAAM,WACzB,aAAa,OAAO,kBAAkB,GACrC,KAAiC,MAClC,UACF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,oBAAoB;AAAA,QACpB,uBAAuB,OAAO;AAAA,QAC9B,sBAAsB,OAAO;AAAA,QAC7B,wBAAwB,OAAO;AAAA,QAC/B,iBAAiB,OAAO;AAAA,QACxB,6BAA6B,OAAO,+BAA+B;AAAA,QACnE,gBAAgB,OAAO,kBAAkB;AAAA,QACzC,UAAU,OAAO,YAAY,CAAC;AAAA,QAC9B,cAAc,OAAO,gBAAgB,CAAC;AAAA,QACtC,iBAAiB,OAAO,mBAAmB,CAAC;AAAA,QAC5C,SAAS,OAAO,WAAW;AAAA,QAC3B,MAAM,OAAO,QAAQ,CAAC;AAAA,QAKtB,4BAA4B,OAAO,8BAA8B;AAAA,QACjE,uBAAuB,OAAO,yBAAyB;AAAA,QACvD,iCAAiC,OAAO,mCAAmC;AAAA,MAC7E,GAAG,yBAAyB;AAAA;AAAA,EAEhC,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,kBAAkB;AAAA,IACnD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,OAAO,aAAa,OAAO,kBAAkB,CAAC;AAAA,MACxD,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,kBAAkB;AAAA,IACnD,QAAQ,QAAO;AAAA,MACb,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,WAAW,QAAO,GAAG,IAAI;AAAA,IACjC,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,OAAO,OAAO,MAAM,OAAO,aAAa,OAAO,OAAO;AAAA,MAChE,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,gBAAgB;AAAA,IACjD,QAAQ,QAAO,CAAC,OAAM,QAAQ,MAAK,GAAG,KAAK,CAAC,CAAC;AAAA,IAC7C,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,KAAK,OAAO,IAAI;AAAA,MAC1B,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,mBAAmB;AAAA,IACpD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,UAAU,MAAM,IAAI,QACxB,aAAa,OAAO,kBAAkB,GACtC,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW,EAAE,QAAQ,GAAG,0BAA0B;AAAA;AAAA,EAE7D,CAAC;AAAA,EAKD,SAAS,MAAM,6BAA6B;AAAA,IAC1C,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,QAAQ,QAAQ;AAAA,MAC9B,MAAM,OAAQ,KAAiC;AAAA,MAC/C,MAAM,eACJ,OAAO,sBAAsB,OAAO,aAAa,OAAO,kBAAkB,IAAI,IAAI,WAAW,CAAC;AAAA,MAChG,MAAM,cAAc,MAAM,WAAW,cAAc,MAAM,UAAU;AAAA,MACnE,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,UAAU,MAAM,IAAI,iBAAiB,WAAW;AAAA,MAGtD,MAAM,0BACJ,WAAW,OAAO,MAAM,gBAAgB,aAAa,OAAO,GAAG,cAAc,MAAM,UAAU,IAAI;AAAA,MACnG,OAAO,WAAW,EAAE,wBAAwB,GAAG,mCAAmC;AAAA;AAAA,EAEtF,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,8BAA8B;AAAA,IAC/D,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,kBACR,aAAa,OAAO,kBAAkB,GACtC,aAAa,OAAO,uBAAuB,CAC7C;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,gCAAgC;AAAA,IACjE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,oBACR,aAAa,OAAO,kBAAkB,GACtC,aAAa,OAAO,uBAAuB,CAC7C;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,mBAAmB;AAAA,IACpD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,UAAU,MAAM,IAAI,QACxB,aAAa,OAAO,kBAAkB,GACtC,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,QAAQ,IAAI,CAAC,MAAM,iBAAiB,CAAC,CAAC;AAAA,MAC/C,GAAG,0BAA0B;AAAA;AAAA,EAEjC,CAAC;AAAA,EAID,aAAa,UAAU,YAAY,6BAA6B;AAAA,IAC9D,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,UAAU,MAAM,IAAI,gBACxB,aAAa,OAAO,kBAAkB,GACtC,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,QAAQ,IAAI,CAAC,MAAM,yBAAyB,CAAC,CAAC;AAAA,MACvD,GAAG,kCAAkC;AAAA;AAAA,EAEzC,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,sBAAsB;AAAA,IACvD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,OAAO,MAAM,IAAI,UACrB,aAAa,OAAO,kBAAkB,GACtC,OAAO,MACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,OAAO,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC;AAAA,MAC5C,GAAG,4BAA4B;AAAA;AAAA,EAEnC,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,yBAAyB;AAAA,IAC1D,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,MAC7B,OAAM,QAAQ,QAAO,GAAG,IAAI;AAAA,MAC5B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,aACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,MACP,OAAO,SACP,MACA,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,uBAAuB;AAAA,IACxD,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,MACtC,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,MAC7B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,WACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,MACP,OAAO,kBACP,OAAO,SACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,kCAAkC;AAAA,IACnE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,SAAS,MAAM,IAAI,qBACvB,aAAa,OAAO,kBAAkB,GACtC,OAAO,MACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,OAAO,IAAI,CAAC,MAAM,gBAAgB,CAAC,CAAC;AAAA,MAC7C,GAAG,uCAAuC;AAAA;AAAA,EAE9C,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,iCAAiC;AAAA,IAClE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,QAAQ,MAAM,IAAI,oBACtB,aAAa,OAAO,kBAAkB,GACtC,OAAO,MACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,MAAM,IAAI,CAAC,MAAM,eAAe,CAAC,CAAC;AAAA,MAC3C,GAAG,sCAAsC;AAAA;AAAA,EAE7C,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,qCAAqC;AAAA,IACtE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,QAAQ,MAAM,IAAI,wBACtB,aAAa,OAAO,kBAAkB,GACtC,OAAO,MACP,gBAAgB,OAAO,IAAI,GAC3B,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,MAAM,IAAI,CAAC,MAAM,mBAAmB,CAAC,CAAC;AAAA,MAC/C,GAAG,0CAA0C;AAAA;AAAA,EAEjD,CAAC;AAAA;;;ACnVI,SAAS,2BAA2B,CAAC,UAAoB,YAAwB,YAA+B;AAAA,EAErH,aAAa,UAAU,YAAY,qBAAqB;AAAA,IACtD,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,MAC7B,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,MAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,OAAO,MAAM,IAAI,SACrB,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,SACP,OAAO,UACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,OAAO,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC;AAAA,MAC3C,GAAG,2BAA2B;AAAA;AAAA,EAElC,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,wBAAwB;AAAA,IACzD,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,WAAW,QAAO,GAAG,KAAK;AAAA,MAChC,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,wBAAwB,MAAK,OAAM,QAAQ,OAAM,GAAG,KAAK,CAAC,GAAG,IAAI;AAAA,MACvE,OAAM,sBAAsB,MAAK,OAAM,QAAQ,MAAK,OAAM,QAAQ,OAAM,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI;AAAA,MACjG,OAAM,qBAAqB,MAAK,OAAM,QAAQ,MAAK,GAAG,KAAK,CAAC,GAAG,IAAI;AAAA,MACnE,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,YACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,aAAa,OAAO,OAAO,GAC3B,OAAO,aACP,OAAO,wBAAwB,CAAC,GAChC,OAAO,sBAAsB,CAAC,GAC9B,OAAO,qBAAqB,CAAC,GAC7B,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,sBAAsB;AAAA,IACvD,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,MACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,UACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,uCAAuC;AAAA,IACxE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,QAAQ,MAAM,IAAI,yBACtB,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,EAAE,QAAQ,OAAO,SAAS,KAAK;AAAA;AAAA,EAE1C,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,mCAAmC;AAAA,IACpE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,MAC7B,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,MAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,aAAa,MAAM,IAAI,qBAC3B,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,SACP,OAAO,UACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW,YAAY,wBAAwB;AAAA;AAAA,EAE1D,CAAC;AAAA,EAKD,aAAa,UAAU,YAAY,mCAAmC;AAAA,IACpE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,WAAW,MAAK,GAAG,IAAI;AAAA,MAC7B,OAAM,YAAY,MAAK,GAAG,IAAI;AAAA,MAC9B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,iBAAiB,MAAM,IAAI,qBAC/B,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,SACP,OAAO,UACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW,gBAAgB,wBAAwB;AAAA;AAAA,EAE9D,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,6BAA6B;AAAA,IAC9D,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,gBACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,SACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,wBAAwB;AAAA,IACzD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,YACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,UACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,4BAA4B;AAAA,IAC7D,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,iBAAiB,MAAK,GAAG,IAAI;AAAA,MACnC,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,MACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,eACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,aACP,OAAO,aACP,OAAO,eACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,6BAA6B;AAAA,IAC9D,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,gBACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,aACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,+BAA+B;AAAA,IAChE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,YAAY,MAAK,GAAG,KAAK;AAAA,MAC/B,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,MACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,kBACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,aACP,OAAO,UACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,oCAAoC;AAAA,IACrE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,iBAAiB,MAAK,GAAG,KAAK;AAAA,MACpC,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,MACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,sBACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,aACP,OAAO,eACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,qCAAqC;AAAA,IACtE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,uBACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,aACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,oCAAoC;AAAA,IACrE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,YAAY,MAAK,GAAG,KAAK;AAAA,MAC/B,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,MACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,sBACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,aACP,OAAO,UACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,8BAA8B;AAAA,IAC/D,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,gBACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,aACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,+BAA+B;AAAA,IAChE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,iBACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,aACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA;;;ACzXI,SAAS,0BAA0B,CAAC,UAAoB,YAAwB,YAA+B;AAAA,EAEpH,aAAa,UAAU,YAAY,oBAAoB;AAAA,IACrD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,OAAO,MAAM,IAAI,QACrB,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,OAAO,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC;AAAA,MAC1C,GAAG,0BAA0B;AAAA;AAAA,EAEjC,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,uBAAuB;AAAA,IACxD,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,cAAc,MAAK,GAAG,KAAK;AAAA,MACjC,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,WACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,YACP,OAAO,aACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,qBAAqB;AAAA,IACtD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,SACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,uBAAuB;AAAA,IACxD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,WACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,UACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,4BAA4B;AAAA,IAC7D,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,eACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,SACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA;;;AC3FI,SAAS,2BAA2B,CAAC,UAAoB,YAAwB,YAA+B;AAAA,EAErH,aAAa,UAAU,YAAY,qBAAqB;AAAA,IACtD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,OAAO,MAAM,IAAI,SACrB,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,OAAO,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC;AAAA,MAC3C,GAAG,2BAA2B;AAAA;AAAA,EAElC,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,wBAAwB;AAAA,IACzD,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,cAAc,cAAc,OAAO,OAAO;AAAA,MAChD,MAAM,IAAI,YACR,aAAa,YAAY,kBAAkB,GAC3C,YAAY,aACZ,YAAY,MACZ,YAAY,YACZ,YAAY,aAAc,MAAM,QAAQ,YAAY,UAAU,IAAI,YAAY,aAAa,CAAC,GAAG,YAAY,UAAU,IAAK,CAAC,GAC3H,YAAY,YACZ,YAAY,aACZ,YAAY,2BAA2B,aAAa,YAAY,wBAAwB,IAAI,MAC5F,YAAY,mBAAmB,aAAa,YAAY,gBAAgB,IAAI,MAC5E,YAAY,0BAA0B,aAAa,YAAY,uBAAuB,IAAI,SAC5F;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,sBAAsB;AAAA,IACvD,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,oBAAoB,MAAK,GAAG,IAAI;AAAA,MACtC,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,IAAI,UACR,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,kBACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,CAAC;AAAA;AAAA,EAEZ,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,kCAAkC;AAAA,IACnE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,SAAS,MAAM,IAAI,qBACvB,aAAa,OAAO,kBAAkB,GACtC,OAAO,MACP,gBAAgB,OAAO,IAAI,GAC3B,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,OAAO,IAAI,CAAC,MAAM,gBAAgB,CAAC,CAAC;AAAA,MAC7C,GAAG,uCAAuC;AAAA;AAAA,EAE9C,CAAC;AAAA;;;AC5FI,SAAS,2BAA2B,CAAC,UAAoB,YAAwB,YAA+B;AAAA,EAErH,aAAa,UAAU,YAAY,mCAAmC;AAAA,IACpE,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,UAAU,MAAM,IAAI,sBACxB,aAAa,OAAO,kBAAkB,GACtC,OAAO,MACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,QAAQ,IAAI,CAAC,MAAM,gBAAgB,CAAC,CAAC;AAAA,MAC9C,GAAG,wCAAwC;AAAA;AAAA,EAE/C,CAAC;AAAA,EAGD,aAAa,UAAU,YAAY,qBAAqB;AAAA,IACtD,QAAQ,QAAO;AAAA,MACb,OAAM,sBAAsB,QAAO,GAAG,IAAI;AAAA,MAC1C,OAAM,eAAe,MAAK,GAAG,KAAK;AAAA,MAClC,OAAM,QAAQ,MAAK,GAAG,KAAK;AAAA,MAC3B,OAAM,2BAA2B,QAAO,GAAG,IAAI;AAAA,IACjD,CAAC;AAAA,IACD,QAAQ;AAAA,IACR,SAAS,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM,WAAW;AAAA,MACvB,MAAM,OAAO,MAAM,IAAI,SACrB,aAAa,OAAO,kBAAkB,GACtC,OAAO,aACP,OAAO,MACP,OAAO,0BAA0B,aAAa,OAAO,uBAAuB,IAAI,SAClF;AAAA,MACA,OAAO,WAAW;AAAA,QAChB,OAAO,OAAO,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC;AAAA,MAC3C,GAAG,2BAA2B;AAAA;AAAA,EAElC,CAAC;AAAA;;;ACnDI,SAAS,sBAAsB,CACpC,UACA,SACA,cACA,YACM;AAAA,EACN,MAAM,aAAa,eAAe,OAAO;AAAA,EACzC,4BAA4B,UAAU,YAAY,UAAU;AAAA,EAC5D,4BAA4B,UAAU,YAAY,UAAU;AAAA,EAC5D,2BAA2B,UAAU,YAAY,UAAU;AAAA,EAC3D,4BAA4B,UAAU,YAAY,UAAU;AAAA,EAC5D,4BAA4B,UAAU,YAAY,UAAU;AAAA;;;A/BevD,SAAS,gBAAgB,CAAC,QAAkC;AAAA,EACjE,MAAM,WAAW,IAAI,SAAS,KAAK;AAAA,EAEnC,wBAAwB,UAAU;AAAA,IAChC,UAAU,OAAO;AAAA,IACjB,sBAAsB,OAAO;AAAA,IAC7B,YAAY,OAAO;AAAA,EACrB,CAAC;AAAA,EACD,yBAAyB,UAAU,OAAO,QAAQ;AAAA,EAClD,8BAA8B,UAAU,OAAO,UAAU,OAAO,UAAU;AAAA,EAC1E,uBAAuB,UAAU,OAAO,kBAAkB,OAAO,aAAa,OAAO,UAAU;AAAA,EAE/F,OAAO;AAAA;;;AHAF,SAAS,cAAc,CAAC,MAA4D;AAAA,EACzF,MAAM,WAAW,KAAK,YAAY;AAAA,EAElC,MAAM,SAAS,KAAK,UAAU;AAAA,EAC9B,MAAM,WAAW,KAAK,YAAY;AAAA,EAElC,MAAM,WAAqB,iBAAiB;AAAA,IAC1C,YAAY,KAAK;AAAA,OACd,KAAK;AAAA,IACR,sBAAsB,OAAO,eAA2B;AAAA,MACtD,MAAM,cAAc,IAAI,YAAY,EAAE,OAAO,UAAU;AAAA,MAGvD,MAAM,WAAW,MAAM,iBAAiB,aAAa,KAAK,YAAY,UAAU,SAAS;AAAA,MACzF,OAAO,qBAAqB,YAAY,SAAS,UAAU;AAAA;AAAA,EAE/D,CAAC;AAAA,EAED,MAAM,UAAU,kBAAkB,UAAU;AAAA,IAC1C;AAAA,IACA;AAAA,IACA,UAAU,KAAK;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,IACjB,aAAa,KAAK;AAAA,IAClB,eAAe,KAAK;AAAA,IACpB,iBAAiB,KAAK;AAAA,EACxB,CAAC;AAAA,EACD,OAAO,OAAO,QAAiB,QAAQ,GAAG;AAAA;;;AmC1CrC,IAAM,eAAe;AACrB,IAAM,oBAAoB;AAE1B,IAAM,oBAAoB;AAuD1B,SAAS,kBAAkB,CAAC,MAAyB;AAAA,EAC1D,MAAM,UAAU,KAAI,KAAK;AAAA,EACzB,MAAM,WAAW,oBAAoB;AAAA,EACrC,IAAI,QAAQ,WAAW,YAAY,CAAC,iBAAiB,KAAK,OAAO,GAAG;AAAA,IAClE,MAAM,IAAI,MACR,mCAAmC,6BACjC,IAAI,iCAAiC,QAAQ,aAC7C,wCAAwC,mBAC5C;AAAA,EACF;AAAA,EACA,MAAM,MAAM,IAAI,WAAW,iBAAiB;AAAA,EAC5C,SAAS,IAAI,EAAG,IAAI,mBAAmB,KAAK;AAAA,IAC1C,IAAI,KAAK,OAAO,SAAS,QAAQ,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;AAAA,EAC9D;AAAA,EACA,OAAO;AAAA;AAaF,SAAS,iBAAiB,CAC/B,UACA,KACA,OAA8B,QAAQ,OAC1B;AAAA,EACZ,IAAI,UAAU;AAAA,IACZ,IAAI,SAAS,WAAW,mBAAmB;AAAA,MACzC,MAAM,IAAI,MACR,sBAAsB,gCAAgC,SAAS,SACjE;AAAA,IACF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,IAAI,iBAAiB,KAAK;AAAA,EAC1C,IAAI;AAAA,IAAS,OAAO,mBAAmB,OAAO;AAAA,EAE9C,KACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,8DAA8D,mBAClE;AAAA,EACA,OAAO,OAAO,gBAAgB,IAAI,WAAW,iBAAiB,CAAC;AAAA;AAGjE,SAAS,WAAW,CAAC,UAA8B,KAAuB;AAAA,EACxE,IAAI,aAAa;AAAA,IAAW,OAAO;AAAA,EACnC,MAAM,MAAM,IAAI,MAAM,KAAK;AAAA,EAC3B,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,MAAM,OAAO,OAAO,GAAG;AAAA,EACvB,IAAI,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,KAAK,OAAO,OAAO;AAAA,IACvD,MAAM,IAAI,MAAM,oDAAoD,KAAK,UAAU,GAAG,IAAI;AAAA,EAC5F;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,UAA8B,KAAuB;AAAA,EAC5E,IAAI,aAAa;AAAA,IAAW,OAAO;AAAA,EACnC,MAAM,MAAM,IAAI,eAAe,KAAK;AAAA,EACpC,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,MAAM,MAAM,OAAO,GAAG;AAAA,EACtB,IAAI,CAAC,OAAO,UAAU,GAAG,KAAK,MAAM,GAAG;AAAA,IACrC,MAAM,IAAI,MAAM,qDAAqD,KAAK,UAAU,GAAG,IAAI;AAAA,EAC7F;AAAA,EACA,OAAO;AAAA;AAWF,SAAS,oBAAoB,CAClC,MACqC;AAAA,EACrC,MAAM,MAAM,KAAK,OAAQ,QAAQ;AAAA,EACjC,MAAM,aAAa,kBAAkB,KAAK,YAAY,GAAG;AAAA,EACzD,MAAM,WAAW,gBAAgB,KAAK,UAAU,GAAG;AAAA,EAEnD,MAAM,cACJ,KAAK,gBAAgB,OAAO,YAAa,KAAK,eAAe,IAAI,gBAAgB;AAAA,EAEnF,OAAO,eAAe;AAAA,IACpB,UAAU,EAAE,UAAU,KAAK,UAAU,kBAAkB,KAAK,iBAAiB;AAAA,IAC7E;AAAA,IACA;AAAA,IACA,QAAQ,KAAK,UAAU;AAAA,IACvB,UAAU,KAAK,YAAY,KAAK;AAAA,IAChC;AAAA,IACA,eAAe,KAAK;AAAA,IACpB,iBAAiB,sBAAsB,KAAK,kBAAkB;AAAA,MAC5D,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,MACV,SAAS,KAAK;AAAA,IAChB,CAAC;AAAA,EACH,CAAC;AAAA;AASI,SAAS,cAAc,CAAC,MAA4C;AAAA,EACzE,MAAM,UAAW,WAAiC;AAAA,EAClD,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,IAAI,MACR,4EACE,gFACA,wEACJ;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,KAAK,OAAQ,QAAQ;AAAA,EACjC,MAAM,OAAO,YAAY,KAAK,MAAM,GAAG;AAAA,EACvC,MAAM,SAAQ,qBAAqB,IAAI;AAAA,EACvC,MAAM,SAAS,QAAQ,MAAM,EAAE,MAAM,cAAM,CAAC;AAAA,EAE5C,IAAI,CAAC,KAAK,OAAO;AAAA,IACf,MAAM,OAAO,oBAAoB,OAAO;AAAA,IACxC,QAAQ,IAAI,GAAG,KAAK,qCAAqC,MAAM;AAAA,IAC/D,QAAQ,IAAI,oBAAoB,OAAO;AAAA,IACvC,QAAQ,IAAI,oBAAoB,oBAAoB;AAAA,IACpD,QAAQ,IAAI,oBAAoB,aAAa;AAAA,IAC7C,QAAQ,IAAI,4BAA4B,KAAK,YAAY,KAAK,6BAA6B,SAAS;AAAA,EACtG;AAAA,EACA,OAAO;AAAA;",
|
|
61
|
-
"debugId": "
|
|
60
|
+
"mappings": "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;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,IACvB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,MAAO;AAAA,IACpB,MAAM,KAAK,MAAM,KAAK,EAAE;AAAA,IACxB,MAAO,MAAM,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",
|
|
61
|
+
"debugId": "FE37A0B1C02E4FCF64756E2164756E21",
|
|
62
62
|
"names": []
|
|
63
63
|
}
|