@invisi-labs/protocol 1.1.6 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/chunk-7SS2YSEF.js +199 -0
- package/dist/chunk-7SS2YSEF.js.map +1 -0
- package/dist/{chunk-BYJ4LXCJ.js → chunk-HHJLFLVJ.js} +616 -714
- package/dist/chunk-HHJLFLVJ.js.map +1 -0
- package/dist/chunk-MVQQD5W5.js +487 -0
- package/dist/chunk-MVQQD5W5.js.map +1 -0
- package/dist/chunk-Z2XPYNMC.js +446 -0
- package/dist/chunk-Z2XPYNMC.js.map +1 -0
- package/dist/contracts.cjs +615 -713
- package/dist/contracts.cjs.map +1 -1
- package/dist/contracts.d.cts +5 -5
- package/dist/contracts.d.ts +5 -5
- package/dist/contracts.js +1 -1
- package/dist/credit.cjs +3367 -0
- package/dist/credit.cjs.map +1 -0
- package/dist/credit.d.cts +252 -0
- package/dist/credit.d.ts +252 -0
- package/dist/credit.js +53 -0
- package/dist/credit.js.map +1 -0
- package/dist/index.cjs +4294 -4223
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +128 -933
- package/dist/index.d.ts +128 -933
- package/dist/index.js +2853 -3584
- package/dist/index.js.map +1 -1
- package/dist/note.cjs +3456 -0
- package/dist/note.cjs.map +1 -0
- package/dist/note.d.cts +232 -0
- package/dist/note.d.ts +232 -0
- package/dist/note.js +43 -0
- package/dist/note.js.map +1 -0
- package/dist/provenance.cjs +558 -0
- package/dist/provenance.cjs.map +1 -0
- package/dist/provenance.d.cts +188 -0
- package/dist/provenance.d.ts +188 -0
- package/dist/provenance.js +499 -0
- package/dist/provenance.js.map +1 -0
- package/dist/{types-BmUlasOg.d.cts → types-CUnFzl5S.d.cts} +530 -590
- package/dist/{types-BmUlasOg.d.ts → types-CUnFzl5S.d.ts} +530 -590
- package/dist/validation-8g0SQVE5.d.ts +235 -0
- package/dist/validation-MgURYiNF.d.cts +235 -0
- package/package.json +20 -5
- package/dist/chunk-BYJ4LXCJ.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/credit/index.ts","../src/fees/fee.ts","../src/validation.ts","../src/credit/credit-create.ts","../src/contracts/abis/InvisiProtocol.ts","../src/credit/credit-lifecycle.ts"],"sourcesContent":["export * from \"./credit-create\";\nexport * from \"./credit-lifecycle\";\nexport type {\n CreateCreditParams,\n CreditDrawParams,\n UpdateCreditParams,\n RevokeCreditParams,\n CreditPayer,\n CreditGrantRef,\n} from \"../contracts/types\";\n","import { getAddress } from \"ethers\";\nimport type { Address } from \"../contracts/index\";\nimport { uint, ZERO_ADDRESS } from \"../validation\";\n/** Canonical optional public fee. Omitting both fields explicitly selects zero fee. */\nexport function normalizeFee(p: { feeRecipient?: Address; feeAmount?: bigint }) {\n const feeRecipient = getAddress(p.feeRecipient ?? ZERO_ADDRESS) as Address;\n const feeAmount = uint(p.feeAmount ?? 0n, 128, \"feeAmount\");\n if ((BigInt(feeRecipient) === 0n) !== (feeAmount === 0n))\n throw new Error(\"invalid fee context\");\n return { feeRecipient, feeAmount };\n}\n","import { MAX_CIPHERTEXT_BYTES } from \"@invisi-labs/primitives\";\nimport type { DeploymentContext } from \"./rpc-types\";\nimport {\n AbiCoder,\n dataLength,\n getAddress,\n isHexString,\n keccak256,\n ParamType,\n toBeHex,\n} from \"ethers\";\nimport type { Address, Delivery, FundingParams, Hex, InputSource } from \"./contracts/index\";\n\nexport type { DeploymentContext } from \"./rpc-types\";\nexport interface TransactionContext extends DeploymentContext {\n tokenAddress: Address;\n now?: bigint;\n /** Explicit chain timestamp used to bind Credit draw UTC periods. */\n timestamp?: bigint;\n}\nexport const FIELD_MODULUS =\n 21888242871839275222246405745257275088548364400416034343698204186575808495617n;\nexport const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\" as const;\nexport const ZERO_WORD = toBeHex(0n, 32) as Hex;\nexport const EMPTY_PERMIT = {\n deadline: 0n,\n v: 0,\n r: ZERO_WORD,\n s: ZERO_WORD,\n} as const;\nexport const EMPTY_FUNDING: FundingParams = {\n payer: ZERO_ADDRESS,\n amount: 0n,\n sigNonce: 0n,\n deadline: 0n,\n signature: \"0x\",\n permit: EMPTY_PERMIT,\n};\nexport type FundingInput = Partial<Omit<FundingParams, \"permit\">> & {\n permit?: FundingParams[\"permit\"];\n};\nexport function uint(v: bigint | number | string, bits: number, name = \"value\"): bigint {\n if (\n (typeof v !== \"bigint\" && typeof v !== \"number\" && typeof v !== \"string\") ||\n (typeof v === \"number\" && !Number.isSafeInteger(v))\n )\n throw new Error(`${name} must be an integer`);\n const n = BigInt(v);\n if (n < 0n || n >= 1n << BigInt(bits)) throw new Error(`${name} exceeds u${bits}`);\n return n;\n}\nexport function field(v: bigint | string, name = \"field\"): bigint {\n const n = uint(v, 256, name);\n if (n >= FIELD_MODULUS) throw new Error(`${name} is noncanonical field`);\n return n;\n}\nexport const word = (v: bigint | string): Hex =>\n toBeHex(typeof v === \"bigint\" ? v : BigInt(v), 32) as Hex;\nexport function dense<T>(v: readonly T[], name: string): readonly T[] {\n if (!Array.isArray(v)) throw new Error(`${name} must be array`);\n for (let i = 0; i < v.length; i++)\n if (!Object.hasOwn(v, i) || v[i] === undefined || v[i] === null)\n throw new Error(`${name} has missing or sparse entries`);\n return v;\n}\nexport function known(v: object, keys: readonly string[], name = \"params\") {\n if (\n !v ||\n typeof v !== \"object\" ||\n Array.isArray(v) ||\n Object.keys(v).some((k) => !keys.includes(k))\n )\n throw new Error(`${name} has unsupported fields`);\n}\nexport function notes(v: readonly Hex[], name: string) {\n const r = dense(v, name).map((v) => word(field(v, name)));\n if (r.some((v) => BigInt(v) === 0n) || new Set(r).size !== r.length)\n throw new Error(`duplicate or zero ${name}`);\n return r;\n}\nexport function envelope(v: Hex, length: number, version?: number, maximum = length): Hex {\n if (\n !isHexString(v) ||\n !/^0x(?:[a-fA-F0-9]{2})*$/.test(v) ||\n dataLength(v) < length ||\n dataLength(v) > maximum\n )\n throw new Error(`ciphertext must be ${length} bytes`);\n if (version !== undefined && Number.parseInt(v.slice(2, 4), 16) !== version)\n throw new Error(\"unsupported ciphertext envelope version\");\n return v;\n}\nexport function normalizeContext(c: TransactionContext) {\n return {\n ...c,\n chainId: uint(c.chainId, 64, \"chainId\"),\n protocolAddress: getAddress(c.protocolAddress) as Hex,\n tokenAddress: getAddress(c.tokenAddress) as Hex,\n };\n}\nexport function checkDeadline(c: TransactionContext, value: bigint) {\n const n = uint(value, 64, \"deadline\");\n if (c.now !== undefined && n < uint(c.now, 64, \"now\")) throw new Error(\"deadline has expired\");\n return n;\n}\nexport function normalizeSources(\n sources: readonly InputSource[],\n inputCount: number,\n capacity: number\n) {\n dense(sources, \"sources\");\n if (\n inputCount < 0 ||\n inputCount > capacity ||\n sources.length > inputCount ||\n (inputCount === 0 ? sources.length !== 0 : sources.length === 0)\n )\n throw new Error(\"source count must be 1..inputCount, or empty for zero inputs\");\n let previous = 0n;\n return sources.map((s) => {\n known(s, [\"treeId\", \"merkleRoot\"], \"source\");\n const treeId = uint(s.treeId, 64, \"treeId\"),\n merkleRoot = word(field(s.merkleRoot, \"merkleRoot\"));\n if (treeId === 0n || treeId <= previous || BigInt(merkleRoot) === 0n)\n throw new Error(\"sources must have positive roots and strictly ascending tree IDs\");\n previous = treeId;\n return { treeId, merkleRoot };\n });\n}\nexport const pad = (v: readonly bigint[], n: number): bigint[] => [\n ...v,\n ...(Array(n - v.length).fill(0n) as bigint[]),\n];\n/** Receipt/transport validation must not reject unrelated future wallet codecs. */\nexport function normalizeOpaqueDelivery(\n value: Delivery,\n options: { empty?: boolean; allowEmpty?: boolean } = {}\n): Delivery {\n known(value, [\"ciphertext\", \"clue\"], \"delivery\");\n if (options.empty) {\n if (value.ciphertext !== \"0x\" || value.clue !== \"0x\")\n throw new Error(\"absent output requires an empty delivery\");\n return { ciphertext: \"0x\", clue: \"0x\" };\n }\n if (options.allowEmpty && value.ciphertext === \"0x\" && value.clue === \"0x\")\n return { ciphertext: \"0x\", clue: \"0x\" };\n const ciphertext = envelope(value.ciphertext, 1, undefined, MAX_CIPHERTEXT_BYTES);\n const clue = envelope(value.clue, 68);\n if (clue.slice(130, 132).toLowerCase() !== \"18\") throw new Error(\"clue precision must be 24\");\n return { ciphertext, clue };\n}\n\nexport const deliveriesHash = (v: readonly Delivery[]) =>\n keccak256(\n AbiCoder.defaultAbiCoder().encode(\n [\n {\n type: \"tuple[]\",\n components: [\n { name: \"ciphertext\", type: \"bytes\" },\n { name: \"clue\", type: \"bytes\" },\n ],\n },\n ].map((parameter) => ParamType.from(parameter)),\n [dense(v, \"deliveries\")]\n ) as Hex\n ) as Hex;\nexport function normalizeFunding(input: FundingInput = {}): FundingParams {\n const f = { ...EMPTY_FUNDING, ...input };\n getAddress(f.payer) as Hex;\n uint(f.amount, 128, \"depositAmount\");\n uint(f.sigNonce, 256, \"sigNonce\");\n uint(f.deadline, 256, \"funding deadline\");\n if (!isHexString(f.signature) || !/^0x(?:[a-fA-F0-9]{2})*$/.test(f.signature))\n throw new Error(\"invalid signature bytes\");\n const p = f.permit;\n uint(p.deadline, 256);\n uint(p.v, 8);\n for (const v of [p.r, p.s])\n if (!isHexString(v) || dataLength(v) !== 32) throw new Error(\"permit r/s must be bytes32\");\n if ((f.amount === 0n) !== (BigInt(f.payer) === 0n))\n throw new Error(\"deposit amount and payer must both be zero or positive\");\n if (\n f.amount === 0n &&\n (f.sigNonce !== 0n ||\n f.deadline !== 0n ||\n f.signature !== \"0x\" ||\n p.deadline !== 0n ||\n p.v !== 0 ||\n BigInt(p.r) !== 0n ||\n BigInt(p.s) !== 0n)\n )\n throw new Error(\"zero funding must be entirely empty\");\n return { ...f, payer: getAddress(f.payer) as Hex };\n}\nexport function validateFundingSubmission(f: FundingParams, caller?: Address, now?: bigint) {\n if (f.signature !== \"0x\" && now !== undefined && uint(now, 64, \"now\") > f.deadline)\n throw new Error(\"funding authorization has expired\");\n if (\n f.signature === \"0x\" &&\n (f.sigNonce !== 0n ||\n f.deadline !== 0n ||\n (caller !== undefined && f.amount > 0n && (getAddress(caller) as Hex) !== f.payer))\n )\n throw new Error(\"direct funding requires payer caller and zero nonce/deadline\");\n}\nexport const getEIP712Domain = (c: TransactionContext) => ({\n name: \"InvisibleProtocol\",\n version: \"1\",\n chainId: uint(c.chainId, 64),\n verifyingContract: getAddress(c.protocolAddress) as Hex,\n});\nexport const fundingFields = [\n { name: \"requestHash\", type: \"bytes32\" },\n { name: \"payer\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n { name: \"sigNonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n] as const;\n","import { normalizeFee } from \"../fees/fee\";\nimport { AbiCoder, Interface, getAddress, isHexString, dataLength } from \"ethers\";\nimport {\n computeWalletAuthorizationDigest,\n walletAuthorizationTypedData,\n} from \"@invisi-labs/primitives\";\nimport {\n invisiProtocolAbi,\n type Hex,\n type CreateCreditParams,\n type Delivery,\n} from \"../contracts/index\";\nimport {\n known,\n normalizeContext,\n field,\n word,\n uint,\n checkDeadline,\n dense,\n normalizeOpaqueDelivery,\n deliveriesHash,\n type TransactionContext,\n} from \"../validation\";\nexport const CREATE_CREDIT_FIELDS = [\n \"token\",\n \"owner\",\n \"revocationShard\",\n \"revocationSlot\",\n \"creditCommitment\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n] as const;\nexport function validateCreateCreditRequest(\n c: TransactionContext,\n p: CreateCreditParams,\n deliveries: readonly Delivery[]\n) {\n known(p, CREATE_CREDIT_FIELDS);\n const ctx = normalizeContext(c),\n owner = getAddress(p.owner) as Hex,\n revocationShard = uint(p.revocationShard, 64, \"revocationShard\"),\n revocationSlot = uint(p.revocationSlot, 16, \"revocationSlot\"),\n creditCommitment = word(field(p.creditCommitment));\n if (\n getAddress(p.token) !== ctx.tokenAddress ||\n !BigInt(owner) ||\n !revocationShard ||\n !BigInt(creditCommitment)\n )\n throw Error(\"invalid Credit authority, token or commitment\");\n if (dense(deliveries, \"deliveries\").length !== 2) throw Error(\"deliveries count mismatch\");\n return {\n ...ctx,\n ...normalizeFee(p),\n owner,\n revocationShard,\n revocationSlot,\n creditCommitment,\n deadline: checkDeadline(c, p.deadline),\n deliveries: deliveries.map((d) => normalizeOpaqueDelivery(d, {})),\n };\n}\nexport function createCreditBaseInputs(\n c: TransactionContext,\n p: CreateCreditParams,\n d: readonly Delivery[]\n) {\n const r = validateCreateCreditRequest(c, p, d),\n h = BigInt(deliveriesHash(d));\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.owner),\n r.revocationShard,\n r.revocationSlot,\n BigInt(r.creditCommitment),\n r.deadline,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\nexport function authorizedCreditInputs(\n c: TransactionContext,\n operation: \"create-credit\" | \"credit-draw\" | \"update-credit\",\n capacity: number,\n base: readonly Hex[]\n) {\n const digest = BigInt(\n computeWalletAuthorizationDigest({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation,\n capacity,\n words: base.map(BigInt),\n })\n );\n return [...base, word(digest >> 128n), word(digest & ((1n << 128n) - 1n))];\n}\nexport function createCreditPublicInputs(\n c: TransactionContext,\n p: CreateCreditParams,\n d: readonly Delivery[]\n) {\n return authorizedCreditInputs(c, \"create-credit\", 1, createCreditBaseInputs(c, p, d));\n}\nexport function encodeCreateCreditTypedData(\n c: TransactionContext,\n p: CreateCreditParams,\n d: readonly Delivery[]\n) {\n return walletAuthorizationTypedData({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation: \"create-credit\",\n capacity: 1,\n words: createCreditBaseInputs(c, p, d).map(BigInt),\n });\n}\nexport function encodeCreditProof(proof: Hex): Hex {\n if (!isHexString(proof) || !dataLength(proof)) throw Error(\"empty or malformed Credit proof\");\n return AbiCoder.defaultAbiCoder().encode([\"uint8\", \"bytes\"], [0, proof]) as Hex;\n}\nexport interface BuildCreateCreditCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: CreateCreditParams;\n deliveries: readonly Delivery[];\n}\nexport function buildCreateCreditCalldata(p: BuildCreateCreditCalldataParams) {\n const r = validateCreateCreditRequest(p.context, p.params, p.deliveries);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"createCredit\", [\n encodeCreditProof(p.proof),\n { ...p.params, ...normalizeFee(p.params) },\n p.deliveries,\n ]) as Hex,\n approveAmount: r.feeAmount,\n approvalRequirements: r.feeAmount\n ? [{ token: r.tokenAddress, payer: r.owner, amount: r.feeAmount }]\n : [],\n };\n}\n","// AUTO-GENERATED from invisi-protocol build artifacts. Run pnpm sync:abis.\nexport const invisiProtocolAbi = [\n {\n \"type\": \"constructor\",\n \"inputs\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct InstanceParams\",\n \"components\": [\n {\n \"name\": \"factory\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"initialOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"globalEmergency\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"emergencyAdmin\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"verifierRouter\",\n \"type\": \"address\",\n \"internalType\": \"contract IVerifierRouter\"\n }\n ]\n },\n {\n \"name\": \"_screener\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"_addressRegistry\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"CHAIN_ID\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FUND_SHIELD_TYPEHASH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"FUND_TRANSACT_TYPEHASH\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"VERSION\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"acceptOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"activeNoteTreeId\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"addressRegistry\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IAddressRegistry\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"broadcasterFeeBalance\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"circuitPaused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"createCredit\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CreateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"revocationShard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"revocationSlot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creditAllocation\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creditDraw\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CreditDrawParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"payers\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.CreditPayer[]\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"grantRefs\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.CreditGrantRef[]\",\n \"components\": [\n {\n \"name\": \"payerIndex\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"creditCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"recoveryAmounts\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"totalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"creditRevocationBitmap\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"word\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eip712Domain\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"fields\",\n \"type\": \"bytes1\",\n \"internalType\": \"bytes1\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"version\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n },\n {\n \"name\": \"chainId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"verifyingContract\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"salt\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"extensions\",\n \"type\": \"uint256[]\",\n \"internalType\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"emergencyAdmin\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"factory\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNoteTreeNextLeafIndex\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint32\",\n \"internalType\": \"uint32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getNoteTreeRoot\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getTreeCount\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"count\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"globalEmergency\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"invalidateNonce\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isCommitmentRegistered\",\n \"inputs\": [\n {\n \"name\": \"commitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isNullifierSpent\",\n \"inputs\": [\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"isTreeFull\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"nonces\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"owner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pauseCircuit\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"paused\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"pendingOwner\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceOwnership\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeCredit\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"rootHistory\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"bool\",\n \"internalType\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"screener\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setScreener\",\n \"inputs\": [\n {\n \"name\": \"newScreener\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"shield\",\n \"inputs\": [\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.ShieldParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.ShieldOutput[]\",\n \"components\": [\n {\n \"name\": \"identity\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transact\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"r\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.TransactRequest\",\n \"components\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CrossTreeTransactParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"funding\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transact\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"requests\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.TransactRequest[]\",\n \"components\": [\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.CrossTreeTransactParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"funding\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.FundingParams\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sigNonce\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"signature\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"permit\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IMetaTx.TokenPermit\",\n \"components\": [\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"v\",\n \"type\": \"uint8\",\n \"internalType\": \"uint8\"\n },\n {\n \"name\": \"r\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"s\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"transferOwnership\",\n \"inputs\": [\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpause\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"unpauseCircuit\",\n \"inputs\": [],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"updateCredit\",\n \"inputs\": [\n {\n \"name\": \"\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"p\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.UpdateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"source\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.InputSource\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"revocationShard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"revocationSlot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"verifierRouter\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"address\",\n \"internalType\": \"contract IVerifierRouter\"\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"withdrawBroadcasterFees\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"event\",\n \"name\": \"BatchOutputs\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"firstOutputOffset\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"tokens\",\n \"type\": \"address[]\",\n \"indexed\": false,\n \"internalType\": \"address[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"packedDeliveries\",\n \"type\": \"bytes\",\n \"indexed\": false,\n \"internalType\": \"bytes\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BatchRequest\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"requestIndex\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"capacity\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"outputCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"depositAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"statementHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BroadcasterFee\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"BroadcasterFeeWithdrawn\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"recipient\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CircuitPauseUpdated\",\n \"inputs\": [\n {\n \"name\": \"paused\",\n \"type\": \"bool\",\n \"indexed\": false,\n \"internalType\": \"bool\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CommitmentsInserted\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"commitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditCreated\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"revocationShard\",\n \"type\": \"uint64\",\n \"indexed\": false,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"revocationSlot\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"leafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditDraw\",\n \"inputs\": [\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.CreditDrawParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"payers\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.CreditPayer[]\",\n \"components\": [\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"grantRefs\",\n \"type\": \"tuple[]\",\n \"internalType\": \"struct IInvisiProtocol.CreditGrantRef[]\",\n \"components\": [\n {\n \"name\": \"payerIndex\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"creditCommitments\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"recoveryAmounts\",\n \"type\": \"bytes32[]\",\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"totalAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditRevoked\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"shard\",\n \"type\": \"uint64\",\n \"indexed\": true,\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"uint16\",\n \"indexed\": false,\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CreditUpdated\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"params\",\n \"type\": \"tuple\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.UpdateCreditParams\",\n \"components\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"source\",\n \"type\": \"tuple\",\n \"internalType\": \"struct IInvisiProtocol.InputSource\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"creditCommitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"revocationShard\",\n \"type\": \"uint64\",\n \"internalType\": \"uint64\"\n },\n {\n \"name\": \"revocationSlot\",\n \"type\": \"uint16\",\n \"internalType\": \"uint16\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"feeRecipient\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"name\": \"leafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"CrossTreeTransact\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"sources\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.InputSource[]\",\n \"components\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"EIP712DomainChanged\",\n \"inputs\": [],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"NonceInvalidated\",\n \"inputs\": [\n {\n \"name\": \"signer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newNonce\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferStarted\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"OwnershipTransferred\",\n \"inputs\": [\n {\n \"name\": \"previousOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"newOwner\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Paused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"PublicDeposit\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"proofHash\",\n \"type\": \"bytes32\",\n \"indexed\": false,\n \"internalType\": \"bytes32\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ScreenerUpdated\",\n \"inputs\": [\n {\n \"name\": \"newScreener\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Shield\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"payer\",\n \"type\": \"address\",\n \"indexed\": true,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"startLeafIndex\",\n \"type\": \"uint32\",\n \"indexed\": false,\n \"internalType\": \"uint32\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Transact\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"inputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outputTreeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"nullifiers\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"noteCommitments\",\n \"type\": \"bytes32[]\",\n \"indexed\": false,\n \"internalType\": \"bytes32[]\"\n },\n {\n \"name\": \"leafIndices\",\n \"type\": \"uint32[]\",\n \"indexed\": false,\n \"internalType\": \"uint32[]\"\n },\n {\n \"name\": \"deliveries\",\n \"type\": \"tuple[]\",\n \"indexed\": false,\n \"internalType\": \"struct IInvisiProtocol.Delivery[]\",\n \"components\": [\n {\n \"name\": \"ciphertext\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n },\n {\n \"name\": \"clue\",\n \"type\": \"bytes\",\n \"internalType\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"withdrawalAddress\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n },\n {\n \"name\": \"withdrawalAmount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"deadline\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TransactAggregated\",\n \"inputs\": [\n {\n \"name\": \"proofHash\",\n \"type\": \"bytes32\",\n \"indexed\": true,\n \"internalType\": \"bytes32\"\n },\n {\n \"name\": \"requestCount\",\n \"type\": \"uint256\",\n \"indexed\": false,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"TreeCreated\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"indexed\": true,\n \"internalType\": \"uint256\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Unpaused\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"indexed\": false,\n \"internalType\": \"address\"\n }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressEmptyCode\",\n \"inputs\": [\n {\n \"name\": \"target\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressInsufficientBalance\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"AddressScreeningFailed\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ChainIdMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"CommitmentAlreadyRegistered\",\n \"inputs\": [\n {\n \"name\": \"commitment\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"CreditAlreadyRevoked\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"DoubleSpend\",\n \"inputs\": [\n {\n \"name\": \"nullifier\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"EnforcedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ExpectedPause\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"FailedInnerCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InexactTokenReceipt\",\n \"inputs\": [\n {\n \"name\": \"requested\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"received\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAddressRegistry\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAggregateBatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidAmount\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidBatchSize\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCommitment\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidCreditAllocation\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidDelivery\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidFunding\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidMerkleRoot\",\n \"inputs\": [\n {\n \"name\": \"root\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidNonce\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPrivateTransferContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidPrivateTransferShape\",\n \"inputs\": [\n {\n \"name\": \"inputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n },\n {\n \"name\": \"outputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidProof\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidReceivingAddress\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShieldContext\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShieldOutputCount\",\n \"inputs\": [\n {\n \"name\": \"outputs\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidShortString\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidSignature\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidToken\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"InvalidTree\",\n \"inputs\": [\n {\n \"name\": \"treeId\",\n \"type\": \"uint256\",\n \"internalType\": \"uint256\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"LengthMismatch\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NoBroadcasterFees\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotEmergencyAdmin\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"NotGlobalEmergency\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableInvalidOwner\",\n \"inputs\": [\n {\n \"name\": \"owner\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"OwnableUnauthorizedAccount\",\n \"inputs\": [\n {\n \"name\": \"account\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"PrivateTransferExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SafeERC20FailedOperation\",\n \"inputs\": [\n {\n \"name\": \"token\",\n \"type\": \"address\",\n \"internalType\": \"address\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ShieldExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"SignatureExpired\",\n \"inputs\": []\n },\n {\n \"type\": \"error\",\n \"name\": \"StaleRoot\",\n \"inputs\": [\n {\n \"name\": \"root\",\n \"type\": \"bytes32\",\n \"internalType\": \"bytes32\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"StringTooLong\",\n \"inputs\": [\n {\n \"name\": \"str\",\n \"type\": \"string\",\n \"internalType\": \"string\"\n }\n ]\n },\n {\n \"type\": \"error\",\n \"name\": \"ZeroNullifier\",\n \"inputs\": []\n }\n] as const\n","import { normalizeFee } from \"../fees/fee\";\nimport { Interface, getAddress } from \"ethers\";\nimport { creditPeriods, walletAuthorizationTypedData } from \"@invisi-labs/primitives\";\nimport {\n invisiProtocolAbi,\n type Hex,\n type CreditDrawParams,\n type UpdateCreditParams,\n type RevokeCreditParams,\n type Delivery,\n type CreditGrantRef,\n} from \"../contracts/index\";\nimport {\n normalizeContext,\n normalizeSources,\n normalizeOpaqueDelivery,\n known,\n uint,\n word,\n field,\n notes,\n dense,\n checkDeadline,\n deliveriesHash,\n pad,\n type TransactionContext,\n} from \"../validation\";\nimport { authorizedCreditInputs, encodeCreditProof } from \"./credit-create\";\nexport const CREDIT_DRAW_CAPACITIES = [1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 60, 70, 80] as const;\nexport function selectCreditDrawCircuit(count: number) {\n if (!Number.isInteger(count) || count < 1 || count > 80)\n throw Error(\"draw requires1..80 grants\");\n const capacity = CREDIT_DRAW_CAPACITIES.find((n) => count <= n)!;\n return {\n name: `credit_draw_slots${capacity}`,\n capacity,\n publicInputCount: 17 + 10 * capacity,\n };\n}\nconst nonzero = (v: Hex) => {\n const w = word(field(v));\n if (!BigInt(w)) throw Error(\"zero commitment or nullifier\");\n return w;\n};\nexport function validateCreditDrawRequest(\n c: TransactionContext,\n p: CreditDrawParams,\n d: readonly Delivery[]\n) {\n known(p, [\n \"token\",\n \"sources\",\n \"payers\",\n \"grantRefs\",\n \"nullifiers\",\n \"creditCommitments\",\n \"recoveryAmounts\",\n \"noteCommitment\",\n \"totalAmount\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n ]);\n const ctx = normalizeContext(c),\n ns = notes(p.nullifiers, \"nullifiers\").map(nonzero),\n profile = selectCreditDrawCircuit(ns.length),\n sources = normalizeSources(p.sources, ns.length, profile.capacity);\n if (getAddress(p.token) !== ctx.tokenAddress) throw Error(\"token context mismatch\");\n for (const k of [\"creditCommitments\", \"recoveryAmounts\"] as const)\n if (dense(p[k], k).length !== ns.length) throw Error(`${k} count mismatch`);\n const creditCommitments = p.creditCommitments.map(nonzero),\n recoveryAmounts = p.recoveryAmounts.map((v) => word(field(v))),\n noteCommitment = nonzero(p.noteCommitment);\n if (new Set([...creditCommitments, noteCommitment]).size !== ns.length + 1)\n throw Error(\"duplicate commitment\");\n let prev = 0n;\n if (!dense(p.payers, \"payers\").length || p.payers.length > ns.length)\n throw Error(\"payer count out of bounds\");\n const payers = p.payers.map((payer) => {\n known(payer, [\"payer\", \"amount\"]);\n const address = getAddress(payer.payer) as Hex,\n amount = uint(payer.amount, 128, \"payer amount\");\n if (BigInt(address) <= prev || !amount)\n throw Error(\"payers must be sorted unique positive addresses with positive receipts\");\n prev = BigInt(address);\n return { payer: address, amount };\n });\n if (dense(p.grantRefs, \"grantRefs\").length !== ns.length)\n throw Error(\"grant reference count mismatch\");\n let previous: CreditGrantRef | undefined;\n const grantRefs = p.grantRefs.map((ref) => {\n known(ref, [\"payerIndex\", \"shard\", \"slot\"]);\n const r = {\n payerIndex: uint(ref.payerIndex, 32),\n shard: uint(ref.shard, 64),\n slot: uint(ref.slot, 16),\n };\n if (r.payerIndex >= BigInt(payers.length) || !r.shard)\n throw Error(\"invalid grant namespace\");\n if (\n previous &&\n (r.payerIndex < previous.payerIndex ||\n (r.payerIndex === previous.payerIndex &&\n (r.shard < previous.shard ||\n (r.shard === previous.shard && r.slot <= previous.slot))))\n )\n throw Error(\"grant references must be sorted unique payer/shard/slot\");\n previous = r;\n return r;\n });\n const totalAmount = uint(p.totalAmount, 128, \"totalAmount\");\n if (!totalAmount || payers.reduce((sum, p) => sum + p.amount, 0n) !== totalAmount)\n throw Error(\"payer receipts must equal totalAmount\");\n if (normalizeFee(p).feeAmount >= totalAmount)\n throw Error(\"Credit draw fee must leave a positive ordinary Note\");\n if (dense(d, \"deliveries\").length !== 2 * ns.length + 1)\n throw Error(\"deliveries count mismatch\");\n if (c.timestamp === undefined) throw Error(\"explicit Credit draw timestamp required\");\n return {\n ...ctx,\n ...normalizeFee(p),\n profile,\n sources,\n payers,\n grantRefs,\n nullifiers: ns,\n creditCommitments,\n recoveryAmounts,\n noteCommitment,\n totalAmount,\n deadline: checkDeadline(c, p.deadline),\n periods: creditPeriods(c.timestamp),\n deliveries: d.map((v, i) =>\n normalizeOpaqueDelivery(v, { allowEmpty: i === 2 * ns.length })\n ),\n };\n}\nexport function creditDrawBaseInputs(\n c: TransactionContext,\n p: CreditDrawParams,\n d: readonly Delivery[]\n) {\n const r = validateCreditDrawRequest(c, p, d),\n n = r.profile.capacity,\n h = BigInt(deliveriesHash(d));\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.nullifiers.length),\n BigInt(r.sources.length),\n BigInt(r.payers.length),\n ...pad(\n r.sources.map((s) => s.treeId),\n n\n ),\n ...pad(\n r.sources.map((s) => BigInt(s.merkleRoot)),\n n\n ),\n ...pad(\n r.payers.map((s) => BigInt(s.payer)),\n n\n ),\n ...pad(\n r.payers.map((s) => s.amount),\n n\n ),\n ...pad(\n r.grantRefs.map((s) => s.payerIndex),\n n\n ),\n ...pad(\n r.grantRefs.map((s) => s.shard),\n n\n ),\n ...pad(\n r.grantRefs.map((s) => s.slot),\n n\n ),\n ...pad(r.nullifiers.map(BigInt), n),\n ...pad(r.creditCommitments.map(BigInt), n),\n ...pad(r.recoveryAmounts.map(BigInt), n),\n BigInt(r.noteCommitment),\n r.totalAmount,\n r.deadline,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n r.periods.currentDay,\n r.periods.currentMonth,\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\nexport function creditDrawPublicInputs(\n c: TransactionContext,\n p: CreditDrawParams,\n d: readonly Delivery[]\n) {\n return authorizedCreditInputs(\n c,\n \"credit-draw\",\n selectCreditDrawCircuit(p.nullifiers.length).capacity,\n creditDrawBaseInputs(c, p, d)\n );\n}\nexport function encodeCreditDrawTypedData(\n c: TransactionContext,\n p: CreditDrawParams,\n d: readonly Delivery[]\n) {\n return walletAuthorizationTypedData({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation: \"credit-draw\",\n capacity: selectCreditDrawCircuit(p.nullifiers.length).capacity,\n words: creditDrawBaseInputs(c, p, d).map(BigInt),\n });\n}\nexport function validateUpdateCreditRequest(\n c: TransactionContext,\n p: UpdateCreditParams,\n d: readonly Delivery[]\n) {\n known(p, [\n \"token\",\n \"owner\",\n \"source\",\n \"nullifier\",\n \"creditCommitment\",\n \"revocationShard\",\n \"revocationSlot\",\n \"deadline\",\n \"feeRecipient\",\n \"feeAmount\",\n ]);\n const ctx = normalizeContext(c),\n owner = getAddress(p.owner) as Hex,\n revocationShard = uint(p.revocationShard, 64);\n if (getAddress(p.token) !== ctx.tokenAddress || !BigInt(owner) || !revocationShard)\n throw Error(\"invalid update authority or token\");\n if (dense(d, \"deliveries\").length !== 2) throw Error(\"deliveries count mismatch\");\n return {\n ...ctx,\n ...normalizeFee(p),\n owner,\n source: normalizeSources([p.source], 1, 1)[0]!,\n nullifier: nonzero(p.nullifier),\n creditCommitment: nonzero(p.creditCommitment),\n revocationShard,\n revocationSlot: uint(p.revocationSlot, 16),\n deadline: checkDeadline(c, p.deadline),\n deliveries: d.map((v) => normalizeOpaqueDelivery(v, {})),\n };\n}\nexport function updateCreditBaseInputs(\n c: TransactionContext,\n p: UpdateCreditParams,\n d: readonly Delivery[]\n) {\n const r = validateUpdateCreditRequest(c, p, d),\n h = BigInt(deliveriesHash(d));\n return [\n r.chainId,\n BigInt(r.protocolAddress),\n BigInt(r.tokenAddress),\n BigInt(r.owner),\n r.source.treeId,\n BigInt(r.source.merkleRoot),\n BigInt(r.nullifier),\n BigInt(r.creditCommitment),\n r.revocationShard,\n r.revocationSlot,\n r.deadline,\n h >> 128n,\n h & ((1n << 128n) - 1n),\n BigInt(r.feeRecipient),\n r.feeAmount,\n ].map(word);\n}\nexport function updateCreditPublicInputs(\n c: TransactionContext,\n p: UpdateCreditParams,\n d: readonly Delivery[]\n) {\n return authorizedCreditInputs(c, \"update-credit\", 1, updateCreditBaseInputs(c, p, d));\n}\nexport function encodeUpdateCreditTypedData(\n c: TransactionContext,\n p: UpdateCreditParams,\n d: readonly Delivery[]\n) {\n return walletAuthorizationTypedData({\n context: { chainId: c.chainId, protocolAddress: BigInt(c.protocolAddress) },\n operation: \"update-credit\",\n capacity: 1,\n words: updateCreditBaseInputs(c, p, d).map(BigInt),\n });\n}\nexport interface BuildCreditDrawCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: CreditDrawParams;\n deliveries: readonly Delivery[];\n}\nexport function buildCreditDrawCalldata(p: BuildCreditDrawCalldataParams) {\n const r = validateCreditDrawRequest(p.context, p.params, p.deliveries);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"creditDraw\", [\n encodeCreditProof(p.proof),\n { ...p.params, ...normalizeFee(p.params) },\n p.deliveries,\n ]) as Hex,\n approveAmount: 0n,\n approvalRequirements: r.payers.map((payer) => ({\n token: r.tokenAddress,\n payer: payer.payer,\n amount: payer.amount,\n })),\n };\n}\nexport interface BuildUpdateCreditCalldataParams {\n context: TransactionContext;\n proof: Hex;\n params: UpdateCreditParams;\n deliveries: readonly Delivery[];\n}\nexport function buildUpdateCreditCalldata(p: BuildUpdateCreditCalldataParams) {\n const r = validateUpdateCreditRequest(p.context, p.params, p.deliveries);\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"updateCredit\", [\n encodeCreditProof(p.proof),\n { ...p.params, ...normalizeFee(p.params) },\n p.deliveries,\n ]) as Hex,\n approveAmount: r.feeAmount,\n approvalRequirements: r.feeAmount\n ? [{ token: r.tokenAddress, payer: r.owner, amount: r.feeAmount }]\n : [],\n };\n}\nexport const REVOKE_CREDIT_TYPES = {\n RevokeCredit: [\n { name: \"token\", type: \"address\" },\n { name: \"owner\", type: \"address\" },\n { name: \"shard\", type: \"uint64\" },\n { name: \"slot\", type: \"uint16\" },\n { name: \"deadline\", type: \"uint256\" },\n { name: \"feeRecipient\", type: \"address\" },\n { name: \"feeAmount\", type: \"uint256\" },\n ],\n};\nexport function encodeRevokeCreditTypedData(c: TransactionContext, p: RevokeCreditParams) {\n known(p, [\"token\", \"owner\", \"shard\", \"slot\", \"deadline\", \"feeRecipient\", \"feeAmount\"]);\n if (\n getAddress(p.token) !== getAddress(c.tokenAddress) ||\n !BigInt(p.owner) ||\n !uint(p.shard, 64)\n )\n throw Error(\"invalid revocation authority\");\n return {\n domain: {\n name: \"InvisibleProtocol\",\n version: \"1\",\n chainId: c.chainId,\n verifyingContract: c.protocolAddress,\n },\n types: REVOKE_CREDIT_TYPES,\n primaryType: \"RevokeCredit\" as const,\n message: {\n token: getAddress(p.token),\n owner: getAddress(p.owner),\n shard: uint(p.shard, 64),\n slot: uint(p.slot, 16),\n deadline: checkDeadline(c, p.deadline),\n ...normalizeFee(p),\n },\n };\n}\nexport interface BuildRevokeCreditCalldataParams {\n context: TransactionContext;\n params: RevokeCreditParams;\n signature: Hex;\n caller?: Hex;\n}\nexport function buildRevokeCreditCalldata(p: BuildRevokeCreditCalldataParams) {\n encodeRevokeCreditTypedData(p.context, p.params);\n if (p.signature === \"0x\" && (!p.caller || getAddress(p.caller) !== getAddress(p.params.owner)))\n throw Error(\"direct revocation requires owner caller\");\n return {\n data: new Interface(invisiProtocolAbi).encodeFunctionData(\"revokeCredit\", [\n p.params.token,\n p.params.owner,\n p.params.shard,\n p.params.slot,\n p.params.deadline,\n normalizeFee(p.params).feeRecipient,\n normalizeFee(p.params).feeAmount,\n p.signature,\n ]) as Hex,\n approveAmount: normalizeFee(p.params).feeAmount,\n approvalRequirements: normalizeFee(p.params).feeAmount\n ? [\n {\n token: p.params.token,\n payer: p.params.owner,\n amount: normalizeFee(p.params).feeAmount,\n },\n ]\n : [],\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,iBAA2B;;;ACA3B,wBAAqC;AAErC,oBAQO;AAUA,IAAM,gBACT;AACG,IAAM,eAAe;AACrB,IAAM,gBAAY,uBAAQ,IAAI,EAAE;AAkBhC,SAAS,KAAK,GAA6B,MAAc,OAAO,SAAiB;AACpF,MACK,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,OAAO,MAAM,YAC/D,OAAO,MAAM,YAAY,CAAC,OAAO,cAAc,CAAC;AAEjD,UAAM,IAAI,MAAM,GAAG,IAAI,qBAAqB;AAChD,QAAM,IAAI,OAAO,CAAC;AAClB,MAAI,IAAI,MAAM,KAAK,MAAM,OAAO,IAAI,EAAG,OAAM,IAAI,MAAM,GAAG,IAAI,aAAa,IAAI,EAAE;AACjF,SAAO;AACX;AACO,SAAS,MAAM,GAAoB,OAAO,SAAiB;AAC9D,QAAM,IAAI,KAAK,GAAG,KAAK,IAAI;AAC3B,MAAI,KAAK,cAAe,OAAM,IAAI,MAAM,GAAG,IAAI,wBAAwB;AACvE,SAAO;AACX;AACO,IAAM,OAAO,CAAC,UACjB,uBAAQ,OAAO,MAAM,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE;AAC9C,SAAS,MAAS,GAAiB,MAA4B;AAClE,MAAI,CAAC,MAAM,QAAQ,CAAC,EAAG,OAAM,IAAI,MAAM,GAAG,IAAI,gBAAgB;AAC9D,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAC1B,QAAI,CAAC,OAAO,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,UAAa,EAAE,CAAC,MAAM;AACvD,YAAM,IAAI,MAAM,GAAG,IAAI,gCAAgC;AAC/D,SAAO;AACX;AACO,SAAS,MAAM,GAAW,MAAyB,OAAO,UAAU;AACvE,MACI,CAAC,KACD,OAAO,MAAM,YACb,MAAM,QAAQ,CAAC,KACf,OAAO,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;AAE5C,UAAM,IAAI,MAAM,GAAG,IAAI,yBAAyB;AACxD;AACO,SAAS,MAAM,GAAmB,MAAc;AACnD,QAAM,IAAI,MAAM,GAAG,IAAI,EAAE,IAAI,CAACC,OAAM,KAAK,MAAMA,IAAG,IAAI,CAAC,CAAC;AACxD,MAAI,EAAE,KAAK,CAACA,OAAM,OAAOA,EAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,SAAS,EAAE;AACzD,UAAM,IAAI,MAAM,qBAAqB,IAAI,EAAE;AAC/C,SAAO;AACX;AACO,SAAS,SAAS,GAAQ,QAAgB,SAAkB,UAAU,QAAa;AACtF,MACI,KAAC,2BAAY,CAAC,KACd,CAAC,0BAA0B,KAAK,CAAC,SACjC,0BAAW,CAAC,IAAI,cAChB,0BAAW,CAAC,IAAI;AAEhB,UAAM,IAAI,MAAM,sBAAsB,MAAM,QAAQ;AACxD,MAAI,YAAY,UAAa,OAAO,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM;AAChE,UAAM,IAAI,MAAM,yCAAyC;AAC7D,SAAO;AACX;AACO,SAAS,iBAAiB,GAAuB;AACpD,SAAO;AAAA,IACH,GAAG;AAAA,IACH,SAAS,KAAK,EAAE,SAAS,IAAI,SAAS;AAAA,IACtC,qBAAiB,0BAAW,EAAE,eAAe;AAAA,IAC7C,kBAAc,0BAAW,EAAE,YAAY;AAAA,EAC3C;AACJ;AACO,SAAS,cAAc,GAAuB,OAAe;AAChE,QAAM,IAAI,KAAK,OAAO,IAAI,UAAU;AACpC,MAAI,EAAE,QAAQ,UAAa,IAAI,KAAK,EAAE,KAAK,IAAI,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7F,SAAO;AACX;AACO,SAAS,iBACZ,SACA,YACA,UACF;AACE,QAAM,SAAS,SAAS;AACxB,MACI,aAAa,KACb,aAAa,YACb,QAAQ,SAAS,eAChB,eAAe,IAAI,QAAQ,WAAW,IAAI,QAAQ,WAAW;AAE9D,UAAM,IAAI,MAAM,8DAA8D;AAClF,MAAI,WAAW;AACf,SAAO,QAAQ,IAAI,CAAC,MAAM;AACtB,UAAM,GAAG,CAAC,UAAU,YAAY,GAAG,QAAQ;AAC3C,UAAM,SAAS,KAAK,EAAE,QAAQ,IAAI,QAAQ,GACtC,aAAa,KAAK,MAAM,EAAE,YAAY,YAAY,CAAC;AACvD,QAAI,WAAW,MAAM,UAAU,YAAY,OAAO,UAAU,MAAM;AAC9D,YAAM,IAAI,MAAM,kEAAkE;AACtF,eAAW;AACX,WAAO,EAAE,QAAQ,WAAW;AAAA,EAChC,CAAC;AACL;AACO,IAAM,MAAM,CAAC,GAAsB,MAAwB;AAAA,EAC9D,GAAG;AAAA,EACH,GAAI,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AACnC;AAEO,SAAS,wBACZ,OACA,UAAqD,CAAC,GAC9C;AACR,QAAM,OAAO,CAAC,cAAc,MAAM,GAAG,UAAU;AAC/C,MAAI,QAAQ,OAAO;AACf,QAAI,MAAM,eAAe,QAAQ,MAAM,SAAS;AAC5C,YAAM,IAAI,MAAM,0CAA0C;AAC9D,WAAO,EAAE,YAAY,MAAM,MAAM,KAAK;AAAA,EAC1C;AACA,MAAI,QAAQ,cAAc,MAAM,eAAe,QAAQ,MAAM,SAAS;AAClE,WAAO,EAAE,YAAY,MAAM,MAAM,KAAK;AAC1C,QAAM,aAAa,SAAS,MAAM,YAAY,GAAG,QAAW,sCAAoB;AAChF,QAAM,OAAO,SAAS,MAAM,MAAM,EAAE;AACpC,MAAI,KAAK,MAAM,KAAK,GAAG,EAAE,YAAY,MAAM,KAAM,OAAM,IAAI,MAAM,2BAA2B;AAC5F,SAAO,EAAE,YAAY,KAAK;AAC9B;AAEO,IAAM,iBAAiB,CAAC,UAC3B;AAAA,EACI,uBAAS,gBAAgB,EAAE;AAAA,IACvB;AAAA,MACI;AAAA,QACI,MAAM;AAAA,QACN,YAAY;AAAA,UACR,EAAE,MAAM,cAAc,MAAM,QAAQ;AAAA,UACpC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,QAClC;AAAA,MACJ;AAAA,IACJ,EAAE,IAAI,CAAC,cAAc,wBAAU,KAAK,SAAS,CAAC;AAAA,IAC9C,CAAC,MAAM,GAAG,YAAY,CAAC;AAAA,EAC3B;AACJ;;;ADlKG,SAAS,aAAa,GAAmD;AAC5E,QAAM,mBAAe,2BAAW,EAAE,gBAAgB,YAAY;AAC9D,QAAM,YAAY,KAAK,EAAE,aAAa,IAAI,KAAK,WAAW;AAC1D,MAAK,OAAO,YAAY,MAAM,QAAS,cAAc;AACjD,UAAM,IAAI,MAAM,qBAAqB;AACzC,SAAO,EAAE,cAAc,UAAU;AACrC;;;AETA,IAAAC,iBAAyE;AACzE,IAAAC,qBAGO;;;ACJA,IAAM,oBAAoB;AAAA,EAC/B;AAAA,IACE,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,cAAc;AAAA,kBACZ;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,kBACA;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,cAAc;AAAA,kBACZ;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,kBACA;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,kBACA;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,kBACA;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,cAAc;AAAA,kBACZ;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,kBACA;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,gBACF;AAAA,cACF;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,gBAChB,cAAc;AAAA,kBACZ;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,kBACA;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,kBACA;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,kBACA;AAAA,oBACE,QAAQ;AAAA,oBACR,QAAQ;AAAA,oBACR,gBAAgB;AAAA,kBAClB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,mBAAmB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,YAChB,cAAc;AAAA,cACZ;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,QAAQ;AAAA,gBACR,gBAAgB;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,IACX,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,cAAc;AAAA,UACZ;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,aAAa;AAAA,EACf;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,MACR;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AACF;;;ADhsFO,IAAM,uBAAuB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACO,SAAS,4BACZ,GACA,GACA,YACF;AACE,QAAM,GAAG,oBAAoB;AAC7B,QAAM,MAAM,iBAAiB,CAAC,GAC1B,YAAQ,2BAAW,EAAE,KAAK,GAC1B,kBAAkB,KAAK,EAAE,iBAAiB,IAAI,iBAAiB,GAC/D,iBAAiB,KAAK,EAAE,gBAAgB,IAAI,gBAAgB,GAC5D,mBAAmB,KAAK,MAAM,EAAE,gBAAgB,CAAC;AACrD,UACI,2BAAW,EAAE,KAAK,MAAM,IAAI,gBAC5B,CAAC,OAAO,KAAK,KACb,CAAC,mBACD,CAAC,OAAO,gBAAgB;AAExB,UAAM,MAAM,+CAA+C;AAC/D,MAAI,MAAM,YAAY,YAAY,EAAE,WAAW,EAAG,OAAM,MAAM,2BAA2B;AACzF,SAAO;AAAA,IACH,GAAG;AAAA,IACH,GAAG,aAAa,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,cAAc,GAAG,EAAE,QAAQ;AAAA,IACrC,YAAY,WAAW,IAAI,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,CAAC;AAAA,EACpE;AACJ;AACO,SAAS,uBACZ,GACA,GACA,GACF;AACE,QAAM,IAAI,4BAA4B,GAAG,GAAG,CAAC,GACzC,IAAI,OAAO,eAAe,CAAC,CAAC;AAChC,SAAO;AAAA,IACH,EAAE;AAAA,IACF,OAAO,EAAE,eAAe;AAAA,IACxB,OAAO,EAAE,YAAY;AAAA,IACrB,OAAO,EAAE,KAAK;AAAA,IACd,EAAE;AAAA,IACF,EAAE;AAAA,IACF,OAAO,EAAE,gBAAgB;AAAA,IACzB,EAAE;AAAA,IACF,KAAK;AAAA,IACL,KAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,EAAE,YAAY;AAAA,IACrB,EAAE;AAAA,EACN,EAAE,IAAI,IAAI;AACd;AACO,SAAS,uBACZ,GACA,WACA,UACA,MACF;AACE,QAAM,SAAS;AAAA,QACX,qDAAiC;AAAA,MAC7B,SAAS,EAAE,SAAS,EAAE,SAAS,iBAAiB,OAAO,EAAE,eAAe,EAAE;AAAA,MAC1E;AAAA,MACA;AAAA,MACA,OAAO,KAAK,IAAI,MAAM;AAAA,IAC1B,CAAC;AAAA,EACL;AACA,SAAO,CAAC,GAAG,MAAM,KAAK,UAAU,IAAI,GAAG,KAAK,UAAW,MAAM,QAAQ,EAAG,CAAC;AAC7E;AACO,SAAS,yBACZ,GACA,GACA,GACF;AACE,SAAO,uBAAuB,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,GAAG,CAAC,CAAC;AACxF;AACO,SAAS,4BACZ,GACA,GACA,GACF;AACE,aAAO,iDAA6B;AAAA,IAChC,SAAS,EAAE,SAAS,EAAE,SAAS,iBAAiB,OAAO,EAAE,eAAe,EAAE;AAAA,IAC1E,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO,uBAAuB,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM;AAAA,EACrD,CAAC;AACL;AACO,SAAS,kBAAkB,OAAiB;AAC/C,MAAI,KAAC,4BAAY,KAAK,KAAK,KAAC,2BAAW,KAAK,EAAG,OAAM,MAAM,iCAAiC;AAC5F,SAAO,wBAAS,gBAAgB,EAAE,OAAO,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC;AAC3E;AAOO,SAAS,0BAA0B,GAAoC;AAC1E,QAAM,IAAI,4BAA4B,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU;AACvE,SAAO;AAAA,IACH,MAAM,IAAI,yBAAU,iBAAiB,EAAE,mBAAmB,gBAAgB;AAAA,MACtE,kBAAkB,EAAE,KAAK;AAAA,MACzB,EAAE,GAAG,EAAE,QAAQ,GAAG,aAAa,EAAE,MAAM,EAAE;AAAA,MACzC,EAAE;AAAA,IACN,CAAC;AAAA,IACD,eAAe,EAAE;AAAA,IACjB,sBAAsB,EAAE,YAClB,CAAC,EAAE,OAAO,EAAE,cAAc,OAAO,EAAE,OAAO,QAAQ,EAAE,UAAU,CAAC,IAC/D,CAAC;AAAA,EACX;AACJ;;;AE/IA,IAAAC,iBAAsC;AACtC,IAAAC,qBAA4D;AA0BrD,IAAM,yBAAyB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAC7E,SAAS,wBAAwB,OAAe;AACnD,MAAI,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,KAAK,QAAQ;AACjD,UAAM,MAAM,2BAA2B;AAC3C,QAAM,WAAW,uBAAuB,KAAK,CAAC,MAAM,SAAS,CAAC;AAC9D,SAAO;AAAA,IACH,MAAM,oBAAoB,QAAQ;AAAA,IAClC;AAAA,IACA,kBAAkB,KAAK,KAAK;AAAA,EAChC;AACJ;AACA,IAAM,UAAU,CAAC,MAAW;AACxB,QAAM,IAAI,KAAK,MAAM,CAAC,CAAC;AACvB,MAAI,CAAC,OAAO,CAAC,EAAG,OAAM,MAAM,8BAA8B;AAC1D,SAAO;AACX;AACO,SAAS,0BACZ,GACA,GACA,GACF;AACE,QAAM,GAAG;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACD,QAAM,MAAM,iBAAiB,CAAC,GAC1B,KAAK,MAAM,EAAE,YAAY,YAAY,EAAE,IAAI,OAAO,GAClD,UAAU,wBAAwB,GAAG,MAAM,GAC3C,UAAU,iBAAiB,EAAE,SAAS,GAAG,QAAQ,QAAQ,QAAQ;AACrE,UAAI,2BAAW,EAAE,KAAK,MAAM,IAAI,aAAc,OAAM,MAAM,wBAAwB;AAClF,aAAW,KAAK,CAAC,qBAAqB,iBAAiB;AACnD,QAAI,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,OAAQ,OAAM,MAAM,GAAG,CAAC,iBAAiB;AAC9E,QAAM,oBAAoB,EAAE,kBAAkB,IAAI,OAAO,GACrD,kBAAkB,EAAE,gBAAgB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAC7D,iBAAiB,QAAQ,EAAE,cAAc;AAC7C,OAAI,oBAAI,IAAI,CAAC,GAAG,mBAAmB,cAAc,CAAC,GAAE,SAAS,GAAG,SAAS;AACrE,UAAM,MAAM,sBAAsB;AACtC,MAAI,OAAO;AACX,MAAI,CAAC,MAAM,EAAE,QAAQ,QAAQ,EAAE,UAAU,EAAE,OAAO,SAAS,GAAG;AAC1D,UAAM,MAAM,2BAA2B;AAC3C,QAAM,SAAS,EAAE,OAAO,IAAI,CAAC,UAAU;AACnC,UAAM,OAAO,CAAC,SAAS,QAAQ,CAAC;AAChC,UAAM,cAAU,2BAAW,MAAM,KAAK,GAClC,SAAS,KAAK,MAAM,QAAQ,KAAK,cAAc;AACnD,QAAI,OAAO,OAAO,KAAK,QAAQ,CAAC;AAC5B,YAAM,MAAM,wEAAwE;AACxF,WAAO,OAAO,OAAO;AACrB,WAAO,EAAE,OAAO,SAAS,OAAO;AAAA,EACpC,CAAC;AACD,MAAI,MAAM,EAAE,WAAW,WAAW,EAAE,WAAW,GAAG;AAC9C,UAAM,MAAM,gCAAgC;AAChD,MAAI;AACJ,QAAM,YAAY,EAAE,UAAU,IAAI,CAAC,QAAQ;AACvC,UAAM,KAAK,CAAC,cAAc,SAAS,MAAM,CAAC;AAC1C,UAAM,IAAI;AAAA,MACN,YAAY,KAAK,IAAI,YAAY,EAAE;AAAA,MACnC,OAAO,KAAK,IAAI,OAAO,EAAE;AAAA,MACzB,MAAM,KAAK,IAAI,MAAM,EAAE;AAAA,IAC3B;AACA,QAAI,EAAE,cAAc,OAAO,OAAO,MAAM,KAAK,CAAC,EAAE;AAC5C,YAAM,MAAM,yBAAyB;AACzC,QACI,aACC,EAAE,aAAa,SAAS,cACpB,EAAE,eAAe,SAAS,eACtB,EAAE,QAAQ,SAAS,SACf,EAAE,UAAU,SAAS,SAAS,EAAE,QAAQ,SAAS;AAE9D,YAAM,MAAM,yDAAyD;AACzE,eAAW;AACX,WAAO;AAAA,EACX,CAAC;AACD,QAAM,cAAc,KAAK,EAAE,aAAa,KAAK,aAAa;AAC1D,MAAI,CAAC,eAAe,OAAO,OAAO,CAAC,KAAKC,OAAM,MAAMA,GAAE,QAAQ,EAAE,MAAM;AAClE,UAAM,MAAM,uCAAuC;AACvD,MAAI,aAAa,CAAC,EAAE,aAAa;AAC7B,UAAM,MAAM,qDAAqD;AACrE,MAAI,MAAM,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG,SAAS;AAClD,UAAM,MAAM,2BAA2B;AAC3C,MAAI,EAAE,cAAc,OAAW,OAAM,MAAM,yCAAyC;AACpF,SAAO;AAAA,IACH,GAAG;AAAA,IACH,GAAG,aAAa,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,cAAc,GAAG,EAAE,QAAQ;AAAA,IACrC,aAAS,kCAAc,EAAE,SAAS;AAAA,IAClC,YAAY,EAAE;AAAA,MAAI,CAAC,GAAG,MAClB,wBAAwB,GAAG,EAAE,YAAY,MAAM,IAAI,GAAG,OAAO,CAAC;AAAA,IAClE;AAAA,EACJ;AACJ;AACO,SAAS,qBACZ,GACA,GACA,GACF;AACE,QAAM,IAAI,0BAA0B,GAAG,GAAG,CAAC,GACvC,IAAI,EAAE,QAAQ,UACd,IAAI,OAAO,eAAe,CAAC,CAAC;AAChC,SAAO;AAAA,IACH,EAAE;AAAA,IACF,OAAO,EAAE,eAAe;AAAA,IACxB,OAAO,EAAE,YAAY;AAAA,IACrB,OAAO,EAAE,WAAW,MAAM;AAAA,IAC1B,OAAO,EAAE,QAAQ,MAAM;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM;AAAA,IACtB,GAAG;AAAA,MACC,EAAE,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM;AAAA,MAC7B;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,MACC,EAAE,QAAQ,IAAI,CAAC,MAAM,OAAO,EAAE,UAAU,CAAC;AAAA,MACzC;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,MACC,EAAE,OAAO,IAAI,CAAC,MAAM,OAAO,EAAE,KAAK,CAAC;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,MACC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,MACC,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,UAAU;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,MACC,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,MAC9B;AAAA,IACJ;AAAA,IACA,GAAG;AAAA,MACC,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,MAC7B;AAAA,IACJ;AAAA,IACA,GAAG,IAAI,EAAE,WAAW,IAAI,MAAM,GAAG,CAAC;AAAA,IAClC,GAAG,IAAI,EAAE,kBAAkB,IAAI,MAAM,GAAG,CAAC;AAAA,IACzC,GAAG,IAAI,EAAE,gBAAgB,IAAI,MAAM,GAAG,CAAC;AAAA,IACvC,OAAO,EAAE,cAAc;AAAA,IACvB,EAAE;AAAA,IACF,EAAE;AAAA,IACF,KAAK;AAAA,IACL,KAAM,MAAM,QAAQ;AAAA,IACpB,EAAE,QAAQ;AAAA,IACV,EAAE,QAAQ;AAAA,IACV,OAAO,EAAE,YAAY;AAAA,IACrB,EAAE;AAAA,EACN,EAAE,IAAI,IAAI;AACd;AACO,SAAS,uBACZ,GACA,GACA,GACF;AACE,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA,wBAAwB,EAAE,WAAW,MAAM,EAAE;AAAA,IAC7C,qBAAqB,GAAG,GAAG,CAAC;AAAA,EAChC;AACJ;AACO,SAAS,0BACZ,GACA,GACA,GACF;AACE,aAAO,iDAA6B;AAAA,IAChC,SAAS,EAAE,SAAS,EAAE,SAAS,iBAAiB,OAAO,EAAE,eAAe,EAAE;AAAA,IAC1E,WAAW;AAAA,IACX,UAAU,wBAAwB,EAAE,WAAW,MAAM,EAAE;AAAA,IACvD,OAAO,qBAAqB,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM;AAAA,EACnD,CAAC;AACL;AACO,SAAS,4BACZ,GACA,GACA,GACF;AACE,QAAM,GAAG;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACD,QAAM,MAAM,iBAAiB,CAAC,GAC1B,YAAQ,2BAAW,EAAE,KAAK,GAC1B,kBAAkB,KAAK,EAAE,iBAAiB,EAAE;AAChD,UAAI,2BAAW,EAAE,KAAK,MAAM,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,CAAC;AAC/D,UAAM,MAAM,mCAAmC;AACnD,MAAI,MAAM,GAAG,YAAY,EAAE,WAAW,EAAG,OAAM,MAAM,2BAA2B;AAChF,SAAO;AAAA,IACH,GAAG;AAAA,IACH,GAAG,aAAa,CAAC;AAAA,IACjB;AAAA,IACA,QAAQ,iBAAiB,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;AAAA,IAC5C,WAAW,QAAQ,EAAE,SAAS;AAAA,IAC9B,kBAAkB,QAAQ,EAAE,gBAAgB;AAAA,IAC5C;AAAA,IACA,gBAAgB,KAAK,EAAE,gBAAgB,EAAE;AAAA,IACzC,UAAU,cAAc,GAAG,EAAE,QAAQ;AAAA,IACrC,YAAY,EAAE,IAAI,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,CAAC;AAAA,EAC3D;AACJ;AACO,SAAS,uBACZ,GACA,GACA,GACF;AACE,QAAM,IAAI,4BAA4B,GAAG,GAAG,CAAC,GACzC,IAAI,OAAO,eAAe,CAAC,CAAC;AAChC,SAAO;AAAA,IACH,EAAE;AAAA,IACF,OAAO,EAAE,eAAe;AAAA,IACxB,OAAO,EAAE,YAAY;AAAA,IACrB,OAAO,EAAE,KAAK;AAAA,IACd,EAAE,OAAO;AAAA,IACT,OAAO,EAAE,OAAO,UAAU;AAAA,IAC1B,OAAO,EAAE,SAAS;AAAA,IAClB,OAAO,EAAE,gBAAgB;AAAA,IACzB,EAAE;AAAA,IACF,EAAE;AAAA,IACF,EAAE;AAAA,IACF,KAAK;AAAA,IACL,KAAM,MAAM,QAAQ;AAAA,IACpB,OAAO,EAAE,YAAY;AAAA,IACrB,EAAE;AAAA,EACN,EAAE,IAAI,IAAI;AACd;AACO,SAAS,yBACZ,GACA,GACA,GACF;AACE,SAAO,uBAAuB,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,GAAG,CAAC,CAAC;AACxF;AACO,SAAS,4BACZ,GACA,GACA,GACF;AACE,aAAO,iDAA6B;AAAA,IAChC,SAAS,EAAE,SAAS,EAAE,SAAS,iBAAiB,OAAO,EAAE,eAAe,EAAE;AAAA,IAC1E,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO,uBAAuB,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM;AAAA,EACrD,CAAC;AACL;AAOO,SAAS,wBAAwB,GAAkC;AACtE,QAAM,IAAI,0BAA0B,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU;AACrE,SAAO;AAAA,IACH,MAAM,IAAI,yBAAU,iBAAiB,EAAE,mBAAmB,cAAc;AAAA,MACpE,kBAAkB,EAAE,KAAK;AAAA,MACzB,EAAE,GAAG,EAAE,QAAQ,GAAG,aAAa,EAAE,MAAM,EAAE;AAAA,MACzC,EAAE;AAAA,IACN,CAAC;AAAA,IACD,eAAe;AAAA,IACf,sBAAsB,EAAE,OAAO,IAAI,CAAC,WAAW;AAAA,MAC3C,OAAO,EAAE;AAAA,MACT,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM;AAAA,IAClB,EAAE;AAAA,EACN;AACJ;AAOO,SAAS,0BAA0B,GAAoC;AAC1E,QAAM,IAAI,4BAA4B,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU;AACvE,SAAO;AAAA,IACH,MAAM,IAAI,yBAAU,iBAAiB,EAAE,mBAAmB,gBAAgB;AAAA,MACtE,kBAAkB,EAAE,KAAK;AAAA,MACzB,EAAE,GAAG,EAAE,QAAQ,GAAG,aAAa,EAAE,MAAM,EAAE;AAAA,MACzC,EAAE;AAAA,IACN,CAAC;AAAA,IACD,eAAe,EAAE;AAAA,IACjB,sBAAsB,EAAE,YAClB,CAAC,EAAE,OAAO,EAAE,cAAc,OAAO,EAAE,OAAO,QAAQ,EAAE,UAAU,CAAC,IAC/D,CAAC;AAAA,EACX;AACJ;AACO,IAAM,sBAAsB;AAAA,EAC/B,cAAc;AAAA,IACV,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACjC,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACjC,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,IAChC,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,IAC/B,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,IACpC,EAAE,MAAM,gBAAgB,MAAM,UAAU;AAAA,IACxC,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,EACzC;AACJ;AACO,SAAS,4BAA4B,GAAuB,GAAuB;AACtF,QAAM,GAAG,CAAC,SAAS,SAAS,SAAS,QAAQ,YAAY,gBAAgB,WAAW,CAAC;AACrF,UACI,2BAAW,EAAE,KAAK,UAAM,2BAAW,EAAE,YAAY,KACjD,CAAC,OAAO,EAAE,KAAK,KACf,CAAC,KAAK,EAAE,OAAO,EAAE;AAEjB,UAAM,MAAM,8BAA8B;AAC9C,SAAO;AAAA,IACH,QAAQ;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,EAAE;AAAA,MACX,mBAAmB,EAAE;AAAA,IACzB;AAAA,IACA,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAAS;AAAA,MACL,WAAO,2BAAW,EAAE,KAAK;AAAA,MACzB,WAAO,2BAAW,EAAE,KAAK;AAAA,MACzB,OAAO,KAAK,EAAE,OAAO,EAAE;AAAA,MACvB,MAAM,KAAK,EAAE,MAAM,EAAE;AAAA,MACrB,UAAU,cAAc,GAAG,EAAE,QAAQ;AAAA,MACrC,GAAG,aAAa,CAAC;AAAA,IACrB;AAAA,EACJ;AACJ;AAOO,SAAS,0BAA0B,GAAoC;AAC1E,8BAA4B,EAAE,SAAS,EAAE,MAAM;AAC/C,MAAI,EAAE,cAAc,SAAS,CAAC,EAAE,cAAU,2BAAW,EAAE,MAAM,UAAM,2BAAW,EAAE,OAAO,KAAK;AACxF,UAAM,MAAM,yCAAyC;AACzD,SAAO;AAAA,IACH,MAAM,IAAI,yBAAU,iBAAiB,EAAE,mBAAmB,gBAAgB;AAAA,MACtE,EAAE,OAAO;AAAA,MACT,EAAE,OAAO;AAAA,MACT,EAAE,OAAO;AAAA,MACT,EAAE,OAAO;AAAA,MACT,EAAE,OAAO;AAAA,MACT,aAAa,EAAE,MAAM,EAAE;AAAA,MACvB,aAAa,EAAE,MAAM,EAAE;AAAA,MACvB,EAAE;AAAA,IACN,CAAC;AAAA,IACD,eAAe,aAAa,EAAE,MAAM,EAAE;AAAA,IACtC,sBAAsB,aAAa,EAAE,MAAM,EAAE,YACvC;AAAA,MACI;AAAA,QACI,OAAO,EAAE,OAAO;AAAA,QAChB,OAAO,EAAE,OAAO;AAAA,QAChB,QAAQ,aAAa,EAAE,MAAM,EAAE;AAAA,MACnC;AAAA,IACJ,IACA,CAAC;AAAA,EACX;AACJ;","names":["import_ethers","v","import_ethers","import_primitives","import_ethers","import_primitives","p"]}
|