@peerbit/stream 4.1.0 → 4.1.1

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.
@@ -4,7 +4,7 @@ import { SeekDelivery } from "@peerbit/stream-interface";
4
4
  import { waitForResolved } from "@peerbit/time";
5
5
  import B from "benchmark";
6
6
  import crypto from "crypto";
7
- import { DirectStream, waitForPeers, } from "../src/index.js";
7
+ import { DirectStream, waitForNeighbour, } from "../src/index.js";
8
8
  // Run with "node --loader ts-node/esm ./benchmark/transfer.ts"
9
9
  // size: 100byte x 1,727 ops/sec ±2.61% (83 runs sampled)
10
10
  // size: 1kb x 1,727 ops/sec ±2.61% (83 runs sampled)
@@ -42,9 +42,9 @@ await session.connect([
42
42
  [session.peers[2], session.peers[3]],
43
43
  ]);
44
44
  const stream = (i) => session.peers[i].services.directstream;
45
- await waitForPeers(stream(0), stream(1));
46
- await waitForPeers(stream(1), stream(2));
47
- await waitForPeers(stream(2), stream(3));
45
+ await waitForNeighbour(stream(0), stream(1));
46
+ await waitForNeighbour(stream(1), stream(2));
47
+ await waitForNeighbour(stream(2), stream(3));
48
48
  stream(0).publish(new Uint8Array([123]), {
49
49
  mode: new SeekDelivery({
50
50
  redundancy: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../benchmark/transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../benchmark/transfer.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,8 @@ export interface PeerStreamEvents {
23
23
  "stream:inbound": CustomEvent<never>;
24
24
  "stream:outbound": CustomEvent<never>;
25
25
  close: CustomEvent<never>;
26
+ "peer:reachable": CustomEvent<PublicSignKey>;
27
+ "peer:unreachable": CustomEvent<PublicSignKey>;
26
28
  }
27
29
  /**
28
30
  * Thin wrapper around a peer's inbound / outbound pubsub streams
@@ -236,14 +238,20 @@ export declare abstract class DirectStream<Events extends {
236
238
  signal?: AbortSignal;
237
239
  neighbour?: boolean;
238
240
  }): Promise<void>;
239
- getPublicKey(hash: string): PublicSignKey;
241
+ getPublicKey(hash: string): PublicSignKey | undefined;
240
242
  get pending(): boolean;
241
243
  maybePruneConnections(): Promise<void>;
242
244
  pruneConnections(): Promise<void>;
243
245
  getQueuedBytes(): number;
244
246
  }
245
- export declare const waitForPeers: (...libs: {
247
+ export declare const waitForReachable: (...libs: {
246
248
  waitFor: (peer: PeerId | PublicSignKey) => Promise<void>;
247
249
  peerId: PeerId;
248
250
  }[]) => Promise<void>;
251
+ export declare const waitForNeighbour: (...libs: {
252
+ waitFor: (peer: PeerId | PublicSignKey, options?: {
253
+ neighbour?: boolean;
254
+ }) => Promise<void>;
255
+ peerId: PeerId;
256
+ }[]) => Promise<void>;
249
257
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -1,20 +1,21 @@
1
- import { TypedEventEmitter } from "@libp2p/interface";
1
+ import { MuxerClosedError, StreamResetError, TypedEventEmitter, UnsupportedProtocolError, } from "@libp2p/interface";
2
2
  import { multiaddr } from "@multiformats/multiaddr";
3
3
  import { Cache } from "@peerbit/cache";
4
4
  import { PublicSignKey, getKeypairFromPrivateKey, getPublicKeyFromPeerId, ready, sha256Base64, toBase64, } from "@peerbit/crypto";
5
5
  import { ACK, AcknowledgeDelivery, AnyWhere, DataMessage, DeliveryError, Goodbye, Message, MessageHeader, MultiAddrinfo, NotStartedError, SeekDelivery, SilentDelivery, TracedDelivery, deliveryModeHasReceiver, getMsgId, } from "@peerbit/stream-interface";
6
- import { AbortError, TimeoutError, delay, waitFor } from "@peerbit/time";
6
+ import { AbortError, TimeoutError, delay } from "@peerbit/time";
7
7
  import { abortableSource } from "abortable-iterator";
8
8
  import * as lp from "it-length-prefixed";
9
9
  import { pipe } from "it-pipe";
10
10
  import { pushable } from "it-pushable";
11
- import pDefer from "p-defer";
11
+ import pDefer, {} from "p-defer";
12
12
  import Queue from "p-queue";
13
13
  import { Uint8ArrayList } from "uint8arraylist";
14
14
  import { logger } from "./logger.js";
15
15
  import { pushableLanes } from "./pushable-lanes.js";
16
16
  import { MAX_ROUTE_DISTANCE, Routes } from "./routes.js";
17
17
  import { BandwidthTracker } from "./stats.js";
18
+ import { waitForEvent } from "./wait-for-event.js";
18
19
  export { logger };
19
20
  export { BandwidthTracker }; // might be useful for others
20
21
  const logError = (e) => {
@@ -367,11 +368,17 @@ export class DirectStream extends TypedEventEmitter {
367
368
  this.outboundInflightQueue = pushable({ objectMode: true });
368
369
  pipe(this.outboundInflightQueue, async (source) => {
369
370
  for await (const { peerId, connection } of source) {
371
+ if (this.stopping || this.started === false) {
372
+ return;
373
+ }
370
374
  await this.createOutboundStream(peerId, connection);
371
375
  }
372
376
  }).catch((e) => {
373
377
  logger.error("outbound inflight queue error: " + e?.toString());
374
378
  });
379
+ this.closeController.signal.addEventListener("abort", () => {
380
+ this.outboundInflightQueue.return();
381
+ });
375
382
  this.routes = new Routes(this.publicKeyHash, {
376
383
  routeMaxRetentionPeriod: this.routeMaxRetentionPeriod,
377
384
  signal: this.closeController.signal,
@@ -517,11 +524,21 @@ export class DirectStream extends TypedEventEmitter {
517
524
  return;
518
525
  }
519
526
  try {
520
- stream = await connection.newStream(this.multicodecs);
527
+ stream = await connection.newStream(this.multicodecs, {
528
+ // TODO this property seems necessary, together with waitFor isReadable when making sure two peers are conencted before talking.
529
+ // research whether we can do without this so we can push data without beeing able to send
530
+ // more info here https://github.com/libp2p/js-libp2p/issues/2321
531
+ negotiateFully: true,
532
+ });
521
533
  if (stream.protocol == null) {
522
534
  stream.abort(new Error("Stream was not multiplexed"));
523
535
  return;
524
536
  }
537
+ if (!this.started) {
538
+ // we closed before we could create the stream
539
+ stream.abort(new Error("Closed"));
540
+ return;
541
+ }
525
542
  peer = this.addPeer(peerId, peerKey, stream.protocol, connection.id); // TODO types
526
543
  await peer.attachOutboundStream(stream);
527
544
  }
@@ -530,9 +547,15 @@ export class DirectStream extends TypedEventEmitter {
530
547
  await delay(100);
531
548
  continue; // Retry
532
549
  }
550
+ if (error instanceof UnsupportedProtocolError) {
551
+ await delay(100);
552
+ continue; // Retry
553
+ }
533
554
  if (connection.status !== "open" ||
534
555
  error?.message === "Muxer already closed" ||
535
- error.code === "ERR_STREAM_RESET") {
556
+ error.code === "ERR_STREAM_RESET" ||
557
+ error instanceof StreamResetError ||
558
+ error instanceof MuxerClosedError) {
536
559
  return; // fail silenty
537
560
  }
538
561
  throw error;
@@ -1343,18 +1366,23 @@ export class DirectStream extends TypedEventEmitter {
1343
1366
  : (peer instanceof PublicSignKey
1344
1367
  ? peer
1345
1368
  : getPublicKeyFromPeerId(peer)).hashcode();
1369
+ const checkIsReachable = (deferred) => {
1370
+ if (options?.neighbour && !this.peers.has(hash)) {
1371
+ return;
1372
+ }
1373
+ if (!this.routes.isReachable(this.publicKeyHash, hash, 0)) {
1374
+ return;
1375
+ }
1376
+ deferred.resolve();
1377
+ };
1378
+ const abortSignals = [this.closeController.signal];
1379
+ if (options?.signal) {
1380
+ abortSignals.push(options.signal);
1381
+ }
1346
1382
  try {
1347
- await waitFor(() => {
1348
- if (options?.neighbour && !this.peers.has(hash)) {
1349
- return false;
1350
- }
1351
- if (!this.routes.isReachable(this.publicKeyHash, hash, 0)) {
1352
- return false;
1353
- }
1354
- return true;
1355
- }, {
1356
- signal: options?.signal,
1357
- timeout: options?.timeout ?? 10 * 1000,
1383
+ await waitForEvent(this, ["peer:reachable"], checkIsReachable, {
1384
+ signals: abortSignals,
1385
+ timeout: options?.timeout,
1358
1386
  });
1359
1387
  }
1360
1388
  catch (error) {
@@ -1370,10 +1398,14 @@ export class DirectStream extends TypedEventEmitter {
1370
1398
  if (options?.neighbour) {
1371
1399
  const stream = this.peers.get(hash);
1372
1400
  try {
1373
- // Dontwait for readlable https://github.com/libp2p/js-libp2p/issues/2321
1374
- await waitFor(() => /* stream.isReadable && */ stream.isWritable, {
1375
- signal: options?.signal,
1376
- timeout: options?.timeout ?? 10 * 1000,
1401
+ let checkIsWritable = (pDefer) => {
1402
+ if (stream.isReadable && stream.isWritable) {
1403
+ pDefer.resolve();
1404
+ }
1405
+ };
1406
+ await waitForEvent(stream, ["stream:outbound", "stream:inbound"], checkIsWritable, {
1407
+ signals: abortSignals,
1408
+ timeout: options?.timeout,
1377
1409
  });
1378
1410
  }
1379
1411
  catch (error) {
@@ -1442,13 +1474,25 @@ export class DirectStream extends TypedEventEmitter {
1442
1474
  return sum;
1443
1475
  }
1444
1476
  }
1445
- export const waitForPeers = async (...libs) => {
1477
+ export const waitForReachable = async (...libs) => {
1446
1478
  for (let i = 0; i < libs.length; i++) {
1447
1479
  for (let j = 0; j < libs.length; j++) {
1448
1480
  if (i === j) {
1449
1481
  continue;
1450
1482
  }
1451
1483
  await libs[i].waitFor(libs[j].peerId);
1484
+ await libs[j].waitFor(libs[i].peerId);
1485
+ }
1486
+ }
1487
+ };
1488
+ export const waitForNeighbour = async (...libs) => {
1489
+ for (let i = 0; i < libs.length; i++) {
1490
+ for (let j = 0; j < libs.length; j++) {
1491
+ if (i === j) {
1492
+ continue;
1493
+ }
1494
+ await libs[i].waitFor(libs[j].peerId, { neighbour: true });
1495
+ await libs[j].waitFor(libs[i].peerId, { neighbour: true });
1452
1496
  }
1453
1497
  }
1454
1498
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,GACxB,MAAM,mBAAmB,CAAC;AAe3B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EACN,aAAa,EAEb,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,EACL,YAAY,EACZ,QAAQ,GACR,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,GAAG,EACH,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,OAAO,EAEP,OAAO,EACP,aAAa,EACb,aAAa,EACb,eAAe,EAGf,YAAY,EACZ,cAAc,EAEd,cAAc,EAId,uBAAuB,EACvB,QAAQ,GACR,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAiB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,MAAM,EAAE,EAAwB,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAsB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,6BAA6B;AAE1D,MAAM,QAAQ,GAAG,CAAC,CAAuB,EAAE,EAAE;IAC5C,IAAI,CAAC,EAAE,OAAO,KAAK,0CAA0C,EAAE,CAAC;QAC/D,OAAO,CAAC,wDAAwD;IACjE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AAQF,MAAM,8BAA8B,GAAG,CAAC,CAAC;AACzC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAE3C,MAAM,qBAAqB,GAAG,CAAC,CAAa,EAAE,EAAE,CAC/C,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AAUlE,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,0BAA0B;AAClE,MAAM,mBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,0BAA0B;AAElE,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,EAAE,CAAC;AAEjD,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAC/C,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,MAAM,mCAAmC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtD,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE;IAChD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACV,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AACF;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAmC;IACnD,MAAM,CAAS;IACf,SAAS,CAAgB;IACzB,QAAQ,CAAS;IACjC;;OAEG;IACI,cAAc,CAA6B;IAElD;;OAEG;IACI,aAAa,CAAiC;IACrD;;OAEG;IACI,iBAAiB,CAAU;IAClC;;OAEG;IACI,gBAAgB,CAAU;IACjC;;OAEG;IACK,sBAAsB,CAAkB;IACxC,uBAAuB,CAAkB;IAEzC,MAAM,CAAU;IAEjB,MAAM,CAAS;IAEf,UAAU,CAAU;IAEnB,oBAAoB,CAAmB;IAC/C,YAAY,IAAqB;QAChC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC;QAErD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACb,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACb,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAiC,EAAE,QAAgB;QACxD,IAAI,IAAI,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACd,sBAAsB,IAAI,CAAC,MAAM,GAAG,IAAI,gCACvC,mBAAmB,GAAG,IACvB,KAAK,CACL,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,cAAc,CAAC,IAAI,CACvB,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EACnD,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAkC,EAAE,WAAmB,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CACX,4BAA4B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,UAAU,CAClE,CAAC;YACF,OAAO;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,sFAAsF;YACtF,MAAM,eAAe,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7D,MAAM,YAAY,GAAG,GAAG,EAAE;oBACzB,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;oBACtD,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;gBACF,MAAM,WAAW,GAAG,CAAC,GAAU,EAAE,EAAE;oBAClC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;oBACtD,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM,CAAC,GAAG,CAAC,CAAC;gBACb,CAAC,CAAC;gBACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC7B,WAAW,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;gBACrC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,gFAAgF;gBAC9F,MAAM,YAAY,GAAG,GAAG,EAAE;oBACzB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;oBAChD,WAAW,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACvC,CAAC,CAAC;gBACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAE7C,MAAM,QAAQ,GAAG,GAAG,EAAE;oBACrB,YAAY,EAAE,CAAC;gBAChB,CAAC,CAAC;gBACF,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,YAAY,EAAE,CAAC;gBAChB,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,MAAM,eAAe;iBACnB,IAAI,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,OAAO,CAAC,SAAS;gBAClB,CAAC;gBACD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;oBACjC,SAAS;gBACV,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAAc;QACjC,yCAAyC;QACzC,yBAAyB;QACzB,8DAA8D;QAC9D,6CAA6C;QAC7C,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,eAAe,CACnC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CACtC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC,CACxD,EACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAClC;YACC,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtB,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACpD,CAAC;SACD,CACD,CAAC;QAEF;;;;;;;;;;;;;GAaC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,oBAAoB,CAAC,MAAc;QACxC,wDAAwD;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;QACxC,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CACV,4FAA4F,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,8EAA8E,CAChM,CAAC;YACF,OAAO;QACR,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAElD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAClE,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7C,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CACH,IAAI,CAAC,cAAc,EACnB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7B,IAAI,CAAC,iBAAiB,CACtB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAElB,gCAAgC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACV,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,0BAA0B;QAC1B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAEhC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IAChC,CAAC;CACD;AA6CD,MAAM,OAAgB,YAGrB,SAAQ,iBAAyB;IA8DvB;IA3DH,MAAM,CAAS;IACf,SAAS,CAAgB;IACzB,aAAa,CAAS;IACtB,IAAI,CAAmD;IAEvD,OAAO,CAAU;IACjB,QAAQ,CAAU;IACzB;;OAEG;IACI,KAAK,CAA2B;IAChC,sBAAsB,CAA6B;IACnD,MAAM,CAAS;IACtB;;OAEG;IACI,eAAe,CAAU;IAChC;;OAEG;IAEI,KAAK,CAAQ;IACb,WAAW,CAAW;IACtB,SAAS,CAAgB;IACxB,qBAAqB,CAAuB;IACnC,iBAAiB,CAAU;IAC3B,kBAAkB,CAAU;IAC7C,wBAAwB,CAA2B;IAC3C,WAAW,CAAiB;IAC5B,YAAY,CAA6C;IACzD,uBAAuB,CAAiC;IACxD,sBAAsB,CAAiB;IACvC,uBAAuB,CAAS;IAExC,8CAA8C;IACtC,qBAAqB,CAG1B;IAEH,iBAAiB,CAAS;IAC1B,WAAW,CAAS;IACpB,eAAe,CAAkB;IACjC,OAAO,CAAS;IAER,aAAa,CAWnB;IAEF,YACU,UAAkC,EAC3C,WAAqB,EACrB,OAA6B;QAE7B,KAAK,EAAE,CAAC;QAJC,eAAU,GAAV,UAAU,CAAwB;QAK3C,MAAM,EACL,eAAe,GAAG,IAAI,EACtB,4BAA4B,GAAG,EAAE,EACjC,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAAG,yBAAyB,EAC7C,WAAW,GAAG,qBAAqB,EACnC,uBAAuB,GAAG,0BAA0B,GACpD,GAAG,OAAO,IAAI,EAAE,CAAC;QAElB,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAE/B,IAAI,iBAAiB,KAAK,KAAK,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC/D,IAAI,CAAC,wBAAwB,GAAG;gBAC/B,cAAc,EAAE,MAAM,CAAC,gBAAgB;gBACvC,cAAc,EAAE,CAAC;gBACjB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;aACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,wBAAwB,GAAG;gBAC/B,cAAc,EAAE,uBAAuB;gBACvC,cAAc,EAAE,uBAAuB;gBACvC,GAAG,iBAAiB;gBACpB,MAAM,EACL,iBAAiB,EAAE,MAAM,KAAK,KAAK;oBACnC,iBAAiB,EAAE,MAAM,KAAK,IAAI;oBACjC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,iBAAiB,EAAE,MAAM,EAAE;oBACzD,CAAC,CAAC,SAAS;gBACb,MAAM,EACL,iBAAiB,EAAE,MAAM,KAAK,KAAK;oBACnC,iBAAiB,EAAE,MAAM,KAAK,IAAI;oBACjC,CAAC,CAAC;wBACA,iBAAiB,EAAE,mCAAmC;wBACtD,QAAQ,EAAE,kCAAkC;wBAC5C,SAAS,EAAE,gBAAgB;wBAC3B,GAAG,iBAAiB,EAAE,MAAM;qBAC5B;oBACF,CAAC,CAAC,SAAS;aACb,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM;YACtD,CAAC,CAAC,IAAI,KAAK,CAAC;gBACV,GAAG,EAAE,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAU;gBACpD,GAAG,EAAE,GAAG;aACR,CAAC;YACH,CAAC,CAAC,SAAS,CAAC;QAEb,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM;YACjE,CAAC,CAAC,IAAI,KAAK,CAAC;gBACV,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,iBAAiB;aAC3D,CAAC;YACH,CAAC,CAAC,SAAS,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,KAAK,CAAC;QAEZ,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE7C,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACjD,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,MAAM,EAAE,CAAC;gBACnD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;oBAC7C,OAAO;gBACR,CAAC;gBACD,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACrD,CAAC;QACF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1D,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;YAC5C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEzB,mBAAmB;QACnB,+BAA+B;QAC/B,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACpE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,sBAAsB,EAAE,KAAK;SAC7B,CAAC,CACF,CACD,CAAC;QAEF,kCAAkC;QAClC,0DAA0D;QAC1D,IAAI,CAAC,qBAAqB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC9C,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,yBAAyB,EAAE,KAAK;SAChC,CAAC,CACF,CACD,CAAC;QAEF,kLAAkL;QAClL,MAAM,iBAAiB,GAA8B,IAAI,GAAG,EAAE,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QACvE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,EAAE,CAAC;gBACV,GAAG,GAAG,EAAE,CAAC;gBACT,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAC9C,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD;YACvE,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/B,kDAAkD;oBAClD,IAAI,GAAG,CAAC,CAAC,CAAC,qCAAqC;oBAC/C,MAAM;gBACP,CAAC;YACF,CAAC;YAED,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,oBAAoB,GAAG,GAAG,EAAE;gBACjC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;oBAC3C,OAAO;gBACR,CAAC;gBACD,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;wBACzC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;4BACnB,OAAO;wBACR,CAAC;wBACD,oBAAoB,EAAE,CAAC;oBACxB,CAAC,CAAC,CAAC;gBACJ,CAAC,EAAE,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnD,CAAC,CAAC;YACF,oBAAoB,EAAE,CAAC;QACxB,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACT,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE3C,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAClE,CAAC;QAEF,mCAAmC;QACnC,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CACxC,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,CAAC;QAErC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QAEpC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1C,CAAC,CAAC,KAAK,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;OAEG;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAwB;QACzD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;QACrC,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACtD,OAAO;QACR,CAAC;QAED,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC5D,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO;QACR,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CACxB,MAAM,EACN,SAAS,EACT,MAAM,CAAC,QAAQ,EACf,UAAU,CAAC,EAAE,CACb,CAAC;QAEF,iBAAiB;QACjB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE1E,gCAAgC;QAChC,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAES,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,UAAsB;QAC1E,KAAK,MAAM,eAAe,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YAClD,IACC,eAAe,CAAC,QAAQ;gBACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACnD,eAAe,CAAC,SAAS,KAAK,UAAU,EACvC,CAAC;gBACF,OAAO;YACR,CAAC;QACF,CAAC;QAED,IAAI,MAAM,GAAW,SAAgB,CAAC,CAAC,aAAa;QACpD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,GAAgB,SAAgB,CAAC;QACzC,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;YACnB,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO;YACR,CAAC;YAED,IAAI,CAAC;gBACJ,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrD,gIAAgI;oBAChI,0FAA0F;oBAC1F,iEAAiE;oBACjE,cAAc,EAAE,IAAI;iBACpB,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;oBAC7B,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACtD,OAAO;gBACR,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACnB,8CAA8C;oBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAClC,OAAO;gBACR,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAAS,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;gBACpF,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;oBAC/C,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjB,SAAS,CAAC,QAAQ;gBACnB,CAAC;gBAED,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;oBAC/C,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjB,SAAS,CAAC,QAAQ;gBACnB,CAAC;gBAED,IACC,UAAU,CAAC,MAAM,KAAK,MAAM;oBAC5B,KAAK,EAAE,OAAO,KAAK,sBAAsB;oBACzC,KAAK,CAAC,IAAI,KAAK,kBAAkB;oBACjC,KAAK,YAAY,gBAAgB;oBACjC,KAAK,YAAY,gBAAgB,EAChC,CAAC;oBACF,OAAO,CAAC,eAAe;gBACxB,CAAC;gBAED,MAAM,KAAK,CAAC;YACb,CAAC;YACD,MAAM;QACP,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO;QACR,CAAC;IACF,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,UAAsB;QAClE,IACC,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,UAAU,CAAC,MAAM;YACjB,UAAU,CAAC,MAAM,KAAK,MAAM,EAC3B,CAAC;YACF,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC1D,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO,CAAC,wEAAwE;QACjF,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,IAAiB;QACnE,8DAA8D;QAC9D,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB;aACnD,iBAAiB,EAAE;aACnB,GAAG,CAAC,MAAM,CAAC,CAAC;QACd,IACC,IAAI,EAAE,EAAE;YACR,WAAW;YACX,WAAW,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB;iBAChC,iBAAiB,EAAE;iBACnB,GAAG,CAAC,MAAM,CAAC;gBACZ,EAAE,IAAI,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CACvB,CAAC,kEAAkE,EACpE,CAAC;YACF,OAAO;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,yEAAyE;YACzE,wJAAwJ;YACxJ,OAAO;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAEhC,iEAAiE;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAExD,8BAA8B;YAC9B,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAE7C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,SAAS,EACd,MAAM,IAAI,OAAO,CAAC;oBACjB,OAAO,EAAE,CAAC,WAAW,CAAC;oBACtB,MAAM,EAAE,IAAI,aAAa,CAAC;wBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,IAAI,EAAE,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;qBAC1D,CAAC;iBACF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAEM,oBAAoB,CAAC,IAAY,EAAE,iBAAiB,GAAG,KAAK;QAClE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAChD,OAAO;QACR,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa;YAC3C,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;IAEM,kBAAkB,CACxB,IAAY,EACZ,SAAiB,EACjB,MAAqB,EACrB,QAAgB,EAChB,OAAe,EACf,aAAqB;QAErB,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE3E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAC7B,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa,CACb,CAAC;QAEF,4GAA4G;QAC5G,8CAA8C;QAC9C,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACjC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACtB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC3D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;QACF,CAAC;IACF,CAAC;IAEM,eAAe,CAAC,SAAwB;QAC9C,mBAAmB;QACnB,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CACxD,CAAC;IACH,CAAC;IAEM,iBAAiB,CAAC,IAAY;QACpC,mBAAmB;QAEnB,IAAI,CAAC,aAAa;QACjB,aAAa;QACb,IAAI,WAAW,CAAC,kBAAkB,EAAE;YACnC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAE;SAC9C,CAAC,CACF,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,GAAkB,EAAE,OAAgB;QACxD,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,OAAQ,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;IACM,iBAAiB,CAAC,GAAW;QACnC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAEM,aAAa,CAAC,GAAkB,EAAE,OAAe;QACvD,IAAI,CAAC,aAAa;QACjB,aAAa;QACb,IAAI,WAAW,CAAC,cAAc,EAAE;YAC/B,MAAM,EAAE,GAAG;SACX,CAAC,CACF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CACN,MAAc,EACd,SAAwB,EACxB,QAAgB,EAChB,MAAc;QAEd,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QAE3C,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAE/C,6CAA6C;QAC7C,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACtB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,iCAAiC;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;QAErC,MAAM,WAAW,GAAgB,IAAI,WAAW,CAAC;YAChD,MAAM;YACN,SAAS;YACT,QAAQ;YACR,MAAM;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAElC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YACxE,IAAI,EAAE,IAAI;SACV,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CACtB,IAAI,CAAC,aAAa,EAClB,SAAS,CAAC,QAAQ,EAAE,EACpB,SAAS,EACT,CAAC,CAAC,EACF,CAAC,IAAI,IAAI,EAAE,EACX,CAAC,CAAC,CACF,CAAC;QAEF,OAAO,WAAW,CAAC;IACpB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,WAAW,CAAC,SAAwB;QACnD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QAED,qBAAqB;QACrB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAE1B,sBAAsB;QACtB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,kBAAkB;IAElB;;OAEG;IACH,KAAK,CAAC,eAAe,CACpB,MAAqB,EACrB,MAAqC,EACrC,WAAwB;QAExB,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACnC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBACjC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;wBACtD,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACb,CAAC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YACnB,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACtC,0CAA0C;gBAC1C,MAAM,CAAC,IAAI,CACV,oCAAoC;oBACnC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC7B,IAAI;oBACJ,GAAG,EAAE,OAAO,CACb,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CACV,oCAAoC;oBACnC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC7B,IAAI;oBACJ,GAAG,EAAE,OAAO,CACb,CAAC;YACH,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACf,IAAmB,EACnB,WAAwB,EACxB,OAAuB;QAEvB,4DAA4D;QAE5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,yCAAyC;YACzC,MAAM,IAAI,CAAC,KAAK;iBACd,GAAG,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACJ,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBACvD,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBACnB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACF,CAAC,CAAC;iBACD,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,eAAe,CAC5B,OAAmB,EACnB,UAAkD,QAAQ;QAE1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,IAAI,CAAC,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CACnB,IAAmB,EACnB,UAAuB,EACvB,GAAmB;QAEnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QAED,mDAAmD;QACnD,MAAM,OAAO,GAAwB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,SAAS,EAAE;YAC1B,MAAM,EAAE,OAAO;SACf,CAAC,CACF,CAAC;QAEF,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;YACpC,uDAAuD;YACvD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACP,IAAI,OAAO,YAAY,GAAG,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC7C,CAAC;QACF,CAAC;IACF,CAAC;IAEM,YAAY,CAAC,OAAoB,EAAE,UAAkB;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CACxB,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IACC,CAAC,UAAU,GAAG,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,KAAK,KAAK,CAAC;YACvD,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY;gBAC3C,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAC7C,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,aAAa,CACzB,IAAmB,EACnB,UAAuB,EACvB,OAAoB,EACpB,UAAkB;QAElB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,QAAQ,EAAE,CAAC;YAC7C,OAAO,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACP,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO;oBACN,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI;wBAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;YACvE,CAAC;QACF,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC7C,0GAA0G;gBAC1G,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;gBACpE,OAAO,KAAK,CAAC;YACd,CAAC;YAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAEpE,IAAI,UAAU,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACtC,IAAI,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,MAAM,EAAE;oBACvB,MAAM,EAAE,OAAO;iBACf,CAAC,CACF,CAAC;YACH,CAAC;QACF,CAAC;QAED,IACC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,cAAc;YAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,mBAAmB,EACjD,CAAC;YACF,IACC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC;gBACnC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,EAC/C,CAAC;gBACF,qEAAqE;gBACrE,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAED,UAAU;QACV,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrE,uDAAuD;YACvD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,EAAE,CAAC;gBACjD,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACjD,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CACrB,IAAI,CAAC,KAAK,UAAU,CACtB,CAAC;oBACF,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;oBACtC,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC;QACF,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,OAAqB;QAClD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YACrC,aAAa;QACd,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC5B,UAAuB,EACvB,OAA8B,EAC9B,UAAkB;QAElB,IACC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY;YAC3C,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,mBAAmB,CAAC;YACpD,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAC1C,CAAC;YACF,MAAM,iBAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI;gBAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/D,CAAC,CAAC,QAAQ,EAAE,CACZ,CAAC;YAEF,MAAM,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,SAAS,EACd,MAAM,IAAI,GAAG,CAAC;gBACb,sBAAsB,EAAE,OAAO,CAAC,EAAE;gBAClC,WAAW,EAAE,UAAU;gBACvB,+DAA+D;gBAC/D,MAAM,EAAE,IAAI,aAAa,CAAC;oBACzB,IAAI,EAAE,IAAI,cAAc,CAAC,OAAO,CAAC;oBACjC,OAAO,EAAE,IAAI,CAAC,OAAO;oBAErB,0GAA0G;oBAC1G,MAAM,EACL,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY;wBAC3C,CAAC,OAAO,CAAC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC9C;wBACA,CAAC,CAAC,IAAI,aAAa,CACjB,IAAI,CAAC,UAAU,CAAC,cAAc;6BAC5B,YAAY,EAAE;6BACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC1B;wBACF,CAAC,CAAC,SAAS;iBACb,CAAC;aACF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAClB,CAAC,UAAU,CAAC,CACZ,CAAC;QACH,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,cAAc,CAC3B,IAAmB,EACnB,UAAuB,EACvB,YAAyC,EACzC,OAAoB;QAEpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAC5C,YAAY,YAAY,cAAc;YACrC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE;YACzB,CAAC,CAAC,YAAY,CACf,CAAC;QAEF,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,KAAK,CACV,SAAwB,EACxB,UAAuB,EACvB,YAAyC,EACzC,OAAY;QAEZ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAC5C,YAAY,YAAY,UAAU;YACjC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,EAC1B,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAC9B,CAAC;QAEF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CACX,yCAAyC,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CACpE,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAC/B,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3D,IAAI,CAAC,aAAa;aAChB,GAAG,CAAC,eAAe,CAAC;YACrB,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7C,cAAc;QACd,wDAAwD;QACxD,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACP,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBACnB,0CAA0C;gBAC1C,oEAAoE;gBACpE,OAAO;YACR,CAAC;YACD,kFAAkF;YAClF,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;gBACnE,IAAI,CAAC,oBAAoB,CACxB,OAAO,CAAC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EACnD,OAAO,CAAC,MAAM,CAAC,MAAM,CACrB,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,CAAC,SAAS,CACd,SAAwB,EACxB,UAAuB,EACvB,YAAyC,EACzC,OAAgB;QAEhB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAC5C,YAAY,YAAY,UAAU;YACjC,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAC1B,CAAC;QAEF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CACX,yCAAyC,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CACpE,CAAC;YACF,OAAO;QACR,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEpE,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACpD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CACxB,CAAC;QAEF,2BAA2B;QAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACtC,gEAAgE;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;YACtD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;YACtD,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YAEvE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAChE,CAAC;QACF,CAAC;QAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAEO,uBAAuB,CAAC,OAAiB;QAChD,4DAA4D;QAC5D,2EAA2E;QAC3E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IACO,KAAK,CAAC,YAAY,CAAC,OAAiB;QAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;gBAC9B,IAAI,EAAE,IAAI,YAAY,CAAC;oBACtB,EAAE,EAAE,OAAO;oBACX,UAAU,EAAE,8BAA8B;iBAC1C,CAAC;aACF,CAAC;iBACA,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;iBAChB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;oBAChC,OAAO,KAAK,CAAC;gBACd,CAAC;qBAAM,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;oBACzC,OAAO,KAAK,CAAC;gBACd,CAAC;qBAAM,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;oBACtC,OAAO,KAAK,CAAC;gBACd,CAAC;qBAAM,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;oBACpC,OAAO,KAAK,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,CAAC;gBACT,CAAC;YACF,CAAC,CAAC,CAAC,CAAC,wDAAwD;QAC9D,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAClB,IAA6C,EAC7C,OAAsE;QAEtE,0CAA0C;QAE1C,IAAI,IAAI,GACP,OACA,CAAC,IAAI;YACL,CAAC,CAAE,OAAoB,CAAC,IAAK;YAC7B,CAAC,CAAC,IAAI,cAAc,CAAC;gBACnB,EAAE,EAAG,OAAkB,CAAC,EAAG;gBAC3B,UAAU,EAAE,gCAAgC;aAC5C,CAAC,CAAC;QAEL,IACC,IAAI,YAAY,mBAAmB;YACnC,IAAI,YAAY,cAAc;YAC9B,IAAI,YAAY,YAAY,EAC3B,CAAC;YACF,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3D,CAAC;QACF,CAAC;QAED,IAAI,IAAI,YAAY,mBAAmB,IAAI,IAAI,YAAY,cAAc,EAAE,CAAC;YAC3E,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;qBACxC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;oBACxB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEb,IACC,CAAC,eAAe;oBAChB,GAAG,GAAG,eAAe,CAAC,OAAO;wBAC5B,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB;oBACrD,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,EAC7C,CAAC;oBACF,IAAI,GAAG,IAAI,YAAY,CAAC;wBACvB,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,UAAU,EAAE,8BAA8B;qBAC1C,CAAC,CAAC;oBACH,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;YAC/B,IAAI,EAAE,IAAI,YAAY,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;YAC7D,MAAM,EAAE,IAAI,aAAa,CAAC;gBACzB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI;gBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC1B,CAAC;SACF,CAAC,CAAC;QAEH,0EAA0E;QAC1E,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC;IAChB,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,OAAO,CACZ,IAA6C,EAC7C,UAAiD;QAChD,IAAI,EAAE,IAAI,YAAY,CAAC,EAAE,UAAU,EAAE,8BAA8B,EAAE,CAAC;KACtE;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,eAAe,EAAE,CAAC;QAC7B,CAAC;QAED,IAAK,OAAoB,CAAC,IAAI,IAAK,OAAkB,CAAC,EAAE,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACd,yDAAyD,CACzD,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,EAAE,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,YAAY,CACxB,IAAmB,EACnB,OAAgB,EAChB,EAA6C;QAE7C,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;gBACpC,IACC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,mBAAmB;oBAClD,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,EAC1C,CAAC;oBACF,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;YACF,CAAC;YACD,IAAI,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAC/B,CAAC;gBACF,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,iBAAiB;gBAC1B,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;IAEO,qBAAqB,CAAC,EAAU;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAClC,IAAmB,EACnB,OAA8B,EAC9B,OAAiB;QAEjB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,QAAQ,EAAE,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxD,MAAM,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAC5B,SAAS;gBACV,CAAC;gBACD,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAErB,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CACpB,EAAE,EACF,UAAU,CAAC,GAAG,EAAE;wBACf,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBAC/B,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CACpB,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QACD,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;QAE5C,IAAI,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO;gBACN,OAAO,EAAE,OAAO,CAAC,MAAM,CACtB,IAAI,aAAa,CAChB,2EAA2E,CAC3E,CACD;aACD,CAAC;QACH,CAAC;QAED,MAAM,uBAAuB,GAAG,MAAM,EAAQ,CAAC;QAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,uBAAuB,CAAC,OAAO,EAAE,CAAC,CAAC,mEAAmE;QACvG,CAAC;QAED,MAAM,0BAA0B,GAAG,CAAC,OAAO,CAAC,CAAC,oCAAoC;QAEjF,6FAA6F;QAC7F,MAAM,2BAA2B,GAAG,OAAO;YAC1C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY;gBAC5C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC3D,CAAC,CAAC,CAAC,CAAC,CAAC,wIAAwI;QAE/I,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAE5B,MAAM,aAAa,GAClB,CAAC,OAAO;YACR,CAAC,CAAC,EAAO,EAAE,EAAE;gBACZ,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,IAAI,eAAe,EAAE,CAAC;oBACrB,mCAAmC;oBACnC,KAAK,EAAE,CAAC;oBACR,uBAAuB,CAAC,MAAM,CAC7B,IAAI,aAAa,CAChB,8EAA8E,OAAO,CAAC,WAAW,CAAC,IAAI,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CACpI,CACD,CAAC;gBACH,CAAC;YACF,CAAC,CAAC,CAAC;QAEJ,aAAa,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,GAAG,EAAE;YAClB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,aAAa;gBACZ,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACrC,KAAK,EAAE,CAAC;YAER,IAAI,MAAM,GAAG,IAAI,CAAC;YAElB,0BAA0B;YAC1B,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;gBAEtB,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjC,SAAS,GAAG,IAAI,CAAC;oBACjB,MAAM;gBACP,CAAC;gBAED,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM,GAAG,KAAK,CAAC;gBAChB,CAAC;YACF,CAAC;YAED,IAAI,CAAC,MAAM,IAAI,0BAA0B,EAAE,CAAC;gBAC3C,uBAAuB,CAAC,MAAM,CAC7B,IAAI,aAAa,CAChB,yBAAyB,QAAQ,IAAI,2BAA2B,IAAI;oBACnE,GAAG,YAAY;iBACf,0CACA,mBAAmB,CAAC,IACrB,IAAI,YAAY,CAAC,IAAI,YACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IACjC,iBAAkB,OAAO,CAAC,MAAM,CAAC,IAAY,CAAC,YAAY,CAAC,EAAE,CAC7D,CACD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,uBAAuB,CAAC,OAAO,EAAE,CAAC;YACnC,CAAC;QACF,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAErB,MAAM,SAAS,GAAG,GAAG,EAAE;YACtB,4EAA4E;YAC5E,iCAAiC;YACjC,IACC,2BAA2B,IAAI,IAAI;gBACnC,UAAU,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,GAAG,2BAA2B,EACjE,CAAC;gBACF,IAAI,aAAa,EAAE,CAAC;oBACnB,iKAAiK;oBACjK,uFAAuF;oBACvF,KAAK,EAAE,CAAC;gBACT,CAAC;gBACD,uBAAuB,CAAC,OAAO,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC;YACb,CAAC;YACD,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;YAChC,OAAO,EAAE,uBAAuB,CAAC,OAAO;YACxC,QAAQ,EAAE,CAAC,GAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE;gBACnD,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,iBAAiB,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACnD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;gBAEpC,2FAA2F;gBAC3F,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;gBAE9C,4FAA4F;gBAC5F,uGAAuG;gBACvG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,EAAE,CAAC;oBACjD,IAAI,CAAC,kBAAkB,CACtB,WAAW,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,EACvD,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,EACnC,aAAa,EACb,WAAW,EACX,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAC1B,CAAC,CAAC,8HAA8H;gBAClI,CAAC;gBAED,IAAI,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACzC,mCAAmC;oBACnC,IACC,2BAA2B,IAAI,IAAI;wBACnC,WAAW,GAAG,2BAA2B,EACxC,CAAC;wBACF,2BAA2B;wBAC3B,IAAI,WAAW,GAAG,kBAAkB,EAAE,CAAC;4BACtC,IAAI,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;4BACrD,IAAI,CAAC,GAAG,EAAE,CAAC;gCACV,GAAG,GAAG,EAAE,CAAC;gCACT,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;4BACjD,CAAC;4BACD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;4BAEtB,UAAU,CAAC,GAAG,CAAC,iBAAiB,GAAG,WAAW,CAAC,CAAC;wBACjD,CAAC;oBACF,CAAC;gBACF,CAAC;gBAED,SAAS,EAAE,CAAC;YACb,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACX,KAAK,EAAE,CAAC;gBACR,uBAAuB,CAAC,OAAO,EAAE,CAAC;YACnC,CAAC;SACD,CAAC,CAAC;QACH,OAAO,uBAAuB,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,cAAc,CAC1B,IAAmB,EACnB,OAAgB,EAChB,EAA6C,EAC7C,OAAiB;QAEjB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,eAAe,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,gBAAgB,GAA8B,SAAgB,CAAC;QAEnE,IACC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;YAC1B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;YACnD,OAAO,YAAY,WAAW;YAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,cAAc,KAAK,KAAK,EACtD,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtC,CAAC;QAED;;WAEG;QAEH,IACC,OAAO,YAAY,WAAW;YAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY;YAC3C,CAAC,OAAO,EACP,CAAC;YACF,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,+DAA+D;QACjF,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,mBAAmB,EAAE,CAAC;YACxD,EAAE,GAAG,SAAS,CAAC;QAChB,CAAC;QAED,IACC,CAAC,OAAO,YAAY,WAAW,IAAI,OAAO,YAAY,OAAO,CAAC;YAC9D,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY;gBAC3C,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,mBAAmB,CAAC,EACnD,CAAC;YACF,gBAAgB,GAAG,CAClB,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CACxD,CAAC,OAAO,CAAC;QACX,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1E,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAED;;WAEG;QAEH,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;YACpC,IACC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,mBAAmB;gBAClD,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,cAAc,CAAC;gBAC/C,CAAC,EAAE;gBACH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACrB,CAAC;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACnC,IAAI,CAAC,QAAQ,EAAE,EACf,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAC9B,CAAC;gBAEF,IAAI,MAAM,EAAE,CAAC;oBACZ,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;wBACrB,MAAM,QAAQ,GAAmB,EAAE,CAAC;wBACpC,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,MAAM,EAAE,CAAC;4BACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;4BACzC,MAAM;gCACL,QAAQ,CAAC,IAAI,CACZ,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CACnD,CAAC;wBACJ,CAAC;wBACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC5B,OAAO,gBAAgB,CAAC,CAAC,2EAA2E;oBACrG,CAAC;oBAED,OAAO,CAAC,+DAA+D;gBACxE,CAAC;gBAED,OAAO;gBAEP,+CAA+C;YAChD,CAAC;QACF,CAAC;QAED,qEAAqE;QACrE,MAAM,KAAK,GAA6C,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC;QACzE,IACC,KAAK,IAAI,IAAI;YACb,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;YAC5C,CAAC,KAAK,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EACzC,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACpC,OAAO,gBAAgB,CAAC;QACzB,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,MAAqB,CAAC;YAEjC,+BAA+B;YAC/B,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,SAAS;YACV,CAAC;YACD,oFAAoF;YACpF,IACC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChD,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CACtB,EACA,CAAC;gBACF,SAAS;YACV,CAAC;YAED,QAAQ,GAAG,IAAI,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC7D,CAAC;QACF,CAAC;QACD,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,MAAqB;QAC/D,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,4DAA4D;QACrE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,WAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO,GAAG,CAAC;QACZ,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC;oBACtD,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC/B,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CACV,iCAAiC;oBAChC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAClD,IAAI;oBACJ,KAAK,EAAE,OAAO,CACf,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CACZ,IAAqC,EACrC,OAAyE;QAEzE,MAAM,IAAI,GACT,OAAO,IAAI,KAAK,QAAQ;YACvB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,CAAC,IAAI,YAAY,aAAa;gBAC9B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAC9B,CAAC,QAAQ,EAAE,CAAC;QAChB,MAAM,gBAAgB,GAAG,CAAC,QAA+B,EAAE,EAAE;YAC5D,IAAI,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO;YACR,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC3D,OAAO;YACR,CAAC;YAED,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC;QACF,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,EAAE;gBAC9D,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,OAAO,EAAE,OAAO;aACzB,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACd,YAAY;gBACX,IAAI;gBACJ,QAAQ;gBACR,IAAI,CAAC,aAAa;gBAClB,qCAAqC;gBACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBACpB,iBAAiB;gBACjB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CACrD,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YACrC,IAAI,CAAC;gBACJ,IAAI,eAAe,GAAG,CAAC,MAA6B,EAAE,EAAE;oBACvD,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC5C,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClB,CAAC;gBACF,CAAC,CAAC;gBACF,MAAM,YAAY,CACjB,MAAM,EACN,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EACrC,eAAe,EACf;oBACC,OAAO,EAAE,YAAY;oBACrB,OAAO,EAAE,OAAO,EAAE,OAAO;iBACzB,CACD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACd,YAAY;oBACX,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,wBAAwB;oBACxB,MAAM,CAAC,UAAU;oBACjB,aAAa;oBACb,MAAM,CAAC,UAAU,CAClB,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,YAAY,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,yCAAyC;IACzC,qBAAqB;QACpB,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC5D,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAClC,aAAa,IAAI,CAAC,CAAC,aAAa,CAAC;gBAClC,CAAC;gBACD,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAEjC,IAAI,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpE,QAAQ;oBACR,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAChC,CAAC;YACF,CAAC;iBAAM,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBACnE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBAClE,QAAQ;oBACR,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAChC,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACrB,yBAAyB;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,CAAC;YACrE,OAAO;QACR,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aACrC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACR,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,CAAC;QAC7C,IAAI,CAAC,sBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,cAAc;QACb,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;YACnC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;CACD;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACpC,GAAG,IAGA,EACF,EAAE;IACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACb,SAAS;YACV,CAAC;YACD,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACpC,GAAG,IAMA,EACF,EAAE;IACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACb,SAAS;YACV,CAAC;YACD,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;IACF,CAAC;AACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAE9D,KAAK,SAAS,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,KAAK,SAAS,GAAG;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,EAAE,CAAC;CAClB,CAAC;AAEF,qBAAa,MAAM;IAajB,QAAQ,CAAC,EAAE,EAAE,MAAM;IAXpB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAa;IAExD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAa;IAI1D,uBAAuB,EAAE,MAAM,CAAC;IAEhC,MAAM,CAAC,EAAE,WAAW,CAAC;gBAGX,EAAE,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;IAOrE,KAAK;IAIL,OAAO,CAAC,OAAO;IA2Bf,GAAG,CACF,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACnB,KAAK,GAAG,SAAS,GAAG,SAAS;IAyFhC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM;IAqCrB,eAAe,CAAC,SAAS,EAAE,MAAM;IAYjC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIzC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,SAAqB;IA4B1E,SAAS,CAAC,MAAM,EAAE,MAAM;IASxB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IA6B9C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;IAK3C,YAAY,CAAC,IAAI,EAAE,MAAM;IA6BzB,KAAK,CAAC,IAAI,SAAU;IAcpB,QAAQ;IAWR,SAAS,CACR,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EAAE,EACb,UAAU,EAAE,MAAM,GAChB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,GAAG,SAAS;IA2E1E;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;CAmB3C"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAE9D,KAAK,SAAS,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,KAAK,SAAS,GAAG;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,EAAE,CAAC;CAClB,CAAC;AAEF,qBAAa,MAAM;IAajB,QAAQ,CAAC,EAAE,EAAE,MAAM;IAXpB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAa;IAExD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAa;IAI1D,uBAAuB,EAAE,MAAM,CAAC;IAEhC,MAAM,CAAC,EAAE,WAAW,CAAC;gBAGX,EAAE,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,uBAAuB,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;IAOrE,KAAK;IAIL,OAAO,CAAC,OAAO;IA2Bf,GAAG,CACF,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GACnB,KAAK,GAAG,SAAS,GAAG,SAAS;IAiHhC;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM;IAqCrB,eAAe,CAAC,SAAS,EAAE,MAAM;IAYjC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIzC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,SAAqB;IA4B1E,SAAS,CAAC,MAAM,EAAE,MAAM;IASxB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IA6B9C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;IAK3C,YAAY,CAAC,IAAI,EAAE,MAAM;IA6BzB,KAAK,CAAC,IAAI,SAAU;IAcpB,QAAQ;IAWR,SAAS,CACR,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EAAE,EACb,UAAU,EAAE,MAAM,GAChB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,GAAG,SAAS;IA+E1E;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;CAmB3C"}
@@ -55,12 +55,15 @@ export class Routes {
55
55
  let prev = fromMap.get(target);
56
56
  const routeDidExist = prev;
57
57
  const isNewSession = !prev || session > prev.session;
58
+ const isOldSession = prev && session < prev.session;
58
59
  if (!prev) {
59
60
  prev = { session, remoteSession, list: [] };
60
61
  fromMap.set(target, prev);
61
62
  }
62
- if (neighbour === target) {
63
- if (from === this.me) {
63
+ const isRelayed = from !== this.me;
64
+ const targetIsNeighbour = neighbour === target;
65
+ if (targetIsNeighbour) {
66
+ if (!isRelayed) {
64
67
  // force distance to neighbour as targets to always favor directly sending to them
65
68
  // i.e. if target is our neighbour, always assume the shortest path to them is the direct path
66
69
  distance = -1;
@@ -73,6 +76,19 @@ export class Routes {
73
76
  prev.remoteSession = Math.max(remoteSession, prev.remoteSession || -1);
74
77
  }
75
78
  prev.session = Math.max(session, prev.session);
79
+ const scheduleCleanup = () => {
80
+ return delay(this.routeMaxRetentionPeriod + 100, { signal: this.signal })
81
+ .then(() => {
82
+ this.cleanup(from, target);
83
+ })
84
+ .catch((e) => {
85
+ if (e instanceof AbortError) {
86
+ // skip
87
+ return;
88
+ }
89
+ throw e;
90
+ });
91
+ };
76
92
  // Update routes and cleanup all old routes that are older than latest session - some threshold
77
93
  if (isNewSession) {
78
94
  // Mark previous routes as old
@@ -87,43 +103,49 @@ export class Routes {
87
103
  }
88
104
  // Initiate cleanup
89
105
  if (distance !== -1 && foundNodeToExpire) {
90
- delay(this.routeMaxRetentionPeriod + 100, { signal: this.signal })
91
- .then(() => {
92
- this.cleanup(from, target);
93
- })
94
- .catch((e) => {
95
- if (e instanceof AbortError) {
96
- // skip
97
- return;
98
- }
99
- throw e;
100
- });
106
+ scheduleCleanup();
101
107
  }
102
108
  }
109
+ else if (isOldSession) {
110
+ scheduleCleanup();
111
+ }
103
112
  // Modify list for new/update route
104
113
  let exist = false;
105
114
  for (const route of prev.list) {
106
115
  if (route.hash === neighbour) {
107
116
  // if route is faster or just as fast, update existing route
108
- if (route.distance > distance) {
109
- route.distance = distance;
110
- route.session = session;
111
- route.expireAt = undefined; // remove expiry since we updated
112
- prev.list.sort((a, b) => a.distance - b.distance);
113
- return isNewRemoteSession ? "restart" : "updated";
114
- }
115
- else if (route.distance === distance) {
116
- route.session = session;
117
- route.expireAt = undefined; // remove expiry since we updated
118
- return isNewRemoteSession ? "restart" : "updated";
117
+ if (isNewSession) {
118
+ if (route.distance > distance) {
119
+ route.distance = distance;
120
+ route.session = session;
121
+ route.expireAt = undefined; // remove expiry since we updated
122
+ prev.list.sort((a, b) => a.distance - b.distance);
123
+ return isNewRemoteSession ? "restart" : "updated";
124
+ }
125
+ else if (route.distance === distance) {
126
+ route.session = session;
127
+ route.expireAt = undefined; // remove expiry since we updated
128
+ return isNewRemoteSession ? "restart" : "updated";
129
+ }
119
130
  }
120
131
  exist = true;
121
132
  // else break and push the route as a new route (that ought to be longer)
122
133
  break;
123
134
  }
124
135
  }
125
- prev.list.push({ distance, session, hash: neighbour });
126
- prev.list.sort((a, b) => a.distance - b.distance);
136
+ // if not exist add new route
137
+ // else if it exist then we only end up here if the distance is longer than prev, this means that we want to keep prev while adding the new route
138
+ if (!exist || isNewSession) {
139
+ prev.list.push({
140
+ distance,
141
+ session,
142
+ hash: neighbour,
143
+ expireAt: isOldSession
144
+ ? +new Date() + this.routeMaxRetentionPeriod
145
+ : undefined,
146
+ });
147
+ prev.list.sort((a, b) => a.distance - b.distance);
148
+ }
127
149
  return exist ? (isNewRemoteSession ? "restart" : "updated") : "new";
128
150
  }
129
151
  /**
@@ -303,10 +325,11 @@ export class Routes {
303
325
  if (to === this.me || from === to) {
304
326
  continue; // don't send to me or backwards
305
327
  }
328
+ // neighbours that are links from 'from' to 'to'
306
329
  const neighbour = this.findNeighbor(from, to);
307
330
  if (neighbour) {
308
331
  let foundClosest = false;
309
- let redundancyModified = redundancy;
332
+ let added = 0;
310
333
  for (let i = 0; i < neighbour.list.length; i++) {
311
334
  const { distance, session, expireAt } = neighbour.list[i];
312
335
  if (expireAt && !relaying) {
@@ -314,7 +337,7 @@ export class Routes {
314
337
  // TODO there could be a benifit of doing this (?)
315
338
  continue;
316
339
  }
317
- if (distance >= redundancyModified) {
340
+ if (distance >= redundancy) {
318
341
  break; // because neighbour listis sorted
319
342
  }
320
343
  let fanout = (fanoutMap || (fanoutMap = new Map())).get(neighbour.list[i].hash);
@@ -328,10 +351,13 @@ export class Routes {
328
351
  ) {
329
352
  foundClosest = true;
330
353
  if (distance === -1) {
331
- // remove 1 from the expected redunancy since we got a route with negative 1 distance
332
- // if we do not do this, we would get 2 routes if redundancy = 1, {-1, 0}, while it should just be
333
- // {-1} in this case
334
- redundancyModified -= 1;
354
+ break; // dont send to more peers if we have the direct route
355
+ }
356
+ }
357
+ if (!expireAt) {
358
+ // only count non-expired routes or if we are relaying then also count expired routes
359
+ added++;
360
+ if (added >= redundancy) {
335
361
  break;
336
362
  }
337
363
  }
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TypedEventEmitter } from "@libp2p/interface";
2
+ import { type DeferredPromise } from "p-defer";
3
+ export declare function waitForEvent<Emitter extends TypedEventEmitter<Events>, Events extends Record<string, any> = Emitter extends TypedEventEmitter<infer E> ? E : never, Event extends keyof Events = keyof Events>(emitter: Emitter, events: Event[], resolver: (deferred: DeferredPromise<void>) => void | Promise<void>, options?: {
4
+ signals?: AbortSignal[];
5
+ timeout?: number;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=wait-for-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-event.d.ts","sourceRoot":"","sources":["../../src/wait-for-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAe,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvD,wBAAgB,YAAY,CAC3B,OAAO,SAAS,iBAAiB,CAAC,MAAM,CAAC,EACzC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,SAAS,iBAAiB,CACrE,MAAM,CAAC,CACP,GACE,CAAC,GACD,KAAK,EACR,KAAK,SAAS,MAAM,MAAM,GAAG,MAAM,MAAM,EAEzC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,EAAE,EACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACnE,OAAO,CAAC,EAAE;IACT,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,GACC,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
@@ -0,0 +1,22 @@
1
+ import pDefer, {} from "p-defer";
2
+ export function waitForEvent(emitter, events, resolver, options) {
3
+ const deferred = pDefer();
4
+ const abortFn = () => deferred.reject(new Error("Aborted waiting for event: " +
5
+ String(events.length > 1 ? events.join(", ") : events[0])));
6
+ const checkIsReady = (...args) => resolver(deferred);
7
+ deferred.promise.finally(() => {
8
+ for (const event of events) {
9
+ emitter.removeEventListener(event, checkIsReady);
10
+ }
11
+ clearTimeout(timeout);
12
+ options?.signals?.forEach((signal) => signal.removeEventListener("abort", abortFn));
13
+ });
14
+ for (const event of events) {
15
+ emitter.addEventListener(event, checkIsReady);
16
+ }
17
+ let timeout = setTimeout(abortFn, options?.timeout ?? 10 * 1000);
18
+ options?.signals?.forEach((signal) => signal.addEventListener("abort", abortFn));
19
+ resolver(deferred);
20
+ return deferred.promise;
21
+ }
22
+ //# sourceMappingURL=wait-for-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-event.js","sourceRoot":"","sources":["../../src/wait-for-event.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,EAAE,EAAwB,MAAM,SAAS,CAAC;AAEvD,MAAM,UAAU,YAAY,CAS3B,OAAgB,EAChB,MAAe,EACf,QAAmE,EACnE,OAGC;IAED,MAAM,QAAQ,GAAG,MAAM,EAAQ,CAAC;IAChC,MAAM,OAAO,GAAG,GAAG,EAAE,CACpB,QAAQ,CAAC,MAAM,CACd,IAAI,KAAK,CACR,6BAA6B;QAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC1D,CACD,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE5D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;QAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,mBAAmB,CAAC,KAAY,EAAE,YAAY,CAAC,CAAC;QACzD,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,gBAAgB,CAAC,KAAY,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CACzC,CAAC;IACD,QAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC,OAAO,CAAC;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/stream",
3
- "version": "4.1.0",
3
+ "version": "4.1.1",
4
4
  "description": "A building block for direct streaming protocols",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -76,7 +76,7 @@
76
76
  "dao.xyz"
77
77
  ],
78
78
  "devDependencies": {
79
- "@peerbit/libp2p-test-utils": "2.1.7",
79
+ "@peerbit/libp2p-test-utils": "2.1.8",
80
80
  "@types/yallist": "^4.0.4",
81
81
  "@types/fast-fifo": "^1.0.2"
82
82
  },
@@ -86,10 +86,10 @@
86
86
  "@dao-xyz/borsh": "^5.2.3",
87
87
  "@peerbit/cache": "2.1.0",
88
88
  "@peerbit/crypto": "2.3.2",
89
- "@peerbit/stream-interface": "^5.1.0",
89
+ "@peerbit/stream-interface": "^5.1.1",
90
90
  "@peerbit/time": "^2.0.7",
91
91
  "@peerbit/logger": "^1.0.3",
92
- "libp2p": "^2.1.9",
92
+ "libp2p": "^2.1.10",
93
93
  "yallist": "^4.0.0",
94
94
  "abortable-iterator": "^5.0.1"
95
95
  }
package/src/index.ts CHANGED
@@ -1,4 +1,9 @@
1
- import { TypedEventEmitter } from "@libp2p/interface";
1
+ import {
2
+ MuxerClosedError,
3
+ StreamResetError,
4
+ TypedEventEmitter,
5
+ UnsupportedProtocolError,
6
+ } from "@libp2p/interface";
2
7
  import type {
3
8
  Connection,
4
9
  Libp2pEvents,
@@ -48,19 +53,20 @@ import {
48
53
  deliveryModeHasReceiver,
49
54
  getMsgId,
50
55
  } from "@peerbit/stream-interface";
51
- import { AbortError, TimeoutError, delay, waitFor } from "@peerbit/time";
56
+ import { AbortError, TimeoutError, delay } from "@peerbit/time";
52
57
  import { abortableSource } from "abortable-iterator";
53
58
  import * as lp from "it-length-prefixed";
54
59
  import { pipe } from "it-pipe";
55
60
  import { type Pushable, pushable } from "it-pushable";
56
61
  import type { Components } from "libp2p/components";
57
- import pDefer from "p-defer";
62
+ import pDefer, { type DeferredPromise } from "p-defer";
58
63
  import Queue from "p-queue";
59
64
  import { Uint8ArrayList } from "uint8arraylist";
60
65
  import { logger } from "./logger.js";
61
66
  import { type PushableLanes, pushableLanes } from "./pushable-lanes.js";
62
67
  import { MAX_ROUTE_DISTANCE, Routes } from "./routes.js";
63
68
  import { BandwidthTracker } from "./stats.js";
69
+ import { waitForEvent } from "./wait-for-event.js";
64
70
 
65
71
  export { logger };
66
72
 
@@ -89,6 +95,8 @@ export interface PeerStreamEvents {
89
95
  "stream:inbound": CustomEvent<never>;
90
96
  "stream:outbound": CustomEvent<never>;
91
97
  close: CustomEvent<never>;
98
+ "peer:reachable": CustomEvent<PublicSignKey>;
99
+ "peer:unreachable": CustomEvent<PublicSignKey>;
92
100
  }
93
101
 
94
102
  const SEEK_DELIVERY_TIMEOUT = 10e3;
@@ -580,12 +588,19 @@ export abstract class DirectStream<
580
588
  this.outboundInflightQueue = pushable({ objectMode: true });
581
589
  pipe(this.outboundInflightQueue, async (source) => {
582
590
  for await (const { peerId, connection } of source) {
591
+ if (this.stopping || this.started === false) {
592
+ return;
593
+ }
583
594
  await this.createOutboundStream(peerId, connection);
584
595
  }
585
596
  }).catch((e) => {
586
597
  logger.error("outbound inflight queue error: " + e?.toString());
587
598
  });
588
599
 
600
+ this.closeController.signal.addEventListener("abort", () => {
601
+ this.outboundInflightQueue.return();
602
+ });
603
+
589
604
  this.routes = new Routes(this.publicKeyHash, {
590
605
  routeMaxRetentionPeriod: this.routeMaxRetentionPeriod,
591
606
  signal: this.closeController.signal,
@@ -777,11 +792,22 @@ export abstract class DirectStream<
777
792
  }
778
793
 
779
794
  try {
780
- stream = await connection.newStream(this.multicodecs);
795
+ stream = await connection.newStream(this.multicodecs, {
796
+ // TODO this property seems necessary, together with waitFor isReadable when making sure two peers are conencted before talking.
797
+ // research whether we can do without this so we can push data without beeing able to send
798
+ // more info here https://github.com/libp2p/js-libp2p/issues/2321
799
+ negotiateFully: true,
800
+ });
781
801
  if (stream.protocol == null) {
782
802
  stream.abort(new Error("Stream was not multiplexed"));
783
803
  return;
784
804
  }
805
+
806
+ if (!this.started) {
807
+ // we closed before we could create the stream
808
+ stream.abort(new Error("Closed"));
809
+ return;
810
+ }
785
811
  peer = this.addPeer(peerId, peerKey, stream.protocol!, connection.id); // TODO types
786
812
  await peer.attachOutboundStream(stream);
787
813
  } catch (error: any) {
@@ -790,10 +816,17 @@ export abstract class DirectStream<
790
816
  continue; // Retry
791
817
  }
792
818
 
819
+ if (error instanceof UnsupportedProtocolError) {
820
+ await delay(100);
821
+ continue; // Retry
822
+ }
823
+
793
824
  if (
794
825
  connection.status !== "open" ||
795
826
  error?.message === "Muxer already closed" ||
796
- error.code === "ERR_STREAM_RESET"
827
+ error.code === "ERR_STREAM_RESET" ||
828
+ error instanceof StreamResetError ||
829
+ error instanceof MuxerClosedError
797
830
  ) {
798
831
  return; // fail silenty
799
832
  }
@@ -1897,7 +1930,6 @@ export abstract class DirectStream<
1897
1930
  }
1898
1931
 
1899
1932
  sentOnce = true;
1900
-
1901
1933
  promises.push(id.waitForWrite(bytes, message.header.priority));
1902
1934
  }
1903
1935
  await Promise.all(promises);
@@ -1949,24 +1981,27 @@ export abstract class DirectStream<
1949
1981
  ? peer
1950
1982
  : getPublicKeyFromPeerId(peer)
1951
1983
  ).hashcode();
1952
- try {
1953
- await waitFor(
1954
- () => {
1955
- if (options?.neighbour && !this.peers.has(hash)) {
1956
- return false;
1957
- }
1984
+ const checkIsReachable = (deferred: DeferredPromise<void>) => {
1985
+ if (options?.neighbour && !this.peers.has(hash)) {
1986
+ return;
1987
+ }
1958
1988
 
1959
- if (!this.routes.isReachable(this.publicKeyHash, hash, 0)) {
1960
- return false;
1961
- }
1989
+ if (!this.routes.isReachable(this.publicKeyHash, hash, 0)) {
1990
+ return;
1991
+ }
1962
1992
 
1963
- return true;
1964
- },
1965
- {
1966
- signal: options?.signal,
1967
- timeout: options?.timeout ?? 10 * 1000,
1968
- },
1969
- );
1993
+ deferred.resolve();
1994
+ };
1995
+ const abortSignals = [this.closeController.signal];
1996
+ if (options?.signal) {
1997
+ abortSignals.push(options.signal);
1998
+ }
1999
+
2000
+ try {
2001
+ await waitForEvent(this, ["peer:reachable"], checkIsReachable, {
2002
+ signals: abortSignals,
2003
+ timeout: options?.timeout,
2004
+ });
1970
2005
  } catch (error) {
1971
2006
  throw new Error(
1972
2007
  "Stream to " +
@@ -1979,14 +2014,24 @@ export abstract class DirectStream<
1979
2014
  this.routes.isReachable(this.publicKeyHash, hash, 0),
1980
2015
  );
1981
2016
  }
2017
+
1982
2018
  if (options?.neighbour) {
1983
2019
  const stream = this.peers.get(hash)!;
1984
2020
  try {
1985
- // Dontwait for readlable https://github.com/libp2p/js-libp2p/issues/2321
1986
- await waitFor(() => /* stream.isReadable && */ stream.isWritable, {
1987
- signal: options?.signal,
1988
- timeout: options?.timeout ?? 10 * 1000,
1989
- });
2021
+ let checkIsWritable = (pDefer: DeferredPromise<void>) => {
2022
+ if (stream.isReadable && stream.isWritable) {
2023
+ pDefer.resolve();
2024
+ }
2025
+ };
2026
+ await waitForEvent(
2027
+ stream,
2028
+ ["stream:outbound", "stream:inbound"],
2029
+ checkIsWritable,
2030
+ {
2031
+ signals: abortSignals,
2032
+ timeout: options?.timeout,
2033
+ },
2034
+ );
1990
2035
  } catch (error) {
1991
2036
  throw new Error(
1992
2037
  "Stream to " +
@@ -2000,7 +2045,7 @@ export abstract class DirectStream<
2000
2045
  }
2001
2046
  }
2002
2047
 
2003
- getPublicKey(hash: string): PublicSignKey {
2048
+ getPublicKey(hash: string): PublicSignKey | undefined {
2004
2049
  return this.peerKeyHashToPublicKey.get(hash);
2005
2050
  }
2006
2051
 
@@ -2064,7 +2109,7 @@ export abstract class DirectStream<
2064
2109
  }
2065
2110
  }
2066
2111
 
2067
- export const waitForPeers = async (
2112
+ export const waitForReachable = async (
2068
2113
  ...libs: {
2069
2114
  waitFor: (peer: PeerId | PublicSignKey) => Promise<void>;
2070
2115
  peerId: PeerId;
@@ -2076,6 +2121,27 @@ export const waitForPeers = async (
2076
2121
  continue;
2077
2122
  }
2078
2123
  await libs[i].waitFor(libs[j].peerId);
2124
+ await libs[j].waitFor(libs[i].peerId);
2125
+ }
2126
+ }
2127
+ };
2128
+
2129
+ export const waitForNeighbour = async (
2130
+ ...libs: {
2131
+ waitFor: (
2132
+ peer: PeerId | PublicSignKey,
2133
+ options?: { neighbour?: boolean },
2134
+ ) => Promise<void>;
2135
+ peerId: PeerId;
2136
+ }[]
2137
+ ) => {
2138
+ for (let i = 0; i < libs.length; i++) {
2139
+ for (let j = 0; j < libs.length; j++) {
2140
+ if (i === j) {
2141
+ continue;
2142
+ }
2143
+ await libs[i].waitFor(libs[j].peerId, { neighbour: true });
2144
+ await libs[j].waitFor(libs[i].peerId, { neighbour: true });
2079
2145
  }
2080
2146
  }
2081
2147
  };
package/src/routes.ts CHANGED
@@ -83,13 +83,17 @@ export class Routes {
83
83
  let prev = fromMap.get(target);
84
84
  const routeDidExist = prev;
85
85
  const isNewSession = !prev || session > prev.session;
86
+ const isOldSession = prev && session < prev.session;
87
+
86
88
  if (!prev) {
87
89
  prev = { session, remoteSession, list: [] as RelayInfo[] };
88
90
  fromMap.set(target, prev);
89
91
  }
90
92
 
91
- if (neighbour === target) {
92
- if (from === this.me) {
93
+ const isRelayed = from !== this.me;
94
+ const targetIsNeighbour = neighbour === target;
95
+ if (targetIsNeighbour) {
96
+ if (!isRelayed) {
93
97
  // force distance to neighbour as targets to always favor directly sending to them
94
98
  // i.e. if target is our neighbour, always assume the shortest path to them is the direct path
95
99
  distance = -1;
@@ -105,6 +109,20 @@ export class Routes {
105
109
 
106
110
  prev.session = Math.max(session, prev.session);
107
111
 
112
+ const scheduleCleanup = () => {
113
+ return delay(this.routeMaxRetentionPeriod + 100, { signal: this.signal })
114
+ .then(() => {
115
+ this.cleanup(from, target);
116
+ })
117
+ .catch((e) => {
118
+ if (e instanceof AbortError) {
119
+ // skip
120
+ return;
121
+ }
122
+ throw e;
123
+ });
124
+ };
125
+
108
126
  // Update routes and cleanup all old routes that are older than latest session - some threshold
109
127
  if (isNewSession) {
110
128
  // Mark previous routes as old
@@ -120,18 +138,10 @@ export class Routes {
120
138
 
121
139
  // Initiate cleanup
122
140
  if (distance !== -1 && foundNodeToExpire) {
123
- delay(this.routeMaxRetentionPeriod + 100, { signal: this.signal })
124
- .then(() => {
125
- this.cleanup(from, target);
126
- })
127
- .catch((e) => {
128
- if (e instanceof AbortError) {
129
- // skip
130
- return;
131
- }
132
- throw e;
133
- });
141
+ scheduleCleanup();
134
142
  }
143
+ } else if (isOldSession) {
144
+ scheduleCleanup();
135
145
  }
136
146
 
137
147
  // Modify list for new/update route
@@ -139,16 +149,18 @@ export class Routes {
139
149
  for (const route of prev.list) {
140
150
  if (route.hash === neighbour) {
141
151
  // if route is faster or just as fast, update existing route
142
- if (route.distance > distance) {
143
- route.distance = distance;
144
- route.session = session;
145
- route.expireAt = undefined; // remove expiry since we updated
146
- prev.list.sort((a, b) => a.distance - b.distance);
147
- return isNewRemoteSession ? "restart" : "updated";
148
- } else if (route.distance === distance) {
149
- route.session = session;
150
- route.expireAt = undefined; // remove expiry since we updated
151
- return isNewRemoteSession ? "restart" : "updated";
152
+ if (isNewSession) {
153
+ if (route.distance > distance) {
154
+ route.distance = distance;
155
+ route.session = session;
156
+ route.expireAt = undefined; // remove expiry since we updated
157
+ prev.list.sort((a, b) => a.distance - b.distance);
158
+ return isNewRemoteSession ? "restart" : "updated";
159
+ } else if (route.distance === distance) {
160
+ route.session = session;
161
+ route.expireAt = undefined; // remove expiry since we updated
162
+ return isNewRemoteSession ? "restart" : "updated";
163
+ }
152
164
  }
153
165
 
154
166
  exist = true;
@@ -157,8 +169,20 @@ export class Routes {
157
169
  }
158
170
  }
159
171
 
160
- prev.list.push({ distance, session, hash: neighbour });
161
- prev.list.sort((a, b) => a.distance - b.distance);
172
+ // if not exist add new route
173
+ // else if it exist then we only end up here if the distance is longer than prev, this means that we want to keep prev while adding the new route
174
+ if (!exist || isNewSession) {
175
+ prev.list.push({
176
+ distance,
177
+ session,
178
+ hash: neighbour,
179
+ expireAt: isOldSession
180
+ ? +new Date() + this.routeMaxRetentionPeriod
181
+ : undefined,
182
+ });
183
+ prev.list.sort((a, b) => a.distance - b.distance);
184
+ }
185
+
162
186
  return exist ? (isNewRemoteSession ? "restart" : "updated") : "new";
163
187
  }
164
188
 
@@ -371,10 +395,11 @@ export class Routes {
371
395
  continue; // don't send to me or backwards
372
396
  }
373
397
 
398
+ // neighbours that are links from 'from' to 'to'
374
399
  const neighbour = this.findNeighbor(from, to);
375
400
  if (neighbour) {
376
401
  let foundClosest = false;
377
- let redundancyModified = redundancy;
402
+ let added = 0;
378
403
  for (let i = 0; i < neighbour.list.length; i++) {
379
404
  const { distance, session, expireAt } = neighbour.list[i];
380
405
 
@@ -384,7 +409,7 @@ export class Routes {
384
409
  continue;
385
410
  }
386
411
 
387
- if (distance >= redundancyModified) {
412
+ if (distance >= redundancy) {
388
413
  break; // because neighbour listis sorted
389
414
  }
390
415
 
@@ -403,12 +428,15 @@ export class Routes {
403
428
  session <= neighbour.session // (<) will never be the case, but we do add routes in the tests with later session timestamps
404
429
  ) {
405
430
  foundClosest = true;
406
-
407
431
  if (distance === -1) {
408
- // remove 1 from the expected redunancy since we got a route with negative 1 distance
409
- // if we do not do this, we would get 2 routes if redundancy = 1, {-1, 0}, while it should just be
410
- // {-1} in this case
411
- redundancyModified -= 1;
432
+ break; // dont send to more peers if we have the direct route
433
+ }
434
+ }
435
+
436
+ if (!expireAt) {
437
+ // only count non-expired routes or if we are relaying then also count expired routes
438
+ added++;
439
+ if (added >= redundancy) {
412
440
  break;
413
441
  }
414
442
  }
@@ -0,0 +1,51 @@
1
+ import type { TypedEventEmitter } from "@libp2p/interface";
2
+ import pDefer, { type DeferredPromise } from "p-defer";
3
+
4
+ export function waitForEvent<
5
+ Emitter extends TypedEventEmitter<Events>,
6
+ Events extends Record<string, any> = Emitter extends TypedEventEmitter<
7
+ infer E
8
+ >
9
+ ? E
10
+ : never,
11
+ Event extends keyof Events = keyof Events,
12
+ >(
13
+ emitter: Emitter,
14
+ events: Event[],
15
+ resolver: (deferred: DeferredPromise<void>) => void | Promise<void>,
16
+ options?: {
17
+ signals?: AbortSignal[];
18
+ timeout?: number;
19
+ },
20
+ ): Promise<void> {
21
+ const deferred = pDefer<void>();
22
+ const abortFn = () =>
23
+ deferred.reject(
24
+ new Error(
25
+ "Aborted waiting for event: " +
26
+ String(events.length > 1 ? events.join(", ") : events[0]),
27
+ ),
28
+ );
29
+
30
+ const checkIsReady = (...args: any[]) => resolver(deferred);
31
+
32
+ deferred.promise.finally(() => {
33
+ for (const event of events) {
34
+ emitter.removeEventListener(event as any, checkIsReady);
35
+ }
36
+ clearTimeout(timeout);
37
+ options?.signals?.forEach((signal) =>
38
+ signal.removeEventListener("abort", abortFn),
39
+ );
40
+ });
41
+
42
+ for (const event of events) {
43
+ emitter.addEventListener(event as any, checkIsReady);
44
+ }
45
+ let timeout = setTimeout(abortFn, options?.timeout ?? 10 * 1000);
46
+ options?.signals?.forEach((signal) =>
47
+ signal.addEventListener("abort", abortFn),
48
+ );
49
+ (resolver as any)(deferred);
50
+ return deferred.promise;
51
+ }