@peerbit/shared-log 13.2.24 → 13.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/checked-prune.d.ts +12 -0
- package/dist/src/checked-prune.d.ts.map +1 -1
- package/dist/src/checked-prune.js +33 -0
- package/dist/src/checked-prune.js.map +1 -1
- package/dist/src/coordinate-persistence.d.ts +211 -0
- package/dist/src/coordinate-persistence.d.ts.map +1 -0
- package/dist/src/coordinate-persistence.js +1133 -0
- package/dist/src/coordinate-persistence.js.map +1 -0
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +19 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +127 -133
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1400 -4269
- package/dist/src/index.js.map +1 -1
- package/dist/src/instance-lifecycle.d.ts +117 -0
- package/dist/src/instance-lifecycle.d.ts.map +1 -0
- package/dist/src/instance-lifecycle.js +254 -0
- package/dist/src/instance-lifecycle.js.map +1 -0
- package/dist/src/join-warmup.d.ts +86 -0
- package/dist/src/join-warmup.d.ts.map +1 -0
- package/dist/src/join-warmup.js +351 -0
- package/dist/src/join-warmup.js.map +1 -0
- package/dist/src/native-write-through-block-store.d.ts +123 -0
- package/dist/src/native-write-through-block-store.d.ts.map +1 -0
- package/dist/src/native-write-through-block-store.js +989 -0
- package/dist/src/native-write-through-block-store.js.map +1 -0
- package/dist/src/peer-session.d.ts +117 -0
- package/dist/src/peer-session.d.ts.map +1 -0
- package/dist/src/peer-session.js +259 -0
- package/dist/src/peer-session.js.map +1 -0
- package/dist/src/replication-announcement.d.ts +116 -0
- package/dist/src/replication-announcement.d.ts.map +1 -0
- package/dist/src/replication-announcement.js +515 -0
- package/dist/src/replication-announcement.js.map +1 -0
- package/dist/src/replicator-liveness.d.ts +59 -0
- package/dist/src/replicator-liveness.d.ts.map +1 -0
- package/dist/src/replicator-liveness.js +304 -0
- package/dist/src/replicator-liveness.js.map +1 -0
- package/dist/src/sync/dispatch-lifecycle.d.ts +48 -0
- package/dist/src/sync/dispatch-lifecycle.d.ts.map +1 -0
- package/dist/src/sync/dispatch-lifecycle.js +141 -0
- package/dist/src/sync/dispatch-lifecycle.js.map +1 -0
- package/dist/src/sync/factory.d.ts +29 -0
- package/dist/src/sync/factory.d.ts.map +1 -0
- package/dist/src/sync/factory.js +87 -0
- package/dist/src/sync/factory.js.map +1 -0
- package/dist/src/sync/pending-sync-store.d.ts +105 -0
- package/dist/src/sync/pending-sync-store.d.ts.map +1 -0
- package/dist/src/sync/pending-sync-store.js +877 -0
- package/dist/src/sync/pending-sync-store.js.map +1 -0
- package/dist/src/sync/rateless-iblt.d.ts +4 -1
- package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
- package/dist/src/sync/rateless-iblt.js +102 -106
- package/dist/src/sync/rateless-iblt.js.map +1 -1
- package/dist/src/sync/simple.d.ts +10 -41
- package/dist/src/sync/simple.d.ts.map +1 -1
- package/dist/src/sync/simple.js +259 -952
- package/dist/src/sync/simple.js.map +1 -1
- package/dist/src/sync/sync-peer-state.d.ts +16 -0
- package/dist/src/sync/sync-peer-state.d.ts.map +1 -0
- package/dist/src/sync/sync-peer-state.js +82 -0
- package/dist/src/sync/sync-peer-state.js.map +1 -0
- package/package.json +12 -12
- package/src/checked-prune.ts +35 -0
- package/src/coordinate-persistence.ts +1796 -0
- package/src/errors.ts +21 -0
- package/src/index.ts +4014 -7858
- package/src/instance-lifecycle.ts +351 -0
- package/src/join-warmup.ts +507 -0
- package/src/native-write-through-block-store.ts +1170 -0
- package/src/peer-session.ts +336 -0
- package/src/replication-announcement.ts +744 -0
- package/src/replicator-liveness.ts +439 -0
- package/src/sync/dispatch-lifecycle.ts +230 -0
- package/src/sync/factory.ts +154 -0
- package/src/sync/pending-sync-store.ts +1085 -0
- package/src/sync/rateless-iblt.ts +122 -132
- package/src/sync/simple.ts +334 -1144
- package/src/sync/sync-peer-state.ts +107 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-sync-store.js","sourceRoot":"","sources":["../../../src/sync/pending-sync-store.ts"],"names":[],"mappings":"AAIA,sEAAsE;AACtE,yEAAyE;AACzE,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,uEAAuE;AACvE,EAAE;AACF,sEAAsE;AACtE,8DAA8D;AAC9D,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAE1E,8EAA8E;AAC9E,4EAA4E;AAC5E,yDAAyD;AACzD,MAAM,iDAAiD,GAAG,GAAG,CAAC;AAC9D,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CACtD,mCAAmC,CACnC,CAAC;AACF,gFAAgF;AAChF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC;AAqCrD,MAAM,OAAO,gBAAgB;IAqCC;IApC7B,qEAAqE;IACrE,mEAAmE;IACnE,iDAAiD;IACjD,iBAAiB,CAAoC;IACrD,yBAAyB,CAAgC;IACzD,0BAA0B,CAA2B;IACrD,OAAO,CAAsC;IAC7C,qBAAqB,CAA0B;IAC/C,4BAA4B,CAAiC;IAC7D,+BAA+B,CAG7B;IACF,6BAA6B,CAAc;IAC3C,kCAAkC,CAAsB;IACxD,mCAAmC,CAA2B;IAC9D,2CAA2C,CAA4B;IACvE,qBAAqB,CAAS;IAC9B,yBAAyB,CAAS;IAClC,sCAAsC,CAAS;IAC/C,+BAA+B,CAAsB;IACrD,oCAAoC,CAAgC;IACpE,gCAAgC,CAAuC;IACvE,sCAAsC,CAGpC;IACF,0CAA0C,CAGxC;IAEF,4DAA4D;IAC5D,YAAY,CAAuD;IACnE,wBAAwB,CAAgC;IAExD,YAA6B,IAA0B;QAA1B,SAAI,GAAJ,IAAI,CAAsB;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3C,IAAI,CAAC,0BAA0B,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,+BAA+B,GAAG,IAAI,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,6BAA6B,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,kCAAkC,GAAG,IAAI,GAAG,EAAE,CAAC;QACpD,IAAI,CAAC,mCAAmC,GAAG,IAAI,GAAG,EAAE,CAAC;QACrD,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,sCAAsC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,+BAA+B,GAAG,IAAI,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,oCAAoC,GAAG,IAAI,GAAG,EAAE,CAAC;QACtD,IAAI,CAAC,gCAAgC,GAAG,IAAI,GAAG,EAAE,CAAC;QAClD,IAAI,CAAC,sCAAsC,GAAG,IAAI,GAAG,EAAE,CAAC;QACxD,IAAI,CAAC,0CAA0C,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3C,CAAC;IAED,uEAAuE;IACvE,kEAAkE;IAClE,0EAA0E;IAC1E,sEAAsE;IAC9D,sBAAsB,CAC7B,GAAgB,EAChB,KAAsB;QAEtB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACtD,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,MAAM,GAAsB;YACjC,IAAI,EAAE,KAAK;YACX,GAAG;YACH,KAAK;YACL,SAAS;YACT,eAAe;YACf,QAAQ,EAAE,CAAC;YACX,SAAS,EACR,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB;YACrE,SAAS,EAAE,CAAC,CAAC;SACb,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,qBAAqB,IAAI,SAAS,CAAC,IAAI,CAAC;QAC7C,OAAO,MAAM,CAAC;IACf,CAAC;IAED,yBAAyB,CAAC,GAAgB;QACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,IAAI,GAAG,CAAC;IACpB,CAAC;IAEO,+BAA+B,CAAC,GAAW;QAClD,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,6BAA6B,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,2CAA2C,GAAG,SAAS,CAAC;QAC9D,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,WAAW,GAChB,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5D,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,WAAW,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC/D,CAAC;QACF,CAAC;IACF,CAAC;IAEO,gCAAgC,CAAC,GAAW;QACnD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;YAC1C,OAAO;QACR,CAAC;QACD,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;gBAC1B,MAAM,WAAW,GAChB,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC5D,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,WAAW,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC/D,CAAC;YACF,CAAC;YACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxD,CAAC;QACF,CAAC;QACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,WAAW,GAAG,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClB,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACjE,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,kCAAkC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;IACF,CAAC;IAEO,kCAAkC,CACzC,UAAkB,EAClB,IAAY;QAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,IAAI,GAAG,EAAE,CAAC;YAC/D,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACrC,OAAO;QACR,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;YACnD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACR,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/D,OAAO;QACR,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACzB,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,QAAQ,EAC3D,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CACrD,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,+BAA+B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,kCAAkC;QACjC,IACC,IAAI,CAAC,6BAA6B,CAAC,IAAI,KAAK,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAC9C,CAAC;YACF,uEAAuE;YACvE,yEAAyE;YACzE,kCAAkC;YAClC,IAAI,SAAS,GAAG,CAAC,CAAC;YAClB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC;gBACD,SAAS,IAAI,CAAC,CAAC;gBACf,IAAI,SAAS,IAAI,iDAAiD,EAAE,CAAC;oBACpE,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,IAAI,CAAC,6BAA6B,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,2CAA2C,GAAG,SAAS,CAAC;YAC7D,OAAO;QACR,CAAC;QACD,IAAI,CAAC,2CAA2C;YAC/C,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,CAAC;QAC7C,KACC,IAAI,SAAS,GAAG,CAAC,EACjB,SAAS,GAAG,iDAAiD,EAC7D,SAAS,IAAI,CAAC,EACb,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,2CAA2C,CAAC,IAAI,EAAE,CAAC;YACrE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,2CAA2C,GAAG,SAAS,CAAC;gBAC7D,MAAM;YACP,CAAC;YACD,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAED,4BAA4B,CAC3B,GAAgB;QAEhB,MAAM,iBAAiB,GAAG,CACzB,SAAsB,EACI,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACjE,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;gBACpC,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,OAAO,SAAS,CAAC;QAClB,CAAC,CAAC;QACF,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC;gBAC3C,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClE,IAAI,OAAO,EAAE,CAAC;gBACb,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,SAAS,IAAI,iDAAiD,EAAE,CAAC;wBACpE,OAAO,iCAAiC,CAAC;oBAC1C,CAAC;oBACD,SAAS,IAAI,CAAC,CAAC;oBACf,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC;oBAC7C,IACC,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;wBAC7D,IAAI,EACH,CAAC;wBACF,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBAC5C,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;4BACxB,OAAO,UAAU,CAAC;wBACnB,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,IACC,CAAC,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EACjE,CAAC;oBACF,OAAO,iCAAiC,CAAC;gBAC1C,CAAC;YACF,CAAC;YACD,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED,mBAAmB,CAClB,GAAgB,EAChB,IAAmB,EACnB,SAAkB;QAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,KAAK,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,8BAA8B,CAAC;YAC1E,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACnD,MAAM,GAAG;gBACR,IAAI,EAAE,KAAK;gBACX,GAAG;gBACH,KAAK;gBACL,SAAS,EAAE,IAAI,GAAG,EAAE;gBACpB,eAAe,EAAE,IAAI,GAAG,EAAE;gBAC1B,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,CAAC,CAAC;aACb,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;aAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,mBAAmB,CAAC,GAAgB,EAAE,IAAY;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,mCAAmC,CAClC,IAAmB,EACnB,IAAY,EACZ,KAAc;QAEd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3D,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;gBAC3C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBAC9B,SAAS;YACV,CAAC;YACD,IACC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC/B,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,EAClC,CAAC;gBACF,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;QACD,OAAO,YAAY,CAAC;IACrB,CAAC;IAED,mBAAmB,CAAC,GAAgB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,mBAAmB,CAAC,GAAgB,EAAE,MAAc;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO;QACR,CAAC;QACD,MAAM,MAAM,GACX,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,2BAA2B,CAC1B,IAAY,EACZ,UAAyB;QAEzB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,WAAW,GAAoC;YACpD,IAAI;YACJ,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,8BAA8B;YACtD,UAAU,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC;YAC/B,eAAe,EAAE,CAAC;SAClB,CAAC;QACF,IAAI,CAAC,gCAAgC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,gBAAgB,GACnB,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACzE,CAAC;QACD,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,sCAAsC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,yBAAyB,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,+BAA+B,CAAC,GAAG,CACvC,IAAI,EACJ,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAC7D,CAAC;QACF,IAAI,kBAAkB,GACrB,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzB,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YACnC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,uBAAuB,GAC1B,IAAI,CAAC,0CAA0C,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC9B,uBAAuB,GAAG,IAAI,GAAG,EAAE,CAAC;gBACpC,IAAI,CAAC,0CAA0C,CAAC,GAAG,CAClD,QAAQ,EACR,uBAAuB,CACvB,CAAC;YACH,CAAC;YACD,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,UAAU,GAAmC;YAClD,IAAI,EAAE,WAAW;YACjB,WAAW;YACX,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,SAAS,EAAE,CAAC,CAAC;SACb,CAAC;QACF,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC;IACpB,CAAC;IAEO,kCAAkC,CACzC,WAA4C,EAC5C,QAAqB,EACrB,OAAmC;QAEnC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,OAAO,EAAE,WAAW,KAAK,IAAI,EAAE,CAAC;YACnC,WAAW,CAAC,eAAe,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACP,WAAW,CAAC,SAAS,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,yBAAyB,IAAI,CAAC,CAAC;YACpC,MAAM,SAAS,GACd,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACvE,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACvE,CAAC;QACF,CAAC;QACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,oCAAoC,CAAC,GAAG,CACvE,WAAW,CAAC,IAAI,CAChB,CAAC;QACF,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,kBAAkB,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,uBAAuB,GAC5B,IAAI,CAAC,0CAA0C,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/D,uBAAuB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,uBAAuB,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,0CAA0C,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,iCAAiC,CAAC,QAAqB;QACtD,MAAM,YAAY,GACjB,IAAI,CAAC,0CAA0C,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,kCAAkC,CAAC,WAAW,EAAE,QAAQ,EAAE;gBAC9D,WAAW,EAAE,IAAI;aACjB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,2BAA2B,CAC1B,WAA4C,EAC5C,QAAqB;QAErB,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChE,IAAI,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACzC,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,kCAAkC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,WAAW,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;YACnD,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;YAC3B,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,sCAAsC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,sCAAsC,CAAC,GAAG,CACvE,WAAW,CAAC,IAAI,CAChB,CAAC;YACF,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,gBAAgB,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,sCAAsC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,oCAAoC,CACnC,IAAY,EACZ,QAAqB;QAErB,MAAM,YAAY,GACjB,IAAI,CAAC,0CAA0C,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACxC,IACC,WAAW,CAAC,IAAI,KAAK,IAAI;gBACzB,WAAW,CAAC,QAAQ;gBACpB,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;gBACnC,CAAC,IAAI,CAAC,kCAAkC,CAAC,WAAW,EAAE,QAAQ,EAAE;oBAC/D,WAAW,EAAE,IAAI;iBACjB,CAAC,EACD,CAAC;gBACF,SAAS;YACV,CAAC;YACD,yEAAyE;YACzE,oEAAoE;YACpE,oEAAoE;YACpE,gDAAgD;YAChD,OAAO,WAAW,CAAC,SAAS,CAAC;QAC9B,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,8BAA8B,CAC7B,WAA6C;QAE7C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACjE,OAAO;QACR,CAAC;QACD,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,4CAA4C;QAC5C,IAAI,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;QACnD,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,sCAAsC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,iCAAiC,EAAE,CAAC;IAC1C,CAAC;IAED,2BAA2B,CAC1B,WAA6C;QAE7C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO;QACR,CAAC;QACD,IAAI,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;QACnD,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,kCAAkC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,WAAW,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;YACpD,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC;YAChC,WAAW,CAAC,SAAS,IAAI,eAAe,CAAC;YACzC,IAAI,CAAC,yBAAyB,IAAI,eAAe,CAAC;YAClD,MAAM,SAAS,GACd,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjE,eAAe,CAAC;YACjB,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACvE,CAAC;QACF,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,sCAAsC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;QAC3B,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,sCAAsC,CAAC,GAAG,CACvE,WAAW,CAAC,IAAI,CAChB,CAAC;QACF,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,gBAAgB,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,sCAAsC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,iCAAiC,EAAE,CAAC;IAC1C,CAAC;IAED,0BAA0B,CAAC,IAAa;QACvC,MAAM,YAAY,GACjB,IAAI,IAAI,IAAI;YACX,CAAC,CAAC,IAAI,CAAC,gCAAgC;YACvC,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;IACF,CAAC;IAEO,qBAAqB,CAAC,IAAY,EAAE,KAAa;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAE,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAE,CAAC;QACrD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QAC7C,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;QAC7C,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;QAC3B,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,qBAAqB,CAAC,IAA2B;QACxD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,IACC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAE,CAAC,SAAS;gBAC7C,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAE,CAAC,SAAS,EAC3C,CAAC;gBACF,MAAM;YACP,CAAC;YACD,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1C,KAAK,GAAG,MAAM,CAAC;QAChB,CAAC;IACF,CAAC;IAEO,uBAAuB,CAAC,IAA2B;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,IACC,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM;YAC1C,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,KAAK,IAAI,EACzC,CAAC;YACF,OAAO;QACR,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAG,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,KAAK,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;YAChD,OAAO;QACR,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO,OAAO,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,IACC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAE,CAAC,SAAS;gBAC7C,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAE,CAAC,SAAS,EAC7C,CAAC;gBACF,MAAM;YACP,CAAC;YACD,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,GAAG,MAAM,CAAC;QAClB,CAAC;QACD,SAAS,CAAC;YACT,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;YACvB,IAAI,QAAQ,GAAG,OAAO,CAAC;YACvB,IACC,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM;gBACxC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAE,CAAC,SAAS;oBAC1C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAE,CAAC,SAAS,EAC/C,CAAC;gBACF,QAAQ,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,IACC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM;gBACzC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAE,CAAC,SAAS;oBAC3C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAE,CAAC,SAAS,EAC/C,CAAC;gBACF,QAAQ,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC1B,MAAM;YACP,CAAC;YACD,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9C,OAAO,GAAG,QAAQ,CAAC;QACpB,CAAC;IACF,CAAC;IAED,+BAA+B,CAAC,GAAgB,EAAE,SAAiB;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YAC7C,OAAO;QACR,CAAC;QACD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO;QACR,CAAC;QACD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACrC,CAAC;IAEO,gCAAgC,CACvC,WAA4C;QAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO;QACR,CAAC;QACD,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACrC,SAAS,CAAC;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;gBACnC,MAAM;YACP,CAAC;YACD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;oBACzC,SAAS;gBACV,CAAC;gBACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACP,IACC,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAClE,CAAC;oBACF,SAAS;gBACV,CAAC;gBACD,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9D,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,CAAC;QACF,CAAC;IACF,CAAC;IAED,iCAAiC;QAChC,IACC,IAAI,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC;YACvC,IAAI,CAAC,4BAA4B,IAAI,IAAI,EACxC,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAChD,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC;QAC/C,CAAC;IACF,CAAC;IAEO,4BAA4B;QACnC,IACC,IAAI,CAAC,4BAA4B,IAAI,IAAI;YACzC,IAAI,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC,EACtC,CAAC;YACF,OAAO;QACR,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC;QAC3D,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAC7C,GAAG,EAAE;YACJ,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC;YAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACrC,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CACnC,CAAC;QACF,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,mBAAmB;QAClB,OAAO,CACN,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC;YAC/B,IAAI,CAAC,yBAAyB,CAAC,IAAI,GAAG,CAAC;YACvC,IAAI,CAAC,yBAAyB,GAAG,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAC1B,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,GAAgB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACd,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChE,IAAI,GAAG,EAAE,CAAC;oBACT,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBACpB,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxD,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CACpC,CAAC,EACD,IAAI,CAAC,qBAAqB;gBACzB,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,CAC5C,CAAC;YACF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,iCAAiC,EAAE,CAAC;QAEzC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,sBAAsB,CAAC,GAAgB,EAAE,IAAY;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO;QACR,CAAC;QACD,MAAM,MAAM,GACX,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO;QACR,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAE,CAAC;YAC1C,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACjD,QAAQ,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;YAC/B,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;QACD,QAAQ,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1D,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC/B,MAAM,CAAC,QAAQ;gBACd,MAAM,KAAK,SAAS;oBACnB,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM;oBACzB,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC7B,OAAO;QACR,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,iCAAiC,EAAE,CAAC;IAC1C,CAAC;IAED,mBAAmB,CAAC,aAAqB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,GAAG,EAAE,CAAC;YACT,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;IAED,2BAA2B,CAAC,IAAY,EAAE,GAAgB;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,OAAO,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;IAED,wBAAwB,CACvB,IAAY,EACZ,GAAgB,EAChB,SAAiB;QAEjB,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YACjD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,uBAAuB,CAAC,IAAY;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACR,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,OAAO,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEO,oBAAoB,CAAC,GAAgB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,yEAAyE;YACzE,wEAAwE;YACxE,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7C,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;YACD,OAAO;QACR,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC;IAEO,iBAAiB,CACxB,IAAY,EACZ,QAAoC;QAEpC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,MAAM,UAAU,IAAI;YACxB,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC7D,EAAE,CAAC;YACH,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IAED,8BAA8B,CAC7B,aAAqB,EACrB,MAAgB;QAEhB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CACpC,IAAI,CAAC,2BAA2B,CAAC,aAAa,EAAE,GAAG,CAAC,CACpD,CAAC;QACH,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,IAAY;QAC5B,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,kBAAkB,CAAC,MAAgB;QAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC;QAC3C,IAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,mCAAmC,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,2CAA2C,GAAG,SAAS,CAAC;QAC7D,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,4BAA4B,IAAI,IAAI,EAAE,CAAC;YAC/C,YAAY,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAChD,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;CACD"}
|
|
@@ -154,9 +154,10 @@ export declare class RatelessIBLTSynchronizer<D extends "u32" | "u64"> implement
|
|
|
154
154
|
outgoingSyncProcesses: Map<string, OutgoingRatelessSyncProcess>;
|
|
155
155
|
private outgoingSyncProcessByTarget;
|
|
156
156
|
private ratelessDispatchLifecycleController;
|
|
157
|
-
private
|
|
157
|
+
private readonly ratelessDispatchRegistry;
|
|
158
158
|
private activeRatelessResponseCount;
|
|
159
159
|
private activeRatelessResponseCountByPeer;
|
|
160
|
+
private readonly ratelessPeerSlotRows;
|
|
160
161
|
private ratelessClosed;
|
|
161
162
|
constructor(properties: SynchronizerComponents<D>);
|
|
162
163
|
private get maxConvergentTrackedHashes();
|
|
@@ -197,6 +198,8 @@ export declare class RatelessIBLTSynchronizer<D extends "u32" | "u64"> implement
|
|
|
197
198
|
private onMaybeMissingEntriesWithLifecycle;
|
|
198
199
|
private startOutgoingRatelessSyncForTarget;
|
|
199
200
|
private consumeAuthorizedRatelessResponse;
|
|
201
|
+
private getOrCreateRatelessResponseSlotRow;
|
|
202
|
+
private detachRatelessResponseSlotRow;
|
|
200
203
|
onMessage(message: TransportMessage, context: RequestContext): Promise<boolean>;
|
|
201
204
|
onReceivedEntries(properties: {
|
|
202
205
|
entries: EntryWithRefs<any>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateless-iblt.d.ts","sourceRoot":"","sources":["../../../src/sync/rateless-iblt.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,iBAAiB,CAAC;AAQ5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EACN,cAAc,EACd,cAAc,EAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"rateless-iblt.d.ts","sourceRoot":"","sources":["../../../src/sync/rateless-iblt.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,8 +42,10 @@ import { SilentDelivery } from "@peerbit/stream-interface";
|
|
|
42
42
|
import {} from "../exchange-heads.js";
|
|
43
43
|
import { TransportMessage } from "../message.js";
|
|
44
44
|
import {} from "../ranges.js";
|
|
45
|
+
import { DispatchLifecycleRegistry, isOwnershipGenerationActive, isTrackedSessionActive, } from "./dispatch-lifecycle.js";
|
|
45
46
|
import { emitSyncProfileDuration, emitSyncProfileEvent, syncProfileStart, } from "./profile.js";
|
|
46
47
|
import { ResponseMaybeSync, ResponseMaybeSyncCapabilities, SYNC_MESSAGE_PRIORITY, SimpleSyncronizer, } from "./simple.js";
|
|
48
|
+
import { SyncPeerSlotRegistry, } from "./sync-peer-state.js";
|
|
47
49
|
export const logger = loggerFn("peerbit:shared-log:rateless");
|
|
48
50
|
const coerceBigInt = (value) => typeof value === "bigint" ? value : BigInt(value);
|
|
49
51
|
let SymbolSerialized = (() => {
|
|
@@ -668,9 +670,15 @@ export class RatelessIBLTSynchronizer {
|
|
|
668
670
|
outgoingSyncProcesses;
|
|
669
671
|
outgoingSyncProcessByTarget;
|
|
670
672
|
ratelessDispatchLifecycleController;
|
|
671
|
-
|
|
673
|
+
ratelessDispatchRegistry;
|
|
672
674
|
activeRatelessResponseCount;
|
|
673
675
|
activeRatelessResponseCountByPeer;
|
|
676
|
+
// Per-peer slot rows for active rateless responses (shared registry; see
|
|
677
|
+
// sync-peer-state.ts for the lifetime policy). Release closures capture
|
|
678
|
+
// the row: disconnect returns current-generation quota and logical
|
|
679
|
+
// ownership immediately, while the global physical permit remains charged
|
|
680
|
+
// until the shipment actually settles.
|
|
681
|
+
ratelessPeerSlotRows;
|
|
674
682
|
ratelessClosed;
|
|
675
683
|
constructor(properties) {
|
|
676
684
|
this.properties = properties;
|
|
@@ -680,9 +688,19 @@ export class RatelessIBLTSynchronizer {
|
|
|
680
688
|
this.outgoingSyncProcesses = new Map();
|
|
681
689
|
this.outgoingSyncProcessByTarget = new Map();
|
|
682
690
|
this.ratelessDispatchLifecycleController = new AbortController();
|
|
683
|
-
this.
|
|
691
|
+
this.ratelessDispatchRegistry = new DispatchLifecycleRegistry({
|
|
692
|
+
isClosed: () => this.ratelessClosed,
|
|
693
|
+
currentOwnershipLifecycleController: () => this.ratelessDispatchLifecycleController,
|
|
694
|
+
hasRetainedWork: (lifecycle) => [...lifecycle.targets.values()].some((target) => target.retainedByProcess || target.responseLeases > 0),
|
|
695
|
+
// Target-activity strategy: set membership in the active-target
|
|
696
|
+
// registry (rateless target lifecycles carry no epochs).
|
|
697
|
+
isTargetCurrent: (targetLifecycle) => this.ratelessDispatchRegistry.activeTargets
|
|
698
|
+
.get(targetLifecycle.target)
|
|
699
|
+
?.has(targetLifecycle) === true,
|
|
700
|
+
});
|
|
684
701
|
this.activeRatelessResponseCount = 0;
|
|
685
702
|
this.activeRatelessResponseCountByPeer = new Map();
|
|
703
|
+
this.ratelessPeerSlotRows = new SyncPeerSlotRegistry();
|
|
686
704
|
this.ratelessClosed = false;
|
|
687
705
|
this.ingoingSyncProcesses = new Map();
|
|
688
706
|
this.incomingRatelessProcessAdmissions = new Set();
|
|
@@ -723,13 +741,15 @@ export class RatelessIBLTSynchronizer {
|
|
|
723
741
|
return scored.map((x) => x.entry);
|
|
724
742
|
}
|
|
725
743
|
isRatelessRepairSessionActive(session) {
|
|
726
|
-
return (
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
session.ownershipLifecycleController
|
|
731
|
-
|
|
732
|
-
|
|
744
|
+
return isTrackedSessionActive({
|
|
745
|
+
closed: this.ratelessClosed,
|
|
746
|
+
cancelled: session.cancelled,
|
|
747
|
+
sessionController: session.controller,
|
|
748
|
+
ownershipLifecycleController: session.ownershipLifecycleController,
|
|
749
|
+
currentOwnershipLifecycleController: this.ratelessDispatchLifecycleController,
|
|
750
|
+
session,
|
|
751
|
+
registered: this.ratelessRepairSessions.get(session.id),
|
|
752
|
+
});
|
|
733
753
|
}
|
|
734
754
|
cancelRatelessRepairSession(session, reason = new Error("rateless repair session cancelled")) {
|
|
735
755
|
if (session.cancelled) {
|
|
@@ -1099,102 +1119,39 @@ export class RatelessIBLTSynchronizer {
|
|
|
1099
1119
|
dispatchFinished: false,
|
|
1100
1120
|
disposed: false,
|
|
1101
1121
|
};
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
};
|
|
1110
|
-
lifecycle.targets.set(target, targetLifecycle);
|
|
1111
|
-
let activeForTarget = this.ratelessDispatchTargets.get(target);
|
|
1112
|
-
if (!activeForTarget) {
|
|
1113
|
-
activeForTarget = new Set();
|
|
1114
|
-
this.ratelessDispatchTargets.set(target, activeForTarget);
|
|
1115
|
-
}
|
|
1116
|
-
activeForTarget.add(targetLifecycle);
|
|
1117
|
-
}
|
|
1118
|
-
ownershipLifecycleController.signal.addEventListener("abort", lifecycle.onOwnerOrCallerAbort, { once: true });
|
|
1119
|
-
if (callerSignal && callerSignal !== ownershipLifecycleController.signal) {
|
|
1120
|
-
callerSignal.addEventListener("abort", lifecycle.onOwnerOrCallerAbort, {
|
|
1121
|
-
once: true,
|
|
1122
|
-
});
|
|
1123
|
-
}
|
|
1124
|
-
if (this.ratelessClosed ||
|
|
1125
|
-
ownershipLifecycleController !==
|
|
1126
|
-
this.ratelessDispatchLifecycleController ||
|
|
1127
|
-
ownershipLifecycleController.signal.aborted ||
|
|
1128
|
-
callerSignal?.aborted) {
|
|
1129
|
-
lifecycle.onOwnerOrCallerAbort();
|
|
1130
|
-
}
|
|
1122
|
+
this.ratelessDispatchRegistry.register(lifecycle, targets, (forLifecycle, target) => ({
|
|
1123
|
+
lifecycle: forLifecycle,
|
|
1124
|
+
target,
|
|
1125
|
+
controller: new AbortController(),
|
|
1126
|
+
retainedByProcess: false,
|
|
1127
|
+
responseLeases: 0,
|
|
1128
|
+
}));
|
|
1131
1129
|
return lifecycle;
|
|
1132
1130
|
}
|
|
1133
1131
|
abortRatelessDispatchTarget(targetLifecycle, reason) {
|
|
1134
|
-
|
|
1135
|
-
targetLifecycle.controller.abort(reason);
|
|
1136
|
-
}
|
|
1137
|
-
this.maybeDisposeRatelessDispatchLifecycle(targetLifecycle.lifecycle);
|
|
1132
|
+
this.ratelessDispatchRegistry.abortTarget(targetLifecycle, reason);
|
|
1138
1133
|
}
|
|
1139
1134
|
abortRatelessDispatchLifecycle(lifecycle, reason) {
|
|
1140
|
-
|
|
1141
|
-
lifecycle.controller.abort(reason);
|
|
1142
|
-
}
|
|
1143
|
-
for (const targetLifecycle of lifecycle.targets.values()) {
|
|
1144
|
-
this.abortRatelessDispatchTarget(targetLifecycle, reason);
|
|
1145
|
-
}
|
|
1146
|
-
this.maybeDisposeRatelessDispatchLifecycle(lifecycle);
|
|
1135
|
+
this.ratelessDispatchRegistry.abortLifecycle(lifecycle, reason);
|
|
1147
1136
|
}
|
|
1148
1137
|
finishRatelessDispatchLifecycle(lifecycle) {
|
|
1149
|
-
lifecycle
|
|
1150
|
-
this.maybeDisposeRatelessDispatchLifecycle(lifecycle);
|
|
1138
|
+
this.ratelessDispatchRegistry.finish(lifecycle);
|
|
1151
1139
|
}
|
|
1152
1140
|
maybeDisposeRatelessDispatchLifecycle(lifecycle) {
|
|
1153
|
-
|
|
1154
|
-
!lifecycle.dispatchFinished ||
|
|
1155
|
-
[...lifecycle.targets.values()].some((target) => target.retainedByProcess || target.responseLeases > 0)) {
|
|
1156
|
-
return;
|
|
1157
|
-
}
|
|
1158
|
-
lifecycle.disposed = true;
|
|
1159
|
-
lifecycle.ownershipLifecycleController.signal.removeEventListener("abort", lifecycle.onOwnerOrCallerAbort);
|
|
1160
|
-
if (lifecycle.callerSignal &&
|
|
1161
|
-
lifecycle.callerSignal !== lifecycle.ownershipLifecycleController.signal) {
|
|
1162
|
-
lifecycle.callerSignal.removeEventListener("abort", lifecycle.onOwnerOrCallerAbort);
|
|
1163
|
-
}
|
|
1164
|
-
for (const targetLifecycle of lifecycle.targets.values()) {
|
|
1165
|
-
const activeForTarget = this.ratelessDispatchTargets.get(targetLifecycle.target);
|
|
1166
|
-
activeForTarget?.delete(targetLifecycle);
|
|
1167
|
-
if (activeForTarget?.size === 0) {
|
|
1168
|
-
this.ratelessDispatchTargets.delete(targetLifecycle.target);
|
|
1169
|
-
}
|
|
1170
|
-
}
|
|
1141
|
+
this.ratelessDispatchRegistry.maybeDispose(lifecycle);
|
|
1171
1142
|
}
|
|
1172
1143
|
isRatelessDispatchLifecycleActive(lifecycle, target) {
|
|
1173
|
-
|
|
1174
|
-
lifecycle.disposed ||
|
|
1175
|
-
lifecycle.ownershipLifecycleController !==
|
|
1176
|
-
this.ratelessDispatchLifecycleController ||
|
|
1177
|
-
lifecycle.ownershipLifecycleController.signal.aborted ||
|
|
1178
|
-
lifecycle.callerSignal?.aborted ||
|
|
1179
|
-
lifecycle.controller.signal.aborted) {
|
|
1180
|
-
return false;
|
|
1181
|
-
}
|
|
1182
|
-
if (target === undefined) {
|
|
1183
|
-
return true;
|
|
1184
|
-
}
|
|
1185
|
-
const targetLifecycle = lifecycle.targets.get(target);
|
|
1186
|
-
return (targetLifecycle !== undefined &&
|
|
1187
|
-
!targetLifecycle.controller.signal.aborted &&
|
|
1188
|
-
this.ratelessDispatchTargets.get(target)?.has(targetLifecycle) === true);
|
|
1144
|
+
return this.ratelessDispatchRegistry.isLifecycleActive(lifecycle, target);
|
|
1189
1145
|
}
|
|
1190
1146
|
getIncomingSyncProcessKey(sender, syncId) {
|
|
1191
1147
|
return `${sender.length}:${sender}${syncId}`;
|
|
1192
1148
|
}
|
|
1193
1149
|
isIncomingSyncGenerationActive(ownershipLifecycleController) {
|
|
1194
|
-
return (
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1150
|
+
return isOwnershipGenerationActive({
|
|
1151
|
+
closed: this.ratelessClosed,
|
|
1152
|
+
ownershipLifecycleController,
|
|
1153
|
+
currentOwnershipLifecycleController: this.ratelessDispatchLifecycleController,
|
|
1154
|
+
});
|
|
1198
1155
|
}
|
|
1199
1156
|
isIncomingSyncProcessActive(process) {
|
|
1200
1157
|
return (this.isIncomingSyncGenerationActive(process.ownershipLifecycleController) &&
|
|
@@ -1806,37 +1763,72 @@ export class RatelessIBLTSynchronizer {
|
|
|
1806
1763
|
}
|
|
1807
1764
|
const targetLifecycle = process.targetLifecycle;
|
|
1808
1765
|
targetLifecycle.responseLeases += 1;
|
|
1766
|
+
const slotRow = this.getOrCreateRatelessResponseSlotRow(target);
|
|
1767
|
+
slotRow.active += 1;
|
|
1809
1768
|
this.activeRatelessResponseCount += 1;
|
|
1810
1769
|
this.activeRatelessResponseCountByPeer.set(target, (this.activeRatelessResponseCountByPeer.get(target) ?? 0) + 1);
|
|
1811
|
-
let
|
|
1770
|
+
let logicalReleased = false;
|
|
1771
|
+
let physicalReleased = false;
|
|
1772
|
+
const releaseLogical = () => {
|
|
1773
|
+
if (logicalReleased) {
|
|
1774
|
+
return;
|
|
1775
|
+
}
|
|
1776
|
+
logicalReleased = true;
|
|
1777
|
+
slotRow.activeReleases.delete(releaseLogical);
|
|
1778
|
+
targetLifecycle.responseLeases -= 1;
|
|
1779
|
+
this.maybeDisposeRatelessDispatchLifecycle(targetLifecycle.lifecycle);
|
|
1780
|
+
};
|
|
1781
|
+
slotRow.activeReleases.add(releaseLogical);
|
|
1812
1782
|
return {
|
|
1813
1783
|
process,
|
|
1814
1784
|
authorized,
|
|
1815
1785
|
remaining,
|
|
1816
1786
|
signal: targetLifecycle.controller.signal,
|
|
1817
1787
|
release: (options) => {
|
|
1818
|
-
if (
|
|
1788
|
+
if (physicalReleased) {
|
|
1819
1789
|
return;
|
|
1820
1790
|
}
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
process.consumedResponseHashes.delete(hash);
|
|
1825
|
-
}
|
|
1826
|
-
}
|
|
1827
|
-
targetLifecycle.responseLeases -= 1;
|
|
1828
|
-
this.activeRatelessResponseCount -= 1;
|
|
1829
|
-
const activeForPeer = (this.activeRatelessResponseCountByPeer.get(target) ?? 1) - 1;
|
|
1830
|
-
if (activeForPeer === 0) {
|
|
1831
|
-
this.activeRatelessResponseCountByPeer.delete(target);
|
|
1791
|
+
physicalReleased = true;
|
|
1792
|
+
try {
|
|
1793
|
+
releaseLogical();
|
|
1832
1794
|
}
|
|
1833
|
-
|
|
1834
|
-
|
|
1795
|
+
finally {
|
|
1796
|
+
if (options?.rollback) {
|
|
1797
|
+
for (const hash of authorized) {
|
|
1798
|
+
process.consumedResponseHashes.delete(hash);
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
this.activeRatelessResponseCount -= 1;
|
|
1802
|
+
slotRow.active -= 1;
|
|
1803
|
+
if (slotRow.attached) {
|
|
1804
|
+
const activeForPeer = (this.activeRatelessResponseCountByPeer.get(target) ?? 1) - 1;
|
|
1805
|
+
if (activeForPeer === 0) {
|
|
1806
|
+
this.activeRatelessResponseCountByPeer.delete(target);
|
|
1807
|
+
}
|
|
1808
|
+
else {
|
|
1809
|
+
this.activeRatelessResponseCountByPeer.set(target, activeForPeer);
|
|
1810
|
+
}
|
|
1811
|
+
this.ratelessPeerSlotRows.maybeDropIdle(slotRow);
|
|
1812
|
+
}
|
|
1835
1813
|
}
|
|
1836
|
-
this.maybeDisposeRatelessDispatchLifecycle(targetLifecycle.lifecycle);
|
|
1837
1814
|
},
|
|
1838
1815
|
};
|
|
1839
1816
|
}
|
|
1817
|
+
getOrCreateRatelessResponseSlotRow(peer) {
|
|
1818
|
+
return this.ratelessPeerSlotRows.ensure(peer);
|
|
1819
|
+
}
|
|
1820
|
+
detachRatelessResponseSlotRow(peer) {
|
|
1821
|
+
const row = this.ratelessPeerSlotRows.detach(peer);
|
|
1822
|
+
if (!row) {
|
|
1823
|
+
return;
|
|
1824
|
+
}
|
|
1825
|
+
this.activeRatelessResponseCountByPeer.delete(peer);
|
|
1826
|
+
// Release logical lifecycle ownership immediately. Each underlying
|
|
1827
|
+
// shipment retains its global physical-work permit until its own finally.
|
|
1828
|
+
for (const releaseLogical of [...row.activeReleases]) {
|
|
1829
|
+
releaseLogical();
|
|
1830
|
+
}
|
|
1831
|
+
}
|
|
1840
1832
|
async onMessage(message, context) {
|
|
1841
1833
|
const profile = this.properties.sync?.profile;
|
|
1842
1834
|
if (message instanceof StartSync) {
|
|
@@ -2628,10 +2620,14 @@ export class RatelessIBLTSynchronizer {
|
|
|
2628
2620
|
}
|
|
2629
2621
|
}
|
|
2630
2622
|
for (const targetLifecycle of [
|
|
2631
|
-
...(this.
|
|
2623
|
+
...(this.ratelessDispatchRegistry.activeTargets.get(target) ?? []),
|
|
2632
2624
|
]) {
|
|
2633
2625
|
this.abortRatelessDispatchTarget(targetLifecycle, new Error("rateless sync target disconnected"));
|
|
2634
2626
|
}
|
|
2627
|
+
// A response ship for this peer may never settle. Detach current-generation
|
|
2628
|
+
// quota and logical ownership, but keep its global physical permit charged
|
|
2629
|
+
// until settlement. open() likewise preserves physical accounting.
|
|
2630
|
+
this.detachRatelessResponseSlotRow(target);
|
|
2635
2631
|
return this.simple.onPeerDisconnected(target);
|
|
2636
2632
|
}
|
|
2637
2633
|
open() {
|