@secondlayer/subgraphs 7.4.0 → 7.6.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.
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/verify/replay.ts", "src/runtime/runner.ts", "src/print-schema.ts", "src/runtime/clarity.ts", "src/runtime/print-validate.ts", "src/runtime/realm.ts", "src/verification.ts", "src/runtime/source-matcher.ts", "src/runtime/violations.ts", "src/runtime/apply-block.ts", "src/runtime/memory-store.ts", "src/runtime/context.ts", "src/schema/generator.ts", "src/schema/utils.ts", "src/runtime/chain-read.ts", "src/runtime/batch-loader.ts", "src/runtime/state-writes.ts", "src/verify/compare.ts"],
3
+ "sources": ["src/verify/replay.ts", "src/runtime/runner.ts", "src/print-schema.ts", "src/runtime/clarity.ts", "src/runtime/error-groups.ts", "src/runtime/print-validate.ts", "src/runtime/realm.ts", "src/verification.ts", "src/runtime/source-matcher.ts", "src/runtime/violations.ts", "src/runtime/apply-block.ts", "src/runtime/memory-store.ts", "src/runtime/context.ts", "src/schema/generator.ts", "src/schema/utils.ts", "src/runtime/chain-read.ts", "src/runtime/batch-loader.ts", "src/runtime/state-writes.ts", "src/verify/compare.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Recompute a state-level subgraph from proven inputs.\n *\n * checkpoint ─▶ header N ─▶ witness root ─▶ named diff (state_writes) ─▶ events ─┐\n * └▶ tx merkle root ─▶ txs (ctx.tx) ───────────────────────┤\n * served handler_code ─▶ pin preimage ─▶ deterministic realm ─▶ memory store ◀────┘\n *\n * Every block in the range is verified with `@secondlayer/verify` from the\n * checkpoint, its named writes become the same events the server feeds the\n * handlers (`stateWriteEvents`), and the bundled handler runs in the\n * deterministic realm against an in-memory store. The result is the table\n * state at `to`; `compareRows` checks it against the served rows.\n */\nimport { createHash } from \"node:crypto\";\nimport { decodeRawTx } from \"@secondlayer/shared/node/tx-summary\";\nimport {\n\ttype BlockVerification,\n\tBlockVerifier,\n\ttype Bytes,\n\tMAINNET_CHECKPOINT,\n\ttype ProofSource,\n\ttype VerifyCheckpoint,\n\ttype VerifyStep,\n\thex,\n} from \"@secondlayer/verify\";\nimport { applyBlock } from \"../runtime/apply-block.ts\";\nimport type { BlockMeta, TxMeta } from \"../runtime/context.ts\";\nimport { MemoryStore, MemorySubgraphContext } from \"../runtime/memory-store.ts\";\nimport { abortsBlock, loadDeterministicDefinition } from \"../runtime/realm.ts\";\nimport type { TxRecord } from \"../runtime/source-matcher.ts\";\nimport { stateWriteEvents } from \"../runtime/state-writes.ts\";\nimport { generateSubgraphSQL } from \"../schema/generator.ts\";\nimport type { SubgraphDefinition, SubgraphFilter } from \"../types.ts\";\nimport {\n\ttype PinFields,\n\tSUBGRAPHS_RUNTIME,\n\tderiveVerification,\n} from \"../verification.ts\";\n\nexport type ReplayStep =\n\t| \"pin\"\n\t| \"blocks\"\n\t| \"txs\"\n\t| \"inputs\"\n\t| \"handlers\"\n\t| \"rows\";\n\nexport interface ReplayFailure {\n\tstep: ReplayStep;\n\tmessage: string;\n\theight?: number;\n\ttable?: string;\n\tkey?: Record<string, unknown>;\n\t/** The source could not serve the input: unchecked, not disproven. */\n\tunavailable?: boolean;\n}\n\n/** The outcome of a replay: pass or fail, blocks covered, failures. */\nexport interface ReplayResult {\n\tok: boolean;\n\t/** Set when the range starts after startBlock and a handler read or merged earlier rows. */\n\tinconclusive?: string;\n\tfrom: number;\n\tto: number;\n\tblocks: number;\n\ttxs: number;\n\t/** Named writes to the subgraph's contracts. */\n\twrites: number;\n\t/** Events offered to a handler. */\n\tevents: number;\n\thandlerErrors: number;\n\t/** MARF proofs the walk took (one per window top below the checkpoint). */\n\tmarfProofs: number;\n\t/** The memory store at `to`. */\n\ttables: Map<string, Record<string, unknown>[]>;\n\tnotes: string[];\n\t/** The first entry is the first broken link. */\n\tfailures: ReplayFailure[];\n}\n\n/** What to replay: proof source, handler bundle, and block range. */\nexport interface ReplayOptions {\n\t/** Needs `getStateWrites`: the names are what feed the handlers. */\n\tsource: ProofSource;\n\t/** The bundled ESM as stored in `handler_code`. */\n\thandlerCode: string;\n\tfrom: number;\n\tto: number;\n\t/** Defaults to `MAINNET_CHECKPOINT`. */\n\tcheckpoint?: VerifyCheckpoint;\n\t/** Defaults to the definition's `startBlock`. */\n\tstartBlock?: number;\n\tonProgress?: (height: number) => void;\n}\n\n/** Verify blocks 512 at a time: the top by one MARF jump, the rest by parent links. */\nexport const REPLAY_WINDOW = 512;\n\n/** What verifyBlock says, mapped onto replay links. */\nconst STEP_OF: Partial<Record<VerifyStep, ReplayStep>> = {\n\tancestry: \"blocks\",\n\tblock: \"blocks\",\n\tbitcoin: \"blocks\",\n\tburn: \"blocks\",\n\t\"signer-set\": \"blocks\",\n\tsignatures: \"blocks\",\n\twitness: \"blocks\",\n\ttxs: \"txs\",\n\tnames: \"inputs\",\n};\n\nconst EMPTY_TX: TxMeta = { txId: \"\", sender: \"\", type: \"\", status: \"\" };\n\n/**\n * Lists the contracts a state subgraph's writes come from.\n *\n * It returns an error when a source does not fix one, because completeness\n * would then need every contract's writes.\n */\nexport function replayContracts(\n\tdef: Pick<SubgraphDefinition, \"sources\">,\n): string[] | { error: string } {\n\tconst out = new Set<string>();\n\tfor (const [name, source] of Object.entries(def.sources)) {\n\t\tconst f = source as SubgraphFilter & {\n\t\t\tcontractId?: string | readonly string[];\n\t\t\tfactory?: unknown;\n\t\t};\n\t\tconst ids = Array.isArray(f.contractId)\n\t\t\t? f.contractId\n\t\t\t: f.contractId\n\t\t\t\t? [f.contractId as string]\n\t\t\t\t: [];\n\t\tif (f.factory || ids.length === 0 || ids.some((id) => id.includes(\"*\")))\n\t\t\treturn {\n\t\t\t\terror: `source \"${name}\": wildcard contract ids need a full-block name check per contract`,\n\t\t\t};\n\t\tfor (const id of ids) out.add(id);\n\t}\n\treturn [...out];\n}\n\nconst sha256 = (s: string) => createHash(\"sha256\").update(s).digest(\"hex\");\n\n/** Whether a served pin matches the served bundle. */\nexport type PinCheck =\n\t| { status: \"ok\"; notes: string[] }\n\t| { status: \"unchecked\"; notes: string[] }\n\t| { status: \"failed\"; failure: ReplayFailure; notes: string[] };\n\n/**\n * Checks a served pin against the served bundle.\n *\n * The preimage must hash to the pin, and name this handler code, this schema\n * and this `startBlock`. A runtime other than this package's is only a note,\n * since rows can still match.\n */\nexport function checkPin(\n\tserved: {\n\t\tpin: string | null;\n\t\tpinPreimage: string | null;\n\t\thandlerCode: string;\n\t},\n\tdef: SubgraphDefinition,\n): PinCheck {\n\tif (!served.pin || !served.pinPreimage)\n\t\treturn { status: \"unchecked\", notes: [] };\n\tconst failed = (message: string): PinCheck => ({\n\t\tstatus: \"failed\",\n\t\tfailure: { step: \"pin\", message },\n\t\tnotes: [],\n\t});\n\tif (sha256(served.pinPreimage) !== served.pin)\n\t\treturn failed(`pin ${served.pin} is not the sha256 of its preimage`);\n\tlet fields: PinFields;\n\ttry {\n\t\tfields = JSON.parse(served.pinPreimage) as PinFields;\n\t} catch {\n\t\treturn failed(\"pin preimage is not JSON\");\n\t}\n\tif (fields.handlerHash !== sha256(served.handlerCode))\n\t\treturn failed(\"the served handler code is not the bundle the pin names\");\n\tconst schemaHash = generateSubgraphSQL(def).hash;\n\tif (fields.schemaHash !== schemaHash)\n\t\treturn failed(\n\t\t\t`the pin names schema ${fields.schemaHash}, the served bundle defines ${schemaHash}`,\n\t\t);\n\tif (fields.startBlock !== (def.startBlock ?? null))\n\t\treturn failed(\n\t\t\t`the pin names startBlock ${fields.startBlock}, the served bundle ${def.startBlock ?? null}`,\n\t\t);\n\tconst notes: string[] = [];\n\tif (fields.runtime !== SUBGRAPHS_RUNTIME)\n\t\tnotes.push(\n\t\t\t`deployed on ${fields.runtime}, replayed on ${SUBGRAPHS_RUNTIME}`,\n\t\t);\n\tif (fields.network !== \"mainnet\")\n\t\tnotes.push(`pinned to network ${fields.network}`);\n\treturn { status: \"ok\", notes };\n}\n\n/** One verified block, reduced to what the handlers need. */\ninterface ProvenBlock {\n\tmeta: BlockMeta;\n\ttxs: TxRecord[];\n\twrites: NonNullable<BlockVerification[\"writes\"]>;\n}\n\n/** Seams for tests: the block verifier and the burn height hint. */\nexport interface ReplayDeps {\n\tverify(height: number): Promise<BlockVerification>;\n\t/** The source's (unproven) burn height for a consensus hash. */\n\tburnHeightHint(consensusHash: string): Promise<number>;\n}\n\nfunction decodeTxs(v: BlockVerification): TxRecord[] {\n\treturn (v.transactions ?? []).map((t, i): TxRecord => {\n\t\tconst d = decodeRawTx(hex(t.raw), t.txid);\n\t\treturn {\n\t\t\ttx_id: `0x${t.txid}`,\n\t\t\ttx_index: i,\n\t\t\ttype: d?.txType ?? \"unknown\",\n\t\t\tsender: d?.sender ?? \"unknown\",\n\t\t\t// A failed transaction's contract writes roll back, so every tx a\n\t\t\t// named write hangs on succeeded.\n\t\t\tstatus: \"success\",\n\t\t\tcontract_id: d?.contractId ?? null,\n\t\t\tfunction_name: d?.functionName ?? null,\n\t\t\tfunction_args: d?.functionArgs ?? null,\n\t\t\traw_result: null,\n\t\t};\n\t});\n}\n\n/** The replay loop over an injected verifier. */\nexport async function replayBlocks(\n\tdeps: ReplayDeps,\n\topts: Omit<ReplayOptions, \"source\" | \"checkpoint\"> & {\n\t\tbitcoinCheckpoint?: number;\n\t},\n): Promise<ReplayResult> {\n\tconst out: ReplayResult = {\n\t\tok: false,\n\t\tfrom: opts.from,\n\t\tto: opts.to,\n\t\tblocks: 0,\n\t\ttxs: 0,\n\t\twrites: 0,\n\t\tevents: 0,\n\t\thandlerErrors: 0,\n\t\tmarfProofs: 0,\n\t\ttables: new Map(),\n\t\tnotes: [],\n\t\tfailures: [],\n\t};\n\tconst done = () => {\n\t\tout.ok = out.failures.length === 0 && !out.inconclusive;\n\t\treturn out;\n\t};\n\n\tlet def: SubgraphDefinition;\n\ttry {\n\t\tdef = await loadDeterministicDefinition(opts.handlerCode);\n\t} catch (err) {\n\t\tout.failures.push({\n\t\t\tstep: \"handlers\",\n\t\t\tmessage: `the bundle does not load in the deterministic realm: ${(err as Error).message}`,\n\t\t});\n\t\treturn done();\n\t}\n\tconst level = deriveVerification(def);\n\tif (level.level !== \"state\") {\n\t\tout.failures.push({\n\t\t\tstep: \"handlers\",\n\t\t\tmessage: `level ${level.level}, not state: ${level.reasons.join(\"; \")}`,\n\t\t});\n\t\treturn done();\n\t}\n\tconst contracts = replayContracts(def);\n\tif (!Array.isArray(contracts)) {\n\t\tout.failures.push({ step: \"inputs\", message: contracts.error });\n\t\treturn done();\n\t}\n\tconst ours = (key: string) =>\n\t\tcontracts.some((c) => key.startsWith(`vm::${c}::`));\n\tconst startBlock = opts.startBlock ?? def.startBlock ?? 0;\n\tconst midHistory = opts.from > startBlock;\n\tconst store = new MemoryStore();\n\tconst burnHints = new Map<string, number>();\n\tlet notedBurn = false;\n\n\tfor (let a = opts.from; a <= opts.to; a += REPLAY_WINDOW) {\n\t\tconst b = Math.min(a + REPLAY_WINDOW - 1, opts.to);\n\t\t// Top first, then down: each lower block is one parent link from a\n\t\t// block just proven, so only the top costs a MARF proof.\n\t\tconst proven = new Map<number, ProvenBlock>();\n\t\tfor (let h = b; h >= a; h--) {\n\t\t\tconst v = await deps.verify(h);\n\t\t\tconst first = v.failures[0];\n\t\t\tif (first) {\n\t\t\t\tout.failures.push({\n\t\t\t\t\tstep: STEP_OF[first.step] ?? \"blocks\",\n\t\t\t\t\tmessage: `block ${h}: ${first.message}`,\n\t\t\t\t\theight: h,\n\t\t\t\t\t...(first.code === \"unavailable\" ? { unavailable: true } : {}),\n\t\t\t\t});\n\t\t\t\treturn done();\n\t\t\t}\n\t\t\tif (v.ancestry?.via === \"marf\") out.marfProofs++;\n\t\t\tif (!v.blockHash || !v.blockId) {\n\t\t\t\tout.failures.push({\n\t\t\t\t\tstep: \"blocks\",\n\t\t\t\t\tmessage: `block ${h}: epoch 2.x; replay needs Nakamoto blocks`,\n\t\t\t\t\theight: h,\n\t\t\t\t\tunavailable: true,\n\t\t\t\t});\n\t\t\t\treturn done();\n\t\t\t}\n\t\t\tif (!v.transactions) {\n\t\t\t\tout.failures.push({\n\t\t\t\t\tstep: \"txs\",\n\t\t\t\t\tmessage: `block ${h}: the source served no transactions`,\n\t\t\t\t\theight: h,\n\t\t\t\t\tunavailable: true,\n\t\t\t\t});\n\t\t\t\treturn done();\n\t\t\t}\n\t\t\tif (!v.diff?.named || !v.writes) {\n\t\t\t\tout.failures.push({\n\t\t\t\t\tstep: \"inputs\",\n\t\t\t\t\tmessage: `block ${h}: the source serves no state_writes for it (its node does not deliver them yet), so its writes cannot be named and the subgraph cannot be verified here`,\n\t\t\t\t\theight: h,\n\t\t\t\t\tunavailable: true,\n\t\t\t\t});\n\t\t\t\treturn done();\n\t\t\t}\n\t\t\tlet burnHeight = v.burnHeight;\n\t\t\tif (burnHeight === undefined) {\n\t\t\t\tconst ch = v.consensusHash as string;\n\t\t\t\tburnHeight = burnHints.get(ch);\n\t\t\t\tif (burnHeight === undefined) {\n\t\t\t\t\tburnHeight = await deps.burnHeightHint(ch);\n\t\t\t\t\tburnHints.set(ch, burnHeight);\n\t\t\t\t}\n\t\t\t\tif (!notedBurn) {\n\t\t\t\t\tout.notes.push(\n\t\t\t\t\t\t`burn height unproven below Bitcoin ${opts.bitcoinCheckpoint ?? \"checkpoint\"}: ctx.block.burnBlockHeight is the source's claim`,\n\t\t\t\t\t);\n\t\t\t\t\tnotedBurn = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tproven.set(h, {\n\t\t\t\tmeta: {\n\t\t\t\t\theight: h,\n\t\t\t\t\thash: `0x${v.blockHash}`,\n\t\t\t\t\ttimestamp: v.timestamp ?? 0,\n\t\t\t\t\tburnBlockHeight: burnHeight,\n\t\t\t\t\tindexBlockHash: `0x${v.blockId}`,\n\t\t\t\t},\n\t\t\t\ttxs: decodeTxs(v),\n\t\t\t\twrites: v.writes.filter((w) => ours(w.key)),\n\t\t\t});\n\t\t}\n\n\t\tfor (let h = a; h <= b; h++) {\n\t\t\tconst block = proven.get(h) as ProvenBlock;\n\t\t\tconst byIndex = new Map(block.txs.map((t) => [t.tx_index as number, t]));\n\t\t\tlet fed: ReturnType<typeof stateWriteEvents>;\n\t\t\ttry {\n\t\t\t\tfed = stateWriteEvents(block.writes, byIndex);\n\t\t\t} catch (err) {\n\t\t\t\tout.failures.push({\n\t\t\t\t\tstep: \"inputs\",\n\t\t\t\t\tmessage: `block ${h}: ${(err as Error).message}`,\n\t\t\t\t\theight: h,\n\t\t\t\t});\n\t\t\t\treturn done();\n\t\t\t}\n\t\t\tconst ctx = new MemorySubgraphContext(\n\t\t\t\tstore,\n\t\t\t\tdef.schema,\n\t\t\t\tblock.meta,\n\t\t\t\tEMPTY_TX,\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tconst r = await applyBlock(\n\t\t\t\t\tdef,\n\t\t\t\t\t{ txs: fed.txs, events: [], vmEvents: fed.vmEvents },\n\t\t\t\t\tctx,\n\t\t\t\t);\n\t\t\t\tout.events += r.delivered;\n\t\t\t\tout.handlerErrors += r.errors;\n\t\t\t} catch (err) {\n\t\t\t\tif (!abortsBlock(err)) throw err;\n\t\t\t\tout.failures.push({\n\t\t\t\t\tstep: \"handlers\",\n\t\t\t\t\tmessage: `block ${h} ${(err as Error).name}: ${(err as Error).message}`,\n\t\t\t\t\theight: h,\n\t\t\t\t});\n\t\t\t\treturn done();\n\t\t\t}\n\t\t\tawait ctx.commitOps();\n\t\t\tif (midHistory && ctx.readDependent && !out.inconclusive) {\n\t\t\t\tout.inconclusive = `block ${h}: ${ctx.readDependent} depends on rows written before ${opts.from}; replay from startBlock ${startBlock}`;\n\t\t\t}\n\t\t\tout.blocks++;\n\t\t\tout.txs += block.txs.length;\n\t\t\tout.writes += block.writes.length;\n\t\t\topts.onProgress?.(h);\n\t\t}\n\t}\n\tout.tables = store.tables;\n\treturn done();\n}\n\n/** Keep the last two witnesses: walking down, block h's parent witness is the next fetch. */\nfunction cacheWitnesses(source: ProofSource): ProofSource {\n\tconst recent = new Map<string, Promise<Bytes>>();\n\tconst out: ProofSource = {\n\t\tgetBlock: (ref) => source.getBlock(ref),\n\t\tgetMarfProof: (path, tip) => source.getMarfProof(path, tip),\n\t\tgetBurnPreimage: (ch) => source.getBurnPreimage(ch),\n\t\tgetBitcoinHeaders: (from, count) => source.getBitcoinHeaders(from, count),\n\t\tgetWitness: (id) => {\n\t\t\tlet w = recent.get(id);\n\t\t\tif (!w) {\n\t\t\t\tw = source.getWitness(id);\n\t\t\t\t// A failed fetch is not cached; the caller still sees the error.\n\t\t\t\tw.catch(() => recent.delete(id));\n\t\t\t\trecent.set(id, w);\n\t\t\t\twhile (recent.size > 2)\n\t\t\t\t\trecent.delete(recent.keys().next().value as string);\n\t\t\t}\n\t\t\treturn w;\n\t\t},\n\t};\n\tconst { getEpoch2Header, getStateWrites } = source;\n\tif (getEpoch2Header)\n\t\tout.getEpoch2Header = (id) => getEpoch2Header.call(source, id);\n\tif (getStateWrites)\n\t\tout.getStateWrites = (height) => getStateWrites.call(source, height);\n\treturn out;\n}\n\n/**\n * Verifies every block in a range and recomputes the subgraph's tables.\n *\n * The range is `[from, to]`, and blocks are verified from the checkpoint.\n */\nexport async function replaySubgraph(\n\topts: ReplayOptions,\n): Promise<ReplayResult> {\n\tconst checkpoint = opts.checkpoint ?? MAINNET_CHECKPOINT;\n\tconst source = cacheWitnesses(opts.source);\n\tconst verifier = new BlockVerifier({ source, checkpoint });\n\treturn replayBlocks(\n\t\t{\n\t\t\tverify: (h) => verifier.verify(h),\n\t\t\tburnHeightHint: async (ch) =>\n\t\t\t\t(await source.getBurnPreimage(ch)).burnHeight,\n\t\t},\n\t\t{ ...opts, bitcoinCheckpoint: checkpoint.bitcoin.height },\n\t);\n}\n",
6
- "import { getErrorMessage } from \"@secondlayer/shared\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport {\n\tclarityValueToJS,\n\tdeserializeCV,\n\ttoCamelCase,\n} from \"@secondlayer/stacks/clarity\";\nimport { camelizeKeys } from \"../print-schema.ts\";\nimport type {\n\tContractCallFilter,\n\tSubgraphDefinition,\n\tSubgraphFilter,\n} from \"../types.ts\";\nimport { decodeClarityValue, decodeEventData } from \"./clarity.ts\";\nimport type { SubgraphContext } from \"./context.ts\";\nimport { validatePrintPayload } from \"./print-validate.ts\";\nimport { abortsBlock } from \"./realm.ts\";\nimport { type MatchedTx, printContractId } from \"./source-matcher.ts\";\nimport { recordPrintViolation } from \"./violations.ts\";\n\n/** Max consecutive handler errors before marking subgraph as error */\nconst DEFAULT_ERROR_THRESHOLD = 50;\n\nexport interface RunResult {\n\tprocessed: number;\n\terrors: number;\n\t/** Events that survived the post-decode topic filter, i.e. what a handler\n\t * was actually offered (whether it then ran, errored, or failed `prints`).\n\t * The matcher cannot see topics (payload is raw hex there), so its match\n\t * count over-reports for a topic-filtered source. */\n\tdelivered: number;\n\t/** Print events skipped because their decoded payload did not match the\n\t * source's declared `prints` schema. Never an error: skipping keeps the\n\t * block committable, which the checkpoint model requires. */\n\tskipped?: number;\n}\n\n/**\n * Decode function_args (hex-encoded ClarityValues) to an array of JS values.\n * Returns decoded values via cvToValue.\n *\n * The string branch is legacy tolerance, not driver behaviour: rows written\n * before 2026-08-12 hold a jsonb *string* containing JSON because the writer\n * pre-serialized the array (see backfill-function-args.ts). Correct rows arrive\n * as arrays. Keep both paths until every environment has been backfilled.\n */\nfunction decodeFunctionArgs(args: unknown): unknown[] {\n\tlet parsed = args;\n\tif (typeof parsed === \"string\") {\n\t\ttry {\n\t\t\tparsed = JSON.parse(parsed);\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\tif (!Array.isArray(parsed)) return [];\n\treturn parsed.map((arg) => {\n\t\tif (typeof arg === \"string\") return decodeClarityValue(arg);\n\t\treturn arg;\n\t});\n}\n\n/**\n * Decode raw_result (hex-encoded Clarity return value) to JS value.\n */\nfunction decodeRawResult(raw: unknown): unknown {\n\tif (typeof raw === \"string\" && raw.length > 2) {\n\t\treturn decodeClarityValue(raw);\n\t}\n\treturn null;\n}\n\n/** Decode a hex Clarity value without mutating the original string field. */\nfunction decodeRawHex(hex: string): unknown {\n\tif (hex.startsWith(\"0x\") && hex.length > 2) {\n\t\treturn decodeClarityValue(hex);\n\t}\n\treturn hex;\n}\n\n/**\n * Decode a state-write hex value against the type the source `abi` declares\n * for that map key/value or data-var, so runtime values equal the types\n * `MapWritePayload` / `VarSetPayload` promise (camelCase tuple keys, wrapped\n * optionals and responses). Falls back to the untyped {@link decodeRawHex}\n * when there is no declared type or the hex does not decode.\n */\nfunction decodeStateHex(hex: string, abiType: unknown): unknown {\n\tif (abiType === undefined || !hex.startsWith(\"0x\") || hex.length <= 2) {\n\t\treturn decodeRawHex(hex);\n\t}\n\ttry {\n\t\t// Non-generic cast: see buildContractCallInput.\n\t\tconst decode = clarityValueToJS as unknown as (\n\t\t\ttype: unknown,\n\t\t\tcv: unknown,\n\t\t) => unknown;\n\t\treturn decode(abiType, deserializeCV(hex.slice(2)));\n\t} catch {\n\t\treturn decodeRawHex(hex);\n\t}\n}\n\n/** Declared ABI types for a map: `[key, value]`, undefined when the abi lacks it. */\nfunction mapAbiTypes(filter: SubgraphFilter, name: string): unknown[] {\n\tconst abi = \"abi\" in filter ? filter.abi : undefined;\n\tconst def = abi?.maps?.find((m) => m.name === name);\n\treturn def ? [def.key, def.value] : [];\n}\n\n/** Safely convert a value to BigInt. Handles string, number, bigint. Returns 0n on failure. */\nfunction safeBigInt(val: unknown): bigint {\n\tif (typeof val === \"bigint\") return val;\n\tif (typeof val === \"number\") return BigInt(val);\n\tif (typeof val === \"string\") {\n\t\ttry {\n\t\t\treturn BigInt(val);\n\t\t} catch {\n\t\t\treturn 0n;\n\t\t}\n\t}\n\treturn 0n;\n}\n\n/**\n * Build the named, ABI-decoded `event.input` for a contract_call source that\n * declares an `abi`. Each function arg is decoded via `clarityValueToJS` so the\n * values match the types `ExtractFunctionArgs` promises (Uint8Array buffers,\n * camelCase tuple keys, wrapped responses). Returns undefined when no abi /\n * function match, leaving handlers with the positional `args` only.\n */\nexport function buildContractCallInput(\n\tfilter: ContractCallFilter,\n\ttx: MatchedTx[\"tx\"],\n): Record<string, unknown> | undefined {\n\tconst abi = filter.abi;\n\tconst fnName = tx.function_name;\n\tif (!abi || !fnName) return undefined;\n\tconst fn = abi.functions?.find((f) => f.name === fnName);\n\tif (!fn || !Array.isArray(fn.args)) return undefined;\n\n\tlet rawArgs: unknown = tx.function_args;\n\tif (typeof rawArgs === \"string\") {\n\t\ttry {\n\t\t\trawArgs = JSON.parse(rawArgs);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\tif (!Array.isArray(rawArgs)) return undefined;\n\n\t// Call through a non-generic cast: clarityValueToJS<T> instantiates the deep\n\t// AbiToTS<T> conditional (TS2589) at runtime call sites. The static types\n\t// come from ContractCallPayload; here we only need its runtime reshaping.\n\tconst decodeArg = clarityValueToJS as unknown as (\n\t\ttype: unknown,\n\t\tcv: unknown,\n\t) => unknown;\n\tconst input: Record<string, unknown> = {};\n\tfn.args.forEach((arg, i) => {\n\t\tconst hex = rawArgs[i];\n\t\tif (typeof hex !== \"string\") return;\n\t\ttry {\n\t\t\tconst clean = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n\t\t\tinput[toCamelCase(arg.name)] = decodeArg(arg.type, deserializeCV(clean));\n\t\t} catch {\n\t\t\t// Skip args that fail to decode rather than dropping the whole event.\n\t\t}\n\t});\n\treturn input;\n}\n\n/**\n * Build a typed event payload based on the source filter type.\n * Returns the payload the handler will receive.\n */\nexport function buildEventPayload(\n\tfilter: SubgraphFilter,\n\ttx: MatchedTx[\"tx\"],\n\tevent: MatchedTx[\"events\"][0] | null,\n): Record<string, unknown> {\n\tconst txMeta = {\n\t\ttxId: tx.tx_id,\n\t\tsender: tx.sender,\n\t\ttype: tx.type,\n\t\tstatus: tx.status,\n\t\tcontractId: tx.contract_id ?? null,\n\t\tfunctionName: tx.function_name ?? null,\n\t};\n\n\t// Decoded function args + result for contract_call payloads\n\tconst decodedArgs = decodeFunctionArgs(tx.function_args);\n\tconst decodedResult = decodeRawResult(tx.raw_result);\n\n\t// No event — tx-level match (contract_call or contract_deploy)\n\tif (!event) {\n\t\tswitch (filter.type) {\n\t\t\tcase \"contract_call\": {\n\t\t\t\tconst input = buildContractCallInput(filter, tx);\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"contract_call\",\n\t\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\t\tfunctionName: tx.function_name ?? \"\",\n\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\targs: decodedArgs,\n\t\t\t\t\t...(input !== undefined ? { input } : {}),\n\t\t\t\t\tresult: decodedResult,\n\t\t\t\t\tresultHex: tx.raw_result ?? null,\n\t\t\t\t\ttx: txMeta,\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"contract_deploy\":\n\t\t\t\treturn {\n\t\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\t\tdeployer: tx.sender,\n\t\t\t\t\ttx: txMeta,\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn { tx: txMeta };\n\t\t}\n\t}\n\n\t// Decode event data (Clarity values auto-unwrapped via cvToValue)\n\tconst decoded = decodeEventData(event.data) as Record<string, unknown>;\n\n\tswitch (filter.type) {\n\t\t// ── FT events ──\n\t\tcase \"ft_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"ft_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"ft_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── NFT events ──\n\t\t// tokenId decodes from the canonical hex (`raw_value`), not the node's\n\t\t// verbose serde-tagged `value` (`{UInt:223}`). The hex is source-\n\t\t// independent — present in both the DB tap and the Index API — so a\n\t\t// subgraph yields the same clean tokenId (e.g. 223n) on either source.\n\t\tcase \"nft_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"nft_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"nft_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── STX events ──\n\t\tcase \"stx_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tmemo: decoded.memo ?? \"\",\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_lock\":\n\t\t\treturn {\n\t\t\t\tlockedAddress: decoded.locked_address as string,\n\t\t\t\tlockedAmount: safeBigInt(decoded.locked_amount),\n\t\t\t\tunlockHeight: safeBigInt(decoded.unlock_height),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── Print event ──\n\t\tcase \"print_event\": {\n\t\t\t// Decode the print value from the canonical hex (`raw_value`) so it's\n\t\t\t// source-independent and clean — the node's verbose serde-tagged\n\t\t\t// `value` (e.g. `{Optional:{data:null}}`) is not reproducible from the\n\t\t\t// Index API and is no longer used (same rationale as nft tokenId).\n\t\t\t// decodeEventData skips hex ≤10 chars, so decode `raw_value` directly.\n\t\t\tconst rawHex = (event.data as Record<string, unknown> | null)?.raw_value;\n\t\t\tconst rawValue =\n\t\t\t\ttypeof rawHex === \"string\" && rawHex.startsWith(\"0x\")\n\t\t\t\t\t? decodeClarityValue(rawHex)\n\t\t\t\t\t: decoded.value;\n\t\t\t// Extract topic from decoded Clarity value (not raw event topic which is always \"print\")\n\t\t\tconst clarityObj =\n\t\t\t\trawValue && typeof rawValue === \"object\" && !Array.isArray(rawValue)\n\t\t\t\t\t? (rawValue as Record<string, unknown>)\n\t\t\t\t\t: null;\n\t\t\tconst topic = clarityObj?.topic\n\t\t\t\t? String(clarityObj.topic)\n\t\t\t\t: ((decoded.topic as string) ?? \"\");\n\t\t\t// Camelize remaining keys for developer convenience\n\t\t\tconst { topic: _, ...rest } = clarityObj ?? {};\n\t\t\tconst data =\n\t\t\t\tObject.keys(rest).length > 0\n\t\t\t\t\t? (camelizeKeys(rest) as Record<string, unknown>)\n\t\t\t\t\t: rawValue && typeof rawValue !== \"object\"\n\t\t\t\t\t\t? rawValue\n\t\t\t\t\t\t: {};\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(decoded) ?? tx.contract_id ?? \"\",\n\t\t\t\ttopic,\n\t\t\t\tdata: data ?? {},\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\n\t\t// ── Contract call (with events) ──\n\t\tcase \"contract_call\": {\n\t\t\t// Normalize the spread event Clarity `value` to the decoded canonical\n\t\t\t// (from `raw_value`), so it's identical whether the event came from the\n\t\t\t// DB tap or the Index API — the node's serde-tagged `value` is not\n\t\t\t// reproducible from Index (same rationale as nft tokenId / print).\n\t\t\tconst ccRawHex = (event.data as Record<string, unknown> | null)\n\t\t\t\t?.raw_value;\n\t\t\tconst normalized =\n\t\t\t\ttypeof ccRawHex === \"string\" && ccRawHex.startsWith(\"0x\")\n\t\t\t\t\t? { ...decoded, value: decodeClarityValue(ccRawHex) }\n\t\t\t\t\t: decoded;\n\t\t\tconst input = buildContractCallInput(filter, tx);\n\t\t\treturn {\n\t\t\t\t...normalized,\n\t\t\t\ttype: \"contract_call\",\n\t\t\t\t_eventType: event.type,\n\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\tfunctionName: tx.function_name ?? \"\",\n\t\t\t\tsender: tx.sender,\n\t\t\t\targs: decodedArgs,\n\t\t\t\t...(input !== undefined ? { input } : {}),\n\t\t\t\tresult: decodedResult,\n\t\t\t\tresultHex: tx.raw_result ?? null,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\n\t\t// ── Contract deploy ──\n\t\tcase \"contract_deploy\":\n\t\t\treturn {\n\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\tdeployer: tx.sender,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── VM traces: preserve raw hex. Generic decodeEventData would turn\n\t\t// a long uint hex into bigint and leave a short boolean hex a string.\n\t\tcase \"nested_contract_call\": {\n\t\t\tconst data = (event.data ?? {}) as Record<string, unknown>;\n\t\t\tconst argsHex = Array.isArray(data.function_args)\n\t\t\t\t? data.function_args.filter((a): a is string => typeof a === \"string\")\n\t\t\t\t: [];\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(data) ?? \"\",\n\t\t\t\tsender: typeof data.sender === \"string\" ? data.sender : null,\n\t\t\t\tcaller: typeof data.caller === \"string\" ? data.caller : \"\",\n\t\t\t\tfunctionName:\n\t\t\t\t\ttypeof data.function_name === \"string\" ? data.function_name : \"\",\n\t\t\t\targs: decodeFunctionArgs(argsHex),\n\t\t\t\targuments: argsHex,\n\t\t\t\trawResult: typeof data.raw_result === \"string\" ? data.raw_result : \"\",\n\t\t\t\tresult: decodeRawResult(data.raw_result),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\t\tcase \"var_set\": {\n\t\t\tconst data = (event.data ?? {}) as Record<string, unknown>;\n\t\t\tconst rawValue = typeof data.raw_value === \"string\" ? data.raw_value : \"\";\n\t\t\tconst varName = typeof data.var_name === \"string\" ? data.var_name : \"\";\n\t\t\tconst abi = \"abi\" in filter ? filter.abi : undefined;\n\t\t\tconst varType = abi?.variables?.find((v) => v.name === varName)?.type;\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(data) ?? \"\",\n\t\t\t\tvarName,\n\t\t\t\trawValue,\n\t\t\t\tvalue: decodeStateHex(rawValue, varType),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\t\tcase \"map_set\":\n\t\tcase \"map_insert\": {\n\t\t\tconst data = (event.data ?? {}) as Record<string, unknown>;\n\t\t\tconst rawKey = typeof data.raw_key === \"string\" ? data.raw_key : \"\";\n\t\t\tconst rawValue = typeof data.raw_value === \"string\" ? data.raw_value : \"\";\n\t\t\tconst map = typeof data.map_name === \"string\" ? data.map_name : \"\";\n\t\t\tconst [keyType, valueType] = mapAbiTypes(filter, map);\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(data) ?? \"\",\n\t\t\t\tmap,\n\t\t\t\trawKey,\n\t\t\t\tkey: decodeStateHex(rawKey, keyType),\n\t\t\t\trawValue,\n\t\t\t\tvalue: decodeStateHex(rawValue, valueType),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\t\tcase \"map_delete\": {\n\t\t\tconst data = (event.data ?? {}) as Record<string, unknown>;\n\t\t\tconst rawKey = typeof data.raw_key === \"string\" ? data.raw_key : \"\";\n\t\t\tconst map = typeof data.map_name === \"string\" ? data.map_name : \"\";\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(data) ?? \"\",\n\t\t\t\tmap,\n\t\t\t\trawKey,\n\t\t\t\tkey: decodeStateHex(rawKey, mapAbiTypes(filter, map)[0]),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\t// Fallback: spread decoded data with tx metadata\n\t\t\treturn {\n\t\t\t\t...decoded,\n\t\t\t\t_eventType: event.type,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t}\n}\n\n/**\n * Run a subgraph's keyed handlers against all matched transactions/events.\n *\n * Each MatchedTx carries a sourceName from the matcher. The runner looks up\n * the handler of the same name in subgraph.handlers.\n *\n * Does NOT flush — caller is responsible for flushing ctx after run.\n */\nexport async function runHandlers(\n\tsubgraph: SubgraphDefinition,\n\tmatched: MatchedTx[],\n\tctx: SubgraphContext,\n\topts?: { errorThreshold?: number },\n): Promise<RunResult> {\n\tlet processed = 0;\n\tlet errors = 0;\n\tlet skipped = 0;\n\tlet delivered = 0;\n\tconst threshold = opts?.errorThreshold ?? DEFAULT_ERROR_THRESHOLD;\n\n\t// Build filter lookup from sources (supports both array and named object)\n\tconst filterLookup = new Map<string, SubgraphFilter>();\n\tif (!Array.isArray(subgraph.sources)) {\n\t\tfor (const [name, filter] of Object.entries(\n\t\t\tsubgraph.sources as Record<string, SubgraphFilter>,\n\t\t)) {\n\t\t\tfilterLookup.set(name, filter);\n\t\t}\n\t}\n\n\t// Flatten matches to per-event dispatch units and sort into CHAIN order\n\t// (tx_index, then event_index; tx-level matches first within their tx).\n\t// The matcher groups results by source, so without this a block's mints\n\t// all run before (or after) its transfers — a debit could apply before\n\t// the same block's funding credit, which on-chain ordering forbids. Chain\n\t// order makes per-statement invariants (e.g. uint CHECK >= 0) sound.\n\ttype DispatchUnit = {\n\t\ttx: MatchedTx[\"tx\"];\n\t\tsourceName: string;\n\t\tevent: MatchedTx[\"events\"][0] | null;\n\t};\n\tconst units: DispatchUnit[] = [];\n\tfor (const { tx, events, sourceName } of matched) {\n\t\tif (events.length === 0) {\n\t\t\tunits.push({ tx, sourceName, event: null });\n\t\t} else {\n\t\t\tfor (const event of events) units.push({ tx, sourceName, event });\n\t\t}\n\t}\n\t// Within a tx the classic clock runs first, then the vm clock: the two\n\t// ordinals are not comparable, so they are never interleaved.\n\tconst clockRank = (e: DispatchUnit[\"event\"]) => (e?.clock === \"vm\" ? 1 : 0);\n\tunits.sort(\n\t\t(a, b) =>\n\t\t\t(a.tx.tx_index ?? 0) - (b.tx.tx_index ?? 0) ||\n\t\t\tclockRank(a.event) - clockRank(b.event) ||\n\t\t\t(a.event?.event_index ?? -1) - (b.event?.event_index ?? -1),\n\t);\n\n\tfor (const { tx, event, sourceName } of units) {\n\t\tif (errors >= threshold) {\n\t\t\tlogger.error(\n\t\t\t\t\"Subgraph error threshold reached, skipping remaining events\",\n\t\t\t\t{\n\t\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\t\terrors,\n\t\t\t\t\tthreshold,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tprocessed,\n\t\t\t\terrors,\n\t\t\t\tdelivered,\n\t\t\t\t...(skipped > 0 ? { skipped } : {}),\n\t\t\t};\n\t\t}\n\n\t\tconst filter = filterLookup.get(sourceName);\n\t\tconst handler = subgraph.handlers[sourceName] ?? null;\n\t\tif (!handler) {\n\t\t\tlogger.warn(\"No handler found for source\", {\n\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\tsourceName,\n\t\t\t\ttxId: tx.tx_id,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tctx.setTx({\n\t\t\ttxId: tx.tx_id,\n\t\t\tsender: tx.sender,\n\t\t\ttype: tx.type,\n\t\t\tstatus: tx.status,\n\t\t\tcontractId: tx.contract_id ?? null,\n\t\t\tfunctionName: tx.function_name ?? null,\n\t\t});\n\n\t\t// Checkpoint the ops queue: a handler that throws mid-way must\n\t\t// contribute nothing — a partial flush (e.g. a debit without its\n\t\t// credit) silently corrupts accumulator tables (fix-f040 B6).\n\t\tconst checkpoint = ctx.opsCheckpoint();\n\t\ttry {\n\t\t\tlet payload: Record<string, unknown>;\n\t\t\tif (event === null) {\n\t\t\t\t// Tx-level match (contract_call / contract_deploy)\n\t\t\t\tpayload = filter\n\t\t\t\t\t? buildEventPayload(filter, tx, null)\n\t\t\t\t\t: {\n\t\t\t\t\t\t\ttx: {\n\t\t\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\t\t\t\ttype: tx.type,\n\t\t\t\t\t\t\t\tstatus: tx.status,\n\t\t\t\t\t\t\t\tcontractId: tx.contract_id,\n\t\t\t\t\t\t\t\tfunctionName: tx.function_name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t} else if (filter) {\n\t\t\t\tpayload = buildEventPayload(filter, tx, event);\n\t\t\t} else {\n\t\t\t\tconst decoded = decodeEventData(event.data) as Record<string, unknown>;\n\t\t\t\tpayload = {\n\t\t\t\t\t...decoded,\n\t\t\t\t\t_eventId: event.id,\n\t\t\t\t\t_eventType: event.type,\n\t\t\t\t\t_eventIndex: event.event_index,\n\t\t\t\t\ttx: {\n\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\t\ttype: tx.type,\n\t\t\t\t\t\tstatus: tx.status,\n\t\t\t\t\t\tcontractId: tx.contract_id,\n\t\t\t\t\t\tfunctionName: tx.function_name,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Post-decode topic filter for print_event — source-matcher defers this\n\t\t\t// because data.value is raw hex at match time; apply it now after decode.\n\t\t\tif (\n\t\t\t\tevent !== null &&\n\t\t\t\tfilter?.type === \"print_event\" &&\n\t\t\t\tfilter.topic &&\n\t\t\t\tpayload.topic !== filter.topic\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdelivered++;\n\n\t\t\t// Declared `prints` is the developer's stated payload shape, so a\n\t\t\t// mismatch is a real defect (a contract upgrade, or a declaration\n\t\t\t// that never matched — the bns-names class, where every event\n\t\t\t// decoded to null for an entire deploy). Skip + log rather than\n\t\t\t// write nulls; never throw, which would wedge the block.\n\t\t\tif (event !== null && filter?.type === \"print_event\" && filter.prints) {\n\t\t\t\tconst printPayload = payload as {\n\t\t\t\t\ttopic?: string;\n\t\t\t\t\tdata?: Record<string, unknown>;\n\t\t\t\t};\n\t\t\t\tconst verdict = validatePrintPayload(\n\t\t\t\t\tfilter.prints,\n\t\t\t\t\tprintPayload.topic ?? \"\",\n\t\t\t\t\tprintPayload.data ?? {},\n\t\t\t\t);\n\t\t\t\tif (!verdict.ok) {\n\t\t\t\t\tskipped++;\n\t\t\t\t\tlogger.warn(\"Print payload does not match declared prints schema\", {\n\t\t\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\t\t\tsourceName,\n\t\t\t\t\t\ttopic: printPayload.topic,\n\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\treason: verdict.reason,\n\t\t\t\t\t});\n\t\t\t\t\t// Persist for the authed violations GET — never throw.\n\t\t\t\t\tvoid recordPrintViolation({\n\t\t\t\t\t\tsubgraphName: subgraph.name,\n\t\t\t\t\t\tsourceName,\n\t\t\t\t\t\tblockHeight: ctx.block.height,\n\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\treason: verdict.reason,\n\t\t\t\t\t\tsamplePayload: {\n\t\t\t\t\t\t\ttopic: printPayload.topic ?? \"\",\n\t\t\t\t\t\t\tdata: printPayload.data ?? {},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait handler(payload, ctx);\n\t\t\tprocessed++;\n\t\t} catch (err) {\n\t\t\t// Determinism breaks (verifiable subgraphs) and reads the\n\t\t\t// processor couldn't complete (DB, node): the output would depend\n\t\t\t// on the run, so abort the block and retry rather than commit it\n\t\t\t// without this event.\n\t\t\tif (abortsBlock(err)) throw err;\n\t\t\tctx.rollbackTo(checkpoint);\n\t\t\terrors++;\n\t\t\tlogger.error(\"Subgraph handler error\", {\n\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\tsourceName,\n\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t...(event !== null ? { eventId: event.id, eventType: event.type } : {}),\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn { processed, errors, delivered, ...(skipped > 0 ? { skipped } : {}) };\n}\n",
6
+ "import { getErrorMessage } from \"@secondlayer/shared\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport {\n\tclarityValueToJS,\n\tdeserializeCV,\n\ttoCamelCase,\n} from \"@secondlayer/stacks/clarity\";\nimport { camelizeKeys } from \"../print-schema.ts\";\nimport type {\n\tContractCallFilter,\n\tSubgraphDefinition,\n\tSubgraphFilter,\n} from \"../types.ts\";\nimport { decodeClarityValue, decodeEventData } from \"./clarity.ts\";\nimport type { SubgraphContext } from \"./context.ts\";\nimport { recordHandlerError } from \"./error-groups.ts\";\nimport { validatePrintPayload } from \"./print-validate.ts\";\nimport { abortsBlock } from \"./realm.ts\";\nimport { type MatchedTx, printContractId } from \"./source-matcher.ts\";\nimport { recordPrintViolation } from \"./violations.ts\";\n\n/** Max consecutive handler errors before marking subgraph as error */\nconst DEFAULT_ERROR_THRESHOLD = 50;\n\nexport interface RunResult {\n\tprocessed: number;\n\terrors: number;\n\t/** Events that survived the post-decode topic filter, i.e. what a handler\n\t * was actually offered (whether it then ran, errored, or failed `prints`).\n\t * The matcher cannot see topics (payload is raw hex there), so its match\n\t * count over-reports for a topic-filtered source. */\n\tdelivered: number;\n\t/** Print events skipped because their decoded payload did not match the\n\t * source's declared `prints` schema. Never an error: skipping keeps the\n\t * block committable, which the checkpoint model requires. */\n\tskipped?: number;\n}\n\n/**\n * Decode function_args (hex-encoded ClarityValues) to an array of JS values.\n * Returns decoded values via cvToValue.\n *\n * The string branch is legacy tolerance, not driver behaviour: rows written\n * before 2026-08-12 hold a jsonb *string* containing JSON because the writer\n * pre-serialized the array (see backfill-function-args.ts). Correct rows arrive\n * as arrays. Keep both paths until every environment has been backfilled.\n */\nfunction decodeFunctionArgs(args: unknown): unknown[] {\n\tlet parsed = args;\n\tif (typeof parsed === \"string\") {\n\t\ttry {\n\t\t\tparsed = JSON.parse(parsed);\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\tif (!Array.isArray(parsed)) return [];\n\treturn parsed.map((arg) => {\n\t\tif (typeof arg === \"string\") return decodeClarityValue(arg);\n\t\treturn arg;\n\t});\n}\n\n/**\n * Decode raw_result (hex-encoded Clarity return value) to JS value.\n */\nfunction decodeRawResult(raw: unknown): unknown {\n\tif (typeof raw === \"string\" && raw.length > 2) {\n\t\treturn decodeClarityValue(raw);\n\t}\n\treturn null;\n}\n\n/** Decode a hex Clarity value without mutating the original string field. */\nfunction decodeRawHex(hex: string): unknown {\n\tif (hex.startsWith(\"0x\") && hex.length > 2) {\n\t\treturn decodeClarityValue(hex);\n\t}\n\treturn hex;\n}\n\n/**\n * Decode a state-write hex value against the type the source `abi` declares\n * for that map key/value or data-var, so runtime values equal the types\n * `MapWritePayload` / `VarSetPayload` promise (camelCase tuple keys, wrapped\n * optionals and responses). Falls back to the untyped {@link decodeRawHex}\n * when there is no declared type or the hex does not decode.\n */\nfunction decodeStateHex(hex: string, abiType: unknown): unknown {\n\tif (abiType === undefined || !hex.startsWith(\"0x\") || hex.length <= 2) {\n\t\treturn decodeRawHex(hex);\n\t}\n\ttry {\n\t\t// Non-generic cast: see buildContractCallInput.\n\t\tconst decode = clarityValueToJS as unknown as (\n\t\t\ttype: unknown,\n\t\t\tcv: unknown,\n\t\t) => unknown;\n\t\treturn decode(abiType, deserializeCV(hex.slice(2)));\n\t} catch {\n\t\treturn decodeRawHex(hex);\n\t}\n}\n\n/** Declared ABI types for a map: `[key, value]`, undefined when the abi lacks it. */\nfunction mapAbiTypes(filter: SubgraphFilter, name: string): unknown[] {\n\tconst abi = \"abi\" in filter ? filter.abi : undefined;\n\tconst def = abi?.maps?.find((m) => m.name === name);\n\treturn def ? [def.key, def.value] : [];\n}\n\n/** Safely convert a value to BigInt. Handles string, number, bigint. Returns 0n on failure. */\nfunction safeBigInt(val: unknown): bigint {\n\tif (typeof val === \"bigint\") return val;\n\tif (typeof val === \"number\") return BigInt(val);\n\tif (typeof val === \"string\") {\n\t\ttry {\n\t\t\treturn BigInt(val);\n\t\t} catch {\n\t\t\treturn 0n;\n\t\t}\n\t}\n\treturn 0n;\n}\n\n/**\n * Build the named, ABI-decoded `event.input` for a contract_call source that\n * declares an `abi`. Each function arg is decoded via `clarityValueToJS` so the\n * values match the types `ExtractFunctionArgs` promises (Uint8Array buffers,\n * camelCase tuple keys, wrapped responses). Returns undefined when no abi /\n * function match, leaving handlers with the positional `args` only.\n */\nexport function buildContractCallInput(\n\tfilter: ContractCallFilter,\n\ttx: MatchedTx[\"tx\"],\n): Record<string, unknown> | undefined {\n\tconst abi = filter.abi;\n\tconst fnName = tx.function_name;\n\tif (!abi || !fnName) return undefined;\n\tconst fn = abi.functions?.find((f) => f.name === fnName);\n\tif (!fn || !Array.isArray(fn.args)) return undefined;\n\n\tlet rawArgs: unknown = tx.function_args;\n\tif (typeof rawArgs === \"string\") {\n\t\ttry {\n\t\t\trawArgs = JSON.parse(rawArgs);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\tif (!Array.isArray(rawArgs)) return undefined;\n\n\t// Call through a non-generic cast: clarityValueToJS<T> instantiates the deep\n\t// AbiToTS<T> conditional (TS2589) at runtime call sites. The static types\n\t// come from ContractCallPayload; here we only need its runtime reshaping.\n\tconst decodeArg = clarityValueToJS as unknown as (\n\t\ttype: unknown,\n\t\tcv: unknown,\n\t) => unknown;\n\tconst input: Record<string, unknown> = {};\n\tfn.args.forEach((arg, i) => {\n\t\tconst hex = rawArgs[i];\n\t\tif (typeof hex !== \"string\") return;\n\t\ttry {\n\t\t\tconst clean = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n\t\t\tinput[toCamelCase(arg.name)] = decodeArg(arg.type, deserializeCV(clean));\n\t\t} catch {\n\t\t\t// Skip args that fail to decode rather than dropping the whole event.\n\t\t}\n\t});\n\treturn input;\n}\n\n/**\n * Build a typed event payload based on the source filter type.\n * Returns the payload the handler will receive.\n */\nexport function buildEventPayload(\n\tfilter: SubgraphFilter,\n\ttx: MatchedTx[\"tx\"],\n\tevent: MatchedTx[\"events\"][0] | null,\n): Record<string, unknown> {\n\tconst txMeta = {\n\t\ttxId: tx.tx_id,\n\t\tsender: tx.sender,\n\t\ttype: tx.type,\n\t\tstatus: tx.status,\n\t\tcontractId: tx.contract_id ?? null,\n\t\tfunctionName: tx.function_name ?? null,\n\t};\n\n\t// Decoded function args + result for contract_call payloads\n\tconst decodedArgs = decodeFunctionArgs(tx.function_args);\n\tconst decodedResult = decodeRawResult(tx.raw_result);\n\n\t// No event — tx-level match (contract_call or contract_deploy)\n\tif (!event) {\n\t\tswitch (filter.type) {\n\t\t\tcase \"contract_call\": {\n\t\t\t\tconst input = buildContractCallInput(filter, tx);\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"contract_call\",\n\t\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\t\tfunctionName: tx.function_name ?? \"\",\n\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\targs: decodedArgs,\n\t\t\t\t\t...(input !== undefined ? { input } : {}),\n\t\t\t\t\tresult: decodedResult,\n\t\t\t\t\tresultHex: tx.raw_result ?? null,\n\t\t\t\t\ttx: txMeta,\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"contract_deploy\":\n\t\t\t\treturn {\n\t\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\t\tdeployer: tx.sender,\n\t\t\t\t\ttx: txMeta,\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn { tx: txMeta };\n\t\t}\n\t}\n\n\t// Decode event data (Clarity values auto-unwrapped via cvToValue)\n\tconst decoded = decodeEventData(event.data) as Record<string, unknown>;\n\n\tswitch (filter.type) {\n\t\t// ── FT events ──\n\t\tcase \"ft_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"ft_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"ft_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── NFT events ──\n\t\t// tokenId decodes from the canonical hex (`raw_value`), not the node's\n\t\t// verbose serde-tagged `value` (`{UInt:223}`). The hex is source-\n\t\t// independent — present in both the DB tap and the Index API — so a\n\t\t// subgraph yields the same clean tokenId (e.g. 223n) on either source.\n\t\tcase \"nft_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"nft_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"nft_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── STX events ──\n\t\tcase \"stx_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tmemo: decoded.memo ?? \"\",\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_lock\":\n\t\t\treturn {\n\t\t\t\tlockedAddress: decoded.locked_address as string,\n\t\t\t\tlockedAmount: safeBigInt(decoded.locked_amount),\n\t\t\t\tunlockHeight: safeBigInt(decoded.unlock_height),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── Print event ──\n\t\tcase \"print_event\": {\n\t\t\t// Decode the print value from the canonical hex (`raw_value`) so it's\n\t\t\t// source-independent and clean — the node's verbose serde-tagged\n\t\t\t// `value` (e.g. `{Optional:{data:null}}`) is not reproducible from the\n\t\t\t// Index API and is no longer used (same rationale as nft tokenId).\n\t\t\t// decodeEventData skips hex ≤10 chars, so decode `raw_value` directly.\n\t\t\tconst rawHex = (event.data as Record<string, unknown> | null)?.raw_value;\n\t\t\tconst rawValue =\n\t\t\t\ttypeof rawHex === \"string\" && rawHex.startsWith(\"0x\")\n\t\t\t\t\t? decodeClarityValue(rawHex)\n\t\t\t\t\t: decoded.value;\n\t\t\t// Extract topic from decoded Clarity value (not raw event topic which is always \"print\")\n\t\t\tconst clarityObj =\n\t\t\t\trawValue && typeof rawValue === \"object\" && !Array.isArray(rawValue)\n\t\t\t\t\t? (rawValue as Record<string, unknown>)\n\t\t\t\t\t: null;\n\t\t\tconst topic = clarityObj?.topic\n\t\t\t\t? String(clarityObj.topic)\n\t\t\t\t: ((decoded.topic as string) ?? \"\");\n\t\t\t// Camelize remaining keys for developer convenience\n\t\t\tconst { topic: _, ...rest } = clarityObj ?? {};\n\t\t\tconst data =\n\t\t\t\tObject.keys(rest).length > 0\n\t\t\t\t\t? (camelizeKeys(rest) as Record<string, unknown>)\n\t\t\t\t\t: rawValue && typeof rawValue !== \"object\"\n\t\t\t\t\t\t? rawValue\n\t\t\t\t\t\t: {};\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(decoded) ?? tx.contract_id ?? \"\",\n\t\t\t\ttopic,\n\t\t\t\tdata: data ?? {},\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\n\t\t// ── Contract call (with events) ──\n\t\tcase \"contract_call\": {\n\t\t\t// Normalize the spread event Clarity `value` to the decoded canonical\n\t\t\t// (from `raw_value`), so it's identical whether the event came from the\n\t\t\t// DB tap or the Index API — the node's serde-tagged `value` is not\n\t\t\t// reproducible from Index (same rationale as nft tokenId / print).\n\t\t\tconst ccRawHex = (event.data as Record<string, unknown> | null)\n\t\t\t\t?.raw_value;\n\t\t\tconst normalized =\n\t\t\t\ttypeof ccRawHex === \"string\" && ccRawHex.startsWith(\"0x\")\n\t\t\t\t\t? { ...decoded, value: decodeClarityValue(ccRawHex) }\n\t\t\t\t\t: decoded;\n\t\t\tconst input = buildContractCallInput(filter, tx);\n\t\t\treturn {\n\t\t\t\t...normalized,\n\t\t\t\ttype: \"contract_call\",\n\t\t\t\t_eventType: event.type,\n\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\tfunctionName: tx.function_name ?? \"\",\n\t\t\t\tsender: tx.sender,\n\t\t\t\targs: decodedArgs,\n\t\t\t\t...(input !== undefined ? { input } : {}),\n\t\t\t\tresult: decodedResult,\n\t\t\t\tresultHex: tx.raw_result ?? null,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\n\t\t// ── Contract deploy ──\n\t\tcase \"contract_deploy\":\n\t\t\treturn {\n\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\tdeployer: tx.sender,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── VM traces: preserve raw hex. Generic decodeEventData would turn\n\t\t// a long uint hex into bigint and leave a short boolean hex a string.\n\t\tcase \"nested_contract_call\": {\n\t\t\tconst data = (event.data ?? {}) as Record<string, unknown>;\n\t\t\tconst argsHex = Array.isArray(data.function_args)\n\t\t\t\t? data.function_args.filter((a): a is string => typeof a === \"string\")\n\t\t\t\t: [];\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(data) ?? \"\",\n\t\t\t\tsender: typeof data.sender === \"string\" ? data.sender : null,\n\t\t\t\tcaller: typeof data.caller === \"string\" ? data.caller : \"\",\n\t\t\t\tfunctionName:\n\t\t\t\t\ttypeof data.function_name === \"string\" ? data.function_name : \"\",\n\t\t\t\targs: decodeFunctionArgs(argsHex),\n\t\t\t\targuments: argsHex,\n\t\t\t\trawResult: typeof data.raw_result === \"string\" ? data.raw_result : \"\",\n\t\t\t\tresult: decodeRawResult(data.raw_result),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\t\tcase \"var_set\": {\n\t\t\tconst data = (event.data ?? {}) as Record<string, unknown>;\n\t\t\tconst rawValue = typeof data.raw_value === \"string\" ? data.raw_value : \"\";\n\t\t\tconst varName = typeof data.var_name === \"string\" ? data.var_name : \"\";\n\t\t\tconst abi = \"abi\" in filter ? filter.abi : undefined;\n\t\t\tconst varType = abi?.variables?.find((v) => v.name === varName)?.type;\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(data) ?? \"\",\n\t\t\t\tvarName,\n\t\t\t\trawValue,\n\t\t\t\tvalue: decodeStateHex(rawValue, varType),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\t\tcase \"map_set\":\n\t\tcase \"map_insert\": {\n\t\t\tconst data = (event.data ?? {}) as Record<string, unknown>;\n\t\t\tconst rawKey = typeof data.raw_key === \"string\" ? data.raw_key : \"\";\n\t\t\tconst rawValue = typeof data.raw_value === \"string\" ? data.raw_value : \"\";\n\t\t\tconst map = typeof data.map_name === \"string\" ? data.map_name : \"\";\n\t\t\tconst [keyType, valueType] = mapAbiTypes(filter, map);\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(data) ?? \"\",\n\t\t\t\tmap,\n\t\t\t\trawKey,\n\t\t\t\tkey: decodeStateHex(rawKey, keyType),\n\t\t\t\trawValue,\n\t\t\t\tvalue: decodeStateHex(rawValue, valueType),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\t\tcase \"map_delete\": {\n\t\t\tconst data = (event.data ?? {}) as Record<string, unknown>;\n\t\t\tconst rawKey = typeof data.raw_key === \"string\" ? data.raw_key : \"\";\n\t\t\tconst map = typeof data.map_name === \"string\" ? data.map_name : \"\";\n\t\t\treturn {\n\t\t\t\tcontractId: printContractId(data) ?? \"\",\n\t\t\t\tmap,\n\t\t\t\trawKey,\n\t\t\t\tkey: decodeStateHex(rawKey, mapAbiTypes(filter, map)[0]),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\t// Fallback: spread decoded data with tx metadata\n\t\t\treturn {\n\t\t\t\t...decoded,\n\t\t\t\t_eventType: event.type,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t}\n}\n\n/**\n * Run a subgraph's keyed handlers against all matched transactions/events.\n *\n * Each MatchedTx carries a sourceName from the matcher. The runner looks up\n * the handler of the same name in subgraph.handlers.\n *\n * Does NOT flush — caller is responsible for flushing ctx after run.\n */\nexport async function runHandlers(\n\tsubgraph: SubgraphDefinition,\n\tmatched: MatchedTx[],\n\tctx: SubgraphContext,\n\topts?: { errorThreshold?: number },\n): Promise<RunResult> {\n\tlet processed = 0;\n\tlet errors = 0;\n\tlet skipped = 0;\n\tlet delivered = 0;\n\tconst threshold = opts?.errorThreshold ?? DEFAULT_ERROR_THRESHOLD;\n\n\t// Build filter lookup from sources (supports both array and named object)\n\tconst filterLookup = new Map<string, SubgraphFilter>();\n\tif (!Array.isArray(subgraph.sources)) {\n\t\tfor (const [name, filter] of Object.entries(\n\t\t\tsubgraph.sources as Record<string, SubgraphFilter>,\n\t\t)) {\n\t\t\tfilterLookup.set(name, filter);\n\t\t}\n\t}\n\n\t// Flatten matches to per-event dispatch units and sort into CHAIN order\n\t// (tx_index, then event_index; tx-level matches first within their tx).\n\t// The matcher groups results by source, so without this a block's mints\n\t// all run before (or after) its transfers — a debit could apply before\n\t// the same block's funding credit, which on-chain ordering forbids. Chain\n\t// order makes per-statement invariants (e.g. uint CHECK >= 0) sound.\n\ttype DispatchUnit = {\n\t\ttx: MatchedTx[\"tx\"];\n\t\tsourceName: string;\n\t\tevent: MatchedTx[\"events\"][0] | null;\n\t};\n\tconst units: DispatchUnit[] = [];\n\tfor (const { tx, events, sourceName } of matched) {\n\t\tif (events.length === 0) {\n\t\t\tunits.push({ tx, sourceName, event: null });\n\t\t} else {\n\t\t\tfor (const event of events) units.push({ tx, sourceName, event });\n\t\t}\n\t}\n\t// Within a tx the classic clock runs first, then the vm clock: the two\n\t// ordinals are not comparable, so they are never interleaved.\n\tconst clockRank = (e: DispatchUnit[\"event\"]) => (e?.clock === \"vm\" ? 1 : 0);\n\tunits.sort(\n\t\t(a, b) =>\n\t\t\t(a.tx.tx_index ?? 0) - (b.tx.tx_index ?? 0) ||\n\t\t\tclockRank(a.event) - clockRank(b.event) ||\n\t\t\t(a.event?.event_index ?? -1) - (b.event?.event_index ?? -1),\n\t);\n\n\tfor (const { tx, event, sourceName } of units) {\n\t\tif (errors >= threshold) {\n\t\t\tlogger.error(\n\t\t\t\t\"Subgraph error threshold reached, skipping remaining events\",\n\t\t\t\t{\n\t\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\t\terrors,\n\t\t\t\t\tthreshold,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tprocessed,\n\t\t\t\terrors,\n\t\t\t\tdelivered,\n\t\t\t\t...(skipped > 0 ? { skipped } : {}),\n\t\t\t};\n\t\t}\n\n\t\tconst filter = filterLookup.get(sourceName);\n\t\tconst handler = subgraph.handlers[sourceName] ?? null;\n\t\tif (!handler) {\n\t\t\tlogger.warn(\"No handler found for source\", {\n\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\tsourceName,\n\t\t\t\ttxId: tx.tx_id,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tctx.setTx({\n\t\t\ttxId: tx.tx_id,\n\t\t\tsender: tx.sender,\n\t\t\ttype: tx.type,\n\t\t\tstatus: tx.status,\n\t\t\tcontractId: tx.contract_id ?? null,\n\t\t\tfunctionName: tx.function_name ?? null,\n\t\t});\n\n\t\t// Checkpoint the ops queue: a handler that throws mid-way must\n\t\t// contribute nothing — a partial flush (e.g. a debit without its\n\t\t// credit) silently corrupts accumulator tables (fix-f040 B6).\n\t\tconst checkpoint = ctx.opsCheckpoint();\n\t\ttry {\n\t\t\tlet payload: Record<string, unknown>;\n\t\t\tif (event === null) {\n\t\t\t\t// Tx-level match (contract_call / contract_deploy)\n\t\t\t\tpayload = filter\n\t\t\t\t\t? buildEventPayload(filter, tx, null)\n\t\t\t\t\t: {\n\t\t\t\t\t\t\ttx: {\n\t\t\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\t\t\t\ttype: tx.type,\n\t\t\t\t\t\t\t\tstatus: tx.status,\n\t\t\t\t\t\t\t\tcontractId: tx.contract_id,\n\t\t\t\t\t\t\t\tfunctionName: tx.function_name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t} else if (filter) {\n\t\t\t\tpayload = buildEventPayload(filter, tx, event);\n\t\t\t} else {\n\t\t\t\tconst decoded = decodeEventData(event.data) as Record<string, unknown>;\n\t\t\t\tpayload = {\n\t\t\t\t\t...decoded,\n\t\t\t\t\t_eventId: event.id,\n\t\t\t\t\t_eventType: event.type,\n\t\t\t\t\t_eventIndex: event.event_index,\n\t\t\t\t\ttx: {\n\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\t\ttype: tx.type,\n\t\t\t\t\t\tstatus: tx.status,\n\t\t\t\t\t\tcontractId: tx.contract_id,\n\t\t\t\t\t\tfunctionName: tx.function_name,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Post-decode topic filter for print_event — source-matcher defers this\n\t\t\t// because data.value is raw hex at match time; apply it now after decode.\n\t\t\tif (\n\t\t\t\tevent !== null &&\n\t\t\t\tfilter?.type === \"print_event\" &&\n\t\t\t\tfilter.topic &&\n\t\t\t\tpayload.topic !== filter.topic\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdelivered++;\n\n\t\t\t// Declared `prints` is the developer's stated payload shape, so a\n\t\t\t// mismatch is a real defect (a contract upgrade, or a declaration\n\t\t\t// that never matched — the bns-names class, where every event\n\t\t\t// decoded to null for an entire deploy). Skip + log rather than\n\t\t\t// write nulls; never throw, which would wedge the block.\n\t\t\tif (event !== null && filter?.type === \"print_event\" && filter.prints) {\n\t\t\t\tconst printPayload = payload as {\n\t\t\t\t\ttopic?: string;\n\t\t\t\t\tdata?: Record<string, unknown>;\n\t\t\t\t};\n\t\t\t\tconst verdict = validatePrintPayload(\n\t\t\t\t\tfilter.prints,\n\t\t\t\t\tprintPayload.topic ?? \"\",\n\t\t\t\t\tprintPayload.data ?? {},\n\t\t\t\t);\n\t\t\t\tif (!verdict.ok) {\n\t\t\t\t\tskipped++;\n\t\t\t\t\tlogger.warn(\"Print payload does not match declared prints schema\", {\n\t\t\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\t\t\tsourceName,\n\t\t\t\t\t\ttopic: printPayload.topic,\n\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\treason: verdict.reason,\n\t\t\t\t\t});\n\t\t\t\t\t// Persist for the authed violations GET — never throw.\n\t\t\t\t\tvoid recordPrintViolation({\n\t\t\t\t\t\tsubgraphName: subgraph.name,\n\t\t\t\t\t\tsourceName,\n\t\t\t\t\t\tblockHeight: ctx.block.height,\n\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\treason: verdict.reason,\n\t\t\t\t\t\tsamplePayload: {\n\t\t\t\t\t\t\ttopic: printPayload.topic ?? \"\",\n\t\t\t\t\t\t\tdata: printPayload.data ?? {},\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait handler(payload, ctx);\n\t\t\tprocessed++;\n\t\t} catch (err) {\n\t\t\t// Determinism breaks (verifiable subgraphs) and reads the\n\t\t\t// processor couldn't complete (DB, node): the output would depend\n\t\t\t// on the run, so abort the block and retry rather than commit it\n\t\t\t// without this event.\n\t\t\tif (abortsBlock(err)) throw err;\n\t\t\tctx.rollbackTo(checkpoint);\n\t\t\terrors++;\n\t\t\trecordHandlerError({\n\t\t\t\tsubgraphName: subgraph.name,\n\t\t\t\tsourceName,\n\t\t\t\teventType: event?.type ?? null,\n\t\t\t\ttxId: tx.tx_id,\n\t\t\t\tblockHeight: ctx.block.height,\n\t\t\t\terr,\n\t\t\t});\n\t\t\tlogger.error(\"Subgraph handler error\", {\n\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\tsourceName,\n\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t...(event !== null ? { eventId: event.id, eventType: event.type } : {}),\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn { processed, errors, delivered, ...(skipped > 0 ? { skipped } : {}) };\n}\n",
7
7
  "import {\n\ttype ClarityValue,\n\ttype TupleCV,\n\tdeserializeCV,\n} from \"@secondlayer/stacks/clarity\";\nimport type { ColumnType } from \"./types.ts\";\n\n/**\n * Empirical print-payload schema inference. Callers (the index print-schema\n * endpoint) extract topic + raw Clarity hex per row; this module deserializes\n * a bounded sample per topic, unifies the observed value shapes into a single\n * structural tree, and renders Clarity/TS/ColumnType views of each field.\n */\n\nexport interface PrintSample {\n\tblockHeight: number;\n\ttopic: string;\n\trawHex: string | null;\n}\n\nexport interface InferredPrintField {\n\t/** Original kebab-case tuple key (the `topic` discriminant is excluded) */\n\tname: string;\n\t/** What handlers see on `e.data` — exact runner camelization */\n\tcamel_name: string;\n\t/** Rendered Clarity type; buff/string lengths are the max observed */\n\tclarity_type: string;\n\t/** Decoded handler value type (uint→bigint, buffer→string, …) */\n\tts_type: string;\n\tcolumn_type: ColumnType;\n\t/** Present in 100% of this topic's decoded samples */\n\talways_present: boolean;\n\t/** Only when optional observed: share of present samples that were some */\n\toptional_some_rate?: number;\n}\n\n/** The fields seen in one `print` topic, with counts and heights. */\nexport interface InferredTopicSchema {\n\ttopic: string;\n\tcount: number;\n\tfirst_height: number;\n\tlast_height: number;\n\tnon_tuple: boolean;\n\tfields: InferredPrintField[];\n}\n\n/**\n * Kebab-case → camelCase for print tuple keys. Canonical: the runner uses\n * this on `event.data`, and `camel_name` in inferred print schema is the\n * same function. Distinct from ABI `toCamelCase` (`transfer-STX` stays\n * `transfer-STX` here, becomes `transferSTX` there).\n */\nexport function camelizeDataKey(str: string): string {\n\treturn str.replace(/-([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\n/**\n * Camelizes object keys recursively, the way print payloads are.\n *\n * It uses the print-payload helper, not ABI `toCamelCase`, which strips `-STX`\n * and prefixes leading digits.\n */\nexport function camelizeKeys(obj: unknown): unknown {\n\tif (obj === null || obj === undefined) return obj;\n\tif (typeof obj !== \"object\") return obj;\n\tif (Array.isArray(obj)) return obj.map(camelizeKeys);\n\tconst result: Record<string, unknown> = {};\n\tfor (const [k, v] of Object.entries(obj as Record<string, unknown>)) {\n\t\tresult[camelizeDataKey(k)] = camelizeKeys(v);\n\t}\n\treturn result;\n}\n\n/**\n * Structural type tree. `null` inner = never observed (empty list, none-only\n * optional, one-sided response) and renders as \"?\".\n */\ntype Tree =\n\t| { kind: \"uint\" | \"int\" | \"bool\" | \"principal\" }\n\t| { kind: \"buffer\" | \"ascii\" | \"utf8\"; len: number }\n\t| { kind: \"optional\"; inner: Tree | null }\n\t| { kind: \"list\"; inner: Tree | null }\n\t| {\n\t\t\tkind: \"tuple\";\n\t\t\tcount: number;\n\t\t\tentries: Map<string, { tree: Tree; present: number }>;\n\t }\n\t| { kind: \"response\"; ok: Tree | null; err: Tree | null }\n\t| { kind: \"union\"; members: Tree[] };\n\nfunction cvToTree(cv: ClarityValue): Tree {\n\tswitch (cv.type) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\t\treturn { kind: cv.type };\n\t\tcase \"true\":\n\t\tcase \"false\":\n\t\t\treturn { kind: \"bool\" };\n\t\tcase \"address\":\n\t\tcase \"contract\":\n\t\t\treturn { kind: \"principal\" };\n\t\tcase \"buffer\":\n\t\t\treturn { kind: \"buffer\", len: cv.value.length / 2 };\n\t\tcase \"ascii\":\n\t\t\treturn { kind: \"ascii\", len: cv.value.length };\n\t\tcase \"utf8\":\n\t\t\t// Clarity string-utf8 lengths are byte counts, not code points\n\t\t\treturn { kind: \"utf8\", len: new TextEncoder().encode(cv.value).length };\n\t\tcase \"none\":\n\t\t\treturn { kind: \"optional\", inner: null };\n\t\tcase \"some\":\n\t\t\treturn { kind: \"optional\", inner: cvToTree(cv.value) };\n\t\tcase \"ok\":\n\t\t\treturn { kind: \"response\", ok: cvToTree(cv.value), err: null };\n\t\tcase \"err\":\n\t\t\treturn { kind: \"response\", ok: null, err: cvToTree(cv.value) };\n\t\tcase \"list\": {\n\t\t\tlet inner: Tree | null = null;\n\t\t\tfor (const el of cv.value) {\n\t\t\t\tconst t = cvToTree(el);\n\t\t\t\tinner = inner ? unify(inner, t) : t;\n\t\t\t}\n\t\t\treturn { kind: \"list\", inner };\n\t\t}\n\t\tcase \"tuple\": {\n\t\t\tconst entries = new Map<string, { tree: Tree; present: number }>();\n\t\t\tfor (const [k, v] of Object.entries(cv.value)) {\n\t\t\t\tentries.set(k, { tree: cvToTree(v), present: 1 });\n\t\t\t}\n\t\t\treturn { kind: \"tuple\", count: 1, entries };\n\t\t}\n\t}\n}\n\nfunction unifyNullable(a: Tree | null, b: Tree | null): Tree | null {\n\tif (!a) return b;\n\tif (!b) return a;\n\treturn unify(a, b);\n}\n\n/**\n * Canonical union-member order. Unions hold at most one member per kind\n * (same-kind members always merge), so sorting by kind makes the union —\n * and everything rendered from it — independent of sample order.\n */\nconst UNION_KIND_ORDER: Record<string, number> = {\n\tuint: 0,\n\tint: 1,\n\tbool: 2,\n\tprincipal: 3,\n\tbuffer: 4,\n\tascii: 5,\n\tutf8: 6,\n\tlist: 7,\n\ttuple: 8,\n\tresponse: 9,\n};\n\nfunction makeUnion(members: Tree[]): Tree {\n\tconst sorted = [...members].sort(\n\t\t(a, b) =>\n\t\t\t(UNION_KIND_ORDER[a.kind] ?? 99) - (UNION_KIND_ORDER[b.kind] ?? 99),\n\t);\n\treturn { kind: \"union\", members: sorted };\n}\n\nfunction unify(a: Tree, b: Tree): Tree {\n\t// Optional hoists above unions/conflicts so unification is commutative and\n\t// associative: (optional T) ∪ U = (optional (T ∪ U)) regardless of which\n\t// sample order introduced the optional. Union members are never optional.\n\tif (a.kind === \"optional\" || b.kind === \"optional\") {\n\t\tconst ai = a.kind === \"optional\" ? a.inner : a;\n\t\tconst bi = b.kind === \"optional\" ? b.inner : b;\n\t\treturn { kind: \"optional\", inner: unifyNullable(ai, bi) };\n\t}\n\tif (a.kind === \"union\") return unionAdd(a.members, b);\n\tif (b.kind === \"union\") return unionAdd(b.members, a);\n\tif (a.kind !== b.kind) return makeUnion([a, b]);\n\tswitch (a.kind) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\tcase \"bool\":\n\t\tcase \"principal\":\n\t\t\treturn a;\n\t\tcase \"buffer\":\n\t\tcase \"ascii\":\n\t\tcase \"utf8\":\n\t\t\treturn { kind: a.kind, len: Math.max(a.len, (b as typeof a).len) };\n\t\tcase \"list\":\n\t\t\treturn {\n\t\t\t\tkind: \"list\",\n\t\t\t\tinner: unifyNullable(a.inner, (b as typeof a).inner),\n\t\t\t};\n\t\tcase \"response\": {\n\t\t\tconst rb = b as typeof a;\n\t\t\treturn {\n\t\t\t\tkind: \"response\",\n\t\t\t\tok: unifyNullable(a.ok, rb.ok),\n\t\t\t\terr: unifyNullable(a.err, rb.err),\n\t\t\t};\n\t\t}\n\t\tcase \"tuple\": {\n\t\t\tconst tb = b as typeof a;\n\t\t\tconst entries = new Map(\n\t\t\t\t[...a.entries].map(\n\t\t\t\t\t([k, e]) =>\n\t\t\t\t\t\t[k, { ...e }] as [string, { tree: Tree; present: number }],\n\t\t\t\t),\n\t\t\t);\n\t\t\tfor (const [k, e] of tb.entries) {\n\t\t\t\tconst existing = entries.get(k);\n\t\t\t\tentries.set(\n\t\t\t\t\tk,\n\t\t\t\t\texisting\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttree: unify(existing.tree, e.tree),\n\t\t\t\t\t\t\t\tpresent: existing.present + e.present,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: { ...e },\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { kind: \"tuple\", count: a.count + tb.count, entries };\n\t\t}\n\t}\n}\n\n/** Merge into an existing union: join a compatible member, else append. */\nfunction unionAdd(members: Tree[], t: Tree): Tree {\n\tif (t.kind === \"union\") {\n\t\tlet acc: Tree = { kind: \"union\", members };\n\t\tfor (const m of t.members) acc = unify(acc, m);\n\t\treturn acc;\n\t}\n\tconst next = [...members];\n\tfor (let i = 0; i < next.length; i++) {\n\t\tconst member = next[i];\n\t\tif (!member) continue;\n\t\tconst merged = unify(member, t);\n\t\tif (merged.kind !== \"union\") {\n\t\t\tnext[i] = merged;\n\t\t\treturn makeUnion(next);\n\t\t}\n\t}\n\tnext.push(t);\n\treturn makeUnion(next);\n}\n\nfunction wrapOptional(t: Tree): Tree {\n\treturn t.kind === \"optional\" ? t : { kind: \"optional\", inner: t };\n}\n\nfunction renderClarity(t: Tree | null): string {\n\tif (!t) return \"?\";\n\tswitch (t.kind) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\tcase \"bool\":\n\t\tcase \"principal\":\n\t\t\treturn t.kind;\n\t\tcase \"buffer\":\n\t\t\treturn `(buff ${t.len})`;\n\t\tcase \"ascii\":\n\t\t\treturn `(string-ascii ${t.len})`;\n\t\tcase \"utf8\":\n\t\t\treturn `(string-utf8 ${t.len})`;\n\t\tcase \"optional\":\n\t\t\treturn `(optional ${renderClarity(t.inner)})`;\n\t\tcase \"list\":\n\t\t\treturn `(list ${renderClarity(t.inner)})`;\n\t\tcase \"response\":\n\t\t\treturn `(response ${renderClarity(t.ok)} ${renderClarity(t.err)})`;\n\t\tcase \"tuple\": {\n\t\t\tconst parts = [...t.entries].map(([k, e]) => {\n\t\t\t\tconst tree = e.present < t.count ? wrapOptional(e.tree) : e.tree;\n\t\t\t\treturn `(${k} ${renderClarity(tree)})`;\n\t\t\t});\n\t\t\treturn `(tuple ${parts.join(\" \")})`;\n\t\t}\n\t\tcase \"union\":\n\t\t\treturn t.members.map(renderClarity).join(\" | \");\n\t}\n}\n\nfunction renderTs(t: Tree | null): string {\n\tif (!t) return \"unknown\";\n\tswitch (t.kind) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\t\treturn \"bigint\";\n\t\tcase \"bool\":\n\t\t\treturn \"boolean\";\n\t\tcase \"principal\":\n\t\tcase \"buffer\":\n\t\tcase \"ascii\":\n\t\tcase \"utf8\":\n\t\t\treturn \"string\";\n\t\tcase \"optional\":\n\t\t\treturn t.inner ? `${renderTs(t.inner)} | null` : \"unknown | null\";\n\t\tcase \"list\": {\n\t\t\tconst inner = renderTs(t.inner);\n\t\t\treturn inner.includes(\" | \") ? `(${inner})[]` : `${inner}[]`;\n\t\t}\n\t\tcase \"response\": {\n\t\t\t// Runtime unwraps both sides → handler sees the union of inner types\n\t\t\tconst sides = [...new Set([renderTs(t.ok), renderTs(t.err)])];\n\t\t\treturn sides.join(\" | \");\n\t\t}\n\t\tcase \"tuple\": {\n\t\t\tconst parts = [...t.entries].map(([k, e]) => {\n\t\t\t\tconst opt = e.present < t.count ? \"?\" : \"\";\n\t\t\t\treturn `${camelizeDataKey(k)}${opt}: ${renderTs(e.tree)}`;\n\t\t\t});\n\t\t\treturn `{ ${parts.join(\"; \")} }`;\n\t\t}\n\t\tcase \"union\":\n\t\t\treturn [...new Set(t.members.map((m) => renderTs(m)))].join(\" | \");\n\t}\n}\n\nfunction toColumnType(t: Tree | null): ColumnType {\n\tif (!t) return \"jsonb\";\n\tswitch (t.kind) {\n\t\tcase \"uint\":\n\t\t\treturn \"uint\";\n\t\tcase \"int\":\n\t\t\treturn \"int\";\n\t\tcase \"bool\":\n\t\t\treturn \"boolean\";\n\t\tcase \"principal\":\n\t\t\treturn \"principal\";\n\t\tcase \"buffer\":\n\t\tcase \"ascii\":\n\t\tcase \"utf8\":\n\t\t\treturn \"text\";\n\t\tcase \"list\":\n\t\tcase \"tuple\":\n\t\t\treturn \"jsonb\";\n\t\t// Nullability is carried by always_present/optional_some_rate, not the column type\n\t\tcase \"optional\":\n\t\t\treturn toColumnType(t.inner);\n\t\tcase \"response\":\n\t\t\treturn t.ok ? toColumnType(t.ok) : \"jsonb\";\n\t\tcase \"union\":\n\t\t\treturn \"jsonb\";\n\t}\n}\n\n/** Per-topic deserialization budget: spread across the newest + oldest rows that have raw hex */\nconst MAX_DECODED_PER_TOPIC_NEWEST = 75;\nconst MAX_DECODED_PER_TOPIC_OLDEST = 25;\n\n/**\n * Infers per-topic field schemas from sampled print events. Counts and\n * height bounds cover ALL rows of a topic (cheap); only a bounded subset is\n * deserialized for typing. Rows with missing/undecodable hex still count but\n * contribute nothing to typing.\n */\nexport function inferPrintTopics(\n\tsamples: PrintSample[],\n): InferredTopicSchema[] {\n\tconst groups = new Map<string, PrintSample[]>();\n\tfor (const s of samples) {\n\t\tconst group = groups.get(s.topic);\n\t\tif (group) group.push(s);\n\t\telse groups.set(s.topic, [s]);\n\t}\n\n\tconst out: InferredTopicSchema[] = [];\n\tfor (const [topic, rows] of groups) {\n\t\tlet first = Number.POSITIVE_INFINITY;\n\t\tlet last = Number.NEGATIVE_INFINITY;\n\t\tfor (const r of rows) {\n\t\t\tif (r.blockHeight < first) first = r.blockHeight;\n\t\t\tif (r.blockHeight > last) last = r.blockHeight;\n\t\t}\n\n\t\t// Spend the decode budget only on rows that have raw hex, so null-hex\n\t\t// rows (still counted in totals/heights) don't starve typing.\n\t\tconst withHex = [...rows]\n\t\t\t.filter((r): r is PrintSample & { rawHex: string } => r.rawHex !== null)\n\t\t\t.sort((a, b) => b.blockHeight - a.blockHeight);\n\t\tconst budget = MAX_DECODED_PER_TOPIC_NEWEST + MAX_DECODED_PER_TOPIC_OLDEST;\n\t\tconst picked =\n\t\t\twithHex.length <= budget\n\t\t\t\t? withHex\n\t\t\t\t: [\n\t\t\t\t\t\t...withHex.slice(0, MAX_DECODED_PER_TOPIC_NEWEST),\n\t\t\t\t\t\t...withHex.slice(-MAX_DECODED_PER_TOPIC_OLDEST),\n\t\t\t\t\t];\n\n\t\tconst tuples: TupleCV[] = [];\n\t\tlet decoded = 0;\n\t\tfor (const p of picked) {\n\t\t\ttry {\n\t\t\t\tconst cv = deserializeCV(p.rawHex);\n\t\t\t\tdecoded++;\n\t\t\t\tif (cv.type === \"tuple\") tuples.push(cv);\n\t\t\t} catch {\n\t\t\t\t// undecodable hex contributes nothing to typing\n\t\t\t}\n\t\t}\n\n\t\t// Only claim non_tuple when something actually decoded to a non-tuple;\n\t\t// zero decoded samples is \"no evidence\", not a non-tuple payload.\n\t\tconst nonTuple = decoded > 0 && tuples.length === 0;\n\t\tconst fields: InferredPrintField[] = [];\n\t\tif (!nonTuple) {\n\t\t\tconst stats = new Map<\n\t\t\t\tstring,\n\t\t\t\t{\n\t\t\t\t\ttree: Tree;\n\t\t\t\t\tpresent: number;\n\t\t\t\t\tnoneCount: number;\n\t\t\t\t\toptionalSeen: boolean;\n\t\t\t\t}\n\t\t\t>();\n\t\t\tfor (const t of tuples) {\n\t\t\t\tfor (const [key, value] of Object.entries(t.value)) {\n\t\t\t\t\t// `topic` is the discriminant, never payload data (runner strips it)\n\t\t\t\t\tif (key === \"topic\") continue;\n\t\t\t\t\tconst tree = cvToTree(value);\n\t\t\t\t\tconst existing = stats.get(key);\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\texisting.present++;\n\t\t\t\t\t\texisting.tree = unify(existing.tree, tree);\n\t\t\t\t\t\tif (value.type === \"none\") existing.noneCount++;\n\t\t\t\t\t\tif (value.type === \"none\" || value.type === \"some\") {\n\t\t\t\t\t\t\texisting.optionalSeen = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstats.set(key, {\n\t\t\t\t\t\t\ttree,\n\t\t\t\t\t\t\tpresent: 1,\n\t\t\t\t\t\t\tnoneCount: value.type === \"none\" ? 1 : 0,\n\t\t\t\t\t\t\toptionalSeen: value.type === \"none\" || value.type === \"some\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const [name, st] of [...stats].sort(([a], [b]) =>\n\t\t\t\ta.localeCompare(b),\n\t\t\t)) {\n\t\t\t\tconst field: InferredPrintField = {\n\t\t\t\t\tname,\n\t\t\t\t\tcamel_name: camelizeDataKey(name),\n\t\t\t\t\tclarity_type: renderClarity(st.tree),\n\t\t\t\t\tts_type: renderTs(st.tree),\n\t\t\t\t\tcolumn_type: toColumnType(st.tree),\n\t\t\t\t\talways_present: st.present === tuples.length,\n\t\t\t\t};\n\t\t\t\tif (st.optionalSeen) {\n\t\t\t\t\tfield.optional_some_rate = (st.present - st.noneCount) / st.present;\n\t\t\t\t}\n\t\t\t\tfields.push(field);\n\t\t\t}\n\t\t}\n\n\t\tout.push({\n\t\t\ttopic,\n\t\t\tcount: rows.length,\n\t\t\tfirst_height: first,\n\t\t\tlast_height: last,\n\t\t\tnon_tuple: nonTuple,\n\t\t\tfields,\n\t\t});\n\t}\n\n\treturn out.sort((a, b) => b.count - a.count);\n}\n",
8
8
  "import { cvToValue, deserializeCV } from \"@secondlayer/stacks/clarity\";\n\n/**\n * Decode a hex-encoded Clarity value to a JS object.\n * Returns original value on failure.\n */\nexport function decodeClarityValue(hex: string): unknown {\n\ttry {\n\t\tconst cleanHex = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n\t\tconst cv = deserializeCV(cleanHex);\n\t\treturn cvToValue(cv);\n\t} catch {\n\t\treturn hex;\n\t}\n}\n\n/**\n * Recursively decode all hex-encoded Clarity values in an object.\n * Any string starting with \"0x\" and longer than 10 chars is attempted.\n */\nexport function decodeEventData(data: unknown): unknown {\n\tif (typeof data === \"string\" && data.startsWith(\"0x\") && data.length > 10) {\n\t\treturn decodeClarityValue(data);\n\t}\n\n\tif (Array.isArray(data)) {\n\t\treturn data.map(decodeEventData);\n\t}\n\n\tif (typeof data === \"object\" && data !== null) {\n\t\tconst decoded: Record<string, unknown> = {};\n\t\tfor (const [key, value] of Object.entries(data)) {\n\t\t\tdecoded[key] = decodeEventData(value);\n\t\t}\n\t\treturn decoded;\n\t}\n\n\treturn data;\n}\n\n/**\n * Decode function args array (hex-encoded Clarity values).\n */\nexport function decodeFunctionArgs(args: string[]): unknown[] {\n\treturn args.map(decodeClarityValue);\n}\n",
9
+ "import { createHash } from \"node:crypto\";\nimport { getTargetDb } from \"@secondlayer/shared/db\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { sql } from \"kysely\";\n\n/** Keep at most this many error groups per subgraph. */\nexport const ERROR_GROUPS_CAP_PER_SUBGRAPH = 50;\n\nconst MESSAGE_MAX_CHARS = 500;\n\nexport interface HandlerErrorInput {\n\tsubgraphName: string;\n\tsourceName: string;\n\teventType: string | null;\n\ttxId: string;\n\tblockHeight: number;\n\terr: unknown;\n}\n\n/** Strip values that vary per occurrence so repeats of one bug share a group. */\nfunction normalizeMessage(message: string): string {\n\treturn message\n\t\t.replace(/0x[0-9a-f]+/gi, \"<hex>\")\n\t\t.replace(/([\"'`])(?:(?!\\1).)*\\1/g, \"<str>\")\n\t\t.replace(/\\d+/g, \"<n>\");\n}\n\nexport function errorFingerprint(input: {\n\tsourceName: string;\n\teventType: string | null;\n\tmessage: string;\n\tframe: string | null;\n}): string {\n\treturn createHash(\"sha1\")\n\t\t.update(\n\t\t\t[\n\t\t\t\tinput.sourceName,\n\t\t\t\tinput.eventType ?? \"\",\n\t\t\t\tnormalizeMessage(input.message),\n\t\t\t\tinput.frame ?? \"\",\n\t\t\t].join(\"|\"),\n\t\t)\n\t\t.digest(\"hex\");\n}\n\n/**\n * First stack line (after the message) carrying `file:line:col`, reduced to\n * `basename:line`. Null for non-Error throws or stackless errors.\n */\nexport function topFrame(err: unknown): string | null {\n\tif (!(err instanceof Error) || !err.stack) return null;\n\tfor (const line of err.stack.split(\"\\n\").slice(1)) {\n\t\tconst match = /([^/\\\\\\s()]+):(\\d+):\\d+\\)?\\s*$/.exec(line);\n\t\tif (match) return `${match[1]}:${match[2]}`;\n\t}\n\treturn null;\n}\n\ntype HandlerErrorRecorder = (input: HandlerErrorInput) => Promise<void>;\n\ninterface PendingGroup {\n\tsubgraphName: string;\n\tfingerprint: string;\n\tsourceName: string;\n\teventType: string | null;\n\tmessage: string;\n\tframe: string | null;\n\tcount: number;\n\tsampleTxId: string;\n\tsampleBlockHeight: number;\n\tfirstSeenAt: Date;\n\tlastSeenAt: Date;\n}\n\nconst FLUSH_INTERVAL_MS = 5_000;\n/** Distinct (subgraph, fingerprint) keys held between flushes. */\nconst MAX_PENDING_KEYS = 1_000;\n\nlet pending = new Map<string, PendingGroup>();\nlet droppedKeys = 0;\nlet flushTimer: ReturnType<typeof setInterval> | null = null;\n\nfunction startFlusher(): void {\n\tif (flushTimer) return;\n\tflushTimer = setInterval(() => {\n\t\tvoid flushHandlerErrors();\n\t}, FLUSH_INTERVAL_MS);\n\t// Never keep the process alive just to flush diagnostics.\n\tflushTimer.unref();\n}\n\n/**\n * Write the coalesced groups: one upsert per distinct fingerprint (adding the\n * accumulated count), then one cap-trim per distinct subgraph. Never throws.\n */\nexport async function flushHandlerErrors(): Promise<void> {\n\tif (pending.size === 0 && droppedKeys === 0) return;\n\tconst batch = pending;\n\tconst dropped = droppedKeys;\n\tpending = new Map();\n\tdroppedKeys = 0;\n\n\tif (dropped > 0) {\n\t\tlogger.warn(\"Handler error groups dropped: too many distinct errors\", {\n\t\t\tdropped,\n\t\t\tcap: MAX_PENDING_KEYS,\n\t\t});\n\t}\n\tif (batch.size === 0) return;\n\n\ttry {\n\t\tconst db = getTargetDb();\n\t\tconst subgraphs = new Set<string>();\n\t\tfor (const group of batch.values()) {\n\t\t\tsubgraphs.add(group.subgraphName);\n\t\t\tawait db\n\t\t\t\t.insertInto(\"subgraph_error_groups\")\n\t\t\t\t.values({\n\t\t\t\t\tsubgraph_name: group.subgraphName,\n\t\t\t\t\tfingerprint: group.fingerprint,\n\t\t\t\t\tsource_name: group.sourceName,\n\t\t\t\t\tevent_type: group.eventType,\n\t\t\t\t\tmessage: group.message,\n\t\t\t\t\tframe: group.frame,\n\t\t\t\t\tcount: group.count,\n\t\t\t\t\tsample_tx_id: group.sampleTxId,\n\t\t\t\t\tsample_block_height: group.sampleBlockHeight,\n\t\t\t\t\tfirst_seen: group.firstSeenAt,\n\t\t\t\t\tlast_seen: group.lastSeenAt,\n\t\t\t\t})\n\t\t\t\t.onConflict((oc) =>\n\t\t\t\t\toc.columns([\"subgraph_name\", \"fingerprint\"]).doUpdateSet({\n\t\t\t\t\t\tcount: sql`subgraph_error_groups.count + ${group.count}`,\n\t\t\t\t\t\tlast_seen: group.lastSeenAt,\n\t\t\t\t\t\tsample_tx_id: group.sampleTxId,\n\t\t\t\t\t\tsample_block_height: group.sampleBlockHeight,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.execute();\n\t\t}\n\n\t\t// Drop the least recently seen groups beyond the cap, once per subgraph.\n\t\tfor (const subgraphName of subgraphs) {\n\t\t\tawait sql`\n\t\t\t\tDELETE FROM subgraph_error_groups\n\t\t\t\tWHERE id IN (\n\t\t\t\t\tSELECT id FROM subgraph_error_groups\n\t\t\t\t\tWHERE subgraph_name = ${subgraphName}\n\t\t\t\t\tORDER BY last_seen DESC, id\n\t\t\t\t\tOFFSET ${ERROR_GROUPS_CAP_PER_SUBGRAPH}\n\t\t\t\t)\n\t\t\t`.execute(db);\n\t\t}\n\t} catch (err) {\n\t\tlogger.warn(\"Failed to flush handler error groups\", {\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t}\n}\n\nlet recorderOverride: HandlerErrorRecorder | null = null;\n\n/** Test seam — receive each error directly instead of coalescing to the DB. */\nexport function setHandlerErrorRecorder(fn: HandlerErrorRecorder | null): void {\n\trecorderOverride = fn;\n}\n\n/**\n * Count a handler error against its fingerprint in memory (synchronous, no\n * DB); a timer flushes the totals. A failing handler can throw on every\n * event, so this must stay cheap and never throw into the block.\n */\nexport function recordHandlerError(input: HandlerErrorInput): void {\n\ttry {\n\t\tif (recorderOverride) {\n\t\t\trecorderOverride(input).catch((err) => {\n\t\t\t\tlogger.warn(\"Failed to record handler error group\", {\n\t\t\t\t\tsubgraph: input.subgraphName,\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst message = (\n\t\t\tinput.err instanceof Error ? input.err.message : String(input.err)\n\t\t).slice(0, MESSAGE_MAX_CHARS);\n\t\tconst frame = topFrame(input.err);\n\t\tconst fingerprint = errorFingerprint({\n\t\t\tsourceName: input.sourceName,\n\t\t\teventType: input.eventType,\n\t\t\tmessage,\n\t\t\tframe,\n\t\t});\n\t\tconst key = `${input.subgraphName}|${fingerprint}`;\n\t\tconst now = new Date();\n\n\t\tconst existing = pending.get(key);\n\t\tif (existing) {\n\t\t\texisting.count++;\n\t\t\texisting.sampleTxId = input.txId;\n\t\t\texisting.sampleBlockHeight = input.blockHeight;\n\t\t\texisting.lastSeenAt = now;\n\t\t} else if (pending.size >= MAX_PENDING_KEYS) {\n\t\t\tdroppedKeys++;\n\t\t} else {\n\t\t\tpending.set(key, {\n\t\t\t\tsubgraphName: input.subgraphName,\n\t\t\t\tfingerprint,\n\t\t\t\tsourceName: input.sourceName,\n\t\t\t\teventType: input.eventType,\n\t\t\t\tmessage,\n\t\t\t\tframe,\n\t\t\t\tcount: 1,\n\t\t\t\tsampleTxId: input.txId,\n\t\t\t\tsampleBlockHeight: input.blockHeight,\n\t\t\t\tfirstSeenAt: now,\n\t\t\t\tlastSeenAt: now,\n\t\t\t});\n\t\t}\n\t\tstartFlusher();\n\t} catch (err) {\n\t\tlogger.warn(\"Failed to record handler error group\", {\n\t\t\tsubgraph: input.subgraphName,\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t}\n}\n",
9
10
  "import type { ColumnType, PrintField } from \"../types.ts\";\n\n/**\n * Runtime validation of a decoded print payload against a source's declared\n * `prints` schema.\n *\n * Declaring `prints` is the opt-in that makes strictness safe: the developer\n * has stated the shape, so a mismatch is a real defect (a contract upgrade,\n * or a hand-written declaration that never matched — the bns-names class of\n * bug, where a handler read flat `data.name` while BNS-V2 emitted a nested\n * tuple, and every event silently decoded to null for a whole deploy).\n *\n * Failure mode is SKIP + LOG, never throw: throwing would fail the block, and\n * a poisoned block that can never advance is incompatible with the\n * checkpoint model. One bad event is dropped and counted; the rest of the\n * block commits.\n */\n\nconst COLUMN_TYPES = new Set<string>([\n\t\"text\",\n\t\"uint\",\n\t\"int\",\n\t\"principal\",\n\t\"boolean\",\n\t\"timestamp\",\n\t\"jsonb\",\n]);\n\nfunction isColumnType(field: PrintField): field is ColumnType {\n\treturn typeof field === \"string\" && COLUMN_TYPES.has(field);\n}\n\n/** Does a decoded value match one declared field? */\nfunction matchesField(field: PrintField, value: unknown): boolean {\n\tif (isColumnType(field)) {\n\t\tswitch (field) {\n\t\t\tcase \"uint\":\n\t\t\tcase \"int\":\n\t\t\t\treturn typeof value === \"bigint\" || typeof value === \"number\";\n\t\t\tcase \"boolean\":\n\t\t\t\treturn typeof value === \"boolean\";\n\t\t\tcase \"text\":\n\t\t\tcase \"principal\":\n\t\t\tcase \"timestamp\":\n\t\t\t\t// Buffers decode to strings; principals too. Accept any scalar the\n\t\t\t\t// decoder can render, but reject objects/arrays.\n\t\t\t\treturn (\n\t\t\t\t\ttypeof value === \"string\" ||\n\t\t\t\t\ttypeof value === \"number\" ||\n\t\t\t\t\ttypeof value === \"bigint\"\n\t\t\t\t);\n\t\t\tcase \"jsonb\":\n\t\t\t\t// Deliberately permissive: `jsonb` is the \"shape unknown\" escape.\n\t\t\t\treturn value !== undefined;\n\t\t}\n\t}\n\tif (typeof field !== \"object\" || field === null) return false;\n\tif (\"optional\" in field) {\n\t\treturn (\n\t\t\tvalue === undefined || value === null || matchesField(field.type, value)\n\t\t);\n\t}\n\tif (\"tuple\" in field) {\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn matchesTopic(field.tuple, value as Record<string, unknown>).ok;\n\t}\n\tif (\"list\" in field) {\n\t\treturn (\n\t\t\tArray.isArray(value) &&\n\t\t\tvalue.every((item) => matchesField(field.list, item))\n\t\t);\n\t}\n\treturn false;\n}\n\nexport type PrintValidationResult =\n\t| { ok: true }\n\t| { ok: false; reason: string };\n\n/** Validate a decoded payload object against one topic's declared fields. */\nexport function matchesTopic(\n\tdeclared: Record<string, PrintField>,\n\tdata: Record<string, unknown>,\n): PrintValidationResult {\n\tfor (const [name, field] of Object.entries(declared)) {\n\t\tconst present = name in data;\n\t\tconst optional =\n\t\t\ttypeof field === \"object\" && field !== null && \"optional\" in field;\n\t\tif (!present) {\n\t\t\tif (optional) continue;\n\t\t\treturn { ok: false, reason: `missing declared field \"${name}\"` };\n\t\t}\n\t\tif (!matchesField(field, data[name])) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `field \"${name}\" does not match its declared type (got ${describe(data[name])})`,\n\t\t\t};\n\t\t}\n\t}\n\treturn { ok: true };\n}\n\nfunction describe(value: unknown): string {\n\tif (value === null) return \"null\";\n\tif (Array.isArray(value)) return \"array\";\n\treturn typeof value;\n}\n\n/**\n * Validate one decoded print event against a source's `prints` declaration.\n * Returns `{ ok: true }` when no declaration covers this topic (undeclared\n * topics are not the developer's stated contract, so they pass through).\n */\nexport function validatePrintPayload(\n\tprints: Record<string, Record<string, PrintField>> | undefined,\n\ttopic: string,\n\tdata: Record<string, unknown>,\n): PrintValidationResult {\n\tif (!prints) return { ok: true };\n\tconst declared = prints[topic];\n\tif (!declared) return { ok: true };\n\treturn matchesTopic(declared, data);\n}\n",
10
11
  "/**\n * Deterministic realm for verifiable (state-level) subgraphs.\n *\n * Handlers run in a `node:vm` context whose global object is a frozen\n * allow-list: every forbidden global ({@link FORBIDDEN_GLOBALS}) is a getter\n * that throws {@link NondeterminismError}, `Math` keeps only exact members,\n * locale-sensitive methods throw, and code generation from strings is off.\n * The handler sees a `ctx` facade that rejects non-integer numbers in rows,\n * refuses concurrent ctx calls, and turns read failures into block aborts.\n *\n * This is a determinism guard, not a security boundary: a handler can still\n * reach host intrinsics through the objects it is handed. The deploy scan\n * and this realm together catch accidental nondeterminism; hostile code is\n * gVisor's job.\n *\n * Only subgraphs whose stored verification level is `state` load here.\n * Everything else keeps the plain `import()` path, unchanged.\n */\nimport vm from \"node:vm\";\nimport type {\n\tSubgraphContext,\n\tSubgraphDefinition,\n\tSubgraphSchema,\n} from \"../types.ts\";\nimport {\n\tALLOWED_GLOBALS,\n\tALLOWED_MATH,\n\tFORBIDDEN_GLOBALS,\n\tLOCALE_METHODS,\n} from \"../verification.ts\";\n\n/**\n * A handler broke the determinism contract at runtime. Infra-class: the\n * block aborts (rollback + retry) instead of skipping the event, because a\n * skip would commit output that depends on the run.\n */\nexport class NondeterminismError extends Error {\n\toverride name = \"NondeterminismError\";\n}\n\n/**\n * A ctx read failed for a reason outside the handler: the database under a\n * verifiable subgraph, or a chain read (`ctx.client`) on any subgraph that\n * had no node, a node that didn't answer, or a cache error. Infra-class like\n * {@link NondeterminismError}: skipping the event would make its rows depend\n * on whether the database or node was reachable.\n */\nexport class HandlerReadError extends Error {\n\toverride name = \"HandlerReadError\";\n}\n\n/** Errors that abort the whole block rather than skip one event. */\nexport function abortsBlock(err: unknown): boolean {\n\treturn err instanceof NondeterminismError || err instanceof HandlerReadError;\n}\n\n/** Host constructors handed to the realm so `x instanceof Uint8Array` holds\n * for decoded event payloads, which are built in the host realm. */\nconst HOST_GLOBALS = [\n\t\"ArrayBuffer\",\n\t\"DataView\",\n\t\"Int8Array\",\n\t\"Uint8Array\",\n\t\"Uint8ClampedArray\",\n\t\"Int16Array\",\n\t\"Uint16Array\",\n\t\"Int32Array\",\n\t\"Uint32Array\",\n\t\"Float16Array\",\n\t\"Float32Array\",\n\t\"Float64Array\",\n\t\"BigInt64Array\",\n\t\"BigUint64Array\",\n\t\"TextEncoder\",\n\t\"TextDecoder\",\n\t\"atob\",\n\t\"btoa\",\n] as const;\n\nfunction forbid(name: string, reason: string): () => never {\n\treturn () => {\n\t\tthrow new NondeterminismError(`${name}: ${reason}`);\n\t};\n}\n\nfunction createRealm(): vm.Context {\n\tconst host = globalThis as unknown as Record<string, unknown>;\n\tconst sandbox: Record<string, unknown> = Object.create(null);\n\tfor (const name of HOST_GLOBALS) {\n\t\tif (host[name] !== undefined) sandbox[name] = host[name];\n\t}\n\tconst context = vm.createContext(sandbox, {\n\t\tname: \"subgraph-handler\",\n\t\tcodeGeneration: { strings: false, wasm: false },\n\t});\n\tconst g = vm.runInContext(\"globalThis\", context) as Record<string, unknown>;\n\n\tconst allowed = new Set(ALLOWED_GLOBALS);\n\tfor (const name of Object.getOwnPropertyNames(g)) {\n\t\tif (!allowed.has(name)) delete g[name];\n\t}\n\tfor (const [name, reason] of Object.entries(FORBIDDEN_GLOBALS)) {\n\t\tObject.defineProperty(g, name, { get: forbid(name, reason) });\n\t}\n\n\tconst realmMath = g.Math as Record<string, unknown>;\n\tconst safeMath: Record<string, unknown> = {};\n\tconst allowedMath = new Set(ALLOWED_MATH);\n\tfor (const key of Object.getOwnPropertyNames(realmMath)) {\n\t\tif (allowedMath.has(key)) safeMath[key] = realmMath[key];\n\t\telse\n\t\t\tObject.defineProperty(safeMath, key, {\n\t\t\t\tget: forbid(\n\t\t\t\t\t`Math.${key}`,\n\t\t\t\t\tkey === \"random\"\n\t\t\t\t\t\t? \"randomness differs per run\"\n\t\t\t\t\t\t: \"result is engine-approximated\",\n\t\t\t\t),\n\t\t\t});\n\t}\n\tObject.defineProperty(g, \"Math\", { value: Object.freeze(safeMath) });\n\n\tfor (const ctor of [\"String\", \"Number\", \"BigInt\", \"Array\", \"Object\"]) {\n\t\tconst proto = (g[ctor] as { prototype: object }).prototype;\n\t\tfor (const method of LOCALE_METHODS) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(proto, method)) {\n\t\t\t\tObject.defineProperty(proto, method, {\n\t\t\t\t\tvalue: forbid(method, \"output depends on the host's locale data\"),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// No new globals. Not Object.freeze: under Bun, freezing (or redefining\n\t// every binding of) a vm global breaks lookups of its built-ins. Forbidden\n\t// getters and Math are already non-configurable, so they stay locked.\n\tObject.preventExtensions(g);\n\treturn context;\n}\n\n// ── ctx facade ──────────────────────────────────────────────────────────\n\n/** Reject row values whose stored form can differ across engines or runs. */\nexport function checkRowValues(\n\twhere: string,\n\tvalues: Record<string, unknown>,\n): void {\n\tfor (const [col, value] of Object.entries(values)) {\n\t\tcheckValue(value, `${where}.${col}`);\n\t}\n}\n\nfunction checkValue(value: unknown, path: string): void {\n\tswitch (typeof value) {\n\t\tcase \"number\":\n\t\t\tif (!Number.isSafeInteger(value)) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${path}: ${value} is not a safe integer; verifiable subgraphs store bigint or integers only`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\tcase \"function\":\n\t\tcase \"symbol\":\n\t\t\tthrow new TypeError(`${path}: a ${typeof value} is not a row value`);\n\t\tcase \"object\":\n\t\t\tif (value === null || ArrayBuffer.isView(value)) return;\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tvalue.forEach((v, i) => checkValue(v, `${path}[${i}]`));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const [k, v] of Object.entries(value)) checkValue(v, `${path}.${k}`);\n\t\t\treturn;\n\t\tdefault:\n\t\t\treturn;\n\t}\n}\n\n/**\n * Wrap the runtime ctx for one block. Reads must be awaited one at a time:\n * a second ctx call while a read is pending would order writes by database\n * latency.\n */\nexport function deterministicContext(\n\tctx: SubgraphContext,\n\tschema: SubgraphSchema,\n): SubgraphContext {\n\tlet pendingReads = 0;\n\t// An unknown table is the handler's bug, identical on every run: keep it\n\t// handler-origin (event skipped) rather than a read failure (block abort).\n\tconst knownTable = (table: string) => {\n\t\tif (!Object.prototype.hasOwnProperty.call(schema, table)) {\n\t\t\tthrow new Error(`Table \"${table}\" not found in subgraph schema`);\n\t\t}\n\t};\n\tconst guard = (op: string) => {\n\t\tif (pendingReads > 0) {\n\t\t\tthrow new NondeterminismError(\n\t\t\t\t`ctx.${op} while a ctx read is pending: concurrent ctx calls order writes by database latency; await each read before the next call`,\n\t\t\t);\n\t\t}\n\t};\n\tconst read = async <T>(op: string, run: () => Promise<T>): Promise<T> => {\n\t\tguard(op);\n\t\tpendingReads++;\n\t\ttry {\n\t\t\treturn await run();\n\t\t} catch (err) {\n\t\t\tif (err instanceof NondeterminismError) throw err;\n\t\t\tthrow new HandlerReadError(\n\t\t\t\t`ctx.${op} failed: ${err instanceof Error ? err.message : String(err)}`,\n\t\t\t\t{ cause: err },\n\t\t\t);\n\t\t} finally {\n\t\t\tpendingReads--;\n\t\t}\n\t};\n\ttype FindMany = (...args: unknown[]) => Promise<Record<string, unknown>[]>;\n\treturn {\n\t\tget block() {\n\t\t\treturn ctx.block;\n\t\t},\n\t\tget tx() {\n\t\t\treturn ctx.tx;\n\t\t},\n\t\tget client(): never {\n\t\t\tthrow new NondeterminismError(\n\t\t\t\t\"ctx.client: contract reads need re-execution proofs\",\n\t\t\t);\n\t\t},\n\t\tinsert(table, row) {\n\t\t\tguard(\"insert\");\n\t\t\tcheckRowValues(`insert ${table}`, row);\n\t\t\tctx.insert(table, row);\n\t\t},\n\t\tupdate(table, where, set) {\n\t\t\tguard(\"update\");\n\t\t\tcheckRowValues(`update ${table}`, where);\n\t\t\tcheckRowValues(`update ${table}`, set);\n\t\t\tctx.update(table, where, set);\n\t\t},\n\t\tupsert(table, key, row) {\n\t\t\tguard(\"upsert\");\n\t\t\tcheckRowValues(`upsert ${table}`, key);\n\t\t\tcheckRowValues(`upsert ${table}`, row);\n\t\t\tctx.upsert(table, key, row);\n\t\t},\n\t\tdelete(table, where) {\n\t\t\tguard(\"delete\");\n\t\t\tctx.delete(table, where);\n\t\t},\n\t\tincrement(table, key, deltas) {\n\t\t\tguard(\"increment\");\n\t\t\tcheckRowValues(`increment ${table}`, key);\n\t\t\tcheckRowValues(`increment ${table}`, deltas);\n\t\t\tctx.increment(table, key, deltas);\n\t\t},\n\t\tfindOne: (table, where) => {\n\t\t\tknownTable(table);\n\t\t\treturn read(\"findOne\", () => ctx.findOne(table, where));\n\t\t},\n\t\tfindMany: (table, ...rest: unknown[]) => {\n\t\t\tknownTable(table);\n\t\t\treturn read(\"findMany\", () => (ctx.findMany as FindMany)(table, ...rest));\n\t\t},\n\t};\n}\n\n// ── Loading ─────────────────────────────────────────────────────────────\n\n/** Definitions this module loaded into a realm. */\nconst realmDefinitions = new WeakSet<SubgraphDefinition>();\n\n/** True for a definition {@link loadDeterministicDefinition} produced: a\n * stored `state` subgraph, whose inputs follow the realm (`state_writes`). */\nexport function runsInRealm(def: SubgraphDefinition): boolean {\n\treturn realmDefinitions.has(def);\n}\n\n/**\n * Loads a bundled handler into a fresh deterministic realm.\n *\n * The bundle is ESM, as stored in `handler_code`. The returned definition has\n * every handler wrapped to receive the {@link deterministicContext} facade.\n */\nexport async function loadDeterministicDefinition(\n\thandlerCode: string,\n): Promise<SubgraphDefinition> {\n\t// The realm runs scripts, not modules: lower the bundle's single\n\t// `export default` to CommonJS. Bundles have no imports left to resolve.\n\t// Loaded lazily so importing the runner never pulls esbuild.\n\tconst { transform } = await import(\"esbuild\");\n\tconst { code } = await transform(handlerCode, {\n\t\tformat: \"cjs\",\n\t\tloader: \"js\",\n\t\tlogLevel: \"silent\",\n\t});\n\tconst context = createRealm();\n\tconst evaluate = vm.runInContext(\n\t\t`(function (module, exports) {\\n${code}\\n})`,\n\t\tcontext,\n\t\t{ filename: \"handler.js\" },\n\t) as (module: { exports: unknown }, exports: unknown) => void;\n\tconst mod: { exports: Record<string, unknown> } = { exports: {} };\n\tevaluate(mod, mod.exports);\n\tconst def = (mod.exports.default ?? mod.exports) as SubgraphDefinition;\n\t// Declarative parts cross back as host objects, so runtime code never\n\t// sees realm prototypes.\n\tconst sources = structuredClone(def.sources);\n\tconst schema = structuredClone(def.schema);\n\n\t// One facade per block context (the runner builds a fresh ctx per block).\n\tconst facades = new WeakMap<SubgraphContext, SubgraphContext>();\n\tconst handlers: SubgraphDefinition[\"handlers\"] = {};\n\tfor (const [name, handler] of Object.entries(def.handlers ?? {})) {\n\t\thandlers[name] = (event, ctx) => {\n\t\t\tlet facade = facades.get(ctx);\n\t\t\tif (!facade) {\n\t\t\t\tfacade = deterministicContext(ctx, schema);\n\t\t\t\tfacades.set(ctx, facade);\n\t\t\t}\n\t\t\treturn handler(event, facade);\n\t\t};\n\t}\n\tconst loaded = { ...def, sources, schema, handlers };\n\trealmDefinitions.add(loaded);\n\treturn loaded;\n}\n",
11
12
  "/**\n * Verifiable subgraphs: the determinism contract, the derived level and the\n * pin. Pure (node:crypto only) so the bundler's deploy scan, the API and the\n * runtime realm all read the same rules.\n *\n * A subgraph is never configured as verifiable. Its level is derived from\n * its sources plus a scan of the bundled handler, and only a subgraph whose\n * every input is provable today (`state`: named state writes) has the contract\n * enforced. Everything else gets the same findings as advice.\n */\nimport { createHash } from \"node:crypto\";\nimport type { SubgraphVerification } from \"@secondlayer/shared/schemas/subgraphs\";\nimport pkg from \"../package.json\" with { type: \"json\" };\nimport type { SubgraphDefinition, SubgraphFilter } from \"./types.ts\";\n\nexport type { SubgraphVerification };\n\n/** Runtime identity baked into every pin: matcher, decode and flush semantics. */\nexport const SUBGRAPHS_RUNTIME: string = `@secondlayer/subgraphs@${pkg.version}`;\n\n// ── Determinism contract ────────────────────────────────────────────────\n\n/**\n * Globals a handler may not touch, with the reason shown to the developer.\n * The deploy scan reports them; the realm replaces each with a getter that\n * throws `NondeterminismError`.\n */\nexport const FORBIDDEN_GLOBALS: Readonly<Record<string, string>> = {\n\tDate: \"wall-clock time differs per run\",\n\tperformance: \"timers differ per run\",\n\tprocess: \"host environment differs per run\",\n\tfetch: \"network reads are not chain inputs\",\n\tcrypto: \"randomness differs per run\",\n\tsetTimeout: \"scheduling order differs per run\",\n\tsetInterval: \"scheduling order differs per run\",\n\tsetImmediate: \"scheduling order differs per run\",\n\tclearTimeout: \"scheduling order differs per run\",\n\tclearInterval: \"scheduling order differs per run\",\n\tqueueMicrotask: \"scheduling order differs per run\",\n\tWeakRef: \"garbage collection timing differs per run\",\n\tFinalizationRegistry: \"garbage collection timing differs per run\",\n\tAtomics: \"shared memory is not single-threaded\",\n\tSharedArrayBuffer: \"shared memory is not single-threaded\",\n\tIntl: \"locale and time zone data differ per host\",\n\tTemporal: \"locale and time zone data differ per host\",\n\teval: \"generated code hides inputs from the scan\",\n\tWebAssembly: \"compiled code hides inputs from the scan\",\n\tShadowRealm: \"a nested realm escapes the allow-list\",\n\trequire: \"imports must be bundled into the handler\",\n};\n\n/**\n * Globals a handler may use: ECMAScript built-ins whose results are fully\n * specified, plus deterministic host encoders. `Math` is narrowed separately\n * ({@link ALLOWED_MATH}).\n */\nexport const ALLOWED_GLOBALS: readonly string[] = [\n\t\"undefined\",\n\t\"NaN\",\n\t\"Infinity\",\n\t\"globalThis\",\n\t\"isNaN\",\n\t\"isFinite\",\n\t\"parseInt\",\n\t\"parseFloat\",\n\t\"decodeURI\",\n\t\"decodeURIComponent\",\n\t\"encodeURI\",\n\t\"encodeURIComponent\",\n\t\"escape\",\n\t\"unescape\",\n\t\"Object\",\n\t\"Function\",\n\t\"Array\",\n\t\"Number\",\n\t\"Boolean\",\n\t\"String\",\n\t\"Symbol\",\n\t\"BigInt\",\n\t\"Math\",\n\t\"JSON\",\n\t\"Reflect\",\n\t\"Proxy\",\n\t\"Promise\",\n\t\"Map\",\n\t\"Set\",\n\t\"WeakMap\",\n\t\"WeakSet\",\n\t\"RegExp\",\n\t\"Iterator\",\n\t\"DisposableStack\",\n\t\"AsyncDisposableStack\",\n\t\"Error\",\n\t\"AggregateError\",\n\t\"SuppressedError\",\n\t\"EvalError\",\n\t\"RangeError\",\n\t\"ReferenceError\",\n\t\"SyntaxError\",\n\t\"TypeError\",\n\t\"URIError\",\n\t\"ArrayBuffer\",\n\t\"DataView\",\n\t\"Int8Array\",\n\t\"Uint8Array\",\n\t\"Uint8ClampedArray\",\n\t\"Int16Array\",\n\t\"Uint16Array\",\n\t\"Int32Array\",\n\t\"Uint32Array\",\n\t\"Float16Array\",\n\t\"Float32Array\",\n\t\"Float64Array\",\n\t\"BigInt64Array\",\n\t\"BigUint64Array\",\n\t\"TextEncoder\",\n\t\"TextDecoder\",\n\t\"atob\",\n\t\"btoa\",\n\t\"console\",\n];\n\n/** `Math` members whose results are exact on every engine. The rest\n * (`sin`, `pow`, `log`, …) are implementation-approximated. */\nexport const ALLOWED_MATH: readonly string[] = [\n\t\"abs\",\n\t\"min\",\n\t\"max\",\n\t\"floor\",\n\t\"ceil\",\n\t\"trunc\",\n\t\"sign\",\n\t\"round\",\n\t\"E\",\n\t\"LN10\",\n\t\"LN2\",\n\t\"LOG10E\",\n\t\"LOG2E\",\n\t\"PI\",\n\t\"SQRT1_2\",\n\t\"SQRT2\",\n];\n\n/** Methods whose output depends on the host's locale data. */\nexport const LOCALE_METHODS: readonly string[] = [\n\t\"toLocaleString\",\n\t\"toLocaleDateString\",\n\t\"toLocaleTimeString\",\n\t\"toLocaleUpperCase\",\n\t\"toLocaleLowerCase\",\n\t\"localeCompare\",\n];\n\n/**\n * One thing the deploy scan found in a bundled handler.\n *\n * - `nondeterministic`: breaks the determinism contract. Fails the deploy of\n * a state subgraph; advice for everything else.\n * - `needs-events`: deterministic, but reads something only re-execution proofs cover\n * (`ctx.client`). Raises the level instead of failing.\n */\nexport interface HandlerFinding {\n\tkind: \"nondeterministic\" | \"needs-events\";\n\t/** What was used, e.g. `Date`, `Math.random`, `import()`, `ctx.client`. */\n\tname: string;\n\treason: string;\n\t/** Original source file when a sourcemap was available, else the bundle. */\n\tfile: string;\n\t/** 1-based. */\n\tline: number;\n\t/** 1-based. */\n\tcolumn: number;\n}\n\n/** Formats a handler finding as `file:line:column name: reason`. */\nexport function formatFinding(f: HandlerFinding): string {\n\treturn `${f.file}:${f.line}:${f.column} ${f.name}: ${f.reason}`;\n}\n\n// ── Derived level ───────────────────────────────────────────────────────\n\n/**\n * Sources whose every field is a named state write: provable per block from\n * the header-backed witness plus `state_writes`. Not `map_insert`: storage\n * holds `(some v)` for an insert and a set alike, so telling them apart takes\n * re-execution (event proofs).\n */\nconst STATE_SOURCE_TYPES: ReadonlySet<string> = new Set([\n\t\"var_set\",\n\t\"map_set\",\n\t\"map_delete\",\n]);\n\nconst LEVEL_RANK = { state: 0, events: 1, none: 2 } as const;\n\n/** Handler findings listed in `reasons`; the rest are counted. */\nconst MAX_LISTED_FINDINGS = 10;\n\n/**\n * Derive how far a subgraph's rows can be checked. Level = the highest any\n * source or handler read needs. `reasons` lists everything standing between\n * the subgraph and checkable rows; a `state` subgraph with any reason is\n * refused at deploy, so every stored `state` row has none. Never configured,\n * never a flag.\n */\nexport function deriveVerification(\n\tdef: Pick<SubgraphDefinition, \"sources\" | \"backfillMode\">,\n\tfindings: readonly HandlerFinding[] = [],\n): SubgraphVerification {\n\tlet level: keyof typeof LEVEL_RANK = \"state\";\n\tconst raise = (to: keyof typeof LEVEL_RANK) => {\n\t\tif (LEVEL_RANK[to] > LEVEL_RANK[level]) level = to;\n\t};\n\tconst reasons: string[] = [];\n\n\tfor (const [name, source] of Object.entries(def.sources ?? {})) {\n\t\tconst filter = source as SubgraphFilter & { trait?: string };\n\t\tif (filter.trait) {\n\t\t\traise(\"none\");\n\t\t\treasons.push(\n\t\t\t\t`source \"${name}\": trait scope needs a proven contract registry`,\n\t\t\t);\n\t\t} else if (filter.type === \"map_insert\") {\n\t\t\traise(\"events\");\n\t\t\treasons.push(\n\t\t\t\t`map_insert source \"${name}\": map_insert vs map_set needs event proofs`,\n\t\t\t);\n\t\t} else if (!STATE_SOURCE_TYPES.has(filter.type)) {\n\t\t\traise(\"events\");\n\t\t\treasons.push(`${filter.type} source \"${name}\" needs event proofs`);\n\t\t}\n\t}\n\tif (def.backfillMode === \"concurrent\") {\n\t\traise(\"none\");\n\t\treasons.push(\"backfillMode concurrent: tip-first order is not chain order\");\n\t}\n\tif (findings.some((f) => f.kind === \"needs-events\")) raise(\"events\");\n\t// A large bundled library can trip dozens of findings; list a few.\n\tfor (const f of findings.slice(0, MAX_LISTED_FINDINGS)) {\n\t\treasons.push(\n\t\t\tf.kind === \"needs-events\"\n\t\t\t\t? `${formatFinding(f)} (needs event proofs)`\n\t\t\t\t: formatFinding(f),\n\t\t);\n\t}\n\tif (findings.length > MAX_LISTED_FINDINGS) {\n\t\treasons.push(\n\t\t\t`…and ${findings.length - MAX_LISTED_FINDINGS} more handler findings`,\n\t\t);\n\t}\n\n\treturn {\n\t\tlevel,\n\t\treasons,\n\t\tunproven:\n\t\t\treasons.length === 0\n\t\t\t\t? [\n\t\t\t\t\t\t\"tx attribution of writes: event.tx, _tx_id (needs event proofs)\",\n\t\t\t\t\t\t\"intermediate writes within a block (needs event proofs)\",\n\t\t\t\t\t]\n\t\t\t\t: [],\n\t};\n}\n\n/**\n * Tells whether a deploy must be refused for breaking determinism.\n *\n * It is refused when the sources are provable (`state`), so the determinism\n * contract is enforced, and the scan broke it.\n */\nexport function isDeterminismViolation(v: SubgraphVerification): boolean {\n\treturn v.level === \"state\" && v.reasons.length > 0;\n}\n\n// ── Pin ─────────────────────────────────────────────────────────────────\n\n/** What a pin is computed from: schema hash, handler code, network. */\nexport interface PinInput {\n\t/** Existing `schema_hash` (name + schema + sources). */\n\tschemaHash: string;\n\t/** Bundled ESM exactly as stored in `subgraphs.handler_code`. */\n\thandlerCode: string;\n\tstartBlock?: number | null;\n\tnetwork: string;\n\t/** Defaults to {@link SUBGRAPHS_RUNTIME}. */\n\truntime?: string;\n}\n\nfunction sha256(input: string): string {\n\treturn createHash(\"sha256\").update(input).digest(\"hex\");\n}\n\n/** What a pin commits to, as stored in `pin_preimage`. */\nexport interface PinFields {\n\t/** sha256 of the bundled handler, hex. */\n\thandlerHash: string;\n\tnetwork: string;\n\truntime: string;\n\tschemaHash: string;\n\tstartBlock: number | null;\n}\n\n/**\n * The canonical JSON a pin is the sha256 of: fixed key order, primitives\n * only. Stored beside the pin so anyone can recompute it from the served\n * handler code.\n */\nexport function pinPreimage(input: PinInput): string {\n\tconst fields: PinFields = {\n\t\thandlerHash: sha256(input.handlerCode),\n\t\tnetwork: input.network,\n\t\truntime: input.runtime ?? SUBGRAPHS_RUNTIME,\n\t\tschemaHash: input.schemaHash,\n\t\tstartBlock: input.startBlock ?? null,\n\t};\n\treturn JSON.stringify(fields);\n}\n\n/**\n * Content hash over everything that shapes a subgraph's rows. Unlike\n * `schema_hash`, it changes with the handler, `startBlock` and runtime, so\n * two deploys with the same pin produce the same rows from the same chain.\n */\nexport function computePin(input: PinInput): string {\n\treturn sha256(pinPreimage(input));\n}\n",
@@ -21,7 +22,7 @@
21
22
  "/**\n * Node storage writes (`state_writes`) → the `var_set` / `map_set` /\n * `map_delete` events a state-level subgraph's handlers receive.\n *\n * The served runtime and client replay both call {@link stateWriteEvents} and\n * nothing else, so the events a handler saw on the server are exactly the ones\n * a verifier recomputes from the header-backed diff.\n */\nimport { vmEventId } from \"./batch-loader.ts\";\nimport type { EventRecord, TxRecord } from \"./source-matcher.ts\";\n\n/** One `state_writes` row (migration 0154), as the DB tap and the API serve it. */\nexport interface StateWriteRow {\n\tordinal: number;\n\t/** Null for a block-level write (no transaction). */\n\ttx_index: number | null;\n\t/** MARF key, e.g. `vm::<contract>::0::<map>::<keyhex>`. */\n\tkey: string;\n\t/** Hex of the stored value string's UTF-8 bytes. */\n\tvalue_hex: string;\n}\n\nexport type StateWriteKey =\n\t| { contractId: string; kind: \"map\"; map: string; rawKey: string }\n\t| { contractId: string; kind: \"var\"; varName: string };\n\n/** clarity_db.rs StoreType discriminants, formatted in decimal inside keys. */\nconst DATA_MAP = \"0\";\nconst VARIABLE = \"1\";\nconst HEX = /^(?:[0-9a-f]{2})+$/;\n\n/**\n * `vm::<c>::0::<map>::<keyhex>` | `vm::<c>::1::<var>`; null for every other key\n * (FT balances, NFT owners, contract metadata, accounts, `__MARF_*`).\n */\nexport function parseStateWriteKey(key: string): StateWriteKey | null {\n\tif (!key.startsWith(\"vm::\")) return null;\n\tconst parts = key.slice(4).split(\"::\");\n\tconst [contractId, store] = parts;\n\tif (!contractId?.includes(\".\")) return null;\n\tif (store === DATA_MAP && parts.length === 4) {\n\t\tconst [, , map, rawKey] = parts;\n\t\tif (!map || !rawKey || !HEX.test(rawKey)) return null;\n\t\treturn { contractId, kind: \"map\", map, rawKey };\n\t}\n\tif (store === VARIABLE && parts.length === 3 && parts[2]) {\n\t\treturn { contractId, kind: \"var\", varName: parts[2] };\n\t}\n\treturn null;\n}\n\nconst utf8 = new TextDecoder(\"utf-8\", { fatal: true });\n\n/** The stored value string a `value_hex` encodes (lowercase hex of a CV). */\nfunction storedValue(w: StateWriteRow): string {\n\tconst h = w.value_hex.startsWith(\"0x\") ? w.value_hex.slice(2) : w.value_hex;\n\tconst bytes = new Uint8Array(h.length / 2);\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbytes[i] = Number.parseInt(h.slice(i * 2, i * 2 + 2), 16);\n\t}\n\tlet value: string;\n\ttry {\n\t\tvalue = utf8.decode(bytes);\n\t} catch {\n\t\tthrow new Error(`state write ${w.ordinal} value is not UTF-8 hex`);\n\t}\n\tvalue = value.toLowerCase();\n\tif (!HEX.test(value)) {\n\t\tthrow new Error(`state write ${w.ordinal} value is not a Clarity value`);\n\t}\n\treturn value;\n}\n\n/** The handler event one named write becomes, or null when it is not one. */\nfunction writeEvent(\n\tw: StateWriteRow,\n): { type: string; data: Record<string, string> } | null {\n\tconst key = parseStateWriteKey(w.key);\n\tif (!key) return null;\n\tconst value = storedValue(w);\n\tif (key.kind === \"var\") {\n\t\treturn {\n\t\t\ttype: \"var_set\",\n\t\t\tdata: {\n\t\t\t\tcontract_identifier: key.contractId,\n\t\t\t\tvar_name: key.varName,\n\t\t\t\traw_value: `0x${value}`,\n\t\t\t},\n\t\t};\n\t}\n\tconst base = {\n\t\tcontract_identifier: key.contractId,\n\t\tmap_name: key.map,\n\t\traw_key: `0x${key.rawKey}`,\n\t};\n\t// put_value stores a map entry as (some value); a delete stores none.\n\tif (value === \"09\") return { type: \"map_delete\", data: base };\n\tif (value.startsWith(\"0a\")) {\n\t\treturn {\n\t\t\ttype: \"map_set\",\n\t\t\tdata: { ...base, raw_value: `0x${value.slice(2)}` },\n\t\t};\n\t}\n\tthrow new Error(\n\t\t`state write ${w.ordinal} map value is neither (some v) nor none`,\n\t);\n}\n\n/**\n * A block's named writes as handler events, in node write order, plus the\n * transactions they hang on.\n *\n * Every returned tx carries `tx_index: 0`, so the runner's (tx_index,\n * event_index) sort dispatches by ordinal alone: node write order, including\n * block-level writes that land between transactions. Block-level writes\n * (`tx_index` null) share one synthetic tx with an empty id.\n *\n * Storage cannot tell `map_insert` from `map_set`, so no `map_insert` event is\n * ever produced; such sources are not state-level.\n */\nexport function stateWriteEvents(\n\twrites: StateWriteRow[],\n\ttxByIndex: ReadonlyMap<number, TxRecord>,\n): { txs: TxRecord[]; vmEvents: EventRecord[] } {\n\tconst txs = new Map<number | null, TxRecord>();\n\tconst vmEvents: EventRecord[] = [];\n\tfor (const w of [...writes].sort((a, b) => a.ordinal - b.ordinal)) {\n\t\tconst event = writeEvent(w);\n\t\tif (!event) continue;\n\t\tlet tx = txs.get(w.tx_index);\n\t\tif (!tx) {\n\t\t\tif (w.tx_index === null) {\n\t\t\t\ttx = { tx_id: \"\", type: \"block\", sender: \"\", status: \"success\" };\n\t\t\t} else {\n\t\t\t\tconst real = txByIndex.get(w.tx_index);\n\t\t\t\tif (!real) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`state write ${w.ordinal} names tx_index ${w.tx_index} the block does not have`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\ttx = real;\n\t\t\t}\n\t\t\ttx = { ...tx, tx_index: 0 };\n\t\t\ttxs.set(w.tx_index, tx);\n\t\t}\n\t\tvmEvents.push({\n\t\t\tid: vmEventId(tx.tx_id || \"block\", w.ordinal),\n\t\t\ttx_id: tx.tx_id,\n\t\t\ttype: event.type,\n\t\t\tevent_index: w.ordinal,\n\t\t\tdata: event.data,\n\t\t\tclock: \"vm\",\n\t\t});\n\t}\n\treturn { txs: [...txs.values()], vmEvents };\n}\n",
22
23
  "/**\n * Replayed rows against served rows, per table, over the replay window.\n *\n * Both sides go through one canonical form, so a difference is a value\n * difference, never a Postgres-vs-memory representation one: numbers become\n * decimal strings, timestamps epoch milliseconds, jsonb sorted-key JSON with\n * bigints as decimal strings.\n *\n * Only proven columns are compared: the declared columns and\n * `_block_height` (the block of the row's first write, the same in Postgres\n * and memory). Dropped: `_id` and `_created_at` (storage), and `_tx_id`,\n * which is transaction attribution, unproven for state subgraphs: which tx\n * made a write is not in the header-backed diff. (Both stores keep the\n * creating write's `_tx_id`; it is dropped for proof, not for drift.)\n */\nimport { createHash } from \"node:crypto\";\nimport type { SubgraphSchema, SubgraphTable } from \"../types.ts\";\nimport type { ReplayFailure } from \"./replay.ts\";\n\n/** A table row as a plain column-to-value record. */\ntype Row = Record<string, unknown>;\n\nexport interface TableComparison {\n\ttable: string;\n\t/** Replayed rows the served table holds identically. */\n\tequal: number;\n\t/** Replayed keys the served table re-created after `to`: not checked. */\n\tsuperseded: number;\n\t/** sha256 over the sorted canonical replayed rows in the window, hex. */\n\tdigest: string;\n\t/** The same digest over the served rows in the window. */\n\tservedDigest: string;\n}\n\n/** Replayed tables compared with served tables, and any mismatches. */\nexport interface RowComparison {\n\tfailures: ReplayFailure[];\n\ttables: TableComparison[];\n}\n\n/** RFC 8785-style JSON: sorted keys, bigints as decimal strings. */\nfunction canonicalJson(value: unknown): unknown {\n\tif (typeof value === \"bigint\") return value.toString();\n\tif (Array.isArray(value)) return value.map(canonicalJson);\n\tif (value && typeof value === \"object\" && !(value instanceof Date)) {\n\t\tconst out: Record<string, unknown> = {};\n\t\tfor (const k of Object.keys(value).sort()) {\n\t\t\tout[k] = canonicalJson((value as Record<string, unknown>)[k]);\n\t\t}\n\t\treturn out;\n\t}\n\treturn value ?? null;\n}\n\nfunction canonicalValue(type: string | undefined, value: unknown): unknown {\n\tif (value === undefined || value === null) return null;\n\tswitch (type) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\t\treturn typeof value === \"string\"\n\t\t\t\t? BigInt(value).toString()\n\t\t\t\t: String(value);\n\t\tcase \"boolean\":\n\t\t\treturn value === true || value === \"true\" || value === \"t\"\n\t\t\t\t? \"true\"\n\t\t\t\t: \"false\";\n\t\tcase \"timestamp\": {\n\t\t\t// Postgres hands back a Date; the memory store keeps what the handler\n\t\t\t// wrote (a string the flush would have cast).\n\t\t\tconst ms =\n\t\t\t\tvalue instanceof Date\n\t\t\t\t\t? value.getTime()\n\t\t\t\t\t: typeof value === \"number\"\n\t\t\t\t\t\t? value\n\t\t\t\t\t\t: Date.parse(String(value));\n\t\t\treturn String(ms);\n\t\t}\n\t\tcase \"jsonb\":\n\t\t\treturn JSON.stringify(\n\t\t\t\tcanonicalJson(typeof value === \"string\" ? JSON.parse(value) : value),\n\t\t\t);\n\t\tdefault:\n\t\t\treturn value instanceof Uint8Array\n\t\t\t\t? Buffer.from(value).toString(\"hex\")\n\t\t\t\t: String(value);\n\t}\n}\n\n/** Declared columns + `_block_height`, in a fixed order. */\nfunction canonicalRow(\n\tdef: SubgraphTable,\n\trow: Row,\n\tcolumns: string[] = Object.keys(def.columns).sort(),\n): Record<string, unknown> {\n\tconst out: Record<string, unknown> = {};\n\tfor (const c of columns)\n\t\tout[c] = canonicalValue(def.columns[c]?.type, row[c]);\n\tout._block_height = canonicalValue(\"uint\", row._block_height);\n\treturn out;\n}\n\nconst line = (r: Record<string, unknown>) => JSON.stringify(r);\n\nfunction digest(lines: string[]): string {\n\treturn createHash(\"sha256\")\n\t\t.update([...lines].sort().join(\"\\n\"))\n\t\t.digest(\"hex\");\n}\n\nconst heightOf = (row: Row) => Number(row._block_height);\n\nfunction firstDifference(\n\ta: Record<string, unknown>,\n\tb: Record<string, unknown>,\n): string | undefined {\n\treturn Object.keys(a).find((k) => a[k] !== b[k]);\n}\n\n/**\n * Compares replayed tables with the served ones over a block range.\n *\n * Rows are matched on `_block_height` within `[from, to]`. Keyed tables, by\n * their first `uniqueKeys` tuple, compare row by row, and unkeyed tables\n * compare as multisets.\n */\nexport function compareRows(\n\tschema: SubgraphSchema,\n\treplayed: {\n\t\tfrom: number;\n\t\tto: number;\n\t\ttables: Map<string, Row[]>;\n\t},\n\tserved: Map<string, Row[]>,\n): RowComparison {\n\tconst { from, to } = replayed;\n\tconst inWindow = (row: Row) => heightOf(row) >= from && heightOf(row) <= to;\n\tconst failures: ReplayFailure[] = [];\n\tconst tables: TableComparison[] = [];\n\tconst fail = (table: string, message: string, key?: Row) =>\n\t\tfailures.push({\n\t\t\tstep: \"rows\",\n\t\t\ttable,\n\t\t\tmessage: `${table} ${message}`,\n\t\t\t...(key ? { key } : {}),\n\t\t});\n\n\tfor (const [table, def] of Object.entries(schema)) {\n\t\tconst mine = (replayed.tables.get(table) ?? []).filter(inWindow);\n\t\tconst theirs = served.get(table) ?? [];\n\t\tconst theirsInWindow = theirs.filter(inWindow);\n\t\tconst mineLines = mine.map((r) => line(canonicalRow(def, r)));\n\t\tconst theirLines = theirsInWindow.map((r) => line(canonicalRow(def, r)));\n\t\tconst summary: TableComparison = {\n\t\t\ttable,\n\t\t\tequal: 0,\n\t\t\tsuperseded: 0,\n\t\t\tdigest: digest(mineLines),\n\t\t\tservedDigest: digest(theirLines),\n\t\t};\n\t\ttables.push(summary);\n\n\t\tconst keyCols = def.uniqueKeys?.[0];\n\t\tif (!keyCols?.length) {\n\t\t\t// Multiset: count each canonical line on both sides.\n\t\t\tconst counts = new Map<string, number>();\n\t\t\tfor (const l of mineLines) counts.set(l, (counts.get(l) ?? 0) + 1);\n\t\t\tfor (const l of theirLines) counts.set(l, (counts.get(l) ?? 0) - 1);\n\t\t\tconst diff = [...counts].find(([, n]) => n !== 0);\n\t\t\tif (diff) {\n\t\t\t\tconst [l, n] = diff;\n\t\t\t\tconst at = JSON.parse(l) as { _block_height: string };\n\t\t\t\tfail(\n\t\t\t\t\ttable,\n\t\t\t\t\t`row at block ${at._block_height}: ${\n\t\t\t\t\t\tn > 0\n\t\t\t\t\t\t\t? \"replayed but not served\"\n\t\t\t\t\t\t\t: \"served but no proven input produces it\"\n\t\t\t\t\t}`,\n\t\t\t\t);\n\t\t\t} else summary.equal = mine.length;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst keyOf = (row: Row) =>\n\t\t\tJSON.stringify(\n\t\t\t\tkeyCols.map((c) => canonicalValue(def.columns[c]?.type, row[c])),\n\t\t\t);\n\t\tconst keyRow = (row: Row) =>\n\t\t\tObject.fromEntries(keyCols.map((c) => [c, row[c]]));\n\t\tconst servedByKey = new Map(theirs.map((r) => [keyOf(r), r]));\n\t\tconst replayedKeys = new Set<string>();\n\t\tconst columns = Object.keys(def.columns).sort();\n\t\tfor (const row of mine) {\n\t\t\tconst key = keyOf(row);\n\t\t\treplayedKeys.add(key);\n\t\t\tconst s = servedByKey.get(key);\n\t\t\tif (!s) {\n\t\t\t\tfail(\n\t\t\t\t\ttable,\n\t\t\t\t\t`${key}: missing (dropped, or deleted after --to)`,\n\t\t\t\t\tkeyRow(row),\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (heightOf(s) > to) {\n\t\t\t\tsummary.superseded++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst a = canonicalRow(def, s, columns);\n\t\t\tconst b = canonicalRow(def, row, columns);\n\t\t\t// A key first written before the window keeps its original\n\t\t\t// _block_height on the server (upserts never move it);\n\t\t\t// replay never saw that write, so only the columns are comparable.\n\t\t\tif (heightOf(s) < from) {\n\t\t\t\ta._block_height = b._block_height;\n\t\t\t}\n\t\t\tconst col = firstDifference(a, b);\n\t\t\tif (col === undefined) summary.equal++;\n\t\t\telse\n\t\t\t\tfail(\n\t\t\t\t\ttable,\n\t\t\t\t\t`${key}: ${col} served ${String(a[col])}, replayed ${String(b[col])}`,\n\t\t\t\t\tkeyRow(row),\n\t\t\t\t);\n\t\t}\n\t\tfor (const s of theirsInWindow) {\n\t\t\tif (!replayedKeys.has(keyOf(s)))\n\t\t\t\tfail(\n\t\t\t\t\ttable,\n\t\t\t\t\t`${keyOf(s)}: extra: no proven input produces it`,\n\t\t\t\t\tkeyRow(s),\n\t\t\t\t);\n\t\t}\n\t}\n\treturn { failures, tables };\n}\n"
23
24
  ],
24
- "mappings": ";AAaA,uBAAS;AACT;AACA;AAAA;AAAA;AAAA;AAAA;;;ACfA;AACA,mBAAS;AACT;AAAA;AAAA,mBAEC;AAAA;AAAA;;;ACJD;AAAA;AAAA;AAoDO,SAAS,eAAe,CAAC,KAAqB;AAAA,EACpD,OAAO,IAAI,QAAQ,gBAAgB,CAAC,GAAG,MAAc,EAAE,YAAY,CAAC;AAAA;AAS9D,SAAS,YAAY,CAAC,KAAuB;AAAA,EACnD,IAAI,QAAQ,QAAQ,QAAQ;AAAA,IAAW,OAAO;AAAA,EAC9C,IAAI,OAAO,QAAQ;AAAA,IAAU,OAAO;AAAA,EACpC,IAAI,MAAM,QAAQ,GAAG;AAAA,IAAG,OAAO,IAAI,IAAI,YAAY;AAAA,EACnD,MAAM,SAAkC,CAAC;AAAA,EACzC,YAAY,GAAG,MAAM,OAAO,QAAQ,GAA8B,GAAG;AAAA,IACpE,OAAO,gBAAgB,CAAC,KAAK,aAAa,CAAC;AAAA,EAC5C;AAAA,EACA,OAAO;AAAA;AAoBR,SAAS,QAAQ,CAAC,IAAwB;AAAA,EACzC,QAAQ,GAAG;AAAA,SACL;AAAA,SACA;AAAA,MACJ,OAAO,EAAE,MAAM,GAAG,KAAK;AAAA,SACnB;AAAA,SACA;AAAA,MACJ,OAAO,EAAE,MAAM,OAAO;AAAA,SAClB;AAAA,SACA;AAAA,MACJ,OAAO,EAAE,MAAM,YAAY;AAAA,SACvB;AAAA,MACJ,OAAO,EAAE,MAAM,UAAU,KAAK,GAAG,MAAM,SAAS,EAAE;AAAA,SAC9C;AAAA,MACJ,OAAO,EAAE,MAAM,SAAS,KAAK,GAAG,MAAM,OAAO;AAAA,SACzC;AAAA,MAEJ,OAAO,EAAE,MAAM,QAAQ,KAAK,IAAI,YAAY,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO;AAAA,SAClE;AAAA,MACJ,OAAO,EAAE,MAAM,YAAY,OAAO,KAAK;AAAA,SACnC;AAAA,MACJ,OAAO,EAAE,MAAM,YAAY,OAAO,SAAS,GAAG,KAAK,EAAE;AAAA,SACjD;AAAA,MACJ,OAAO,EAAE,MAAM,YAAY,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK,KAAK;AAAA,SACzD;AAAA,MACJ,OAAO,EAAE,MAAM,YAAY,IAAI,MAAM,KAAK,SAAS,GAAG,KAAK,EAAE;AAAA,SACzD,QAAQ;AAAA,MACZ,IAAI,QAAqB;AAAA,MACzB,WAAW,MAAM,GAAG,OAAO;AAAA,QAC1B,MAAM,IAAI,SAAS,EAAE;AAAA,QACrB,QAAQ,QAAQ,MAAM,OAAO,CAAC,IAAI;AAAA,MACnC;AAAA,MACA,OAAO,EAAE,MAAM,QAAQ,MAAM;AAAA,IAC9B;AAAA,SACK,SAAS;AAAA,MACb,MAAM,UAAU,IAAI;AAAA,MACpB,YAAY,GAAG,MAAM,OAAO,QAAQ,GAAG,KAAK,GAAG;AAAA,QAC9C,QAAQ,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC,GAAG,SAAS,EAAE,CAAC;AAAA,MACjD;AAAA,MACA,OAAO,EAAE,MAAM,SAAS,OAAO,GAAG,QAAQ;AAAA,IAC3C;AAAA;AAAA;AAIF,SAAS,aAAa,CAAC,GAAgB,GAA6B;AAAA,EACnE,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,OAAO,MAAM,GAAG,CAAC;AAAA;AAQlB,IAAM,mBAA2C;AAAA,EAChD,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AACX;AAEA,SAAS,SAAS,CAAC,SAAuB;AAAA,EACzC,MAAM,SAAS,CAAC,GAAG,OAAO,EAAE,KAC3B,CAAC,GAAG,OACF,iBAAiB,EAAE,SAAS,OAAO,iBAAiB,EAAE,SAAS,GAClE;AAAA,EACA,OAAO,EAAE,MAAM,SAAS,SAAS,OAAO;AAAA;AAGzC,SAAS,KAAK,CAAC,GAAS,GAAe;AAAA,EAItC,IAAI,EAAE,SAAS,cAAc,EAAE,SAAS,YAAY;AAAA,IACnD,MAAM,KAAK,EAAE,SAAS,aAAa,EAAE,QAAQ;AAAA,IAC7C,MAAM,KAAK,EAAE,SAAS,aAAa,EAAE,QAAQ;AAAA,IAC7C,OAAO,EAAE,MAAM,YAAY,OAAO,cAAc,IAAI,EAAE,EAAE;AAAA,EACzD;AAAA,EACA,IAAI,EAAE,SAAS;AAAA,IAAS,OAAO,SAAS,EAAE,SAAS,CAAC;AAAA,EACpD,IAAI,EAAE,SAAS;AAAA,IAAS,OAAO,SAAS,EAAE,SAAS,CAAC;AAAA,EACpD,IAAI,EAAE,SAAS,EAAE;AAAA,IAAM,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AAAA,EAC9C,QAAQ,EAAE;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,SACA;AAAA,SACA;AAAA,MACJ,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,KAAK,IAAI,EAAE,KAAM,EAAe,GAAG,EAAE;AAAA,SAC7D;AAAA,MACJ,OAAO;AAAA,QACN,MAAM;AAAA,QACN,OAAO,cAAc,EAAE,OAAQ,EAAe,KAAK;AAAA,MACpD;AAAA,SACI,YAAY;AAAA,MAChB,MAAM,KAAK;AAAA,MACX,OAAO;AAAA,QACN,MAAM;AAAA,QACN,IAAI,cAAc,EAAE,IAAI,GAAG,EAAE;AAAA,QAC7B,KAAK,cAAc,EAAE,KAAK,GAAG,GAAG;AAAA,MACjC;AAAA,IACD;AAAA,SACK,SAAS;AAAA,MACb,MAAM,KAAK;AAAA,MACX,MAAM,UAAU,IAAI,IACnB,CAAC,GAAG,EAAE,OAAO,EAAE,IACd,EAAE,GAAG,OACJ,CAAC,GAAG,KAAK,EAAE,CAAC,CACd,CACD;AAAA,MACA,YAAY,GAAG,MAAM,GAAG,SAAS;AAAA,QAChC,MAAM,WAAW,QAAQ,IAAI,CAAC;AAAA,QAC9B,QAAQ,IACP,GACA,WACG;AAAA,UACA,MAAM,MAAM,SAAS,MAAM,EAAE,IAAI;AAAA,UACjC,SAAS,SAAS,UAAU,EAAE;AAAA,QAC/B,IACC,KAAK,EAAE,CACX;AAAA,MACD;AAAA,MACA,OAAO,EAAE,MAAM,SAAS,OAAO,EAAE,QAAQ,GAAG,OAAO,QAAQ;AAAA,IAC5D;AAAA;AAAA;AAKF,SAAS,QAAQ,CAAC,SAAiB,GAAe;AAAA,EACjD,IAAI,EAAE,SAAS,SAAS;AAAA,IACvB,IAAI,MAAY,EAAE,MAAM,SAAS,QAAQ;AAAA,IACzC,WAAW,KAAK,EAAE;AAAA,MAAS,MAAM,MAAM,KAAK,CAAC;AAAA,IAC7C,OAAO;AAAA,EACR;AAAA,EACA,MAAM,OAAO,CAAC,GAAG,OAAO;AAAA,EACxB,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,IACrC,MAAM,SAAS,KAAK;AAAA,IACpB,IAAI,CAAC;AAAA,MAAQ;AAAA,IACb,MAAM,SAAS,MAAM,QAAQ,CAAC;AAAA,IAC9B,IAAI,OAAO,SAAS,SAAS;AAAA,MAC5B,KAAK,KAAK;AAAA,MACV,OAAO,UAAU,IAAI;AAAA,IACtB;AAAA,EACD;AAAA,EACA,KAAK,KAAK,CAAC;AAAA,EACX,OAAO,UAAU,IAAI;AAAA;AAGtB,SAAS,YAAY,CAAC,GAAe;AAAA,EACpC,OAAO,EAAE,SAAS,aAAa,IAAI,EAAE,MAAM,YAAY,OAAO,EAAE;AAAA;AAGjE,SAAS,aAAa,CAAC,GAAwB;AAAA,EAC9C,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,QAAQ,EAAE;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACJ,OAAO,EAAE;AAAA,SACL;AAAA,MACJ,OAAO,SAAS,EAAE;AAAA,SACd;AAAA,MACJ,OAAO,iBAAiB,EAAE;AAAA,SACtB;AAAA,MACJ,OAAO,gBAAgB,EAAE;AAAA,SACrB;AAAA,MACJ,OAAO,aAAa,cAAc,EAAE,KAAK;AAAA,SACrC;AAAA,MACJ,OAAO,SAAS,cAAc,EAAE,KAAK;AAAA,SACjC;AAAA,MACJ,OAAO,aAAa,cAAc,EAAE,EAAE,KAAK,cAAc,EAAE,GAAG;AAAA,SAC1D,SAAS;AAAA,MACb,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO;AAAA,QAC5C,MAAM,OAAO,EAAE,UAAU,EAAE,QAAQ,aAAa,EAAE,IAAI,IAAI,EAAE;AAAA,QAC5D,OAAO,IAAI,KAAK,cAAc,IAAI;AAAA,OAClC;AAAA,MACD,OAAO,UAAU,MAAM,KAAK,GAAG;AAAA,IAChC;AAAA,SACK;AAAA,MACJ,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,KAAK,KAAK;AAAA;AAAA;AAIjD,SAAS,QAAQ,CAAC,GAAwB;AAAA,EACzC,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,QAAQ,EAAE;AAAA,SACJ;AAAA,SACA;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO,EAAE,QAAQ,GAAG,SAAS,EAAE,KAAK,aAAa;AAAA,SAC7C,QAAQ;AAAA,MACZ,MAAM,QAAQ,SAAS,EAAE,KAAK;AAAA,MAC9B,OAAO,MAAM,SAAS,KAAK,IAAI,IAAI,aAAa,GAAG;AAAA,IACpD;AAAA,SACK,YAAY;AAAA,MAEhB,MAAM,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAAA,MAC5D,OAAO,MAAM,KAAK,KAAK;AAAA,IACxB;AAAA,SACK,SAAS;AAAA,MACb,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO;AAAA,QAC5C,MAAM,MAAM,EAAE,UAAU,EAAE,QAAQ,MAAM;AAAA,QACxC,OAAO,GAAG,gBAAgB,CAAC,IAAI,QAAQ,SAAS,EAAE,IAAI;AAAA,OACtD;AAAA,MACD,OAAO,KAAK,MAAM,KAAK,IAAI;AAAA,IAC5B;AAAA,SACK;AAAA,MACJ,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE,QAAQ,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;AAAA;AAAA;AAIpE,SAAS,YAAY,CAAC,GAA4B;AAAA,EACjD,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,QAAQ,EAAE;AAAA,SACJ;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,SACA;AAAA,SACA;AAAA,MACJ,OAAO;AAAA,SACH;AAAA,SACA;AAAA,MACJ,OAAO;AAAA,SAEH;AAAA,MACJ,OAAO,aAAa,EAAE,KAAK;AAAA,SACvB;AAAA,MACJ,OAAO,EAAE,KAAK,aAAa,EAAE,EAAE,IAAI;AAAA,SAC/B;AAAA,MACJ,OAAO;AAAA;AAAA;AAKV,IAAM,+BAA+B;AACrC,IAAM,+BAA+B;AAQ9B,SAAS,gBAAgB,CAC/B,SACwB;AAAA,EACxB,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,KAAK,SAAS;AAAA,IACxB,MAAM,QAAQ,OAAO,IAAI,EAAE,KAAK;AAAA,IAChC,IAAI;AAAA,MAAO,MAAM,KAAK,CAAC;AAAA,IAClB;AAAA,aAAO,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAAA,EAC7B;AAAA,EAEA,MAAM,MAA6B,CAAC;AAAA,EACpC,YAAY,OAAO,SAAS,QAAQ;AAAA,IACnC,IAAI,QAAQ,OAAO;AAAA,IACnB,IAAI,OAAO,OAAO;AAAA,IAClB,WAAW,KAAK,MAAM;AAAA,MACrB,IAAI,EAAE,cAAc;AAAA,QAAO,QAAQ,EAAE;AAAA,MACrC,IAAI,EAAE,cAAc;AAAA,QAAM,OAAO,EAAE;AAAA,IACpC;AAAA,IAIA,MAAM,UAAU,CAAC,GAAG,IAAI,EACtB,OAAO,CAAC,MAA6C,EAAE,WAAW,IAAI,EACtE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,EAAE,WAAW;AAAA,IAC9C,MAAM,SAAS,+BAA+B;AAAA,IAC9C,MAAM,SACL,QAAQ,UAAU,SACf,UACA;AAAA,MACA,GAAG,QAAQ,MAAM,GAAG,4BAA4B;AAAA,MAChD,GAAG,QAAQ,MAAM,CAAC,4BAA4B;AAAA,IAC/C;AAAA,IAEH,MAAM,SAAoB,CAAC;AAAA,IAC3B,IAAI,UAAU;AAAA,IACd,WAAW,KAAK,QAAQ;AAAA,MACvB,IAAI;AAAA,QACH,MAAM,KAAK,cAAc,EAAE,MAAM;AAAA,QACjC;AAAA,QACA,IAAI,GAAG,SAAS;AAAA,UAAS,OAAO,KAAK,EAAE;AAAA,QACtC,MAAM;AAAA,IAGT;AAAA,IAIA,MAAM,WAAW,UAAU,KAAK,OAAO,WAAW;AAAA,IAClD,MAAM,SAA+B,CAAC;AAAA,IACtC,IAAI,CAAC,UAAU;AAAA,MACd,MAAM,QAAQ,IAAI;AAAA,MASlB,WAAW,KAAK,QAAQ;AAAA,QACvB,YAAY,KAAK,UAAU,OAAO,QAAQ,EAAE,KAAK,GAAG;AAAA,UAEnD,IAAI,QAAQ;AAAA,YAAS;AAAA,UACrB,MAAM,OAAO,SAAS,KAAK;AAAA,UAC3B,MAAM,WAAW,MAAM,IAAI,GAAG;AAAA,UAC9B,IAAI,UAAU;AAAA,YACb,SAAS;AAAA,YACT,SAAS,OAAO,MAAM,SAAS,MAAM,IAAI;AAAA,YACzC,IAAI,MAAM,SAAS;AAAA,cAAQ,SAAS;AAAA,YACpC,IAAI,MAAM,SAAS,UAAU,MAAM,SAAS,QAAQ;AAAA,cACnD,SAAS,eAAe;AAAA,YACzB;AAAA,UACD,EAAO;AAAA,YACN,MAAM,IAAI,KAAK;AAAA,cACd;AAAA,cACA,SAAS;AAAA,cACT,WAAW,MAAM,SAAS,SAAS,IAAI;AAAA,cACvC,cAAc,MAAM,SAAS,UAAU,MAAM,SAAS;AAAA,YACvD,CAAC;AAAA;AAAA,QAEH;AAAA,MACD;AAAA,MACA,YAAY,MAAM,OAAO,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,OAC/C,EAAE,cAAc,CAAC,CAClB,GAAG;AAAA,QACF,MAAM,QAA4B;AAAA,UACjC;AAAA,UACA,YAAY,gBAAgB,IAAI;AAAA,UAChC,cAAc,cAAc,GAAG,IAAI;AAAA,UACnC,SAAS,SAAS,GAAG,IAAI;AAAA,UACzB,aAAa,aAAa,GAAG,IAAI;AAAA,UACjC,gBAAgB,GAAG,YAAY,OAAO;AAAA,QACvC;AAAA,QACA,IAAI,GAAG,cAAc;AAAA,UACpB,MAAM,sBAAsB,GAAG,UAAU,GAAG,aAAa,GAAG;AAAA,QAC7D;AAAA,QACA,OAAO,KAAK,KAAK;AAAA,MAClB;AAAA,IACD;AAAA,IAEA,IAAI,KAAK;AAAA,MACR;AAAA,MACA,OAAO,KAAK;AAAA,MACZ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,WAAW;AAAA,MACX;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,OAAO,IAAI,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAAA;;;ACnd5C,qCAAoB;AAMb,SAAS,kBAAkB,CAAC,KAAsB;AAAA,EACxD,IAAI;AAAA,IACH,MAAM,WAAW,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI;AAAA,IACvD,MAAM,KAAK,eAAc,QAAQ;AAAA,IACjC,OAAO,UAAU,EAAE;AAAA,IAClB,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAQF,SAAS,eAAe,CAAC,MAAwB;AAAA,EACvD,IAAI,OAAO,SAAS,YAAY,KAAK,WAAW,IAAI,KAAK,KAAK,SAAS,IAAI;AAAA,IAC1E,OAAO,mBAAmB,IAAI;AAAA,EAC/B;AAAA,EAEA,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,IACxB,OAAO,KAAK,IAAI,eAAe;AAAA,EAChC;AAAA,EAEA,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,IAC9C,MAAM,UAAmC,CAAC;AAAA,IAC1C,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,MAChD,QAAQ,OAAO,gBAAgB,KAAK;AAAA,IACrC;AAAA,IACA,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;;;ACnBR,IAAM,eAAe,IAAI,IAAY;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,SAAS,YAAY,CAAC,OAAwC;AAAA,EAC7D,OAAO,OAAO,UAAU,YAAY,aAAa,IAAI,KAAK;AAAA;AAI3D,SAAS,YAAY,CAAC,OAAmB,OAAyB;AAAA,EACjE,IAAI,aAAa,KAAK,GAAG;AAAA,IACxB,QAAQ;AAAA,WACF;AAAA,WACA;AAAA,QACJ,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,WACjD;AAAA,QACJ,OAAO,OAAO,UAAU;AAAA,WACpB;AAAA,WACA;AAAA,WACA;AAAA,QAGJ,OACC,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU;AAAA,WAEd;AAAA,QAEJ,OAAO,UAAU;AAAA;AAAA,EAEpB;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,UAAU;AAAA,IAAM,OAAO;AAAA,EACxD,IAAI,cAAc,OAAO;AAAA,IACxB,OACC,UAAU,aAAa,UAAU,QAAQ,aAAa,MAAM,MAAM,KAAK;AAAA,EAEzE;AAAA,EACA,IAAI,WAAW,OAAO;AAAA,IACrB,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxE,OAAO;AAAA,IACR;AAAA,IACA,OAAO,aAAa,MAAM,OAAO,KAAgC,EAAE;AAAA,EACpE;AAAA,EACA,IAAI,UAAU,OAAO;AAAA,IACpB,OACC,MAAM,QAAQ,KAAK,KACnB,MAAM,MAAM,CAAC,SAAS,aAAa,MAAM,MAAM,IAAI,CAAC;AAAA,EAEtD;AAAA,EACA,OAAO;AAAA;AAQD,SAAS,YAAY,CAC3B,UACA,MACwB;AAAA,EACxB,YAAY,MAAM,UAAU,OAAO,QAAQ,QAAQ,GAAG;AAAA,IACrD,MAAM,UAAU,QAAQ;AAAA,IACxB,MAAM,WACL,OAAO,UAAU,YAAY,UAAU,QAAQ,cAAc;AAAA,IAC9D,IAAI,CAAC,SAAS;AAAA,MACb,IAAI;AAAA,QAAU;AAAA,MACd,OAAO,EAAE,IAAI,OAAO,QAAQ,2BAA2B,QAAQ;AAAA,IAChE;AAAA,IACA,IAAI,CAAC,aAAa,OAAO,KAAK,KAAK,GAAG;AAAA,MACrC,OAAO;AAAA,QACN,IAAI;AAAA,QACJ,QAAQ,UAAU,+CAA+C,SAAS,KAAK,KAAK;AAAA,MACrF;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO,EAAE,IAAI,KAAK;AAAA;AAGnB,SAAS,QAAQ,CAAC,OAAwB;AAAA,EACzC,IAAI,UAAU;AAAA,IAAM,OAAO;AAAA,EAC3B,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EACjC,OAAO,OAAO;AAAA;AAQR,SAAS,oBAAoB,CACnC,QACA,OACA,MACwB;AAAA,EACxB,IAAI,CAAC;AAAA,IAAQ,OAAO,EAAE,IAAI,KAAK;AAAA,EAC/B,MAAM,WAAW,OAAO;AAAA,EACxB,IAAI,CAAC;AAAA,IAAU,OAAO,EAAE,IAAI,KAAK;AAAA,EACjC,OAAO,aAAa,UAAU,IAAI;AAAA;;;ACzGnC;;;ACRA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,IAAM,oBAA4B,0BAA0B,gBAAI;AAShE,IAAM,oBAAsD;AAAA,EAClE,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,sBAAsB;AAAA,EACtB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AACV;AAOO,IAAM,kBAAqC;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAIO,IAAM,eAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAGO,IAAM,iBAAoC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAwBO,SAAS,aAAa,CAAC,GAA2B;AAAA,EACxD,OAAO,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE;AAAA;AAWxD,IAAM,qBAA0C,IAAI,IAAI;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,aAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE;AAGlD,IAAM,sBAAsB;AASrB,SAAS,kBAAkB,CACjC,KACA,WAAsC,CAAC,GAChB;AAAA,EACvB,IAAI,QAAiC;AAAA,EACrC,MAAM,QAAQ,CAAC,OAAgC;AAAA,IAC9C,IAAI,WAAW,MAAM,WAAW;AAAA,MAAQ,QAAQ;AAAA;AAAA,EAEjD,MAAM,UAAoB,CAAC;AAAA,EAE3B,YAAY,MAAM,WAAW,OAAO,QAAQ,IAAI,WAAW,CAAC,CAAC,GAAG;AAAA,IAC/D,MAAM,SAAS;AAAA,IACf,IAAI,OAAO,OAAO;AAAA,MACjB,MAAM,MAAM;AAAA,MACZ,QAAQ,KACP,WAAW,qDACZ;AAAA,IACD,EAAO,SAAI,OAAO,SAAS,cAAc;AAAA,MACxC,MAAM,QAAQ;AAAA,MACd,QAAQ,KACP,sBAAsB,iDACvB;AAAA,IACD,EAAO,SAAI,CAAC,mBAAmB,IAAI,OAAO,IAAI,GAAG;AAAA,MAChD,MAAM,QAAQ;AAAA,MACd,QAAQ,KAAK,GAAG,OAAO,gBAAgB,0BAA0B;AAAA,IAClE;AAAA,EACD;AAAA,EACA,IAAI,IAAI,iBAAiB,cAAc;AAAA,IACtC,MAAM,MAAM;AAAA,IACZ,QAAQ,KAAK,6DAA6D;AAAA,EAC3E;AAAA,EACA,IAAI,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,cAAc;AAAA,IAAG,MAAM,QAAQ;AAAA,EAEnE,WAAW,KAAK,SAAS,MAAM,GAAG,mBAAmB,GAAG;AAAA,IACvD,QAAQ,KACP,EAAE,SAAS,iBACR,GAAG,cAAc,CAAC,2BAClB,cAAc,CAAC,CACnB;AAAA,EACD;AAAA,EACA,IAAI,SAAS,SAAS,qBAAqB;AAAA,IAC1C,QAAQ,KACP,QAAQ,SAAS,SAAS,2CAC3B;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,UACC,QAAQ,WAAW,IAChB;AAAA,MACA;AAAA,MACA;AAAA,IACD,IACC,CAAC;AAAA,EACN;AAAA;AASM,SAAS,sBAAsB,CAAC,GAAkC;AAAA,EACxE,OAAO,EAAE,UAAU,WAAW,EAAE,QAAQ,SAAS;AAAA;AAiBlD,SAAS,MAAM,CAAC,OAAuB;AAAA,EACtC,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA;AAkBhD,SAAS,WAAW,CAAC,OAAyB;AAAA,EACpD,MAAM,SAAoB;AAAA,IACzB,aAAa,OAAO,MAAM,WAAW;AAAA,IACrC,SAAS,MAAM;AAAA,IACf,SAAS,MAAM,WAAW;AAAA,IAC1B,YAAY,MAAM;AAAA,IAClB,YAAY,MAAM,cAAc;AAAA,EACjC;AAAA,EACA,OAAO,KAAK,UAAU,MAAM;AAAA;AAQtB,SAAS,UAAU,CAAC,OAAyB;AAAA,EACnD,OAAO,OAAO,YAAY,KAAK,CAAC;AAAA;;;ADhS1B,MAAM,4BAA4B,MAAM;AAAA,EACrC,OAAO;AACjB;AAAA;AASO,MAAM,yBAAyB,MAAM;AAAA,EAClC,OAAO;AACjB;AAGO,SAAS,WAAW,CAAC,KAAuB;AAAA,EAClD,OAAO,eAAe,uBAAuB,eAAe;AAAA;AAK7D,IAAM,eAAe;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,SAAS,MAAM,CAAC,MAAc,QAA6B;AAAA,EAC1D,OAAO,MAAM;AAAA,IACZ,MAAM,IAAI,oBAAoB,GAAG,SAAS,QAAQ;AAAA;AAAA;AAIpD,SAAS,WAAW,GAAe;AAAA,EAClC,MAAM,OAAO;AAAA,EACb,MAAM,UAAmC,OAAO,OAAO,IAAI;AAAA,EAC3D,WAAW,QAAQ,cAAc;AAAA,IAChC,IAAI,KAAK,UAAU;AAAA,MAAW,QAAQ,QAAQ,KAAK;AAAA,EACpD;AAAA,EACA,MAAM,UAAU,GAAG,cAAc,SAAS;AAAA,IACzC,MAAM;AAAA,IACN,gBAAgB,EAAE,SAAS,OAAO,MAAM,MAAM;AAAA,EAC/C,CAAC;AAAA,EACD,MAAM,IAAI,GAAG,aAAa,cAAc,OAAO;AAAA,EAE/C,MAAM,UAAU,IAAI,IAAI,eAAe;AAAA,EACvC,WAAW,QAAQ,OAAO,oBAAoB,CAAC,GAAG;AAAA,IACjD,IAAI,CAAC,QAAQ,IAAI,IAAI;AAAA,MAAG,OAAO,EAAE;AAAA,EAClC;AAAA,EACA,YAAY,MAAM,WAAW,OAAO,QAAQ,iBAAiB,GAAG;AAAA,IAC/D,OAAO,eAAe,GAAG,MAAM,EAAE,KAAK,OAAO,MAAM,MAAM,EAAE,CAAC;AAAA,EAC7D;AAAA,EAEA,MAAM,YAAY,EAAE;AAAA,EACpB,MAAM,WAAoC,CAAC;AAAA,EAC3C,MAAM,cAAc,IAAI,IAAI,YAAY;AAAA,EACxC,WAAW,OAAO,OAAO,oBAAoB,SAAS,GAAG;AAAA,IACxD,IAAI,YAAY,IAAI,GAAG;AAAA,MAAG,SAAS,OAAO,UAAU;AAAA,IAEnD;AAAA,aAAO,eAAe,UAAU,KAAK;AAAA,QACpC,KAAK,OACJ,QAAQ,OACR,QAAQ,WACL,+BACA,+BACJ;AAAA,MACD,CAAC;AAAA,EACH;AAAA,EACA,OAAO,eAAe,GAAG,QAAQ,EAAE,OAAO,OAAO,OAAO,QAAQ,EAAE,CAAC;AAAA,EAEnE,WAAW,QAAQ,CAAC,UAAU,UAAU,UAAU,SAAS,QAAQ,GAAG;AAAA,IACrE,MAAM,QAAS,EAAE,MAAgC;AAAA,IACjD,WAAW,UAAU,gBAAgB;AAAA,MACpC,IAAI,OAAO,UAAU,eAAe,KAAK,OAAO,MAAM,GAAG;AAAA,QACxD,OAAO,eAAe,OAAO,QAAQ;AAAA,UACpC,OAAO,OAAO,QAAQ,0CAA0C;AAAA,QACjE,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA,EAKA,OAAO,kBAAkB,CAAC;AAAA,EAC1B,OAAO;AAAA;AAMD,SAAS,cAAc,CAC7B,OACA,QACO;AAAA,EACP,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IAClD,WAAW,OAAO,GAAG,SAAS,KAAK;AAAA,EACpC;AAAA;AAGD,SAAS,UAAU,CAAC,OAAgB,MAAoB;AAAA,EACvD,QAAQ,OAAO;AAAA,SACT;AAAA,MACJ,IAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAAA,QACjC,MAAM,IAAI,UACT,GAAG,SAAS,iFACb;AAAA,MACD;AAAA,MACA;AAAA,SACI;AAAA,SACA;AAAA,MACJ,MAAM,IAAI,UAAU,GAAG,WAAW,OAAO,0BAA0B;AAAA,SAC/D;AAAA,MACJ,IAAI,UAAU,QAAQ,YAAY,OAAO,KAAK;AAAA,QAAG;AAAA,MACjD,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QACzB,MAAM,QAAQ,CAAC,GAAG,MAAM,WAAW,GAAG,GAAG,QAAQ,IAAI,CAAC;AAAA,QACtD;AAAA,MACD;AAAA,MACA,YAAY,GAAG,MAAM,OAAO,QAAQ,KAAK;AAAA,QAAG,WAAW,GAAG,GAAG,QAAQ,GAAG;AAAA,MACxE;AAAA;AAAA,MAEA;AAAA;AAAA;AASI,SAAS,oBAAoB,CACnC,KACA,QACkB;AAAA,EAClB,IAAI,eAAe;AAAA,EAGnB,MAAM,aAAa,CAAC,UAAkB;AAAA,IACrC,IAAI,CAAC,OAAO,UAAU,eAAe,KAAK,QAAQ,KAAK,GAAG;AAAA,MACzD,MAAM,IAAI,MAAM,UAAU,qCAAqC;AAAA,IAChE;AAAA;AAAA,EAED,MAAM,QAAQ,CAAC,OAAe;AAAA,IAC7B,IAAI,eAAe,GAAG;AAAA,MACrB,MAAM,IAAI,oBACT,OAAO,6HACR;AAAA,IACD;AAAA;AAAA,EAED,MAAM,OAAO,OAAU,IAAY,QAAsC;AAAA,IACxE,MAAM,EAAE;AAAA,IACR;AAAA,IACA,IAAI;AAAA,MACH,OAAO,MAAM,IAAI;AAAA,MAChB,OAAO,KAAK;AAAA,MACb,IAAI,eAAe;AAAA,QAAqB,MAAM;AAAA,MAC9C,MAAM,IAAI,iBACT,OAAO,cAAc,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,KACpE,EAAE,OAAO,IAAI,CACd;AAAA,cACC;AAAA,MACD;AAAA;AAAA;AAAA,EAIF,OAAO;AAAA,QACF,KAAK,GAAG;AAAA,MACX,OAAO,IAAI;AAAA;AAAA,QAER,EAAE,GAAG;AAAA,MACR,OAAO,IAAI;AAAA;AAAA,QAER,MAAM,GAAU;AAAA,MACnB,MAAM,IAAI,oBACT,qDACD;AAAA;AAAA,IAED,MAAM,CAAC,OAAO,KAAK;AAAA,MAClB,MAAM,QAAQ;AAAA,MACd,eAAe,UAAU,SAAS,GAAG;AAAA,MACrC,IAAI,OAAO,OAAO,GAAG;AAAA;AAAA,IAEtB,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MACzB,MAAM,QAAQ;AAAA,MACd,eAAe,UAAU,SAAS,KAAK;AAAA,MACvC,eAAe,UAAU,SAAS,GAAG;AAAA,MACrC,IAAI,OAAO,OAAO,OAAO,GAAG;AAAA;AAAA,IAE7B,MAAM,CAAC,OAAO,KAAK,KAAK;AAAA,MACvB,MAAM,QAAQ;AAAA,MACd,eAAe,UAAU,SAAS,GAAG;AAAA,MACrC,eAAe,UAAU,SAAS,GAAG;AAAA,MACrC,IAAI,OAAO,OAAO,KAAK,GAAG;AAAA;AAAA,IAE3B,MAAM,CAAC,OAAO,OAAO;AAAA,MACpB,MAAM,QAAQ;AAAA,MACd,IAAI,OAAO,OAAO,KAAK;AAAA;AAAA,IAExB,SAAS,CAAC,OAAO,KAAK,QAAQ;AAAA,MAC7B,MAAM,WAAW;AAAA,MACjB,eAAe,aAAa,SAAS,GAAG;AAAA,MACxC,eAAe,aAAa,SAAS,MAAM;AAAA,MAC3C,IAAI,UAAU,OAAO,KAAK,MAAM;AAAA;AAAA,IAEjC,SAAS,CAAC,OAAO,UAAU;AAAA,MAC1B,WAAW,KAAK;AAAA,MAChB,OAAO,KAAK,WAAW,MAAM,IAAI,QAAQ,OAAO,KAAK,CAAC;AAAA;AAAA,IAEvD,UAAU,CAAC,UAAU,SAAoB;AAAA,MACxC,WAAW,KAAK;AAAA,MAChB,OAAO,KAAK,YAAY,MAAO,IAAI,SAAsB,OAAO,GAAG,IAAI,CAAC;AAAA;AAAA,EAE1E;AAAA;AAMD,IAAM,mBAAmB,IAAI;AAc7B,eAAsB,2BAA2B,CAChD,aAC8B;AAAA,EAI9B,QAAQ,cAAc,MAAa;AAAA,EACnC,QAAQ,SAAS,MAAM,UAAU,aAAa;AAAA,IAC7C,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,EACX,CAAC;AAAA,EACD,MAAM,UAAU,YAAY;AAAA,EAC5B,MAAM,WAAW,GAAG,aACnB;AAAA,EAAkC;AAAA,KAClC,SACA,EAAE,UAAU,aAAa,CAC1B;AAAA,EACA,MAAM,MAA4C,EAAE,SAAS,CAAC,EAAE;AAAA,EAChE,SAAS,KAAK,IAAI,OAAO;AAAA,EACzB,MAAM,MAAO,IAAI,QAAQ,WAAW,IAAI;AAAA,EAGxC,MAAM,UAAU,gBAAgB,IAAI,OAAO;AAAA,EAC3C,MAAM,SAAS,gBAAgB,IAAI,MAAM;AAAA,EAGzC,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,WAA2C,CAAC;AAAA,EAClD,YAAY,MAAM,YAAY,OAAO,QAAQ,IAAI,YAAY,CAAC,CAAC,GAAG;AAAA,IACjE,SAAS,QAAQ,CAAC,OAAO,QAAQ;AAAA,MAChC,IAAI,SAAS,QAAQ,IAAI,GAAG;AAAA,MAC5B,IAAI,CAAC,QAAQ;AAAA,QACZ,SAAS,qBAAqB,KAAK,MAAM;AAAA,QACzC,QAAQ,IAAI,KAAK,MAAM;AAAA,MACxB;AAAA,MACA,OAAO,QAAQ,OAAO,MAAM;AAAA;AAAA,EAE9B;AAAA,EACA,MAAM,SAAS,KAAK,KAAK,SAAS,QAAQ,SAAS;AAAA,EACnD,iBAAiB,IAAI,MAAM;AAAA,EAC3B,OAAO;AAAA;;;AE/RR,IAAM,eAAe,IAAI;AAGzB,SAAS,QAAQ,CAAC,OAAe,SAA8C;AAAA,EAC9E,OAAO,MAAM,QAAQ,OAAO,IACzB,QAAQ,KAAK,CAAC,MAAM,aAAa,OAAO,CAAC,CAAC,IAC1C,aAAa,OAAO,OAAiB;AAAA;AAGzC,SAAS,YAAY,CAAC,OAAe,SAA0B;AAAA,EAC9D,IAAI,CAAC,QAAQ,SAAS,GAAG;AAAA,IAAG,OAAO,UAAU;AAAA,EAC7C,IAAI,KAAK,aAAa,IAAI,OAAO;AAAA,EACjC,IAAI,CAAC,IAAI;AAAA,IACR,MAAM,QAAQ,QACZ,QAAQ,qBAAqB,MAAM,EACnC,QAAQ,OAAO,IAAI;AAAA,IACrB,KAAK,IAAI,OAAO,IAAI,QAAQ;AAAA,IAC5B,aAAa,IAAI,SAAS,EAAE;AAAA,EAC7B;AAAA,EACA,OAAO,GAAG,KAAK,KAAK;AAAA;AAOrB,IAAM,YAAiC,IAAI;AAe3C,SAAS,aAAa,CACrB,QACA,YACA,kBACU;AAAA,EACV,IAAI,CAAC,OAAO;AAAA,IAAS,OAAO;AAAA,EAC5B,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,QAAQ,iBAAiB,IAAI,OAAO,QAAQ,IAAI,KAAK,WAAW,IAC/D,UACD;AAAA;AAaD,SAAS,WAAW,CACnB,QACA,YACA,gBACU;AAAA,EACV,MAAM,QAAS,OAA8B;AAAA,EAC7C,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EACnB,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,QAAQ,eAAe,IAAI,KAAK,KAAK,WAAW,IAAI,UAAU;AAAA;AAI/D,SAAS,aAAa,CAAC,SAAiD;AAAA,EACvE,OAAO,SAAS,MAAM,IAAI,EAAE;AAAA;AAStB,SAAS,eAAe,CAC9B,MACqB;AAAA,EACrB,IAAI,CAAC;AAAA,IAAM;AAAA,EACX,MAAM,MACJ,OAAO,KAAK,wBAAwB,WAClC,KAAK,sBACL,eACF,OAAO,KAAK,gBAAgB,WAAW,KAAK,cAAc;AAAA,EAC5D,OAAO,MAAM;AAAA;AAKd,IAAM,gBAAgB,IAAI;AAU1B,SAAS,iBAAiB,CACzB,OACA,MACiC;AAAA,EACjC,IAAI,cAAc,IAAI,KAAK;AAAA,IAAG,OAAO,cAAc,IAAI,KAAK,KAAK;AAAA,EACjE,MAAM,MAAM,KAAK;AAAA,EACjB,MAAM,QACL,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,IAC3C,mBAAmB,GAAG,IACtB;AAAA,EACJ,MAAM,QACL,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IACtD,QACD;AAAA,EACJ,cAAc,IAAI,OAAO,KAAK;AAAA,EAC9B,OAAO;AAAA;AASD,SAAS,gBAAgB,CAC/B,SACA,KACA,UACU;AAAA,EACV,MAAM,QAAQ,QAAQ;AAAA,EACtB,IAAI;AAAA,EACJ,IAAI,OAAO,UAAU;AAAA,IAAU,SAAS;AAAA,EACnC,SAAI,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,IACtD,SAAS,OAAO,KAAK;AAAA,EACjB;AAAA,WAAO;AAAA,EACZ,OAAO,OAAO,aAAa,WACxB,WAAW,WACX,SAAS,SAAS,MAAM;AAAA;AAI5B,SAAS,gBAAgB,CACxB,QAIA,OACA,MACU;AAAA,EACV,IAAI,CAAC,OAAO,SAAS,CAAC,OAAO;AAAA,IAAO,OAAO;AAAA,EAC3C,MAAM,UAAU,kBAAkB,OAAO,IAAI;AAAA,EAC7C,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EACrB,IAAI,OAAO,SAAS,CAAC,iBAAiB,SAAS,SAAS,OAAO,KAAK;AAAA,IACnE,OAAO;AAAA,EACR,YAAY,KAAK,aAAa,OAAO,QAAQ,OAAO,SAAS,CAAC,CAAC,GAAG;AAAA,IACjE,IAAI,CAAC,iBAAiB,SAAS,KAAK,QAAQ;AAAA,MAAG,OAAO;AAAA,EACvD;AAAA,EACA,OAAO;AAAA;AAKR,SAAS,WAAW,CACnB,QACA,cACA,YACA,gBACA,mBAAqC,IAAI,KACzC,eAA2C,IAAI,KACH;AAAA,EAC5C,MAAM,UAAqD,CAAC;AAAA,EAE5D,QAAQ,OAAO;AAAA,SAET;AAAA,SACA;AAAA,SACA;AAAA,SACA,YAAY;AAAA,MAChB,MAAM,YAAY,GAAG,OAAO;AAAA,MAC5B,WAAW,MAAM,cAAc;AAAA,QAC9B,MAAM,WAAW,WAAW,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,QAC9C,MAAM,UAAU,SAAS,OAAO,CAAC,MAAM,EAAE,SAAS,SAAS;AAAA,QAC3D,IAAI,QAAQ,WAAW;AAAA,UAAG;AAAA,QAG1B,MAAM,WAAW,QAAQ,OAAO,CAAC,MAAM;AAAA,UACtC,MAAM,OAAO,EAAE;AAAA,UACf,IAAI,CAAC;AAAA,YAAM,OAAO;AAAA,UAClB,IAAI,YAAY,UAAU,OAAO,QAAQ;AAAA,YACxC,IAAI,CAAC,aAAa,KAAK,QAAkB,OAAO,MAAM;AAAA,cACrD,OAAO;AAAA,UACT;AAAA,UACA,IAAI,eAAe,UAAU,OAAO,WAAW;AAAA,YAC9C,IAAI,CAAC,aAAa,KAAK,WAAqB,OAAO,SAAS;AAAA,cAC3D,OAAO;AAAA,UACT;AAAA,UACA,IAAI,mBAAmB,UAAU,OAAO,eAAe;AAAA,YACtD,IACC,CAAC,aAAa,KAAK,gBAA0B,OAAO,aAAa;AAAA,cAEjE,OAAO;AAAA,UACT;AAAA,UAEA,IAAI,eAAe,UAAU,OAAO,cAAc,WAAW;AAAA,YAC5D,MAAM,SAAS,OACb,KAAK,UAAU,KAAK,iBAAiB,GACvC;AAAA,YACA,IAAI,SAAS,OAAO;AAAA,cAAW,OAAO;AAAA,UACvC;AAAA,UACA,IACC,eAAe,UACd,OAAkC,cAAc,WAChD;AAAA,YACD,MAAM,SAAS,OAAQ,KAAK,UAAU,GAAc;AAAA,YACpD,IAAI,SAAU,OAAiC;AAAA,cAC9C,OAAO;AAAA,UACT;AAAA,UACA,OAAO;AAAA,SACP;AAAA,QAED,IAAI,SAAS,SAAS,GAAG;AAAA,UACxB,QAAQ,KAAK,EAAE,IAAI,QAAQ,SAAS,CAAC;AAAA,QACtC;AAAA,MACD;AAAA,MACA;AAAA,IACD;AAAA,SAGK;AAAA,SACA;AAAA,SACA,WAAW;AAAA,MACf,MAAM,YAAY,GAAG,OAAO;AAAA,MAC5B,WAAW,MAAM,cAAc;AAAA,QAC9B,MAAM,WAAW,WAAW,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,QAC9C,MAAM,UAAU,SAAS,OAAO,CAAC,MAAM;AAAA,UACtC,IAAI,EAAE,SAAS;AAAA,YAAW,OAAO;AAAA,UACjC,MAAM,OAAO,EAAE;AAAA,UACf,IAAI,CAAC;AAAA,YAAM,OAAO;AAAA,UAGlB,IAAI,OAAO,iBAAiB;AAAA,YAC3B,MAAM,UAAU,KAAK;AAAA,YACrB,IAAI,CAAC,WAAW,CAAC,aAAa,SAAS,OAAO,eAAe;AAAA,cAC5D,OAAO;AAAA,UACT;AAAA,UAEA,IACC,CAAC,YACA,QACA,cAAc,KAAK,gBAAsC,GACzD,cACD;AAAA,YAEA,OAAO;AAAA,UAER,IAAI,YAAY,UAAU,OAAO,QAAQ;AAAA,YACxC,IAAI,CAAC,aAAa,KAAK,QAAkB,OAAO,MAAM;AAAA,cACrD,OAAO;AAAA,UACT;AAAA,UACA,IAAI,eAAe,UAAU,OAAO,WAAW;AAAA,YAC9C,IAAI,CAAC,aAAa,KAAK,WAAqB,OAAO,SAAS;AAAA,cAC3D,OAAO;AAAA,UACT;AAAA,UAEA,IAAI,OAAO,cAAc,WAAW;AAAA,YACnC,MAAM,SAAS,OAAQ,KAAK,UAAU,GAAc;AAAA,YACpD,IAAI,SAAS,OAAO;AAAA,cAAW,OAAO;AAAA,UACvC;AAAA,UACA,OAAO;AAAA,SACP;AAAA,QAED,IAAI,QAAQ,SAAS,GAAG;AAAA,UACvB,QAAQ,KAAK,EAAE,IAAI,QAAQ,QAAQ,CAAC;AAAA,QACrC;AAAA,MACD;AAAA,MACA;AAAA,IACD;AAAA,SAGK;AAAA,SACA;AAAA,SACA,YAAY;AAAA,MAChB,MAAM,YAAY,GAAG,OAAO;AAAA,MAC5B,WAAW,MAAM,cAAc;AAAA,QAC9B,MAAM,WAAW,WAAW,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,QAC9C,MAAM,UAAU,SAAS,OAAO,CAAC,MAAM;AAAA,UACtC,IAAI,EAAE,SAAS;AAAA,YAAW,OAAO;AAAA,UACjC,MAAM,OAAO,EAAE;AAAA,UACf,IAAI,CAAC;AAAA,YAAM,OAAO;AAAA,UAElB,IAAI,OAAO,iBAAiB;AAAA,YAC3B,MAAM,UAAU,KAAK;AAAA,YACrB,IAAI,CAAC,WAAW,CAAC,aAAa,SAAS,OAAO,eAAe;AAAA,cAC5D,OAAO;AAAA,UACT;AAAA,UACA,IACC,CAAC,YACA,QACA,cAAc,KAAK,gBAAsC,GACzD,cACD;AAAA,YAEA,OAAO;AAAA,UACR,IAAI,YAAY,UAAU,OAAO,QAAQ;AAAA,YACxC,IAAI,CAAC,aAAa,KAAK,QAAkB,OAAO,MAAM;AAAA,cACrD,OAAO;AAAA,UACT;AAAA,UACA,IAAI,eAAe,UAAU,OAAO,WAAW;AAAA,YAC9C,IAAI,CAAC,aAAa,KAAK,WAAqB,OAAO,SAAS;AAAA,cAC3D,OAAO;AAAA,UACT;AAAA,UACA,OAAO;AAAA,SACP;AAAA,QAED,IAAI,QAAQ,SAAS,GAAG;AAAA,UACvB,QAAQ,KAAK,EAAE,IAAI,QAAQ,QAAQ,CAAC;AAAA,QACrC;AAAA,MACD;AAAA,MACA;AAAA,IACD;AAAA,SAGK,iBAAiB;AAAA,MACrB,WAAW,MAAM,cAAc;AAAA,QAC9B,IAAI,GAAG,SAAS;AAAA,UAAiB;AAAA,QAGjC,IAAI,OAAO,YAAY;AAAA,UACtB,IAAI,CAAC,GAAG,eAAe,CAAC,SAAS,GAAG,aAAa,OAAO,UAAU;AAAA,YACjE;AAAA,QACF;AAAA,QAEA,IAAI,CAAC,cAAc,QAAQ,GAAG,aAAa,gBAAgB;AAAA,UAAG;AAAA,QAE9D,IAAI,OAAO,cAAc;AAAA,UACxB,IACC,CAAC,GAAG,iBACJ,CAAC,aAAa,GAAG,eAAe,OAAO,YAAY;AAAA,YAEnD;AAAA,QACF;AAAA,QAEA,IAAI,OAAO,QAAQ;AAAA,UAClB,IAAI,CAAC,aAAa,GAAG,QAAQ,OAAO,MAAM;AAAA,YAAG;AAAA,QAC9C;AAAA,QAEA,IAAI,CAAC,YAAY,QAAQ,GAAG,aAAa,cAAc;AAAA,UAAG;AAAA,QAE1D,MAAM,WAAW,WAAW,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,QAC9C,QAAQ,KAAK,EAAE,IAAI,QAAQ,SAAS,CAAC;AAAA,MACtC;AAAA,MACA;AAAA,IACD;AAAA,SAGK,mBAAmB;AAAA,MACvB,WAAW,MAAM,cAAc;AAAA,QAC9B,IAAI,GAAG,SAAS;AAAA,UAAkB;AAAA,QAElC,IAAI,OAAO,UAAU;AAAA,UACpB,IAAI,CAAC,aAAa,GAAG,QAAQ,OAAO,QAAQ;AAAA,YAAG;AAAA,QAChD;AAAA,QACA,IAAI,OAAO,cAAc;AAAA,UACxB,MAAM,OAAO,GAAG,aAAa,MAAM,GAAG,EAAE,MAAM;AAAA,UAC9C,IAAI,CAAC,aAAa,MAAM,OAAO,YAAY;AAAA,YAAG;AAAA,QAC/C;AAAA,QAEA,MAAM,WAAW,WAAW,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,QAC9C,QAAQ,KAAK,EAAE,IAAI,QAAQ,SAAS,CAAC;AAAA,MACtC;AAAA,MACA;AAAA,IACD;AAAA,SAEK;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA,cAAc;AAAA,MAGlB,WAAW,MAAM,cAAc;AAAA,QAC9B,MAAM,WAAW,aAAa,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,QAChD,MAAM,UAAU,SAAS,OAAO,CAAC,MAAM;AAAA,UACtC,IAAI,EAAE,SAAS,OAAO;AAAA,YAAM,OAAO;AAAA,UACnC,MAAM,OAAO,EAAE;AAAA,UACf,IAAI,CAAC;AAAA,YAAM,OAAO;AAAA,UAClB,MAAM,aAAa,gBAAgB,IAAI;AAAA,UACvC,IAAI,gBAAgB,UAAU,OAAO,YAAY;AAAA,YAChD,IAAI,CAAC,cAAc,CAAC,SAAS,YAAY,OAAO,UAAU;AAAA,cACzD,OAAO;AAAA,UACT;AAAA,UACA,IAAI,CAAC,YAAY,QAAQ,YAAY,cAAc;AAAA,YAAG,OAAO;AAAA,UAC7D,IAAI,CAAC,cAAc,QAAQ,YAAY,gBAAgB;AAAA,YACtD,OAAO;AAAA,UACR,IAAI,OAAO,SAAS,wBAAwB;AAAA,YAC3C,IAAI,OAAO,cAAc;AAAA,cACxB,IACC,OAAO,KAAK,kBAAkB,YAC9B,CAAC,aAAa,KAAK,eAAe,OAAO,YAAY;AAAA,gBAErD,OAAO;AAAA,YACT;AAAA,YACA,IAAI,OAAO,QAAQ;AAAA,cAClB,IACC,OAAO,KAAK,WAAW,YACvB,CAAC,aAAa,KAAK,QAAQ,OAAO,MAAM;AAAA,gBAExC,OAAO;AAAA,YACT;AAAA,YACA,IAAI,OAAO,QAAQ;AAAA,cAClB,IACC,OAAO,KAAK,WAAW,YACvB,CAAC,aAAa,KAAK,QAAQ,OAAO,MAAM;AAAA,gBAExC,OAAO;AAAA,YACT;AAAA,UACD;AAAA,UACA,IAAI,OAAO,SAAS,aAAa,OAAO,SAAS;AAAA,YAChD,IACC,OAAO,KAAK,aAAa,YACzB,CAAC,aAAa,KAAK,UAAU,OAAO,OAAO;AAAA,cAE3C,OAAO;AAAA,UACT;AAAA,UACA,KACE,OAAO,SAAS,aAChB,OAAO,SAAS,gBAChB,OAAO,SAAS,iBACjB,OAAO,KACN;AAAA,YACD,IACC,OAAO,KAAK,aAAa,YACzB,CAAC,aAAa,KAAK,UAAU,OAAO,GAAG;AAAA,cAEvC,OAAO;AAAA,UACT;AAAA,UACA,OAAO;AAAA,SACP;AAAA,QACD,IAAI,QAAQ,SAAS;AAAA,UAAG,QAAQ,KAAK,EAAE,IAAI,QAAQ,QAAQ,CAAC;AAAA,MAC7D;AAAA,MACA;AAAA,IACD;AAAA,SAGK,eAAe;AAAA,MACnB,WAAW,MAAM,cAAc;AAAA,QAC9B,MAAM,WAAW,WAAW,IAAI,GAAG,KAAK,KAAK,CAAC;AAAA,QAC9C,MAAM,UAAU,SAAS,OAAO,CAAC,MAAM;AAAA,UACtC,IAAI,EAAE,SAAS,0BAA0B,EAAE,SAAS;AAAA,YACnD,OAAO;AAAA,UACR,MAAM,OAAO,EAAE;AAAA,UACf,IAAI,CAAC;AAAA,YAAM,OAAO;AAAA,UAClB,IAAI,KAAK,UAAU;AAAA,YAAS,OAAO;AAAA,UAEnC,MAAM,aAAa,gBAAgB,IAAI;AAAA,UACvC,IAAI,OAAO,YAAY;AAAA,YACtB,IAAI,CAAC,cAAc,CAAC,SAAS,YAAY,OAAO,UAAU;AAAA,cACzD,OAAO;AAAA,UACT;AAAA,UACA,IAAI,CAAC,YAAY,QAAQ,YAAY,cAAc;AAAA,YAAG,OAAO;AAAA,UAC7D,IAAI,CAAC,cAAc,QAAQ,YAAY,gBAAgB;AAAA,YACtD,OAAO;AAAA,UACR,OAAO,iBAAiB,QAAQ,GAAG,IAAI;AAAA,SACvC;AAAA,QAED,IAAI,QAAQ,SAAS,GAAG;AAAA,UACvB,QAAQ,KAAK,EAAE,IAAI,QAAQ,QAAQ,CAAC;AAAA,QACrC;AAAA,MACD;AAAA,MACA;AAAA,IACD;AAAA;AAAA,EAGD,OAAO;AAAA;AAOD,SAAS,YAAY,CAC3B,SACA,cACA,QACA,iBAAiC,IAAI,KACrC,mBAAqC,IAAI,KAEzC,WAA0B,CAAC,GACb;AAAA,EAEd,MAAM,aAAa,IAAI;AAAA,EACvB,WAAW,SAAS,QAAQ;AAAA,IAC3B,MAAM,OAAO,WAAW,IAAI,MAAM,KAAK,KAAK,CAAC;AAAA,IAC7C,KAAK,KAAK,KAAK;AAAA,IACf,WAAW,IAAI,MAAM,OAAO,IAAI;AAAA,EACjC;AAAA,EACA,MAAM,eAAe,IAAI;AAAA,EACzB,WAAW,SAAS,UAAU;AAAA,IAC7B,MAAM,OAAO,aAAa,IAAI,MAAM,KAAK,KAAK,CAAC;AAAA,IAC/C,KAAK,KAAK,KAAK;AAAA,IACf,aAAa,IAAI,MAAM,OAAO,IAAI;AAAA,EACnC;AAAA,EAEA,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,UAAuB,CAAC;AAAA,EAE9B,YAAY,YAAY,WAAW,OAAO,QAAQ,OAAO,GAAG;AAAA,IAC3D,MAAM,UAAU,YACf,QACA,cACA,YACA,gBACA,kBACA,YACD;AAAA,IACA,WAAW,SAAS,SAAS;AAAA,MAC5B,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS;AAAA,MACvC,IAAI,CAAC,KAAK,IAAI,SAAS,GAAG;AAAA,QACzB,KAAK,IAAI,SAAS;AAAA,QAClB,QAAQ,KAAK,KAAK,OAAO,WAAW,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;;;AC3jBR;AACA;AACA;AAGO,IAAM,8BAA8B;AAY3C,SAAS,QAAQ,CAAC,OAAyB;AAAA,EAC1C,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,MAAM,SAAS;AAAA,EACrD,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,MAAM,IAAI,QAAQ;AAAA,EACnD,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,MAAM,MAA+B,CAAC;AAAA,IACtC,YAAY,GAAG,MAAM,OAAO,QAAQ,KAAgC,GAAG;AAAA,MACtE,IAAI,KAAK,SAAS,CAAC;AAAA,IACpB;AAAA,IACA,OAAO;AAAA,EACR;AAAA,EACA,OAAO;AAAA;AAKR,eAAe,2BAA2B,CACzC,OACgB;AAAA,EAChB,IAAI;AAAA,IACH,MAAM,KAAK,YAAY;AAAA,IACvB,MAAM,SAAS,SAAS,MAAM,aAAa;AAAA,IAC3C,MAAM,GACJ,WAAW,qBAAqB,EAChC,OAAO;AAAA,MACP,eAAe,MAAM;AAAA,MACrB,aAAa,MAAM;AAAA,MACnB,cAAc,MAAM;AAAA,MACpB,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM;AAAA,MACd,gBAAgB;AAAA,IACjB,CAAC,EACA,QAAQ;AAAA,IAGV,MAAM;AAAA;AAAA;AAAA;AAAA,4BAIoB,MAAM;AAAA;AAAA,aAErB;AAAA;AAAA,IAET,QAAQ,EAAE;AAAA,IACX,OAAO,KAAK;AAAA,IACb,OAAO,KAAK,oCAAoC;AAAA,MAC/C,UAAU,MAAM;AAAA,MAChB,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IACvD,CAAC;AAAA;AAAA;AAIH,IAAI,WAA8B;AAWlC,eAAsB,oBAAoB,CACzC,OACgB;AAAA,EAChB,MAAM,SAAS,KAAK;AAAA;;;AP9DrB,IAAM,0BAA0B;AAyBhC,SAAS,kBAAkB,CAAC,MAA0B;AAAA,EACrD,IAAI,SAAS;AAAA,EACb,IAAI,OAAO,WAAW,UAAU;AAAA,IAC/B,IAAI;AAAA,MACH,SAAS,KAAK,MAAM,MAAM;AAAA,MACzB,MAAM;AAAA,MACP,OAAO,CAAC;AAAA;AAAA,EAEV;AAAA,EACA,IAAI,CAAC,MAAM,QAAQ,MAAM;AAAA,IAAG,OAAO,CAAC;AAAA,EACpC,OAAO,OAAO,IAAI,CAAC,QAAQ;AAAA,IAC1B,IAAI,OAAO,QAAQ;AAAA,MAAU,OAAO,mBAAmB,GAAG;AAAA,IAC1D,OAAO;AAAA,GACP;AAAA;AAMF,SAAS,eAAe,CAAC,KAAuB;AAAA,EAC/C,IAAI,OAAO,QAAQ,YAAY,IAAI,SAAS,GAAG;AAAA,IAC9C,OAAO,mBAAmB,GAAG;AAAA,EAC9B;AAAA,EACA,OAAO;AAAA;AAIR,SAAS,YAAY,CAAC,KAAsB;AAAA,EAC3C,IAAI,IAAI,WAAW,IAAI,KAAK,IAAI,SAAS,GAAG;AAAA,IAC3C,OAAO,mBAAmB,GAAG;AAAA,EAC9B;AAAA,EACA,OAAO;AAAA;AAUR,SAAS,cAAc,CAAC,KAAa,SAA2B;AAAA,EAC/D,IAAI,YAAY,aAAa,CAAC,IAAI,WAAW,IAAI,KAAK,IAAI,UAAU,GAAG;AAAA,IACtE,OAAO,aAAa,GAAG;AAAA,EACxB;AAAA,EACA,IAAI;AAAA,IAEH,MAAM,SAAS;AAAA,IAIf,OAAO,OAAO,SAAS,eAAc,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,IACjD,MAAM;AAAA,IACP,OAAO,aAAa,GAAG;AAAA;AAAA;AAKzB,SAAS,WAAW,CAAC,QAAwB,MAAyB;AAAA,EACrE,MAAM,MAAM,SAAS,SAAS,OAAO,MAAM;AAAA,EAC3C,MAAM,MAAM,KAAK,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAAA,EAClD,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC;AAAA;AAItC,SAAS,UAAU,CAAC,KAAsB;AAAA,EACzC,IAAI,OAAO,QAAQ;AAAA,IAAU,OAAO;AAAA,EACpC,IAAI,OAAO,QAAQ;AAAA,IAAU,OAAO,OAAO,GAAG;AAAA,EAC9C,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC5B,IAAI;AAAA,MACH,OAAO,OAAO,GAAG;AAAA,MAChB,MAAM;AAAA,MACP,OAAO;AAAA;AAAA,EAET;AAAA,EACA,OAAO;AAAA;AAUD,SAAS,sBAAsB,CACrC,QACA,IACsC;AAAA,EACtC,MAAM,MAAM,OAAO;AAAA,EACnB,MAAM,SAAS,GAAG;AAAA,EAClB,IAAI,CAAC,OAAO,CAAC;AAAA,IAAQ;AAAA,EACrB,MAAM,KAAK,IAAI,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EACvD,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI;AAAA,IAAG;AAAA,EAEpC,IAAI,UAAmB,GAAG;AAAA,EAC1B,IAAI,OAAO,YAAY,UAAU;AAAA,IAChC,IAAI;AAAA,MACH,UAAU,KAAK,MAAM,OAAO;AAAA,MAC3B,MAAM;AAAA,MACP;AAAA;AAAA,EAEF;AAAA,EACA,IAAI,CAAC,MAAM,QAAQ,OAAO;AAAA,IAAG;AAAA,EAK7B,MAAM,YAAY;AAAA,EAIlB,MAAM,QAAiC,CAAC;AAAA,EACxC,GAAG,KAAK,QAAQ,CAAC,KAAK,MAAM;AAAA,IAC3B,MAAM,MAAM,QAAQ;AAAA,IACpB,IAAI,OAAO,QAAQ;AAAA,MAAU;AAAA,IAC7B,IAAI;AAAA,MACH,MAAM,QAAQ,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI;AAAA,MACpD,MAAM,YAAY,IAAI,IAAI,KAAK,UAAU,IAAI,MAAM,eAAc,KAAK,CAAC;AAAA,MACtE,MAAM;AAAA,GAGR;AAAA,EACD,OAAO;AAAA;AAOD,SAAS,iBAAiB,CAChC,QACA,IACA,OAC0B;AAAA,EAC1B,MAAM,SAAS;AAAA,IACd,MAAM,GAAG;AAAA,IACT,QAAQ,GAAG;AAAA,IACX,MAAM,GAAG;AAAA,IACT,QAAQ,GAAG;AAAA,IACX,YAAY,GAAG,eAAe;AAAA,IAC9B,cAAc,GAAG,iBAAiB;AAAA,EACnC;AAAA,EAGA,MAAM,cAAc,mBAAmB,GAAG,aAAa;AAAA,EACvD,MAAM,gBAAgB,gBAAgB,GAAG,UAAU;AAAA,EAGnD,IAAI,CAAC,OAAO;AAAA,IACX,QAAQ,OAAO;AAAA,WACT,iBAAiB;AAAA,QACrB,MAAM,QAAQ,uBAAuB,QAAQ,EAAE;AAAA,QAC/C,OAAO;AAAA,UACN,MAAM;AAAA,UACN,YAAY,GAAG,eAAe;AAAA,UAC9B,cAAc,GAAG,iBAAiB;AAAA,UAClC,QAAQ,GAAG;AAAA,UACX,MAAM;AAAA,aACF,UAAU,YAAY,EAAE,MAAM,IAAI,CAAC;AAAA,UACvC,QAAQ;AAAA,UACR,WAAW,GAAG,cAAc;AAAA,UAC5B,IAAI;AAAA,QACL;AAAA,MACD;AAAA,WACK;AAAA,QACJ,OAAO;AAAA,UACN,YAAY,GAAG,eAAe;AAAA,UAC9B,UAAU,GAAG;AAAA,UACb,IAAI;AAAA,QACL;AAAA;AAAA,QAEA,OAAO,EAAE,IAAI,OAAO;AAAA;AAAA,EAEvB;AAAA,EAGA,MAAM,UAAU,gBAAgB,MAAM,IAAI;AAAA,EAE1C,QAAQ,OAAO;AAAA,SAET;AAAA,MACJ,OAAO;AAAA,QACN,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,QACnB,QAAQ,WAAW,QAAQ,MAAM;AAAA,QACjC,iBAAiB,QAAQ;AAAA,QACzB,IAAI;AAAA,MACL;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,WAAW,QAAQ;AAAA,QACnB,QAAQ,WAAW,QAAQ,MAAM;AAAA,QACjC,iBAAiB,QAAQ;AAAA,QACzB,IAAI;AAAA,MACL;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,QAAQ,QAAQ;AAAA,QAChB,QAAQ,WAAW,QAAQ,MAAM;AAAA,QACjC,iBAAiB,QAAQ;AAAA,QACzB,IAAI;AAAA,MACL;AAAA,SAOI;AAAA,MACJ,OAAO;AAAA,QACN,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,QACnB,SAAS,QAAQ,aAAa,QAAQ;AAAA,QACtC,iBAAiB,QAAQ;AAAA,QACzB,IAAI;AAAA,MACL;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,WAAW,QAAQ;AAAA,QACnB,SAAS,QAAQ,aAAa,QAAQ;AAAA,QACtC,iBAAiB,QAAQ;AAAA,QACzB,IAAI;AAAA,MACL;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,QAAQ,QAAQ;AAAA,QAChB,SAAS,QAAQ,aAAa,QAAQ;AAAA,QACtC,iBAAiB,QAAQ;AAAA,QACzB,IAAI;AAAA,MACL;AAAA,SAGI;AAAA,MACJ,OAAO;AAAA,QACN,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,QACnB,QAAQ,WAAW,QAAQ,MAAM;AAAA,QACjC,MAAM,QAAQ,QAAQ;AAAA,QACtB,IAAI;AAAA,MACL;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,WAAW,QAAQ;AAAA,QACnB,QAAQ,WAAW,QAAQ,MAAM;AAAA,QACjC,IAAI;AAAA,MACL;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,QAAQ,QAAQ;AAAA,QAChB,QAAQ,WAAW,QAAQ,MAAM;AAAA,QACjC,IAAI;AAAA,MACL;AAAA,SACI;AAAA,MACJ,OAAO;AAAA,QACN,eAAe,QAAQ;AAAA,QACvB,cAAc,WAAW,QAAQ,aAAa;AAAA,QAC9C,cAAc,WAAW,QAAQ,aAAa;AAAA,QAC9C,IAAI;AAAA,MACL;AAAA,SAGI,eAAe;AAAA,MAMnB,MAAM,SAAU,MAAM,MAAyC;AAAA,MAC/D,MAAM,WACL,OAAO,WAAW,YAAY,OAAO,WAAW,IAAI,IACjD,mBAAmB,MAAM,IACzB,QAAQ;AAAA,MAEZ,MAAM,aACL,YAAY,OAAO,aAAa,YAAY,CAAC,MAAM,QAAQ,QAAQ,IAC/D,WACD;AAAA,MACJ,MAAM,QAAQ,YAAY,QACvB,OAAO,WAAW,KAAK,IACrB,QAAQ,SAAoB;AAAA,MAEjC,QAAQ,OAAO,MAAM,SAAS,cAAc,CAAC;AAAA,MAC7C,MAAM,OACL,OAAO,KAAK,IAAI,EAAE,SAAS,IACvB,aAAa,IAAI,IAClB,YAAY,OAAO,aAAa,WAC/B,WACA,CAAC;AAAA,MACN,OAAO;AAAA,QACN,YAAY,gBAAgB,OAAO,KAAK,GAAG,eAAe;AAAA,QAC1D;AAAA,QACA,MAAM,QAAQ,CAAC;AAAA,QACf,IAAI;AAAA,MACL;AAAA,IACD;AAAA,SAGK,iBAAiB;AAAA,MAKrB,MAAM,WAAY,MAAM,MACrB;AAAA,MACH,MAAM,aACL,OAAO,aAAa,YAAY,SAAS,WAAW,IAAI,IACrD,KAAK,SAAS,OAAO,mBAAmB,QAAQ,EAAE,IAClD;AAAA,MACJ,MAAM,QAAQ,uBAAuB,QAAQ,EAAE;AAAA,MAC/C,OAAO;AAAA,WACH;AAAA,QACH,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,QAClB,YAAY,GAAG,eAAe;AAAA,QAC9B,cAAc,GAAG,iBAAiB;AAAA,QAClC,QAAQ,GAAG;AAAA,QACX,MAAM;AAAA,WACF,UAAU,YAAY,EAAE,MAAM,IAAI,CAAC;AAAA,QACvC,QAAQ;AAAA,QACR,WAAW,GAAG,cAAc;AAAA,QAC5B,IAAI;AAAA,MACL;AAAA,IACD;AAAA,SAGK;AAAA,MACJ,OAAO;AAAA,QACN,YAAY,GAAG,eAAe;AAAA,QAC9B,UAAU,GAAG;AAAA,QACb,IAAI;AAAA,MACL;AAAA,SAII,wBAAwB;AAAA,MAC5B,MAAM,OAAQ,MAAM,QAAQ,CAAC;AAAA,MAC7B,MAAM,UAAU,MAAM,QAAQ,KAAK,aAAa,IAC7C,KAAK,cAAc,OAAO,CAAC,MAAmB,OAAO,MAAM,QAAQ,IACnE,CAAC;AAAA,MACJ,OAAO;AAAA,QACN,YAAY,gBAAgB,IAAI,KAAK;AAAA,QACrC,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,QACxD,QAAQ,OAAO,KAAK,WAAW,WAAW,KAAK,SAAS;AAAA,QACxD,cACC,OAAO,KAAK,kBAAkB,WAAW,KAAK,gBAAgB;AAAA,QAC/D,MAAM,mBAAmB,OAAO;AAAA,QAChC,WAAW;AAAA,QACX,WAAW,OAAO,KAAK,eAAe,WAAW,KAAK,aAAa;AAAA,QACnE,QAAQ,gBAAgB,KAAK,UAAU;AAAA,QACvC,IAAI;AAAA,MACL;AAAA,IACD;AAAA,SACK,WAAW;AAAA,MACf,MAAM,OAAQ,MAAM,QAAQ,CAAC;AAAA,MAC7B,MAAM,WAAW,OAAO,KAAK,cAAc,WAAW,KAAK,YAAY;AAAA,MACvE,MAAM,UAAU,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW;AAAA,MACpE,MAAM,MAAM,SAAS,SAAS,OAAO,MAAM;AAAA,MAC3C,MAAM,UAAU,KAAK,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,GAAG;AAAA,MACjE,OAAO;AAAA,QACN,YAAY,gBAAgB,IAAI,KAAK;AAAA,QACrC;AAAA,QACA;AAAA,QACA,OAAO,eAAe,UAAU,OAAO;AAAA,QACvC,IAAI;AAAA,MACL;AAAA,IACD;AAAA,SACK;AAAA,SACA,cAAc;AAAA,MAClB,MAAM,OAAQ,MAAM,QAAQ,CAAC;AAAA,MAC7B,MAAM,SAAS,OAAO,KAAK,YAAY,WAAW,KAAK,UAAU;AAAA,MACjE,MAAM,WAAW,OAAO,KAAK,cAAc,WAAW,KAAK,YAAY;AAAA,MACvE,MAAM,MAAM,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW;AAAA,MAChE,OAAO,SAAS,aAAa,YAAY,QAAQ,GAAG;AAAA,MACpD,OAAO;AAAA,QACN,YAAY,gBAAgB,IAAI,KAAK;AAAA,QACrC;AAAA,QACA;AAAA,QACA,KAAK,eAAe,QAAQ,OAAO;AAAA,QACnC;AAAA,QACA,OAAO,eAAe,UAAU,SAAS;AAAA,QACzC,IAAI;AAAA,MACL;AAAA,IACD;AAAA,SACK,cAAc;AAAA,MAClB,MAAM,OAAQ,MAAM,QAAQ,CAAC;AAAA,MAC7B,MAAM,SAAS,OAAO,KAAK,YAAY,WAAW,KAAK,UAAU;AAAA,MACjE,MAAM,MAAM,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW;AAAA,MAChE,OAAO;AAAA,QACN,YAAY,gBAAgB,IAAI,KAAK;AAAA,QACrC;AAAA,QACA;AAAA,QACA,KAAK,eAAe,QAAQ,YAAY,QAAQ,GAAG,EAAE,EAAE;AAAA,QACvD,IAAI;AAAA,MACL;AAAA,IACD;AAAA;AAAA,MAIC,OAAO;AAAA,WACH;AAAA,QACH,YAAY,MAAM;AAAA,QAClB,IAAI;AAAA,MACL;AAAA;AAAA;AAYH,eAAsB,WAAW,CAChC,UACA,SACA,KACA,MACqB;AAAA,EACrB,IAAI,YAAY;AAAA,EAChB,IAAI,SAAS;AAAA,EACb,IAAI,UAAU;AAAA,EACd,IAAI,YAAY;AAAA,EAChB,MAAM,YAAY,MAAM,kBAAkB;AAAA,EAG1C,MAAM,eAAe,IAAI;AAAA,EACzB,IAAI,CAAC,MAAM,QAAQ,SAAS,OAAO,GAAG;AAAA,IACrC,YAAY,MAAM,WAAW,OAAO,QACnC,SAAS,OACV,GAAG;AAAA,MACF,aAAa,IAAI,MAAM,MAAM;AAAA,IAC9B;AAAA,EACD;AAAA,EAaA,MAAM,QAAwB,CAAC;AAAA,EAC/B,aAAa,IAAI,QAAQ,gBAAgB,SAAS;AAAA,IACjD,IAAI,OAAO,WAAW,GAAG;AAAA,MACxB,MAAM,KAAK,EAAE,IAAI,YAAY,OAAO,KAAK,CAAC;AAAA,IAC3C,EAAO;AAAA,MACN,WAAW,SAAS;AAAA,QAAQ,MAAM,KAAK,EAAE,IAAI,YAAY,MAAM,CAAC;AAAA;AAAA,EAElE;AAAA,EAGA,MAAM,YAAY,CAAC,MAA8B,GAAG,UAAU,OAAO,IAAI;AAAA,EACzE,MAAM,KACL,CAAC,GAAG,OACF,EAAE,GAAG,YAAY,MAAM,EAAE,GAAG,YAAY,MACzC,UAAU,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,MACrC,EAAE,OAAO,eAAe,OAAO,EAAE,OAAO,eAAe,GAC1D;AAAA,EAEA,aAAa,IAAI,OAAO,gBAAgB,OAAO;AAAA,IAC9C,IAAI,UAAU,WAAW;AAAA,MACxB,QAAO,MACN,+DACA;AAAA,QACC,UAAU,SAAS;AAAA,QACnB;AAAA,QACA;AAAA,MACD,CACD;AAAA,MACA,OAAO;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,WACI,UAAU,IAAI,EAAE,QAAQ,IAAI,CAAC;AAAA,MAClC;AAAA,IACD;AAAA,IAEA,MAAM,SAAS,aAAa,IAAI,UAAU;AAAA,IAC1C,MAAM,UAAU,SAAS,SAAS,eAAe;AAAA,IACjD,IAAI,CAAC,SAAS;AAAA,MACb,QAAO,KAAK,+BAA+B;AAAA,QAC1C,UAAU,SAAS;AAAA,QACnB;AAAA,QACA,MAAM,GAAG;AAAA,MACV,CAAC;AAAA,MACD;AAAA,IACD;AAAA,IAEA,IAAI,MAAM;AAAA,MACT,MAAM,GAAG;AAAA,MACT,QAAQ,GAAG;AAAA,MACX,MAAM,GAAG;AAAA,MACT,QAAQ,GAAG;AAAA,MACX,YAAY,GAAG,eAAe;AAAA,MAC9B,cAAc,GAAG,iBAAiB;AAAA,IACnC,CAAC;AAAA,IAKD,MAAM,aAAa,IAAI,cAAc;AAAA,IACrC,IAAI;AAAA,MACH,IAAI;AAAA,MACJ,IAAI,UAAU,MAAM;AAAA,QAEnB,UAAU,SACP,kBAAkB,QAAQ,IAAI,IAAI,IAClC;AAAA,UACA,IAAI;AAAA,YACH,MAAM,GAAG;AAAA,YACT,QAAQ,GAAG;AAAA,YACX,MAAM,GAAG;AAAA,YACT,QAAQ,GAAG;AAAA,YACX,YAAY,GAAG;AAAA,YACf,cAAc,GAAG;AAAA,UAClB;AAAA,QACD;AAAA,MACH,EAAO,SAAI,QAAQ;AAAA,QAClB,UAAU,kBAAkB,QAAQ,IAAI,KAAK;AAAA,MAC9C,EAAO;AAAA,QACN,MAAM,UAAU,gBAAgB,MAAM,IAAI;AAAA,QAC1C,UAAU;AAAA,aACN;AAAA,UACH,UAAU,MAAM;AAAA,UAChB,YAAY,MAAM;AAAA,UAClB,aAAa,MAAM;AAAA,UACnB,IAAI;AAAA,YACH,MAAM,GAAG;AAAA,YACT,QAAQ,GAAG;AAAA,YACX,MAAM,GAAG;AAAA,YACT,QAAQ,GAAG;AAAA,YACX,YAAY,GAAG;AAAA,YACf,cAAc,GAAG;AAAA,UAClB;AAAA,QACD;AAAA;AAAA,MAKD,IACC,UAAU,QACV,QAAQ,SAAS,iBACjB,OAAO,SACP,QAAQ,UAAU,OAAO,OACxB;AAAA,QACD;AAAA,MACD;AAAA,MACA;AAAA,MAOA,IAAI,UAAU,QAAQ,QAAQ,SAAS,iBAAiB,OAAO,QAAQ;AAAA,QACtE,MAAM,eAAe;AAAA,QAIrB,MAAM,UAAU,qBACf,OAAO,QACP,aAAa,SAAS,IACtB,aAAa,QAAQ,CAAC,CACvB;AAAA,QACA,IAAI,CAAC,QAAQ,IAAI;AAAA,UAChB;AAAA,UACA,QAAO,KAAK,uDAAuD;AAAA,YAClE,UAAU,SAAS;AAAA,YACnB;AAAA,YACA,OAAO,aAAa;AAAA,YACpB,MAAM,GAAG;AAAA,YACT,QAAQ,QAAQ;AAAA,UACjB,CAAC;AAAA,UAEI,qBAAqB;AAAA,YACzB,cAAc,SAAS;AAAA,YACvB;AAAA,YACA,aAAa,IAAI,MAAM;AAAA,YACvB,MAAM,GAAG;AAAA,YACT,QAAQ,QAAQ;AAAA,YAChB,eAAe;AAAA,cACd,OAAO,aAAa,SAAS;AAAA,cAC7B,MAAM,aAAa,QAAQ,CAAC;AAAA,YAC7B;AAAA,UACD,CAAC;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,MAEA,MAAM,QAAQ,SAAS,GAAG;AAAA,MAC1B;AAAA,MACC,OAAO,KAAK;AAAA,MAKb,IAAI,YAAY,GAAG;AAAA,QAAG,MAAM;AAAA,MAC5B,IAAI,WAAW,UAAU;AAAA,MACzB;AAAA,MACA,QAAO,MAAM,0BAA0B;AAAA,QACtC,UAAU,SAAS;AAAA,QACnB;AAAA,QACA,MAAM,GAAG;AAAA,WACL,UAAU,OAAO,EAAE,SAAS,MAAM,IAAI,WAAW,MAAM,KAAK,IAAI,CAAC;AAAA,QACrE,OAAO,gBAAgB,GAAG;AAAA,MAC3B,CAAC;AAAA;AAAA,EAEH;AAAA,EAEA,OAAO,EAAE,WAAW,QAAQ,cAAe,UAAU,IAAI,EAAE,QAAQ,IAAI,CAAC,EAAG;AAAA;;;AQhnBrE,SAAS,UAAU,CACzB,KACA,MACA,SAAsB,CAAC,GACT;AAAA,EACd,OAAO,aACN,IAAI,SACJ,KAAK,KACL,KAAK,QACL,OAAO,SAAS,IAAI,KACpB,OAAO,WAAW,IAAI,KACtB,KAAK,YAAY,CAAC,CACnB;AAAA;AAKD,eAAsB,UAAU,CAC/B,KACA,MACA,KACA,SAAsB,CAAC,GACoB;AAAA,EAC3C,MAAM,UAAU,WAAW,KAAK,MAAM,MAAM;AAAA,EAC5C,IAAI,QAAQ,WAAW,GAAG;AAAA,IACzB,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,EAAE;AAAA,EAC5D;AAAA,EACA,OAAO,EAAE,SAAS,QAAQ,WAAY,MAAM,YAAY,KAAK,SAAS,GAAG,EAAG;AAAA;;;AChE7E,yBAAS,8BAAc;;;ACAvB,mBAAS;AACT,gBAAwC;;;ACFxC,uBAAS;;;ACCT;AAaO,SAAS,YAAY,CAAC,MAAsB;AAAA,EAClD,IAAI,sBAAsB,KAAK,IAAI;AAAA,IAAG,OAAO;AAAA,EAC7C,OAAO,IAAI,KAAK,QAAQ,MAAM,IAAI;AAAA;AAK5B,SAAS,YAAY,CAAC,MAAsB;AAAA,EAClD,OAAO,KAAK,QAAQ,gBAAgB,CAAC,GAAG,MAAc,EAAE,YAAY,CAAC;AAAA;AAM/D,SAAS,UAAU,CAAC,MAAsB;AAAA,EAChD,MAAM,QAAQ,aAAa,IAAI;AAAA,EAC/B,OAAO,MAAM,OAAO,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC;AAAA;;;ADtB9C,IAAM,WAAuC;AAAA,EACnD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,EACX,OAAO;AACR;AAiBA,IAAM,kBAAkB;AACxB,SAAS,aAAa,CAAC,MAAsB;AAAA,EAC5C,IAAI,KAAK,UAAU;AAAA,IAAiB,OAAO;AAAA,EAC3C,MAAM,OAAO,YAAW,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC;AAAA,EACvE,OAAO,GAAG,KAAK,MAAM,GAAG,kBAAkB,KAAK,SAAS,CAAC,KAAK;AAAA;AASxD,SAAS,yBAAyB,CACxC,YACA,WACA,SACA,MACuC;AAAA,EACvC,MAAM,eAAe,MAAM,eAAe,kBAAkB;AAAA,EAC5D,MAAM,YAAY,GAAG,aAAa,UAAU,KAAK,aAAa,SAAS;AAAA,EACvE,MAAM,QAAQ,OAAO,cAAc,aAAa;AAAA,EAChD,MAAM,YAAY,cACjB,OAAO,cAAc,aAAa,YACnC;AAAA,EACA,MAAM,MAAM,aAAa,OAAO;AAAA,EAChC,MAAM,KAAK,aAAa,KAAK;AAAA,EAC7B,OAAO;AAAA,IACN,QAAQ;AAAA,MACP,eAAe,8BAA8B,aAAa,KAAK,QAAQ,cAAc;AAAA,MACrF,eAAe,8BAA8B,aAAa,SAAS,QAAQ,cAAc,QAAQ;AAAA,IAClG;AAAA,IACA,MAAM;AAAA,MACL,aAAa,0BAA0B,aAAa,UAAU,KAAK,aAAa,KAAK;AAAA,MACrF,aAAa,0BAA0B,aAAa,UAAU,KAAK,aAAa,SAAS;AAAA,IAC1F;AAAA,EACD;AAAA;AAGD,SAAS,oBAAoB,CAAC,OAAwB;AAAA,EACrD,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,IACjD,OAAO,OAAO,KAAK;AAAA,EACpB,IAAI,OAAO,UAAU;AAAA,IAAW,OAAO,QAAQ,SAAS;AAAA,EACxD,OAAO,IAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,IAAI;AAAA;AAKrC,SAAS,cAAc,CAAC,UAAkC;AAAA,EAChE,OAAO,OAAO,OAAO,SAAS,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM;AAAA;AASzD,SAAS,YAAY,CAC3B,YACA,WACA,UACW;AAAA,EACX,MAAM,gBAAgB,GAAG,aAAa,UAAU,KAAK,aAAa,SAAS;AAAA,EAC3E,MAAM,aAAuB,CAAC;AAAA,EAE9B,MAAM,aAAuB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,YAAY,SAAS,QAAQ,OAAO,QAAQ,SAAS,OAAO,GAAG;AAAA,IAC9D,MAAM,UAAU,SAAS,IAAI;AAAA,IAC7B,MAAM,WAAW,IAAI,WAAW,KAAK;AAAA,IACrC,IAAI,SAAS,GAAG,aAAa,OAAO,KAAK,UAAU;AAAA,IACnD,IAAI,IAAI,YAAY,WAAW;AAAA,MAC9B,UAAU,YAAY,qBAAqB,IAAI,OAAO;AAAA,IACvD;AAAA,IAIA,IAAI,IAAI,SAAS,QAAQ;AAAA,MACxB,UAAU,WAAW,aAAa,OAAO;AAAA,IAC1C;AAAA,IACA,WAAW,KAAK,MAAM;AAAA,EACvB;AAAA,EACA,WAAW,KACV,8BAA8B;AAAA,IAAsB,WAAW,KAAK;AAAA,GAAO;AAAA,EAC5E;AAAA,EAGA,WAAW,KACV,8BAA8B,aAAa,OAAO,cAAc,wBAAwB,QAAQ,+BACjG;AAAA,EACA,WAAW,KACV,8BAA8B,aAAa,OAAO,cAAc,iBAAiB,QAAQ,wBAC1F;AAAA,EAQA,YAAY,SAAS,QAAQ,OAAO,QAAQ,SAAS,OAAO,GAAG;AAAA,IAC9D,IAAI,IAAI,SAAS;AAAA,MAChB,WAAW,KACV,GAAG,0BAA0B,YAAY,WAAW,OAAO,EAAE,MAC9D;AAAA,IACD;AAAA,EACD;AAAA,EAGA,YAAY,SAAS,QAAQ,OAAO,QAAQ,SAAS,OAAO,GAAG;AAAA,IAC9D,IAAI,IAAI,QAAQ;AAAA,MACf,WAAW,KACV,8BAA8B,aAAa,OAAO,cAAc,aAAa,cAAc,QAAQ,4BAA4B,aAAa,OAAO,iBACpJ;AAAA,IACD;AAAA,EACD;AAAA,EAGA,IAAI,SAAS,SAAS;AAAA,IACrB,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,QAAQ,KAAK;AAAA,MAEjD,MAAM,OAAO,SAAS,QAAQ;AAAA,MAC9B,MAAM,UAAU,aACf,OAAO,cAAc,uBAAuB,GAC7C;AAAA,MACA,WAAW,KACV,8BAA8B,cAAc,kBAAkB,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,IAC/F;AAAA,IACD;AAAA,EACD;AAAA,EAGA,IAAI,SAAS,YAAY;AAAA,IACxB,SAAS,IAAI,EAAG,IAAI,SAAS,WAAW,QAAQ,KAAK;AAAA,MAEpD,MAAM,OAAO,SAAS,WAAW;AAAA,MACjC,MAAM,iBAAiB,aACtB,MAAM,cAAc,aAAa,KAAK,KAAK,GAAG,GAC/C;AAAA,MACA,WAAW,KACV,eAAe,gCAAgC,0BAA0B,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,IAC1G;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAUD,SAAS,cAAc,CAAC,YAA8B;AAAA,EAC5D,OAAO;AAAA,IACN,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQ9B,kCAAkC,gCAAgC;AAAA,EACnE;AAAA;AAWM,SAAS,cAAc,CAAC,YAA8B;AAAA,EAC5D,OAAO;AAAA,IACN,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAO9B,kCAAkC,gCAAgC;AAAA,EACnE;AAAA;AAQM,SAAS,mBAAmB,CAClC,KACA,oBACe;AAAA,EACf,MAAM,aAAa,sBAAsB,aAAa,IAAI,IAAI;AAAA,EAC9D,MAAM,aAAuB,CAAC;AAAA,EAG9B,MAAM,YAAY,OAAO,OAAO,IAAI,MAAM,EAAE,KAAK,CAAC,UACjD,OAAO,OAAO,MAAM,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,CACtD;AAAA,EAEA,IAAI,WAAW;AAAA,IACd,WAAW,KAAK,wCAAwC;AAAA,EACzD;AAAA,EAGA,WAAW,KAAK,+BAA+B,YAAY;AAAA,EAG3D,YAAY,WAAW,aAAa,OAAO,QAAQ,IAAI,MAAM,GAAG;AAAA,IAC/D,WAAW,KAAK,GAAG,aAAa,YAAY,WAAW,QAAQ,CAAC;AAAA,EACjE;AAAA,EAGA,WAAW,KAAK,GAAG,eAAe,UAAU,CAAC;AAAA,EAE7C,IACC,OAAO,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,KAChC,CAAC,QAAS,IAA8B,YAAY,SACrD,GACC;AAAA,IACD,WAAW,KAAK,GAAG,eAAe,UAAU,CAAC;AAAA,EAC9C;AAAA,EAIA,MAAM,YAAY,KAAK,UACtB;AAAA,IACC,MAAM,IAAI;AAAA,IACV,QAAQ,IAAI;AAAA,IACZ,SAAS,IAAI;AAAA,EACd,GACA,CAAC,MAAM,UAAW,OAAO,UAAU,WAAW,MAAM,SAAS,IAAI,KAClE;AAAA,EAGA,MAAM,OAAO,YAAW,QAAQ,EAAE,OAAO,SAAS,EAAE,OAAO,KAAK;AAAA,EAEhE,OAAO,EAAE,YAAY,KAAK;AAAA;;;AE3R3B,4BAAS;AACT;AACA;AACA;AAEA,mBAAS;AACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA;AAAA;AAAA,mBAEC;AAAA;AAAA;AAAA,iBAGA;AAAA;AAgIM,SAAS,cAA2C,CAC1D,KACA,YACA,KACA,SACgC;AAAA,EAChC,OAAO,IAAI,OAAO,SAAS,YAAY,KAAK,OAAO;AAAA;AAAA;AAW7C,MAAM,uBAAuB,MAAM;AAAA,EAChC,OAAO;AACjB;AAEA,IAAM,kBACL;AAeD,eAAe,iBAAiB,CAC/B,QACA,IACsB;AAAA,EACtB,IAAI;AAAA,IAAQ,OAAO,EAAE,MAAM,QAAQ,OAAO;AAAA,EAC1C,MAAM,SAAS,QAAQ,IAAI;AAAA,EAC3B,IAAI,CAAC,UAAU,CAAE,MAAM,gBAAgB,EAAE,GAAI;AAAA,IAC5C,MAAM,IAAI,iBAAiB,eAAe;AAAA,EAC3C;AAAA,EACA,MAAM,SAAS,QAAQ,IAAI,wBAAwB,KAAK;AAAA,EACxD,IAAI,CAAC,QAAQ;AAAA,IACZ,MAAM,IAAI,iBACT,oJACD;AAAA,EACD;AAAA,EACA,OAAO,EAAE,MAAM,UAAU,QAAQ,OAAO;AAAA;AAUzC,SAAS,eAAe,CAAC,KAAc,OAAkC;AAAA,EACxE,IAAI,EAAE,eAAe;AAAA,IAAmB;AAAA,EACxC,IAAI,IAAI,WAAW,KAAK;AAAA,IACvB,OAAO,IAAI,eACV,GAAG,iCAAiC,IAAI,WAAW,IAAI,SACxD;AAAA,EACD;AAAA,EACA,IAAI,IAAI,WAAW,KAAK;AAAA,IACvB,OAAO,IAAI,iBACV,GAAG,6DAA6D,mBAChE,EAAE,OAAO,IAAI,CACd;AAAA,EACD;AAAA,EACA;AAAA;AAQD,SAAS,aAAa,CAAC,KAAuB;AAAA,EAC7C,OACC,eAAe,yBAAyB,eAAe;AAAA;AAazD,SAAS,UAAU,CAAC,QAAoB;AAAA,EACvC,IAAI,OAAO,SAAS,QAAQ;AAAA,IAC3B,OAAO,mBAAmB;AAAA,MACzB,WAAW,KAAK,OAAO,QAAQ,EAAE,YAAY,GAAG,SAAS,IAAO,CAAC;AAAA,IAClE,CAAC;AAAA,EACF;AAAA,EACA,OAAO,mBAAmB;AAAA,IACzB,WAAW,KAAK,GAAG,OAAO,OAAO,QAAQ,QAAQ,EAAE,mBAAmB;AAAA,MACrE,YAAY;AAAA,MACZ,SAAS;AAAA,MAGT,cAAc;AAAA,QACb,SAAS,EAAE,eAAe,UAAU,OAAO,SAAS;AAAA,MACrD;AAAA,IACD,CAAC;AAAA,EACF,CAAC;AAAA;AAAA;AAQF,MAAM,gBAAgB;AAAA,EAIQ;AAAA,EAHrB,SAAS;AAAA,EACT,QAA2B,CAAC;AAAA,EAEpC,WAAW,CAAkB,OAAe;AAAA,IAAf;AAAA;AAAA,OAEvB,IAAM,CAAC,IAAkC;AAAA,IAC9C,IAAI,KAAK,UAAU,KAAK,OAAO;AAAA,MAC9B,MAAM,IAAI,QAAc,CAAC,YAAY,KAAK,MAAM,KAAK,OAAO,CAAC;AAAA,IAC9D;AAAA,IACA,KAAK;AAAA,IACL,IAAI;AAAA,MACH,OAAO,MAAM,GAAG;AAAA,cACf;AAAA,MACD,KAAK;AAAA,MACL,KAAK,MAAM,MAAM,IAAI;AAAA;AAAA;AAGxB;AAEA,IAAM,+BAA+B;AAErC,SAAS,kBAAkB,GAAW;AAAA,EACrC,MAAM,MAAM,QAAQ,IAAI;AAAA,EACxB,MAAM,SAAS,MAAM,OAAO,SAAS,KAAK,EAAE,IAAI,OAAO;AAAA,EACvD,OAAO,OAAO,SAAS,MAAM,KAAK,SAAS,IACxC,SACA;AAAA;AAGJ,IAAM,OAAO,IAAI,gBAAgB,mBAAmB,CAAC;AAIrD,SAAS,QAAQ,CAAC,MAAuC;AAAA,EACxD,OAAO,kBAAkB,KAAK,IAAI,CAAC,QAAQ,YAAY,GAAG,CAAC,CAAC;AAAA;AAG7D,SAAS,YAAY,CAAC,KAAkB,MAA2B;AAAA,EAClE,MAAM,KAAK,IAAI,UAAU,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAAA,EAGpD,IAAI,CAAC,IAAI;AAAA,IACR,MAAM,IAAI,eAAe,gBAAgB,4BAA4B;AAAA,EACtE;AAAA,EACA,IAAI,GAAG,WAAW,aAAa;AAAA,IAC9B,MAAM,IAAI,eACT,IAAI,YAAY,GAAG,mDACpB;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAoBD,SAAS,qBAAqB,CAAC,KAAwC;AAAA,EAI7E,MAAM,YAAY,OACjB,YACA,KACA,cACA,MACA,YACsB;AAAA,IACtB,MAAM,KAAK,IAAI,MAAM,YAAY;AAAA,IACjC,MAAM,SAAS,IAAI,UAAU,QAAQ,IAAI,uBAAuB;AAAA,IAEhE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,wBAAwB;AAAA,MACnD,MAAM,IAAI,iBAAiB,eAAe;AAAA,IAC3C;AAAA,IAEA,MAAM,WAAW,QAAQ,UAAU;AAAA,IACnC,IAAI,CAAC,YAAY,CAAC,IAAI,gBAAgB;AAAA,MACrC,MAAM,IAAI,iBACT,SAAS,IAAI,2RACd;AAAA,IACD;AAAA,IAEA,MAAM,KAAK,aAAa,KAAK,YAAY;AAAA,IACzC,MAAM,cAAc,kBAAkB,IAAI,IAAI;AAAA,IAC9C,MAAM,WAAW,SAAS,WAAW;AAAA,IACrC,MAAM,WAAW,WAAW,OAAQ,IAAI;AAAA,IAKxC,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,MAAM,SAAS,MAAM,GACnB,WAAW,kBAAkB,EAC7B,OAAO,YAAY,EACnB,MAAM,eAAe,KAAK,UAAU,EACpC,MAAM,iBAAiB,KAAK,GAAG,IAAI,EACnC,MAAM,aAAa,KAAK,QAAQ,EAChC,MAAM,CAAC,OACP,aAAa,OACV,GAAG,oBAAoB,MAAM,IAAI,IACjC,GAAG,oBAAoB,KAAK,QAAQ,CACxC,EACC,iBAAiB;AAAA,MAEnB,YACC,QAAQ,cACP,MAAM,KAAK,IAAI,YAAY;AAAA,QAC3B,MAAM,SAAS,MAAM,kBAAkB,QAAQ,EAAE;AAAA,QAIjD,IAAI,CAAC,IAAI,kBAAkB,OAAO,SAAS,UAAU;AAAA,UAEpD,MAAM,IAAI,iBACT,SAAS,IAAI,4JACd;AAAA,QACD;AAAA,QACA,IAAI,CAAC,IAAI,gBAAgB;AAAA,UAKxB,QAAO,KACN,6DACA;AAAA,YACC;AAAA,YACA,cAAc,GAAG;AAAA,YACjB,aAAa,IAAI;AAAA,YACjB,MAAM;AAAA,UACP,CACD;AAAA,QACD;AAAA,QACA,IAAI;AAAA,UACH,MAAM,QAAQ,MAAM,aAAa,WAAW,MAAM,GAAG;AAAA,YACpD,UAAU;AAAA,YACV,cAAc,GAAG;AAAA,YACjB,MAAM;AAAA,YACN,KAAK,IAAI,kBAAkB;AAAA,UAC5B,CAAC;AAAA,UACD,OAAO,YAAY,KAAK;AAAA,UACvB,OAAO,KAAK;AAAA,UACb,MACE,OAAO,SAAS,YAChB,gBAAgB,KAAK,cAAc,eAAe,GAAG,MAAM,KAC5D;AAAA;AAAA,OAGF;AAAA,MAEF,IAAI,CAAC,QAAQ;AAAA,QACZ,MAAM,GACJ,WAAW,kBAAkB,EAC7B,OAAO;AAAA,UACP,aAAa;AAAA,UACb,eAAe,GAAG;AAAA,UAClB,WAAW;AAAA,UACX,kBAAkB;AAAA,UAClB,cAAc,WAAW,OAAO,IAAI;AAAA,UACpC,YAAY;AAAA,QACb,CAAC,EAGA,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC,EACjC,QAAQ;AAAA,MACX;AAAA,MACC,OAAO,KAAK;AAAA,MACb,IACC,cAAc,GAAG,KACjB,eAAe,kBACf,eAAe,kBACd;AAAA,QACD,MAAM;AAAA,MACP;AAAA,MACA,MAAM,IAAI,iBACT,cAAc,eAAe,GAAG,iBAAiB,IAAI,uBAAuB,iBAAgB,GAAG,KAC/F,EAAE,OAAO,IAAI,CACd;AAAA;AAAA,IAGD,MAAM,QAAQ,eAAc,SAAS;AAAA,IACrC,MAAM,KAAK,wBAAwB,GAAG,SAAoB,KAAK;AAAA,IAE/D,IAAI,iBAAiB,GAAG,OAAkB,GAAG;AAAA,MAC5C,MAAM,WAAW;AAAA,MACjB,IAAI,QAAQ;AAAA,QAAU,OAAO,SAAS;AAAA,MACtC,MAAM,IAAI,sBACT,GAAG,eAAe,GAAG,kCACrB,SAAS,GACV;AAAA,IACD;AAAA,IACA,OAAO;AAAA;AAAA,EAGR,OAAO;AAAA,IACN,QAAQ,CAAC,YAAoB,QAAqB,UAAU,CAAC,GAAG;AAAA,MAG/D,MAAM,MAAM,aAAa,MAAM;AAAA,MAC/B,MAAM,eAAe,IAAI;AAAA,MACzB,WAAW,MAAM,IAAI,WAAW;AAAA,QAC/B,aAAa,IAAI,aAAY,GAAG,IAAI,GAAG,GAAG,IAAI;AAAA,MAC/C;AAAA,MAEA,MAAM,OAAO,IAAI,MAChB,CAAC,GACD;AAAA,QACC,GAAG,CAAC,SAAS,MAAc;AAAA,UAC1B,MAAM,SAAS,aAAa,IAAI,IAAI,KAAK;AAAA,UACzC,OAAO,CAAC,OAAgC,CAAC,MACxC,UAAU,YAAY,KAAK,QAAQ,MAAM,OAAO;AAAA;AAAA,MAEnD,CACD;AAAA,MAEA,OAAO,EAAE,KAAK;AAAA;AAAA,EAEhB;AAAA;;;AHpfD,IAAM,iBAAiB,IAAI;AAsE3B,SAAS,kBAAkB,CAAC,MAAoB;AAAA,EAC/C,IAAI,CAAC,sBAAsB,KAAK,IAAI,GAAG;AAAA,IACtC,MAAM,IAAI,MAAM,wBAAwB,MAAM;AAAA,EAC/C;AAAA;AAAA;AAYM,MAAM,gBAAgB;AAAA,EACnB;AAAA,EACD;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EAIE,MAAiB,CAAC;AAAA,EAOpB;AAAA,EAGP;AAAA,EAEV,WAAW,CACV,IACA,cACA,gBACA,OACA,IACA,UAAU,OACT;AAAA,IACD,KAAK,KAAK;AAAA,IACV,KAAK,eAAe;AAAA,IACpB,KAAK,iBAAiB;AAAA,IACtB,KAAK,QAAQ;AAAA,IACb,KAAK,MAAM;AAAA,IACX,KAAK,UAAU;AAAA;AAAA,MAQZ,MAAM,GAAoB;AAAA,IAC7B,KAAK,YAAY,sBAAsB;AAAA,MACtC,aAAa,KAAK,MAAM;AAAA,MACxB,gBAAgB,KAAK,MAAM;AAAA,IAC5B,CAAC;AAAA,IACD,OAAO,KAAK;AAAA;AAAA,MAGT,EAAE,GAAW;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,EAIb,KAAK,CAAC,IAAkB;AAAA,IACvB,KAAK,MAAM;AAAA;AAAA,EAKZ,MAAM,CAAC,OAAe,KAAoC;AAAA,IACzD,KAAK,cAAc,KAAK;AAAA,IACxB,KAAK,IAAI,KAAK;AAAA,MACb,MAAM;AAAA,MACN;AAAA,MACA,MAAM,KAAK,KAAK,eAAe,KAAK,MAAM,QAAQ,QAAQ,KAAK,IAAI,KAAK;AAAA,IACzE,CAAC;AAAA;AAAA,EAGF,MAAM,CACL,OACA,OACA,KACO;AAAA,IACP,KAAK,cAAc,KAAK;AAAA,IACxB,KAAK,IAAI,KAAK,EAAE,MAAM,UAAU,OAAO,MAAM,OAAO,IAAI,CAAC;AAAA;AAAA,EAG1D,MAAM,CACL,OACA,KACA,KACO;AAAA,IACP,KAAK,cAAc,KAAK;AAAA,IACxB,MAAM,WAAW,KAAK,eAAe;AAAA,IACrC,IAAI,CAAC;AAAA,MAAU;AAAA,IACf,MAAM,aAAa,OAAO,KAAK,GAAG;AAAA,IAGlC,MAAM,sBAAsB,SAAS,YAAY,KAChD,CAAC,OACA,GAAG,WAAW,WAAW,UACzB,GAAG,MAAM,CAAC,MAAM,WAAW,SAAS,CAAC,CAAC,CACxC;AAAA,IAEA,MAAM,OAAO,EAAE,eAAe,KAAK,MAAM,QAAQ,QAAQ,KAAK,IAAI,KAAK;AAAA,IAEvE,IAAI,qBAAqB;AAAA,MAExB,KAAK,IAAI,KAAK;AAAA,QACb,MAAM;AAAA,QACN;AAAA,QACA,MAAM,KAAK,QAAQ,QAAQ,MAAM,cAAc,WAAW;AAAA,MAC3D,CAAC;AAAA,IACF,EAAO;AAAA,MAEN,QAAO,KACN,wEACA;AAAA,QACC;AAAA,QACA,MAAM;AAAA,MACP,CACD;AAAA,MACA,KAAK,IAAI,KAAK;AAAA,QACb,MAAM;AAAA,QACN;AAAA,QACA,MAAM;AAAA,aACF;AAAA,aACA;AAAA,aACA;AAAA,UACH,uBAAuB;AAAA,UACvB,sBAAsB;AAAA,QACvB;AAAA,MACD,CAAC;AAAA;AAAA;AAAA,EAIH,MAAM,CAAC,OAAe,OAAsC;AAAA,IAC3D,KAAK,cAAc,KAAK;AAAA,IACxB,KAAK,IAAI,KAAK,EAAE,MAAM,UAAU,OAAO,MAAM,MAAM,CAAC;AAAA;AAAA,EAWrD,SAAS,CACR,OACA,KACA,QACO;AAAA,IACP,KAAK,cAAc,KAAK;AAAA,IACxB,MAAM,WAAW,KAAK,eAAe;AAAA,IACrC,MAAM,aAAa,OAAO,KAAK,GAAG;AAAA,IAClC,MAAM,sBAAsB,UAAU,YAAY,KACjD,CAAC,OACA,GAAG,WAAW,WAAW,UACzB,GAAG,MAAM,CAAC,MAAM,WAAW,SAAS,CAAC,CAAC,CACxC;AAAA,IACA,IAAI,CAAC,qBAAqB;AAAA,MACzB,MAAM,IAAI,MACT,cAAc,gDAAgD,WAAW,KAAK,IAAI,IACnF;AAAA,IACD;AAAA,IACA,YAAY,KAAK,MAAM,OAAO,QAAQ,MAAM,GAAG;AAAA,MAC9C,mBAAmB,GAAG;AAAA,MACtB,IAAI,WAAW,SAAS,GAAG,GAAG;AAAA,QAC7B,MAAM,IAAI,MAAM,cAAc,aAAa,sBAAsB;AAAA,MAClE;AAAA,MACA,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM,UAAU;AAAA,QACnD,MAAM,IAAI,MACT,cAAc,uBAAuB,+BACtC;AAAA,MACD;AAAA,IACD;AAAA,IACA,KAAK,IAAI,KAAK;AAAA,MACb,MAAM;AAAA,MACN;AAAA,MACA,MAAM;AAAA,WACF;AAAA,QACH,eAAe,KAAK,MAAM;AAAA,QAC1B,QAAQ,KAAK,IAAI;AAAA,QACjB,cAAc;AAAA,MACf;AAAA,MACA,KAAK,KAAK,OAAO;AAAA,IAClB,CAAC;AAAA;AAAA,EAMF,aAAa,GAAW;AAAA,IACvB,OAAO,KAAK,IAAI;AAAA;AAAA,EASjB,UAAU,CAAC,YAA0B;AAAA,IACpC,IAAI,aAAa,KAAK,aAAa,KAAK,IAAI;AAAA,MAAQ;AAAA,IACpD,KAAK,IAAI,SAAS;AAAA;AAAA,OAWH,SAAQ,CACvB,OACA,OACA,OACqC;AAAA,IACrC,MAAM,iBAAiB,IAAI,KAAK,kBAAkB;AAAA,IAClD,QAAQ,WAAW,iBAAiB,KAAK;AAAA,IAKzC,MAAM,QAAQ,iBAAiB,wBAAwB,wBACtD,UAAU,YAAY,UAAU,UAAU;AAAA,IAE3C,QAAQ,SAAS,MAAM,KAAI,IAAI,KAAK,EAAE,QAAQ,KAAK,EAAE;AAAA,IACrD,OAAQ,KAAmC,IAAI,CAAC,MAC/C,KAAK,UAAU,OAAO,CAAC,CACxB;AAAA;AAAA,OAGK,QAAO,CACZ,OACA,OAC0C;AAAA,IAC1C,KAAK,cAAc,KAAK;AAAA,IACxB,MAAM,OAAO,MAAM,KAAK,SAAS,OAAO,OAAO,CAAC,GAAG,MAAM;AAAA,IACzD,OAAO,KAAK,WAAW,OAAO,OAAO,GAAG;AAAA;AAAA,OAGnC,SAAQ,CACb,OACA,OACqC;AAAA,IACrC,KAAK,cAAc,KAAK;AAAA,IACxB,OAAO,KAAK,YAAY,OAAO,OAAO,MAAM,KAAK,SAAS,OAAO,KAAK,CAAC;AAAA;AAAA,EAY9D,UAAU,CACnB,OACA,OACA,OACiC;AAAA,IACjC,IAAI,KAAK,IAAI,WAAW;AAAA,MAAG,OAAO;AAAA,IAClC,IAAI,MAAM;AAAA,IACV,WAAW,MAAM,KAAK,KAAK;AAAA,MAC1B,IAAI,GAAG,UAAU;AAAA,QAAO;AAAA,MACxB,MAAM,KAAK,aAAa,IAAI,KAAK,KAAK;AAAA,IACvC;AAAA,IACA,OAAO;AAAA;AAAA,EAGE,WAAW,CACpB,OACA,OACA,QAC4B;AAAA,IAC5B,IAAI,KAAK,IAAI,WAAW;AAAA,MAAG,OAAO,CAAC,GAAG,MAAM;AAAA,IAC5C,IAAI,SAAS,CAAC,GAAG,MAAM;AAAA,IACvB,WAAW,MAAM,KAAK,KAAK;AAAA,MAC1B,IAAI,GAAG,UAAU;AAAA,QAAO;AAAA,MACxB,IAAI,GAAG,SAAS,UAAU;AAAA,QACzB,SAAS,IAAI,EAAG,IAAI,OAAO,QAAQ,KAAK;AAAA,UAEvC,IAAI,WAAW,OAAO,IAAK,GAAG,IAAI;AAAA,YACjC,OAAO,KAAK,KAAK,OAAO,OAAQ,GAAG,OAAO,CAAC,EAAG;AAAA,QAChD;AAAA,MACD,EAAO,SAAI,GAAG,SAAS,UAAU;AAAA,QAChC,SAAS,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC;AAAA,MACtD,EAAO;AAAA,QAGN,MAAM,aAAa,GAAG,KAAK;AAAA,QAC3B,MAAM,QAAQ,iBAAiB,GAAG,IAAI;AAAA,QACtC,MAAM,MAAM,aACT,OAAO,UAAU,CAAC,MAClB,WAAW,MAAM,CAAC,MAAM,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC,CAC9C,IACC;AAAA,QACH,IAAI,OAAO,GAAG;AAAA,UAEb,MAAM,WAAW,OAAO;AAAA,UACxB,OAAO,OAAO,KAAK,aAAa,IAAI,UAAU,KAAK,KAAK;AAAA,QACzD,EAAO;AAAA,UACN,MAAM,UAAU,KAAK,aAAa,IAAI,MAAM,KAAK;AAAA,UACjD,IAAI;AAAA,YAAS,OAAO,KAAK,OAAO;AAAA;AAAA;AAAA,IAGnC;AAAA,IACA,OAAO;AAAA;AAAA,EAIE,YAAY,CACrB,IACA,KACA,OACiC;AAAA,IACjC,MAAM,aAAa,GAAG,KAAK;AAAA,IAC3B,MAAM,QAAQ,iBAAiB,GAAG,IAAI;AAAA,IAEtC,QAAQ,GAAG;AAAA,WACL,UAAU;AAAA,QACd,IAAI,KAAK;AAAA,UAGR,IAAI,YAAY,MAAM,CAAC,MAAM,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC,GAAG;AAAA,YAEtD,MAAM,SAAS,KAAK,IAAI;AAAA,YACxB,YAAY,GAAG,MAAM,OAAO,QAAQ,KAAK,GAAG;AAAA,cAC3C,IAAI,CAAC,WAAW,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC;AAAA,gBAAG,OAAO,KAAK;AAAA,YAChE;AAAA,YACA,OAAO;AAAA,UACR;AAAA,UACA,OAAO;AAAA,QACR;AAAA,QACA,OAAO,WAAW,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI;AAAA,MAClD;AAAA,WACK,aAAa;AAAA,QACjB,MAAM,SAAS,GAAG,OAAO,CAAC;AAAA,QAC1B,IAAI,KAAK;AAAA,UAER,IAAI,WAAY,MAAM,CAAC,MAAM,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC,GAAG;AAAA,YACtD,MAAM,SAAS,KAAK,IAAI;AAAA,YACxB,YAAY,KAAK,MAAM,OAAO,QAAQ,MAAM,GAAG;AAAA,cAC9C,OAAO,OAAO,YAAY,OAAO,IAAI,IAAI,YAAY,CAAC;AAAA,YACvD;AAAA,YACA,OAAO;AAAA,UACR;AAAA,UACA,OAAO;AAAA,QACR;AAAA,QACA,IAAI,CAAC,WAAW,OAAO,KAAK;AAAA,UAAG,OAAO;AAAA,QACtC,MAAM,UAAmC,KAAK,MAAM;AAAA,QACpD,YAAY,KAAK,MAAM,OAAO,QAAQ,MAAM,GAAG;AAAA,UAC9C,QAAQ,OAAO,YAAY,CAAC;AAAA,QAC7B;AAAA,QACA,OAAO;AAAA,MACR;AAAA,WACK;AAAA,QACJ,OAAO,OAAO,WAAW,KAAK,GAAG,IAAI,IAClC,KAAK,QAAS,GAAG,OAAO,CAAC,EAAG,IAC5B;AAAA,WACC;AAAA,QACJ,OAAO,OAAO,WAAW,KAAK,GAAG,IAAI,IAAI,OAAO;AAAA;AAAA;AAAA,EAK3C,SAAS,CAChB,OACA,KAC0B;AAAA,IAC1B,MAAM,WAAW,KAAK,eAAe;AAAA,IACrC,IAAI,CAAC;AAAA,MAAU,OAAO;AAAA,IACtB,MAAM,SAAS,KAAK,IAAI;AAAA,IACxB,YAAY,KAAK,QAAQ,OAAO,QAAQ,SAAS,OAAO,GAAG;AAAA,MAC1D,KACE,IAAI,SAAS,UAAU,IAAI,SAAS,UACrC,OAAO,OAAO,SAAS,UACtB;AAAA,QACD,OAAO,OAAO,OAAO,OAAO,IAAc;AAAA,MAC3C;AAAA,IACD;AAAA,IACA,OAAO;AAAA;AAAA,MAMJ,UAAU,GAAW;AAAA,IACxB,OAAO,KAAK,IAAI;AAAA;AAAA,OASX,MAAK,GAA2B;AAAA,IACrC,IAAI,KAAK,IAAI,WAAW;AAAA,MAAG,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE;AAAA,IAEzD,MAAM,KAAK,mBAAmB;AAAA,IAE9B,MAAM,aAAa,CAAC,GAAG,KAAK,GAAG;AAAA,IAC/B,KAAK,IAAI,SAAS;AAAA,IAElB,MAAM,aAAa,KAAK,gBAAgB,UAAU;AAAA,IAElD,IAAI,mBAAmB,KAAK,IAAI;AAAA,MAC/B,MAAM,KAAK,eAAe,KAAK,IAAI,UAAU;AAAA,IAC9C,EAAO;AAAA,MACN,MAAO,KAAK,GAAwB,YAAY,EAAE,QAAQ,OAAO,OAAO;AAAA,QACvE,MAAM,KAAK,eAAe,IAAI,UAAU;AAAA,OACxC;AAAA;AAAA,IAGF,MAAM,SAAuB,WAAW,IAAI,CAAC,IAAI,aAAa;AAAA,MAC7D,MAAM,cACJ,GAAG,KAAK,iBAAwC,KAAK,MAAM;AAAA,MAC7D,MAAM,OAAQ,GAAG,KAAK,UAAiC,KAAK,IAAI;AAAA,MAChE,MAAM,UACL,GAAG,SAAS,YAAY,GAAG,SAAS,cACjC,KAAK,GAAG,SAAU,GAAG,OAAO,CAAC,EAAG,IAChC,KAAK,GAAG,KAAK;AAAA,MAEhB,QAAoC,eAAe;AAAA,MACnD,QAAoC,wBAAwB;AAAA,MAC5D,QAAoC,uBAAuB;AAAA,MAC5D,OAAO;AAAA,QAGN,IAAI,GAAG,SAAS,cAAc,WAAW,GAAG;AAAA,QAC5C,OAAO,GAAG;AAAA,QACV,KAAK,UAAS,OAAO;AAAA,QACrB,IAAI,EAAE,aAAa,MAAM,SAAS;AAAA,MACnC;AAAA,KACA;AAAA,IAED,OAAO,EAAE,OAAO,WAAW,QAAQ,OAAO;AAAA;AAAA,OAsB7B,eAAc,CAC3B,UACA,YACgB;AAAA,IAChB,MAAM,WAAW,CAAC,MACjB,EAAE,mBAAmB;AAAA,IAEtB,WAAW,QAAQ,YAAY;AAAA,MAC9B,IAAI,OAAO,SAAS,UAAU;AAAA,QAC7B,MAAM,KAAI,IAAI,IAAI,EAAE,QAAQ,QAAQ;AAAA,QACpC;AAAA,MACD;AAAA,MACA,MAAM,UAAU,MAAM,KAAI,IAAI,KAAK,MAAM,EAAE,QAAQ,QAAQ;AAAA,MAC3D,IAAI,SAAS,OAAO,IAAI;AAAA,QAAI;AAAA,MAE5B,MAAM,WAAW,MAAM,KAAI,IAAI,KAAK,MAAM,EAAE,QAAQ,QAAQ;AAAA,MAC5D,IAAI,SAAS,QAAQ,IAAI;AAAA,QAAI;AAAA,MAE7B,MAAM,UAAU,MAAM,KAAI,IAAI,KAAK,MAAM,EAAE,QAAQ,QAAQ;AAAA,MAC3D,IAAI,SAAS,OAAO,MAAM,IAAI;AAAA,QAK7B,MAAM,IAAI,MACT,qCAAqC,KAAK,gBAAgB,KAAK,eAAe,KAAK,2CACpF;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAIO,aAAa,CAAC,IAMpB;AAAA,IACD,MAAM,aAAa,GAAG,KAAK;AAAA,IAC3B,MAAM,OAAO,KAAK,GAAG,KAAK;AAAA,IAE1B,OAAO,KAAK;AAAA,IAEZ,OAAO,KAAK;AAAA,IAEZ,OAAO,KAAK;AAAA,IAIZ,IAAI,CAAC,KAAK;AAAA,MAAe,KAAK,gBAAgB,KAAK,MAAM;AAAA,IACzD,IAAI,CAAC,KAAK;AAAA,MAAQ,KAAK,SAAS,KAAK,IAAI;AAAA,IACzC,KAAK,cAAc;AAAA,IAEnB,MAAM,OAAO,OAAO,KAAK,IAAI;AAAA,IAC7B,KAAK,QAAQ,kBAAkB;AAAA,IAC/B,MAAM,OAAO,KAAK,IAAI,CAAC,MACtB,KAAK,OAAO,UAAU,UAAU,cAAc,KAAK,EAAE,CACtD;AAAA,IAGA,MAAM,WAAW,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,aAAa,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;AAAA,IAE9G,OAAO,EAAE,MAAM,MAAM,MAAM,YAAY,SAAS;AAAA;AAAA,OASnC,mBAAkB,GAAkB;AAAA,IACjD,IAAI,CAAC,KAAK,WAAW,eAAe,IAAI,KAAK,YAAY;AAAA,MAAG;AAAA,IAC5D,QAAQ,SAAS,MAAM,KACrB,IAAI,wBAAwB,KAAK,iCAAiC,EAClE,QAAQ,KAAK,EAAE;AAAA,IACjB,IAAK,KAA0B,IAAI,GAAG;AAAA,MACrC,eAAe,IAAI,KAAK,YAAY;AAAA,MACpC;AAAA,IACD;AAAA,IAGA,WAAW,QAAQ,eAAe,KAAK,YAAY,GAAG;AAAA,MACrD,MAAM,KAAI,IAAI,IAAI,EAAE,QAAQ,KAAK,EAAE;AAAA,IACpC;AAAA;AAAA,EAIO,aAAa,CAAC,OAAe,KAAiC;AAAA,IACrE,MAAM,MAAM,KAAK,eAAe,QAAQ,UAAU;AAAA,IAClD,OAAO,MAAM,SAAS,IAAI,QAAQ;AAAA;AAAA,EAS3B,iBAAiB,CACxB,OACA,SAEA,gBACS;AAAA,IACT,MAAM,OAAO,CAAC,KAAa,SAAiB;AAAA,MAC3C,MAAM,IAAI,KAAK,cAAc,OAAO,GAAG;AAAA,MACvC,OAAO,IAAI,QAAQ,WAAW,OAAO;AAAA;AAAA,IAEtC,MAAM,SAAS,QACb,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,GAAG,MAAM,IAAI,GAAG,EAC3C,KAAK,IAAI;AAAA,IACX,MAAM,WAAW,QACf,IAAI,CAAC,MAAM,MAAM,QAAQ,KAAK,GAAG,MAAM,IAAI,GAAG,EAC9C,KAAK,OAAO;AAAA,IACd,MAAM,aAAa,eACjB,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,IAAI,IAAI,EAC9B,KAAK,IAAI;AAAA,IACX,OACC,gBAAgB,KAAK,oFACrB,UAAU,KAAK,MAAM,YAAY,8BAA8B,4BAC/D,gBAAgB,oBAAoB,QAAQ,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,IAAI,QAC1E,cAAc,KAAK,kBAAkB,eAAe;AAAA;AAAA,EAK9C,wBAAwB,CAAC,OAAe,QAAwB;AAAA,IACvE,OACC,gBAAgB,KAAK,oFACrB,UAAU,KAAK,MAAM,YAAY,+DACjC,SAAS,KAAK,kBAAkB,kBAAkB;AAAA;AAAA,EAK5C,eAAe,CAAC,KAAkC;AAAA,IACzD,MAAM,aAA+B,CAAC;AAAA,IA4BtC,IAAI,eAAmC;AAAA,IACvC,IAAI,kBAAkB;AAAA,IACtB,IAAI,WAAkC;AAAA,IACtC,IAAI,cAAc;AAAA,IAElB,MAAM,sBAAsB,MAAM;AAAA,MACjC,IAAI,CAAC;AAAA,QAAU;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,MAAM,iBAAiB,IAAI,KAAK,kBAAkB,MAAM;AAAA,MACxD,MAAM,OAAO;AAAA,QACZ,GAAG,MAAM;AAAA,QACT,GAAG,MAAM;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACA,IAAI,KAAK,SAAS;AAAA,QACjB,WAAW,KACV,KAAK,kBACJ,MAAM,OACN,MAAM,SACN,MAAM,KAAK,MAAM,KAAK,OAAO,CAAC,EAAE,IAAI,CAAC,MACpC,MAAM,QAAQ,IAAI,CAAC,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,CAClD,CACD,CACD;AAAA,MACD;AAAA,MAeA,WAAW,KAAK,MAAM,KAAK,OAAO,GAAG;AAAA,QACpC,MAAM,UAAU,MAAM,QACpB,IAAI,CAAC,MAAM,IAAI,QAAQ,cAAc,EAAE,KAAK,EAAE,GAAG,EACjD,KAAK,OAAO;AAAA,QACd,MAAM,SAAS,MAAM,UACnB,IACA,CAAC,MACA,IAAI,kBAAkB,aAAa,OAAO,EAAE,OAAO,MAAM,EAAE,IAC7D,EACC,KAAK,IAAI;AAAA,QACX,MAAM,aAAa;AAAA,UAClB,GAAG,MAAM,QAAQ,IAAI,CAAC,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC;AAAA,UACpD,GAAG,MAAM,UAAU,IAAI,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,EAAE,CAAC;AAAA,UACvD,cAAc,EAAE,KAAK,WAAW;AAAA,UAChC,cAAc,EAAE,KAAK,IAAI;AAAA,UACzB;AAAA,QACD;AAAA,QACA,WAAW,KAAK;AAAA,UACf,MAAM;AAAA,UACN,OAAO,MAAM;AAAA,UACb;AAAA,UACA,QAAQ,UAAU,sBAAsB,gBAAgB;AAAA,UACxD,QACC,eAAe,mBAAmB,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,IAAI,QACrE,UAAU,WAAW,KAAK,IAAI,OAC9B,mCAAmC,wBAAwB;AAAA,QAC7D,CAAC;AAAA,MACF;AAAA,MACA,WAAW;AAAA,MACX,cAAc;AAAA;AAAA,IAGf,MAAM,mBAAmB,MAAM;AAAA,MAC9B,IAAI,CAAC;AAAA,QAAc;AAAA,MACnB,MAAM,QAAQ;AAAA,MACd,MAAM,iBAAiB,IAAI,KAAK,kBAAkB,MAAM;AAAA,MACxD,MAAM,UAAU,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA,MAKzD,IAAI,OAAO,MAAM;AAAA,MACjB,IAAI,MAAM,cAAc,MAAM,WAAW,SAAS,GAAG;AAAA,QACpD,MAAM,aAAa,MAAM,WAAW,IAAI,CAAC,MAAM,MAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,QACpE,MAAM,QAAQ,IAAI;AAAA,QAClB,WAAW,OAAO,MAAM;AAAA,UACvB,MAAM,MAAM,WAAW,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,KAAK,MAAI;AAAA,UACrD,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,UAC3B,IAAI,CAAC,OAAO;AAAA,YACX,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC;AAAA,YACvB;AAAA,UACD;AAAA,UACA,MAAM,KAAK,QAAQ,CAAC,GAAG,OAAO;AAAA,YAC7B,IAAI,CAAC,eAAe,CAAC;AAAA,cAAG,MAAM,MAAM,IAAI;AAAA,WACxC;AAAA,QACF;AAAA,QACA,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC;AAAA,MAC1B;AAAA,MAEA,MAAM,aAAa,KAAK,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA,MACjE,IAAI,OAAO,eAAe,mBAAmB,mBAAmB;AAAA,MAIhE,IAAI,KAAK,WAAW,MAAM,cAAc,MAAM,WAAW,SAAS,GAAG;AAAA,QACpE,MAAM,QAAQ,MAAM;AAAA,QACpB,MAAM,aAAa,MAAM,IAAI,CAAC,MAAM,MAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,QACzD,WAAW,KACV,KAAK,kBACJ,MAAM,OACN,OACA,KAAK,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAC9C,CACD;AAAA,MACD;AAAA,MAEA,IAAI,MAAM,cAAc,MAAM,WAAW,SAAS,GAAG;AAAA,QACpD,MAAM,YAAY,MAAM;AAAA,QACxB,MAAM,aAAa,MAAM,KAAK,OAC7B,CAAC,MAAM,CAAC,UAAU,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CACnD;AAAA,QACA,IAAI,WAAW,SAAS,GAAG;AAAA,UAC1B,MAAM,aAAa,WAAW,IAAI,CAAC,MAAM,IAAI,kBAAkB,IAAI;AAAA,UACnE,QAAQ,iBAAiB,UAAU,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,IAAI,oBAAoB,WAAW,KAAK,IAAI;AAAA,QAC1G,EAAO;AAAA,UACN,QAAQ,iBAAiB,UAAU,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA;AAAA,MAEnE;AAAA,MAEA,WAAW,KAAK,IAAI;AAAA,MACpB,eAAe;AAAA,MACf,kBAAkB;AAAA;AAAA,IAGnB,WAAW,MAAM,KAAK;AAAA,MACrB,MAAM,iBAAiB,IAAI,KAAK,kBAAkB,GAAG;AAAA,MAErD,IAAI,GAAG,SAAS,UAAU;AAAA,QACzB,oBAAoB;AAAA,QACpB,QAAQ,MAAM,MAAM,YAAY,aAAa,KAAK,cAAc,EAAE;AAAA,QAElE,IAAI,aAAa,mBAAmB,cAAc;AAAA,UAEjD,aAAa,KAAK,KAAK,IAAI;AAAA,QAC5B,EAAO;AAAA,UAEN,iBAAiB;AAAA,UACjB,eAAe,EAAE,OAAO,GAAG,OAAO,MAAM,MAAM,CAAC,IAAI,GAAG,WAAW;AAAA,UACjE,kBAAkB;AAAA;AAAA,MAEpB,EAAO,SAAI,GAAG,SAAS,aAAa;AAAA,QACnC,iBAAiB;AAAA,QACjB,MAAM,UAAU,CAAC,GAAI,GAAG,KAAK,YAAyB,EAAE,KAAK;AAAA,QAC7D,MAAM,YAAY,OAAO,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK;AAAA,QACjD,MAAM,WAAW,OAAO,GAAG,SAAS,QAAQ,KAAK,GAAG,KAAK,UAAU,KAAK,GAAG;AAAA,QAC3E,IAAI,aAAa,eAAe,CAAC,UAAU;AAAA,UAC1C,oBAAoB;AAAA,UACpB,WAAW,EAAE,OAAO,GAAG,OAAO,SAAS,WAAW,MAAM,IAAI,IAAM;AAAA,UAClE,cAAc;AAAA,QACf;AAAA,QACA,MAAM,QAAQ,iBAAiB,GAAG,IAAI;AAAA,QACtC,MAAM,SAAS,QAAQ,IAAI,CAAC,MAAM,cAAc,MAAM,EAAE,CAAC,EAAE,KAAK,MAAI;AAAA,QACpE,MAAM,WAAW,SAAS,KAAK,IAAI,MAAM;AAAA,QACzC,IAAI,UAAU;AAAA,UACb,WAAW,KAAK,WAAW;AAAA,YAC1B,SAAS,OAAO,MACd,SAAS,OAAO,MAAM,MAAM,YAAY,GAAG,MAAM,EAAE;AAAA,UACtD;AAAA,QACD,EAAO;AAAA,UACN,MAAM,SAAiC,CAAC;AAAA,UACxC,WAAW,KAAK;AAAA,YAAW,OAAO,KAAK,YAAY,GAAG,MAAM,EAAE;AAAA,UAC9D,SAAS,KAAK,IAAI,QAAQ;AAAA,YACzB,MAAM;AAAA,YACN;AAAA,YACA,MAAM;AAAA,cACL,aAAa,GAAG,KAAK,iBAAiB,KAAK,MAAM;AAAA,cACjD,MAAM,GAAG,KAAK,UAAU,KAAK,IAAI;AAAA,YAClC;AAAA,UACD,CAAC;AAAA;AAAA,MAEH,EAAO;AAAA,QAEN,iBAAiB;AAAA,QACjB,oBAAoB;AAAA,QAEpB,IAAI,GAAG,SAAS,UAAU;AAAA,UACzB,MAAM,aAAa,OAAO,QAAQ,GAAG,OAAO,CAAC,CAAC;AAAA,UAC9C,YAAY,MAAM;AAAA,YAAY,mBAAmB,CAAC;AAAA,UAClD,MAAM,aAAa,WAAW,IAC7B,EAAE,GAAG,OAAO,IAAI,QAAQ,cAAc,CAAC,GACxC;AAAA,UACA,QAAQ,WAAW,iBAAiB,GAAG,IAAI;AAAA,UAC3C,IAAI,KAAK,SAAS;AAAA,YACjB,WAAW,KAAK,KAAK,yBAAyB,GAAG,OAAO,MAAM,CAAC;AAAA,UAChE;AAAA,UACA,WAAW,KACV,UAAU,sBAAsB,WAAW,KAAK,IAAI,WAAW,QAChE;AAAA,QACD,EAAO,SAAI,GAAG,SAAS,UAAU;AAAA,UAChC,QAAQ,WAAW,iBAAiB,GAAG,IAAI;AAAA,UAC3C,IAAI,KAAK,SAAS;AAAA,YACjB,WAAW,KAAK,KAAK,yBAAyB,GAAG,OAAO,MAAM,CAAC;AAAA,UAChE;AAAA,UACA,WAAW,KAAK,eAAe,wBAAwB,QAAQ;AAAA,QAChE;AAAA;AAAA,IAEF;AAAA,IAGA,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,IAEpB,OAAO;AAAA;AAAA,EAGA,aAAa,CAAC,OAAqB;AAAA,IAC1C,IAAI,CAAC,KAAK,eAAe,QAAQ;AAAA,MAChC,MAAM,IAAI,MACT,UAAU,oDAAoD,OAAO,KAAK,KAAK,cAAc,EAAE,KAAK,IAAI,IACzG;AAAA,IACD;AAAA;AAEF;AAWA,SAAS,cAAc,CAAC,KAAsB;AAAA,EAC7C,OAAO,IAAI,WAAW,GAAG;AAAA;AAI1B,SAAS,gBAAgB,CACxB,MAC0B;AAAA,EAC1B;AAAA,IACC,cAAc;AAAA,IACd,uBAAuB;AAAA,IACvB,sBAAsB;AAAA,OACnB;AAAA,MACA;AAAA,EACJ,OAAO;AAAA;AAIR,SAAS,KAAK,CAAC,GAAY,GAAqB;AAAA,EAC/C,IAAI,MAAM;AAAA,IAAG,OAAO;AAAA,EACpB,IAAI,KAAK,QAAQ,KAAK;AAAA,IAAM,OAAO;AAAA,EACnC,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA;AAI9B,SAAS,UAAU,CAClB,KACA,OACU;AAAA,EACV,OAAO,OAAO,QAAQ,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC;AAAA;AAGhE,SAAS,WAAW,CAAC,GAAoB;AAAA,EACxC,IAAI,OAAO,MAAM;AAAA,IAAU,OAAO;AAAA,EAClC,IAAI,KAAK;AAAA,IAAM,OAAO;AAAA,EACtB,IAAI;AAAA,IACH,OAAO,OAAO,OAAO,CAAC,CAAC;AAAA,IACtB,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAKT,SAAS,SAAQ,CAAC,KAAuD;AAAA,EACxE,MAAM,MAA+B,CAAC;AAAA,EACtC,YAAY,GAAG,MAAM,OAAO,QAAQ,GAAG,GAAG;AAAA,IACzC,IAAI,KAAK,OAAO,MAAM,WAAW,EAAE,SAAS,IAAI;AAAA,EACjD;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,aAAa,CAAC,OAAwB;AAAA,EAC9C,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW,OAAO;AAAA,EAClD,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,IACjD,OAAO,OAAO,KAAK;AAAA,EACpB,IAAI,OAAO,UAAU;AAAA,IAAW,OAAO,QAAQ,SAAS;AAAA,EACxD,IAAI,OAAO,UAAU;AAAA,IACpB,OAAO,IAAI,KAAK,UAAU,OAAO,CAAC,IAAI,MAAO,OAAO,MAAM,WAAW,EAAE,SAAS,IAAI,CAAE,EAAE,QAAQ,MAAM,IAAI;AAAA,EAE3G,OAAO,IAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,IAAI;AAAA;AAG5C,SAAS,gBAAgB,CAAC,OAGxB;AAAA,EACD,MAAM,UAAU,OAAO,QAAQ,KAAK;AAAA,EACpC,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO,EAAE,QAAQ,QAAQ,QAAQ,CAAC,EAAE;AAAA,EAE9D,YAAY,MAAM;AAAA,IAAS,mBAAmB,CAAC;AAAA,EAC/C,MAAM,QAAQ,QAAQ,IAAI,EAAE,GAAG,OAAO,IAAI,QAAQ,cAAc,CAAC,GAAG;AAAA,EACpE,OAAO,EAAE,QAAQ,MAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,EAAE;AAAA;;;ADz/B3C,MAAM,YAAY;AAAA,EACf,SAAiD,IAAI;AAC/D;AAAA;AAQO,MAAM,8BAA8B,gBAAgB;AAAA,EACzC;AAAA,EACA;AAAA,EAEjB,WAAW,CACV,OACA,QACA,OACA,IACC;AAAA,IAGD,MAAM,WAAoB,UAAU,QAAQ,OAAO,IAAI,KAAK;AAAA,IAC5D,KAAK,QAAQ;AAAA,IACb,KAAK,SAAS;AAAA;AAAA,OAIU,SAAQ,CAChC,OACA,OACA,OACqC;AAAA,IACrC,MAAM,QAAQ,KAAK,MAAM,OAAO,IAAI,KAAK,KAAK,CAAC,GAAG,OAAO,CAAC,QACzD,OAAO,QAAQ,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,UAAU,IAAI,IAAI,CAAC,CAAC,CAC7D;AAAA,IACA,OAAO,UAAU,YAAY,OAAO,KAAK,MAAM,GAAG,KAAK;AAAA;AAAA,EASxD,gBAA+B;AAAA,EAEvB,cAAc,CAAC,MAAoB;AAAA,IAC1C,KAAK,kBAAkB;AAAA;AAAA,EAGf,OAAO,CACf,OACA,OAC0C;AAAA,IAC1C,KAAK,eAAe,YAAY,SAAS;AAAA,IACzC,OAAO,MAAM,QAAQ,OAAO,KAAK;AAAA;AAAA,EAGzB,QAAQ,CAChB,OACA,OACqC;AAAA,IACrC,KAAK,eAAe,aAAa,SAAS;AAAA,IAC1C,OAAO,MAAM,SAAS,OAAO,KAAK;AAAA;AAAA,EAG1B,MAAM,CACd,OACA,OACA,KACO;AAAA,IACP,KAAK,eAAe,WAAW,SAAS;AAAA,IACxC,MAAM,OAAO,OAAO,OAAO,GAAG;AAAA;AAAA,EAGtB,MAAM,CAAC,OAAe,OAAsC;AAAA,IACpE,KAAK,eAAe,WAAW,SAAS;AAAA,IACxC,MAAM,OAAO,OAAO,KAAK;AAAA;AAAA,EAGjB,SAAS,CACjB,OACA,KACA,QACO;AAAA,IACP,KAAK,eAAe,cAAc,SAAS;AAAA,IAC3C,MAAM,UAAU,OAAO,KAAK,MAAM;AAAA;AAAA,EAG1B,MAAM,CACd,OACA,KACA,KACO;AAAA,IACP,MAAM,MAAM,KAAK,OAAO;AAAA,IACxB,IAAI,KAAK;AAAA,MACR,MAAM,UAAU,OAAO,KAAK,GAAG;AAAA,MAC/B,MAAM,QAAQ,IAAI,YAAY,KAC7B,CAAC,OACA,GAAG,WAAW,QAAQ,UAAU,GAAG,MAAM,CAAC,MAAM,QAAQ,SAAS,CAAC,CAAC,CACrE;AAAA,MACA,MAAM,UAAU,OAAO,KAAK,IAAI,OAAO,EAAE,KACxC,CAAC,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,IAC9B;AAAA,MAGA,IAAI,CAAC;AAAA,QACJ,KAAK,eAAe,WAAW,8BAA8B;AAAA,MACzD,SAAI;AAAA,QACR,KAAK,eAAe,WAAW,mBAAmB,oBAAoB;AAAA,IACxE;AAAA,IACA,MAAM,OAAO,OAAO,KAAK,GAAG;AAAA;AAAA,OAIvB,OAAM,CAAC,OAAmD;AAAA,IAC/D,OAAO,KAAK,YAAY,OAAO,CAAC,GAAG,MAAM,KAAK,SAAS,OAAO,CAAC,CAAC,CAAC;AAAA;AAAA,EAQlE,QAAQ,CAAC,OAAsC;AAAA,IAC9C,KAAK,UAAU;AAAA,MACd,QAAQ,CAAC,YAAoB,KAAkB;AAAA,QAC9C,MAAM,eAAe,IAAI;AAAA,QACzB,WAAW,MAAM,cAAa,GAAG,EAAE,WAAW;AAAA,UAC7C,aAAa,IAAI,aAAY,GAAG,IAAI,GAAG,GAAG,IAAI;AAAA,QAC/C;AAAA,QACA,MAAM,OAAO,IAAI,MAChB,CAAC,GACD;AAAA,UACC,GAAG,CAAC,SAAS,MAAc;AAAA,YAC1B,MAAM,SAAS,aAAa,IAAI,IAAI,KAAK;AAAA,YACzC,MAAM,MAAM,GAAG,cAAc;AAAA,YAC7B,OAAO,YAAY;AAAA,cAClB,IAAI,EAAE,OAAO,QAAQ;AAAA,gBACpB,MAAM,IAAI,MACT,8BAA8B,4DAA4D,eAC3F;AAAA,cACD;AAAA,cACA,OAAO,MAAM;AAAA;AAAA;AAAA,QAGhB,CACD;AAAA,QACA,OAAO,EAAE,KAAK;AAAA;AAAA,IAEhB;AAAA;AAAA,OAIK,UAAS,GAAkB;AAAA,IAChC,MAAM,SAAS,IAAI;AAAA,IACnB,WAAW,MAAM,KAAK;AAAA,MAAK,OAAO,IAAI,GAAG,KAAK;AAAA,IAC9C,WAAW,SAAS,QAAQ;AAAA,MAC3B,KAAK,MAAM,OAAO,IAAI,OAAO,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,IACtD;AAAA,IACA,KAAK,IAAI,SAAS;AAAA;AAAA,EAInB,YAAY,CACX,YACyE;AAAA,IACzE,MAAM,MAID,CAAC;AAAA,IACN,WAAW,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,GAAG,UAAU,CAAC,GAAG;AAAA,MACzD,IAAI,GAAG,SAAS;AAAA,QAAU;AAAA,MAC1B,MAAM,MAAM,KAAK,GAAG,KAAK;AAAA,MACzB,IAAI,KAAK;AAAA,QACR,OAAO,GAAG;AAAA,QACV,MAAM,OAAO,KAAK,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC;AAAA,QACvD;AAAA,MACD,CAAC;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAET;AAIA,SAAS,SAAS,CAAC,GAAY,GAAqB;AAAA,EACnD,IAAI,MAAM;AAAA,IAAG,OAAO;AAAA,EACpB,KACE,OAAO,MAAM,YAAY,OAAO,MAAM,cACtC,OAAO,MAAM,YAAY,OAAO,MAAM,WACtC;AAAA,IACD,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA,EAC9B;AAAA,EACA,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA;;;AKzM9B,gBAAsB;AAiCf,SAAS,gBAAgB,CAC/B,gBACA,aAC4D;AAAA,EAC5D,MAAM,MAAM,IAAI;AAAA,EAChB,YAAY,QAAQ,WAAW,gBAAgB;AAAA,IAC9C,MAAM,YAAY,IAAI;AAAA,IACtB,WAAW,MAAM,YAAY,IAAI,MAAM,KAAK,CAAC,GAAG;AAAA,MAC/C,IAAI,GAAG,aAAa;AAAA,QAAW,UAAU,IAAI,GAAG,UAAU,EAAE;AAAA,IAC7D;AAAA,IACA,IAAI,IAAI,QAAQ,iBAAiB,QAAQ,SAAS,CAAC;AAAA,EACpD;AAAA,EACA,OAAO;AAAA;AAMD,SAAS,SAAS,CAAC,MAAc,cAA8B;AAAA,EACrE,OAAO,GAAG,WAAW;AAAA;AAStB,eAAsB,cAAc,CACnC,IACA,YACA,UACA,OAAyC,CAAC,GACR;AAAA,EAClC,MAAM,OAAO,KAAK;AAAA,EAClB,OAAO,QAAQ,KAAK,QAAQ,QAAQ,aAAa,MAAM,QAAQ,IAAI;AAAA,IAClE,GACE,WAAW,QAAQ,EACnB,UAAU,EACV,MAAM,UAAU,MAAM,UAAU,EAChC,MAAM,UAAU,MAAM,QAAQ,EAC9B,MAAM,aAAa,KAAK,IAAI,EAC5B,QAAQ;AAAA,IACV,GACE,WAAW,cAAc,EACzB,UAAU,EACV,MAAM,gBAAgB,MAAM,UAAU,EACtC,MAAM,gBAAgB,MAAM,QAAQ,EACpC,QAAQ;AAAA,IACV,GACE,WAAW,QAAQ,EACnB,UAAU,EACV,MAAM,gBAAgB,MAAM,UAAU,EACtC,MAAM,gBAAgB,MAAM,QAAQ,EACpC,QAAQ;AAAA,IACV,OACG,QAAQ,QAAQ,CAAC,CAAC,IAClB,GACC,WAAW,WAAW,EACtB,UAAU,EACV,MAAM,gBAAgB,MAAM,UAAU,EACtC,MAAM,gBAAgB,MAAM,QAAQ,EACpC,QAAQ,WAAW,KAAK,EACxB,QAAQ;AAAA,IACZ,OACG,gBAAgB,IAAI,YAAY,UAAU,IAAI,IAC9C,QAAQ,QAAQ,CAAC,CAAC;AAAA,EACtB,CAAC;AAAA,EAGD,MAAM,cAAc,IAAI;AAAA,EACxB,WAAW,MAAM,KAAK;AAAA,IACrB,MAAM,IAAI,OAAO,GAAG,YAAY;AAAA,IAChC,MAAM,OAAO,YAAY,IAAI,CAAC,KAAK,CAAC;AAAA,IACpC,KAAK,KAAK,EAAE;AAAA,IACZ,YAAY,IAAI,GAAG,IAAI;AAAA,EACxB;AAAA,EAEA,MAAM,iBAAiB,IAAI;AAAA,EAC3B,WAAW,OAAO,QAAQ;AAAA,IACzB,MAAM,IAAI,OAAO,IAAI,YAAY;AAAA,IACjC,MAAM,OAAO,eAAe,IAAI,CAAC,KAAK,CAAC;AAAA,IACvC,KAAK,KAAK,GAAG;AAAA,IACb,eAAe,IAAI,GAAG,IAAI;AAAA,EAC3B;AAAA,EAEA,MAAM,aAAa,IAAI;AAAA,EACvB,WAAW,OAAO,QAAQ;AAAA,IACzB,MAAM,IAAI,OAAO,IAAI,YAAY;AAAA,IACjC,MAAM,OAAO,WAAW,IAAI,CAAC,KAAK,CAAC;AAAA,IACnC,KAAK,KAAK;AAAA,MACT,IAAI,UAAU,IAAI,OAAO,OAAO,IAAI,OAAO,CAAC;AAAA,MAC5C,OAAO,IAAI;AAAA,MACX,cAAc;AAAA,MACd,aAAa,OAAO,IAAI,OAAO;AAAA,MAC/B,MAAM,IAAI;AAAA,MACV,MAAM,IAAI;AAAA,MACV,YAAY,IAAI;AAAA,MAChB,OAAO;AAAA,IACR,CAAiB;AAAA,IACjB,WAAW,IAAI,GAAG,IAAI;AAAA,EACvB;AAAA,EAEA,MAAM,iBAAiB,IAAI;AAAA,EAC3B,WAAW,OAAO,WAAW;AAAA,IAC5B,MAAM,IAAI,OAAO,IAAI,YAAY;AAAA,IACjC,MAAM,OAAO,eAAe,IAAI,CAAC,KAAK,CAAC;AAAA,IACvC,KAAK,KAAK;AAAA,MACT,SAAS,OAAO,IAAI,OAAO;AAAA,MAC3B,UAAU,IAAI,aAAa,OAAO,OAAO,OAAO,IAAI,QAAQ;AAAA,MAC5D,KAAK,IAAI;AAAA,MACT,WAAW,IAAI;AAAA,IAChB,CAAC;AAAA,IACD,eAAe,IAAI,GAAG,IAAI;AAAA,EAC3B;AAAA,EACA,MAAM,QAAQ,iBAAiB,gBAAgB,WAAW;AAAA,EAE1D,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,SAAS,QAAQ;AAAA,IAC3B,MAAM,IAAI,OAAO,MAAM,MAAM;AAAA,IAC7B,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,IACvB,OAAO,IAAI,GAAG;AAAA,MACb;AAAA,MACA,KAAK,OAAQ,KAAK,OAAO,CAAC,IAAM,YAAY,IAAI,CAAC,KAAK,CAAC;AAAA,MACvD,QAAQ,eAAe,IAAI,CAAC,KAAK,CAAC;AAAA,MAClC,UAAU,OAAQ,KAAK,YAAY,CAAC,IAAM,WAAW,IAAI,CAAC,KAAK,CAAC;AAAA,IACjE,CAAC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAIR,eAAe,eAAe,CAC7B,IACA,YACA,UACA,MASC;AAAA,EAED,MAAM,QAAQ,KAAK,YAChB,YAAW,KAAI,KACf,KAAK,UAAU,IAAI,CAAC,MAAM,wBAAuB,OAAO,QAAQ,GAChE,UACD,OACC;AAAA,EACH,QAAQ,SAAS,MAAM;AAAA;AAAA;AAAA,0BASE,kCAAkC,YAAY;AAAA;AAAA,GAErE,QAAQ,EAAE;AAAA,EACZ,OAAO;AAAA;;;AClLR,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,MAAM;AAML,SAAS,kBAAkB,CAAC,KAAmC;AAAA,EACrE,IAAI,CAAC,IAAI,WAAW,MAAM;AAAA,IAAG,OAAO;AAAA,EACpC,MAAM,QAAQ,IAAI,MAAM,CAAC,EAAE,MAAM,IAAI;AAAA,EACrC,OAAO,YAAY,SAAS;AAAA,EAC5B,IAAI,CAAC,YAAY,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EACvC,IAAI,UAAU,YAAY,MAAM,WAAW,GAAG;AAAA,IAC7C,WAAW,KAAK,UAAU;AAAA,IAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM;AAAA,MAAG,OAAO;AAAA,IACjD,OAAO,EAAE,YAAY,MAAM,OAAO,KAAK,OAAO;AAAA,EAC/C;AAAA,EACA,IAAI,UAAU,YAAY,MAAM,WAAW,KAAK,MAAM,IAAI;AAAA,IACzD,OAAO,EAAE,YAAY,MAAM,OAAO,SAAS,MAAM,GAAG;AAAA,EACrD;AAAA,EACA,OAAO;AAAA;AAGR,IAAM,OAAO,IAAI,YAAY,SAAS,EAAE,OAAO,KAAK,CAAC;AAGrD,SAAS,WAAW,CAAC,GAA0B;AAAA,EAC9C,MAAM,IAAI,EAAE,UAAU,WAAW,IAAI,IAAI,EAAE,UAAU,MAAM,CAAC,IAAI,EAAE;AAAA,EAClE,MAAM,QAAQ,IAAI,WAAW,EAAE,SAAS,CAAC;AAAA,EACzC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACtC,MAAM,KAAK,OAAO,SAAS,EAAE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;AAAA,EACzD;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,QAAQ,KAAK,OAAO,KAAK;AAAA,IACxB,MAAM;AAAA,IACP,MAAM,IAAI,MAAM,eAAe,EAAE,gCAAgC;AAAA;AAAA,EAElE,QAAQ,MAAM,YAAY;AAAA,EAC1B,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,IACrB,MAAM,IAAI,MAAM,eAAe,EAAE,sCAAsC;AAAA,EACxE;AAAA,EACA,OAAO;AAAA;AAIR,SAAS,UAAU,CAClB,GACwD;AAAA,EACxD,MAAM,MAAM,mBAAmB,EAAE,GAAG;AAAA,EACpC,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EACjB,MAAM,QAAQ,YAAY,CAAC;AAAA,EAC3B,IAAI,IAAI,SAAS,OAAO;AAAA,IACvB,OAAO;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,QACL,qBAAqB,IAAI;AAAA,QACzB,UAAU,IAAI;AAAA,QACd,WAAW,KAAK;AAAA,MACjB;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,OAAO;AAAA,IACZ,qBAAqB,IAAI;AAAA,IACzB,UAAU,IAAI;AAAA,IACd,SAAS,KAAK,IAAI;AAAA,EACnB;AAAA,EAEA,IAAI,UAAU;AAAA,IAAM,OAAO,EAAE,MAAM,cAAc,MAAM,KAAK;AAAA,EAC5D,IAAI,MAAM,WAAW,IAAI,GAAG;AAAA,IAC3B,OAAO;AAAA,MACN,MAAM;AAAA,MACN,MAAM,KAAK,MAAM,WAAW,KAAK,MAAM,MAAM,CAAC,IAAI;AAAA,IACnD;AAAA,EACD;AAAA,EACA,MAAM,IAAI,MACT,eAAe,EAAE,gDAClB;AAAA;AAeM,SAAS,gBAAgB,CAC/B,QACA,WAC+C;AAAA,EAC/C,MAAM,MAAM,IAAI;AAAA,EAChB,MAAM,WAA0B,CAAC;AAAA,EACjC,WAAW,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG;AAAA,IAClE,MAAM,QAAQ,WAAW,CAAC;AAAA,IAC1B,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,IAAI,KAAK,IAAI,IAAI,EAAE,QAAQ;AAAA,IAC3B,IAAI,CAAC,IAAI;AAAA,MACR,IAAI,EAAE,aAAa,MAAM;AAAA,QACxB,KAAK,EAAE,OAAO,IAAI,MAAM,SAAS,QAAQ,IAAI,QAAQ,UAAU;AAAA,MAChE,EAAO;AAAA,QACN,MAAM,OAAO,UAAU,IAAI,EAAE,QAAQ;AAAA,QACrC,IAAI,CAAC,MAAM;AAAA,UACV,MAAM,IAAI,MACT,eAAe,EAAE,0BAA0B,EAAE,kCAC9C;AAAA,QACD;AAAA,QACA,KAAK;AAAA;AAAA,MAEN,KAAK,KAAK,IAAI,UAAU,EAAE;AAAA,MAC1B,IAAI,IAAI,EAAE,UAAU,EAAE;AAAA,IACvB;AAAA,IACA,SAAS,KAAK;AAAA,MACb,IAAI,UAAU,GAAG,SAAS,SAAS,EAAE,OAAO;AAAA,MAC5C,OAAO,GAAG;AAAA,MACV,MAAM,MAAM;AAAA,MACZ,aAAa,EAAE;AAAA,MACf,MAAM,MAAM;AAAA,MACZ,OAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA,EACA,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,SAAS;AAAA;;;AhB1DpC,IAAM,gBAAgB;AAG7B,IAAM,UAAmD;AAAA,EACxD,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,KAAK;AAAA,EACL,OAAO;AACR;AAEA,IAAM,WAAmB,EAAE,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,GAAG;AAQ/D,SAAS,eAAe,CAC9B,KAC+B;AAAA,EAC/B,MAAM,MAAM,IAAI;AAAA,EAChB,YAAY,MAAM,WAAW,OAAO,QAAQ,IAAI,OAAO,GAAG;AAAA,IACzD,MAAM,IAAI;AAAA,IAIV,MAAM,MAAM,MAAM,QAAQ,EAAE,UAAU,IACnC,EAAE,aACF,EAAE,aACD,CAAC,EAAE,UAAoB,IACvB,CAAC;AAAA,IACL,IAAI,EAAE,WAAW,IAAI,WAAW,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,SAAS,GAAG,CAAC;AAAA,MACrE,OAAO;AAAA,QACN,OAAO,WAAW;AAAA,MACnB;AAAA,IACD,WAAW,MAAM;AAAA,MAAK,IAAI,IAAI,EAAE;AAAA,EACjC;AAAA,EACA,OAAO,CAAC,GAAG,GAAG;AAAA;AAGf,IAAM,UAAS,CAAC,MAAc,YAAW,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK;AAelE,SAAS,QAAQ,CACvB,QAKA,KACW;AAAA,EACX,IAAI,CAAC,OAAO,OAAO,CAAC,OAAO;AAAA,IAC1B,OAAO,EAAE,QAAQ,aAAa,OAAO,CAAC,EAAE;AAAA,EACzC,MAAM,SAAS,CAAC,aAA+B;AAAA,IAC9C,QAAQ;AAAA,IACR,SAAS,EAAE,MAAM,OAAO,QAAQ;AAAA,IAChC,OAAO,CAAC;AAAA,EACT;AAAA,EACA,IAAI,QAAO,OAAO,WAAW,MAAM,OAAO;AAAA,IACzC,OAAO,OAAO,OAAO,OAAO,uCAAuC;AAAA,EACpE,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,SAAS,KAAK,MAAM,OAAO,WAAW;AAAA,IACrC,MAAM;AAAA,IACP,OAAO,OAAO,0BAA0B;AAAA;AAAA,EAEzC,IAAI,OAAO,gBAAgB,QAAO,OAAO,WAAW;AAAA,IACnD,OAAO,OAAO,yDAAyD;AAAA,EACxE,MAAM,aAAa,oBAAoB,GAAG,EAAE;AAAA,EAC5C,IAAI,OAAO,eAAe;AAAA,IACzB,OAAO,OACN,wBAAwB,OAAO,yCAAyC,YACzE;AAAA,EACD,IAAI,OAAO,gBAAgB,IAAI,cAAc;AAAA,IAC5C,OAAO,OACN,4BAA4B,OAAO,iCAAiC,IAAI,cAAc,MACvF;AAAA,EACD,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,OAAO,YAAY;AAAA,IACtB,MAAM,KACL,eAAe,OAAO,wBAAwB,mBAC/C;AAAA,EACD,IAAI,OAAO,YAAY;AAAA,IACtB,MAAM,KAAK,qBAAqB,OAAO,SAAS;AAAA,EACjD,OAAO,EAAE,QAAQ,MAAM,MAAM;AAAA;AAiB9B,SAAS,SAAS,CAAC,GAAkC;AAAA,EACpD,QAAQ,EAAE,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,MAAgB;AAAA,IACrD,MAAM,IAAI,YAAY,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI;AAAA,IACxC,OAAO;AAAA,MACN,OAAO,KAAK,EAAE;AAAA,MACd,UAAU;AAAA,MACV,MAAM,GAAG,UAAU;AAAA,MACnB,QAAQ,GAAG,UAAU;AAAA,MAGrB,QAAQ;AAAA,MACR,aAAa,GAAG,cAAc;AAAA,MAC9B,eAAe,GAAG,gBAAgB;AAAA,MAClC,eAAe,GAAG,gBAAgB;AAAA,MAClC,YAAY;AAAA,IACb;AAAA,GACA;AAAA;AAIF,eAAsB,YAAY,CACjC,MACA,MAGwB;AAAA,EACxB,MAAM,MAAoB;AAAA,IACzB,IAAI;AAAA,IACJ,MAAM,KAAK;AAAA,IACX,IAAI,KAAK;AAAA,IACT,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ,OAAO,CAAC;AAAA,IACR,UAAU,CAAC;AAAA,EACZ;AAAA,EACA,MAAM,OAAO,MAAM;AAAA,IAClB,IAAI,KAAK,IAAI,SAAS,WAAW,KAAK,CAAC,IAAI;AAAA,IAC3C,OAAO;AAAA;AAAA,EAGR,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,MAAM,MAAM,4BAA4B,KAAK,WAAW;AAAA,IACvD,OAAO,KAAK;AAAA,IACb,IAAI,SAAS,KAAK;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,wDAAyD,IAAc;AAAA,IACjF,CAAC;AAAA,IACD,OAAO,KAAK;AAAA;AAAA,EAEb,MAAM,QAAQ,mBAAmB,GAAG;AAAA,EACpC,IAAI,MAAM,UAAU,SAAS;AAAA,IAC5B,IAAI,SAAS,KAAK;AAAA,MACjB,MAAM;AAAA,MACN,SAAS,SAAS,MAAM,qBAAqB,MAAM,QAAQ,KAAK,IAAI;AAAA,IACrE,CAAC;AAAA,IACD,OAAO,KAAK;AAAA,EACb;AAAA,EACA,MAAM,YAAY,gBAAgB,GAAG;AAAA,EACrC,IAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAAA,IAC9B,IAAI,SAAS,KAAK,EAAE,MAAM,UAAU,SAAS,UAAU,MAAM,CAAC;AAAA,IAC9D,OAAO,KAAK;AAAA,EACb;AAAA,EACA,MAAM,OAAO,CAAC,QACb,UAAU,KAAK,CAAC,MAAM,IAAI,WAAW,OAAO,KAAK,CAAC;AAAA,EACnD,MAAM,aAAa,KAAK,cAAc,IAAI,cAAc;AAAA,EACxD,MAAM,aAAa,KAAK,OAAO;AAAA,EAC/B,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,YAAY,IAAI;AAAA,EACtB,IAAI,YAAY;AAAA,EAEhB,SAAS,IAAI,KAAK,KAAM,KAAK,KAAK,IAAI,KAAK,eAAe;AAAA,IACzD,MAAM,IAAI,KAAK,IAAI,IAAI,gBAAgB,GAAG,KAAK,EAAE;AAAA,IAGjD,MAAM,SAAS,IAAI;AAAA,IACnB,SAAS,IAAI,EAAG,KAAK,GAAG,KAAK;AAAA,MAC5B,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC;AAAA,MAC7B,MAAM,QAAQ,EAAE,SAAS;AAAA,MACzB,IAAI,OAAO;AAAA,QACV,IAAI,SAAS,KAAK;AAAA,UACjB,MAAM,QAAQ,MAAM,SAAS;AAAA,UAC7B,SAAS,SAAS,MAAM,MAAM;AAAA,UAC9B,QAAQ;AAAA,aACJ,MAAM,SAAS,gBAAgB,EAAE,aAAa,KAAK,IAAI,CAAC;AAAA,QAC7D,CAAC;AAAA,QACD,OAAO,KAAK;AAAA,MACb;AAAA,MACA,IAAI,EAAE,UAAU,QAAQ;AAAA,QAAQ,IAAI;AAAA,MACpC,IAAI,CAAC,EAAE,aAAa,CAAC,EAAE,SAAS;AAAA,QAC/B,IAAI,SAAS,KAAK;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,SAAS;AAAA,UAClB,QAAQ;AAAA,UACR,aAAa;AAAA,QACd,CAAC;AAAA,QACD,OAAO,KAAK;AAAA,MACb;AAAA,MACA,IAAI,CAAC,EAAE,cAAc;AAAA,QACpB,IAAI,SAAS,KAAK;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,SAAS;AAAA,UAClB,QAAQ;AAAA,UACR,aAAa;AAAA,QACd,CAAC;AAAA,QACD,OAAO,KAAK;AAAA,MACb;AAAA,MACA,IAAI,CAAC,EAAE,MAAM,SAAS,CAAC,EAAE,QAAQ;AAAA,QAChC,IAAI,SAAS,KAAK;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,SAAS;AAAA,UAClB,QAAQ;AAAA,UACR,aAAa;AAAA,QACd,CAAC;AAAA,QACD,OAAO,KAAK;AAAA,MACb;AAAA,MACA,IAAI,aAAa,EAAE;AAAA,MACnB,IAAI,eAAe,WAAW;AAAA,QAC7B,MAAM,KAAK,EAAE;AAAA,QACb,aAAa,UAAU,IAAI,EAAE;AAAA,QAC7B,IAAI,eAAe,WAAW;AAAA,UAC7B,aAAa,MAAM,KAAK,eAAe,EAAE;AAAA,UACzC,UAAU,IAAI,IAAI,UAAU;AAAA,QAC7B;AAAA,QACA,IAAI,CAAC,WAAW;AAAA,UACf,IAAI,MAAM,KACT,sCAAsC,KAAK,qBAAqB,+DACjE;AAAA,UACA,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MACA,OAAO,IAAI,GAAG;AAAA,QACb,MAAM;AAAA,UACL,QAAQ;AAAA,UACR,MAAM,KAAK,EAAE;AAAA,UACb,WAAW,EAAE,aAAa;AAAA,UAC1B,iBAAiB;AAAA,UACjB,gBAAgB,KAAK,EAAE;AAAA,QACxB;AAAA,QACA,KAAK,UAAU,CAAC;AAAA,QAChB,QAAQ,EAAE,OAAO,OAAO,CAAC,MAAM,KAAK,EAAE,GAAG,CAAC;AAAA,MAC3C,CAAC;AAAA,IACF;AAAA,IAEA,SAAS,IAAI,EAAG,KAAK,GAAG,KAAK;AAAA,MAC5B,MAAM,QAAQ,OAAO,IAAI,CAAC;AAAA,MAC1B,MAAM,UAAU,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,UAAoB,CAAC,CAAC,CAAC;AAAA,MACvE,IAAI;AAAA,MACJ,IAAI;AAAA,QACH,MAAM,iBAAiB,MAAM,QAAQ,OAAO;AAAA,QAC3C,OAAO,KAAK;AAAA,QACb,IAAI,SAAS,KAAK;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,SAAS,MAAO,IAAc;AAAA,UACvC,QAAQ;AAAA,QACT,CAAC;AAAA,QACD,OAAO,KAAK;AAAA;AAAA,MAEb,MAAM,MAAM,IAAI,sBACf,OACA,IAAI,QACJ,MAAM,MACN,QACD;AAAA,MACA,IAAI;AAAA,QACH,MAAM,IAAI,MAAM,WACf,KACA,EAAE,KAAK,IAAI,KAAK,QAAQ,CAAC,GAAG,UAAU,IAAI,SAAS,GACnD,GACD;AAAA,QACA,IAAI,UAAU,EAAE;AAAA,QAChB,IAAI,iBAAiB,EAAE;AAAA,QACtB,OAAO,KAAK;AAAA,QACb,IAAI,CAAC,YAAY,GAAG;AAAA,UAAG,MAAM;AAAA,QAC7B,IAAI,SAAS,KAAK;AAAA,UACjB,MAAM;AAAA,UACN,SAAS,SAAS,KAAM,IAAc,SAAU,IAAc;AAAA,UAC9D,QAAQ;AAAA,QACT,CAAC;AAAA,QACD,OAAO,KAAK;AAAA;AAAA,MAEb,MAAM,IAAI,UAAU;AAAA,MACpB,IAAI,cAAc,IAAI,iBAAiB,CAAC,IAAI,cAAc;AAAA,QACzD,IAAI,eAAe,SAAS,MAAM,IAAI,gDAAgD,KAAK,gCAAgC;AAAA,MAC5H;AAAA,MACA,IAAI;AAAA,MACJ,IAAI,OAAO,MAAM,IAAI;AAAA,MACrB,IAAI,UAAU,MAAM,OAAO;AAAA,MAC3B,KAAK,aAAa,CAAC;AAAA,IACpB;AAAA,EACD;AAAA,EACA,IAAI,SAAS,MAAM;AAAA,EACnB,OAAO,KAAK;AAAA;AAIb,SAAS,cAAc,CAAC,QAAkC;AAAA,EACzD,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,MAAmB;AAAA,IACxB,UAAU,CAAC,QAAQ,OAAO,SAAS,GAAG;AAAA,IACtC,cAAc,CAAC,MAAM,QAAQ,OAAO,aAAa,MAAM,GAAG;AAAA,IAC1D,iBAAiB,CAAC,OAAO,OAAO,gBAAgB,EAAE;AAAA,IAClD,mBAAmB,CAAC,MAAM,UAAU,OAAO,kBAAkB,MAAM,KAAK;AAAA,IACxE,YAAY,CAAC,OAAO;AAAA,MACnB,IAAI,IAAI,OAAO,IAAI,EAAE;AAAA,MACrB,IAAI,CAAC,GAAG;AAAA,QACP,IAAI,OAAO,WAAW,EAAE;AAAA,QAExB,EAAE,MAAM,MAAM,OAAO,OAAO,EAAE,CAAC;AAAA,QAC/B,OAAO,IAAI,IAAI,CAAC;AAAA,QAChB,OAAO,OAAO,OAAO;AAAA,UACpB,OAAO,OAAO,OAAO,KAAK,EAAE,KAAK,EAAE,KAAe;AAAA,MACpD;AAAA,MACA,OAAO;AAAA;AAAA,EAET;AAAA,EACA,QAAQ,iBAAiB,mBAAmB;AAAA,EAC5C,IAAI;AAAA,IACH,IAAI,kBAAkB,CAAC,OAAO,gBAAgB,KAAK,QAAQ,EAAE;AAAA,EAC9D,IAAI;AAAA,IACH,IAAI,iBAAiB,CAAC,WAAW,eAAe,KAAK,QAAQ,MAAM;AAAA,EACpE,OAAO;AAAA;AAQR,eAAsB,cAAc,CACnC,MACwB;AAAA,EACxB,MAAM,aAAa,KAAK,cAAc;AAAA,EACtC,MAAM,SAAS,eAAe,KAAK,MAAM;AAAA,EACzC,MAAM,WAAW,IAAI,cAAc,EAAE,QAAQ,WAAW,CAAC;AAAA,EACzD,OAAO,aACN;AAAA,IACC,QAAQ,CAAC,MAAM,SAAS,OAAO,CAAC;AAAA,IAChC,gBAAgB,OAAO,QACrB,MAAM,OAAO,gBAAgB,EAAE,GAAG;AAAA,EACrC,GACA,KAAK,MAAM,mBAAmB,WAAW,QAAQ,OAAO,CACzD;AAAA;;AiB/bD,uBAAS;AA0BT,SAAS,aAAa,CAAC,OAAyB;AAAA,EAC/C,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,MAAM,SAAS;AAAA,EACrD,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,MAAM,IAAI,aAAa;AAAA,EACxD,IAAI,SAAS,OAAO,UAAU,YAAY,EAAE,iBAAiB,OAAO;AAAA,IACnE,MAAM,MAA+B,CAAC;AAAA,IACtC,WAAW,KAAK,OAAO,KAAK,KAAK,EAAE,KAAK,GAAG;AAAA,MAC1C,IAAI,KAAK,cAAe,MAAkC,EAAE;AAAA,IAC7D;AAAA,IACA,OAAO;AAAA,EACR;AAAA,EACA,OAAO,SAAS;AAAA;AAGjB,SAAS,cAAc,CAAC,MAA0B,OAAyB;AAAA,EAC1E,IAAI,UAAU,aAAa,UAAU;AAAA,IAAM,OAAO;AAAA,EAClD,QAAQ;AAAA,SACF;AAAA,SACA;AAAA,MACJ,OAAO,OAAO,UAAU,WACrB,OAAO,KAAK,EAAE,SAAS,IACvB,OAAO,KAAK;AAAA,SACX;AAAA,MACJ,OAAO,UAAU,QAAQ,UAAU,UAAU,UAAU,MACpD,SACA;AAAA,SACC,aAAa;AAAA,MAGjB,MAAM,KACL,iBAAiB,OACd,MAAM,QAAQ,IACd,OAAO,UAAU,WAChB,QACA,KAAK,MAAM,OAAO,KAAK,CAAC;AAAA,MAC7B,OAAO,OAAO,EAAE;AAAA,IACjB;AAAA,SACK;AAAA,MACJ,OAAO,KAAK,UACX,cAAc,OAAO,UAAU,WAAW,KAAK,MAAM,KAAK,IAAI,KAAK,CACpE;AAAA;AAAA,MAEA,OAAO,iBAAiB,aACrB,OAAO,KAAK,KAAK,EAAE,SAAS,KAAK,IACjC,OAAO,KAAK;AAAA;AAAA;AAKlB,SAAS,YAAY,CACpB,KACA,KACA,UAAoB,OAAO,KAAK,IAAI,OAAO,EAAE,KAAK,GACxB;AAAA,EAC1B,MAAM,MAA+B,CAAC;AAAA,EACtC,WAAW,KAAK;AAAA,IACf,IAAI,KAAK,eAAe,IAAI,QAAQ,IAAI,MAAM,IAAI,EAAE;AAAA,EACrD,IAAI,gBAAgB,eAAe,QAAQ,IAAI,aAAa;AAAA,EAC5D,OAAO;AAAA;AAGR,IAAM,OAAO,CAAC,MAA+B,KAAK,UAAU,CAAC;AAE7D,SAAS,MAAM,CAAC,OAAyB;AAAA,EACxC,OAAO,YAAW,QAAQ,EACxB,OAAO,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK;AAAA,CAAI,CAAC,EACnC,OAAO,KAAK;AAAA;AAGf,IAAM,WAAW,CAAC,QAAa,OAAO,IAAI,aAAa;AAEvD,SAAS,eAAe,CACvB,GACA,GACqB;AAAA,EACrB,OAAO,OAAO,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;AAAA;AAUzC,SAAS,WAAW,CAC1B,QACA,UAKA,QACgB;AAAA,EAChB,QAAQ,MAAM,OAAO;AAAA,EACrB,MAAM,WAAW,CAAC,QAAa,SAAS,GAAG,KAAK,QAAQ,SAAS,GAAG,KAAK;AAAA,EACzE,MAAM,WAA4B,CAAC;AAAA,EACnC,MAAM,SAA4B,CAAC;AAAA,EACnC,MAAM,OAAO,CAAC,OAAe,SAAiB,QAC7C,SAAS,KAAK;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,SAAS,GAAG,SAAS;AAAA,OACjB,MAAM,EAAE,IAAI,IAAI,CAAC;AAAA,EACtB,CAAC;AAAA,EAEF,YAAY,OAAO,QAAQ,OAAO,QAAQ,MAAM,GAAG;AAAA,IAClD,MAAM,QAAQ,SAAS,OAAO,IAAI,KAAK,KAAK,CAAC,GAAG,OAAO,QAAQ;AAAA,IAC/D,MAAM,SAAS,OAAO,IAAI,KAAK,KAAK,CAAC;AAAA,IACrC,MAAM,iBAAiB,OAAO,OAAO,QAAQ;AAAA,IAC7C,MAAM,YAAY,KAAK,IAAI,CAAC,MAAM,KAAK,aAAa,KAAK,CAAC,CAAC,CAAC;AAAA,IAC5D,MAAM,aAAa,eAAe,IAAI,CAAC,MAAM,KAAK,aAAa,KAAK,CAAC,CAAC,CAAC;AAAA,IACvE,MAAM,UAA2B;AAAA,MAChC;AAAA,MACA,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ,OAAO,SAAS;AAAA,MACxB,cAAc,OAAO,UAAU;AAAA,IAChC;AAAA,IACA,OAAO,KAAK,OAAO;AAAA,IAEnB,MAAM,UAAU,IAAI,aAAa;AAAA,IACjC,IAAI,CAAC,SAAS,QAAQ;AAAA,MAErB,MAAM,SAAS,IAAI;AAAA,MACnB,WAAW,KAAK;AAAA,QAAW,OAAO,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC;AAAA,MACjE,WAAW,KAAK;AAAA,QAAY,OAAO,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC;AAAA,MAClE,MAAM,OAAO,CAAC,GAAG,MAAM,EAAE,KAAK,IAAI,OAAO,MAAM,CAAC;AAAA,MAChD,IAAI,MAAM;AAAA,QACT,OAAO,GAAG,KAAK;AAAA,QACf,MAAM,KAAK,KAAK,MAAM,CAAC;AAAA,QACvB,KACC,OACA,gBAAgB,GAAG,kBAClB,IAAI,IACD,4BACA,0CAEL;AAAA,MACD,EAAO;AAAA,gBAAQ,QAAQ,KAAK;AAAA,MAC5B;AAAA,IACD;AAAA,IAEA,MAAM,QAAQ,CAAC,QACd,KAAK,UACJ,QAAQ,IAAI,CAAC,MAAM,eAAe,IAAI,QAAQ,IAAI,MAAM,IAAI,EAAE,CAAC,CAChE;AAAA,IACD,MAAM,SAAS,CAAC,QACf,OAAO,YAAY,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAAA,IACnD,MAAM,cAAc,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,IAC5D,MAAM,eAAe,IAAI;AAAA,IACzB,MAAM,UAAU,OAAO,KAAK,IAAI,OAAO,EAAE,KAAK;AAAA,IAC9C,WAAW,OAAO,MAAM;AAAA,MACvB,MAAM,MAAM,MAAM,GAAG;AAAA,MACrB,aAAa,IAAI,GAAG;AAAA,MACpB,MAAM,IAAI,YAAY,IAAI,GAAG;AAAA,MAC7B,IAAI,CAAC,GAAG;AAAA,QACP,KACC,OACA,GAAG,iDACH,OAAO,GAAG,CACX;AAAA,QACA;AAAA,MACD;AAAA,MACA,IAAI,SAAS,CAAC,IAAI,IAAI;AAAA,QACrB,QAAQ;AAAA,QACR;AAAA,MACD;AAAA,MACA,MAAM,IAAI,aAAa,KAAK,GAAG,OAAO;AAAA,MACtC,MAAM,IAAI,aAAa,KAAK,KAAK,OAAO;AAAA,MAIxC,IAAI,SAAS,CAAC,IAAI,MAAM;AAAA,QACvB,EAAE,gBAAgB,EAAE;AAAA,MACrB;AAAA,MACA,MAAM,MAAM,gBAAgB,GAAG,CAAC;AAAA,MAChC,IAAI,QAAQ;AAAA,QAAW,QAAQ;AAAA,MAE9B;AAAA,aACC,OACA,GAAG,QAAQ,cAAc,OAAO,EAAE,IAAI,eAAe,OAAO,EAAE,IAAI,KAClE,OAAO,GAAG,CACX;AAAA,IACF;AAAA,IACA,WAAW,KAAK,gBAAgB;AAAA,MAC/B,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,CAAC;AAAA,QAC7B,KACC,OACA,GAAG,MAAM,CAAC,yCACV,OAAO,CAAC,CACT;AAAA,IACF;AAAA,EACD;AAAA,EACA,OAAO,EAAE,UAAU,OAAO;AAAA;",
25
- "debugId": "73562E7C772D0E6364756E2164756E21",
25
+ "mappings": "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",
26
+ "debugId": "9834F9FE7A665D2764756E2164756E21",
26
27
  "names": []
27
28
  }