@zerc20/wallet-sdk 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/burnWorker.js +6 -6
  2. package/dist/burnWorker.js.map +1 -1
  3. package/dist/chain.d.ts +19 -5
  4. package/dist/chain.js +17 -11
  5. package/dist/chain.js.map +1 -1
  6. package/dist/context.d.ts +23 -4
  7. package/dist/context.js +35 -6
  8. package/dist/context.js.map +1 -1
  9. package/dist/core.d.ts +32 -17
  10. package/dist/core.js +253 -70
  11. package/dist/core.js.map +1 -1
  12. package/dist/errors.d.ts +2 -0
  13. package/dist/errors.js.map +1 -1
  14. package/dist/index.d.ts +2 -2
  15. package/dist/index.js +2 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/pos.js +2 -2
  18. package/dist/pos.js.map +1 -1
  19. package/dist/rageExit.js +3 -5
  20. package/dist/rageExit.js.map +1 -1
  21. package/dist/seed.d.ts +4 -0
  22. package/dist/seed.js +12 -1
  23. package/dist/seed.js.map +1 -1
  24. package/dist/services.d.ts +5 -5
  25. package/dist/services.js +10 -7
  26. package/dist/services.js.map +1 -1
  27. package/dist/spend.d.ts +1 -1
  28. package/dist/spend.js +5 -4
  29. package/dist/spend.js.map +1 -1
  30. package/dist/state.d.ts +14 -4
  31. package/dist/state.js +10 -7
  32. package/dist/state.js.map +1 -1
  33. package/dist/sync.d.ts +16 -3
  34. package/dist/sync.js +90 -25
  35. package/dist/sync.js.map +1 -1
  36. package/dist/wallet.d.ts +27 -13
  37. package/dist/wallet.js +125 -62
  38. package/dist/wallet.js.map +1 -1
  39. package/package.json +4 -3
  40. package/src/burnWorker.ts +9 -10
  41. package/src/chain.ts +35 -12
  42. package/src/context.ts +48 -8
  43. package/src/core.ts +279 -87
  44. package/src/errors.ts +2 -0
  45. package/src/index.ts +2 -2
  46. package/src/pos.ts +2 -2
  47. package/src/rageExit.ts +3 -4
  48. package/src/seed.ts +13 -1
  49. package/src/services.ts +18 -7
  50. package/src/spend.ts +5 -5
  51. package/src/state.ts +17 -7
  52. package/src/sync.ts +95 -24
  53. package/src/wallet.ts +159 -64
  54. package/wasm/zerc20_wallet_core.d.ts +16 -13
  55. package/wasm/zerc20_wallet_core.js +49 -42
  56. package/wasm/zerc20_wallet_core_bg.wasm +0 -0
  57. package/wasm/zerc20_wallet_core_bg.wasm.d.ts +3 -3
package/dist/sync.js CHANGED
@@ -1,8 +1,8 @@
1
1
  // One pass of keeping up: new notes from storage, then per chain the wallet's tags and nullifiers among the
2
2
  // indexer's new entries. A wallet only ever looks for what it already expects; see scan.ts.
3
- import { commit, emptyState, planBurnBlock, planReceipt, refresh, } from '@zerc20/storage-sdk';
3
+ import { burnKey, commit, emptyState, planBurnBlock, planReceipt, refresh, } from '@zerc20/storage-sdk';
4
4
  import { bytesToHex, hexToBytes, numberToHex, parseAbiItem } from 'viem';
5
- import { chainCtx, chainState, spendKey } from './context.js';
5
+ import { chainCtx, chainState, owner } from './context.js';
6
6
  import { burnAddress, core } from './core.js';
7
7
  import { scan } from './scan.js';
8
8
  import { PAGE } from './servers.js';
@@ -28,10 +28,12 @@ export function commitmentsAt(samples, atMs) {
28
28
  return best;
29
29
  }
30
30
  /** A note's hash under the key that owns it (the wallet's, or with `keyIndex` a receive code's), and the watch for its
31
- * tag. */
31
+ * tag. Null while that key's owner is not derived. */
32
32
  function watchFor(ctx, chainId, tokenId, value, salt, keyIndex, from) {
33
- const { publicKey } = spendKey(ctx, keyIndex === undefined ? undefined : { chainId, tokenId, index: keyIndex });
34
- const noteHash = core.noteHash(chainId, publicKey, `0x${value.toString(16)}`, tokenId, salt);
33
+ const key = owner(ctx, keyIndex === undefined ? undefined : { chainId, tokenId, index: keyIndex });
34
+ if (!key)
35
+ return null;
36
+ const noteHash = core.noteHash(chainId, key.publicKey, `0x${value.toString(16)}`, tokenId, salt);
35
37
  return { noteHash, watch: { key: numberToHex(core.noteTag(tokenId, noteHash), { size: 4 }), from, scannedTo: from } };
36
38
  }
37
39
  /** The storage state, empty until its first refresh. It watches every chain of the network, also one the network
@@ -168,7 +170,7 @@ export function takeDeposit(ctx, deposit, payer, tokens) {
168
170
  const salt = hex32(deposit.burnSalt);
169
171
  if (ctx.state.deposits.some((d) => d.chainId === chainId && d.salt === salt))
170
172
  return;
171
- const address = core.burnAddressOf(chainId, spendKey(ctx).publicKey, salt);
173
+ const address = core.burnAddressOf(chainId, owner(ctx).publicKey, salt);
172
174
  if (!address)
173
175
  return;
174
176
  const atMs = Number(deposit.atNs / 1000000n);
@@ -196,7 +198,7 @@ export function takeDeposit(ctx, deposit, payer, tokens) {
196
198
  function takeBurnBlock(ctx, b, pos, tokens) {
197
199
  if (!tokens.has(b.chainId))
198
200
  return;
199
- const { publicKey } = spendKey(ctx);
201
+ const { publicKey } = owner(ctx);
200
202
  const atMs = Number(b.atNs / 1000000n);
201
203
  const from = commitmentsAt(chainState(ctx, b.chainId).samples, atMs - DAY_MS);
202
204
  b.salts.forEach((bytes, i) => {
@@ -237,15 +239,24 @@ export function unusedBurn(ctx, chainId, tokenId) {
237
239
  }
238
240
  return best;
239
241
  }
240
- /** Records this wallet's next burn address of a token in storage (a burn block of one), then watches it. Every device
241
- * of the wallet, and a restore, then watches it too and never hands it out again. About 2^16 hashes. */
242
- export async function recordBurn(ctx, chainId, tokenId, tokens, signal) {
242
+ /** The index of the next burn address of a token to record: past every one recorded, here or by another device. */
243
+ function toRecord(ctx, chainId, tokenId) {
243
244
  let index = chainState(ctx, chainId).burnNext[tokenId] ?? 0;
244
245
  for (const d of ctx.state.deposits) {
245
246
  if (d.chainId === chainId && d.tokenId === tokenId && !d.managed)
246
247
  index = Math.max(index, d.burnIndex + 1);
247
248
  }
248
- const { salt, address } = await burnAddress(ctx.seed, chainId, tokenId, index, signal);
249
+ return index;
250
+ }
251
+ /** The index of the burn address of a token that is handed out next, and so of the receive code: the one recorded
252
+ * ahead, or else the next to record. */
253
+ export const nextBurn = (ctx, chainId, tokenId) => unusedBurn(ctx, chainId, tokenId)?.burnIndex ?? toRecord(ctx, chainId, tokenId);
254
+ /** Records this wallet's next burn address of a token in storage (a burn block of one), then watches it. Every device
255
+ * of the wallet, and a restore, then watches it too and never hands it out again. About 2^16 hashes; needs no seed. */
256
+ export async function recordBurn(ctx, chainId, tokenId, tokens, signal) {
257
+ const index = toRecord(ctx, chainId, tokenId);
258
+ const key = burnKey(ctx.view.seed);
259
+ const { salt, address } = await burnAddress(key, chainId, tokenId, index, owner(ctx).publicKey, signal);
249
260
  const { commitmentsFinal: from } = await chainCtx(ctx, chainId).indexer.status();
250
261
  const block = { chainId, tokenId, first: index, salts: [hexToBytes(salt)] };
251
262
  const result = await commit(ctx.storage, ctx.view, storageState(ctx), (s) => planBurnBlock(ctx.view, s, block));
@@ -315,16 +326,54 @@ function upsertNote(ctx, a, note, tokens) {
315
326
  peer,
316
327
  atNs,
317
328
  ...(keyIndex === undefined ? {} : { keyIndex }),
318
- ...watchFor(ctx, chainId, tokenId, big(value), salt, keyIndex, from),
329
+ // storage tells of a note once: one whose key waits for the seed is kept, not dropped
330
+ ...(watchFor(ctx, chainId, tokenId, big(value), salt, keyIndex, from) ?? {
331
+ unkeyed: true,
332
+ noteHash: '0x',
333
+ watch: null,
334
+ }),
319
335
  found: [],
320
336
  });
321
337
  }
338
+ /** Receive codes of each token whose keys are derived while the seed is held, to hand out while it is not. */
339
+ export const CODES_AHEAD = 4;
340
+ /** With the seed held, each owner not derived yet: the wallet's own, each of its burn addresses' (a receive code each),
341
+ * the next `CODES_AHEAD` codes' of each of `tokens`, and each note's key's; and the watch of each note that waited for
342
+ * its key. */
343
+ export function keyAll(ctx, tokens) {
344
+ owner(ctx);
345
+ // ponytail: one derivation per own burn address as the wallet opens; keep owners in the saved state if wallets grow
346
+ // to thousands of them
347
+ for (const d of ctx.state.deposits) {
348
+ if (d.burnIndex >= 0 && !d.managed)
349
+ owner(ctx, { chainId: d.chainId, tokenId: d.tokenId, index: d.burnIndex });
350
+ }
351
+ for (const { chainId, tokenId } of tokens) {
352
+ const next = nextBurn(ctx, chainId, tokenId);
353
+ for (let index = next; index < next + CODES_AHEAD; index++)
354
+ owner(ctx, { chainId, tokenId, index });
355
+ }
356
+ for (const n of ctx.state.notes) {
357
+ if (n.keyIndex === undefined)
358
+ continue;
359
+ owner(ctx, { chainId: n.chainId, tokenId: n.tokenId, index: n.keyIndex });
360
+ if (!n.unkeyed)
361
+ continue;
362
+ const from = commitmentsAt(chainState(ctx, n.chainId).samples, Number((n.atNs ?? 0n) / 1000000n) - DAY_MS);
363
+ Object.assign(n, watchFor(ctx, n.chainId, n.tokenId, n.value, n.salt, n.keyIndex, from));
364
+ delete n.unkeyed;
365
+ }
366
+ }
322
367
  /** Whether something was started or announced recently enough to look past the final count for it. */
323
368
  function waiting(ctx, chainId, now) {
324
369
  const recent = (ms) => ms !== null && now - ms < WAIT_MS;
325
370
  return (ctx.state.ops.some((o) => o.chainId === chainId && o.status === 'pending' && recent(o.createdMs)) ||
326
371
  [...ctx.state.deposits, ...ctx.state.sent].some((d) => d.chainId === chainId && d.found.length === 0 && recent(d.createdMs)) ||
327
- ctx.state.notes.some((n) => n.chainId === chainId && n.found.length === 0 && n.atNs !== null && recent(Number(n.atNs / 1000000n))));
372
+ ctx.state.notes.some((n) => n.chainId === chainId &&
373
+ !n.unkeyed &&
374
+ n.found.length === 0 &&
375
+ n.atNs !== null &&
376
+ recent(Number(n.atNs / 1000000n))));
328
377
  }
329
378
  /** One chain: new tags, deposit details, then nullifiers. */
330
379
  async function syncChain(ctx, c, tokens) {
@@ -413,25 +462,41 @@ async function syncChain(ctx, c, tokens) {
413
462
  ...deposits.flatMap((d) => d.found.map((f) => ({ f, code: undefined }))),
414
463
  ].filter(({ f }) => !f.tentative && !f.spent);
415
464
  for (const { f, code } of owned) {
416
- if (f.nullifier)
417
- continue;
418
- const nullifier = core.nullifier(chainId, BigInt(f.index), spendKey(ctx, code).nullifyingKey);
465
+ const key = owner(ctx, code);
466
+ if (f.nullifier || !key)
467
+ continue; // without its owner: looked for once the seed is held
468
+ const nullifier = core.nullifier(chainId, BigInt(f.index), key.nullifyingKey);
419
469
  const from = await nullifierFrom(f.index);
420
470
  f.nullifier = { key: nullifier.slice(0, 18), from, scannedTo: from };
421
471
  }
422
- const nullifierWatches = owned.map(({ f }) => f.nullifier);
472
+ const nullifierWatches = owned.flatMap(({ f }) => (f.nullifier ? [f.nullifier] : []));
423
473
  const spent = await scan(nullifierWatches, 8, (p) => c.indexer.page('nullifiers', p), status.nullifiersFinal, live === status.commitments ? status.nullifiers : status.nullifiersFinal);
424
- const byNullifier = new Map(owned.map(({ f }) => [f.nullifier.key, f]));
425
- for (const hit of spent) {
474
+ applySpends([...notes, ...deposits].flatMap((r) => r.found), spent);
475
+ }
476
+ /** Records nullifier hits on the positions they spend: a final one spends it, one past the final count marks it
477
+ * `nullifiedAt`, until the final nullifiers pass that place without it (a reorg dropped that JoinSplit, which shows up
478
+ * again where it went). Every device sees an input gone once its JoinSplit is in a block, as the one that sent it does. */
479
+ export function applySpends(positions, hits) {
480
+ const byNullifier = new Map(positions.filter((f) => f.nullifier).map((f) => [f.nullifier.key, f]));
481
+ for (const hit of hits) {
426
482
  const f = byNullifier.get(hit.key);
427
- if (f && !hit.tentative)
483
+ if (!f)
484
+ continue;
485
+ if (hit.tentative)
486
+ f.nullifiedAt = hit.position;
487
+ else
428
488
  f.spent = true;
429
489
  }
430
- // a spent position needs no more watching
431
- for (const r of [...notes, ...deposits])
432
- for (const f of r.found)
433
- if (f.spent)
434
- delete f.nullifier;
490
+ for (const f of positions) {
491
+ // a spent position needs no more watching
492
+ if (f.spent) {
493
+ delete f.nullifier;
494
+ delete f.nullifiedAt;
495
+ }
496
+ else if (f.nullifier && f.nullifiedAt !== undefined && f.nullifiedAt < f.nullifier.scannedTo) {
497
+ delete f.nullifiedAt;
498
+ }
499
+ }
435
500
  }
436
501
  /** The four fields of the commitment at an index, read from its page of commitments, each page once per reader: `null`
437
502
  * until the page is served that far. */
package/dist/sync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,4FAA4F;AAE5F,OAAO,EAQL,MAAM,EACN,UAAU,EACV,aAAa,EACb,WAAW,EACX,OAAO,GACR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAY,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEnF,OAAO,EAA2B,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAwB,IAAI,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAA0C,IAAI,EAAE,MAAM,cAAc,CAAC;AAG5E,sGAAsG;AACtG,MAAM,cAAc,GAAG,YAAY,CAAC,0DAA0D,CAAC,CAAC;AAEhG,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,yFAAyF;AACzF,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,4DAA4D;AAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC;AAC7B,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,oGAAoG;AACpG,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC;AAEnC,MAAM,KAAK,GAAG,CAAC,CAAa,EAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,GAAG,GAAG,CAAC,CAAa,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAExD;8FAC8F;AAC9F,MAAM,UAAU,aAAa,CAAC,OAAiB,EAAE,IAAY;IAC3D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI;YAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;UACU;AACV,SAAS,QAAQ,CACf,GAAQ,EACR,OAAe,EACf,OAAe,EACf,KAAa,EACb,IAAS,EACT,QAA4B,EAC5B,IAAY;IAEZ,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAQ,CAAC;IACpG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AACxH,CAAC;AAED;4FAC4F;AAC5F,MAAM,UAAU,YAAY,CAAC,GAAQ;IACnC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9G,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAQ,EAAE,MAA6B;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,iBAAiB,GAAG,eAAe,CAAC;IAClE,WAAW,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5F,IAAI,IAAI;QAAE,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;+GAC+G;AAC/G,KAAK,UAAU,aAAa,CAAC,GAAQ,EAAE,MAA6B;IAClE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAChG,MAAM,OAAO,GACX,CAAC,CAAC,IAAI,KAAK,UAAU;YACnB,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;aAC7B;YACH,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9E,WAAW,CACT,GAAG,EACH,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAChG,MAAM,CACP,CAAC;QACF,OAAO,CAAC,CAAC,SAAS,CAAC;QACnB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACrB,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACf,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;CACzC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CACzB,MAAM,CAAC,GAAG,CACR,CAAC,CAAC,MAAM,CAAC,OAAO,EAChB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAC/C,CACF,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;mDAGmD;AACnD,MAAM,UAAU,WAAW,CACzB,GAAQ,EACR,EAAE,KAAK,EAAE,KAAK,EAA4C,EAC1D,MAA6B;IAE7B,uFAAuF;IACvF,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACvF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACtD,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,2FAA2F;QAC3F,IAAI,CAAC,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;gBAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAK,EAAE,MAAM,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAK,EAAE,MAAM,CAAC,CAAC;aAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAAE,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC;aACvF,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;aACrD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,wDAAwD;IAC/G,CAAC;AACH,CAAC;AAED;0EAC0E;AAC1E,SAAS,QAAQ,CAAC,GAAQ,EAAE,CAAU,EAAE,EAAc,EAAE,MAA6B;IACnF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO;IACpD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;QAAE,OAAO;IACvF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC3G,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,OAAO;QACP,OAAO;QACP,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7B,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;AACL,CAAC;AAED;mCACmC;AACnC,SAAS,WAAW,CAAC,GAAQ,EAAE,CAAgC;IAC7D,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;QACvB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QACjB,CAAC,CAAC,WAAW,KAAK,WAAW;QAC7B,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAC5E,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3E,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACrB,CAAC,CAAC,IAAI,KAAK,UAAU;QACnB,CAAC,CAAC;YACE,GAAG,IAAI;YACP,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YACrB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;SAC7B;QACH,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAC5E,CAAC;AACJ,CAAC;AAED;uDACuD;AACvD,MAAM,UAAU,WAAW,CAAC,GAAQ,EAAE,OAAgB,EAAE,KAAiB,EAAE,MAA6B;IACtG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IACrF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,CAAoB,CAAC;IAC9F,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC;IAC/C,iFAAiF;IACjF,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAC5E,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,OAAO;QACP,OAAO;QACP,SAAS,EAAE,CAAC,CAAC;QACb,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;QACnB,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;SACjH;QACD,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;AACL,CAAC;AAED;;;+BAG+B;AAC/B,SAAS,aAAa,CACpB,GAAQ,EACR,CAA8C,EAC9C,GAAY,EACZ,MAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,OAAO;IACnC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAC9E,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAoB,CAAC;QAClF,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO;QACnG,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YACjD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7G,MAAM,MAAM,GAAkB;YAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YACjC,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACxC,KAAK,EAAE,EAAE;SACV,CAAC;QACF,IAAI,GAAG;YAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,UAAU,CAAC,GAAQ,EAAE,OAAe,EAAE,OAAe;IACnE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,IAA+B,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI;YAAE,SAAS;QAC3G,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAAE,IAAI,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;wGACwG;AACxG,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAQ,EACR,OAAe,EACf,OAAe,EACf,MAA6B,EAC7B,MAAoB;IAEpB,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC7G,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvF,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACjF,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAChH,MAAM,MAAM,GAAkB;QAC5B,OAAO;QACP,OAAO;QACP,SAAS,EAAE,KAAK;QAChB,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,cAAc,EAAE,IAAI;QACpB,yFAAyF;QACzF,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;SACjH;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,8FAA8F;IAC9F,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;iEAEiE;AACjE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,MAAoB;IAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,GAAG,CAAC,KAAK,CAAC,QAAQ;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACrD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAChD,CAAC;IACF,IAAI,MAAyC,CAAC;IAC9C,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;YACpC,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,KAAK,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ,EAAE,CAAY,EAAE,IAAU,EAAE,MAA6B;IACnF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACb,iFAAiF;QACjF,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,iGAAiG;IACjG,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;IACxB,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO;IAC7C,MAAM,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC;IAC7B,kGAAkG;IAClG,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,QAAU,CAAC,GAAG,MAAM,CAAC,CAAC;IACjG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACnB,OAAO;QACP,OAAO;QACP,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;QACjB,IAAI;QACJ,MAAM,EAAE,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;QACnD,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI;QACJ,IAAI;QACJ,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC/C,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;QACpE,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;AACL,CAAC;AAED,sGAAsG;AACtG,SAAS,OAAO,CAAC,GAAQ,EAAE,OAAe,EAAE,GAAW;IACrD,MAAM,MAAM,GAAG,CAAC,EAAiB,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IACxE,OAAO,CACL,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAC5E;QACD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC,CAC/G,CACF,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,KAAK,UAAU,SAAS,CAAC,GAAQ,EAAE,CAAW,EAAE,MAAgB;IAC9D,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACjC,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,uEAAuE;IACvE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;gBAAE,SAAS;YAC3D,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACrC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBACb,OAAO;gBACP,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;aACtG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAY;QACvB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC3D,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACvF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACrG,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAClC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7C,kHAAkH;IAClH,gGAAgG;IAChG,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,IAAI,GACR,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACrD,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAChC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;gBAChB,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,IAAI;gBAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;;gBACxB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,uHAAuH;QACvH,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;IACvE,CAAC;IACD,MAAM,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjD,iDAAiD;IACjD,IAAI,GAAG;QAAE,MAAM,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChG,2GAA2G;IAC3G,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtF,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;IAElD,6CAA6C;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,MAAM,aAAa,GAAG,KAAK,EAAE,KAAa,EAAmB,EAAE;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,CAAC,CAAC;IACF,uEAAuE;IACvE,MAAM,KAAK,GAAG;QACZ,GAAG,KAAK;aACL,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;aAC3B,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,EAAE,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;SAChG,CAAC,CAAC,CACJ;QACH,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KACzE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9C,KAAK,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,SAAS;YAAE,SAAS;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAU,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CACtB,gBAAgB,EAChB,CAAC,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EACtC,MAAM,CAAC,eAAe,EACtB,IAAI,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CACzE,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1C,CAAC;IACD,0CAA0C;IAC1C,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,SAAS,CAAC;AACpG,CAAC;AAED;wCACwC;AACxC,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IACrD,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;QAC3B,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAChC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,iBAAiB;QAC7D,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC;AACJ,CAAC;AAED;6DAC6D;AAC7D,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAC;IAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7F,CAAC,CAAC;AACJ,CAAC;AAKD;uGACuG;AACvG,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAY,EACZ,OAAgB,EAChB,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,OAAO,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE;QAC7B,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;QAC9B,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;AACvD,CAAC;AAED;gHACgH;AAChH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAqD,EACrD,QAAmB;IAEnB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtC,SAAS;YACX,CAAC;YACD,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED;eACe;AACf,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAQ,EAAE,QAAmB;IAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC7F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;6GAC6G;AAC7G,KAAK,UAAU,iBAAiB,CAC9B,CAAW,EACX,UAAyB,EACzB,SAAiB,EACjB,QAAmB;IAEnB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC7F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO;IAC1D,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;QACzB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;KAC7D,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,iBAAiB;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;IAC7F,CAAC;AACH,CAAC;AAED;qHACqH;AACrH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,MAA6C,EAC7C,KAA4C,EAC5C,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5C,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;IACzE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAClD,CAAC;AAED;qDACqD;AACrD,MAAM,UAAU,SAAS,CACvB,KAAmB,EACnB,QAAoD,EACpD,IAAW;IAGX,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,CAAQ,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC,CAAC,KAAK;YAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAClE,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;YAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1G,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC3E,IAAI,MAAM,IAAI,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;;gBAC7D,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;AACH,CAAC;AAED;oGACoG;AACpG,SAAS,KAAK,CACZ,KAAU,EACV,GAAM;IAEN,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;uCAEuC;AACvC,MAAM,UAAU,WAAW,CAAC,OAA6D,EAAE,UAAkB;IAC3G,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC;AAClG,CAAC;AAED;oCACoC;AACpC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAQ;IACpC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAI,CAAa,EAAqB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACtG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAU,CAAC,CAAC,CAAC,CAClH,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACzD,mHAAmH;IACnH,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,4GAA4G;IAC5G,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,MAAM;SACP,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,CACtE,CAAC;IACF,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
package/dist/wallet.d.ts CHANGED
@@ -1,15 +1,23 @@
1
- import { type Address, type Hex, type WalletClient } from 'viem';
2
- import { type Token } from './chain.js';
1
+ import { type Address, type Hex, type LocalAccount, type WalletClient } from 'viem';
2
+ import { type Referrer, type Token } from './chain.js';
3
3
  import { type ErrorCode } from './errors.js';
4
4
  import { type Network } from './network.js';
5
5
  import { type MergeStep, type Step } from './spend.js';
6
6
  import { type OperationRecord } from './state.js';
7
7
  export interface OpenOptions {
8
8
  network: Network;
9
- /** The user's wallet (MetaMask, WalletConnect, ...) as a viem client with its account. */
10
- walletClient: WalletClient;
11
- /** The 32-byte root of every key. See `seedFromSignature`. */
12
- seed: Uint8Array;
9
+ /** The account's key, held by the app as a viem local account (a private key's, or `accountKey`'s): the wallet sends
10
+ * its transactions through each chain's RPC. Give this or `walletClient`. */
11
+ account?: LocalAccount;
12
+ /** The user's wallet (MetaMask, WalletConnect, ...) as a viem client with its account, which the wallet switches to
13
+ * each chain it sends on. */
14
+ walletClient?: WalletClient;
15
+ /** The 32-byte root of every key (see `seedFromSignature`), held while the wallet is open. Or a function that gives
16
+ * it, a passkey's say, to hold the seed only while it is needed: asked as the wallet opens, and again to pay,
17
+ * withdraw, consolidate or exit, or for a receive code past those derived ahead, each time before the call waits on
18
+ * anything (a browser shows a passkey prompt only in the click that asked). The seed goes at the end of a sync that
19
+ * nothing waits behind, once nothing in flight signs again. */
20
+ seed: Uint8Array | (() => Promise<Uint8Array>);
13
21
  /** Where the encrypted state lives between sessions. */
14
22
  persist: {
15
23
  load(): Promise<Uint8Array | null | undefined>;
@@ -18,6 +26,8 @@ export interface OpenOptions {
18
26
  /** Where a wallet with no saved state starts looking: the block its seed was first used at, or roughly when. Without
19
27
  * it, an address registered before is looked for from the chain's start, and a new one from now on. */
20
28
  birthday?: bigint | Date;
29
+ /** The app opening the wallet, when it takes a share of what reaches the deposit addresses it hands out. */
30
+ referrer?: Referrer;
21
31
  }
22
32
  /** What a deposit, or a deposit address, waits on: for an app to show while it does. */
23
33
  export type DepositStep =
@@ -32,7 +42,7 @@ export type DepositStep =
32
42
  | 'wrap';
33
43
  /** Why an amount is not spendable yet. */
34
44
  export type PendingReason =
35
- /** Announced by the payer, and not yet read on chain. */
45
+ /** A note this device's payment, withdrawal or merge under way is making, not yet read on chain. */
36
46
  'incoming'
37
47
  /** Waiting for a proved root that covers it (minutes). */
38
48
  | 'awaiting-root'
@@ -86,7 +96,7 @@ export interface Activity {
86
96
  txHash: Hex | null;
87
97
  /** `done` once on chain (in a block: a reorg may still take it back until final), `failed` for a payment or
88
98
  * withdrawal that cannot land, shown only on the device that tried it. What is not on chain yet is not activity:
89
- * an operation under way is in `operations()`, a note only announced is `incoming` in `balances()`. */
99
+ * an operation under way is in `operations()`, and the note it is making `incoming` in `balances()`. */
90
100
  status: 'done' | 'failed';
91
101
  }
92
102
  /** An unspent note or deposit on chain: what payments and consolidations spend, now or once it settles. */
@@ -170,15 +180,15 @@ export declare class Wallet {
170
180
  static open(opts: OpenOptions): Promise<Wallet>;
171
181
  /** Catches up: new notes, deposits, spends and roots, then advances every operation in flight. A chain or server that
172
182
  * fails holds back only what needs it, and the first error is thrown once the rest is done. Settles before the burn
173
- * addresses are topped up, which can take a phone tens of seconds. */
183
+ * addresses are topped up, which can take a phone some seconds. */
174
184
  sync(): Promise<void>;
175
- /** Syncs on its own: every 15 s while something is under way, every 5 min otherwise. Returns a stop function. */
185
+ /** Syncs on its own: every 3 s while something is under way, every 10 s otherwise. Returns a stop function. */
176
186
  autoSync(onChange?: () => void, onError?: (e: unknown) => void): () => void;
177
187
  /** The tokens of every chain, as of opening or the last sync. */
178
188
  tokens(): Token[];
179
189
  balances(): Balance[];
180
190
  /** Every unspent note and deposit on chain, and where each stands, as of opening or the last sync. A note announced
181
- * but not on chain yet is not one: `balances()` counts it as incoming. */
191
+ * but not read on chain yet is not one: `balances()` counts it as incoming if this device's operation is making it. */
182
192
  coins(): CoinInfo[];
183
193
  /** Everything this wallet received, sent, deposited, sold, withdrew, merged and returned, newest first: the same on every
184
194
  * device of the wallet, read from storage and the chain. This device's operations add only what no other device can
@@ -216,6 +226,9 @@ export declare class Wallet {
216
226
  * With `wrapped`, it pays from the account's zERC20 itself, as a withdrawal pays out, rather than its underlying
217
227
  * asset: a plain transfer into the burn address, with no wrap and no approval.
218
228
  *
229
+ * With `from`, another wallet of the user's (a browser wallet) pays instead of the account: its balance is checked,
230
+ * it approves and wraps, and an exit refunds it there. The account pays nothing and signs nothing.
231
+ *
219
232
  * Returns once the wrap is sent: the operation is done once it is mined, which `wait()` or the next sync finds.
220
233
  * `onStep` hears what it waits on meanwhile, for an app to show. */
221
234
  deposit(opts: {
@@ -223,12 +236,13 @@ export declare class Wallet {
223
236
  amount: bigint;
224
237
  to?: Address;
225
238
  wrapped?: boolean;
239
+ from?: WalletClient;
226
240
  onStep?: (step: DepositStep) => void;
227
241
  }): Promise<Operation>;
228
242
  /** An address that takes `token`'s underlying asset from anywhere (an exchange withdrawal, another wallet) and
229
243
  * deposits it privately, less `fee` (in the underlying's base units) to the deposit relayer each time: what arrives
230
- * must exceed it. Watched for 7 days by the deposit relayer; refunds go back to this account. `onStep` hears what it
231
- * waits on (`queued`, `burn-address`). */
244
+ * must exceed it. A wallet opened with a `referrer` also pays it its `bps` of the rest. Watched for 7 days by the
245
+ * deposit relayer; refunds go back to this account. `onStep` hears what it waits on (`queued`, `burn-address`). */
232
246
  depositAddress(token: Token, opts?: {
233
247
  onStep?: (step: DepositStep) => void;
234
248
  }): Promise<{