@the-situation/indexer 0.12.6 → 0.14.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 (95) hide show
  1. package/README.md +21 -0
  2. package/dist/__tests__/performance/perf-fixtures.d.ts +26 -0
  3. package/dist/__tests__/performance/perf-fixtures.d.ts.map +1 -0
  4. package/dist/__tests__/performance/perf-fixtures.js +172 -0
  5. package/dist/__tests__/performance/perf-fixtures.js.map +1 -0
  6. package/dist/__tests__/performance/perf-utils.d.ts +42 -0
  7. package/dist/__tests__/performance/perf-utils.d.ts.map +1 -0
  8. package/dist/__tests__/performance/perf-utils.js +91 -0
  9. package/dist/__tests__/performance/perf-utils.js.map +1 -0
  10. package/dist/api/app.d.ts +3 -3
  11. package/dist/api/routes/admin-subscriptions.d.ts +3 -3
  12. package/dist/api/routes/admin.d.ts.map +1 -1
  13. package/dist/api/routes/admin.js +4 -0
  14. package/dist/api/routes/admin.js.map +1 -1
  15. package/dist/api/routes/market-events.d.ts.map +1 -1
  16. package/dist/api/routes/market-events.js +8 -0
  17. package/dist/api/routes/market-events.js.map +1 -1
  18. package/dist/api/routes/market-lps.d.ts.map +1 -1
  19. package/dist/api/routes/market-lps.js +23 -9
  20. package/dist/api/routes/market-lps.js.map +1 -1
  21. package/dist/api/routes/markets.d.ts.map +1 -1
  22. package/dist/api/routes/markets.js +8 -0
  23. package/dist/api/routes/markets.js.map +1 -1
  24. package/dist/api/routes/trader-events.d.ts.map +1 -1
  25. package/dist/api/routes/trader-events.js +8 -0
  26. package/dist/api/routes/trader-events.js.map +1 -1
  27. package/dist/db/connection.d.ts.map +1 -1
  28. package/dist/db/connection.js +4 -0
  29. package/dist/db/connection.js.map +1 -1
  30. package/dist/db/repositories/activity-feed.d.ts +3 -0
  31. package/dist/db/repositories/activity-feed.d.ts.map +1 -1
  32. package/dist/db/repositories/activity-feed.js +33 -18
  33. package/dist/db/repositories/activity-feed.js.map +1 -1
  34. package/dist/db/repositories/event.d.ts +23 -0
  35. package/dist/db/repositories/event.d.ts.map +1 -1
  36. package/dist/db/repositories/event.js +141 -60
  37. package/dist/db/repositories/event.js.map +1 -1
  38. package/dist/db/repositories/lp-position.d.ts +2 -10
  39. package/dist/db/repositories/lp-position.d.ts.map +1 -1
  40. package/dist/db/repositories/lp-position.js +54 -52
  41. package/dist/db/repositories/lp-position.js.map +1 -1
  42. package/dist/db/repositories/market-state.d.ts +10 -0
  43. package/dist/db/repositories/market-state.d.ts.map +1 -1
  44. package/dist/db/repositories/market-state.js +16 -5
  45. package/dist/db/repositories/market-state.js.map +1 -1
  46. package/dist/db/repositories/market.d.ts +7 -0
  47. package/dist/db/repositories/market.d.ts.map +1 -1
  48. package/dist/db/repositories/market.js +32 -24
  49. package/dist/db/repositories/market.js.map +1 -1
  50. package/dist/db/repositories/multinoulli-snapshots.d.ts +1 -0
  51. package/dist/db/repositories/multinoulli-snapshots.d.ts.map +1 -1
  52. package/dist/db/repositories/multinoulli-snapshots.js +7 -5
  53. package/dist/db/repositories/multinoulli-snapshots.js.map +1 -1
  54. package/dist/db/repositories/position.d.ts +1 -0
  55. package/dist/db/repositories/position.d.ts.map +1 -1
  56. package/dist/db/repositories/position.js +9 -0
  57. package/dist/db/repositories/position.js.map +1 -1
  58. package/dist/db/schema.d.ts.map +1 -1
  59. package/dist/db/schema.js +114 -5
  60. package/dist/db/schema.js.map +1 -1
  61. package/dist/etl/decoder.js +16 -0
  62. package/dist/etl/decoder.js.map +1 -1
  63. package/dist/etl/event-indexer.d.ts +1 -1
  64. package/dist/etl/event-indexer.d.ts.map +1 -1
  65. package/dist/etl/event-indexer.js +138 -74
  66. package/dist/etl/event-indexer.js.map +1 -1
  67. package/dist/etl/lp-position-refresher.d.ts +9 -3
  68. package/dist/etl/lp-position-refresher.d.ts.map +1 -1
  69. package/dist/etl/lp-position-refresher.js +74 -21
  70. package/dist/etl/lp-position-refresher.js.map +1 -1
  71. package/dist/etl/position-refresher.d.ts +9 -3
  72. package/dist/etl/position-refresher.d.ts.map +1 -1
  73. package/dist/etl/position-refresher.js +44 -36
  74. package/dist/etl/position-refresher.js.map +1 -1
  75. package/dist/etl/state-refresher.d.ts +8 -3
  76. package/dist/etl/state-refresher.d.ts.map +1 -1
  77. package/dist/etl/state-refresher.js +137 -12
  78. package/dist/etl/state-refresher.js.map +1 -1
  79. package/dist/layers/ChainReaderLive.d.ts.map +1 -1
  80. package/dist/layers/ChainReaderLive.js +69 -22
  81. package/dist/layers/ChainReaderLive.js.map +1 -1
  82. package/dist/lp/valuation.d.ts +34 -0
  83. package/dist/lp/valuation.d.ts.map +1 -0
  84. package/dist/lp/valuation.js +282 -0
  85. package/dist/lp/valuation.js.map +1 -0
  86. package/dist/services/ChainReader.d.ts +21 -0
  87. package/dist/services/ChainReader.d.ts.map +1 -1
  88. package/dist/services/ChainReader.js.map +1 -1
  89. package/dist/types/api.d.ts +29 -0
  90. package/dist/types/api.d.ts.map +1 -1
  91. package/dist/types/event.d.ts +24 -0
  92. package/dist/types/event.d.ts.map +1 -1
  93. package/dist/types/market.d.ts +16 -0
  94. package/dist/types/market.d.ts.map +1 -1
  95. package/package.json +7 -5
@@ -53,6 +53,14 @@ function decodedEventToInsert(marketAddress, d) {
53
53
  upper_bound: 0,
54
54
  old_mean: null,
55
55
  old_std_dev: null,
56
+ mean_2: null,
57
+ std_dev_2: null,
58
+ lower_bound_2: null,
59
+ upper_bound_2: null,
60
+ old_mean_2: null,
61
+ old_std_dev_2: null,
62
+ rho: null,
63
+ old_rho: null,
56
64
  collateral_posted: d.tokenAmount,
57
65
  raw_data: JSON.stringify(d.rawData),
58
66
  outcome_count: d.outcomeCount,
@@ -78,6 +86,14 @@ function decodedEventToInsert(marketAddress, d) {
78
86
  upper_bound: 0,
79
87
  old_mean: null,
80
88
  old_std_dev: null,
89
+ mean_2: null,
90
+ std_dev_2: null,
91
+ lower_bound_2: null,
92
+ upper_bound_2: null,
93
+ old_mean_2: null,
94
+ old_std_dev_2: null,
95
+ rho: null,
96
+ old_rho: null,
81
97
  collateral_posted: null,
82
98
  raw_data: JSON.stringify(d.rawData),
83
99
  settlement_outcome_index: d.settlementOutcomeIndex,
@@ -101,6 +117,14 @@ function decodedEventToInsert(marketAddress, d) {
101
117
  upper_bound: 0,
102
118
  old_mean: null,
103
119
  old_std_dev: null,
120
+ mean_2: null,
121
+ std_dev_2: null,
122
+ lower_bound_2: null,
123
+ upper_bound_2: null,
124
+ old_mean_2: null,
125
+ old_std_dev_2: null,
126
+ rho: null,
127
+ old_rho: null,
104
128
  collateral_posted: null,
105
129
  raw_data: JSON.stringify(d.rawData),
106
130
  settlement_outcomes_json: JSON.stringify(d.outcomes),
@@ -120,6 +144,8 @@ function decodedEventToInsert(marketAddress, d) {
120
144
  trader: d.provider,
121
145
  mean: 0, std_dev: 0, lower_bound: 0, upper_bound: 0,
122
146
  old_mean: null, old_std_dev: null,
147
+ mean_2: null, std_dev_2: null, lower_bound_2: null, upper_bound_2: null,
148
+ old_mean_2: null, old_std_dev_2: null, rho: null, old_rho: null,
123
149
  collateral_posted: d.tokenAmount,
124
150
  raw_data: JSON.stringify(d.rawData),
125
151
  settlement_value: null, settlement_x1: null, settlement_x2: null,
@@ -141,6 +167,14 @@ function decodedEventToInsert(marketAddress, d) {
141
167
  upper_bound: n.upperBound,
142
168
  old_mean: n.oldMean,
143
169
  old_std_dev: n.oldStdDev,
170
+ mean_2: n.mean2 ?? null,
171
+ std_dev_2: n.stdDev2 ?? null,
172
+ lower_bound_2: n.lowerBound2 ?? null,
173
+ upper_bound_2: n.upperBound2 ?? null,
174
+ old_mean_2: n.oldMean2 ?? null,
175
+ old_std_dev_2: n.oldStdDev2 ?? null,
176
+ rho: n.rho ?? null,
177
+ old_rho: n.oldRho ?? null,
144
178
  collateral_posted: n.collateralPosted,
145
179
  raw_data: JSON.stringify(n.rawData),
146
180
  settlement_value: null,
@@ -158,6 +192,8 @@ Effect.gen(function* () {
158
192
  const lastBlock = cursor?.last_block_number ?? 0;
159
193
  // Fetch all pages of events from Voyager
160
194
  const allEvents = [];
195
+ let maxProcessedBlock = lastBlock;
196
+ let maxProcessedTimestamp = cursor?.last_timestamp ?? 0;
161
197
  let currentPage = 1;
162
198
  let hasMore = true;
163
199
  while (hasMore && currentPage <= MAX_PAGES) {
@@ -173,17 +209,20 @@ Effect.gen(function* () {
173
209
  break;
174
210
  }
175
211
  const batch = batchResult.right;
176
- // Filter to relevant events after our cursor
212
+ // Filter to relevant events after our cursor in a single pass.
177
213
  let sawOldEvent = false;
178
- const relevant = batch.events.filter((e) => {
179
- const isRelevant = RELEVANT_NAMES.has(e.name.toLowerCase());
180
- const isNew = e.blockNumber > lastBlock;
181
- if (isRelevant && !isNew) {
214
+ for (const raw of batch.events) {
215
+ const name = raw.name.toLowerCase();
216
+ if (!RELEVANT_NAMES.has(name))
217
+ continue;
218
+ if (raw.blockNumber <= lastBlock) {
182
219
  sawOldEvent = true;
220
+ continue;
183
221
  }
184
- return isRelevant && isNew;
185
- });
186
- allEvents.push(...relevant);
222
+ allEvents.push(raw);
223
+ maxProcessedBlock = Math.max(maxProcessedBlock, raw.blockNumber);
224
+ maxProcessedTimestamp = Math.max(maxProcessedTimestamp, raw.timestamp);
225
+ }
187
226
  // Early exit: if we've reached events we already indexed, stop paging
188
227
  if (sawOldEvent) {
189
228
  break;
@@ -194,85 +233,100 @@ Effect.gen(function* () {
194
233
  if (allEvents.length === 0) {
195
234
  return { marketAddress, newEvents: 0, lastBlock };
196
235
  }
197
- // Handle PositionClaimed events — update LP claim status if the claimer is an LP
236
+ const eventsToDecode = [];
237
+ // Handle PositionClaimed events — update LP claim status if the claimer is an LP.
238
+ // Keep them out of decodeEvents because they are not persisted in market_events.
198
239
  for (const raw of allEvents) {
199
- if (raw.name.toLowerCase() !== 'positionclaimed')
200
- continue;
201
- const claimer = (raw.keys[1] ?? '').toLowerCase();
202
- if (!claimer)
203
- continue;
204
- // Check if the claimer has LP shares in this market
205
- const lpPosition = db.lpPositions.findOne(marketAddress, claimer);
206
- if (lpPosition && lpPosition.claimed_at == null) {
207
- // Parse token_payout from data if available (u256: low, high)
208
- let claimPayout = 0;
209
- try {
210
- // PositionClaimed data layout:
211
- // [0..4] positionValue (SQ128x128Raw: limb0,limb1,limb2,limb3,neg)
212
- // [5..9] collateralReturned (SQ128x128Raw)
213
- // [10,11] tokenPayout (u256: low, high)
214
- if (raw.data.length >= 12) {
215
- const low = BigInt(raw.data[10]);
216
- const high = BigInt(raw.data[11]);
217
- claimPayout = Number(low + (high << 128n)) / 1e18;
240
+ if (raw.name.toLowerCase() === 'positionclaimed') {
241
+ const claimer = (raw.keys[1] ?? '').toLowerCase();
242
+ if (!claimer)
243
+ continue;
244
+ // Check if the claimer has LP shares in this market
245
+ const lpPosition = db.lpPositions.findOne(marketAddress, claimer);
246
+ if (lpPosition && lpPosition.claimed_at == null) {
247
+ // Parse token_payout from data if available (u256: low, high)
248
+ let claimPayout = 0;
249
+ try {
250
+ // PositionClaimed data layout:
251
+ // [0..4] positionValue (SQ128x128Raw: limb0,limb1,limb2,limb3,neg)
252
+ // [5..9] collateralReturned (SQ128x128Raw)
253
+ // [10,11] tokenPayout (u256: low, high)
254
+ if (raw.data.length >= 12) {
255
+ const low = BigInt(raw.data[10]);
256
+ const high = BigInt(raw.data[11]);
257
+ claimPayout = Number(low + (high << 128n)) / 1e18;
258
+ }
218
259
  }
260
+ catch {
261
+ // Fallback: leave claimPayout as 0
262
+ }
263
+ db.lpPositions.markClaimed(marketAddress, claimer, raw.timestamp, claimPayout);
219
264
  }
220
- catch {
221
- // Fallback: leave claimPayout as 0
222
- }
223
- db.lpPositions.markClaimed(marketAddress, claimer, raw.timestamp, claimPayout);
265
+ continue;
224
266
  }
267
+ eventsToDecode.push(raw);
225
268
  }
226
269
  // Decode events (pass market type for discrimination)
227
- const decoded = decodeEvents(allEvents, marketType);
270
+ const decoded = decodeEvents(eventsToDecode, marketType);
228
271
  if (decoded.length === 0) {
229
272
  // Even if no decodable events, advance cursor past any raw events we processed
230
273
  // (e.g. PositionClaimed) to avoid re-processing them next cycle.
231
- const maxBlock = Math.max(...allEvents.map((e) => e.blockNumber));
232
- const maxTs = Math.max(...allEvents.map((e) => e.timestamp));
233
- if (maxBlock > lastBlock) {
234
- db.cursors.upsert(marketAddress, maxBlock, maxTs, 0);
274
+ if (maxProcessedBlock > lastBlock) {
275
+ db.cursors.upsert(marketAddress, maxProcessedBlock, maxProcessedTimestamp, 0);
235
276
  }
236
- return { marketAddress, newEvents: 0, lastBlock: maxBlock };
277
+ return { marketAddress, newEvents: 0, lastBlock: maxProcessedBlock };
237
278
  }
238
- // Build insert inputs
239
- const inputs = decoded.map((d) => decodedEventToInsert(marketAddress, d));
240
- // Settlement events have mean=0, sigma=0 — carry forward the last known distribution
241
- // so the time-series chart doesn't drop to zero on settlement.
242
- for (let idx = 0; idx < inputs.length; idx++) {
243
- const input = inputs[idx];
279
+ const inputs = [];
280
+ const discoveredTraders = new Set();
281
+ const lpProvidersToRecompute = new Set();
282
+ let lastMean = 0;
283
+ let lastSigma = 0;
284
+ let lastMean2 = null;
285
+ let lastSigma2 = null;
286
+ let lastRho = null;
287
+ let checkedStateFallback = false;
288
+ // Build insert inputs + discover participants in one pass.
289
+ for (const d of decoded) {
290
+ let input = decodedEventToInsert(marketAddress, d);
291
+ // Settlement events have mean=0, sigma=0 — carry forward the last known distribution
292
+ // so the time-series chart doesn't drop to zero on settlement.
244
293
  if ((input.event_type === 'market_settled' || input.event_type === 'market_settled_multi') &&
245
294
  input.mean === 0 &&
246
295
  input.std_dev === 0) {
247
- let lastMean = 0;
248
- let lastSigma = 0;
249
- // Look backwards in this batch for the last trade event
250
- for (let i = idx - 1; i >= 0; i--) {
251
- const prev = inputs[i];
252
- if (prev.mean !== 0 || prev.std_dev !== 0) {
253
- lastMean = prev.mean;
254
- lastSigma = prev.std_dev;
255
- break;
256
- }
257
- }
258
- // If not found in batch, try the DB
259
- if (lastMean === 0 && lastSigma === 0) {
260
- const state = db.marketState.findByMarket(marketAddress);
261
- if (state?.mean != null && state.mean !== 0) {
262
- lastMean = state.mean;
263
- lastSigma = state.sigma ?? 0;
296
+ if (lastMean === 0 && lastSigma === 0 && !checkedStateFallback) {
297
+ checkedStateFallback = true;
298
+ const stateFallback = db.marketState.findByMarket(marketAddress);
299
+ if (stateFallback?.mean != null && stateFallback.mean !== 0) {
300
+ lastMean = stateFallback.mean;
301
+ lastSigma = stateFallback.sigma ?? 0;
264
302
  }
265
303
  }
266
304
  if (lastMean !== 0 || lastSigma !== 0) {
267
- inputs[idx] = { ...input, mean: lastMean, std_dev: lastSigma };
305
+ input = { ...input, mean: lastMean, std_dev: lastSigma };
306
+ }
307
+ if (lastMean2 != null && lastSigma2 != null) {
308
+ input = {
309
+ ...input,
310
+ mean_2: lastMean2,
311
+ std_dev_2: lastSigma2,
312
+ lower_bound_2: Number((lastMean2 - lastSigma2).toFixed(2)),
313
+ upper_bound_2: Number((lastMean2 + lastSigma2).toFixed(2)),
314
+ rho: lastRho,
315
+ };
268
316
  }
269
317
  }
270
- }
271
- // Insert events + discover traders + update cursor atomically
272
- const lastDecoded = decoded[decoded.length - 1];
273
- const inserted = db.events.insertBatch(inputs);
274
- // Discover traders and LP providers, update cursor
275
- for (const d of decoded) {
318
+ inputs.push(input);
319
+ if (input.mean !== 0 || input.std_dev !== 0) {
320
+ lastMean = input.mean;
321
+ lastSigma = input.std_dev;
322
+ }
323
+ if (input.mean_2 != null && input.std_dev_2 != null) {
324
+ lastMean2 = input.mean_2;
325
+ lastSigma2 = input.std_dev_2;
326
+ }
327
+ if (input.rho != null) {
328
+ lastRho = input.rho;
329
+ }
276
330
  let trader = null;
277
331
  if (isMultinoulliTradeEvent(d) || isNormalMarketEvent(d)) {
278
332
  trader = d.trader;
@@ -281,21 +335,31 @@ Effect.gen(function* () {
281
335
  trader = d.by;
282
336
  }
283
337
  if (trader) {
284
- db.positions.ensureTrader(marketAddress, trader);
338
+ discoveredTraders.add(trader);
285
339
  }
286
- // LP provider discovery — recompute totals from events (idempotent)
287
340
  if (isLPEvent(d)) {
288
- db.lpPositions.ensureProvider(marketAddress, d.provider);
289
- db.lpPositions.recomputeFromEvents(marketAddress, d.provider);
341
+ lpProvidersToRecompute.add(d.provider);
290
342
  }
291
343
  // The bootstrapper LP enters via market_initialized (not liquidity_added).
292
344
  // The initializer address is in keys[1] of the MarketInitialized event,
293
345
  // surfaced as `d.trader` by the decoder. Create their LP position row so
294
346
  // they show up in the Market Participants table.
295
347
  if (d.eventType === 'market_initialized' && isNormalMarketEvent(d) && d.trader) {
296
- db.lpPositions.ensureProvider(marketAddress, d.trader);
297
- db.lpPositions.recomputeFromEvents(marketAddress, d.trader);
348
+ lpProvidersToRecompute.add(d.trader);
349
+ }
350
+ }
351
+ // Insert events + discover traders + update cursor atomically
352
+ const lastDecoded = decoded[decoded.length - 1];
353
+ const inserted = db.events.insertBatch(inputs);
354
+ for (const trader of discoveredTraders) {
355
+ db.positions.ensureTrader(marketAddress, trader);
356
+ }
357
+ if (lpProvidersToRecompute.size > 0) {
358
+ const providers = Array.from(lpProvidersToRecompute);
359
+ for (const provider of providers) {
360
+ db.lpPositions.ensureProvider(marketAddress, provider);
298
361
  }
362
+ db.lpPositions.recomputeFromEventsBatch(marketAddress, providers);
299
363
  }
300
364
  // Update cursor before broadcasting (crash-safe: cursor persisted before clients notified)
301
365
  db.cursors.upsert(marketAddress, lastDecoded.blockNumber, lastDecoded.timestamp, inserted);
@@ -1 +1 @@
1
- {"version":3,"file":"event-indexer.js","sourceRoot":"","sources":["../../src/etl/event-indexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-indexer.js","sourceRoot":"","sources":["../../src/etl/event-indexer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAY7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,cAAc;IACd,YAAY;IACZ,eAAe;IACf,mBAAmB;IACnB,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;AAEH,SAAS,uBAAuB,CAAC,CAAe;IAC9C,OAAO,CAAC,CAAC,SAAS,KAAK,4BAA4B,CAAC;AACtD,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAe;IAC3C,OAAO,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC;AAC1C,CAAC;AAED,SAAS,yBAAyB,CAAC,CAAe;IAChD,OAAO,CAAC,CAAC,SAAS,KAAK,sBAAsB,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAe;IAC1C,OAAO,CACL,CAAC,CAAC,SAAS,KAAK,cAAc;QAC9B,CAAC,CAAC,SAAS,KAAK,aAAa;QAC7B,CAAC,CAAC,SAAS,KAAK,oBAAoB;QACpC,CAAC,CAAC,SAAS,KAAK,gBAAgB,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,CAAe;IAChC,OAAO,CAAC,CAAC,SAAS,KAAK,iBAAiB,IAAI,CAAC,CAAC,SAAS,KAAK,mBAAmB,CAAC;AAClF,CAAC;AAED,SAAS,oBAAoB,CAAC,aAAqB,EAAE,CAAe;IAClE,IAAI,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,SAAS,EAAE,CAAC,CAAC,QAAQ;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,YAAY,EAAE,CAAC,CAAC,WAAW;YAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,IAAI;YACb,iBAAiB,EAAE,CAAC,CAAC,WAAW;YAChC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnC,aAAa,EAAE,CAAC,CAAC,YAAY;YAC7B,iBAAiB,EAAE,CAAC,CAAC,eAAe;YACpC,gBAAgB,EAAE,CAAC,CAAC,cAAc;YAClC,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,IAAI;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,SAAS,EAAE,CAAC,CAAC,QAAQ;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,YAAY,EAAE,CAAC,CAAC,WAAW;YAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM,EAAE,CAAC,CAAC,EAAE;YACZ,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,IAAI;YACb,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnC,wBAAwB,EAAE,CAAC,CAAC,sBAAsB;YAClD,gBAAgB,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;YAC3C,aAAa,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;YACrC,aAAa,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;SACtC,CAAC;IACJ,CAAC;IAED,IAAI,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,SAAS,EAAE,CAAC,CAAC,QAAQ;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,YAAY,EAAE,CAAC,CAAC,WAAW;YAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM,EAAE,CAAC,CAAC,EAAE;YACZ,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;YACnB,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,IAAI;YACb,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpD,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,IAAI;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,SAAS,EAAE,CAAC,CAAC,QAAQ;YACrB,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,YAAY,EAAE,CAAC,CAAC,WAAW;YAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM,EAAE,CAAC,CAAC,QAAQ;YAClB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;YACnD,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI;YACjC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI;YACvE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YAC/D,iBAAiB,EAAE,CAAC,CAAC,WAAW;YAChC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnC,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI;SACjE,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,GAAG,CAAuB,CAAC;IAClC,OAAO;QACL,cAAc,EAAE,aAAa;QAC7B,SAAS,EAAE,CAAC,CAAC,QAAQ;QACrB,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,YAAY,EAAE,CAAC,CAAC,WAAW;QAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,WAAW,EAAE,CAAC,CAAC,UAAU;QACzB,WAAW,EAAE,CAAC,CAAC,UAAU;QACzB,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,WAAW,EAAE,CAAC,CAAC,SAAS;QACxB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI;QACvB,SAAS,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC5B,aAAa,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QACpC,aAAa,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QACpC,UAAU,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;QAC9B,aAAa,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QACnC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI;QAClB,OAAO,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;QACzB,iBAAiB,EAAE,CAAC,CAAC,gBAAgB;QACrC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;QACnC,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAAqB,EACrB,aAAyB,QAAQ,EACuD,EAAE;AAC1F,sHAAsH;AACtH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAE/B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,EAAE,iBAAiB,IAAI,CAAC,CAAC;IAEjD,yCAAyC;IACzC,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,IAAI,iBAAiB,GAAG,SAAS,CAAC;IAClC,IAAI,qBAAqB,GAAG,MAAM,EAAE,cAAc,IAAI,CAAC,CAAC;IACxD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CACtC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,CAC3D,CAAC;QAEF,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC;YAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC7C,8CAA8C;YAChD,CAAC;iBAAM,CAAC;gBACN,6BAA6B;YAC/B,CAAC;YACD,MAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAEhC,+DAA+D;QAC/D,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACxC,IAAI,GAAG,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;gBACjC,WAAW,GAAG,IAAI,CAAC;gBACnB,SAAS;YACX,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YACjE,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC;QAED,sEAAsE;QACtE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM;QACR,CAAC;QAED,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;QACvC,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,cAAc,GAAmB,EAAE,CAAC;IAE1C,kFAAkF;IAClF,iFAAiF;IACjF,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,oDAAoD;YACpD,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAClE,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBAChD,8DAA8D;gBAC9D,IAAI,WAAW,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC;oBACH,+BAA+B;oBAC/B,sEAAsE;oBACtE,8CAA8C;oBAC9C,0CAA0C;oBAC1C,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;wBAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,CAAC;wBAClC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC,CAAC;wBACnC,WAAW,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;oBACpD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,mCAAmC;gBACrC,CAAC;gBACD,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACjF,CAAC;YACD,SAAS;QACX,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,sDAAsD;IACtD,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,+EAA+E;QAC/E,iEAAiE;QACjE,IAAI,iBAAiB,GAAG,SAAS,EAAE,CAAC;YAClC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAU,CAAC;IACjD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,2DAA2D;IAC3D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,KAAK,GAAG,oBAAoB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAEnD,qFAAqF;QACrF,+DAA+D;QAC/D,IACE,CAAC,KAAK,CAAC,UAAU,KAAK,gBAAgB,IAAI,KAAK,CAAC,UAAU,KAAK,sBAAsB,CAAC;YACtF,KAAK,CAAC,IAAI,KAAK,CAAC;YAChB,KAAK,CAAC,OAAO,KAAK,CAAC,EACnB,CAAC;YACD,IAAI,QAAQ,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC/D,oBAAoB,GAAG,IAAI,CAAC;gBAC5B,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBACjE,IAAI,aAAa,EAAE,IAAI,IAAI,IAAI,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC5D,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC;oBAC9B,SAAS,GAAG,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACtC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YAC3D,CAAC;YAED,IAAI,SAAS,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBAC5C,KAAK,GAAG;oBACN,GAAG,KAAK;oBACR,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE,UAAU;oBACrB,aAAa,EAAE,MAAM,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC1D,aAAa,EAAE,MAAM,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC1D,GAAG,EAAE,OAAO;iBACb,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnB,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC5C,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;YACtB,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YACpD,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;QACtB,CAAC;QAED,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,CAAC;aAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,2EAA2E;QAC3E,wEAAwE;QACxE,yEAAyE;QACzE,iDAAiD;QACjD,IAAI,CAAC,CAAC,SAAS,KAAK,oBAAoB,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/E,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE/C,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACvC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,sBAAsB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;QACD,EAAE,CAAC,WAAW,CAAC,wBAAwB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,2FAA2F;IAC3F,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE3F,0CAA0C;IAC1C,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,GAAG,CAAC,SAAS,CAAC;YACZ,IAAI,EAAE,YAAY;YAClB,aAAa;YACb,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE;SAChE,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,aAAa;QACb,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,WAAW,CAAC,WAAW;KACnC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjD,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAyB,EAAE,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAe,CAAC;QAClE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -2,16 +2,22 @@
2
2
  * LP position refresher — reads LP shares from chain and computes current value.
3
3
  */
4
4
  import { Effect } from 'effect';
5
+ import type { LPPositionRow } from '../db/repositories';
5
6
  import { ChainReaderTag } from '../services/ChainReader';
6
7
  import { DatabaseTag } from '../services/Database';
7
- import type { MarketType } from '../types';
8
+ import type { MarketStateRow, MarketType } from '../types';
8
9
  interface LPRefreshResult {
9
10
  readonly marketAddress: string;
10
11
  readonly provider: string;
11
12
  readonly success: boolean;
12
13
  readonly error?: string;
13
14
  }
14
- export declare const refreshLPPosition: (marketAddress: string, provider: string, marketType?: MarketType) => Effect.Effect<LPRefreshResult, never, DatabaseTag | ChainReaderTag>;
15
+ interface LPRefreshContext {
16
+ readonly marketStateByMarket?: ReadonlyMap<string, MarketStateRow>;
17
+ readonly netTraderPnlByMarket?: ReadonlyMap<string, number>;
18
+ readonly existingLPByKey?: ReadonlyMap<string, LPPositionRow>;
19
+ }
20
+ export declare const refreshLPPosition: (marketAddress: string, provider: string, marketType?: MarketType, context?: LPRefreshContext) => Effect.Effect<LPRefreshResult, never, DatabaseTag | ChainReaderTag>;
15
21
  /**
16
22
  * Discover bootstrapper LPs that were missed because market_initialized events
17
23
  * weren't treated as LP events in older indexer versions. For each market, check
@@ -19,6 +25,6 @@ export declare const refreshLPPosition: (marketAddress: string, provider: string
19
25
  * no lp_positions row, and create one.
20
26
  */
21
27
  export declare const discoverBootstrapperLPs: Effect.Effect<number, never, DatabaseTag>;
22
- export declare const refreshAllLPPositions: Effect.Effect<LPRefreshResult[], never, DatabaseTag | ChainReaderTag>;
28
+ export declare const refreshAllLPPositions: Effect.Effect<LPRefreshResult[], never, ChainReaderTag | DatabaseTag>;
23
29
  export {};
24
30
  //# sourceMappingURL=lp-position-refresher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lp-position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,UAAU,eAAe;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,UAAU,MAAM,EAChB,aAAY,UAAqB,KAChC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAuFjE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,2CAuBlC,CAAC;AAEH,eAAO,MAAM,qBAAqB,uEAqBhC,CAAC"}
1
+ {"version":3,"file":"lp-position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAM5E,UAAU,eAAe;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/D;AAcD,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,UAAU,MAAM,EAChB,aAAY,UAAqB,EACjC,UAAS,gBAAqB,KAC7B,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAuFjE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,2CAmClC,CAAC;AAEH,eAAO,MAAM,qBAAqB,uEAqEhC,CAAC"}
@@ -5,7 +5,19 @@ import { Effect } from 'effect';
5
5
  import { ChainReaderTag } from '../services/ChainReader';
6
6
  import { DatabaseTag } from '../services/Database';
7
7
  const TWO_128 = Number(2n ** 128n);
8
- export const refreshLPPosition = (marketAddress, provider, marketType = 'normal') => Effect.gen(function* () {
8
+ const RPC_CONCURRENCY = 5;
9
+ let bootstrapDiscoveryCursor = 0;
10
+ function lpPositionCacheKey(marketAddress, provider) {
11
+ return `${marketAddress}\u0000${provider}`;
12
+ }
13
+ function computeNetTraderPnl(positions) {
14
+ let netTraderPnl = 0;
15
+ for (const position of positions) {
16
+ netTraderPnl += (position.unrealized_pnl ?? 0) + (position.realized_pnl ?? 0);
17
+ }
18
+ return netTraderPnl;
19
+ }
20
+ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal', context = {}) => Effect.gen(function* () {
9
21
  const db = yield* DatabaseTag;
10
22
  const chain = yield* ChainReaderTag;
11
23
  if (marketType === 'multinoulli') {
@@ -19,7 +31,7 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
19
31
  }
20
32
  const { shares, sharesNumber } = sharesResult.right;
21
33
  // Get pool totals from market state
22
- const marketState = db.marketState.findByMarket(marketAddress);
34
+ const marketState = context.marketStateByMarket?.get(marketAddress) ?? db.marketState.findByMarket(marketAddress);
23
35
  let currentValue = null;
24
36
  let totalShares = 0;
25
37
  let totalBacking = 0;
@@ -31,21 +43,19 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
31
43
  // IMPORTANT: the contract drains LP backing by amplifier × position_value
32
44
  // for each trader claim. Without the amplifier, this estimate is too high
33
45
  // on markets with payoutAmplifier > 1.
34
- const traderPositions = db.positions.findByMarket(marketAddress);
35
46
  // Sum unrealized + realized PnL. For settled markets, unrealized=0
36
47
  // and realized has the finalized value. For active, unrealized is live.
37
48
  // NOTE: these PnL values ALREADY include the payout amplifier (the
38
49
  // position refresher passes payoutAmplifier to computePositionValueAtPoint).
39
50
  // Do NOT multiply by payoutAmplifier again — that double-counts it.
40
- const netTraderPnl = traderPositions.reduce((sum, p) => {
41
- const pnl = (p.unrealized_pnl ?? 0) + (p.realized_pnl ?? 0);
42
- return sum + pnl;
43
- }, 0);
51
+ const netTraderPnl = context.netTraderPnlByMarket?.get(marketAddress) ??
52
+ computeNetTraderPnl(db.positions.findByMarket(marketAddress));
44
53
  const adjustedBacking = totalBacking - netTraderPnl;
45
54
  currentValue = (sharesNumber / totalShares) * adjustedBacking;
46
55
  }
47
56
  }
48
- const existing = db.lpPositions.findOne(marketAddress, provider);
57
+ const existing = context.existingLPByKey?.get(lpPositionCacheKey(marketAddress, provider)) ??
58
+ db.lpPositions.findOne(marketAddress, provider);
49
59
  let netDeposited = (existing?.total_deposited ?? 0) - (existing?.total_withdrawn ?? 0);
50
60
  // If shares value at par (ignoring trader PnL) exceeds tracked deposits,
51
61
  // the gap is from the market initialization bootstrap which doesn't appear
@@ -66,8 +76,7 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
66
76
  unrealized_pnl: unrealizedPnl,
67
77
  });
68
78
  // Backfill entry distribution if not yet populated
69
- const lpRow = db.lpPositions.findOne(marketAddress, provider);
70
- if (lpRow && lpRow.entry_mean == null && marketState) {
79
+ if (existing && existing.entry_mean == null && marketState) {
71
80
  db.lpPositions.upsertEntryDistribution(marketAddress, provider, marketState.mean ?? null, marketState.sigma ?? null, marketState.k ?? null);
72
81
  }
73
82
  return { marketAddress, provider, success: true };
@@ -80,17 +89,26 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
80
89
  */
81
90
  export const discoverBootstrapperLPs = Effect.gen(function* () {
82
91
  const db = yield* DatabaseTag;
83
- // Find market_initialized events where the initializer has no LP position
92
+ // Scan only newly indexed market_initialized events since the previous pass.
84
93
  const rawDb = db.db;
85
94
  const missing = rawDb
86
- .query(`SELECT DISTINCT me.market_address, LOWER(me.trader) AS provider
95
+ .query(`SELECT DISTINCT me.id AS event_id, me.market_address, LOWER(me.trader) AS provider
87
96
  FROM market_events me
88
97
  LEFT JOIN lp_positions lp
89
98
  ON lp.market_address = me.market_address AND lp.provider = LOWER(me.trader)
90
- WHERE me.event_type = 'market_initialized'
99
+ WHERE me.id > ?
100
+ AND me.event_type = 'market_initialized'
91
101
  AND me.trader IS NOT NULL
92
102
  AND lp.provider IS NULL`)
93
- .all();
103
+ .all(bootstrapDiscoveryCursor);
104
+ const maxSeenRow = rawDb
105
+ .query(`SELECT MAX(id) AS max_id
106
+ FROM market_events
107
+ WHERE event_type = 'market_initialized'`)
108
+ .get();
109
+ if (maxSeenRow.max_id != null) {
110
+ bootstrapDiscoveryCursor = Math.max(bootstrapDiscoveryCursor, maxSeenRow.max_id);
111
+ }
94
112
  for (const row of missing) {
95
113
  db.lpPositions.ensureProvider(row.market_address, row.provider);
96
114
  db.lpPositions.recomputeFromEvents(row.market_address, row.provider);
@@ -102,15 +120,50 @@ export const refreshAllLPPositions = Effect.gen(function* () {
102
120
  // First, discover any bootstrapper LPs that were missed historically
103
121
  yield* discoverBootstrapperLPs;
104
122
  const allLP = db.lpPositions.findAll();
123
+ if (allLP.length === 0)
124
+ return [];
105
125
  const markets = db.markets.findAll(true);
106
- const marketTypeMap = new Map(markets.map((m) => [m.address, (m.market_type ?? 'normal')]));
107
- const activeLPs = allLP.filter((lp) => marketTypeMap.has(lp.market_address));
126
+ if (markets.length === 0)
127
+ return [];
128
+ const marketTypeMap = new Map();
129
+ for (const market of markets) {
130
+ marketTypeMap.set(market.address, (market.market_type ?? 'normal'));
131
+ }
132
+ const activeLPs = [];
133
+ for (const lp of allLP) {
134
+ if (marketTypeMap.has(lp.market_address)) {
135
+ activeLPs.push(lp);
136
+ }
137
+ }
108
138
  if (activeLPs.length === 0)
109
139
  return [];
110
- const effects = activeLPs.map((lp) => {
111
- const mt = marketTypeMap.get(lp.market_address) ?? 'normal';
112
- return refreshLPPosition(lp.market_address, lp.provider, mt);
113
- });
114
- return yield* Effect.all(effects, { concurrency: 5 });
140
+ const netTraderPnlByMarket = new Map();
141
+ for (const marketAddress of marketTypeMap.keys()) {
142
+ netTraderPnlByMarket.set(marketAddress, 0);
143
+ }
144
+ const activeMarketAddresses = Array.from(marketTypeMap.keys());
145
+ if (activeMarketAddresses.length > 0) {
146
+ const placeholders = activeMarketAddresses.map(() => '?').join(', ');
147
+ const pnlRows = db.db
148
+ .query(`SELECT market_address,
149
+ COALESCE(SUM(COALESCE(unrealized_pnl, 0) + COALESCE(realized_pnl, 0)), 0) AS net_pnl
150
+ FROM user_positions
151
+ WHERE market_address IN (${placeholders})
152
+ GROUP BY market_address`)
153
+ .all(...activeMarketAddresses);
154
+ for (const row of pnlRows) {
155
+ netTraderPnlByMarket.set(row.market_address, row.net_pnl);
156
+ }
157
+ }
158
+ const existingLPByKey = new Map();
159
+ for (const lp of activeLPs) {
160
+ existingLPByKey.set(lpPositionCacheKey(lp.market_address, lp.provider), lp);
161
+ }
162
+ const refreshContext = {
163
+ marketStateByMarket: db.marketState.findAllAsMap(),
164
+ netTraderPnlByMarket,
165
+ existingLPByKey,
166
+ };
167
+ return yield* Effect.forEach(activeLPs, (lp) => refreshLPPosition(lp.market_address, lp.provider, marketTypeMap.get(lp.market_address) ?? 'normal', refreshContext), { concurrency: RPC_CONCURRENCY });
115
168
  });
116
169
  //# sourceMappingURL=lp-position-refresher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lp-position-refresher.js","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp-position-refresher.js","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,14 @@ import { Effect } from 'effect';
5
5
  import { ChainReaderTag } from '../services/ChainReader';
6
6
  import { DatabaseTag } from '../services/Database';
7
7
  import { EventBusTag } from '../services/EventBus';
8
- import type { MarketType } from '../types';
8
+ import type { MarketStateRow, MarketType, MultinoulliMarketStateRow, UserPositionRow } from '../types';
9
9
  import type { PositionRefreshResult } from './types';
10
- export declare const refreshPosition: (marketAddress: string, trader: string, marketType?: MarketType) => Effect.Effect<PositionRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
11
- export declare const refreshAllPositions: Effect.Effect<PositionRefreshResult[], never, DatabaseTag | ChainReaderTag | EventBusTag>;
10
+ interface PositionRefreshContext {
11
+ readonly marketStateByMarket?: ReadonlyMap<string, MarketStateRow>;
12
+ readonly multinoulliMarketStateByMarket?: ReadonlyMap<string, MultinoulliMarketStateRow>;
13
+ readonly existingPositionsByKey?: ReadonlyMap<string, UserPositionRow>;
14
+ }
15
+ export declare const refreshPosition: (marketAddress: string, trader: string, marketType?: MarketType, context?: PositionRefreshContext) => Effect.Effect<PositionRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
16
+ export declare const refreshAllPositions: Effect.Effect<PositionRefreshResult[], never, ChainReaderTag | DatabaseTag | EventBusTag>;
17
+ export {};
12
18
  //# sourceMappingURL=position-refresher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAwBrD,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,QAAQ,MAAM,EACd,aAAY,UAAqB,KAChC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,WAAW,CAyUrF,CAAC;AAIL,eAAO,MAAM,mBAAmB,2FA2B9B,CAAC"}
1
+ {"version":3,"file":"position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAwBrD,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnE,QAAQ,CAAC,8BAA8B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACzF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACxE;AAMD,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,QAAQ,MAAM,EACd,aAAY,UAAqB,EACjC,UAAS,sBAA2B,KACnC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,WAAW,CA4UrF,CAAC;AAIL,eAAO,MAAM,mBAAmB,2FAmC9B,CAAC"}