@ai-dossier/sched 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +179 -17
  2. package/dist/attribution.d.ts +132 -0
  3. package/dist/attribution.d.ts.map +1 -0
  4. package/dist/attribution.js +268 -0
  5. package/dist/attribution.js.map +1 -0
  6. package/dist/bisect.d.ts +67 -0
  7. package/dist/bisect.d.ts.map +1 -0
  8. package/dist/bisect.js +122 -0
  9. package/dist/bisect.js.map +1 -0
  10. package/dist/dispatch.d.ts +48 -1
  11. package/dist/dispatch.d.ts.map +1 -1
  12. package/dist/dispatch.js +92 -5
  13. package/dist/dispatch.js.map +1 -1
  14. package/dist/engine.d.ts +53 -13
  15. package/dist/engine.d.ts.map +1 -1
  16. package/dist/engine.js +421 -75
  17. package/dist/engine.js.map +1 -1
  18. package/dist/enqueue.d.ts +9 -0
  19. package/dist/enqueue.d.ts.map +1 -1
  20. package/dist/enqueue.js +96 -12
  21. package/dist/enqueue.js.map +1 -1
  22. package/dist/groundtruth.d.ts +66 -5
  23. package/dist/groundtruth.d.ts.map +1 -1
  24. package/dist/groundtruth.js +150 -5
  25. package/dist/groundtruth.js.map +1 -1
  26. package/dist/index.d.ts +10 -6
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +51 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/persist.d.ts.map +1 -1
  31. package/dist/persist.js +14 -0
  32. package/dist/persist.js.map +1 -1
  33. package/dist/recovery.d.ts +263 -0
  34. package/dist/recovery.d.ts.map +1 -0
  35. package/dist/recovery.js +730 -0
  36. package/dist/recovery.js.map +1 -0
  37. package/dist/scheduler.d.ts +12 -0
  38. package/dist/scheduler.d.ts.map +1 -1
  39. package/dist/scheduler.js +53 -58
  40. package/dist/scheduler.js.map +1 -1
  41. package/dist/state.d.ts +57 -4
  42. package/dist/state.d.ts.map +1 -1
  43. package/dist/state.js +238 -8
  44. package/dist/state.js.map +1 -1
  45. package/dist/status.d.ts +16 -4
  46. package/dist/status.d.ts.map +1 -1
  47. package/dist/status.js +10 -4
  48. package/dist/status.js.map +1 -1
  49. package/dist/teardown.d.ts +57 -0
  50. package/dist/teardown.d.ts.map +1 -0
  51. package/dist/teardown.js +242 -0
  52. package/dist/teardown.js.map +1 -0
  53. package/dist/types.d.ts +155 -4
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/types.js +39 -5
  56. package/dist/types.js.map +1 -1
  57. package/package.json +2 -2
package/dist/state.js CHANGED
@@ -12,10 +12,14 @@
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.TRANSITIONS = void 0;
14
14
  exports.createEmptyState = createEmptyState;
15
+ exports.createBatch = createBatch;
15
16
  exports.validateState = validateState;
16
17
  exports.transitionIssue = transitionIssue;
17
18
  exports.transitionBatch = transitionBatch;
18
19
  exports.transitionSlot = transitionSlot;
20
+ exports.isPreservedMember = isPreservedMember;
21
+ exports.patchBatch = patchBatch;
22
+ exports.requeueMember = requeueMember;
19
23
  exports.findEntry = findEntry;
20
24
  exports.findBatch = findBatch;
21
25
  const types_1 = require("./types");
@@ -23,7 +27,14 @@ const types_1 = require("./types");
23
27
  const ISSUE_BASE_TRANSITIONS = {
24
28
  queued: ['classified'],
25
29
  classified: ['dispatched', 'batched'],
26
- dispatched: ['shipped'],
30
+ // #468: dispatched → parked is the detached-ship exit — the agent parked
31
+ // its PR on auto-merge and exited; parked → shipped accepts the MERGE
32
+ // (never the park — RFC-0001 §E.4 "scheduler gates on merge").
33
+ // Both also carry `evicted`: a batch dissolve (#472) requeues every unshipped
34
+ // member whatever state it reached, and an unmodelled edge there would throw
35
+ // mid-eviction, after the reverts already landed.
36
+ dispatched: ['shipped', 'parked', 'evicted'],
37
+ parked: ['shipped', 'evicted'],
27
38
  shipped: ['done'],
28
39
  // batched/waiting/validated also carry `evicted`: RFC-0001 §D.2 dissolving
29
40
  // requeues members at ANY batch stage, not just mid-member (F.8).
@@ -34,7 +45,11 @@ const ISSUE_BASE_TRANSITIONS = {
34
45
  validated: ['shipped-in-batch', 'evicted'],
35
46
  'shipped-in-batch': ['done'],
36
47
  evicted: ['requeued'],
37
- requeued: ['dispatched'],
48
+ // `batched` is the half-batch rail: a member requeued into a fresh batch by a
49
+ // halved dissolve (#472 AC4) re-enters §D.1's slot line, not the full-cycle
50
+ // one. Without it those members are stranded — `requeued` + `mode: 'slot'` is
51
+ // dispatchable as neither an issue unit nor a batch member.
52
+ requeued: ['dispatched', 'batched'],
38
53
  blocked: ['queued', 'waiting', 'evicted'],
39
54
  'decision-pending': ['queued'],
40
55
  done: [],
@@ -58,7 +73,11 @@ const BATCH_TRANSITIONS = {
58
73
  // executing → executing advances the member pointer (i/N); the ⟲ in RFC-0001 §D.2.
59
74
  executing: ['executing', 'validating', 'dissolving'],
60
75
  validating: ['attributing', 'reviewing', 'dissolving'],
61
- attributing: ['fixing', 'evicting'],
76
+ // `dissolving` because attribution can legitimately name nobody (bisect
77
+ // absent, errored, or unattributable) — without the edge, an unattributable
78
+ // red suite is a dead end with no way out but fixing or evicting a member the
79
+ // system cannot identify.
80
+ attributing: ['fixing', 'evicting', 'dissolving'],
62
81
  fixing: ['validating', 'dissolving'],
63
82
  evicting: ['validating', 'dissolving'],
64
83
  reviewing: ['shipping', 'dissolving'],
@@ -117,6 +136,31 @@ function createEmptyState() {
117
136
  batches: [],
118
137
  slots: [],
119
138
  next_slot_id: 1,
139
+ last_pr_poll_at: null,
140
+ };
141
+ }
142
+ /**
143
+ * A fresh `forming` batch. The single place a `BatchEntry` is constructed —
144
+ * enqueue's batch creation and #472's halved dissolve both call it, so a field
145
+ * added to `BatchEntry` cannot be remembered in one and forgotten in the other.
146
+ */
147
+ function createBatch(id, members, now, opts = {}) {
148
+ const timestamp = now.toISOString();
149
+ return {
150
+ id,
151
+ status: 'forming',
152
+ members: [...members],
153
+ base_branch: opts.base_branch ?? 'main',
154
+ executing_member: 0,
155
+ anchor: opts.anchor ?? null,
156
+ branch: null,
157
+ run_id: opts.run_id ?? null,
158
+ eviction_groups: (opts.eviction_groups ?? []).map((group) => [...group]),
159
+ evictions: [],
160
+ fix_attempts: [],
161
+ rebase_attempts: 0,
162
+ created_at: timestamp,
163
+ updated_at: timestamp,
120
164
  };
121
165
  }
122
166
  const ISSUE_STATUSES = new Set(Object.keys(ISSUE_BASE_TRANSITIONS));
@@ -155,18 +199,102 @@ function validateQueueEntry(data, where) {
155
199
  if (entry.reason !== null && typeof entry.reason !== 'string') {
156
200
  throw new Error(`${label}: reason must be a string or null`);
157
201
  }
202
+ if (entry.pr !== null &&
203
+ entry.pr !== undefined &&
204
+ (!Number.isInteger(entry.pr) || entry.pr <= 0)) {
205
+ throw new Error(`${label}: pr must be a positive integer or null`);
206
+ }
207
+ if (entry.cleanup !== null && entry.cleanup !== undefined && typeof entry.cleanup !== 'string') {
208
+ throw new Error(`${label}: cleanup must be a string or null`);
209
+ }
210
+ if (entry.failure_evidence !== null && entry.failure_evidence !== undefined) {
211
+ const evidence = entry.failure_evidence;
212
+ if (typeof evidence !== 'object' || Array.isArray(evidence)) {
213
+ throw new Error(`${label}: failure_evidence must be an object or null`);
214
+ }
215
+ const ev = evidence;
216
+ if (typeof ev.batch !== 'string' || ev.batch.length === 0) {
217
+ throw new Error(`${label}: failure_evidence.batch must be a non-empty string`);
218
+ }
219
+ if (!Array.isArray(ev.failing_tests) || ev.failing_tests.some((t) => typeof t !== 'string')) {
220
+ throw new Error(`${label}: failure_evidence.failing_tests must be an array of strings`);
221
+ }
222
+ if (!Array.isArray(ev.reverted_commits) ||
223
+ ev.reverted_commits.some((c) => typeof c !== 'string')) {
224
+ throw new Error(`${label}: failure_evidence.reverted_commits must be an array of strings`);
225
+ }
226
+ }
158
227
  if (!isIsoDateString(entry.enqueued_at) || !isIsoDateString(entry.updated_at)) {
159
228
  throw new Error(`${label}: enqueued_at/updated_at must be ISO date strings`);
160
229
  }
161
230
  }
231
+ /**
232
+ * The #472 recovery fields of one batch. Absent fields are legacy (pre-1.3.0)
233
+ * and backfilled by the migration below; present ones must be well-shaped —
234
+ * eviction groups drive `git revert`, so a malformed group is a loud failure
235
+ * rather than a silently skipped co-eviction.
236
+ */
237
+ function validateBatchRecovery(batch, id) {
238
+ if (batch.anchor !== null &&
239
+ batch.anchor !== undefined &&
240
+ (!Number.isInteger(batch.anchor) || batch.anchor <= 0)) {
241
+ throw new Error(`Batch ${id}: anchor must be a positive integer or null`);
242
+ }
243
+ for (const key of ['branch', 'run_id']) {
244
+ const value = batch[key];
245
+ if (value !== null && value !== undefined && typeof value !== 'string') {
246
+ throw new Error(`Batch ${id}: ${key} must be a string or null`);
247
+ }
248
+ }
249
+ if (batch.eviction_groups !== undefined) {
250
+ if (!Array.isArray(batch.eviction_groups)) {
251
+ throw new Error(`Batch ${id}: eviction_groups must be an array of member groups`);
252
+ }
253
+ for (const group of batch.eviction_groups) {
254
+ if (!Array.isArray(group) || group.some((m) => !Number.isInteger(m) || m <= 0)) {
255
+ throw new Error(`Batch ${id}: each eviction group must be an array of issue numbers`);
256
+ }
257
+ }
258
+ }
259
+ // The elements, not just the arrays: `checkDissolveTrigger` counts distinct
260
+ // `evictions[].issue` for the >⅓ trigger and `beginFixAttempt` counts
261
+ // `fix_attempts[].issue` for the one-attempt cap. A record without a readable
262
+ // issue number silently defeats both bounds — most consequentially by making
263
+ // the fix-attempt cap uncountable, which allows unbounded fix dispatch.
264
+ for (const key of ['evictions', 'fix_attempts']) {
265
+ const records = batch[key];
266
+ if (records === undefined)
267
+ continue;
268
+ if (!Array.isArray(records)) {
269
+ throw new Error(`Batch ${id}: ${key} must be an array`);
270
+ }
271
+ for (const record of records) {
272
+ const issue = record?.issue;
273
+ if (record === null ||
274
+ typeof record !== 'object' ||
275
+ !Number.isInteger(issue) ||
276
+ issue <= 0) {
277
+ throw new Error(`Batch ${id}: each ${key} record must carry a positive issue number`);
278
+ }
279
+ }
280
+ }
281
+ if (batch.rebase_attempts !== undefined &&
282
+ (!Number.isInteger(batch.rebase_attempts) || batch.rebase_attempts < 0)) {
283
+ throw new Error(`Batch ${id}: rebase_attempts must be a non-negative integer`);
284
+ }
285
+ }
162
286
  /**
163
287
  * Strict validation of persisted state (mirrors pool-state's `validateState`):
164
288
  * wrong schema version or malformed shape throws instead of being coerced, so
165
289
  * a corrupt file is a loud failure, never a silent queue reset.
166
290
  *
167
- * Legacy schema versions (1.0.0, pre-#464) are accepted and migrated: slot
168
- * `branch`/`last_head` backfill to null and the state upgrades to the current
169
- * schema on the next save.
291
+ * Legacy schema versions are accepted and migrated: 1.0.0 (pre-#464) slots
292
+ * backfill `branch`/`last_head` to null; 1.1.0 (pre-#468) entries backfill
293
+ * `pr`/`cleanup` and the state backfills `last_pr_poll_at` to null; 1.2.0
294
+ * (pre-#472) entries backfill `failure_evidence` to null and batches backfill
295
+ * the recovery fields (anchor/branch/run_id/eviction_groups/evictions/
296
+ * fix_attempts/rebase_attempts). The state upgrades to the current schema on
297
+ * the next save.
170
298
  */
171
299
  function validateState(data) {
172
300
  if (!data || typeof data !== 'object') {
@@ -218,6 +346,7 @@ function validateState(data) {
218
346
  if (!Number.isInteger(batch.executing_member) || batch.executing_member < 0) {
219
347
  throw new Error(`Batch ${batch.id}: executing_member must be a non-negative integer`);
220
348
  }
349
+ validateBatchRecovery(batch, batch.id);
221
350
  if (!isIsoDateString(batch.created_at) || !isIsoDateString(batch.updated_at)) {
222
351
  throw new Error(`Batch ${batch.id}: created_at/updated_at must be ISO date strings`);
223
352
  }
@@ -289,15 +418,46 @@ function validateState(data) {
289
418
  if (!Number.isInteger(obj.next_slot_id) || obj.next_slot_id < 1) {
290
419
  throw new Error('next_slot_id must be a positive integer');
291
420
  }
421
+ if (obj.last_pr_poll_at !== null &&
422
+ obj.last_pr_poll_at !== undefined &&
423
+ !isIsoDateString(obj.last_pr_poll_at)) {
424
+ throw new Error('last_pr_poll_at must be an ISO date string or null');
425
+ }
292
426
  // Migration: pre-#464 (1.0.0) slots carry no branch/last_head/pid_start —
293
- // backfill null so the returned state always has the current shape.
427
+ // backfill null so the returned state always has the current shape. Pre-#468
428
+ // (1.1.0) entries carry no pr/cleanup and the state no last_pr_poll_at.
429
+ // Pre-#472 (1.2.0) entries carry no failure_evidence and batches none of the
430
+ // recovery fields.
294
431
  const slots = obj.slots.map((slot) => ({
295
432
  ...slot,
296
433
  branch: slot.branch ?? null,
297
434
  last_head: slot.last_head ?? null,
298
435
  pid_start: slot.pid_start ?? null,
299
436
  }));
300
- return { ...data, schema_version: types_1.SCHEMA_VERSION, slots };
437
+ const entries = obj.entries.map((entry) => ({
438
+ ...entry,
439
+ pr: entry.pr ?? null,
440
+ cleanup: entry.cleanup ?? null,
441
+ failure_evidence: entry.failure_evidence ?? null,
442
+ }));
443
+ const batches = obj.batches.map((batch) => ({
444
+ ...batch,
445
+ anchor: batch.anchor ?? null,
446
+ branch: batch.branch ?? null,
447
+ run_id: batch.run_id ?? null,
448
+ eviction_groups: batch.eviction_groups ?? [],
449
+ evictions: batch.evictions ?? [],
450
+ fix_attempts: batch.fix_attempts ?? [],
451
+ rebase_attempts: batch.rebase_attempts ?? 0,
452
+ }));
453
+ return {
454
+ ...data,
455
+ schema_version: types_1.SCHEMA_VERSION,
456
+ entries,
457
+ batches,
458
+ slots,
459
+ last_pr_poll_at: obj.last_pr_poll_at ?? null,
460
+ };
301
461
  }
302
462
  function transition(kind, allowed, current, to, patch, now) {
303
463
  const from = current.status;
@@ -340,6 +500,76 @@ function transitionSlot(state, slotId, to, patch = {}, now = new Date()) {
340
500
  slots[idx] = transition('slot', (from) => allowedSlotTransitions(from), slots[idx], to, { ...clearing, ...resetting, ...patch }, now);
341
501
  return { ...state, slots };
342
502
  }
503
+ /**
504
+ * Whether a member's work is already green — terminal, or merged (§F.8
505
+ * "nothing green is discarded"). Such a member is never requeued and never
506
+ * counted as unshipped. The single definition of "green": eviction, dissolve
507
+ * and the operator abandon path all ask this question, and two answers to it
508
+ * would be two different meanings of the invariant they exist to uphold.
509
+ */
510
+ function isPreservedMember(entry) {
511
+ return types_1.TERMINAL_ISSUE_STATUSES.has(entry.status) || types_1.SATISFIED_ISSUE_STATUSES.has(entry.status);
512
+ }
513
+ /**
514
+ * Patch a batch's RECORDS and COUNTERS (evictions, fix attempts, rebase count)
515
+ * without a status change. `status` and `id` are excluded on purpose: every
516
+ * status change goes through `transitionBatch`'s typed rails, never a
517
+ * hand-written assignment.
518
+ */
519
+ function patchBatch(state, batchId, patch, now = new Date()) {
520
+ return {
521
+ ...state,
522
+ batches: state.batches.map((b) => b.id === batchId ? { ...b, ...patch, updated_at: now.toISOString() } : b),
523
+ };
524
+ }
525
+ /**
526
+ * Put one batch member back on the queue, whatever batch state it was in
527
+ * (RFC-0001 §D.1 "in-work/committed → evicted(reason) → requeued", §F.8
528
+ * "nothing green is discarded").
529
+ *
530
+ * The single requeue path for `abandonBatch` (operator dissolve), eviction and
531
+ * automatic dissolve (#472), so the "which edge applies from here?" question is
532
+ * answered once:
533
+ *
534
+ * - already terminal or shipped → left alone, `requeued: false`
535
+ * - never reached the batch rail (`queued`/`classified`), or already on the
536
+ * requeue rail (`requeued`) → metadata retag only; there is no status edge to
537
+ * take, and re-transitioning `requeued → requeued` would throw
538
+ * - `evicted` → the one remaining edge, `evicted → requeued`
539
+ * - anything else active → the full failure rail, `→ evicted → requeued`
540
+ *
541
+ * `target` is where the member goes next: full-cycle (`{ mode: 'full', batch:
542
+ * null }`) or a fresh half-batch (`{ mode: 'slot', batch: '<id>-a' }`).
543
+ */
544
+ function requeueMember(state, issue, target, reason, now = new Date(),
545
+ // Deliberately narrower than `Partial<QueueEntry>`: this path patches the
546
+ // entry directly on the queued/classified/requeued short-circuit, so a wider
547
+ // type would let a caller write `status` without a transition check and walk
548
+ // straight around the state machine.
549
+ extra = {}) {
550
+ const entry = state.entries.find((e) => e.issue === issue);
551
+ if (!entry)
552
+ return { state, requeued: false };
553
+ if (isPreservedMember(entry)) {
554
+ return { state, requeued: false };
555
+ }
556
+ const patch = { ...target, reason, ...extra };
557
+ if (entry.status === 'queued' || entry.status === 'classified' || entry.status === 'requeued') {
558
+ return {
559
+ state: {
560
+ ...state,
561
+ entries: state.entries.map((e) => e.issue === issue ? { ...e, ...patch, updated_at: now.toISOString() } : e),
562
+ },
563
+ requeued: true,
564
+ };
565
+ }
566
+ let next = state;
567
+ if (entry.status !== 'evicted') {
568
+ next = transitionIssue(next, issue, 'evicted', { reason }, now);
569
+ }
570
+ next = transitionIssue(next, issue, 'requeued', patch, now);
571
+ return { state: next, requeued: true };
572
+ }
343
573
  // --- Lookups ---
344
574
  function findEntry(state, issue) {
345
575
  return state.entries.find((e) => e.issue === issue);
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAkHH,4CASC;AAwDD,sCA6IC;AA0BD,0CAqBC;AAID,0CAqBC;AAID,wCA0BC;AAID,8BAEC;AAED,8BAEC;AA9aD,mCAaiB;AAEjB,4BAA4B;AAE5B,MAAM,sBAAsB,GAAuC;IACjE,MAAM,EAAE,CAAC,YAAY,CAAC;IACtB,UAAU,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;IACrC,UAAU,EAAE,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,2EAA2E;IAC3E,kEAAkE;IAClE,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/B,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/B,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;IACnC,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;IACnC,SAAS,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC;IAC1C,kBAAkB,EAAE,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAE,CAAC,UAAU,CAAC;IACrB,QAAQ,EAAE,CAAC,YAAY,CAAC;IACxB,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;IACzC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;IAC9B,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,+FAA+F;AAC/F,MAAM,6BAA6B,GAA2B;IAC5D,SAAS;IACT,kBAAkB;IAClB,QAAQ;CACT,CAAC;AAEF,SAAS,uBAAuB,CAAC,IAAiB;IAChD,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,+BAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,0CAA0C;IAC9F,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,6BAA6B,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,iBAAiB,GAAuC;IAC5D,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;IAChC,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IAClC,mFAAmF;IACnF,SAAS,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC;IACpD,UAAU,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC;IACtD,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IACnC,MAAM,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACtC,SAAS,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;IACrC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC;IAC1C,gBAAgB,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IACxC,QAAQ,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;IACzC,eAAe,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;IAC3C,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,IAAI,EAAE,EAAE;IACR,UAAU,EAAE,CAAC,WAAW,CAAC;IACzB,SAAS,EAAE,EAAE;CACd,CAAC;AAEF,MAAM,qBAAqB,GAAqC;IAC9D,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,sEAAsE;IACtE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;IACjC,MAAM,EAAE,CAAC,WAAW,CAAC;IACrB,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,oEAAoE;IACpE,SAAS,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;IACrC,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IACjC,MAAM,EAAE,CAAC,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,uBAAuB,GAA4B,IAAI,GAAG,CAAC;IAC/D,UAAU;IACV,SAAS;IACT,QAAQ;IACR,WAAW;IACX,YAAY;CACb,CAAC,CAAC;AAEH,SAAS,sBAAsB,CAAC,IAAgB;IAC9C,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sCAAsC;AAEtC,0EAA0E;AAC1E,SAAgB,gBAAgB;IAC9B,OAAO;QACL,cAAc,EAAE,sBAAc;QAC9B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,CAAC;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC5E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACvE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE7D,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa,EAAE,KAA4B;IACrE,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,IAA+B,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAK,KAAK,CAAC,KAAgB,IAAI,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAe,CAAC,oCAAoC,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,4DAA4D,CAAC,CAAC;IACxF,CAAC;IACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAY,IAAI,CAAC,CAAC,EAClE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mDAAmD,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0CAA0C,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0BAA0B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mDAAmD,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAC,IAAa;IACzC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,OAAO,KAAK,sBAAc,IAAI,CAAC,8BAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,cAAc,sBAAc,GAAG,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACA,GAAG,CAAC,OAAqB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9C,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAuB,EAAE,CAAC;QAChD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAuB,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,0BAA0B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC7B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAY,IAAI,CAAC,CAAC,EACrE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,0CAA0C,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,0CAA0C,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,mDAAmD,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7E,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,kDAAkD,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAuB,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,iBAAiB,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,GAAI,GAAG,CAAC,OAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9E,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,KAAK,yBAAyB,KAAK,CAAC,KAAK,UAAU,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAoB,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,yBAAyB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,iCAAiC,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,kCAAkC,CAAC,CAAC;QACrE,CAAC;QACD,IACE,IAAI,CAAC,SAAS,KAAK,IAAI;YACvB,IAAI,CAAC,SAAS,KAAK,SAAS;YAC5B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EACzD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,oDAAoD,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,kCAAkC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,kDAAkD,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,mCAAmC,CAAC,CAAC;QACtE,CAAC;QACD,IACE,IAAI,CAAC,SAAS,KAAK,IAAI;YACvB,IAAI,CAAC,SAAS,KAAK,SAAS;YAC5B,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAClC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,sCAAsC,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,6CAA6C,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,yCAAyC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,kCAAkC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,kCAAkC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,IAAK,GAAG,CAAC,YAAuB,GAAG,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,KAAK,GAAI,GAAG,CAAC,KAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtD,GAAG,IAAI;QACP,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;KAClC,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,GAAI,IAAmB,EAAE,cAAc,EAAE,sBAAc,EAAE,KAAK,EAAE,CAAC;AAC5E,CAAC;AASD,SAAS,UAAU,CACjB,IAAgC,EAChC,OAAmC,EACnC,OAAU,EACV,EAAU,EACV,KAAiB,EACjB,GAAS;IAET,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,8BAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAiB,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;AAC5F,CAAC;AAED,4BAA4B;AAE5B,SAAgB,eAAe,CAC7B,KAAiB,EACjB,KAAa,EACb,EAAe,EACf,QAA6B,EAAE,EAC/B,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAC9D,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,0BAAkB,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CACvB,OAAO,EACP,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAmB,CAAC,EACtD,OAAO,CAAC,GAAG,CAAC,EACZ,EAAE,EACF,KAAK,EACL,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,4BAA4B;AAE5B,SAAgB,eAAe,CAC7B,KAAiB,EACjB,OAAe,EACf,EAAe,EACf,QAA6B,EAAE,EAC/B,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC7D,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,0BAAkB,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CACvB,OAAO,EACP,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAmB,CAAC,EAChD,OAAO,CAAC,GAAG,CAAC,EACZ,EAAE,EACF,KAAK,EACL,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,2BAA2B;AAE3B,SAAgB,cAAc,CAC5B,KAAiB,EACjB,MAAc,EACd,EAAc,EACd,QAA4B,EAAE,EAC9B,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IAC1D,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,0BAAkB,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,QAAQ,GACZ,EAAE,KAAK,MAAM;QACX,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;QACxF,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,SAAS,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CACrB,MAAM,EACN,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAkB,CAAC,EACpD,KAAK,CAAC,GAAG,CAAC,EACV,EAAE,EACF,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,EACvC,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,kBAAkB;AAElB,SAAgB,SAAS,CAAC,KAAiB,EAAE,KAAa;IACxD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,SAAS,CAAC,KAAiB,EAAE,OAAe;IAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACU,QAAA,WAAW,GAAG;IACzB,KAAK,EAAE,CAAC,IAAiB,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;IAC3D,KAAK,EAAE,CAAC,IAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACrD,IAAI,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC;CACzD,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
package/dist/status.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  /**
2
- * `sched status` report (AC4): queue, slots, batches, and the blocked/failed
3
- * sets as a machine-readable report. Text rendering lives in the CLI
4
- * (`cli/src/commands/sched.ts`, on top of the CLI's shared `renderTable`) —
5
- * the package deliberately has no dependency on CLI utilities.
2
+ * `sched status` report (AC4): queue, slots, batches, parked PRs, and the
3
+ * blocked/failed sets as a machine-readable report. Text rendering lives in
4
+ * the CLI (`cli/src/commands/sched.ts`, on top of the CLI's shared
5
+ * `renderTable`) — the package deliberately has no dependency on CLI
6
+ * utilities.
6
7
  */
7
8
  import type { BatchEntry, QueueEntry, SchedConfig, SchedState, SlotEntry } from './types';
8
9
  /** An entry that cannot progress, with the human reason. */
@@ -11,6 +12,13 @@ export interface BlockedItem {
11
12
  status: string;
12
13
  reason: string;
13
14
  }
15
+ /** A parked unit awaiting its PR merge (#468). */
16
+ export interface ParkedItem {
17
+ issue: number;
18
+ pr: number;
19
+ /** When the unit parked (entry `updated_at`). */
20
+ since: string;
21
+ }
14
22
  /** Machine-readable status report (`sched status --json`). */
15
23
  export interface StatusReport {
16
24
  /** Project slug the report was built for (which state bucket this is). */
@@ -21,6 +29,10 @@ export interface StatusReport {
21
29
  queue: QueueEntry[];
22
30
  slots: SlotEntry[];
23
31
  batches: BatchEntry[];
32
+ /** Parked units being watched by the PR watcher (#468). */
33
+ parked: ParkedItem[];
34
+ /** When the PR watcher last polled (#468) — null before the first poll. */
35
+ last_pr_poll_at: string | null;
24
36
  /** How many units are runnable right now. */
25
37
  runnable: number;
26
38
  /** Which units are runnable (`issue:<n>` / `batch:<id>`), in dispatch order. */
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG1F,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,GACd,YAAY,CAwEd"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG1F,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,2DAA2D;IAC3D,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,2EAA2E;IAC3E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,GACd,YAAY,CA8Ed"}
package/dist/status.js CHANGED
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  /**
3
- * `sched status` report (AC4): queue, slots, batches, and the blocked/failed
4
- * sets as a machine-readable report. Text rendering lives in the CLI
5
- * (`cli/src/commands/sched.ts`, on top of the CLI's shared `renderTable`) —
6
- * the package deliberately has no dependency on CLI utilities.
3
+ * `sched status` report (AC4): queue, slots, batches, parked PRs, and the
4
+ * blocked/failed sets as a machine-readable report. Text rendering lives in
5
+ * the CLI (`cli/src/commands/sched.ts`, on top of the CLI's shared
6
+ * `renderTable`) — the package deliberately has no dependency on CLI
7
+ * utilities.
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
10
  exports.buildStatusReport = buildStatusReport;
@@ -59,6 +60,9 @@ function buildStatusReport(state, config, project) {
59
60
  }
60
61
  }
61
62
  const units = state.paused ? [] : (0, readiness_1.runnableUnits)(state);
63
+ const parked = state.entries
64
+ .filter((e) => e.status === 'parked' && e.pr !== null)
65
+ .map((e) => ({ issue: e.issue, pr: e.pr, since: e.updated_at }));
62
66
  return {
63
67
  project,
64
68
  paused: state.paused,
@@ -67,6 +71,8 @@ function buildStatusReport(state, config, project) {
67
71
  queue: state.entries,
68
72
  slots: state.slots,
69
73
  batches: state.batches,
74
+ parked,
75
+ last_pr_poll_at: state.last_pr_poll_at,
70
76
  runnable: units.length,
71
77
  runnable_units: units.map((u) => u.kind === 'issue' ? `issue:${u.issue}` : `batch:${u.batch}`),
72
78
  blocked,
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoCH,8CA4EC;AA9GD,2CAKqB;AAErB,mCAAgG;AA2BhG,SAAgB,iBAAiB,CAC/B,KAAiB,EACjB,MAAmB,EACnB,OAAe;IAEf,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,MAAM,eAAe,GAAG,CAAC,CAAsD,EAAU,EAAE,CACzF,CAAC,CAAC,MAAM,KAAK,cAAc;QACzB,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,sBAAsB;QAC5C,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,SAAS,IAAI,SAAS,GAAG,CAAC;IAE9E,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;aACrC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,+BAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,gCAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5F,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,uCAA2B,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,IAAA,8BAAkB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAClD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC;wBACX,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;qBACjD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QAED,sEAAsE;QACtE,+DAA+D;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxE,MAAM,IAAI,GAAG,IAAA,yBAAa,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;YAChF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;IAEvD,OAAO;QACL,OAAO;QACP,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,0BAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC9E,KAAK,EAAE,KAAK,CAAC,OAAO;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,MAAM;QACtB,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAC7D;QACD,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Script-based teardown for merged units (#468 AC2) — the tail work that the
3
+ * fleet pattern used to re-dispatch a whole full-cycle run for.
4
+ *
5
+ * Two scripts, chosen by the run's `setup` milestone:
6
+ * - pool-claimed worktree → `worktree-pool return --path <wt> --json` — the
7
+ * pool's own self-check (#453: `verification.entry_status`) is the
8
+ * verification; a non-`warm` entry or a failed exit is a failed step.
9
+ * - cold worktree → `git worktree remove --force <wt>` + a path-gone check
10
+ * (verify-first, so a re-run after a crash between subprocess and state
11
+ * write is idempotent).
12
+ *
13
+ * `--force` on the remove is deliberate: the WIP-sync rule pushes everything
14
+ * durable to origin, so untracked leftovers (logs, warmup status) are trash.
15
+ *
16
+ * A failed teardown is DEGRADATION, never unit failure — the PR is already
17
+ * merged. The outcome is recorded as `cleanup=failed-<step>` on the entry and
18
+ * journaled, and the report agent is dispatched regardless so the failure is
19
+ * surfaced in the report.
20
+ *
21
+ * Everything runs through an injectable `ExecFn` (the project.ts pattern) —
22
+ * tests script the subprocesses, no real pool or git is touched.
23
+ */
24
+ import type { SetupInfo } from './groundtruth';
25
+ import type { ExecFn } from './project';
26
+ import type { CleanupStatus } from './types';
27
+ /** Timeout for teardown subprocesses — pool return shells out through npx and recycles a worktree (git ops), which is slow. */
28
+ export declare const TEARDOWN_TIMEOUT_MS = 120000;
29
+ /** The outcome recorded on the entry's `cleanup` and in the journal. */
30
+ export interface TeardownResult {
31
+ /** `done` or `failed-<step>` — the entry's `cleanup` value verbatim. */
32
+ cleanup: CleanupStatus;
33
+ /** Human-readable detail for the journal (empty when none). */
34
+ detail: string;
35
+ }
36
+ /** Whether a path exists (injectable so tests need no filesystem). */
37
+ export type FsExists = (p: string) => boolean;
38
+ /**
39
+ * Containment check for a worktree path recovered from an issue comment
40
+ * (#468): the path must be absolute and fully resolved (no `..`/`.`/symlink
41
+ * variance), and — for COLD worktrees — live under one of the two worktree
42
+ * roots this project uses: `<repo>/worktrees/` (setup-issue-workflow's
43
+ * inside-repo convention) or `<repo>/../worktrees/` (the AGENTS.md sibling
44
+ * convention). A crafted milestone can otherwise make the scheduler
45
+ * `git worktree remove --force` ANY registered worktree — including a
46
+ * parallel agent's (CWE-22). Pool-claimed worktrees are validated by the
47
+ * pool itself (return only accepts paths in pool state), so containment
48
+ * applies to the cold path only.
49
+ */
50
+ export declare function isSafeWorktree(repoRoot: string, worktree: string): boolean;
51
+ /**
52
+ * Run the teardown script for one merged unit. `info` comes from the unit's
53
+ * setup milestone (groundtruth.setupInfo); a missing `info` is the caller's
54
+ * `failed-missing-setup-info` case — this function always has one.
55
+ */
56
+ export declare function runTeardown(exec: ExecFn, repoDir: string, info: SetupInfo, fsExists?: FsExists): TeardownResult;
57
+ //# sourceMappingURL=teardown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teardown.d.ts","sourceRoot":"","sources":["../src/teardown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,+HAA+H;AAC/H,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAY3C,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,OAAO,EAAE,aAAa,CAAC;IACvB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;AAE9C;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAM1E;AAsBD;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,QAAQ,GAAE,QAMT,GACA,cAAc,CAsBhB"}