@livestore/common 0.3.1-dev.0 → 0.3.2-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +35 -0
  3. package/dist/ClientSessionLeaderThreadProxy.d.ts.map +1 -0
  4. package/dist/ClientSessionLeaderThreadProxy.js +6 -0
  5. package/dist/ClientSessionLeaderThreadProxy.js.map +1 -0
  6. package/dist/adapter-types.d.ts +10 -156
  7. package/dist/adapter-types.d.ts.map +1 -1
  8. package/dist/adapter-types.js +5 -49
  9. package/dist/adapter-types.js.map +1 -1
  10. package/dist/defs.d.ts +20 -0
  11. package/dist/defs.d.ts.map +1 -0
  12. package/dist/defs.js +12 -0
  13. package/dist/defs.js.map +1 -0
  14. package/dist/devtools/devtools-messages-client-session.d.ts +23 -21
  15. package/dist/devtools/devtools-messages-client-session.d.ts.map +1 -1
  16. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  17. package/dist/devtools/devtools-messages-leader.d.ts +26 -24
  18. package/dist/devtools/devtools-messages-leader.d.ts.map +1 -1
  19. package/dist/errors.d.ts +50 -0
  20. package/dist/errors.d.ts.map +1 -0
  21. package/dist/errors.js +36 -0
  22. package/dist/errors.js.map +1 -0
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/leader-thread/LeaderSyncProcessor.d.ts +6 -7
  28. package/dist/leader-thread/LeaderSyncProcessor.d.ts.map +1 -1
  29. package/dist/leader-thread/LeaderSyncProcessor.js +122 -123
  30. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  31. package/dist/leader-thread/eventlog.d.ts +17 -6
  32. package/dist/leader-thread/eventlog.d.ts.map +1 -1
  33. package/dist/leader-thread/eventlog.js +34 -17
  34. package/dist/leader-thread/eventlog.js.map +1 -1
  35. package/dist/leader-thread/leader-worker-devtools.d.ts.map +1 -1
  36. package/dist/leader-thread/leader-worker-devtools.js +1 -2
  37. package/dist/leader-thread/leader-worker-devtools.js.map +1 -1
  38. package/dist/leader-thread/make-leader-thread-layer.d.ts.map +1 -1
  39. package/dist/leader-thread/make-leader-thread-layer.js +37 -7
  40. package/dist/leader-thread/make-leader-thread-layer.js.map +1 -1
  41. package/dist/leader-thread/materialize-event.d.ts +3 -3
  42. package/dist/leader-thread/materialize-event.d.ts.map +1 -1
  43. package/dist/leader-thread/materialize-event.js +27 -10
  44. package/dist/leader-thread/materialize-event.js.map +1 -1
  45. package/dist/leader-thread/mod.d.ts +2 -0
  46. package/dist/leader-thread/mod.d.ts.map +1 -1
  47. package/dist/leader-thread/mod.js +2 -0
  48. package/dist/leader-thread/mod.js.map +1 -1
  49. package/dist/leader-thread/recreate-db.d.ts +13 -6
  50. package/dist/leader-thread/recreate-db.d.ts.map +1 -1
  51. package/dist/leader-thread/recreate-db.js +1 -3
  52. package/dist/leader-thread/recreate-db.js.map +1 -1
  53. package/dist/leader-thread/types.d.ts +6 -7
  54. package/dist/leader-thread/types.d.ts.map +1 -1
  55. package/dist/make-client-session.d.ts +1 -1
  56. package/dist/make-client-session.d.ts.map +1 -1
  57. package/dist/make-client-session.js +1 -1
  58. package/dist/make-client-session.js.map +1 -1
  59. package/dist/materializer-helper.d.ts +13 -2
  60. package/dist/materializer-helper.d.ts.map +1 -1
  61. package/dist/materializer-helper.js +25 -11
  62. package/dist/materializer-helper.js.map +1 -1
  63. package/dist/rematerialize-from-eventlog.d.ts +1 -1
  64. package/dist/rematerialize-from-eventlog.d.ts.map +1 -1
  65. package/dist/rematerialize-from-eventlog.js +12 -4
  66. package/dist/rematerialize-from-eventlog.js.map +1 -1
  67. package/dist/schema/EventDef.d.ts +8 -3
  68. package/dist/schema/EventDef.d.ts.map +1 -1
  69. package/dist/schema/EventDef.js +5 -2
  70. package/dist/schema/EventDef.js.map +1 -1
  71. package/dist/schema/EventSequenceNumber.d.ts +20 -2
  72. package/dist/schema/EventSequenceNumber.d.ts.map +1 -1
  73. package/dist/schema/EventSequenceNumber.js +71 -19
  74. package/dist/schema/EventSequenceNumber.js.map +1 -1
  75. package/dist/schema/EventSequenceNumber.test.js +88 -3
  76. package/dist/schema/EventSequenceNumber.test.js.map +1 -1
  77. package/dist/schema/LiveStoreEvent.d.ts +56 -8
  78. package/dist/schema/LiveStoreEvent.d.ts.map +1 -1
  79. package/dist/schema/LiveStoreEvent.js +34 -8
  80. package/dist/schema/LiveStoreEvent.js.map +1 -1
  81. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js +2 -2
  82. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.js.map +1 -1
  83. package/dist/schema/state/sqlite/db-schema/hash.js +3 -1
  84. package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -1
  85. package/dist/schema/state/sqlite/mod.d.ts +1 -1
  86. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  87. package/dist/schema/state/sqlite/query-builder/api.d.ts +36 -9
  88. package/dist/schema/state/sqlite/query-builder/api.d.ts.map +1 -1
  89. package/dist/schema/state/sqlite/query-builder/api.js.map +1 -1
  90. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  91. package/dist/schema/state/sqlite/query-builder/impl.js +16 -11
  92. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  93. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts +1 -86
  94. package/dist/schema/state/sqlite/query-builder/impl.test.d.ts.map +1 -1
  95. package/dist/schema/state/sqlite/query-builder/impl.test.js +34 -20
  96. package/dist/schema/state/sqlite/query-builder/impl.test.js.map +1 -1
  97. package/dist/schema/state/sqlite/system-tables.d.ts +380 -432
  98. package/dist/schema/state/sqlite/system-tables.d.ts.map +1 -1
  99. package/dist/schema/state/sqlite/system-tables.js +8 -17
  100. package/dist/schema/state/sqlite/system-tables.js.map +1 -1
  101. package/dist/schema/state/sqlite/table-def.d.ts +2 -2
  102. package/dist/schema/state/sqlite/table-def.d.ts.map +1 -1
  103. package/dist/schema-management/migrations.d.ts +3 -1
  104. package/dist/schema-management/migrations.d.ts.map +1 -1
  105. package/dist/schema-management/migrations.js.map +1 -1
  106. package/dist/sql-queries/sql-queries.d.ts.map +1 -1
  107. package/dist/sql-queries/sql-queries.js +2 -0
  108. package/dist/sql-queries/sql-queries.js.map +1 -1
  109. package/dist/sqlite-db-helper.d.ts +7 -0
  110. package/dist/sqlite-db-helper.d.ts.map +1 -0
  111. package/dist/sqlite-db-helper.js +29 -0
  112. package/dist/sqlite-db-helper.js.map +1 -0
  113. package/dist/sqlite-types.d.ts +72 -0
  114. package/dist/sqlite-types.d.ts.map +1 -0
  115. package/dist/sqlite-types.js +5 -0
  116. package/dist/sqlite-types.js.map +1 -0
  117. package/dist/sync/ClientSessionSyncProcessor.d.ts +12 -3
  118. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  119. package/dist/sync/ClientSessionSyncProcessor.js +37 -19
  120. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  121. package/dist/sync/next/graphology.d.ts.map +1 -1
  122. package/dist/sync/next/graphology.js +0 -6
  123. package/dist/sync/next/graphology.js.map +1 -1
  124. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  125. package/dist/sync/next/rebase-events.js +1 -0
  126. package/dist/sync/next/rebase-events.js.map +1 -1
  127. package/dist/sync/next/test/compact-events.test.js +1 -1
  128. package/dist/sync/next/test/compact-events.test.js.map +1 -1
  129. package/dist/sync/next/test/event-fixtures.d.ts.map +1 -1
  130. package/dist/sync/next/test/event-fixtures.js +12 -3
  131. package/dist/sync/next/test/event-fixtures.js.map +1 -1
  132. package/dist/sync/sync.d.ts +2 -0
  133. package/dist/sync/sync.d.ts.map +1 -1
  134. package/dist/sync/sync.js +3 -0
  135. package/dist/sync/sync.js.map +1 -1
  136. package/dist/sync/syncstate.d.ts +13 -4
  137. package/dist/sync/syncstate.d.ts.map +1 -1
  138. package/dist/sync/syncstate.js +23 -10
  139. package/dist/sync/syncstate.js.map +1 -1
  140. package/dist/sync/syncstate.test.js +17 -17
  141. package/dist/sync/syncstate.test.js.map +1 -1
  142. package/dist/version.d.ts +1 -1
  143. package/dist/version.js +1 -1
  144. package/package.json +7 -6
  145. package/src/ClientSessionLeaderThreadProxy.ts +40 -0
  146. package/src/adapter-types.ts +19 -161
  147. package/src/defs.ts +17 -0
  148. package/src/errors.ts +49 -0
  149. package/src/index.ts +1 -0
  150. package/src/leader-thread/LeaderSyncProcessor.ts +157 -181
  151. package/src/leader-thread/eventlog.ts +78 -54
  152. package/src/leader-thread/leader-worker-devtools.ts +1 -2
  153. package/src/leader-thread/make-leader-thread-layer.ts +52 -8
  154. package/src/leader-thread/materialize-event.ts +33 -12
  155. package/src/leader-thread/mod.ts +2 -0
  156. package/src/leader-thread/recreate-db.ts +99 -91
  157. package/src/leader-thread/types.ts +10 -12
  158. package/src/make-client-session.ts +2 -2
  159. package/src/materializer-helper.ts +45 -19
  160. package/src/rematerialize-from-eventlog.ts +12 -4
  161. package/src/schema/EventDef.ts +16 -4
  162. package/src/schema/EventSequenceNumber.test.ts +120 -3
  163. package/src/schema/EventSequenceNumber.ts +95 -23
  164. package/src/schema/LiveStoreEvent.ts +49 -8
  165. package/src/schema/state/sqlite/db-schema/dsl/field-defs.ts +2 -2
  166. package/src/schema/state/sqlite/db-schema/hash.ts +3 -3
  167. package/src/schema/state/sqlite/mod.ts +1 -1
  168. package/src/schema/state/sqlite/query-builder/api.ts +39 -9
  169. package/src/schema/state/sqlite/query-builder/impl.test.ts +60 -20
  170. package/src/schema/state/sqlite/query-builder/impl.ts +15 -12
  171. package/src/schema/state/sqlite/system-tables.ts +9 -22
  172. package/src/schema/state/sqlite/table-def.ts +2 -2
  173. package/src/schema-management/migrations.ts +3 -1
  174. package/src/sql-queries/sql-queries.ts +2 -0
  175. package/src/sqlite-db-helper.ts +41 -0
  176. package/src/sqlite-types.ts +76 -0
  177. package/src/sync/ClientSessionSyncProcessor.ts +51 -28
  178. package/src/sync/next/graphology.ts +0 -6
  179. package/src/sync/next/rebase-events.ts +1 -0
  180. package/src/sync/next/test/compact-events.test.ts +1 -1
  181. package/src/sync/next/test/event-fixtures.ts +12 -3
  182. package/src/sync/sync.ts +3 -0
  183. package/src/sync/syncstate.test.ts +17 -17
  184. package/src/sync/syncstate.ts +31 -10
  185. package/src/version.ts +1 -1
@@ -1,6 +1,7 @@
1
1
  import { casesHandled, isNotUndefined, LS_DEV, shouldNeverHappen, TRACE_VERBOSE } from '@livestore/utils';
2
- import { BucketQueue, Deferred, Effect, Exit, FiberHandle, OtelTracer, Queue, ReadonlyArray, Stream, Subscribable, SubscriptionRef, } from '@livestore/utils/effect';
3
- import { UnexpectedError } from '../adapter-types.js';
2
+ import { BucketQueue, Deferred, Effect, Exit, FiberHandle, Option, OtelTracer, pipe, Queue, ReadonlyArray, Stream, Subscribable, SubscriptionRef, } from '@livestore/utils/effect';
3
+ import { SyncError, UnexpectedError } from '../adapter-types.js';
4
+ import { makeMaterializerHash } from '../materializer-helper.js';
4
5
  import { EventSequenceNumber, getEventDef, LiveStoreEvent, SystemTables } from '../schema/mod.js';
5
6
  import { LeaderAheadError } from '../sync/sync.js';
6
7
  import * as SyncState from '../sync/syncstate.js';
@@ -30,14 +31,15 @@ import { LeaderThreadCtx } from './types.js';
30
31
  * - The latch closes on pull receipt and re-opens post-pull completion.
31
32
  * - Processes up to `maxBatchSize` events per cycle.
32
33
  *
33
- * Currently we're advancing the db read model and eventlog in lockstep, but we could also decouple this in the future
34
+ * Currently we're advancing the state db and eventlog in lockstep, but we could also decouple this in the future
34
35
  *
35
36
  * Tricky concurrency scenarios:
36
37
  * - Queued local push batches becoming invalid due to a prior local push item being rejected.
37
38
  * Solution: Introduce a generation number for local push batches which is used to filter out old batches items in case of rejection.
38
39
  *
40
+ * See ClientSessionSyncProcessor for how the leader and session sync processors are similar/different.
39
41
  */
40
- export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog, dbState, dbStateMissing, initialBlockingSyncContext, onError, params, testing, }) => Effect.gen(function* () {
42
+ export const makeLeaderSyncProcessor = ({ schema, dbState, initialBlockingSyncContext, initialSyncState, onError, params, testing, }) => Effect.gen(function* () {
41
43
  const syncBackendPushQueue = yield* BucketQueue.make();
42
44
  const localPushBatchSize = params.localPushBatchSize ?? 10;
43
45
  const backendPushBatchSize = params.backendPushBatchSize ?? 50;
@@ -47,15 +49,6 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
47
49
  return eventDef.options.clientOnly;
48
50
  };
49
51
  const connectedClientSessionPullQueues = yield* makePullQueueSet;
50
- /**
51
- * Tracks generations of queued local push events.
52
- * If a local-push batch is rejected, all subsequent push queue items with the same generation are also rejected,
53
- * even if they would be valid on their own.
54
- */
55
- // TODO get rid of this in favour of the `mergeGeneration` event sequence number field
56
- const currentLocalPushGenerationRef = { current: 0 };
57
- const mergeCounterRef = { current: dbStateMissing ? 0 : yield* getMergeCounterFromDb(dbState) };
58
- const mergePayloads = new Map();
59
52
  // This context depends on data from `boot`, we should find a better implementation to avoid this ref indirection.
60
53
  const ctxRef = {
61
54
  current: undefined,
@@ -70,7 +63,7 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
70
63
  * - leader sync processor takes a bit and hasn't yet taken e1 from the localPushesQueue
71
64
  * - client session B also pushes e1 (which should be rejected)
72
65
  *
73
- * Thus the purpoe of the pushHeadRef is the guard the integrity of the local push queue
66
+ * Thus the purpose of the pushHeadRef is the guard the integrity of the local push queue
74
67
  */
75
68
  const pushHeadRef = { current: EventSequenceNumber.ROOT };
76
69
  const advancePushHead = (eventNum) => {
@@ -80,18 +73,18 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
80
73
  const push = (newEvents, options) => Effect.gen(function* () {
81
74
  if (newEvents.length === 0)
82
75
  return;
76
+ // console.debug('push', newEvents)
83
77
  yield* validatePushBatch(newEvents, pushHeadRef.current);
84
78
  advancePushHead(newEvents.at(-1).seqNum);
85
79
  const waitForProcessing = options?.waitForProcessing ?? false;
86
- const generation = currentLocalPushGenerationRef.current;
87
80
  if (waitForProcessing) {
88
81
  const deferreds = yield* Effect.forEach(newEvents, () => Deferred.make());
89
- const items = newEvents.map((eventEncoded, i) => [eventEncoded, deferreds[i], generation]);
82
+ const items = newEvents.map((eventEncoded, i) => [eventEncoded, deferreds[i]]);
90
83
  yield* BucketQueue.offerAll(localPushesQueue, items);
91
84
  yield* Effect.all(deferreds);
92
85
  }
93
86
  else {
94
- const items = newEvents.map((eventEncoded) => [eventEncoded, undefined, generation]);
87
+ const items = newEvents.map((eventEncoded) => [eventEncoded, undefined]);
95
88
  yield* BucketQueue.offerAll(localPushesQueue, items);
96
89
  }
97
90
  }).pipe(Effect.withSpan('@livestore/common:LeaderSyncProcessor:push', {
@@ -111,7 +104,7 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
111
104
  args,
112
105
  clientId,
113
106
  sessionId,
114
- ...EventSequenceNumber.nextPair(syncState.localHead, eventDef.options.clientOnly),
107
+ ...EventSequenceNumber.nextPair({ seqNum: syncState.localHead, isClient: eventDef.options.clientOnly }),
115
108
  });
116
109
  yield* push([eventEncoded]);
117
110
  }).pipe(Effect.catchTag('LeaderAheadError', Effect.orDie));
@@ -127,26 +120,11 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
127
120
  devtoolsLatch: devtools.enabled ? devtools.syncBackendLatch : undefined,
128
121
  runtime,
129
122
  };
130
- const initialLocalHead = dbEventlogMissing ? EventSequenceNumber.ROOT : Eventlog.getClientHeadFromDb(dbEventlog);
131
- const initialBackendHead = dbEventlogMissing
132
- ? EventSequenceNumber.ROOT.global
133
- : Eventlog.getBackendHeadFromDb(dbEventlog);
134
- if (initialBackendHead > initialLocalHead.global) {
135
- return shouldNeverHappen(`During boot the backend head (${initialBackendHead}) should never be greater than the local head (${initialLocalHead.global})`);
136
- }
137
- const pendingEvents = dbEventlogMissing
138
- ? []
139
- : yield* Eventlog.getEventsSince({ global: initialBackendHead, client: EventSequenceNumber.clientDefault });
140
- const initialSyncState = new SyncState.SyncState({
141
- pending: pendingEvents,
142
- upstreamHead: { global: initialBackendHead, client: EventSequenceNumber.clientDefault },
143
- localHead: initialLocalHead,
144
- });
145
123
  /** State transitions need to happen atomically, so we use a Ref to track the state */
146
124
  yield* SubscriptionRef.set(syncStateSref, initialSyncState);
147
125
  // Rehydrate sync queue
148
- if (pendingEvents.length > 0) {
149
- const globalPendingEvents = pendingEvents
126
+ if (initialSyncState.pending.length > 0) {
127
+ const globalPendingEvents = initialSyncState.pending
150
128
  // Don't sync clientOnly events
151
129
  .filter((eventEncoded) => {
152
130
  const { eventDef } = getEventDef(schema, eventEncoded.name);
@@ -171,10 +149,7 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
171
149
  schema,
172
150
  isClientEvent,
173
151
  otelSpan,
174
- currentLocalPushGenerationRef,
175
152
  connectedClientSessionPullQueues,
176
- mergeCounterRef,
177
- mergePayloads,
178
153
  localPushBatchSize,
179
154
  testing: {
180
155
  delay: testing?.delays?.localPushProcessing,
@@ -189,7 +164,7 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
189
164
  }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(shutdownOnError));
190
165
  yield* FiberHandle.run(backendPushingFiberHandle, backendPushingEffect);
191
166
  yield* backgroundBackendPulling({
192
- initialBackendHead,
167
+ initialBackendHead: initialSyncState.upstreamHead.global,
193
168
  isClientEvent,
194
169
  restartBackendPushing: (filteredRebasedPending) => Effect.gen(function* () {
195
170
  // Stop current pushing fiber
@@ -203,45 +178,36 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
203
178
  syncStateSref,
204
179
  localPushesLatch,
205
180
  pullLatch,
181
+ dbState,
206
182
  otelSpan,
207
183
  initialBlockingSyncContext,
208
184
  devtoolsLatch: ctxRef.current?.devtoolsLatch,
209
185
  connectedClientSessionPullQueues,
210
- mergeCounterRef,
211
- mergePayloads,
212
186
  advancePushHead,
213
187
  }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(shutdownOnError), Effect.forkScoped);
214
- return { initialLeaderHead: initialLocalHead };
188
+ return { initialLeaderHead: initialSyncState.localHead };
215
189
  }).pipe(Effect.withSpanScoped('@livestore/common:LeaderSyncProcessor:boot'));
216
190
  const pull = ({ cursor }) => Effect.gen(function* () {
217
191
  const queue = yield* pullQueue({ cursor });
218
192
  return Stream.fromQueue(queue);
219
193
  }).pipe(Stream.unwrapScoped);
194
+ /*
195
+ Notes for a potential new `LeaderSyncProcessor.pull` implementation:
196
+
197
+ - Doesn't take cursor but is "atomically called" in the leader during the snapshot phase
198
+ - TODO: how is this done "atomically" in the web adapter where the snapshot is read optimistically?
199
+ - Would require a new kind of "boot-phase" API which is stream based:
200
+ - initial message: state snapshot + seq num head
201
+ - subsequent messages: sync state payloads
202
+
203
+ - alternative: instead of session pulling sync state payloads from leader, we could send
204
+ - events in the "advance" case
205
+ - full new state db snapshot in the "rebase" case
206
+ - downside: importing the snapshot is expensive
207
+ */
220
208
  const pullQueue = ({ cursor }) => {
221
209
  const runtime = ctxRef.current?.runtime ?? shouldNeverHappen('Not initialized');
222
- return Effect.gen(function* () {
223
- const queue = yield* connectedClientSessionPullQueues.makeQueue;
224
- const payloadsSinceCursor = Array.from(mergePayloads.entries())
225
- .map(([mergeCounter, payload]) => ({ payload, mergeCounter }))
226
- .filter(({ mergeCounter }) => mergeCounter > cursor.mergeCounter)
227
- .toSorted((a, b) => a.mergeCounter - b.mergeCounter)
228
- .map(({ payload, mergeCounter }) => {
229
- if (payload._tag === 'upstream-advance') {
230
- return {
231
- payload: {
232
- _tag: 'upstream-advance',
233
- newEvents: ReadonlyArray.dropWhile(payload.newEvents, (eventEncoded) => EventSequenceNumber.isGreaterThanOrEqual(cursor.eventNum, eventEncoded.seqNum)),
234
- },
235
- mergeCounter,
236
- };
237
- }
238
- else {
239
- return { payload, mergeCounter };
240
- }
241
- });
242
- yield* queue.offerAll(payloadsSinceCursor);
243
- return queue;
244
- }).pipe(Effect.provide(runtime));
210
+ return connectedClientSessionPullQueues.makeQueue(cursor).pipe(Effect.provide(runtime));
245
211
  };
246
212
  const syncState = Subscribable.make({
247
213
  get: Effect.gen(function* () {
@@ -259,10 +225,9 @@ export const makeLeaderSyncProcessor = ({ schema, dbEventlogMissing, dbEventlog,
259
225
  pushPartial,
260
226
  boot,
261
227
  syncState,
262
- getMergeCounter: () => mergeCounterRef.current,
263
228
  };
264
229
  });
265
- const backgroundApplyLocalPushes = ({ localPushesLatch, localPushesQueue, pullLatch, syncStateSref, syncBackendPushQueue, schema, isClientEvent, otelSpan, currentLocalPushGenerationRef, connectedClientSessionPullQueues, mergeCounterRef, mergePayloads, localPushBatchSize, testing, }) => Effect.gen(function* () {
230
+ const backgroundApplyLocalPushes = ({ localPushesLatch, localPushesQueue, pullLatch, syncStateSref, syncBackendPushQueue, schema, isClientEvent, otelSpan, connectedClientSessionPullQueues, localPushBatchSize, testing, }) => Effect.gen(function* () {
266
231
  while (true) {
267
232
  if (testing.delay !== undefined) {
268
233
  yield* testing.delay.pipe(Effect.withSpan('localPushProcessingDelay'));
@@ -272,66 +237,59 @@ const backgroundApplyLocalPushes = ({ localPushesLatch, localPushesQueue, pullLa
272
237
  yield* localPushesLatch.await;
273
238
  // Prevent backend pull processing until this local push is finished
274
239
  yield* pullLatch.close;
275
- // Since the generation might have changed since enqueuing, we need to filter out items with older generation
240
+ const syncState = yield* syncStateSref;
241
+ if (syncState === undefined)
242
+ return shouldNeverHappen('Not initialized');
243
+ const currentRebaseGeneration = syncState.localHead.rebaseGeneration;
244
+ // Since the rebase generation might have changed since enqueuing, we need to filter out items with older generation
276
245
  // It's important that we filter after we got localPushesLatch, otherwise we might filter with the old generation
277
- const filteredBatchItems = batchItems
278
- .filter(([_1, _2, generation]) => generation === currentLocalPushGenerationRef.current)
279
- .map(([eventEncoded, deferred]) => [eventEncoded, deferred]);
280
- if (filteredBatchItems.length === 0) {
246
+ const [newEvents, deferreds] = pipe(batchItems, ReadonlyArray.filter(([eventEncoded]) => eventEncoded.seqNum.rebaseGeneration === currentRebaseGeneration), ReadonlyArray.unzip);
247
+ if (newEvents.length === 0) {
281
248
  // console.log('dropping old-gen batch', currentLocalPushGenerationRef.current)
282
249
  // Allow the backend pulling to start
283
250
  yield* pullLatch.open;
284
251
  continue;
285
252
  }
286
- const [newEvents, deferreds] = ReadonlyArray.unzip(filteredBatchItems);
287
- const syncState = yield* syncStateSref;
288
- if (syncState === undefined)
289
- return shouldNeverHappen('Not initialized');
290
253
  const mergeResult = SyncState.merge({
291
254
  syncState,
292
255
  payload: { _tag: 'local-push', newEvents },
293
256
  isClientEvent,
294
257
  isEqualEvent: LiveStoreEvent.isEqualEncoded,
295
258
  });
296
- const mergeCounter = yield* incrementMergeCounter(mergeCounterRef);
297
259
  switch (mergeResult._tag) {
298
260
  case 'unexpected-error': {
299
- otelSpan?.addEvent(`[${mergeCounter}]:push:unexpected-error`, {
261
+ otelSpan?.addEvent(`push:unexpected-error`, {
300
262
  batchSize: newEvents.length,
301
263
  newEvents: TRACE_VERBOSE ? JSON.stringify(newEvents) : undefined,
302
264
  });
303
- return yield* Effect.fail(mergeResult.cause);
265
+ return yield* new SyncError({ cause: mergeResult.message });
304
266
  }
305
267
  case 'rebase': {
306
268
  return shouldNeverHappen('The leader thread should never have to rebase due to a local push');
307
269
  }
308
270
  case 'reject': {
309
- otelSpan?.addEvent(`[${mergeCounter}]:push:reject`, {
271
+ otelSpan?.addEvent(`push:reject`, {
310
272
  batchSize: newEvents.length,
311
273
  mergeResult: TRACE_VERBOSE ? JSON.stringify(mergeResult) : undefined,
312
274
  });
313
275
  // TODO: how to test this?
314
- currentLocalPushGenerationRef.current++;
315
- const nextGeneration = currentLocalPushGenerationRef.current;
276
+ const nextRebaseGeneration = currentRebaseGeneration + 1;
316
277
  const providedNum = newEvents.at(0).seqNum;
317
278
  // All subsequent pushes with same generation should be rejected as well
318
279
  // We're also handling the case where the localPushQueue already contains events
319
280
  // from the next generation which we preserve in the queue
320
- const remainingEventsMatchingGeneration = yield* BucketQueue.takeSplitWhere(localPushesQueue, (item) => item[2] >= nextGeneration);
281
+ const remainingEventsMatchingGeneration = yield* BucketQueue.takeSplitWhere(localPushesQueue, ([eventEncoded]) => eventEncoded.seqNum.rebaseGeneration >= nextRebaseGeneration);
321
282
  // TODO we still need to better understand and handle this scenario
322
283
  if (LS_DEV && (yield* BucketQueue.size(localPushesQueue)) > 0) {
323
284
  console.log('localPushesQueue is not empty', yield* BucketQueue.size(localPushesQueue));
285
+ // biome-ignore lint/suspicious/noDebugger: debugging
324
286
  debugger;
325
287
  }
326
288
  const allDeferredsToReject = [
327
289
  ...deferreds,
328
290
  ...remainingEventsMatchingGeneration.map(([_, deferred]) => deferred),
329
291
  ].filter(isNotUndefined);
330
- yield* Effect.forEach(allDeferredsToReject, (deferred) => Deferred.fail(deferred, LeaderAheadError.make({
331
- minimumExpectedNum: mergeResult.expectedMinimumId,
332
- providedNum,
333
- // nextGeneration,
334
- })));
292
+ yield* Effect.forEach(allDeferredsToReject, (deferred) => Deferred.fail(deferred, LeaderAheadError.make({ minimumExpectedNum: mergeResult.expectedMinimumId, providedNum })));
335
293
  // Allow the backend pulling to start
336
294
  yield* pullLatch.open;
337
295
  // In this case we're skipping state update and down/upstream processing
@@ -348,10 +306,9 @@ const backgroundApplyLocalPushes = ({ localPushesLatch, localPushesQueue, pullLa
348
306
  yield* SubscriptionRef.set(syncStateSref, mergeResult.newSyncState);
349
307
  yield* connectedClientSessionPullQueues.offer({
350
308
  payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: mergeResult.newEvents }),
351
- mergeCounter,
309
+ leaderHead: mergeResult.newSyncState.localHead,
352
310
  });
353
- mergePayloads.set(mergeCounter, SyncState.PayloadUpstreamAdvance.make({ newEvents: mergeResult.newEvents }));
354
- otelSpan?.addEvent(`[${mergeCounter}]:push:advance`, {
311
+ otelSpan?.addEvent(`push:advance`, {
355
312
  batchSize: newEvents.length,
356
313
  mergeResult: TRACE_VERBOSE ? JSON.stringify(mergeResult) : undefined,
357
314
  });
@@ -380,8 +337,9 @@ const materializeEventsBatch = ({ batchItems, deferreds }) => Effect.gen(functio
380
337
  dbEventlog.execute('ROLLBACK', undefined);
381
338
  }));
382
339
  for (let i = 0; i < batchItems.length; i++) {
383
- const { sessionChangeset } = yield* materializeEvent(batchItems[i]);
340
+ const { sessionChangeset, hash } = yield* materializeEvent(batchItems[i]);
384
341
  batchItems[i].meta.sessionChangeset = sessionChangeset;
342
+ batchItems[i].meta.materializerHashLeader = hash;
385
343
  if (deferreds?.[i] !== undefined) {
386
344
  yield* Deferred.succeed(deferreds[i], void 0);
387
345
  }
@@ -391,7 +349,7 @@ const materializeEventsBatch = ({ batchItems, deferreds }) => Effect.gen(functio
391
349
  }).pipe(Effect.uninterruptible, Effect.scoped, Effect.withSpan('@livestore/common:LeaderSyncProcessor:materializeEventItems', {
392
350
  attributes: { batchSize: batchItems.length },
393
351
  }), Effect.tapCauseLogPretty, UnexpectedError.mapToUnexpectedError);
394
- const backgroundBackendPulling = ({ initialBackendHead, isClientEvent, restartBackendPushing, otelSpan, syncStateSref, localPushesLatch, pullLatch, devtoolsLatch, initialBlockingSyncContext, connectedClientSessionPullQueues, mergeCounterRef, mergePayloads, advancePushHead, }) => Effect.gen(function* () {
352
+ const backgroundBackendPulling = ({ initialBackendHead, isClientEvent, restartBackendPushing, otelSpan, dbState, syncStateSref, localPushesLatch, pullLatch, devtoolsLatch, initialBlockingSyncContext, connectedClientSessionPullQueues, advancePushHead, }) => Effect.gen(function* () {
395
353
  const { syncBackend, dbState: db, dbEventlog, schema } = yield* LeaderThreadCtx;
396
354
  if (syncBackend === undefined)
397
355
  return;
@@ -415,21 +373,20 @@ const backgroundBackendPulling = ({ initialBackendHead, isClientEvent, restartBa
415
373
  isEqualEvent: LiveStoreEvent.isEqualEncoded,
416
374
  ignoreClientEvents: true,
417
375
  });
418
- const mergeCounter = yield* incrementMergeCounter(mergeCounterRef);
419
376
  if (mergeResult._tag === 'reject') {
420
377
  return shouldNeverHappen('The leader thread should never reject upstream advances');
421
378
  }
422
379
  else if (mergeResult._tag === 'unexpected-error') {
423
- otelSpan?.addEvent(`[${mergeCounter}]:pull:unexpected-error`, {
380
+ otelSpan?.addEvent(`pull:unexpected-error`, {
424
381
  newEventsCount: newEvents.length,
425
382
  newEvents: TRACE_VERBOSE ? JSON.stringify(newEvents) : undefined,
426
383
  });
427
- return yield* Effect.fail(mergeResult.cause);
384
+ return yield* new SyncError({ cause: mergeResult.message });
428
385
  }
429
386
  const newBackendHead = newEvents.at(-1).seqNum;
430
387
  Eventlog.updateBackendHead(dbEventlog, newBackendHead);
431
388
  if (mergeResult._tag === 'rebase') {
432
- otelSpan?.addEvent(`[${mergeCounter}]:pull:rebase`, {
389
+ otelSpan?.addEvent(`pull:rebase[${mergeResult.newSyncState.localHead.rebaseGeneration}]`, {
433
390
  newEventsCount: newEvents.length,
434
391
  newEvents: TRACE_VERBOSE ? JSON.stringify(newEvents) : undefined,
435
392
  rollbackCount: mergeResult.rollbackEvents.length,
@@ -448,27 +405,19 @@ const backgroundBackendPulling = ({ initialBackendHead, isClientEvent, restartBa
448
405
  });
449
406
  }
450
407
  yield* connectedClientSessionPullQueues.offer({
451
- payload: SyncState.PayloadUpstreamRebase.make({
452
- newEvents: mergeResult.newEvents,
453
- rollbackEvents: mergeResult.rollbackEvents,
454
- }),
455
- mergeCounter,
408
+ payload: SyncState.payloadFromMergeResult(mergeResult),
409
+ leaderHead: mergeResult.newSyncState.localHead,
456
410
  });
457
- mergePayloads.set(mergeCounter, SyncState.PayloadUpstreamRebase.make({
458
- newEvents: mergeResult.newEvents,
459
- rollbackEvents: mergeResult.rollbackEvents,
460
- }));
461
411
  }
462
412
  else {
463
- otelSpan?.addEvent(`[${mergeCounter}]:pull:advance`, {
413
+ otelSpan?.addEvent(`pull:advance`, {
464
414
  newEventsCount: newEvents.length,
465
415
  mergeResult: TRACE_VERBOSE ? JSON.stringify(mergeResult) : undefined,
466
416
  });
467
417
  yield* connectedClientSessionPullQueues.offer({
468
- payload: SyncState.PayloadUpstreamAdvance.make({ newEvents: mergeResult.newEvents }),
469
- mergeCounter,
418
+ payload: SyncState.payloadFromMergeResult(mergeResult),
419
+ leaderHead: mergeResult.newSyncState.localHead,
470
420
  });
471
- mergePayloads.set(mergeCounter, SyncState.PayloadUpstreamAdvance.make({ newEvents: mergeResult.newEvents }));
472
421
  if (mergeResult.confirmedEvents.length > 0) {
473
422
  // `mergeResult.confirmedEvents` don't contain the correct sync metadata, so we need to use
474
423
  // `newEvents` instead which we filter via `mergeResult.confirmedEvents`
@@ -486,7 +435,8 @@ const backgroundBackendPulling = ({ initialBackendHead, isClientEvent, restartBa
486
435
  yield* localPushesLatch.open;
487
436
  }
488
437
  });
489
- const cursorInfo = yield* Eventlog.getSyncBackendCursorInfo(initialBackendHead);
438
+ const cursorInfo = yield* Eventlog.getSyncBackendCursorInfo({ remoteHead: initialBackendHead });
439
+ const hashMaterializerResult = makeMaterializerHash({ schema, dbState });
490
440
  yield* syncBackend.pull(cursorInfo).pipe(
491
441
  // TODO only take from queue while connected
492
442
  Stream.tap(({ batch, remaining }) => Effect.gen(function* () {
@@ -500,7 +450,11 @@ const backgroundBackendPulling = ({ initialBackendHead, isClientEvent, restartBa
500
450
  // (e.g. needed for simulating being offline)
501
451
  // TODO remove when there's a better way to handle this in stream above
502
452
  yield* SubscriptionRef.waitUntil(syncBackend.isConnected, (isConnected) => isConnected === true);
503
- yield* onNewPullChunk(batch.map((_) => LiveStoreEvent.EncodedWithMeta.fromGlobal(_.eventEncoded, _.metadata)), remaining);
453
+ yield* onNewPullChunk(batch.map((_) => LiveStoreEvent.EncodedWithMeta.fromGlobal(_.eventEncoded, {
454
+ syncMetadata: _.metadata,
455
+ materializerHashLeader: hashMaterializerResult(_.eventEncoded),
456
+ materializerHashSession: Option.none(),
457
+ })), remaining);
504
458
  yield* initialBlockingSyncContext.update({ processed: batch.length, remaining });
505
459
  })), Stream.runDrain, Effect.interruptible);
506
460
  }).pipe(Effect.withSpan('@livestore/common:LeaderSyncProcessor:backend-pulling'));
@@ -538,19 +492,74 @@ const trimChangesetRows = (db, newHead) => {
538
492
  };
539
493
  const makePullQueueSet = Effect.gen(function* () {
540
494
  const set = new Set();
495
+ // NOTE this could grow unbounded for long running sessions
496
+ const cachedPayloads = new Map();
541
497
  yield* Effect.addFinalizer(() => Effect.gen(function* () {
542
498
  for (const queue of set) {
543
499
  yield* Queue.shutdown(queue);
544
500
  }
545
501
  set.clear();
546
502
  }));
547
- const makeQueue = Effect.gen(function* () {
503
+ const makeQueue = (cursor) => Effect.gen(function* () {
548
504
  const queue = yield* Queue.unbounded().pipe(Effect.acquireRelease(Queue.shutdown));
549
505
  yield* Effect.addFinalizer(() => Effect.sync(() => set.delete(queue)));
506
+ const payloadsSinceCursor = Array.from(cachedPayloads.entries())
507
+ .flatMap(([seqNumStr, payloads]) => payloads.map((payload) => ({ payload, seqNum: EventSequenceNumber.fromString(seqNumStr) })))
508
+ .filter(({ seqNum }) => EventSequenceNumber.isGreaterThan(seqNum, cursor))
509
+ .toSorted((a, b) => EventSequenceNumber.compare(a.seqNum, b.seqNum))
510
+ .map(({ payload }) => {
511
+ if (payload._tag === 'upstream-advance') {
512
+ return {
513
+ payload: {
514
+ _tag: 'upstream-advance',
515
+ newEvents: ReadonlyArray.dropWhile(payload.newEvents, (eventEncoded) => EventSequenceNumber.isGreaterThanOrEqual(cursor, eventEncoded.seqNum)),
516
+ },
517
+ };
518
+ }
519
+ else {
520
+ return { payload };
521
+ }
522
+ });
523
+ // console.debug(
524
+ // 'seeding new queue',
525
+ // {
526
+ // cursor,
527
+ // },
528
+ // '\n mergePayloads',
529
+ // ...Array.from(cachedPayloads.entries())
530
+ // .flatMap(([seqNumStr, payloads]) =>
531
+ // payloads.map((payload) => ({ payload, seqNum: EventSequenceNumber.fromString(seqNumStr) })),
532
+ // )
533
+ // .map(({ payload, seqNum }) => [
534
+ // seqNum,
535
+ // payload._tag,
536
+ // 'newEvents',
537
+ // ...payload.newEvents.map((_) => _.toJSON()),
538
+ // 'rollbackEvents',
539
+ // ...(payload._tag === 'upstream-rebase' ? payload.rollbackEvents.map((_) => _.toJSON()) : []),
540
+ // ]),
541
+ // '\n payloadsSinceCursor',
542
+ // ...payloadsSinceCursor.map(({ payload }) => [
543
+ // payload._tag,
544
+ // 'newEvents',
545
+ // ...payload.newEvents.map((_) => _.toJSON()),
546
+ // 'rollbackEvents',
547
+ // ...(payload._tag === 'upstream-rebase' ? payload.rollbackEvents.map((_) => _.toJSON()) : []),
548
+ // ]),
549
+ // )
550
+ yield* queue.offerAll(payloadsSinceCursor);
550
551
  set.add(queue);
551
552
  return queue;
552
553
  });
553
554
  const offer = (item) => Effect.gen(function* () {
555
+ const seqNumStr = EventSequenceNumber.toString(item.leaderHead);
556
+ if (cachedPayloads.has(seqNumStr)) {
557
+ cachedPayloads.get(seqNumStr).push(item.payload);
558
+ }
559
+ else {
560
+ cachedPayloads.set(seqNumStr, [item.payload]);
561
+ }
562
+ // console.debug(`offering to ${set.size} queues`, item.leaderHead, JSON.stringify(item.payload, null, 2))
554
563
  // Short-circuit if the payload is an empty upstream advance
555
564
  if (item.payload._tag === 'upstream-advance' && item.payload.newEvents.length === 0) {
556
565
  return;
@@ -564,16 +573,6 @@ const makePullQueueSet = Effect.gen(function* () {
564
573
  offer,
565
574
  };
566
575
  });
567
- const incrementMergeCounter = (mergeCounterRef) => Effect.gen(function* () {
568
- const { dbState } = yield* LeaderThreadCtx;
569
- mergeCounterRef.current++;
570
- dbState.execute(sql `INSERT OR REPLACE INTO ${SystemTables.LEADER_MERGE_COUNTER_TABLE} (id, mergeCounter) VALUES (0, ${mergeCounterRef.current})`);
571
- return mergeCounterRef.current;
572
- });
573
- const getMergeCounterFromDb = (dbState) => Effect.gen(function* () {
574
- const result = dbState.select(sql `SELECT mergeCounter FROM ${SystemTables.LEADER_MERGE_COUNTER_TABLE} WHERE id = 0`);
575
- return result[0]?.mergeCounter ?? 0;
576
- });
577
576
  const validatePushBatch = (batch, pushHead) => Effect.gen(function* () {
578
577
  if (batch.length === 0) {
579
578
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"LeaderSyncProcessor.js","sourceRoot":"","sources":["../../src/leader-thread/LeaderSyncProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEzG,OAAO,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,WAAW,EACX,UAAU,EACV,KAAK,EACL,aAAa,EACb,MAAM,EACN,YAAY,EACZ,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAIhC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAChC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAS5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,MAAM,EACN,iBAAiB,EACjB,UAAU,EACV,OAAO,EACP,cAAc,EACd,0BAA0B,EAC1B,OAAO,EACP,MAAM,EACN,OAAO,GA0BR,EAAoE,EAAE,CACrE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,EAAkC,CAAA;IACtF,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAA;IAC1D,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAA;IAE9D,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAkC,SAAS,CAAC,CAAA;IAE7F,MAAM,aAAa,GAAG,CAAC,YAA4C,EAAE,EAAE;QACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAA;IACpC,CAAC,CAAA;IAED,MAAM,gCAAgC,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;IAEhE;;;;OAIG;IACH,sFAAsF;IACtF,MAAM,6BAA6B,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IAGpD,MAAM,eAAe,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAA;IAC/F,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuD,CAAA;IAEpF,kHAAkH;IAClH,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,SAOJ;KACN,CAAA;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,EAAsB,CAAA;IACtE,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAE/C;;;;;;;;OAQG;IACH,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAA;IACzD,MAAM,eAAe,GAAG,CAAC,QAAiD,EAAE,EAAE;QAC5E,WAAW,CAAC,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC9E,CAAC,CAAA;IAED,0FAA0F;IAC1F,MAAM,IAAI,GAAgC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAElC,KAAK,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;QAExD,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAA;QAEzC,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,KAAK,CAAA;QAC7D,MAAM,UAAU,GAAG,6BAA6B,CAAC,OAAO,CAAA;QAExD,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAA0B,CAAC,CAAA;YAEjG,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CACzB,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAuB,CACpF,CAAA;YAED,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;YAEpD,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAuB,CAAC,CAAA;YAC1G,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACtD,CAAC;IACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,4CAA4C,EAAE;QAC5D,UAAU,EAAE;YACV,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SAC7C;QACD,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KAC5G,CAAC,CACH,CAAA;IAEH,MAAM,WAAW,GAAuC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CACzG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,aAAa,CAAA;QACtC,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;QAExE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAE9C,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC,eAAe,CAAC;YACtD,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,SAAS;YACT,GAAG,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;SAClF,CAAC,CAAA;QAEF,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAE5D,kCAAkC;IAClC,MAAM,IAAI,GAAgC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACzG,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAmB,CAAA;QAExD,MAAM,CAAC,OAAO,GAAG;YACf,QAAQ;YACR,IAAI;YACJ,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;YACvE,OAAO;SACR,CAAA;QAED,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAEhH,MAAM,kBAAkB,GAAG,iBAAiB;YAC1C,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM;YACjC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;QAE7C,IAAI,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;YACjD,OAAO,iBAAiB,CACtB,iCAAiC,kBAAkB,kDAAkD,gBAAgB,CAAC,MAAM,GAAG,CAChI,CAAA;QACH,CAAC;QAED,MAAM,aAAa,GAAG,iBAAiB;YACrC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,CAAC,aAAa,EAAE,CAAC,CAAA;QAE7G,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC;YAC/C,OAAO,EAAE,aAAa;YACtB,YAAY,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,CAAC,aAAa,EAAE;YACvF,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAA;QAEF,sFAAsF;QACtF,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAA;QAE3D,uBAAuB;QACvB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,mBAAmB,GAAG,aAAa;gBACvC,+BAA+B;iBAC9B,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;gBACvB,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;gBAC3D,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAA;YAC9C,CAAC,CAAC,CAAA;YAEJ,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,CAAC,KAAc,EAAE,EAAE,CACzC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;gBAC5D,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,KAAK,CAAC,CAAC,0BAA0B,CAAC;YAChC,gBAAgB;YAChB,gBAAgB;YAChB,SAAS;YACT,aAAa;YACb,oBAAoB;YACpB,MAAM;YACN,aAAa;YACb,QAAQ;YACR,6BAA6B;YAC7B,gCAAgC;YAChC,eAAe;YACf,aAAa;YACb,kBAAkB;YAClB,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB;aAC5C;SACF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAE3F,MAAM,yBAAyB,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAC3D,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;YACpD,oBAAoB;YACpB,QAAQ;YACR,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa;YAC5C,oBAAoB;SACrB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAA;QAExE,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CAAA;QAEvE,KAAK,CAAC,CAAC,wBAAwB,CAAC;YAC9B,kBAAkB;YAClB,aAAa;YACb,qBAAqB,EAAE,CAAC,sBAAsB,EAAE,EAAE,CAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClB,6BAA6B;gBAC7B,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;gBAEnD,oCAAoC;gBACpC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;gBAC9C,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAA;gBAEzE,wBAAwB;gBACxB,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CAAA;YACzE,CAAC,CAAC;YACJ,aAAa;YACb,gBAAgB;YAChB,SAAS;YACT,QAAQ;YACR,0BAA0B;YAC1B,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa;YAC5C,gCAAgC;YAChC,eAAe;YACf,aAAa;YACb,eAAe;SAChB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAE3F,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;IAChD,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,4CAA4C,CAAC,CAAC,CAAA;IAE5E,MAAM,IAAI,GAAgC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACvD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QAC1C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAE9B,MAAM,SAAS,GAAqC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;QAC/E,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,gCAAgC,CAAC,SAAS,CAAA;YAC/D,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;iBAC5D,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;iBAC7D,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;iBAChE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;iBACnD,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE;gBACjC,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACxC,OAAO;wBACL,OAAO,EAAE;4BACP,IAAI,EAAE,kBAA2B;4BACjC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,EAAE,CACrE,mBAAmB,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAC/E;yBACF;wBACD,YAAY;qBACb,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;gBAClC,CAAC;YACH,CAAC,CAAC,CAAA;YAEJ,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAA;YAE1C,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC;QAClC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,aAAa,CAAA;YACtC,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;YACxE,OAAO,SAAS,CAAA;QAClB,CAAC,CAAC;QACF,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACnE,CAAC,CAAA;IAEF,OAAO;QACL,IAAI;QACJ,SAAS;QACT,IAAI;QACJ,WAAW;QACX,IAAI;QACJ,SAAS;QACT,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO;KACjB,CAAA;AACjC,CAAC,CAAC,CAAA;AAEJ,MAAM,0BAA0B,GAAG,CAAC,EAClC,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,MAAM,EACN,aAAa,EACb,QAAQ,EACR,6BAA6B,EAC7B,gCAAgC,EAChC,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,OAAO,GAkBR,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAA;QACxE,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAA;QAE1F,yCAAyC;QACzC,KAAK,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAA;QAE7B,oEAAoE;QACpE,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAA;QAEtB,6GAA6G;QAC7G,iHAAiH;QACjH,MAAM,kBAAkB,GAAG,UAAU;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,KAAK,6BAA6B,CAAC,OAAO,CAAC;aACtF,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAU,CAAC,CAAA;QAEvE,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,+EAA+E;YAC/E,qCAAqC;YACrC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAA;YACrB,SAAQ;QACV,CAAC;QAED,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAEtE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,aAAa,CAAA;QACtC,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;QAExE,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;YAClC,SAAS;YACT,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE;YAC1C,aAAa;YACb,YAAY,EAAE,cAAc,CAAC,cAAc;SAC5C,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAA;QAElE,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,QAAQ,EAAE,QAAQ,CAAC,IAAI,YAAY,yBAAyB,EAAE;oBAC5D,SAAS,EAAE,SAAS,CAAC,MAAM;oBAC3B,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;iBACjE,CAAC,CAAA;gBACF,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAC9C,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,OAAO,iBAAiB,CAAC,mEAAmE,CAAC,CAAA;YAC/F,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,QAAQ,EAAE,QAAQ,CAAC,IAAI,YAAY,eAAe,EAAE;oBAClD,SAAS,EAAE,SAAS,CAAC,MAAM;oBAC3B,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;iBACrE,CAAC,CAAA;gBAEF,0BAA0B;gBAC1B,6BAA6B,CAAC,OAAO,EAAE,CAAA;gBAEvC,MAAM,cAAc,GAAG,6BAA6B,CAAC,OAAO,CAAA;gBAE5D,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,MAAM,CAAA;gBAC3C,wEAAwE;gBACxE,gFAAgF;gBAChF,0DAA0D;gBAC1D,MAAM,iCAAiC,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,cAAc,CACzE,gBAAgB,EAChB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,cAAc,CACpC,CAAA;gBAED,mEAAmE;gBACnE,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9D,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;oBACvF,QAAQ,CAAA;gBACV,CAAC;gBAED,MAAM,oBAAoB,GAAG;oBAC3B,GAAG,SAAS;oBACZ,GAAG,iCAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC;iBACtE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;gBAExB,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,EAAE,CACvD,QAAQ,CAAC,IAAI,CACX,QAAQ,EACR,gBAAgB,CAAC,IAAI,CAAC;oBACpB,kBAAkB,EAAE,WAAW,CAAC,iBAAiB;oBACjD,WAAW;oBACX,kBAAkB;iBACnB,CAAC,CACH,CACF,CAAA;gBAED,qCAAqC;gBACrC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAA;gBAErB,wEAAwE;gBACxE,8FAA8F;gBAC9F,SAAQ;YACV,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAK;YACP,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,YAAY,CAAC,WAAW,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;QAEnE,KAAK,CAAC,CAAC,gCAAgC,CAAC,KAAK,CAAC;YAC5C,OAAO,EAAE,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC;YACpF,YAAY;SACb,CAAC,CAAA;QACF,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QAE5G,QAAQ,EAAE,QAAQ,CAAC,IAAI,YAAY,gBAAgB,EAAE;YACnD,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;SACrE,CAAC,CAAA;QAEF,+BAA+B;QAC/B,MAAM,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;YAClE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;YAC3D,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAA;QAEhE,KAAK,CAAC,CAAC,sBAAsB,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;QAE/E,qCAAqC;QACrC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAA;IACvB,CAAC;AACH,CAAC,CAAC,CAAA;AAWJ,uCAAuC;AACvC,MAAM,sBAAsB,GAA2B,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,CACnF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAE5E,kHAAkH;IAClH,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA,CAAC,wBAAwB;IACnE,UAAU,CAAC,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA,CAAC,wBAAwB;IAE3E,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,OAAM;QAEhC,+BAA+B;QAC/B,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QACjC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAC3C,CAAC,CAAC,CACH,CAAA;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAA;QACpE,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QAEvD,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IAED,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA,CAAC,yBAAyB;IACzD,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA,CAAC,yBAAyB;AACnE,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CAAC,6DAA6D,EAAE;IAC7E,UAAU,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE;CAC7C,CAAC,EACF,MAAM,CAAC,iBAAiB,EACxB,eAAe,CAAC,oBAAoB,CACrC,CAAA;AAEH,MAAM,wBAAwB,GAAG,CAAC,EAChC,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,0BAA0B,EAC1B,gCAAgC,EAChC,eAAe,EACf,aAAa,EACb,eAAe,GAiBhB,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAE/E,IAAI,WAAW,KAAK,SAAS;QAAE,OAAM;IAErC,MAAM,cAAc,GAAG,CAAC,SAA2C,EAAE,SAAiB,EAAE,EAAE,CACxF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAElC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAA;QAC5B,CAAC;QAED,6EAA6E;QAC7E,KAAK,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAA;QAE7B,0CAA0C;QAC1C,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAA;QAEtB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,aAAa,CAAA;QACtC,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;QAExE,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;YAClC,SAAS;YACT,OAAO,EAAE,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;YAC7D,aAAa;YACb,YAAY,EAAE,cAAc,CAAC,cAAc;YAC3C,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAA;QAElE,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,iBAAiB,CAAC,yDAAyD,CAAC,CAAA;QACrF,CAAC;aAAM,IAAI,WAAW,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACnD,QAAQ,EAAE,QAAQ,CAAC,IAAI,YAAY,yBAAyB,EAAE;gBAC5D,cAAc,EAAE,SAAS,CAAC,MAAM;gBAChC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;aACjE,CAAC,CAAA;YACF,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAA;QAE/C,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;QAEtD,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,QAAQ,EAAE,QAAQ,CAAC,IAAI,YAAY,eAAe,EAAE;gBAClD,cAAc,EAAE,SAAS,CAAC,MAAM;gBAChC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChE,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,MAAM;gBAChD,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;aACrE,CAAC,CAAA;YAEF,MAAM,0BAA0B,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnF,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;gBACpD,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAA;YAC9C,CAAC,CAAC,CAAA;YACF,KAAK,CAAC,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAA;YAExD,IAAI,WAAW,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,KAAK,CAAC,CAAC,QAAQ,CAAC;oBACd,OAAO,EAAE,EAAE;oBACX,UAAU;oBACV,mBAAmB,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;iBACrE,CAAC,CAAA;YACJ,CAAC;YAED,KAAK,CAAC,CAAC,gCAAgC,CAAC,KAAK,CAAC;gBAC5C,OAAO,EAAE,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC;oBAC5C,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,cAAc,EAAE,WAAW,CAAC,cAAc;iBAC3C,CAAC;gBACF,YAAY;aACb,CAAC,CAAA;YACF,aAAa,CAAC,GAAG,CACf,YAAY,EACZ,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBACnC,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,cAAc,EAAE,WAAW,CAAC,cAAc;aAC3C,CAAC,CACH,CAAA;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,EAAE,QAAQ,CAAC,IAAI,YAAY,gBAAgB,EAAE;gBACnD,cAAc,EAAE,SAAS,CAAC,MAAM;gBAChC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;aACrE,CAAC,CAAA;YAEF,KAAK,CAAC,CAAC,gCAAgC,CAAC,KAAK,CAAC;gBAC5C,OAAO,EAAE,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC;gBACpF,YAAY;aACb,CAAC,CAAA;YACF,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;YAE5G,IAAI,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,2FAA2F;gBAC3F,wEAAwE;gBACxE,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACpD,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAClD,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CACjE,CACF,CAAA;gBACD,KAAK,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;QAED,0GAA0G;QAC1G,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;QAErC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAEnD,KAAK,CAAC,CAAC,sBAAsB,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAA;QAE1F,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;QAEnE,2CAA2C;QAC3C,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAA;QAC9B,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,CAAA;IAE/E,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI;IACtC,4CAA4C;IAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,qCAAqC;QACrC,kBAAkB;QAClB,+BAA+B;QAC/B,gDAAgD;QAChD,OAAO;QACP,KAAK;QAEL,8EAA8E;QAC9E,6CAA6C;QAC7C,uEAAuE;QACvE,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,CAAA;QAEhG,KAAK,CAAC,CAAC,cAAc,CACnB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EACvF,SAAS,CACV,CAAA;QAED,KAAK,CAAC,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;IAClF,CAAC,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,aAAa,CACrB,CAAA;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,uDAAuD,CAAC,CAAC,CAAA;AAEnF,MAAM,wBAAwB,GAAG,CAAC,EAChC,oBAAoB,EACpB,QAAQ,EACR,aAAa,EACb,oBAAoB,GAMrB,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAC9C,IAAI,WAAW,KAAK,SAAS;QAAE,OAAM;IAErC,OAAO,IAAI,EAAE,CAAC;QACZ,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,CAAA;QAEhG,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAAA;QAEhG,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,CAAA;QAEhG,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAA;QAC5B,CAAC;QAED,QAAQ,EAAE,QAAQ,CAAC,cAAc,EAAE;YACjC,SAAS,EAAE,UAAU,CAAC,MAAM;YAC5B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC,CAAA;QAEF,2EAA2E;QAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAEnG,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/B,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC7F,CAAC;YACD,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC/E,kFAAkF;YAClF,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;QAC5B,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,uDAAuD,CAAC,CAAC,CAAA;AAEzG,MAAM,iBAAiB,GAAG,CAAC,EAAY,EAAE,OAAgD,EAAE,EAAE;IAC3F,8EAA8E;IAC9E,8FAA8F;IAC9F,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,YAAY,CAAC,4BAA4B,yBAAyB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAClH,CAAC,CAAA;AAcD,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyF,CAAA;IAE5G,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAA;IACb,CAAC,CAAC,CACH,CAAA;IAED,MAAM,SAAS,GAA8B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,EAGhC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEhD,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAEtE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAEd,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,MAAM,KAAK,GAA0B,CAAC,IAAI,EAAE,EAAE,CAC5C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,4DAA4D;QAC5D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpF,OAAM;QACR,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,SAAS;QACT,KAAK;KACN,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,CAAC,eAAoC,EAAE,EAAE,CACrE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAC1C,eAAe,CAAC,OAAO,EAAE,CAAA;IACzB,OAAO,CAAC,OAAO,CACb,GAAG,CAAA,0BAA0B,YAAY,CAAC,0BAA0B,kCAAkC,eAAe,CAAC,OAAO,GAAG,CACjI,CAAA;IACD,OAAO,eAAe,CAAC,OAAO,CAAA;AAChC,CAAC,CAAC,CAAA;AAEJ,MAAM,qBAAqB,GAAG,CAAC,OAAiB,EAAE,EAAE,CAClD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,GAAG,CAAA,4BAA4B,YAAY,CAAC,0BAA0B,eAAe,CACtF,CAAA;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAA;AACrC,CAAC,CAAC,CAAA;AAEJ,MAAM,iBAAiB,GAAG,CACxB,KAAoD,EACpD,QAAiD,EACjD,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAM;IACR,CAAC;IAED,8CAA8C;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,mBAAmB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACrF,iBAAiB,CACf,mFAAmF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1J,CAAA;QACH,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,mBAAmB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAClC,kBAAkB,EAAE,QAAQ;YAC5B,WAAW,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM;SAC9B,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"LeaderSyncProcessor.js","sourceRoot":"","sources":["../../src/leader-thread/LeaderSyncProcessor.ts"],"names":[],"mappings":"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"}